@reactivex/ix-esnext-esm
Version:
The Interactive Extensions for JavaScript
1 lines • 2.23 kB
Source Map (JSON)
{"version":3,"sources":["asynciterable/operators/publish.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,oBAAwB,SAAQ,kBAAqB;IAIzD,YAAY,MAAwB;QAClC,KAAK,CAAC,MAAM,EAAE,IAAI,YAAY,CAAI,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,CAAC,MAAM,CAAC,aAAa,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;IACvE,CAAC;CACF;AAMD,MAAM,UAAU,OAAO,CACrB,QAAqE;IAErE,OAAO,SAAS,uBAAuB,CACrC,MAA8B;QAE9B,OAAO,QAAQ;YACb,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAW,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YAClF,CAAC,CAAC,IAAI,oBAAoB,CAAU,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC;AACJ,CAAC","file":"publish.js","sourcesContent":["import { AsyncIterableX } from '../asynciterablex';\nimport { RefCountList } from '../../iterable/operators/_refcountlist';\nimport { create } from '../create';\nimport { OperatorAsyncFunction } from '../../interfaces';\nimport { MemoizeAsyncBuffer } from './memoize';\n\nclass PublishedAsyncBuffer<T> extends MemoizeAsyncBuffer<T> {\n // @ts-ignore\n protected _buffer: RefCountList<T>;\n\n constructor(source: AsyncIterator<T>) {\n super(source, new RefCountList<T>(0));\n }\n\n [Symbol.asyncIterator]() {\n this._buffer.readerCount++;\n return this._getIterable(this._buffer.count)[Symbol.asyncIterator]();\n }\n}\n\nexport function publish<TSource>(): OperatorAsyncFunction<TSource, TSource>;\nexport function publish<TSource, TResult>(\n selector?: (value: AsyncIterableX<TSource>) => AsyncIterable<TResult>\n): OperatorAsyncFunction<TSource, TResult>;\nexport function publish<TSource, TResult>(\n selector?: (value: AsyncIterableX<TSource>) => AsyncIterable<TResult>\n): OperatorAsyncFunction<TSource, TSource | TResult> {\n return function publishOperatorFunction(\n source: AsyncIterable<TSource>\n ): AsyncIterableX<TSource | TResult> {\n return selector\n ? create(async () => selector(publish<TSource>()(source))[Symbol.asyncIterator]())\n : new PublishedAsyncBuffer<TSource>(source[Symbol.asyncIterator]());\n };\n}\n"]}