UNPKG

4.36 kBSource Map (JSON)View Raw
1{"version":3,"sources":["asynciterable/memoize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAiB,eAAe,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,OAAO,kBAAsB,SAAQ,cAAiB;IAM1D,YAAY,MAAwB,EAAE,MAAwB;QAC5D,KAAK,EAAE,CAAC;QAHF,aAAQ,GAAY,KAAK,CAAC;QAIhC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI;YACF,OAAO,CAAC,EAAE;gBACR,IAAI,QAAQ,GAAG,KAAK,EAClB,OAAO,GAAM,EAAE,CAAC;gBAClB,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;oBAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;wBAClB,IAAI;4BACF,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;4BACrC,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;4BACtB,IAAI,QAAQ,EAAE;gCACZ,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;6BACtB;yBACF;wBAAC,OAAO,CAAC,EAAE;4BACV,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;4BAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;yBACtB;qBACF;oBAED,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACjB,MAAM,IAAI,CAAC,MAAM,CAAC;qBACnB;oBAED,IAAI,QAAQ,EAAE;wBACZ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;qBAC5B;iBACF;qBAAM;oBACL,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBAED,IAAI,QAAQ,EAAE;oBACZ,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC3B;qBAAM;oBACL,MAAM;iBACP;gBAED,CAAC,EAAE,CAAC;aACL;SACF;gBAAS;YACR,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;SACrB;IACH,CAAC;CACF;AAWD,MAAM,UAAU,OAAO,CACrB,MAA8B,EAC9B,cAAsB,CAAC,CAAC,EACxB,QAAoE;IAEpE,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,WAAW,KAAK,CAAC,CAAC;YACvB,CAAC,CAAC,IAAI,kBAAkB,CACpB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAC9B,IAAI,eAAe,EAAW,CAC/B;YACH,CAAC,CAAC,IAAI,kBAAkB,CACpB,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAC9B,IAAI,YAAY,CAAU,WAAW,CAAC,CACvC,CAAC;KACP;IACD,OAAO,MAAM,CAAoB,GAAG,EAAE,CACpC,QAAS,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAChE,CAAC;AACJ,CAAC","file":"memoize.js","sourcesContent":["import { AsyncIterableX } from './asynciterablex';\nimport { IRefCountList, MaxRefCountList, RefCountList } from '../iterable/_refcountlist';\nimport { create } from './create';\n\nexport class MemoizeAsyncBuffer<T> extends AsyncIterableX<T> {\n private _source: AsyncIterator<T>;\n private _buffer: IRefCountList<T>;\n private _error: any;\n private _stopped: boolean = false;\n\n constructor(source: AsyncIterator<T>, buffer: IRefCountList<T>) {\n super();\n this._source = source;\n this._buffer = buffer;\n }\n\n async *[Symbol.asyncIterator]() {\n let i = 0;\n try {\n while (1) {\n let hasValue = false,\n current = <T>{};\n if (i >= this._buffer.count) {\n if (!this._stopped) {\n try {\n let next = await this._source.next();\n hasValue = !next.done;\n if (hasValue) {\n current = next.value;\n }\n } catch (e) {\n this._error = e;\n this._stopped = true;\n }\n }\n\n if (this._stopped) {\n throw this._error;\n }\n\n if (hasValue) {\n this._buffer.push(current);\n }\n } else {\n hasValue = true;\n }\n\n if (hasValue) {\n yield this._buffer.get(i);\n } else {\n break;\n }\n\n i++;\n }\n } finally {\n this._buffer.done();\n }\n }\n}\n\nexport function memoize<TSource>(\n source: AsyncIterable<TSource>,\n readerCount?: number\n): AsyncIterableX<TSource>;\nexport function memoize<TSource, TResult>(\n source: AsyncIterable<TSource>,\n readerCount?: number,\n selector?: (value: AsyncIterable<TSource>) => AsyncIterable<TResult>\n): AsyncIterableX<TResult>;\nexport function memoize<TSource, TResult = TSource>(\n source: AsyncIterable<TSource>,\n readerCount: number = -1,\n selector?: (value: AsyncIterable<TSource>) => AsyncIterable<TResult>\n): AsyncIterableX<TSource | TResult> {\n if (!selector) {\n return readerCount === -1\n ? new MemoizeAsyncBuffer<TSource>(\n source[Symbol.asyncIterator](),\n new MaxRefCountList<TSource>()\n )\n : new MemoizeAsyncBuffer<TSource>(\n source[Symbol.asyncIterator](),\n new RefCountList<TSource>(readerCount)\n );\n }\n return create<TSource | TResult>(() =>\n selector!(memoize(source, readerCount))[Symbol.asyncIterator]()\n );\n}\n"]}
\No newline at end of file