@futdevpro/ccap 1.1.2771 → 1.1.2863
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client-dist/{agent-instances.module-I4BSGDNA.js → agent-instances.module-SRVXVWB4.js} +2 -2
- package/client-dist/{ca.module-4FWP2XY4.js → ca.module-ZAYCRAK6.js} +2 -2
- package/client-dist/cc-usage-dashboard.component-TNMEIWMI.js +2 -0
- package/client-dist/cc-usage-dashboard.component-TNMEIWMI.js.map +7 -0
- package/client-dist/{cc.module-G2GSNVFJ.js → cc.module-BF2AOAIM.js} +2 -2
- package/client-dist/{chunk-WBMES66O.js → chunk-23GMPVB5.js} +2 -2
- package/client-dist/{chunk-DVGKMXHM.js → chunk-2DJBCAHJ.js} +2 -2
- package/client-dist/{chunk-LUIH5IH4.js → chunk-2LOFMRCO.js} +2 -2
- package/client-dist/{chunk-6VSHLGVD.js → chunk-2X5MWPDN.js} +2 -2
- package/client-dist/{chunk-HDPOKOM5.js → chunk-2Y7GYEOT.js} +2 -2
- package/client-dist/{chunk-WYRNU54S.js → chunk-34XFCTVF.js} +2 -2
- package/client-dist/{chunk-E6RJBEUN.js → chunk-4RT7LOTQ.js} +2 -2
- package/client-dist/{chunk-NWNWKLLW.js → chunk-4TEHGQ5C.js} +2 -2
- package/client-dist/{chunk-7DKTD4P6.js → chunk-4XEPGDZH.js} +2 -2
- package/client-dist/{chunk-7NPTBX4Y.js → chunk-52JG2IIG.js} +2 -2
- package/client-dist/{chunk-JVO3EHGB.js → chunk-77HGZO43.js} +2 -2
- package/client-dist/{chunk-YURXOU4U.js → chunk-7JFONJTJ.js} +2 -2
- package/client-dist/{chunk-7AQGRHMA.js → chunk-7JW45JC5.js} +2 -2
- package/client-dist/{chunk-7V3LRQAZ.js → chunk-7MSQD5HV.js} +2 -2
- package/client-dist/{chunk-64BJ5ZPJ.js → chunk-AFF37OKI.js} +2 -2
- package/client-dist/{chunk-XT2TWSB3.js → chunk-B7WQ5TK3.js} +2 -2
- package/client-dist/{chunk-ZVNHBXJU.js → chunk-CBIUSRE5.js} +2 -2
- package/client-dist/{chunk-YJEHCUWB.js → chunk-CUUDVYOC.js} +2 -2
- package/client-dist/{chunk-ZQ4GFPEN.js → chunk-DHIVAX2C.js} +2 -2
- package/client-dist/{chunk-ASQEQSVO.js → chunk-DU3IYPGM.js} +2 -2
- package/client-dist/{chunk-IPOJA4NQ.js → chunk-DUN7ICUI.js} +2 -2
- package/client-dist/{chunk-DI7UBKC5.js → chunk-DZ74YN25.js} +2 -2
- package/client-dist/{chunk-23UH5S6I.js → chunk-EDQWK2Q5.js} +2 -2
- package/client-dist/{chunk-P7FDJL6S.js → chunk-EIT3LSQO.js} +2 -2
- package/client-dist/{chunk-CDKFHI2N.js → chunk-ELFCSLIP.js} +2 -2
- package/client-dist/{chunk-CDKFHI2N.js.map → chunk-ELFCSLIP.js.map} +1 -1
- package/client-dist/{chunk-WE3IF6CE.js → chunk-EMVGFT6L.js} +2 -2
- package/client-dist/{chunk-AVBSYCMH.js → chunk-EUY2HZZV.js} +2 -2
- package/client-dist/{chunk-MZ3LRP25.js → chunk-EZNIJZBL.js} +2 -2
- package/client-dist/{chunk-KCEYLL24.js → chunk-FYXUOXRP.js} +2 -2
- package/client-dist/{chunk-X2KATA6U.js → chunk-GODWUWRO.js} +2 -2
- package/client-dist/{chunk-WWZOAP46.js → chunk-HSAGX22H.js} +2 -2
- package/client-dist/{chunk-WHRKP7CF.js → chunk-I6OBHW45.js} +8 -8
- package/client-dist/{chunk-WHRKP7CF.js.map → chunk-I6OBHW45.js.map} +1 -1
- package/client-dist/{chunk-6VFHL63I.js → chunk-L7PQ72ZG.js} +2 -2
- package/client-dist/{chunk-LYCDXEA4.js → chunk-NI4AZWY2.js} +2 -2
- package/client-dist/{chunk-FTVB36SW.js → chunk-O7U4KV25.js} +2 -2
- package/client-dist/{chunk-M7S54EWW.js → chunk-OIBDRASW.js} +2 -2
- package/client-dist/{chunk-737N2QOC.js → chunk-PZMEVMSF.js} +2 -2
- package/client-dist/{chunk-EXE26RV4.js → chunk-Q7GDEJL2.js} +2 -2
- package/client-dist/{chunk-T4N37SRP.js → chunk-QHLRSGQG.js} +2 -2
- package/client-dist/{chunk-CNZUTJXV.js → chunk-QTRIOR6Z.js} +2 -2
- package/client-dist/{chunk-4CUQDHAH.js → chunk-QUEQSNIS.js} +2 -2
- package/client-dist/{chunk-PQIHFZG3.js → chunk-SO3QL2U5.js} +2 -2
- package/client-dist/{chunk-C43VIJCY.js → chunk-SX22WHCZ.js} +2 -2
- package/client-dist/{chunk-2HJ74DSG.js → chunk-TUKCFE3B.js} +2 -2
- package/client-dist/{chunk-3FRNDMIC.js → chunk-UI6N7Y2P.js} +2 -2
- package/client-dist/{chunk-V42OZMBH.js → chunk-VLMQV3OI.js} +2 -2
- package/client-dist/{chunk-AKOD5HPA.js → chunk-VXJF6N32.js} +2 -2
- package/client-dist/{chunk-3FRRZGAB.js → chunk-WQIBGXGU.js} +2 -2
- package/client-dist/{chunk-7MOSEOQF.js → chunk-WYTT3YHQ.js} +2 -2
- package/client-dist/{chunk-5QT5PZ2B.js → chunk-X2FIFUXZ.js} +2 -2
- package/client-dist/{chunk-D2TMY72D.js → chunk-XSP7NLZB.js} +2 -2
- package/client-dist/{chunk-4HEHXXDL.js → chunk-XXO2YNDP.js} +2 -2
- package/client-dist/{chunk-SXP4YJY5.js → chunk-YGTNCGIU.js} +2 -2
- package/client-dist/{chunk-KYI7S4JV.js → chunk-YU32GIMP.js} +2 -2
- package/client-dist/{chunk-TKE33F7W.js → chunk-ZGWUDLYU.js} +2 -2
- package/client-dist/{chunk-BV54ST5B.js → chunk-ZMZ462V7.js} +2 -2
- package/client-dist/{consultant.module-ACB352FM.js → consultant.module-3PAIPMAH.js} +2 -2
- package/client-dist/{crd.module-XN253YIG.js → crd.module-PJO2UJEG.js} +2 -2
- package/client-dist/{dashboard.module-F43GCOJ6.js → dashboard.module-TJMYHTHX.js} +2 -2
- package/client-dist/{do.module-OHJBGMDT.js → do.module-SBE6P3B7.js} +2 -2
- package/client-dist/{document-library.module-WDOKDFTM.js → document-library.module-YH7IF4EP.js} +2 -2
- package/client-dist/{embedding-eval.module-ECD7QXRH.js → embedding-eval.module-STWWCUD7.js} +2 -2
- package/client-dist/{embedding-registry.module-764ZU57G.js → embedding-registry.module-XX6725DX.js} +2 -2
- package/client-dist/{err.module-R2ATIMSQ.js → err.module-SL2IYMTF.js} +2 -2
- package/client-dist/{feedback.module-ALGNJKOG.js → feedback.module-RMRL65YC.js} +2 -2
- package/client-dist/{host-runtime-mcp.module-Z3D57LRD.js → host-runtime-mcp.module-OJORUP2R.js} +2 -2
- package/client-dist/index.html +1 -1
- package/client-dist/{live-dev-pipeline.module-EHZPO24W.js → live-dev-pipeline.module-AMBMFVIH.js} +2 -2
- package/client-dist/{logs.module-QNMNIVLO.js → logs.module-3CQ6KLLB.js} +2 -2
- package/client-dist/{main-IYPXSS3O.js → main-RCFMPV3V.js} +5 -5
- package/client-dist/main-RCFMPV3V.js.map +7 -0
- package/client-dist/{master-control-remote-poc.module-BVKFRRZN.js → master-control-remote-poc.module-FD3E5JB7.js} +2 -2
- package/client-dist/{mobile-app.module-WUZGYVG6.js → mobile-app.module-LHVADRFV.js} +2 -2
- package/client-dist/{model-registry.module-WDC3LG3H.js → model-registry.module-ZTKOWGAN.js} +2 -2
- package/client-dist/{oc.module-K5COGX5N.js → oc.module-GLPSVTAT.js} +2 -2
- package/client-dist/{orc.module-EA5J6IGA.js → orc.module-BKMJC5YX.js} +2 -2
- package/client-dist/{project-management.module-UI36OFRI.js → project-management.module-QEIXJONY.js} +2 -2
- package/client-dist/project-source-routed.module-LSFQT5DK.js +2 -0
- package/client-dist/{scheduler.module-AOWDLFVH.js → scheduler.module-TD4G2WNF.js} +2 -2
- package/client-dist/{session.module-2FLZRRCE.js → session.module-YCITR6BG.js} +2 -2
- package/client-dist/{set.module-B7XMMVTO.js → set.module-JIWXIF2C.js} +2 -2
- package/client-dist/{setup.module-O26UCVEY.js → setup.module-ZWL33O7N.js} +2 -2
- package/client-dist/{terminals.module-LTV6MFUG.js → terminals.module-MKXQLASR.js} +2 -2
- package/client-dist/{voice-notes-poc.module-VXD3G3TV.js → voice-notes-poc.module-7LUIU7P5.js} +2 -2
- package/client-dist/{wfs.module-B2UGRMKL.js → wfs.module-2BMXPFAL.js} +2 -2
- package/package.json +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-discovery.util.d.ts +25 -3
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-discovery.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-discovery.util.js +23 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-discovery.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-discovery.util.spec.js +56 -3
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/account/cc-account-discovery.util.spec.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.d.ts +20 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.js +98 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_collections/utils/cc-stream-parser.util.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-state.data-model.d.ts +51 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-state.data-model.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-state.data-model.js +72 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-state.data-model.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-state.data-model.spec.d.ts +2 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-state.data-model.spec.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-state.data-model.spec.js +67 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_models/data-models/cc-account-usage-state.data-model.spec.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.d.ts +33 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.js +56 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.spec.js +38 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account-route.control-service.spec.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account.controller.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account.controller.js +29 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_routes/cc-account/cc-account.controller.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.d.ts +6 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.js +48 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.spec.js +55 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-pool.control-service.spec.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-usage-state.data-service.d.ts +53 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-usage-state.data-service.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-usage-state.data-service.js +168 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-usage-state.data-service.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-usage-state.data-service.spec.d.ts +2 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-usage-state.data-service.spec.d.ts.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-usage-state.data-service.spec.js +156 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/account/cc-account-usage-state.data-service.spec.js.map +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.js +9 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/cc-manager.control-service.js.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/claude-code.data-service.d.ts +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/claude-code.data-service.d.ts.map +1 -1
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/claude-code.data-service.js +1 -0
- package/server/build/src/_modules/external-sessions/_modules/claude-code/_services/core/claude-code.data-service.js.map +1 -1
- package/server/build/src/_modules/messaging/_collections/consts/msg.const.d.ts +17 -0
- package/server/build/src/_modules/messaging/_collections/consts/msg.const.d.ts.map +1 -1
- package/server/build/src/_modules/messaging/_collections/consts/msg.const.js +19 -1
- package/server/build/src/_modules/messaging/_collections/consts/msg.const.js.map +1 -1
- package/server/build/src/app.server.d.ts +2 -8
- package/server/build/src/app.server.d.ts.map +1 -1
- package/server/build/src/app.server.js +6 -14
- package/server/build/src/app.server.js.map +1 -1
- package/client-dist/main-IYPXSS3O.js.map +0 -7
- package/client-dist/project-source-routed.module-ADAJCFPE.js +0 -2
- /package/client-dist/{agent-instances.module-I4BSGDNA.js.map → agent-instances.module-SRVXVWB4.js.map} +0 -0
- /package/client-dist/{ca.module-4FWP2XY4.js.map → ca.module-ZAYCRAK6.js.map} +0 -0
- /package/client-dist/{cc.module-G2GSNVFJ.js.map → cc.module-BF2AOAIM.js.map} +0 -0
- /package/client-dist/{chunk-WBMES66O.js.map → chunk-23GMPVB5.js.map} +0 -0
- /package/client-dist/{chunk-DVGKMXHM.js.map → chunk-2DJBCAHJ.js.map} +0 -0
- /package/client-dist/{chunk-LUIH5IH4.js.map → chunk-2LOFMRCO.js.map} +0 -0
- /package/client-dist/{chunk-6VSHLGVD.js.map → chunk-2X5MWPDN.js.map} +0 -0
- /package/client-dist/{chunk-HDPOKOM5.js.map → chunk-2Y7GYEOT.js.map} +0 -0
- /package/client-dist/{chunk-WYRNU54S.js.map → chunk-34XFCTVF.js.map} +0 -0
- /package/client-dist/{chunk-E6RJBEUN.js.map → chunk-4RT7LOTQ.js.map} +0 -0
- /package/client-dist/{chunk-NWNWKLLW.js.map → chunk-4TEHGQ5C.js.map} +0 -0
- /package/client-dist/{chunk-7DKTD4P6.js.map → chunk-4XEPGDZH.js.map} +0 -0
- /package/client-dist/{chunk-7NPTBX4Y.js.map → chunk-52JG2IIG.js.map} +0 -0
- /package/client-dist/{chunk-JVO3EHGB.js.map → chunk-77HGZO43.js.map} +0 -0
- /package/client-dist/{chunk-YURXOU4U.js.map → chunk-7JFONJTJ.js.map} +0 -0
- /package/client-dist/{chunk-7AQGRHMA.js.map → chunk-7JW45JC5.js.map} +0 -0
- /package/client-dist/{chunk-7V3LRQAZ.js.map → chunk-7MSQD5HV.js.map} +0 -0
- /package/client-dist/{chunk-64BJ5ZPJ.js.map → chunk-AFF37OKI.js.map} +0 -0
- /package/client-dist/{chunk-XT2TWSB3.js.map → chunk-B7WQ5TK3.js.map} +0 -0
- /package/client-dist/{chunk-ZVNHBXJU.js.map → chunk-CBIUSRE5.js.map} +0 -0
- /package/client-dist/{chunk-YJEHCUWB.js.map → chunk-CUUDVYOC.js.map} +0 -0
- /package/client-dist/{chunk-ZQ4GFPEN.js.map → chunk-DHIVAX2C.js.map} +0 -0
- /package/client-dist/{chunk-ASQEQSVO.js.map → chunk-DU3IYPGM.js.map} +0 -0
- /package/client-dist/{chunk-IPOJA4NQ.js.map → chunk-DUN7ICUI.js.map} +0 -0
- /package/client-dist/{chunk-DI7UBKC5.js.map → chunk-DZ74YN25.js.map} +0 -0
- /package/client-dist/{chunk-23UH5S6I.js.map → chunk-EDQWK2Q5.js.map} +0 -0
- /package/client-dist/{chunk-P7FDJL6S.js.map → chunk-EIT3LSQO.js.map} +0 -0
- /package/client-dist/{chunk-WE3IF6CE.js.map → chunk-EMVGFT6L.js.map} +0 -0
- /package/client-dist/{chunk-AVBSYCMH.js.map → chunk-EUY2HZZV.js.map} +0 -0
- /package/client-dist/{chunk-MZ3LRP25.js.map → chunk-EZNIJZBL.js.map} +0 -0
- /package/client-dist/{chunk-KCEYLL24.js.map → chunk-FYXUOXRP.js.map} +0 -0
- /package/client-dist/{chunk-X2KATA6U.js.map → chunk-GODWUWRO.js.map} +0 -0
- /package/client-dist/{chunk-WWZOAP46.js.map → chunk-HSAGX22H.js.map} +0 -0
- /package/client-dist/{chunk-6VFHL63I.js.map → chunk-L7PQ72ZG.js.map} +0 -0
- /package/client-dist/{chunk-LYCDXEA4.js.map → chunk-NI4AZWY2.js.map} +0 -0
- /package/client-dist/{chunk-FTVB36SW.js.map → chunk-O7U4KV25.js.map} +0 -0
- /package/client-dist/{chunk-M7S54EWW.js.map → chunk-OIBDRASW.js.map} +0 -0
- /package/client-dist/{chunk-737N2QOC.js.map → chunk-PZMEVMSF.js.map} +0 -0
- /package/client-dist/{chunk-EXE26RV4.js.map → chunk-Q7GDEJL2.js.map} +0 -0
- /package/client-dist/{chunk-T4N37SRP.js.map → chunk-QHLRSGQG.js.map} +0 -0
- /package/client-dist/{chunk-CNZUTJXV.js.map → chunk-QTRIOR6Z.js.map} +0 -0
- /package/client-dist/{chunk-4CUQDHAH.js.map → chunk-QUEQSNIS.js.map} +0 -0
- /package/client-dist/{chunk-PQIHFZG3.js.map → chunk-SO3QL2U5.js.map} +0 -0
- /package/client-dist/{chunk-C43VIJCY.js.map → chunk-SX22WHCZ.js.map} +0 -0
- /package/client-dist/{chunk-2HJ74DSG.js.map → chunk-TUKCFE3B.js.map} +0 -0
- /package/client-dist/{chunk-3FRNDMIC.js.map → chunk-UI6N7Y2P.js.map} +0 -0
- /package/client-dist/{chunk-V42OZMBH.js.map → chunk-VLMQV3OI.js.map} +0 -0
- /package/client-dist/{chunk-AKOD5HPA.js.map → chunk-VXJF6N32.js.map} +0 -0
- /package/client-dist/{chunk-3FRRZGAB.js.map → chunk-WQIBGXGU.js.map} +0 -0
- /package/client-dist/{chunk-7MOSEOQF.js.map → chunk-WYTT3YHQ.js.map} +0 -0
- /package/client-dist/{chunk-5QT5PZ2B.js.map → chunk-X2FIFUXZ.js.map} +0 -0
- /package/client-dist/{chunk-D2TMY72D.js.map → chunk-XSP7NLZB.js.map} +0 -0
- /package/client-dist/{chunk-4HEHXXDL.js.map → chunk-XXO2YNDP.js.map} +0 -0
- /package/client-dist/{chunk-SXP4YJY5.js.map → chunk-YGTNCGIU.js.map} +0 -0
- /package/client-dist/{chunk-KYI7S4JV.js.map → chunk-YU32GIMP.js.map} +0 -0
- /package/client-dist/{chunk-TKE33F7W.js.map → chunk-ZGWUDLYU.js.map} +0 -0
- /package/client-dist/{chunk-BV54ST5B.js.map → chunk-ZMZ462V7.js.map} +0 -0
- /package/client-dist/{consultant.module-ACB352FM.js.map → consultant.module-3PAIPMAH.js.map} +0 -0
- /package/client-dist/{crd.module-XN253YIG.js.map → crd.module-PJO2UJEG.js.map} +0 -0
- /package/client-dist/{dashboard.module-F43GCOJ6.js.map → dashboard.module-TJMYHTHX.js.map} +0 -0
- /package/client-dist/{do.module-OHJBGMDT.js.map → do.module-SBE6P3B7.js.map} +0 -0
- /package/client-dist/{document-library.module-WDOKDFTM.js.map → document-library.module-YH7IF4EP.js.map} +0 -0
- /package/client-dist/{embedding-eval.module-ECD7QXRH.js.map → embedding-eval.module-STWWCUD7.js.map} +0 -0
- /package/client-dist/{embedding-registry.module-764ZU57G.js.map → embedding-registry.module-XX6725DX.js.map} +0 -0
- /package/client-dist/{err.module-R2ATIMSQ.js.map → err.module-SL2IYMTF.js.map} +0 -0
- /package/client-dist/{feedback.module-ALGNJKOG.js.map → feedback.module-RMRL65YC.js.map} +0 -0
- /package/client-dist/{host-runtime-mcp.module-Z3D57LRD.js.map → host-runtime-mcp.module-OJORUP2R.js.map} +0 -0
- /package/client-dist/{live-dev-pipeline.module-EHZPO24W.js.map → live-dev-pipeline.module-AMBMFVIH.js.map} +0 -0
- /package/client-dist/{logs.module-QNMNIVLO.js.map → logs.module-3CQ6KLLB.js.map} +0 -0
- /package/client-dist/{master-control-remote-poc.module-BVKFRRZN.js.map → master-control-remote-poc.module-FD3E5JB7.js.map} +0 -0
- /package/client-dist/{mobile-app.module-WUZGYVG6.js.map → mobile-app.module-LHVADRFV.js.map} +0 -0
- /package/client-dist/{model-registry.module-WDC3LG3H.js.map → model-registry.module-ZTKOWGAN.js.map} +0 -0
- /package/client-dist/{oc.module-K5COGX5N.js.map → oc.module-GLPSVTAT.js.map} +0 -0
- /package/client-dist/{orc.module-EA5J6IGA.js.map → orc.module-BKMJC5YX.js.map} +0 -0
- /package/client-dist/{project-management.module-UI36OFRI.js.map → project-management.module-QEIXJONY.js.map} +0 -0
- /package/client-dist/{project-source-routed.module-ADAJCFPE.js.map → project-source-routed.module-LSFQT5DK.js.map} +0 -0
- /package/client-dist/{scheduler.module-AOWDLFVH.js.map → scheduler.module-TD4G2WNF.js.map} +0 -0
- /package/client-dist/{session.module-2FLZRRCE.js.map → session.module-YCITR6BG.js.map} +0 -0
- /package/client-dist/{set.module-B7XMMVTO.js.map → set.module-JIWXIF2C.js.map} +0 -0
- /package/client-dist/{setup.module-O26UCVEY.js.map → setup.module-ZWL33O7N.js.map} +0 -0
- /package/client-dist/{terminals.module-LTV6MFUG.js.map → terminals.module-MKXQLASR.js.map} +0 -0
- /package/client-dist/{voice-notes-poc.module-VXD3G3TV.js.map → voice-notes-poc.module-7LUIU7P5.js.map} +0 -0
- /package/client-dist/{wfs.module-B2UGRMKL.js.map → wfs.module-2BMXPFAL.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["node_modules/.pnpm/@futdevpro+fsm-dynamo@1.15.8_rxjs@7.8.1/node_modules/@futdevpro/fsm-dynamo/src/_modules/socket/_enums/sck-event-key.enum.ts","node_modules/.pnpm/@futdevpro+fsm-dynamo@1.15.8_rxjs@7.8.1/node_modules/@futdevpro/fsm-dynamo/src/_modules/socket/_models/sck-client-params.control-model.ts","node_modules/.pnpm/@futdevpro+fsm-dynamo@1.15.8_rxjs@7.8.1/node_modules/@futdevpro/fsm-dynamo/src/_modules/socket/_models/sck-socket-event.control-model.ts","node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/commons.js","node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/encodePacket.browser.js","node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/contrib/base64-arraybuffer.js","node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/decodePacket.browser.js","node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/index.js","node_modules/.pnpm/@socket.io+component-emitter@3.1.2/node_modules/@socket.io/component-emitter/lib/esm/index.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/globals.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/util.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/contrib/parseqs.js","node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/common.js","node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/browser.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/transport.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/transports/polling.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/contrib/has-cors.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/transports/polling-xhr.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/transports/websocket.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/transports/webtransport.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/transports/index.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/contrib/parseuri.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/socket.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/transports/polling-fetch.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/index.js","node_modules/.pnpm/socket.io-client@4.8.3/node_modules/socket.io-client/build/cjs/url.js","node_modules/.pnpm/socket.io-parser@4.2.5/node_modules/socket.io-parser/build/cjs/is-binary.js","node_modules/.pnpm/socket.io-parser@4.2.5/node_modules/socket.io-parser/build/cjs/binary.js","node_modules/.pnpm/socket.io-parser@4.2.5/node_modules/socket.io-parser/build/cjs/index.js","node_modules/.pnpm/socket.io-client@4.8.3/node_modules/socket.io-client/build/cjs/on.js","node_modules/.pnpm/socket.io-client@4.8.3/node_modules/socket.io-client/build/cjs/socket.js","node_modules/.pnpm/socket.io-client@4.8.3/node_modules/socket.io-client/build/cjs/contrib/backo2.js","node_modules/.pnpm/socket.io-client@4.8.3/node_modules/socket.io-client/build/cjs/manager.js","node_modules/.pnpm/socket.io-client@4.8.3/node_modules/socket.io-client/build/cjs/index.js","node_modules/.pnpm/@futdevpro+fsm-dynamo@1.15.8_rxjs@7.8.1/node_modules/@futdevpro/fsm-dynamo/src/_modules/socket/_services/sck-client.service-base.ts","node_modules/.pnpm/@futdevpro+fsm-dynamo@1.15.8_rxjs@7.8.1/node_modules/@futdevpro/fsm-dynamo/src/_modules/socket/index.ts","node_modules/packages/core/rxjs-interop/src/take_until_destroyed.ts","node_modules/packages/core/rxjs-interop/src/output_from_observable.ts","node_modules/packages/core/rxjs-interop/src/output_to_observable.ts","node_modules/packages/core/rxjs-interop/src/to_observable.ts","node_modules/packages/core/rxjs-interop/src/to_signal.ts","node_modules/packages/core/rxjs-interop/rxjs-interop.ts","src/app/_enums/ccap-socket-status.enum.ts","src/app/_services/control-services/ccap-socket.control-service.ts"],"sourcesContent":[null,null,null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ERROR_PACKET = exports.PACKET_TYPES_REVERSE = exports.PACKET_TYPES = void 0;\nconst PACKET_TYPES = Object.create(null); // no Map = no polyfill\nexports.PACKET_TYPES = PACKET_TYPES;\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nexports.PACKET_TYPES_REVERSE = PACKET_TYPES_REVERSE;\nObject.keys(PACKET_TYPES).forEach((key) => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexports.ERROR_PACKET = ERROR_PACKET;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encodePacket = void 0;\nexports.encodePacketToBinary = encodePacketToBinary;\nconst commons_js_1 = require(\"./commons.js\");\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(commons_js_1.PACKET_TYPES[type] + (data || \"\"));\n};\nexports.encodePacket = encodePacket;\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + (content || \"\"));\n };\n return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\nlet TEXT_ENCODER;\nfunction encodePacketToBinary(packet, callback) {\n if (withNativeBlob && packet.data instanceof Blob) {\n return packet.data.arrayBuffer().then(toArray).then(callback);\n }\n else if (withNativeArrayBuffer &&\n (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n return callback(toArray(packet.data));\n }\n encodePacket(packet, false, (encoded) => {\n if (!TEXT_ENCODER) {\n TEXT_ENCODER = new TextEncoder();\n }\n callback(TEXT_ENCODER.encode(encoded));\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decode = exports.encode = void 0;\n// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nconst encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexports.encode = encode;\nconst decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\nexports.decode = decode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodePacket = void 0;\nconst commons_js_1 = require(\"./commons.js\");\nconst base64_arraybuffer_js_1 = require(\"./contrib/base64-arraybuffer.js\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType),\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType),\n };\n }\n const packetType = commons_js_1.PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return commons_js_1.ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: commons_js_1.PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1),\n }\n : {\n type: commons_js_1.PACKET_TYPES_REVERSE[type],\n };\n};\nexports.decodePacket = decodePacket;\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = (0, base64_arraybuffer_js_1.decode)(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n if (data instanceof Blob) {\n // from WebSocket + binaryType \"blob\"\n return data;\n }\n else {\n // from HTTP long-polling or WebTransport\n return new Blob([data]);\n }\n case \"arraybuffer\":\n default:\n if (data instanceof ArrayBuffer) {\n // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n return data;\n }\n else {\n // from WebTransport (Uint8Array)\n return data.buffer;\n }\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodePayload = exports.decodePacket = exports.encodePayload = exports.encodePacket = exports.protocol = void 0;\nexports.createPacketEncoderStream = createPacketEncoderStream;\nexports.createPacketDecoderStream = createPacketDecoderStream;\nconst encodePacket_js_1 = require(\"./encodePacket.js\");\nObject.defineProperty(exports, \"encodePacket\", { enumerable: true, get: function () { return encodePacket_js_1.encodePacket; } });\nconst decodePacket_js_1 = require(\"./decodePacket.js\");\nObject.defineProperty(exports, \"decodePacket\", { enumerable: true, get: function () { return decodePacket_js_1.decodePacket; } });\nconst commons_js_1 = require(\"./commons.js\");\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n (0, encodePacket_js_1.encodePacket)(packet, false, (encodedPacket) => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nexports.encodePayload = encodePayload;\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = (0, decodePacket_js_1.decodePacket)(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexports.decodePayload = decodePayload;\nfunction createPacketEncoderStream() {\n return new TransformStream({\n transform(packet, controller) {\n (0, encodePacket_js_1.encodePacketToBinary)(packet, (encodedPacket) => {\n const payloadLength = encodedPacket.length;\n let header;\n // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n if (payloadLength < 126) {\n header = new Uint8Array(1);\n new DataView(header.buffer).setUint8(0, payloadLength);\n }\n else if (payloadLength < 65536) {\n header = new Uint8Array(3);\n const view = new DataView(header.buffer);\n view.setUint8(0, 126);\n view.setUint16(1, payloadLength);\n }\n else {\n header = new Uint8Array(9);\n const view = new DataView(header.buffer);\n view.setUint8(0, 127);\n view.setBigUint64(1, BigInt(payloadLength));\n }\n // first bit indicates whether the payload is plain text (0) or binary (1)\n if (packet.data && typeof packet.data !== \"string\") {\n header[0] |= 0x80;\n }\n controller.enqueue(header);\n controller.enqueue(encodedPacket);\n });\n },\n });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n if (chunks[0].length === size) {\n return chunks.shift();\n }\n const buffer = new Uint8Array(size);\n let j = 0;\n for (let i = 0; i < size; i++) {\n buffer[i] = chunks[0][j++];\n if (j === chunks[0].length) {\n chunks.shift();\n j = 0;\n }\n }\n if (chunks.length && j < chunks[0].length) {\n chunks[0] = chunks[0].slice(j);\n }\n return buffer;\n}\nfunction createPacketDecoderStream(maxPayload, binaryType) {\n if (!TEXT_DECODER) {\n TEXT_DECODER = new TextDecoder();\n }\n const chunks = [];\n let state = 0 /* State.READ_HEADER */;\n let expectedLength = -1;\n let isBinary = false;\n return new TransformStream({\n transform(chunk, controller) {\n chunks.push(chunk);\n while (true) {\n if (state === 0 /* State.READ_HEADER */) {\n if (totalLength(chunks) < 1) {\n break;\n }\n const header = concatChunks(chunks, 1);\n isBinary = (header[0] & 0x80) === 0x80;\n expectedLength = header[0] & 0x7f;\n if (expectedLength < 126) {\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (expectedLength === 126) {\n state = 1 /* State.READ_EXTENDED_LENGTH_16 */;\n }\n else {\n state = 2 /* State.READ_EXTENDED_LENGTH_64 */;\n }\n }\n else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */) {\n if (totalLength(chunks) < 2) {\n break;\n }\n const headerArray = concatChunks(chunks, 2);\n expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */) {\n if (totalLength(chunks) < 8) {\n break;\n }\n const headerArray = concatChunks(chunks, 8);\n const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n const n = view.getUint32(0);\n if (n > Math.pow(2, 53 - 32) - 1) {\n // the maximum safe integer in JavaScript is 2^53 - 1\n controller.enqueue(commons_js_1.ERROR_PACKET);\n break;\n }\n expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else {\n if (totalLength(chunks) < expectedLength) {\n break;\n }\n const data = concatChunks(chunks, expectedLength);\n controller.enqueue((0, decodePacket_js_1.decodePacket)(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n state = 0 /* State.READ_HEADER */;\n }\n if (expectedLength === 0 || expectedLength > maxPayload) {\n controller.enqueue(commons_js_1.ERROR_PACKET);\n break;\n }\n }\n },\n });\n}\nexports.protocol = 4;\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultBinaryType = exports.globalThisShim = exports.nextTick = void 0;\nexports.createCookieJar = createCookieJar;\nexports.nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexports.globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\nexports.defaultBinaryType = \"arraybuffer\";\nfunction createCookieJar() { }\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pick = pick;\nexports.installTimerFunctions = installTimerFunctions;\nexports.byteLength = byteLength;\nexports.randomString = randomString;\nconst globals_node_js_1 = require(\"./globals.node.js\");\nfunction pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globals_node_js_1.globalThisShim.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globals_node_js_1.globalThisShim.clearTimeout;\nfunction installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globals_node_js_1.globalThisShim);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globals_node_js_1.globalThisShim);\n }\n else {\n obj.setTimeoutFn = globals_node_js_1.globalThisShim.setTimeout.bind(globals_node_js_1.globalThisShim);\n obj.clearTimeoutFn = globals_node_js_1.globalThisShim.clearTimeout.bind(globals_node_js_1.globalThisShim);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nfunction byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n/**\n * Generates a random 8-characters string.\n */\nfunction randomString() {\n return (Date.now().toString(36).substring(3) +\n Math.random().toString(36).substring(2, 5));\n}\n","\"use strict\";\n// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encode = encode;\nexports.decode = decode;\nfunction encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nfunction decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Transport = exports.TransportError = void 0;\nconst engine_io_parser_1 = require(\"engine.io-parser\");\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst util_js_1 = require(\"./util.js\");\nconst parseqs_js_1 = require(\"./contrib/parseqs.js\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:transport\"); // debug()\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexports.TransportError = TransportError;\nclass Transport extends component_emitter_1.Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n (0, util_js_1.installTimerFunctions)(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n debug(\"transport is not open, discarding packets\");\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = (0, engine_io_parser_1.decodePacket)(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n createUri(schema, query = {}) {\n return (schema +\n \"://\" +\n this._hostname() +\n this._port() +\n this.opts.path +\n this._query(query));\n }\n _hostname() {\n const hostname = this.opts.hostname;\n return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n }\n _port() {\n if (this.opts.port &&\n ((this.opts.secure && Number(this.opts.port) !== 443) ||\n (!this.opts.secure && Number(this.opts.port) !== 80))) {\n return \":\" + this.opts.port;\n }\n else {\n return \"\";\n }\n }\n _query(query) {\n const encodedQuery = (0, parseqs_js_1.encode)(query);\n return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n }\n}\nexports.Transport = Transport;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Polling = void 0;\nconst transport_js_1 = require(\"../transport.js\");\nconst util_js_1 = require(\"../util.js\");\nconst engine_io_parser_1 = require(\"engine.io-parser\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:polling\"); // debug()\nclass Polling extends transport_js_1.Transport {\n constructor() {\n super(...arguments);\n this._polling = false;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this._poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n debug(\"paused\");\n this.readyState = \"paused\";\n onPause();\n };\n if (this._polling || !this.writable) {\n let total = 0;\n if (this._polling) {\n debug(\"we are currently polling - waiting to pause\");\n total++;\n this.once(\"pollComplete\", function () {\n debug(\"pre-pause polling complete\");\n --total || pause();\n });\n }\n if (!this.writable) {\n debug(\"we are currently writing - waiting to pause\");\n total++;\n this.once(\"drain\", function () {\n debug(\"pre-pause writing complete\");\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n _poll() {\n debug(\"polling\");\n this._polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n debug(\"polling got data %s\", data);\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n (0, engine_io_parser_1.decodePayload)(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this._polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this._poll();\n }\n else {\n debug('ignoring poll - transport state \"%s\"', this.readyState);\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n debug(\"writing close packet\");\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n debug(\"transport open - closing\");\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n debug(\"transport not open - deferring close\");\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n (0, engine_io_parser_1.encodePayload)(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"https\" : \"http\";\n const query = this.query || {};\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = (0, util_js_1.randomString)();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\nexports.Polling = Polling;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasCORS = void 0;\n// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexports.hasCORS = value;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.XHR = exports.Request = exports.BaseXHR = void 0;\nconst polling_js_1 = require(\"./polling.js\");\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst util_js_1 = require(\"../util.js\");\nconst globals_node_js_1 = require(\"../globals.node.js\");\nconst has_cors_js_1 = require(\"../contrib/has-cors.js\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:polling\"); // debug()\nfunction empty() { }\nclass BaseXHR extends polling_js_1.Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n }\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n debug(\"xhr poll\");\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexports.BaseXHR = BaseXHR;\nclass Request extends component_emitter_1.Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(createRequest, uri, opts) {\n super();\n this.createRequest = createRequest;\n (0, util_js_1.installTimerFunctions)(this, opts);\n this._opts = opts;\n this._method = opts.method || \"GET\";\n this._uri = uri;\n this._data = undefined !== opts.data ? opts.data : null;\n this._create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n _create() {\n var _a;\n const opts = (0, util_js_1.pick)(this._opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this._opts.xd;\n const xhr = (this._xhr = this.createRequest(opts));\n try {\n debug(\"xhr open %s: %s\", this._method, this._uri);\n xhr.open(this._method, this._uri, true);\n try {\n if (this._opts.extraHeaders) {\n // @ts-ignore\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this._opts.extraHeaders) {\n if (this._opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this._opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this._method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this._opts.withCredentials;\n }\n if (this._opts.requestTimeout) {\n xhr.timeout = this._opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n var _a;\n if (xhr.readyState === 3) {\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(\n // @ts-ignore\n xhr.getResponseHeader(\"set-cookie\"));\n }\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this._onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this._onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n debug(\"xhr data %s\", this._data);\n xhr.send(this._data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this._onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this._index = Request.requestsCount++;\n Request.requests[this._index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n _onError(err) {\n this.emitReserved(\"error\", err, this._xhr);\n this._cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n _cleanup(fromError) {\n if (\"undefined\" === typeof this._xhr || null === this._xhr) {\n return;\n }\n this._xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this._xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this._index];\n }\n this._xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n _onLoad() {\n const data = this._xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this._cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this._cleanup();\n }\n}\nexports.Request = Request;\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globals_node_js_1.globalThisShim ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\nconst hasXHR2 = (function () {\n const xhr = newRequest({\n xdomain: false,\n });\n return xhr && xhr.responseType !== null;\n})();\n/**\n * HTTP long-polling based on the built-in `XMLHttpRequest` object.\n *\n * Usage: browser\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n */\nclass XHR extends BaseXHR {\n constructor(opts) {\n super(opts);\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd }, this.opts);\n return new Request(newRequest, this.uri(), opts);\n }\n}\nexports.XHR = XHR;\nfunction newRequest(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || has_cors_js_1.hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globals_node_js_1.globalThisShim[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WS = exports.BaseWS = void 0;\nconst transport_js_1 = require(\"../transport.js\");\nconst util_js_1 = require(\"../util.js\");\nconst engine_io_parser_1 = require(\"engine.io-parser\");\nconst globals_node_js_1 = require(\"../globals.node.js\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:websocket\"); // debug()\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nclass BaseWS extends transport_js_1.Transport {\n get name() {\n return \"websocket\";\n }\n doOpen() {\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : (0, util_js_1.pick)(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws = this.createSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n (0, engine_io_parser_1.encodePacket)(packet, this.supportsBinary, (data) => {\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n this.doWrite(packet, data);\n }\n catch (e) {\n debug(\"websocket closed before onclose event\");\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n (0, globals_node_js_1.nextTick)(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.onerror = () => { };\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n const query = this.query || {};\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = (0, util_js_1.randomString)();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\nexports.BaseWS = BaseWS;\nconst WebSocketCtor = globals_node_js_1.globalThisShim.WebSocket || globals_node_js_1.globalThisShim.MozWebSocket;\n/**\n * WebSocket transport based on the built-in `WebSocket` object.\n *\n * Usage: browser, Node.js (since v21), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @see https://caniuse.com/mdn-api_websocket\n * @see https://nodejs.org/api/globals.html#websocket\n */\nclass WS extends BaseWS {\n createSocket(uri, protocols, opts) {\n return !isReactNative\n ? protocols\n ? new WebSocketCtor(uri, protocols)\n : new WebSocketCtor(uri)\n : new WebSocketCtor(uri, protocols, opts);\n }\n doWrite(_packet, data) {\n this.ws.send(data);\n }\n}\nexports.WS = WS;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WT = void 0;\nconst transport_js_1 = require(\"../transport.js\");\nconst globals_node_js_1 = require(\"../globals.node.js\");\nconst engine_io_parser_1 = require(\"engine.io-parser\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:webtransport\"); // debug()\n/**\n * WebTransport transport based on the built-in `WebTransport` object.\n *\n * Usage: browser, Node.js (with the `@fails-components/webtransport` package)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebTransport\n * @see https://caniuse.com/webtransport\n */\nclass WT extends transport_js_1.Transport {\n get name() {\n return \"webtransport\";\n }\n doOpen() {\n try {\n // @ts-ignore\n this._transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this._transport.closed\n .then(() => {\n debug(\"transport closed gracefully\");\n this.onClose();\n })\n .catch((err) => {\n debug(\"transport closed due to %s\", err);\n this.onError(\"webtransport error\", err);\n });\n // note: we could have used async/await, but that would require some additional polyfills\n this._transport.ready.then(() => {\n this._transport.createBidirectionalStream().then((stream) => {\n const decoderStream = (0, engine_io_parser_1.createPacketDecoderStream)(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n const reader = stream.readable.pipeThrough(decoderStream).getReader();\n const encoderStream = (0, engine_io_parser_1.createPacketEncoderStream)();\n encoderStream.readable.pipeTo(stream.writable);\n this._writer = encoderStream.writable.getWriter();\n const read = () => {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n debug(\"session is closed\");\n return;\n }\n debug(\"received chunk: %o\", value);\n this.onPacket(value);\n read();\n })\n .catch((err) => {\n debug(\"an error occurred while reading: %s\", err);\n });\n };\n read();\n const packet = { type: \"open\" };\n if (this.query.sid) {\n packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n }\n this._writer.write(packet).then(() => this.onOpen());\n });\n });\n }\n write(packets) {\n this.writable = false;\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n this._writer.write(packet).then(() => {\n if (lastPacket) {\n (0, globals_node_js_1.nextTick)(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n var _a;\n (_a = this._transport) === null || _a === void 0 ? void 0 : _a.close();\n }\n}\nexports.WT = WT;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transports = void 0;\nconst polling_xhr_node_js_1 = require(\"./polling-xhr.node.js\");\nconst websocket_node_js_1 = require(\"./websocket.node.js\");\nconst webtransport_js_1 = require(\"./webtransport.js\");\nexports.transports = {\n websocket: websocket_node_js_1.WS,\n webtransport: webtransport_js_1.WT,\n polling: polling_xhr_node_js_1.XHR,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = parse;\n// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nfunction parse(str) {\n if (str.length > 8000) {\n throw \"URI too long\";\n }\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Socket = exports.SocketWithUpgrade = exports.SocketWithoutUpgrade = void 0;\nconst index_js_1 = require(\"./transports/index.js\");\nconst util_js_1 = require(\"./util.js\");\nconst parseqs_js_1 = require(\"./contrib/parseqs.js\");\nconst parseuri_js_1 = require(\"./contrib/parseuri.js\");\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst engine_io_parser_1 = require(\"engine.io-parser\");\nconst globals_node_js_1 = require(\"./globals.node.js\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:socket\"); // debug()\nconst withEventListeners = typeof addEventListener === \"function\" &&\n typeof removeEventListener === \"function\";\nconst OFFLINE_EVENT_LISTENERS = [];\nif (withEventListeners) {\n // within a ServiceWorker, any event handler for the 'offline' event must be added on the initial evaluation of the\n // script, so we create one single event listener here which will forward the event to the socket instances\n addEventListener(\"offline\", () => {\n debug(\"closing %d connection(s) because the network was lost\", OFFLINE_EVENT_LISTENERS.length);\n OFFLINE_EVENT_LISTENERS.forEach((listener) => listener());\n }, false);\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes without upgrade mechanism, which means that it will keep the first low-level transport that\n * successfully establishes the connection.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithoutUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithoutUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithUpgrade\n * @see Socket\n */\nclass SocketWithoutUpgrade extends component_emitter_1.Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts) {\n super();\n this.binaryType = globals_node_js_1.defaultBinaryType;\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n this._pingInterval = -1;\n this._pingTimeout = -1;\n this._maxPayload = -1;\n /**\n * The expiration timestamp of the {@link _pingTimeoutTimer} object is tracked, in case the timer is throttled and the\n * callback is not fired on time. This can happen for example when a laptop is suspended or when a phone is locked.\n */\n this._pingTimeoutTime = Infinity;\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n const parsedUri = (0, parseuri_js_1.parse)(uri);\n opts.hostname = parsedUri.host;\n opts.secure =\n parsedUri.protocol === \"https\" || parsedUri.protocol === \"wss\";\n opts.port = parsedUri.port;\n if (parsedUri.query)\n opts.query = parsedUri.query;\n }\n else if (opts.host) {\n opts.hostname = (0, parseuri_js_1.parse)(opts.host).host;\n }\n (0, util_js_1.installTimerFunctions)(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = [];\n this._transportsByName = {};\n opts.transports.forEach((t) => {\n const transportName = t.prototype.name;\n this.transports.push(transportName);\n this._transportsByName[transportName] = t;\n });\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: false,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = (0, parseqs_js_1.decode)(this.opts.query);\n }\n if (withEventListeners) {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this._beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n debug(\"adding listener for the 'offline' event\");\n this._offlineEventListener = () => {\n this._onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n OFFLINE_EVENT_LISTENERS.push(this._offlineEventListener);\n }\n }\n if (this.opts.withCredentials) {\n this._cookieJar = (0, globals_node_js_1.createCookieJar)();\n }\n this._open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n debug('creating transport \"%s\"', name);\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = engine_io_parser_1.protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\n debug(\"options: %j\", opts);\n return new this._transportsByName[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n _open() {\n if (this.transports.length === 0) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n const transportName = this.opts.rememberUpgrade &&\n SocketWithoutUpgrade.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1\n ? \"websocket\"\n : this.transports[0];\n this.readyState = \"opening\";\n const transport = this.createTransport(transportName);\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n debug(\"setting transport %s\", transport.name);\n if (this.transport) {\n debug(\"clearing existing transport %s\", this.transport.name);\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this._onDrain.bind(this))\n .on(\"packet\", this._onPacket.bind(this))\n .on(\"error\", this._onError.bind(this))\n .on(\"close\", (reason) => this._onClose(\"transport close\", reason));\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n debug(\"socket open\");\n this.readyState = \"open\";\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n _onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this._sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n this._resetPingTimeout();\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this._onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n debug('packet received with socket readyState \"%s\"', this.readyState);\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this._pingInterval = data.pingInterval;\n this._pingTimeout = data.pingTimeout;\n this._maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this._resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n _resetPingTimeout() {\n this.clearTimeoutFn(this._pingTimeoutTimer);\n const delay = this._pingInterval + this._pingTimeout;\n this._pingTimeoutTime = Date.now() + delay;\n this._pingTimeoutTimer = this.setTimeoutFn(() => {\n this._onClose(\"ping timeout\");\n }, delay);\n if (this.opts.autoUnref) {\n this._pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n _onDrain() {\n this.writeBuffer.splice(0, this._prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this._prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this._getWritablePackets();\n debug(\"flushing %d packets in socket\", packets.length);\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this._prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n _getWritablePackets() {\n const shouldCheckPayloadSize = this._maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += (0, util_js_1.byteLength)(data);\n }\n if (i > 0 && payloadSize > this._maxPayload) {\n debug(\"only send %d out of %d packets\", i, this.writeBuffer.length);\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n debug(\"payload size is %d (max: %d)\", payloadSize, this._maxPayload);\n return this.writeBuffer;\n }\n /**\n * Checks whether the heartbeat timer has expired but the socket has not yet been notified.\n *\n * Note: this method is private for now because it does not really fit the WebSocket API, but if we put it in the\n * `write()` method then the message would not be buffered by the Socket.IO client.\n *\n * @return {boolean}\n * @private\n */\n /* private */ _hasPingExpired() {\n if (!this._pingTimeoutTime)\n return true;\n const hasExpired = Date.now() > this._pingTimeoutTime;\n if (hasExpired) {\n debug(\"throttled timer detected, scheduling connection close\");\n this._pingTimeoutTime = 0;\n (0, globals_node_js_1.nextTick)(() => {\n this._onClose(\"ping timeout\");\n }, this.setTimeoutFn);\n }\n return hasExpired;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a message. Alias of {@link Socket#write}.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n send(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n _sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this._onClose(\"forced close\");\n debug(\"socket closing - telling transport to close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n _onError(err) {\n debug(\"socket error %j\", err);\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n if (this.opts.tryAllTransports &&\n this.transports.length > 1 &&\n this.readyState === \"opening\") {\n debug(\"trying next transport\");\n this.transports.shift();\n return this._open();\n }\n this.emitReserved(\"error\", err);\n this._onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n _onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n debug('socket close with reason: \"%s\"', reason);\n // clear timers\n this.clearTimeoutFn(this._pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (withEventListeners) {\n if (this._beforeunloadEventListener) {\n removeEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this._offlineEventListener) {\n const i = OFFLINE_EVENT_LISTENERS.indexOf(this._offlineEventListener);\n if (i !== -1) {\n debug(\"removing listener for the 'offline' event\");\n OFFLINE_EVENT_LISTENERS.splice(i, 1);\n }\n }\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n }\n }\n}\nexports.SocketWithoutUpgrade = SocketWithoutUpgrade;\nSocketWithoutUpgrade.protocol = engine_io_parser_1.protocol;\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see Socket\n */\nclass SocketWithUpgrade extends SocketWithoutUpgrade {\n constructor() {\n super(...arguments);\n this._upgrades = [];\n }\n onOpen() {\n super.onOpen();\n if (\"open\" === this.readyState && this.opts.upgrade) {\n debug(\"starting upgrade probes\");\n for (let i = 0; i < this._upgrades.length; i++) {\n this._probe(this._upgrades[i]);\n }\n }\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n _probe(name) {\n debug('probing transport \"%s\"', name);\n let transport = this.createTransport(name);\n let failed = false;\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n debug('probe transport \"%s\" opened', name);\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n debug('probe transport \"%s\" pong', name);\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === transport.name;\n debug('pausing current transport \"%s\"', this.transport.name);\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n debug(\"changing transport and sending upgrade packet\");\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n debug('probe transport \"%s\" failed', name);\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n debug('probe transport \"%s\" failed because of error: %s', name, err);\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n if (this._upgrades.indexOf(\"webtransport\") !== -1 &&\n name !== \"webtransport\") {\n // favor WebTransport\n this.setTimeoutFn(() => {\n if (!failed) {\n transport.open();\n }\n }, 200);\n }\n else {\n transport.open();\n }\n }\n onHandshake(data) {\n this._upgrades = this._filterUpgrades(data.upgrades);\n super.onHandshake(data);\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n _filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n for (let i = 0; i < upgrades.length; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nexports.SocketWithUpgrade = SocketWithUpgrade;\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * @example\n * import { Socket } from \"engine.io-client\";\n *\n * const socket = new Socket();\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see SocketWithUpgrade\n */\nclass Socket extends SocketWithUpgrade {\n constructor(uri, opts = {}) {\n const o = typeof uri === \"object\" ? uri : opts;\n if (!o.transports ||\n (o.transports && typeof o.transports[0] === \"string\")) {\n o.transports = (o.transports || [\"polling\", \"websocket\", \"webtransport\"])\n .map((transportName) => index_js_1.transports[transportName])\n .filter((t) => !!t);\n }\n super(uri, o);\n }\n}\nexports.Socket = Socket;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Fetch = void 0;\nconst polling_js_1 = require(\"./polling.js\");\n/**\n * HTTP long-polling based on the built-in `fetch()` method.\n *\n * Usage: browser, Node.js (since v18), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/fetch\n * @see https://caniuse.com/fetch\n * @see https://nodejs.org/api/globals.html#fetch\n */\nclass Fetch extends polling_js_1.Polling {\n doPoll() {\n this._fetch()\n .then((res) => {\n if (!res.ok) {\n return this.onError(\"fetch read error\", res.status, res);\n }\n res.text().then((data) => this.onData(data));\n })\n .catch((err) => {\n this.onError(\"fetch read error\", err);\n });\n }\n doWrite(data, callback) {\n this._fetch(data)\n .then((res) => {\n if (!res.ok) {\n return this.onError(\"fetch write error\", res.status, res);\n }\n callback();\n })\n .catch((err) => {\n this.onError(\"fetch write error\", err);\n });\n }\n _fetch(data) {\n var _a;\n const isPost = data !== undefined;\n const headers = new Headers(this.opts.extraHeaders);\n if (isPost) {\n headers.set(\"content-type\", \"text/plain;charset=UTF-8\");\n }\n (_a = this.socket._cookieJar) === null || _a === void 0 ? void 0 : _a.appendCookies(headers);\n return fetch(this.uri(), {\n method: isPost ? \"POST\" : \"GET\",\n body: isPost ? data : null,\n headers,\n credentials: this.opts.withCredentials ? \"include\" : \"omit\",\n }).then((res) => {\n var _a;\n // @ts-ignore getSetCookie() was added in Node.js v19.7.0\n (_a = this.socket._cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(res.headers.getSetCookie());\n return res;\n });\n }\n}\nexports.Fetch = Fetch;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebTransport = exports.WebSocket = exports.NodeWebSocket = exports.XHR = exports.NodeXHR = exports.Fetch = exports.nextTick = exports.parse = exports.installTimerFunctions = exports.transports = exports.TransportError = exports.Transport = exports.protocol = exports.SocketWithUpgrade = exports.SocketWithoutUpgrade = exports.Socket = void 0;\nconst socket_js_1 = require(\"./socket.js\");\nObject.defineProperty(exports, \"Socket\", { enumerable: true, get: function () { return socket_js_1.Socket; } });\nvar socket_js_2 = require(\"./socket.js\");\nObject.defineProperty(exports, \"SocketWithoutUpgrade\", { enumerable: true, get: function () { return socket_js_2.SocketWithoutUpgrade; } });\nObject.defineProperty(exports, \"SocketWithUpgrade\", { enumerable: true, get: function () { return socket_js_2.SocketWithUpgrade; } });\nexports.protocol = socket_js_1.Socket.protocol;\nvar transport_js_1 = require(\"./transport.js\");\nObject.defineProperty(exports, \"Transport\", { enumerable: true, get: function () { return transport_js_1.Transport; } });\nObject.defineProperty(exports, \"TransportError\", { enumerable: true, get: function () { return transport_js_1.TransportError; } });\nvar index_js_1 = require(\"./transports/index.js\");\nObject.defineProperty(exports, \"transports\", { enumerable: true, get: function () { return index_js_1.transports; } });\nvar util_js_1 = require(\"./util.js\");\nObject.defineProperty(exports, \"installTimerFunctions\", { enumerable: true, get: function () { return util_js_1.installTimerFunctions; } });\nvar parseuri_js_1 = require(\"./contrib/parseuri.js\");\nObject.defineProperty(exports, \"parse\", { enumerable: true, get: function () { return parseuri_js_1.parse; } });\nvar globals_node_js_1 = require(\"./globals.node.js\");\nObject.defineProperty(exports, \"nextTick\", { enumerable: true, get: function () { return globals_node_js_1.nextTick; } });\nvar polling_fetch_js_1 = require(\"./transports/polling-fetch.js\");\nObject.defineProperty(exports, \"Fetch\", { enumerable: true, get: function () { return polling_fetch_js_1.Fetch; } });\nvar polling_xhr_node_js_1 = require(\"./transports/polling-xhr.node.js\");\nObject.defineProperty(exports, \"NodeXHR\", { enumerable: true, get: function () { return polling_xhr_node_js_1.XHR; } });\nvar polling_xhr_js_1 = require(\"./transports/polling-xhr.js\");\nObject.defineProperty(exports, \"XHR\", { enumerable: true, get: function () { return polling_xhr_js_1.XHR; } });\nvar websocket_node_js_1 = require(\"./transports/websocket.node.js\");\nObject.defineProperty(exports, \"NodeWebSocket\", { enumerable: true, get: function () { return websocket_node_js_1.WS; } });\nvar websocket_js_1 = require(\"./transports/websocket.js\");\nObject.defineProperty(exports, \"WebSocket\", { enumerable: true, get: function () { return websocket_js_1.WS; } });\nvar webtransport_js_1 = require(\"./transports/webtransport.js\");\nObject.defineProperty(exports, \"WebTransport\", { enumerable: true, get: function () { return webtransport_js_1.WT; } });\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.url = url;\nconst engine_io_client_1 = require(\"engine.io-client\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"socket.io-client:url\"); // debug()\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nfunction url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n debug(\"protocol-less url %s\", uri);\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n debug(\"parse %s\", uri);\n obj = (0, engine_io_client_1.parse)(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBinary = isBinary;\nexports.hasBinary = hasBinary;\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nfunction isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nfunction hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deconstructPacket = deconstructPacket;\nexports.reconstructPacket = reconstructPacket;\nconst is_binary_js_1 = require(\"./is-binary.js\");\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nfunction deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if ((0, is_binary_js_1.isBinary)(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nfunction reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Decoder = exports.Encoder = exports.PacketType = exports.protocol = void 0;\nexports.isPacketValid = isPacketValid;\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst binary_js_1 = require(\"./binary.js\");\nconst is_binary_js_1 = require(\"./is-binary.js\");\nconst debug_1 = require(\"debug\"); // debug()\nconst debug = (0, debug_1.default)(\"socket.io-parser\"); // debug()\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\", // used on the client side\n \"connect_error\", // used on the client side\n \"disconnect\", // used on both sides\n \"disconnecting\", // used on the server side\n \"newListener\", // used by the Node.js EventEmitter\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexports.protocol = 5;\nvar PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (exports.PacketType = PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nclass Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n debug(\"encoding packet %j\", obj);\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if ((0, is_binary_js_1.hasBinary)(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n debug(\"encoded %j as %s\", obj, str);\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = (0, binary_js_1.deconstructPacket)(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\nexports.Encoder = Encoder;\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nclass Decoder extends component_emitter_1.Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if ((0, is_binary_js_1.isBinary)(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n debug(\"decoded %s as %j\", str, p);\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\nexports.Decoder = Decoder;\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = (0, binary_js_1.reconstructPacket)(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\nfunction isNamespaceValid(nsp) {\n return typeof nsp === \"string\";\n}\n// see https://caniuse.com/mdn-javascript_builtins_number_isinteger\nconst isInteger = Number.isInteger ||\n function (value) {\n return (typeof value === \"number\" &&\n isFinite(value) &&\n Math.floor(value) === value);\n };\nfunction isAckIdValid(id) {\n return id === undefined || isInteger(id);\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\nfunction isDataValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return payload === undefined || isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n return Array.isArray(payload);\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n default:\n return false;\n }\n}\nfunction isPacketValid(packet) {\n return (isNamespaceValid(packet.nsp) &&\n isAckIdValid(packet.id) &&\n isDataValid(packet.type, packet.data));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.on = on;\nfunction on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Socket = void 0;\nconst socket_io_parser_1 = require(\"socket.io-parser\");\nconst on_js_1 = require(\"./on.js\");\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"socket.io-client:socket\"); // debug()\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nclass Socket extends component_emitter_1.Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n * be transmitted by the server.\n */\n this.recovered = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n /**\n * The queue of packets to be sent with retry in case of failure.\n *\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n * @private\n */\n this._queue = [];\n /**\n * A sequence to generate the ID of the {@link QueuedPacket}.\n * @private\n */\n this._queueSeq = 0;\n this.ids = 0;\n /**\n * A map containing acknowledgement handlers.\n *\n * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n *\n * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n * - `const value = await socket.emitWithAck(\"test\")`\n *\n * From those that don't:\n *\n * - `socket.emit(\"test\", (value) => { ... });`\n *\n * In the first case, the handlers will be called with an error when:\n *\n * - the timeout is reached\n * - the socket gets disconnected\n *\n * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n * an acknowledgement from the server.\n *\n * @private\n */\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n this._opts = Object.assign({}, opts);\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n (0, on_js_1.on)(io, \"open\", this.onopen.bind(this)),\n (0, on_js_1.on)(io, \"packet\", this.onpacket.bind(this)),\n (0, on_js_1.on)(io, \"error\", this.onerror.bind(this)),\n (0, on_js_1.on)(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n var _a, _b, _c;\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n this._addToQueue(args);\n return this;\n }\n const packet = {\n type: socket_io_parser_1.PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n debug(\"emitting packet with ack id %d\", id);\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = (_b = (_a = this.io.engine) === null || _a === void 0 ? void 0 : _a.transport) === null || _b === void 0 ? void 0 : _b.writable;\n const isConnected = this.connected && !((_c = this.io.engine) === null || _c === void 0 ? void 0 : _c._hasPingExpired());\n const discardPacket = this.flags.volatile && !isTransportWritable;\n if (discardPacket) {\n debug(\"discard packet as the transport is not currently writable\");\n }\n else if (isConnected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n var _a;\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n debug(\"removing packet with ack id %d from the buffer\", id);\n this.sendBuffer.splice(i, 1);\n }\n }\n debug(\"event with ack id %d has timed out after %d ms\", id, timeout);\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n const fn = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, args);\n };\n fn.withError = true;\n this.acks[id] = fn;\n }\n /**\n * Emits an event and waits for an acknowledgement\n *\n * @example\n * // without timeout\n * const response = await socket.emitWithAck(\"hello\", \"world\");\n *\n * // with a specific timeout\n * try {\n * const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n * } catch (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n *\n * @return a Promise that will be fulfilled when the server acknowledges the event\n */\n emitWithAck(ev, ...args) {\n return new Promise((resolve, reject) => {\n const fn = (arg1, arg2) => {\n return arg1 ? reject(arg1) : resolve(arg2);\n };\n fn.withError = true;\n args.push(fn);\n this.emit(ev, ...args);\n });\n }\n /**\n * Add the packet to the queue.\n * @param args\n * @private\n */\n _addToQueue(args) {\n let ack;\n if (typeof args[args.length - 1] === \"function\") {\n ack = args.pop();\n }\n const packet = {\n id: this._queueSeq++,\n tryCount: 0,\n pending: false,\n args,\n flags: Object.assign({ fromQueue: true }, this.flags),\n };\n args.push((err, ...responseArgs) => {\n if (packet !== this._queue[0]) {\n return debug(\"packet [%d] already acknowledged\", packet.id);\n }\n const hasError = err !== null;\n if (hasError) {\n if (packet.tryCount > this._opts.retries) {\n debug(\"packet [%d] is discarded after %d tries\", packet.id, packet.tryCount);\n this._queue.shift();\n if (ack) {\n ack(err);\n }\n }\n }\n else {\n debug(\"packet [%d] was successfully sent\", packet.id);\n this._queue.shift();\n if (ack) {\n ack(null, ...responseArgs);\n }\n }\n packet.pending = false;\n return this._drainQueue();\n });\n this._queue.push(packet);\n this._drainQueue();\n }\n /**\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\n * @param force - whether to resend a packet that has not been acknowledged yet\n *\n * @private\n */\n _drainQueue(force = false) {\n debug(\"draining queue\");\n if (!this.connected || this._queue.length === 0) {\n return;\n }\n const packet = this._queue[0];\n if (packet.pending && !force) {\n debug(\"packet [%d] has already been sent and is waiting for an ack\", packet.id);\n return;\n }\n packet.pending = true;\n packet.tryCount++;\n debug(\"sending packet [%d] (try n°%d)\", packet.id, packet.tryCount);\n this.flags = packet.flags;\n this.emit.apply(this, packet.args);\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n debug(\"transport is open - connecting\");\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this._sendConnectPacket(data);\n });\n }\n else {\n this._sendConnectPacket(this.auth);\n }\n }\n /**\n * Sends a CONNECT packet to initiate the Socket.IO session.\n *\n * @param data\n * @private\n */\n _sendConnectPacket(data) {\n this.packet({\n type: socket_io_parser_1.PacketType.CONNECT,\n data: this._pid\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n : data,\n });\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n debug(\"close (%s)\", reason);\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n this._clearAcks();\n }\n /**\n * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n * the server.\n *\n * @private\n */\n _clearAcks() {\n Object.keys(this.acks).forEach((id) => {\n const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n if (!isBuffered) {\n // note: handlers that do not accept an error as first argument are ignored here\n const ack = this.acks[id];\n delete this.acks[id];\n if (ack.withError) {\n ack.call(this, new Error(\"socket has been disconnected\"));\n }\n }\n });\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case socket_io_parser_1.PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n this.onconnect(packet.data.sid, packet.data.pid);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case socket_io_parser_1.PacketType.EVENT:\n case socket_io_parser_1.PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case socket_io_parser_1.PacketType.ACK:\n case socket_io_parser_1.PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case socket_io_parser_1.PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case socket_io_parser_1.PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n debug(\"emitting event %j\", args);\n if (null != packet.id) {\n debug(\"attaching ack callback to event\");\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n this._lastOffset = args[args.length - 1];\n }\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n debug(\"sending ack %j\", args);\n self.packet({\n type: socket_io_parser_1.PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowledgement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (typeof ack !== \"function\") {\n debug(\"bad ack %s\", packet.id);\n return;\n }\n delete this.acks[packet.id];\n debug(\"calling ack %s with %j\", packet.id, packet.data);\n // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n if (ack.withError) {\n packet.data.unshift(null);\n }\n // @ts-ignore\n ack.apply(this, packet.data);\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id, pid) {\n debug(\"socket connected with id %s\", id);\n this.id = id;\n this.recovered = pid && this._pid === pid;\n this._pid = pid; // defined only if connection state recovery is enabled\n this.connected = true;\n this.emitBuffered();\n this._drainQueue(true);\n this.emitReserved(\"connect\");\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n debug(\"server disconnect (%s)\", this.nsp);\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n debug(\"performing disconnect (%s)\", this.nsp);\n this.packet({ type: socket_io_parser_1.PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\nexports.Socket = Socket;\n","\"use strict\";\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Backoff = Backoff;\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Manager = void 0;\nconst engine_io_client_1 = require(\"engine.io-client\");\nconst socket_js_1 = require(\"./socket.js\");\nconst parser = __importStar(require(\"socket.io-parser\"));\nconst on_js_1 = require(\"./on.js\");\nconst backo2_js_1 = require(\"./contrib/backo2.js\");\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"socket.io-client:manager\"); // debug()\nclass Manager extends component_emitter_1.Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n (0, engine_io_client_1.installTimerFunctions)(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new backo2_js_1.Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n if (!v) {\n this.skipReconnect = true;\n }\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n debug(\"readyState %s\", this._readyState);\n if (~this._readyState.indexOf(\"open\"))\n return this;\n debug(\"opening %s\", this.uri);\n this.engine = new engine_io_client_1.Socket(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = (0, on_js_1.on)(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n const onError = (err) => {\n debug(\"error\");\n this.cleanup();\n this._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n this.maybeReconnectOnOpen();\n }\n };\n // emit `error`\n const errorSub = (0, on_js_1.on)(socket, \"error\", onError);\n if (false !== this._timeout) {\n const timeout = this._timeout;\n debug(\"connect attempt will timeout after %d\", timeout);\n // set timer\n const timer = this.setTimeoutFn(() => {\n debug(\"connect attempt timed out after %d\", timeout);\n openSubDestroy();\n onError(new Error(\"timeout\"));\n socket.close();\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n debug(\"open\");\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push((0, on_js_1.on)(socket, \"ping\", this.onping.bind(this)), (0, on_js_1.on)(socket, \"data\", this.ondata.bind(this)), (0, on_js_1.on)(socket, \"error\", this.onerror.bind(this)), (0, on_js_1.on)(socket, \"close\", this.onclose.bind(this)), \n // @ts-ignore\n (0, on_js_1.on)(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n (0, engine_io_client_1.nextTick)(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n debug(\"error\", err);\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new socket_js_1.Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n else if (this._autoConnect && !socket.active) {\n socket.connect();\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n debug(\"socket %s is still active, skipping close\", nsp);\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n debug(\"writing packet %j\", packet);\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n debug(\"cleanup\");\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n debug(\"disconnect\");\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called when:\n *\n * - the low-level engine is closed\n * - the parser encountered a badly formatted packet\n * - all sockets are disconnected\n *\n * @private\n */\n onclose(reason, description) {\n var _a;\n debug(\"closed due to %s\", reason);\n this.cleanup();\n (_a = this.engine) === null || _a === void 0 ? void 0 : _a.close();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n debug(\"reconnect failed\");\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n debug(\"will wait %dms before reconnect attempt\", delay);\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n debug(\"attempting reconnect\");\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n debug(\"reconnect attempt error\");\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n debug(\"reconnect success\");\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\nexports.Manager = Manager;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebTransport = exports.WebSocket = exports.NodeWebSocket = exports.XHR = exports.NodeXHR = exports.Fetch = exports.Socket = exports.Manager = exports.protocol = void 0;\nexports.io = lookup;\nexports.connect = lookup;\nexports.default = lookup;\nconst url_js_1 = require(\"./url.js\");\nconst manager_js_1 = require(\"./manager.js\");\nObject.defineProperty(exports, \"Manager\", { enumerable: true, get: function () { return manager_js_1.Manager; } });\nconst socket_js_1 = require(\"./socket.js\");\nObject.defineProperty(exports, \"Socket\", { enumerable: true, get: function () { return socket_js_1.Socket; } });\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"socket.io-client\"); // debug()\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = (0, url_js_1.url)(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n debug(\"ignoring socket cache for %s\", source);\n io = new manager_js_1.Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n debug(\"new io instance for %s\", source);\n cache[id] = new manager_js_1.Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager: manager_js_1.Manager,\n Socket: socket_js_1.Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nvar socket_io_parser_1 = require(\"socket.io-parser\");\nObject.defineProperty(exports, \"protocol\", { enumerable: true, get: function () { return socket_io_parser_1.protocol; } });\nvar engine_io_client_1 = require(\"engine.io-client\");\nObject.defineProperty(exports, \"Fetch\", { enumerable: true, get: function () { return engine_io_client_1.Fetch; } });\nObject.defineProperty(exports, \"NodeXHR\", { enumerable: true, get: function () { return engine_io_client_1.NodeXHR; } });\nObject.defineProperty(exports, \"XHR\", { enumerable: true, get: function () { return engine_io_client_1.XHR; } });\nObject.defineProperty(exports, \"NodeWebSocket\", { enumerable: true, get: function () { return engine_io_client_1.NodeWebSocket; } });\nObject.defineProperty(exports, \"WebSocket\", { enumerable: true, get: function () { return engine_io_client_1.WebSocket; } });\nObject.defineProperty(exports, \"WebTransport\", { enumerable: true, get: function () { return engine_io_client_1.WebTransport; } });\n\nmodule.exports = lookup;\n",null,null,"/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {assertInInjectionContext, DestroyRef, inject} from '@angular/core';\nimport {MonoTypeOperatorFunction, Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\n/**\n * Operator which completes the Observable when the calling context (component, directive, service,\n * etc) is destroyed.\n *\n * @param destroyRef optionally, the `DestroyRef` representing the current context. This can be\n * passed explicitly to use `takeUntilDestroyed` outside of an [injection\n * context](guide/di/dependency-injection-context). Otherwise, the current `DestroyRef` is injected.\n *\n * @developerPreview\n */\nexport function takeUntilDestroyed<T>(destroyRef?: DestroyRef): MonoTypeOperatorFunction<T> {\n if (!destroyRef) {\n assertInInjectionContext(takeUntilDestroyed);\n destroyRef = inject(DestroyRef);\n }\n\n const destroyed$ = new Observable<void>((observer) => {\n const unregisterFn = destroyRef!.onDestroy(observer.next.bind(observer));\n return unregisterFn;\n });\n\n return <T>(source: Observable<T>) => {\n return source.pipe(takeUntil(destroyed$));\n };\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n assertInInjectionContext,\n DestroyRef,\n inject,\n OutputOptions,\n OutputRef,\n OutputRefSubscription,\n ɵRuntimeError,\n ɵRuntimeErrorCode,\n} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {takeUntilDestroyed} from './take_until_destroyed';\n\n/**\n * Implementation of `OutputRef` that emits values from\n * an RxJS observable source.\n *\n * @internal\n */\nclass OutputFromObservableRef<T> implements OutputRef<T> {\n private destroyed = false;\n\n destroyRef = inject(DestroyRef);\n\n constructor(private source: Observable<T>) {\n this.destroyRef.onDestroy(() => {\n this.destroyed = true;\n });\n }\n\n subscribe(callbackFn: (value: T) => void): OutputRefSubscription {\n if (this.destroyed) {\n throw new ɵRuntimeError(\n ɵRuntimeErrorCode.OUTPUT_REF_DESTROYED,\n ngDevMode &&\n 'Unexpected subscription to destroyed `OutputRef`. ' +\n 'The owning directive/component is destroyed.',\n );\n }\n\n // Stop yielding more values when the directive/component is already destroyed.\n const subscription = this.source.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n next: (value) => callbackFn(value),\n });\n\n return {\n unsubscribe: () => subscription.unsubscribe(),\n };\n }\n}\n\n/**\n * Declares an Angular output that is using an RxJS observable as a source\n * for events dispatched to parent subscribers.\n *\n * The behavior for an observable as source is defined as followed:\n * 1. New values are forwarded to the Angular output (next notifications).\n * 2. Errors notifications are not handled by Angular. You need to handle these manually.\n * For example by using `catchError`.\n * 3. Completion notifications stop the output from emitting new values.\n *\n * @usageNotes\n * Initialize an output in your directive by declaring a\n * class field and initializing it with the `outputFromObservable()` function.\n *\n * ```ts\n * @Directive({..})\n * export class MyDir {\n * nameChange$ = <some-observable>;\n * nameChange = outputFromObservable(this.nameChange$);\n * }\n * ```\n *\n * @developerPreview\n */\nexport function outputFromObservable<T>(\n observable: Observable<T>,\n opts?: OutputOptions,\n): OutputRef<T> {\n ngDevMode && assertInInjectionContext(outputFromObservable);\n return new OutputFromObservableRef<T>(observable);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {OutputRef, ɵgetOutputDestroyRef} from '@angular/core';\nimport {Observable} from 'rxjs';\n\n/**\n * Converts an Angular output declared via `output()` or `outputFromObservable()`\n * to an observable.\n *\n * You can subscribe to the output via `Observable.subscribe` then.\n *\n * @developerPreview\n */\nexport function outputToObservable<T>(ref: OutputRef<T>): Observable<T> {\n const destroyRef = ɵgetOutputDestroyRef(ref);\n\n return new Observable<T>((observer) => {\n // Complete the observable upon directive/component destroy.\n // Note: May be `undefined` if an `EventEmitter` is declared outside\n // of an injection context.\n destroyRef?.onDestroy(() => observer.complete());\n\n const subscription = ref.subscribe((v) => observer.next(v));\n return () => subscription.unsubscribe();\n });\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n assertInInjectionContext,\n DestroyRef,\n effect,\n inject,\n Injector,\n Signal,\n untracked,\n} from '@angular/core';\nimport {Observable, ReplaySubject} from 'rxjs';\n\n/**\n * Options for `toObservable`.\n *\n * @developerPreview\n */\nexport interface ToObservableOptions {\n /**\n * The `Injector` to use when creating the underlying `effect` which watches the signal.\n *\n * If this isn't specified, the current [injection context](guide/di/dependency-injection-context)\n * will be used.\n */\n injector?: Injector;\n}\n\n/**\n * Exposes the value of an Angular `Signal` as an RxJS `Observable`.\n *\n * The signal's value will be propagated into the `Observable`'s subscribers using an `effect`.\n *\n * `toObservable` must be called in an injection context unless an injector is provided via options.\n *\n * @developerPreview\n */\nexport function toObservable<T>(source: Signal<T>, options?: ToObservableOptions): Observable<T> {\n !options?.injector && assertInInjectionContext(toObservable);\n const injector = options?.injector ?? inject(Injector);\n const subject = new ReplaySubject<T>(1);\n\n const watcher = effect(\n () => {\n let value: T;\n try {\n value = source();\n } catch (err) {\n untracked(() => subject.error(err));\n return;\n }\n untracked(() => subject.next(value));\n },\n {injector, manualCleanup: true},\n );\n\n injector.get(DestroyRef).onDestroy(() => {\n watcher.destroy();\n subject.complete();\n });\n\n return subject.asObservable();\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n assertInInjectionContext,\n assertNotInReactiveContext,\n computed,\n DestroyRef,\n inject,\n Injector,\n signal,\n Signal,\n WritableSignal,\n ɵRuntimeError,\n ɵRuntimeErrorCode,\n} from '@angular/core';\nimport {ValueEqualityFn} from '@angular/core/primitives/signals';\nimport {Observable, Subscribable} from 'rxjs';\n\n/**\n * Options for `toSignal`.\n *\n * @publicApi\n */\nexport interface ToSignalOptions<T> {\n /**\n * Initial value for the signal produced by `toSignal`.\n *\n * This will be the value of the signal until the observable emits its first value.\n */\n initialValue?: unknown;\n\n /**\n * Whether to require that the observable emits synchronously when `toSignal` subscribes.\n *\n * If this is `true`, `toSignal` will assert that the observable produces a value immediately upon\n * subscription. Setting this option removes the need to either deal with `undefined` in the\n * signal type or provide an `initialValue`, at the cost of a runtime error if this requirement is\n * not met.\n */\n requireSync?: boolean;\n\n /**\n * `Injector` which will provide the `DestroyRef` used to clean up the Observable subscription.\n *\n * If this is not provided, a `DestroyRef` will be retrieved from the current [injection\n * context](guide/di/dependency-injection-context), unless manual cleanup is requested.\n */\n injector?: Injector;\n\n /**\n * Whether the subscription should be automatically cleaned up (via `DestroyRef`) when\n * `toSignal`'s creation context is destroyed.\n *\n * If manual cleanup is enabled, then `DestroyRef` is not used, and the subscription will persist\n * until the `Observable` itself completes.\n */\n manualCleanup?: boolean;\n\n /**\n * Whether `toSignal` should throw errors from the Observable error channel back to RxJS, where\n * they'll be processed as uncaught exceptions.\n *\n * In practice, this means that the signal returned by `toSignal` will keep returning the last\n * good value forever, as Observables which error produce no further values. This option emulates\n * the behavior of the `async` pipe.\n */\n rejectErrors?: boolean;\n\n /**\n * A comparison function which defines equality for values emitted by the observable.\n *\n * Equality comparisons are executed against the initial value if one is provided.\n */\n equal?: ValueEqualityFn<T>;\n}\n\n// Base case: no options -> `undefined` in the result type.\nexport function toSignal<T>(source: Observable<T> | Subscribable<T>): Signal<T | undefined>;\n// Options with `undefined` initial value and no `requiredSync` -> `undefined`.\nexport function toSignal<T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T | undefined>> & {\n initialValue?: undefined;\n requireSync?: false;\n },\n): Signal<T | undefined>;\n// Options with `null` initial value -> `null`.\nexport function toSignal<T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T | null>> & {initialValue?: null; requireSync?: false},\n): Signal<T | null>;\n// Options with `undefined` initial value and `requiredSync` -> strict result type.\nexport function toSignal<T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T>> & {initialValue?: undefined; requireSync: true},\n): Signal<T>;\n// Options with a more specific initial value type.\nexport function toSignal<T, const U extends T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T | U>> & {initialValue: U; requireSync?: false},\n): Signal<T | U>;\n\n/**\n * Get the current value of an `Observable` as a reactive `Signal`.\n *\n * `toSignal` returns a `Signal` which provides synchronous reactive access to values produced\n * by the given `Observable`, by subscribing to that `Observable`. The returned `Signal` will always\n * have the most recent value emitted by the subscription, and will throw an error if the\n * `Observable` errors.\n *\n * With `requireSync` set to `true`, `toSignal` will assert that the `Observable` produces a value\n * immediately upon subscription. No `initialValue` is needed in this case, and the returned signal\n * does not include an `undefined` type.\n *\n * By default, the subscription will be automatically cleaned up when the current [injection\n * context](guide/di/dependency-injection-context) is destroyed. For example, when `toSignal` is\n * called during the construction of a component, the subscription will be cleaned up when the\n * component is destroyed. If an injection context is not available, an explicit `Injector` can be\n * passed instead.\n *\n * If the subscription should persist until the `Observable` itself completes, the `manualCleanup`\n * option can be specified instead, which disables the automatic subscription teardown. No injection\n * context is needed in this configuration as well.\n *\n * @developerPreview\n */\nexport function toSignal<T, U = undefined>(\n source: Observable<T> | Subscribable<T>,\n options?: ToSignalOptions<T | U> & {initialValue?: U},\n): Signal<T | U> {\n ngDevMode &&\n assertNotInReactiveContext(\n toSignal,\n 'Invoking `toSignal` causes new subscriptions every time. ' +\n 'Consider moving `toSignal` outside of the reactive context and read the signal value where needed.',\n );\n\n const requiresCleanup = !options?.manualCleanup;\n requiresCleanup && !options?.injector && assertInInjectionContext(toSignal);\n const cleanupRef = requiresCleanup\n ? (options?.injector?.get(DestroyRef) ?? inject(DestroyRef))\n : null;\n\n const equal = makeToSignalEqual(options?.equal);\n\n // Note: T is the Observable value type, and U is the initial value type. They don't have to be\n // the same - the returned signal gives values of type `T`.\n let state: WritableSignal<State<T | U>>;\n if (options?.requireSync) {\n // Initially the signal is in a `NoValue` state.\n state = signal({kind: StateKind.NoValue}, {equal});\n } else {\n // If an initial value was passed, use it. Otherwise, use `undefined` as the initial value.\n state = signal<State<T | U>>(\n {kind: StateKind.Value, value: options?.initialValue as U},\n {equal},\n );\n }\n\n // Note: This code cannot run inside a reactive context (see assertion above). If we'd support\n // this, we would subscribe to the observable outside of the current reactive context, avoiding\n // that side-effect signal reads/writes are attribute to the current consumer. The current\n // consumer only needs to be notified when the `state` signal changes through the observable\n // subscription. Additional context (related to async pipe):\n // https://github.com/angular/angular/pull/50522.\n const sub = source.subscribe({\n next: (value) => state.set({kind: StateKind.Value, value}),\n error: (error) => {\n if (options?.rejectErrors) {\n // Kick the error back to RxJS. It will be caught and rethrown in a macrotask, which causes\n // the error to end up as an uncaught exception.\n throw error;\n }\n state.set({kind: StateKind.Error, error});\n },\n // Completion of the Observable is meaningless to the signal. Signals don't have a concept of\n // \"complete\".\n });\n\n if (options?.requireSync && state().kind === StateKind.NoValue) {\n throw new ɵRuntimeError(\n ɵRuntimeErrorCode.REQUIRE_SYNC_WITHOUT_SYNC_EMIT,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n '`toSignal()` called with `requireSync` but `Observable` did not emit synchronously.',\n );\n }\n\n // Unsubscribe when the current context is destroyed, if requested.\n cleanupRef?.onDestroy(sub.unsubscribe.bind(sub));\n\n // The actual returned signal is a `computed` of the `State` signal, which maps the various states\n // to either values or errors.\n return computed(\n () => {\n const current = state();\n switch (current.kind) {\n case StateKind.Value:\n return current.value;\n case StateKind.Error:\n throw current.error;\n case StateKind.NoValue:\n // This shouldn't really happen because the error is thrown on creation.\n throw new ɵRuntimeError(\n ɵRuntimeErrorCode.REQUIRE_SYNC_WITHOUT_SYNC_EMIT,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n '`toSignal()` called with `requireSync` but `Observable` did not emit synchronously.',\n );\n }\n },\n {equal: options?.equal},\n );\n}\n\nfunction makeToSignalEqual<T>(\n userEquality: ValueEqualityFn<T> = Object.is,\n): ValueEqualityFn<State<T>> {\n return (a, b) =>\n a.kind === StateKind.Value && b.kind === StateKind.Value && userEquality(a.value, b.value);\n}\n\nconst enum StateKind {\n NoValue,\n Value,\n Error,\n}\n\ninterface NoValueState {\n kind: StateKind.NoValue;\n}\n\ninterface ValueState<T> {\n kind: StateKind.Value;\n value: T;\n}\n\ninterface ErrorState {\n kind: StateKind.Error;\n error: unknown;\n}\n\ntype State<T> = NoValueState | ValueState<T> | ErrorState;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n","/**\n * WebSocket (socket) kapcsolat állapota (user-szintű indikátor).\n */\nexport enum CCAP_SocketStatus_Type {\n connecting = 'connecting',\n connected = 'connected',\n error = 'error',\n}\n","import { effect, inject, Injectable, OnDestroy, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { DyFM_Log, minute, second } from '@futdevpro/fsm-dynamo';\nimport {\n DyFM_SocketClient_Params,\n DyFM_SocketClient_ServiceBase,\n DyFM_SocketEvent,\n DyFM_SocketEvent_Key,\n} from '@futdevpro/fsm-dynamo/socket';\n\nimport { CCAP_SocketStatus_Type } from '../../_enums/ccap-socket-status.enum';\nimport { Mon_SocketSubscriptionContent_Interface } from '../../_models/interfaces/monitoring-server-socket/ccap-socket-subscription-content.interface';\nimport { CCAP_ErrorDisplay_Interface } from '../../_models/interfaces/feedback-errors/ccap-error-display.interface';\nimport { Set_General_DataService } from '../../_modules/config/_modules/settings/_services/data-services/global-settings/set-general.data-service';\nimport { CCAP_GlobalError_ControlService } from './ccap-global-error.control-service';\nimport { CCAP_SOCKET_IO_RECONNECTION_DELAY_MS } from './socket.control-service.const';\nimport { CCAP_SocketEventEnvelope_Interface } from './socket.control-service.interface';\nimport { environment } from '../../../environments/environment';\n\n/**\n * Socket címe: csak environment.socketUrl, vagy same-origin fallback (/api nélkül).\n * Nem használjuk az api.baseUrl-t, mert az /api path-ot tartalmaz és rossz port lehet.\n */\nfunction getSocketAddress(): string {\n if (environment.socketUrl !== undefined && environment.socketUrl.trim() !== '') {\n return environment.socketUrl.trim();\n }\n if (typeof window !== 'undefined') {\n const fallback: string = new URL(window.location.href).origin;\n DyFM_Log.warn('CCAP_Socket | socketUrl not set, using same-origin fallback:', fallback);\n return fallback;\n }\n return '';\n}\n\n/** Type guard: objektum (nem Error), display/description/type kiolvasásához. */\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !(value instanceof Error);\n}\n\n/**\n * Jasmine / Karma test runner detektálása. A `jasmine` globális csak test-környezetben\n * létezik (Karma + Jasmine), production build-ben nincs. Test módban a socket nem indít\n * auto-connect-et, mert nincs szerver — különben a Karma dev-server (localhost:9876) ellen\n * másodpercenként próbálna reconnect-elni, és a `connect_error` log-spam lassítja a\n * tesztfutást (cycle 1 baseline: 459-535s / 600s budget).\n *\n * MIÉRT `jasmine` és nem `window.__karma__`?\n * A Karma a teszteket iframe-ben futtatja. Az iframe `window`-án nincs `__karma__` —\n * az a parent window-on él, és cross-origin ellenőrzés bonyolítaná a kódot. A `jasmine`\n * globális viszont az iframe-ben is elérhető, mert a Jasmine framework a spec bundle\n * részeként kerül be.\n */\nfunction isTestEnvironment(): boolean {\n if (typeof globalThis === 'undefined') {\n return false;\n }\n return (globalThis as { jasmine?: unknown }).jasmine !== undefined;\n}\n\n/** Szerverről érkező socket event nevek (egyezzen a server messaging.const értékeivel). */\nconst SOCKET_EVENT_ANSWER: string = 'answer';\nconst SOCKET_EVENT_NOTIFY_USER: string = 'notify-user';\nconst SOCKET_EVENT_AGENT_EVENTS: string = 'agent-events';\nconst SOCKET_EVENT_CONTEXT_UPDATED: string = 'context:updated';\nconst SOCKET_EVENT_MONITORING_EVENT: string = 'monitoring:event';\nconst SOCKET_EVENT_USER_NOTIFICATION: string = 'user-notification';\n\n/** CC Session stream: szerverről érkező real-time session eventek. */\nconst SOCKET_EVENT_CC_SESSION_STATUS: string = 'cc-session:status';\nconst SOCKET_EVENT_CC_SESSION_OUTPUT: string = 'cc-session:output';\nconst SOCKET_EVENT_CC_SESSION_EVENT: string = 'cc-session:event';\nconst SOCKET_EVENT_CC_SESSION_LIST_UPDATE: string = 'cc-session:list-update';\nconst SOCKET_EVENT_CC_SESSION_SESSION_UPDATE: string = 'cc-session:session-update';\n\n/** CA Session (Cursor ACP) stream — mirror + live output (szerver: ca-session-stream). */\nconst SOCKET_EVENT_CA_SESSION_STATUS: string = 'ca-session:status';\nconst SOCKET_EVENT_CA_SESSION_OUTPUT: string = 'ca-session:output';\nconst SOCKET_EVENT_CA_SESSION_EVENT: string = 'ca-session:event';\nconst SOCKET_EVENT_CA_SESSION_LIST_UPDATE: string = 'ca-session:list-update';\n\n/** Ext Session Message stream: szerver-oldali assembled message push (CC/CA/OC session). */\nconst SOCKET_EVENT_EXT_SESSION_MSG_MESSAGE: string = 'ext-session-msg:message';\nconst SOCKET_EVENT_EXT_SESSION_MSG_UPDATE: string = 'ext-session-msg:update';\n\n/** User interaction request: szerver → kliens (interaktív UI card megjelenítés). */\nconst SOCKET_EVENT_USER_INTERACTION_REQUEST: string = 'user-interaction:request';\n\n/** Instance data session status frissítés – Dark Office real-time (broadcast). */\nconst SOCKET_EVENT_INSTANCE_STATUS_UPDATED: string = 'instance-data:session-status-updated';\n\n/**\n * REQ-INST-STATE-001 Slice 6 (cycle 701) — peer WS connect/disconnect → real-time\n * presence frissítés. A kliens-oldali consumer (`ExS_InstancePresence_DataService`)\n * `refreshNow()`-t hív erre az eventre, így a UI 1s-en belül frissül,\n * nem 60s polling-ot kell várni.\n */\nconst SOCKET_EVENT_INSTANCE_PRESENCE_UPDATE: string = 'instance:presence-update';\n\n/** OCI instance data státusz – Dark Office real-time (broadcast). */\nconst SOCKET_EVENT_OCI_INSTANCE_STATUS_UPDATED: string = 'openclaw-instance-data:status-updated';\n\n/** CCI instance data státusz – Dark Office real-time (broadcast). */\nconst SOCKET_EVENT_CCI_INSTANCE_STATUS_UPDATED: string = 'cci-instance-data:status-updated';\n\n/** CAI instance data státusz – Dark Office real-time (broadcast). */\nconst SOCKET_EVENT_CAI_INSTANCE_STATUS_UPDATED: string = 'cai-instance-data:status-updated';\n\n/** Egységes terminál API: szerverről érkező eventek. */\nconst SOCKET_EVENT_TERMINAL_LIST_RESULT: string = 'terminal:list:result';\nconst SOCKET_EVENT_TERMINAL_START_RESULT: string = 'terminal:start:result';\nconst SOCKET_EVENT_TERMINAL_COMMAND_RESULT: string = 'terminal:command-result';\nconst SOCKET_EVENT_TERMINAL_COMMAND_OUTPUT: string = 'terminal:command-output';\n\n/** CC Rate Limit: instance-wide broadcast — bármelyik CC Session rate_limit_event-je. SSOT. */\nconst SOCKET_EVENT_CC_RATE_LIMIT_UPDATE: string = 'cc:rate-limit-update';\n\n/** Session queue: real-time queue frissítés (user-facing message queue). */\nconst SOCKET_EVENT_SESSION_QUEUE_UPDATED: string = 'session-queue:updated';\nconst SOCKET_EVENT_SESSION_QUEUE_LOCK_CHANGED: string = 'session-queue:lock-changed';\n\n/** User-notification type: szerver oldali globális hiba (uncaughtException/unhandledRejection). */\nconst USER_NOTIFICATION_TYPE_SYSTEM_ERROR: string = 'system-error';\n\n/** User-notification type: terminál POC hiba (exec-terminal manager). */\nconst USER_NOTIFICATION_TYPE_TERMINAL_ERROR: string = 'terminal-error';\n\n/** Server start ID event – szerver újraindulás detektálásához (auto-reload). */\nconst SOCKET_EVENT_SERVER_START_ID: string = 'server:start-id';\n\n/** Socket.io kliens connect_error event neve. */\nconst SOCKET_EVENT_CONNECT_ERROR: string = 'connect_error';\n\n/** Csatlakozási timeout (ms): ha ennyi időn belül nem connect/error, error állapotot mutatunk. */\nconst CONNECTION_TIMEOUT_MS: number = 8 * second;\n\n\n/**\n * Socket control service: egyetlen app-szintű WebSocket kapcsolat.\n * DyFM_SocketClient_ServiceBase alapú; státusz (connecting | connected | error), lastError tooltip-höz,\n * reconnect kattintásra vagy base automata retry.\n */\n@Injectable({ providedIn: 'root' })\nexport class CCAP_Socket_ControlService\n extends DyFM_SocketClient_ServiceBase<Mon_SocketSubscriptionContent_Interface>\n implements OnDestroy {\n\n /** Státusz (connecting | connected | error); indikátor és tooltip alapja. */\n readonly status_$ = signal<CCAP_SocketStatus_Type>(CCAP_SocketStatus_Type.connecting);\n\n /** Utolsó socket hiba (connect_error / error); tooltip / copy alapja. */\n readonly lastError_$ = signal<unknown | null>(null);\n\n /** Csatlakozási kísérletek száma (connect_error-kor nő, sikeres connect-nél nullázódik). */\n readonly connectAttemptCount_$ = signal<number>(0);\n\n /** Volt-e már sikeres connect (disconnect-nél csak ekkor mutatunk error-t, ne az induláskori disconnect-nél). */\n private hasEverConnected: boolean = false; // ccap-review-disable-line boolean-is-prefix\n\n /** Connection timeout handle (clear connect/error esetén, restart reconnect-nél). */\n private connectionTimeoutId: ReturnType<typeof setTimeout> | null = null;\n\n /** Szerver start ID – auto-reload ha a szerver újraindult (az ID megváltozott). */\n private knownServerStartId: number | null = null;\n\n /** Szerverről érkező eventek (envelope: event + payload). */\n private readonly eventSubject_S: Subject<CCAP_SocketEventEnvelope_Interface> =\n new Subject<CCAP_SocketEventEnvelope_Interface>();\n\n /** Event stream (answer, notify-user, agent-events, context:updated, monitoring:event, user-notification). */\n readonly event$: Observable<CCAP_SocketEventEnvelope_Interface> =\n this.eventSubject_S.asObservable();\n\n /** Csatlakozás állapot (base connected$ → signal). */\n readonly connected_$ = toSignal(this.connected$, { initialValue: false });\n\n /** Aktuális socket cím (dev-ben: interaktív terminálhoz a backendre kell csatlakozni). */\n get socketAddress(): string {\n const addr: string = getSocketAddress();\n return addr || (this.params?.address ?? '');\n }\n\n private readonly globalError_CS: CCAP_GlobalError_ControlService = inject(CCAP_GlobalError_ControlService);\n\n private readonly settingsGeneral_DS: Set_General_DataService = inject(\n Set_General_DataService,\n );\n\n constructor() {\n super();\n // Test-módban nem indítjuk a 8s connection timeout-ot: minden spec instance egy-egy\n // setTimeout-ot hagyott volna a test zone-ban, ami (a) felesleges timer-aktivitást\n // produkál teszt-run közben, (b) a cycle 2 fix óta már amúgy sem lennének reconnect\n // próbálkozások, amik a timeout-ot értelmessé tennék. Production / Capacitor: változatlan.\n if (!isTestEnvironment()) {\n this.startConnectionTimeout();\n }\n\n effect((): void => {\n if (this.connected && !this.subscribed) {\n this.subscribe();\n }\n });\n }\n\n /**\n * Connection timeout indítása: ha CONNECTION_TIMEOUT_MS-en belül nem jön connect/error,\n * error állapotot és lastError-t állítunk (pl. szerver nem elérhető, vagy setup elbukott).\n */\n private startConnectionTimeout(): void {\n this.clearConnectionTimeout();\n this.connectionTimeoutId = setTimeout((): void => {\n this.connectionTimeoutId = null;\n if (this.status_$() === CCAP_SocketStatus_Type.connecting) {\n const timeoutError: Error = new Error(\n 'Socket connection timeout – server unreachable or setup failed. Click to reconnect.',\n );\n this.status_$.set(CCAP_SocketStatus_Type.error);\n this.lastError_$.set(timeoutError);\n DyFM_Log.warn('CCAP_Socket | Connection timeout');\n }\n }, CONNECTION_TIMEOUT_MS);\n }\n\n /** Connection timeout törlése (connect / connect_error / error esetén). */\n private clearConnectionTimeout(): void {\n if (this.connectionTimeoutId !== null) {\n clearTimeout(this.connectionTimeoutId);\n this.connectionTimeoutId = null;\n }\n }\n\n override getParams(): DyFM_SocketClient_Params {\n const address: string = getSocketAddress();\n const isTestEnv: boolean = isTestEnvironment();\n const socketOptions: Record<string, unknown> = {\n path: '/socket',\n transports: ['polling', 'websocket'],\n reconnectionDelay: CCAP_SOCKET_IO_RECONNECTION_DELAY_MS,\n };\n // Test-módban sem a DyFM-level reconnect, sem a socket.io-level reconnect nem fut.\n // A base class `connectSocket()`-je explicit `socket.connect()`-et hív (nem lehet\n // autoConnect:false-szal megakadályozni), ezért itt a `reconnection: false` viszi le\n // a socket.io belső retry-ját — egyszeri connect_error után nincs retry-spam.\n // Production / Capacitor változatlan (reconnection socket.io default: true).\n if (isTestEnv) {\n socketOptions.reconnection = false;\n }\n return new DyFM_SocketClient_Params({\n name: 'CCAP Client',\n address: address,\n reconnect: !isTestEnv,\n reconnectDelay: minute,\n socketOptions: socketOptions,\n });\n }\n\n override getIncomingEvents(): DyFM_SocketEvent<unknown>[] {\n const self: CCAP_Socket_ControlService = this;\n\n // FONTOS: NEM capture-öljük a `this.eventSubject_S`-t lokális változóba!\n // A szülő osztály (`DyFM_SocketClient_ServiceBase`) `asyncConstructor()`-ból hívja\n // `getIncomingEvents()`-et, ami a `super()` során fut — a gyerek osztály field initializer-ei\n // (eventSubject_S = new Subject()) csak a super() visszatérése UTÁN futnak le.\n // Ha closure-ban capture-öljük, az undefined marad örökre.\n //\n // Defenzív hibakezelés: ha az eventSubject_S bármilyen okból nem elérhető (edge case,\n // destroy utáni late event), a hiba a globális error kezelőn keresztül jelenik meg\n // a felületen — soha nem maradhat néma konzol-error.\n const pushEnvelope = (eventKey: string, content: unknown): void => {\n try {\n const payload: Record<string, unknown> = isRecord(content) ? content : {};\n if (!self.eventSubject_S) {\n const errorMessage: string =\n `Socket event dropped: eventSubject not initialized`\n + ` | event: ${eventKey}`\n + ` | This means the socket event system is not functional — no live updates will arrive.`;\n DyFM_Log.error(`[CCAP_Socket] ${errorMessage}`);\n self.globalError_CS.showError(\n new Error(errorMessage),\n 'client-socket-event-subject',\n );\n return;\n }\n self.eventSubject_S.next({ event: eventKey, payload: payload });\n } catch (err: unknown) {\n // A framework `DyFM_SocketEvent.executeEventTasks` catch blokkja csak konzolra logol —\n // a felületen nem jelenik meg semmi. Minden pushEnvelope hibát a globális error kezelőn\n // keresztül a felületre teszünk, hogy a user lássa és jelezni tudja.\n const errMessage: string = err instanceof Error ? err.message : String(err);\n DyFM_Log.error(`[CCAP_Socket] pushEnvelope failed | event: ${eventKey} | ${errMessage}`);\n self.globalError_CS.showError(\n err instanceof Error\n ? err\n : new Error(`Socket event processing failed: ${eventKey} — ${errMessage}`),\n 'client-socket-push-envelope',\n );\n }\n };\n\n return [\n new DyFM_SocketEvent<unknown>({\n eventKey: DyFM_SocketEvent_Key.outgoingNewConnection,\n tasks: [\n async (): Promise<void> => {\n self.clearConnectionTimeout();\n self.hasEverConnected = true;\n self.status_$.set(CCAP_SocketStatus_Type.connected);\n self.lastError_$.set(null);\n self.connectAttemptCount_$.set(0);\n DyFM_Log.info('CCAP_Socket | Connected');\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: DyFM_SocketEvent_Key.disconnect,\n tasks: [\n async (): Promise<void> => {\n if (self.hasEverConnected) {\n self.status_$.set(CCAP_SocketStatus_Type.error);\n }\n DyFM_Log.info('CCAP_Socket | Disconnected');\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CONNECT_ERROR,\n tasks: [\n async (err: unknown): Promise<void> => {\n self.clearConnectionTimeout();\n self.connectAttemptCount_$.update((c: number): number => c + 1);\n const error: Error = err instanceof Error ? err : new Error(String(err));\n const description: unknown = isRecord(err) ? err.description : undefined;\n const type: unknown = isRecord(err) ? err.type : undefined;\n DyFM_Log.info(\n 'CCAP_Socket | connect_error',\n `attempt #${self.connectAttemptCount_$()}`,\n error?.message ?? String(err),\n description !== undefined ? String(description) : '',\n type !== undefined ? String(type) : '',\n );\n self.status_$.set(CCAP_SocketStatus_Type.error);\n const socketUrl: string = self.params?.address ?? '';\n const displayError: Record<string, unknown> =\n self.buildSocketErrorDisplay({\n err: error,\n socketUrl: socketUrl,\n eventType: 'connect_error',\n raw: err,\n });\n self.lastError_$.set(displayError);\n if (self.shouldReportSocketConnectionErrorsToErrorList()) {\n self.globalError_CS.reportErrorOnly({\n message: String(displayError.fullMessage ?? displayError.message ?? error.message),\n stack: typeof displayError.stack === 'string' ? displayError.stack : undefined,\n source: 'client-socket',\n });\n }\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: DyFM_SocketEvent_Key.error,\n tasks: [\n async (content: unknown): Promise<void> => {\n self.clearConnectionTimeout();\n self.status_$.set(CCAP_SocketStatus_Type.error);\n const error: Error = content instanceof Error ? content : new Error(String(content));\n const socketUrl: string = self.params?.address ?? '';\n const displayError: Record<string, unknown> =\n self.buildSocketErrorDisplay({\n err: error,\n socketUrl: socketUrl,\n eventType: 'error',\n raw: content,\n });\n self.lastError_$.set(displayError);\n if (self.shouldReportSocketConnectionErrorsToErrorList()) {\n self.globalError_CS.reportErrorOnly({\n message: String(displayError.fullMessage ?? displayError.message ?? error.message),\n stack: typeof displayError.stack === 'string' ? displayError.stack : undefined,\n source: 'client-socket',\n });\n }\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_ANSWER,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_ANSWER, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_NOTIFY_USER,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_NOTIFY_USER, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_AGENT_EVENTS,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_AGENT_EVENTS, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CONTEXT_UPDATED,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CONTEXT_UPDATED, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_MONITORING_EVENT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_MONITORING_EVENT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_USER_NOTIFICATION,\n tasks: [\n async (content: unknown): Promise<void> => {\n const payload: Record<string, unknown> = isRecord(content) ? content : {};\n pushEnvelope(SOCKET_EVENT_USER_NOTIFICATION, content);\n if (payload.type === USER_NOTIFICATION_TYPE_SYSTEM_ERROR) {\n const display: CCAP_ErrorDisplay_Interface =\n self.buildServerErrorDisplay(payload);\n self.globalError_CS.showError(display, 'client-socket');\n } else if (payload.type === USER_NOTIFICATION_TYPE_TERMINAL_ERROR) {\n const display: CCAP_ErrorDisplay_Interface =\n self.buildTerminalErrorDisplay(payload);\n self.globalError_CS.showError(display, 'client-socket');\n }\n },\n ],\n }),\n // ── Server restart detection (auto-reload) ─────────────────\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_SERVER_START_ID,\n tasks: [\n async (content: unknown): Promise<void> => {\n const payload: Record<string, unknown> = isRecord(content) ? content : {};\n const serverStartId: number | undefined =\n typeof payload.serverStartId === 'number' ? payload.serverStartId : undefined;\n if (serverStartId === undefined) return;\n\n if (self.knownServerStartId === null) {\n // Első csatlakozás – eltároljuk a szerver start ID-t\n self.knownServerStartId = serverStartId;\n DyFM_Log.info('CCAP_Socket | Server start ID stored:', serverStartId);\n } else if (self.knownServerStartId !== serverStartId) {\n // Szerver újraindult – auto-reload\n DyFM_Log.warn('CCAP_Socket | Server restarted (start ID changed), reloading page');\n window.location.reload();\n }\n },\n ],\n }),\n // ── CC Session stream events ──────────────────────────────\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CC_SESSION_STATUS,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CC_SESSION_STATUS, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CC_SESSION_OUTPUT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CC_SESSION_OUTPUT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CC_SESSION_EVENT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CC_SESSION_EVENT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CC_SESSION_LIST_UPDATE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CC_SESSION_LIST_UPDATE, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CC_SESSION_SESSION_UPDATE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CC_SESSION_SESSION_UPDATE, content);\n },\n ],\n }),\n // ── CA Session (ACP) stream ───────────────────────────────\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CA_SESSION_STATUS,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CA_SESSION_STATUS, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CA_SESSION_OUTPUT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CA_SESSION_OUTPUT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CA_SESSION_EVENT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CA_SESSION_EVENT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CA_SESSION_LIST_UPDATE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CA_SESSION_LIST_UPDATE, content);\n },\n ],\n }),\n // ── Ext Session Message stream (assembled messages) ────────\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_EXT_SESSION_MSG_MESSAGE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_EXT_SESSION_MSG_MESSAGE, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_EXT_SESSION_MSG_UPDATE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_EXT_SESSION_MSG_UPDATE, content);\n },\n ],\n }),\n // ── User Interaction request ───────────────────────────────\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_USER_INTERACTION_REQUEST,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_USER_INTERACTION_REQUEST, content);\n },\n ],\n }),\n // ── Instance Data real-time status updates ───────────────\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_INSTANCE_STATUS_UPDATED,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_INSTANCE_STATUS_UPDATED, content);\n },\n ],\n }),\n // REQ-INST-STATE-001 Slice 6 (cycle 701) — peer WS connect/disconnect →\n // real-time presence broadcast. ExS_InstancePresence_DataService a\n // konsumer, refreshNow()-t hív erre.\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_INSTANCE_PRESENCE_UPDATE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_INSTANCE_PRESENCE_UPDATE, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_OCI_INSTANCE_STATUS_UPDATED,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_OCI_INSTANCE_STATUS_UPDATED, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CCI_INSTANCE_STATUS_UPDATED,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CCI_INSTANCE_STATUS_UPDATED, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CAI_INSTANCE_STATUS_UPDATED,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CAI_INSTANCE_STATUS_UPDATED, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_TERMINAL_LIST_RESULT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_TERMINAL_LIST_RESULT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_TERMINAL_START_RESULT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_TERMINAL_START_RESULT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_TERMINAL_COMMAND_RESULT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_TERMINAL_COMMAND_RESULT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_TERMINAL_COMMAND_OUTPUT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_TERMINAL_COMMAND_OUTPUT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_SESSION_QUEUE_UPDATED,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_SESSION_QUEUE_UPDATED, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_SESSION_QUEUE_LOCK_CHANGED,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_SESSION_QUEUE_LOCK_CHANGED, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CC_RATE_LIMIT_UPDATE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CC_RATE_LIMIT_UPDATE, content);\n },\n ],\n }),\n ];\n }\n\n override async getSubscriptionContent(): Promise<Mon_SocketSubscriptionContent_Interface> {\n const clientId: string | undefined = this.socket?.id;\n return Promise.resolve({ clientId: clientId });\n }\n\n /**\n * General beállítás alapján: transport connect_error / error → hibalista API (reportErrorOnly).\n */\n private shouldReportSocketConnectionErrorsToErrorList(): boolean {\n return this.settingsGeneral_DS.section_$().form.reportSocketConnectionErrorsToErrorList === true;\n }\n\n /**\n * Socket connect_error / error → display objektum (eredeti hiba megmarad, REQ-SYS-005-CAUSE).\n * A message a hibalistába kerül; a tooltip/copy-ban megjelennek: eventType, socketUrl, attemptedAt,\n * description, type, connectAttempt, socketUrlSource, configuredTransports, pageOrigin,\n * és a raw description-ből kinyert HTTP/XHR részletek (status, statusText, responseUrl, stb.).\n */\n private buildSocketErrorDisplay(params: {\n err: Error;\n socketUrl: string;\n eventType: 'connect_error' | 'error';\n raw?: unknown;\n }): Record<string, unknown> {\n const baseMessage: string =\n params.err.message?.trim() ? params.err.message : 'WebSocket connection failed';\n const message: string =\n params.socketUrl.trim()\n ? `WebSocket: ${baseMessage} — ${params.socketUrl}`\n : `WebSocket: ${baseMessage}`;\n\n // Alap mezők: message, stack, socketUrl, transport, eventType, attemptedAt\n const result: Record<string, unknown> = {\n message: message,\n fullMessage: message,\n name: params.err.name,\n stack: params.err.stack ?? null,\n socketUrl: params.socketUrl,\n transport: 'websocket',\n eventType: params.eventType,\n attemptedAt: new Date().toISOString(),\n connectAttempt: this.connectAttemptCount_$(),\n };\n\n // Socket URL forrása: environment.socketUrl explicit-e vagy same-origin fallback\n const isExplicitSocketUrl: boolean =\n environment.socketUrl !== undefined && environment.socketUrl.trim() !== '';\n result.socketUrlSource = isExplicitSocketUrl ? 'environment.socketUrl' : 'same-origin fallback';\n\n // Konfigurált transportok (polling, websocket)\n const transports: string[] = this.params?.socketOptions?.['transports'] as string[] ?? [];\n if (transports.length > 0) {\n result.configuredTransports = transports.join(', ');\n }\n\n // Aktuális page origin (honnét próbál csatlakozni a kliens)\n if (typeof window !== 'undefined') {\n result.pageOrigin = window.location.origin;\n }\n\n // Raw error mezők kinyerése (Socket.IO connect_error payload)\n if (isRecord(params.raw)) {\n const rawObj: Record<string, unknown> = params.raw;\n\n // description: string vagy beágyazott Error/objektum (XMLHttpRequest hiba, stb.)\n const rawDescription: unknown = rawObj.description;\n if (typeof rawDescription === 'string' && rawDescription.trim()) {\n result.description = rawDescription.trim();\n } else if (rawDescription instanceof Error) {\n result.description = rawDescription.message;\n if (rawDescription.stack) {\n result.descriptionStack = rawDescription.stack;\n }\n } else if (rawDescription instanceof Event) {\n // DOM Event (pl. WebSocket error event) — a browser tipikusan csak minimum info-t ad át\n // (SSL handshake fail, CORS, network unreachable). Ez a leggyakoribb Capacitor natív + self-signed cert eset.\n result.description = this.extractDomEventInfo(rawDescription);\n } else if (isRecord(rawDescription)) {\n // XHR hiba objektum: message, status, statusText, responseURL, stb.\n const descObj: Record<string, unknown> = rawDescription;\n const descParts: string[] = [];\n if (typeof descObj.message === 'string' && descObj.message.trim()) {\n descParts.push(descObj.message.trim());\n }\n if (typeof descObj.status === 'number') {\n result.httpStatus = descObj.status;\n descParts.push(`HTTP ${descObj.status}`);\n }\n if (typeof descObj.statusText === 'string' && descObj.statusText.trim()) {\n result.httpStatusText = descObj.statusText.trim();\n descParts.push(descObj.statusText.trim());\n }\n if (typeof descObj.responseURL === 'string' && descObj.responseURL.trim()) {\n result.responseUrl = descObj.responseURL.trim();\n }\n if (descParts.length > 0) {\n result.description = descParts.join(' – ');\n }\n }\n\n // type: Socket.IO error type (pl. \"TransportError\")\n if (typeof rawObj.type === 'string' && rawObj.type.trim()) {\n result.type = rawObj.type.trim();\n }\n\n // context: néhány Socket.IO verzió a raw-ban ad egy \"context\" mezőt\n if (isRecord(rawObj.context)) {\n result.errorContext = rawObj.context;\n }\n }\n\n // Ha a raw maga DOM Event (WebSocket error — pl. wss:// SSL handshake fail — event.type=='error'),\n // a JSON.stringify `isTrusted: true`-n kívül semmit nem ad. Direkt event-info extrakció.\n if (params.raw instanceof Event && !result.description) {\n result.description = this.extractDomEventInfo(params.raw);\n }\n\n // fullMessage bővítése a kinyert részletekkel (description, httpStatus, connectAttempt)\n const enrichParts: string[] = [message];\n if (typeof result.description === 'string') {\n enrichParts.push(`Cause: ${result.description}`);\n }\n if (typeof result.httpStatus === 'number') {\n const statusText: string =\n typeof result.httpStatusText === 'string' ? ` ${result.httpStatusText}` : '';\n enrichParts.push(`HTTP: ${result.httpStatus}${statusText}`);\n }\n if (typeof result.responseUrl === 'string') {\n enrichParts.push(`Response URL: ${result.responseUrl}`);\n }\n enrichParts.push(`Attempt: #${result.connectAttempt}`);\n enrichParts.push(`Source: ${result.socketUrlSource}`);\n result.fullMessage = enrichParts.join(' | ');\n\n return result;\n }\n\n /**\n * DOM Event kibontása diagnosztikai stringgé.\n * A natív WebSocket `onerror` / XHR `error` event-ek biztonsági okból csak\n * `type`, `isTrusted`, `timeStamp` mezőket mutatnak — `target.readyState` / `target.url` a célból\n * jön, hogy legalább valami értelmes üzenet legyen.\n * Capacitor natív + HTTPS self-signed cert tipikusan ide vezet.\n */\n private extractDomEventInfo(event: Event): string {\n const parts: string[] = [];\n parts.push(`type=${event.type}`);\n const target: unknown = event.target;\n if (isRecord(target)) {\n if (typeof target.readyState === 'number') {\n parts.push(`readyState=${target.readyState}`);\n }\n if (typeof target.url === 'string' && target.url) {\n parts.push(`url=${target.url}`);\n }\n if (typeof target.responseURL === 'string' && target.responseURL) {\n parts.push(`responseURL=${target.responseURL}`);\n }\n if (typeof target.status === 'number') {\n parts.push(`status=${target.status}`);\n }\n }\n parts.push('(DOM Event - tipikusan SSL cert reject, CORS, vagy network unreachable)');\n return parts.join(', ');\n }\n\n /**\n * Szerverről érkező terminal-error user-notification payload → CCAP_ErrorDisplay_Interface.\n * Megjelenik a hiba popup-ban és a hibalistában (POC terminál hibák).\n */\n private buildTerminalErrorDisplay(payload: Record<string, unknown>): CCAP_ErrorDisplay_Interface {\n const message: string =\n typeof payload.message === 'string' ? payload.message : String(payload.message ?? '');\n const code: string =\n typeof payload.code === 'string' ? payload.code : String(payload.code ?? '');\n const parts: string[] = [message];\n if (code) {\n parts.push(`Kód: ${code}`);\n }\n if (typeof payload.terminalId === 'string' && payload.terminalId.trim()) {\n parts.push(`Terminál ID: ${(payload.terminalId as string).trim()}`);\n }\n if (typeof payload.path === 'string' && payload.path.trim()) {\n parts.push(`Path: ${(payload.path as string).trim()}`);\n }\n const detailsText: string = parts.join('\\n');\n const timestamp: number =\n typeof payload.timestamp === 'number' ? payload.timestamp : Date.now();\n\n return {\n source: 'server',\n message: message,\n stack: null,\n detailsText: detailsText,\n timestamp: timestamp,\n };\n }\n\n /**\n * Szerverről érkező system-error user-notification payload → CCAP_ErrorDisplay_Interface.\n */\n private buildServerErrorDisplay(payload: Record<string, unknown>): CCAP_ErrorDisplay_Interface {\n const message: string =\n typeof payload.message === 'string' ? payload.message : String(payload.message ?? '');\n const stackRaw: unknown = payload.stack;\n const stack: string | null =\n typeof stackRaw === 'string' ? stackRaw : (stackRaw != null ? String(stackRaw) : null);\n const detailsText: string =\n typeof payload.detailsText === 'string'\n ? payload.detailsText\n : JSON.stringify(payload, null, 2);\n const timestamp: number =\n typeof payload.timestamp === 'number' ? payload.timestamp : Date.now();\n\n return {\n source: 'server',\n message: message,\n stack: stack,\n detailsText: detailsText,\n timestamp: timestamp,\n };\n }\n\n /**\n * Újracsatlakozás (main frame indikátor kattintás).\n * A base reconnect() csak a lokális dynamo-fsm build-ben elérhető; itt disconnect + connect.\n */\n override reconnect(): void {\n if (this.socket) {\n this.clearConnectionTimeout();\n this.status_$.set(CCAP_SocketStatus_Type.connecting);\n this.lastError_$.set(null);\n this.connectAttemptCount_$.set(0);\n this.startConnectionTimeout();\n const address: string = this.params?.address ?? getSocketAddress();\n DyFM_Log.info('CCAP_Socket | Reconnecting to', address);\n this.socket.disconnect();\n this.socket.connect();\n }\n }\n\n /**\n * Event küldése a szervernek (pl. session:attach, new-user-msg).\n * Csak ha connected, különben nem küld.\n */\n emit(event: string, payload: Record<string, unknown>): void {\n if (this.socket?.connected) {\n this.socket.emit(event, payload);\n }\n }\n\n /**\n * Aktív diagnosztika: probe-olja a szerver API-t és a socket.io endpointot,\n * összegyűjti a kapcsolódási állapotot és a szerver konfigurációt.\n * A mainframe „Diagnózis\" gombból hívódik; az eredmény a tooltip-ben jelenik meg.\n */\n async diagnoseConnection(): Promise<Record<string, unknown>> {\n const socketUrl: string = this.params?.address ?? getSocketAddress();\n const results: Record<string, unknown> = {\n timestamp: new Date().toISOString(),\n socketUrl: socketUrl,\n socketUrlSource: (environment.socketUrl !== undefined && environment.socketUrl.trim() !== '')\n ? 'environment.socketUrl'\n : 'same-origin fallback',\n pageOrigin: typeof window !== 'undefined' ? window.location.origin : '',\n socketConnected: this.socket?.connected ?? false,\n socketId: this.socket?.id ?? null,\n connectAttemptCount: this.connectAttemptCount_$(),\n currentStatus: this.status_$(),\n };\n\n // 1. Szerver API elérhetőség: GET /api/server/status\n const serverStatusResult: Record<string, unknown> = await CCAP_Socket_ControlService.probeEndpoint(\n '/api/server/status',\n 'serverStatusApi',\n );\n results.serverStatusApi = serverStatusResult;\n\n // Ha a szerver status válasz tartalmaz httpPort/socketPort-ot, kiemeljük\n if (serverStatusResult.ok === true && serverStatusResult.body !== undefined) {\n const body: unknown = serverStatusResult.body;\n if (body !== null && typeof body === 'object') {\n const bodyRec: Record<string, unknown> = body as Record<string, unknown>;\n results.serverReportedHttpPort = bodyRec.httpPort ?? null;\n results.serverReportedSocketPort = bodyRec.socketPort ?? null;\n }\n }\n\n // 2. Socket.IO polling endpoint (HTTPS proxy-n keresztül; DyNTS path: /socket)\n const socketPath: string = (this.params?.socketOptions?.['path'] as string) ?? '/socket';\n const pollUrl: string = `${socketUrl}${socketPath}/?EIO=4&transport=polling&t=${Date.now()}`;\n const socketIoResult: Record<string, unknown> = await CCAP_Socket_ControlService.probeEndpoint(\n pollUrl,\n 'socketIoPolling',\n );\n results.socketIoPolling = socketIoResult;\n\n // 3. Direkt socket port polling (ha a szerver reportolta a portot)\n const reportedSocketPort: unknown = results.serverReportedSocketPort;\n if (typeof reportedSocketPort === 'number' && reportedSocketPort > 0) {\n const directPollUrl: string =\n `http://localhost:${reportedSocketPort}${socketPath}/?EIO=4&transport=polling&t=${Date.now()}`;\n const directResult: Record<string, unknown> = await CCAP_Socket_ControlService.probeEndpoint(\n directPollUrl,\n 'socketIoDirectPort',\n );\n results.socketIoDirectPort = directResult;\n }\n\n return results;\n }\n\n /**\n * HTTP endpoint probe: fetch + válasz részletek összegyűjtése (status, body preview, timing).\n */\n private static async probeEndpoint(\n url: string,\n label: string,\n ): Promise<Record<string, unknown>> {\n const result: Record<string, unknown> = { url: url, label: label };\n const startMs: number = performance.now();\n try {\n const response: Response = await fetch(url, { method: 'GET', cache: 'no-store' });\n const elapsed: number = Math.round(performance.now() - startMs);\n result.ok = response.ok;\n result.httpStatus = response.status;\n result.httpStatusText = response.statusText;\n result.elapsedMs = elapsed;\n try {\n const text: string = await response.text();\n // JSON parse próba; ha sikerül, a body objektumként kerül be\n try {\n result.body = JSON.parse(text);\n } catch {\n result.bodyPreview = text.substring(0, 300);\n }\n } catch {\n result.bodyReadError = 'Failed to read response body';\n }\n } catch (fetchErr: unknown) {\n const elapsed: number = Math.round(performance.now() - startMs);\n result.elapsedMs = elapsed;\n result.ok = false;\n result.fetchError = fetchErr instanceof Error ? fetchErr.message : String(fetchErr);\n if (fetchErr instanceof TypeError) {\n result.fetchErrorType = 'TypeError (network/CORS/SSL)';\n }\n }\n return result;\n }\n\n ngOnDestroy(): void {\n this.clearConnectionTimeout();\n if (this.socket) {\n this.socket.disconnect();\n }\n }\n}\n"],"mappings":"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","names":["DyFM_SocketEvent_Key","exports","times_const_1","require","log_util_1","DyFM_SocketClient_Params","name","service","address","port","reconnectDelay","second","reconnect","socketOptions","constructor","set","Object","assign","autoConnect","reconnection","reconnectionDelay","DyFM_Log","warn","exports","global_settings_const_1","require","array_util_1","log_util_1","stack_util_1","error_control_model_1","sck_event_key_enum_1","DyFM_SocketEvent","name","eventKey","serviceName","preProcesses","tasks","logEvent","logEventContent","stackLocation","constructor","set","DyFM_getConstructionStackLocation","undefined","DyFM_SocketEvent_Key","subscribe","incomingNewConnection","outgoingNewConnection","disconnect","includes","DyFM_global_settings","log_settings","socket_allEvents","socket_mainEvents","socket_eventContent","error","DyFM_Log","getPreLog","content","__async","log","executeEventTasks","issuer","DyFM_Array","asyncForEach","preProcess","task","DyFM_Error","logShort","exports","require_commons","__commonJSMin","exports","Object","defineProperty","value","ERROR_PACKET","PACKET_TYPES_REVERSE","PACKET_TYPES","create","keys","forEach","key","type","data","require_encodePacket_browser","__commonJSMin","exports","Object","defineProperty","value","encodePacket","encodePacketToBinary","commons_js_1","require","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","isView","obj","buffer","type","data","supportsBinary","callback","encodeBlobAsBase64","PACKET_TYPES","fileReader","FileReader","onload","content","result","split","readAsDataURL","toArray","Uint8Array","byteOffset","byteLength","TEXT_ENCODER","packet","arrayBuffer","then","encoded","TextEncoder","encode","require_base64_arraybuffer","__commonJSMin","exports","Object","defineProperty","value","decode","encode","chars","lookup","Uint8Array","i","length","charCodeAt","arraybuffer","bytes","len","base64","substring","bufferLength","p","encoded1","encoded2","encoded3","encoded4","ArrayBuffer","require_decodePacket_browser","__commonJSMin","exports","Object","defineProperty","value","decodePacket","commons_js_1","require","base64_arraybuffer_js_1","withNativeArrayBuffer","ArrayBuffer","encodedPacket","binaryType","type","data","mapBinary","charAt","decodeBase64Packet","substring","PACKET_TYPES_REVERSE","length","ERROR_PACKET","decoded","decode","base64","Blob","buffer","require_cjs","__commonJSMin","exports","Object","defineProperty","value","decodePayload","decodePacket","encodePayload","encodePacket","protocol","createPacketEncoderStream","createPacketDecoderStream","encodePacket_js_1","require","enumerable","get","decodePacket_js_1","commons_js_1","SEPARATOR","String","packets","callback","length","encodedPackets","Array","count","forEach","packet","i","encodedPacket","join","encodedPayload","binaryType","split","decodedPacket","push","type","TransformStream","transform","controller","encodePacketToBinary","payloadLength","header","Uint8Array","DataView","buffer","setUint8","view","setUint16","setBigUint64","BigInt","data","enqueue","TEXT_DECODER","totalLength","chunks","reduce","acc","chunk","concatChunks","size","shift","j","slice","maxPayload","TextDecoder","state","expectedLength","isBinary","headerArray","byteOffset","getUint16","n","getUint32","Math","pow","ERROR_PACKET","decode","esm_exports","__export","Emitter","obj","mixin","key","prototype","init_esm","__esmMin","on","addEventListener","event","fn","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","length","callbacks","cb","i","splice","emit","args","Array","slice","len","emitReserved","listeners","hasListeners","require_globals","__commonJSMin","exports","Object","defineProperty","value","defaultBinaryType","globalThisShim","nextTick","createCookieJar","Promise","resolve","cb","then","setTimeoutFn","self","window","Function","require_util","__commonJSMin","exports","Object","defineProperty","value","pick","installTimerFunctions","byteLength","randomString","globals_node_js_1","require","obj","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThisShim","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","opts","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","BASE64_OVERHEAD","utf8Length","Math","ceil","size","str","c","length","i","l","charCodeAt","Date","now","toString","substring","random","require_parseqs","__commonJSMin","exports","Object","defineProperty","value","encode","decode","obj","str","i","hasOwnProperty","length","encodeURIComponent","qs","qry","pairs","split","l","pair","decodeURIComponent","require_ms","__commonJSMin","exports","module","s","m","h","d","w","y","val","options","type","length","parse","isFinite","long","fmtLong","fmtShort","Error","JSON","stringify","str","String","match","exec","n","parseFloat","toLowerCase","ms","msAbs","Math","abs","round","plural","name","isPlural","require_common","__commonJSMin","exports","module","setup","env","createDebug","debug","default","coerce","disable","enable","enabled","humanize","require","destroy","Object","keys","forEach","key","names","skips","formatters","selectColor","namespace","hash","i","length","charCodeAt","colors","Math","abs","prevTime","enableOverride","namespacesCache","enabledCache","args","self","curr","Number","Date","ms","diff","prev","unshift","index","replace","match","format","formatter","val","call","splice","formatArgs","log","apply","useColors","color","extend","defineProperty","enumerable","configurable","get","namespaces","set","v","init","delimiter","newDebug","save","split","trim","filter","Boolean","ns","push","slice","matchesTemplate","search","template","searchIndex","templateIndex","starIndex","matchIndex","map","join","name","skip","Error","stack","message","console","warn","load","require_browser","__commonJSMin","exports","module","formatArgs","save","load","useColors","storage","localstorage","destroy","warned","console","warn","colors","window","process","type","__nwjs","navigator","userAgent","toLowerCase","match","m","document","documentElement","style","WebkitAppearance","firebug","exception","table","parseInt","args","namespace","humanize","diff","c","color","splice","index","lastC","replace","log","debug","namespaces","setItem","removeItem","r","getItem","env","DEBUG","localStorage","require","formatters","j","v","JSON","stringify","error","message","require_transport","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","Transport","TransportError","engine_io_parser_1","require","component_emitter_1","util_js_1","parseqs_js_1","debug_1","debug","default","Error","constructor","reason","description","context","type","Emitter","opts","writable","installTimerFunctions","query","socket","supportsBinary","forceBase64","onError","emitReserved","open","readyState","doOpen","close","doClose","onClose","send","packets","write","onOpen","onData","data","packet","decodePacket","binaryType","onPacket","details","pause","onPause","createUri","schema","_hostname","_port","path","_query","hostname","indexOf","port","secure","Number","encodedQuery","encode","length","require_polling","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","Polling","transport_js_1","require","util_js_1","engine_io_parser_1","debug_1","debug","default","Transport","constructor","arguments","_polling","name","doOpen","_poll","pause","onPause","readyState","writable","total","once","doPoll","emitReserved","onData","data","callback","packet","type","onOpen","onClose","description","onPacket","decodePayload","socket","binaryType","forEach","doClose","close","write","packets","encodePayload","doWrite","uri","schema","opts","secure","query","timestampRequests","timestampParam","randomString","supportsBinary","sid","b64","createUri","require_has_cors","__commonJSMin","exports","Object","defineProperty","value","hasCORS","XMLHttpRequest","require_polling_xhr","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","XHR","Request","BaseXHR","polling_js_1","require","component_emitter_1","util_js_1","globals_node_js_1","has_cors_js_1","debug_1","debug","default","empty","Polling","constructor","opts","location","isSSL","protocol","port","xd","hostname","doWrite","data","fn","req","request","method","on","xhrStatus","context","onError","doPoll","onData","bind","pollXhr","Emitter","createRequest","uri","installTimerFunctions","_opts","_method","_uri","_data","undefined","_create","_a","pick","xdomain","xhr","_xhr","open","extraHeaders","setDisableHeaderCheck","i","hasOwnProperty","setRequestHeader","cookieJar","addCookies","withCredentials","requestTimeout","timeout","onreadystatechange","readyState","parseCookies","getResponseHeader","status","_onLoad","setTimeoutFn","_onError","send","e","document","_index","requestsCount","requests","err","emitReserved","_cleanup","fromError","abort","responseText","attachEvent","unloadHandler","addEventListener","terminationEvent","globalThisShim","hasXHR2","newRequest","responseType","forceBase64","supportsBinary","assign","XMLHttpRequest","hasCORS","concat","join","require_websocket","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","WS","BaseWS","transport_js_1","require","util_js_1","engine_io_parser_1","globals_node_js_1","debug_1","debug","default","isReactNative","navigator","product","toLowerCase","Transport","name","doOpen","uri","protocols","opts","pick","extraHeaders","headers","ws","createSocket","err","emitReserved","binaryType","socket","addEventListeners","onopen","autoUnref","_socket","unref","onOpen","onclose","closeEvent","onClose","description","context","onmessage","ev","onData","data","onerror","e","onError","write","packets","writable","i","length","packet","lastPacket","encodePacket","supportsBinary","doWrite","nextTick","setTimeoutFn","doClose","close","schema","secure","query","timestampRequests","timestampParam","randomString","b64","createUri","WebSocketCtor","globalThisShim","WebSocket","MozWebSocket","_packet","send","require_webtransport","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","WT","transport_js_1","require","globals_node_js_1","engine_io_parser_1","debug_1","debug","default","Transport","name","doOpen","_transport","WebTransport","createUri","opts","transportOptions","err","emitReserved","closed","then","onClose","catch","onError","ready","createBidirectionalStream","stream","decoderStream","createPacketDecoderStream","Number","MAX_SAFE_INTEGER","socket","binaryType","reader","readable","pipeThrough","getReader","encoderStream","createPacketEncoderStream","pipeTo","writable","_writer","getWriter","read","done","onPacket","packet","type","query","sid","data","write","onOpen","packets","i","length","lastPacket","nextTick","setTimeoutFn","doClose","_a","close","require_transports","__commonJSMin","exports","Object","defineProperty","value","transports","polling_xhr_node_js_1","require","websocket_node_js_1","webtransport_js_1","websocket","WS","webtransport","WT","polling","XHR","require_parseuri","__commonJSMin","exports","Object","defineProperty","value","parse","re","parts","str","length","src","b","indexOf","e","substring","replace","m","exec","uri","i","source","host","authority","ipv6uri","pathNames","queryKey","obj","path","regx","names","split","slice","splice","query","data","$0","$1","$2","require_socket","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","Socket","SocketWithUpgrade","SocketWithoutUpgrade","index_js_1","require","util_js_1","parseqs_js_1","parseuri_js_1","component_emitter_1","engine_io_parser_1","globals_node_js_1","debug_1","debug","default","withEventListeners","addEventListener","removeEventListener","OFFLINE_EVENT_LISTENERS","length","forEach","listener","Emitter","constructor","uri","opts","binaryType","defaultBinaryType","writeBuffer","_prevBufferLen","_pingInterval","_pingTimeout","_maxPayload","_pingTimeoutTime","Infinity","parsedUri","parse","hostname","host","secure","protocol","port","query","installTimerFunctions","location","transports","_transportsByName","t","transportName","prototype","name","push","assign","path","agent","withCredentials","upgrade","timestampParam","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","replace","decode","_beforeunloadEventListener","transport","removeAllListeners","close","_offlineEventListener","_onClose","description","_cookieJar","createCookieJar","_open","createTransport","EIO","id","sid","socket","setTimeoutFn","emitReserved","priorWebsocketSuccess","indexOf","readyState","open","setTransport","on","_onDrain","bind","_onPacket","_onError","reason","onOpen","flush","packet","type","data","onHandshake","JSON","_sendPacket","_resetPingTimeout","err","Error","code","pingInterval","pingTimeout","maxPayload","clearTimeoutFn","_pingTimeoutTimer","delay","Date","now","autoUnref","unref","splice","writable","upgrading","packets","_getWritablePackets","send","payloadSize","i","byteLength","slice","_hasPingExpired","hasExpired","nextTick","write","msg","options","fn","undefined","compress","once","cleanupAndClose","off","waitForUpgrade","tryAllTransports","shift","arguments","_upgrades","_probe","failed","onTransportOpen","pause","cleanup","freezeTransport","onerror","error","onTransportClose","onclose","onupgrade","to","removeListener","_filterUpgrades","upgrades","filteredUpgrades","o","map","filter","require_polling_fetch","__commonJSMin","exports","Object","defineProperty","value","Fetch","polling_js_1","require","Polling","doPoll","_fetch","then","res","ok","onError","status","text","data","onData","catch","err","doWrite","callback","_a","isPost","undefined","headers","Headers","opts","extraHeaders","set","socket","_cookieJar","appendCookies","fetch","uri","method","body","credentials","withCredentials","parseCookies","getSetCookie","require_cjs","__commonJSMin","exports","Object","defineProperty","value","WebTransport","WebSocket","NodeWebSocket","XHR","NodeXHR","Fetch","nextTick","parse","installTimerFunctions","transports","TransportError","Transport","protocol","SocketWithUpgrade","SocketWithoutUpgrade","Socket","socket_js_1","require","enumerable","get","socket_js_2","transport_js_1","index_js_1","util_js_1","parseuri_js_1","globals_node_js_1","polling_fetch_js_1","polling_xhr_node_js_1","polling_xhr_js_1","websocket_node_js_1","WS","websocket_js_1","webtransport_js_1","WT","require_url","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","url","engine_io_client_1","require","debug_1","debug","default","uri","path","loc","obj","location","protocol","host","charAt","test","parse","port","indexOf","id","href","require_is_binary","__commonJSMin","exports","Object","defineProperty","value","isBinary","hasBinary","withNativeArrayBuffer","ArrayBuffer","isView","obj","buffer","toString","prototype","withNativeBlob","Blob","call","withNativeFile","File","toJSON","Array","isArray","i","l","length","arguments","key","hasOwnProperty","require_binary","__commonJSMin","exports","Object","defineProperty","value","deconstructPacket","reconstructPacket","is_binary_js_1","require","packet","buffers","packetData","data","pack","_deconstructPacket","attachments","length","isBinary","placeholder","_placeholder","num","push","Array","isArray","newData","i","Date","key","prototype","hasOwnProperty","call","_reconstructPacket","Error","require_cjs","__commonJSMin","exports","Object","defineProperty","value","Decoder","Encoder","PacketType","protocol","isPacketValid","component_emitter_1","require","binary_js_1","is_binary_js_1","debug_1","debug","default","RESERVED_EVENTS","constructor","replacer","encode","obj","type","EVENT","ACK","hasBinary","encodeAsBinary","BINARY_EVENT","BINARY_ACK","nsp","data","id","encodeAsString","str","attachments","JSON","stringify","deconstruction","deconstructPacket","pack","packet","buffers","unshift","Emitter","reviver","add","reconstructor","Error","decodeString","isBinaryEvent","BinaryReconstructor","emitReserved","isBinary","base64","takeBinaryData","i","p","Number","charAt","undefined","start","length","buf","substring","next","c","payload","tryParse","substr","isPayloadValid","parse","CONNECT","isObject","DISCONNECT","CONNECT_ERROR","Array","isArray","indexOf","destroy","finishedReconstruction","reconPack","binData","push","reconstructPacket","isNamespaceValid","isInteger","isFinite","Math","floor","isAckIdValid","prototype","toString","call","isDataValid","require_on","__commonJSMin","exports","Object","defineProperty","value","on","obj","ev","fn","off","require_socket","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","Socket","socket_io_parser_1","require","on_js_1","component_emitter_1","debug_1","debug","default","RESERVED_EVENTS","freeze","connect","connect_error","disconnect","disconnecting","newListener","removeListener","Emitter","constructor","io","nsp","opts","connected","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","ids","acks","flags","auth","_opts","assign","_autoConnect","open","disconnected","subEvents","subs","on","onopen","bind","onpacket","onerror","onclose","active","_readyState","send","args","unshift","emit","apply","ev","_a","_b","_c","hasOwnProperty","Error","toString","retries","fromQueue","volatile","_addToQueue","packet","type","PacketType","EVENT","data","options","compress","length","id","ack","pop","_registerAckCallback","isTransportWritable","engine","transport","writable","isConnected","_hasPingExpired","notifyOutgoingListeners","push","timeout","ackTimeout","undefined","timer","setTimeoutFn","i","splice","call","fn","clearTimeoutFn","withError","emitWithAck","Promise","resolve","reject","arg1","arg2","tryCount","pending","err","responseArgs","shift","_drainQueue","force","_packet","_sendConnectPacket","CONNECT","_pid","pid","offset","_lastOffset","emitReserved","reason","description","_clearAcks","keys","forEach","some","String","sid","onconnect","BINARY_EVENT","onevent","ACK","BINARY_ACK","onack","DISCONNECT","ondisconnect","CONNECT_ERROR","destroy","message","emitEvent","_anyListeners","listeners","slice","listener","self","sent","emitBuffered","subDestroy","close","onAny","prependAny","offAny","listenersAny","onAnyOutgoing","_anyOutgoingListeners","prependAnyOutgoing","offAnyOutgoing","listenersAnyOutgoing","require_backo2","__commonJSMin","exports","Object","defineProperty","value","Backoff","opts","ms","min","max","factor","jitter","attempts","prototype","duration","Math","pow","rand","random","deviation","floor","reset","setMin","setMax","setJitter","require_manager","__commonJSMin","exports","__createBinding","Object","create","o","m","k","k2","undefined","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","get","defineProperty","__setModuleDefault","v","value","__importStar","mod","result","prototype","hasOwnProperty","call","__importDefault","Manager","engine_io_client_1","require","socket_js_1","parser","on_js_1","backo2_js_1","component_emitter_1","debug_1","debug","default","Emitter","constructor","uri","opts","_a","nsps","subs","path","installTimerFunctions","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","Backoff","min","max","jitter","timeout","_readyState","_parser","encoder","Encoder","decoder","Decoder","_autoConnect","autoConnect","open","arguments","length","_reconnection","skipReconnect","_reconnectionAttempts","_reconnectionDelay","setMin","_randomizationFactor","setJitter","_reconnectionDelayMax","setMax","_timeout","maybeReconnectOnOpen","_reconnecting","attempts","reconnect","fn","indexOf","engine","Socket","socket","self","openSubDestroy","on","onopen","onError","err","cleanup","emitReserved","errorSub","timer","setTimeoutFn","Error","close","autoUnref","unref","push","clearTimeoutFn","connect","onping","bind","ondata","onerror","onclose","ondecoded","data","add","e","packet","nextTick","nsp","active","_destroy","keys","_close","_packet","encodedPackets","encode","i","write","options","forEach","subDestroy","destroy","disconnect","reason","description","reset","delay","duration","onreconnect","attempt","require_cjs","__commonJSMin","exports","module","__importDefault","mod","__esModule","Object","defineProperty","value","WebTransport","WebSocket","NodeWebSocket","XHR","NodeXHR","Fetch","Socket","Manager","protocol","io","lookup","connect","default","url_js_1","require","manager_js_1","enumerable","get","socket_js_1","debug_1","debug","cache","uri","opts","undefined","parsed","url","path","source","id","sameNamespace","newConnection","forceNew","multiplex","query","queryKey","socket","assign","socket_io_parser_1","engine_io_client_1","SocketIOClient","tslib_1","__importStar","require","rxjs_1","global_settings_const_1","array_util_1","log_util_1","async_util_1","error_control_model_1","sck_event_key_enum_1","sck_socket_event_control_model_1","DyFM_SocketClient_ServiceBase","_params","params","name","socket","incomingEvents","_connected_BS","BehaviorSubject","connected","value","connected$","asObservable","_subscribed_BS","subscribed","subscribed$","debugLog","DyFM_global_settings","log_settings","setup","logFn","functions","defaultEvents","DyFM_SocketEvent","eventKey","DyFM_SocketEvent_Key","outgoingNewConnection","tasks","__async","next","DyFM_Log","success","disconnect","warn","reconnect","DyFM_Async","delay","reconnectDelay","connectSocket","subscriptionSuccessful","unsubscribeSuccessful","error","content","DyFM_Error","logSimple","constructor","asyncConstructor","catch","subscriptionInProgress","subscribe","subscriptionContent","getSubscriptionContent","emitEvent","unsubscribe","eventType","log","emit","port","getParams","getIncomingEvents","socketAddress","address","io","__spreadValues","socketOptions","setupDefaultEvents","setupSocketEvents","errorCode","console","forEach","defaultEvent","serviceName","eventDeclared","find","event","unshift","push","DyFM_Array","asyncForEach","on","executeEventTasks","service","info","connect","tryReconnectIfNeeded","tryingToReconnect","exports","tslib_1","__exportStar","require","exports","toObservable","source","options","injector","assertInInjectionContext","inject","Injector","subject","ReplaySubject","watcher","effect","value","err","untracked","error","next","manualCleanup","get","DestroyRef","onDestroy","destroy","complete","asObservable","toSignal","requiresCleanup","cleanupRef","equal","makeToSignalEqual","state","requireSync","signal","kind","initialValue","sub","subscribe","set","rejectErrors","ɵRuntimeError","ngDevMode","unsubscribe","bind","computed","current","userEquality","Object","is","a","b","CCAP_SocketStatus_Type","import_fsm_dynamo","import_socket","getSocketAddress","environment","socketUrl","undefined","trim","window","fallback","URL","location","href","origin","DyFM_Log","warn","isRecord","value","Error","isTestEnvironment","globalThis","jasmine","SOCKET_EVENT_ANSWER","SOCKET_EVENT_NOTIFY_USER","SOCKET_EVENT_AGENT_EVENTS","SOCKET_EVENT_CONTEXT_UPDATED","SOCKET_EVENT_MONITORING_EVENT","SOCKET_EVENT_USER_NOTIFICATION","SOCKET_EVENT_CC_SESSION_STATUS","SOCKET_EVENT_CC_SESSION_OUTPUT","SOCKET_EVENT_CC_SESSION_EVENT","SOCKET_EVENT_CC_SESSION_LIST_UPDATE","SOCKET_EVENT_CC_SESSION_SESSION_UPDATE","SOCKET_EVENT_CA_SESSION_STATUS","SOCKET_EVENT_CA_SESSION_OUTPUT","SOCKET_EVENT_CA_SESSION_EVENT","SOCKET_EVENT_CA_SESSION_LIST_UPDATE","SOCKET_EVENT_EXT_SESSION_MSG_MESSAGE","SOCKET_EVENT_EXT_SESSION_MSG_UPDATE","SOCKET_EVENT_USER_INTERACTION_REQUEST","SOCKET_EVENT_INSTANCE_STATUS_UPDATED","SOCKET_EVENT_INSTANCE_PRESENCE_UPDATE","SOCKET_EVENT_OCI_INSTANCE_STATUS_UPDATED","SOCKET_EVENT_CCI_INSTANCE_STATUS_UPDATED","SOCKET_EVENT_CAI_INSTANCE_STATUS_UPDATED","SOCKET_EVENT_TERMINAL_LIST_RESULT","SOCKET_EVENT_TERMINAL_START_RESULT","SOCKET_EVENT_TERMINAL_COMMAND_RESULT","SOCKET_EVENT_TERMINAL_COMMAND_OUTPUT","SOCKET_EVENT_CC_RATE_LIMIT_UPDATE","SOCKET_EVENT_SESSION_QUEUE_UPDATED","SOCKET_EVENT_SESSION_QUEUE_LOCK_CHANGED","USER_NOTIFICATION_TYPE_SYSTEM_ERROR","USER_NOTIFICATION_TYPE_TERMINAL_ERROR","SOCKET_EVENT_SERVER_START_ID","SOCKET_EVENT_CONNECT_ERROR","CONNECTION_TIMEOUT_MS","second","CCAP_Socket_ControlService","DyFM_SocketClient_ServiceBase","status_$","signal","CCAP_SocketStatus_Type","connecting","lastError_$","connectAttemptCount_$","hasEverConnected","connectionTimeoutId","knownServerStartId","eventSubject_S","Subject","event$","asObservable","connected_$","toSignal","connected$","initialValue","socketAddress","params","address","globalError_CS","inject","CCAP_GlobalError_ControlService","settingsGeneral_DS","Set_General_DataService","constructor","startConnectionTimeout","effect","connected","subscribed","subscribe","clearConnectionTimeout","setTimeout","timeoutError","set","error","clearTimeout","getParams","isTestEnv","socketOptions","path","transports","reconnectionDelay","CCAP_SOCKET_IO_RECONNECTION_DELAY_MS","reconnection","DyFM_SocketClient_Params","name","reconnect","reconnectDelay","minute","getIncomingEvents","self","pushEnvelope","eventKey","content","payload","errorMessage","showError","next","event","err","errMessage","message","String","DyFM_SocketEvent","DyFM_SocketEvent_Key","outgoingNewConnection","tasks","__async","info","disconnect","update","c","description","type","displayError","buildSocketErrorDisplay","eventType","raw","shouldReportSocketConnectionErrorsToErrorList","reportErrorOnly","fullMessage","stack","source","display","buildServerErrorDisplay","buildTerminalErrorDisplay","serverStartId","reload","getSubscriptionContent","clientId","socket","id","Promise","resolve","section_$","form","reportSocketConnectionErrorsToErrorList","baseMessage","result","transport","attemptedAt","Date","toISOString","connectAttempt","isExplicitSocketUrl","socketUrlSource","length","configuredTransports","join","pageOrigin","rawObj","rawDescription","descriptionStack","Event","extractDomEventInfo","descObj","descParts","push","status","httpStatus","statusText","httpStatusText","responseURL","responseUrl","context","errorContext","enrichParts","parts","target","readyState","url","code","terminalId","detailsText","timestamp","now","stackRaw","JSON","stringify","connect","emit","diagnoseConnection","results","socketConnected","socketId","connectAttemptCount","currentStatus","serverStatusResult","probeEndpoint","serverStatusApi","ok","body","bodyRec","serverReportedHttpPort","httpPort","serverReportedSocketPort","socketPort","socketPath","pollUrl","socketIoResult","socketIoPolling","reportedSocketPort","directPollUrl","directResult","socketIoDirectPort","label","startMs","performance","response","fetch","method","cache","elapsed","Math","round","elapsedMs","text","parse","bodyPreview","substring","bodyReadError","fetchErr","fetchError","TypeError","fetchErrorType","ngOnDestroy","factory","ɵfac","providedIn"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42]}
|
|
1
|
+
{"version":3,"sources":["node_modules/.pnpm/@futdevpro+fsm-dynamo@1.15.8_rxjs@7.8.1/node_modules/@futdevpro/fsm-dynamo/src/_modules/socket/_enums/sck-event-key.enum.ts","node_modules/.pnpm/@futdevpro+fsm-dynamo@1.15.8_rxjs@7.8.1/node_modules/@futdevpro/fsm-dynamo/src/_modules/socket/_models/sck-client-params.control-model.ts","node_modules/.pnpm/@futdevpro+fsm-dynamo@1.15.8_rxjs@7.8.1/node_modules/@futdevpro/fsm-dynamo/src/_modules/socket/_models/sck-socket-event.control-model.ts","node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/commons.js","node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/encodePacket.browser.js","node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/contrib/base64-arraybuffer.js","node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/decodePacket.browser.js","node_modules/.pnpm/engine.io-parser@5.2.3/node_modules/engine.io-parser/build/cjs/index.js","node_modules/.pnpm/@socket.io+component-emitter@3.1.2/node_modules/@socket.io/component-emitter/lib/esm/index.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/globals.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/util.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/contrib/parseqs.js","node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/common.js","node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/browser.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/transport.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/transports/polling.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/contrib/has-cors.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/transports/polling-xhr.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/transports/websocket.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/transports/webtransport.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/transports/index.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/contrib/parseuri.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/socket.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/transports/polling-fetch.js","node_modules/.pnpm/engine.io-client@6.6.4/node_modules/engine.io-client/build/cjs/index.js","node_modules/.pnpm/socket.io-client@4.8.3/node_modules/socket.io-client/build/cjs/url.js","node_modules/.pnpm/socket.io-parser@4.2.5/node_modules/socket.io-parser/build/cjs/is-binary.js","node_modules/.pnpm/socket.io-parser@4.2.5/node_modules/socket.io-parser/build/cjs/binary.js","node_modules/.pnpm/socket.io-parser@4.2.5/node_modules/socket.io-parser/build/cjs/index.js","node_modules/.pnpm/socket.io-client@4.8.3/node_modules/socket.io-client/build/cjs/on.js","node_modules/.pnpm/socket.io-client@4.8.3/node_modules/socket.io-client/build/cjs/socket.js","node_modules/.pnpm/socket.io-client@4.8.3/node_modules/socket.io-client/build/cjs/contrib/backo2.js","node_modules/.pnpm/socket.io-client@4.8.3/node_modules/socket.io-client/build/cjs/manager.js","node_modules/.pnpm/socket.io-client@4.8.3/node_modules/socket.io-client/build/cjs/index.js","node_modules/.pnpm/@futdevpro+fsm-dynamo@1.15.8_rxjs@7.8.1/node_modules/@futdevpro/fsm-dynamo/src/_modules/socket/_services/sck-client.service-base.ts","node_modules/.pnpm/@futdevpro+fsm-dynamo@1.15.8_rxjs@7.8.1/node_modules/@futdevpro/fsm-dynamo/src/_modules/socket/index.ts","node_modules/packages/core/rxjs-interop/src/take_until_destroyed.ts","node_modules/packages/core/rxjs-interop/src/output_from_observable.ts","node_modules/packages/core/rxjs-interop/src/output_to_observable.ts","node_modules/packages/core/rxjs-interop/src/to_observable.ts","node_modules/packages/core/rxjs-interop/src/to_signal.ts","node_modules/packages/core/rxjs-interop/rxjs-interop.ts","src/app/_services/control-services/ccap-socket.control-service.ts","src/app/_enums/ccap-socket-status.enum.ts"],"sourcesContent":[null,null,null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ERROR_PACKET = exports.PACKET_TYPES_REVERSE = exports.PACKET_TYPES = void 0;\nconst PACKET_TYPES = Object.create(null); // no Map = no polyfill\nexports.PACKET_TYPES = PACKET_TYPES;\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nexports.PACKET_TYPES_REVERSE = PACKET_TYPES_REVERSE;\nObject.keys(PACKET_TYPES).forEach((key) => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexports.ERROR_PACKET = ERROR_PACKET;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encodePacket = void 0;\nexports.encodePacketToBinary = encodePacketToBinary;\nconst commons_js_1 = require(\"./commons.js\");\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(commons_js_1.PACKET_TYPES[type] + (data || \"\"));\n};\nexports.encodePacket = encodePacket;\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + (content || \"\"));\n };\n return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\nlet TEXT_ENCODER;\nfunction encodePacketToBinary(packet, callback) {\n if (withNativeBlob && packet.data instanceof Blob) {\n return packet.data.arrayBuffer().then(toArray).then(callback);\n }\n else if (withNativeArrayBuffer &&\n (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n return callback(toArray(packet.data));\n }\n encodePacket(packet, false, (encoded) => {\n if (!TEXT_ENCODER) {\n TEXT_ENCODER = new TextEncoder();\n }\n callback(TEXT_ENCODER.encode(encoded));\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decode = exports.encode = void 0;\n// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nconst encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexports.encode = encode;\nconst decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\nexports.decode = decode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodePacket = void 0;\nconst commons_js_1 = require(\"./commons.js\");\nconst base64_arraybuffer_js_1 = require(\"./contrib/base64-arraybuffer.js\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType),\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType),\n };\n }\n const packetType = commons_js_1.PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return commons_js_1.ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: commons_js_1.PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1),\n }\n : {\n type: commons_js_1.PACKET_TYPES_REVERSE[type],\n };\n};\nexports.decodePacket = decodePacket;\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = (0, base64_arraybuffer_js_1.decode)(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n if (data instanceof Blob) {\n // from WebSocket + binaryType \"blob\"\n return data;\n }\n else {\n // from HTTP long-polling or WebTransport\n return new Blob([data]);\n }\n case \"arraybuffer\":\n default:\n if (data instanceof ArrayBuffer) {\n // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n return data;\n }\n else {\n // from WebTransport (Uint8Array)\n return data.buffer;\n }\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decodePayload = exports.decodePacket = exports.encodePayload = exports.encodePacket = exports.protocol = void 0;\nexports.createPacketEncoderStream = createPacketEncoderStream;\nexports.createPacketDecoderStream = createPacketDecoderStream;\nconst encodePacket_js_1 = require(\"./encodePacket.js\");\nObject.defineProperty(exports, \"encodePacket\", { enumerable: true, get: function () { return encodePacket_js_1.encodePacket; } });\nconst decodePacket_js_1 = require(\"./decodePacket.js\");\nObject.defineProperty(exports, \"decodePacket\", { enumerable: true, get: function () { return decodePacket_js_1.decodePacket; } });\nconst commons_js_1 = require(\"./commons.js\");\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n (0, encodePacket_js_1.encodePacket)(packet, false, (encodedPacket) => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nexports.encodePayload = encodePayload;\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = (0, decodePacket_js_1.decodePacket)(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexports.decodePayload = decodePayload;\nfunction createPacketEncoderStream() {\n return new TransformStream({\n transform(packet, controller) {\n (0, encodePacket_js_1.encodePacketToBinary)(packet, (encodedPacket) => {\n const payloadLength = encodedPacket.length;\n let header;\n // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n if (payloadLength < 126) {\n header = new Uint8Array(1);\n new DataView(header.buffer).setUint8(0, payloadLength);\n }\n else if (payloadLength < 65536) {\n header = new Uint8Array(3);\n const view = new DataView(header.buffer);\n view.setUint8(0, 126);\n view.setUint16(1, payloadLength);\n }\n else {\n header = new Uint8Array(9);\n const view = new DataView(header.buffer);\n view.setUint8(0, 127);\n view.setBigUint64(1, BigInt(payloadLength));\n }\n // first bit indicates whether the payload is plain text (0) or binary (1)\n if (packet.data && typeof packet.data !== \"string\") {\n header[0] |= 0x80;\n }\n controller.enqueue(header);\n controller.enqueue(encodedPacket);\n });\n },\n });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n if (chunks[0].length === size) {\n return chunks.shift();\n }\n const buffer = new Uint8Array(size);\n let j = 0;\n for (let i = 0; i < size; i++) {\n buffer[i] = chunks[0][j++];\n if (j === chunks[0].length) {\n chunks.shift();\n j = 0;\n }\n }\n if (chunks.length && j < chunks[0].length) {\n chunks[0] = chunks[0].slice(j);\n }\n return buffer;\n}\nfunction createPacketDecoderStream(maxPayload, binaryType) {\n if (!TEXT_DECODER) {\n TEXT_DECODER = new TextDecoder();\n }\n const chunks = [];\n let state = 0 /* State.READ_HEADER */;\n let expectedLength = -1;\n let isBinary = false;\n return new TransformStream({\n transform(chunk, controller) {\n chunks.push(chunk);\n while (true) {\n if (state === 0 /* State.READ_HEADER */) {\n if (totalLength(chunks) < 1) {\n break;\n }\n const header = concatChunks(chunks, 1);\n isBinary = (header[0] & 0x80) === 0x80;\n expectedLength = header[0] & 0x7f;\n if (expectedLength < 126) {\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (expectedLength === 126) {\n state = 1 /* State.READ_EXTENDED_LENGTH_16 */;\n }\n else {\n state = 2 /* State.READ_EXTENDED_LENGTH_64 */;\n }\n }\n else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */) {\n if (totalLength(chunks) < 2) {\n break;\n }\n const headerArray = concatChunks(chunks, 2);\n expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */) {\n if (totalLength(chunks) < 8) {\n break;\n }\n const headerArray = concatChunks(chunks, 8);\n const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n const n = view.getUint32(0);\n if (n > Math.pow(2, 53 - 32) - 1) {\n // the maximum safe integer in JavaScript is 2^53 - 1\n controller.enqueue(commons_js_1.ERROR_PACKET);\n break;\n }\n expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else {\n if (totalLength(chunks) < expectedLength) {\n break;\n }\n const data = concatChunks(chunks, expectedLength);\n controller.enqueue((0, decodePacket_js_1.decodePacket)(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n state = 0 /* State.READ_HEADER */;\n }\n if (expectedLength === 0 || expectedLength > maxPayload) {\n controller.enqueue(commons_js_1.ERROR_PACKET);\n break;\n }\n }\n },\n });\n}\nexports.protocol = 4;\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultBinaryType = exports.globalThisShim = exports.nextTick = void 0;\nexports.createCookieJar = createCookieJar;\nexports.nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexports.globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\nexports.defaultBinaryType = \"arraybuffer\";\nfunction createCookieJar() { }\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pick = pick;\nexports.installTimerFunctions = installTimerFunctions;\nexports.byteLength = byteLength;\nexports.randomString = randomString;\nconst globals_node_js_1 = require(\"./globals.node.js\");\nfunction pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globals_node_js_1.globalThisShim.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globals_node_js_1.globalThisShim.clearTimeout;\nfunction installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globals_node_js_1.globalThisShim);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globals_node_js_1.globalThisShim);\n }\n else {\n obj.setTimeoutFn = globals_node_js_1.globalThisShim.setTimeout.bind(globals_node_js_1.globalThisShim);\n obj.clearTimeoutFn = globals_node_js_1.globalThisShim.clearTimeout.bind(globals_node_js_1.globalThisShim);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nfunction byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n/**\n * Generates a random 8-characters string.\n */\nfunction randomString() {\n return (Date.now().toString(36).substring(3) +\n Math.random().toString(36).substring(2, 5));\n}\n","\"use strict\";\n// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encode = encode;\nexports.decode = decode;\nfunction encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nfunction decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Transport = exports.TransportError = void 0;\nconst engine_io_parser_1 = require(\"engine.io-parser\");\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst util_js_1 = require(\"./util.js\");\nconst parseqs_js_1 = require(\"./contrib/parseqs.js\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:transport\"); // debug()\nclass TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexports.TransportError = TransportError;\nclass Transport extends component_emitter_1.Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n (0, util_js_1.installTimerFunctions)(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n debug(\"transport is not open, discarding packets\");\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = (0, engine_io_parser_1.decodePacket)(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n createUri(schema, query = {}) {\n return (schema +\n \"://\" +\n this._hostname() +\n this._port() +\n this.opts.path +\n this._query(query));\n }\n _hostname() {\n const hostname = this.opts.hostname;\n return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n }\n _port() {\n if (this.opts.port &&\n ((this.opts.secure && Number(this.opts.port) !== 443) ||\n (!this.opts.secure && Number(this.opts.port) !== 80))) {\n return \":\" + this.opts.port;\n }\n else {\n return \"\";\n }\n }\n _query(query) {\n const encodedQuery = (0, parseqs_js_1.encode)(query);\n return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n }\n}\nexports.Transport = Transport;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Polling = void 0;\nconst transport_js_1 = require(\"../transport.js\");\nconst util_js_1 = require(\"../util.js\");\nconst engine_io_parser_1 = require(\"engine.io-parser\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:polling\"); // debug()\nclass Polling extends transport_js_1.Transport {\n constructor() {\n super(...arguments);\n this._polling = false;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this._poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n debug(\"paused\");\n this.readyState = \"paused\";\n onPause();\n };\n if (this._polling || !this.writable) {\n let total = 0;\n if (this._polling) {\n debug(\"we are currently polling - waiting to pause\");\n total++;\n this.once(\"pollComplete\", function () {\n debug(\"pre-pause polling complete\");\n --total || pause();\n });\n }\n if (!this.writable) {\n debug(\"we are currently writing - waiting to pause\");\n total++;\n this.once(\"drain\", function () {\n debug(\"pre-pause writing complete\");\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n _poll() {\n debug(\"polling\");\n this._polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n debug(\"polling got data %s\", data);\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n (0, engine_io_parser_1.decodePayload)(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this._polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this._poll();\n }\n else {\n debug('ignoring poll - transport state \"%s\"', this.readyState);\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n debug(\"writing close packet\");\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n debug(\"transport open - closing\");\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n debug(\"transport not open - deferring close\");\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n (0, engine_io_parser_1.encodePayload)(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"https\" : \"http\";\n const query = this.query || {};\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = (0, util_js_1.randomString)();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\nexports.Polling = Polling;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasCORS = void 0;\n// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexports.hasCORS = value;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.XHR = exports.Request = exports.BaseXHR = void 0;\nconst polling_js_1 = require(\"./polling.js\");\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst util_js_1 = require(\"../util.js\");\nconst globals_node_js_1 = require(\"../globals.node.js\");\nconst has_cors_js_1 = require(\"../contrib/has-cors.js\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:polling\"); // debug()\nfunction empty() { }\nclass BaseXHR extends polling_js_1.Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n }\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n debug(\"xhr poll\");\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexports.BaseXHR = BaseXHR;\nclass Request extends component_emitter_1.Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(createRequest, uri, opts) {\n super();\n this.createRequest = createRequest;\n (0, util_js_1.installTimerFunctions)(this, opts);\n this._opts = opts;\n this._method = opts.method || \"GET\";\n this._uri = uri;\n this._data = undefined !== opts.data ? opts.data : null;\n this._create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n _create() {\n var _a;\n const opts = (0, util_js_1.pick)(this._opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this._opts.xd;\n const xhr = (this._xhr = this.createRequest(opts));\n try {\n debug(\"xhr open %s: %s\", this._method, this._uri);\n xhr.open(this._method, this._uri, true);\n try {\n if (this._opts.extraHeaders) {\n // @ts-ignore\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this._opts.extraHeaders) {\n if (this._opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this._opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this._method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this._opts.withCredentials;\n }\n if (this._opts.requestTimeout) {\n xhr.timeout = this._opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n var _a;\n if (xhr.readyState === 3) {\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(\n // @ts-ignore\n xhr.getResponseHeader(\"set-cookie\"));\n }\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this._onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this._onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n debug(\"xhr data %s\", this._data);\n xhr.send(this._data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this._onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this._index = Request.requestsCount++;\n Request.requests[this._index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n _onError(err) {\n this.emitReserved(\"error\", err, this._xhr);\n this._cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n _cleanup(fromError) {\n if (\"undefined\" === typeof this._xhr || null === this._xhr) {\n return;\n }\n this._xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this._xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this._index];\n }\n this._xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n _onLoad() {\n const data = this._xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this._cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this._cleanup();\n }\n}\nexports.Request = Request;\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globals_node_js_1.globalThisShim ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\nconst hasXHR2 = (function () {\n const xhr = newRequest({\n xdomain: false,\n });\n return xhr && xhr.responseType !== null;\n})();\n/**\n * HTTP long-polling based on the built-in `XMLHttpRequest` object.\n *\n * Usage: browser\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n */\nclass XHR extends BaseXHR {\n constructor(opts) {\n super(opts);\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd }, this.opts);\n return new Request(newRequest, this.uri(), opts);\n }\n}\nexports.XHR = XHR;\nfunction newRequest(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || has_cors_js_1.hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globals_node_js_1.globalThisShim[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WS = exports.BaseWS = void 0;\nconst transport_js_1 = require(\"../transport.js\");\nconst util_js_1 = require(\"../util.js\");\nconst engine_io_parser_1 = require(\"engine.io-parser\");\nconst globals_node_js_1 = require(\"../globals.node.js\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:websocket\"); // debug()\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nclass BaseWS extends transport_js_1.Transport {\n get name() {\n return \"websocket\";\n }\n doOpen() {\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : (0, util_js_1.pick)(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws = this.createSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n (0, engine_io_parser_1.encodePacket)(packet, this.supportsBinary, (data) => {\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n this.doWrite(packet, data);\n }\n catch (e) {\n debug(\"websocket closed before onclose event\");\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n (0, globals_node_js_1.nextTick)(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.onerror = () => { };\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n const query = this.query || {};\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = (0, util_js_1.randomString)();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\nexports.BaseWS = BaseWS;\nconst WebSocketCtor = globals_node_js_1.globalThisShim.WebSocket || globals_node_js_1.globalThisShim.MozWebSocket;\n/**\n * WebSocket transport based on the built-in `WebSocket` object.\n *\n * Usage: browser, Node.js (since v21), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @see https://caniuse.com/mdn-api_websocket\n * @see https://nodejs.org/api/globals.html#websocket\n */\nclass WS extends BaseWS {\n createSocket(uri, protocols, opts) {\n return !isReactNative\n ? protocols\n ? new WebSocketCtor(uri, protocols)\n : new WebSocketCtor(uri)\n : new WebSocketCtor(uri, protocols, opts);\n }\n doWrite(_packet, data) {\n this.ws.send(data);\n }\n}\nexports.WS = WS;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WT = void 0;\nconst transport_js_1 = require(\"../transport.js\");\nconst globals_node_js_1 = require(\"../globals.node.js\");\nconst engine_io_parser_1 = require(\"engine.io-parser\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:webtransport\"); // debug()\n/**\n * WebTransport transport based on the built-in `WebTransport` object.\n *\n * Usage: browser, Node.js (with the `@fails-components/webtransport` package)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebTransport\n * @see https://caniuse.com/webtransport\n */\nclass WT extends transport_js_1.Transport {\n get name() {\n return \"webtransport\";\n }\n doOpen() {\n try {\n // @ts-ignore\n this._transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this._transport.closed\n .then(() => {\n debug(\"transport closed gracefully\");\n this.onClose();\n })\n .catch((err) => {\n debug(\"transport closed due to %s\", err);\n this.onError(\"webtransport error\", err);\n });\n // note: we could have used async/await, but that would require some additional polyfills\n this._transport.ready.then(() => {\n this._transport.createBidirectionalStream().then((stream) => {\n const decoderStream = (0, engine_io_parser_1.createPacketDecoderStream)(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n const reader = stream.readable.pipeThrough(decoderStream).getReader();\n const encoderStream = (0, engine_io_parser_1.createPacketEncoderStream)();\n encoderStream.readable.pipeTo(stream.writable);\n this._writer = encoderStream.writable.getWriter();\n const read = () => {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n debug(\"session is closed\");\n return;\n }\n debug(\"received chunk: %o\", value);\n this.onPacket(value);\n read();\n })\n .catch((err) => {\n debug(\"an error occurred while reading: %s\", err);\n });\n };\n read();\n const packet = { type: \"open\" };\n if (this.query.sid) {\n packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n }\n this._writer.write(packet).then(() => this.onOpen());\n });\n });\n }\n write(packets) {\n this.writable = false;\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n this._writer.write(packet).then(() => {\n if (lastPacket) {\n (0, globals_node_js_1.nextTick)(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n var _a;\n (_a = this._transport) === null || _a === void 0 ? void 0 : _a.close();\n }\n}\nexports.WT = WT;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transports = void 0;\nconst polling_xhr_node_js_1 = require(\"./polling-xhr.node.js\");\nconst websocket_node_js_1 = require(\"./websocket.node.js\");\nconst webtransport_js_1 = require(\"./webtransport.js\");\nexports.transports = {\n websocket: websocket_node_js_1.WS,\n webtransport: webtransport_js_1.WT,\n polling: polling_xhr_node_js_1.XHR,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = parse;\n// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nfunction parse(str) {\n if (str.length > 8000) {\n throw \"URI too long\";\n }\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Socket = exports.SocketWithUpgrade = exports.SocketWithoutUpgrade = void 0;\nconst index_js_1 = require(\"./transports/index.js\");\nconst util_js_1 = require(\"./util.js\");\nconst parseqs_js_1 = require(\"./contrib/parseqs.js\");\nconst parseuri_js_1 = require(\"./contrib/parseuri.js\");\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst engine_io_parser_1 = require(\"engine.io-parser\");\nconst globals_node_js_1 = require(\"./globals.node.js\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"engine.io-client:socket\"); // debug()\nconst withEventListeners = typeof addEventListener === \"function\" &&\n typeof removeEventListener === \"function\";\nconst OFFLINE_EVENT_LISTENERS = [];\nif (withEventListeners) {\n // within a ServiceWorker, any event handler for the 'offline' event must be added on the initial evaluation of the\n // script, so we create one single event listener here which will forward the event to the socket instances\n addEventListener(\"offline\", () => {\n debug(\"closing %d connection(s) because the network was lost\", OFFLINE_EVENT_LISTENERS.length);\n OFFLINE_EVENT_LISTENERS.forEach((listener) => listener());\n }, false);\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes without upgrade mechanism, which means that it will keep the first low-level transport that\n * successfully establishes the connection.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithoutUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithoutUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithUpgrade\n * @see Socket\n */\nclass SocketWithoutUpgrade extends component_emitter_1.Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts) {\n super();\n this.binaryType = globals_node_js_1.defaultBinaryType;\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n this._pingInterval = -1;\n this._pingTimeout = -1;\n this._maxPayload = -1;\n /**\n * The expiration timestamp of the {@link _pingTimeoutTimer} object is tracked, in case the timer is throttled and the\n * callback is not fired on time. This can happen for example when a laptop is suspended or when a phone is locked.\n */\n this._pingTimeoutTime = Infinity;\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n const parsedUri = (0, parseuri_js_1.parse)(uri);\n opts.hostname = parsedUri.host;\n opts.secure =\n parsedUri.protocol === \"https\" || parsedUri.protocol === \"wss\";\n opts.port = parsedUri.port;\n if (parsedUri.query)\n opts.query = parsedUri.query;\n }\n else if (opts.host) {\n opts.hostname = (0, parseuri_js_1.parse)(opts.host).host;\n }\n (0, util_js_1.installTimerFunctions)(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = [];\n this._transportsByName = {};\n opts.transports.forEach((t) => {\n const transportName = t.prototype.name;\n this.transports.push(transportName);\n this._transportsByName[transportName] = t;\n });\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: false,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = (0, parseqs_js_1.decode)(this.opts.query);\n }\n if (withEventListeners) {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this._beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n debug(\"adding listener for the 'offline' event\");\n this._offlineEventListener = () => {\n this._onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n OFFLINE_EVENT_LISTENERS.push(this._offlineEventListener);\n }\n }\n if (this.opts.withCredentials) {\n this._cookieJar = (0, globals_node_js_1.createCookieJar)();\n }\n this._open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n debug('creating transport \"%s\"', name);\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = engine_io_parser_1.protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\n debug(\"options: %j\", opts);\n return new this._transportsByName[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n _open() {\n if (this.transports.length === 0) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n const transportName = this.opts.rememberUpgrade &&\n SocketWithoutUpgrade.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1\n ? \"websocket\"\n : this.transports[0];\n this.readyState = \"opening\";\n const transport = this.createTransport(transportName);\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n debug(\"setting transport %s\", transport.name);\n if (this.transport) {\n debug(\"clearing existing transport %s\", this.transport.name);\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this._onDrain.bind(this))\n .on(\"packet\", this._onPacket.bind(this))\n .on(\"error\", this._onError.bind(this))\n .on(\"close\", (reason) => this._onClose(\"transport close\", reason));\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n debug(\"socket open\");\n this.readyState = \"open\";\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n _onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n debug('socket receive: type \"%s\", data \"%s\"', packet.type, packet.data);\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this._sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n this._resetPingTimeout();\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this._onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n debug('packet received with socket readyState \"%s\"', this.readyState);\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this._pingInterval = data.pingInterval;\n this._pingTimeout = data.pingTimeout;\n this._maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this._resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n _resetPingTimeout() {\n this.clearTimeoutFn(this._pingTimeoutTimer);\n const delay = this._pingInterval + this._pingTimeout;\n this._pingTimeoutTime = Date.now() + delay;\n this._pingTimeoutTimer = this.setTimeoutFn(() => {\n this._onClose(\"ping timeout\");\n }, delay);\n if (this.opts.autoUnref) {\n this._pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n _onDrain() {\n this.writeBuffer.splice(0, this._prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this._prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this._getWritablePackets();\n debug(\"flushing %d packets in socket\", packets.length);\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this._prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n _getWritablePackets() {\n const shouldCheckPayloadSize = this._maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += (0, util_js_1.byteLength)(data);\n }\n if (i > 0 && payloadSize > this._maxPayload) {\n debug(\"only send %d out of %d packets\", i, this.writeBuffer.length);\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n debug(\"payload size is %d (max: %d)\", payloadSize, this._maxPayload);\n return this.writeBuffer;\n }\n /**\n * Checks whether the heartbeat timer has expired but the socket has not yet been notified.\n *\n * Note: this method is private for now because it does not really fit the WebSocket API, but if we put it in the\n * `write()` method then the message would not be buffered by the Socket.IO client.\n *\n * @return {boolean}\n * @private\n */\n /* private */ _hasPingExpired() {\n if (!this._pingTimeoutTime)\n return true;\n const hasExpired = Date.now() > this._pingTimeoutTime;\n if (hasExpired) {\n debug(\"throttled timer detected, scheduling connection close\");\n this._pingTimeoutTime = 0;\n (0, globals_node_js_1.nextTick)(() => {\n this._onClose(\"ping timeout\");\n }, this.setTimeoutFn);\n }\n return hasExpired;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a message. Alias of {@link Socket#write}.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n send(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n _sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this._onClose(\"forced close\");\n debug(\"socket closing - telling transport to close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n _onError(err) {\n debug(\"socket error %j\", err);\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n if (this.opts.tryAllTransports &&\n this.transports.length > 1 &&\n this.readyState === \"opening\") {\n debug(\"trying next transport\");\n this.transports.shift();\n return this._open();\n }\n this.emitReserved(\"error\", err);\n this._onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n _onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n debug('socket close with reason: \"%s\"', reason);\n // clear timers\n this.clearTimeoutFn(this._pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (withEventListeners) {\n if (this._beforeunloadEventListener) {\n removeEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this._offlineEventListener) {\n const i = OFFLINE_EVENT_LISTENERS.indexOf(this._offlineEventListener);\n if (i !== -1) {\n debug(\"removing listener for the 'offline' event\");\n OFFLINE_EVENT_LISTENERS.splice(i, 1);\n }\n }\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n }\n }\n}\nexports.SocketWithoutUpgrade = SocketWithoutUpgrade;\nSocketWithoutUpgrade.protocol = engine_io_parser_1.protocol;\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see Socket\n */\nclass SocketWithUpgrade extends SocketWithoutUpgrade {\n constructor() {\n super(...arguments);\n this._upgrades = [];\n }\n onOpen() {\n super.onOpen();\n if (\"open\" === this.readyState && this.opts.upgrade) {\n debug(\"starting upgrade probes\");\n for (let i = 0; i < this._upgrades.length; i++) {\n this._probe(this._upgrades[i]);\n }\n }\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n _probe(name) {\n debug('probing transport \"%s\"', name);\n let transport = this.createTransport(name);\n let failed = false;\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n debug('probe transport \"%s\" opened', name);\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n debug('probe transport \"%s\" pong', name);\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === transport.name;\n debug('pausing current transport \"%s\"', this.transport.name);\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n debug(\"changing transport and sending upgrade packet\");\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n debug('probe transport \"%s\" failed', name);\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n debug('probe transport \"%s\" failed because of error: %s', name, err);\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n debug('\"%s\" works - aborting \"%s\"', to.name, transport.name);\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n if (this._upgrades.indexOf(\"webtransport\") !== -1 &&\n name !== \"webtransport\") {\n // favor WebTransport\n this.setTimeoutFn(() => {\n if (!failed) {\n transport.open();\n }\n }, 200);\n }\n else {\n transport.open();\n }\n }\n onHandshake(data) {\n this._upgrades = this._filterUpgrades(data.upgrades);\n super.onHandshake(data);\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n _filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n for (let i = 0; i < upgrades.length; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\nexports.SocketWithUpgrade = SocketWithUpgrade;\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * @example\n * import { Socket } from \"engine.io-client\";\n *\n * const socket = new Socket();\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see SocketWithUpgrade\n */\nclass Socket extends SocketWithUpgrade {\n constructor(uri, opts = {}) {\n const o = typeof uri === \"object\" ? uri : opts;\n if (!o.transports ||\n (o.transports && typeof o.transports[0] === \"string\")) {\n o.transports = (o.transports || [\"polling\", \"websocket\", \"webtransport\"])\n .map((transportName) => index_js_1.transports[transportName])\n .filter((t) => !!t);\n }\n super(uri, o);\n }\n}\nexports.Socket = Socket;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Fetch = void 0;\nconst polling_js_1 = require(\"./polling.js\");\n/**\n * HTTP long-polling based on the built-in `fetch()` method.\n *\n * Usage: browser, Node.js (since v18), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/fetch\n * @see https://caniuse.com/fetch\n * @see https://nodejs.org/api/globals.html#fetch\n */\nclass Fetch extends polling_js_1.Polling {\n doPoll() {\n this._fetch()\n .then((res) => {\n if (!res.ok) {\n return this.onError(\"fetch read error\", res.status, res);\n }\n res.text().then((data) => this.onData(data));\n })\n .catch((err) => {\n this.onError(\"fetch read error\", err);\n });\n }\n doWrite(data, callback) {\n this._fetch(data)\n .then((res) => {\n if (!res.ok) {\n return this.onError(\"fetch write error\", res.status, res);\n }\n callback();\n })\n .catch((err) => {\n this.onError(\"fetch write error\", err);\n });\n }\n _fetch(data) {\n var _a;\n const isPost = data !== undefined;\n const headers = new Headers(this.opts.extraHeaders);\n if (isPost) {\n headers.set(\"content-type\", \"text/plain;charset=UTF-8\");\n }\n (_a = this.socket._cookieJar) === null || _a === void 0 ? void 0 : _a.appendCookies(headers);\n return fetch(this.uri(), {\n method: isPost ? \"POST\" : \"GET\",\n body: isPost ? data : null,\n headers,\n credentials: this.opts.withCredentials ? \"include\" : \"omit\",\n }).then((res) => {\n var _a;\n // @ts-ignore getSetCookie() was added in Node.js v19.7.0\n (_a = this.socket._cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(res.headers.getSetCookie());\n return res;\n });\n }\n}\nexports.Fetch = Fetch;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebTransport = exports.WebSocket = exports.NodeWebSocket = exports.XHR = exports.NodeXHR = exports.Fetch = exports.nextTick = exports.parse = exports.installTimerFunctions = exports.transports = exports.TransportError = exports.Transport = exports.protocol = exports.SocketWithUpgrade = exports.SocketWithoutUpgrade = exports.Socket = void 0;\nconst socket_js_1 = require(\"./socket.js\");\nObject.defineProperty(exports, \"Socket\", { enumerable: true, get: function () { return socket_js_1.Socket; } });\nvar socket_js_2 = require(\"./socket.js\");\nObject.defineProperty(exports, \"SocketWithoutUpgrade\", { enumerable: true, get: function () { return socket_js_2.SocketWithoutUpgrade; } });\nObject.defineProperty(exports, \"SocketWithUpgrade\", { enumerable: true, get: function () { return socket_js_2.SocketWithUpgrade; } });\nexports.protocol = socket_js_1.Socket.protocol;\nvar transport_js_1 = require(\"./transport.js\");\nObject.defineProperty(exports, \"Transport\", { enumerable: true, get: function () { return transport_js_1.Transport; } });\nObject.defineProperty(exports, \"TransportError\", { enumerable: true, get: function () { return transport_js_1.TransportError; } });\nvar index_js_1 = require(\"./transports/index.js\");\nObject.defineProperty(exports, \"transports\", { enumerable: true, get: function () { return index_js_1.transports; } });\nvar util_js_1 = require(\"./util.js\");\nObject.defineProperty(exports, \"installTimerFunctions\", { enumerable: true, get: function () { return util_js_1.installTimerFunctions; } });\nvar parseuri_js_1 = require(\"./contrib/parseuri.js\");\nObject.defineProperty(exports, \"parse\", { enumerable: true, get: function () { return parseuri_js_1.parse; } });\nvar globals_node_js_1 = require(\"./globals.node.js\");\nObject.defineProperty(exports, \"nextTick\", { enumerable: true, get: function () { return globals_node_js_1.nextTick; } });\nvar polling_fetch_js_1 = require(\"./transports/polling-fetch.js\");\nObject.defineProperty(exports, \"Fetch\", { enumerable: true, get: function () { return polling_fetch_js_1.Fetch; } });\nvar polling_xhr_node_js_1 = require(\"./transports/polling-xhr.node.js\");\nObject.defineProperty(exports, \"NodeXHR\", { enumerable: true, get: function () { return polling_xhr_node_js_1.XHR; } });\nvar polling_xhr_js_1 = require(\"./transports/polling-xhr.js\");\nObject.defineProperty(exports, \"XHR\", { enumerable: true, get: function () { return polling_xhr_js_1.XHR; } });\nvar websocket_node_js_1 = require(\"./transports/websocket.node.js\");\nObject.defineProperty(exports, \"NodeWebSocket\", { enumerable: true, get: function () { return websocket_node_js_1.WS; } });\nvar websocket_js_1 = require(\"./transports/websocket.js\");\nObject.defineProperty(exports, \"WebSocket\", { enumerable: true, get: function () { return websocket_js_1.WS; } });\nvar webtransport_js_1 = require(\"./transports/webtransport.js\");\nObject.defineProperty(exports, \"WebTransport\", { enumerable: true, get: function () { return webtransport_js_1.WT; } });\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.url = url;\nconst engine_io_client_1 = require(\"engine.io-client\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"socket.io-client:url\"); // debug()\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nfunction url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n debug(\"protocol-less url %s\", uri);\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n debug(\"parse %s\", uri);\n obj = (0, engine_io_client_1.parse)(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isBinary = isBinary;\nexports.hasBinary = hasBinary;\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nfunction isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nfunction hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deconstructPacket = deconstructPacket;\nexports.reconstructPacket = reconstructPacket;\nconst is_binary_js_1 = require(\"./is-binary.js\");\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nfunction deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if ((0, is_binary_js_1.isBinary)(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nfunction reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Decoder = exports.Encoder = exports.PacketType = exports.protocol = void 0;\nexports.isPacketValid = isPacketValid;\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst binary_js_1 = require(\"./binary.js\");\nconst is_binary_js_1 = require(\"./is-binary.js\");\nconst debug_1 = require(\"debug\"); // debug()\nconst debug = (0, debug_1.default)(\"socket.io-parser\"); // debug()\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\", // used on the client side\n \"connect_error\", // used on the client side\n \"disconnect\", // used on both sides\n \"disconnecting\", // used on the server side\n \"newListener\", // used by the Node.js EventEmitter\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexports.protocol = 5;\nvar PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (exports.PacketType = PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nclass Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n debug(\"encoding packet %j\", obj);\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if ((0, is_binary_js_1.hasBinary)(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n debug(\"encoded %j as %s\", obj, str);\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = (0, binary_js_1.deconstructPacket)(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\nexports.Encoder = Encoder;\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nclass Decoder extends component_emitter_1.Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if ((0, is_binary_js_1.isBinary)(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n debug(\"decoded %s as %j\", str, p);\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\nexports.Decoder = Decoder;\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = (0, binary_js_1.reconstructPacket)(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\nfunction isNamespaceValid(nsp) {\n return typeof nsp === \"string\";\n}\n// see https://caniuse.com/mdn-javascript_builtins_number_isinteger\nconst isInteger = Number.isInteger ||\n function (value) {\n return (typeof value === \"number\" &&\n isFinite(value) &&\n Math.floor(value) === value);\n };\nfunction isAckIdValid(id) {\n return id === undefined || isInteger(id);\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\nfunction isDataValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return payload === undefined || isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n return Array.isArray(payload);\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n default:\n return false;\n }\n}\nfunction isPacketValid(packet) {\n return (isNamespaceValid(packet.nsp) &&\n isAckIdValid(packet.id) &&\n isDataValid(packet.type, packet.data));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.on = on;\nfunction on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Socket = void 0;\nconst socket_io_parser_1 = require(\"socket.io-parser\");\nconst on_js_1 = require(\"./on.js\");\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"socket.io-client:socket\"); // debug()\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nclass Socket extends component_emitter_1.Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n * be transmitted by the server.\n */\n this.recovered = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n /**\n * The queue of packets to be sent with retry in case of failure.\n *\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n * @private\n */\n this._queue = [];\n /**\n * A sequence to generate the ID of the {@link QueuedPacket}.\n * @private\n */\n this._queueSeq = 0;\n this.ids = 0;\n /**\n * A map containing acknowledgement handlers.\n *\n * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n *\n * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n * - `const value = await socket.emitWithAck(\"test\")`\n *\n * From those that don't:\n *\n * - `socket.emit(\"test\", (value) => { ... });`\n *\n * In the first case, the handlers will be called with an error when:\n *\n * - the timeout is reached\n * - the socket gets disconnected\n *\n * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n * an acknowledgement from the server.\n *\n * @private\n */\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n this._opts = Object.assign({}, opts);\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n (0, on_js_1.on)(io, \"open\", this.onopen.bind(this)),\n (0, on_js_1.on)(io, \"packet\", this.onpacket.bind(this)),\n (0, on_js_1.on)(io, \"error\", this.onerror.bind(this)),\n (0, on_js_1.on)(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n var _a, _b, _c;\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n this._addToQueue(args);\n return this;\n }\n const packet = {\n type: socket_io_parser_1.PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n debug(\"emitting packet with ack id %d\", id);\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = (_b = (_a = this.io.engine) === null || _a === void 0 ? void 0 : _a.transport) === null || _b === void 0 ? void 0 : _b.writable;\n const isConnected = this.connected && !((_c = this.io.engine) === null || _c === void 0 ? void 0 : _c._hasPingExpired());\n const discardPacket = this.flags.volatile && !isTransportWritable;\n if (discardPacket) {\n debug(\"discard packet as the transport is not currently writable\");\n }\n else if (isConnected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n var _a;\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n debug(\"removing packet with ack id %d from the buffer\", id);\n this.sendBuffer.splice(i, 1);\n }\n }\n debug(\"event with ack id %d has timed out after %d ms\", id, timeout);\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n const fn = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, args);\n };\n fn.withError = true;\n this.acks[id] = fn;\n }\n /**\n * Emits an event and waits for an acknowledgement\n *\n * @example\n * // without timeout\n * const response = await socket.emitWithAck(\"hello\", \"world\");\n *\n * // with a specific timeout\n * try {\n * const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n * } catch (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n *\n * @return a Promise that will be fulfilled when the server acknowledges the event\n */\n emitWithAck(ev, ...args) {\n return new Promise((resolve, reject) => {\n const fn = (arg1, arg2) => {\n return arg1 ? reject(arg1) : resolve(arg2);\n };\n fn.withError = true;\n args.push(fn);\n this.emit(ev, ...args);\n });\n }\n /**\n * Add the packet to the queue.\n * @param args\n * @private\n */\n _addToQueue(args) {\n let ack;\n if (typeof args[args.length - 1] === \"function\") {\n ack = args.pop();\n }\n const packet = {\n id: this._queueSeq++,\n tryCount: 0,\n pending: false,\n args,\n flags: Object.assign({ fromQueue: true }, this.flags),\n };\n args.push((err, ...responseArgs) => {\n if (packet !== this._queue[0]) {\n return debug(\"packet [%d] already acknowledged\", packet.id);\n }\n const hasError = err !== null;\n if (hasError) {\n if (packet.tryCount > this._opts.retries) {\n debug(\"packet [%d] is discarded after %d tries\", packet.id, packet.tryCount);\n this._queue.shift();\n if (ack) {\n ack(err);\n }\n }\n }\n else {\n debug(\"packet [%d] was successfully sent\", packet.id);\n this._queue.shift();\n if (ack) {\n ack(null, ...responseArgs);\n }\n }\n packet.pending = false;\n return this._drainQueue();\n });\n this._queue.push(packet);\n this._drainQueue();\n }\n /**\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\n * @param force - whether to resend a packet that has not been acknowledged yet\n *\n * @private\n */\n _drainQueue(force = false) {\n debug(\"draining queue\");\n if (!this.connected || this._queue.length === 0) {\n return;\n }\n const packet = this._queue[0];\n if (packet.pending && !force) {\n debug(\"packet [%d] has already been sent and is waiting for an ack\", packet.id);\n return;\n }\n packet.pending = true;\n packet.tryCount++;\n debug(\"sending packet [%d] (try n°%d)\", packet.id, packet.tryCount);\n this.flags = packet.flags;\n this.emit.apply(this, packet.args);\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n debug(\"transport is open - connecting\");\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this._sendConnectPacket(data);\n });\n }\n else {\n this._sendConnectPacket(this.auth);\n }\n }\n /**\n * Sends a CONNECT packet to initiate the Socket.IO session.\n *\n * @param data\n * @private\n */\n _sendConnectPacket(data) {\n this.packet({\n type: socket_io_parser_1.PacketType.CONNECT,\n data: this._pid\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n : data,\n });\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n debug(\"close (%s)\", reason);\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n this._clearAcks();\n }\n /**\n * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n * the server.\n *\n * @private\n */\n _clearAcks() {\n Object.keys(this.acks).forEach((id) => {\n const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n if (!isBuffered) {\n // note: handlers that do not accept an error as first argument are ignored here\n const ack = this.acks[id];\n delete this.acks[id];\n if (ack.withError) {\n ack.call(this, new Error(\"socket has been disconnected\"));\n }\n }\n });\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case socket_io_parser_1.PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n this.onconnect(packet.data.sid, packet.data.pid);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case socket_io_parser_1.PacketType.EVENT:\n case socket_io_parser_1.PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case socket_io_parser_1.PacketType.ACK:\n case socket_io_parser_1.PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case socket_io_parser_1.PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case socket_io_parser_1.PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n debug(\"emitting event %j\", args);\n if (null != packet.id) {\n debug(\"attaching ack callback to event\");\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n this._lastOffset = args[args.length - 1];\n }\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n debug(\"sending ack %j\", args);\n self.packet({\n type: socket_io_parser_1.PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowledgement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (typeof ack !== \"function\") {\n debug(\"bad ack %s\", packet.id);\n return;\n }\n delete this.acks[packet.id];\n debug(\"calling ack %s with %j\", packet.id, packet.data);\n // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n if (ack.withError) {\n packet.data.unshift(null);\n }\n // @ts-ignore\n ack.apply(this, packet.data);\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id, pid) {\n debug(\"socket connected with id %s\", id);\n this.id = id;\n this.recovered = pid && this._pid === pid;\n this._pid = pid; // defined only if connection state recovery is enabled\n this.connected = true;\n this.emitBuffered();\n this._drainQueue(true);\n this.emitReserved(\"connect\");\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n debug(\"server disconnect (%s)\", this.nsp);\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n debug(\"performing disconnect (%s)\", this.nsp);\n this.packet({ type: socket_io_parser_1.PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\nexports.Socket = Socket;\n","\"use strict\";\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Backoff = Backoff;\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Manager = void 0;\nconst engine_io_client_1 = require(\"engine.io-client\");\nconst socket_js_1 = require(\"./socket.js\");\nconst parser = __importStar(require(\"socket.io-parser\"));\nconst on_js_1 = require(\"./on.js\");\nconst backo2_js_1 = require(\"./contrib/backo2.js\");\nconst component_emitter_1 = require(\"@socket.io/component-emitter\");\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"socket.io-client:manager\"); // debug()\nclass Manager extends component_emitter_1.Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n (0, engine_io_client_1.installTimerFunctions)(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new backo2_js_1.Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n if (!v) {\n this.skipReconnect = true;\n }\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n debug(\"readyState %s\", this._readyState);\n if (~this._readyState.indexOf(\"open\"))\n return this;\n debug(\"opening %s\", this.uri);\n this.engine = new engine_io_client_1.Socket(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = (0, on_js_1.on)(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n const onError = (err) => {\n debug(\"error\");\n this.cleanup();\n this._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n this.maybeReconnectOnOpen();\n }\n };\n // emit `error`\n const errorSub = (0, on_js_1.on)(socket, \"error\", onError);\n if (false !== this._timeout) {\n const timeout = this._timeout;\n debug(\"connect attempt will timeout after %d\", timeout);\n // set timer\n const timer = this.setTimeoutFn(() => {\n debug(\"connect attempt timed out after %d\", timeout);\n openSubDestroy();\n onError(new Error(\"timeout\"));\n socket.close();\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n debug(\"open\");\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push((0, on_js_1.on)(socket, \"ping\", this.onping.bind(this)), (0, on_js_1.on)(socket, \"data\", this.ondata.bind(this)), (0, on_js_1.on)(socket, \"error\", this.onerror.bind(this)), (0, on_js_1.on)(socket, \"close\", this.onclose.bind(this)), \n // @ts-ignore\n (0, on_js_1.on)(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n (0, engine_io_client_1.nextTick)(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n debug(\"error\", err);\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new socket_js_1.Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n else if (this._autoConnect && !socket.active) {\n socket.connect();\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n debug(\"socket %s is still active, skipping close\", nsp);\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n debug(\"writing packet %j\", packet);\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n debug(\"cleanup\");\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n debug(\"disconnect\");\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called when:\n *\n * - the low-level engine is closed\n * - the parser encountered a badly formatted packet\n * - all sockets are disconnected\n *\n * @private\n */\n onclose(reason, description) {\n var _a;\n debug(\"closed due to %s\", reason);\n this.cleanup();\n (_a = this.engine) === null || _a === void 0 ? void 0 : _a.close();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n debug(\"reconnect failed\");\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n debug(\"will wait %dms before reconnect attempt\", delay);\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n debug(\"attempting reconnect\");\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n debug(\"reconnect attempt error\");\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n debug(\"reconnect success\");\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\nexports.Manager = Manager;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebTransport = exports.WebSocket = exports.NodeWebSocket = exports.XHR = exports.NodeXHR = exports.Fetch = exports.Socket = exports.Manager = exports.protocol = void 0;\nexports.io = lookup;\nexports.connect = lookup;\nexports.default = lookup;\nconst url_js_1 = require(\"./url.js\");\nconst manager_js_1 = require(\"./manager.js\");\nObject.defineProperty(exports, \"Manager\", { enumerable: true, get: function () { return manager_js_1.Manager; } });\nconst socket_js_1 = require(\"./socket.js\");\nObject.defineProperty(exports, \"Socket\", { enumerable: true, get: function () { return socket_js_1.Socket; } });\nconst debug_1 = __importDefault(require(\"debug\")); // debug()\nconst debug = (0, debug_1.default)(\"socket.io-client\"); // debug()\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = (0, url_js_1.url)(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n debug(\"ignoring socket cache for %s\", source);\n io = new manager_js_1.Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n debug(\"new io instance for %s\", source);\n cache[id] = new manager_js_1.Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager: manager_js_1.Manager,\n Socket: socket_js_1.Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nvar socket_io_parser_1 = require(\"socket.io-parser\");\nObject.defineProperty(exports, \"protocol\", { enumerable: true, get: function () { return socket_io_parser_1.protocol; } });\nvar engine_io_client_1 = require(\"engine.io-client\");\nObject.defineProperty(exports, \"Fetch\", { enumerable: true, get: function () { return engine_io_client_1.Fetch; } });\nObject.defineProperty(exports, \"NodeXHR\", { enumerable: true, get: function () { return engine_io_client_1.NodeXHR; } });\nObject.defineProperty(exports, \"XHR\", { enumerable: true, get: function () { return engine_io_client_1.XHR; } });\nObject.defineProperty(exports, \"NodeWebSocket\", { enumerable: true, get: function () { return engine_io_client_1.NodeWebSocket; } });\nObject.defineProperty(exports, \"WebSocket\", { enumerable: true, get: function () { return engine_io_client_1.WebSocket; } });\nObject.defineProperty(exports, \"WebTransport\", { enumerable: true, get: function () { return engine_io_client_1.WebTransport; } });\n\nmodule.exports = lookup;\n",null,null,"/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {assertInInjectionContext, DestroyRef, inject} from '@angular/core';\nimport {MonoTypeOperatorFunction, Observable} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\n\n/**\n * Operator which completes the Observable when the calling context (component, directive, service,\n * etc) is destroyed.\n *\n * @param destroyRef optionally, the `DestroyRef` representing the current context. This can be\n * passed explicitly to use `takeUntilDestroyed` outside of an [injection\n * context](guide/di/dependency-injection-context). Otherwise, the current `DestroyRef` is injected.\n *\n * @developerPreview\n */\nexport function takeUntilDestroyed<T>(destroyRef?: DestroyRef): MonoTypeOperatorFunction<T> {\n if (!destroyRef) {\n assertInInjectionContext(takeUntilDestroyed);\n destroyRef = inject(DestroyRef);\n }\n\n const destroyed$ = new Observable<void>((observer) => {\n const unregisterFn = destroyRef!.onDestroy(observer.next.bind(observer));\n return unregisterFn;\n });\n\n return <T>(source: Observable<T>) => {\n return source.pipe(takeUntil(destroyed$));\n };\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n assertInInjectionContext,\n DestroyRef,\n inject,\n OutputOptions,\n OutputRef,\n OutputRefSubscription,\n ɵRuntimeError,\n ɵRuntimeErrorCode,\n} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {takeUntilDestroyed} from './take_until_destroyed';\n\n/**\n * Implementation of `OutputRef` that emits values from\n * an RxJS observable source.\n *\n * @internal\n */\nclass OutputFromObservableRef<T> implements OutputRef<T> {\n private destroyed = false;\n\n destroyRef = inject(DestroyRef);\n\n constructor(private source: Observable<T>) {\n this.destroyRef.onDestroy(() => {\n this.destroyed = true;\n });\n }\n\n subscribe(callbackFn: (value: T) => void): OutputRefSubscription {\n if (this.destroyed) {\n throw new ɵRuntimeError(\n ɵRuntimeErrorCode.OUTPUT_REF_DESTROYED,\n ngDevMode &&\n 'Unexpected subscription to destroyed `OutputRef`. ' +\n 'The owning directive/component is destroyed.',\n );\n }\n\n // Stop yielding more values when the directive/component is already destroyed.\n const subscription = this.source.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({\n next: (value) => callbackFn(value),\n });\n\n return {\n unsubscribe: () => subscription.unsubscribe(),\n };\n }\n}\n\n/**\n * Declares an Angular output that is using an RxJS observable as a source\n * for events dispatched to parent subscribers.\n *\n * The behavior for an observable as source is defined as followed:\n * 1. New values are forwarded to the Angular output (next notifications).\n * 2. Errors notifications are not handled by Angular. You need to handle these manually.\n * For example by using `catchError`.\n * 3. Completion notifications stop the output from emitting new values.\n *\n * @usageNotes\n * Initialize an output in your directive by declaring a\n * class field and initializing it with the `outputFromObservable()` function.\n *\n * ```ts\n * @Directive({..})\n * export class MyDir {\n * nameChange$ = <some-observable>;\n * nameChange = outputFromObservable(this.nameChange$);\n * }\n * ```\n *\n * @developerPreview\n */\nexport function outputFromObservable<T>(\n observable: Observable<T>,\n opts?: OutputOptions,\n): OutputRef<T> {\n ngDevMode && assertInInjectionContext(outputFromObservable);\n return new OutputFromObservableRef<T>(observable);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {OutputRef, ɵgetOutputDestroyRef} from '@angular/core';\nimport {Observable} from 'rxjs';\n\n/**\n * Converts an Angular output declared via `output()` or `outputFromObservable()`\n * to an observable.\n *\n * You can subscribe to the output via `Observable.subscribe` then.\n *\n * @developerPreview\n */\nexport function outputToObservable<T>(ref: OutputRef<T>): Observable<T> {\n const destroyRef = ɵgetOutputDestroyRef(ref);\n\n return new Observable<T>((observer) => {\n // Complete the observable upon directive/component destroy.\n // Note: May be `undefined` if an `EventEmitter` is declared outside\n // of an injection context.\n destroyRef?.onDestroy(() => observer.complete());\n\n const subscription = ref.subscribe((v) => observer.next(v));\n return () => subscription.unsubscribe();\n });\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n assertInInjectionContext,\n DestroyRef,\n effect,\n inject,\n Injector,\n Signal,\n untracked,\n} from '@angular/core';\nimport {Observable, ReplaySubject} from 'rxjs';\n\n/**\n * Options for `toObservable`.\n *\n * @developerPreview\n */\nexport interface ToObservableOptions {\n /**\n * The `Injector` to use when creating the underlying `effect` which watches the signal.\n *\n * If this isn't specified, the current [injection context](guide/di/dependency-injection-context)\n * will be used.\n */\n injector?: Injector;\n}\n\n/**\n * Exposes the value of an Angular `Signal` as an RxJS `Observable`.\n *\n * The signal's value will be propagated into the `Observable`'s subscribers using an `effect`.\n *\n * `toObservable` must be called in an injection context unless an injector is provided via options.\n *\n * @developerPreview\n */\nexport function toObservable<T>(source: Signal<T>, options?: ToObservableOptions): Observable<T> {\n !options?.injector && assertInInjectionContext(toObservable);\n const injector = options?.injector ?? inject(Injector);\n const subject = new ReplaySubject<T>(1);\n\n const watcher = effect(\n () => {\n let value: T;\n try {\n value = source();\n } catch (err) {\n untracked(() => subject.error(err));\n return;\n }\n untracked(() => subject.next(value));\n },\n {injector, manualCleanup: true},\n );\n\n injector.get(DestroyRef).onDestroy(() => {\n watcher.destroy();\n subject.complete();\n });\n\n return subject.asObservable();\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n assertInInjectionContext,\n assertNotInReactiveContext,\n computed,\n DestroyRef,\n inject,\n Injector,\n signal,\n Signal,\n WritableSignal,\n ɵRuntimeError,\n ɵRuntimeErrorCode,\n} from '@angular/core';\nimport {ValueEqualityFn} from '@angular/core/primitives/signals';\nimport {Observable, Subscribable} from 'rxjs';\n\n/**\n * Options for `toSignal`.\n *\n * @publicApi\n */\nexport interface ToSignalOptions<T> {\n /**\n * Initial value for the signal produced by `toSignal`.\n *\n * This will be the value of the signal until the observable emits its first value.\n */\n initialValue?: unknown;\n\n /**\n * Whether to require that the observable emits synchronously when `toSignal` subscribes.\n *\n * If this is `true`, `toSignal` will assert that the observable produces a value immediately upon\n * subscription. Setting this option removes the need to either deal with `undefined` in the\n * signal type or provide an `initialValue`, at the cost of a runtime error if this requirement is\n * not met.\n */\n requireSync?: boolean;\n\n /**\n * `Injector` which will provide the `DestroyRef` used to clean up the Observable subscription.\n *\n * If this is not provided, a `DestroyRef` will be retrieved from the current [injection\n * context](guide/di/dependency-injection-context), unless manual cleanup is requested.\n */\n injector?: Injector;\n\n /**\n * Whether the subscription should be automatically cleaned up (via `DestroyRef`) when\n * `toSignal`'s creation context is destroyed.\n *\n * If manual cleanup is enabled, then `DestroyRef` is not used, and the subscription will persist\n * until the `Observable` itself completes.\n */\n manualCleanup?: boolean;\n\n /**\n * Whether `toSignal` should throw errors from the Observable error channel back to RxJS, where\n * they'll be processed as uncaught exceptions.\n *\n * In practice, this means that the signal returned by `toSignal` will keep returning the last\n * good value forever, as Observables which error produce no further values. This option emulates\n * the behavior of the `async` pipe.\n */\n rejectErrors?: boolean;\n\n /**\n * A comparison function which defines equality for values emitted by the observable.\n *\n * Equality comparisons are executed against the initial value if one is provided.\n */\n equal?: ValueEqualityFn<T>;\n}\n\n// Base case: no options -> `undefined` in the result type.\nexport function toSignal<T>(source: Observable<T> | Subscribable<T>): Signal<T | undefined>;\n// Options with `undefined` initial value and no `requiredSync` -> `undefined`.\nexport function toSignal<T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T | undefined>> & {\n initialValue?: undefined;\n requireSync?: false;\n },\n): Signal<T | undefined>;\n// Options with `null` initial value -> `null`.\nexport function toSignal<T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T | null>> & {initialValue?: null; requireSync?: false},\n): Signal<T | null>;\n// Options with `undefined` initial value and `requiredSync` -> strict result type.\nexport function toSignal<T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T>> & {initialValue?: undefined; requireSync: true},\n): Signal<T>;\n// Options with a more specific initial value type.\nexport function toSignal<T, const U extends T>(\n source: Observable<T> | Subscribable<T>,\n options: NoInfer<ToSignalOptions<T | U>> & {initialValue: U; requireSync?: false},\n): Signal<T | U>;\n\n/**\n * Get the current value of an `Observable` as a reactive `Signal`.\n *\n * `toSignal` returns a `Signal` which provides synchronous reactive access to values produced\n * by the given `Observable`, by subscribing to that `Observable`. The returned `Signal` will always\n * have the most recent value emitted by the subscription, and will throw an error if the\n * `Observable` errors.\n *\n * With `requireSync` set to `true`, `toSignal` will assert that the `Observable` produces a value\n * immediately upon subscription. No `initialValue` is needed in this case, and the returned signal\n * does not include an `undefined` type.\n *\n * By default, the subscription will be automatically cleaned up when the current [injection\n * context](guide/di/dependency-injection-context) is destroyed. For example, when `toSignal` is\n * called during the construction of a component, the subscription will be cleaned up when the\n * component is destroyed. If an injection context is not available, an explicit `Injector` can be\n * passed instead.\n *\n * If the subscription should persist until the `Observable` itself completes, the `manualCleanup`\n * option can be specified instead, which disables the automatic subscription teardown. No injection\n * context is needed in this configuration as well.\n *\n * @developerPreview\n */\nexport function toSignal<T, U = undefined>(\n source: Observable<T> | Subscribable<T>,\n options?: ToSignalOptions<T | U> & {initialValue?: U},\n): Signal<T | U> {\n ngDevMode &&\n assertNotInReactiveContext(\n toSignal,\n 'Invoking `toSignal` causes new subscriptions every time. ' +\n 'Consider moving `toSignal` outside of the reactive context and read the signal value where needed.',\n );\n\n const requiresCleanup = !options?.manualCleanup;\n requiresCleanup && !options?.injector && assertInInjectionContext(toSignal);\n const cleanupRef = requiresCleanup\n ? (options?.injector?.get(DestroyRef) ?? inject(DestroyRef))\n : null;\n\n const equal = makeToSignalEqual(options?.equal);\n\n // Note: T is the Observable value type, and U is the initial value type. They don't have to be\n // the same - the returned signal gives values of type `T`.\n let state: WritableSignal<State<T | U>>;\n if (options?.requireSync) {\n // Initially the signal is in a `NoValue` state.\n state = signal({kind: StateKind.NoValue}, {equal});\n } else {\n // If an initial value was passed, use it. Otherwise, use `undefined` as the initial value.\n state = signal<State<T | U>>(\n {kind: StateKind.Value, value: options?.initialValue as U},\n {equal},\n );\n }\n\n // Note: This code cannot run inside a reactive context (see assertion above). If we'd support\n // this, we would subscribe to the observable outside of the current reactive context, avoiding\n // that side-effect signal reads/writes are attribute to the current consumer. The current\n // consumer only needs to be notified when the `state` signal changes through the observable\n // subscription. Additional context (related to async pipe):\n // https://github.com/angular/angular/pull/50522.\n const sub = source.subscribe({\n next: (value) => state.set({kind: StateKind.Value, value}),\n error: (error) => {\n if (options?.rejectErrors) {\n // Kick the error back to RxJS. It will be caught and rethrown in a macrotask, which causes\n // the error to end up as an uncaught exception.\n throw error;\n }\n state.set({kind: StateKind.Error, error});\n },\n // Completion of the Observable is meaningless to the signal. Signals don't have a concept of\n // \"complete\".\n });\n\n if (options?.requireSync && state().kind === StateKind.NoValue) {\n throw new ɵRuntimeError(\n ɵRuntimeErrorCode.REQUIRE_SYNC_WITHOUT_SYNC_EMIT,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n '`toSignal()` called with `requireSync` but `Observable` did not emit synchronously.',\n );\n }\n\n // Unsubscribe when the current context is destroyed, if requested.\n cleanupRef?.onDestroy(sub.unsubscribe.bind(sub));\n\n // The actual returned signal is a `computed` of the `State` signal, which maps the various states\n // to either values or errors.\n return computed(\n () => {\n const current = state();\n switch (current.kind) {\n case StateKind.Value:\n return current.value;\n case StateKind.Error:\n throw current.error;\n case StateKind.NoValue:\n // This shouldn't really happen because the error is thrown on creation.\n throw new ɵRuntimeError(\n ɵRuntimeErrorCode.REQUIRE_SYNC_WITHOUT_SYNC_EMIT,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n '`toSignal()` called with `requireSync` but `Observable` did not emit synchronously.',\n );\n }\n },\n {equal: options?.equal},\n );\n}\n\nfunction makeToSignalEqual<T>(\n userEquality: ValueEqualityFn<T> = Object.is,\n): ValueEqualityFn<State<T>> {\n return (a, b) =>\n a.kind === StateKind.Value && b.kind === StateKind.Value && userEquality(a.value, b.value);\n}\n\nconst enum StateKind {\n NoValue,\n Value,\n Error,\n}\n\ninterface NoValueState {\n kind: StateKind.NoValue;\n}\n\ninterface ValueState<T> {\n kind: StateKind.Value;\n value: T;\n}\n\ninterface ErrorState {\n kind: StateKind.Error;\n error: unknown;\n}\n\ntype State<T> = NoValueState | ValueState<T> | ErrorState;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n","import { effect, inject, Injectable, OnDestroy, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { DyFM_Log, minute, second } from '@futdevpro/fsm-dynamo';\nimport {\n DyFM_SocketClient_Params,\n DyFM_SocketClient_ServiceBase,\n DyFM_SocketEvent,\n DyFM_SocketEvent_Key,\n} from '@futdevpro/fsm-dynamo/socket';\n\nimport { CCAP_SocketStatus_Type } from '../../_enums/ccap-socket-status.enum';\nimport { Mon_SocketSubscriptionContent_Interface } from '../../_models/interfaces/monitoring-server-socket/ccap-socket-subscription-content.interface';\nimport { CCAP_ErrorDisplay_Interface } from '../../_models/interfaces/feedback-errors/ccap-error-display.interface';\nimport { Set_General_DataService } from '../../_modules/config/_modules/settings/_services/data-services/global-settings/set-general.data-service';\nimport { CCAP_GlobalError_ControlService } from './ccap-global-error.control-service';\nimport { CCAP_SOCKET_IO_RECONNECTION_DELAY_MS } from './socket.control-service.const';\nimport { CCAP_SocketEventEnvelope_Interface } from './socket.control-service.interface';\nimport { environment } from '../../../environments/environment';\n\n/**\n * Socket címe: csak environment.socketUrl, vagy same-origin fallback (/api nélkül).\n * Nem használjuk az api.baseUrl-t, mert az /api path-ot tartalmaz és rossz port lehet.\n */\nfunction getSocketAddress(): string {\n if (environment.socketUrl !== undefined && environment.socketUrl.trim() !== '') {\n return environment.socketUrl.trim();\n }\n if (typeof window !== 'undefined') {\n const fallback: string = new URL(window.location.href).origin;\n DyFM_Log.warn('CCAP_Socket | socketUrl not set, using same-origin fallback:', fallback);\n return fallback;\n }\n return '';\n}\n\n/** Type guard: objektum (nem Error), display/description/type kiolvasásához. */\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value != null && typeof value === 'object' && !(value instanceof Error);\n}\n\n/**\n * Jasmine / Karma test runner detektálása. A `jasmine` globális csak test-környezetben\n * létezik (Karma + Jasmine), production build-ben nincs. Test módban a socket nem indít\n * auto-connect-et, mert nincs szerver — különben a Karma dev-server (localhost:9876) ellen\n * másodpercenként próbálna reconnect-elni, és a `connect_error` log-spam lassítja a\n * tesztfutást (cycle 1 baseline: 459-535s / 600s budget).\n *\n * MIÉRT `jasmine` és nem `window.__karma__`?\n * A Karma a teszteket iframe-ben futtatja. Az iframe `window`-án nincs `__karma__` —\n * az a parent window-on él, és cross-origin ellenőrzés bonyolítaná a kódot. A `jasmine`\n * globális viszont az iframe-ben is elérhető, mert a Jasmine framework a spec bundle\n * részeként kerül be.\n */\nfunction isTestEnvironment(): boolean {\n if (typeof globalThis === 'undefined') {\n return false;\n }\n return (globalThis as { jasmine?: unknown }).jasmine !== undefined;\n}\n\n/** Szerverről érkező socket event nevek (egyezzen a server messaging.const értékeivel). */\nconst SOCKET_EVENT_ANSWER: string = 'answer';\nconst SOCKET_EVENT_NOTIFY_USER: string = 'notify-user';\nconst SOCKET_EVENT_AGENT_EVENTS: string = 'agent-events';\nconst SOCKET_EVENT_CONTEXT_UPDATED: string = 'context:updated';\nconst SOCKET_EVENT_MONITORING_EVENT: string = 'monitoring:event';\nconst SOCKET_EVENT_USER_NOTIFICATION: string = 'user-notification';\n\n/** CC Session stream: szerverről érkező real-time session eventek. */\nconst SOCKET_EVENT_CC_SESSION_STATUS: string = 'cc-session:status';\nconst SOCKET_EVENT_CC_SESSION_OUTPUT: string = 'cc-session:output';\nconst SOCKET_EVENT_CC_SESSION_EVENT: string = 'cc-session:event';\nconst SOCKET_EVENT_CC_SESSION_LIST_UPDATE: string = 'cc-session:list-update';\nconst SOCKET_EVENT_CC_SESSION_SESSION_UPDATE: string = 'cc-session:session-update';\n\n/** CA Session (Cursor ACP) stream — mirror + live output (szerver: ca-session-stream). */\nconst SOCKET_EVENT_CA_SESSION_STATUS: string = 'ca-session:status';\nconst SOCKET_EVENT_CA_SESSION_OUTPUT: string = 'ca-session:output';\nconst SOCKET_EVENT_CA_SESSION_EVENT: string = 'ca-session:event';\nconst SOCKET_EVENT_CA_SESSION_LIST_UPDATE: string = 'ca-session:list-update';\n\n/** Ext Session Message stream: szerver-oldali assembled message push (CC/CA/OC session). */\nconst SOCKET_EVENT_EXT_SESSION_MSG_MESSAGE: string = 'ext-session-msg:message';\nconst SOCKET_EVENT_EXT_SESSION_MSG_UPDATE: string = 'ext-session-msg:update';\n\n/** User interaction request: szerver → kliens (interaktív UI card megjelenítés). */\nconst SOCKET_EVENT_USER_INTERACTION_REQUEST: string = 'user-interaction:request';\n\n/** Instance data session status frissítés – Dark Office real-time (broadcast). */\nconst SOCKET_EVENT_INSTANCE_STATUS_UPDATED: string = 'instance-data:session-status-updated';\n\n/**\n * REQ-INST-STATE-001 Slice 6 (cycle 701) — peer WS connect/disconnect → real-time\n * presence frissítés. A kliens-oldali consumer (`ExS_InstancePresence_DataService`)\n * `refreshNow()`-t hív erre az eventre, így a UI 1s-en belül frissül,\n * nem 60s polling-ot kell várni.\n */\nconst SOCKET_EVENT_INSTANCE_PRESENCE_UPDATE: string = 'instance:presence-update';\n\n/** OCI instance data státusz – Dark Office real-time (broadcast). */\nconst SOCKET_EVENT_OCI_INSTANCE_STATUS_UPDATED: string = 'openclaw-instance-data:status-updated';\n\n/** CCI instance data státusz – Dark Office real-time (broadcast). */\nconst SOCKET_EVENT_CCI_INSTANCE_STATUS_UPDATED: string = 'cci-instance-data:status-updated';\n\n/** CAI instance data státusz – Dark Office real-time (broadcast). */\nconst SOCKET_EVENT_CAI_INSTANCE_STATUS_UPDATED: string = 'cai-instance-data:status-updated';\n\n/** Egységes terminál API: szerverről érkező eventek. */\nconst SOCKET_EVENT_TERMINAL_LIST_RESULT: string = 'terminal:list:result';\nconst SOCKET_EVENT_TERMINAL_START_RESULT: string = 'terminal:start:result';\nconst SOCKET_EVENT_TERMINAL_COMMAND_RESULT: string = 'terminal:command-result';\nconst SOCKET_EVENT_TERMINAL_COMMAND_OUTPUT: string = 'terminal:command-output';\n\n/** CC Rate Limit: instance-wide broadcast — bármelyik CC Session rate_limit_event-je. SSOT. */\nconst SOCKET_EVENT_CC_RATE_LIMIT_UPDATE: string = 'cc:rate-limit-update';\n\n/**\n * CC Account Usage: per-account rate_limit_event broadcast a Dashboard real-time\n * frissítéséhez (REQ-CC-USAGE-DASHBOARD-001 Slice 6 second-half cycle 871).\n * Payload: `{ accountKey, windowType, utilization, resetsAtMs, lastObservedStatus,\n * lastObservedByCcapId, lastObservedBySessionId, observedAt }`.\n */\nconst SOCKET_EVENT_CC_ACCOUNT_USAGE_UPDATE: string = 'cc:account-usage-update';\n\n/**\n * CC Account List: account-pool változások (új account felfedezve, displayName-\n * átírás) Dashboard live-frissítéshez. Payload: `{ change, accountKeys[], ccapId,\n * observedAt }`.\n */\nconst SOCKET_EVENT_CC_ACCOUNT_LIST_UPDATE: string = 'cc:account-list-update';\n\n/** Session queue: real-time queue frissítés (user-facing message queue). */\nconst SOCKET_EVENT_SESSION_QUEUE_UPDATED: string = 'session-queue:updated';\nconst SOCKET_EVENT_SESSION_QUEUE_LOCK_CHANGED: string = 'session-queue:lock-changed';\n\n/** User-notification type: szerver oldali globális hiba (uncaughtException/unhandledRejection). */\nconst USER_NOTIFICATION_TYPE_SYSTEM_ERROR: string = 'system-error';\n\n/** User-notification type: terminál POC hiba (exec-terminal manager). */\nconst USER_NOTIFICATION_TYPE_TERMINAL_ERROR: string = 'terminal-error';\n\n/** Server start ID event – szerver újraindulás detektálásához (auto-reload). */\nconst SOCKET_EVENT_SERVER_START_ID: string = 'server:start-id';\n\n/** Socket.io kliens connect_error event neve. */\nconst SOCKET_EVENT_CONNECT_ERROR: string = 'connect_error';\n\n/** Csatlakozási timeout (ms): ha ennyi időn belül nem connect/error, error állapotot mutatunk. */\nconst CONNECTION_TIMEOUT_MS: number = 8 * second;\n\n\n/**\n * Socket control service: egyetlen app-szintű WebSocket kapcsolat.\n * DyFM_SocketClient_ServiceBase alapú; státusz (connecting | connected | error), lastError tooltip-höz,\n * reconnect kattintásra vagy base automata retry.\n */\n@Injectable({ providedIn: 'root' })\nexport class CCAP_Socket_ControlService\n extends DyFM_SocketClient_ServiceBase<Mon_SocketSubscriptionContent_Interface>\n implements OnDestroy {\n\n /** Státusz (connecting | connected | error); indikátor és tooltip alapja. */\n readonly status_$ = signal<CCAP_SocketStatus_Type>(CCAP_SocketStatus_Type.connecting);\n\n /** Utolsó socket hiba (connect_error / error); tooltip / copy alapja. */\n readonly lastError_$ = signal<unknown | null>(null);\n\n /** Csatlakozási kísérletek száma (connect_error-kor nő, sikeres connect-nél nullázódik). */\n readonly connectAttemptCount_$ = signal<number>(0);\n\n /** Volt-e már sikeres connect (disconnect-nél csak ekkor mutatunk error-t, ne az induláskori disconnect-nél). */\n private hasEverConnected: boolean = false; // ccap-review-disable-line boolean-is-prefix\n\n /** Connection timeout handle (clear connect/error esetén, restart reconnect-nél). */\n private connectionTimeoutId: ReturnType<typeof setTimeout> | null = null;\n\n /** Szerver start ID – auto-reload ha a szerver újraindult (az ID megváltozott). */\n private knownServerStartId: number | null = null;\n\n /** Szerverről érkező eventek (envelope: event + payload). */\n private readonly eventSubject_S: Subject<CCAP_SocketEventEnvelope_Interface> =\n new Subject<CCAP_SocketEventEnvelope_Interface>();\n\n /** Event stream (answer, notify-user, agent-events, context:updated, monitoring:event, user-notification). */\n readonly event$: Observable<CCAP_SocketEventEnvelope_Interface> =\n this.eventSubject_S.asObservable();\n\n /** Csatlakozás állapot (base connected$ → signal). */\n readonly connected_$ = toSignal(this.connected$, { initialValue: false });\n\n /** Aktuális socket cím (dev-ben: interaktív terminálhoz a backendre kell csatlakozni). */\n get socketAddress(): string {\n const addr: string = getSocketAddress();\n return addr || (this.params?.address ?? '');\n }\n\n private readonly globalError_CS: CCAP_GlobalError_ControlService = inject(CCAP_GlobalError_ControlService);\n\n private readonly settingsGeneral_DS: Set_General_DataService = inject(\n Set_General_DataService,\n );\n\n constructor() {\n super();\n // Test-módban nem indítjuk a 8s connection timeout-ot: minden spec instance egy-egy\n // setTimeout-ot hagyott volna a test zone-ban, ami (a) felesleges timer-aktivitást\n // produkál teszt-run közben, (b) a cycle 2 fix óta már amúgy sem lennének reconnect\n // próbálkozások, amik a timeout-ot értelmessé tennék. Production / Capacitor: változatlan.\n if (!isTestEnvironment()) {\n this.startConnectionTimeout();\n }\n\n effect((): void => {\n if (this.connected && !this.subscribed) {\n this.subscribe();\n }\n });\n }\n\n /**\n * Connection timeout indítása: ha CONNECTION_TIMEOUT_MS-en belül nem jön connect/error,\n * error állapotot és lastError-t állítunk (pl. szerver nem elérhető, vagy setup elbukott).\n */\n private startConnectionTimeout(): void {\n this.clearConnectionTimeout();\n this.connectionTimeoutId = setTimeout((): void => {\n this.connectionTimeoutId = null;\n if (this.status_$() === CCAP_SocketStatus_Type.connecting) {\n const timeoutError: Error = new Error(\n 'Socket connection timeout – server unreachable or setup failed. Click to reconnect.',\n );\n this.status_$.set(CCAP_SocketStatus_Type.error);\n this.lastError_$.set(timeoutError);\n DyFM_Log.warn('CCAP_Socket | Connection timeout');\n }\n }, CONNECTION_TIMEOUT_MS);\n }\n\n /** Connection timeout törlése (connect / connect_error / error esetén). */\n private clearConnectionTimeout(): void {\n if (this.connectionTimeoutId !== null) {\n clearTimeout(this.connectionTimeoutId);\n this.connectionTimeoutId = null;\n }\n }\n\n override getParams(): DyFM_SocketClient_Params {\n const address: string = getSocketAddress();\n const isTestEnv: boolean = isTestEnvironment();\n const socketOptions: Record<string, unknown> = {\n path: '/socket',\n transports: ['polling', 'websocket'],\n reconnectionDelay: CCAP_SOCKET_IO_RECONNECTION_DELAY_MS,\n };\n // Test-módban sem a DyFM-level reconnect, sem a socket.io-level reconnect nem fut.\n // A base class `connectSocket()`-je explicit `socket.connect()`-et hív (nem lehet\n // autoConnect:false-szal megakadályozni), ezért itt a `reconnection: false` viszi le\n // a socket.io belső retry-ját — egyszeri connect_error után nincs retry-spam.\n // Production / Capacitor változatlan (reconnection socket.io default: true).\n if (isTestEnv) {\n socketOptions.reconnection = false;\n }\n return new DyFM_SocketClient_Params({\n name: 'CCAP Client',\n address: address,\n reconnect: !isTestEnv,\n reconnectDelay: minute,\n socketOptions: socketOptions,\n });\n }\n\n override getIncomingEvents(): DyFM_SocketEvent<unknown>[] {\n const self: CCAP_Socket_ControlService = this;\n\n // FONTOS: NEM capture-öljük a `this.eventSubject_S`-t lokális változóba!\n // A szülő osztály (`DyFM_SocketClient_ServiceBase`) `asyncConstructor()`-ból hívja\n // `getIncomingEvents()`-et, ami a `super()` során fut — a gyerek osztály field initializer-ei\n // (eventSubject_S = new Subject()) csak a super() visszatérése UTÁN futnak le.\n // Ha closure-ban capture-öljük, az undefined marad örökre.\n //\n // Defenzív hibakezelés: ha az eventSubject_S bármilyen okból nem elérhető (edge case,\n // destroy utáni late event), a hiba a globális error kezelőn keresztül jelenik meg\n // a felületen — soha nem maradhat néma konzol-error.\n const pushEnvelope = (eventKey: string, content: unknown): void => {\n try {\n const payload: Record<string, unknown> = isRecord(content) ? content : {};\n if (!self.eventSubject_S) {\n const errorMessage: string =\n `Socket event dropped: eventSubject not initialized`\n + ` | event: ${eventKey}`\n + ` | This means the socket event system is not functional — no live updates will arrive.`;\n DyFM_Log.error(`[CCAP_Socket] ${errorMessage}`);\n self.globalError_CS.showError(\n new Error(errorMessage),\n 'client-socket-event-subject',\n );\n return;\n }\n self.eventSubject_S.next({ event: eventKey, payload: payload });\n } catch (err: unknown) {\n // A framework `DyFM_SocketEvent.executeEventTasks` catch blokkja csak konzolra logol —\n // a felületen nem jelenik meg semmi. Minden pushEnvelope hibát a globális error kezelőn\n // keresztül a felületre teszünk, hogy a user lássa és jelezni tudja.\n const errMessage: string = err instanceof Error ? err.message : String(err);\n DyFM_Log.error(`[CCAP_Socket] pushEnvelope failed | event: ${eventKey} | ${errMessage}`);\n self.globalError_CS.showError(\n err instanceof Error\n ? err\n : new Error(`Socket event processing failed: ${eventKey} — ${errMessage}`),\n 'client-socket-push-envelope',\n );\n }\n };\n\n return [\n new DyFM_SocketEvent<unknown>({\n eventKey: DyFM_SocketEvent_Key.outgoingNewConnection,\n tasks: [\n async (): Promise<void> => {\n self.clearConnectionTimeout();\n self.hasEverConnected = true;\n self.status_$.set(CCAP_SocketStatus_Type.connected);\n self.lastError_$.set(null);\n self.connectAttemptCount_$.set(0);\n DyFM_Log.info('CCAP_Socket | Connected');\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: DyFM_SocketEvent_Key.disconnect,\n tasks: [\n async (): Promise<void> => {\n if (self.hasEverConnected) {\n self.status_$.set(CCAP_SocketStatus_Type.error);\n }\n DyFM_Log.info('CCAP_Socket | Disconnected');\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CONNECT_ERROR,\n tasks: [\n async (err: unknown): Promise<void> => {\n self.clearConnectionTimeout();\n self.connectAttemptCount_$.update((c: number): number => c + 1);\n const error: Error = err instanceof Error ? err : new Error(String(err));\n const description: unknown = isRecord(err) ? err.description : undefined;\n const type: unknown = isRecord(err) ? err.type : undefined;\n DyFM_Log.info(\n 'CCAP_Socket | connect_error',\n `attempt #${self.connectAttemptCount_$()}`,\n error?.message ?? String(err),\n description !== undefined ? String(description) : '',\n type !== undefined ? String(type) : '',\n );\n self.status_$.set(CCAP_SocketStatus_Type.error);\n const socketUrl: string = self.params?.address ?? '';\n const displayError: Record<string, unknown> =\n self.buildSocketErrorDisplay({\n err: error,\n socketUrl: socketUrl,\n eventType: 'connect_error',\n raw: err,\n });\n self.lastError_$.set(displayError);\n if (self.shouldReportSocketConnectionErrorsToErrorList()) {\n self.globalError_CS.reportErrorOnly({\n message: String(displayError.fullMessage ?? displayError.message ?? error.message),\n stack: typeof displayError.stack === 'string' ? displayError.stack : undefined,\n source: 'client-socket',\n });\n }\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: DyFM_SocketEvent_Key.error,\n tasks: [\n async (content: unknown): Promise<void> => {\n self.clearConnectionTimeout();\n self.status_$.set(CCAP_SocketStatus_Type.error);\n const error: Error = content instanceof Error ? content : new Error(String(content));\n const socketUrl: string = self.params?.address ?? '';\n const displayError: Record<string, unknown> =\n self.buildSocketErrorDisplay({\n err: error,\n socketUrl: socketUrl,\n eventType: 'error',\n raw: content,\n });\n self.lastError_$.set(displayError);\n if (self.shouldReportSocketConnectionErrorsToErrorList()) {\n self.globalError_CS.reportErrorOnly({\n message: String(displayError.fullMessage ?? displayError.message ?? error.message),\n stack: typeof displayError.stack === 'string' ? displayError.stack : undefined,\n source: 'client-socket',\n });\n }\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_ANSWER,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_ANSWER, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_NOTIFY_USER,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_NOTIFY_USER, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_AGENT_EVENTS,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_AGENT_EVENTS, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CONTEXT_UPDATED,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CONTEXT_UPDATED, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_MONITORING_EVENT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_MONITORING_EVENT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_USER_NOTIFICATION,\n tasks: [\n async (content: unknown): Promise<void> => {\n const payload: Record<string, unknown> = isRecord(content) ? content : {};\n pushEnvelope(SOCKET_EVENT_USER_NOTIFICATION, content);\n if (payload.type === USER_NOTIFICATION_TYPE_SYSTEM_ERROR) {\n const display: CCAP_ErrorDisplay_Interface =\n self.buildServerErrorDisplay(payload);\n self.globalError_CS.showError(display, 'client-socket');\n } else if (payload.type === USER_NOTIFICATION_TYPE_TERMINAL_ERROR) {\n const display: CCAP_ErrorDisplay_Interface =\n self.buildTerminalErrorDisplay(payload);\n self.globalError_CS.showError(display, 'client-socket');\n }\n },\n ],\n }),\n // ── Server restart detection (auto-reload) ─────────────────\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_SERVER_START_ID,\n tasks: [\n async (content: unknown): Promise<void> => {\n const payload: Record<string, unknown> = isRecord(content) ? content : {};\n const serverStartId: number | undefined =\n typeof payload.serverStartId === 'number' ? payload.serverStartId : undefined;\n if (serverStartId === undefined) return;\n\n if (self.knownServerStartId === null) {\n // Első csatlakozás – eltároljuk a szerver start ID-t\n self.knownServerStartId = serverStartId;\n DyFM_Log.info('CCAP_Socket | Server start ID stored:', serverStartId);\n } else if (self.knownServerStartId !== serverStartId) {\n // Szerver újraindult – auto-reload\n DyFM_Log.warn('CCAP_Socket | Server restarted (start ID changed), reloading page');\n window.location.reload();\n }\n },\n ],\n }),\n // ── CC Session stream events ──────────────────────────────\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CC_SESSION_STATUS,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CC_SESSION_STATUS, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CC_SESSION_OUTPUT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CC_SESSION_OUTPUT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CC_SESSION_EVENT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CC_SESSION_EVENT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CC_SESSION_LIST_UPDATE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CC_SESSION_LIST_UPDATE, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CC_SESSION_SESSION_UPDATE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CC_SESSION_SESSION_UPDATE, content);\n },\n ],\n }),\n // ── CA Session (ACP) stream ───────────────────────────────\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CA_SESSION_STATUS,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CA_SESSION_STATUS, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CA_SESSION_OUTPUT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CA_SESSION_OUTPUT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CA_SESSION_EVENT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CA_SESSION_EVENT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CA_SESSION_LIST_UPDATE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CA_SESSION_LIST_UPDATE, content);\n },\n ],\n }),\n // ── Ext Session Message stream (assembled messages) ────────\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_EXT_SESSION_MSG_MESSAGE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_EXT_SESSION_MSG_MESSAGE, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_EXT_SESSION_MSG_UPDATE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_EXT_SESSION_MSG_UPDATE, content);\n },\n ],\n }),\n // ── User Interaction request ───────────────────────────────\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_USER_INTERACTION_REQUEST,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_USER_INTERACTION_REQUEST, content);\n },\n ],\n }),\n // ── Instance Data real-time status updates ───────────────\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_INSTANCE_STATUS_UPDATED,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_INSTANCE_STATUS_UPDATED, content);\n },\n ],\n }),\n // REQ-INST-STATE-001 Slice 6 (cycle 701) — peer WS connect/disconnect →\n // real-time presence broadcast. ExS_InstancePresence_DataService a\n // konsumer, refreshNow()-t hív erre.\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_INSTANCE_PRESENCE_UPDATE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_INSTANCE_PRESENCE_UPDATE, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_OCI_INSTANCE_STATUS_UPDATED,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_OCI_INSTANCE_STATUS_UPDATED, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CCI_INSTANCE_STATUS_UPDATED,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CCI_INSTANCE_STATUS_UPDATED, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CAI_INSTANCE_STATUS_UPDATED,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CAI_INSTANCE_STATUS_UPDATED, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_TERMINAL_LIST_RESULT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_TERMINAL_LIST_RESULT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_TERMINAL_START_RESULT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_TERMINAL_START_RESULT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_TERMINAL_COMMAND_RESULT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_TERMINAL_COMMAND_RESULT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_TERMINAL_COMMAND_OUTPUT,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_TERMINAL_COMMAND_OUTPUT, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_SESSION_QUEUE_UPDATED,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_SESSION_QUEUE_UPDATED, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_SESSION_QUEUE_LOCK_CHANGED,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_SESSION_QUEUE_LOCK_CHANGED, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CC_RATE_LIMIT_UPDATE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CC_RATE_LIMIT_UPDATE, content);\n },\n ],\n }),\n // REQ-CC-USAGE-DASHBOARD-001 Slice 6 second-half (cycle 871):\n // CC Account Dashboard live-frissítés socket subscriber-ek.\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CC_ACCOUNT_USAGE_UPDATE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CC_ACCOUNT_USAGE_UPDATE, content);\n },\n ],\n }),\n new DyFM_SocketEvent<unknown>({\n eventKey: SOCKET_EVENT_CC_ACCOUNT_LIST_UPDATE,\n tasks: [\n async (content: unknown): Promise<void> => {\n pushEnvelope(SOCKET_EVENT_CC_ACCOUNT_LIST_UPDATE, content);\n },\n ],\n }),\n ];\n }\n\n override async getSubscriptionContent(): Promise<Mon_SocketSubscriptionContent_Interface> {\n const clientId: string | undefined = this.socket?.id;\n return Promise.resolve({ clientId: clientId });\n }\n\n /**\n * General beállítás alapján: transport connect_error / error → hibalista API (reportErrorOnly).\n */\n private shouldReportSocketConnectionErrorsToErrorList(): boolean {\n return this.settingsGeneral_DS.section_$().form.reportSocketConnectionErrorsToErrorList === true;\n }\n\n /**\n * Socket connect_error / error → display objektum (eredeti hiba megmarad, REQ-SYS-005-CAUSE).\n * A message a hibalistába kerül; a tooltip/copy-ban megjelennek: eventType, socketUrl, attemptedAt,\n * description, type, connectAttempt, socketUrlSource, configuredTransports, pageOrigin,\n * és a raw description-ből kinyert HTTP/XHR részletek (status, statusText, responseUrl, stb.).\n */\n private buildSocketErrorDisplay(params: {\n err: Error;\n socketUrl: string;\n eventType: 'connect_error' | 'error';\n raw?: unknown;\n }): Record<string, unknown> {\n const baseMessage: string =\n params.err.message?.trim() ? params.err.message : 'WebSocket connection failed';\n const message: string =\n params.socketUrl.trim()\n ? `WebSocket: ${baseMessage} — ${params.socketUrl}`\n : `WebSocket: ${baseMessage}`;\n\n // Alap mezők: message, stack, socketUrl, transport, eventType, attemptedAt\n const result: Record<string, unknown> = {\n message: message,\n fullMessage: message,\n name: params.err.name,\n stack: params.err.stack ?? null,\n socketUrl: params.socketUrl,\n transport: 'websocket',\n eventType: params.eventType,\n attemptedAt: new Date().toISOString(),\n connectAttempt: this.connectAttemptCount_$(),\n };\n\n // Socket URL forrása: environment.socketUrl explicit-e vagy same-origin fallback\n const isExplicitSocketUrl: boolean =\n environment.socketUrl !== undefined && environment.socketUrl.trim() !== '';\n result.socketUrlSource = isExplicitSocketUrl ? 'environment.socketUrl' : 'same-origin fallback';\n\n // Konfigurált transportok (polling, websocket)\n const transports: string[] = this.params?.socketOptions?.['transports'] as string[] ?? [];\n if (transports.length > 0) {\n result.configuredTransports = transports.join(', ');\n }\n\n // Aktuális page origin (honnét próbál csatlakozni a kliens)\n if (typeof window !== 'undefined') {\n result.pageOrigin = window.location.origin;\n }\n\n // Raw error mezők kinyerése (Socket.IO connect_error payload)\n if (isRecord(params.raw)) {\n const rawObj: Record<string, unknown> = params.raw;\n\n // description: string vagy beágyazott Error/objektum (XMLHttpRequest hiba, stb.)\n const rawDescription: unknown = rawObj.description;\n if (typeof rawDescription === 'string' && rawDescription.trim()) {\n result.description = rawDescription.trim();\n } else if (rawDescription instanceof Error) {\n result.description = rawDescription.message;\n if (rawDescription.stack) {\n result.descriptionStack = rawDescription.stack;\n }\n } else if (rawDescription instanceof Event) {\n // DOM Event (pl. WebSocket error event) — a browser tipikusan csak minimum info-t ad át\n // (SSL handshake fail, CORS, network unreachable). Ez a leggyakoribb Capacitor natív + self-signed cert eset.\n result.description = this.extractDomEventInfo(rawDescription);\n } else if (isRecord(rawDescription)) {\n // XHR hiba objektum: message, status, statusText, responseURL, stb.\n const descObj: Record<string, unknown> = rawDescription;\n const descParts: string[] = [];\n if (typeof descObj.message === 'string' && descObj.message.trim()) {\n descParts.push(descObj.message.trim());\n }\n if (typeof descObj.status === 'number') {\n result.httpStatus = descObj.status;\n descParts.push(`HTTP ${descObj.status}`);\n }\n if (typeof descObj.statusText === 'string' && descObj.statusText.trim()) {\n result.httpStatusText = descObj.statusText.trim();\n descParts.push(descObj.statusText.trim());\n }\n if (typeof descObj.responseURL === 'string' && descObj.responseURL.trim()) {\n result.responseUrl = descObj.responseURL.trim();\n }\n if (descParts.length > 0) {\n result.description = descParts.join(' – ');\n }\n }\n\n // type: Socket.IO error type (pl. \"TransportError\")\n if (typeof rawObj.type === 'string' && rawObj.type.trim()) {\n result.type = rawObj.type.trim();\n }\n\n // context: néhány Socket.IO verzió a raw-ban ad egy \"context\" mezőt\n if (isRecord(rawObj.context)) {\n result.errorContext = rawObj.context;\n }\n }\n\n // Ha a raw maga DOM Event (WebSocket error — pl. wss:// SSL handshake fail — event.type=='error'),\n // a JSON.stringify `isTrusted: true`-n kívül semmit nem ad. Direkt event-info extrakció.\n if (params.raw instanceof Event && !result.description) {\n result.description = this.extractDomEventInfo(params.raw);\n }\n\n // fullMessage bővítése a kinyert részletekkel (description, httpStatus, connectAttempt)\n const enrichParts: string[] = [message];\n if (typeof result.description === 'string') {\n enrichParts.push(`Cause: ${result.description}`);\n }\n if (typeof result.httpStatus === 'number') {\n const statusText: string =\n typeof result.httpStatusText === 'string' ? ` ${result.httpStatusText}` : '';\n enrichParts.push(`HTTP: ${result.httpStatus}${statusText}`);\n }\n if (typeof result.responseUrl === 'string') {\n enrichParts.push(`Response URL: ${result.responseUrl}`);\n }\n enrichParts.push(`Attempt: #${result.connectAttempt}`);\n enrichParts.push(`Source: ${result.socketUrlSource}`);\n result.fullMessage = enrichParts.join(' | ');\n\n return result;\n }\n\n /**\n * DOM Event kibontása diagnosztikai stringgé.\n * A natív WebSocket `onerror` / XHR `error` event-ek biztonsági okból csak\n * `type`, `isTrusted`, `timeStamp` mezőket mutatnak — `target.readyState` / `target.url` a célból\n * jön, hogy legalább valami értelmes üzenet legyen.\n * Capacitor natív + HTTPS self-signed cert tipikusan ide vezet.\n */\n private extractDomEventInfo(event: Event): string {\n const parts: string[] = [];\n parts.push(`type=${event.type}`);\n const target: unknown = event.target;\n if (isRecord(target)) {\n if (typeof target.readyState === 'number') {\n parts.push(`readyState=${target.readyState}`);\n }\n if (typeof target.url === 'string' && target.url) {\n parts.push(`url=${target.url}`);\n }\n if (typeof target.responseURL === 'string' && target.responseURL) {\n parts.push(`responseURL=${target.responseURL}`);\n }\n if (typeof target.status === 'number') {\n parts.push(`status=${target.status}`);\n }\n }\n parts.push('(DOM Event - tipikusan SSL cert reject, CORS, vagy network unreachable)');\n return parts.join(', ');\n }\n\n /**\n * Szerverről érkező terminal-error user-notification payload → CCAP_ErrorDisplay_Interface.\n * Megjelenik a hiba popup-ban és a hibalistában (POC terminál hibák).\n */\n private buildTerminalErrorDisplay(payload: Record<string, unknown>): CCAP_ErrorDisplay_Interface {\n const message: string =\n typeof payload.message === 'string' ? payload.message : String(payload.message ?? '');\n const code: string =\n typeof payload.code === 'string' ? payload.code : String(payload.code ?? '');\n const parts: string[] = [message];\n if (code) {\n parts.push(`Kód: ${code}`);\n }\n if (typeof payload.terminalId === 'string' && payload.terminalId.trim()) {\n parts.push(`Terminál ID: ${(payload.terminalId as string).trim()}`);\n }\n if (typeof payload.path === 'string' && payload.path.trim()) {\n parts.push(`Path: ${(payload.path as string).trim()}`);\n }\n const detailsText: string = parts.join('\\n');\n const timestamp: number =\n typeof payload.timestamp === 'number' ? payload.timestamp : Date.now();\n\n return {\n source: 'server',\n message: message,\n stack: null,\n detailsText: detailsText,\n timestamp: timestamp,\n };\n }\n\n /**\n * Szerverről érkező system-error user-notification payload → CCAP_ErrorDisplay_Interface.\n */\n private buildServerErrorDisplay(payload: Record<string, unknown>): CCAP_ErrorDisplay_Interface {\n const message: string =\n typeof payload.message === 'string' ? payload.message : String(payload.message ?? '');\n const stackRaw: unknown = payload.stack;\n const stack: string | null =\n typeof stackRaw === 'string' ? stackRaw : (stackRaw != null ? String(stackRaw) : null);\n const detailsText: string =\n typeof payload.detailsText === 'string'\n ? payload.detailsText\n : JSON.stringify(payload, null, 2);\n const timestamp: number =\n typeof payload.timestamp === 'number' ? payload.timestamp : Date.now();\n\n return {\n source: 'server',\n message: message,\n stack: stack,\n detailsText: detailsText,\n timestamp: timestamp,\n };\n }\n\n /**\n * Újracsatlakozás (main frame indikátor kattintás).\n * A base reconnect() csak a lokális dynamo-fsm build-ben elérhető; itt disconnect + connect.\n */\n override reconnect(): void {\n if (this.socket) {\n this.clearConnectionTimeout();\n this.status_$.set(CCAP_SocketStatus_Type.connecting);\n this.lastError_$.set(null);\n this.connectAttemptCount_$.set(0);\n this.startConnectionTimeout();\n const address: string = this.params?.address ?? getSocketAddress();\n DyFM_Log.info('CCAP_Socket | Reconnecting to', address);\n this.socket.disconnect();\n this.socket.connect();\n }\n }\n\n /**\n * Event küldése a szervernek (pl. session:attach, new-user-msg).\n * Csak ha connected, különben nem küld.\n */\n emit(event: string, payload: Record<string, unknown>): void {\n if (this.socket?.connected) {\n this.socket.emit(event, payload);\n }\n }\n\n /**\n * Aktív diagnosztika: probe-olja a szerver API-t és a socket.io endpointot,\n * összegyűjti a kapcsolódási állapotot és a szerver konfigurációt.\n * A mainframe „Diagnózis\" gombból hívódik; az eredmény a tooltip-ben jelenik meg.\n */\n async diagnoseConnection(): Promise<Record<string, unknown>> {\n const socketUrl: string = this.params?.address ?? getSocketAddress();\n const results: Record<string, unknown> = {\n timestamp: new Date().toISOString(),\n socketUrl: socketUrl,\n socketUrlSource: (environment.socketUrl !== undefined && environment.socketUrl.trim() !== '')\n ? 'environment.socketUrl'\n : 'same-origin fallback',\n pageOrigin: typeof window !== 'undefined' ? window.location.origin : '',\n socketConnected: this.socket?.connected ?? false,\n socketId: this.socket?.id ?? null,\n connectAttemptCount: this.connectAttemptCount_$(),\n currentStatus: this.status_$(),\n };\n\n // 1. Szerver API elérhetőség: GET /api/server/status\n const serverStatusResult: Record<string, unknown> = await CCAP_Socket_ControlService.probeEndpoint(\n '/api/server/status',\n 'serverStatusApi',\n );\n results.serverStatusApi = serverStatusResult;\n\n // Ha a szerver status válasz tartalmaz httpPort/socketPort-ot, kiemeljük\n if (serverStatusResult.ok === true && serverStatusResult.body !== undefined) {\n const body: unknown = serverStatusResult.body;\n if (body !== null && typeof body === 'object') {\n const bodyRec: Record<string, unknown> = body as Record<string, unknown>;\n results.serverReportedHttpPort = bodyRec.httpPort ?? null;\n results.serverReportedSocketPort = bodyRec.socketPort ?? null;\n }\n }\n\n // 2. Socket.IO polling endpoint (HTTPS proxy-n keresztül; DyNTS path: /socket)\n const socketPath: string = (this.params?.socketOptions?.['path'] as string) ?? '/socket';\n const pollUrl: string = `${socketUrl}${socketPath}/?EIO=4&transport=polling&t=${Date.now()}`;\n const socketIoResult: Record<string, unknown> = await CCAP_Socket_ControlService.probeEndpoint(\n pollUrl,\n 'socketIoPolling',\n );\n results.socketIoPolling = socketIoResult;\n\n // 3. Direkt socket port polling (ha a szerver reportolta a portot)\n const reportedSocketPort: unknown = results.serverReportedSocketPort;\n if (typeof reportedSocketPort === 'number' && reportedSocketPort > 0) {\n const directPollUrl: string =\n `http://localhost:${reportedSocketPort}${socketPath}/?EIO=4&transport=polling&t=${Date.now()}`;\n const directResult: Record<string, unknown> = await CCAP_Socket_ControlService.probeEndpoint(\n directPollUrl,\n 'socketIoDirectPort',\n );\n results.socketIoDirectPort = directResult;\n }\n\n return results;\n }\n\n /**\n * HTTP endpoint probe: fetch + válasz részletek összegyűjtése (status, body preview, timing).\n */\n private static async probeEndpoint(\n url: string,\n label: string,\n ): Promise<Record<string, unknown>> {\n const result: Record<string, unknown> = { url: url, label: label };\n const startMs: number = performance.now();\n try {\n const response: Response = await fetch(url, { method: 'GET', cache: 'no-store' });\n const elapsed: number = Math.round(performance.now() - startMs);\n result.ok = response.ok;\n result.httpStatus = response.status;\n result.httpStatusText = response.statusText;\n result.elapsedMs = elapsed;\n try {\n const text: string = await response.text();\n // JSON parse próba; ha sikerül, a body objektumként kerül be\n try {\n result.body = JSON.parse(text);\n } catch {\n result.bodyPreview = text.substring(0, 300);\n }\n } catch {\n result.bodyReadError = 'Failed to read response body';\n }\n } catch (fetchErr: unknown) {\n const elapsed: number = Math.round(performance.now() - startMs);\n result.elapsedMs = elapsed;\n result.ok = false;\n result.fetchError = fetchErr instanceof Error ? fetchErr.message : String(fetchErr);\n if (fetchErr instanceof TypeError) {\n result.fetchErrorType = 'TypeError (network/CORS/SSL)';\n }\n }\n return result;\n }\n\n ngOnDestroy(): void {\n this.clearConnectionTimeout();\n if (this.socket) {\n this.socket.disconnect();\n }\n }\n}\n","/**\n * WebSocket (socket) kapcsolat állapota (user-szintű indikátor).\n */\nexport enum CCAP_SocketStatus_Type {\n connecting = 'connecting',\n connected = 'connected',\n error = 'error',\n}\n"],"mappings":"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","names":["DyFM_SocketEvent_Key","exports","times_const_1","require","log_util_1","DyFM_SocketClient_Params","name","service","address","port","reconnectDelay","second","reconnect","socketOptions","constructor","set","Object","assign","autoConnect","reconnection","reconnectionDelay","DyFM_Log","warn","exports","global_settings_const_1","require","array_util_1","log_util_1","stack_util_1","error_control_model_1","sck_event_key_enum_1","DyFM_SocketEvent","name","eventKey","serviceName","preProcesses","tasks","logEvent","logEventContent","stackLocation","constructor","set","DyFM_getConstructionStackLocation","undefined","DyFM_SocketEvent_Key","subscribe","incomingNewConnection","outgoingNewConnection","disconnect","includes","DyFM_global_settings","log_settings","socket_allEvents","socket_mainEvents","socket_eventContent","error","DyFM_Log","getPreLog","content","__async","log","executeEventTasks","issuer","DyFM_Array","asyncForEach","preProcess","task","DyFM_Error","logShort","exports","require_commons","__commonJSMin","exports","Object","defineProperty","value","ERROR_PACKET","PACKET_TYPES_REVERSE","PACKET_TYPES","create","keys","forEach","key","type","data","require_encodePacket_browser","__commonJSMin","exports","Object","defineProperty","value","encodePacket","encodePacketToBinary","commons_js_1","require","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","isView","obj","buffer","type","data","supportsBinary","callback","encodeBlobAsBase64","PACKET_TYPES","fileReader","FileReader","onload","content","result","split","readAsDataURL","toArray","Uint8Array","byteOffset","byteLength","TEXT_ENCODER","packet","arrayBuffer","then","encoded","TextEncoder","encode","require_base64_arraybuffer","__commonJSMin","exports","Object","defineProperty","value","decode","encode","chars","lookup","Uint8Array","i","length","charCodeAt","arraybuffer","bytes","len","base64","substring","bufferLength","p","encoded1","encoded2","encoded3","encoded4","ArrayBuffer","require_decodePacket_browser","__commonJSMin","exports","Object","defineProperty","value","decodePacket","commons_js_1","require","base64_arraybuffer_js_1","withNativeArrayBuffer","ArrayBuffer","encodedPacket","binaryType","type","data","mapBinary","charAt","decodeBase64Packet","substring","PACKET_TYPES_REVERSE","length","ERROR_PACKET","decoded","decode","base64","Blob","buffer","require_cjs","__commonJSMin","exports","Object","defineProperty","value","decodePayload","decodePacket","encodePayload","encodePacket","protocol","createPacketEncoderStream","createPacketDecoderStream","encodePacket_js_1","require","enumerable","get","decodePacket_js_1","commons_js_1","SEPARATOR","String","packets","callback","length","encodedPackets","Array","count","forEach","packet","i","encodedPacket","join","encodedPayload","binaryType","split","decodedPacket","push","type","TransformStream","transform","controller","encodePacketToBinary","payloadLength","header","Uint8Array","DataView","buffer","setUint8","view","setUint16","setBigUint64","BigInt","data","enqueue","TEXT_DECODER","totalLength","chunks","reduce","acc","chunk","concatChunks","size","shift","j","slice","maxPayload","TextDecoder","state","expectedLength","isBinary","headerArray","byteOffset","getUint16","n","getUint32","Math","pow","ERROR_PACKET","decode","esm_exports","__export","Emitter","obj","mixin","key","prototype","init_esm","__esmMin","on","addEventListener","event","fn","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","length","callbacks","cb","i","splice","emit","args","Array","slice","len","emitReserved","listeners","hasListeners","require_globals","__commonJSMin","exports","Object","defineProperty","value","defaultBinaryType","globalThisShim","nextTick","createCookieJar","Promise","resolve","cb","then","setTimeoutFn","self","window","Function","require_util","__commonJSMin","exports","Object","defineProperty","value","pick","installTimerFunctions","byteLength","randomString","globals_node_js_1","require","obj","attr","reduce","acc","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThisShim","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","opts","useNativeTimers","setTimeoutFn","bind","clearTimeoutFn","BASE64_OVERHEAD","utf8Length","Math","ceil","size","str","c","length","i","l","charCodeAt","Date","now","toString","substring","random","require_parseqs","__commonJSMin","exports","Object","defineProperty","value","encode","decode","obj","str","i","hasOwnProperty","length","encodeURIComponent","qs","qry","pairs","split","l","pair","decodeURIComponent","require_ms","__commonJSMin","exports","module","s","m","h","d","w","y","val","options","type","length","parse","isFinite","long","fmtLong","fmtShort","Error","JSON","stringify","str","String","match","exec","n","parseFloat","toLowerCase","ms","msAbs","Math","abs","round","plural","name","isPlural","require_common","__commonJSMin","exports","module","setup","env","createDebug","debug","default","coerce","disable","enable","enabled","humanize","require","destroy","Object","keys","forEach","key","names","skips","formatters","selectColor","namespace","hash","i","length","charCodeAt","colors","Math","abs","prevTime","enableOverride","namespacesCache","enabledCache","args","self","curr","Number","Date","ms","diff","prev","unshift","index","replace","match","format","formatter","val","call","splice","formatArgs","log","apply","useColors","color","extend","defineProperty","enumerable","configurable","get","namespaces","set","v","init","delimiter","newDebug","save","split","trim","filter","Boolean","ns","push","slice","matchesTemplate","search","template","searchIndex","templateIndex","starIndex","matchIndex","map","join","name","skip","Error","stack","message","console","warn","load","require_browser","__commonJSMin","exports","module","formatArgs","save","load","useColors","storage","localstorage","destroy","warned","console","warn","colors","window","process","type","__nwjs","navigator","userAgent","toLowerCase","match","m","document","documentElement","style","WebkitAppearance","firebug","exception","table","parseInt","args","namespace","humanize","diff","c","color","splice","index","lastC","replace","log","debug","namespaces","setItem","removeItem","r","getItem","env","DEBUG","localStorage","require","formatters","j","v","JSON","stringify","error","message","require_transport","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","Transport","TransportError","engine_io_parser_1","require","component_emitter_1","util_js_1","parseqs_js_1","debug_1","debug","default","Error","constructor","reason","description","context","type","Emitter","opts","writable","installTimerFunctions","query","socket","supportsBinary","forceBase64","onError","emitReserved","open","readyState","doOpen","close","doClose","onClose","send","packets","write","onOpen","onData","data","packet","decodePacket","binaryType","onPacket","details","pause","onPause","createUri","schema","_hostname","_port","path","_query","hostname","indexOf","port","secure","Number","encodedQuery","encode","length","require_polling","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","Polling","transport_js_1","require","util_js_1","engine_io_parser_1","debug_1","debug","default","Transport","constructor","arguments","_polling","name","doOpen","_poll","pause","onPause","readyState","writable","total","once","doPoll","emitReserved","onData","data","callback","packet","type","onOpen","onClose","description","onPacket","decodePayload","socket","binaryType","forEach","doClose","close","write","packets","encodePayload","doWrite","uri","schema","opts","secure","query","timestampRequests","timestampParam","randomString","supportsBinary","sid","b64","createUri","require_has_cors","__commonJSMin","exports","Object","defineProperty","value","hasCORS","XMLHttpRequest","require_polling_xhr","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","XHR","Request","BaseXHR","polling_js_1","require","component_emitter_1","util_js_1","globals_node_js_1","has_cors_js_1","debug_1","debug","default","empty","Polling","constructor","opts","location","isSSL","protocol","port","xd","hostname","doWrite","data","fn","req","request","method","on","xhrStatus","context","onError","doPoll","onData","bind","pollXhr","Emitter","createRequest","uri","installTimerFunctions","_opts","_method","_uri","_data","undefined","_create","_a","pick","xdomain","xhr","_xhr","open","extraHeaders","setDisableHeaderCheck","i","hasOwnProperty","setRequestHeader","cookieJar","addCookies","withCredentials","requestTimeout","timeout","onreadystatechange","readyState","parseCookies","getResponseHeader","status","_onLoad","setTimeoutFn","_onError","send","e","document","_index","requestsCount","requests","err","emitReserved","_cleanup","fromError","abort","responseText","attachEvent","unloadHandler","addEventListener","terminationEvent","globalThisShim","hasXHR2","newRequest","responseType","forceBase64","supportsBinary","assign","XMLHttpRequest","hasCORS","concat","join","require_websocket","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","WS","BaseWS","transport_js_1","require","util_js_1","engine_io_parser_1","globals_node_js_1","debug_1","debug","default","isReactNative","navigator","product","toLowerCase","Transport","name","doOpen","uri","protocols","opts","pick","extraHeaders","headers","ws","createSocket","err","emitReserved","binaryType","socket","addEventListeners","onopen","autoUnref","_socket","unref","onOpen","onclose","closeEvent","onClose","description","context","onmessage","ev","onData","data","onerror","e","onError","write","packets","writable","i","length","packet","lastPacket","encodePacket","supportsBinary","doWrite","nextTick","setTimeoutFn","doClose","close","schema","secure","query","timestampRequests","timestampParam","randomString","b64","createUri","WebSocketCtor","globalThisShim","WebSocket","MozWebSocket","_packet","send","require_webtransport","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","WT","transport_js_1","require","globals_node_js_1","engine_io_parser_1","debug_1","debug","default","Transport","name","doOpen","_transport","WebTransport","createUri","opts","transportOptions","err","emitReserved","closed","then","onClose","catch","onError","ready","createBidirectionalStream","stream","decoderStream","createPacketDecoderStream","Number","MAX_SAFE_INTEGER","socket","binaryType","reader","readable","pipeThrough","getReader","encoderStream","createPacketEncoderStream","pipeTo","writable","_writer","getWriter","read","done","onPacket","packet","type","query","sid","data","write","onOpen","packets","i","length","lastPacket","nextTick","setTimeoutFn","doClose","_a","close","require_transports","__commonJSMin","exports","Object","defineProperty","value","transports","polling_xhr_node_js_1","require","websocket_node_js_1","webtransport_js_1","websocket","WS","webtransport","WT","polling","XHR","require_parseuri","__commonJSMin","exports","Object","defineProperty","value","parse","re","parts","str","length","src","b","indexOf","e","substring","replace","m","exec","uri","i","source","host","authority","ipv6uri","pathNames","queryKey","obj","path","regx","names","split","slice","splice","query","data","$0","$1","$2","require_socket","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","Socket","SocketWithUpgrade","SocketWithoutUpgrade","index_js_1","require","util_js_1","parseqs_js_1","parseuri_js_1","component_emitter_1","engine_io_parser_1","globals_node_js_1","debug_1","debug","default","withEventListeners","addEventListener","removeEventListener","OFFLINE_EVENT_LISTENERS","length","forEach","listener","Emitter","constructor","uri","opts","binaryType","defaultBinaryType","writeBuffer","_prevBufferLen","_pingInterval","_pingTimeout","_maxPayload","_pingTimeoutTime","Infinity","parsedUri","parse","hostname","host","secure","protocol","port","query","installTimerFunctions","location","transports","_transportsByName","t","transportName","prototype","name","push","assign","path","agent","withCredentials","upgrade","timestampParam","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","transportOptions","closeOnBeforeunload","replace","decode","_beforeunloadEventListener","transport","removeAllListeners","close","_offlineEventListener","_onClose","description","_cookieJar","createCookieJar","_open","createTransport","EIO","id","sid","socket","setTimeoutFn","emitReserved","priorWebsocketSuccess","indexOf","readyState","open","setTransport","on","_onDrain","bind","_onPacket","_onError","reason","onOpen","flush","packet","type","data","onHandshake","JSON","_sendPacket","_resetPingTimeout","err","Error","code","pingInterval","pingTimeout","maxPayload","clearTimeoutFn","_pingTimeoutTimer","delay","Date","now","autoUnref","unref","splice","writable","upgrading","packets","_getWritablePackets","send","payloadSize","i","byteLength","slice","_hasPingExpired","hasExpired","nextTick","write","msg","options","fn","undefined","compress","once","cleanupAndClose","off","waitForUpgrade","tryAllTransports","shift","arguments","_upgrades","_probe","failed","onTransportOpen","pause","cleanup","freezeTransport","onerror","error","onTransportClose","onclose","onupgrade","to","removeListener","_filterUpgrades","upgrades","filteredUpgrades","o","map","filter","require_polling_fetch","__commonJSMin","exports","Object","defineProperty","value","Fetch","polling_js_1","require","Polling","doPoll","_fetch","then","res","ok","onError","status","text","data","onData","catch","err","doWrite","callback","_a","isPost","undefined","headers","Headers","opts","extraHeaders","set","socket","_cookieJar","appendCookies","fetch","uri","method","body","credentials","withCredentials","parseCookies","getSetCookie","require_cjs","__commonJSMin","exports","Object","defineProperty","value","WebTransport","WebSocket","NodeWebSocket","XHR","NodeXHR","Fetch","nextTick","parse","installTimerFunctions","transports","TransportError","Transport","protocol","SocketWithUpgrade","SocketWithoutUpgrade","Socket","socket_js_1","require","enumerable","get","socket_js_2","transport_js_1","index_js_1","util_js_1","parseuri_js_1","globals_node_js_1","polling_fetch_js_1","polling_xhr_node_js_1","polling_xhr_js_1","websocket_node_js_1","WS","websocket_js_1","webtransport_js_1","WT","require_url","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","url","engine_io_client_1","require","debug_1","debug","default","uri","path","loc","obj","location","protocol","host","charAt","test","parse","port","indexOf","id","href","require_is_binary","__commonJSMin","exports","Object","defineProperty","value","isBinary","hasBinary","withNativeArrayBuffer","ArrayBuffer","isView","obj","buffer","toString","prototype","withNativeBlob","Blob","call","withNativeFile","File","toJSON","Array","isArray","i","l","length","arguments","key","hasOwnProperty","require_binary","__commonJSMin","exports","Object","defineProperty","value","deconstructPacket","reconstructPacket","is_binary_js_1","require","packet","buffers","packetData","data","pack","_deconstructPacket","attachments","length","isBinary","placeholder","_placeholder","num","push","Array","isArray","newData","i","Date","key","prototype","hasOwnProperty","call","_reconstructPacket","Error","require_cjs","__commonJSMin","exports","Object","defineProperty","value","Decoder","Encoder","PacketType","protocol","isPacketValid","component_emitter_1","require","binary_js_1","is_binary_js_1","debug_1","debug","default","RESERVED_EVENTS","constructor","replacer","encode","obj","type","EVENT","ACK","hasBinary","encodeAsBinary","BINARY_EVENT","BINARY_ACK","nsp","data","id","encodeAsString","str","attachments","JSON","stringify","deconstruction","deconstructPacket","pack","packet","buffers","unshift","Emitter","reviver","add","reconstructor","Error","decodeString","isBinaryEvent","BinaryReconstructor","emitReserved","isBinary","base64","takeBinaryData","i","p","Number","charAt","undefined","start","length","buf","substring","next","c","payload","tryParse","substr","isPayloadValid","parse","CONNECT","isObject","DISCONNECT","CONNECT_ERROR","Array","isArray","indexOf","destroy","finishedReconstruction","reconPack","binData","push","reconstructPacket","isNamespaceValid","isInteger","isFinite","Math","floor","isAckIdValid","prototype","toString","call","isDataValid","require_on","__commonJSMin","exports","Object","defineProperty","value","on","obj","ev","fn","off","require_socket","__commonJSMin","exports","__importDefault","mod","__esModule","Object","defineProperty","value","Socket","socket_io_parser_1","require","on_js_1","component_emitter_1","debug_1","debug","default","RESERVED_EVENTS","freeze","connect","connect_error","disconnect","disconnecting","newListener","removeListener","Emitter","constructor","io","nsp","opts","connected","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","ids","acks","flags","auth","_opts","assign","_autoConnect","open","disconnected","subEvents","subs","on","onopen","bind","onpacket","onerror","onclose","active","_readyState","send","args","unshift","emit","apply","ev","_a","_b","_c","hasOwnProperty","Error","toString","retries","fromQueue","volatile","_addToQueue","packet","type","PacketType","EVENT","data","options","compress","length","id","ack","pop","_registerAckCallback","isTransportWritable","engine","transport","writable","isConnected","_hasPingExpired","notifyOutgoingListeners","push","timeout","ackTimeout","undefined","timer","setTimeoutFn","i","splice","call","fn","clearTimeoutFn","withError","emitWithAck","Promise","resolve","reject","arg1","arg2","tryCount","pending","err","responseArgs","shift","_drainQueue","force","_packet","_sendConnectPacket","CONNECT","_pid","pid","offset","_lastOffset","emitReserved","reason","description","_clearAcks","keys","forEach","some","String","sid","onconnect","BINARY_EVENT","onevent","ACK","BINARY_ACK","onack","DISCONNECT","ondisconnect","CONNECT_ERROR","destroy","message","emitEvent","_anyListeners","listeners","slice","listener","self","sent","emitBuffered","subDestroy","close","onAny","prependAny","offAny","listenersAny","onAnyOutgoing","_anyOutgoingListeners","prependAnyOutgoing","offAnyOutgoing","listenersAnyOutgoing","require_backo2","__commonJSMin","exports","Object","defineProperty","value","Backoff","opts","ms","min","max","factor","jitter","attempts","prototype","duration","Math","pow","rand","random","deviation","floor","reset","setMin","setMax","setJitter","require_manager","__commonJSMin","exports","__createBinding","Object","create","o","m","k","k2","undefined","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","get","defineProperty","__setModuleDefault","v","value","__importStar","mod","result","prototype","hasOwnProperty","call","__importDefault","Manager","engine_io_client_1","require","socket_js_1","parser","on_js_1","backo2_js_1","component_emitter_1","debug_1","debug","default","Emitter","constructor","uri","opts","_a","nsps","subs","path","installTimerFunctions","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","Backoff","min","max","jitter","timeout","_readyState","_parser","encoder","Encoder","decoder","Decoder","_autoConnect","autoConnect","open","arguments","length","_reconnection","skipReconnect","_reconnectionAttempts","_reconnectionDelay","setMin","_randomizationFactor","setJitter","_reconnectionDelayMax","setMax","_timeout","maybeReconnectOnOpen","_reconnecting","attempts","reconnect","fn","indexOf","engine","Socket","socket","self","openSubDestroy","on","onopen","onError","err","cleanup","emitReserved","errorSub","timer","setTimeoutFn","Error","close","autoUnref","unref","push","clearTimeoutFn","connect","onping","bind","ondata","onerror","onclose","ondecoded","data","add","e","packet","nextTick","nsp","active","_destroy","keys","_close","_packet","encodedPackets","encode","i","write","options","forEach","subDestroy","destroy","disconnect","reason","description","reset","delay","duration","onreconnect","attempt","require_cjs","__commonJSMin","exports","module","__importDefault","mod","__esModule","Object","defineProperty","value","WebTransport","WebSocket","NodeWebSocket","XHR","NodeXHR","Fetch","Socket","Manager","protocol","io","lookup","connect","default","url_js_1","require","manager_js_1","enumerable","get","socket_js_1","debug_1","debug","cache","uri","opts","undefined","parsed","url","path","source","id","sameNamespace","newConnection","forceNew","multiplex","query","queryKey","socket","assign","socket_io_parser_1","engine_io_client_1","SocketIOClient","tslib_1","__importStar","require","rxjs_1","global_settings_const_1","array_util_1","log_util_1","async_util_1","error_control_model_1","sck_event_key_enum_1","sck_socket_event_control_model_1","DyFM_SocketClient_ServiceBase","_params","params","name","socket","incomingEvents","_connected_BS","BehaviorSubject","connected","value","connected$","asObservable","_subscribed_BS","subscribed","subscribed$","debugLog","DyFM_global_settings","log_settings","setup","logFn","functions","defaultEvents","DyFM_SocketEvent","eventKey","DyFM_SocketEvent_Key","outgoingNewConnection","tasks","__async","next","DyFM_Log","success","disconnect","warn","reconnect","DyFM_Async","delay","reconnectDelay","connectSocket","subscriptionSuccessful","unsubscribeSuccessful","error","content","DyFM_Error","logSimple","constructor","asyncConstructor","catch","subscriptionInProgress","subscribe","subscriptionContent","getSubscriptionContent","emitEvent","unsubscribe","eventType","log","emit","port","getParams","getIncomingEvents","socketAddress","address","io","__spreadValues","socketOptions","setupDefaultEvents","setupSocketEvents","errorCode","console","forEach","defaultEvent","serviceName","eventDeclared","find","event","unshift","push","DyFM_Array","asyncForEach","on","executeEventTasks","service","info","connect","tryReconnectIfNeeded","tryingToReconnect","exports","tslib_1","__exportStar","require","exports","toObservable","source","options","injector","assertInInjectionContext","inject","Injector","subject","ReplaySubject","watcher","effect","value","err","untracked","error","next","manualCleanup","get","DestroyRef","onDestroy","destroy","complete","asObservable","toSignal","requiresCleanup","cleanupRef","equal","makeToSignalEqual","state","requireSync","signal","kind","initialValue","sub","subscribe","set","rejectErrors","ɵRuntimeError","ngDevMode","unsubscribe","bind","computed","current","userEquality","Object","is","a","b","import_fsm_dynamo","import_socket","CCAP_SocketStatus_Type","getSocketAddress","environment","socketUrl","undefined","trim","window","fallback","URL","location","href","origin","DyFM_Log","warn","isRecord","value","Error","isTestEnvironment","globalThis","jasmine","SOCKET_EVENT_ANSWER","SOCKET_EVENT_NOTIFY_USER","SOCKET_EVENT_AGENT_EVENTS","SOCKET_EVENT_CONTEXT_UPDATED","SOCKET_EVENT_MONITORING_EVENT","SOCKET_EVENT_USER_NOTIFICATION","SOCKET_EVENT_CC_SESSION_STATUS","SOCKET_EVENT_CC_SESSION_OUTPUT","SOCKET_EVENT_CC_SESSION_EVENT","SOCKET_EVENT_CC_SESSION_LIST_UPDATE","SOCKET_EVENT_CC_SESSION_SESSION_UPDATE","SOCKET_EVENT_CA_SESSION_STATUS","SOCKET_EVENT_CA_SESSION_OUTPUT","SOCKET_EVENT_CA_SESSION_EVENT","SOCKET_EVENT_CA_SESSION_LIST_UPDATE","SOCKET_EVENT_EXT_SESSION_MSG_MESSAGE","SOCKET_EVENT_EXT_SESSION_MSG_UPDATE","SOCKET_EVENT_USER_INTERACTION_REQUEST","SOCKET_EVENT_INSTANCE_STATUS_UPDATED","SOCKET_EVENT_INSTANCE_PRESENCE_UPDATE","SOCKET_EVENT_OCI_INSTANCE_STATUS_UPDATED","SOCKET_EVENT_CCI_INSTANCE_STATUS_UPDATED","SOCKET_EVENT_CAI_INSTANCE_STATUS_UPDATED","SOCKET_EVENT_TERMINAL_LIST_RESULT","SOCKET_EVENT_TERMINAL_START_RESULT","SOCKET_EVENT_TERMINAL_COMMAND_RESULT","SOCKET_EVENT_TERMINAL_COMMAND_OUTPUT","SOCKET_EVENT_CC_RATE_LIMIT_UPDATE","SOCKET_EVENT_CC_ACCOUNT_USAGE_UPDATE","SOCKET_EVENT_CC_ACCOUNT_LIST_UPDATE","SOCKET_EVENT_SESSION_QUEUE_UPDATED","SOCKET_EVENT_SESSION_QUEUE_LOCK_CHANGED","USER_NOTIFICATION_TYPE_SYSTEM_ERROR","USER_NOTIFICATION_TYPE_TERMINAL_ERROR","SOCKET_EVENT_SERVER_START_ID","SOCKET_EVENT_CONNECT_ERROR","CONNECTION_TIMEOUT_MS","second","CCAP_Socket_ControlService","DyFM_SocketClient_ServiceBase","status_$","signal","CCAP_SocketStatus_Type","connecting","lastError_$","connectAttemptCount_$","hasEverConnected","connectionTimeoutId","knownServerStartId","eventSubject_S","Subject","event$","asObservable","connected_$","toSignal","connected$","initialValue","socketAddress","params","address","globalError_CS","inject","CCAP_GlobalError_ControlService","settingsGeneral_DS","Set_General_DataService","constructor","startConnectionTimeout","effect","connected","subscribed","subscribe","clearConnectionTimeout","setTimeout","timeoutError","set","error","clearTimeout","getParams","isTestEnv","socketOptions","path","transports","reconnectionDelay","CCAP_SOCKET_IO_RECONNECTION_DELAY_MS","reconnection","DyFM_SocketClient_Params","name","reconnect","reconnectDelay","minute","getIncomingEvents","self","pushEnvelope","eventKey","content","payload","errorMessage","showError","next","event","err","errMessage","message","String","DyFM_SocketEvent","DyFM_SocketEvent_Key","outgoingNewConnection","tasks","__async","info","disconnect","update","c","description","type","displayError","buildSocketErrorDisplay","eventType","raw","shouldReportSocketConnectionErrorsToErrorList","reportErrorOnly","fullMessage","stack","source","display","buildServerErrorDisplay","buildTerminalErrorDisplay","serverStartId","reload","getSubscriptionContent","clientId","socket","id","Promise","resolve","section_$","form","reportSocketConnectionErrorsToErrorList","baseMessage","result","transport","attemptedAt","Date","toISOString","connectAttempt","isExplicitSocketUrl","socketUrlSource","length","configuredTransports","join","pageOrigin","rawObj","rawDescription","descriptionStack","Event","extractDomEventInfo","descObj","descParts","push","status","httpStatus","statusText","httpStatusText","responseURL","responseUrl","context","errorContext","enrichParts","parts","target","readyState","url","code","terminalId","detailsText","timestamp","now","stackRaw","JSON","stringify","connect","emit","diagnoseConnection","results","socketConnected","socketId","connectAttemptCount","currentStatus","serverStatusResult","probeEndpoint","serverStatusApi","ok","body","bodyRec","serverReportedHttpPort","httpPort","serverReportedSocketPort","socketPort","socketPath","pollUrl","socketIoResult","socketIoPolling","reportedSocketPort","directPollUrl","directResult","socketIoDirectPort","label","startMs","performance","response","fetch","method","cache","elapsed","Math","round","elapsedMs","text","parse","bodyPreview","substring","bodyReadError","fetchErr","fetchError","TypeError","fetchErrorType","ngOnDestroy","factory","ɵfac","providedIn"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42]}
|