@aimee-blue/ab-service-kit
Version:
Aimee Blue Service Template
1 lines • 5.74 kB
Source Map (JSON)
{"version":3,"sources":["../../../src/shared/sockets/spinUpSocketEpic.ts"],"names":["spinUpSocketEpic","socket","request","epic","closeSocket","parentLogger","requestIdTag","rid","id","substr","logger","allData","commands","actionSchemaByType","binary","ctx","buildDeps","outgoing","subscription","Subscription","warningTimeout","completedSocketWarningTimeout","SOCKET_COMPLETE_WARNING_TIMEOUT","completeWaitTimeout","completedSocketWaitTimeout","SOCKET_CLOSE_WAIT_TIMEOUT","logging","name","debugStats","filter","isTruthy","allEpicJobs","pipe","connect","waitForCompletion","add","close","sock","code","send"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AAOA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEO,MAAMA,gBAAgB,GAAG,CAC9BC,MAD8B,EAE9BC,OAF8B,EAG9BC,IAH8B,EAI9BC,WAJ8B,EAK9BC,YAL8B,KAM3B;AAAA;;AACH,QAAMC,YAAY,GAAG;AACnBC,IAAAA,GAAG,EAAEL,OAAO,CAACM,EAAR,CAAWC,MAAX,CAAkB,CAAlB,EAAqB,CAArB;AADc,GAArB;AAIA,QAAMC,MAAM,GAAG,iCAAmB,CAACJ,YAAD,CAAnB,EAAmCD,YAAnC,CAAf;AAEA,QAAMM,OAAO,GAAG,kCAAc,gDAAqBV,MAArB,EAA6BS,MAA7B,CAAd,CAAhB;AAEA,QAAME,QAAQ,GAAG,kCACf,oDAAuBD,OAAvB,EAAgCR,IAAI,CAACU,kBAArC,EAAyDH,MAAzD,CADe,CAAjB;AAIA,QAAMI,MAAM,GAAG,oDAAuBH,OAAvB,CAAf;AAEA,QAAMI,GAAG,GAAG,sDAAwB;AAClCb,IAAAA,OADkC;AAElCU,IAAAA,QAFkC;AAGlCE,IAAAA,MAHkC;AAIlCJ,IAAAA,MAJkC;AAKlCM,IAAAA,SAAS,EAAEb,IAAI,CAACa;AALkB,GAAxB,CAAZ;AAQA,kCAAaN,MAAb,EAAqBT,MAArB,EAA6BC,OAA7B,EAAsCC,IAAtC;AAEA,QAAMc,QAAQ,GAAG,kCAAcd,IAAI,CAACS,QAAD,EAAWG,GAAX,CAAlB,CAAjB;AAEA,QAAMG,YAAY,GAAG,IAAIC,kBAAJ,EAArB;AAEA,QAAMC,cAAc,4BAClBjB,IAAI,CAACkB,6BADa,yEACoBC,sCADxC;AAGA,QAAMC,mBAAmB,6BACvBpB,IAAI,CAACqB,0BADkB,2EACYC,gCADrC;AAGA,QAAMC,OAAO,GAAG,CACd,kFACEhB,MADF,EAEEC,OAFF,EAGEM,QAHF,EAIEG,cAJF,EAKEnB,MAAM,CAACO,EALT,EAMEL,IAAI,CAACwB,IANP,CADc,EASdxB,IAAI,CAACyB,UAAL,IAAmB,oCAAelB,MAAf,EAAuBC,OAAvB,CATL,EAUdkB,MAVc,CAUPC,kBAVO,CAAhB;AAYA,QAAMC,WAAW,GAAG,iBAAMd,QAAQ,CAACe,IAAT,CAAc,gCAAd,CAAN,EAAuC,GAAGN,OAA1C,CAApB;AAEA,QAAM;AAAEO,IAAAA,OAAF;AAAWC,IAAAA;AAAX,MAAiC,4DACrCH,WADqC,EAErCR,mBAFqC,CAAvC;AAKAL,EAAAA,YAAY,CAACiB,GAAb,CACE,gDAAqBlB,QAArB,EAA+BhB,MAA/B,EAAuC;AACrCmC,IAAAA,KAAK,EAAE,CAACC,IAAD,EAAOC,IAAP,KAAgB;AACrBlC,MAAAA,WAAW,CAACiC,IAAI,CAAC7B,EAAN,EAAU8B,IAAV,CAAX;AACD,KAHoC;AAIrC5B,IAAAA,MAJqC;AAKrC,QAAIP,IAAI,CAACoC,IAAL,IAAa;AACfA,MAAAA,IAAI,EAAEpC,IAAI,CAACoC;AADI,KAAjB;AALqC,GAAvC,CADF;AAYArB,EAAAA,YAAY,CAACiB,GAAb,CAAiBF,OAAO,EAAxB;AACAf,EAAAA,YAAY,CAACiB,GAAb,CAAiBvB,QAAQ,CAACqB,OAAT,EAAjB;AACAf,EAAAA,YAAY,CAACiB,GAAb,CAAiBlB,QAAQ,CAACgB,OAAT,EAAjB;AACAf,EAAAA,YAAY,CAACiB,GAAb,CAAiBxB,OAAO,CAACsB,OAAR,EAAjB;AAEA,SAAO;AACLf,IAAAA,YADK;AAELgB,IAAAA;AAFK,GAAP;AAID,CAjFM","sourcesContent":["import { Subscription, merge } from 'rxjs';\nimport { ignoreElements } from 'rxjs/operators';\nimport { publishStream } from '../publishStream';\nimport {\n SocketWithInfo,\n MessageWithInfo,\n SOCKET_CLOSE_WAIT_TIMEOUT,\n SOCKET_COMPLETE_WARNING_TIMEOUT,\n} from './types';\nimport { AnySocketEpic } from '../kit';\nimport { isTruthy } from '../isTruthy';\nimport { prepareWaitForCompletionFn } from './prepareWaitForCompletionFn';\nimport { dataStreamFromSocket } from './dataStreamFromSocket';\nimport { pipeStreamIntoSocket } from './pipeStreamIntoSocket';\nimport { actionStreamFromSocket } from './actionStreamFromSocket';\nimport { binaryStreamFromSocket } from './binaryStreamFromSocket';\nimport { logSocketStats } from './logSocketStats';\nimport { logWarningIfOutgoingStreamNotComplete } from './logWarningIfOutgoingStreamNotComplete';\nimport { RegistryStateApi } from './socketRegistryState';\nimport { createSocketEpicContext } from './createSocketEpicContext';\nimport { logConnected } from './logConnected';\nimport { createTaggedLogger, BasicLogger } from '../logging';\n\nexport const spinUpSocketEpic = (\n socket: SocketWithInfo,\n request: MessageWithInfo,\n epic: AnySocketEpic,\n closeSocket: RegistryStateApi['closeSocket'],\n parentLogger: BasicLogger\n) => {\n const requestIdTag = {\n rid: request.id.substr(0, 8),\n };\n\n const logger = createTaggedLogger([requestIdTag], parentLogger);\n\n const allData = publishStream(dataStreamFromSocket(socket, logger));\n\n const commands = publishStream(\n actionStreamFromSocket(allData, epic.actionSchemaByType, logger)\n );\n\n const binary = binaryStreamFromSocket(allData);\n\n const ctx = createSocketEpicContext({\n request,\n commands,\n binary,\n logger,\n buildDeps: epic.buildDeps,\n });\n\n logConnected(logger, socket, request, epic);\n\n const outgoing = publishStream(epic(commands, ctx));\n\n const subscription = new Subscription();\n\n const warningTimeout =\n epic.completedSocketWarningTimeout ?? SOCKET_COMPLETE_WARNING_TIMEOUT;\n\n const completeWaitTimeout =\n epic.completedSocketWaitTimeout ?? SOCKET_CLOSE_WAIT_TIMEOUT;\n\n const logging = [\n logWarningIfOutgoingStreamNotComplete(\n logger,\n allData,\n outgoing,\n warningTimeout,\n socket.id,\n epic.name\n ),\n epic.debugStats && logSocketStats(logger, allData),\n ].filter(isTruthy);\n\n const allEpicJobs = merge(outgoing.pipe(ignoreElements()), ...logging);\n\n const { connect, waitForCompletion } = prepareWaitForCompletionFn(\n allEpicJobs,\n completeWaitTimeout\n );\n\n subscription.add(\n pipeStreamIntoSocket(outgoing, socket, {\n close: (sock, code) => {\n closeSocket(sock.id, code);\n },\n logger,\n ...(epic.send && {\n send: epic.send,\n }),\n })\n );\n\n subscription.add(connect());\n subscription.add(commands.connect());\n subscription.add(outgoing.connect());\n subscription.add(allData.connect());\n\n return {\n subscription,\n waitForCompletion,\n };\n};\n"],"file":"spinUpSocketEpic.js"}