UNPKG

3.19 kBSource Map (JSON)View Raw
1{"version":3,"sources":["asynciterable/innerjoin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,MAAM,OAAO,iBAAiD,SAAQ,cAAuB;IAO3F,YACE,KAA4B,EAC5B,KAA4B,EAC5B,aAAsD,EACtD,aAAsD,EACtD,cAA4E;QAE5E,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,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACrB,KAAK,IAAI,YAAY,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAE,EAAE;oBAC3C,MAAM,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;iBAC9D;aACF;SACF;IACH,CAAC;CACF;AAED,MAAM,UAAU,SAAS,CACvB,KAA4B,EAC5B,KAA4B,EAC5B,aAAsD,EACtD,aAAsD,EACtD,cAA4E;IAE5E,OAAO,IAAI,iBAAiB,CAC1B,KAAK,EACL,KAAK,EACL,aAAa,EACb,aAAa,EACb,cAAc,CACf,CAAC;AACJ,CAAC","file":"innerjoin.js","sourcesContent":["import { AsyncIterableX } from './asynciterablex';\nimport { createGrouping } from './_grouping';\nimport { identity } from '../internal/identity';\n\nexport class JoinAsyncIterable<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: (outer: TOuter, inner: TInner) => 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: 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 if (map.has(outerKey)) {\n for (let innerElement of map.get(outerKey)!) {\n yield await this._resultSelector(outerElement, innerElement);\n }\n }\n }\n }\n}\n\nexport function innerJoin<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: TInner) => TResult | Promise<TResult>\n): AsyncIterableX<TResult> {\n return new JoinAsyncIterable<TOuter, TInner, TKey, TResult>(\n outer,\n inner,\n outerSelector,\n innerSelector,\n resultSelector\n );\n}\n"]}
\No newline at end of file