UNPKG

3.4 kBSource Map (JSON)View Raw
1{"version":3,"sources":["asynciterable/groupjoin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,MAAM,OAAO,sBAAsD,SAAQ,cAAuB;IAUhG,YACE,KAA4B,EAC5B,KAA4B,EAC5B,aAAsD,EACtD,aAAsD,EACtD,cAA2F;QAE3F,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAC7E,IAAI,KAAK,EAAE,IAAI,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE;YAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YACzD,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACrC,CAAC,CAAmB,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACrC,CAAC,CAAC,KAAK,EAAU,CAAC;YACpB,MAAM,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;SACpF;IACH,CAAC;CACF;AAED,MAAM,UAAU,SAAS,CACvB,KAA4B,EAC5B,KAA4B,EAC5B,aAAsD,EACtD,aAAsD,EACtD,cAA2F;IAE3F,OAAO,IAAI,sBAAsB,CAC/B,KAAK,EACL,KAAK,EACL,aAAa,EACb,aAAa,EACb,cAAc,CACf,CAAC;AACJ,CAAC","file":"groupjoin.js","sourcesContent":["import { AsyncIterableX } from './asynciterablex';\nimport { createGrouping } from './_grouping';\nimport { empty } from './empty';\nimport { identity } from '../internal/identity';\n\nexport class GroupJoinAsyncIterable<TOuter, TInner, TKey, TResult> extends AsyncIterableX<TResult> {\n private _outer: AsyncIterable<TOuter>;\n private _inner: AsyncIterable<TInner>;\n private _outerSelector: (value: TOuter) => TKey | Promise<TKey>;\n private _innerSelector: (value: TInner) => TKey | Promise<TKey>;\n private _resultSelector: (\n outer: TOuter,\n inner: AsyncIterable<TInner>\n ) => TResult | Promise<TResult>;\n\n constructor(\n outer: AsyncIterable<TOuter>,\n inner: AsyncIterable<TInner>,\n outerSelector: (value: TOuter) => TKey | Promise<TKey>,\n innerSelector: (value: TInner) => TKey | Promise<TKey>,\n resultSelector: (outer: TOuter, inner: AsyncIterable<TInner>) => TResult | Promise<TResult>\n ) {\n super();\n this._outer = outer;\n this._inner = inner;\n this._outerSelector = outerSelector;\n this._innerSelector = innerSelector;\n this._resultSelector = resultSelector;\n }\n\n async *[Symbol.asyncIterator]() {\n const map = await createGrouping(this._inner, this._innerSelector, identity);\n for await (let outerElement of this._outer) {\n const outerKey = await this._outerSelector(outerElement);\n const innerElements = map.has(outerKey)\n ? <Iterable<TInner>>map.get(outerKey)\n : empty<TInner>();\n yield await this._resultSelector(outerElement, AsyncIterableX.from(innerElements));\n }\n }\n}\n\nexport function groupJoin<TOuter, TInner, TKey, TResult>(\n outer: AsyncIterable<TOuter>,\n inner: AsyncIterable<TInner>,\n outerSelector: (value: TOuter) => TKey | Promise<TKey>,\n innerSelector: (value: TInner) => TKey | Promise<TKey>,\n resultSelector: (outer: TOuter, inner: AsyncIterable<TInner>) => TResult | Promise<TResult>\n): AsyncIterableX<TResult> {\n return new GroupJoinAsyncIterable<TOuter, TInner, TKey, TResult>(\n outer,\n inner,\n outerSelector,\n innerSelector,\n resultSelector\n );\n}\n"]}
\No newline at end of file