New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

ngx-observable-lifecycle

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ngx-observable-lifecycle - npm Package Compare versions

Comparing version 2.1.1 to 2.1.3

LICENSE

4

bundles/ngx-observable-lifecycle.umd.js

@@ -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"

# NgxObservableLifecycle
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.7.
[![npm version](https://badge.fury.io/js/ngx-observable-lifecycle.svg)](https://www.npmjs.com/package/ngx-observable-lifecycle)
[![Build Status](https://github.com/cloudnc/ngx-observable-lifecycle/workflows/CI/badge.svg)](https://github.com/cloudnc/ngx-observable-lifecycle/actions)
[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](https://commitizen.github.io/cz-cli/)
[![codecov](https://codecov.io/gh/cloudnc/ngx-observable-lifecycle/branch/master/graph/badge.svg)](https://codecov.io/gh/cloudnc/ngx-observable-lifecycle)
[![License](https://img.shields.io/github/license/cloudnc/ngx-observable-lifecycle)](https://raw.githubusercontent.com/cloudnc/ngx-observable-lifecycle/master/LICENSE)
![npm peer dependency version](https://img.shields.io/npm/dependency-version/ngx-observable-lifecycle/peer/@angular/core)
![npm peer dependency version](https://img.shields.io/npm/dependency-version/ngx-observable-lifecycle/peer/rxjs)
## Code scaffolding
[![NPM](https://nodei.co/npm/ngx-observable-lifecycle.png?compact=true)](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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc