UNPKG

@code-workers.io/ngx-effect

Version:

NgxEffect let you easily handle your RxJs subscriptions

40 lines 5.05 kB
var _NgxEffect_sub; import { __classPrivateFieldGet } from "tslib"; import { ErrorHandler, Injectable } from '@angular/core'; import { catchError, EMPTY, Subscription, tap } from 'rxjs'; import * as i0 from "@angular/core"; /** * Keeps track of your subscriptions and unsubscribes them automatically when destroyed. * * @example */ export class NgxEffect { constructor(e) { this.e = e; _NgxEffect_sub.set(this, new Subscription()); } register(obsOrSub$, operation) { if (obsOrSub$ instanceof Subscription) { __classPrivateFieldGet(this, _NgxEffect_sub, "f").add(obsOrSub$); return; } __classPrivateFieldGet(this, _NgxEffect_sub, "f").add(obsOrSub$ .pipe( // execute operation/ side effect tap(operation), catchError((err) => { this.e.handleError(err); return EMPTY; })) .subscribe()); } ngOnDestroy() { __classPrivateFieldGet(this, _NgxEffect_sub, "f").unsubscribe(); } } _NgxEffect_sub = new WeakMap(); NgxEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NgxEffect, deps: [{ token: i0.ErrorHandler }], target: i0.ɵɵFactoryTarget.Injectable }); NgxEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NgxEffect }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: NgxEffect, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i0.ErrorHandler }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWVmZmVjdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9uZ3gtZWZmZWN0L3NyYy9saWIvbmd4LWVmZmVjdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUNMLFVBQVUsRUFDVixLQUFLLEVBS0wsWUFBWSxFQUNaLEdBQUcsRUFDSixNQUFNLE1BQU0sQ0FBQzs7QUFFZDs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLFNBQVM7SUFFcEIsWUFBNkIsQ0FBZTtRQUFmLE1BQUMsR0FBRCxDQUFDLENBQWM7UUFENUMseUJBQU8sSUFBSSxZQUFZLEVBQUUsRUFBQztJQUNxQixDQUFDO0lBNEJoRCxRQUFRLENBQ04sU0FBNkMsRUFDN0MsU0FBZ0M7UUFFaEMsSUFBSSxTQUFTLFlBQVksWUFBWSxFQUFFO1lBQ3JDLHVCQUFBLElBQUksc0JBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDekIsT0FBTztTQUNSO1FBQ0QsdUJBQUEsSUFBSSxzQkFBSyxDQUFDLEdBQUcsQ0FDWCxTQUFTO2FBQ04sSUFBSTtRQUNILGlDQUFpQztRQUNqQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQ2QsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUNmLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULHVCQUFBLElBQUksc0JBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxQixDQUFDOzs7dUdBdERVLFNBQVM7MkdBQVQsU0FBUzs0RkFBVCxTQUFTO2tCQURyQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JIYW5kbGVyLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGNhdGNoRXJyb3IsXG4gIEVNUFRZLFxuICBtZXJnZU1hcCxcbiAgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgU3Vic2NyaXB0aW9uLFxuICB0YXBcbn0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogS2VlcHMgdHJhY2sgb2YgeW91ciBzdWJzY3JpcHRpb25zIGFuZCB1bnN1YnNjcmliZXMgdGhlbSBhdXRvbWF0aWNhbGx5IHdoZW4gZGVzdHJveWVkLlxuICpcbiAqIEBleGFtcGxlXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ3hFZmZlY3QgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAjc3ViID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGU6IEVycm9ySGFuZGxlcikge31cblxuICAvKipcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBrZWVwZXIucmVnaXN0ZXIob2YoMSkuc3Vic2NyaWJlKGNvbnNvbGUubG9nKSk7XG4gICAqIGBgYFxuICAgKi9cbiAgcmVnaXN0ZXIoc3ViOiBTdWJzY3JpcHRpb24pOiB2b2lkO1xuICAvKipcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBrZWVwZXIucmVnaXN0ZXIob2YoMSkucGlwZSh0YXAoY29uc29sZS5sb2cpKSk7XG4gICAqIGBgYFxuICAgKi9cbiAgcmVnaXN0ZXIobyQ6IE9ic2VydmFibGU8dW5rbm93bj4pOiB2b2lkO1xuICAvKipcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCB0cmlnZ2VyJCA9IG9mKDEpO1xuICAgKiBjb25zdCBlZmZlY3QgPSBjb25zb2xlLmxvZztcbiAgICoga2VlcGVyLnJlZ2lzdGVyKHRyaWdnZXIkLCBlZmZlY3QpO1xuICAgKiBgYGBcbiAgICovXG4gIHJlZ2lzdGVyKG8kOiBPYnNlcnZhYmxlPHVua25vd24+LCBvcGVyYXRpb246ICh2OiB1bmtub3duKSA9PiB2b2lkKTogdm9pZDtcbiAgcmVnaXN0ZXIoXG4gICAgb2JzT3JTdWIkOiBPYnNlcnZhYmxlPHVua25vd24+IHwgU3Vic2NyaXB0aW9uLFxuICAgIG9wZXJhdGlvbj86ICh2OiB1bmtub3duKSA9PiB2b2lkXG4gICk6IHZvaWQge1xuICAgIGlmIChvYnNPclN1YiQgaW5zdGFuY2VvZiBTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuI3N1Yi5hZGQob2JzT3JTdWIkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy4jc3ViLmFkZChcbiAgICAgIG9ic09yU3ViJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICAvLyBleGVjdXRlIG9wZXJhdGlvbi8gc2lkZSBlZmZlY3RcbiAgICAgICAgICB0YXAob3BlcmF0aW9uKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZS5oYW5kbGVFcnJvcihlcnIpO1xuICAgICAgICAgICAgcmV0dXJuIEVNUFRZO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI3N1Yi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=