UNPKG

@aimee-blue/ab-service-kit

Version:
1 lines 2.38 kB
{"version":3,"sources":["../../../src/shared/sockets/createSocketEpicContext.ts"],"names":["createSocketEpicContext","params","request","commands","binary","logger","buildDeps","closed","pipe","takeUntilClosed","stream","subscribe","publish","deps","id"],"mappings":";;;;;;;AAGA;;AACA;;AACA;;AAcO,SAASA,uBAAT,CACLC,MADK,EAEmB;AAAA;;AACxB,QAAM;AAAEC,IAAAA,OAAF;AAAWC,IAAAA,QAAX;AAAqBC,IAAAA,MAArB;AAA6BC,IAAAA,MAA7B;AAAqCC,IAAAA;AAArC,MAAmDL,MAAzD;AAEA,QAAMM,MAAM,GAAGJ,QAAQ,CAACK,IAAT,CAAc,mCAAd,CAAf;;AAEA,QAAMC,eAAe,GAAG,MAAUC,MAAJ,IAC5B,0BAAaH,MAAb,EAAqBG,MAArB,CADF;;AAGA,QAAMC,SAAS,GAAG,MAAM,8BAAeH,IAAf,CAAoBC,eAAe,EAAnC,CAAxB;;AAEA,QAAMG,OAAO,GAAG,MAAOF,MAAD,IACpBA,MAAM,CAACF,IAAP,CAAY,+BAAZ,CADF;;AAGA,QAAMK,IAAY,iBAAGP,SAAH,aAAGA,SAAH,uBAAGA,SAAS,EAAZ,mDAAoB,EAAtC;AAEA,SAAO,EACL,GAAGO,IADE;AAELC,IAAAA,EAAE,EAAEZ,OAAO,CAACY,EAFP;AAGLZ,IAAAA,OAHK;AAILE,IAAAA,MAJK;AAKLQ,IAAAA,OALK;AAMLD,IAAAA,SANK;AAOLN,IAAAA,MAPK;AAQLI,IAAAA;AARK,GAAP;AAUD","sourcesContent":["import { ISocketEpicContext } from '../kit';\nimport { IncomingMessage } from 'http';\nimport { Observable } from 'rxjs';\nimport { fromEventBus, pushToEventBus } from '../eventBus';\nimport { takeUntil } from 'rxjs/operators';\nimport { whenCompleted } from '../whenCompleted';\nimport { IAction } from '../action';\nimport { TaggedLogger } from '../logging';\n\nexport interface ICreateContextParams<D extends Record<string, unknown> = {}> {\n request: IncomingMessage & {\n id: string;\n };\n commands: Observable<IAction>;\n binary: Observable<Buffer>;\n logger: TaggedLogger;\n buildDeps?: () => D;\n}\n\nexport function createSocketEpicContext<D extends Record<string, unknown> = {}>(\n params: ICreateContextParams<D>\n): ISocketEpicContext & D {\n const { request, commands, binary, logger, buildDeps } = params;\n\n const closed = commands.pipe(whenCompleted());\n\n const takeUntilClosed = () => <T>(stream: Observable<T>) =>\n takeUntil<T>(closed)(stream);\n\n const subscribe = () => fromEventBus().pipe(takeUntilClosed());\n\n const publish = () => (stream: Observable<IAction>) =>\n stream.pipe(pushToEventBus());\n\n const deps: D | {} = buildDeps?.() ?? {};\n\n return {\n ...deps,\n id: request.id,\n request,\n binary,\n publish,\n subscribe,\n logger,\n takeUntilClosed,\n } as D & ISocketEpicContext;\n}\n"],"file":"createSocketEpicContext.js"}