diff --git a/README.md b/README.md index 1a85bb9..84449b9 100644 --- a/README.md +++ b/README.md @@ -27,9 +27,6 @@ ember install ember-lifeline-decorators ember-lifeline ## Usage -You don't need to register `runDisposables(this)` in the `willDestroy` hook. The -decorators do this for you. - ### Available decorators | Decorator | ember-lifeline | Description | diff --git a/addon/debounce.ts b/addon/debounce.ts index 31d5308..9b4c45b 100644 --- a/addon/debounce.ts +++ b/addon/debounce.ts @@ -4,7 +4,6 @@ import EmberObject from '@ember/object'; import { debounceTask } from 'ember-lifeline'; -import hookDisposablesRunner from './hook-disposables-runner'; import privateAlias from './utils/private-alias'; import { Prototype } from './utils/type-helpers'; @@ -21,8 +20,6 @@ export default decoratorWithRequiredParams(function debounce< typeof desc.value === 'function' ); - hookDisposablesRunner(target.constructor); - return privateAlias( target, key, diff --git a/addon/disposable.ts b/addon/disposable.ts index 67df5f2..6f6c671 100644 --- a/addon/disposable.ts +++ b/addon/disposable.ts @@ -6,7 +6,6 @@ import { registerDisposable } from 'ember-lifeline'; import { afterMethod } from 'patch-method'; -import hookDisposablesRunner from './hook-disposables-runner'; import { Prototype } from './utils/type-helpers'; export default decoratorWithParams(function disposable< @@ -21,8 +20,6 @@ export default decoratorWithParams(function disposable< typeof desc.value === 'function' ); - hookDisposablesRunner(target.constructor); - afterMethod(target.constructor, 'init', function () { // `.bind` is required because ember-lifeline does not set the correct context registerDisposable(this, desc.value.bind(this)); diff --git a/addon/event-listener.ts b/addon/event-listener.ts index a2926f7..91f2676 100644 --- a/addon/event-listener.ts +++ b/addon/event-listener.ts @@ -7,7 +7,6 @@ import { addEventListener } from 'ember-lifeline'; import { afterMethod } from 'patch-method'; -import hookDisposablesRunner from './hook-disposables-runner'; import { Prototype, Constructor } from './utils/type-helpers'; // eslint-disable-next-line @typescript-eslint/naming-convention, @typescript-eslint/no-empty-function @@ -45,7 +44,6 @@ export default decoratorWithRequiredParams(function eventListener< ); collapseProto(target); - hookDisposablesRunner(target.constructor); afterMethod( target.constructor as Constructor, diff --git a/addon/hook-disposables-runner.ts b/addon/hook-disposables-runner.ts deleted file mode 100644 index 1d5d542..0000000 --- a/addon/hook-disposables-runner.ts +++ /dev/null @@ -1,27 +0,0 @@ -import EmberObject from '@ember/object'; - -import { runDisposables } from 'ember-lifeline'; - -import { Constructor } from './utils/type-helpers'; - -const hookedWithDisposables = new WeakSet>(); - -export default function hookDisposablesRunner( - klass: Constructor -): void { - if (hookedWithDisposables.has(klass)) return; - hookedWithDisposables.add(klass); - - const { prototype } = klass; - - const originalMethod = Object.getOwnPropertyDescriptor( - prototype, - 'willDestroy' - ); - prototype.willDestroy = function (...args: any[]) { - runDisposables(this); - if (originalMethod) { - return originalMethod.value.apply(this, args); - } - }; -} diff --git a/addon/later.ts b/addon/later.ts index d712ade..ea1d2aa 100644 --- a/addon/later.ts +++ b/addon/later.ts @@ -4,7 +4,6 @@ import EmberObject from '@ember/object'; import { runTask } from 'ember-lifeline'; -import hookDisposablesRunner from './hook-disposables-runner'; import { Prototype } from './utils/type-helpers'; export default decoratorWithRequiredParams(function later< @@ -20,8 +19,6 @@ export default decoratorWithRequiredParams(function later< typeof desc.value === 'function' ); - hookDisposablesRunner(target.constructor); - return { ...desc, value(this: InstanceType, ...args: any[]) { diff --git a/addon/schedule.ts b/addon/schedule.ts index 17780bb..e52c229 100644 --- a/addon/schedule.ts +++ b/addon/schedule.ts @@ -4,7 +4,6 @@ import EmberObject from '@ember/object'; import { scheduleTask } from 'ember-lifeline'; -import hookDisposablesRunner from './hook-disposables-runner'; import { Prototype } from './utils/type-helpers'; /** @@ -27,8 +26,6 @@ export default decoratorWithRequiredParams(function schedule< typeof desc.value === 'function' ); - hookDisposablesRunner(target.constructor); - return { ...desc, value(this: InstanceType, ...args: any[]) { diff --git a/addon/throttle.ts b/addon/throttle.ts index 8414648..4ecec69 100644 --- a/addon/throttle.ts +++ b/addon/throttle.ts @@ -4,7 +4,6 @@ import EmberObject from '@ember/object'; import { throttleTask } from 'ember-lifeline'; -import hookDisposablesRunner from './hook-disposables-runner'; import privateAlias from './utils/private-alias'; import { Prototype } from './utils/type-helpers'; @@ -21,8 +20,6 @@ export default decoratorWithRequiredParams(function throttle< typeof desc.value === 'function' ); - hookDisposablesRunner(target.constructor); - return privateAlias( target, key,