UNPKG

@reactivex/ix-esnext-esm

Version:

The Interactive Extensions for JavaScript

1 lines 4.32 kB
{"version":3,"sources":["asynciterable/operators/share.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,mBAAuB,SAAQ,cAAiB;IAGpD,YAAY,EAAoB;QAC9B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,GAAG,GAAG;YACT,IAAI,CAAC,KAAK;gBACR,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;SACF,CAAC;IACJ,CAAC;IAED,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAoB;QACzC,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;CACF;AAgCD;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,KAAK,CACnB,QAG6D;IAE7D,OAAO,SAAS,qBAAqB,CACnC,MAA8B;QAE9B,OAAO,QAAQ;YACb,CAAC,CAAC,MAAM,CAAU,KAAK,EAAE,MAAM,EAAE,EAAE;gBACjC,MAAM,EAAE,GAAG,MAAM,QAAQ,CACvB,IAAI,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,EAC7D,MAAM,CACP,CAAC;gBACF,OAAO,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;YAC1C,CAAC,CAAC;YACF,CAAC,CAAC,IAAI,mBAAmB,CAAU,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC;AACJ,CAAC","file":"share.js","sourcesContent":["import { AsyncIterableX } from '../asynciterablex';\nimport { create } from '../create';\nimport { OperatorAsyncFunction } from '../../interfaces';\nimport { throwIfAborted } from '../../aborterror';\n\nclass SharedAsyncIterable<T> extends AsyncIterableX<T> {\n private _it: AsyncIterator<T>;\n\n constructor(it: AsyncIterator<T>) {\n super();\n this._it = {\n next(value) {\n return it.next(value);\n },\n };\n }\n\n [Symbol.asyncIterator](signal?: AbortSignal) {\n throwIfAborted(signal);\n return this._it;\n }\n}\n\n/**\n * Creates a buffer with a shared view over the source sequence, causing each iterator to fetch the next element\n * from the source sequence.\n *\n * @export\n * @template TSource Source sequence element type.\n * @returns {OperatorAsyncFunction<TSource, TSource>} Buffer enabling each enumerator to retrieve elements from the shared source sequence.\n */\nexport function share<TSource>(): OperatorAsyncFunction<TSource, TSource>;\n/**\n * Shares the source sequence within a selector function where each iterator can fetch the next element from the\n * source sequence.\n *\n * @export\n * @template TSource Source sequence element type.\n * @template TResult Result sequence element type.\n * @param {((\n * value: AsyncIterable<TSource>,\n * signal?: AbortSignal\n * ) => AsyncIterable<TResult> | Promise<AsyncIterable<TResult>>)} [selector] Selector function with shared access\n * to the source sequence for each iterator.\n * @returns {OperatorAsyncFunction<TSource, TResult>} Sequence resulting from applying the selector function to the\n * shared view over the source sequence.\n */\nexport function share<TSource, TResult>(\n selector?: (\n value: AsyncIterable<TSource>,\n signal?: AbortSignal\n ) => AsyncIterable<TResult> | Promise<AsyncIterable<TResult>>\n): OperatorAsyncFunction<TSource, TResult>;\n/**\n * Shares the source sequence within a selector function where each iterator can fetch the next element from the\n * source sequence.\n *\n * @export\n * @template TSource Source sequence element type.\n * @template TResult Result sequence element type.\n * @param {((\n * value: AsyncIterable<TSource>,\n * signal?: AbortSignal\n * ) => AsyncIterable<TResult> | Promise<AsyncIterable<TResult>>)} [selector] Selector function with shared access\n * to the source sequence for each iterator.\n * @returns {(OperatorAsyncFunction<TSource, TSource | TResult>)} Sequence resulting from applying the selector function to the\n * shared view over the source sequence.\n */\nexport function share<TSource, TResult = TSource>(\n selector?: (\n value: AsyncIterable<TSource>,\n signal?: AbortSignal\n ) => AsyncIterable<TResult> | Promise<AsyncIterable<TResult>>\n): OperatorAsyncFunction<TSource, TSource | TResult> {\n return function shareOperatorFunction(\n source: AsyncIterable<TSource>\n ): AsyncIterableX<TSource | TResult> {\n return selector\n ? create<TResult>(async (signal) => {\n const it = await selector(\n new SharedAsyncIterable(source[Symbol.asyncIterator](signal)),\n signal\n );\n return it[Symbol.asyncIterator](signal);\n })\n : new SharedAsyncIterable<TSource>(source[Symbol.asyncIterator]());\n };\n}\n"]}