@code-workers.io/ngx-effect
Version:
NgxEffect let you easily handle your RxJs subscriptions
40 lines • 5.05 kB
JavaScript
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=