@aimee-blue/ab-service-kit
Version:
Aimee Blue Service Template
1 lines • 3.22 kB
Source Map (JSON)
{"version":3,"sources":["../../src/shared/mergeEpics.ts"],"names":["mergeBackgroundEpics","epics","events","ctx","rest","map","epic","buildDeps","pipe","sourceDescription","name","logger","mergeEpics","mergedEpic","Utils","setFunctionName","commands","mergeActionEpics"],"mappings":";;;;;;;;;AAAA;;AAUA;;AACA;;AAEO,SAASA,oBAAT,CACL,GAAGC,KADE,EAML;AACA,SAAQ,CAAC,GAAG,CAACC,MAAD,EAASC,GAAT,EAAc,GAAGC,IAAjB,CAAJ,KAA2D;AACjE,WAAO,iBACL,GAAGH,KAAK,CAACI,GAAN,CAAUC,IAAI,IACf,iBAAM;AAAA;;AAAA,aACJA,IAAI,CAACJ,MAAD,EAAS,EAAE,2CAAII,IAAI,CAACC,SAAT,qDAAI,sBAAAD,IAAI,CAAR,6DAA0B,EAA1B,CAAF;AAAiC,WAAGH;AAApC,OAAT,EAAoD,GAAGC,IAAvD,CADA;AAAA,KAAN,EAEEI,IAFF,CAGE,wCAAiB;AACfC,MAAAA,iBAAiB,EAAG,GAAEH,IAAI,CAACI,IAAK,OADjB;AAEfC,MAAAA,MAAM,EAAER,GAAG,CAACQ;AAFG,KAAjB,CAHF,CADC,CADE,CAAP;AAYD,GAbD;AAkBD;;AAEM,SAASC,UAAT,CACLF,IADK,EAEL,GAAGT,KAFE,EAGqE;AAC1E,QAAMY,UAAU,GAAGC,gBAAMC,eAAN,CACjBL,IADiB,EAEjB,CAAC,GAAG,CAACM,QAAD,EAAWb,GAAX,EAAgB,GAAGC,IAAnB,CAAJ,KAAiC;AAC/B,WAAO,iBACL,GAAGH,KAAK,CAACI,GAAN,CAAUC,IAAI,IACf,iBAAM;AAAA;;AAAA,aACJA,IAAI,CAACU,QAAD,EAAW,EAAE,4CAAIV,IAAI,CAACC,SAAT,qDAAI,sBAAAD,IAAI,CAAR,+DAA0B,EAA1B,CAAF;AAAiC,WAAGH;AAApC,OAAX,EAAsD,GAAGC,IAAzD,CADA;AAAA,KAAN,EAEEI,IAFF,CAGE,wCAAiB;AACfC,MAAAA,iBAAiB,EAAG,GAAEH,IAAI,CAACI,IAAK,OADjB;AAEfC,MAAAA,MAAM,EAAER,GAAG,CAACQ;AAFG,KAAjB,CAHF,CADC,CADE,CAAP;AAYD,GAfgB,CAAnB;;AAiBA,SAAOE,UAAP;AACD;;AAEM,MAAMI,gBAAgB,GAAGL,UAAzB","sourcesContent":["import { merge, defer } from 'rxjs';\nimport {\n AnySocketEpic,\n BackgroundEpic,\n SocketEpic,\n InputOfEpic,\n OutputOfEpic,\n DependenciesOfBackgroundEpic,\n DependenciesOfSocketEpic,\n} from './kit';\nimport { retryWithBackoff } from './retryWithBackoff';\nimport { Utils } from '@aimee-blue/ab-shared';\n\nexport function mergeBackgroundEpics<E extends BackgroundEpic>(\n ...epics: E[]\n): BackgroundEpic<\n InputOfEpic<E>,\n OutputOfEpic<E>,\n DependenciesOfBackgroundEpic<E>\n> {\n return ((...[events, ctx, ...rest]: Parameters<BackgroundEpic>) => {\n return merge(\n ...epics.map(epic =>\n defer(() =>\n epic(events, { ...(epic.buildDeps?.() ?? {}), ...ctx }, ...rest)\n ).pipe(\n retryWithBackoff({\n sourceDescription: `${epic.name} epic`,\n logger: ctx.logger,\n })\n )\n )\n );\n }) as BackgroundEpic<\n InputOfEpic<E>,\n OutputOfEpic<E>,\n DependenciesOfBackgroundEpic<E>\n >;\n}\n\nexport function mergeEpics<E extends AnySocketEpic>(\n name: string,\n ...epics: E[]\n): SocketEpic<InputOfEpic<E>, OutputOfEpic<E>, DependenciesOfSocketEpic<E>> {\n const mergedEpic = Utils.setFunctionName(\n name,\n (...[commands, ctx, ...rest]) => {\n return merge(\n ...epics.map(epic =>\n defer(() =>\n epic(commands, { ...(epic.buildDeps?.() ?? {}), ...ctx }, ...rest)\n ).pipe(\n retryWithBackoff({\n sourceDescription: `${epic.name} epic`,\n logger: ctx.logger,\n })\n )\n )\n );\n }\n ) as SocketEpic<InputOfEpic<E>, OutputOfEpic<E>, DependenciesOfSocketEpic<E>>;\n return mergedEpic;\n}\n\nexport const mergeActionEpics = mergeEpics;\n"],"file":"mergeEpics.js"}