ngx-observable-lifecycle
Advanced tools
Comparing version 2.1.1 to 2.1.3
@@ -23,5 +23,5 @@ (function (global, factory) { | ||
proto[hook] = function () { | ||
var _a, _b, _c; | ||
var _a; | ||
(_a = originalHook_1) === null || _a === void 0 ? void 0 : _a.call(this); | ||
(_c = (_b = this[hookSubject]) === null || _b === void 0 ? void 0 : _b[hook]) === null || _c === void 0 ? void 0 : _c.next(); | ||
this[hookSubject][hook].next(); | ||
}; | ||
@@ -28,0 +28,0 @@ var originalOnDestroy_1 = proto.ngOnDestroy; |
@@ -1,2 +0,2 @@ | ||
!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("rxjs")):"function"==typeof define&&define.amd?define("ngx-observable-lifecycle",["exports","rxjs"],o):o((e="undefined"!=typeof globalThis?globalThis:e||self)["ngx-observable-lifecycle"]={},e.rxjs)}(this,(function(e,o){"use strict";var n=Symbol("ngx-observable-lifecycle-hooks"),l=Symbol("ngx-observable-lifecycle-hooks-decorator");e.getObservableLifecycle=function(e){return new Proxy({},{get:function(t,i){return function(e,t){e[n]||(e[n]={}),e[n][t]||(e[n][t]=new o.Subject);var i=e.constructor.prototype;if(i[l]||(i[l]={}),!i[l][t]){var r=i[t];i[t]=function(){var e,o,l;null===(e=r)||void 0===e||e.call(this),null===(l=null===(o=this[n])||void 0===o?void 0:o[t])||void 0===l||l.next()};var s=i.ngOnDestroy;i.ngOnDestroy=function(){var e,o,l;null==s||s.call(this),null===(o=null===(e=this[n])||void 0===e?void 0:e[t])||void 0===o||o.complete(),null===(l=this[n])||void 0===l||delete l[t]},i[l][t]=!0}return e[n][t]}(e,i).asObservable()}})},e.hookSubject=n,e.hooksPatched=l,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("rxjs")):"function"==typeof define&&define.amd?define("ngx-observable-lifecycle",["exports","rxjs"],o):o((e="undefined"!=typeof globalThis?globalThis:e||self)["ngx-observable-lifecycle"]={},e.rxjs)}(this,(function(e,o){"use strict";var n=Symbol("ngx-observable-lifecycle-hooks"),t=Symbol("ngx-observable-lifecycle-hooks-decorator");e.getObservableLifecycle=function(e){return new Proxy({},{get:function(l,r){return function(e,l){e[n]||(e[n]={}),e[n][l]||(e[n][l]=new o.Subject);var r=e.constructor.prototype;if(r[t]||(r[t]={}),!r[t][l]){var i=r[l];r[l]=function(){var e;null===(e=i)||void 0===e||e.call(this),this[n][l].next()};var s=r.ngOnDestroy;r.ngOnDestroy=function(){var e,o,t;null==s||s.call(this),null===(o=null===(e=this[n])||void 0===e?void 0:e[l])||void 0===o||o.complete(),null===(t=this[n])||void 0===t||delete t[l]},r[t][l]=!0}return e[n][l]}(e,r).asObservable()}})},e.hookSubject=n,e.hooksPatched=t,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=ngx-observable-lifecycle.umd.min.js.map |
@@ -18,5 +18,5 @@ import { Subject } from 'rxjs'; | ||
proto[hook] = function () { | ||
var _a, _b, _c; | ||
var _a; | ||
(_a = originalHook) === null || _a === void 0 ? void 0 : _a.call(this); | ||
(_c = (_b = this[hookSubject]) === null || _b === void 0 ? void 0 : _b[hook]) === null || _c === void 0 ? void 0 : _c.next(); | ||
this[hookSubject][hook].next(); | ||
}; | ||
@@ -45,2 +45,2 @@ const originalOnDestroy = proto.ngOnDestroy; | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW9ic2VydmFibGUtbGlmZWN5Y2xlLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL25neC1vYnNlcnZhYmxlLWxpZmVjeWNsZS9uZ3gtb2JzZXJ2YWJsZS1saWZlY3ljbGUvcHJvamVjdHMvbmd4LW9ic2VydmFibGUtbGlmZWN5Y2xlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtb2JzZXJ2YWJsZS1saWZlY3ljbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQWtCLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0FBQ25GLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBa0IsTUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7QUF1QjlGLFNBQVMsaUJBQWlCLENBQUMsaUJBQW9DLEVBQUUsSUFBc0I7SUFDckYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ25DLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUNyQztJQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN6QyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBQzVEO0lBRUQsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFO1FBQ3hCLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDMUI7SUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzlCLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUc7O1lBQ1osTUFBQyxZQUEyQiwwQ0FBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3pDLFlBQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQywwQ0FBRyxJQUFJLDJDQUFHLElBQUksR0FBRztRQUNwQyxDQUFDLENBQUM7UUFFRixNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDNUMsS0FBSyxDQUFDLFdBQVcsR0FBRzs7WUFDbEIsaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUM5QixZQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsMENBQUcsSUFBSSwyQ0FBRyxRQUFRLEdBQUc7WUFDdEMsTUFBTyxJQUFJLENBQUMsV0FBVyxDQUFDLCtDQUFHLElBQUksRUFBRTtRQUNuQyxDQUFDLENBQUM7UUFFRixLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0tBQ2xDO0lBRUQsb0ZBQW9GO0lBQ3BGLE9BQU8saUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFFLENBQUM7QUFDL0MsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLGFBQWtCO0lBQ3ZELE9BQU8sSUFBSSxLQUFLLENBQUMsRUFBb0IsRUFBRTtRQUNyQyxHQUFHLENBQUMsTUFBc0IsRUFBRSxDQUFtQjtZQUM3QyxPQUFPLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1RCxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIEFmdGVyVmlld0luaXQsXG4gIERvQ2hlY2ssXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgaG9va1N1YmplY3Q6IHVuaXF1ZSBzeW1ib2wgPSBTeW1ib2woJ25neC1vYnNlcnZhYmxlLWxpZmVjeWNsZS1ob29rcycpO1xuZXhwb3J0IGNvbnN0IGhvb2tzUGF0Y2hlZDogdW5pcXVlIHN5bWJvbCA9IFN5bWJvbCgnbmd4LW9ic2VydmFibGUtbGlmZWN5Y2xlLWhvb2tzLWRlY29yYXRvcicpO1xuXG5leHBvcnQgdHlwZSBBbGxIb29rcyA9IE9uQ2hhbmdlcyAmXG4gIE9uSW5pdCAmXG4gIERvQ2hlY2sgJlxuICBBZnRlckNvbnRlbnRJbml0ICZcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCAmXG4gIEFmdGVyVmlld0luaXQgJlxuICBBZnRlclZpZXdDaGVja2VkICZcbiAgT25EZXN0cm95O1xuZXhwb3J0IHR5cGUgTGlmZWN5Y2xlSG9va0tleSA9IGtleW9mIEFsbEhvb2tzO1xuXG50eXBlIEFsbEhvb2tPcHRpb25zID0gUmVjb3JkPExpZmVjeWNsZUhvb2tLZXksIHRydWU+O1xudHlwZSBEZWNvcmF0ZUhvb2tPcHRpb25zID0gUGFydGlhbDxBbGxIb29rT3B0aW9ucz47XG5cbmV4cG9ydCB0eXBlIERlY29yYXRlZEhvb2tzID0gUmVjb3JkPExpZmVjeWNsZUhvb2tLZXksIE9ic2VydmFibGU8dm9pZD4+O1xuZXhwb3J0IHR5cGUgRGVjb3JhdGVkSG9va3NTdWIgPSBSZWNvcmQ8TGlmZWN5Y2xlSG9va0tleSwgU3ViamVjdDx2b2lkPj47XG5cbnR5cGUgQ29tcG9uZW50SW5zdGFuY2UgPSBQYXJ0aWFsPEFsbEhvb2tzPiAmIHtcbiAgW2hvb2tTdWJqZWN0XTogUGFydGlhbDxEZWNvcmF0ZWRIb29rc1N1Yj47XG4gIFtob29rc1BhdGNoZWRdOiBQYXJ0aWFsPERlY29yYXRlSG9va09wdGlvbnM+O1xufTtcblxuZnVuY3Rpb24gZ2V0U3ViamVjdEZvckhvb2soY29tcG9uZW50SW5zdGFuY2U6IENvbXBvbmVudEluc3RhbmNlLCBob29rOiBMaWZlY3ljbGVIb29rS2V5KTogU3ViamVjdDx2b2lkPiB7XG4gIGlmICghY29tcG9uZW50SW5zdGFuY2VbaG9va1N1YmplY3RdKSB7XG4gICAgY29tcG9uZW50SW5zdGFuY2VbaG9va1N1YmplY3RdID0ge307XG4gIH1cblxuICBpZiAoIWNvbXBvbmVudEluc3RhbmNlW2hvb2tTdWJqZWN0XVtob29rXSkge1xuICAgIGNvbXBvbmVudEluc3RhbmNlW2hvb2tTdWJqZWN0XVtob29rXSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIH1cblxuICBjb25zdCBwcm90byA9IGNvbXBvbmVudEluc3RhbmNlLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgaWYgKCFwcm90b1tob29rc1BhdGNoZWRdKSB7XG4gICAgcHJvdG9baG9va3NQYXRjaGVkXSA9IHt9O1xuICB9XG5cbiAgaWYgKCFwcm90b1tob29rc1BhdGNoZWRdW2hvb2tdKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxIb29rID0gcHJvdG9baG9va107XG5cbiAgICBwcm90b1tob29rXSA9IGZ1bmN0aW9uICh0aGlzOiBDb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgKG9yaWdpbmFsSG9vayBhcyAoKSA9PiB2b2lkKT8uY2FsbCh0aGlzKTtcbiAgICAgIHRoaXNbaG9va1N1YmplY3RdPy5baG9va10/Lm5leHQoKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb3JpZ2luYWxPbkRlc3Ryb3kgPSBwcm90by5uZ09uRGVzdHJveTtcbiAgICBwcm90by5uZ09uRGVzdHJveSA9IGZ1bmN0aW9uICh0aGlzOiBDb21wb25lbnRJbnN0YW5jZSkge1xuICAgICAgb3JpZ2luYWxPbkRlc3Ryb3k/LmNhbGwodGhpcyk7XG4gICAgICB0aGlzW2hvb2tTdWJqZWN0XT8uW2hvb2tdPy5jb21wbGV0ZSgpO1xuICAgICAgZGVsZXRlIHRoaXNbaG9va1N1YmplY3RdPy5baG9va107XG4gICAgfTtcblxuICAgIHByb3RvW2hvb2tzUGF0Y2hlZF1baG9va10gPSB0cnVlO1xuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW5vbi1udWxsLWFzc2VydGlvbiAtIHRoaXMgaXMgZGVmaW5pdGVseSBkZWZpbmVkIGFib3ZlXG4gIHJldHVybiBjb21wb25lbnRJbnN0YW5jZVtob29rU3ViamVjdF1baG9va10hO1xufVxuXG4vKipcbiAqIExpYnJhcnkgYXV0aG9ycyBzaG91bGQgdXNlIHRoaXMgdG8gY3JlYXRlIHRoZWlyIG93biBsaWZlY3ljbGUtYXdhcmUgZnVuY3Rpb25hbGl0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JzZXJ2YWJsZUxpZmVjeWNsZShjbGFzc0luc3RhbmNlOiBhbnkpOiBEZWNvcmF0ZWRIb29rcyB7XG4gIHJldHVybiBuZXcgUHJveHkoe30gYXMgRGVjb3JhdGVkSG9va3MsIHtcbiAgICBnZXQodGFyZ2V0OiBEZWNvcmF0ZWRIb29rcywgcDogTGlmZWN5Y2xlSG9va0tleSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgcmV0dXJuIGdldFN1YmplY3RGb3JIb29rKGNsYXNzSW5zdGFuY2UsIHApLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH0sXG4gIH0pO1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW9ic2VydmFibGUtbGlmZWN5Y2xlLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL25neC1vYnNlcnZhYmxlLWxpZmVjeWNsZS9uZ3gtb2JzZXJ2YWJsZS1saWZlY3ljbGUvcHJvamVjdHMvbmd4LW9ic2VydmFibGUtbGlmZWN5Y2xlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtb2JzZXJ2YWJsZS1saWZlY3ljbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQWtCLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0FBQ25GLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBa0IsTUFBTSxDQUFDLDBDQUEwQyxDQUFDLENBQUM7QUEyQjlGLFNBQVMsaUJBQWlCLENBQUMsaUJBQWdELEVBQUUsSUFBc0I7SUFDakcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ25DLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUNyQztJQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN6QyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0tBQzVEO0lBRUQsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFO1FBQ3hCLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDMUI7SUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQzlCLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVqQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUc7O1lBQ1osTUFBQyxZQUEyQiwwQ0FBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQyxDQUFDLENBQUM7UUFFRixNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7UUFDNUMsS0FBSyxDQUFDLFdBQVcsR0FBRzs7WUFDbEIsaUJBQWlCLGFBQWpCLGlCQUFpQix1QkFBakIsaUJBQWlCLENBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUM5QixZQUFBLElBQUksQ0FBQyxXQUFXLENBQUMsMENBQUcsSUFBSSwyQ0FBRyxRQUFRLEdBQUc7WUFDdEMsTUFBTyxJQUFJLENBQUMsV0FBVyxDQUFDLCtDQUFHLElBQUksRUFBRTtRQUNuQyxDQUFDLENBQUM7UUFFRixLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0tBQ2xDO0lBRUQsb0ZBQW9GO0lBQ3BGLE9BQU8saUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFFLENBQUM7QUFDL0MsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLGFBQWtCO0lBQ3ZELE9BQU8sSUFBSSxLQUFLLENBQUMsRUFBb0IsRUFBRTtRQUNyQyxHQUFHLENBQUMsTUFBc0IsRUFBRSxDQUFtQjtZQUM3QyxPQUFPLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1RCxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIEFmdGVyVmlld0luaXQsXG4gIERvQ2hlY2ssXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgaG9va1N1YmplY3Q6IHVuaXF1ZSBzeW1ib2wgPSBTeW1ib2woJ25neC1vYnNlcnZhYmxlLWxpZmVjeWNsZS1ob29rcycpO1xuZXhwb3J0IGNvbnN0IGhvb2tzUGF0Y2hlZDogdW5pcXVlIHN5bWJvbCA9IFN5bWJvbCgnbmd4LW9ic2VydmFibGUtbGlmZWN5Y2xlLWhvb2tzLWRlY29yYXRvcicpO1xuXG5leHBvcnQgdHlwZSBBbGxIb29rcyA9IE9uQ2hhbmdlcyAmXG4gIE9uSW5pdCAmXG4gIERvQ2hlY2sgJlxuICBBZnRlckNvbnRlbnRJbml0ICZcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCAmXG4gIEFmdGVyVmlld0luaXQgJlxuICBBZnRlclZpZXdDaGVja2VkICZcbiAgT25EZXN0cm95O1xuZXhwb3J0IHR5cGUgTGlmZWN5Y2xlSG9va0tleSA9IGtleW9mIEFsbEhvb2tzO1xuXG50eXBlIEFsbEhvb2tPcHRpb25zID0gUmVjb3JkPExpZmVjeWNsZUhvb2tLZXksIHRydWU+O1xudHlwZSBEZWNvcmF0ZUhvb2tPcHRpb25zID0gUGFydGlhbDxBbGxIb29rT3B0aW9ucz47XG5cbmV4cG9ydCB0eXBlIERlY29yYXRlZEhvb2tzID0gUmVjb3JkPExpZmVjeWNsZUhvb2tLZXksIE9ic2VydmFibGU8dm9pZD4+O1xuZXhwb3J0IHR5cGUgRGVjb3JhdGVkSG9va3NTdWIgPSBSZWNvcmQ8TGlmZWN5Y2xlSG9va0tleSwgU3ViamVjdDx2b2lkPj47XG5cbnR5cGUgUGF0Y2hlZENvbXBvbmVudEluc3RhbmNlPEsgZXh0ZW5kcyBMaWZlY3ljbGVIb29rS2V5PiA9IFBpY2s8QWxsSG9va3MsIEs+ICYge1xuICBbaG9va1N1YmplY3RdOiBQaWNrPERlY29yYXRlZEhvb2tzU3ViLCBLPjtcbiAgY29uc3RydWN0b3I6IHtcbiAgICBwcm90b3R5cGU6IHtcbiAgICAgIFtob29rc1BhdGNoZWRdOiBQaWNrPERlY29yYXRlSG9va09wdGlvbnMsIEs+O1xuICAgIH07XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTdWJqZWN0Rm9ySG9vayhjb21wb25lbnRJbnN0YW5jZTogUGF0Y2hlZENvbXBvbmVudEluc3RhbmNlPGFueT4sIGhvb2s6IExpZmVjeWNsZUhvb2tLZXkpOiBTdWJqZWN0PHZvaWQ+IHtcbiAgaWYgKCFjb21wb25lbnRJbnN0YW5jZVtob29rU3ViamVjdF0pIHtcbiAgICBjb21wb25lbnRJbnN0YW5jZVtob29rU3ViamVjdF0gPSB7fTtcbiAgfVxuXG4gIGlmICghY29tcG9uZW50SW5zdGFuY2VbaG9va1N1YmplY3RdW2hvb2tdKSB7XG4gICAgY29tcG9uZW50SW5zdGFuY2VbaG9va1N1YmplY3RdW2hvb2tdID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgfVxuXG4gIGNvbnN0IHByb3RvID0gY29tcG9uZW50SW5zdGFuY2UuY29uc3RydWN0b3IucHJvdG90eXBlO1xuICBpZiAoIXByb3RvW2hvb2tzUGF0Y2hlZF0pIHtcbiAgICBwcm90b1tob29rc1BhdGNoZWRdID0ge307XG4gIH1cblxuICBpZiAoIXByb3RvW2hvb2tzUGF0Y2hlZF1baG9va10pIHtcbiAgICBjb25zdCBvcmlnaW5hbEhvb2sgPSBwcm90b1tob29rXTtcblxuICAgIHByb3RvW2hvb2tdID0gZnVuY3Rpb24gKHRoaXM6IFBhdGNoZWRDb21wb25lbnRJbnN0YW5jZTx0eXBlb2YgaG9vaz4pIHtcbiAgICAgIChvcmlnaW5hbEhvb2sgYXMgKCkgPT4gdm9pZCk/LmNhbGwodGhpcyk7XG4gICAgICB0aGlzW2hvb2tTdWJqZWN0XVtob29rXS5uZXh0KCk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9yaWdpbmFsT25EZXN0cm95ID0gcHJvdG8ubmdPbkRlc3Ryb3k7XG4gICAgcHJvdG8ubmdPbkRlc3Ryb3kgPSBmdW5jdGlvbiAodGhpczogUGF0Y2hlZENvbXBvbmVudEluc3RhbmNlPHR5cGVvZiBob29rPikge1xuICAgICAgb3JpZ2luYWxPbkRlc3Ryb3k/LmNhbGwodGhpcyk7XG4gICAgICB0aGlzW2hvb2tTdWJqZWN0XT8uW2hvb2tdPy5jb21wbGV0ZSgpO1xuICAgICAgZGVsZXRlIHRoaXNbaG9va1N1YmplY3RdPy5baG9va107XG4gICAgfTtcblxuICAgIHByb3RvW2hvb2tzUGF0Y2hlZF1baG9va10gPSB0cnVlO1xuICB9XG5cbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW5vbi1udWxsLWFzc2VydGlvbiAtIHRoaXMgaXMgZGVmaW5pdGVseSBkZWZpbmVkIGFib3ZlXG4gIHJldHVybiBjb21wb25lbnRJbnN0YW5jZVtob29rU3ViamVjdF1baG9va10hO1xufVxuXG4vKipcbiAqIExpYnJhcnkgYXV0aG9ycyBzaG91bGQgdXNlIHRoaXMgdG8gY3JlYXRlIHRoZWlyIG93biBsaWZlY3ljbGUtYXdhcmUgZnVuY3Rpb25hbGl0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T2JzZXJ2YWJsZUxpZmVjeWNsZShjbGFzc0luc3RhbmNlOiBhbnkpOiBEZWNvcmF0ZWRIb29rcyB7XG4gIHJldHVybiBuZXcgUHJveHkoe30gYXMgRGVjb3JhdGVkSG9va3MsIHtcbiAgICBnZXQodGFyZ2V0OiBEZWNvcmF0ZWRIb29rcywgcDogTGlmZWN5Y2xlSG9va0tleSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgICAgcmV0dXJuIGdldFN1YmplY3RGb3JIb29rKGNsYXNzSW5zdGFuY2UsIHApLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH0sXG4gIH0pO1xufVxuIl19 |
@@ -19,5 +19,5 @@ import { Subject } from 'rxjs'; | ||
proto[hook] = function () { | ||
var _a, _b, _c; | ||
var _a; | ||
(_a = originalHook) === null || _a === void 0 ? void 0 : _a.call(this); | ||
(_c = (_b = this[hookSubject]) === null || _b === void 0 ? void 0 : _b[hook]) === null || _c === void 0 ? void 0 : _c.next(); | ||
this[hookSubject][hook].next(); | ||
}; | ||
@@ -24,0 +24,0 @@ const originalOnDestroy = proto.ngOnDestroy; |
{ | ||
"name": "ngx-observable-lifecycle", | ||
"version": "2.1.1", | ||
"version": "2.1.3", | ||
"dependencies": { | ||
@@ -5,0 +5,0 @@ "tslib": "^2.0.0" |
127
README.md
# NgxObservableLifecycle | ||
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.7. | ||
[](https://www.npmjs.com/package/ngx-observable-lifecycle) | ||
[](https://github.com/cloudnc/ngx-observable-lifecycle/actions) | ||
[](https://commitizen.github.io/cz-cli/) | ||
[](https://codecov.io/gh/cloudnc/ngx-observable-lifecycle) | ||
[](https://raw.githubusercontent.com/cloudnc/ngx-observable-lifecycle/master/LICENSE) | ||
 | ||
 | ||
## Code scaffolding | ||
[](https://nodei.co/npm/ngx-observable-lifecycle/) | ||
Run `ng generate component component-name --project ngx-observable-lifecycle` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ngx-observable-lifecycle`. | ||
> Note: Don't forget to add `--project ngx-observable-lifecycle` or else it will be added to the default project in your `angular.json` file. | ||
## Features | ||
## Build | ||
* Easily develop library components that rely on the Angular component/directive lifecycle | ||
* Avoid bugs caused by forgetting to ensure that Angular hook interfaces are implemented | ||
* Multiple different libraries can share the same underlying hook design | ||
* Hooks are explicitly defined - only the hooks you declare an interest in are observed | ||
Run `ng build ngx-observable-lifecycle` to build the project. The build artifacts will be stored in the `dist/` directory. | ||
## Purpose & Limitations | ||
## Publishing | ||
This library fills the need for a simple way for **library developers** to be able to observe the lifecycle of an Angular | ||
component. | ||
After building your library with `ng build ngx-observable-lifecycle`, go to the dist folder `cd dist/ngx-observable-lifecycle` and run `npm publish`. | ||
## Example | ||
## Running unit tests | ||
Let's say we're building a simple library function that automatically unsubscribes from observables that were manually | ||
subscribed to within a component. We'll implement this as an RxJS operator that can be used as follows: | ||
Run `ng test ngx-observable-lifecycle` to execute the unit tests via [Karma](https://karma-runner.github.io). | ||
```ts | ||
// ./src/app/lib-example/lib-example.component.ts#L12-L12 | ||
## Further help | ||
public timer$ = interval(500).pipe(automaticUnsubscribe(this)); | ||
```` | ||
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). | ||
In order to create this operator, we can do the following: | ||
```ts | ||
// ./src/app/lib-example/lib-example.ts#L1-L8 | ||
import { getObservableLifecycle } from 'ngx-observable-lifecycle'; | ||
import { Observable } from 'rxjs'; | ||
import { takeUntil } from 'rxjs/operators'; | ||
export function automaticUnsubscribe<T>(component): (source: Observable<T>) => Observable<T> { | ||
const { ngOnDestroy } = getObservableLifecycle(component); | ||
return (source: Observable<T>): Observable<T> => source.pipe(takeUntil(ngOnDestroy)); | ||
} | ||
``` | ||
We call the`getObservableLifecycle` function exported by `ngx-observable-lifecycle` and destructure the `onDestroy` | ||
observable. This observable is used with a `takeUntil` operator from `rxjs` which will automatically unsubscribe from | ||
the observable that it is piped on. | ||
And that's it! Developers can now simply decorate their component, and use the rxjs operator on any of the places they | ||
subscribe manually (i.e. calling `.subscribe()` ) to an observable: | ||
```ts | ||
// ./src/app/lib-example/lib-example.component.ts | ||
import { ChangeDetectionStrategy, Component } from '@angular/core'; | ||
import { interval } from 'rxjs'; | ||
import { automaticUnsubscribe } from './lib-example'; | ||
@Component({ | ||
selector: 'app-lib-example', | ||
templateUrl: './lib-example.component.html', | ||
styleUrls: ['./lib-example.component.scss'], | ||
changeDetection: ChangeDetectionStrategy.OnPush, | ||
}) | ||
export class LibExampleComponent { | ||
public timer$ = interval(500).pipe(automaticUnsubscribe(this)); | ||
constructor() { | ||
this.timer$.subscribe({ | ||
next: v => console.log(`timer$ value is ${v}`), | ||
complete: () => console.log(`timer$ was completed!`), | ||
}); | ||
} | ||
} | ||
``` | ||
## Full API | ||
Here's an example component that hooks onto the full set of available hooks. | ||
```ts | ||
// ./src/app/child/child.component.ts | ||
import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; | ||
import { getObservableLifecycle } from 'ngx-observable-lifecycle'; | ||
@Component({ | ||
selector: 'app-child', | ||
templateUrl: './child.component.html', | ||
styleUrls: ['./child.component.scss'], | ||
changeDetection: ChangeDetectionStrategy.OnPush, | ||
}) | ||
export class ChildComponent { | ||
@Input() input: number; | ||
constructor() { | ||
const { | ||
ngOnChanges, | ||
ngOnInit, | ||
ngDoCheck, | ||
ngAfterContentInit, | ||
ngAfterContentChecked, | ||
ngAfterViewInit, | ||
ngAfterViewChecked, | ||
ngOnDestroy, | ||
} = getObservableLifecycle(this); | ||
ngOnChanges.subscribe(() => console.count('onChanges')); | ||
ngOnInit.subscribe(() => console.count('onInit')); | ||
ngDoCheck.subscribe(() => console.count('doCheck')); | ||
ngAfterContentInit.subscribe(() => console.count('afterContentInit')); | ||
ngAfterContentChecked.subscribe(() => console.count('afterContentChecked')); | ||
ngAfterViewInit.subscribe(() => console.count('afterViewInit')); | ||
ngAfterViewChecked.subscribe(() => console.count('afterViewChecked')); | ||
ngOnDestroy.subscribe(() => console.count('onDestroy')); | ||
} | ||
} | ||
``` | ||
Note with in the above example, all observables complete when the component is destroyed. |
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
No License Found
License(Experimental) License information could not be found.
Found 1 instance in 1 package
36447
16
0
129