{"version":3,"file":"broker-factory-B5t-2-qq.js","sources":["../../node_modules/broker-factory/build/es2019/guards/message-port.js","../../node_modules/broker-factory/build/es2019/helpers/port-map.js","../../node_modules/broker-factory/build/es2019/helpers/extend-broker-implementation.js","../../node_modules/broker-factory/build/es2019/module.js"],"sourcesContent":["export const isMessagePort = (sender) => {\n return typeof sender.start === 'function';\n};\n//# sourceMappingURL=message-port.js.map","export const PORT_MAP = new WeakMap();\n//# sourceMappingURL=port-map.js.map","import { PORT_MAP } from './port-map';\nexport const extendBrokerImplementation = (partialBrokerImplementation) => ({\n ...partialBrokerImplementation,\n connect: ({ call }) => {\n return async () => {\n const { port1, port2 } = new MessageChannel();\n const portId = await call('connect', { port: port1 }, [port1]);\n PORT_MAP.set(port2, portId);\n return port2;\n };\n },\n disconnect: ({ call }) => {\n return async (port) => {\n const portId = PORT_MAP.get(port);\n if (portId === undefined) {\n throw new Error('The given port is not connected.');\n }\n await call('disconnect', { portId });\n };\n },\n isSupported: ({ call }) => {\n return () => call('isSupported');\n }\n});\n//# sourceMappingURL=extend-broker-implementation.js.map","import { generateUniqueNumber } from 'fast-unique-numbers';\nimport { isMessagePort } from './guards/message-port';\nimport { extendBrokerImplementation } from './helpers/extend-broker-implementation';\n/*\n * @todo Explicitly referencing the barrel file seems to be necessary when enabling the\n * isolatedModules compiler option.\n */\nexport * from './interfaces/index';\nexport * from './types/index';\nconst ONGOING_REQUESTS = new WeakMap();\nconst createOrGetOngoingRequests = (sender) => {\n if (ONGOING_REQUESTS.has(sender)) {\n // @todo TypeScript needs to be convinced that has() works as expected.\n return ONGOING_REQUESTS.get(sender);\n }\n const ongoingRequests = new Map();\n ONGOING_REQUESTS.set(sender, ongoingRequests);\n return ongoingRequests;\n};\nexport const createBroker = (brokerImplementation) => {\n const fullBrokerImplementation = extendBrokerImplementation(brokerImplementation);\n return (sender) => {\n const ongoingRequests = createOrGetOngoingRequests(sender);\n sender.addEventListener('message', (({ data: message }) => {\n const { id } = message;\n if (id !== null && ongoingRequests.has(id)) {\n const { reject, resolve } = ongoingRequests.get(id);\n ongoingRequests.delete(id);\n if (message.error === undefined) {\n resolve(message.result);\n }\n else {\n reject(new Error(message.error.message));\n }\n }\n }));\n if (isMessagePort(sender)) {\n sender.start();\n }\n const call = (method, params = null, transferables = []) => {\n return new Promise((resolve, reject) => {\n const id = generateUniqueNumber(ongoingRequests);\n ongoingRequests.set(id, { reject, resolve });\n if (params === null) {\n sender.postMessage({ id, method }, transferables);\n }\n else {\n sender.postMessage({ id, method, params }, transferables);\n }\n });\n };\n const notify = (method, params, transferables = []) => {\n sender.postMessage({ id: null, method, params }, transferables);\n };\n let functions = {};\n for (const [key, handler] of Object.entries(fullBrokerImplementation)) {\n functions = { ...functions, [key]: handler({ call, notify }) };\n }\n return { ...functions };\n };\n};\n//# sourceMappingURL=module.js.map"],"names":["isMessagePort","sender","PORT_MAP","extendBrokerImplementation","partialBrokerImplementation","call","port1","port2","portId","port","ONGOING_REQUESTS","createOrGetOngoingRequests","ongoingRequests","createBroker","brokerImplementation","fullBrokerImplementation","message","id","reject","resolve","method","params","transferables","generateUniqueNumber","notify","functions","key","handler"],"mappings":"+XAAO,MAAMA,EAAiBC,GACnB,OAAOA,EAAO,OAAU,WCDtBC,EAAW,IAAI,QCCfC,EAA8BC,IAAiC,CACxE,GAAGA,EACH,QAAS,CAAC,CAAE,KAAAC,KACD,SAAY,CACf,KAAM,CAAE,MAAAC,EAAO,MAAAC,CAAO,EAAG,IAAI,eACvBC,EAAS,MAAMH,EAAK,UAAW,CAAE,KAAMC,CAAK,EAAI,CAACA,CAAK,CAAC,EAC7D,OAAAJ,EAAS,IAAIK,EAAOC,CAAM,EACnBD,CACV,EAEL,WAAY,CAAC,CAAE,KAAAF,KACJ,MAAOI,GAAS,CACnB,MAAMD,EAASN,EAAS,IAAIO,CAAI,EAChC,GAAID,IAAW,OACX,MAAM,IAAI,MAAM,kCAAkC,EAEtD,MAAMH,EAAK,aAAc,CAAE,OAAAG,EAAQ,CACtC,EAEL,YAAa,CAAC,CAAE,KAAAH,KACL,IAAMA,EAAK,aAAa,CAEvC,GCdMK,EAAmB,IAAI,QACvBC,EAA8BV,GAAW,CAC3C,GAAIS,EAAiB,IAAIT,CAAM,EAE3B,OAAOS,EAAiB,IAAIT,CAAM,EAEtC,MAAMW,EAAkB,IAAI,IAC5B,OAAAF,EAAiB,IAAIT,EAAQW,CAAe,EACrCA,CACX,EACaC,EAAgBC,GAAyB,CAClD,MAAMC,EAA2BZ,EAA2BW,CAAoB,EAChF,OAAQb,GAAW,CACf,MAAMW,EAAkBD,EAA2BV,CAAM,EACzDA,EAAO,iBAAiB,UAAY,CAAC,CAAE,KAAMe,CAAO,IAAO,CACvD,KAAM,CAAE,GAAAC,CAAE,EAAKD,EACf,GAAIC,IAAO,MAAQL,EAAgB,IAAIK,CAAE,EAAG,CACxC,KAAM,CAAE,OAAAC,EAAQ,QAAAC,CAAO,EAAKP,EAAgB,IAAIK,CAAE,EAClDL,EAAgB,OAAOK,CAAE,EACrBD,EAAQ,QAAU,OAClBG,EAAQH,EAAQ,MAAM,EAGtBE,EAAO,IAAI,MAAMF,EAAQ,MAAM,OAAO,CAAC,CAE3D,CACA,CAAW,EACChB,EAAcC,CAAM,GACpBA,EAAO,MAAO,EAElB,MAAMI,EAAO,CAACe,EAAQC,EAAS,KAAMC,EAAgB,KAC1C,IAAI,QAAQ,CAACH,EAASD,IAAW,CACpC,MAAMD,EAAKM,EAAqBX,CAAe,EAC/CA,EAAgB,IAAIK,EAAI,CAAE,OAAAC,EAAQ,QAAAC,CAAO,CAAE,EACvCE,IAAW,KACXpB,EAAO,YAAY,CAAE,GAAAgB,EAAI,OAAAG,CAAM,EAAIE,CAAa,EAGhDrB,EAAO,YAAY,CAAE,GAAAgB,EAAI,OAAAG,EAAQ,OAAAC,CAAQ,EAAEC,CAAa,CAE5E,CAAa,EAECE,EAAS,CAACJ,EAAQC,EAAQC,EAAgB,CAAA,IAAO,CACnDrB,EAAO,YAAY,CAAE,GAAI,KAAM,OAAAmB,EAAQ,OAAAC,CAAQ,EAAEC,CAAa,CACjE,EACD,IAAIG,EAAY,CAAE,EAClB,SAAW,CAACC,EAAKC,CAAO,IAAK,OAAO,QAAQZ,CAAwB,EAChEU,EAAY,CAAE,GAAGA,EAAW,CAACC,CAAG,EAAGC,EAAQ,CAAE,KAAAtB,EAAM,OAAAmB,CAAM,CAAE,CAAG,EAElE,MAAO,CAAE,GAAGC,CAAW,CAC1B,CACL","x_google_ignoreList":[0,1,2,3]}