UNPKG

@reactivex/ix-esnext-esm

Version:

The Interactive Extensions for JavaScript

1 lines 2.6 kB
{"version":3,"sources":["iterable/operators/catcherror.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,MAAM,OAAO,iBAAoC,SAAQ,SAA4B;IAInF,YAAY,MAAyB,EAAE,OAA0C;QAC/E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChB,IAAI,GAAkC,CAAC;QACvC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,EAAE;YACR,IAAI,CAAC,GAA4B,EAAE,CAAC;YAEpC,IAAI;gBACF,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,CAAC,CAAC,IAAI,EAAE;oBACV,cAAc,CAAC,EAAE,CAAC,CAAC;oBACnB,MAAM;iBACP;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACvB,QAAQ,GAAG,IAAI,CAAC;gBAChB,cAAc,CAAC,EAAE,CAAC,CAAC;gBACnB,MAAM;aACP;YAED,MAAM,CAAC,CAAC,KAAK,CAAC;SACf;QAED,IAAI,QAAQ,EAAE;YACZ,KAAK,MAAM,IAAI,IAAI,GAAI,EAAE;gBACvB,MAAM,IAAI,CAAC;aACZ;SACF;IACH,CAAC;CACF;AAED,MAAM,UAAU,UAAU,CACxB,OAA0C;IAE1C,OAAO,SAAS,yBAAyB,CACvC,MAAyB;QAEzB,OAAO,IAAI,iBAAiB,CAAmB,MAAM,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC,CAAC;AACJ,CAAC","file":"catcherror.js","sourcesContent":["import { IterableX } from '../iterablex';\nimport { returnIterator } from '../../util/returniterator';\nimport { OperatorFunction } from '../../interfaces';\n\nexport class CatchWithIterable<TSource, TResult> extends IterableX<TSource | TResult> {\n private _source: Iterable<TSource>;\n private _handler: (error: any) => Iterable<TResult>;\n\n constructor(source: Iterable<TSource>, handler: (error: any) => Iterable<TResult>) {\n super();\n this._source = source;\n this._handler = handler;\n }\n\n *[Symbol.iterator]() {\n let err: Iterable<TResult> | undefined;\n let hasError = false;\n const it = this._source[Symbol.iterator]();\n while (1) {\n let c = <IteratorResult<TSource>>{};\n\n try {\n c = it.next();\n if (c.done) {\n returnIterator(it);\n break;\n }\n } catch (e) {\n err = this._handler(e);\n hasError = true;\n returnIterator(it);\n break;\n }\n\n yield c.value;\n }\n\n if (hasError) {\n for (const item of err!) {\n yield item;\n }\n }\n }\n}\n\nexport function catchError<TSource, TResult>(\n handler: (error: any) => Iterable<TResult>\n): OperatorFunction<TSource, TSource | TResult> {\n return function catchWithOperatorFunction(\n source: Iterable<TSource>\n ): IterableX<TSource | TResult> {\n return new CatchWithIterable<TSource, TResult>(source, handler);\n };\n}\n"]}