@ngneat/until-destroy
Advanced tools
Comparing version 8.0.3 to 8.0.4
@@ -44,8 +44,2 @@ (function (global, factory) { | ||
} | ||
function ensureClassIsDecorated(instance) { | ||
if (missingDecorator(instance.constructor)) { | ||
throw new Error('untilDestroyed operator cannot be used inside directives or ' + | ||
'components or providers that are not decorated with UntilDestroy decorator'); | ||
} | ||
} | ||
function createSubjectOnTheInstance(instance, symbol) { | ||
@@ -65,5 +59,2 @@ if (!instance[symbol]) { | ||
} | ||
function missingDecorator(type) { | ||
return !(DECORATOR_APPLIED in type.prototype); | ||
} | ||
@@ -121,3 +112,3 @@ function unsubscribe(property) { | ||
var originalDestroy = instance[destroyMethodName]; | ||
if (isFunction(originalDestroy) === false) { | ||
if (ngDevMode && isFunction(originalDestroy) === false) { | ||
throw new Error(instance.constructor.name + " is using untilDestroyed but doesn't implement " + destroyMethodName); | ||
@@ -127,3 +118,3 @@ } | ||
instance[destroyMethodName] = function () { | ||
isFunction(originalDestroy) && originalDestroy.apply(this, arguments); | ||
originalDestroy.apply(this, arguments); | ||
completeSubjectOnTheInstance(this, symbol); | ||
@@ -146,3 +137,3 @@ // We have to re-assign this property back to the original value. | ||
else { | ||
ensureClassIsDecorated(instance); | ||
ngDevMode && ensureClassIsDecorated(instance); | ||
createSubjectOnTheInstance(instance, symbol); | ||
@@ -153,2 +144,10 @@ } | ||
} | ||
function ensureClassIsDecorated(instance) { | ||
var prototype = Object.getPrototypeOf(instance); | ||
var missingDecorator = !(DECORATOR_APPLIED in prototype); | ||
if (missingDecorator) { | ||
throw new Error('untilDestroyed operator cannot be used inside directives or ' + | ||
'components or providers that are not decorated with UntilDestroy decorator'); | ||
} | ||
} | ||
@@ -155,0 +154,0 @@ /** |
@@ -1,2 +0,2 @@ | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@ngneat/until-destroy",["exports","@angular/core","rxjs","rxjs/operators"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).ngneat=t.ngneat||{},t.ngneat["until-destroy"]={}),t.ng.core,t.rxjs,t.rxjs.operators)}(this,(function(t,e,n,r){"use strict";var o=e.ɵNG_PIPE_DEF;function i(t){return"function"==typeof t}var s=Symbol("__destroy"),u=Symbol("__decoratorApplied");function c(t){return"string"==typeof t?Symbol("__destroy__"+t):s}function a(t){if(e=t.constructor,!(u in e.prototype))throw new Error("untilDestroyed operator cannot be used inside directives or components or providers that are not decorated with UntilDestroy decorator");var e}function f(t,e){t[e]||(t[e]=new n.Subject)}function p(t,e){t[e]&&(t[e].next(),t[e].complete(),t[e]=null)}function l(t){t&&i(t.unsubscribe)&&t.unsubscribe()}function y(t,e){return function(){var n;if(t&&t.call(this),p(this,c()),e.arrayName)return function(t){Array.isArray(t)&&t.forEach(l)}(this[e.arrayName]);if(e.checkProperties)for(var r in this)(null===(n=e.blackList)||void 0===n?void 0:n.includes(r))||l(this[r])}}t.UntilDestroy=function(t){return void 0===t&&(t={}),function(e){e[o]?function(t,e){var n=t.ɵpipe;n.onDestroy=y(n.onDestroy,e)}(e,t):function(t,e){t.prototype.ngOnDestroy=y(t.prototype.ngOnDestroy,e)}(e,t),function(t){t.prototype[u]=!0}(e)}},t.untilDestroyed=function(t,e){return function(n){var o=c(e);return"string"==typeof e?function(t,e,n){var r=t[e];if(!1===i(r))throw new Error(t.constructor.name+" is using untilDestroyed but doesn't implement "+e);f(t,n),t[e]=function(){i(r)&&r.apply(this,arguments),p(this,n),t[e]=r}}(t,e,o):(a(t),f(t,o)),n.pipe(r.takeUntil(t[o]))}},Object.defineProperty(t,"__esModule",{value:!0})})); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@ngneat/until-destroy",["exports","@angular/core","rxjs","rxjs/operators"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).ngneat=e.ngneat||{},e.ngneat["until-destroy"]={}),e.ng.core,e.rxjs,e.rxjs.operators)}(this,(function(e,t,n,r){"use strict";var o=t.ɵNG_PIPE_DEF;function i(e){return"function"==typeof e}var s=Symbol("__destroy"),u=Symbol("__decoratorApplied");function c(e){return"string"==typeof e?Symbol("__destroy__"+e):s}function a(e,t){e[t]||(e[t]=new n.Subject)}function f(e,t){e[t]&&(e[t].next(),e[t].complete(),e[t]=null)}function p(e){e&&i(e.unsubscribe)&&e.unsubscribe()}function d(e,t){return function(){var n;if(e&&e.call(this),f(this,c()),t.arrayName)return function(e){Array.isArray(e)&&e.forEach(p)}(this[t.arrayName]);if(t.checkProperties)for(var r in this)(null===(n=t.blackList)||void 0===n?void 0:n.includes(r))||p(this[r])}}e.UntilDestroy=function(e){return void 0===e&&(e={}),function(t){t[o]?function(e,t){var n=e.ɵpipe;n.onDestroy=d(n.onDestroy,t)}(t,e):function(e,t){e.prototype.ngOnDestroy=d(e.prototype.ngOnDestroy,t)}(t,e),function(e){e.prototype[u]=!0}(t)}},e.untilDestroyed=function(e,t){return function(n){var o=c(t);return"string"==typeof t?function(e,t,n){var r=e[t];if(ngDevMode&&!1===i(r))throw new Error(e.constructor.name+" is using untilDestroyed but doesn't implement "+t);a(e,n),e[t]=function(){r.apply(this,arguments),f(this,n),e[t]=r}}(e,t,o):(ngDevMode&&function(e){var t=Object.getPrototypeOf(e);if(!(u in t))throw new Error("untilDestroyed operator cannot be used inside directives or components or providers that are not decorated with UntilDestroy decorator")}(e),a(e,o)),n.pipe(r.takeUntil(e[o]))}},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=ngneat-until-destroy.umd.min.js.map |
@@ -13,3 +13,3 @@ import { Subject } from 'rxjs'; | ||
*/ | ||
const DECORATOR_APPLIED = Symbol('__decoratorApplied'); | ||
export const DECORATOR_APPLIED = Symbol('__decoratorApplied'); | ||
/** | ||
@@ -35,8 +35,2 @@ * If we use the `untilDestroyed` operator multiple times inside the single | ||
} | ||
export function ensureClassIsDecorated(instance) { | ||
if (missingDecorator(instance.constructor)) { | ||
throw new Error('untilDestroyed operator cannot be used inside directives or ' + | ||
'components or providers that are not decorated with UntilDestroy decorator'); | ||
} | ||
} | ||
export function createSubjectOnTheInstance(instance, symbol) { | ||
@@ -56,5 +50,2 @@ if (!instance[symbol]) { | ||
} | ||
function missingDecorator(type) { | ||
return !(DECORATOR_APPLIED in type.prototype); | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnRlcm5hbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQixNQUFNLFVBQVUsVUFBVSxDQUFDLE1BQWU7SUFDeEMsT0FBTyxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUM7QUFDdEMsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxHQUFrQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxNQUFNLGlCQUFpQixHQUFrQixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUV0RTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFJLGlCQUEyQjtJQUN0RCxJQUFJLE9BQU8saUJBQWlCLEtBQUssUUFBUSxFQUFFO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLGNBQWMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0tBQ2xEO1NBQU07UUFDTCxPQUFPLE9BQU8sQ0FBQztLQUNoQjtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixJQUE2RTtJQUU3RSw0RkFBNEY7SUFDNUYsc0RBQXNEO0lBQ3RELElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDM0MsQ0FBQztBQVFELE1BQU0sVUFBVSxzQkFBc0IsQ0FBQyxRQUFhO0lBQ2xELElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzFDLE1BQU0sSUFBSSxLQUFLLENBQ2IsOERBQThEO1lBQzVELDRFQUE0RSxDQUMvRSxDQUFDO0tBQ0g7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLDBCQUEwQixDQUFDLFFBQWEsRUFBRSxNQUFjO0lBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDckIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7S0FDeEM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLDRCQUE0QixDQUFDLFFBQWEsRUFBRSxNQUFjO0lBQ3hFLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3BCLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDNUIsNkRBQTZEO1FBQzdELDhEQUE4RDtRQUM5RCxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO0tBQ3pCO0FBQ0gsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQ3ZCLElBQTZFO0lBRTdFLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZVR5cGUsIMm1RGlyZWN0aXZlVHlwZSwgybVDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFBpcGVUeXBlIH0gZnJvbSAnLi9pdnknO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNGdW5jdGlvbih0YXJnZXQ6IHVua25vd24pIHtcbiAgcmV0dXJuIHR5cGVvZiB0YXJnZXQgPT09ICdmdW5jdGlvbic7XG59XG5cbi8qKlxuICogQXBwbGllZCB0byBpbnN0YW5jZXMgYW5kIHN0b3JlcyBgU3ViamVjdGAgaW5zdGFuY2Ugd2hlblxuICogbm8gY3VzdG9tIGRlc3Ryb3kgbWV0aG9kIGlzIHByb3ZpZGVkLlxuICovXG5jb25zdCBERVNUUk9ZOiB1bmlxdWUgc3ltYm9sID0gU3ltYm9sKCdfX2Rlc3Ryb3knKTtcblxuLyoqXG4gKiBBcHBsaWVkIHRvIGRlZmluaXRpb25zIGFuZCBpbmZvcm1zIHRoYXQgY2xhc3MgaXMgZGVjb3JhdGVkXG4gKi9cbmNvbnN0IERFQ09SQVRPUl9BUFBMSUVEOiB1bmlxdWUgc3ltYm9sID0gU3ltYm9sKCdfX2RlY29yYXRvckFwcGxpZWQnKTtcblxuLyoqXG4gKiBJZiB3ZSB1c2UgdGhlIGB1bnRpbERlc3Ryb3llZGAgb3BlcmF0b3IgbXVsdGlwbGUgdGltZXMgaW5zaWRlIHRoZSBzaW5nbGVcbiAqIGluc3RhbmNlIHByb3ZpZGluZyBkaWZmZXJlbnQgYGRlc3Ryb3lNZXRob2ROYW1lYCwgdGhlbiBhbGwgc3RyZWFtcyB3aWxsXG4gKiBzdWJzY3JpYmUgdG8gdGhlIHNpbmdsZSBzdWJqZWN0LiBJZiBhbnkgbWV0aG9kIGlzIGludm9rZWQsIHRoZSBzdWJqZWN0IHdpbGxcbiAqIGVtaXQgYW5kIGFsbCBzdHJlYW1zIHdpbGwgYmUgdW5zdWJzY3JpYmVkLiBXZSB3YW4ndCB0byBwcmV2ZW50IHRoaXMgYmVoYXZpb3IsXG4gKiB0aHVzIHdlIHN0b3JlIHN1YmplY3RzIHVuZGVyIGRpZmZlcmVudCBzeW1ib2xzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ltYm9sPFQ+KGRlc3Ryb3lNZXRob2ROYW1lPzoga2V5b2YgVCk6IHN5bWJvbCB7XG4gIGlmICh0eXBlb2YgZGVzdHJveU1ldGhvZE5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIFN5bWJvbChgX19kZXN0cm95X18ke2Rlc3Ryb3lNZXRob2ROYW1lfWApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBERVNUUk9ZO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXJrQXNEZWNvcmF0ZWQ8VD4oXG4gIHR5cGU6IEluamVjdGFibGVUeXBlPFQ+IHwgUGlwZVR5cGU8VD4gfCDJtURpcmVjdGl2ZVR5cGU8VD4gfCDJtUNvbXBvbmVudFR5cGU8VD5cbik6IHZvaWQge1xuICAvLyBTdG9yZSB0aGlzIHByb3BlcnR5IG9uIHRoZSBwcm90b3R5cGUgaWYgaXQncyBhbiBpbmplY3RhYmxlIGNsYXNzLCBjb21wb25lbnQgb3IgZGlyZWN0aXZlLlxuICAvLyBXZSB3aWxsIGJlIGFibGUgdG8gaGFuZGxlIGNsYXNzIGV4dGVuc2lvbiB0aGlzIHdheS5cbiAgdHlwZS5wcm90b3R5cGVbREVDT1JBVE9SX0FQUExJRURdID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVbnRpbERlc3Ryb3lPcHRpb25zIHtcbiAgYmxhY2tMaXN0Pzogc3RyaW5nW107XG4gIGFycmF5TmFtZT86IHN0cmluZztcbiAgY2hlY2tQcm9wZXJ0aWVzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUNsYXNzSXNEZWNvcmF0ZWQoaW5zdGFuY2U6IGFueSk6IG5ldmVyIHwgdm9pZCB7XG4gIGlmIChtaXNzaW5nRGVjb3JhdG9yKGluc3RhbmNlLmNvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICd1bnRpbERlc3Ryb3llZCBvcGVyYXRvciBjYW5ub3QgYmUgdXNlZCBpbnNpZGUgZGlyZWN0aXZlcyBvciAnICtcbiAgICAgICAgJ2NvbXBvbmVudHMgb3IgcHJvdmlkZXJzIHRoYXQgYXJlIG5vdCBkZWNvcmF0ZWQgd2l0aCBVbnRpbERlc3Ryb3kgZGVjb3JhdG9yJ1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN1YmplY3RPblRoZUluc3RhbmNlKGluc3RhbmNlOiBhbnksIHN5bWJvbDogc3ltYm9sKTogdm9pZCB7XG4gIGlmICghaW5zdGFuY2Vbc3ltYm9sXSkge1xuICAgIGluc3RhbmNlW3N5bWJvbF0gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wbGV0ZVN1YmplY3RPblRoZUluc3RhbmNlKGluc3RhbmNlOiBhbnksIHN5bWJvbDogc3ltYm9sKTogdm9pZCB7XG4gIGlmIChpbnN0YW5jZVtzeW1ib2xdKSB7XG4gICAgaW5zdGFuY2Vbc3ltYm9sXS5uZXh0KCk7XG4gICAgaW5zdGFuY2Vbc3ltYm9sXS5jb21wbGV0ZSgpO1xuICAgIC8vIFdlIGFsc28gaGF2ZSB0byByZS1hc3NpZ24gdGhpcyBwcm9wZXJ0eSB0aHVzIGluIHRoZSBmdXR1cmVcbiAgICAvLyB3ZSB3aWxsIGJlIGFibGUgdG8gY3JlYXRlIG5ldyBzdWJqZWN0IG9uIHRoZSBzYW1lIGluc3RhbmNlLlxuICAgIGluc3RhbmNlW3N5bWJvbF0gPSBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1pc3NpbmdEZWNvcmF0b3I8VD4oXG4gIHR5cGU6IEluamVjdGFibGVUeXBlPFQ+IHwgUGlwZVR5cGU8VD4gfCDJtURpcmVjdGl2ZVR5cGU8VD4gfCDJtUNvbXBvbmVudFR5cGU8VD5cbik6IGJvb2xlYW4ge1xuICByZXR1cm4gIShERUNPUkFUT1JfQVBQTElFRCBpbiB0eXBlLnByb3RvdHlwZSk7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9pbnRlcm5hbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkvQixNQUFNLFVBQVUsVUFBVSxDQUFDLE1BQWU7SUFDeEMsT0FBTyxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUM7QUFDdEMsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxHQUFrQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFbkQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBa0IsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFN0U7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBSSxpQkFBMkI7SUFDdEQsSUFBSSxPQUFPLGlCQUFpQixLQUFLLFFBQVEsRUFBRTtRQUN6QyxPQUFPLE1BQU0sQ0FBQyxjQUFjLGlCQUFpQixFQUFFLENBQUMsQ0FBQztLQUNsRDtTQUFNO1FBQ0wsT0FBTyxPQUFPLENBQUM7S0FDaEI7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsSUFBNkU7SUFFN0UsNEZBQTRGO0lBQzVGLHNEQUFzRDtJQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzNDLENBQUM7QUFRRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsUUFBYSxFQUFFLE1BQWM7SUFDdEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNyQixRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztLQUN4QztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsNEJBQTRCLENBQUMsUUFBYSxFQUFFLE1BQWM7SUFDeEUsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDcEIsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM1Qiw2REFBNkQ7UUFDN0QsOERBQThEO1FBQzlELFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7S0FDekI7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZVR5cGUsIMm1RGlyZWN0aXZlVHlwZSwgybVDb21wb25lbnRUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFBpcGVUeXBlIH0gZnJvbSAnLi9pdnknO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNGdW5jdGlvbih0YXJnZXQ6IHVua25vd24pIHtcbiAgcmV0dXJuIHR5cGVvZiB0YXJnZXQgPT09ICdmdW5jdGlvbic7XG59XG5cbi8qKlxuICogQXBwbGllZCB0byBpbnN0YW5jZXMgYW5kIHN0b3JlcyBgU3ViamVjdGAgaW5zdGFuY2Ugd2hlblxuICogbm8gY3VzdG9tIGRlc3Ryb3kgbWV0aG9kIGlzIHByb3ZpZGVkLlxuICovXG5jb25zdCBERVNUUk9ZOiB1bmlxdWUgc3ltYm9sID0gU3ltYm9sKCdfX2Rlc3Ryb3knKTtcblxuLyoqXG4gKiBBcHBsaWVkIHRvIGRlZmluaXRpb25zIGFuZCBpbmZvcm1zIHRoYXQgY2xhc3MgaXMgZGVjb3JhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBERUNPUkFUT1JfQVBQTElFRDogdW5pcXVlIHN5bWJvbCA9IFN5bWJvbCgnX19kZWNvcmF0b3JBcHBsaWVkJyk7XG5cbi8qKlxuICogSWYgd2UgdXNlIHRoZSBgdW50aWxEZXN0cm95ZWRgIG9wZXJhdG9yIG11bHRpcGxlIHRpbWVzIGluc2lkZSB0aGUgc2luZ2xlXG4gKiBpbnN0YW5jZSBwcm92aWRpbmcgZGlmZmVyZW50IGBkZXN0cm95TWV0aG9kTmFtZWAsIHRoZW4gYWxsIHN0cmVhbXMgd2lsbFxuICogc3Vic2NyaWJlIHRvIHRoZSBzaW5nbGUgc3ViamVjdC4gSWYgYW55IG1ldGhvZCBpcyBpbnZva2VkLCB0aGUgc3ViamVjdCB3aWxsXG4gKiBlbWl0IGFuZCBhbGwgc3RyZWFtcyB3aWxsIGJlIHVuc3Vic2NyaWJlZC4gV2Ugd2FuJ3QgdG8gcHJldmVudCB0aGlzIGJlaGF2aW9yLFxuICogdGh1cyB3ZSBzdG9yZSBzdWJqZWN0cyB1bmRlciBkaWZmZXJlbnQgc3ltYm9scy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN5bWJvbDxUPihkZXN0cm95TWV0aG9kTmFtZT86IGtleW9mIFQpOiBzeW1ib2wge1xuICBpZiAodHlwZW9mIGRlc3Ryb3lNZXRob2ROYW1lID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBTeW1ib2woYF9fZGVzdHJveV9fJHtkZXN0cm95TWV0aG9kTmFtZX1gKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gREVTVFJPWTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFya0FzRGVjb3JhdGVkPFQ+KFxuICB0eXBlOiBJbmplY3RhYmxlVHlwZTxUPiB8IFBpcGVUeXBlPFQ+IHwgybVEaXJlY3RpdmVUeXBlPFQ+IHwgybVDb21wb25lbnRUeXBlPFQ+XG4pOiB2b2lkIHtcbiAgLy8gU3RvcmUgdGhpcyBwcm9wZXJ0eSBvbiB0aGUgcHJvdG90eXBlIGlmIGl0J3MgYW4gaW5qZWN0YWJsZSBjbGFzcywgY29tcG9uZW50IG9yIGRpcmVjdGl2ZS5cbiAgLy8gV2Ugd2lsbCBiZSBhYmxlIHRvIGhhbmRsZSBjbGFzcyBleHRlbnNpb24gdGhpcyB3YXkuXG4gIHR5cGUucHJvdG90eXBlW0RFQ09SQVRPUl9BUFBMSUVEXSA9IHRydWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW50aWxEZXN0cm95T3B0aW9ucyB7XG4gIGJsYWNrTGlzdD86IHN0cmluZ1tdO1xuICBhcnJheU5hbWU/OiBzdHJpbmc7XG4gIGNoZWNrUHJvcGVydGllcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdWJqZWN0T25UaGVJbnN0YW5jZShpbnN0YW5jZTogYW55LCBzeW1ib2w6IHN5bWJvbCk6IHZvaWQge1xuICBpZiAoIWluc3RhbmNlW3N5bWJvbF0pIHtcbiAgICBpbnN0YW5jZVtzeW1ib2xdID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGxldGVTdWJqZWN0T25UaGVJbnN0YW5jZShpbnN0YW5jZTogYW55LCBzeW1ib2w6IHN5bWJvbCk6IHZvaWQge1xuICBpZiAoaW5zdGFuY2Vbc3ltYm9sXSkge1xuICAgIGluc3RhbmNlW3N5bWJvbF0ubmV4dCgpO1xuICAgIGluc3RhbmNlW3N5bWJvbF0uY29tcGxldGUoKTtcbiAgICAvLyBXZSBhbHNvIGhhdmUgdG8gcmUtYXNzaWduIHRoaXMgcHJvcGVydHkgdGh1cyBpbiB0aGUgZnV0dXJlXG4gICAgLy8gd2Ugd2lsbCBiZSBhYmxlIHRvIGNyZWF0ZSBuZXcgc3ViamVjdCBvbiB0aGUgc2FtZSBpbnN0YW5jZS5cbiAgICBpbnN0YW5jZVtzeW1ib2xdID0gbnVsbDtcbiAgfVxufVxuIl19 |
import { takeUntil } from 'rxjs/operators'; | ||
import { getSymbol, isFunction, createSubjectOnTheInstance, completeSubjectOnTheInstance, ensureClassIsDecorated } from './internals'; | ||
import { DECORATOR_APPLIED, getSymbol, isFunction, createSubjectOnTheInstance, completeSubjectOnTheInstance } from './internals'; | ||
function overrideNonDirectiveInstanceMethod(instance, destroyMethodName, symbol) { | ||
const originalDestroy = instance[destroyMethodName]; | ||
if (isFunction(originalDestroy) === false) { | ||
if (ngDevMode && isFunction(originalDestroy) === false) { | ||
throw new Error(`${instance.constructor.name} is using untilDestroyed but doesn't implement ${destroyMethodName}`); | ||
@@ -10,3 +10,3 @@ } | ||
instance[destroyMethodName] = function () { | ||
isFunction(originalDestroy) && originalDestroy.apply(this, arguments); | ||
originalDestroy.apply(this, arguments); | ||
completeSubjectOnTheInstance(this, symbol); | ||
@@ -29,3 +29,3 @@ // We have to re-assign this property back to the original value. | ||
else { | ||
ensureClassIsDecorated(instance); | ||
ngDevMode && ensureClassIsDecorated(instance); | ||
createSubjectOnTheInstance(instance, symbol); | ||
@@ -36,2 +36,10 @@ } | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW50aWwtZGVzdHJveWVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi91bnRpbC1kZXN0cm95ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLDBCQUEwQixFQUMxQiw0QkFBNEIsRUFDNUIsc0JBQXNCLEVBQ3ZCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLFNBQVMsa0NBQWtDLENBQ3pDLFFBQWEsRUFDYixpQkFBeUIsRUFDekIsTUFBYztJQUVkLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRXBELElBQUksVUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEtBQUssRUFBRTtRQUN6QyxNQUFNLElBQUksS0FBSyxDQUNiLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGtEQUFrRCxpQkFBaUIsRUFBRSxDQUNsRyxDQUFDO0tBQ0g7SUFFRCwwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFN0MsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEdBQUc7UUFDNUIsVUFBVSxDQUFDLGVBQWUsQ0FBQyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3RFLDRCQUE0QixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzQyxpRUFBaUU7UUFDakUsbUVBQW1FO1FBQ25FLDJEQUEyRDtRQUMzRCx3Q0FBd0M7UUFDeEMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsZUFBZSxDQUFDO0lBQ2hELENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFJLFFBQVcsRUFBRSxpQkFBMkI7SUFDeEUsT0FBTyxDQUFJLE1BQXFCLEVBQUUsRUFBRTtRQUNsQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUksaUJBQWlCLENBQUMsQ0FBQztRQUUvQyw4REFBOEQ7UUFDOUQsOERBQThEO1FBQzlELElBQUksT0FBTyxpQkFBaUIsS0FBSyxRQUFRLEVBQUU7WUFDekMsa0NBQWtDLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pFO2FBQU07WUFDTCxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQywwQkFBMEIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDOUM7UUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFLLFFBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIGdldFN5bWJvbCxcbiAgaXNGdW5jdGlvbixcbiAgY3JlYXRlU3ViamVjdE9uVGhlSW5zdGFuY2UsXG4gIGNvbXBsZXRlU3ViamVjdE9uVGhlSW5zdGFuY2UsXG4gIGVuc3VyZUNsYXNzSXNEZWNvcmF0ZWRcbn0gZnJvbSAnLi9pbnRlcm5hbHMnO1xuXG5mdW5jdGlvbiBvdmVycmlkZU5vbkRpcmVjdGl2ZUluc3RhbmNlTWV0aG9kKFxuICBpbnN0YW5jZTogYW55LFxuICBkZXN0cm95TWV0aG9kTmFtZTogc3RyaW5nLFxuICBzeW1ib2w6IHN5bWJvbFxuKTogdm9pZCB7XG4gIGNvbnN0IG9yaWdpbmFsRGVzdHJveSA9IGluc3RhbmNlW2Rlc3Ryb3lNZXRob2ROYW1lXTtcblxuICBpZiAoaXNGdW5jdGlvbihvcmlnaW5hbERlc3Ryb3kpID09PSBmYWxzZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke2luc3RhbmNlLmNvbnN0cnVjdG9yLm5hbWV9IGlzIHVzaW5nIHVudGlsRGVzdHJveWVkIGJ1dCBkb2Vzbid0IGltcGxlbWVudCAke2Rlc3Ryb3lNZXRob2ROYW1lfWBcbiAgICApO1xuICB9XG5cbiAgY3JlYXRlU3ViamVjdE9uVGhlSW5zdGFuY2UoaW5zdGFuY2UsIHN5bWJvbCk7XG5cbiAgaW5zdGFuY2VbZGVzdHJveU1ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgaXNGdW5jdGlvbihvcmlnaW5hbERlc3Ryb3kpICYmIG9yaWdpbmFsRGVzdHJveS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGNvbXBsZXRlU3ViamVjdE9uVGhlSW5zdGFuY2UodGhpcywgc3ltYm9sKTtcbiAgICAvLyBXZSBoYXZlIHRvIHJlLWFzc2lnbiB0aGlzIHByb3BlcnR5IGJhY2sgdG8gdGhlIG9yaWdpbmFsIHZhbHVlLlxuICAgIC8vIElmIHRoZSBgdW50aWxEZXN0cm95ZWRgIG9wZXJhdG9yIGlzIGNhbGxlZCBmb3IgdGhlIHNhbWUgaW5zdGFuY2VcbiAgICAvLyBtdWx0aXBsZSB0aW1lcywgdGhlbiB3ZSB3aWxsIGJlIGFibGUgdG8gZ2V0IHRoZSBvcmlnaW5hbFxuICAgIC8vIG1ldGhvZCBhZ2FpbiBhbmQgbm90IHRoZSBwYXRjaGVkIG9uZS5cbiAgICBpbnN0YW5jZVtkZXN0cm95TWV0aG9kTmFtZV0gPSBvcmlnaW5hbERlc3Ryb3k7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnRpbERlc3Ryb3llZDxUPihpbnN0YW5jZTogVCwgZGVzdHJveU1ldGhvZE5hbWU/OiBrZXlvZiBUKSB7XG4gIHJldHVybiA8VT4oc291cmNlOiBPYnNlcnZhYmxlPFU+KSA9PiB7XG4gICAgY29uc3Qgc3ltYm9sID0gZ2V0U3ltYm9sPFQ+KGRlc3Ryb3lNZXRob2ROYW1lKTtcblxuICAgIC8vIElmIGBkZXN0cm95TWV0aG9kTmFtZWAgaXMgcGFzc2VkIHRoZW4gdGhlIGRldmVsb3BlciBhcHBsaWVzXG4gICAgLy8gdGhpcyBvcGVyYXRvciB0byBzb21ldGhpbmcgbm9uLXJlbGF0ZWQgdG8gQW5ndWxhciBESSBzeXN0ZW1cbiAgICBpZiAodHlwZW9mIGRlc3Ryb3lNZXRob2ROYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgb3ZlcnJpZGVOb25EaXJlY3RpdmVJbnN0YW5jZU1ldGhvZChpbnN0YW5jZSwgZGVzdHJveU1ldGhvZE5hbWUsIHN5bWJvbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVuc3VyZUNsYXNzSXNEZWNvcmF0ZWQoaW5zdGFuY2UpO1xuICAgICAgY3JlYXRlU3ViamVjdE9uVGhlSW5zdGFuY2UoaW5zdGFuY2UsIHN5bWJvbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvdXJjZS5waXBlKHRha2VVbnRpbDxVPigoaW5zdGFuY2UgYXMgYW55KVtzeW1ib2xdKSk7XG4gIH07XG59XG4iXX0= | ||
function ensureClassIsDecorated(instance) { | ||
const prototype = Object.getPrototypeOf(instance); | ||
const missingDecorator = !(DECORATOR_APPLIED in prototype); | ||
if (missingDecorator) { | ||
throw new Error('untilDestroyed operator cannot be used inside directives or ' + | ||
'components or providers that are not decorated with UntilDestroy decorator'); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW50aWwtZGVzdHJveWVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi91bnRpbC1kZXN0cm95ZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDViwwQkFBMEIsRUFDMUIsNEJBQTRCLEVBQzdCLE1BQU0sYUFBYSxDQUFDO0FBTXJCLFNBQVMsa0NBQWtDLENBQ3pDLFFBQWEsRUFDYixpQkFBeUIsRUFDekIsTUFBYztJQUVkLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRXBELElBQUksU0FBUyxJQUFJLFVBQVUsQ0FBQyxlQUFlLENBQUMsS0FBSyxLQUFLLEVBQUU7UUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxrREFBa0QsaUJBQWlCLEVBQUUsQ0FDbEcsQ0FBQztLQUNIO0lBRUQsMEJBQTBCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTdDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHO1FBQzVCLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLDRCQUE0QixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMzQyxpRUFBaUU7UUFDakUsbUVBQW1FO1FBQ25FLDJEQUEyRDtRQUMzRCx3Q0FBd0M7UUFDeEMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsZUFBZSxDQUFDO0lBQ2hELENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFJLFFBQVcsRUFBRSxpQkFBMkI7SUFDeEUsT0FBTyxDQUFJLE1BQXFCLEVBQUUsRUFBRTtRQUNsQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUksaUJBQWlCLENBQUMsQ0FBQztRQUUvQyw4REFBOEQ7UUFDOUQsOERBQThEO1FBQzlELElBQUksT0FBTyxpQkFBaUIsS0FBSyxRQUFRLEVBQUU7WUFDekMsa0NBQWtDLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3pFO2FBQU07WUFDTCxTQUFTLElBQUksc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsMEJBQTBCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQzlDO1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBSyxRQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxzQkFBc0IsQ0FBQyxRQUEyQjtJQUN6RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixJQUFJLFNBQVMsQ0FBQyxDQUFDO0lBRTNELElBQUksZ0JBQWdCLEVBQUU7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FDYiw4REFBOEQ7WUFDNUQsNEVBQTRFLENBQy9FLENBQUM7S0FDSDtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIERFQ09SQVRPUl9BUFBMSUVELFxuICBnZXRTeW1ib2wsXG4gIGlzRnVuY3Rpb24sXG4gIGNyZWF0ZVN1YmplY3RPblRoZUluc3RhbmNlLFxuICBjb21wbGV0ZVN1YmplY3RPblRoZUluc3RhbmNlXG59IGZyb20gJy4vaW50ZXJuYWxzJztcblxuLy8gVGhpcyB3aWxsIGJlIHByb3ZpZGVkIHRocm91Z2ggVGVyc2VyIGdsb2JhbCBkZWZpbml0aW9ucyBieSBBbmd1bGFyIENMSS4gVGhpcyB3aWxsXG4vLyBoZWxwIHRvIHRyZWUtc2hha2UgYXdheSB0aGUgY29kZSB1bm5lZWRlZCBmb3IgcHJvZHVjdGlvbiBidW5kbGVzLlxuZGVjbGFyZSBjb25zdCBuZ0Rldk1vZGU6IGJvb2xlYW47XG5cbmZ1bmN0aW9uIG92ZXJyaWRlTm9uRGlyZWN0aXZlSW5zdGFuY2VNZXRob2QoXG4gIGluc3RhbmNlOiBhbnksXG4gIGRlc3Ryb3lNZXRob2ROYW1lOiBzdHJpbmcsXG4gIHN5bWJvbDogc3ltYm9sXG4pOiB2b2lkIHtcbiAgY29uc3Qgb3JpZ2luYWxEZXN0cm95ID0gaW5zdGFuY2VbZGVzdHJveU1ldGhvZE5hbWVdO1xuXG4gIGlmIChuZ0Rldk1vZGUgJiYgaXNGdW5jdGlvbihvcmlnaW5hbERlc3Ryb3kpID09PSBmYWxzZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGAke2luc3RhbmNlLmNvbnN0cnVjdG9yLm5hbWV9IGlzIHVzaW5nIHVudGlsRGVzdHJveWVkIGJ1dCBkb2Vzbid0IGltcGxlbWVudCAke2Rlc3Ryb3lNZXRob2ROYW1lfWBcbiAgICApO1xuICB9XG5cbiAgY3JlYXRlU3ViamVjdE9uVGhlSW5zdGFuY2UoaW5zdGFuY2UsIHN5bWJvbCk7XG5cbiAgaW5zdGFuY2VbZGVzdHJveU1ldGhvZE5hbWVdID0gZnVuY3Rpb24oKSB7XG4gICAgb3JpZ2luYWxEZXN0cm95LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgY29tcGxldGVTdWJqZWN0T25UaGVJbnN0YW5jZSh0aGlzLCBzeW1ib2wpO1xuICAgIC8vIFdlIGhhdmUgdG8gcmUtYXNzaWduIHRoaXMgcHJvcGVydHkgYmFjayB0byB0aGUgb3JpZ2luYWwgdmFsdWUuXG4gICAgLy8gSWYgdGhlIGB1bnRpbERlc3Ryb3llZGAgb3BlcmF0b3IgaXMgY2FsbGVkIGZvciB0aGUgc2FtZSBpbnN0YW5jZVxuICAgIC8vIG11bHRpcGxlIHRpbWVzLCB0aGVuIHdlIHdpbGwgYmUgYWJsZSB0byBnZXQgdGhlIG9yaWdpbmFsXG4gICAgLy8gbWV0aG9kIGFnYWluIGFuZCBub3QgdGhlIHBhdGNoZWQgb25lLlxuICAgIGluc3RhbmNlW2Rlc3Ryb3lNZXRob2ROYW1lXSA9IG9yaWdpbmFsRGVzdHJveTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVudGlsRGVzdHJveWVkPFQ+KGluc3RhbmNlOiBULCBkZXN0cm95TWV0aG9kTmFtZT86IGtleW9mIFQpIHtcbiAgcmV0dXJuIDxVPihzb3VyY2U6IE9ic2VydmFibGU8VT4pID0+IHtcbiAgICBjb25zdCBzeW1ib2wgPSBnZXRTeW1ib2w8VD4oZGVzdHJveU1ldGhvZE5hbWUpO1xuXG4gICAgLy8gSWYgYGRlc3Ryb3lNZXRob2ROYW1lYCBpcyBwYXNzZWQgdGhlbiB0aGUgZGV2ZWxvcGVyIGFwcGxpZXNcbiAgICAvLyB0aGlzIG9wZXJhdG9yIHRvIHNvbWV0aGluZyBub24tcmVsYXRlZCB0byBBbmd1bGFyIERJIHN5c3RlbVxuICAgIGlmICh0eXBlb2YgZGVzdHJveU1ldGhvZE5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBvdmVycmlkZU5vbkRpcmVjdGl2ZUluc3RhbmNlTWV0aG9kKGluc3RhbmNlLCBkZXN0cm95TWV0aG9kTmFtZSwgc3ltYm9sKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmdEZXZNb2RlICYmIGVuc3VyZUNsYXNzSXNEZWNvcmF0ZWQoaW5zdGFuY2UpO1xuICAgICAgY3JlYXRlU3ViamVjdE9uVGhlSW5zdGFuY2UoaW5zdGFuY2UsIHN5bWJvbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvdXJjZS5waXBlKHRha2VVbnRpbDxVPigoaW5zdGFuY2UgYXMgYW55KVtzeW1ib2xdKSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGVuc3VyZUNsYXNzSXNEZWNvcmF0ZWQoaW5zdGFuY2U6IEluc3RhbmNlVHlwZTxhbnk+KTogbmV2ZXIgfCB2b2lkIHtcbiAgY29uc3QgcHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGluc3RhbmNlKTtcbiAgY29uc3QgbWlzc2luZ0RlY29yYXRvciA9ICEoREVDT1JBVE9SX0FQUExJRUQgaW4gcHJvdG90eXBlKTtcblxuICBpZiAobWlzc2luZ0RlY29yYXRvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICd1bnRpbERlc3Ryb3llZCBvcGVyYXRvciBjYW5ub3QgYmUgdXNlZCBpbnNpZGUgZGlyZWN0aXZlcyBvciAnICtcbiAgICAgICAgJ2NvbXBvbmVudHMgb3IgcHJvdmlkZXJzIHRoYXQgYXJlIG5vdCBkZWNvcmF0ZWQgd2l0aCBVbnRpbERlc3Ryb3kgZGVjb3JhdG9yJ1xuICAgICk7XG4gIH1cbn1cbiJdfQ== |
@@ -42,8 +42,2 @@ import { ɵNG_PIPE_DEF } from '@angular/core'; | ||
} | ||
function ensureClassIsDecorated(instance) { | ||
if (missingDecorator(instance.constructor)) { | ||
throw new Error('untilDestroyed operator cannot be used inside directives or ' + | ||
'components or providers that are not decorated with UntilDestroy decorator'); | ||
} | ||
} | ||
function createSubjectOnTheInstance(instance, symbol) { | ||
@@ -63,5 +57,2 @@ if (!instance[symbol]) { | ||
} | ||
function missingDecorator(type) { | ||
return !(DECORATOR_APPLIED in type.prototype); | ||
} | ||
@@ -118,3 +109,3 @@ function unsubscribe(property) { | ||
const originalDestroy = instance[destroyMethodName]; | ||
if (isFunction(originalDestroy) === false) { | ||
if (ngDevMode && isFunction(originalDestroy) === false) { | ||
throw new Error(`${instance.constructor.name} is using untilDestroyed but doesn't implement ${destroyMethodName}`); | ||
@@ -124,3 +115,3 @@ } | ||
instance[destroyMethodName] = function () { | ||
isFunction(originalDestroy) && originalDestroy.apply(this, arguments); | ||
originalDestroy.apply(this, arguments); | ||
completeSubjectOnTheInstance(this, symbol); | ||
@@ -143,3 +134,3 @@ // We have to re-assign this property back to the original value. | ||
else { | ||
ensureClassIsDecorated(instance); | ||
ngDevMode && ensureClassIsDecorated(instance); | ||
createSubjectOnTheInstance(instance, symbol); | ||
@@ -150,2 +141,10 @@ } | ||
} | ||
function ensureClassIsDecorated(instance) { | ||
const prototype = Object.getPrototypeOf(instance); | ||
const missingDecorator = !(DECORATOR_APPLIED in prototype); | ||
if (missingDecorator) { | ||
throw new Error('untilDestroyed operator cannot be used inside directives or ' + | ||
'components or providers that are not decorated with UntilDestroy decorator'); | ||
} | ||
} | ||
@@ -152,0 +151,0 @@ /** |
@@ -5,2 +5,6 @@ import { InjectableType, ɵDirectiveType, ɵComponentType } from '@angular/core'; | ||
/** | ||
* Applied to definitions and informs that class is decorated | ||
*/ | ||
export declare const DECORATOR_APPLIED: unique symbol; | ||
/** | ||
* If we use the `untilDestroyed` operator multiple times inside the single | ||
@@ -19,4 +23,3 @@ * instance providing different `destroyMethodName`, then all streams will | ||
} | ||
export declare function ensureClassIsDecorated(instance: any): never | void; | ||
export declare function createSubjectOnTheInstance(instance: any, symbol: symbol): void; | ||
export declare function completeSubjectOnTheInstance(instance: any, symbol: symbol): void; |
@@ -1,1 +0,1 @@ | ||
{"__symbolic":"module","version":4,"metadata":{"UntilDestroy":{"__symbolic":"function","parameters":["options"],"defaults":[{}],"value":{"__symbolic":"error","message":"Lambda not supported","line":67,"character":9,"module":"./lib/until-destroy"}},"untilDestroyed":{"__symbolic":"function","parameters":["instance","destroyMethodName"],"value":{"__symbolic":"error","message":"Lambda not supported","line":38,"character":9,"module":"./lib/until-destroyed"}}},"origins":{"UntilDestroy":"./lib/until-destroy","untilDestroyed":"./lib/until-destroyed"},"importAs":"@ngneat/until-destroy"} | ||
{"__symbolic":"module","version":4,"metadata":{"UntilDestroy":{"__symbolic":"function","parameters":["options"],"defaults":[{}],"value":{"__symbolic":"error","message":"Lambda not supported","line":67,"character":9,"module":"./lib/until-destroy"}},"untilDestroyed":{"__symbolic":"function","parameters":["instance","destroyMethodName"],"value":{"__symbolic":"error","message":"Lambda not supported","line":42,"character":9,"module":"./lib/until-destroyed"}}},"origins":{"UntilDestroy":"./lib/until-destroy","untilDestroyed":"./lib/until-destroyed"},"importAs":"@ngneat/until-destroy"} |
@@ -5,3 +5,3 @@ { | ||
"description": "RxJS operator that unsubscribes when Angular component is destroyed", | ||
"version": "8.0.3", | ||
"version": "8.0.4", | ||
"repository": { | ||
@@ -45,2 +45,2 @@ "type": "git", | ||
"metadata": "ngneat-until-destroy.metadata.json" | ||
} | ||
} |
@@ -5,3 +5,4 @@ # 🦁 Unsubscribe For Pros | ||
![@ngneat/until-destroy](https://github.com/ngneat/until-destroy/workflows/@ngneat/until-destroy/badge.svg) | ||
[![@ngneat/until-destroy](https://github.com/ngneat/until-destroy/workflows/@ngneat/until-destroy/badge.svg)](https://github.com/ngneat/until-destroy/actions/workflows/until-destroy.yml) | ||
[![npm](https://img.shields.io/npm/dm/@ngneat/until-destroy?style=plastic)](https://www.npmjs.com/package/@ngneat/until-destroy) | ||
@@ -179,2 +180,7 @@ ## Table of contents | ||
## ESLint Rules | ||
- [prefer-takeuntil](https://github.com/cartant/eslint-plugin-rxjs-angular/blob/main/docs/rules/prefer-takeuntil.md#options) | ||
- [no-unsafe-takeuntil](https://github.com/cartant/eslint-plugin-rxjs/blob/main/docs/rules/no-unsafe-takeuntil.md#options) | ||
## Contributors ✨ | ||
@@ -181,0 +187,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
83597
209