{"version":3,"file":"mikelgo-ngx-stream-keeper.mjs","sources":["../../../../libs/ngx-stream-keeper/src/lib/ngx-stream-keeper.service.ts","../../../../libs/ngx-stream-keeper/src/mikelgo-ngx-stream-keeper.ts"],"sourcesContent":["import { ErrorHandler, Injectable, OnDestroy } from '@angular/core';\nimport { catchError, EMPTY, mergeMap, MonoTypeOperatorFunction, Observable, of, Subscription, tap } from 'rxjs';\n\n/**\n * Keeps track of your subscriptions and unsubscribes them automatically when destroyed.\n *\n * @example\n */\n@Injectable()\nexport class NgxStreamKeeper implements OnDestroy{\n  #sub = new Subscription();\n  constructor(private readonly e: ErrorHandler) { }\n\n  /**\n   *\n   * @example\n   * ```typescript\n   * keeper.register(of(1).subscribe(console.log));\n   * ```\n   */\n  register(sub: Subscription): void;\n  /**\n   *\n   * @example\n   * ```typescript\n   * keeper.register(of(1).pipe(tap(console.log)));\n   * ```\n   */\n  register(o$: Observable<unknown>): void;\n  /**\n   *\n   * @example\n   * ```typescript\n   * const trigger$ = of(1);\n   * const effect = console.log;\n   * keeper.register(trigger$, effect);\n   * ```\n   */\n  register(o$: Observable<unknown>, operation: (v: unknown) => void): void\n  register(obsOrSub$: Observable<unknown> | Subscription, operation?: (v: unknown) => void): void\n  {\n    if (obsOrSub$ instanceof Subscription) {\n      this.#sub.add(obsOrSub$);\n      return;\n    }\n    this.#sub.add(\n      obsOrSub$\n        .pipe(\n          // execute operation/ side effect\n          tap(operation),\n          catchError((err) => {\n            this.e.handleError(err);\n            return EMPTY;\n          })\n        )\n        .subscribe()\n    );\n\n  }\n\n  ngOnDestroy(): void {\n    this.#sub.unsubscribe()\n  }\n\n  // need to wrap the source with this\n  continueOnError =\n    <T, R>(\n      errorProneOperators:  MonoTypeOperatorFunction<T>,\n      errorObservable?: (err: Error) => Observable<T | R>\n    ) =>\n      (o$: Observable<T>): Observable<R | T> =>\n        o$.pipe(\n          mergeMap((v) =>\n            of(v).pipe(\n              errorProneOperators,\n              catchError((err) => {\n                this.e.handleError\n                return errorObservable ? errorObservable(err) : EMPTY;\n              })\n            )\n          )\n        );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAGA;;;;AAIG;MAEU,eAAe,CAAA;AAE1B,IAAA,WAAA,CAA6B,CAAe,EAAA;QAAf,IAAC,CAAA,CAAA,GAAD,CAAC,CAAc;QAD5C,oBAAO,CAAA,GAAA,CAAA,IAAA,EAAA,IAAI,YAAY,EAAE,CAAC,CAAA;;AAuD1B,QAAA,IAAA,CAAA,eAAe,GACb,CACE,mBAAiD,EACjD,eAAmD,KAEnD,CAAC,EAAiB,KAChB,EAAE,CAAC,IAAI,CACL,QAAQ,CAAC,CAAC,CAAC,KACT,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CACR,mBAAmB,EACnB,UAAU,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,IAAI,CAAC,CAAC,CAAC,WAAW,CAAA;AAClB,YAAA,OAAO,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACxD,SAAC,CAAC,CACH,CACF,CACF,CAAC;KAtEyC;IA4BjD,QAAQ,CAAC,SAA6C,EAAE,SAAgC,EAAA;QAEtF,IAAI,SAAS,YAAY,YAAY,EAAE;AACrC,YAAA,sBAAA,CAAA,IAAI,EAAK,oBAAA,EAAA,GAAA,CAAA,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACzB,OAAO;AACR,SAAA;AACD,QAAA,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAK,CAAC,GAAG,CACX,SAAS;aACN,IAAI;;QAEH,GAAG,CAAC,SAAS,CAAC,EACd,UAAU,CAAC,CAAC,GAAG,KAAI;AACjB,YAAA,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACxB,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC,CACH;aACA,SAAS,EAAE,CACf,CAAC;KAEH;IAED,WAAW,GAAA;AACT,QAAA,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAK,CAAC,WAAW,EAAE,CAAA;KACxB;;;4GArDU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;ACRX;;AAEG;;;;"}