UNPKG

2 kBSource Map (JSON)View Raw
1{"version":3,"sources":["asynciterable/fromeventpattern.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAuD,EACvD,aAA0D;IAE1D,MAAM,IAAI,GAAG,IAAI,SAAS,EAAW,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE9C,UAAU,CAAC,OAAO,CAAC,CAAC;IAEpB,MAAM,OAAO,GAAG,KAAK,SAAS,CAAC;QAC7B,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,GAAI;YACjD,MAAM,IAAI,CAAC,KAAK,CAAC;SAClB;QACD,aAAa,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC,CAAC;IAEF,OAAO,OAAO,EAAW,CAAC,OAAO,EAAE,CAAC,CAAC;AACvC,CAAC","file":"fromeventpattern.js","sourcesContent":["import { AsyncIterableX } from './asynciterablex';\nimport { AsyncSink } from './asyncsink';\nimport { memoize } from './operators/memoize';\n\n/**\n * Creates asnyc-iterable from an event emitter by adding handlers for both listening and unsubscribing from events.\n *\n * @export\n * @template TSource The type of elements in the event emitter.\n * @param {(handler: (...args: any[]) => void) => void} addHandler The function to add a listener to the source.\n * @param {(handler: (...args: any[]) => void) => void} removeHandler The function to remove a listener from the source.\n * @returns {AsyncIterableX<TSource>} An async-iterable which contains the data from the underlying events as wrapped by the handlers.\n */\nexport function fromEventPattern<TSource>(\n addHandler: (handler: (...args: any[]) => void) => void,\n removeHandler: (handler: (...args: any[]) => void) => void\n): AsyncIterableX<TSource> {\n const sink = new AsyncSink<TSource>();\n const handler = (e: TSource) => sink.write(e);\n\n addHandler(handler);\n\n const yielder = async function* () {\n for (let next; !(next = await sink.next()).done; ) {\n yield next.value;\n }\n removeHandler(handler);\n sink.end();\n };\n\n return memoize<TSource>()(yielder());\n}\n"]}
\No newline at end of file