From 7241273c58b1d6285cb88e0ffa5c0763b99ebd67 Mon Sep 17 00:00:00 2001 From: Kalina Georgieva Date: Wed, 6 Mar 2024 14:32:51 +0200 Subject: [PATCH 1/3] Bump @interopio dependencies Signed-off-by: Kalina Georgieva --- browser-client-react/package-lock.json | 397 ++++++-- browser-client-react/package.json | 4 +- .../react-client/package-lock.json | 711 ++++++++++--- .../react-client/package.json | 4 +- .../workspace-platform/package-lock.json | 939 +++++++++++++----- .../workspace-platform/package.json | 10 +- 6 files changed, 1602 insertions(+), 463 deletions(-) diff --git a/browser-client-react/package-lock.json b/browser-client-react/package-lock.json index cee5a9f..4dbc398 100644 --- a/browser-client-react/package-lock.json +++ b/browser-client-react/package-lock.json @@ -8,8 +8,8 @@ "name": "browser-client-react", "version": "3.2.0", "dependencies": { - "@interopio/browser": "^3.1.2", - "@interopio/react-hooks": "^3.1.2", + "@interopio/browser": "^3.2.0", + "@interopio/react-hooks": "^3.2.0", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", @@ -2213,12 +2213,14 @@ } }, "node_modules/@glue42/gateway-web": { - "version": "3.0.18", - "license": "MIT" + "version": "3.0.19", + "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", + "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" }, "node_modules/@glue42/schemas": { "version": "3.22.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/@glue42/schemas/-/schemas-3.22.0.tgz", + "integrity": "sha512-4eC3oIci6o09DIPYwvGCHSaGHdNPqDDnqByh0XuiOw/lA6rlZii4HfamqbCYhytEZ58dqAdyTDqyqVNnEVBuQA==", "dependencies": { "ajv": "^6.12.6", "ajv-keywords": "^3.4.1" @@ -2233,20 +2235,31 @@ } }, "node_modules/@glue42/server-api": { - "version": "1.6.2", - "license": "MIT", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", + "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", "dependencies": { "@glue42/schemas": "^3.18.0", "@types/request": "^2.48.8", "axios": "^1.6.2", "form-data": "^4.0.0", "jwt-decode": "^3.1.2", + "rimraf": "^5.0.5", "typescript": "^4.2.4" } }, + "node_modules/@glue42/server-api/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/@glue42/server-api/node_modules/form-data": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -2256,6 +2269,58 @@ "node": ">= 6" } }, + "node_modules/@glue42/server-api/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@glue42/server-api/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@glue42/server-api/node_modules/rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", "license": "Apache-2.0", @@ -2284,14 +2349,15 @@ "license": "BSD-3-Clause" }, "node_modules/@interopio/browser": { - "version": "3.1.2", - "license": "MIT", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", + "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", "dependencies": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.1.0", - "@interopio/utils": "^1.1.2", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", "callback-registry": "^2.6.0", "decoder-validate": "0.0.2", "idb": "^7.1.1", @@ -2300,17 +2366,18 @@ } }, "node_modules/@interopio/browser-platform": { - "version": "3.1.2", - "license": "Commercial", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", + "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", "dependencies": { "@glue42/gateway-web": "^3.0.17", - "@glue42/server-api": "^1.5.0", - "@interopio/browser": "^3.1.2", - "@interopio/core": "^6.1.0", + "@glue42/server-api": "^1.6.3", + "@interopio/browser": "^3.2.0", + "@interopio/core": "^6.2.0", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.1.0", - "@interopio/utils": "^1.1.2", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", "callback-registry": "^2.7.1", "decoder-validate": "0.0.2", "deep-equal": "^2.1.0", @@ -2325,13 +2392,14 @@ }, "node_modules/@interopio/browser-platform/node_modules/nanoid": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.js" }, @@ -2341,13 +2409,14 @@ }, "node_modules/@interopio/browser/node_modules/nanoid": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.js" }, @@ -2356,8 +2425,9 @@ } }, "node_modules/@interopio/core": { - "version": "6.1.0", - "license": "MIT", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", + "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", "dependencies": { "callback-registry": "^2.7.2", "shortid": "^2.2.16", @@ -2366,7 +2436,8 @@ }, "node_modules/@interopio/core/node_modules/ws": { "version": "8.16.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "engines": { "node": ">=10.0.0" }, @@ -2384,26 +2455,24 @@ } }, "node_modules/@interopio/desktop": { - "version": "6.1.0", - "license": "MIT", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", + "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", "dependencies": { "@glue42/schemas": "^3.22.0", - "@interopio/core": "^6.0.2", + "@interopio/core": "^6.1.0", "@interopio/workspaces-api": "^3.1.0", "callback-registry": "^2.7.1", - "shortid": "2.2.8" + "nanoid": "^3.3.7" } }, - "node_modules/@interopio/desktop/node_modules/shortid": { - "version": "2.2.8", - "license": "MIT" - }, "node_modules/@interopio/react-hooks": { - "version": "3.1.2", - "license": "MIT", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", + "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", "dependencies": { - "@interopio/browser": "^3.1.2", - "@interopio/browser-platform": "^3.1.2", + "@interopio/browser": "^3.2.0", + "@interopio/browser-platform": "^3.2.0", "@interopio/desktop": "^6.0.1", "prop-types": "^15.7.2" }, @@ -2421,10 +2490,11 @@ } }, "node_modules/@interopio/search-api": { - "version": "2.1.0", - "license": "MIT", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", + "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", "dependencies": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "callback-registry": "^2.5.2", "decoder-validate": "0.0.2", "nanoid": "^4.0.0" @@ -2432,13 +2502,14 @@ }, "node_modules/@interopio/search-api/node_modules/nanoid": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.js" }, @@ -2447,17 +2518,19 @@ } }, "node_modules/@interopio/utils": { - "version": "1.1.2", - "license": "ISC", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", "dependencies": { "decoder-validate": "^0.0.2" } }, "node_modules/@interopio/workspaces-api": { - "version": "3.1.0", - "license": "MIT", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", + "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", "dependencies": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "callback-registry": "^2.5.2", "decoder-validate": "0.0.2", "nanoid": "^4.0.0" @@ -2465,13 +2538,14 @@ }, "node_modules/@interopio/workspaces-api/node_modules/nanoid": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.js" }, @@ -3971,7 +4045,8 @@ }, "node_modules/@types/caseless": { "version": "0.12.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" }, "node_modules/@types/connect": { "version": "3.4.38", @@ -4141,7 +4216,8 @@ }, "node_modules/@types/request": { "version": "2.48.12", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", + "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", "dependencies": { "@types/caseless": "*", "@types/node": "*", @@ -4151,7 +4227,8 @@ }, "node_modules/@types/request/node_modules/form-data": { "version": "2.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -4224,7 +4301,8 @@ }, "node_modules/@types/tough-cookie": { "version": "4.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" }, "node_modules/@types/trusted-types": { "version": "2.0.7", @@ -5021,7 +5099,8 @@ }, "node_modules/axios": { "version": "1.6.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "dependencies": { "follow-redirects": "^1.15.4", "form-data": "^4.0.0", @@ -5030,7 +5109,8 @@ }, "node_modules/axios/node_modules/form-data": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -5502,7 +5582,8 @@ }, "node_modules/callback-registry": { "version": "2.7.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/callback-registry/-/callback-registry-2.7.2.tgz", + "integrity": "sha512-VVrtF21DaH0VHeNMkLDd4VGuxsYM3V3l3lwYneKVMU/6X3TRtcQszUwlAcqj2HrLcbP1NyS12LsanUwCykaz/Q==" }, "node_modules/callsites": { "version": "3.1.0", @@ -6310,7 +6391,8 @@ }, "node_modules/decoder-validate": { "version": "0.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/decoder-validate/-/decoder-validate-0.0.2.tgz", + "integrity": "sha512-9BsqAH9Zq6CvlxKHkSrZrH2iYlhuhHcrh6uTnDvcsa9P5YEweEzt1ci+X/9STgSCE7b9BA7/QIiwhfUDDWmjxw==" }, "node_modules/dedent": { "version": "0.7.0", @@ -11175,7 +11257,8 @@ }, "node_modules/jsrsasign": { "version": "10.9.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", + "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==", "funding": { "url": "https://github.com/kjur/jsrsasign#donations" } @@ -11195,7 +11278,8 @@ }, "node_modules/jwt-decode": { "version": "3.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" }, "node_modules/keyv": { "version": "4.5.4", @@ -13449,7 +13533,8 @@ }, "node_modules/proxy-from-env": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/psl": { "version": "1.9.0", @@ -14522,14 +14607,17 @@ }, "node_modules/shortid": { "version": "2.2.16", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz", + "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dependencies": { "nanoid": "^2.1.0" } }, "node_modules/shortid/node_modules/nanoid": { "version": "2.1.11", - "license": "MIT" + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", + "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==" }, "node_modules/side-channel": { "version": "1.0.4", @@ -15599,6 +15687,8 @@ }, "node_modules/ua-parser-js": { "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", "funding": [ { "type": "opencollective", @@ -15613,7 +15703,6 @@ "url": "https://github.com/sponsors/faisalman" } ], - "license": "MIT", "engines": { "node": "*" } @@ -17916,33 +18005,78 @@ "version": "8.56.0" }, "@glue42/gateway-web": { - "version": "3.0.18" + "version": "3.0.19", + "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", + "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" }, "@glue42/schemas": { "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@glue42/schemas/-/schemas-3.22.0.tgz", + "integrity": "sha512-4eC3oIci6o09DIPYwvGCHSaGHdNPqDDnqByh0XuiOw/lA6rlZii4HfamqbCYhytEZ58dqAdyTDqyqVNnEVBuQA==", "requires": { "ajv": "^6.12.6", "ajv-keywords": "^3.4.1" } }, "@glue42/server-api": { - "version": "1.6.2", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", + "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", "requires": { "@glue42/schemas": "^3.18.0", "@types/request": "^2.48.8", "axios": "^1.6.2", "form-data": "^4.0.0", "jwt-decode": "^3.1.2", + "rimraf": "^5.0.5", "typescript": "^4.2.4" }, "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, "form-data": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "mime-types": "^2.1.12" } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "requires": { + "glob": "^10.3.7" + } } } }, @@ -17961,13 +18095,15 @@ "version": "2.0.2" }, "@interopio/browser": { - "version": "3.1.2", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", + "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", "requires": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.1.0", - "@interopio/utils": "^1.1.2", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", "callback-registry": "^2.6.0", "decoder-validate": "0.0.2", "idb": "^7.1.1", @@ -17976,21 +18112,25 @@ }, "dependencies": { "nanoid": { - "version": "4.0.2" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" } } }, "@interopio/browser-platform": { - "version": "3.1.2", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", + "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", "requires": { "@glue42/gateway-web": "^3.0.17", - "@glue42/server-api": "^1.5.0", - "@interopio/browser": "^3.1.2", - "@interopio/core": "^6.1.0", + "@glue42/server-api": "^1.6.3", + "@interopio/browser": "^3.2.0", + "@interopio/core": "^6.2.0", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.1.0", - "@interopio/utils": "^1.1.2", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", "callback-registry": "^2.7.1", "decoder-validate": "0.0.2", "deep-equal": "^2.1.0", @@ -18004,12 +18144,16 @@ }, "dependencies": { "nanoid": { - "version": "4.0.2" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" } } }, "@interopio/core": { - "version": "6.1.0", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", + "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", "requires": { "callback-registry": "^2.7.2", "shortid": "^2.2.16", @@ -18018,65 +18162,76 @@ "dependencies": { "ws": { "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "requires": {} } } }, "@interopio/desktop": { - "version": "6.1.0", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", + "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", "requires": { "@glue42/schemas": "^3.22.0", - "@interopio/core": "^6.0.2", + "@interopio/core": "^6.1.0", "@interopio/workspaces-api": "^3.1.0", "callback-registry": "^2.7.1", - "shortid": "2.2.8" - }, - "dependencies": { - "shortid": { - "version": "2.2.8" - } + "nanoid": "^3.3.7" } }, "@interopio/react-hooks": { - "version": "3.1.2", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", + "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", "requires": { - "@interopio/browser": "^3.1.2", - "@interopio/browser-platform": "^3.1.2", + "@interopio/browser": "^3.2.0", + "@interopio/browser-platform": "^3.2.0", "@interopio/desktop": "^6.0.1", "prop-types": "^15.7.2" } }, "@interopio/search-api": { - "version": "2.1.0", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", + "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", "requires": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "callback-registry": "^2.5.2", "decoder-validate": "0.0.2", "nanoid": "^4.0.0" }, "dependencies": { "nanoid": { - "version": "4.0.2" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" } } }, "@interopio/utils": { - "version": "1.1.2", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", "requires": { "decoder-validate": "^0.0.2" } }, "@interopio/workspaces-api": { - "version": "3.1.0", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", + "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", "requires": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "callback-registry": "^2.5.2", "decoder-validate": "0.0.2", "nanoid": "^4.0.0" }, "dependencies": { "nanoid": { - "version": "4.0.2" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==" } } }, @@ -18965,7 +19120,9 @@ } }, "@types/caseless": { - "version": "0.12.5" + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" }, "@types/connect": { "version": "3.4.38", @@ -19107,6 +19264,8 @@ }, "@types/request": { "version": "2.48.12", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", + "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", "requires": { "@types/caseless": "*", "@types/node": "*", @@ -19116,6 +19275,8 @@ "dependencies": { "form-data": { "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -19176,7 +19337,9 @@ } }, "@types/tough-cookie": { - "version": "4.0.5" + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" }, "@types/trusted-types": { "version": "2.0.7" @@ -19650,6 +19813,8 @@ }, "axios": { "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "requires": { "follow-redirects": "^1.15.4", "form-data": "^4.0.0", @@ -19658,6 +19823,8 @@ "dependencies": { "form-data": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -19963,7 +20130,9 @@ } }, "callback-registry": { - "version": "2.7.2" + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/callback-registry/-/callback-registry-2.7.2.tgz", + "integrity": "sha512-VVrtF21DaH0VHeNMkLDd4VGuxsYM3V3l3lwYneKVMU/6X3TRtcQszUwlAcqj2HrLcbP1NyS12LsanUwCykaz/Q==" }, "callsites": { "version": "3.1.0" @@ -20419,7 +20588,9 @@ "version": "10.4.3" }, "decoder-validate": { - "version": "0.0.2" + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/decoder-validate/-/decoder-validate-0.0.2.tgz", + "integrity": "sha512-9BsqAH9Zq6CvlxKHkSrZrH2iYlhuhHcrh6uTnDvcsa9P5YEweEzt1ci+X/9STgSCE7b9BA7/QIiwhfUDDWmjxw==" }, "dedent": { "version": "0.7.0" @@ -23347,7 +23518,9 @@ "version": "5.0.1" }, "jsrsasign": { - "version": "10.9.0" + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", + "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==" }, "jsx-ast-utils": { "version": "3.3.5", @@ -23359,7 +23532,9 @@ } }, "jwt-decode": { - "version": "3.1.2" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" }, "keyv": { "version": "4.5.4", @@ -24535,7 +24710,9 @@ } }, "proxy-from-env": { - "version": "1.1.0" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "psl": { "version": "1.9.0" @@ -25186,12 +25363,16 @@ }, "shortid": { "version": "2.2.16", + "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz", + "integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==", "requires": { "nanoid": "^2.1.0" }, "dependencies": { "nanoid": { - "version": "2.1.11" + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", + "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==" } } }, @@ -25858,7 +26039,9 @@ "version": "4.9.5" }, "ua-parser-js": { - "version": "1.0.37" + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==" }, "unbox-primitive": { "version": "1.0.2", diff --git a/browser-client-react/package.json b/browser-client-react/package.json index f4d18b0..dbb7076 100644 --- a/browser-client-react/package.json +++ b/browser-client-react/package.json @@ -3,8 +3,8 @@ "version": "3.2.0", "private": true, "dependencies": { - "@interopio/browser": "^3.1.2", - "@interopio/react-hooks": "^3.1.2", + "@interopio/browser": "^3.2.0", + "@interopio/react-hooks": "^3.2.0", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", diff --git a/browser-platform-dev-react-seed/react-client/package-lock.json b/browser-platform-dev-react-seed/react-client/package-lock.json index fa34f6e..cb1b97e 100644 --- a/browser-platform-dev-react-seed/react-client/package-lock.json +++ b/browser-platform-dev-react-seed/react-client/package-lock.json @@ -8,8 +8,8 @@ "name": "react-client", "version": "0.1.0", "dependencies": { - "@interopio/react-hooks": "^3.1.2", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/react-hooks": "^3.2.0", + "@interopio/workspaces-api": "^3.2.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", @@ -2499,9 +2499,9 @@ } }, "node_modules/@glue42/gateway-web": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.18.tgz", - "integrity": "sha512-swROglo4+fRruNpfKh17EmPOLzYgfD8NAIy4Sw1fzZkCvhmv3SLISMYsj1ILpI/g9dW3bzdYSja15L9wCjLgSA==" + "version": "3.0.19", + "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", + "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" }, "node_modules/@glue42/schemas": { "version": "3.22.0", @@ -2521,18 +2521,79 @@ } }, "node_modules/@glue42/server-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.1.tgz", - "integrity": "sha512-DCwlj2jJCCJU3jsxls3FBNT0rnDB1OR/a2e8dFKFcaKyyflMYBCRS8/gttjifLhv4bc1GF5VLT1Va4OjF4qkVA==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", + "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", "dependencies": { "@glue42/schemas": "^3.18.0", "@types/request": "^2.48.8", "axios": "^1.6.2", "form-data": "^4.0.0", "jwt-decode": "^3.1.2", + "rimraf": "^5.0.5", "typescript": "^4.2.4" } }, + "node_modules/@glue42/server-api/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@glue42/server-api/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@glue42/server-api/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@glue42/server-api/node_modules/rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.11", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", @@ -2564,15 +2625,15 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" }, "node_modules/@interopio/browser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.1.2.tgz", - "integrity": "sha512-fHMwHrJtrqkT642az95wWD3GVi8d6Z3Sj4xTD0vjADii6LzyqC7LgmvFb4ru+4DXricHo6IeMCRayA8MB6f1RA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", + "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", "dependencies": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.1.0", - "@interopio/utils": "^1.1.2", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", "callback-registry": "^2.6.0", "decoder-validate": "0.0.2", "idb": "^7.1.1", @@ -2581,18 +2642,18 @@ } }, "node_modules/@interopio/browser-platform": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.1.2.tgz", - "integrity": "sha512-wOqbf8Mz/p12jgQtK7KTk1pjKYBifyi6nkGKS+AG59FMrNWpR6vVXk+AjOGJCrN0ZqzcmeyLznYUys7vw+r/nA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", + "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", "dependencies": { "@glue42/gateway-web": "^3.0.17", - "@glue42/server-api": "^1.5.0", - "@interopio/browser": "^3.1.2", - "@interopio/core": "^6.1.0", + "@glue42/server-api": "^1.6.3", + "@interopio/browser": "^3.2.0", + "@interopio/core": "^6.2.0", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.1.0", - "@interopio/utils": "^1.1.2", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", "callback-registry": "^2.7.1", "decoder-validate": "0.0.2", "deep-equal": "^2.1.0", @@ -2606,9 +2667,9 @@ } }, "node_modules/@interopio/core": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.1.0.tgz", - "integrity": "sha512-/IYa/6ypYbh1YDDsul1G6qbS7TSDFAfmFtjzrYOdYIUpqt4uIpRY6hZ61GGCVuzTnkNB6eYOTwTyZ9Tbf9yD2A==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", + "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", "dependencies": { "callback-registry": "^2.7.2", "shortid": "^2.2.16", @@ -2616,31 +2677,41 @@ } }, "node_modules/@interopio/desktop": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.0.2.tgz", - "integrity": "sha512-HRgNKodE8OQyqIZnj+2ZISopWHDTDGhbU5n6gBOsU/4KEV5nr8ivjeDjx5jBw2uw9xjf5lOfKNif5+NqCk7g+g==", - "hasInstallScript": true, + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", + "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", "dependencies": { "@glue42/schemas": "^3.22.0", - "@interopio/core": "^6.0.2", + "@interopio/core": "^6.1.0", "@interopio/workspaces-api": "^3.1.0", "callback-registry": "^2.7.1", - "shortid": "2.2.8" + "nanoid": "^3.3.7" } }, - "node_modules/@interopio/desktop/node_modules/shortid": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.8.tgz", - "integrity": "sha512-/DQs6HHGgeZN3B8V90yL7anMr2ehO/ldvcncCY6O8XaXTco5tbSR2iQUfVcvBOaZS8jOSK6HJtNLvDgA6OTR8w==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info." + "node_modules/@interopio/desktop/node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } }, "node_modules/@interopio/react-hooks": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.1.2.tgz", - "integrity": "sha512-LzOcwXSvQCeTa2/vpVWRR2aDRV5WpUwGGEVu14pt2gezNVKZj3cVBuB/rTDO6gvmommUYudPP6FSfDHWgJxAUA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", + "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", "dependencies": { - "@interopio/browser": "^3.1.2", - "@interopio/browser-platform": "^3.1.2", + "@interopio/browser": "^3.2.0", + "@interopio/browser-platform": "^3.2.0", "@interopio/desktop": "^6.0.1", "prop-types": "^15.7.2" }, @@ -2658,35 +2729,119 @@ } }, "node_modules/@interopio/search-api": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.1.0.tgz", - "integrity": "sha512-yrAYDJp2W3AWHJeE3P2yaTrnEKWxvr72n4n9VKb/0i6E6MGcOpXKx+UMAkvkFqSXCBXS396ugNhasFfKa2nFCw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", + "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", "dependencies": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "callback-registry": "^2.5.2", "decoder-validate": "0.0.2", "nanoid": "^4.0.0" } }, "node_modules/@interopio/utils": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.1.2.tgz", - "integrity": "sha512-meJKY0HWJG4Me7Ev9oSY99cbvJ9DzejTiKjHjPIt57XMO2BFwx1FKD0Kvj4gjzBotvN2nsqWtTXTFLdUV4duaw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", "dependencies": { "decoder-validate": "^0.0.2" } }, "node_modules/@interopio/workspaces-api": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.1.0.tgz", - "integrity": "sha512-Sd0uoYjVK0jH0N1yN7EvsfvZhZN96V2sqkEOGt1f6o8mKJUby2T/6+tkcOvlNyQyCx6KrE9HiyfBMY76sCy/GA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", + "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", "dependencies": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "callback-registry": "^2.5.2", "decoder-validate": "0.0.2", "nanoid": "^4.0.0" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -3152,6 +3307,15 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.11", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", @@ -4856,11 +5020,11 @@ } }, "node_modules/axios": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", - "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.4", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -6608,6 +6772,11 @@ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -7823,9 +7992,9 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" }, "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "funding": [ { "type": "individual", @@ -7849,6 +8018,32 @@ "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", @@ -9275,6 +9470,23 @@ "set-function-name": "^2.0.1" } }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jake": { "version": "10.8.7", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", @@ -10779,6 +10991,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -11302,6 +11522,29 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -14184,6 +14427,25 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -14274,6 +14536,18 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -16081,6 +16355,23 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -17793,9 +18084,9 @@ "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==" }, "@glue42/gateway-web": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.18.tgz", - "integrity": "sha512-swROglo4+fRruNpfKh17EmPOLzYgfD8NAIy4Sw1fzZkCvhmv3SLISMYsj1ILpI/g9dW3bzdYSja15L9wCjLgSA==" + "version": "3.0.19", + "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", + "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" }, "@glue42/schemas": { "version": "3.22.0", @@ -17807,16 +18098,55 @@ } }, "@glue42/server-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.1.tgz", - "integrity": "sha512-DCwlj2jJCCJU3jsxls3FBNT0rnDB1OR/a2e8dFKFcaKyyflMYBCRS8/gttjifLhv4bc1GF5VLT1Va4OjF4qkVA==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", + "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", "requires": { "@glue42/schemas": "^3.18.0", "@types/request": "^2.48.8", "axios": "^1.6.2", "form-data": "^4.0.0", "jwt-decode": "^3.1.2", + "rimraf": "^5.0.5", "typescript": "^4.2.4" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "requires": { + "glob": "^10.3.7" + } + } } }, "@humanwhocodes/config-array": { @@ -17840,15 +18170,15 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" }, "@interopio/browser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.1.2.tgz", - "integrity": "sha512-fHMwHrJtrqkT642az95wWD3GVi8d6Z3Sj4xTD0vjADii6LzyqC7LgmvFb4ru+4DXricHo6IeMCRayA8MB6f1RA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", + "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", "requires": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.1.0", - "@interopio/utils": "^1.1.2", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", "callback-registry": "^2.6.0", "decoder-validate": "0.0.2", "idb": "^7.1.1", @@ -17857,18 +18187,18 @@ } }, "@interopio/browser-platform": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.1.2.tgz", - "integrity": "sha512-wOqbf8Mz/p12jgQtK7KTk1pjKYBifyi6nkGKS+AG59FMrNWpR6vVXk+AjOGJCrN0ZqzcmeyLznYUys7vw+r/nA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", + "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", "requires": { "@glue42/gateway-web": "^3.0.17", - "@glue42/server-api": "^1.5.0", - "@interopio/browser": "^3.1.2", - "@interopio/core": "^6.1.0", + "@glue42/server-api": "^1.6.3", + "@interopio/browser": "^3.2.0", + "@interopio/core": "^6.2.0", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.1.0", - "@interopio/utils": "^1.1.2", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", "callback-registry": "^2.7.1", "decoder-validate": "0.0.2", "deep-equal": "^2.1.0", @@ -17882,9 +18212,9 @@ } }, "@interopio/core": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.1.0.tgz", - "integrity": "sha512-/IYa/6ypYbh1YDDsul1G6qbS7TSDFAfmFtjzrYOdYIUpqt4uIpRY6hZ61GGCVuzTnkNB6eYOTwTyZ9Tbf9yD2A==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", + "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", "requires": { "callback-registry": "^2.7.2", "shortid": "^2.2.16", @@ -17892,65 +18222,118 @@ } }, "@interopio/desktop": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.0.2.tgz", - "integrity": "sha512-HRgNKodE8OQyqIZnj+2ZISopWHDTDGhbU5n6gBOsU/4KEV5nr8ivjeDjx5jBw2uw9xjf5lOfKNif5+NqCk7g+g==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", + "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", "requires": { "@glue42/schemas": "^3.22.0", - "@interopio/core": "^6.0.2", + "@interopio/core": "^6.1.0", "@interopio/workspaces-api": "^3.1.0", "callback-registry": "^2.7.1", - "shortid": "2.2.8" + "nanoid": "^3.3.7" }, "dependencies": { - "shortid": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.8.tgz", - "integrity": "sha512-/DQs6HHGgeZN3B8V90yL7anMr2ehO/ldvcncCY6O8XaXTco5tbSR2iQUfVcvBOaZS8jOSK6HJtNLvDgA6OTR8w==" + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" } } }, "@interopio/react-hooks": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.1.2.tgz", - "integrity": "sha512-LzOcwXSvQCeTa2/vpVWRR2aDRV5WpUwGGEVu14pt2gezNVKZj3cVBuB/rTDO6gvmommUYudPP6FSfDHWgJxAUA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", + "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", "requires": { - "@interopio/browser": "^3.1.2", - "@interopio/browser-platform": "^3.1.2", + "@interopio/browser": "^3.2.0", + "@interopio/browser-platform": "^3.2.0", "@interopio/desktop": "^6.0.1", "prop-types": "^15.7.2" } }, "@interopio/search-api": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.1.0.tgz", - "integrity": "sha512-yrAYDJp2W3AWHJeE3P2yaTrnEKWxvr72n4n9VKb/0i6E6MGcOpXKx+UMAkvkFqSXCBXS396ugNhasFfKa2nFCw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", + "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", "requires": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "callback-registry": "^2.5.2", "decoder-validate": "0.0.2", "nanoid": "^4.0.0" } }, "@interopio/utils": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.1.2.tgz", - "integrity": "sha512-meJKY0HWJG4Me7Ev9oSY99cbvJ9DzejTiKjHjPIt57XMO2BFwx1FKD0Kvj4gjzBotvN2nsqWtTXTFLdUV4duaw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", "requires": { "decoder-validate": "^0.0.2" } }, "@interopio/workspaces-api": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.1.0.tgz", - "integrity": "sha512-Sd0uoYjVK0jH0N1yN7EvsfvZhZN96V2sqkEOGt1f6o8mKJUby2T/6+tkcOvlNyQyCx6KrE9HiyfBMY76sCy/GA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", + "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", "requires": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "callback-registry": "^2.5.2", "decoder-validate": "0.0.2", "nanoid": "^4.0.0" } }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -18317,6 +18700,12 @@ "fastq": "^1.6.0" } }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true + }, "@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.11", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", @@ -19584,11 +19973,11 @@ "integrity": "sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==" }, "axios": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", - "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "requires": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.4", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -20870,6 +21259,11 @@ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -21793,9 +22187,9 @@ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==" }, "follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==" }, "for-each": { "version": "0.3.3", @@ -21805,6 +22199,22 @@ "is-callable": "^1.1.3" } }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + } + } + }, "fork-ts-checker-webpack-plugin": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", @@ -22781,6 +23191,15 @@ "set-function-name": "^2.0.1" } }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "jake": { "version": "10.8.7", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", @@ -23916,6 +24335,11 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + }, "mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -24289,6 +24713,22 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "requires": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==" + } + } + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -26229,6 +26669,23 @@ } } }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + } + } + }, "string.prototype.matchall": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", @@ -26293,6 +26750,14 @@ "ansi-regex": "^5.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -27650,6 +28115,16 @@ "strip-ansi": "^6.0.0" } }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/browser-platform-dev-react-seed/react-client/package.json b/browser-platform-dev-react-seed/react-client/package.json index 36688c1..7af5aa9 100644 --- a/browser-platform-dev-react-seed/react-client/package.json +++ b/browser-platform-dev-react-seed/react-client/package.json @@ -3,8 +3,8 @@ "version": "0.1.0", "private": true, "dependencies": { - "@interopio/react-hooks": "^3.1.2", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/react-hooks": "^3.2.0", + "@interopio/workspaces-api": "^3.2.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", diff --git a/browser-platform-dev-react-seed/workspace-platform/package-lock.json b/browser-platform-dev-react-seed/workspace-platform/package-lock.json index 5993524..3c70416 100644 --- a/browser-platform-dev-react-seed/workspace-platform/package-lock.json +++ b/browser-platform-dev-react-seed/workspace-platform/package-lock.json @@ -8,11 +8,11 @@ "name": "workspaces-react-template", "version": "0.1.0", "dependencies": { - "@interopio/browser-platform": "^3.1.2", - "@interopio/desktop": "^6.0.2", - "@interopio/react-hooks": "^3.1.2", - "@interopio/workspaces-api": "^3.1.0", - "@interopio/workspaces-ui-react": "^3.1.2", + "@interopio/browser-platform": "^3.2.0", + "@interopio/desktop": "^6.2.2", + "@interopio/react-hooks": "^3.2.0", + "@interopio/workspaces-api": "^3.2.0", + "@interopio/workspaces-ui-react": "^3.2.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, @@ -2696,9 +2696,9 @@ } }, "node_modules/@glue42/gateway-web": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.18.tgz", - "integrity": "sha512-swROglo4+fRruNpfKh17EmPOLzYgfD8NAIy4Sw1fzZkCvhmv3SLISMYsj1ILpI/g9dW3bzdYSja15L9wCjLgSA==" + "version": "3.0.19", + "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", + "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" }, "node_modules/@glue42/schemas": { "version": "3.22.0", @@ -2718,18 +2718,79 @@ } }, "node_modules/@glue42/server-api": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.5.0.tgz", - "integrity": "sha512-UzmsGQPYxTqeo9WXf9fDjxNjxMcCDYryCuRcsJRC8y3dIVA8rLuIVUc7WOYKAZe+HuHyljxIkNAeQ1N771+27A==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", + "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", "dependencies": { "@glue42/schemas": "^3.18.0", "@types/request": "^2.48.8", - "axios": "^0.21.1", + "axios": "^1.6.2", "form-data": "^4.0.0", "jwt-decode": "^3.1.2", + "rimraf": "^5.0.5", "typescript": "^4.2.4" } }, + "node_modules/@glue42/server-api/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@glue42/server-api/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@glue42/server-api/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@glue42/server-api/node_modules/rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@glue42/theme": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/@glue42/theme/-/theme-4.0.8.tgz", @@ -2793,15 +2854,15 @@ "dev": true }, "node_modules/@interopio/browser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.1.2.tgz", - "integrity": "sha512-fHMwHrJtrqkT642az95wWD3GVi8d6Z3Sj4xTD0vjADii6LzyqC7LgmvFb4ru+4DXricHo6IeMCRayA8MB6f1RA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", + "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", "dependencies": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.1.0", - "@interopio/utils": "^1.1.2", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", "callback-registry": "^2.6.0", "decoder-validate": "0.0.2", "idb": "^7.1.1", @@ -2810,18 +2871,18 @@ } }, "node_modules/@interopio/browser-platform": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.1.2.tgz", - "integrity": "sha512-wOqbf8Mz/p12jgQtK7KTk1pjKYBifyi6nkGKS+AG59FMrNWpR6vVXk+AjOGJCrN0ZqzcmeyLznYUys7vw+r/nA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", + "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", "dependencies": { "@glue42/gateway-web": "^3.0.17", - "@glue42/server-api": "^1.5.0", - "@interopio/browser": "^3.1.2", - "@interopio/core": "^6.1.0", + "@glue42/server-api": "^1.6.3", + "@interopio/browser": "^3.2.0", + "@interopio/core": "^6.2.0", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.1.0", - "@interopio/utils": "^1.1.2", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", "callback-registry": "^2.7.1", "decoder-validate": "0.0.2", "deep-equal": "^2.1.0", @@ -2835,9 +2896,9 @@ } }, "node_modules/@interopio/core": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.1.0.tgz", - "integrity": "sha512-/IYa/6ypYbh1YDDsul1G6qbS7TSDFAfmFtjzrYOdYIUpqt4uIpRY6hZ61GGCVuzTnkNB6eYOTwTyZ9Tbf9yD2A==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", + "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", "dependencies": { "callback-registry": "^2.7.2", "shortid": "^2.2.16", @@ -2845,39 +2906,49 @@ } }, "node_modules/@interopio/desktop": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.0.2.tgz", - "integrity": "sha512-HRgNKodE8OQyqIZnj+2ZISopWHDTDGhbU5n6gBOsU/4KEV5nr8ivjeDjx5jBw2uw9xjf5lOfKNif5+NqCk7g+g==", - "hasInstallScript": true, + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", + "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", "dependencies": { "@glue42/schemas": "^3.22.0", - "@interopio/core": "^6.0.2", + "@interopio/core": "^6.1.0", "@interopio/workspaces-api": "^3.1.0", "callback-registry": "^2.7.1", - "shortid": "2.2.8" + "nanoid": "^3.3.7" } }, - "node_modules/@interopio/desktop/node_modules/shortid": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.8.tgz", - "integrity": "sha512-/DQs6HHGgeZN3B8V90yL7anMr2ehO/ldvcncCY6O8XaXTco5tbSR2iQUfVcvBOaZS8jOSK6HJtNLvDgA6OTR8w==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info." + "node_modules/@interopio/desktop/node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } }, "node_modules/@interopio/golden-layout": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@interopio/golden-layout/-/golden-layout-3.1.0.tgz", - "integrity": "sha512-EukL5R82099uRYQfhXaWitRusgkyXegmHrUTOgn8OwxCCjFwoJA/8eIaCYHJhkVvr+b7Sc1kaUVCIRHoehn8Bg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/golden-layout/-/golden-layout-3.2.0.tgz", + "integrity": "sha512-2SHrxBuf+0CEnjLltjOxdPkdJLZi1BdYEa65jlm3r7GEVuSYdswbAzo+X8f+kd856uNEdCxUOXnnSF8FnJcoqw==", "peerDependencies": { "jquery": "3.5.0" } }, "node_modules/@interopio/react-hooks": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.1.2.tgz", - "integrity": "sha512-LzOcwXSvQCeTa2/vpVWRR2aDRV5WpUwGGEVu14pt2gezNVKZj3cVBuB/rTDO6gvmommUYudPP6FSfDHWgJxAUA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", + "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", "dependencies": { - "@interopio/browser": "^3.1.2", - "@interopio/browser-platform": "^3.1.2", + "@interopio/browser": "^3.2.0", + "@interopio/browser-platform": "^3.2.0", "@interopio/desktop": "^6.0.1", "prop-types": "^15.7.2" }, @@ -2895,11 +2966,11 @@ } }, "node_modules/@interopio/search-api": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.1.0.tgz", - "integrity": "sha512-yrAYDJp2W3AWHJeE3P2yaTrnEKWxvr72n4n9VKb/0i6E6MGcOpXKx+UMAkvkFqSXCBXS396ugNhasFfKa2nFCw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", + "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", "dependencies": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "callback-registry": "^2.5.2", "decoder-validate": "0.0.2", "nanoid": "^4.0.0" @@ -2911,46 +2982,63 @@ "integrity": "sha512-8tqY9P6IJALnIHQ5PI8EYs/8Y3zTpNZ+uQbjY4lRbEjmhyUUf8P1D9N1C7zN/KefEvBsKtSv9vqpqcZjALyQhg==" }, "node_modules/@interopio/utils": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.1.2.tgz", - "integrity": "sha512-meJKY0HWJG4Me7Ev9oSY99cbvJ9DzejTiKjHjPIt57XMO2BFwx1FKD0Kvj4gjzBotvN2nsqWtTXTFLdUV4duaw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", "dependencies": { "decoder-validate": "^0.0.2" } }, "node_modules/@interopio/workspaces-api": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.1.0.tgz", - "integrity": "sha512-Sd0uoYjVK0jH0N1yN7EvsfvZhZN96V2sqkEOGt1f6o8mKJUby2T/6+tkcOvlNyQyCx6KrE9HiyfBMY76sCy/GA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", + "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", "dependencies": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "callback-registry": "^2.5.2", "decoder-validate": "0.0.2", "nanoid": "^4.0.0" } }, "node_modules/@interopio/workspaces-ui-core": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-core/-/workspaces-ui-core-3.1.2.tgz", - "integrity": "sha512-BwPTVJ1JNa73NzW+ES0UegjHNvn7JWEMzZ7S1ycCCZEkFzPhPBlZF9UKukq1Zjs35tmUJ6BGujcOBCqnlYydjg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-core/-/workspaces-ui-core-3.2.1.tgz", + "integrity": "sha512-uWi+lMQX++b0yFHTpxnvynfHHb/ve5MzxRUB+peQy5vE2ctTN70INVeMbjHi4P81+g9LKuSi3VyPMGbainRi0Q==", "dependencies": { "@glue42/theme": "^4.0.6", - "@interopio/browser": "^3.1.2", - "@interopio/golden-layout": "^3.1.0", + "@interopio/browser": "^3.2.0", + "@interopio/golden-layout": "^3.2.0", "@interopio/theme": "^1.0.3", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/workspaces-api": "^3.2.0", "callback-registry": "^2.7.2", "jquery": "3.5.0", - "resize-observer-polyfill": "^1.5.1", - "shortid": "^2.2.16" + "nanoid": "^5.0.4", + "resize-observer-polyfill": "^1.5.1" + } + }, + "node_modules/@interopio/workspaces-ui-core/node_modules/nanoid": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.6.tgz", + "integrity": "sha512-rRq0eMHoGZxlvaFOUdK1Ev83Bd1IgzzR+WJ3IbDJ7QOSdAxYjlurSPqFs9s4lJg29RT6nPwizFtJhQS6V5xgiA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" } }, "node_modules/@interopio/workspaces-ui-react": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-react/-/workspaces-ui-react-3.1.2.tgz", - "integrity": "sha512-EFFhKEFDt/U2pHZeyYu15v6hECOnHByOYFL90bD6pcslTdhAZjZ0eXAXAbDOFBLSBr7ZfUod1x4qjiRCRTjV5A==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-react/-/workspaces-ui-react-3.2.1.tgz", + "integrity": "sha512-x6b5276oD+7zebPhK7UrAoEEhafBVvONhcv9b0h9NJlah88nPyZEYPI6YhNSj7Jk1o1my89cVQvAtpQlOH1CLg==", "dependencies": { - "@interopio/workspaces-ui-core": "^3.1.2", + "@interopio/workspaces-ui-core": "^3.2.1", "reactjs-popup": "^2.0.5", "use-sync-external-store": "^1.2.0" }, @@ -2970,6 +3058,90 @@ } } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -3471,6 +3643,15 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.11", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", @@ -4125,9 +4306,9 @@ } }, "node_modules/@types/caseless": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.3.tgz", - "integrity": "sha512-ZD/NsIJYq/2RH+hY7lXmstfp/v9djGt9ah+xRQ3pcgR79qiKsG4pLl25AI7IcXxVO8dH9GiBE5rAknC0ePntlw==" + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" }, "node_modules/@types/connect": { "version": "3.4.36", @@ -4382,9 +4563,9 @@ } }, "node_modules/@types/request": { - "version": "2.48.9", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.9.tgz", - "integrity": "sha512-4mi2hYsvPAhe8RXjk5DKB09sAUzbK68T2XjORehHdWyxFoX2zUnfi1VQ5wU4Md28H/5+uB4DkxY9BS4B87N/0A==", + "version": "2.48.12", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", + "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", "dependencies": { "@types/caseless": "*", "@types/node": "*", @@ -4487,9 +4668,9 @@ } }, "node_modules/@types/tough-cookie": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz", - "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==" + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" }, "node_modules/@types/trusted-types": { "version": "2.0.4", @@ -5115,7 +5296,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -5124,7 +5304,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -5431,11 +5610,13 @@ } }, "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "dependencies": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/axobject-query": { @@ -5681,8 +5862,7 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/batch": { "version": "0.6.1", @@ -6251,7 +6431,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -6262,8 +6441,7 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/colord": { "version": "2.9.3", @@ -6493,7 +6671,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -7351,6 +7528,11 @@ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -7393,8 +7575,7 @@ "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "node_modules/emojis-list": { "version": "3.0.0", @@ -8668,9 +8849,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "funding": [ { "type": "individual", @@ -8694,6 +8875,32 @@ "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", @@ -9818,7 +10025,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -10108,8 +10314,7 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", @@ -10223,6 +10428,23 @@ "set-function-name": "^2.0.1" } }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jake": { "version": "10.8.7", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", @@ -11492,9 +11714,9 @@ } }, "node_modules/jsrsasign": { - "version": "10.8.6", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.8.6.tgz", - "integrity": "sha512-bQmbVtsfbgaKBTWCKiDCPlUPbdlRIK/FzSwT3BzIgZl/cU6TqXu6pZJsCI/dJVrZ9Gir5GC4woqw9shH/v7MBw==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", + "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==", "funding": { "url": "https://github.com/kjur/jsrsasign#donations" } @@ -11989,6 +12211,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -12547,7 +12777,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, "engines": { "node": ">=8" } @@ -12558,6 +12787,29 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -14148,6 +14400,11 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -15286,7 +15543,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "dependencies": { "shebang-regex": "^3.0.0" }, @@ -15298,7 +15554,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, "engines": { "node": ">=8" } @@ -15665,7 +15920,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -15675,11 +15929,29 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/string.prototype.matchall": { "version": "4.0.10", @@ -15764,7 +16036,18 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -16602,9 +16885,9 @@ } }, "node_modules/ua-parser-js": { - "version": "1.0.36", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.36.tgz", - "integrity": "sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==", + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", "funding": [ { "type": "opencollective", @@ -17306,7 +17589,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -17738,6 +18020,23 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -19649,9 +19948,9 @@ "dev": true }, "@glue42/gateway-web": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.18.tgz", - "integrity": "sha512-swROglo4+fRruNpfKh17EmPOLzYgfD8NAIy4Sw1fzZkCvhmv3SLISMYsj1ILpI/g9dW3bzdYSja15L9wCjLgSA==" + "version": "3.0.19", + "resolved": "https://registry.npmjs.org/@glue42/gateway-web/-/gateway-web-3.0.19.tgz", + "integrity": "sha512-k0s5C21jIF+3o1g+Sz5ZocfVUTSCuXFg21KB/wh5hqO0aFM4KCVHmWqazBmGpp16VfxoqoPHujcZDk8cK5Dl+g==" }, "@glue42/schemas": { "version": "3.22.0", @@ -19663,16 +19962,55 @@ } }, "@glue42/server-api": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.5.0.tgz", - "integrity": "sha512-UzmsGQPYxTqeo9WXf9fDjxNjxMcCDYryCuRcsJRC8y3dIVA8rLuIVUc7WOYKAZe+HuHyljxIkNAeQ1N771+27A==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@glue42/server-api/-/server-api-1.6.3.tgz", + "integrity": "sha512-UpHc8l1iNkg48k7JYLB9ofk8BmzG1sRxTLiu2l3pLldbzxS1xxcdRruUx45SSeSiM2juiahbi04iTDCsgQUVFg==", "requires": { "@glue42/schemas": "^3.18.0", "@types/request": "^2.48.8", - "axios": "^0.21.1", + "axios": "^1.6.2", "form-data": "^4.0.0", "jwt-decode": "^3.1.2", + "rimraf": "^5.0.5", "typescript": "^4.2.4" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "requires": { + "glob": "^10.3.7" + } + } } }, "@glue42/theme": { @@ -19726,15 +20064,15 @@ "dev": true }, "@interopio/browser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.1.2.tgz", - "integrity": "sha512-fHMwHrJtrqkT642az95wWD3GVi8d6Z3Sj4xTD0vjADii6LzyqC7LgmvFb4ru+4DXricHo6IeMCRayA8MB6f1RA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser/-/browser-3.2.0.tgz", + "integrity": "sha512-B9Xv0vAdJtPnkZiy1Zbcy1TPaWkeQMyKL+H0UyNN54SXx/ksvoQCHvvP27OJFiKvNK962v8ju6cfw3oRcYqD1g==", "requires": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.1.0", - "@interopio/utils": "^1.1.2", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", "callback-registry": "^2.6.0", "decoder-validate": "0.0.2", "idb": "^7.1.1", @@ -19743,18 +20081,18 @@ } }, "@interopio/browser-platform": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.1.2.tgz", - "integrity": "sha512-wOqbf8Mz/p12jgQtK7KTk1pjKYBifyi6nkGKS+AG59FMrNWpR6vVXk+AjOGJCrN0ZqzcmeyLznYUys7vw+r/nA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/browser-platform/-/browser-platform-3.2.0.tgz", + "integrity": "sha512-0dpIC7r/duBJrvXVvQaKoULC97De6qhPCA6fyFL9l+yCtZvvH3JeqmDkXsx+E7OHd8gQGRokb/Y/MOp620tY9Q==", "requires": { "@glue42/gateway-web": "^3.0.17", - "@glue42/server-api": "^1.5.0", - "@interopio/browser": "^3.1.2", - "@interopio/core": "^6.1.0", + "@glue42/server-api": "^1.6.3", + "@interopio/browser": "^3.2.0", + "@interopio/core": "^6.2.0", "@interopio/desktop": "^6.0.1", - "@interopio/search-api": "^2.1.0", - "@interopio/utils": "^1.1.2", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/search-api": "^2.2.0", + "@interopio/utils": "^1.2.0", + "@interopio/workspaces-api": "^3.2.0", "callback-registry": "^2.7.1", "decoder-validate": "0.0.2", "deep-equal": "^2.1.0", @@ -19768,9 +20106,9 @@ } }, "@interopio/core": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.1.0.tgz", - "integrity": "sha512-/IYa/6ypYbh1YDDsul1G6qbS7TSDFAfmFtjzrYOdYIUpqt4uIpRY6hZ61GGCVuzTnkNB6eYOTwTyZ9Tbf9yD2A==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@interopio/core/-/core-6.2.0.tgz", + "integrity": "sha512-T+I6lymeJ7WbeFdM1+kdTSBOBH95d8qndK1LxVoAkVYKL3B952GXQhHTPBSq5uvARgvZmXlBc7jLVJo8cTDpNw==", "requires": { "callback-registry": "^2.7.2", "shortid": "^2.2.16", @@ -19778,47 +20116,47 @@ } }, "@interopio/desktop": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.0.2.tgz", - "integrity": "sha512-HRgNKodE8OQyqIZnj+2ZISopWHDTDGhbU5n6gBOsU/4KEV5nr8ivjeDjx5jBw2uw9xjf5lOfKNif5+NqCk7g+g==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/@interopio/desktop/-/desktop-6.2.2.tgz", + "integrity": "sha512-HzfhjU5PRQPZR7k9JYMLtsZ9TAntsRCoMQp/r2LuPdumG4eWh9SUEB5ScwyXuHlcYqJSdogDwmws8hsIsXvZVA==", "requires": { "@glue42/schemas": "^3.22.0", - "@interopio/core": "^6.0.2", + "@interopio/core": "^6.1.0", "@interopio/workspaces-api": "^3.1.0", "callback-registry": "^2.7.1", - "shortid": "2.2.8" + "nanoid": "^3.3.7" }, "dependencies": { - "shortid": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.8.tgz", - "integrity": "sha512-/DQs6HHGgeZN3B8V90yL7anMr2ehO/ldvcncCY6O8XaXTco5tbSR2iQUfVcvBOaZS8jOSK6HJtNLvDgA6OTR8w==" + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" } } }, "@interopio/golden-layout": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@interopio/golden-layout/-/golden-layout-3.1.0.tgz", - "integrity": "sha512-EukL5R82099uRYQfhXaWitRusgkyXegmHrUTOgn8OwxCCjFwoJA/8eIaCYHJhkVvr+b7Sc1kaUVCIRHoehn8Bg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/golden-layout/-/golden-layout-3.2.0.tgz", + "integrity": "sha512-2SHrxBuf+0CEnjLltjOxdPkdJLZi1BdYEa65jlm3r7GEVuSYdswbAzo+X8f+kd856uNEdCxUOXnnSF8FnJcoqw==", "requires": {} }, "@interopio/react-hooks": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.1.2.tgz", - "integrity": "sha512-LzOcwXSvQCeTa2/vpVWRR2aDRV5WpUwGGEVu14pt2gezNVKZj3cVBuB/rTDO6gvmommUYudPP6FSfDHWgJxAUA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/react-hooks/-/react-hooks-3.2.0.tgz", + "integrity": "sha512-1jqquE7heNQObJdooqkoVCNRtg2SlON7P18lOLIlgHl3KIkbRwln1VyHxxrfuXohDJciIlWSq5JbY6IGf85odg==", "requires": { - "@interopio/browser": "^3.1.2", - "@interopio/browser-platform": "^3.1.2", + "@interopio/browser": "^3.2.0", + "@interopio/browser-platform": "^3.2.0", "@interopio/desktop": "^6.0.1", "prop-types": "^15.7.2" } }, "@interopio/search-api": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.1.0.tgz", - "integrity": "sha512-yrAYDJp2W3AWHJeE3P2yaTrnEKWxvr72n4n9VKb/0i6E6MGcOpXKx+UMAkvkFqSXCBXS396ugNhasFfKa2nFCw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@interopio/search-api/-/search-api-2.2.0.tgz", + "integrity": "sha512-Q8CmDjDSBRie+pS9raklvFaL5ko1LpqzoEEaxD587lpgR+7gdMTdfv8BxazNd8iL/NeZmWbMWWk0GNNgSiaxYA==", "requires": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "callback-registry": "^2.5.2", "decoder-validate": "0.0.2", "nanoid": "^4.0.0" @@ -19830,50 +20168,110 @@ "integrity": "sha512-8tqY9P6IJALnIHQ5PI8EYs/8Y3zTpNZ+uQbjY4lRbEjmhyUUf8P1D9N1C7zN/KefEvBsKtSv9vqpqcZjALyQhg==" }, "@interopio/utils": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.1.2.tgz", - "integrity": "sha512-meJKY0HWJG4Me7Ev9oSY99cbvJ9DzejTiKjHjPIt57XMO2BFwx1FKD0Kvj4gjzBotvN2nsqWtTXTFLdUV4duaw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@interopio/utils/-/utils-1.2.0.tgz", + "integrity": "sha512-Vn6QOX8IjuhpnpTNYGmfZ1VnIzIuRvwa3CIartDTcthvpHce/IlPCpMTr8uquzom8yzdONXcW4t0yLxRxMncBQ==", "requires": { "decoder-validate": "^0.0.2" } }, "@interopio/workspaces-api": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.1.0.tgz", - "integrity": "sha512-Sd0uoYjVK0jH0N1yN7EvsfvZhZN96V2sqkEOGt1f6o8mKJUby2T/6+tkcOvlNyQyCx6KrE9HiyfBMY76sCy/GA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-api/-/workspaces-api-3.2.0.tgz", + "integrity": "sha512-ShufjDByHfhn8T9qiOZ/NqczLzBy/7d0BLz+Jq8bMPutud8dsyNpIPHjzFi8jMNTA/y9fZPMp6SyMU0JS6C/uA==", "requires": { - "@interopio/core": "^6.1.0", + "@interopio/core": "^6.2.0", "callback-registry": "^2.5.2", "decoder-validate": "0.0.2", "nanoid": "^4.0.0" } }, "@interopio/workspaces-ui-core": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-core/-/workspaces-ui-core-3.1.2.tgz", - "integrity": "sha512-BwPTVJ1JNa73NzW+ES0UegjHNvn7JWEMzZ7S1ycCCZEkFzPhPBlZF9UKukq1Zjs35tmUJ6BGujcOBCqnlYydjg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-core/-/workspaces-ui-core-3.2.1.tgz", + "integrity": "sha512-uWi+lMQX++b0yFHTpxnvynfHHb/ve5MzxRUB+peQy5vE2ctTN70INVeMbjHi4P81+g9LKuSi3VyPMGbainRi0Q==", "requires": { "@glue42/theme": "^4.0.6", - "@interopio/browser": "^3.1.2", - "@interopio/golden-layout": "^3.1.0", + "@interopio/browser": "^3.2.0", + "@interopio/golden-layout": "^3.2.0", "@interopio/theme": "^1.0.3", - "@interopio/workspaces-api": "^3.1.0", + "@interopio/workspaces-api": "^3.2.0", "callback-registry": "^2.7.2", "jquery": "3.5.0", - "resize-observer-polyfill": "^1.5.1", - "shortid": "^2.2.16" + "nanoid": "^5.0.4", + "resize-observer-polyfill": "^1.5.1" + }, + "dependencies": { + "nanoid": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.6.tgz", + "integrity": "sha512-rRq0eMHoGZxlvaFOUdK1Ev83Bd1IgzzR+WJ3IbDJ7QOSdAxYjlurSPqFs9s4lJg29RT6nPwizFtJhQS6V5xgiA==" + } } }, "@interopio/workspaces-ui-react": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-react/-/workspaces-ui-react-3.1.2.tgz", - "integrity": "sha512-EFFhKEFDt/U2pHZeyYu15v6hECOnHByOYFL90bD6pcslTdhAZjZ0eXAXAbDOFBLSBr7ZfUod1x4qjiRCRTjV5A==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@interopio/workspaces-ui-react/-/workspaces-ui-react-3.2.1.tgz", + "integrity": "sha512-x6b5276oD+7zebPhK7UrAoEEhafBVvONhcv9b0h9NJlah88nPyZEYPI6YhNSj7Jk1o1my89cVQvAtpQlOH1CLg==", "requires": { - "@interopio/workspaces-ui-core": "^3.1.2", + "@interopio/workspaces-ui-core": "^3.2.1", "reactjs-popup": "^2.0.5", "use-sync-external-store": "^1.2.0" } }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -20276,6 +20674,12 @@ "fastq": "^1.6.0" } }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true + }, "@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.11", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.11.tgz", @@ -20730,9 +21134,9 @@ } }, "@types/caseless": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.3.tgz", - "integrity": "sha512-ZD/NsIJYq/2RH+hY7lXmstfp/v9djGt9ah+xRQ3pcgR79qiKsG4pLl25AI7IcXxVO8dH9GiBE5rAknC0ePntlw==" + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==" }, "@types/connect": { "version": "3.4.36", @@ -20983,9 +21387,9 @@ } }, "@types/request": { - "version": "2.48.9", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.9.tgz", - "integrity": "sha512-4mi2hYsvPAhe8RXjk5DKB09sAUzbK68T2XjORehHdWyxFoX2zUnfi1VQ5wU4Md28H/5+uB4DkxY9BS4B87N/0A==", + "version": "2.48.12", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.12.tgz", + "integrity": "sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw==", "requires": { "@types/caseless": "*", "@types/node": "*", @@ -21087,9 +21491,9 @@ } }, "@types/tough-cookie": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.3.tgz", - "integrity": "sha512-THo502dA5PzG/sfQH+42Lw3fvmYkceefOspdCwpHRul8ik2Jv1K8I5OZz1AT3/rs46kwgMCe9bSBmDLYkkOMGg==" + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==" }, "@types/trusted-types": { "version": "2.0.4", @@ -21554,14 +21958,12 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -21782,11 +22184,13 @@ "dev": true }, "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "requires": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "axobject-query": { @@ -21983,8 +22387,7 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "batch": { "version": "0.6.1", @@ -22409,7 +22812,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -22417,8 +22819,7 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "colord": { "version": "2.9.3", @@ -22606,7 +23007,6 @@ "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -23230,6 +23630,11 @@ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", "dev": true }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -23260,8 +23665,7 @@ "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "emojis-list": { "version": "3.0.0", @@ -24254,9 +24658,9 @@ "dev": true }, "follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==" }, "for-each": { "version": "0.3.3", @@ -24266,6 +24670,22 @@ "is-callable": "^1.1.3" } }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + } + } + }, "fork-ts-checker-webpack-plugin": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", @@ -25059,8 +25479,7 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-generator-fn": { "version": "2.1.0", @@ -25251,8 +25670,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "istanbul-lib-coverage": { "version": "3.2.0", @@ -25345,6 +25763,15 @@ "set-function-name": "^2.0.1" } }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "jake": { "version": "10.8.7", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", @@ -26333,9 +26760,9 @@ "dev": true }, "jsrsasign": { - "version": "10.8.6", - "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.8.6.tgz", - "integrity": "sha512-bQmbVtsfbgaKBTWCKiDCPlUPbdlRIK/FzSwT3BzIgZl/cU6TqXu6pZJsCI/dJVrZ9Gir5GC4woqw9shH/v7MBw==" + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/jsrsasign/-/jsrsasign-10.9.0.tgz", + "integrity": "sha512-QWLUikj1SBJGuyGK8tjKSx3K7Y69KYJnrs/pQ1KZ6wvZIkHkWjZ1PJDpuvc1/28c1uP0KW9qn1eI1LzHQqDOwQ==" }, "jsx-ast-utils": { "version": "3.3.5", @@ -26720,6 +27147,11 @@ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, + "minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==" + }, "mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -27130,8 +27562,7 @@ "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, "path-parse": { "version": "1.0.7", @@ -27139,6 +27570,22 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "requires": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==" + } + } + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -28130,6 +28577,11 @@ } } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -28989,7 +29441,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, "requires": { "shebang-regex": "^3.0.0" } @@ -28997,8 +29448,7 @@ "shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "shell-quote": { "version": "1.8.1", @@ -29294,7 +29744,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -29304,8 +29753,24 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + } + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" } } }, @@ -29374,7 +29839,14 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "requires": { "ansi-regex": "^5.0.1" } @@ -30002,9 +30474,9 @@ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" }, "ua-parser-js": { - "version": "1.0.36", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.36.tgz", - "integrity": "sha512-znuyCIXzl8ciS3+y3fHJI/2OhQIXbXw9MWC/o3qwyR+RGppjZHrM27CGFSKCJXi2Kctiz537iOu2KnXs1lMQhw==" + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==" }, "unbox-primitive": { "version": "1.0.2", @@ -30519,7 +30991,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "requires": { "isexe": "^2.0.0" } @@ -30893,6 +31364,16 @@ "strip-ansi": "^6.0.0" } }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/browser-platform-dev-react-seed/workspace-platform/package.json b/browser-platform-dev-react-seed/workspace-platform/package.json index e44a674..93d68bf 100644 --- a/browser-platform-dev-react-seed/workspace-platform/package.json +++ b/browser-platform-dev-react-seed/workspace-platform/package.json @@ -4,11 +4,11 @@ "private": true, "homepage": "./", "dependencies": { - "@interopio/browser-platform": "^3.1.2", - "@interopio/desktop": "^6.0.2", - "@interopio/react-hooks": "^3.1.2", - "@interopio/workspaces-api": "^3.1.0", - "@interopio/workspaces-ui-react": "^3.1.2", + "@interopio/browser-platform": "^3.2.0", + "@interopio/desktop": "^6.2.2", + "@interopio/react-hooks": "^3.2.0", + "@interopio/workspaces-api": "^3.2.0", + "@interopio/workspaces-ui-react": "^3.2.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, From 6d3b6d70503ebe2b53a704755bbe301fecff5d06 Mon Sep 17 00:00:00 2001 From: Kalina Georgieva Date: Thu, 7 Mar 2024 17:25:11 +0200 Subject: [PATCH 2/3] Update vanilla js libraries with browser-platform and browser 3.2.0 libs. Bump workspace-platform packages. Update Intents Resolver UI build Signed-off-by: Kalina Georgieva --- .../public/libs/browser.es.js | 613 ++++++++++++++---- .../public/libs/browser.es.js.map | 2 +- .../intents-resolver-ui/asset-manifest.json | 6 +- .../intents-resolver-ui/index.html | 2 +- .../static/js/main.37f9cff4.js | 3 + ...CENSE.txt => main.37f9cff4.js.LICENSE.txt} | 0 .../static/js/main.37f9cff4.js.map | 1 + .../static/js/main.3f836378.js | 3 - .../static/js/main.3f836378.js.map | 1 - .../package-lock.json | 8 +- .../workspace-platform/package-lock.json | 30 +- .../workspace-platform/package.json | 2 +- .../public/libs/browser.platform.es.js | 4 +- .../public/libs/browser.platform.es.js.map | 2 +- 14 files changed, 521 insertions(+), 156 deletions(-) create mode 100644 browser-platform-dev-react-seed/intents-resolver-ui/static/js/main.37f9cff4.js rename browser-platform-dev-react-seed/intents-resolver-ui/static/js/{main.3f836378.js.LICENSE.txt => main.37f9cff4.js.LICENSE.txt} (100%) create mode 100644 browser-platform-dev-react-seed/intents-resolver-ui/static/js/main.37f9cff4.js.map delete mode 100644 browser-platform-dev-react-seed/intents-resolver-ui/static/js/main.3f836378.js delete mode 100644 browser-platform-dev-react-seed/intents-resolver-ui/static/js/main.3f836378.js.map diff --git a/browser-client-vanilla-js/public/libs/browser.es.js b/browser-client-vanilla-js/public/libs/browser.es.js index e709046..15e6bd3 100644 --- a/browser-client-vanilla-js/public/libs/browser.es.js +++ b/browser-client-vanilla-js/public/libs/browser.es.js @@ -73,10 +73,8 @@ const enterprise = (config) => { libraries: (_a = config === null || config === void 0 ? void 0 : config.libraries) !== null && _a !== void 0 ? _a : [], logger: (_c = (_b = config === null || config === void 0 ? void 0 : config.systemLogger) === null || _b === void 0 ? void 0 : _b.level) !== null && _c !== void 0 ? _c : "warn" }; - if (window.glue42gd) { - return window.Glue(enterpriseConfig); - } - return window.Glue(enterpriseConfig); + const injectedFactory = window.IODesktop || window.Glue; + return injectedFactory(enterpriseConfig); }; /** @@ -1800,7 +1798,7 @@ class FDC3Service { isFdc3Definition(definition) { const decodeRes = allDefinitionsDecoder.run(definition); if (!decodeRes.ok) { - return { isFdc3: false }; + return { isFdc3: false, reason: parseDecoderErrorToStringMessage(decodeRes.error) }; } if (definition.appId && definition.details) { return { isFdc3: true, version: "2.0" }; @@ -1808,7 +1806,7 @@ class FDC3Service { if (definition.manifest) { return { isFdc3: true, version: "1.2" }; } - return { isFdc3: false }; + return { isFdc3: false, reason: "The passed definition is not FDC3" }; } parseToBrowserBaseAppData(definition) { var _a; @@ -1979,9 +1977,27 @@ const decoders$1 = { } }; +var INTENTS_ERRORS; +(function (INTENTS_ERRORS) { + INTENTS_ERRORS["USER_CANCELLED"] = "User Closed Intents Resolver UI without choosing a handler"; + INTENTS_ERRORS["CALLER_NOT_DEFINED"] = "Caller Id is not defined"; + INTENTS_ERRORS["TIMEOUT_HIT"] = "Timeout hit"; + INTENTS_ERRORS["INTENT_NOT_FOUND"] = "Cannot find Intent"; + INTENTS_ERRORS["HANDLER_NOT_FOUND"] = "Cannot find Intent Handler"; + INTENTS_ERRORS["TARGET_INSTANCE_UNAVAILABLE"] = "Cannot start Target Instance"; + INTENTS_ERRORS["INTENT_DELIVERY_FAILED"] = "Target Instance did not add a listener"; + INTENTS_ERRORS["RESOLVER_UNAVAILABLE"] = "Intents Resolver UI unavailable"; + INTENTS_ERRORS["RESOLVER_TIMEOUT"] = "User did not choose a handler"; + INTENTS_ERRORS["INVALID_RESOLVER_RESPONSE"] = "Intents Resolver UI returned invalid response"; + INTENTS_ERRORS["INTENT_HANDLER_REJECTION"] = "Intent Handler function processing the raised intent threw an error or rejected the promise it returned"; +})(INTENTS_ERRORS || (INTENTS_ERRORS = {})); + let IoC$1 = class IoC { constructor() { this._decoders = decoders$1; + this._errors = { + intents: INTENTS_ERRORS + }; } get fdc3() { if (!this._fdc3) { @@ -1992,20 +2008,24 @@ let IoC$1 = class IoC { get decoders() { return this._decoders; } + get errors() { + return this._errors; + } }; const ioc = new IoC$1(); ioc.fdc3; const decoders = ioc.decoders; +ioc.errors; const nonEmptyStringDecoder = string$1().where((s) => s.length > 0, "Expected a non-empty string"); const nonNegativeNumberDecoder = number$1().where((num) => num >= 0, "Expected a non-negative number"); const optionalNonEmptyStringDecoder = optional$1(nonEmptyStringDecoder); -const libDomainDecoder = oneOf$1(constant$1("system"), constant$1("windows"), constant$1("appManager"), constant$1("layouts"), constant$1("intents"), constant$1("notifications"), constant$1("channels"), constant$1("extension"), constant$1("themes")); +const libDomainDecoder = oneOf$1(constant$1("system"), constant$1("windows"), constant$1("appManager"), constant$1("layouts"), constant$1("intents"), constant$1("notifications"), constant$1("channels"), constant$1("extension"), constant$1("themes"), constant$1("prefs")); const windowOperationTypesDecoder = oneOf$1(constant$1("openWindow"), constant$1("windowHello"), constant$1("windowAdded"), constant$1("windowRemoved"), constant$1("getBounds"), constant$1("getFrameBounds"), constant$1("getUrl"), constant$1("moveResize"), constant$1("focus"), constant$1("close"), constant$1("getTitle"), constant$1("setTitle"), constant$1("focusChange"), constant$1("getChannel")); const appManagerOperationTypesDecoder = oneOf$1(constant$1("appHello"), constant$1("appDirectoryStateChange"), constant$1("instanceStarted"), constant$1("instanceStopped"), constant$1("applicationStart"), constant$1("instanceStop"), constant$1("clear")); const layoutsOperationTypesDecoder = oneOf$1(constant$1("layoutAdded"), constant$1("layoutChanged"), constant$1("layoutRemoved"), constant$1("get"), constant$1("getAll"), constant$1("export"), constant$1("import"), constant$1("remove"), constant$1("clientSaveRequest"), constant$1("getGlobalPermissionState"), constant$1("checkGlobalActivated"), constant$1("requestGlobalPermission"), constant$1("getDefaultGlobal"), constant$1("setDefaultGlobal"), constant$1("clearDefaultGlobal")); -const notificationsOperationTypesDecoder = oneOf$1(constant$1("raiseNotification"), constant$1("requestPermission"), constant$1("notificationShow"), constant$1("notificationClick"), constant$1("getPermission"), constant$1("list"), constant$1("notificationRaised"), constant$1("notificationClosed"), constant$1("click"), constant$1("clear"), constant$1("clearAll")); +const notificationsOperationTypesDecoder = oneOf$1(constant$1("raiseNotification"), constant$1("requestPermission"), constant$1("notificationShow"), constant$1("notificationClick"), constant$1("getPermission"), constant$1("list"), constant$1("notificationRaised"), constant$1("notificationClosed"), constant$1("click"), constant$1("clear"), constant$1("clearAll"), constant$1("configure"), constant$1("getConfiguration"), constant$1("configurationChanged"), constant$1("setState"), constant$1("clearOld"), constant$1("activeCountChange"), constant$1("stateChange")); const systemOperationTypesDecoder = oneOf$1(constant$1("getEnvironment"), constant$1("getBase"), constant$1("platformShutdown")); const windowRelativeDirectionDecoder = oneOf$1(constant$1("top"), constant$1("left"), constant$1("right"), constant$1("bottom")); const windowBoundsDecoder = object$1({ @@ -2406,10 +2426,11 @@ const intentResultDecoder = object$1({ const handlersFilterDecoder = object$1({ title: optional$1(nonEmptyStringDecoder), openResolver: optional$1(boolean$1()), - timeout: optional$1(number$1()), + timeout: optional$1(nonNegativeNumberDecoder), intent: optional$1(nonEmptyStringDecoder), contextTypes: optional$1(array$1(nonEmptyStringDecoder)), resultType: optional$1(nonEmptyStringDecoder), + applicationNames: optional$1(array$1(nonEmptyStringDecoder)) }); const filterHandlersResultDecoder = object$1({ handlers: array$1(intentHandlerDecoder) @@ -2427,6 +2448,17 @@ const AddIntentListenerRequestDecoder = object$1({ resultType: optional$1(string$1()) }); const AddIntentListenerDecoder = oneOf$1(nonEmptyStringDecoder, AddIntentListenerRequestDecoder); +const intentInfoDecoder = object$1({ + intent: nonEmptyStringDecoder, + contextTypes: optional$1(array$1(nonEmptyStringDecoder)), + description: optional$1(nonEmptyStringDecoder), + displayName: optional$1(nonEmptyStringDecoder), + icon: optional$1(nonEmptyStringDecoder), + resultType: optional$1(nonEmptyStringDecoder) +}); +const getIntentsResultDecoder = object$1({ + intents: array$1(intentInfoDecoder) +}); const channelNameDecoder = (channelNames) => { return nonEmptyStringDecoder.where(s => channelNames.includes(s), "Expected a valid channel name"); }; @@ -2441,6 +2473,10 @@ const glue42NotificationActionDecoder = object$1({ icon: optional$1(string$1()), interop: optional$1(interopActionSettingsDecoder) }); +const notificationStateDecoder = oneOf$1(constant$1("Active"), constant$1("Acknowledged"), constant$1("Seen"), constant$1("Closed"), constant$1("Stale"), constant$1("Snoozed"), constant$1("Processing")); +const activeNotificationsCountChangeDecoder = object$1({ + count: number$1() +}); const notificationDefinitionDecoder = object$1({ badge: optional$1(string$1()), body: optional$1(string$1()), @@ -2476,7 +2512,12 @@ const glue42NotificationOptionsDecoder = object$1({ vibrate: optional$1(array$1(number$1())), severity: optional$1(oneOf$1(constant$1("Low"), constant$1("None"), constant$1("Medium"), constant$1("High"), constant$1("Critical"))), showToast: optional$1(boolean$1()), - showInPanel: optional$1(boolean$1()) + showInPanel: optional$1(boolean$1()), + state: optional$1(notificationStateDecoder) +}); +const notificationSetStateRequestDecoder = object$1({ + id: nonEmptyStringDecoder, + state: notificationStateDecoder }); const channelContextDecoder = object$1({ name: nonEmptyStringDecoder, @@ -2503,6 +2544,28 @@ const notificationEventPayloadDecoder = object$1({ action: optional$1(string$1()), id: optional$1(nonEmptyStringDecoder) }); +const notificationFilterDecoder = object$1({ + allowed: optional$1(array$1(nonEmptyStringDecoder)), + blocked: optional$1(array$1(nonEmptyStringDecoder)) +}); +const notificationsConfigurationDecoder = object$1({ + enable: optional$1(boolean$1()), + enableToasts: optional$1(boolean$1()), + sourceFilter: optional$1(notificationFilterDecoder), +}); +const notificationsConfigurationProtocolDecoder = object$1({ + configuration: notificationsConfigurationDecoder +}); +const strictNotificationsConfigurationProtocolDecoder = object$1({ + configuration: object$1({ + enable: boolean$1(), + enableToasts: boolean$1(), + sourceFilter: object$1({ + allowed: array$1(nonEmptyStringDecoder), + blocked: array$1(nonEmptyStringDecoder) + }) + }) +}); const platformSaveRequestConfigDecoder = object$1({ layoutType: oneOf$1(constant$1("Global"), constant$1("Workspace")), layoutName: nonEmptyStringDecoder, @@ -2563,7 +2626,8 @@ const notificationsDataDecoder = object$1({ vibrate: optional$1(array$1(number$1())), severity: optional$1(oneOf$1(constant$1("Low"), constant$1("None"), constant$1("Medium"), constant$1("High"), constant$1("Critical"))), showToast: optional$1(boolean$1()), - showInPanel: optional$1(boolean$1()) + showInPanel: optional$1(boolean$1()), + state: optional$1(notificationStateDecoder) }); const simpleNotificationDataDecoder = object$1({ notification: notificationsDataDecoder @@ -2618,8 +2682,32 @@ const joinChannelDataDecoder = object$1({ const windowChannelResultDecoder = object$1({ channel: optional$1(nonEmptyStringDecoder), }); +const prefsOperationTypesDecoder = oneOf$1(constant$1("clear"), constant$1("clearAll"), constant$1("get"), constant$1("getAll"), constant$1("set"), constant$1("update"), constant$1("prefsChanged"), constant$1("prefsHello")); +const appPreferencesDecoder = object$1({ + app: nonEmptyStringDecoder, + data: object$1(), + lastUpdate: optional$1(nonEmptyStringDecoder), +}); +const basePrefsConfigDecoder = object$1({ + app: nonEmptyStringDecoder, +}); +const getPrefsResultDecoder = object$1({ + prefs: appPreferencesDecoder, +}); +const getAllPrefsResultDecoder = object$1({ + all: array$1(appPreferencesDecoder), +}); +const changePrefsDataDecoder = object$1({ + app: nonEmptyStringDecoder, + data: object$1(), +}); +const prefsHelloSuccessDecoder = object$1({ + platform: object$1({ + app: nonEmptyStringDecoder, + }), +}); -const operations$8 = { +const operations$9 = { openWindow: { name: "openWindow", dataDecoder: openWindowConfigDecoder, resultDecoder: coreWindowDataDecoder }, windowHello: { name: "windowHello", dataDecoder: windowHelloDecoder, resultDecoder: helloSuccessDecoder }, windowAdded: { name: "windowAdded", dataDecoder: coreWindowDataDecoder }, @@ -2808,7 +2896,7 @@ class WebWindowModel { } getURL() { return __awaiter$1(this, void 0, void 0, function* () { - const result = yield this._bridge.send("windows", operations$8.getUrl, { windowId: this.id }); + const result = yield this._bridge.send("windows", operations$9.getUrl, { windowId: this.id }); return result.url; }); } @@ -2822,7 +2910,7 @@ class WebWindowModel { return __awaiter$1(this, void 0, void 0, function* () { const targetBounds = boundsDecoder.runWithException(dimension); const commandArgs = Object.assign({}, targetBounds, { windowId: this.id, relative: false }); - yield this._bridge.send("windows", operations$8.moveResize, commandArgs); + yield this._bridge.send("windows", operations$9.moveResize, commandArgs); return this.me; }); } @@ -2838,7 +2926,7 @@ class WebWindowModel { nonNegativeNumberDecoder.runWithException(height); } const commandArgs = Object.assign({}, { width, height }, { windowId: this.id, relative: true }); - yield this._bridge.send("windows", operations$8.moveResize, commandArgs); + yield this._bridge.send("windows", operations$9.moveResize, commandArgs); return this.me; }); } @@ -2854,7 +2942,7 @@ class WebWindowModel { number$1().runWithException(left); } const commandArgs = Object.assign({}, { top, left }, { windowId: this.id, relative: true }); - yield this._bridge.send("windows", operations$8.moveResize, commandArgs); + yield this._bridge.send("windows", operations$9.moveResize, commandArgs); return this.me; }); } @@ -2864,33 +2952,33 @@ class WebWindowModel { window.open(undefined, this.id); } else { - yield this._bridge.send("windows", operations$8.focus, { windowId: this.id }); + yield this._bridge.send("windows", operations$9.focus, { windowId: this.id }); } return this.me; }); } close() { return __awaiter$1(this, void 0, void 0, function* () { - yield this._bridge.send("windows", operations$8.close, { windowId: this.id }); + yield this._bridge.send("windows", operations$9.close, { windowId: this.id }); return this.me; }); } getTitle() { return __awaiter$1(this, void 0, void 0, function* () { - const result = yield this._bridge.send("windows", operations$8.getTitle, { windowId: this.id }); + const result = yield this._bridge.send("windows", operations$9.getTitle, { windowId: this.id }); return result.title; }); } setTitle(title) { return __awaiter$1(this, void 0, void 0, function* () { const ttl = nonEmptyStringDecoder.runWithException(title); - yield this._bridge.send("windows", operations$8.setTitle, { windowId: this.id, title: ttl }); + yield this._bridge.send("windows", operations$9.setTitle, { windowId: this.id, title: ttl }); return this.me; }); } getBounds() { return __awaiter$1(this, void 0, void 0, function* () { - const result = yield this._bridge.send("windows", operations$8.getBounds, { windowId: this.id }); + const result = yield this._bridge.send("windows", operations$9.getBounds, { windowId: this.id }); return result.bounds; }); } @@ -2925,7 +3013,7 @@ class WebWindowModel { } getChannel() { return __awaiter$1(this, void 0, void 0, function* () { - const result = yield this._bridge.send("windows", operations$8.getChannel, { windowId: this.id }, undefined, { includeOperationCheck: true }); + const result = yield this._bridge.send("windows", operations$9.getChannel, { windowId: this.id }, undefined, { includeOperationCheck: true }); return result.channel; }); } @@ -3023,7 +3111,7 @@ class WindowsController { return __awaiter$1(this, void 0, void 0, function* () { yield this.platformRegistration; const operationName = windowOperationTypesDecoder.runWithException(args.operation); - const operation = operations$8[operationName]; + const operation = operations$9[operationName]; if (!operation.execute) { return; } @@ -3039,7 +3127,7 @@ class WindowsController { nonEmptyStringDecoder.runWithException(name); nonEmptyStringDecoder.runWithException(url); const settings = windowOpenSettingsDecoder.runWithException(options); - const windowSuccess = yield this.bridge.send("windows", operations$8.openWindow, { name, url, options: settings }); + const windowSuccess = yield this.bridge.send("windows", operations$9.openWindow, { name, url, options: settings }); return this.waitForWindowAdded(windowSuccess.windowId); }); } @@ -3064,16 +3152,16 @@ class WindowsController { }; } addWindowOperationExecutors() { - operations$8.focusChange.execute = this.handleFocusChangeEvent.bind(this); - operations$8.windowAdded.execute = this.handleWindowAdded.bind(this); - operations$8.windowRemoved.execute = this.handleWindowRemoved.bind(this); - operations$8.getBounds.execute = this.handleGetBounds.bind(this); - operations$8.getFrameBounds.execute = this.handleGetBounds.bind(this); - operations$8.getTitle.execute = this.handleGetTitle.bind(this); - operations$8.getUrl.execute = this.handleGetUrl.bind(this); - operations$8.moveResize.execute = this.handleMoveResize.bind(this); - operations$8.setTitle.execute = this.handleSetTitle.bind(this); - operations$8.getChannel.execute = this.handleGetChannel.bind(this); + operations$9.focusChange.execute = this.handleFocusChangeEvent.bind(this); + operations$9.windowAdded.execute = this.handleWindowAdded.bind(this); + operations$9.windowRemoved.execute = this.handleWindowRemoved.bind(this); + operations$9.getBounds.execute = this.handleGetBounds.bind(this); + operations$9.getFrameBounds.execute = this.handleGetBounds.bind(this); + operations$9.getTitle.execute = this.handleGetTitle.bind(this); + operations$9.getUrl.execute = this.handleGetUrl.bind(this); + operations$9.moveResize.execute = this.handleMoveResize.bind(this); + operations$9.setTitle.execute = this.handleSetTitle.bind(this); + operations$9.getChannel.execute = this.handleGetChannel.bind(this); } my() { return Object.assign({}, this.me); @@ -3104,7 +3192,7 @@ class WindowsController { } sayHello() { return __awaiter$1(this, void 0, void 0, function* () { - const helloSuccess = yield this.bridge.send("windows", operations$8.windowHello, { windowId: this.publicWindowId }); + const helloSuccess = yield this.bridge.send("windows", operations$9.windowHello, { windowId: this.publicWindowId }); return helloSuccess; }); } @@ -3270,7 +3358,7 @@ class WindowsController { if (this.me) { this.me.isFocused = hasFocus; } - yield this.bridge.send("windows", operations$8.focusChange, eventData); + yield this.bridge.send("windows", operations$9.focusChange, eventData); }); } defineEventListeners() { @@ -3470,7 +3558,7 @@ class GlueBridge { } } -const operations$7 = { +const operations$8 = { appHello: { name: "appHello", dataDecoder: windowHelloDecoder, resultDecoder: appHelloSuccessDecoder }, appDirectoryStateChange: { name: "appDirectoryStateChange", dataDecoder: appDirectoryStateChangeDecoder }, instanceStarted: { name: "instanceStarted", dataDecoder: instanceDataDecoder }, @@ -3518,7 +3606,7 @@ class AppManagerController { return __awaiter$1(this, void 0, void 0, function* () { yield this.platformRegistration; const operationName = appManagerOperationTypesDecoder.runWithException(args.operation); - const operation = operations$7[operationName]; + const operation = operations$8[operationName]; if (!operation.execute) { return; } @@ -3563,7 +3651,7 @@ class AppManagerController { layoutComponentId: options === null || options === void 0 ? void 0 : options.layoutComponentId, channelId: options === null || options === void 0 ? void 0 : options.channelId }; - const openResult = yield this.bridge.send("appManager", operations$7.applicationStart, startOptions); + const openResult = yield this.bridge.send("appManager", operations$8.applicationStart, startOptions); const app = this.applications.find((a) => a.name === openResult.applicationName); return this.ioc.buildInstance(openResult, app); }); @@ -3596,9 +3684,9 @@ class AppManagerController { return api; } addOperationsExecutors() { - operations$7.appDirectoryStateChange.execute = this.handleAppDirectoryStateChange.bind(this); - operations$7.instanceStarted.execute = this.handleInstanceStartedMessage.bind(this); - operations$7.instanceStopped.execute = this.handleInstanceStoppedMessage.bind(this); + operations$8.appDirectoryStateChange.execute = this.handleAppDirectoryStateChange.bind(this); + operations$8.instanceStarted.execute = this.handleInstanceStartedMessage.bind(this); + operations$8.instanceStopped.execute = this.handleInstanceStoppedMessage.bind(this); } handleAppDirectoryStateChange(data) { return __awaiter$1(this, void 0, void 0, function* () { @@ -3715,7 +3803,7 @@ class AppManagerController { return soFar; }, { valid: [], invalid: [] }); const responseTimeout = this.baseApplicationsTimeoutMS + this.appImportTimeoutMS * parseResult.valid.length; - yield this.bridge.send("appManager", operations$7.import, { definitions: parseResult.valid, mode }, { methodResponseTimeoutMs: responseTimeout }); + yield this.bridge.send("appManager", operations$8.import, { definitions: parseResult.valid, mode }, { methodResponseTimeoutMs: responseTimeout }); return { imported: parseResult.valid.map((valid) => valid.name), errors: parseResult.invalid @@ -3725,17 +3813,17 @@ class AppManagerController { remove(name) { return __awaiter$1(this, void 0, void 0, function* () { nonEmptyStringDecoder.runWithException(name); - yield this.bridge.send("appManager", operations$7.remove, { name }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); + yield this.bridge.send("appManager", operations$8.remove, { name }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); }); } clear() { return __awaiter$1(this, void 0, void 0, function* () { - yield this.bridge.send("appManager", operations$7.clear, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); + yield this.bridge.send("appManager", operations$8.clear, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); }); } export() { return __awaiter$1(this, void 0, void 0, function* () { - const response = yield this.bridge.send("appManager", operations$7.export, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); + const response = yield this.bridge.send("appManager", operations$8.export, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); return response.definitions; }); } @@ -3754,7 +3842,7 @@ class AppManagerController { } registerWithPlatform() { return __awaiter$1(this, void 0, void 0, function* () { - const result = yield this.bridge.send("appManager", operations$7.appHello, { windowId: this.publicWindowId }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); + const result = yield this.bridge.send("appManager", operations$8.appHello, { windowId: this.publicWindowId }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS }); this.logger.trace("the platform responded to the hello message with a full list of apps"); this.applications = yield Promise.all(result.apps.map((app) => this.ioc.buildApplication(app, app.instances))); this.instances = this.applications.reduce((instancesSoFar, app) => { @@ -3807,7 +3895,7 @@ class InstanceModel { } stop() { return __awaiter$1(this, void 0, void 0, function* () { - yield this.bridge.send("appManager", operations$7.instanceStop, { id: this.data.id }); + yield this.bridge.send("appManager", operations$8.instanceStop, { id: this.data.id }); }); } } @@ -3863,7 +3951,7 @@ class ApplicationModel { } } -const operations$6 = { +const operations$7 = { layoutAdded: { name: "layoutAdded", dataDecoder: glueLayoutDecoder }, layoutChanged: { name: "layoutChanged", dataDecoder: glueLayoutDecoder }, layoutRemoved: { name: "layoutRemoved", dataDecoder: glueLayoutDecoder }, @@ -3906,7 +3994,7 @@ class LayoutsController { handleBridgeMessage(args) { return __awaiter$1(this, void 0, void 0, function* () { const operationName = layoutsOperationTypesDecoder.runWithException(args.operation); - const operation = operations$6[operationName]; + const operation = operations$7[operationName]; if (!operation.execute) { return; } @@ -3940,30 +4028,30 @@ class LayoutsController { return Object.freeze(api); } addOperationsExecutors() { - operations$6.layoutAdded.execute = this.handleOnAdded.bind(this); - operations$6.layoutChanged.execute = this.handleOnChanged.bind(this); - operations$6.layoutRemoved.execute = this.handleOnRemoved.bind(this); - operations$6.clientSaveRequest.execute = this.handleSaveRequest.bind(this); + operations$7.layoutAdded.execute = this.handleOnAdded.bind(this); + operations$7.layoutChanged.execute = this.handleOnChanged.bind(this); + operations$7.layoutRemoved.execute = this.handleOnRemoved.bind(this); + operations$7.clientSaveRequest.execute = this.handleSaveRequest.bind(this); } get(name, type) { return __awaiter$1(this, void 0, void 0, function* () { nonEmptyStringDecoder.runWithException(name); layoutTypeDecoder.runWithException(type); - const result = yield this.bridge.send("layouts", operations$6.get, { name, type }); + const result = yield this.bridge.send("layouts", operations$7.get, { name, type }); return result.layout; }); } getAll(type) { return __awaiter$1(this, void 0, void 0, function* () { layoutTypeDecoder.runWithException(type); - const result = yield this.bridge.send("layouts", operations$6.getAll, { type }); + const result = yield this.bridge.send("layouts", operations$7.getAll, { type }); return result.summaries; }); } export(type) { return __awaiter$1(this, void 0, void 0, function* () { layoutTypeDecoder.runWithException(type); - const result = yield this.bridge.send("layouts", operations$6.export, { type }); + const result = yield this.bridge.send("layouts", operations$7.export, { type }); return result.layouts; }); } @@ -3987,13 +4075,13 @@ class LayoutsController { return soFar; }, { valid: [] }); const layoutsToImport = layouts.filter((layout) => parseResult.valid.some((validLayout) => validLayout.name === layout.name)); - yield this.bridge.send("layouts", operations$6.import, { layouts: layoutsToImport, mode }); + yield this.bridge.send("layouts", operations$7.import, { layouts: layoutsToImport, mode }); }); } save(layout) { return __awaiter$1(this, void 0, void 0, function* () { newLayoutOptionsDecoder.runWithException(layout); - const saveResult = yield this.bridge.send("layouts", operations$6.save, { layout }); + const saveResult = yield this.bridge.send("layouts", operations$7.save, { layout }); return saveResult.layout; }); } @@ -4001,14 +4089,14 @@ class LayoutsController { return __awaiter$1(this, void 0, void 0, function* () { restoreOptionsDecoder.runWithException(options); const invocationTimeout = options.timeout ? options.timeout * 2 : this.defaultLayoutRestoreTimeoutMS; - yield this.bridge.send("layouts", operations$6.restore, { layout: options }, { methodResponseTimeoutMs: invocationTimeout }); + yield this.bridge.send("layouts", operations$7.restore, { layout: options }, { methodResponseTimeoutMs: invocationTimeout }); }); } remove(type, name) { return __awaiter$1(this, void 0, void 0, function* () { layoutTypeDecoder.runWithException(type); nonEmptyStringDecoder.runWithException(name); - yield this.bridge.send("layouts", operations$6.remove, { type, name }); + yield this.bridge.send("layouts", operations$7.remove, { type, name }); }); } handleSaveRequest(config) { @@ -4028,7 +4116,7 @@ class LayoutsController { } getGlobalPermissionState() { return __awaiter$1(this, void 0, void 0, function* () { - const requestResult = yield this.bridge.send("layouts", operations$6.getGlobalPermissionState, undefined); + const requestResult = yield this.bridge.send("layouts", operations$7.getGlobalPermissionState, undefined); return requestResult; }); } @@ -4047,43 +4135,43 @@ class LayoutsController { if (myWindow.name !== "Platform" && !amIWorkspaceFrame) { throw new Error("Cannot request permission for multi-window placement from any app other than the Platform."); } - const requestResult = yield this.bridge.send("layouts", operations$6.requestGlobalPermission, undefined, { methodResponseTimeoutMs: 180000 }); + const requestResult = yield this.bridge.send("layouts", operations$7.requestGlobalPermission, undefined, { methodResponseTimeoutMs: 180000 }); return { permissionGranted: requestResult.isAvailable }; }); } checkGlobalActivated() { return __awaiter$1(this, void 0, void 0, function* () { - const requestResult = yield this.bridge.send("layouts", operations$6.checkGlobalActivated, undefined); + const requestResult = yield this.bridge.send("layouts", operations$7.checkGlobalActivated, undefined); return { activated: requestResult.isAvailable }; }); } getDefaultGlobal() { return __awaiter$1(this, void 0, void 0, function* () { - const requestResult = yield this.bridge.send("layouts", operations$6.getDefaultGlobal, undefined, undefined, { includeOperationCheck: true }); + const requestResult = yield this.bridge.send("layouts", operations$7.getDefaultGlobal, undefined, undefined, { includeOperationCheck: true }); return requestResult.layout; }); } setDefaultGlobal(name) { return __awaiter$1(this, void 0, void 0, function* () { nonEmptyStringDecoder.runWithException(name); - yield this.bridge.send("layouts", operations$6.setDefaultGlobal, { name }, undefined, { includeOperationCheck: true }); + yield this.bridge.send("layouts", operations$7.setDefaultGlobal, { name }, undefined, { includeOperationCheck: true }); }); } clearDefaultGlobal() { return __awaiter$1(this, void 0, void 0, function* () { - yield this.bridge.send("layouts", operations$6.clearDefaultGlobal, undefined, undefined, { includeOperationCheck: true }); + yield this.bridge.send("layouts", operations$7.clearDefaultGlobal, undefined, undefined, { includeOperationCheck: true }); }); } onAdded(callback) { this.export("Global").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => { }); this.export("Workspace").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => { }); - return this.registry.add(operations$6.layoutAdded.name, callback); + return this.registry.add(operations$7.layoutAdded.name, callback); } onChanged(callback) { - return this.registry.add(operations$6.layoutChanged.name, callback); + return this.registry.add(operations$7.layoutChanged.name, callback); } onRemoved(callback) { - return this.registry.add(operations$6.layoutRemoved.name, callback); + return this.registry.add(operations$7.layoutRemoved.name, callback); } subscribeOnSaveRequested(callback) { if (typeof callback !== "function") { @@ -4099,22 +4187,22 @@ class LayoutsController { } handleOnAdded(layout) { return __awaiter$1(this, void 0, void 0, function* () { - this.registry.execute(operations$6.layoutAdded.name, layout); + this.registry.execute(operations$7.layoutAdded.name, layout); }); } handleOnChanged(layout) { return __awaiter$1(this, void 0, void 0, function* () { - this.registry.execute(operations$6.layoutChanged.name, layout); + this.registry.execute(operations$7.layoutChanged.name, layout); }); } handleOnRemoved(layout) { return __awaiter$1(this, void 0, void 0, function* () { - this.registry.execute(operations$6.layoutRemoved.name, layout); + this.registry.execute(operations$7.layoutRemoved.name, layout); }); } } -const operations$5 = { +const operations$6 = { raiseNotification: { name: "raiseNotification", dataDecoder: raiseNotificationDecoder, resultDecoder: raiseNotificationResultDecoder }, requestPermission: { name: "requestPermission", resultDecoder: permissionRequestResultDecoder }, notificationShow: { name: "notificationShow", dataDecoder: notificationEventPayloadDecoder }, @@ -4125,7 +4213,14 @@ const operations$5 = { notificationClosed: { name: "notificationClosed", dataDecoder: simpleNotificationSelectDecoder }, click: { name: "click" }, clear: { name: "clear" }, - clearAll: { name: "clearAll" } + clearAll: { name: "clearAll" }, + clearOld: { name: "clearOld" }, + configure: { name: "configure", dataDecoder: notificationsConfigurationProtocolDecoder }, + getConfiguration: { name: "getConfiguration", resultDecoder: strictNotificationsConfigurationProtocolDecoder }, + configurationChanged: { name: "configurationChanged", resultDecoder: strictNotificationsConfigurationProtocolDecoder }, + setState: { name: "setState", dataDecoder: notificationSetStateRequestDecoder }, + activeCountChange: { name: "activeCountChange", resultDecoder: activeNotificationsCountChangeDecoder }, + stateChange: { name: "stateChange", resultDecoder: notificationSetStateRequestDecoder } }; var shortidExports$1 = {}; @@ -4502,7 +4597,7 @@ class NotificationsController { handleBridgeMessage(args) { return __awaiter$1(this, void 0, void 0, function* () { const operationName = notificationsOperationTypesDecoder.runWithException(args.operation); - const operation = operations$5[operationName]; + const operation = operations$6[operationName]; if (!operation.execute) { return; } @@ -4523,19 +4618,28 @@ class NotificationsController { onClosed: this.onClosed.bind(this), click: this.click.bind(this), clear: this.clear.bind(this), - clearAll: this.clearAll.bind(this) + clearAll: this.clearAll.bind(this), + clearOld: this.clearOld.bind(this), + configure: this.configure.bind(this), + getConfiguration: this.getConfiguration.bind(this), + getFilter: this.getFilter.bind(this), + setFilter: this.setFilter.bind(this), + setState: this.setState.bind(this), + onConfigurationChanged: this.onConfigurationChanged.bind(this), + onActiveCountChanged: this.onActiveCountChanged.bind(this), + onStateChanged: this.onStateChanged.bind(this) }; return Object.freeze(api); } getPermission() { return __awaiter$1(this, void 0, void 0, function* () { - const queryResult = yield this.bridge.send("notifications", operations$5.getPermission, undefined); + const queryResult = yield this.bridge.send("notifications", operations$6.getPermission, undefined); return queryResult.permission; }); } requestPermission() { return __awaiter$1(this, void 0, void 0, function* () { - const permissionResult = yield this.bridge.send("notifications", operations$5.requestPermission, undefined); + const permissionResult = yield this.bridge.send("notifications", operations$6.requestPermission, undefined); return permissionResult.permissionGranted; }); } @@ -4549,7 +4653,7 @@ class NotificationsController { throw new Error("Cannot raise the notification, because the user has declined the permission request"); } const id = shortidExports$1.generate(); - const raiseResult = yield this.bridge.send("notifications", operations$5.raiseNotification, { settings, id }); + const raiseResult = yield this.bridge.send("notifications", operations$6.raiseNotification, { settings, id }); const notification = this.buildNotificationFunc(raiseResult.settings, id); this.notifications[id] = notification; return notification; @@ -4557,7 +4661,7 @@ class NotificationsController { } list() { return __awaiter$1(this, void 0, void 0, function* () { - const bridgeResponse = yield this.bridge.send("notifications", operations$5.list, undefined, undefined, { includeOperationCheck: true }); + const bridgeResponse = yield this.bridge.send("notifications", operations$6.list, undefined, undefined, { includeOperationCheck: true }); return bridgeResponse.notifications; }); } @@ -4579,25 +4683,98 @@ class NotificationsController { if (action) { nonEmptyStringDecoder.runWithException(action); } - yield this.bridge.send("notifications", operations$5.click, { id, action }, undefined, { includeOperationCheck: true }); + yield this.bridge.send("notifications", operations$6.click, { id, action }, undefined, { includeOperationCheck: true }); }); } clear(id) { return __awaiter$1(this, void 0, void 0, function* () { nonEmptyStringDecoder.runWithException(id); - yield this.bridge.send("notifications", operations$5.clear, { id }, undefined, { includeOperationCheck: true }); + yield this.bridge.send("notifications", operations$6.clear, { id }, undefined, { includeOperationCheck: true }); }); } clearAll() { return __awaiter$1(this, void 0, void 0, function* () { - yield this.bridge.send("notifications", operations$5.clearAll, undefined, undefined, { includeOperationCheck: true }); + yield this.bridge.send("notifications", operations$6.clearAll, undefined, undefined, { includeOperationCheck: true }); + }); + } + clearOld() { + return __awaiter$1(this, void 0, void 0, function* () { + yield this.bridge.send("notifications", operations$6.clearOld, undefined, undefined, { includeOperationCheck: true }); + }); + } + configure(config) { + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedConfig = notificationsConfigurationDecoder.runWithException(config); + yield this.bridge.send("notifications", operations$6.configure, { configuration: verifiedConfig }, undefined, { includeOperationCheck: true }); }); } + getConfiguration() { + return __awaiter$1(this, void 0, void 0, function* () { + const response = yield this.bridge.send("notifications", operations$6.getConfiguration, undefined, undefined, { includeOperationCheck: true }); + return response.configuration; + }); + } + getFilter() { + return __awaiter$1(this, void 0, void 0, function* () { + const response = yield this.bridge.send("notifications", operations$6.getConfiguration, undefined, undefined, { includeOperationCheck: true }); + return response.configuration.sourceFilter; + }); + } + setFilter(filter) { + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedFilter = notificationFilterDecoder.runWithException(filter); + yield this.bridge.send("notifications", operations$6.configure, { configuration: { sourceFilter: verifiedFilter } }, undefined, { includeOperationCheck: true }); + return verifiedFilter; + }); + } + setState(id, state) { + return __awaiter$1(this, void 0, void 0, function* () { + nonEmptyStringDecoder.runWithException(id); + notificationStateDecoder.runWithException(state); + yield this.bridge.send("notifications", operations$6.setState, { id, state }, undefined, { includeOperationCheck: true }); + }); + } + onConfigurationChanged(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to configuration changed, because the provided callback is not a function!"); + } + return this.registry.add("notifications-config-changed", callback); + } + onActiveCountChanged(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to onActiveCountChanged changed, because the provided callback is not a function!"); + } + return this.registry.add("notifications-active-count-changed", callback); + } + onStateChanged(callback) { + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to onStateChanged changed, because the provided callback is not a function!"); + } + return this.registry.add("notification-state-changed", callback); + } addOperationExecutors() { - operations$5.notificationShow.execute = this.handleNotificationShow.bind(this); - operations$5.notificationClick.execute = this.handleNotificationClick.bind(this); - operations$5.notificationRaised.execute = this.handleNotificationRaised.bind(this); - operations$5.notificationClosed.execute = this.handleNotificationClosed.bind(this); + operations$6.notificationShow.execute = this.handleNotificationShow.bind(this); + operations$6.notificationClick.execute = this.handleNotificationClick.bind(this); + operations$6.notificationRaised.execute = this.handleNotificationRaised.bind(this); + operations$6.notificationClosed.execute = this.handleNotificationClosed.bind(this); + operations$6.configurationChanged.execute = this.handleConfigurationChanged.bind(this); + operations$6.activeCountChange.execute = this.handleActiveCountChanged.bind(this); + operations$6.stateChange.execute = this.handleNotificationStateChanged.bind(this); + } + handleConfigurationChanged(data) { + return __awaiter$1(this, void 0, void 0, function* () { + this.registry.execute("notifications-config-changed", data.configuration); + }); + } + handleActiveCountChanged(data) { + return __awaiter$1(this, void 0, void 0, function* () { + this.registry.execute("notifications-active-count-changed", data); + }); + } + handleNotificationStateChanged(data) { + return __awaiter$1(this, void 0, void 0, function* () { + this.registry.execute("notification-state-changed", { id: data.id }, data.state); + }); } handleNotificationShow(data) { return __awaiter$1(this, void 0, void 0, function* () { @@ -4642,12 +4819,13 @@ class NotificationsController { } } -const operations$4 = { +const operations$5 = { getIntents: { name: "getIntents", resultDecoder: wrappedIntentsDecoder }, findIntent: { name: "findIntent", dataDecoder: wrappedIntentFilterDecoder, resultDecoder: wrappedIntentsDecoder }, raiseIntent: { name: "raiseIntent", dataDecoder: intentRequestDecoder, resultDecoder: intentResultDecoder }, raise: { name: "raise", dataDecoder: raiseIntentRequestDecoder, resultDecoder: intentResultDecoder }, - filterHandlers: { name: "filterHandlers", dataDecoder: filterHandlersWithResolverConfigDecoder, resultDecoder: filterHandlersResultDecoder } + filterHandlers: { name: "filterHandlers", dataDecoder: filterHandlersWithResolverConfigDecoder, resultDecoder: filterHandlersResultDecoder }, + getIntentsByHandler: { name: "getIntentsByHandler", dataDecoder: intentHandlerDecoder, resultDecoder: getIntentsResultDecoder } }; const GLUE42_FDC3_INTENTS_METHOD_PREFIX = "Tick42.FDC3.Intents."; @@ -4686,7 +4864,7 @@ class IntentsController { handleBridgeMessage(args) { return __awaiter$1(this, void 0, void 0, function* () { const operationName = intentsOperationTypesDecoder.runWithException(args.operation); - const operation = operations$4[operationName]; + const operation = operations$5[operationName]; if (!operation.execute) { return; } @@ -4704,7 +4882,8 @@ class IntentsController { addIntentListener: this.addIntentListener.bind(this), register: this.register.bind(this), find: this.find.bind(this), - filterHandlers: this.filterHandlers.bind(this) + filterHandlers: this.filterHandlers.bind(this), + getIntents: this.getIntentsByHandler.bind(this) }; return api; } @@ -4725,7 +4904,7 @@ class IntentsController { const methodResponseTimeoutMs = intentRequest.waitUserResponseIndefinitely ? MAX_SET_TIMEOUT_DELAY : (intentRequest.timeout || this.intentResolverResponseTimeout) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT; - const response = yield this.bridge.send("intents", operations$4.raise, requestWithResolverInfo, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }); + const response = yield this.bridge.send("intents", operations$5.raise, requestWithResolverInfo, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }); return response; }); } @@ -4765,7 +4944,7 @@ class IntentsController { all() { return __awaiter$1(this, void 0, void 0, function* () { yield Promise.all(this.unregisterIntentPromises); - const result = yield this.bridge.send("intents", operations$4.getIntents, undefined); + const result = yield this.bridge.send("intents", operations$5.getIntents, undefined); return result.intents; }); } @@ -4863,7 +5042,7 @@ class IntentsController { } } yield Promise.all(this.unregisterIntentPromises); - const result = yield this.bridge.send("intents", operations$4.findIntent, data); + const result = yield this.bridge.send("intents", operations$5.findIntent, data); return result.intents; }); } @@ -4904,20 +5083,29 @@ class IntentsController { } const methodResponseTimeoutMs = (handlerFilter.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT; const filterHandlersRequestWithResolverConfig = { filterHandlersRequest: handlerFilter, resolverConfig: this.getResolverConfigByRequest({ handlerFilter }) }; - const result = yield this.bridge.send("intents", operations$4.filterHandlers, filterHandlersRequestWithResolverConfig, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }, { includeOperationCheck: true }); - return result.handlers; + const result = yield this.bridge.send("intents", operations$5.filterHandlers, filterHandlersRequestWithResolverConfig, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }, { includeOperationCheck: true }); + return result; }); } checkIfAtLeastOneFilterIsPresent(filter) { - const errorMsg = "Provide at least one filter criteria of the following: 'contextTypes' | 'intent' | 'resultType'"; + const errorMsg = "Provide at least one filter criteria of the following: 'intent' | 'contextTypes' | 'resultType' | 'applicationNames'"; if (!Object.keys(filter).length) { throw new Error(errorMsg); } - const { intent, resultType, contextTypes } = filter; - if (!intent && !resultType && (!contextTypes || !contextTypes.length)) { + const { intent, resultType, contextTypes, applicationNames } = filter; + const existingValidContextTypes = contextTypes === null || contextTypes === void 0 ? void 0 : contextTypes.length; + const existingValidApplicationNames = applicationNames === null || applicationNames === void 0 ? void 0 : applicationNames.length; + if (!intent && !resultType && !existingValidContextTypes && !existingValidApplicationNames) { throw new Error(errorMsg); } } + getIntentsByHandler(handler) { + return __awaiter$1(this, void 0, void 0, function* () { + intentHandlerDecoder.runWithException(handler); + const result = yield this.bridge.send("intents", operations$5.getIntentsByHandler, handler, undefined, { includeOperationCheck: true }); + return result; + }); + } } const Glue42CoreMessageTypes = { @@ -4934,7 +5122,7 @@ const Glue42CoreMessageTypes = { const webPlatformTransportName = "web-platform"; const latestFDC3Type = "latest_fdc3_type"; -const operations$3 = { +const operations$4 = { addChannel: { name: "addChannel", dataDecoder: channelContextDecoder }, getMyChannel: { name: "getMyChannel", resultDecoder: getMyChanelResultDecoder }, getWindowIdsOnChannel: { name: "getWindowIdsOnChannel", dataDecoder: getWindowIdsOnChannelDataDecoder, resultDecoder: getWindowIdsOnChannelResultDecoder }, @@ -4971,8 +5159,8 @@ class ChannelsController { this.registry.clear(); } addOperationsExecutors() { - operations$3.getMyChannel.execute = this.handleGetMyChannel.bind(this); - operations$3.joinChannel.execute = this.handleJoinChannel.bind(this); + operations$4.getMyChannel.execute = this.handleGetMyChannel.bind(this); + operations$4.joinChannel.execute = this.handleJoinChannel.bind(this); } start(coreGlue, ioc) { return __awaiter$1(this, void 0, void 0, function* () { @@ -4991,7 +5179,7 @@ class ChannelsController { handleBridgeMessage(args) { return __awaiter$1(this, void 0, void 0, function* () { const operationName = channelsOperationTypesDecoder.runWithException(args.operation); - const operation = operations$3[operationName]; + const operation = operations$4[operationName]; if (!operation.execute) { return; } @@ -5027,7 +5215,7 @@ class ChannelsController { yield this.switchToChannel(name); } else { - yield this.bridge.send("channels", operations$3.joinChannel, { channel: name, windowId }, undefined, { includeOperationCheck: true }); + yield this.bridge.send("channels", operations$4.joinChannel, { channel: name, windowId }, undefined, { includeOperationCheck: true }); } }); } @@ -5198,7 +5386,7 @@ class ChannelsController { if (channelWithSuchNameExists) { throw new Error("There's an already existing channel with such name"); } - yield this.bridge.send("channels", operations$3.addChannel, channelContext); + yield this.bridge.send("channels", operations$4.addChannel, channelContext); return channelContext; }); } @@ -5214,7 +5402,7 @@ class ChannelsController { return __awaiter$1(this, void 0, void 0, function* () { const channelNames = this.getAllChannelNames(); channelNameDecoder(channelNames).runWithException(channel); - const { windowIds } = yield this.bridge.send("channels", operations$3.getWindowIdsOnChannel, { channel }, undefined, { includeOperationCheck: true }); + const { windowIds } = yield this.bridge.send("channels", operations$4.getWindowIdsOnChannel, { channel }, undefined, { includeOperationCheck: true }); const result = windowIds.reduce((windows, windowId) => { const window = this.windowsController.findById(windowId); return window ? [...windows, window] : windows; @@ -5227,7 +5415,7 @@ class ChannelsController { const operationData = filter !== undefined ? { filter: windowWithChannelFilterDecoder.runWithException(filter) } : {}; - const { windowIdsWithChannels } = yield this.bridge.send("channels", operations$3.getWindowIdsWithChannels, operationData, undefined, { includeOperationCheck: true }); + const { windowIdsWithChannels } = yield this.bridge.send("channels", operations$4.getWindowIdsWithChannels, operationData, undefined, { includeOperationCheck: true }); const result = windowIdsWithChannels.reduce((windowsWithChannels, { application, channel, windowId }) => { const window = this.windowsController.findById(windowId); return window ? [...windowsWithChannels, { application, channel, window }] : windowsWithChannels; @@ -5237,7 +5425,7 @@ class ChannelsController { } } -const operations$2 = { +const operations$3 = { getEnvironment: { name: "getEnvironment", resultDecoder: anyDecoder }, getBase: { name: "getBase", resultDecoder: anyDecoder }, platformShutdown: { name: "platformShutdown" } @@ -5255,7 +5443,7 @@ class SystemController { handleBridgeMessage(args) { return __awaiter$1(this, void 0, void 0, function* () { const operationName = systemOperationTypesDecoder.runWithException(args.operation); - const operation = operations$2[operationName]; + const operation = operations$3[operationName]; if (!operation.execute) { return; } @@ -5276,8 +5464,8 @@ class SystemController { } setEnvironment() { return __awaiter$1(this, void 0, void 0, function* () { - const environment = yield this.bridge.send("system", operations$2.getEnvironment, undefined); - const base = yield this.bridge.send("system", operations$2.getBase, undefined); + const environment = yield this.bridge.send("system", operations$3.getEnvironment, undefined); + const base = yield this.bridge.send("system", operations$3.getBase, undefined); const globalNamespace = window.glue42core || window.iobrowser; const globalNamespaceName = window.glue42core ? "glue42core" : "iobrowser"; const globalObj = Object.assign({}, globalNamespace, base, { environment }); @@ -5285,7 +5473,7 @@ class SystemController { }); } addOperationsExecutors() { - operations$2.platformShutdown.execute = this.processPlatformShutdown.bind(this); + operations$3.platformShutdown.execute = this.processPlatformShutdown.bind(this); } } @@ -5314,6 +5502,7 @@ class Notification { this.severity = config.severity; this.showToast = config.showToast; this.showInPanel = config.showInPanel; + this.state = config.state; } } @@ -5324,7 +5513,7 @@ const extensionConfigDecoder = object$1({ }) }); -const operations$1 = { +const operations$2 = { clientHello: { name: "clientHello", resultDecoder: extensionConfigDecoder } }; @@ -5382,7 +5571,7 @@ class ExtController { registerWithPlatform() { return __awaiter$1(this, void 0, void 0, function* () { this.logger.trace("registering with the platform"); - this.config = yield this.bridge.send("extension", operations$1.clientHello, { windowId: this.windowId }); + this.config = yield this.bridge.send("extension", operations$2.clientHello, { windowId: this.windowId }); this.logger.trace("the platform responded to the hello message with a valid extension config"); }); } @@ -5728,7 +5917,7 @@ class LegacyIntentsHelper { }); } invokeRaiseIntent(requestObj) { - return this.bridge.send("intents", operations$4.raiseIntent, requestObj); + return this.bridge.send("intents", operations$5.raiseIntent, requestObj); } registerResponseMethod() { return __awaiter$1(this, void 0, void 0, function* () { @@ -5888,7 +6077,7 @@ class LegacyIntentsHelper { } } -const operations = { +const operations$1 = { getCurrent: { name: "getCurrent", resultDecoder: simpleThemeResponseDecoder }, list: { name: "list", resultDecoder: allThemesResponseDecoder }, select: { name: "select", dataDecoder: selectThemeConfigDecoder } @@ -5931,20 +6120,20 @@ class ThemesController { } getCurrent() { return __awaiter$1(this, void 0, void 0, function* () { - const bridgeResponse = yield this.bridge.send("themes", operations.getCurrent, undefined, undefined, { includeOperationCheck: true }); + const bridgeResponse = yield this.bridge.send("themes", operations$1.getCurrent, undefined, undefined, { includeOperationCheck: true }); return bridgeResponse.theme; }); } list() { return __awaiter$1(this, void 0, void 0, function* () { - const bridgeResponse = yield this.bridge.send("themes", operations.list, undefined, undefined, { includeOperationCheck: true }); + const bridgeResponse = yield this.bridge.send("themes", operations$1.list, undefined, undefined, { includeOperationCheck: true }); return bridgeResponse.themes; }); } select(name) { return __awaiter$1(this, void 0, void 0, function* () { nonEmptyStringDecoder.runWithException(name); - yield this.bridge.send("themes", operations.select, { name }, undefined, { includeOperationCheck: true }); + yield this.bridge.send("themes", operations$1.select, { name }, undefined, { includeOperationCheck: true }); }); } onChanged(callback) { @@ -6026,6 +6215,175 @@ class SessionStorageController { } } +const operations = { + clear: { name: "clear", dataDecoder: basePrefsConfigDecoder }, + clearAll: { name: "clearAll" }, + get: { name: "get", dataDecoder: basePrefsConfigDecoder, resultDecoder: getPrefsResultDecoder }, + getAll: { name: "getAll", resultDecoder: getAllPrefsResultDecoder }, + set: { name: "set", dataDecoder: changePrefsDataDecoder }, + update: { name: "update", dataDecoder: changePrefsDataDecoder }, + prefsChanged: { name: "prefsChanged", dataDecoder: getPrefsResultDecoder }, + prefsHello: { name: "prefsHello", resultDecoder: prefsHelloSuccessDecoder }, +}; + +class PrefsController { + constructor() { + this.registry = lib$3(); + } + handlePlatformShutdown() { + this.registry.clear(); + } + start(coreGlue, ioc) { + return __awaiter$1(this, void 0, void 0, function* () { + this.logger = coreGlue.logger.subLogger("prefs.controller.web"); + this.logger.trace("starting the web prefs controller"); + this.addOperationsExecutors(); + this.bridge = ioc.bridge; + this.config = ioc.config; + this.appManagerController = ioc.appManagerController; + try { + const prefsHelloSuccess = yield this.bridge.send("prefs", operations.prefsHello, undefined, undefined, { includeOperationCheck: true }); + this.platformAppName = prefsHelloSuccess.platform.app; + } + catch (error) { + this.logger.warn("The platform of this client is outdated and does not support Prefs API."); + return; + } + this.logger.trace("no need for platform registration, attaching the prefs property to glue and returning"); + const api = this.toApi(); + coreGlue.prefs = api; + }); + } + handleBridgeMessage(args) { + return __awaiter$1(this, void 0, void 0, function* () { + const operationName = prefsOperationTypesDecoder.runWithException(args.operation); + const operation = operations[operationName]; + if (!operation.execute) { + return; + } + let operationData = args.data; + if (operation.dataDecoder) { + operationData = operation.dataDecoder.runWithException(args.data); + } + return yield operation.execute(operationData); + }); + } + addOperationsExecutors() { + operations.prefsChanged.execute = this.handleOnChanged.bind(this); + } + toApi() { + const api = { + clear: this.clear.bind(this), + clearAll: this.clearAll.bind(this), + clearFor: this.clearFor.bind(this), + get: this.get.bind(this), + getAll: this.getAll.bind(this), + set: this.set.bind(this), + setFor: this.setFor.bind(this), + subscribe: this.subscribe.bind(this), + subscribeFor: this.subscribeFor.bind(this), + update: this.update.bind(this), + updateFor: this.updateFor.bind(this), + }; + return api; + } + clear() { + return __awaiter$1(this, void 0, void 0, function* () { + const app = this.getMyAppName(); + yield this.clearFor(app); + }); + } + clearAll() { + return __awaiter$1(this, void 0, void 0, function* () { + yield this.bridge.send("prefs", operations.clearAll, undefined, undefined, { includeOperationCheck: true }); + }); + } + clearFor(app) { + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedApp = nonEmptyStringDecoder.runWithException(app); + yield this.bridge.send("prefs", operations.clear, { app: verifiedApp }, undefined, { includeOperationCheck: true }); + }); + } + get(app) { + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedApp = app === undefined || app === null ? this.getMyAppName() : nonEmptyStringDecoder.runWithException(app); + const { prefs } = yield this.bridge.send("prefs", operations.get, { app: verifiedApp }, undefined, { includeOperationCheck: true }); + return prefs; + }); + } + getAll() { + return __awaiter$1(this, void 0, void 0, function* () { + const result = yield this.bridge.send("prefs", operations.getAll, undefined, undefined, { includeOperationCheck: true }); + return result; + }); + } + set(data, options) { + var _a; + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedOptions = optional$1(basePrefsConfigDecoder).runWithException(options); + const app = (_a = verifiedOptions === null || verifiedOptions === void 0 ? void 0 : verifiedOptions.app) !== null && _a !== void 0 ? _a : this.getMyAppName(); + yield this.setFor(app, data); + }); + } + setFor(app, data) { + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedApp = nonEmptyStringDecoder.runWithException(app); + const verifiedData = object$1().runWithException(data); + yield this.bridge.send("prefs", operations.set, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true }); + }); + } + subscribe(callback) { + const app = this.getMyAppName(); + return this.subscribeFor(app, callback); + } + subscribeFor(app, callback) { + const verifiedApp = nonEmptyStringDecoder.runWithException(app); + const applications = this.appManagerController.getApplications(); + const isValidApp = verifiedApp === this.platformAppName || applications.some((application) => application.name === verifiedApp); + if (!isValidApp) { + throw new Error(`The provided app name "${app}" is not valid.`); + } + if (typeof callback !== "function") { + throw new Error("Cannot subscribe to prefs, because the provided callback is not a function!"); + } + const subscriptionKey = this.getSubscriptionKey(verifiedApp); + this.get(verifiedApp).then(callback); + return this.registry.add(subscriptionKey, callback); + } + update(data, options) { + var _a; + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedOptions = optional$1(basePrefsConfigDecoder).runWithException(options); + const app = (_a = verifiedOptions === null || verifiedOptions === void 0 ? void 0 : verifiedOptions.app) !== null && _a !== void 0 ? _a : this.getMyAppName(); + yield this.updateFor(app, data); + }); + } + updateFor(app, data) { + return __awaiter$1(this, void 0, void 0, function* () { + const verifiedApp = nonEmptyStringDecoder.runWithException(app); + const verifiedData = object$1().runWithException(data); + yield this.bridge.send("prefs", operations.update, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true }); + }); + } + getMyAppName() { + var _a; + const myAppName = this.config.isPlatformInternal ? this.platformAppName : (_a = this.appManagerController.me) === null || _a === void 0 ? void 0 : _a.application.name; + if (!myAppName) { + throw new Error("App Preferences operations can not be executed for windows that do not have app!"); + } + return myAppName; + } + getSubscriptionKey(app) { + return `prefs-changed-${app}`; + } + handleOnChanged({ prefs }) { + return __awaiter$1(this, void 0, void 0, function* () { + const subscriptionKey = this.getSubscriptionKey(prefs.app); + this.registry.execute(subscriptionKey, prefs); + }); + } +} + class IoC { constructor() { this.controllers = { @@ -6037,7 +6395,8 @@ class IoC { channels: this.channelsController, system: this.systemController, extension: this.extensionController, - themes: this.themesController + themes: this.themesController, + prefs: this.prefsController }; } get communicationId() { @@ -6100,6 +6459,12 @@ class IoC { } return this._channelsControllerInstance; } + get prefsController() { + if (!this._prefsControllerInstance) { + this._prefsControllerInstance = new PrefsController(); + } + return this._prefsControllerInstance; + } get extensionController() { if (!this._extensionController) { this._extensionController = new ExtController(); @@ -6165,7 +6530,7 @@ class IoC { } } -var version$2 = "3.1.2"; +var version$2 = "3.2.0"; const createFactoryFunction = (coreFactoryFunction) => { return (userConfig) => __awaiter$1(void 0, void 0, void 0, function* () { @@ -9818,7 +10183,7 @@ var ContextMessageReplaySpec = { } }; -var version = "6.1.0"; +var version = "6.2.0"; function prepareConfig (configuration, ext, glue42gd) { var _a, _b, _c, _d; @@ -12094,7 +12459,7 @@ var GW3Bridge = (function () { currentContext = _b.sent(); _b.label = 4; case 4: - calculatedDelta = this.protocolVersion === 2 ? + calculatedDelta = this.setPathSupported ? this.calculateContextDeltaV2(currentContext, delta) : this.calculateContextDeltaV1(currentContext, delta); if (!Object.keys(calculatedDelta.added).length diff --git a/browser-client-vanilla-js/public/libs/browser.es.js.map b/browser-client-vanilla-js/public/libs/browser.es.js.map index 7c87a85..6f75b2f 100644 --- a/browser-client-vanilla-js/public/libs/browser.es.js.map +++ b/browser-client-vanilla-js/public/libs/browser.es.js.map @@ -1 +1 @@ -{"version":3,"file":"browser.es.js","sources":["../src/config/index.ts","../src/config/checkSingleton.ts","../src/enterprise/index.ts","../node_modules/decoder-validate/dist/index.es5.js","../../utils/dist/utils.es.js","../src/shared/decoders.ts","../src/windows/protocol.ts","../node_modules/callback-registry/lib/index.js","../src/windows/webWindow.ts","../src/shared/systemOperations.ts","../src/shared/promise-plus.ts","../src/windows/controller.ts","../src/communication/constants.ts","../src/communication/bridge.ts","../src/appManager/protocol.ts","../src/appManager/controller.ts","../src/appManager/instance.ts","../src/appManager/application.ts","../src/layouts/protocol.ts","../src/layouts/controller.ts","../src/notifications/protocol.ts","../node_modules/shortid/lib/random/random-from-seed.js","../node_modules/shortid/lib/alphabet.js","../node_modules/shortid/lib/random/random-byte-browser.js","../node_modules/shortid/node_modules/nanoid/format.browser.js","../node_modules/shortid/lib/generate.js","../node_modules/shortid/lib/build.js","../node_modules/shortid/lib/is-valid.js","../node_modules/shortid/lib/index.js","../node_modules/shortid/index.js","../src/notifications/controller.ts","../src/intents/protocol.ts","../src/intents/constants.ts","../src/intents/controller.ts","../src/shared/constants.ts","../src/channels/protocol.ts","../src/channels/controller.ts","../src/system/protocol.ts","../src/system/controller.ts","../src/notifications/notification.ts","../src/extension/decoders.ts","../src/extension/protocol.ts","../src/extension/controller.ts","../src/shared/dispatcher.ts","../src/communication/preferred.ts","../src/intents/legacyHelper.ts","../src/themes/protocol.ts","../src/themes/controller.ts","../src/storage/session.ts","../src/shared/ioc.ts","../src/web.ts","../../core/dist/core.es.js","../src/index.ts"],"sourcesContent":["import { IOConnectBrowser } from \"../../browser\";\r\nimport { ParsedConfig } from \"../shared/types\";\r\n\r\nconst defaultConfig = {\r\n logger: \"info\",\r\n gateway: { webPlatform: {} },\r\n libraries: [],\r\n exposeAPI: true\r\n};\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nexport const parseConfig = (config?: IOConnectBrowser.Config): ParsedConfig => {\r\n const isPlatformInternal = !!(config as any)?.gateway?.webPlatform?.port;\r\n\r\n const combined: ParsedConfig = Object.assign({}, defaultConfig, config, { isPlatformInternal });\r\n\r\n if (combined.systemLogger) {\r\n combined.logger = combined.systemLogger.level ?? \"info\";\r\n }\r\n\r\n return combined;\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nexport const checkSingleton = (): void => {\r\n const ioConnectBrowserNamespace = (window as any).glue42core || (window as any).iobrowser;\r\n\r\n if (ioConnectBrowserNamespace && ioConnectBrowserNamespace.webStarted) {\r\n throw new Error(\"IoConnect Browser has already been started for this application.\");\r\n }\r\n\r\n if (!ioConnectBrowserNamespace) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (window as any).iobrowser = { webStarted: true };\r\n return;\r\n }\r\n\r\n ioConnectBrowserNamespace.webStarted = true;\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport { IOConnectDesktop } from \"@interopio/desktop\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\n\r\nexport const enterprise = (config?: IOConnectBrowser.Config): IOConnectDesktop.API => {\r\n const enterpriseConfig = {\r\n windows: true,\r\n layouts: \"full\",\r\n appManager: \"full\",\r\n channels: true,\r\n libraries: config?.libraries ?? [],\r\n logger: config?.systemLogger?.level ?? \"warn\"\r\n };\r\n\r\n if (window.glue42gd) {\r\n return (window as any).Glue(enterpriseConfig);\r\n }\r\n\r\n // TODO: here call the new interopio/desktop factory when it is ready\r\n return (window as any).Glue(enterpriseConfig);\r\n};","/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Typeguard for `Ok`.\r\n */\r\nvar isOk = function (r) { return r.ok === true; };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Typeguard for `Err`.\r\n */\r\nvar isErr = function (r) { return r.ok === false; };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Given an array of `Result`s, return the successful values.\r\n */\r\nvar successes = function (results) {\r\n return results.reduce(function (acc, r) { return (r.ok === true ? acc.concat(r.result) : acc); }, []);\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n\r\nvar result = Object.freeze({\r\n\tok: ok,\r\n\tisOk: isOk,\r\n\terr: err,\r\n\tisErr: isErr,\r\n\tasPromise: asPromise,\r\n\twithDefault: withDefault,\r\n\twithException: withException,\r\n\tsuccesses: successes,\r\n\tmap: map,\r\n\tmap2: map2,\r\n\tmapError: mapError,\r\n\tandThen: andThen\r\n});\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/**\r\n * Type guard for `DecoderError`. One use case of the type guard is in the\r\n * `catch` of a promise. Typescript types the error argument of `catch` as\r\n * `any`, so when dealing with a decoder as a promise you may need to\r\n * distinguish between a `DecoderError` and an error string.\r\n */\r\nvar isDecoderError = function (a) {\r\n return a.kind === 'DecoderError' && typeof a.at === 'string' && typeof a.message === 'string';\r\n};\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nvar unknownJson = Decoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nvar tuple = Decoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nvar union = Decoder.union;\r\n/** See `Decoder.intersection` */\r\nvar intersection = Decoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nvar withDefault$1 = Decoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nvar valueAt = Decoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nvar succeed = Decoder.succeed;\r\n/** See `Decoder.fail` */\r\nvar fail = Decoder.fail;\r\n/** See `Decoder.lazy` */\r\nvar lazy = Decoder.lazy;\r\n\r\nexport { result as Result, Decoder, isDecoderError, string, number, boolean, anyJson, unknownJson, constant, object, array, tuple, dict, optional, oneOf, union, intersection, withDefault$1 as withDefault, valueAt, succeed, fail, lazy };\r\n//# sourceMappingURL=index.es5.js.map\r\n","const connectBrowserAppProps = [\"name\", \"title\", \"version\", \"customProperties\", \"icon\", \"caption\", \"type\"];\nconst fdc3v2AppProps = [\"appId\", \"name\", \"type\", \"details\", \"version\", \"title\", \"tooltip\", \"lang\", \"description\", \"categories\", \"icons\", \"screenshots\", \"contactEmail\", \"moreInfo\", \"publisher\", \"customConfig\", \"hostManifests\", \"interop\", \"localizedVersions\"];\n\n/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nDecoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nDecoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nDecoder.union;\r\n/** See `Decoder.intersection` */\r\nDecoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nDecoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nDecoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nDecoder.succeed;\r\n/** See `Decoder.fail` */\r\nDecoder.fail;\r\n/** See `Decoder.lazy` */\r\nDecoder.lazy;\n\nconst nonEmptyStringDecoder = string().where((s) => s.length > 0, \"Expected a non-empty string\");\nconst nonNegativeNumberDecoder = number().where((num) => num >= 0, \"Expected a non-negative number\");\n\nconst intentDefinitionDecoder = object({\n name: nonEmptyStringDecoder,\n displayName: optional(string()),\n contexts: optional(array(string())),\n customConfig: optional(object())\n});\nconst v2TypeDecoder = oneOf(constant(\"web\"), constant(\"native\"), constant(\"citrix\"), constant(\"onlineNative\"), constant(\"other\"));\nconst v2DetailsDecoder = object({\n url: nonEmptyStringDecoder\n});\nconst v2IconDecoder = object({\n src: nonEmptyStringDecoder,\n size: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder)\n});\nconst v2ScreenshotDecoder = object({\n src: nonEmptyStringDecoder,\n size: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder),\n label: optional(nonEmptyStringDecoder)\n});\nconst v2ListensForIntentDecoder = object({\n contexts: array(nonEmptyStringDecoder),\n displayName: optional(nonEmptyStringDecoder),\n resultType: optional(nonEmptyStringDecoder),\n customConfig: optional(anyJson())\n});\nconst v2IntentsDecoder = object({\n listensFor: optional(dict(v2ListensForIntentDecoder)),\n raises: optional(dict(array(nonEmptyStringDecoder)))\n});\nconst v2UserChannelDecoder = object({\n broadcasts: optional(array(nonEmptyStringDecoder)),\n listensFor: optional(array(nonEmptyStringDecoder))\n});\nconst v2AppChannelDecoder = object({\n name: nonEmptyStringDecoder,\n description: optional(nonEmptyStringDecoder),\n broadcasts: optional(array(nonEmptyStringDecoder)),\n listensFor: optional(array(nonEmptyStringDecoder))\n});\nconst v2InteropDecoder = object({\n intents: optional(v2IntentsDecoder),\n userChannels: optional(v2UserChannelDecoder),\n appChannels: optional(array(v2AppChannelDecoder))\n});\nconst glue42ApplicationDetailsDecoder = object({\n url: nonEmptyStringDecoder,\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n});\nconst glue42HostManifestsBrowserDecoder = object({\n name: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\")),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n customProperties: optional(anyJson()),\n icon: optional(string()),\n caption: optional(string()),\n details: optional(glue42ApplicationDetailsDecoder),\n intents: optional(array(intentDefinitionDecoder)),\n hidden: optional(boolean())\n});\nconst hostManifestsBrowserDecoder = oneOf(object({\n \"Glue42\": oneOf(glue42HostManifestsBrowserDecoder, anyJson())\n}), anyJson());\nconst v1DefinitionDecoder = object({\n name: nonEmptyStringDecoder,\n appId: nonEmptyStringDecoder,\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n manifest: nonEmptyStringDecoder,\n manifestType: nonEmptyStringDecoder,\n tooltip: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n images: optional(array(object({ url: optional(nonEmptyStringDecoder) }))),\n icons: optional(array(object({ icon: optional(nonEmptyStringDecoder) }))),\n customConfig: anyJson(),\n intents: optional(array(intentDefinitionDecoder))\n});\nconst v2LocalizedDefinitionDecoder = object({\n appId: optional(nonEmptyStringDecoder),\n name: optional(nonEmptyStringDecoder),\n details: optional(v2DetailsDecoder),\n version: optional(nonEmptyStringDecoder),\n title: optional(nonEmptyStringDecoder),\n tooltip: optional(nonEmptyStringDecoder),\n lang: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n categories: optional(array(nonEmptyStringDecoder)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n moreInfo: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder)\n});\nconst v2DefinitionDecoder = object({\n appId: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder,\n type: v2TypeDecoder,\n details: v2DetailsDecoder,\n version: optional(nonEmptyStringDecoder),\n title: optional(nonEmptyStringDecoder),\n tooltip: optional(nonEmptyStringDecoder),\n lang: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n categories: optional(array(nonEmptyStringDecoder)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n moreInfo: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder),\n localizedVersions: optional(dict(v2LocalizedDefinitionDecoder))\n});\nconst allDefinitionsDecoder = oneOf(v1DefinitionDecoder, v2DefinitionDecoder);\n\nconst parseDecoderErrorToStringMessage = (error) => {\n return `${error.kind} at ${error.at}: ${JSON.stringify(error.input)}. Reason - ${error.message}`;\n};\n\nclass FDC3Service {\n constructor() {\n this.fdc3ToDesktopDefinitionType = {\n web: \"window\",\n native: \"exe\",\n citrix: \"citrix\",\n onlineNative: \"clickonce\",\n other: \"window\"\n };\n }\n toApi() {\n return {\n isFdc3Definition: this.isFdc3Definition.bind(this),\n parseToBrowserBaseAppData: this.parseToBrowserBaseAppData.bind(this),\n parseToDesktopAppConfig: this.parseToDesktopAppConfig.bind(this)\n };\n }\n isFdc3Definition(definition) {\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n return { isFdc3: false };\n }\n if (definition.appId && definition.details) {\n return { isFdc3: true, version: \"2.0\" };\n }\n if (definition.manifest) {\n return { isFdc3: true, version: \"1.2\" };\n }\n return { isFdc3: false };\n }\n parseToBrowserBaseAppData(definition) {\n var _a;\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n const userProperties = this.getUserPropertiesFromDefinition(definition, version);\n const createOptions = { url: this.getUrl(definition, version) };\n let baseApplicationData = {\n name: definition.appId,\n type: \"window\",\n createOptions,\n userProperties: Object.assign(Object.assign({}, userProperties), { intents: version === \"1.2\"\n ? userProperties.intents\n : this.getIntentsFromV2AppDefinition(definition), details: createOptions }),\n title: definition.title,\n version: definition.version,\n icon: this.getIconFromDefinition(definition, version),\n caption: definition.description,\n fdc3: version === \"2.0\" ? Object.assign(Object.assign({}, definition), { definitionVersion: \"2.0\" }) : undefined,\n };\n if ((_a = definition.hostManifests) === null || _a === void 0 ? void 0 : _a[\"Glue42\"]) {\n const decodeRes = glue42HostManifestsBrowserDecoder.run(definition.hostManifests[\"Glue42\"]);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n if (!Object.keys(decodeRes.result).length) {\n throw new Error(\"Invalid 'hostManifests['Glue42]' key\");\n }\n baseApplicationData = this.mergeBaseAppDataWithGlueManifest(baseApplicationData, decodeRes.result);\n }\n return baseApplicationData;\n }\n parseToDesktopAppConfig(definition) {\n var _a, _b, _c;\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n if (version === \"1.2\") {\n const fdc3v1Definition = definition;\n return {\n name: fdc3v1Definition.appId,\n type: \"window\",\n details: {\n url: this.getUrl(definition, version)\n },\n version: fdc3v1Definition.version,\n title: fdc3v1Definition.title,\n tooltip: fdc3v1Definition.tooltip,\n caption: fdc3v1Definition.description,\n icon: (_a = fdc3v1Definition.icons) === null || _a === void 0 ? void 0 : _a[0].icon,\n intents: fdc3v1Definition.intents,\n customProperties: {\n manifestType: fdc3v1Definition.manifestType,\n images: fdc3v1Definition.images,\n contactEmail: fdc3v1Definition.contactEmail,\n supportEmail: fdc3v1Definition.supportEmail,\n publisher: fdc3v1Definition.publisher,\n icons: fdc3v1Definition.icons,\n customConfig: fdc3v1Definition.customConfig\n }\n };\n }\n const fdc3v2Definition = definition;\n let desktopDefinition = {\n name: fdc3v2Definition.appId,\n type: this.fdc3ToDesktopDefinitionType[fdc3v2Definition.type],\n details: fdc3v2Definition.details,\n version: fdc3v2Definition.version,\n title: fdc3v2Definition.title,\n tooltip: fdc3v2Definition.tooltip,\n caption: fdc3v2Definition.description,\n icon: this.getIconFromDefinition(fdc3v2Definition, \"2.0\"),\n intents: this.getIntentsFromV2AppDefinition(fdc3v2Definition),\n fdc3: Object.assign(Object.assign({}, fdc3v2Definition), { definitionVersion: \"2.0\" })\n };\n if ((_b = fdc3v2Definition.hostManifests) === null || _b === void 0 ? void 0 : _b[\"Glue42\"]) {\n if (typeof fdc3v2Definition.hostManifests[\"Glue42\"] !== \"object\" || Array.isArray(fdc3v2Definition.hostManifests[\"Glue42\"])) {\n throw new Error(\"Invalid 'hostManifests['Glue42]' key\");\n }\n desktopDefinition = this.mergeDesktopConfigWithGlueManifest(desktopDefinition, (_c = fdc3v2Definition.hostManifests) === null || _c === void 0 ? void 0 : _c[\"Glue42\"]);\n }\n return desktopDefinition;\n }\n getUserPropertiesFromDefinition(definition, version) {\n if (version === \"1.2\") {\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key)));\n }\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key) && !fdc3v2AppProps.includes(key)));\n }\n getUrl(definition, version) {\n var _a, _b;\n let url;\n if (version === \"1.2\") {\n const parsedManifest = JSON.parse(definition.manifest);\n url = ((_a = parsedManifest.details) === null || _a === void 0 ? void 0 : _a.url) || parsedManifest.url;\n }\n else {\n url = (_b = definition.details) === null || _b === void 0 ? void 0 : _b.url;\n }\n if (!url || typeof url !== \"string\") {\n throw new Error(`Invalid FDC3 ${version} definition. Provide valid 'url' under '${version === \"1.2\" ? \"manifest\" : \"details\"}' key`);\n }\n return url;\n }\n getIntentsFromV2AppDefinition(definition) {\n var _a, _b;\n const fdc3Intents = (_b = (_a = definition.interop) === null || _a === void 0 ? void 0 : _a.intents) === null || _b === void 0 ? void 0 : _b.listensFor;\n if (!fdc3Intents) {\n return;\n }\n const intents = Object.entries(fdc3Intents).map((fdc3Intent) => {\n const [intentName, intentData] = fdc3Intent;\n return Object.assign({ name: intentName }, intentData);\n });\n return intents;\n }\n getIconFromDefinition(definition, version) {\n var _a, _b, _c, _d;\n if (version === \"1.2\") {\n return ((_b = (_a = definition.icons) === null || _a === void 0 ? void 0 : _a.find((iconDef) => iconDef.icon)) === null || _b === void 0 ? void 0 : _b.icon) || undefined;\n }\n return ((_d = (_c = definition.icons) === null || _c === void 0 ? void 0 : _c.find((iconDef) => iconDef.src)) === null || _d === void 0 ? void 0 : _d.src) || undefined;\n }\n mergeBaseAppDataWithGlueManifest(baseAppData, hostManifestDefinition) {\n let baseApplicationDefinition = baseAppData;\n if (hostManifestDefinition.details) {\n const details = Object.assign(Object.assign({}, baseAppData.createOptions), hostManifestDefinition.details);\n baseApplicationDefinition.createOptions = details;\n baseApplicationDefinition.userProperties.details = details;\n }\n if (Array.isArray(hostManifestDefinition.intents)) {\n baseApplicationDefinition.userProperties.intents = (baseApplicationDefinition.userProperties.intents || []).concat(hostManifestDefinition.intents);\n }\n baseApplicationDefinition = Object.assign(Object.assign({}, baseApplicationDefinition), hostManifestDefinition);\n delete baseApplicationDefinition.details;\n delete baseApplicationDefinition.intents;\n return baseApplicationDefinition;\n }\n mergeDesktopConfigWithGlueManifest(config, desktopDefinition) {\n const appConfig = Object.assign({}, config, desktopDefinition, { details: Object.assign(Object.assign({}, config.details), desktopDefinition.details) });\n if (Array.isArray(desktopDefinition.intents)) {\n appConfig.intents = (config.intents || []).concat(desktopDefinition.intents);\n }\n return appConfig;\n }\n}\n\nconst decoders$1 = {\n common: {\n nonEmptyStringDecoder,\n nonNegativeNumberDecoder\n },\n fdc3: {\n allDefinitionsDecoder,\n v1DefinitionDecoder,\n v2DefinitionDecoder\n }\n};\n\nclass IoC {\n constructor() {\n this._decoders = decoders$1;\n }\n get fdc3() {\n if (!this._fdc3) {\n this._fdc3 = new FDC3Service().toApi();\n }\n return this._fdc3;\n }\n get decoders() {\n return this._decoders;\n }\n}\n\nconst ioc = new IoC();\nconst fdc3 = ioc.fdc3;\nconst decoders = ioc.decoders;\n\nexport { decoders, fdc3 };\n//# sourceMappingURL=utils.es.js.map\n","import { IOConnectWorkspaces } from \"@interopio/workspaces-api\";\r\nimport { decoders } from \"@interopio/utils\";\r\nimport { Decoder, string, number, object, constant, oneOf, optional, array, boolean, anyJson, lazy } from \"decoder-validate\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\nimport { AppsImportOperation, AppHelloSuccess, ApplicationData, ApplicationStartConfig, AppManagerOperationTypes, AppRemoveConfig, BaseApplicationData, BasicInstanceData, InstanceData, AppsExportOperation, FDC3Definition, AppDirectoryStateChange } from \"../appManager/protocol\";\r\nimport { AllLayoutsFullConfig, AllLayoutsSummariesResult, GetAllLayoutsConfig, LayoutsImportConfig, LayoutsOperationTypes, OptionalSimpleLayoutResult, RestoreLayoutConfig, SaveLayoutConfig, SaveRequestClientResponse, PlatformSaveRequestConfig, SimpleLayoutConfig, SimpleLayoutResult, PermissionStateResult, SimpleAvailabilityResult, SetDefaultGlobalConfig } from \"../layouts/protocol\";\r\nimport { HelloSuccess, OpenWindowConfig, CoreWindowData, WindowHello, WindowOperationTypes, SimpleWindowCommand, WindowTitleConfig, WindowBoundsResult, WindowMoveResizeConfig, WindowUrlResult, FrameWindowBoundsResult, FocusEventData, WindowChannelResult } from \"../windows/protocol\";\r\nimport { IntentsOperationTypes, WrappedIntentFilter, WrappedIntents } from \"../intents/protocol\";\r\nimport { LibDomains, OperationCheckConfig, OperationCheckResult, SimpleItemIdRequest, WorkspaceFrameBoundsResult } from \"./types\";\r\nimport { AllNotificationsData, NotificationEventPayload, NotificationsOperationTypes, PermissionQueryResult, PermissionRequestResult, RaiseNotification, RaiseNotificationResult, SimpleNotificationData, SimpleNotificationSelect } from \"../notifications/protocol\";\r\nimport { AllThemesResponse, SelectThemeConfig, SimpleThemeResponse } from \"../themes/protocol\";\r\nimport { SystemOperationTypes } from \"../system/protocol\";\r\nimport { WindowIdsOnChannelData, ChannelOperationTypes, WrappedWindowWithChannelFilter, WindowIdsWithChannelsData, MyChannelData, JoinChannelData } from \"../channels/protocol\";\r\nimport { FilterHandlersReturnResult, FilterHandlersWithResolverConfig, IntentRequestWithResolverConfig, IntentResolverResponse, ResolverConfig } from \"../intents/types\";\r\n\r\nexport const nonEmptyStringDecoder: Decoder = string().where((s) => s.length > 0, \"Expected a non-empty string\");\r\nexport const nonNegativeNumberDecoder: Decoder = number().where((num) => num >= 0, \"Expected a non-negative number\");\r\nexport const optionalNonEmptyStringDecoder: Decoder = optional(nonEmptyStringDecoder);\r\n\r\nexport const libDomainDecoder: Decoder = oneOf<\"system\" | \"windows\" | \"appManager\" | \"layouts\" | \"intents\" | \"notifications\" | \"channels\" | \"extension\" | \"themes\">(\r\n constant(\"system\"),\r\n constant(\"windows\"),\r\n constant(\"appManager\"),\r\n constant(\"layouts\"),\r\n constant(\"intents\"),\r\n constant(\"notifications\"),\r\n constant(\"channels\"),\r\n constant(\"extension\"),\r\n constant(\"themes\")\r\n);\r\n\r\nexport const windowOperationTypesDecoder: Decoder = oneOf<\"openWindow\" | \"getBounds\" | \"getFrameBounds\" | \"windowHello\" | \"windowAdded\" | \"windowRemoved\" | \"getUrl\" | \"moveResize\" | \"focus\" | \"close\" | \"getTitle\" | \"setTitle\" | \"focusChange\" | \"getChannel\">(\r\n constant(\"openWindow\"),\r\n constant(\"windowHello\"),\r\n constant(\"windowAdded\"),\r\n constant(\"windowRemoved\"),\r\n constant(\"getBounds\"),\r\n constant(\"getFrameBounds\"),\r\n constant(\"getUrl\"),\r\n constant(\"moveResize\"),\r\n constant(\"focus\"),\r\n constant(\"close\"),\r\n constant(\"getTitle\"),\r\n constant(\"setTitle\"),\r\n constant(\"focusChange\"),\r\n constant(\"getChannel\"),\r\n);\r\n\r\nexport const appManagerOperationTypesDecoder: Decoder = oneOf<\"appHello\" | \"appDirectoryStateChange\" | \"instanceStarted\" | \"instanceStopped\" | \"applicationStart\" | \"instanceStop\" | \"clear\">(\r\n constant(\"appHello\"),\r\n constant(\"appDirectoryStateChange\"),\r\n constant(\"instanceStarted\"),\r\n constant(\"instanceStopped\"),\r\n constant(\"applicationStart\"),\r\n constant(\"instanceStop\"),\r\n constant(\"clear\")\r\n);\r\n\r\nexport const layoutsOperationTypesDecoder: Decoder = oneOf<\"layoutAdded\" | \"layoutChanged\" | \"layoutRemoved\" | \"get\" | \"getAll\" | \"export\" | \"import\" | \"remove\" | \"clientSaveRequest\" | \"getGlobalPermissionState\" | \"requestGlobalPermission\" | \"checkGlobalActivated\" | \"getDefaultGlobal\" | \"setDefaultGlobal\" | \"clearDefaultGlobal\">(\r\n constant(\"layoutAdded\"),\r\n constant(\"layoutChanged\"),\r\n constant(\"layoutRemoved\"),\r\n constant(\"get\"),\r\n constant(\"getAll\"),\r\n constant(\"export\"),\r\n constant(\"import\"),\r\n constant(\"remove\"),\r\n constant(\"clientSaveRequest\"),\r\n constant(\"getGlobalPermissionState\"),\r\n constant(\"checkGlobalActivated\"),\r\n constant(\"requestGlobalPermission\"),\r\n constant(\"getDefaultGlobal\"),\r\n constant(\"setDefaultGlobal\"),\r\n constant(\"clearDefaultGlobal\")\r\n);\r\n\r\nexport const notificationsOperationTypesDecoder: Decoder = oneOf<\"raiseNotification\" | \"requestPermission\" | \"notificationShow\" | \"notificationClick\" | \"getPermission\" | \"list\" | \"notificationRaised\" | \"notificationClosed\" | \"click\" | \"clear\" | \"clearAll\">(\r\n constant(\"raiseNotification\"),\r\n constant(\"requestPermission\"),\r\n constant(\"notificationShow\"),\r\n constant(\"notificationClick\"),\r\n constant(\"getPermission\"),\r\n constant(\"list\"),\r\n constant(\"notificationRaised\"),\r\n constant(\"notificationClosed\"),\r\n constant(\"click\"),\r\n constant(\"clear\"),\r\n constant(\"clearAll\")\r\n);\r\n\r\nexport const systemOperationTypesDecoder: Decoder = oneOf<\"getEnvironment\" | \"getBase\" | \"platformShutdown\">(\r\n constant(\"getEnvironment\"),\r\n constant(\"getBase\"),\r\n constant(\"platformShutdown\")\r\n);\r\n\r\nexport const windowRelativeDirectionDecoder: Decoder = oneOf<\"top\" | \"left\" | \"right\" | \"bottom\">(\r\n constant(\"top\"),\r\n constant(\"left\"),\r\n constant(\"right\"),\r\n constant(\"bottom\")\r\n);\r\n\r\nexport const windowBoundsDecoder: Decoder = object({\r\n top: number(),\r\n left: number(),\r\n width: nonNegativeNumberDecoder,\r\n height: nonNegativeNumberDecoder\r\n});\r\n\r\nexport const windowOpenSettingsDecoder: Decoder = optional(object({\r\n top: optional(number()),\r\n left: optional(number()),\r\n width: optional(nonNegativeNumberDecoder),\r\n height: optional(nonNegativeNumberDecoder),\r\n context: optional(anyJson()),\r\n relativeTo: optional(nonEmptyStringDecoder),\r\n relativeDirection: optional(windowRelativeDirectionDecoder),\r\n windowId: optional(nonEmptyStringDecoder),\r\n layoutComponentId: optional(nonEmptyStringDecoder)\r\n}));\r\n\r\nexport const openWindowConfigDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder,\r\n url: nonEmptyStringDecoder,\r\n options: windowOpenSettingsDecoder\r\n});\r\n\r\nexport const windowHelloDecoder: Decoder = object({\r\n windowId: optional(nonEmptyStringDecoder)\r\n});\r\n\r\nexport const coreWindowDataDecoder: Decoder = object({\r\n windowId: nonEmptyStringDecoder,\r\n name: nonEmptyStringDecoder\r\n});\r\n\r\nexport const simpleWindowDecoder: Decoder = object({\r\n windowId: nonEmptyStringDecoder\r\n});\r\n\r\nexport const helloSuccessDecoder: Decoder = object({\r\n windows: array(coreWindowDataDecoder),\r\n isWorkspaceFrame: boolean()\r\n});\r\n\r\n\r\nexport const windowTitleConfigDecoder: Decoder = object({\r\n windowId: nonEmptyStringDecoder,\r\n title: string()\r\n});\r\n\r\nexport const focusEventDataDecoder: Decoder = object({\r\n windowId: nonEmptyStringDecoder,\r\n hasFocus: boolean()\r\n});\r\n\r\nexport const windowMoveResizeConfigDecoder: Decoder = object({\r\n windowId: nonEmptyStringDecoder,\r\n top: optional(number()),\r\n left: optional(number()),\r\n width: optional(nonNegativeNumberDecoder),\r\n height: optional(nonNegativeNumberDecoder),\r\n relative: optional(boolean())\r\n});\r\n\r\nexport const windowBoundsResultDecoder: Decoder = object({\r\n windowId: nonEmptyStringDecoder,\r\n bounds: object({\r\n top: number(),\r\n left: number(),\r\n width: nonNegativeNumberDecoder,\r\n height: nonNegativeNumberDecoder\r\n })\r\n});\r\n\r\nexport const frameWindowBoundsResultDecoder: Decoder = object({\r\n bounds: object({\r\n top: number(),\r\n left: number(),\r\n width: nonNegativeNumberDecoder,\r\n height: nonNegativeNumberDecoder\r\n })\r\n});\r\n\r\nexport const windowUrlResultDecoder: Decoder = object({\r\n windowId: nonEmptyStringDecoder,\r\n url: nonEmptyStringDecoder\r\n});\r\n\r\nexport const anyDecoder: Decoder = anyJson();\r\n\r\nexport const boundsDecoder: Decoder> = object({\r\n top: optional(number()),\r\n left: optional(number()),\r\n width: optional(nonNegativeNumberDecoder),\r\n height: optional(nonNegativeNumberDecoder)\r\n});\r\n\r\nexport const instanceDataDecoder: Decoder = object({\r\n id: nonEmptyStringDecoder,\r\n applicationName: nonEmptyStringDecoder\r\n});\r\n\r\nexport const applicationDetailsDecoder: Decoder = object({\r\n url: nonEmptyStringDecoder,\r\n top: optional(number()),\r\n left: optional(number()),\r\n width: optional(nonNegativeNumberDecoder),\r\n height: optional(nonNegativeNumberDecoder)\r\n});\r\n\r\nexport const intentDefinitionDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder,\r\n displayName: optional(string()),\r\n contexts: optional(array(string())),\r\n customConfig: optional(object())\r\n});\r\n\r\nexport const fdc3AppDefinitionDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder,\r\n title: optional(nonEmptyStringDecoder),\r\n version: optional(nonEmptyStringDecoder),\r\n appId: optional(nonEmptyStringDecoder),\r\n manifest: nonEmptyStringDecoder,\r\n manifestType: nonEmptyStringDecoder,\r\n tooltip: optional(nonEmptyStringDecoder),\r\n description: optional(nonEmptyStringDecoder),\r\n contactEmail: optional(nonEmptyStringDecoder),\r\n supportEmail: optional(nonEmptyStringDecoder),\r\n publisher: optional(nonEmptyStringDecoder),\r\n images: optional(array(object({ url: optional(nonEmptyStringDecoder) }))),\r\n icons: optional(array(object({ icon: optional(nonEmptyStringDecoder) }))),\r\n customConfig: anyJson(),\r\n intents: optional(array(intentDefinitionDecoder))\r\n});\r\n\r\nexport const applicationDefinitionDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder,\r\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\r\n title: optional(nonEmptyStringDecoder),\r\n version: optional(nonEmptyStringDecoder),\r\n customProperties: optional(anyJson()),\r\n icon: optional(string()),\r\n caption: optional(string()),\r\n details: applicationDetailsDecoder,\r\n intents: optional(array(intentDefinitionDecoder)),\r\n hidden: optional(boolean()),\r\n fdc3: optional(decoders.fdc3.v2DefinitionDecoder)\r\n});\r\n\r\nexport const allApplicationDefinitionsDecoder: Decoder = oneOf(\r\n applicationDefinitionDecoder,\r\n decoders.fdc3.v2DefinitionDecoder,\r\n decoders.fdc3.v1DefinitionDecoder\r\n);\r\n\r\nexport const appsImportOperationDecoder: Decoder = object({\r\n definitions: array(allApplicationDefinitionsDecoder),\r\n mode: oneOf<\"replace\" | \"merge\">(\r\n constant(\"replace\"),\r\n constant(\"merge\")\r\n )\r\n});\r\n\r\nexport const appRemoveConfigDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder\r\n});\r\n\r\nexport const appsExportOperationDecoder: Decoder = object({\r\n definitions: array(applicationDefinitionDecoder)\r\n});\r\n\r\nexport const applicationDataDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder,\r\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\r\n instances: array(instanceDataDecoder),\r\n userProperties: optional(anyJson()),\r\n title: optional(nonEmptyStringDecoder),\r\n version: optional(nonEmptyStringDecoder),\r\n icon: optional(nonEmptyStringDecoder),\r\n caption: optional(nonEmptyStringDecoder)\r\n});\r\n\r\nexport const baseApplicationDataDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder,\r\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\r\n userProperties: anyJson(),\r\n title: optional(nonEmptyStringDecoder),\r\n version: optional(nonEmptyStringDecoder),\r\n icon: optional(nonEmptyStringDecoder),\r\n caption: optional(nonEmptyStringDecoder)\r\n});\r\n\r\nexport const appDirectoryStateChangeDecoder: Decoder = object({\r\n appsAdded: array(baseApplicationDataDecoder),\r\n appsChanged: array(baseApplicationDataDecoder),\r\n appsRemoved: array(baseApplicationDataDecoder)\r\n});\r\n\r\nexport const appHelloSuccessDecoder: Decoder = object({\r\n apps: array(applicationDataDecoder),\r\n initialChannelId: optional(nonEmptyStringDecoder)\r\n});\r\n\r\nexport const basicInstanceDataDecoder: Decoder = object({\r\n id: nonEmptyStringDecoder\r\n});\r\n\r\nexport const applicationStartConfigDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder,\r\n waitForAGMReady: boolean(),\r\n id: optional(nonEmptyStringDecoder),\r\n context: optional(anyJson()),\r\n top: optional(number()),\r\n left: optional(number()),\r\n width: optional(nonNegativeNumberDecoder),\r\n height: optional(nonNegativeNumberDecoder),\r\n relativeTo: optional(nonEmptyStringDecoder),\r\n relativeDirection: optional(windowRelativeDirectionDecoder),\r\n forceChromeTab: optional(boolean()),\r\n layoutComponentId: optional(nonEmptyStringDecoder),\r\n channelId: optional(nonEmptyStringDecoder)\r\n});\r\n\r\nexport const layoutTypeDecoder: Decoder = oneOf<\"Global\" | \"Activity\" | \"ApplicationDefault\" | \"Swimlane\" | \"Workspace\">(\r\n constant(\"Global\"),\r\n constant(\"Activity\"),\r\n constant(\"ApplicationDefault\"),\r\n constant(\"Swimlane\"),\r\n constant(\"Workspace\")\r\n);\r\n\r\nexport const componentTypeDecoder: Decoder = oneOf<\"application\" | \"activity\">(\r\n constant(\"application\"),\r\n constant(\"activity\")\r\n);\r\n\r\nexport const windowComponentStateDecoder: Decoder = object({\r\n context: optional(anyJson()),\r\n bounds: windowBoundsDecoder,\r\n createArgs: object({\r\n name: optional(nonEmptyStringDecoder),\r\n url: optional(nonEmptyStringDecoder),\r\n context: optional(anyJson())\r\n }),\r\n windowState: optional(nonEmptyStringDecoder),\r\n restoreState: optional(nonEmptyStringDecoder),\r\n instanceId: nonEmptyStringDecoder,\r\n isCollapsed: optional(boolean()),\r\n isSticky: optional(boolean()),\r\n restoreSettings: object({\r\n groupId: optional(nonEmptyStringDecoder),\r\n groupZOrder: optional(number())\r\n })\r\n});\r\n\r\nexport const windowLayoutComponentDecoder: Decoder = object({\r\n type: constant(\"window\"),\r\n componentType: optional(componentTypeDecoder),\r\n application: nonEmptyStringDecoder,\r\n state: windowComponentStateDecoder\r\n});\r\n\r\nexport const windowLayoutItemDecoder: Decoder = object({\r\n type: constant(\"window\"),\r\n config: object({\r\n appName: nonEmptyStringDecoder,\r\n url: optional(nonEmptyStringDecoder),\r\n title: optional(string()),\r\n allowExtract: optional(boolean()),\r\n allowReorder: optional(boolean()),\r\n showCloseButton: optional(boolean()),\r\n isMaximized: optional(boolean())\r\n })\r\n});\r\n\r\nexport const groupLayoutItemDecoder: Decoder = object({\r\n type: constant(\"group\"),\r\n config: anyJson(),\r\n children: array(oneOf(\r\n windowLayoutItemDecoder\r\n ))\r\n});\r\n\r\nexport const columnLayoutItemDecoder: Decoder = object({\r\n type: constant(\"column\"),\r\n config: anyJson(),\r\n children: array(oneOf(\r\n groupLayoutItemDecoder,\r\n windowLayoutItemDecoder,\r\n lazy(() => columnLayoutItemDecoder),\r\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\r\n lazy(() => rowLayoutItemDecoder)\r\n ))\r\n});\r\n\r\nexport const rowLayoutItemDecoder: Decoder = object({\r\n type: constant(\"row\"),\r\n config: anyJson(),\r\n children: array(oneOf(\r\n columnLayoutItemDecoder,\r\n groupLayoutItemDecoder,\r\n windowLayoutItemDecoder,\r\n lazy(() => rowLayoutItemDecoder)\r\n ))\r\n});\r\n\r\nexport const workspaceLayoutComponentStateDecoder: Decoder = object({\r\n config: anyJson(),\r\n context: anyJson(),\r\n children: array(oneOf(\r\n rowLayoutItemDecoder,\r\n columnLayoutItemDecoder,\r\n groupLayoutItemDecoder,\r\n windowLayoutItemDecoder\r\n ))\r\n});\r\n\r\nexport const workspaceLayoutComponentDecoder: Decoder = object({\r\n type: constant(\"Workspace\"),\r\n application: optional(nonEmptyStringDecoder),\r\n state: workspaceLayoutComponentStateDecoder\r\n});\r\n\r\nexport const workspaceFrameComponentStateDecoder: Decoder = object({\r\n bounds: windowBoundsDecoder,\r\n instanceId: nonEmptyStringDecoder,\r\n selectedWorkspace: nonNegativeNumberDecoder,\r\n workspaces: array(workspaceLayoutComponentStateDecoder),\r\n windowState: optional(nonEmptyStringDecoder),\r\n restoreState: optional(nonEmptyStringDecoder),\r\n context: optional(anyJson())\r\n});\r\n\r\nexport const workspaceFrameComponentDecoder: Decoder = object({\r\n type: constant<\"workspaceFrame\">(\"workspaceFrame\"),\r\n application: nonEmptyStringDecoder,\r\n componentType: optional(componentTypeDecoder),\r\n state: workspaceFrameComponentStateDecoder\r\n});\r\n\r\nexport const glueLayoutDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder,\r\n type: layoutTypeDecoder,\r\n components: array(oneOf(\r\n windowLayoutComponentDecoder,\r\n workspaceLayoutComponentDecoder,\r\n workspaceFrameComponentDecoder\r\n )),\r\n context: optional(anyJson()),\r\n metadata: optional(anyJson()),\r\n version: optional(number())\r\n});\r\n\r\nexport const newLayoutOptionsDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder,\r\n context: optional(anyJson()),\r\n metadata: optional(anyJson()),\r\n instances: optional(array(nonEmptyStringDecoder)),\r\n ignoreInstances: optional(array(nonEmptyStringDecoder))\r\n});\r\n\r\nexport const restoreOptionsDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder,\r\n context: optional(anyJson()),\r\n closeRunningInstance: optional(boolean()),\r\n closeMe: optional(boolean()),\r\n timeout: optional(nonNegativeNumberDecoder)\r\n});\r\n\r\nexport const layoutSummaryDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder,\r\n type: layoutTypeDecoder,\r\n context: optional(anyJson()),\r\n metadata: optional(anyJson())\r\n});\r\n\r\nexport const simpleLayoutConfigDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder,\r\n type: layoutTypeDecoder\r\n});\r\n\r\nexport const saveLayoutConfigDecoder: Decoder = object({\r\n layout: newLayoutOptionsDecoder\r\n});\r\n\r\nexport const restoreLayoutConfigDecoder: Decoder = object({\r\n layout: restoreOptionsDecoder\r\n});\r\n\r\nexport const getAllLayoutsConfigDecoder: Decoder = object({\r\n type: layoutTypeDecoder\r\n});\r\n\r\nexport const allLayoutsFullConfigDecoder: Decoder = object({\r\n layouts: array(glueLayoutDecoder)\r\n});\r\n\r\nexport const importModeDecoder: Decoder<\"replace\" | \"merge\"> = oneOf<\"replace\" | \"merge\">(\r\n constant(\"replace\"),\r\n constant(\"merge\")\r\n);\r\n\r\nexport const layoutsImportConfigDecoder: Decoder = object({\r\n layouts: array(glueLayoutDecoder),\r\n mode: importModeDecoder,\r\n isManagerOperation: optional(boolean())\r\n});\r\n\r\nexport const allLayoutsSummariesResultDecoder: Decoder = object({\r\n summaries: array(layoutSummaryDecoder)\r\n});\r\n\r\nexport const simpleLayoutResultDecoder: Decoder = object({\r\n layout: glueLayoutDecoder\r\n});\r\n\r\nexport const optionalSimpleLayoutResult: Decoder = object({\r\n layout: optional(glueLayoutDecoder)\r\n});\r\n\r\nexport const setDefaultGlobalConfigDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder\r\n});\r\n\r\nexport const intentsOperationTypesDecoder: Decoder = oneOf<\"findIntent\" | \"getIntents\" | \"raiseIntent\" | \"raise\" | \"filterHandlers\">(\r\n constant(\"findIntent\"),\r\n constant(\"getIntents\"),\r\n constant(\"raiseIntent\"),\r\n constant(\"raise\"),\r\n constant(\"filterHandlers\")\r\n);\r\n\r\nconst intentHandlerDecoder: Decoder = object({\r\n applicationName: nonEmptyStringDecoder,\r\n applicationTitle: optional(string()),\r\n applicationDescription: optional(string()),\r\n applicationIcon: optional(string()),\r\n type: oneOf<\"app\" | \"instance\">(constant(\"app\"), constant(\"instance\")),\r\n displayName: optional(string()),\r\n contextTypes: optional(array(nonEmptyStringDecoder)),\r\n instanceId: optional(string()),\r\n instanceTitle: optional(string()),\r\n resultType: optional(string())\r\n});\r\n\r\nexport const resolverIntentHandlerDecoder = object({\r\n applicationName: string(),\r\n applicationIcon: optional(string()),\r\n instanceId: optional(string()),\r\n});\r\n\r\nexport const intentResolverResponseDecoder: Decoder = object({\r\n intent: nonEmptyStringDecoder,\r\n handler: intentHandlerDecoder\r\n});\r\n\r\nconst intentDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder,\r\n handlers: array(intentHandlerDecoder)\r\n});\r\n\r\nconst intentTargetDecoder: Decoder<\"startNew\" | \"reuse\" | { app?: string; instance?: string }> = oneOf<\"startNew\" | \"reuse\" | { app?: string; instance?: string }>(\r\n constant(\"startNew\"),\r\n constant(\"reuse\"),\r\n object({\r\n app: optional(nonEmptyStringDecoder),\r\n instance: optional(nonEmptyStringDecoder)\r\n })\r\n);\r\n\r\nconst intentContextDecoder: Decoder = object({\r\n type: optional(nonEmptyStringDecoder),\r\n data: optional(anyJson())\r\n});\r\n\r\nexport const intentsDecoder: Decoder = array(intentDecoder);\r\n\r\nexport const wrappedIntentsDecoder: Decoder = object({\r\n intents: intentsDecoder\r\n});\r\n\r\nexport const intentFilterDecoder: Decoder = object({\r\n name: optional(nonEmptyStringDecoder),\r\n contextType: optional(nonEmptyStringDecoder),\r\n resultType: optional(nonEmptyStringDecoder)\r\n});\r\n\r\nexport const findFilterDecoder: Decoder = oneOf(\r\n nonEmptyStringDecoder,\r\n intentFilterDecoder\r\n);\r\n\r\nexport const wrappedIntentFilterDecoder: Decoder = object({\r\n filter: optional(intentFilterDecoder)\r\n});\r\n\r\nexport const intentRequestDecoder: Decoder = object({\r\n intent: nonEmptyStringDecoder,\r\n target: optional(intentTargetDecoder),\r\n context: optional(intentContextDecoder),\r\n options: optional(windowOpenSettingsDecoder),\r\n handlers: optional(array(intentHandlerDecoder)),\r\n timeout: optional(nonNegativeNumberDecoder),\r\n waitUserResponseIndefinitely: optional(boolean())\r\n});\r\n\r\nexport const raiseRequestDecoder: Decoder = oneOf(\r\n nonEmptyStringDecoder,\r\n intentRequestDecoder\r\n);\r\n\r\nexport const resolverConfigDecoder: Decoder = object({\r\n enabled: boolean(),\r\n appName: nonEmptyStringDecoder,\r\n waitResponseTimeout: number()\r\n});\r\n\r\nexport const raiseIntentRequestDecoder: Decoder = object({\r\n intentRequest: intentRequestDecoder,\r\n resolverConfig: resolverConfigDecoder\r\n});\r\n\r\nexport const intentResultDecoder: Decoder = object({\r\n request: intentRequestDecoder,\r\n handler: intentHandlerDecoder,\r\n result: anyJson()\r\n});\r\n\r\nexport const handlersFilterDecoder: Decoder = object({\r\n title: optional(nonEmptyStringDecoder),\r\n openResolver: optional(boolean()),\r\n timeout: optional(number()),\r\n intent: optional(nonEmptyStringDecoder),\r\n contextTypes: optional(array(nonEmptyStringDecoder)),\r\n resultType: optional(nonEmptyStringDecoder),\r\n});\r\n\r\nexport const filterHandlersResultDecoder: Decoder = object({\r\n handlers: array(intentHandlerDecoder)\r\n});\r\n\r\nexport const filterHandlersWithResolverConfigDecoder: Decoder = object({\r\n filterHandlersRequest: handlersFilterDecoder,\r\n resolverConfig: resolverConfigDecoder\r\n});\r\n\r\nexport const AddIntentListenerRequestDecoder: Decoder = object({\r\n intent: nonEmptyStringDecoder,\r\n contextTypes: optional(array(nonEmptyStringDecoder)),\r\n displayName: optional(string()),\r\n icon: optional(string()),\r\n description: optional(string()),\r\n resultType: optional(string())\r\n});\r\n\r\nexport const AddIntentListenerDecoder: Decoder = oneOf(\r\n nonEmptyStringDecoder,\r\n AddIntentListenerRequestDecoder\r\n);\r\n\r\nexport const channelNameDecoder = (channelNames: string[]): Decoder => {\r\n return nonEmptyStringDecoder.where(s => channelNames.includes(s), \"Expected a valid channel name\");\r\n};\r\n\r\nexport const interopActionSettingsDecoder: Decoder = object({\r\n method: nonEmptyStringDecoder,\r\n arguments: optional(anyJson()),\r\n target: optional(oneOf<\"all\" | \"best\">(\r\n constant(\"all\"),\r\n constant(\"best\")\r\n ))\r\n});\r\n\r\nexport const glue42NotificationActionDecoder: Decoder = object({\r\n action: string(),\r\n title: nonEmptyStringDecoder,\r\n icon: optional(string()),\r\n interop: optional(interopActionSettingsDecoder)\r\n});\r\n\r\nexport const notificationDefinitionDecoder: Decoder = object({\r\n badge: optional(string()),\r\n body: optional(string()),\r\n data: optional(anyJson()),\r\n dir: optional(oneOf<\"auto\" | \"ltr\" | \"rtl\">(\r\n constant(\"auto\"),\r\n constant(\"ltr\"),\r\n constant(\"rtl\")\r\n )),\r\n icon: optional(string()),\r\n image: optional(string()),\r\n lang: optional(string()),\r\n renotify: optional(boolean()),\r\n requireInteraction: optional(boolean()),\r\n silent: optional(boolean()),\r\n tag: optional(string()),\r\n timestamp: optional(nonNegativeNumberDecoder),\r\n vibrate: optional(array(number()))\r\n});\r\n\r\nexport const glue42NotificationOptionsDecoder: Decoder = object({\r\n title: nonEmptyStringDecoder,\r\n clickInterop: optional(interopActionSettingsDecoder),\r\n actions: optional(array(glue42NotificationActionDecoder)),\r\n focusPlatformOnDefaultClick: optional(boolean()),\r\n badge: optional(string()),\r\n body: optional(string()),\r\n data: optional(anyJson()),\r\n dir: optional(oneOf<\"auto\" | \"ltr\" | \"rtl\">(\r\n constant(\"auto\"),\r\n constant(\"ltr\"),\r\n constant(\"rtl\")\r\n )),\r\n icon: optional(string()),\r\n image: optional(string()),\r\n lang: optional(string()),\r\n renotify: optional(boolean()),\r\n requireInteraction: optional(boolean()),\r\n silent: optional(boolean()),\r\n tag: optional(string()),\r\n timestamp: optional(nonNegativeNumberDecoder),\r\n vibrate: optional(array(number())),\r\n severity: optional(oneOf<\"Low\" | \"Medium\" | \"High\" | \"Critical\" | \"None\">(\r\n constant(\"Low\"),\r\n constant(\"None\"),\r\n constant(\"Medium\"),\r\n constant(\"High\"),\r\n constant(\"Critical\")\r\n )),\r\n showToast: optional(boolean()),\r\n showInPanel: optional(boolean())\r\n});\r\n\r\nexport const channelContextDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder,\r\n meta: object({\r\n color: nonEmptyStringDecoder\r\n }),\r\n data: optional(object()),\r\n});\r\n\r\n\r\nexport const raiseNotificationDecoder: Decoder = object({\r\n settings: glue42NotificationOptionsDecoder,\r\n id: nonEmptyStringDecoder\r\n});\r\n\r\nexport const raiseNotificationResultDecoder: Decoder = object({\r\n settings: glue42NotificationOptionsDecoder\r\n});\r\n\r\nexport const permissionRequestResultDecoder: Decoder = object({\r\n permissionGranted: boolean()\r\n});\r\n\r\nexport const permissionQueryResultDecoder: Decoder = object({\r\n permission: oneOf<\"default\" | \"granted\" | \"denied\">(\r\n constant(\"default\"),\r\n constant(\"granted\"),\r\n constant(\"denied\")\r\n )\r\n});\r\n\r\nexport const notificationEventPayloadDecoder: Decoder = object({\r\n definition: notificationDefinitionDecoder,\r\n action: optional(string()),\r\n id: optional(nonEmptyStringDecoder)\r\n});\r\n\r\nexport const platformSaveRequestConfigDecoder: Decoder = object({\r\n layoutType: oneOf<\"Global\" | \"Workspace\">(\r\n constant(\"Global\"),\r\n constant(\"Workspace\")\r\n ),\r\n layoutName: nonEmptyStringDecoder,\r\n context: optional(anyJson())\r\n});\r\n\r\nexport const saveRequestClientResponseDecoder: Decoder = object({\r\n windowContext: optional(anyJson()),\r\n});\r\n\r\nexport const permissionStateResultDecoder: Decoder = object({\r\n state: oneOf<\"prompt\" | \"granted\" | \"denied\">(\r\n constant(\"prompt\"),\r\n constant(\"denied\"),\r\n constant(\"granted\")\r\n )\r\n});\r\n\r\nexport const simpleAvailabilityResultDecoder: Decoder = object({\r\n isAvailable: boolean()\r\n});\r\n\r\nexport const simpleItemIdDecoder: Decoder = object({\r\n itemId: nonEmptyStringDecoder\r\n});\r\n\r\nexport const operationCheckResultDecoder: Decoder = object({\r\n isSupported: boolean()\r\n});\r\n\r\nexport const operationCheckConfigDecoder: Decoder = object({\r\n operation: nonEmptyStringDecoder\r\n});\r\n\r\nexport const workspaceFrameBoundsResultDecoder: Decoder = object({\r\n bounds: windowBoundsDecoder\r\n});\r\n\r\nexport const themeDecoder: Decoder = object({\r\n displayName: nonEmptyStringDecoder,\r\n name: nonEmptyStringDecoder\r\n});\r\n\r\nexport const simpleThemeResponseDecoder: Decoder = object({\r\n theme: themeDecoder\r\n});\r\n\r\nexport const allThemesResponseDecoder: Decoder = object({\r\n themes: array(themeDecoder)\r\n});\r\n\r\nexport const selectThemeConfigDecoder: Decoder = object({\r\n name: nonEmptyStringDecoder\r\n});\r\n\r\nexport const notificationsDataDecoder: Decoder = object({\r\n id: nonEmptyStringDecoder,\r\n title: nonEmptyStringDecoder,\r\n clickInterop: optional(interopActionSettingsDecoder),\r\n actions: optional(array(glue42NotificationActionDecoder)),\r\n focusPlatformOnDefaultClick: optional(boolean()),\r\n badge: optional(string()),\r\n body: optional(string()),\r\n data: optional(anyJson()),\r\n dir: optional(oneOf<\"auto\" | \"ltr\" | \"rtl\">(\r\n constant(\"auto\"),\r\n constant(\"ltr\"),\r\n constant(\"rtl\")\r\n )),\r\n icon: optional(string()),\r\n image: optional(string()),\r\n lang: optional(string()),\r\n renotify: optional(boolean()),\r\n requireInteraction: optional(boolean()),\r\n silent: optional(boolean()),\r\n tag: optional(string()),\r\n timestamp: optional(nonNegativeNumberDecoder),\r\n vibrate: optional(array(number())),\r\n severity: optional(oneOf<\"Low\" | \"Medium\" | \"High\" | \"Critical\" | \"None\">(\r\n constant(\"Low\"),\r\n constant(\"None\"),\r\n constant(\"Medium\"),\r\n constant(\"High\"),\r\n constant(\"Critical\")\r\n )),\r\n showToast: optional(boolean()),\r\n showInPanel: optional(boolean())\r\n});\r\n\r\nexport const simpleNotificationDataDecoder: Decoder = object({\r\n notification: notificationsDataDecoder\r\n});\r\n\r\nexport const allNotificationsDataDecoder: Decoder = object({\r\n notifications: array(notificationsDataDecoder)\r\n});\r\n\r\nexport const simpleNotificationSelectDecoder: Decoder = object({\r\n id: nonEmptyStringDecoder\r\n});\r\n\r\nexport const getWindowIdsOnChannelDataDecoder: Decoder<{ channel: string }> = object({\r\n channel: nonEmptyStringDecoder\r\n});\r\n\r\nexport const getWindowIdsOnChannelResultDecoder: Decoder = object({\r\n windowIds: array(nonEmptyStringDecoder)\r\n});\r\n\r\nexport const channelsOperationTypesDecoder: Decoder = oneOf<\"addChannel\" | \"getMyChannel\" | \"getWindowIdsOnChannel\" | \"getWindowIdsWithChannels\" | \"joinChannel\">(\r\n constant(\"addChannel\"),\r\n constant(\"getMyChannel\"),\r\n constant(\"getWindowIdsOnChannel\"),\r\n constant(\"getWindowIdsWithChannels\"),\r\n constant(\"joinChannel\"),\r\n);\r\n\r\nexport const getMyChanelResultDecoder: Decoder = object({\r\n channel: optional(nonEmptyStringDecoder)\r\n});\r\n\r\nexport const windowWithChannelFilterDecoder: Decoder = object({\r\n application: optional(nonEmptyStringDecoder),\r\n channels: optional(array(nonEmptyStringDecoder)),\r\n windowIds: optional(array(nonEmptyStringDecoder))\r\n});\r\n\r\nexport const wrappedWindowWithChannelFilterDecoder: Decoder = object({\r\n filter: optional(windowWithChannelFilterDecoder)\r\n});\r\n\r\nexport const getWindowIdsWithChannelsResultDecoder: Decoder = object({\r\n windowIdsWithChannels: array(object({\r\n application: nonEmptyStringDecoder,\r\n channel: optional(nonEmptyStringDecoder),\r\n windowId: nonEmptyStringDecoder\r\n }))\r\n});\r\nexport const startApplicationContextDecoder = optional(anyJson());\r\n\r\nexport const startApplicationOptionsDecoder: Decoder = optional(object({\r\n top: optional(number()),\r\n left: optional(number()),\r\n width: optional(nonNegativeNumberDecoder),\r\n height: optional(nonNegativeNumberDecoder),\r\n relativeTo: optional(nonEmptyStringDecoder),\r\n relativeDirection: optional(windowRelativeDirectionDecoder),\r\n waitForAGMReady: optional(boolean()),\r\n channelId: optional(nonEmptyStringDecoder),\r\n reuseId: optional(nonEmptyStringDecoder),\r\n}));\r\n\r\nexport const joinChannelDataDecoder: Decoder = object({\r\n channel: nonEmptyStringDecoder,\r\n windowId: nonEmptyStringDecoder\r\n});\r\n\r\nexport const windowChannelResultDecoder: Decoder = object({\r\n channel: optional(nonEmptyStringDecoder),\r\n});\r\n","import { IOConnectBrowser } from \"../../browser\";\r\nimport { openWindowConfigDecoder, coreWindowDataDecoder, windowHelloDecoder, helloSuccessDecoder, simpleWindowDecoder, windowBoundsResultDecoder, windowUrlResultDecoder, windowMoveResizeConfigDecoder, windowTitleConfigDecoder, frameWindowBoundsResultDecoder, focusEventDataDecoder, windowChannelResultDecoder } from \"../shared/decoders\";\r\nimport { BridgeOperation } from \"../shared/types\";\r\nimport { WebWindowModel } from \"./webWindow\";\r\n\r\nexport type WindowOperationTypes = \"openWindow\" | \"getBounds\" | \"getFrameBounds\" |\r\n \"windowHello\" | \"windowAdded\" | \"windowRemoved\" | \"getUrl\" |\r\n \"moveResize\" | \"focus\" | \"close\" | \"getTitle\" | \"setTitle\" | \"focusChange\" |\r\n \"getChannel\";\r\n\r\nexport const operations: { [key in WindowOperationTypes]: BridgeOperation } = {\r\n openWindow: { name: \"openWindow\", dataDecoder: openWindowConfigDecoder, resultDecoder: coreWindowDataDecoder },\r\n windowHello: { name: \"windowHello\", dataDecoder: windowHelloDecoder, resultDecoder: helloSuccessDecoder },\r\n windowAdded: { name: \"windowAdded\", dataDecoder: coreWindowDataDecoder },\r\n windowRemoved: { name: \"windowRemoved\", dataDecoder: simpleWindowDecoder },\r\n getBounds: { name: \"getBounds\", dataDecoder: simpleWindowDecoder, resultDecoder: windowBoundsResultDecoder },\r\n getFrameBounds: { name: \"getFrameBounds\", dataDecoder: simpleWindowDecoder, resultDecoder: frameWindowBoundsResultDecoder },\r\n getUrl: { name: \"getUrl\", dataDecoder: simpleWindowDecoder, resultDecoder: windowUrlResultDecoder },\r\n moveResize: { name: \"moveResize\", dataDecoder: windowMoveResizeConfigDecoder },\r\n focus: { name: \"focus\", dataDecoder: simpleWindowDecoder },\r\n close: { name: \"close\", dataDecoder: simpleWindowDecoder },\r\n getTitle: { name: \"getTitle\", dataDecoder: simpleWindowDecoder, resultDecoder: windowTitleConfigDecoder },\r\n setTitle: { name: \"setTitle\", dataDecoder: windowTitleConfigDecoder },\r\n focusChange: { name: \"focusChange\", dataDecoder: focusEventDataDecoder },\r\n getChannel: { name: \"getChannel\", dataDecoder: simpleWindowDecoder, resultDecoder: windowChannelResultDecoder },\r\n};\r\n\r\nexport interface WindowProjection {\r\n id: string;\r\n model: WebWindowModel;\r\n api: IOConnectBrowser.Windows.WebWindow;\r\n}\r\n\r\nexport interface WindowHello {\r\n windowId?: string;\r\n}\r\n\r\nexport interface OpenWindowConfig {\r\n name: string;\r\n url: string;\r\n options?: IOConnectBrowser.Windows.Settings;\r\n}\r\n\r\nexport interface FocusEventData {\r\n windowId: string;\r\n hasFocus: boolean;\r\n}\r\n\r\nexport interface SimpleWindowCommand {\r\n windowId: string;\r\n}\r\n\r\nexport interface WindowTitleConfig {\r\n windowId: string;\r\n title: string;\r\n}\r\n\r\nexport interface WindowMoveResizeConfig {\r\n windowId: string;\r\n top?: number;\r\n left?: number;\r\n width?: number;\r\n height?: number;\r\n relative?: boolean;\r\n}\r\n\r\nexport interface HelloSuccess {\r\n windows: CoreWindowData[];\r\n isWorkspaceFrame: boolean;\r\n}\r\n\r\nexport interface CoreWindowData {\r\n windowId: string;\r\n name: string;\r\n}\r\n\r\nexport interface WindowBoundsResult {\r\n windowId: string;\r\n bounds: IOConnectBrowser.Windows.Bounds;\r\n}\r\n\r\nexport interface FrameWindowBoundsResult {\r\n bounds: IOConnectBrowser.Windows.Bounds;\r\n}\r\n\r\nexport interface WindowUrlResult {\r\n windowId: string;\r\n url: string;\r\n}\r\n\r\nexport interface WindowChannelResult {\r\n channel?: string;\r\n}\r\n","\"use strict\";\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\n;\ncreateRegistry.default = createRegistry;\nmodule.exports = createRegistry;\n//# sourceMappingURL=index.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { number } from \"decoder-validate\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\nimport { GlueBridge } from \"../communication/bridge\";\r\nimport { anyDecoder, boundsDecoder, nonEmptyStringDecoder, nonNegativeNumberDecoder } from \"../shared/decoders\";\r\nimport { operations, SimpleWindowCommand, WindowBoundsResult, WindowChannelResult, WindowMoveResizeConfig, WindowTitleConfig, WindowUrlResult } from \"./protocol\";\r\nimport {\r\n default as CallbackRegistryFactory,\r\n CallbackRegistry,\r\n UnsubscribeFunction,\r\n} from \"callback-registry\";\r\n\r\nexport class WebWindowModel {\r\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\r\n private readonly myCtxKey: string;\r\n private ctxUnsubscribe: UnsubscribeFunction | undefined;\r\n private me!: IOConnectBrowser.Windows.WebWindow;\r\n\r\n constructor(private readonly _id: string, private readonly _name: string, private readonly _bridge: GlueBridge) {\r\n this.myCtxKey = `___window___${this.id}`;\r\n }\r\n\r\n public get id(): string {\r\n return this._id.slice();\r\n }\r\n\r\n public get name(): string {\r\n return this._name.slice();\r\n }\r\n\r\n public clean(): void {\r\n if (this.ctxUnsubscribe) {\r\n this.ctxUnsubscribe();\r\n }\r\n }\r\n\r\n public processSelfFocusEvent(hasFocus: boolean): void {\r\n this.me.isFocused = hasFocus;\r\n\r\n this.registry.execute(\"focus-change\", this.me);\r\n }\r\n\r\n public async toApi(): Promise {\r\n\r\n this.ctxUnsubscribe = await this._bridge.contextLib.subscribe(this.myCtxKey, (data) => this.registry.execute(\"context-updated\", data));\r\n\r\n this.me = {\r\n id: this.id,\r\n name: this.name,\r\n isFocused: false,\r\n getURL: this.getURL.bind(this),\r\n moveResize: this.moveResize.bind(this),\r\n resizeTo: this.resizeTo.bind(this),\r\n moveTo: this.moveTo.bind(this),\r\n focus: this.focus.bind(this),\r\n close: this.close.bind(this),\r\n getTitle: this.getTitle.bind(this),\r\n setTitle: this.setTitle.bind(this),\r\n getBounds: this.getBounds.bind(this),\r\n getContext: this.getContext.bind(this),\r\n updateContext: this.updateContext.bind(this),\r\n setContext: this.setContext.bind(this),\r\n onContextUpdated: this.onContextUpdated.bind(this),\r\n onFocusChanged: this.onFocusChanged.bind(this),\r\n getChannel: this.getChannel.bind(this),\r\n };\r\n\r\n return this.me;\r\n }\r\n\r\n private async getURL(): Promise {\r\n const result = await this._bridge.send(\"windows\", operations.getUrl, { windowId: this.id });\r\n return result.url;\r\n }\r\n\r\n private onFocusChanged(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to context changes, because the provided callback is not a function!\");\r\n }\r\n\r\n return this.registry.add(\"focus-change\", callback);\r\n }\r\n\r\n private async moveResize(dimension: Partial): Promise {\r\n const targetBounds = boundsDecoder.runWithException(dimension);\r\n\r\n const commandArgs = Object.assign({}, targetBounds, { windowId: this.id, relative: false });\r\n\r\n await this._bridge.send(\"windows\", operations.moveResize, commandArgs);\r\n\r\n return this.me;\r\n }\r\n\r\n private async resizeTo(width?: number, height?: number): Promise {\r\n if (typeof width === \"undefined\" && typeof height === \"undefined\") {\r\n return this.me;\r\n }\r\n\r\n if (typeof width !== \"undefined\") {\r\n nonNegativeNumberDecoder.runWithException(width);\r\n }\r\n\r\n if (typeof height !== \"undefined\") {\r\n nonNegativeNumberDecoder.runWithException(height);\r\n }\r\n\r\n const commandArgs = Object.assign({}, { width, height }, { windowId: this.id, relative: true });\r\n\r\n await this._bridge.send(\"windows\", operations.moveResize, commandArgs);\r\n\r\n return this.me;\r\n }\r\n\r\n private async moveTo(top?: number, left?: number): Promise {\r\n if (typeof top === \"undefined\" && typeof left === \"undefined\") {\r\n return this.me;\r\n }\r\n\r\n if (typeof top !== \"undefined\") {\r\n number().runWithException(top);\r\n }\r\n\r\n if (typeof left !== \"undefined\") {\r\n number().runWithException(left);\r\n }\r\n\r\n const commandArgs = Object.assign({}, { top, left }, { windowId: this.id, relative: true });\r\n\r\n await this._bridge.send(\"windows\", operations.moveResize, commandArgs);\r\n\r\n return this.me;\r\n }\r\n\r\n private async focus(): Promise {\r\n if (this.name === \"Platform\") {\r\n window.open(undefined, this.id);\r\n } else {\r\n await this._bridge.send(\"windows\", operations.focus, { windowId: this.id });\r\n }\r\n\r\n return this.me;\r\n }\r\n\r\n private async close(): Promise {\r\n await this._bridge.send(\"windows\", operations.close, { windowId: this.id });\r\n\r\n return this.me;\r\n }\r\n\r\n private async getTitle(): Promise {\r\n const result = await this._bridge.send(\"windows\", operations.getTitle, { windowId: this.id });\r\n\r\n return result.title;\r\n }\r\n\r\n private async setTitle(title: string): Promise {\r\n const ttl = nonEmptyStringDecoder.runWithException(title);\r\n\r\n await this._bridge.send(\"windows\", operations.setTitle, { windowId: this.id, title: ttl });\r\n\r\n return this.me;\r\n }\r\n\r\n private async getBounds(): Promise {\r\n const result = await this._bridge.send(\"windows\", operations.getBounds, { windowId: this.id });\r\n\r\n return result.bounds;\r\n }\r\n\r\n private async getContext(): Promise {\r\n const ctx = await this._bridge.contextLib.get(this.myCtxKey);\r\n return ctx;\r\n }\r\n\r\n private async updateContext(context: any): Promise {\r\n const ctx = anyDecoder.runWithException(context);\r\n\r\n await this._bridge.contextLib.update(this.myCtxKey, ctx);\r\n\r\n return this.me;\r\n }\r\n\r\n private async setContext(context: any): Promise {\r\n const ctx = anyDecoder.runWithException(context);\r\n\r\n await this._bridge.contextLib.set(this.myCtxKey, ctx);\r\n\r\n return this.me;\r\n }\r\n\r\n private onContextUpdated(callback: (context: any, window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to context changes, because the provided callback is not a function!\");\r\n }\r\n\r\n const wrappedCallback = (data: any): void => {\r\n callback(data, this.me);\r\n };\r\n\r\n return this.registry.add(\"context-updated\", wrappedCallback);\r\n }\r\n\r\n private async getChannel(): Promise {\r\n const result = await this._bridge.send(\"windows\", operations.getChannel, { windowId: this.id }, undefined, { includeOperationCheck: true });\r\n\r\n return result.channel as string;\r\n }\r\n}\r\n","import { operationCheckConfigDecoder, operationCheckResultDecoder, simpleItemIdDecoder, workspaceFrameBoundsResultDecoder } from \"./decoders\";\r\nimport { BridgeOperation } from \"./types\";\r\n\r\nexport type SystemOperationTypes = \"operationCheck\" | \"getWorkspaceWindowFrameBounds\";\r\n\r\nexport const systemOperations: { [key in SystemOperationTypes]: BridgeOperation } = {\r\n operationCheck: { name: \"operationCheck\", dataDecoder: operationCheckConfigDecoder, resultDecoder: operationCheckResultDecoder },\r\n getWorkspaceWindowFrameBounds: { name: \"getWorkspaceWindowFrameBounds\", resultDecoder: workspaceFrameBoundsResultDecoder, dataDecoder: simpleItemIdDecoder }\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nexport const PromiseWrap = (promise: () => Promise, timeoutMilliseconds: number, timeoutMessage?: string): Promise => {\r\n return new Promise((resolve, reject) => {\r\n\r\n let promiseActive = true;\r\n\r\n const timeout = setTimeout(() => {\r\n if (!promiseActive) {\r\n return;\r\n }\r\n promiseActive = false;\r\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\r\n\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n\r\n promise()\r\n .then((result) => {\r\n if (!promiseActive) {\r\n return;\r\n }\r\n promiseActive = false;\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch((error) => {\r\n if (!promiseActive) {\r\n return;\r\n }\r\n promiseActive = false;\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n};\r\n\r\nexport const PromisePlus = (executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void, timeoutMilliseconds: number, timeoutMessage?: string): Promise => {\r\n\r\n return new Promise((resolve, reject) => {\r\n const timeout = setTimeout(() => {\r\n\r\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\r\n\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n\r\n const providedPromise = new Promise(executor);\r\n\r\n providedPromise\r\n .then((result) => {\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch((error) => {\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n\r\n};\r\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { IOConnectCore } from \"@interopio/core\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\nimport { GlueBridge } from \"../communication/bridge\";\r\nimport { nonEmptyStringDecoder, windowOpenSettingsDecoder, windowOperationTypesDecoder } from \"../shared/decoders\";\r\nimport { LibController, OperationCheckConfig, OperationCheckResult } from \"../shared/types\";\r\nimport { HelloSuccess, OpenWindowConfig, CoreWindowData, WindowHello, operations, WindowBoundsResult, WindowTitleConfig, WindowUrlResult, WindowMoveResizeConfig, WindowProjection, FocusEventData, WindowChannelResult } from \"./protocol\";\r\nimport {\r\n default as CallbackRegistryFactory,\r\n CallbackRegistry,\r\n UnsubscribeFunction,\r\n} from \"callback-registry\";\r\nimport { IoC } from \"../shared/ioc\";\r\nimport { systemOperations } from \"../shared/systemOperations\";\r\nimport { PromisePlus } from \"../shared/promise-plus\";\r\nimport { ChannelsController } from \"../channels/controller\";\r\n\r\nexport class WindowsController implements LibController {\r\n\r\n private focusEventHandler?: () => void;\r\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\r\n private platformRegistration!: Promise;\r\n private ioc!: IoC;\r\n private bridge!: GlueBridge;\r\n private publicWindowId!: string;\r\n private allWindowProjections: WindowProjection[] = [];\r\n private me?: IOConnectBrowser.Windows.WebWindow;\r\n private logger!: IOConnectBrowser.Logger.API;\r\n private isWorkspaceFrame?: boolean;\r\n private instanceId!: string;\r\n private channelsController!: ChannelsController;\r\n\r\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\r\n\r\n this.logger = coreGlue.logger.subLogger(\"windows.controller.web\");\r\n\r\n this.logger.trace(\"starting the web windows controller\");\r\n\r\n this.publicWindowId = ioc.publicWindowId;\r\n\r\n this.addWindowOperationExecutors();\r\n\r\n this.ioc = ioc;\r\n this.bridge = ioc.bridge;\r\n this.instanceId = coreGlue.interop.instance.instance as string;\r\n\r\n this.channelsController = ioc.channelsController;\r\n\r\n this.logger.trace(`set the public window id: ${this.publicWindowId}, set the bridge operations and ioc, registering with the platform now`);\r\n\r\n this.platformRegistration = this.registerWithPlatform();\r\n\r\n await this.platformRegistration;\r\n\r\n await this.initializeFocusTracking();\r\n\r\n this.logger.trace(\"registration with the platform successful, attaching the windows property to glue and returning\");\r\n\r\n const api = this.toApi();\r\n\r\n (coreGlue as IOConnectBrowser.API).windows = api;\r\n }\r\n\r\n public handlePlatformShutdown(): void {\r\n this.registry.clear();\r\n this.allWindowProjections = [];\r\n\r\n if (!this.focusEventHandler) {\r\n return;\r\n }\r\n\r\n document.removeEventListener(\"visibilityChange\", this.focusEventHandler);\r\n window.removeEventListener(\"focus\", this.focusEventHandler);\r\n window.removeEventListener(\"blur\", this.focusEventHandler);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public async handleBridgeMessage(args: any): Promise {\r\n await this.platformRegistration;\r\n\r\n const operationName = windowOperationTypesDecoder.runWithException(args.operation);\r\n\r\n const operation = operations[operationName];\r\n\r\n if (!operation.execute) {\r\n return;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n let operationData: any = args.data;\r\n\r\n if (operation.dataDecoder) {\r\n operationData = operation.dataDecoder.runWithException(args.data);\r\n }\r\n\r\n return await operation.execute(operationData);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private async open(name: string, url: string, options?: IOConnectBrowser.Windows.Settings): Promise {\r\n nonEmptyStringDecoder.runWithException(name);\r\n nonEmptyStringDecoder.runWithException(url);\r\n // layoutComponentId is a hidden property for global layouts\r\n const settings = windowOpenSettingsDecoder.runWithException(options);\r\n\r\n const windowSuccess = await this.bridge.send(\"windows\", operations.openWindow, { name, url, options: settings });\r\n\r\n return this.waitForWindowAdded(windowSuccess.windowId);\r\n }\r\n\r\n private list(): IOConnectBrowser.Windows.WebWindow[] {\r\n return this.allWindowProjections.map((projection) => projection.api);\r\n }\r\n\r\n public findById(id: string): IOConnectBrowser.Windows.WebWindow | undefined {\r\n nonEmptyStringDecoder.runWithException(id);\r\n\r\n return this.allWindowProjections.find((projection) => projection.id === id)?.api;\r\n }\r\n\r\n private toApi(): IOConnectBrowser.Windows.API {\r\n return {\r\n open: this.open.bind(this),\r\n my: this.my.bind(this),\r\n list: this.list.bind(this),\r\n findById: this.findById.bind(this),\r\n onWindowAdded: this.onWindowAdded.bind(this),\r\n onWindowRemoved: this.onWindowRemoved.bind(this),\r\n onWindowGotFocus: this.onWindowGotFocus.bind(this),\r\n onWindowLostFocus: this.onWindowLostFocus.bind(this)\r\n };\r\n }\r\n\r\n private addWindowOperationExecutors(): void {\r\n operations.focusChange.execute = this.handleFocusChangeEvent.bind(this);\r\n operations.windowAdded.execute = this.handleWindowAdded.bind(this);\r\n operations.windowRemoved.execute = this.handleWindowRemoved.bind(this);\r\n operations.getBounds.execute = this.handleGetBounds.bind(this);\r\n operations.getFrameBounds.execute = this.handleGetBounds.bind(this);\r\n operations.getTitle.execute = this.handleGetTitle.bind(this);\r\n operations.getUrl.execute = this.handleGetUrl.bind(this);\r\n operations.moveResize.execute = this.handleMoveResize.bind(this);\r\n operations.setTitle.execute = this.handleSetTitle.bind(this);\r\n operations.getChannel.execute = this.handleGetChannel.bind(this);\r\n }\r\n\r\n public my(): IOConnectBrowser.Windows.WebWindow {\r\n return Object.assign({}, this.me);\r\n }\r\n\r\n private onWindowAdded(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to window added, because the provided callback is not a function!\");\r\n }\r\n\r\n return this.registry.add(\"window-added\", callback);\r\n }\r\n\r\n private onWindowRemoved(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to window removed, because the provided callback is not a function!\");\r\n }\r\n\r\n return this.registry.add(\"window-removed\", callback);\r\n }\r\n\r\n private onWindowGotFocus(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to onWindowGotFocus, because the provided callback is not a function!\");\r\n }\r\n\r\n return this.registry.add(\"window-got-focus\", callback);\r\n }\r\n\r\n private onWindowLostFocus(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to onWindowLostFocus, because the provided callback is not a function!\");\r\n }\r\n\r\n return this.registry.add(\"window-lost-focus\", callback);\r\n }\r\n\r\n private async sayHello(): Promise {\r\n const helloSuccess = await this.bridge.send(\"windows\", operations.windowHello, { windowId: this.publicWindowId });\r\n\r\n return helloSuccess;\r\n }\r\n\r\n private async registerWithPlatform(): Promise {\r\n\r\n const { windows, isWorkspaceFrame } = await this.sayHello();\r\n\r\n this.isWorkspaceFrame = isWorkspaceFrame;\r\n\r\n this.logger.trace(\"the platform responded to the hello message\");\r\n\r\n // if I am an iframe, I am not considered a Glue Window\r\n if (!this.isWorkspaceFrame && this.publicWindowId) {\r\n this.logger.trace(\"i am not treated as a workspace frame, setting my window\");\r\n\r\n const myWindow = windows.find((w) => w.windowId === this.publicWindowId);\r\n\r\n if (!myWindow) {\r\n throw new Error(\"Cannot initialize the window library, because I received no information about me from the platform\");\r\n }\r\n\r\n const myProjection = await this.ioc.buildWebWindow(this.publicWindowId, myWindow.name);\r\n\r\n this.me = myProjection.api;\r\n\r\n this.allWindowProjections.push(myProjection);\r\n }\r\n\r\n const currentWindows = await Promise.all(windows\r\n .filter((w) => w.windowId !== this.publicWindowId)\r\n .map((w) => this.ioc.buildWebWindow(w.windowId, w.name))\r\n );\r\n\r\n this.logger.trace(\"all windows projections are completed, building the list collection\");\r\n\r\n this.allWindowProjections.push(...currentWindows);\r\n }\r\n\r\n private async handleFocusChangeEvent(focusData: FocusEventData): Promise {\r\n const foundProjection = this.allWindowProjections.find((projection) => projection.id === focusData.windowId);\r\n\r\n if (!foundProjection) {\r\n return;\r\n }\r\n\r\n foundProjection.model.processSelfFocusEvent(focusData.hasFocus);\r\n\r\n const keyToExecute = focusData.hasFocus ? \"window-got-focus\" : \"window-lost-focus\";\r\n\r\n this.registry.execute(keyToExecute, foundProjection.api);\r\n }\r\n\r\n private async handleWindowAdded(data: CoreWindowData): Promise {\r\n if (this.allWindowProjections.some((projection) => projection.id === data.windowId)) {\r\n return;\r\n }\r\n\r\n const webWindowProjection = await this.ioc.buildWebWindow(data.windowId, data.name);\r\n this.allWindowProjections.push(webWindowProjection);\r\n\r\n this.registry.execute(\"window-added\", webWindowProjection.api);\r\n }\r\n\r\n private async handleWindowRemoved(data: CoreWindowData): Promise {\r\n const removed = this.allWindowProjections.find((w) => w.id === data.windowId);\r\n\r\n if (!removed) {\r\n return;\r\n }\r\n\r\n this.allWindowProjections = this.allWindowProjections.filter((w) => w.id !== data.windowId);\r\n\r\n removed.model.clean();\r\n\r\n this.registry.execute(\"window-removed\", removed.api);\r\n }\r\n\r\n private async handleGetBounds(): Promise {\r\n\r\n if (!this.me && !this.isWorkspaceFrame) {\r\n throw new Error(\"This window cannot report it's bounds, because it is not a Glue Window, most likely because it is an iframe\");\r\n }\r\n\r\n // this.me is optional, because this handler responds to a workspace frame bounds request and the frame is not a regular GD window\r\n return {\r\n windowId: this.isWorkspaceFrame ? \"noop\" : this.me!.id,\r\n bounds: {\r\n top: window.screenTop,\r\n left: window.screenLeft,\r\n width: window.innerWidth,\r\n height: window.innerHeight\r\n }\r\n };\r\n }\r\n\r\n private async handleGetTitle(): Promise {\r\n\r\n if (!this.me) {\r\n throw new Error(\"This window cannot report it's title, because it is not a Glue Window, most likely because it is an iframe\");\r\n }\r\n\r\n return {\r\n windowId: this.me.id,\r\n title: document.title\r\n };\r\n }\r\n\r\n private async handleGetUrl(): Promise {\r\n\r\n if (!this.me) {\r\n throw new Error(\"This window cannot report it's url, because it is not a Glue Window, most likely because it is an iframe\");\r\n }\r\n\r\n return {\r\n windowId: this.me.id,\r\n url: window.location.href\r\n };\r\n }\r\n\r\n private async handleMoveResize(config: WindowMoveResizeConfig): Promise {\r\n\r\n const targetTop = typeof config.top === \"number\" ? config.top :\r\n config.relative ? 0 : window.screenTop;\r\n\r\n const targetLeft = typeof config.left === \"number\" ? config.left :\r\n config.relative ? 0 : window.screenLeft;\r\n\r\n const targetHeight = typeof config.height === \"number\" ? config.height :\r\n config.relative ? 0 : window.innerHeight;\r\n\r\n const targetWidth = typeof config.width === \"number\" ? config.width :\r\n config.relative ? 0 : window.innerWidth;\r\n\r\n const moveMethod = config.relative ? window.moveBy : window.moveTo;\r\n const resizeMethod = config.relative ? window.resizeBy : window.resizeTo;\r\n\r\n moveMethod(targetLeft, targetTop);\r\n resizeMethod(targetWidth, targetHeight);\r\n }\r\n\r\n private async handleSetTitle(config: WindowTitleConfig): Promise {\r\n document.title = config.title;\r\n }\r\n\r\n private async initializeFocusTracking(): Promise {\r\n\r\n if (this.isWorkspaceFrame) {\r\n this.logger.trace(\"Ignoring the focus tracking, because this client is a workspace frame\");\r\n return;\r\n }\r\n\r\n try {\r\n await this.bridge.send(\"windows\", systemOperations.operationCheck, { operation: \"focusChange\" });\r\n } catch (error) {\r\n this.logger.warn(\"The platform of this client is outdated and does not support focus tracking, disabling focus events for this client.\");\r\n return;\r\n }\r\n\r\n const hasFocus = document.hasFocus();\r\n\r\n // every window when opened gaines focus\r\n await this.transmitFocusChange(true);\r\n\r\n if (!hasFocus) {\r\n // manual focus lost announce in case focus was lost while Web was initializing\r\n await this.transmitFocusChange(false);\r\n }\r\n\r\n this.defineEventListeners();\r\n }\r\n\r\n private processFocusEvent(): void {\r\n const hasFocus = document.hasFocus();\r\n\r\n this.transmitFocusChange(hasFocus);\r\n }\r\n\r\n private waitForWindowAdded(windowId: string): Promise {\r\n\r\n const foundWindow = this.allWindowProjections.find((projection) => projection.id === windowId);\r\n\r\n if (foundWindow) {\r\n return Promise.resolve(foundWindow.api);\r\n }\r\n\r\n return PromisePlus((resolve) => {\r\n const unsubscribe = this.onWindowAdded((addedWindow) => {\r\n if (addedWindow.id === windowId) {\r\n unsubscribe();\r\n resolve(addedWindow);\r\n }\r\n });\r\n }, 30000, `Timed out waiting for ${windowId} to be announced`);\r\n }\r\n\r\n private async transmitFocusChange(hasFocus: boolean): Promise {\r\n\r\n const eventData: FocusEventData = {\r\n windowId: this.me?.id || `iframe-${this.instanceId}`,\r\n hasFocus\r\n };\r\n\r\n if (this.me) {\r\n this.me.isFocused = hasFocus;\r\n }\r\n\r\n await this.bridge.send(\"windows\", operations.focusChange, eventData);\r\n }\r\n\r\n private defineEventListeners(): void {\r\n\r\n this.focusEventHandler = this.processFocusEvent.bind(this);\r\n\r\n document.addEventListener(\"visibilityChange\", this.focusEventHandler);\r\n window.addEventListener(\"focus\", this.focusEventHandler);\r\n window.addEventListener(\"blur\", this.focusEventHandler);\r\n }\r\n\r\n private async handleGetChannel(): Promise {\r\n\r\n if (!this.me) {\r\n throw new Error(\"This window cannot report it's channel, because it is not a Glue Window, most likely because it is an iframe\");\r\n }\r\n\r\n const channel = this.channelsController.my();\r\n\r\n return {\r\n ...(channel ? { channel } : {}),\r\n };\r\n }\r\n}\r\n","export const GlueWebPlatformControlName = \"T42.Web.Platform.Control\";\r\n\r\nexport const GlueWebPlatformStreamName = \"T42.Web.Platform.Stream\";\r\n\r\nexport const GlueClientControlName = \"T42.Web.Client.Control\";\r\n\r\nexport const GlueCorePlusThemesStream = \"T42.Core.Plus.Themes.Stream\";","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { IOConnectCore } from \"@interopio/core\";\r\nimport { libDomainDecoder } from \"../shared/decoders\";\r\nimport { PromisePlus } from \"../shared/promise-plus\";\r\nimport { systemOperations } from \"../shared/systemOperations\";\r\nimport { BridgeOperation, LibController, LibDomains, OperationCheckConfig, OperationCheckResult } from \"../shared/types\";\r\nimport { GlueClientControlName, GlueCorePlusThemesStream, GlueWebPlatformControlName, GlueWebPlatformStreamName } from \"./constants\";\r\n\r\nexport class GlueBridge {\r\n private readonly platformMethodTimeoutMs = 10000;\r\n private controllers!: { [key in LibDomains]: LibController };\r\n private sub!: IOConnectCore.AGM.Subscription;\r\n private running?: boolean;\r\n\r\n constructor(private readonly coreGlue: IOConnectCore.API, private readonly communicationId: string) {}\r\n\r\n public get contextLib(): IOConnectCore.Contexts.API {\r\n return this.coreGlue.contexts;\r\n }\r\n\r\n public get interopInstance(): string | undefined {\r\n return this.coreGlue.interop.instance.instance;\r\n }\r\n\r\n public async stop(): Promise {\r\n this.running = false;\r\n this.sub.close();\r\n await this.coreGlue.interop.unregister(GlueClientControlName);\r\n }\r\n\r\n public async start(controllers: { [key in LibDomains]: LibController }): Promise {\r\n this.running = true;\r\n this.controllers = controllers;\r\n\r\n await Promise.all([\r\n this.checkWaitMethod(GlueWebPlatformControlName),\r\n this.checkWaitMethod(GlueWebPlatformStreamName)\r\n ]);\r\n\r\n // this systemId will be missing if the platform is older than 1.12.X\r\n const systemId = this.communicationId;\r\n\r\n const [sub] = await Promise.all([\r\n this.coreGlue.interop.subscribe(GlueWebPlatformStreamName, systemId ? { target: { instance: this.communicationId } } : undefined),\r\n this.coreGlue.interop.registerAsync(GlueClientControlName, (args, _, success, error) => this.passMessageController(args, success, error))\r\n ]);\r\n\r\n this.sub = sub;\r\n\r\n this.sub.onData((pkg) => this.passMessageController(pkg.data));\r\n }\r\n\r\n public getInteropInstance(windowId: string): IOConnectCore.Interop.Instance {\r\n const result = this.coreGlue.interop.servers().find((s) => s.windowId && s.windowId === windowId);\r\n\r\n return {\r\n application: result?.application,\r\n applicationName: result?.applicationName,\r\n peerId: result?.peerId,\r\n instance: result?.instance,\r\n windowId: result?.windowId\r\n };\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n public async send(domain: LibDomains, operation: BridgeOperation, operationData: OutBound, options?: IOConnectCore.AGM.InvokeOptions, webOptions?: { includeOperationCheck?: boolean }): Promise {\r\n\r\n if (operation.dataDecoder) {\r\n try {\r\n operation.dataDecoder.runWithException(operationData);\r\n } catch (error: any) {\r\n throw new Error(`Unexpected Web->Platform outgoing validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`);\r\n }\r\n }\r\n\r\n const operationSupported = webOptions?.includeOperationCheck ? \r\n (await this.checkOperationSupported(domain, operation)).isSupported :\r\n true;\r\n\r\n if (!operationSupported) {\r\n throw new Error(`Cannot complete operation: ${operation.name} for domain: ${domain} because this client is connected to a platform which does not support it`);\r\n }\r\n\r\n try {\r\n const operationResult = await this.transmitMessage(domain, operation, operationData, options);\r\n\r\n if (operation.resultDecoder) {\r\n operation.resultDecoder.runWithException(operationResult);\r\n }\r\n\r\n return operationResult;\r\n\r\n } catch (error: any) {\r\n if (error.kind) {\r\n throw new Error(`Unexpected Web<-Platform incoming validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`);\r\n }\r\n throw new Error(error.message);\r\n }\r\n }\r\n\r\n public async createNotificationsSteam(): Promise {\r\n const streamExists = this.coreGlue.interop.methods().some((method) => method.name === GlueCorePlusThemesStream);\r\n\r\n if (!streamExists) {\r\n throw new Error(\"Cannot subscribe to theme changes, because the underlying interop stream does not exist. Most likely this is the case when this client is not connected to Core Plus.\");\r\n }\r\n\r\n return this.coreGlue.interop.subscribe(GlueCorePlusThemesStream, this.communicationId ? { target: { instance: this.communicationId } } : undefined);\r\n }\r\n\r\n private async checkOperationSupported(domain: LibDomains, operation: BridgeOperation): Promise {\r\n try {\r\n const result = await this.send(domain, systemOperations.operationCheck, { operation: operation.name });\r\n\r\n return result;\r\n } catch (error) {\r\n return { isSupported: false };\r\n }\r\n }\r\n\r\n private checkWaitMethod(name: string): Promise {\r\n return PromisePlus((resolve) => {\r\n\r\n const hasMethod = this.coreGlue.interop.methods().some((method) => {\r\n const nameMatch = method.name === name;\r\n\r\n const serverMatch = this.communicationId ?\r\n method.getServers().some((server) => server.instance === this.communicationId) :\r\n true;\r\n\r\n return nameMatch && serverMatch;\r\n });\r\n\r\n if (hasMethod) {\r\n return resolve();\r\n }\r\n\r\n const unSub = this.coreGlue.interop.serverMethodAdded((data) => {\r\n const method = data.method;\r\n const server = data.server;\r\n\r\n const serverMatch = this.communicationId ?\r\n server.instance === this.communicationId :\r\n true;\r\n\r\n if (method.name === name && serverMatch) {\r\n unSub();\r\n resolve();\r\n }\r\n });\r\n\r\n }, this.platformMethodTimeoutMs, `Cannot initiate Glue Web, because a system method's discovery timed out: ${name}`);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private passMessageController(args: any, success?: (args?: any) => void, error?: (error?: string | object | undefined) => void): void {\r\n const decodeResult = libDomainDecoder.run(args.domain);\r\n\r\n if (!decodeResult.ok) {\r\n if (error) {\r\n error(`Cannot execute this client control, because of domain validation error: ${JSON.stringify(decodeResult.error)}`);\r\n }\r\n return;\r\n }\r\n\r\n const domain = decodeResult.result;\r\n\r\n this.controllers[domain]\r\n .handleBridgeMessage(args)\r\n .then((resolutionData: unknown) => {\r\n if (success) {\r\n success(resolutionData);\r\n }\r\n })\r\n .catch((err: string | object | undefined) => {\r\n if (error) {\r\n error(err);\r\n }\r\n console.warn(err);\r\n });\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private async transmitMessage(domain: string, operation: BridgeOperation, data: any, options?: IOConnectCore.AGM.InvokeOptions): Promise {\r\n\r\n const messageData = { domain, data, operation: operation.name };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let invocationResult: IOConnectCore.Interop.InvocationResult;\r\n\r\n const baseErrorMessage = `Internal Platform Communication Error. Attempted operation: ${JSON.stringify(operation.name)} with data: ${JSON.stringify(data)}. `;\r\n\r\n const systemId = this.communicationId;\r\n\r\n try {\r\n\r\n if (!this.running) {\r\n throw new Error(\"Cannot send a control message, because the platform shut down\");\r\n }\r\n\r\n invocationResult = await this.coreGlue.interop.invoke(GlueWebPlatformControlName, messageData, systemId ? { instance: this.communicationId } : undefined, options);\r\n\r\n if (!invocationResult) {\r\n throw new Error(\"Received unsupported result from the platform - empty result\");\r\n }\r\n\r\n if (!Array.isArray(invocationResult.all_return_values) || invocationResult.all_return_values.length === 0) {\r\n throw new Error(\"Received unsupported result from the platform - empty values collection\");\r\n }\r\n\r\n } catch (error: any) {\r\n if (error && error.all_errors && error.all_errors.length) {\r\n // IMPORTANT: Do NOT change the `Inner message:` string, because it is used by other programs to extract the inner message of a communication error\r\n const invocationErrorMessage = error.all_errors[0].message;\r\n throw new Error(`${baseErrorMessage} -> Inner message: ${invocationErrorMessage}`);\r\n\r\n }\r\n // IMPORTANT: Do NOT change the `Inner message:` string, because it is used by other programs to extract the inner message of a communication error\r\n throw new Error(`${baseErrorMessage} -> Inner message: ${error.message}`);\r\n }\r\n\r\n return invocationResult.all_return_values[0].returned;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { IOConnectBrowser } from \"../../browser\";\r\nimport { appDirectoryStateChangeDecoder, appHelloSuccessDecoder, applicationStartConfigDecoder, appRemoveConfigDecoder, appsExportOperationDecoder, basicInstanceDataDecoder, instanceDataDecoder, windowHelloDecoder } from \"../shared/decoders\";\r\nimport { BridgeOperation } from \"../shared/types\";\r\n\r\nexport type AppManagerOperationTypes = \"appHello\" | \"appDirectoryStateChange\" | \"instanceStarted\" | \"instanceStopped\" |\r\n \"applicationStart\" | \"instanceStop\" | \"import\" | \"remove\" | \"export\" | \"clear\";\r\n\r\nexport const operations: { [key in AppManagerOperationTypes]: BridgeOperation } = {\r\n appHello: { name: \"appHello\", dataDecoder: windowHelloDecoder, resultDecoder: appHelloSuccessDecoder },\r\n appDirectoryStateChange: { name: \"appDirectoryStateChange\", dataDecoder: appDirectoryStateChangeDecoder },\r\n instanceStarted: { name: \"instanceStarted\", dataDecoder: instanceDataDecoder },\r\n instanceStopped: { name: \"instanceStopped\", dataDecoder: instanceDataDecoder },\r\n applicationStart: { name: \"applicationStart\", dataDecoder: applicationStartConfigDecoder, resultDecoder: instanceDataDecoder },\r\n instanceStop: { name: \"instanceStop\", dataDecoder: basicInstanceDataDecoder },\r\n import: { name: \"import\" },\r\n remove: { name: \"remove\", dataDecoder: appRemoveConfigDecoder },\r\n export: { name: \"export\", resultDecoder: appsExportOperationDecoder },\r\n clear: { name: \"clear\" }\r\n};\r\n\r\nexport interface InstanceData {\r\n id: string;\r\n applicationName: string;\r\n}\r\n\r\nexport interface BaseApplicationData {\r\n name: string;\r\n type: string;\r\n userProperties: any;\r\n title?: string;\r\n version?: string;\r\n icon?: string;\r\n caption?: string;\r\n}\r\n\r\nexport interface ApplicationData extends BaseApplicationData {\r\n instances: InstanceData[];\r\n}\r\n\r\nexport interface AppDirectoryStateChange {\r\n appsAdded: BaseApplicationData[];\r\n appsChanged: BaseApplicationData[];\r\n appsRemoved: BaseApplicationData[];\r\n}\r\n\r\nexport interface AppRemoveConfig {\r\n name: string;\r\n}\r\n\r\nexport interface AppsExportOperation {\r\n definitions: IOConnectBrowser.AppManager.Definition[];\r\n}\r\n\r\nexport interface AppsImportOperation {\r\n definitions: Array;\r\n mode: \"replace\" | \"merge\";\r\n}\r\n\r\nexport interface AppHelloSuccess {\r\n apps: ApplicationData[];\r\n initialChannelId?: string;\r\n}\r\n\r\nexport interface ApplicationStartConfig {\r\n name: string;\r\n waitForAGMReady: boolean;\r\n id?: string;\r\n context?: any;\r\n top?: number;\r\n left?: number;\r\n width?: number;\r\n height?: number;\r\n relativeTo?: string;\r\n relativeDirection?: \"top\" | \"left\" | \"right\" | \"bottom\";\r\n forceChromeTab?: boolean;\r\n layoutComponentId?: string;\r\n channelId?: string;\r\n}\r\n\r\nexport interface BasicInstanceData {\r\n id: string;\r\n}\r\n\r\nexport interface FDC3Definition {\r\n name: string;\r\n title?: string;\r\n version?: string;\r\n appId?: string;\r\n manifest: string;\r\n manifestType: string;\r\n tooltip?: string;\r\n description?: string;\r\n contactEmail?: string;\r\n supportEmail?: string;\r\n publisher?: string;\r\n images?: Array<{ url?: string }>;\r\n icons?: Array<{ icon?: string }>;\r\n customConfig?: any;\r\n intents?: Intent[];\r\n}\r\n\r\nexport interface Intent {\r\n name: string;\r\n displayName?: string;\r\n contexts?: string[];\r\n customConfig?: any;\r\n}\r\n\r\nexport interface DefinitionParseResult {\r\n valid: IOConnectBrowser.AppManager.Definition[];\r\n invalid: Array<{ app: string; error: string }>;\r\n}\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { IOConnectCore } from \"@interopio/core\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\nimport { GlueBridge } from \"../communication/bridge\";\r\nimport { allApplicationDefinitionsDecoder, appManagerOperationTypesDecoder, importModeDecoder, nonEmptyStringDecoder } from \"../shared/decoders\";\r\nimport { IoC } from \"../shared/ioc\";\r\nimport { LibController } from \"../shared/types\";\r\nimport { WindowHello } from \"../windows/protocol\";\r\nimport { AppsImportOperation, AppHelloSuccess, ApplicationStartConfig, AppRemoveConfig, InstanceData, operations, BaseApplicationData, AppsExportOperation, DefinitionParseResult, AppDirectoryStateChange } from \"./protocol\";\r\nimport {\r\n default as CallbackRegistryFactory,\r\n CallbackRegistry,\r\n UnsubscribeFunction,\r\n} from \"callback-registry\";\r\nimport { ChannelsController } from \"../channels/controller\";\r\nimport { SessionStorageController } from \"../storage/session\";\r\n\r\nexport class AppManagerController implements LibController {\r\n private baseApplicationsTimeoutMS = 60000;\r\n private appImportTimeoutMS = 20;\r\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\r\n private ioc!: IoC;\r\n private bridge!: GlueBridge;\r\n private publicWindowId!: string;\r\n private me: IOConnectBrowser.AppManager.Instance | undefined;\r\n private applications: IOConnectBrowser.AppManager.Application[] = [];\r\n private instances: IOConnectBrowser.AppManager.Instance[] = [];\r\n private platformRegistration!: Promise;\r\n private logger!: IOConnectBrowser.Logger.API;\r\n private channelsController!: ChannelsController;\r\n private sessionController!: SessionStorageController;\r\n\r\n public handlePlatformShutdown(): void {\r\n this.registry.clear();\r\n this.applications = [];\r\n this.instances = [];\r\n delete this.me;\r\n }\r\n\r\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\r\n this.logger = coreGlue.logger.subLogger(\"appManger.controller.web\");\r\n\r\n this.logger.trace(\"starting the web appManager controller\");\r\n\r\n this.publicWindowId = ioc.publicWindowId;\r\n\r\n this.addOperationsExecutors();\r\n\r\n this.ioc = ioc;\r\n this.bridge = ioc.bridge;\r\n this.channelsController = ioc.channelsController;\r\n this.sessionController = ioc.sessionController;\r\n\r\n this.platformRegistration = this.registerWithPlatform();\r\n\r\n await this.platformRegistration;\r\n\r\n this.logger.trace(\"registration with the platform successful, attaching the appManager property to glue and returning\");\r\n\r\n const api = this.toApi();\r\n\r\n (coreGlue as IOConnectBrowser.API).appManager = api;\r\n }\r\n\r\n public async handleBridgeMessage(args: any): Promise {\r\n await this.platformRegistration;\r\n\r\n const operationName = appManagerOperationTypesDecoder.runWithException(args.operation);\r\n\r\n const operation = operations[operationName];\r\n\r\n if (!operation.execute) {\r\n return;\r\n }\r\n\r\n let operationData: any = args.data;\r\n\r\n if (operation.dataDecoder) {\r\n operationData = operation.dataDecoder.runWithException(args.data);\r\n }\r\n\r\n return await operation.execute(operationData);\r\n }\r\n\r\n public onInstanceStarted(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onInstanceStarted requires a single argument of type function\");\r\n }\r\n\r\n return this.registry.add(\"instance-started\", callback, this.instances);\r\n }\r\n\r\n public onInstanceStopped(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onInstanceStopped requires a single argument of type function\");\r\n }\r\n\r\n return this.registry.add(\"instance-stopped\", callback);\r\n }\r\n\r\n public async startApplication(appName: string, context?: object, options?: IOConnectBrowser.AppManager.ApplicationStartOptions): Promise {\r\n const channels = await this.channelsController.all();\r\n\r\n if (options?.channelId && !channels.includes(options.channelId)) {\r\n throw new Error(`The channel with name \"${options.channelId}\" doesn't exist!`);\r\n }\r\n \r\n // reuseId is a hidden property for workspaces-only use\r\n // layoutComponentId is a hidden property for global layouts\r\n // forceChromeTab is a hidden property for extension use only\r\n const startOptions: ApplicationStartConfig = {\r\n name: appName,\r\n waitForAGMReady: options?.waitForAGMReady ?? true,\r\n context,\r\n top: options?.top,\r\n left: options?.left,\r\n width: options?.width,\r\n height: options?.height,\r\n relativeTo: options?.relativeTo,\r\n relativeDirection: options?.relativeDirection,\r\n id: (options as any)?.reuseId,\r\n forceChromeTab: (options as any)?.forceTab,\r\n layoutComponentId: (options as any)?.layoutComponentId,\r\n channelId: options?.channelId\r\n };\r\n\r\n const openResult = await this.bridge.send(\"appManager\", operations.applicationStart, startOptions);\r\n\r\n const app = this.applications.find((a) => a.name === openResult.applicationName) as IOConnectBrowser.AppManager.Application;\r\n\r\n return this.ioc.buildInstance(openResult, app);\r\n }\r\n\r\n public getApplication(name: string): IOConnectBrowser.AppManager.Application {\r\n const verifiedName = nonEmptyStringDecoder.runWithException(name);\r\n\r\n return this.applications.find((app) => app.name === verifiedName) as IOConnectBrowser.AppManager.Application;\r\n }\r\n\r\n public getInstances(): IOConnectBrowser.AppManager.Instance[] {\r\n return this.instances.slice();\r\n }\r\n\r\n private toApi(): IOConnectBrowser.AppManager.API {\r\n const api: IOConnectBrowser.AppManager.API = {\r\n myInstance: this.me as unknown as IOConnectBrowser.AppManager.Instance,\r\n inMemory: {\r\n import: this.import.bind(this),\r\n remove: this.remove.bind(this),\r\n export: this.export.bind(this),\r\n clear: this.clear.bind(this)\r\n },\r\n application: this.getApplication.bind(this),\r\n applications: this.getApplications.bind(this),\r\n instances: this.getInstances.bind(this),\r\n onAppAdded: this.onAppAdded.bind(this),\r\n onAppChanged: this.onAppChanged.bind(this),\r\n onAppRemoved: this.onAppRemoved.bind(this),\r\n onInstanceStarted: this.onInstanceStarted.bind(this),\r\n onInstanceStopped: this.onInstanceStopped.bind(this)\r\n };\r\n\r\n return api;\r\n }\r\n\r\n private addOperationsExecutors(): void {\r\n operations.appDirectoryStateChange.execute = this.handleAppDirectoryStateChange.bind(this);\r\n operations.instanceStarted.execute = this.handleInstanceStartedMessage.bind(this);\r\n operations.instanceStopped.execute = this.handleInstanceStoppedMessage.bind(this);\r\n }\r\n\r\n private async handleAppDirectoryStateChange(data: AppDirectoryStateChange): Promise {\r\n data.appsAdded.forEach(this.handleApplicationAddedMessage.bind(this));\r\n data.appsChanged.forEach(this.handleApplicationChangedMessage.bind(this));\r\n data.appsRemoved.forEach(this.handleApplicationRemovedMessage.bind(this));\r\n }\r\n\r\n private onAppAdded(callback: (app: IOConnectBrowser.AppManager.Application) => any): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onAppAdded requires a single argument of type function\");\r\n }\r\n\r\n return this.registry.add(\"application-added\", callback, this.applications);\r\n }\r\n\r\n private onAppRemoved(callback: (app: IOConnectBrowser.AppManager.Application) => any): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onAppRemoved requires a single argument of type function\");\r\n }\r\n\r\n return this.registry.add(\"application-removed\", callback);\r\n }\r\n\r\n private onAppChanged(callback: (app: IOConnectBrowser.AppManager.Application) => any): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onAppChanged requires a single argument of type function\");\r\n }\r\n\r\n return this.registry.add(\"application-changed\", callback);\r\n }\r\n\r\n private async handleApplicationAddedMessage(appData: BaseApplicationData): Promise {\r\n\r\n if (this.applications.some((app) => app.name === appData.name)) {\r\n return;\r\n }\r\n\r\n const app = await this.ioc.buildApplication(appData, []);\r\n\r\n const instances = this.instances.filter((instance) => instance.application.name === app.name);\r\n\r\n app.instances.push(...instances);\r\n\r\n this.applications.push(app);\r\n\r\n this.registry.execute(\"application-added\", app);\r\n }\r\n\r\n private async handleApplicationRemovedMessage(appData: BaseApplicationData): Promise {\r\n const appIndex = this.applications.findIndex((app) => app.name === appData.name);\r\n\r\n if (appIndex < 0) {\r\n return;\r\n }\r\n\r\n const app = this.applications[appIndex];\r\n\r\n this.applications.splice(appIndex, 1);\r\n\r\n this.registry.execute(\"application-removed\", app);\r\n }\r\n\r\n private async handleApplicationChangedMessage(appData: BaseApplicationData): Promise {\r\n const app = this.applications.find((app) => app.name === appData.name);\r\n\r\n if (!app) {\r\n return this.handleApplicationAddedMessage(appData);\r\n }\r\n\r\n app.title = appData.title as string;\r\n app.version = appData.version as string;\r\n app.icon = appData.icon as string;\r\n app.caption = appData.caption as string;\r\n app.userProperties = appData.userProperties;\r\n\r\n this.registry.execute(\"application-changed\", app);\r\n }\r\n\r\n private async handleInstanceStartedMessage(instanceData: InstanceData): Promise {\r\n if (this.instances.some((instance) => instance.id === instanceData.id)) {\r\n return;\r\n }\r\n\r\n const application = this.applications.find((app) => app.name === instanceData.applicationName);\r\n\r\n if (!application) {\r\n throw new Error(`Cannot add instance: ${instanceData.id}, because there is no application definition associated with it`);\r\n }\r\n\r\n const instance = this.ioc.buildInstance(instanceData, application);\r\n\r\n this.instances.push(instance);\r\n application.instances.push(instance);\r\n\r\n this.registry.execute(\"instance-started\", instance);\r\n }\r\n\r\n private async handleInstanceStoppedMessage(instanceData: InstanceData): Promise {\r\n const instance = this.instances.find((i) => i.id === instanceData.id);\r\n\r\n if (instance) {\r\n const instIdx = this.instances.findIndex((inst) => inst.id === instanceData.id);\r\n this.instances.splice(instIdx, 1);\r\n }\r\n\r\n const application = this.applications.find((app) => app.instances.some((inst) => inst.id === instanceData.id));\r\n\r\n if (application) {\r\n const instIdxApps = application.instances.findIndex((inst) => inst.id === instanceData.id);\r\n application.instances.splice(instIdxApps, 1);\r\n }\r\n\r\n if (!instance) {\r\n return;\r\n }\r\n\r\n this.registry.execute(\"instance-stopped\", instance);\r\n }\r\n\r\n private async import(definitions: IOConnectBrowser.AppManager.Definition[], mode: \"replace\" | \"merge\" = \"replace\"): Promise {\r\n importModeDecoder.runWithException(mode);\r\n\r\n if (!Array.isArray(definitions)) {\r\n throw new Error(\"Import must be called with an array of definitions\");\r\n }\r\n\r\n if (definitions.length > 10000) {\r\n throw new Error(\"Cannot import more than 10000 app definitions in Glue42 Core.\");\r\n }\r\n\r\n const parseResult = definitions.reduce((soFar, definition) => {\r\n\r\n const decodeResult = allApplicationDefinitionsDecoder.run(definition);\r\n\r\n if (!decodeResult.ok) {\r\n soFar.invalid.push({ app: definition?.name, error: JSON.stringify(decodeResult.error) });\r\n } else {\r\n soFar.valid.push(definition);\r\n }\r\n\r\n return soFar;\r\n }, { valid: [], invalid: [] });\r\n\r\n const responseTimeout = this.baseApplicationsTimeoutMS + this.appImportTimeoutMS * parseResult.valid.length;\r\n\r\n await this.bridge.send(\"appManager\", operations.import, { definitions: parseResult.valid, mode }, { methodResponseTimeoutMs: responseTimeout });\r\n\r\n return {\r\n imported: parseResult.valid.map((valid) => valid.name),\r\n errors: parseResult.invalid\r\n };\r\n }\r\n\r\n private async remove(name: string): Promise {\r\n nonEmptyStringDecoder.runWithException(name);\r\n\r\n await this.bridge.send(\"appManager\", operations.remove, { name }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\r\n }\r\n\r\n private async clear(): Promise {\r\n await this.bridge.send(\"appManager\", operations.clear, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\r\n }\r\n\r\n private async export(): Promise {\r\n\r\n const response = await this.bridge.send(\"appManager\", operations.export, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\r\n\r\n return response.definitions;\r\n }\r\n\r\n public getApplications(): IOConnectBrowser.AppManager.Application[] {\r\n return this.applications.slice();\r\n }\r\n\r\n private async joinInitialChannel(initialChannelId: string): Promise {\r\n try {\r\n await this.channelsController.join(initialChannelId);\r\n } catch (error) {\r\n this.logger.warn(`Application instance ${this.me} was unable to join the ${initialChannelId} channel. Reason: ${JSON.stringify(error)}`);\r\n }\r\n }\r\n\r\n private async registerWithPlatform(): Promise {\r\n const result = await this.bridge.send(\"appManager\", operations.appHello, { windowId: this.publicWindowId }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\r\n\r\n this.logger.trace(\"the platform responded to the hello message with a full list of apps\");\r\n\r\n this.applications = await Promise.all(result.apps.map((app) => this.ioc.buildApplication(app, app.instances)));\r\n\r\n this.instances = this.applications.reduce((instancesSoFar, app) => {\r\n\r\n instancesSoFar.push(...app.instances);\r\n\r\n return instancesSoFar;\r\n }, []);\r\n\r\n this.me = this.findMyInstance();\r\n\r\n this.logger.trace(`all applications were parsed and saved. I am ${this.me ? \"NOT a\" : \"a\"} valid instance`);\r\n\r\n const { channels: channelsStorageData } = this.sessionController.getWindowData();\r\n const channel = channelsStorageData ? channelsStorageData.currentName : result.initialChannelId;\r\n \r\n if (channel) {\r\n await this.joinInitialChannel(channel);\r\n }\r\n }\r\n\r\n private findMyInstance(): IOConnectBrowser.AppManager.Instance | undefined {\r\n for (const app of this.applications) {\r\n const foundInstance = app.instances.find((instance) => instance.id === this.publicWindowId);\r\n\r\n if (foundInstance) {\r\n return foundInstance;\r\n }\r\n }\r\n\r\n // this satisfies the TS \"noImplicitReturns\" true flag\r\n return undefined;\r\n }\r\n}\r\n","import { IOConnectBrowser } from \"../../browser\";\r\nimport { GlueBridge } from \"../communication/bridge\";\r\nimport { BasicInstanceData, InstanceData, operations } from \"./protocol\";\r\n\r\nexport class InstanceModel {\r\n private me!: IOConnectBrowser.AppManager.Instance;\r\n private readonly myCtxKey: string;\r\n\r\n constructor(private readonly data: InstanceData, private readonly bridge: GlueBridge, private readonly application: IOConnectBrowser.AppManager.Application) {\r\n this.myCtxKey = `___instance___${this.data.id}`;\r\n }\r\n\r\n public toApi(): IOConnectBrowser.AppManager.Instance {\r\n const agm = this.bridge.getInteropInstance(this.data.id);\r\n\r\n const api: IOConnectBrowser.AppManager.Instance = {\r\n id: this.data.id,\r\n agm,\r\n application: this.application,\r\n stop: this.stop.bind(this),\r\n getContext: this.getContext.bind(this)\r\n };\r\n\r\n this.me = Object.freeze(api);\r\n\r\n return this.me;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private async getContext(): Promise {\r\n return this.bridge.contextLib.get(this.myCtxKey);\r\n }\r\n\r\n private async stop(): Promise {\r\n await this.bridge.send(\"appManager\", operations.instanceStop, { id: this.data.id });\r\n }\r\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { UnsubscribeFunction } from \"callback-registry\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\nimport { AppManagerController } from \"./controller\";\r\nimport { BaseApplicationData } from \"./protocol\";\r\nimport { startApplicationContextDecoder, startApplicationOptionsDecoder } from \"../shared/decoders\";\r\n\r\nexport class ApplicationModel {\r\n private me!: IOConnectBrowser.AppManager.Application;\r\n\r\n constructor(\r\n private readonly data: BaseApplicationData,\r\n private readonly instances: IOConnectBrowser.AppManager.Instance[],\r\n private readonly controller: AppManagerController,\r\n ) { }\r\n\r\n public toApi(): IOConnectBrowser.AppManager.Application {\r\n const api: IOConnectBrowser.AppManager.Application = {\r\n name: this.data.name,\r\n title: this.data.title as string,\r\n version: this.data.version as string,\r\n icon: this.data.icon as string,\r\n caption: this.data.caption as string,\r\n userProperties: this.data.userProperties,\r\n instances: this.instances,\r\n start: this.start.bind(this),\r\n onInstanceStarted: this.onInstanceStarted.bind(this),\r\n onInstanceStopped: this.onInstanceStopped.bind(this)\r\n };\r\n\r\n this.me = api;\r\n\r\n return this.me;\r\n }\r\n\r\n private onInstanceStarted(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\r\n\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"OnInstanceStarted requires a single argument of type function\");\r\n }\r\n\r\n return this.controller.onInstanceStarted((instance) => {\r\n if (instance.application.name === this.data.name) {\r\n callback(instance);\r\n }\r\n });\r\n }\r\n\r\n private onInstanceStopped(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"OnInstanceStarted requires a single argument of type function\");\r\n }\r\n\r\n return this.controller.onInstanceStopped((instance) => {\r\n if (instance.application.name === this.data.name) {\r\n callback(instance);\r\n }\r\n });\r\n }\r\n\r\n private async start(context?: any, options?: IOConnectBrowser.AppManager.ApplicationStartOptions): Promise {\r\n const verifiedContext = startApplicationContextDecoder.runWithException(context);\r\n const verifiedOptions = startApplicationOptionsDecoder.runWithException(options);\r\n\r\n return this.controller.startApplication(this.data.name, verifiedContext, verifiedOptions);\r\n }\r\n}","import { IOConnectBrowser } from \"../../browser\";\r\nimport { allLayoutsFullConfigDecoder, allLayoutsSummariesResultDecoder, getAllLayoutsConfigDecoder, glueLayoutDecoder, layoutsImportConfigDecoder, optionalSimpleLayoutResult, restoreLayoutConfigDecoder, saveLayoutConfigDecoder, saveRequestClientResponseDecoder, platformSaveRequestConfigDecoder, simpleLayoutConfigDecoder, simpleLayoutResultDecoder, simpleAvailabilityResultDecoder, permissionStateResultDecoder, setDefaultGlobalConfigDecoder } from \"../shared/decoders\";\r\nimport { BridgeOperation } from \"../shared/types\";\r\n\r\nexport type LayoutsOperationTypes = \"layoutAdded\" | \"layoutChanged\" | \"layoutRemoved\" |\r\n \"get\" | \"getAll\" | \"export\" | \"import\" | \"remove\" | \"save\" | \"restore\" | \"clientSaveRequest\" |\r\n \"getGlobalPermissionState\" | \"requestGlobalPermission\" | \"checkGlobalActivated\" | \"getDefaultGlobal\" | \"setDefaultGlobal\" | \"clearDefaultGlobal\";\r\n\r\nexport const operations: { [key in LayoutsOperationTypes]: BridgeOperation } = {\r\n layoutAdded: { name: \"layoutAdded\", dataDecoder: glueLayoutDecoder },\r\n layoutChanged: { name: \"layoutChanged\", dataDecoder: glueLayoutDecoder },\r\n layoutRemoved: { name: \"layoutRemoved\", dataDecoder: glueLayoutDecoder },\r\n get: { name: \"get\", dataDecoder: simpleLayoutConfigDecoder, resultDecoder: optionalSimpleLayoutResult },\r\n getAll: { name: \"getAll\", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsSummariesResultDecoder },\r\n export: { name: \"export\", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsFullConfigDecoder },\r\n import: { name: \"import\", dataDecoder: layoutsImportConfigDecoder },\r\n remove: { name: \"remove\", dataDecoder: simpleLayoutConfigDecoder },\r\n save: { name: \"save\", dataDecoder: saveLayoutConfigDecoder, resultDecoder: simpleLayoutResultDecoder },\r\n restore: { name: \"restore\", dataDecoder: restoreLayoutConfigDecoder },\r\n clientSaveRequest: { name: \"clientSaveRequest\", dataDecoder: platformSaveRequestConfigDecoder, resultDecoder: saveRequestClientResponseDecoder },\r\n getGlobalPermissionState: { name: \"getGlobalPermissionState\", resultDecoder: permissionStateResultDecoder },\r\n requestGlobalPermission: { name: \"requestGlobalPermission\", resultDecoder: simpleAvailabilityResultDecoder },\r\n checkGlobalActivated: { name: \"checkGlobalActivated\", resultDecoder: simpleAvailabilityResultDecoder },\r\n getDefaultGlobal: { name: \"getDefaultGlobal\", resultDecoder: optionalSimpleLayoutResult },\r\n setDefaultGlobal: { name: \"setDefaultGlobal\", dataDecoder: setDefaultGlobalConfigDecoder },\r\n clearDefaultGlobal: { name: \"clearDefaultGlobal\" }\r\n};\r\n\r\nexport interface SimpleLayoutConfig {\r\n name: string;\r\n type: IOConnectBrowser.Layouts.LayoutType;\r\n}\r\n\r\nexport interface SaveLayoutConfig {\r\n layout: IOConnectBrowser.Layouts.NewLayoutOptions;\r\n}\r\n\r\nexport interface RestoreLayoutConfig {\r\n layout: IOConnectBrowser.Layouts.RestoreOptions;\r\n}\r\n\r\nexport interface GetAllLayoutsConfig {\r\n type: IOConnectBrowser.Layouts.LayoutType;\r\n}\r\n\r\nexport interface LayoutsImportConfig {\r\n layouts: IOConnectBrowser.Layouts.Layout[];\r\n mode: \"replace\" | \"merge\";\r\n isManagerOperation?: boolean;\r\n}\r\n\r\nexport interface AllLayoutsFullConfig {\r\n layouts: IOConnectBrowser.Layouts.Layout[];\r\n}\r\n\r\nexport interface AllLayoutsSummariesResult {\r\n summaries: IOConnectBrowser.Layouts.LayoutSummary[];\r\n}\r\n\r\nexport interface SimpleLayoutResult {\r\n layout: IOConnectBrowser.Layouts.Layout;\r\n}\r\n\r\nexport interface OptionalSimpleLayoutResult {\r\n layout?: IOConnectBrowser.Layouts.Layout;\r\n}\r\n\r\nexport interface LayoutParseResult {\r\n valid: IOConnectBrowser.Layouts.Layout[];\r\n}\r\n\r\nexport interface PlatformSaveRequestConfig {\r\n layoutType: \"Global\" | \"Workspace\";\r\n layoutName: string;\r\n context?: any;\r\n}\r\n\r\nexport interface SaveRequestClientResponse {\r\n windowContext?: any;\r\n}\r\n\r\nexport interface PermissionStateResult {\r\n state: \"prompt\" | \"granted\" | \"denied\";\r\n}\r\n\r\nexport interface SimpleAvailabilityResult {\r\n isAvailable: boolean;\r\n}\r\n\r\nexport interface SetDefaultGlobalConfig {\r\n name: string;\r\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { IOConnectCore } from \"@interopio/core\";\r\nimport { IoC } from \"../shared/ioc\";\r\nimport { LibController } from \"../shared/types\";\r\nimport {\r\n default as CallbackRegistryFactory,\r\n CallbackRegistry,\r\n UnsubscribeFunction,\r\n} from \"callback-registry\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\nimport { GlueBridge } from \"../communication/bridge\";\r\nimport { glueLayoutDecoder, importModeDecoder, layoutsOperationTypesDecoder, layoutTypeDecoder, newLayoutOptionsDecoder, nonEmptyStringDecoder, restoreOptionsDecoder } from \"../shared/decoders\";\r\nimport { AllLayoutsFullConfig, AllLayoutsSummariesResult, GetAllLayoutsConfig, LayoutParseResult, LayoutsImportConfig, operations, OptionalSimpleLayoutResult, RestoreLayoutConfig, SaveLayoutConfig, SaveRequestClientResponse, PlatformSaveRequestConfig, SimpleLayoutConfig, SimpleLayoutResult, PermissionStateResult, SimpleAvailabilityResult, SetDefaultGlobalConfig } from \"./protocol\";\r\nimport { WindowsController } from \"../windows/controller\";\r\n\r\nexport class LayoutsController implements LibController {\r\n private readonly defaultLayoutRestoreTimeoutMS = 120000;\r\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\r\n private bridge!: GlueBridge;\r\n private logger!: IOConnectBrowser.Logger.API;\r\n private windowsController!: WindowsController;\r\n private saveRequestSubscription?: (info?: IOConnectBrowser.Layouts.SaveRequestContext) => IOConnectBrowser.Layouts.SaveRequestResponse;\r\n\r\n public handlePlatformShutdown(): void {\r\n this.registry.clear();\r\n }\r\n\r\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\r\n this.logger = coreGlue.logger.subLogger(\"layouts.controller.web\");\r\n\r\n this.logger.trace(\"starting the web layouts controller\");\r\n\r\n this.bridge = ioc.bridge;\r\n\r\n this.windowsController = ioc.windowsController;\r\n\r\n this.addOperationsExecutors();\r\n\r\n const api = this.toApi();\r\n\r\n this.logger.trace(\"no need for platform registration, attaching the layouts property to glue and returning\");\r\n\r\n (coreGlue as IOConnectBrowser.API).layouts = api;\r\n }\r\n\r\n public async handleBridgeMessage(args: any): Promise {\r\n const operationName = layoutsOperationTypesDecoder.runWithException(args.operation);\r\n\r\n const operation = operations[operationName];\r\n\r\n if (!operation.execute) {\r\n return;\r\n }\r\n\r\n let operationData: any = args.data;\r\n\r\n if (operation.dataDecoder) {\r\n operationData = operation.dataDecoder.runWithException(args.data);\r\n }\r\n\r\n return await operation.execute(operationData);\r\n }\r\n\r\n private toApi(): IOConnectBrowser.Layouts.API {\r\n const api: IOConnectBrowser.Layouts.API = {\r\n get: this.get.bind(this),\r\n getAll: this.getAll.bind(this),\r\n export: this.export.bind(this),\r\n import: this.import.bind(this),\r\n save: this.save.bind(this),\r\n restore: this.restore.bind(this),\r\n remove: this.remove.bind(this),\r\n onAdded: this.onAdded.bind(this),\r\n onChanged: this.onChanged.bind(this),\r\n onRemoved: this.onRemoved.bind(this),\r\n onSaveRequested: this.subscribeOnSaveRequested.bind(this),\r\n getMultiScreenPermissionState: this.getGlobalPermissionState.bind(this),\r\n requestMultiScreenPermission: this.requestGlobalPermission.bind(this),\r\n getGlobalTypeState: this.checkGlobalActivated.bind(this),\r\n getDefaultGlobal: this.getDefaultGlobal.bind(this),\r\n setDefaultGlobal: this.setDefaultGlobal.bind(this),\r\n clearDefaultGlobal: this.clearDefaultGlobal.bind(this)\r\n };\r\n\r\n return Object.freeze(api);\r\n }\r\n\r\n private addOperationsExecutors(): void {\r\n operations.layoutAdded.execute = this.handleOnAdded.bind(this);\r\n operations.layoutChanged.execute = this.handleOnChanged.bind(this);\r\n operations.layoutRemoved.execute = this.handleOnRemoved.bind(this);\r\n operations.clientSaveRequest.execute = this.handleSaveRequest.bind(this);\r\n }\r\n\r\n private async get(name: string, type: IOConnectBrowser.Layouts.LayoutType): Promise {\r\n nonEmptyStringDecoder.runWithException(name);\r\n layoutTypeDecoder.runWithException(type);\r\n\r\n const result = await this.bridge.send(\"layouts\", operations.get, { name, type });\r\n\r\n return result.layout;\r\n }\r\n\r\n private async getAll(type: IOConnectBrowser.Layouts.LayoutType): Promise {\r\n layoutTypeDecoder.runWithException(type);\r\n\r\n const result = await this.bridge.send(\"layouts\", operations.getAll, { type });\r\n\r\n return result.summaries;\r\n }\r\n\r\n private async export(type: IOConnectBrowser.Layouts.LayoutType): Promise {\r\n layoutTypeDecoder.runWithException(type);\r\n\r\n const result = await this.bridge.send(\"layouts\", operations.export, { type });\r\n\r\n return result.layouts;\r\n }\r\n\r\n private async import(layouts: IOConnectBrowser.Layouts.Layout[], mode: \"replace\" | \"merge\" = \"replace\"): Promise {\r\n importModeDecoder.runWithException(mode);\r\n\r\n if (!Array.isArray(layouts)) {\r\n throw new Error(\"Import must be called with an array of layouts\");\r\n }\r\n\r\n if (layouts.length > 1000) {\r\n throw new Error(\"Cannot import more than 1000 layouts at once in Glue42 Core.\");\r\n }\r\n\r\n const parseResult = layouts.reduce((soFar, layout) => {\r\n\r\n const decodeResult = glueLayoutDecoder.run(layout);\r\n\r\n if (decodeResult.ok) {\r\n soFar.valid.push(layout);\r\n } else {\r\n this.logger.warn(`A layout with name: ${layout.name} was not imported, because of error: ${JSON.stringify(decodeResult.error)}`);\r\n }\r\n\r\n return soFar;\r\n\r\n }, { valid: [] });\r\n\r\n const layoutsToImport = layouts.filter((layout) => parseResult.valid.some((validLayout) => validLayout.name === layout.name));\r\n\r\n await this.bridge.send(\"layouts\", operations.import, { layouts: layoutsToImport, mode });\r\n }\r\n\r\n private async save(layout: IOConnectBrowser.Layouts.NewLayoutOptions): Promise {\r\n newLayoutOptionsDecoder.runWithException(layout);\r\n\r\n const saveResult = await this.bridge.send(\"layouts\", operations.save, { layout });\r\n\r\n return saveResult.layout;\r\n }\r\n\r\n private async restore(options: IOConnectBrowser.Layouts.RestoreOptions): Promise {\r\n restoreOptionsDecoder.runWithException(options);\r\n\r\n // the user-provided timeout needs to be doubled for the invocation in order to allow time for the Global Layouts plugin to correctly honor the user timeout.\r\n const invocationTimeout = options.timeout ? options.timeout * 2 : this.defaultLayoutRestoreTimeoutMS;\r\n\r\n await this.bridge.send(\"layouts\", operations.restore, { layout: options }, { methodResponseTimeoutMs: invocationTimeout });\r\n }\r\n\r\n private async remove(type: IOConnectBrowser.Layouts.LayoutType, name: string): Promise {\r\n layoutTypeDecoder.runWithException(type);\r\n nonEmptyStringDecoder.runWithException(name);\r\n\r\n await this.bridge.send(\"layouts\", operations.remove, { type, name });\r\n }\r\n\r\n private async handleSaveRequest(config: PlatformSaveRequestConfig): Promise {\r\n const response: SaveRequestClientResponse = {};\r\n\r\n if (this.saveRequestSubscription) {\r\n try {\r\n const onSaveRequestResponse = this.saveRequestSubscription(config);\r\n\r\n response.windowContext = onSaveRequestResponse?.windowContext;\r\n } catch (error) {\r\n this.logger.warn(`An error was thrown by the onSaveRequested callback, ignoring the callback: ${JSON.stringify(error)}`);\r\n }\r\n }\r\n\r\n return response;\r\n }\r\n\r\n private async getGlobalPermissionState(): Promise<{ state: \"prompt\" | \"granted\" | \"denied\" }> {\r\n const requestResult = await this.bridge.send(\"layouts\", operations.getGlobalPermissionState, undefined);\r\n\r\n return requestResult;\r\n }\r\n\r\n private async requestGlobalPermission(): Promise<{ permissionGranted: boolean }> {\r\n\r\n const currentState = (await this.getGlobalPermissionState()).state;\r\n\r\n if (currentState === \"denied\") {\r\n return { permissionGranted: false };\r\n }\r\n\r\n if (currentState === \"granted\") {\r\n return { permissionGranted: true };\r\n }\r\n\r\n const myWindow = this.windowsController.my();\r\n\r\n const globalNamespace = (window as any).glue42core || (window as any).iobrowser;\r\n\r\n const amIWorkspaceFrame = globalNamespace.isPlatformFrame;\r\n\r\n if (myWindow.name !== \"Platform\" && !amIWorkspaceFrame) {\r\n throw new Error(\"Cannot request permission for multi-window placement from any app other than the Platform.\");\r\n }\r\n\r\n const requestResult = await this.bridge.send(\"layouts\", operations.requestGlobalPermission, undefined, { methodResponseTimeoutMs: 180000 });\r\n\r\n return { permissionGranted: requestResult.isAvailable };\r\n }\r\n\r\n private async checkGlobalActivated(): Promise<{ activated: boolean }> {\r\n const requestResult = await this.bridge.send(\"layouts\", operations.checkGlobalActivated, undefined);\r\n\r\n return { activated: requestResult.isAvailable };\r\n }\r\n\r\n private async getDefaultGlobal(): Promise {\r\n const requestResult = await this.bridge.send(\"layouts\", operations.getDefaultGlobal, undefined, undefined, { includeOperationCheck: true });\r\n\r\n return requestResult.layout;\r\n }\r\n\r\n private async setDefaultGlobal(name: string): Promise {\r\n nonEmptyStringDecoder.runWithException(name);\r\n\r\n await this.bridge.send(\"layouts\", operations.setDefaultGlobal, { name }, undefined, { includeOperationCheck: true });\r\n }\r\n\r\n private async clearDefaultGlobal(): Promise {\r\n await this.bridge.send(\"layouts\", operations.clearDefaultGlobal, undefined, undefined, { includeOperationCheck: true });\r\n }\r\n\r\n private onAdded(callback: (layout: IOConnectBrowser.Layouts.Layout) => void): UnsubscribeFunction {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.export(\"Global\").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => {});\r\n this.export(\"Workspace\").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => {});\r\n\r\n return this.registry.add(operations.layoutAdded.name, callback);\r\n }\r\n\r\n private onChanged(callback: (layout: IOConnectBrowser.Layouts.Layout) => void): UnsubscribeFunction {\r\n return this.registry.add(operations.layoutChanged.name, callback);\r\n }\r\n\r\n private onRemoved(callback: (layout: IOConnectBrowser.Layouts.Layout) => void): UnsubscribeFunction {\r\n return this.registry.add(operations.layoutRemoved.name, callback);\r\n }\r\n\r\n private subscribeOnSaveRequested(callback: (info?: IOConnectBrowser.Layouts.SaveRequestContext) => IOConnectBrowser.Layouts.SaveRequestResponse): () => void {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to onSaveRequested, because the provided argument is not a valid callback function.\");\r\n }\r\n\r\n if (this.saveRequestSubscription) {\r\n throw new Error(\"Cannot subscribe to onSaveRequested, because this client has already subscribed and only one subscription is supported. Consider unsubscribing from the initial one.\");\r\n }\r\n\r\n this.saveRequestSubscription = callback;\r\n\r\n return () => {\r\n delete this.saveRequestSubscription;\r\n };\r\n }\r\n\r\n private async handleOnAdded(layout: IOConnectBrowser.Layouts.Layout): Promise {\r\n this.registry.execute(operations.layoutAdded.name, layout);\r\n }\r\n\r\n private async handleOnChanged(layout: IOConnectBrowser.Layouts.Layout): Promise {\r\n this.registry.execute(operations.layoutChanged.name, layout);\r\n }\r\n\r\n private async handleOnRemoved(layout: IOConnectBrowser.Layouts.Layout): Promise {\r\n this.registry.execute(operations.layoutRemoved.name, layout);\r\n }\r\n}","import { IOConnectBrowser } from \"../../browser\";\r\nimport { allNotificationsDataDecoder, notificationEventPayloadDecoder, permissionQueryResultDecoder, permissionRequestResultDecoder, raiseNotificationDecoder, raiseNotificationResultDecoder, simpleNotificationDataDecoder, simpleNotificationSelectDecoder } from \"../shared/decoders\";\r\nimport { BridgeOperation } from \"../shared/types\";\r\n\r\nexport type NotificationsOperationTypes = \"raiseNotification\" | \"requestPermission\" | \"notificationShow\" | \"notificationClick\" | \"getPermission\" |\r\n \"list\" | \"notificationRaised\" | \"notificationClosed\" | \"click\" | \"clear\" | \"clearAll\";\r\n\r\nexport type NotificationPermissionTypes = \"default\" | \"granted\" | \"denied\";\r\n\r\nexport const operations: { [key in NotificationsOperationTypes]: BridgeOperation } = {\r\n raiseNotification: { name: \"raiseNotification\", dataDecoder: raiseNotificationDecoder, resultDecoder:raiseNotificationResultDecoder },\r\n requestPermission: { name: \"requestPermission\", resultDecoder: permissionRequestResultDecoder },\r\n notificationShow: { name: \"notificationShow\", dataDecoder: notificationEventPayloadDecoder },\r\n notificationClick: { name: \"notificationClick\", dataDecoder: notificationEventPayloadDecoder },\r\n getPermission: { name: \"getPermission\", resultDecoder: permissionQueryResultDecoder },\r\n list: { name: \"list\", resultDecoder: allNotificationsDataDecoder },\r\n notificationRaised: { name: \"notificationRaised\", dataDecoder: simpleNotificationDataDecoder },\r\n notificationClosed: { name: \"notificationClosed\", dataDecoder: simpleNotificationSelectDecoder },\r\n click: { name: \"click\" },\r\n clear: { name: \"clear\" },\r\n clearAll: { name: \"clearAll\" }\r\n};\r\n\r\nexport interface RaiseNotification {\r\n settings: IOConnectBrowser.Notifications.RaiseOptions;\r\n id: string;\r\n}\r\n\r\nexport interface RaiseNotificationResult {\r\n settings: IOConnectBrowser.Notifications.RaiseOptions;\r\n}\r\n\r\nexport interface PermissionRequestResult {\r\n permissionGranted: boolean;\r\n}\r\n\r\nexport interface PermissionQueryResult {\r\n permission: NotificationPermissionTypes;\r\n}\r\n\r\nexport interface NotificationEventPayload {\r\n definition: IOConnectBrowser.Notifications.NotificationDefinition;\r\n action?: string;\r\n id?: string;\r\n}\r\n\r\nexport interface SimpleNotificationData {\r\n notification: IOConnectBrowser.Notifications.NotificationData;\r\n}\r\n\r\nexport interface AllNotificationsData {\r\n notifications: IOConnectBrowser.Notifications.NotificationData[];\r\n}\r\n\r\nexport interface NotificationClickConfig {\r\n id: string;\r\n action?: string;\r\n}\r\n\r\nexport interface SimpleNotificationSelect {\r\n id: string;\r\n}\r\n","'use strict';\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n seed = (seed * 9301 + 49297) % 233280;\n return seed/(233280.0);\n}\n\nfunction setSeed(_seed_) {\n seed = _seed_;\n}\n\nmodule.exports = {\n nextValue: getNextValue,\n seed: setSeed\n};\n","'use strict';\n\nvar randomFromSeed = require('./random/random-from-seed');\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet !== ORIGINAL) {\n alphabet = ORIGINAL;\n reset();\n }\n return;\n }\n\n if (_alphabet_ === alphabet) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function(item, ind, arr){\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet = _alphabet_;\n reset();\n}\n\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet;\n}\n\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\n\nfunction shuffle() {\n if (!alphabet) {\n setCharacters(ORIGINAL);\n }\n\n var sourceArray = alphabet.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get () {\n return alphabet || ORIGINAL;\n}\n\nmodule.exports = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};\n","'use strict';\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nmodule.exports = randomByte;\n","// This file replaces `format.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nmodule.exports = function (random, alphabet, size) {\n // We can’t use bytes bigger than the alphabet. To make bytes values closer\n // to the alphabet, we apply bitmask on them. We look for the closest\n // `2 ** x - 1` number, which will be bigger than alphabet size. If we have\n // 30 symbols in the alphabet, we will take 31 (00011111).\n // We do not use faster Math.clz32, because it is not available in browsers.\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1\n // Bitmask is not a perfect solution (in our example it will pass 31 bytes,\n // which is bigger than the alphabet). As a result, we will need more bytes,\n // than ID size, because we will refuse bytes bigger than the alphabet.\n\n // Every hardware random generator call is costly,\n // because we need to wait for entropy collection. This is why often it will\n // be faster to ask for few extra bytes in advance, to avoid additional calls.\n\n // Here we calculate how many random bytes should we call in advance.\n // It depends on ID length, mask / alphabet size and magic number 1.6\n // (which was selected according benchmarks).\n\n // -~f => Math.ceil(f) if n is float number\n // -~i => i + 1 if n is integer number\n var step = -~(1.6 * mask * size / alphabet.length)\n var id = ''\n\n while (true) {\n var bytes = random(step)\n // Compact alternative for `for (var i = 0; i < step; i++)`\n var i = step\n while (i--) {\n // If random byte is bigger than alphabet even after bitmask,\n // we refuse it by `|| ''`.\n id += alphabet[bytes[i] & mask] || ''\n // More compact than `id.length + 1 === size`\n if (id.length === +size) return id\n }\n }\n}\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar random = require('./random/random-byte');\nvar format = require('nanoid/format');\n\nfunction generate(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format(random, alphabet.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nmodule.exports = generate;\n","'use strict';\n\nvar generate = require('./generate');\nvar alphabet = require('./alphabet');\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nmodule.exports = build;\n","'use strict';\nvar alphabet = require('./alphabet');\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nmodule.exports = isShortId;\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar build = require('./build');\nvar isValid = require('./is-valid');\n\n// if you are using cluster or multiple servers use this to make each instance\n// has a unique value for worker\n// Note: I don't know if this is automatically set when using third\n// party cluster solutions such as pm2.\nvar clusterWorkerId = require('./util/cluster-worker-id') || 0;\n\n/**\n * Set the seed.\n * Highly recommended if you don't want people to try to figure out your id schema.\n * exposed as shortid.seed(int)\n * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n */\nfunction seed(seedValue) {\n alphabet.seed(seedValue);\n return module.exports;\n}\n\n/**\n * Set the cluster worker or machine id\n * exposed as shortid.worker(int)\n * @param workerId worker must be positive integer. Number less than 16 is recommended.\n * returns shortid module so it can be chained.\n */\nfunction worker(workerId) {\n clusterWorkerId = workerId;\n return module.exports;\n}\n\n/**\n *\n * sets new characters to use in the alphabet\n * returns the shuffled alphabet\n */\nfunction characters(newCharacters) {\n if (newCharacters !== undefined) {\n alphabet.characters(newCharacters);\n }\n\n return alphabet.shuffled();\n}\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction generate() {\n return build(clusterWorkerId);\n}\n\n// Export all other functions as properties of the generate function\nmodule.exports = generate;\nmodule.exports.generate = generate;\nmodule.exports.seed = seed;\nmodule.exports.worker = worker;\nmodule.exports.characters = characters;\nmodule.exports.isValid = isValid;\n","'use strict';\nmodule.exports = require('./lib/index');\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { IOConnectCore } from \"@interopio/core\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\nimport { GlueBridge } from \"../communication/bridge\";\r\nimport { glue42NotificationOptionsDecoder, nonEmptyStringDecoder, notificationsOperationTypesDecoder } from \"../shared/decoders\";\r\nimport { IoC } from \"../shared/ioc\";\r\nimport { LibController } from \"../shared/types\";\r\nimport { AllNotificationsData, NotificationClickConfig, NotificationEventPayload, operations, PermissionQueryResult, PermissionRequestResult, RaiseNotification, RaiseNotificationResult, SimpleNotificationData, SimpleNotificationSelect } from \"./protocol\";\r\nimport { generate } from \"shortid\";\r\nimport {\r\n default as CallbackRegistryFactory,\r\n CallbackRegistry,\r\n UnsubscribeFunction\r\n} from \"callback-registry\";\r\n\r\nexport class NotificationsController implements LibController {\r\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\r\n private logger!: IOConnectBrowser.Logger.API;\r\n private bridge!: GlueBridge;\r\n private notificationsSettings?: IOConnectBrowser.Notifications.Settings;\r\n private notifications: { [key in string]: IOConnectBrowser.Notifications.Notification } = {};\r\n private coreGlue!: IOConnectCore.API;\r\n private buildNotificationFunc!: (config: IOConnectBrowser.Notifications.RaiseOptions, id: string) => IOConnectBrowser.Notifications.Notification;\r\n\r\n public handlePlatformShutdown(): void {\r\n this.notifications = {};\r\n this.registry.clear();\r\n }\r\n\r\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\r\n this.logger = coreGlue.logger.subLogger(\"notifications.controller.web\");\r\n\r\n this.logger.trace(\"starting the web notifications controller\");\r\n\r\n this.bridge = ioc.bridge;\r\n\r\n this.coreGlue = coreGlue;\r\n\r\n this.notificationsSettings = ioc.config.notifications;\r\n\r\n this.buildNotificationFunc = ioc.buildNotification;\r\n\r\n const api = this.toApi();\r\n\r\n this.addOperationExecutors();\r\n\r\n (coreGlue as IOConnectBrowser.API).notifications = api;\r\n\r\n this.logger.trace(\"notifications are ready\");\r\n }\r\n\r\n public async handleBridgeMessage(args: any): Promise {\r\n const operationName = notificationsOperationTypesDecoder.runWithException(args.operation);\r\n\r\n const operation = operations[operationName];\r\n\r\n if (!operation.execute) {\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n let operationData: any = args.data;\r\n\r\n if (operation.dataDecoder) {\r\n operationData = operation.dataDecoder.runWithException(args.data);\r\n }\r\n\r\n return await operation.execute(operationData);\r\n }\r\n\r\n private toApi(): IOConnectBrowser.Notifications.API {\r\n const api: IOConnectBrowser.Notifications.API = {\r\n raise: this.raise.bind(this),\r\n requestPermission: this.requestPermission.bind(this),\r\n getPermission: this.getPermission.bind(this),\r\n list: this.list.bind(this),\r\n onRaised: this.onRaised.bind(this),\r\n onClosed: this.onClosed.bind(this),\r\n click: this.click.bind(this),\r\n clear: this.clear.bind(this),\r\n clearAll: this.clearAll.bind(this)\r\n };\r\n\r\n return Object.freeze(api);\r\n }\r\n\r\n private async getPermission(): Promise<\"default\" | \"granted\" | \"denied\"> {\r\n\r\n const queryResult = await this.bridge.send(\"notifications\", operations.getPermission, undefined);\r\n\r\n return queryResult.permission;\r\n }\r\n\r\n private async requestPermission(): Promise {\r\n\r\n const permissionResult = await this.bridge.send(\"notifications\", operations.requestPermission, undefined);\r\n\r\n return permissionResult.permissionGranted;\r\n }\r\n\r\n private async raise(options: IOConnectBrowser.Notifications.RaiseOptions): Promise {\r\n const settings = glue42NotificationOptionsDecoder.runWithException(options);\r\n\r\n settings.showToast = typeof settings.showToast === \"boolean\" ? settings.showToast : true;\r\n settings.showInPanel = typeof settings.showInPanel === \"boolean\" ? settings.showInPanel : true;\r\n\r\n const permissionGranted = await this.requestPermission();\r\n\r\n if (!permissionGranted) {\r\n throw new Error(\"Cannot raise the notification, because the user has declined the permission request\");\r\n }\r\n\r\n const id = generate();\r\n\r\n const raiseResult = await this.bridge.send(\"notifications\", operations.raiseNotification, { settings, id });\r\n\r\n const notification = this.buildNotificationFunc(raiseResult.settings, id);\r\n\r\n this.notifications[id] = notification;\r\n\r\n return notification;\r\n }\r\n\r\n private async list(): Promise {\r\n const bridgeResponse = await this.bridge.send(\"notifications\", operations.list, undefined, undefined, { includeOperationCheck: true });\r\n\r\n return bridgeResponse.notifications;\r\n }\r\n\r\n private onRaised(callback: (notification: IOConnectBrowser.Notifications.NotificationData) => void): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onRaised expects a callback of type function\");\r\n }\r\n\r\n return this.registry.add(\"notification-raised\", callback);\r\n }\r\n\r\n private onClosed(callback: (notification: SimpleNotificationSelect) => void): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onRaised expects a callback of type function\");\r\n }\r\n\r\n return this.registry.add(\"notification-closed\", callback);\r\n }\r\n\r\n private async click(id: string, action?: string): Promise {\r\n nonEmptyStringDecoder.runWithException(id);\r\n\r\n if (action) {\r\n nonEmptyStringDecoder.runWithException(action);\r\n }\r\n\r\n await this.bridge.send(\"notifications\", operations.click, { id, action }, undefined, { includeOperationCheck: true });\r\n }\r\n\r\n private async clear(id: string): Promise {\r\n nonEmptyStringDecoder.runWithException(id);\r\n\r\n await this.bridge.send(\"notifications\", operations.clear, { id }, undefined, { includeOperationCheck: true });\r\n }\r\n\r\n private async clearAll(): Promise {\r\n await this.bridge.send(\"notifications\", operations.clearAll, undefined, undefined, { includeOperationCheck: true });\r\n }\r\n\r\n private addOperationExecutors(): void {\r\n operations.notificationShow.execute = this.handleNotificationShow.bind(this);\r\n operations.notificationClick.execute = this.handleNotificationClick.bind(this);\r\n operations.notificationRaised.execute = this.handleNotificationRaised.bind(this);\r\n operations.notificationClosed.execute = this.handleNotificationClosed.bind(this);\r\n }\r\n\r\n private async handleNotificationShow(data: NotificationEventPayload): Promise {\r\n\r\n if (!data.id) {\r\n return;\r\n }\r\n\r\n const notification = this.notifications[data.id];\r\n if (notification && notification.onshow) {\r\n notification.onshow();\r\n }\r\n }\r\n\r\n private async handleNotificationClick(data: NotificationEventPayload): Promise {\r\n\r\n if (!data.action && this.notificationsSettings?.defaultClick) {\r\n this.notificationsSettings.defaultClick(this.coreGlue as IOConnectBrowser.API, data.definition);\r\n }\r\n\r\n if (data.action && this.notificationsSettings?.actionClicks?.some((actionDef) => actionDef.action === data.action)) {\r\n const foundHandler = this.notificationsSettings?.actionClicks?.find((actionDef) => actionDef.action === data.action) as IOConnectBrowser.Notifications.ActionClickHandler;\r\n\r\n foundHandler.handler(this.coreGlue as IOConnectBrowser.API, data.definition);\r\n }\r\n\r\n if (!data.id) {\r\n return;\r\n }\r\n\r\n const notification = this.notifications[data.id];\r\n\r\n if (notification && notification.onclick) {\r\n notification.onclick();\r\n delete this.notifications[data.id];\r\n }\r\n\r\n }\r\n\r\n private async handleNotificationRaised(data: SimpleNotificationData): Promise {\r\n this.registry.execute(\"notification-raised\", data.notification);\r\n }\r\n\r\n private async handleNotificationClosed(data: SimpleNotificationSelect): Promise {\r\n this.registry.execute(\"notification-closed\", data);\r\n }\r\n}\r\n","import { IOConnectBrowser } from \"../../browser\";\r\nimport { wrappedIntentFilterDecoder, intentRequestDecoder, intentResultDecoder, wrappedIntentsDecoder, raiseIntentRequestDecoder, filterHandlersResultDecoder, filterHandlersWithResolverConfigDecoder } from \"../shared/decoders\";\r\nimport { BridgeOperation } from \"../shared/types\";\r\n\r\nexport type IntentsOperationTypes = \"getIntents\" | \"findIntent\" | \"raiseIntent\" | \"raise\" | \"filterHandlers\";\r\n\r\nexport const operations: { [key in IntentsOperationTypes]: BridgeOperation } = {\r\n getIntents: { name: \"getIntents\", resultDecoder: wrappedIntentsDecoder },\r\n findIntent: { name: \"findIntent\", dataDecoder: wrappedIntentFilterDecoder, resultDecoder: wrappedIntentsDecoder },\r\n raiseIntent: { name: \"raiseIntent\", dataDecoder: intentRequestDecoder, resultDecoder: intentResultDecoder },\r\n raise: { name: \"raise\", dataDecoder: raiseIntentRequestDecoder, resultDecoder: intentResultDecoder },\r\n filterHandlers: { name: \"filterHandlers\", dataDecoder: filterHandlersWithResolverConfigDecoder, resultDecoder: filterHandlersResultDecoder }\r\n};\r\n\r\nexport interface WrappedIntentFilter {\r\n filter?: IOConnectBrowser.Intents.IntentFilter;\r\n}\r\n\r\nexport interface WrappedIntents {\r\n intents: IOConnectBrowser.Intents.Intent[];\r\n}\r\n\r\nexport interface IntentsResolverResponse {\r\n intent: string;\r\n handler: IOConnectBrowser.Intents.IntentHandler;\r\n}\r\n\r\nexport interface IntentsResolverResponsePromise {\r\n intent: string;\r\n methodName: string;\r\n promise: Promise;\r\n resolve: (arg: IntentsResolverResponse) => void;\r\n reject: (reason: string) => void;\r\n}\r\n\r\nexport interface RaiseIntentArgs extends IOConnectBrowser.Intents.IntentContext {\r\n _initialCallerId: string;\r\n}","export const GLUE42_FDC3_INTENTS_METHOD_PREFIX = \"Tick42.FDC3.Intents.\";\r\n\r\nexport const INTENTS_RESOLVER_INTEROP_PREFIX = \"T42.Intents.Resolver.Control.\";\r\n\r\nexport const INTENTS_RESOLVER_APP_NAME = \"intentsResolver\";\r\n\r\nexport const DEFAULT_RESOLVER_RESPONSE_TIMEOUT = 60 * 1000;\r\n\r\nexport const ADDITIONAL_BRIDGE_OPERATION_TIMEOUT = 30 * 1000;\r\n\r\nexport const INTENTS_RESOLVER_WIDTH = 400;\r\n\r\nexport const INTENTS_RESOLVER_HEIGHT = 440;\r\n\r\n// JS setTimeout max value - When delay is larger than 2147483647 or less than 1, the delay will be set to 1\r\nexport const MAX_SET_TIMEOUT_DELAY = 2147483647;\r\n\r\nexport const DEFAULT_PICK_HANDLER_BY_TIMEOUT = 90 * 1000;\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { IOConnectCore } from \"@interopio/core\";\r\nimport { IoC } from \"../shared/ioc\";\r\nimport { LibController, OperationCheckConfig, OperationCheckResult } from \"../shared/types\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\nimport { GlueBridge } from \"../communication/bridge\";\r\nimport { UnsubscribeFunction } from \"callback-registry\";\r\nimport { intentsOperationTypesDecoder, raiseRequestDecoder, findFilterDecoder, AddIntentListenerDecoder, handlersFilterDecoder } from \"../shared/decoders\";\r\nimport { operations, RaiseIntentArgs, WrappedIntentFilter, WrappedIntents } from \"./protocol\";\r\nimport { ADDITIONAL_BRIDGE_OPERATION_TIMEOUT, DEFAULT_PICK_HANDLER_BY_TIMEOUT, DEFAULT_RESOLVER_RESPONSE_TIMEOUT, GLUE42_FDC3_INTENTS_METHOD_PREFIX, INTENTS_RESOLVER_APP_NAME, MAX_SET_TIMEOUT_DELAY } from \"./constants\";\r\nimport { LegacyIntentsHelper } from \"./legacyHelper\";\r\nimport { systemOperations } from \"../shared/systemOperations\";\r\nimport { FilterHandlersWithResolverConfig, ResolverConfig, IntentRequestWithResolverConfig, IsRaiseOperationSupported, GetResolverConfigByRequestArgs, FilterHandlersReturnResult } from \"./types\"; \r\n\r\nexport class IntentsController implements LibController {\r\n private bridge!: GlueBridge;\r\n private logger!: IOConnectBrowser.Logger.API;\r\n private interop!: IOConnectCore.AGM.API;\r\n private legacyIntentsController!: LegacyIntentsHelper;\r\n private myIntents = new Set();\r\n\r\n private useIntentsResolverUI = true;\r\n private intentsResolverAppName!: string;\r\n private intentResolverResponseTimeout!: number;\r\n\r\n private unregisterIntentPromises: Promise[] = [];\r\n\r\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\r\n this.logger = coreGlue.logger.subLogger(\"intents.controller.web\");\r\n\r\n this.logger.trace(\"starting the web intents controller\");\r\n\r\n this.bridge = ioc.bridge;\r\n\r\n this.interop = coreGlue.interop;\r\n\r\n this.legacyIntentsController = ioc.legacyIntentsHelper;\r\n\r\n this.checkIfIntentsResolverIsEnabled(ioc.config);\r\n\r\n const api = this.toApi();\r\n\r\n this.logger.trace(\"no need for platform registration, attaching the intents property to glue and returning\");\r\n\r\n (coreGlue as IOConnectBrowser.API).intents = api;\r\n }\r\n\r\n public handlePlatformShutdown(): void {\r\n this.myIntents = new Set();\r\n this.unregisterIntentPromises = [];\r\n }\r\n\r\n public async handleBridgeMessage(args: any): Promise {\r\n const operationName = intentsOperationTypesDecoder.runWithException(args.operation);\r\n\r\n const operation = operations[operationName];\r\n\r\n if (!operation.execute) {\r\n return;\r\n }\r\n\r\n let operationData: any = args.data;\r\n\r\n if (operation.dataDecoder) {\r\n operationData = operation.dataDecoder.runWithException(args.data);\r\n }\r\n\r\n return await operation.execute(operationData);\r\n }\r\n\r\n private toApi(): IOConnectBrowser.Intents.API {\r\n const api: IOConnectBrowser.Intents.API = {\r\n raise: this.raise.bind(this),\r\n all: this.all.bind(this),\r\n addIntentListener: this.addIntentListener.bind(this),\r\n register: this.register.bind(this),\r\n find: this.find.bind(this),\r\n filterHandlers: this.filterHandlers.bind(this)\r\n };\r\n\r\n return api;\r\n }\r\n\r\n private async raise(request: string | IOConnectBrowser.Intents.IntentRequest): Promise {\r\n const validatedIntentRequest = raiseRequestDecoder.runWithException(request);\r\n\r\n const intentRequest: IOConnectBrowser.Intents.IntentRequest = typeof validatedIntentRequest === \"string\"\r\n ? { intent: validatedIntentRequest }\r\n : validatedIntentRequest;\r\n\r\n await Promise.all(this.unregisterIntentPromises);\r\n\r\n const requestWithResolverInfo = { intentRequest, resolverConfig: this.getResolverConfigByRequest({ intentRequest }) };\r\n\r\n const isRaiseOperationSupported = await this.isRaiseOperationSupported();\r\n\r\n if (!isRaiseOperationSupported.supported) {\r\n this.logger.warn(`${isRaiseOperationSupported.reason}. Invoking legacy raise method`);\r\n\r\n return this.legacyIntentsController.raise(requestWithResolverInfo, this.find.bind(this));\r\n }\r\n\r\n this.logger.trace(`Sending raise request to the platform: ${JSON.stringify(request)} and method response timeout of ${this.intentResolverResponseTimeout}ms`);\r\n\r\n // waitUserResponseIndefinitely: true -> methodResponseTimeoutMs: Number.MAX_SAFE_INTEGER\r\n const methodResponseTimeoutMs = intentRequest.waitUserResponseIndefinitely \r\n ? MAX_SET_TIMEOUT_DELAY\r\n : (intentRequest.timeout || this.intentResolverResponseTimeout) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT;\r\n\r\n const response = await this.bridge.send(\"intents\", operations.raise, requestWithResolverInfo, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs });\r\n\r\n return response;\r\n }\r\n\r\n private getResolverConfigByRequest(filter: GetResolverConfigByRequestArgs): ResolverConfig {\r\n if (filter.handlerFilter) {\r\n return {\r\n enabled: typeof filter.handlerFilter?.openResolver === \"boolean\" ? filter.handlerFilter?.openResolver : this.useIntentsResolverUI,\r\n appName: this.intentsResolverAppName,\r\n waitResponseTimeout: filter.handlerFilter?.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT\r\n };\r\n }\r\n\r\n\r\n // if waitUserResponseIndefinitely: true -> ignore resolver timeout and wait for eternity until the user chooses a handler\r\n const waitResponseTimeout = filter.intentRequest?.waitUserResponseIndefinitely ? MAX_SET_TIMEOUT_DELAY : this.intentResolverResponseTimeout;\r\n\r\n return { \r\n enabled: this.useIntentsResolverUI,\r\n appName: this.intentsResolverAppName,\r\n waitResponseTimeout\r\n };\r\n }\r\n\r\n private async isRaiseOperationSupported(): Promise {\r\n try {\r\n const { isSupported } = await this.bridge.send(\"intents\", systemOperations.operationCheck, { operation: \"raise\" });\r\n\r\n return {\r\n supported: isSupported,\r\n reason: isSupported ? \"\" : \"The platform of this client is outdated and does not support \\\"raise\\\" operation\"\r\n };\r\n } catch (error) {\r\n return {\r\n supported: false,\r\n reason: \"The platform of this client is outdated and does not support \\\"operationCheck\\\" command\"\r\n };\r\n }\r\n }\r\n\r\n private async all(): Promise {\r\n await Promise.all(this.unregisterIntentPromises);\r\n\r\n const result = await this.bridge.send(\"intents\", operations.getIntents, undefined);\r\n\r\n return result.intents;\r\n }\r\n\r\n private addIntentListener(intent: string | IOConnectBrowser.Intents.AddIntentListenerRequest, handler: (context: IOConnectBrowser.Intents.IntentContext) => any): { unsubscribe: UnsubscribeFunction } {\r\n AddIntentListenerDecoder.runWithException(intent);\r\n if (typeof handler !== \"function\") {\r\n throw new Error(\"Cannot add intent listener, because the provided handler is not a function!\");\r\n }\r\n\r\n // eslint-disable-next-line prefer-const\r\n let registerPromise: Promise;\r\n\r\n // `addIntentListener()` is sync.\r\n const intentName = typeof intent === \"string\" ? intent : intent.intent;\r\n const methodName = this.buildInteropMethodName(intentName);\r\n\r\n const alreadyRegistered = this.myIntents.has(intentName);\r\n\r\n if (alreadyRegistered) {\r\n throw new Error(`Intent listener for intent ${intentName} already registered!`);\r\n }\r\n this.myIntents.add(intentName);\r\n\r\n const result = {\r\n unsubscribe: (): void => {\r\n this.myIntents.delete(intentName);\r\n\r\n registerPromise\r\n .then(() => this.interop.unregister(methodName))\r\n .catch((err) => this.logger.trace(`Unregistration of a method with name ${methodName} failed with reason: ${err}`));\r\n }\r\n };\r\n\r\n let intentFlag: Omit = {};\r\n\r\n if (typeof intent === \"object\") {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { intent: removed, ...rest } = intent;\r\n intentFlag = rest;\r\n }\r\n\r\n registerPromise = this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args: RaiseIntentArgs) => {\r\n if (this.myIntents.has(intentName)) {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { _initialCallerId, ...rest } = args;\r\n\r\n return handler(rest);\r\n }\r\n });\r\n\r\n registerPromise.catch(err => {\r\n this.myIntents.delete(intentName);\r\n\r\n this.logger.warn(`Registration of a method with name ${methodName} failed with reason: ${err}`);\r\n });\r\n\r\n return result;\r\n }\r\n\r\n private async register(intent: string | IOConnectBrowser.Intents.AddIntentListenerRequest, handler: (context: IOConnectBrowser.Intents.IntentContext, caller?: IOConnectCore.Interop.Instance) => any): Promise<{ unsubscribe: UnsubscribeFunction }> {\r\n AddIntentListenerDecoder.runWithException(intent);\r\n\r\n if (typeof handler !== \"function\") {\r\n throw new Error(\"Cannot add intent listener, because the provided handler is not a function!\");\r\n }\r\n\r\n await Promise.all(this.unregisterIntentPromises);\r\n\r\n const intentName = typeof intent === \"string\" ? intent : intent.intent;\r\n const methodName = this.buildInteropMethodName(intentName);\r\n\r\n const alreadyRegistered = this.myIntents.has(intentName);\r\n\r\n if (alreadyRegistered) {\r\n throw new Error(`Intent listener for intent ${intentName} already registered!`);\r\n }\r\n this.myIntents.add(intentName);\r\n\r\n let intentFlag: Omit = {};\r\n\r\n if (typeof intent === \"object\") {\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { intent: removed, ...rest } = intent;\r\n intentFlag = rest;\r\n }\r\n\r\n try {\r\n await this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args: RaiseIntentArgs) => {\r\n if (this.myIntents.has(intentName)) {\r\n const { _initialCallerId, ...rest } = args;\r\n\r\n const caller = this.interop.servers().find((server) => server.instance === _initialCallerId);\r\n\r\n return handler(rest, caller);\r\n }\r\n });\r\n } catch (err) {\r\n this.myIntents.delete(intentName);\r\n\r\n throw new Error(`Registration of a method with name ${methodName} failed with reason: ${JSON.stringify(err)}`);\r\n }\r\n\r\n return {\r\n unsubscribe: () => this.unsubscribeIntent(intentName)\r\n };\r\n }\r\n\r\n private async find(intentFilter?: string | IOConnectBrowser.Intents.IntentFilter): Promise {\r\n let data: WrappedIntentFilter | undefined = undefined;\r\n\r\n if (typeof intentFilter !== \"undefined\") {\r\n const intentFilterObj = findFilterDecoder.runWithException(intentFilter);\r\n\r\n if (typeof intentFilterObj === \"string\") {\r\n data = {\r\n filter: {\r\n name: intentFilterObj\r\n }\r\n };\r\n } else if (typeof intentFilterObj === \"object\") {\r\n data = {\r\n filter: intentFilterObj\r\n };\r\n }\r\n }\r\n\r\n await Promise.all(this.unregisterIntentPromises);\r\n\r\n const result = await this.bridge.send(\"intents\", operations.findIntent, data);\r\n\r\n return result.intents;\r\n }\r\n\r\n private checkIfIntentsResolverIsEnabled(options: IOConnectBrowser.Config): void {\r\n this.useIntentsResolverUI = typeof options.intents?.enableIntentsResolverUI === \"boolean\"\r\n ? options.intents.enableIntentsResolverUI\r\n : true;\r\n\r\n this.intentsResolverAppName = options.intents?.intentsResolverAppName ?? INTENTS_RESOLVER_APP_NAME;\r\n\r\n this.intentResolverResponseTimeout = options.intents?.methodResponseTimeoutMs ?? DEFAULT_RESOLVER_RESPONSE_TIMEOUT;\r\n }\r\n\r\n private clearUnregistrationPromise(promiseToRemove: Promise): void {\r\n this.unregisterIntentPromises = this.unregisterIntentPromises.filter(promise => promise !== promiseToRemove);\r\n }\r\n\r\n private buildInteropMethodName(intentName: string): string {\r\n return `${GLUE42_FDC3_INTENTS_METHOD_PREFIX}${intentName}`;\r\n }\r\n\r\n private unsubscribeIntent(intentName: string): void {\r\n this.myIntents.delete(intentName);\r\n\r\n const methodName = this.buildInteropMethodName(intentName);\r\n\r\n // typings are wrong and mark unregister as a sync method\r\n const unregisterPromise = this.interop.unregister(methodName) as unknown as Promise;\r\n\r\n this.unregisterIntentPromises.push(unregisterPromise);\r\n\r\n unregisterPromise\r\n .then(() => {\r\n this.clearUnregistrationPromise(unregisterPromise);\r\n })\r\n .catch((err) => {\r\n this.logger.error(`Unregistration of a method with name ${methodName} failed with reason: ${err}`);\r\n\r\n this.clearUnregistrationPromise(unregisterPromise);\r\n });\r\n }\r\n\r\n private async filterHandlers(handlerFilter: IOConnectBrowser.Intents.HandlerFilter): Promise {\r\n handlersFilterDecoder.runWithException(handlerFilter);\r\n \r\n this.checkIfAtLeastOneFilterIsPresent(handlerFilter);\r\n\r\n if (handlerFilter.openResolver && !this.useIntentsResolverUI) {\r\n throw new Error(\"Cannot resolve 'filterHandlers' request using Intents Resolver UI because it's globally disabled\");\r\n }\r\n\r\n const methodResponseTimeoutMs = (handlerFilter.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT;\r\n\r\n const filterHandlersRequestWithResolverConfig: FilterHandlersWithResolverConfig = { filterHandlersRequest: handlerFilter, resolverConfig: this.getResolverConfigByRequest({ handlerFilter }) };\r\n \r\n const result = await this.bridge.send(\"intents\", operations.filterHandlers, filterHandlersRequestWithResolverConfig, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }, { includeOperationCheck: true });\r\n\r\n return result.handlers;\r\n }\r\n\r\n private checkIfAtLeastOneFilterIsPresent(filter: IOConnectBrowser.Intents.HandlerFilter): void {\r\n const errorMsg = \"Provide at least one filter criteria of the following: 'contextTypes' | 'intent' | 'resultType'\";\r\n \r\n if (!Object.keys(filter).length) {\r\n // only title was present\r\n throw new Error(errorMsg);\r\n }\r\n\r\n const { intent, resultType, contextTypes } = filter;\r\n\r\n if (!intent && !resultType && (!contextTypes || !contextTypes.length)) {\r\n throw new Error(errorMsg);\r\n }\r\n }\r\n}\r\n","import { PlatformMessages } from \"./types\";\r\n\r\nexport const Glue42CoreMessageTypes: { [key in PlatformMessages]: { name: PlatformMessages } } = {\r\n platformUnload: { name: \"platformUnload\" },\r\n transportSwitchRequest: { name: \"transportSwitchRequest\" },\r\n transportSwitchResponse: { name: \"transportSwitchResponse\" },\r\n getCurrentTransport: { name: \"getCurrentTransport\" },\r\n getCurrentTransportResponse: { name: \"getCurrentTransportResponse\" },\r\n checkPreferredLogic: { name: \"checkPreferredLogic\" },\r\n checkPreferredConnection: { name: \"checkPreferredConnection\" },\r\n checkPreferredLogicResponse: { name: \"checkPreferredLogicResponse\" },\r\n checkPreferredConnectionResponse: { name: \"checkPreferredConnectionResponse\" }\r\n};\r\n\r\nexport const webPlatformTransportName = \"web-platform\";\r\n\r\nexport const latestFDC3Type = \"latest_fdc3_type\";","import { channelContextDecoder, getMyChanelResultDecoder, getWindowIdsOnChannelDataDecoder, getWindowIdsOnChannelResultDecoder, getWindowIdsWithChannelsResultDecoder, joinChannelDataDecoder, wrappedWindowWithChannelFilterDecoder } from \"../shared/decoders\";\r\nimport { BridgeOperation } from \"../shared/types\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\n\r\nexport type ChannelOperationTypes = \"addChannel\" | \"getMyChannel\" | \"getWindowIdsOnChannel\" | \"getWindowIdsWithChannels\" | \"joinChannel\";\r\n\r\nexport const operations: { [key in ChannelOperationTypes]: BridgeOperation } = {\r\n addChannel: { name: \"addChannel\", dataDecoder: channelContextDecoder },\r\n getMyChannel: { name: \"getMyChannel\", resultDecoder: getMyChanelResultDecoder },\r\n getWindowIdsOnChannel: { name: \"getWindowIdsOnChannel\", dataDecoder: getWindowIdsOnChannelDataDecoder, resultDecoder: getWindowIdsOnChannelResultDecoder },\r\n getWindowIdsWithChannels: { name: \"getWindowIdsWithChannels\", dataDecoder: wrappedWindowWithChannelFilterDecoder, resultDecoder: getWindowIdsWithChannelsResultDecoder },\r\n joinChannel: { name: \"joinChannel\", dataDecoder: joinChannelDataDecoder },\r\n};\r\n\r\nexport interface MyChannelData {\r\n channel?: string;\r\n}\r\n\r\nexport interface WindowIdsOnChannelData {\r\n windowIds: string[];\r\n}\r\n\r\nexport interface WindowIdsWithChannelsData {\r\n windowIdsWithChannels: {\r\n application: string;\r\n channel?: string;\r\n windowId: string;\r\n }[]\r\n}\r\n\r\nexport interface WrappedWindowWithChannelFilter {\r\n filter?: IOConnectBrowser.Channels.WindowWithChannelFilter\r\n}\r\n\r\nexport interface JoinChannelData {\r\n channel: string;\r\n windowId: string;\r\n}\r\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { IOConnectCore } from \"@interopio/core\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\nimport { channelContextDecoder, channelNameDecoder, channelsOperationTypesDecoder, optionalNonEmptyStringDecoder, windowWithChannelFilterDecoder } from \"../shared/decoders\";\r\nimport { LibController } from \"../shared/types\";\r\nimport {\r\n default as CallbackRegistryFactory,\r\n CallbackRegistry,\r\n UnsubscribeFunction,\r\n} from \"callback-registry\";\r\nimport { latestFDC3Type } from \"../shared/constants\";\r\nimport { IoC } from \"../shared/ioc\";\r\nimport { GlueBridge } from \"../communication/bridge\";\r\nimport { JoinChannelData, operations, WindowIdsOnChannelData, WindowIdsWithChannelsData, WrappedWindowWithChannelFilter } from \"./protocol\";\r\nimport { WindowsController } from \"../windows/controller\";\r\nimport { SessionStorageController } from \"../storage/session\";\r\n\r\nexport class ChannelsController implements LibController {\r\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\r\n private logger!: IOConnectBrowser.Logger.API;\r\n private contexts!: IOConnectCore.Contexts.API;\r\n private bridge!: GlueBridge;\r\n private currentChannelName: string | undefined;\r\n private windowsController!: WindowsController;\r\n private sessionController!: SessionStorageController;\r\n private unsubscribeFunc: (() => void) | undefined;\r\n\r\n private readonly GlueWebChannelsPrefix = \"___channel___\";\r\n private readonly SubsKey = \"subs\";\r\n private readonly ChangedKey = \"changed\";\r\n\r\n public handlePlatformShutdown(): void {\r\n this.registry.clear();\r\n }\r\n\r\n private addOperationsExecutors(): void {\r\n operations.getMyChannel.execute = this.handleGetMyChannel.bind(this);\r\n operations.joinChannel.execute = this.handleJoinChannel.bind(this);\r\n }\r\n\r\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\r\n this.logger = coreGlue.logger.subLogger(\"channels.controller.web\");\r\n\r\n this.logger.trace(\"starting the web channels controller\");\r\n\r\n this.contexts = coreGlue.contexts;\r\n\r\n this.addOperationsExecutors();\r\n\r\n this.bridge = ioc.bridge;\r\n\r\n this.windowsController = ioc.windowsController;\r\n \r\n this.sessionController = ioc.sessionController;\r\n\r\n this.logger.trace(\"no need for platform registration, attaching the channels property to glue and returning\");\r\n\r\n const api = this.toApi();\r\n\r\n (coreGlue as IOConnectBrowser.API).channels = api;\r\n }\r\n\r\n public async handleBridgeMessage(args: any): Promise {\r\n const operationName = channelsOperationTypesDecoder.runWithException(args.operation);\r\n\r\n const operation = operations[operationName];\r\n\r\n if(!operation.execute) {\r\n return; \r\n }\r\n\r\n let operationData: any = args.data;\r\n\r\n if (operation.dataDecoder) {\r\n operationData = operation.dataDecoder.runWithException(args.data);\r\n }\r\n\r\n return await operation.execute(operationData);\r\n }\r\n\r\n public async list(): Promise {\r\n const channelNames = this.getAllChannelNames();\r\n\r\n const channelContexts = await Promise.all(channelNames.map((channelName) => this.get(channelName)));\r\n\r\n return channelContexts;\r\n }\r\n\r\n public my(): string {\r\n return this.current();\r\n }\r\n\r\n private async handleGetMyChannel() {\r\n const channel = this.my();\r\n \r\n return channel ? { channel } : {};\r\n }\r\n\r\n public async join(name: string, windowId?: string): Promise {\r\n const channelNames = this.getAllChannelNames();\r\n channelNameDecoder(channelNames).runWithException(name);\r\n optionalNonEmptyStringDecoder.runWithException(windowId);\r\n\r\n if (!windowId || windowId === this.windowsController.my().id) {\r\n await this.switchToChannel(name);\r\n } else {\r\n await this.bridge.send(\"channels\", operations.joinChannel, { channel: name, windowId }, undefined, { includeOperationCheck: true });\r\n }\r\n }\r\n\r\n private handleJoinChannel({ channel, windowId }: JoinChannelData) {\r\n return this.join(channel, windowId);\r\n }\r\n\r\n public onChanged(callback: (channel: string) => void): UnsubscribeFunction {\r\n return this.changed(callback);\r\n }\r\n\r\n public async leave(): Promise {\r\n await this.switchToChannel();\r\n }\r\n\r\n private toApi(): IOConnectBrowser.Channels.API {\r\n const api: IOConnectBrowser.Channels.API = {\r\n subscribe: this.subscribe.bind(this),\r\n subscribeFor: this.subscribeFor.bind(this),\r\n publish: this.publish.bind(this),\r\n all: this.all.bind(this),\r\n list: this.list.bind(this),\r\n get: this.get.bind(this),\r\n join: this.join.bind(this),\r\n leave: this.leave.bind(this),\r\n current: this.current.bind(this),\r\n my: this.my.bind(this),\r\n changed: this.changed.bind(this),\r\n onChanged: this.onChanged.bind(this),\r\n add: this.add.bind(this),\r\n getMy: this.getMy.bind(this),\r\n getWindowsOnChannel: this.getWindowsOnChannel.bind(this),\r\n getWindowsWithChannels: this.getWindowsWithChannels.bind(this),\r\n };\r\n\r\n return Object.freeze(api);\r\n }\r\n\r\n private createContextName(channelName: string): string {\r\n return `${this.GlueWebChannelsPrefix}${channelName}`;\r\n }\r\n\r\n private getAllChannelNames(): string[] {\r\n const contextNames = this.contexts.all();\r\n\r\n const channelContextNames = contextNames.filter((contextName) => contextName.startsWith(this.GlueWebChannelsPrefix));\r\n\r\n const channelNames = channelContextNames.map((channelContextName) => channelContextName.replace(this.GlueWebChannelsPrefix, \"\"));\r\n\r\n return channelNames;\r\n }\r\n\r\n private unsubscribe(): void {\r\n if (this.unsubscribeFunc) {\r\n this.unsubscribeFunc();\r\n\r\n this.unsubscribeFunc = undefined;\r\n }\r\n }\r\n\r\n private async switchToChannel(name?: string): Promise {\r\n this.unsubscribe();\r\n\r\n // TODO: Should be set after `subscribe()` has resolved, but due to an issue where `subscribe()` replays the context before returning an unsubscribe function this has been moved here.\r\n this.currentChannelName = name;\r\n\r\n // When joining a channel (and not leaving).\r\n if (typeof name !== \"undefined\") {\r\n const contextName = this.createContextName(name);\r\n\r\n this.unsubscribeFunc = await this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\r\n this.registry.execute(this.SubsKey, context.data, context, extraData?.updaterId);\r\n });\r\n }\r\n\r\n this.registry.execute(this.ChangedKey, name);\r\n\r\n this.sessionController.setWindowData({ currentName: name }, \"channels\");\r\n }\r\n\r\n private async updateData(name: string, data: any): Promise {\r\n const contextName = this.createContextName(name);\r\n const fdc3Type = this.getFDC3Type(data);\r\n\r\n if (this.contexts.setPathSupported) {\r\n const pathValues: IOConnectBrowser.Contexts.PathValue[] = Object.keys(data).map((key) => {\r\n return {\r\n path: `data.${key}`,\r\n value: data[key]\r\n };\r\n });\r\n\r\n if (fdc3Type) {\r\n pathValues.push({ path: latestFDC3Type, value: fdc3Type});\r\n }\r\n\r\n await this.contexts.setPaths(contextName, pathValues);\r\n } else {\r\n if (fdc3Type) {\r\n data[latestFDC3Type] = fdc3Type;\r\n }\r\n\r\n // Pre @glue42/core 5.2.0. Note that we update the data property only.\r\n await this.contexts.update(contextName, { data });\r\n }\r\n }\r\n\r\n private getFDC3Type(data: any): string | undefined {\r\n const fdc3PropsArr = Object.keys(data).filter((key: string) => key.indexOf(\"fdc3_\") === 0);\r\n\r\n if (fdc3PropsArr.length === 0) {\r\n return;\r\n }\r\n\r\n if (fdc3PropsArr.length > 1) {\r\n throw new Error(\"FDC3 does not support updating of multiple context keys\");\r\n }\r\n\r\n return fdc3PropsArr[0].split(\"_\").slice(1).join(\"_\");\r\n }\r\n\r\n private subscribe(callback: (data: any, context: IOConnectBrowser.Channels.ChannelContext, updaterId: string) => void): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to channels, because the provided callback is not a function!\");\r\n }\r\n\r\n const currentChannel = this.current();\r\n \r\n if (currentChannel) {\r\n this.replaySubscribe(callback, currentChannel);\r\n }\r\n\r\n return this.registry.add(this.SubsKey, callback);\r\n }\r\n\r\n private async subscribeFor(name: string, callback: (data: any, context: IOConnectBrowser.Channels.ChannelContext, updaterId: string) => void): Promise {\r\n const channelNames = this.getAllChannelNames();\r\n channelNameDecoder(channelNames).runWithException(name);\r\n if (typeof callback !== \"function\") {\r\n throw new Error(`Cannot subscribe to channel ${name}, because the provided callback is not a function!`);\r\n }\r\n\r\n const contextName = this.createContextName(name);\r\n\r\n return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\r\n callback(context.data, context, extraData?.updaterId);\r\n });\r\n }\r\n\r\n private publish(data: any, name?: string): Promise {\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Cannot publish to channel, because the provided data is not an object!\");\r\n }\r\n if (typeof name !== \"undefined\") {\r\n const channelNames = this.getAllChannelNames();\r\n channelNameDecoder(channelNames).runWithException(name);\r\n\r\n return this.updateData(name, data);\r\n }\r\n\r\n if (typeof this.currentChannelName === \"undefined\") {\r\n throw new Error(\"Cannot publish to channel, because not joined to a channel!\");\r\n }\r\n\r\n return this.updateData(this.currentChannelName, data);\r\n }\r\n\r\n public async all(): Promise {\r\n const channelNames = this.getAllChannelNames();\r\n\r\n return channelNames;\r\n }\r\n\r\n private async get(name: string): Promise {\r\n const channelNames = this.getAllChannelNames();\r\n channelNameDecoder(channelNames).runWithException(name);\r\n\r\n const contextName = this.createContextName(name);\r\n\r\n const channelContext = await this.contexts.get(contextName);\r\n\r\n if (channelContext.latest_fdc3_type) {\r\n const { latest_fdc3_type, ...rest} = channelContext;\r\n\r\n return { ...rest };\r\n }\r\n\r\n return channelContext;\r\n }\r\n\r\n private current(): string {\r\n return this.currentChannelName as string;\r\n }\r\n\r\n private changed(callback: (channel: string) => void): UnsubscribeFunction {\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Cannot subscribe to channel changed, because the provided callback is not a function!\");\r\n }\r\n\r\n return this.registry.add(this.ChangedKey, callback);\r\n }\r\n\r\n private async add(info: IOConnectBrowser.Channels.ChannelContext): Promise {\r\n const channelContext = channelContextDecoder.runWithException(info);\r\n\r\n const channelWithSuchNameExists = this.getAllChannelNames().includes(channelContext.name);\r\n\r\n if (channelWithSuchNameExists) {\r\n throw new Error(\"There's an already existing channel with such name\");\r\n }\r\n\r\n await this.bridge.send(\"channels\", operations.addChannel, channelContext);\r\n\r\n return channelContext;\r\n }\r\n\r\n private replaySubscribe = (callback: (data: any, context: IOConnectBrowser.Channels.ChannelContext, updaterId: string) => void, channelId: string) => {\r\n this.get(channelId)\r\n .then((channelContext: IOConnectBrowser.Channels.ChannelContext) => {\r\n if (typeof channelContext.data === \"object\" && Object.keys(channelContext.data).length) {\r\n const contextName = this.createContextName(channelContext.name);\r\n\r\n return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\r\n callback(context.data, context, extraData?.updaterId);\r\n });\r\n }\r\n\r\n // this satisfies the TS \"noImplicitReturns\" true flag\r\n return undefined;\r\n })\r\n .then((un: (() => void) | undefined) => {\r\n if (un && typeof un === \"function\") {\r\n un();\r\n }\r\n })\r\n .catch(err => this.logger.trace(err));\r\n };\r\n\r\n private async getMy(): Promise {\r\n if (!this.currentChannelName) {\r\n return;\r\n }\r\n\r\n return this.get(this.currentChannelName);\r\n }\r\n\r\n private async getWindowsOnChannel(channel: string): Promise {\r\n const channelNames = this.getAllChannelNames();\r\n channelNameDecoder(channelNames).runWithException(channel);\r\n\r\n const { windowIds } = await this.bridge.send<{ channel: string }, WindowIdsOnChannelData>(\"channels\", operations.getWindowIdsOnChannel, { channel }, undefined, { includeOperationCheck: true });\r\n\r\n const result = windowIds.reduce((windows, windowId) => {\r\n const window = this.windowsController.findById(windowId);\r\n\r\n return window ? [...windows, window] : windows;\r\n }, []);\r\n\r\n return result;\r\n }\r\n \r\n private async getWindowsWithChannels(filter?: IOConnectBrowser.Channels.WindowWithChannelFilter): Promise {\r\n const operationData: WrappedWindowWithChannelFilter = filter !== undefined\r\n ? { filter: windowWithChannelFilterDecoder.runWithException(filter) }\r\n : {};\r\n\r\n const { windowIdsWithChannels } = await this.bridge.send(\"channels\", operations.getWindowIdsWithChannels, operationData, undefined, { includeOperationCheck: true });\r\n\r\n const result = windowIdsWithChannels.reduce((windowsWithChannels, { application, channel, windowId }) => {\r\n const window = this.windowsController.findById(windowId);\r\n\r\n return window ? [...windowsWithChannels, { application, channel, window }] : windowsWithChannels;\r\n }, []);\r\n\r\n return result;\r\n }\r\n}\r\n","import { anyDecoder } from \"../shared/decoders\";\r\nimport { BridgeOperation } from \"../shared/types\";\r\n\r\nexport type SystemOperationTypes = \"getEnvironment\" | \"getBase\" | \"platformShutdown\";\r\n\r\nexport const operations: { [key in SystemOperationTypes]: BridgeOperation } = {\r\n getEnvironment: { name: \"getEnvironment\", resultDecoder: anyDecoder },\r\n getBase: { name: \"getBase\", resultDecoder: anyDecoder },\r\n platformShutdown: { name: \"platformShutdown\" }\r\n};\r\n","import { IOConnectCore } from \"@interopio/core\";\r\nimport { GlueBridge } from \"../communication/bridge\";\r\nimport { systemOperationTypesDecoder } from \"../shared/decoders\";\r\nimport { IoC } from \"../shared/ioc\";\r\nimport { LibController } from \"../shared/types\";\r\nimport { operations } from \"./protocol\";\r\n\r\nexport class SystemController implements LibController {\r\n private bridge!: GlueBridge;\r\n private ioc!: IoC;\r\n\r\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\r\n this.bridge = ioc.bridge;\r\n this.ioc = ioc;\r\n\r\n this.addOperationsExecutors();\r\n\r\n await this.setEnvironment();\r\n }\r\n\r\n public async handleBridgeMessage(args: any): Promise {\r\n const operationName = systemOperationTypesDecoder.runWithException(args.operation);\r\n\r\n const operation = operations[operationName];\r\n\r\n if (!operation.execute) {\r\n return;\r\n }\r\n\r\n let operationData: any = args.data;\r\n\r\n if (operation.dataDecoder) {\r\n operationData = operation.dataDecoder.runWithException(args.data);\r\n }\r\n\r\n return await operation.execute(operationData);\r\n }\r\n\r\n private async processPlatformShutdown(): Promise {\r\n\r\n Object.values(this.ioc.controllers).forEach((controller) => controller.handlePlatformShutdown ? controller.handlePlatformShutdown() : null);\r\n\r\n this.ioc.preferredConnectionController.stop();\r\n\r\n this.ioc.eventsDispatcher.stop();\r\n\r\n await this.bridge.stop();\r\n\r\n }\r\n\r\n private async setEnvironment(): Promise {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const environment = await this.bridge.send(\"system\", operations.getEnvironment, undefined);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const base = await this.bridge.send(\"system\", operations.getBase, undefined);\r\n\r\n const globalNamespace = (window as any).glue42core || (window as any).iobrowser;\r\n\r\n const globalNamespaceName = (window as any).glue42core ? \"glue42core\" : \"iobrowser\";\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const globalObj = Object.assign({}, globalNamespace, base, { environment });\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n (window as any)[globalNamespaceName] = Object.freeze(globalObj);\r\n }\r\n\r\n private addOperationsExecutors(): void {\r\n operations.platformShutdown.execute = this.processPlatformShutdown.bind(this);\r\n }\r\n}","/* eslint-disable @typescript-eslint/no-empty-function */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { IOConnectBrowser } from \"../../browser\";\r\n\r\nexport class Notification implements IOConnectBrowser.Notifications.Notification {\r\n\r\n public onclick: () => any = () => { };\r\n public onshow: () => any = () => { };\r\n public id: string;\r\n public title: string;\r\n public badge?: string | undefined;\r\n public body?: string | undefined;\r\n public data?: any;\r\n public dir?: \"auto\" | \"ltr\" | \"rtl\" | undefined;\r\n public icon?: string | undefined;\r\n public image?: string | undefined;\r\n public lang?: string | undefined;\r\n public renotify?: boolean | undefined;\r\n public requireInteraction?: boolean | undefined;\r\n public silent?: boolean | undefined;\r\n public tag?: string | undefined;\r\n public timestamp?: number | undefined;\r\n public vibrate?: number[] | undefined;\r\n public clickInterop?: IOConnectBrowser.Notifications.InteropActionSettings | undefined;\r\n public actions?: IOConnectBrowser.Notifications.NotificationAction[] | undefined;\r\n public focusPlatformOnDefaultClick?: boolean | undefined;\r\n public severity?: \"Low\" | \"Medium\" | \"High\" | \"Critical\" | \"None\" | undefined;\r\n public showToast?: boolean | undefined;\r\n public showInPanel?: boolean | undefined;\r\n\r\n constructor(config: IOConnectBrowser.Notifications.RaiseOptions, id: string) {\r\n this.id = id;\r\n this.badge = config.badge;\r\n this.body = config.body;\r\n this.data = config.data;\r\n this.dir = config.dir;\r\n this.icon = config.icon;\r\n this.image = config.image;\r\n this.lang = config.lang;\r\n this.renotify = config.renotify;\r\n this.requireInteraction = config.requireInteraction;\r\n this.silent = config.silent;\r\n this.tag = config.tag;\r\n this.timestamp = config.timestamp;\r\n this.vibrate = config.vibrate;\r\n this.title = config.title;\r\n this.clickInterop = config.clickInterop;\r\n this.actions = config.actions;\r\n this.focusPlatformOnDefaultClick = config.focusPlatformOnDefaultClick;\r\n this.severity = config.severity;\r\n this.showToast = config.showToast;\r\n this.showInPanel = config.showInPanel;\r\n }\r\n\r\n}","import { Decoder, oneOf, constant, object, boolean } from \"decoder-validate\";\r\nimport { ExtensionConfig, ExtensionOperationTypes } from \"./protocol\";\r\n\r\nexport const extensionOperationTypesDecoder: Decoder = oneOf<\"clientHello\">(\r\n constant(\"clientHello\")\r\n);\r\n\r\nexport const extensionConfigDecoder: Decoder = object({\r\n widget: object({\r\n inject: boolean()\r\n })\r\n});\r\n","import { IOConnectBrowser } from \"../../browser\";\r\nimport { BridgeOperation } from \"../shared/types\";\r\nimport { extensionConfigDecoder } from \"./decoders\";\r\n\r\nexport type ExtensionOperationTypes = \"clientHello\";\r\n\r\nexport const operations: { [key in ExtensionOperationTypes]: BridgeOperation } = {\r\n clientHello: { name: \"clientHello\", resultDecoder: extensionConfigDecoder }\r\n};\r\n\r\nexport interface ExtensionConfig {\r\n widget: {\r\n inject: boolean;\r\n };\r\n}\r\n\r\nexport interface WidgetInjectionPermission { \r\n command: \"permissionResponse\";\r\n allowed: boolean;\r\n channels?: IOConnectBrowser.Channels.ChannelContext[]; \r\n currentChannel?: IOConnectBrowser.Channels.ChannelContext; \r\n}","/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { IOConnectCore } from \"@interopio/core\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\nimport { ChannelsController } from \"../channels/controller\";\r\nimport { GlueBridge } from \"../communication/bridge\";\r\nimport { EventsDispatcher } from \"../shared/dispatcher\";\r\nimport { IoC } from \"../shared/ioc\";\r\nimport { LibController } from \"../shared/types\";\r\nimport { ExtensionConfig, operations, WidgetInjectionPermission } from \"./protocol\";\r\n\r\nexport class ExtController implements LibController {\r\n\r\n private windowId!: string;\r\n private logger!: IOConnectBrowser.Logger.API;\r\n private bridge!: GlueBridge;\r\n private eventsDispatcher!: EventsDispatcher;\r\n private channelsController!: ChannelsController;\r\n private config!: ExtensionConfig;\r\n private channels: IOConnectBrowser.Channels.ChannelContext[] = [];\r\n private unsubFuncs: (() => void)[] = [];\r\n\r\n private readonly contentCommands: { [key in string]: { name: string; handle: (message: any) => Promise } } = {\r\n widgetVisualizationPermission: { name: \"widgetVisualizationPermission\", handle: this.handleWidgetVisualizationPermission.bind(this) },\r\n changeChannel: { name: \"changeChannel\", handle: this.handleChangeChannel.bind(this) }\r\n };\r\n\r\n public handlePlatformShutdown(): void {\r\n this.unsubFuncs.forEach((unsub) => unsub());\r\n this.channels = [];\r\n this.unsubFuncs = [];\r\n }\r\n\r\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\r\n\r\n this.logger = coreGlue.logger.subLogger(\"extension.controller.web\");\r\n \r\n this.windowId = ioc.publicWindowId;\r\n\r\n this.logger.trace(\"starting the extension web controller\");\r\n\r\n this.bridge = ioc.bridge;\r\n this.channelsController = ioc.channelsController;\r\n this.eventsDispatcher = ioc.eventsDispatcher;\r\n\r\n // TODO: Maybe think about a better way, because the platform will reject and log an error\r\n try {\r\n await this.registerWithPlatform();\r\n } catch (error) {\r\n // this is soft controller initialization to ensure that\r\n // this non-essential controller will not break Glue Web \r\n // initialization combined with older platforms\r\n return;\r\n }\r\n\r\n this.channels = await this.channelsController.list();\r\n\r\n const unsubDispatcher = this.eventsDispatcher.onContentMessage(this.handleContentMessage.bind(this));\r\n const unsubChannels = this.channelsController.onChanged((channel) => {\r\n this.eventsDispatcher.sendContentMessage({ command: \"channelChange\", newChannel: channel });\r\n });\r\n\r\n this.unsubFuncs.push(unsubDispatcher);\r\n this.unsubFuncs.push(unsubChannels);\r\n }\r\n\r\n public async handleBridgeMessage(_: any): Promise {\r\n // noop\r\n }\r\n\r\n private handleContentMessage(message: any): void {\r\n\r\n if (!message || typeof message.command !== \"string\") {\r\n return;\r\n }\r\n\r\n const foundHandler = this.contentCommands[message.command];\r\n\r\n if (!foundHandler) {\r\n return;\r\n }\r\n\r\n foundHandler.handle(message);\r\n }\r\n\r\n private async registerWithPlatform(): Promise {\r\n this.logger.trace(\"registering with the platform\");\r\n\r\n this.config = await this.bridge.send<{ windowId: string }, ExtensionConfig>(\"extension\", operations.clientHello, { windowId: this.windowId });\r\n\r\n this.logger.trace(\"the platform responded to the hello message with a valid extension config\");\r\n }\r\n\r\n private async handleWidgetVisualizationPermission(): Promise {\r\n if (!this.config?.widget.inject) {\r\n return this.eventsDispatcher.sendContentMessage({ command: \"permissionResponse\", allowed: false });\r\n }\r\n\r\n const currentChannel = this.channels.find((channel) => channel.name === this.channelsController.my());\r\n\r\n this.eventsDispatcher.sendContentMessage({ command: \"permissionResponse\", allowed: true, channels: this.channels, currentChannel });\r\n }\r\n\r\n private async handleChangeChannel(message: { name: string }): Promise {\r\n if (message.name === \"no-channel\") {\r\n await this.channelsController.leave();\r\n return;\r\n }\r\n\r\n await this.channelsController.join(message.name);\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport {\r\n default as CallbackRegistryFactory,\r\n CallbackRegistry,\r\n UnsubscribeFunction,\r\n} from \"callback-registry\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\nimport { Glue42EventPayload, ParsedConfig } from \"./types\";\r\n\r\nexport class EventsDispatcher {\r\n private glue!: IOConnectBrowser.API;\r\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\r\n private readonly glue42EventName = \"Glue42\";\r\n private _handleMessage!: (event: Event) => void;\r\n\r\n constructor(private readonly config: ParsedConfig) { }\r\n\r\n private readonly events: { [key in string]: { name: string; handle: (glue42Data: any) => void | Promise } } = {\r\n notifyStarted: { name: \"notifyStarted\", handle: this.handleNotifyStarted.bind(this) },\r\n contentInc: { name: \"contentInc\", handle: this.handleContentInc.bind(this) },\r\n requestGlue: { name: \"requestGlue\", handle: this.handleRequestGlue.bind(this) }\r\n };\r\n\r\n public stop(): void {\r\n window.removeEventListener(this.glue42EventName, this._handleMessage);\r\n }\r\n\r\n public start(glue: IOConnectBrowser.API): void {\r\n this.glue = glue;\r\n\r\n this.wireCustomEventListener();\r\n\r\n this.announceStarted();\r\n }\r\n\r\n public sendContentMessage(message: T): void {\r\n this.send(\"contentOut\", \"glue42core\", message);\r\n }\r\n\r\n public onContentMessage(callback: (message: any) => void): UnsubscribeFunction {\r\n return this.registry.add(\"content-inc\", callback);\r\n }\r\n\r\n private wireCustomEventListener(): void {\r\n\r\n this._handleMessage = this.handleMessage.bind(this);\r\n\r\n window.addEventListener(this.glue42EventName, this._handleMessage);\r\n }\r\n\r\n private handleMessage(event: Event): void {\r\n const data = (event as CustomEvent).detail;\r\n\r\n const namespace = data?.glue42 ?? data?.glue42core;\r\n \r\n if (!namespace) {\r\n return;\r\n }\r\n\r\n const glue42Event: string = namespace.event;\r\n\r\n const foundHandler = this.events[glue42Event];\r\n\r\n if (!foundHandler) {\r\n return;\r\n }\r\n\r\n foundHandler.handle(namespace.message);\r\n }\r\n\r\n private announceStarted(): void {\r\n this.send(\"start\", \"glue42\");\r\n }\r\n\r\n private handleRequestGlue(): void {\r\n if (!this.config.exposeAPI) {\r\n this.send(\"requestGlueResponse\", \"glue42\", { error: \"Will not give access to the underlying Glue API, because it was explicitly denied upon initialization.\" });\r\n return;\r\n }\r\n\r\n this.send(\"requestGlueResponse\", \"glue42\", { glue: this.glue });\r\n }\r\n\r\n private handleNotifyStarted(): void {\r\n this.announceStarted();\r\n }\r\n\r\n private handleContentInc(message: any): void {\r\n this.registry.execute(\"content-inc\", message);\r\n }\r\n\r\n private send(eventName: string, namespace: \"glue42core\" | \"glue42\", message?: any): void {\r\n const payload: Glue42EventPayload = {};\r\n payload[namespace] = { event: eventName, message };\r\n\r\n const event = new CustomEvent(this.glue42EventName, { detail: payload });\r\n\r\n window.dispatchEvent(event);\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { IOConnectCore } from \"@interopio/core\";\r\nimport { UnsubscribeFunction } from \"callback-registry\";\r\nimport { generate } from \"shortid\";\r\nimport { Glue42CoreMessageTypes, webPlatformTransportName } from \"../shared/constants\";\r\nimport { ParsedConfig, PlatformMessages, Transaction, TransportState } from \"../shared/types\";\r\n\r\nexport class PreferredConnectionController {\r\n\r\n private readonly transactionTimeout = 15000;\r\n private readonly transactionLocks: { [key in string]: Transaction } = {};\r\n private webPlatformTransport: any;\r\n private webPlatformMessagesUnsubscribe: UnsubscribeFunction | undefined;\r\n private reconnectCounter = 0;\r\n private readonly logger: IOConnectCore.Logger.API;\r\n\r\n constructor(private readonly coreGlue: IOConnectCore.API) {\r\n this.logger = this.coreGlue.logger.subLogger(\"web.preferred.connection.controller\");\r\n }\r\n\r\n public stop(): void {\r\n if (!this.webPlatformMessagesUnsubscribe) {\r\n return;\r\n }\r\n\r\n this.webPlatformMessagesUnsubscribe();\r\n }\r\n\r\n public async start(coreConfig: ParsedConfig): Promise {\r\n if (coreConfig.isPlatformInternal) {\r\n this.logger.trace(\"This is an internal client to the platform, skipping all client preferred communication logic.\");\r\n return;\r\n }\r\n\r\n const isConnectedToPlatform = (this.coreGlue as any).connection.transport.name() === webPlatformTransportName;\r\n\r\n if (!isConnectedToPlatform) {\r\n throw new Error(\"Cannot initiate the Glue Web Bridge, because the initial connection was not handled by a Web Platform transport.\");\r\n }\r\n\r\n if (!(this.coreGlue as any).connection.transport.isPreferredActivated) {\r\n this.logger.trace(\"The platform of this client was configured without a preferred connection, skipping the rest of the initialization.\");\r\n return;\r\n }\r\n\r\n this.webPlatformTransport = (this.coreGlue as any).connection.transport;\r\n\r\n this.webPlatformMessagesUnsubscribe = this.webPlatformTransport.onMessage(this.handleWebPlatformMessage.bind(this));\r\n\r\n const transportState = await this.getCurrentPlatformTransportState();\r\n\r\n await this.checkSwitchTransport(transportState);\r\n }\r\n\r\n private handleWebPlatformMessage(msg: string | object): void {\r\n if (typeof msg === \"string\") {\r\n return;\r\n }\r\n\r\n const isConnectedToPlatform = (this.coreGlue as any).connection.transport.name() === webPlatformTransportName;\r\n\r\n const type = (msg as any).type;\r\n const args = (msg as any).args;\r\n const transactionId = (msg as any).transactionId;\r\n\r\n if (type === Glue42CoreMessageTypes.transportSwitchRequest.name) {\r\n return this.handleTransportSwitchRequest(args, transactionId);\r\n }\r\n\r\n if (type === Glue42CoreMessageTypes.platformUnload.name && !isConnectedToPlatform) {\r\n return this.handlePlatformUnload();\r\n }\r\n\r\n if (type === Glue42CoreMessageTypes.getCurrentTransportResponse.name) {\r\n return this.handleGetCurrentTransportResponse(args, transactionId);\r\n }\r\n\r\n if (type === Glue42CoreMessageTypes.checkPreferredLogic.name) {\r\n return this.handleCheckPreferredLogic(transactionId);\r\n }\r\n\r\n if (type === Glue42CoreMessageTypes.checkPreferredConnection.name) {\r\n return this.handleCheckPreferredConnection(args, transactionId);\r\n }\r\n\r\n }\r\n\r\n private async reEstablishPlatformPort(): Promise {\r\n try {\r\n await this.webPlatformTransport.connect();\r\n } catch (error) {\r\n this.logger.trace(`Error when re-establishing port connection to the platform: ${JSON.stringify(error)}`);\r\n --this.reconnectCounter;\r\n\r\n if (this.reconnectCounter > 0) {\r\n return this.reEstablishPlatformPort();\r\n }\r\n\r\n this.logger.warn(\"This client lost connection to the platform while connected to a preferred GW and was not able to re-connect to the platform.\");\r\n }\r\n\r\n this.logger.trace(\"The connection to the platform was re-established, closing the connection to the web gateway.\");\r\n\r\n this.reconnectCounter = 0;\r\n\r\n this.webPlatformTransport.close();\r\n\r\n const transportState = await this.getCurrentPlatformTransportState();\r\n\r\n await this.checkSwitchTransport(transportState);\r\n\r\n }\r\n\r\n private async checkSwitchTransport(config: TransportState): Promise {\r\n const myCurrentTransportName: string = (this.coreGlue as any).connection.transport.name();\r\n\r\n if (myCurrentTransportName === config.transportName) {\r\n this.logger.trace(\"A check switch was requested, but the platform transport and my transport are identical, no switch is necessary\");\r\n return;\r\n }\r\n\r\n this.logger.trace(`A check switch was requested and a transport switch is necessary, because this client is now on ${myCurrentTransportName}, but it should reconnect to ${JSON.stringify(config)}`);\r\n\r\n const result = await this.coreGlue.connection.switchTransport(config);\r\n\r\n this.setConnected();\r\n\r\n this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`);\r\n }\r\n\r\n private async getCurrentPlatformTransportState(): Promise {\r\n\r\n this.logger.trace(\"Requesting the current transport state of the platform.\");\r\n\r\n const transaction = this.setTransaction(Glue42CoreMessageTypes.getCurrentTransport.name);\r\n\r\n this.sendPlatformMessage(Glue42CoreMessageTypes.getCurrentTransport.name, transaction.id);\r\n\r\n const transportState = await transaction.lock;\r\n\r\n this.logger.trace(`The platform responded with transport state: ${JSON.stringify(transportState)}`);\r\n\r\n return transportState;\r\n }\r\n\r\n private setTransaction(operation: PlatformMessages): Transaction {\r\n const transaction: Transaction = {} as Transaction;\r\n\r\n const transactionId = generate();\r\n\r\n const transactionLock = new Promise((resolve, reject) => {\r\n\r\n let transactionLive = true;\r\n\r\n transaction.lift = (args): void => {\r\n transactionLive = false;\r\n delete this.transactionLocks[transactionId];\r\n resolve(args);\r\n };\r\n\r\n transaction.fail = (reason): void => {\r\n transactionLive = false;\r\n delete this.transactionLocks[transactionId];\r\n reject(reason);\r\n };\r\n\r\n setTimeout(() => {\r\n if (!transactionLive) {\r\n return;\r\n }\r\n\r\n transactionLive = false;\r\n this.logger.warn(`Transaction for operation: ${operation} timed out.`);\r\n delete this.transactionLocks[transactionId];\r\n reject(`Transaction for operation: ${operation} timed out.`);\r\n }, this.transactionTimeout);\r\n });\r\n\r\n transaction.lock = transactionLock;\r\n\r\n transaction.id = transactionId;\r\n\r\n this.transactionLocks[transactionId] = transaction;\r\n\r\n return transaction;\r\n }\r\n\r\n private sendPlatformMessage(type: PlatformMessages, transactionId: string, args?: any): void {\r\n this.logger.trace(`Sending a platform message of type: ${type}, id: ${transactionId} and args: ${JSON.stringify(args)}`);\r\n this.webPlatformTransport.sendObject({\r\n glue42core: { type, args, transactionId }\r\n });\r\n }\r\n\r\n private handleTransportSwitchRequest(args: any, transactionId: string): void {\r\n this.logger.trace(`Received a transport switch request with id: ${transactionId} and data: ${JSON.stringify(args)}`);\r\n this.coreGlue.connection.switchTransport(args.switchSettings)\r\n .then((result) => {\r\n this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`);\r\n this.setConnected();\r\n this.sendPlatformMessage(Glue42CoreMessageTypes.transportSwitchResponse.name, transactionId, { success: result.success });\r\n })\r\n .catch((error) => {\r\n this.logger.error(error);\r\n this.sendPlatformMessage(Glue42CoreMessageTypes.transportSwitchResponse.name, transactionId, { success: false });\r\n });\r\n }\r\n\r\n private handlePlatformUnload(): void {\r\n this.reconnectCounter = 5;\r\n this.logger.trace(\"The platform was unloaded while I am connected to a preferred connection, re-establishing the port connection.\");\r\n this.reEstablishPlatformPort();\r\n }\r\n\r\n private handleGetCurrentTransportResponse(args: any, transactionId: string): void {\r\n this.logger.trace(`Got a current transport response from the platform with id: ${transactionId} and data: ${JSON.stringify(args)}`);\r\n const transportState = args.transportState as TransportState;\r\n\r\n const transaction = this.transactionLocks[transactionId];\r\n\r\n transaction?.lift(transportState);\r\n }\r\n\r\n private handleCheckPreferredLogic(transactionId: string): void {\r\n setTimeout(() => this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredLogicResponse.name, transactionId), 0);\r\n }\r\n\r\n private handleCheckPreferredConnection(args: any, transactionId: string): void {\r\n const url = args.url;\r\n\r\n this.logger.trace(`Testing the possible connection to: ${url}`);\r\n\r\n this.checkPreferredConnection(url)\r\n .then((result) => {\r\n this.logger.trace(`The connection to ${url} is possible`);\r\n this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredConnectionResponse.name, transactionId, result);\r\n })\r\n .catch((error) => {\r\n this.logger.trace(`The connection to ${url} is not possible`);\r\n this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredConnectionResponse.name, transactionId, { error });\r\n });\r\n }\r\n\r\n private checkPreferredConnection(url: string): Promise<{ live: boolean }> {\r\n\r\n return new Promise<{ live: boolean }>((resolve) => {\r\n const ws = new WebSocket(url);\r\n\r\n ws.onerror = (): void => resolve({ live: false });\r\n\r\n ws.onopen = (): void => {\r\n ws.close();\r\n resolve({ live: true });\r\n };\r\n\r\n });\r\n\r\n }\r\n\r\n private setConnected(): void {\r\n this.webPlatformTransport.manualSetReadyState();\r\n }\r\n}\r\n","import { IOConnectCore } from \"@interopio/core\";\r\nimport shortid from \"shortid\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\nimport { AppManagerController } from \"../appManager/controller\";\r\nimport { GlueBridge } from \"../communication/bridge\";\r\nimport { intentResolverResponseDecoder } from \"../shared/decoders\";\r\nimport { PromisePlus } from \"../shared/promise-plus\";\r\nimport { systemOperations } from \"../shared/systemOperations\";\r\nimport { LibDomains, OperationCheckConfig, OperationCheckResult, SimpleItemIdRequest, WorkspaceFrameBoundsResult } from \"../shared/types\";\r\nimport { WindowsController } from \"../windows/controller\";\r\nimport { INTENTS_RESOLVER_HEIGHT, INTENTS_RESOLVER_INTEROP_PREFIX, INTENTS_RESOLVER_WIDTH } from \"./constants\";\r\nimport { IntentsResolverResponse, IntentsResolverResponsePromise, operations } from \"./protocol\";\r\nimport { IntentRequestWithResolverConfig, IntentsResolverStartContext, ShouldResolverOpen, ResolverConfig, IntentResolverResponse } from \"./types\";\r\n\r\nexport class LegacyIntentsHelper {\r\n private logger!: IOConnectBrowser.Logger.API;\r\n\r\n private intentsResolverResponsePromises: { [instanceId: string]: IntentsResolverResponsePromise } = {};\r\n\r\n constructor(\r\n logger: IOConnectBrowser.Logger.API,\r\n private readonly bridge: GlueBridge,\r\n private readonly interop: IOConnectCore.AGM.API,\r\n private readonly appManagerController: AppManagerController,\r\n private readonly windowsController: WindowsController\r\n ) {\r\n this.logger = this.configureLogger(logger);\r\n }\r\n\r\n public async raise(requestWithResolverInfo: IntentRequestWithResolverConfig, findIntentFn: (intentFilter?: string | IOConnectBrowser.Intents.IntentFilter | undefined) => Promise): Promise {\r\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\r\n\r\n const intent = (await findIntentFn(intentRequest.intent)).find(intent => intent.name === intentRequest.intent);\r\n\r\n if (!intent) {\r\n throw new Error(`Intent with name ${intentRequest.intent} not found`);\r\n }\r\n\r\n const { open, reason } = this.checkIfResolverShouldBeOpened(intent, intentRequest, resolverConfig);\r\n\r\n if (!open) {\r\n this.logger?.trace(`Intent Resolver UI won't be used. Reason: ${reason}`);\r\n\r\n return this.invokeRaiseIntent(intentRequest);\r\n }\r\n\r\n const intentResult = await this.raiseIntentWithResolverApp(requestWithResolverInfo);\r\n\r\n return intentResult;\r\n }\r\n\r\n private configureLogger(loggerInst: IOConnectBrowser.Logger.API): IOConnectBrowser.Logger.API {\r\n return loggerInst.subLogger(\"intents.legacy.helper.web\");\r\n }\r\n\r\n private async raiseIntentWithResolverApp(requestWithResolverInfo: IntentRequestWithResolverConfig): Promise {\r\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\r\n\r\n this.logger.trace(`Intents Resolver UI with app name ${resolverConfig.appName} will be used`);\r\n\r\n const responseMethodName = await this.registerResponseMethod();\r\n\r\n this.logger.trace(`Registered interop method ${responseMethodName}`);\r\n\r\n const resolverInstance = await this.openIntentResolverApplication(requestWithResolverInfo, responseMethodName);\r\n\r\n this.logger.trace(`Intents Resolver Instance with id ${resolverInstance.id} opened`);\r\n\r\n const handler = await this.handleInstanceResponse(resolverInstance.id);\r\n\r\n const target = handler.type === \"app\"\r\n ? { app: handler.applicationName }\r\n : { instance: handler.instanceId };\r\n\r\n this.logger.trace(`Intent handler chosen by the user: ${JSON.stringify(target)}`);\r\n\r\n const intentResult = await this.invokeRaiseIntent({ ...intentRequest, target });\r\n\r\n return intentResult;\r\n }\r\n\r\n private async handleInstanceResponse(instanceId: string): Promise {\r\n try {\r\n const { handler, intent } = await this.intentsResolverResponsePromises[instanceId].promise;\r\n\r\n this.logger?.trace(`Intent handler chosen for intent ${intent}: ${JSON.stringify(handler)}`);\r\n\r\n this.stopResolverInstance(instanceId);\r\n\r\n return handler;\r\n\r\n } catch (error) {\r\n this.stopResolverInstance(instanceId);\r\n\r\n throw new Error(error as string);\r\n }\r\n }\r\n\r\n private invokeRaiseIntent(requestObj: IOConnectBrowser.Intents.IntentRequest): Promise {\r\n return this.bridge.send(\"intents\", operations.raiseIntent, requestObj);\r\n }\r\n\r\n private async registerResponseMethod(): Promise {\r\n const methodName = INTENTS_RESOLVER_INTEROP_PREFIX + shortid();\r\n\r\n await this.interop.register(methodName, this.resolverResponseHandler.bind(this));\r\n\r\n return methodName;\r\n }\r\n\r\n private async openIntentResolverApplication(requestWithResolverInfo: IntentRequestWithResolverConfig, methodName: string): Promise {\r\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\r\n\r\n const startContext = this.buildStartContext(intentRequest, methodName);\r\n\r\n const startOptions = await this.buildStartOptions();\r\n\r\n this.logger.trace(`Starting Intents Resolver UI with context: ${JSON.stringify(startContext)} and options: ${startOptions}`);\r\n\r\n const instance = await this.appManagerController.getApplication(resolverConfig.appName).start(startContext, startOptions);\r\n\r\n this.logger.trace(`Intents Resolver instance with id ${instance.id} opened`);\r\n\r\n this.subscribeOnInstanceStopped(instance);\r\n\r\n this.createResponsePromise(intentRequest.intent, instance.id, methodName, resolverConfig.waitResponseTimeout);\r\n\r\n return instance;\r\n }\r\n\r\n private async cleanUpIntentResolverPromise(instanceId: string): Promise {\r\n const intentPromise = this.intentsResolverResponsePromises[instanceId];\r\n\r\n if (!intentPromise) {\r\n return;\r\n }\r\n\r\n // typings are wrong and mark unregister as a sync method\r\n const unregisterPromise = this.interop.unregister(intentPromise.methodName) as unknown as Promise;\r\n\r\n unregisterPromise.catch((error) => this.logger.warn(error));\r\n\r\n delete this.intentsResolverResponsePromises[instanceId];\r\n }\r\n\r\n private buildStartContext(requestObj: IOConnectBrowser.Intents.IntentRequest, methodName: string): IntentsResolverStartContext {\r\n return {\r\n intent: requestObj,\r\n callerId: this.interop.instance.instance!,\r\n methodName\r\n };\r\n }\r\n\r\n private async buildStartOptions(): Promise {\r\n const bounds = await this.getTargetBounds();\r\n\r\n return {\r\n top: (bounds.height - INTENTS_RESOLVER_HEIGHT) / 2 + bounds.top,\r\n left: (bounds.width - INTENTS_RESOLVER_WIDTH) / 2 + bounds.left,\r\n width: INTENTS_RESOLVER_WIDTH,\r\n height: INTENTS_RESOLVER_HEIGHT\r\n };\r\n }\r\n\r\n private async getTargetBounds(): Promise {\r\n const bounds = await this.tryGetWindowBasedBounds() || await this.tryGetWorkspaceBasedBounds();\r\n\r\n if (bounds) {\r\n this.logger.trace(`Opening Intents Resolver UI with bounds: ${JSON.stringify(bounds)}`);\r\n\r\n return bounds;\r\n }\r\n\r\n const defaultBounds: IOConnectBrowser.Windows.Bounds = {\r\n top: (window as any).screen.availTop || 0,\r\n left: (window as any).screen.availLeft || 0,\r\n width: window.screen.width,\r\n height: window.screen.height\r\n };\r\n\r\n this.logger.trace(`Opening Intents Resolver UI relative to my screen bounds: ${JSON.stringify(defaultBounds)}`);\r\n\r\n return defaultBounds;\r\n }\r\n\r\n private async tryGetWindowBasedBounds(): Promise {\r\n try {\r\n const myWindowBounds = await this.windowsController.my().getBounds();\r\n\r\n this.logger.trace(`Opening the resolver UI relative to my window bounds: ${JSON.stringify(myWindowBounds)}`);\r\n\r\n return myWindowBounds;\r\n } catch (error) {\r\n this.logger.trace(`Failure to get my window bounds: ${JSON.stringify(error)}`);\r\n }\r\n \r\n // this satisfies the TS \"noImplicitReturns\" true flag\r\n return undefined;\r\n }\r\n\r\n private async tryGetWorkspaceBasedBounds(): Promise {\r\n try {\r\n await this.bridge.send(\"workspaces\" as LibDomains, systemOperations.operationCheck, { operation: \"getWorkspaceWindowFrameBounds\" });\r\n\r\n const bridgeResponse = await this.bridge.send(\"workspaces\" as LibDomains, systemOperations.getWorkspaceWindowFrameBounds, { itemId: this.windowsController.my().id });\r\n\r\n const myWorkspaceBounds = bridgeResponse.bounds;\r\n\r\n this.logger.trace(`Opening the resolver UI relative to my workspace frame window bounds: ${JSON.stringify(myWorkspaceBounds)}`);\r\n\r\n return myWorkspaceBounds;\r\n } catch (error) {\r\n this.logger.trace(`Failure to get my workspace frame window bounds: ${JSON.stringify(error)}`);\r\n }\r\n \r\n // this satisfies the TS \"noImplicitReturns\" true flag\r\n return undefined;\r\n }\r\n\r\n private subscribeOnInstanceStopped(instance: IOConnectBrowser.AppManager.Instance): void {\r\n const { application } = instance;\r\n\r\n const unsub = application.onInstanceStopped((inst: IOConnectBrowser.AppManager.Instance) => {\r\n if (inst.id !== instance.id) {\r\n return;\r\n }\r\n\r\n const intentPromise = this.intentsResolverResponsePromises[inst.id];\r\n\r\n if (!intentPromise) {\r\n return unsub();\r\n }\r\n\r\n intentPromise.reject(`Cannot resolve raised intent \"${intentPromise.intent}\" - User closed ${application.name} app without choosing an intent handler`);\r\n\r\n this.cleanUpIntentResolverPromise(inst.id);\r\n\r\n unsub();\r\n });\r\n }\r\n\r\n private createResponsePromise(intent: string, instanceId: string, methodName: string, timeout: number): void {\r\n let resolve: (arg: IntentsResolverResponse) => void = () => { };\r\n let reject: (reason: string) => void = () => { };\r\n\r\n const promise = PromisePlus((res, rej) => {\r\n resolve = res;\r\n reject = rej;\r\n }, timeout, `Timeout of ${timeout}ms hit waiting for the user to choose a handler for intent ${intent}`);\r\n\r\n this.intentsResolverResponsePromises[instanceId] = { intent, resolve, reject, promise, methodName };\r\n }\r\n\r\n private resolverResponseHandler(args: any, callerId: IOConnectBrowser.Interop.Instance): void {\r\n const response = intentResolverResponseDecoder.run(args);\r\n\r\n const instanceId = callerId.instance;\r\n\r\n if (response.ok) {\r\n this.logger.trace(`Intent Resolver instance with id ${instanceId} send a valid response: ${JSON.stringify(response.result)}`);\r\n\r\n return this.intentsResolverResponsePromises[instanceId!].resolve(response.result);\r\n }\r\n\r\n this.logger.trace(`Intent Resolver instance with id ${instanceId} sent an invalid response. Error: ${JSON.stringify(response.error)}`);\r\n\r\n this.intentsResolverResponsePromises[instanceId!].reject(response.error.message);\r\n\r\n this.stopResolverInstance(instanceId!);\r\n }\r\n\r\n private stopResolverInstance(instanceId: string): void {\r\n const searchedInstance = this.appManagerController.getInstances().find((inst: IOConnectBrowser.AppManager.Instance) => inst.id === instanceId);\r\n\r\n if (!searchedInstance) {\r\n return;\r\n }\r\n\r\n searchedInstance.stop().catch(err => this.logger.error(err));\r\n }\r\n\r\n private checkIfIntentHasMoreThanOneHandler(intent: IOConnectBrowser.Intents.Intent, request: IOConnectBrowser.Intents.IntentRequest): boolean {\r\n // if a specific app / instance is passed, do not open the resolver\r\n if (typeof request.target === \"object\") {\r\n return false;\r\n }\r\n\r\n return request.handlers ? request.handlers.length > 1 : intent.handlers.length > 1;\r\n }\r\n\r\n private checkIfResolverShouldBeOpened(intent: IOConnectBrowser.Intents.Intent, intentRequest: IOConnectBrowser.Intents.IntentRequest, resolverConfig: ResolverConfig): ShouldResolverOpen {\r\n if (!resolverConfig.enabled) {\r\n return { open: false, reason: \"Intent Resolver is disabled. Raising intent to first found handler\" };\r\n }\r\n\r\n const intentsResolverApp = this.appManagerController.getApplication(resolverConfig.appName);\r\n\r\n if (!intentsResolverApp) {\r\n return { open: false, reason: `Application with name ${resolverConfig.appName} not found` };\r\n }\r\n\r\n const hasMoreThanOneHandler = this.checkIfIntentHasMoreThanOneHandler(intent, intentRequest);\r\n\r\n if (!hasMoreThanOneHandler) {\r\n return { open: false, reason: \"Raised intent has only one handler\" };\r\n }\r\n\r\n return { open: true };\r\n }\r\n}","import { IOConnectBrowser } from \"../../browser\";\r\nimport { allThemesResponseDecoder, selectThemeConfigDecoder, simpleThemeResponseDecoder } from \"../shared/decoders\";\r\nimport { BridgeOperation } from \"../shared/types\";\r\n\r\nexport type ThemesOperationTypes = \"getCurrent\" | \"list\" | \"select\";\r\n\r\nexport const operations: { [key in ThemesOperationTypes]: BridgeOperation } = {\r\n getCurrent: { name: \"getCurrent\", resultDecoder: simpleThemeResponseDecoder },\r\n list: { name: \"list\", resultDecoder: allThemesResponseDecoder },\r\n select: { name: \"select\", dataDecoder: selectThemeConfigDecoder }\r\n};\r\n\r\nexport interface SimpleThemeResponse {\r\n theme: IOConnectBrowser.Themes.Theme;\r\n}\r\n\r\nexport interface AllThemesResponse {\r\n themes: IOConnectBrowser.Themes.Theme[];\r\n}\r\n\r\nexport interface SelectThemeConfig {\r\n name: string;\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { IOConnectCore } from \"@interopio/core\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\nimport { GlueBridge } from \"../communication/bridge\";\r\nimport { IoC } from \"../shared/ioc\";\r\nimport { LibController } from \"../shared/types\";\r\nimport {\r\n default as CallbackRegistryFactory,\r\n CallbackRegistry,\r\n UnsubscribeFunction\r\n} from \"callback-registry\";\r\nimport { nonEmptyStringDecoder, simpleThemeResponseDecoder } from \"../shared/decoders\";\r\nimport { AllThemesResponse, operations, SelectThemeConfig, SimpleThemeResponse } from \"./protocol\";\r\n\r\nexport class ThemesController implements LibController {\r\n\r\n private logger!: IOConnectBrowser.Logger.API;\r\n private bridge!: GlueBridge;\r\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\r\n private themesSubscription: IOConnectCore.AGM.Subscription | undefined;\r\n private activeThemeSubs = 0;\r\n\r\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\r\n this.logger = coreGlue.logger.subLogger(\"themes.controller.web\");\r\n\r\n this.logger.trace(\"starting the web themes controller\");\r\n\r\n this.bridge = ioc.bridge;\r\n\r\n const api = this.toApi();\r\n\r\n (coreGlue as IOConnectBrowser.API).themes = api;\r\n\r\n this.logger.trace(\"themes are ready\");\r\n }\r\n\r\n public handlePlatformShutdown(): void {\r\n this.registry.clear();\r\n this.activeThemeSubs = 0;\r\n this.themesSubscription?.close();\r\n\r\n delete this.themesSubscription;\r\n }\r\n\r\n public async handleBridgeMessage(): Promise {\r\n // noop, because we do not want theme changes notifications to be published by default\r\n }\r\n\r\n private toApi(): IOConnectBrowser.Themes.API {\r\n const api: IOConnectBrowser.Themes.API = {\r\n getCurrent: this.getCurrent.bind(this),\r\n list: this.list.bind(this),\r\n select: this.select.bind(this),\r\n onChanged: this.onChanged.bind(this)\r\n };\r\n\r\n return Object.freeze(api);\r\n }\r\n\r\n private async getCurrent(): Promise {\r\n\r\n const bridgeResponse = await this.bridge.send(\"themes\", operations.getCurrent, undefined, undefined, { includeOperationCheck: true });\r\n\r\n return bridgeResponse.theme;\r\n }\r\n\r\n private async list(): Promise {\r\n const bridgeResponse = await this.bridge.send(\"themes\", operations.list, undefined, undefined, { includeOperationCheck: true });\r\n\r\n return bridgeResponse.themes;\r\n }\r\n\r\n private async select(name: string): Promise {\r\n nonEmptyStringDecoder.runWithException(name);\r\n\r\n await this.bridge.send(\"themes\", operations.select, { name }, undefined, { includeOperationCheck: true });\r\n }\r\n\r\n private async onChanged(callback: (theme: IOConnectBrowser.Themes.Theme) => any): Promise {\r\n\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"onChanged requires a callback of type function\");\r\n }\r\n\r\n const subReady = this.themesSubscription ?\r\n Promise.resolve() :\r\n this.configureThemeSubscription();\r\n\r\n await subReady;\r\n\r\n ++this.activeThemeSubs;\r\n const unsubFunc = this.registry.add(\"on-theme-change\", callback);\r\n\r\n return () => this.themeUnsub(unsubFunc);\r\n }\r\n\r\n private async configureThemeSubscription(): Promise {\r\n if (this.themesSubscription) {\r\n return;\r\n }\r\n\r\n this.themesSubscription = await this.bridge.createNotificationsSteam();\r\n\r\n this.themesSubscription.onData((data) => {\r\n const eventData = data.data;\r\n\r\n const validation = simpleThemeResponseDecoder.run(eventData);\r\n\r\n if (!validation.ok) {\r\n this.logger.warn(`Received invalid theme data on the theme event stream: ${JSON.stringify(validation.error)}`);\r\n return;\r\n }\r\n\r\n const themeChanged = validation.result;\r\n\r\n this.registry.execute(\"on-theme-change\", themeChanged.theme);\r\n });\r\n\r\n this.themesSubscription.onClosed(() => {\r\n this.logger.warn(\"The Themes interop stream was closed, no theme changes notifications will be received\");\r\n this.registry.clear();\r\n this.activeThemeSubs = 0;\r\n delete this.themesSubscription;\r\n });\r\n\r\n }\r\n\r\n private themeUnsub(registryUnsub: UnsubscribeFunction): void {\r\n registryUnsub();\r\n --this.activeThemeSubs;\r\n\r\n if (this.activeThemeSubs) {\r\n return;\r\n }\r\n\r\n this.themesSubscription?.close();\r\n\r\n delete this.themesSubscription;\r\n }\r\n}","import { SessionStorageConfig, WindowSessionData } from \"./types\";\r\n\r\nexport class SessionStorageController {\r\n private sessionStorage: Storage = window.sessionStorage;\r\n private windowId!: string;\r\n private get allNamespaces(): { namespace: string; defaultValue: any }[] {\r\n return [{ namespace: this.windowNamespace, defaultValue: {} }];\r\n }\r\n\r\n public configure(config: SessionStorageConfig): void {\r\n this.windowId = config.windowId;\r\n\r\n this.allNamespaces.forEach(({ namespace, defaultValue }) => {\r\n const data = this.sessionStorage.getItem(namespace);\r\n\r\n if (!data) {\r\n this.sessionStorage.setItem(namespace, JSON.stringify(defaultValue));\r\n }\r\n });\r\n }\r\n\r\n private get windowNamespace(): string {\r\n return `io_connect_window_${this.windowId}`;\r\n }\r\n\r\n public getWindowData(): WindowSessionData {\r\n return JSON.parse(this.sessionStorage.getItem(this.windowNamespace) as string);\r\n }\r\n\r\n public setWindowData(data: WindowSessionData[Key], key: Key): void {\r\n const allData = this.getWindowData();\r\n\r\n allData[key] = data;\r\n\r\n this.sessionStorage.setItem(this.windowNamespace, JSON.stringify(allData));\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { WebWindowModel } from \"../windows/webWindow\";\r\nimport { LibController, LibDomains, ParsedConfig } from \"./types\";\r\nimport { WindowsController } from \"../windows/controller\";\r\nimport { IOConnectCore } from \"@interopio/core\";\r\nimport { GlueBridge } from \"../communication/bridge\";\r\nimport { AppManagerController } from \"../appManager/controller\";\r\nimport { WindowProjection } from \"../windows/protocol\";\r\nimport { BaseApplicationData, InstanceData } from \"../appManager/protocol\";\r\nimport { IOConnectBrowser } from \"../../browser\";\r\nimport { InstanceModel } from \"../appManager/instance\";\r\nimport { ApplicationModel } from \"../appManager/application\";\r\nimport { LayoutsController } from \"../layouts/controller\";\r\nimport { NotificationsController } from \"../notifications/controller\";\r\nimport { IntentsController } from \"../intents/controller\";\r\nimport { ChannelsController } from \"../channels/controller\";\r\nimport { SystemController } from \"../system/controller\";\r\nimport { Notification } from \"../notifications/notification\";\r\nimport { ExtController } from \"../extension/controller\";\r\nimport { EventsDispatcher } from \"./dispatcher\";\r\nimport { PreferredConnectionController } from \"../communication/preferred\";\r\nimport { LegacyIntentsHelper } from \"../intents/legacyHelper\";\r\nimport { ThemesController } from \"../themes/controller\";\r\nimport { SessionStorageController } from \"../storage/session\";\r\n\r\nexport class IoC {\r\n private _coreGlue!: IOConnectCore.API;\r\n private _communicationId!: string;\r\n private _publicWindowId!: string;\r\n private _webConfig!: ParsedConfig;\r\n private _windowsControllerInstance!: WindowsController;\r\n private _appManagerControllerInstance!: AppManagerController;\r\n private _layoutsControllerInstance!: LayoutsController;\r\n private _notificationsControllerInstance!: NotificationsController;\r\n private _intentsControllerInstance!: IntentsController;\r\n private _legacyIntentsHelperInstance!: LegacyIntentsHelper;\r\n private _channelsControllerInstance!: ChannelsController;\r\n private _themesControllerInstance!: ThemesController;\r\n private _extensionController!: ExtController;\r\n private _systemControllerInstance!: SystemController;\r\n private _bridgeInstance!: GlueBridge;\r\n private _eventsDispatcher!: EventsDispatcher;\r\n private _preferredConnectionController!: PreferredConnectionController;\r\n private _sessionController!: SessionStorageController;\r\n\r\n public controllers: { [key in LibDomains]: LibController } = {\r\n windows: this.windowsController,\r\n appManager: this.appManagerController,\r\n layouts: this.layoutsController,\r\n notifications: this.notificationsController,\r\n intents: this.intentsController,\r\n channels: this.channelsController,\r\n system: this.systemController,\r\n extension: this.extensionController,\r\n themes: this.themesController\r\n };\r\n\r\n public get communicationId(): string {\r\n return this._communicationId;\r\n }\r\n\r\n public get publicWindowId(): string {\r\n return this._publicWindowId;\r\n }\r\n\r\n public get windowsController(): WindowsController {\r\n if (!this._windowsControllerInstance) {\r\n this._windowsControllerInstance = new WindowsController();\r\n }\r\n\r\n return this._windowsControllerInstance;\r\n }\r\n\r\n public get appManagerController(): AppManagerController {\r\n if (!this._appManagerControllerInstance) {\r\n this._appManagerControllerInstance = new AppManagerController();\r\n }\r\n\r\n return this._appManagerControllerInstance;\r\n }\r\n\r\n public get layoutsController(): LayoutsController {\r\n if (!this._layoutsControllerInstance) {\r\n this._layoutsControllerInstance = new LayoutsController();\r\n }\r\n\r\n return this._layoutsControllerInstance;\r\n }\r\n\r\n public get themesController(): ThemesController {\r\n if (!this._themesControllerInstance) {\r\n this._themesControllerInstance = new ThemesController();\r\n }\r\n\r\n return this._themesControllerInstance;\r\n }\r\n\r\n public get notificationsController(): NotificationsController {\r\n if (!this._notificationsControllerInstance) {\r\n this._notificationsControllerInstance = new NotificationsController();\r\n }\r\n\r\n return this._notificationsControllerInstance;\r\n }\r\n\r\n public get intentsController(): IntentsController {\r\n if (!this._intentsControllerInstance) {\r\n this._intentsControllerInstance = new IntentsController();\r\n }\r\n\r\n return this._intentsControllerInstance;\r\n }\r\n\r\n public get legacyIntentsHelper(): LegacyIntentsHelper {\r\n if (!this._legacyIntentsHelperInstance) {\r\n this._legacyIntentsHelperInstance = new LegacyIntentsHelper(this._coreGlue.logger, this.bridge, this._coreGlue.interop, this.appManagerController, this.windowsController);\r\n }\r\n\r\n return this._legacyIntentsHelperInstance;\r\n }\r\n\r\n public get systemController(): SystemController {\r\n if (!this._systemControllerInstance) {\r\n this._systemControllerInstance = new SystemController();\r\n }\r\n\r\n return this._systemControllerInstance;\r\n }\r\n\r\n public get channelsController(): ChannelsController {\r\n if (!this._channelsControllerInstance) {\r\n this._channelsControllerInstance = new ChannelsController();\r\n }\r\n\r\n return this._channelsControllerInstance;\r\n }\r\n\r\n public get extensionController(): ExtController {\r\n if (!this._extensionController) {\r\n this._extensionController = new ExtController();\r\n }\r\n\r\n return this._extensionController;\r\n }\r\n\r\n public get eventsDispatcher(): EventsDispatcher {\r\n if (!this._eventsDispatcher) {\r\n this._eventsDispatcher = new EventsDispatcher(this.config);\r\n }\r\n\r\n return this._eventsDispatcher;\r\n }\r\n\r\n public get bridge(): GlueBridge {\r\n if (!this._bridgeInstance) {\r\n this._bridgeInstance = new GlueBridge(this._coreGlue, this.communicationId);\r\n }\r\n\r\n return this._bridgeInstance;\r\n }\r\n\r\n public get preferredConnectionController(): PreferredConnectionController {\r\n if (!this._preferredConnectionController) {\r\n this._preferredConnectionController = new PreferredConnectionController(this._coreGlue);\r\n }\r\n\r\n return this._preferredConnectionController;\r\n }\r\n \r\n public get sessionController(): SessionStorageController {\r\n if (!this._sessionController) {\r\n this._sessionController = new SessionStorageController();\r\n }\r\n\r\n return this._sessionController;\r\n }\r\n\r\n public get config(): ParsedConfig {\r\n return this._webConfig;\r\n }\r\n\r\n public defineGlue(coreGlue: IOConnectCore.API): void {\r\n this._coreGlue = coreGlue;\r\n\r\n this._publicWindowId = (coreGlue as any).connection.transport.publicWindowId;\r\n\r\n const globalNamespace = (window as any).glue42core || (window as any).iobrowser;\r\n // the communicationId will be available in the global namespace if this client is an internal client to the platform\r\n this._communicationId = (coreGlue as any).connection.transport.communicationId || globalNamespace.communicationId;\r\n }\r\n\r\n public defineConfig(config: ParsedConfig): void {\r\n this._webConfig = config;\r\n }\r\n\r\n public async buildWebWindow(id: string, name: string): Promise {\r\n\r\n const model = new WebWindowModel(id, name, this.bridge);\r\n\r\n const api = await model.toApi();\r\n\r\n return { id, model, api };\r\n }\r\n\r\n public buildNotification(config: IOConnectBrowser.Notifications.RaiseOptions, id: string): IOConnectBrowser.Notifications.Notification {\r\n return new Notification(config, id);\r\n }\r\n\r\n public async buildApplication(app: BaseApplicationData, applicationInstances: InstanceData[]): Promise {\r\n\r\n const application = (new ApplicationModel(app, [], this.appManagerController)).toApi();\r\n\r\n const instances = applicationInstances.map((instanceData) => this.buildInstance(instanceData, application));\r\n\r\n application.instances.push(...instances);\r\n\r\n return application;\r\n }\r\n\r\n public buildInstance(instanceData: InstanceData, app: IOConnectBrowser.AppManager.Application): IOConnectBrowser.AppManager.Instance {\r\n return (new InstanceModel(instanceData, this.bridge, app)).toApi();\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* tslint:disable:no-console no-empty */\r\nimport { IOConnectCoreFactoryFunction } from \"@interopio/core\";\r\nimport { IOConnectDesktop } from \"@interopio/desktop\";\r\nimport { IOConnectBrowser, IOConnectBrowserFactoryFunction } from \"../browser\";\r\nimport { parseConfig } from \"./config\";\r\nimport { checkSingleton } from \"./config/checkSingleton\";\r\nimport { enterprise } from \"./enterprise\";\r\nimport { IoC } from \"./shared/ioc\";\r\nimport { PromiseWrap } from \"./shared/promise-plus\";\r\nimport { version } from \"../package.json\";\r\n\r\n/** This function creates the factory function which is the default export of the library */\r\nexport const createFactoryFunction = (coreFactoryFunction: IOConnectCoreFactoryFunction): IOConnectBrowserFactoryFunction => {\r\n\r\n return async (userConfig?: IOConnectBrowser.Config): Promise => {\r\n if (window.glue42gd || (window as any).iodesktop) {\r\n return enterprise(userConfig);\r\n }\r\n\r\n const ioc = new IoC();\r\n\r\n const config = parseConfig(userConfig);\r\n\r\n checkSingleton();\r\n\r\n const glue = await PromiseWrap(() => coreFactoryFunction(config, { version }) as Promise, 30000, \"Glue Web initialization timed out, because core didn't resolve\");\r\n\r\n const logger = glue.logger.subLogger(\"web.main.controller\");\r\n\r\n ioc.defineGlue(glue);\r\n\r\n ioc.sessionController.configure({ windowId: glue.interop.instance.instance as string });\r\n\r\n await ioc.preferredConnectionController.start(config);\r\n\r\n await ioc.bridge.start(ioc.controllers);\r\n\r\n ioc.defineConfig(config);\r\n\r\n logger.trace(\"the bridge has been started, initializing all controllers\");\r\n\r\n await Promise.all(Object.values(ioc.controllers).map((controller) => controller.start(glue, ioc)));\r\n\r\n logger.trace(\"all controllers reported started, starting all additional libraries\");\r\n\r\n await Promise.all(config.libraries.map((lib: any) => lib(glue, config)));\r\n\r\n logger.trace(\"all libraries were started\");\r\n\r\n ioc.eventsDispatcher.start(glue);\r\n\r\n logger.trace(\"start event dispatched, glue is ready, returning it\");\r\n\r\n return glue;\r\n };\r\n};\r\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar MetricTypes = {\r\n STRING: 1,\r\n NUMBER: 2,\r\n TIMESTAMP: 3,\r\n OBJECT: 4\r\n};\n\nfunction getMetricTypeByValue(metric) {\r\n if (metric.type === MetricTypes.TIMESTAMP) {\r\n return \"timestamp\";\r\n }\r\n else if (metric.type === MetricTypes.NUMBER) {\r\n return \"number\";\r\n }\r\n else if (metric.type === MetricTypes.STRING) {\r\n return \"string\";\r\n }\r\n else if (metric.type === MetricTypes.OBJECT) {\r\n return \"object\";\r\n }\r\n return \"unknown\";\r\n}\r\nfunction getTypeByValue(value) {\r\n if (value.constructor === Date) {\r\n return \"timestamp\";\r\n }\r\n else if (typeof value === \"number\") {\r\n return \"number\";\r\n }\r\n else if (typeof value === \"string\") {\r\n return \"string\";\r\n }\r\n else if (typeof value === \"object\") {\r\n return \"object\";\r\n }\r\n else {\r\n return \"string\";\r\n }\r\n}\r\nfunction serializeMetric(metric) {\r\n var serializedMetrics = {};\r\n var type = getMetricTypeByValue(metric);\r\n if (type === \"object\") {\r\n var values = Object.keys(metric.value).reduce(function (memo, key) {\r\n var innerType = getTypeByValue(metric.value[key]);\r\n if (innerType === \"object\") {\r\n var composite = defineNestedComposite(metric.value[key]);\r\n memo[key] = {\r\n type: \"object\",\r\n description: \"\",\r\n context: {},\r\n composite: composite,\r\n };\r\n }\r\n else {\r\n memo[key] = {\r\n type: innerType,\r\n description: \"\",\r\n context: {},\r\n };\r\n }\r\n return memo;\r\n }, {});\r\n serializedMetrics.composite = values;\r\n }\r\n serializedMetrics.name = normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name);\r\n serializedMetrics.type = type;\r\n serializedMetrics.description = metric.description;\r\n serializedMetrics.context = {};\r\n return serializedMetrics;\r\n}\r\nfunction defineNestedComposite(values) {\r\n return Object.keys(values).reduce(function (memo, key) {\r\n var type = getTypeByValue(values[key]);\r\n if (type === \"object\") {\r\n memo[key] = {\r\n type: \"object\",\r\n description: \"\",\r\n context: {},\r\n composite: defineNestedComposite(values[key]),\r\n };\r\n }\r\n else {\r\n memo[key] = {\r\n type: type,\r\n description: \"\",\r\n context: {},\r\n };\r\n }\r\n return memo;\r\n }, {});\r\n}\r\nfunction normalizeMetricName(name) {\r\n if (typeof name !== \"undefined\" && name.length > 0 && name[0] !== \"/\") {\r\n return \"/\" + name;\r\n }\r\n else {\r\n return name;\r\n }\r\n}\r\nfunction getMetricValueByType(metric) {\r\n var type = getMetricTypeByValue(metric);\r\n if (type === \"timestamp\") {\r\n return Date.now();\r\n }\r\n else {\r\n return publishNestedComposite(metric.value);\r\n }\r\n}\r\nfunction publishNestedComposite(values) {\r\n if (typeof values !== \"object\") {\r\n return values;\r\n }\r\n return Object.keys(values).reduce(function (memo, key) {\r\n var value = values[key];\r\n if (typeof value === \"object\" && value.constructor !== Date) {\r\n memo[key] = publishNestedComposite(value);\r\n }\r\n else if (value.constructor === Date) {\r\n memo[key] = new Date(value).getTime();\r\n }\r\n else if (value.constructor === Boolean) {\r\n memo[key] = value.toString();\r\n }\r\n else {\r\n memo[key] = value;\r\n }\r\n return memo;\r\n }, {});\r\n}\r\nfunction flatten(arr) {\r\n return arr.reduce(function (flat, toFlatten) {\r\n return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);\r\n }, []);\r\n}\r\nfunction getHighestState(arr) {\r\n return arr.sort(function (a, b) {\r\n if (!a.state) {\r\n return 1;\r\n }\r\n if (!b.state) {\r\n return -1;\r\n }\r\n return b.state - a.state;\r\n })[0];\r\n}\r\nfunction aggregateDescription(arr) {\r\n var msg = \"\";\r\n arr.forEach(function (m, idx, a) {\r\n var path = m.path.join(\".\");\r\n if (idx === a.length - 1) {\r\n msg += path + \".\" + m.name + \": \" + m.description;\r\n }\r\n else {\r\n msg += path + \".\" + m.name + \": \" + m.description + \",\";\r\n }\r\n });\r\n if (msg.length > 100) {\r\n return msg.slice(0, 100) + \"...\";\r\n }\r\n else {\r\n return msg;\r\n }\r\n}\r\nfunction composeMsgForRootStateMetric(system) {\r\n var aggregatedState = system.root.getAggregateState();\r\n var merged = flatten(aggregatedState);\r\n var highestState = getHighestState(merged);\r\n var aggregateDesc = aggregateDescription(merged);\r\n return {\r\n description: aggregateDesc,\r\n value: highestState.state,\r\n };\r\n}\n\nfunction gw3 (connection, config) {\r\n var _this = this;\r\n if (!connection || typeof connection !== \"object\") {\r\n throw new Error(\"Connection is required parameter\");\r\n }\r\n var joinPromise;\r\n var session;\r\n var init = function (repo) {\r\n var resolveReadyPromise;\r\n joinPromise = new Promise(function (resolve) {\r\n resolveReadyPromise = resolve;\r\n });\r\n session = connection.domain(\"metrics\");\r\n session.onJoined(function (reconnect) {\r\n if (!reconnect && resolveReadyPromise) {\r\n resolveReadyPromise();\r\n resolveReadyPromise = undefined;\r\n }\r\n var rootStateMetric = {\r\n name: \"/State\",\r\n type: \"object\",\r\n composite: {\r\n Description: {\r\n type: \"string\",\r\n description: \"\",\r\n },\r\n Value: {\r\n type: \"number\",\r\n description: \"\",\r\n },\r\n },\r\n description: \"System state\",\r\n context: {},\r\n };\r\n var defineRootMetricsMsg = {\r\n type: \"define\",\r\n metrics: [rootStateMetric],\r\n };\r\n session.send(defineRootMetricsMsg);\r\n if (reconnect) {\r\n replayRepo(repo);\r\n }\r\n });\r\n session.join({\r\n system: config.system,\r\n service: config.service,\r\n instance: config.instance\r\n });\r\n };\r\n var replayRepo = function (repo) {\r\n replaySystem(repo.root);\r\n };\r\n var replaySystem = function (system) {\r\n createSystem(system);\r\n system.metrics.forEach(function (m) {\r\n createMetric(m);\r\n });\r\n system.subSystems.forEach(function (ss) {\r\n replaySystem(ss);\r\n });\r\n };\r\n var createSystem = function (system) { return __awaiter(_this, void 0, void 0, function () {\r\n var metric, createMetricsMsg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (system.parent === undefined) {\r\n return [2];\r\n }\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n metric = {\r\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\r\n type: \"object\",\r\n composite: {\r\n Description: {\r\n type: \"string\",\r\n description: \"\",\r\n },\r\n Value: {\r\n type: \"number\",\r\n description: \"\",\r\n },\r\n },\r\n description: \"System state\",\r\n context: {},\r\n };\r\n createMetricsMsg = {\r\n type: \"define\",\r\n metrics: [metric],\r\n };\r\n session.send(createMetricsMsg);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateSystem = function (system, state) { return __awaiter(_this, void 0, void 0, function () {\r\n var shadowedUpdateMetric, stateObj, rootMetric;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n shadowedUpdateMetric = {\r\n type: \"publish\",\r\n values: [{\r\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\r\n value: {\r\n Description: state.description,\r\n Value: state.state,\r\n },\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n session.send(shadowedUpdateMetric);\r\n stateObj = composeMsgForRootStateMetric(system);\r\n rootMetric = {\r\n type: \"publish\",\r\n peer_id: connection.peerId,\r\n values: [{\r\n name: \"/State\",\r\n value: {\r\n Description: stateObj.description,\r\n Value: stateObj.value,\r\n },\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n session.send(rootMetric);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var createMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () {\r\n var metricClone, m, createMetricsMsg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metricClone = cloneMetric(metric);\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n m = serializeMetric(metricClone);\r\n createMetricsMsg = {\r\n type: \"define\",\r\n metrics: [m],\r\n };\r\n session.send(createMetricsMsg);\r\n if (typeof metricClone.value !== \"undefined\") {\r\n updateMetricCore(metricClone);\r\n }\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () {\r\n var metricClone;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metricClone = cloneMetric(metric);\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n updateMetricCore(metricClone);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateMetricCore = function (metric) {\r\n if (canUpdate()) {\r\n var value = getMetricValueByType(metric);\r\n var publishMetricsMsg = {\r\n type: \"publish\",\r\n values: [{\r\n name: normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name),\r\n value: value,\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n return session.sendFireAndForget(publishMetricsMsg);\r\n }\r\n return Promise.resolve();\r\n };\r\n var cloneMetric = function (metric) {\r\n var metricClone = __assign({}, metric);\r\n if (typeof metric.value === \"object\" && metric.value !== null) {\r\n metricClone.value = __assign({}, metric.value);\r\n }\r\n return metricClone;\r\n };\r\n var canUpdate = function () {\r\n var _a;\r\n try {\r\n var func = (_a = config.canUpdateMetric) !== null && _a !== void 0 ? _a : (function () { return true; });\r\n return func();\r\n }\r\n catch (_b) {\r\n return true;\r\n }\r\n };\r\n return {\r\n init: init,\r\n createSystem: createSystem,\r\n updateSystem: updateSystem,\r\n createMetric: createMetric,\r\n updateMetric: updateMetric,\r\n };\r\n}\n\nvar Helpers = {\r\n validate: function (definition, parent, transport) {\r\n if (definition === null || typeof definition !== \"object\") {\r\n throw new Error(\"Missing definition\");\r\n }\r\n if (parent === null || typeof parent !== \"object\") {\r\n throw new Error(\"Missing parent\");\r\n }\r\n if (transport === null || typeof transport !== \"object\") {\r\n throw new Error(\"Missing transport\");\r\n }\r\n },\r\n};\n\nvar BaseMetric = (function () {\r\n function BaseMetric(definition, system, transport, value, type) {\r\n this.definition = definition;\r\n this.system = system;\r\n this.transport = transport;\r\n this.value = value;\r\n this.type = type;\r\n this.path = [];\r\n Helpers.validate(definition, system, transport);\r\n this.path = system.path.slice(0);\r\n this.path.push(system.name);\r\n this.name = definition.name;\r\n this.description = definition.description;\r\n transport.createMetric(this);\r\n }\r\n Object.defineProperty(BaseMetric.prototype, \"repo\", {\r\n get: function () {\r\n var _a;\r\n return (_a = this.system) === null || _a === void 0 ? void 0 : _a.repo;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseMetric.prototype, \"id\", {\r\n get: function () { return \"\".concat(this.system.path, \"/\").concat(name); },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n BaseMetric.prototype.update = function (newValue) {\r\n this.value = newValue;\r\n return this.transport.updateMetric(this);\r\n };\r\n return BaseMetric;\r\n}());\n\nvar NumberMetric = (function (_super) {\r\n __extends(NumberMetric, _super);\r\n function NumberMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.NUMBER) || this;\r\n }\r\n NumberMetric.prototype.incrementBy = function (num) {\r\n this.update(this.value + num);\r\n };\r\n NumberMetric.prototype.increment = function () {\r\n this.incrementBy(1);\r\n };\r\n NumberMetric.prototype.decrement = function () {\r\n this.incrementBy(-1);\r\n };\r\n NumberMetric.prototype.decrementBy = function (num) {\r\n this.incrementBy(num * -1);\r\n };\r\n return NumberMetric;\r\n}(BaseMetric));\n\nvar ObjectMetric = (function (_super) {\r\n __extends(ObjectMetric, _super);\r\n function ObjectMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.OBJECT) || this;\r\n }\r\n ObjectMetric.prototype.update = function (newValue) {\r\n this.mergeValues(newValue);\r\n return this.transport.updateMetric(this);\r\n };\r\n ObjectMetric.prototype.mergeValues = function (values) {\r\n var _this = this;\r\n return Object.keys(this.value).forEach(function (k) {\r\n if (typeof values[k] !== \"undefined\") {\r\n _this.value[k] = values[k];\r\n }\r\n });\r\n };\r\n return ObjectMetric;\r\n}(BaseMetric));\n\nvar StringMetric = (function (_super) {\r\n __extends(StringMetric, _super);\r\n function StringMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.STRING) || this;\r\n }\r\n return StringMetric;\r\n}(BaseMetric));\n\nvar TimestampMetric = (function (_super) {\r\n __extends(TimestampMetric, _super);\r\n function TimestampMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.TIMESTAMP) || this;\r\n }\r\n TimestampMetric.prototype.now = function () {\r\n this.update(new Date());\r\n };\r\n return TimestampMetric;\r\n}(BaseMetric));\n\nfunction system(name, repo, protocol, parent, description) {\r\n if (!repo) {\r\n throw new Error(\"Repository is required\");\r\n }\r\n if (!protocol) {\r\n throw new Error(\"Transport is required\");\r\n }\r\n var _transport = protocol;\r\n var _name = name;\r\n var _description = description || \"\";\r\n var _repo = repo;\r\n var _parent = parent;\r\n var _path = _buildPath(parent);\r\n var _state = {};\r\n var id = _arrayToString(_path, \"/\") + name;\r\n var root = repo.root;\r\n var _subSystems = [];\r\n var _metrics = [];\r\n function subSystem(nameSystem, descriptionSystem) {\r\n if (!nameSystem || nameSystem.length === 0) {\r\n throw new Error(\"name is required\");\r\n }\r\n var match = _subSystems.filter(function (s) { return s.name === nameSystem; });\r\n if (match.length > 0) {\r\n return match[0];\r\n }\r\n var _system = system(nameSystem, _repo, _transport, me, descriptionSystem);\r\n _subSystems.push(_system);\r\n return _system;\r\n }\r\n function setState(state, stateDescription) {\r\n _state = { state: state, description: stateDescription };\r\n _transport.updateSystem(me, _state);\r\n }\r\n function stringMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.STRING, value, function (metricDef) { return new StringMetric(metricDef, me, _transport, value); });\r\n }\r\n function numberMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.NUMBER, value, function (metricDef) { return new NumberMetric(metricDef, me, _transport, value); });\r\n }\r\n function objectMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.OBJECT, value, function (metricDef) { return new ObjectMetric(metricDef, me, _transport, value); });\r\n }\r\n function timestampMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.TIMESTAMP, value, function (metricDef) { return new TimestampMetric(metricDef, me, _transport, value); });\r\n }\r\n function _getOrCreateMetric(metricObject, expectedType, value, createMetric) {\r\n var metricDef = { name: \"\" };\r\n if (typeof metricObject === \"string\") {\r\n metricDef = { name: metricObject };\r\n }\r\n else {\r\n metricDef = metricObject;\r\n }\r\n var matching = _metrics.filter(function (shadowedMetric) { return shadowedMetric.name === metricDef.name; });\r\n if (matching.length > 0) {\r\n var existing = matching[0];\r\n if (existing.type !== expectedType) {\r\n throw new Error(\"A metric named \".concat(metricDef.name, \" is already defined with different type.\"));\r\n }\r\n if (typeof value !== \"undefined\") {\r\n existing\r\n .update(value)\r\n .catch(function () { });\r\n }\r\n return existing;\r\n }\r\n var metric = createMetric(metricDef);\r\n _metrics.push(metric);\r\n return metric;\r\n }\r\n function _buildPath(shadowedSystem) {\r\n if (!shadowedSystem || !shadowedSystem.parent) {\r\n return [];\r\n }\r\n var path = _buildPath(shadowedSystem.parent);\r\n path.push(shadowedSystem.name);\r\n return path;\r\n }\r\n function _arrayToString(path, separator) {\r\n return ((path && path.length > 0) ? path.join(separator) : \"\");\r\n }\r\n function getAggregateState() {\r\n var aggState = [];\r\n if (Object.keys(_state).length > 0) {\r\n aggState.push({\r\n name: _name,\r\n path: _path,\r\n state: _state.state,\r\n description: _state.description,\r\n });\r\n }\r\n _subSystems.forEach(function (shadowedSubSystem) {\r\n var result = shadowedSubSystem.getAggregateState();\r\n if (result.length > 0) {\r\n aggState.push.apply(aggState, result);\r\n }\r\n });\r\n return aggState;\r\n }\r\n var me = {\r\n get name() {\r\n return _name;\r\n },\r\n get description() {\r\n return _description;\r\n },\r\n get repo() {\r\n return _repo;\r\n },\r\n get parent() {\r\n return _parent;\r\n },\r\n path: _path,\r\n id: id,\r\n root: root,\r\n get subSystems() {\r\n return _subSystems;\r\n },\r\n get metrics() {\r\n return _metrics;\r\n },\r\n subSystem: subSystem,\r\n getState: function () {\r\n return _state;\r\n },\r\n setState: setState,\r\n stringMetric: stringMetric,\r\n timestampMetric: timestampMetric,\r\n objectMetric: objectMetric,\r\n numberMetric: numberMetric,\r\n getAggregateState: getAggregateState,\r\n };\r\n _transport.createSystem(me);\r\n return me;\r\n}\n\nvar Repository = (function () {\r\n function Repository(options, protocol) {\r\n protocol.init(this);\r\n this.root = system(\"\", this, protocol);\r\n this.addSystemMetrics(this.root, options.clickStream || options.clickStream === undefined);\r\n }\r\n Repository.prototype.addSystemMetrics = function (rootSystem, useClickStream) {\r\n if (typeof navigator !== \"undefined\") {\r\n rootSystem.stringMetric(\"UserAgent\", navigator.userAgent);\r\n }\r\n if (useClickStream && typeof document !== \"undefined\") {\r\n var clickStream_1 = rootSystem.subSystem(\"ClickStream\");\r\n var documentClickHandler = function (e) {\r\n var _a;\r\n if (!e.target) {\r\n return;\r\n }\r\n var target = e.target;\r\n var className = target ? (_a = target.getAttribute(\"class\")) !== null && _a !== void 0 ? _a : \"\" : \"\";\r\n clickStream_1.objectMetric(\"LastBrowserEvent\", {\r\n type: \"click\",\r\n timestamp: new Date(),\r\n target: {\r\n className: className,\r\n id: target.id,\r\n type: \"<\" + target.tagName.toLowerCase() + \">\",\r\n href: target.href || \"\",\r\n },\r\n });\r\n };\r\n clickStream_1.objectMetric(\"Page\", {\r\n title: document.title,\r\n page: window.location.href,\r\n });\r\n if (document.addEventListener) {\r\n document.addEventListener(\"click\", documentClickHandler);\r\n }\r\n else {\r\n document.attachEvent(\"onclick\", documentClickHandler);\r\n }\r\n }\r\n rootSystem.stringMetric(\"StartTime\", (new Date()).toString());\r\n var urlMetric = rootSystem.stringMetric(\"StartURL\", \"\");\r\n var appNameMetric = rootSystem.stringMetric(\"AppName\", \"\");\r\n if (typeof window !== \"undefined\") {\r\n if (typeof window.location !== \"undefined\") {\r\n var startUrl = window.location.href;\r\n urlMetric.update(startUrl);\r\n }\r\n if (typeof window.glue42gd !== \"undefined\") {\r\n appNameMetric.update(window.glue42gd.appName);\r\n }\r\n }\r\n };\r\n return Repository;\r\n}());\n\nvar NullProtocol = (function () {\r\n function NullProtocol() {\r\n }\r\n NullProtocol.prototype.init = function (repo) {\r\n };\r\n NullProtocol.prototype.createSystem = function (system) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.updateSystem = function (metric, state) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.createMetric = function (metric) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.updateMetric = function (metric) {\r\n return Promise.resolve();\r\n };\r\n return NullProtocol;\r\n}());\n\nvar PerfTracker = (function () {\r\n function PerfTracker(api, initialPublishTimeout, publishInterval) {\r\n this.api = api;\r\n this.lastCount = 0;\r\n this.initialPublishTimeout = 10 * 1000;\r\n this.publishInterval = 60 * 1000;\r\n this.initialPublishTimeout = initialPublishTimeout !== null && initialPublishTimeout !== void 0 ? initialPublishTimeout : this.initialPublishTimeout;\r\n this.publishInterval = publishInterval !== null && publishInterval !== void 0 ? publishInterval : this.publishInterval;\r\n this.scheduleCollection();\r\n this.system = this.api.subSystem(\"performance\", \"Performance data published by the web application\");\r\n }\r\n PerfTracker.prototype.scheduleCollection = function () {\r\n var _this = this;\r\n setTimeout(function () {\r\n _this.collect();\r\n setInterval(function () {\r\n _this.collect();\r\n }, _this.publishInterval);\r\n }, this.initialPublishTimeout);\r\n };\r\n PerfTracker.prototype.collect = function () {\r\n try {\r\n this.collectMemory();\r\n this.collectEntries();\r\n }\r\n catch (_a) {\r\n }\r\n };\r\n PerfTracker.prototype.collectMemory = function () {\r\n var memory = window.performance.memory;\r\n this.system.stringMetric(\"memory\", JSON.stringify({\r\n totalJSHeapSize: memory.totalJSHeapSize,\r\n usedJSHeapSize: memory.usedJSHeapSize\r\n }));\r\n };\r\n PerfTracker.prototype.collectEntries = function () {\r\n var allEntries = window.performance.getEntries();\r\n if (allEntries.length <= this.lastCount) {\r\n return;\r\n }\r\n this.lastCount = allEntries.length;\r\n var jsonfiedEntries = allEntries.map(function (i) { return i.toJSON(); });\r\n this.system.stringMetric(\"entries\", JSON.stringify(jsonfiedEntries));\r\n };\r\n return PerfTracker;\r\n}());\n\nvar metrics = (function (options) {\r\n var protocol;\r\n if (!options.connection || typeof options.connection !== \"object\") {\r\n protocol = new NullProtocol();\r\n }\r\n else {\r\n protocol = gw3(options.connection, options);\r\n }\r\n var repo = new Repository(options, protocol);\r\n var rootSystem = repo.root;\r\n if (!options.disableAutoAppSystem) {\r\n rootSystem = rootSystem.subSystem(\"App\");\r\n }\r\n var api = addFAVSupport(rootSystem);\r\n initPerf(api, options.pagePerformanceMetrics);\r\n return api;\r\n});\r\nfunction initPerf(api, config) {\r\n var _a, _b;\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n var perfConfig = (_b = (_a = window === null || window === void 0 ? void 0 : window.glue42gd) === null || _a === void 0 ? void 0 : _a.metrics) === null || _b === void 0 ? void 0 : _b.pagePerformanceMetrics;\r\n if (perfConfig) {\r\n config = perfConfig;\r\n }\r\n if (config === null || config === void 0 ? void 0 : config.enabled) {\r\n new PerfTracker(api, config.initialPublishTimeout, config.publishInterval);\r\n }\r\n}\r\nfunction addFAVSupport(system) {\r\n var reportingSystem = system.subSystem(\"reporting\");\r\n var def = {\r\n name: \"features\"\r\n };\r\n var featureMetric;\r\n var featureMetricFunc = function (name, action, payload) {\r\n if (typeof name === \"undefined\" || name === \"\") {\r\n throw new Error(\"name is mandatory\");\r\n }\r\n else if (typeof action === \"undefined\" || action === \"\") {\r\n throw new Error(\"action is mandatory\");\r\n }\r\n else if (typeof payload === \"undefined\" || payload === \"\") {\r\n throw new Error(\"payload is mandatory\");\r\n }\r\n if (!featureMetric) {\r\n featureMetric = reportingSystem.objectMetric(def, { name: name, action: action, payload: payload });\r\n }\r\n else {\r\n featureMetric.update({\r\n name: name,\r\n action: action,\r\n payload: payload\r\n });\r\n }\r\n };\r\n system.featureMetric = featureMetricFunc;\r\n return system;\r\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\ncreateRegistry.default = createRegistry;\nvar lib$1 = createRegistry;\n\nvar InProcTransport = (function () {\r\n function InProcTransport(settings, logger) {\r\n var _this = this;\r\n this.registry = lib$1();\r\n this.gw = settings.facade;\r\n this.gw.connect(function (_client, message) {\r\n _this.messageHandler(message);\r\n }).then(function (client) {\r\n _this.client = client;\r\n });\r\n }\r\n Object.defineProperty(InProcTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n InProcTransport.prototype.sendObject = function (msg) {\r\n if (this.client) {\r\n this.client.send(msg);\r\n return Promise.resolve(undefined);\r\n }\r\n else {\r\n return Promise.reject(\"not connected\");\r\n }\r\n };\r\n InProcTransport.prototype.send = function (_msg) {\r\n return Promise.reject(\"not supported\");\r\n };\r\n InProcTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n InProcTransport.prototype.onConnectedChanged = function (callback) {\r\n callback(true);\r\n return function () { };\r\n };\r\n InProcTransport.prototype.close = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.open = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.name = function () {\r\n return \"in-memory\";\r\n };\r\n InProcTransport.prototype.reconnect = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.messageHandler = function (msg) {\r\n this.registry.execute(\"onMessage\", msg);\r\n };\r\n return InProcTransport;\r\n}());\n\nvar SharedWorkerTransport = (function () {\r\n function SharedWorkerTransport(workerFile, logger) {\r\n var _this = this;\r\n this.logger = logger;\r\n this.registry = lib$1();\r\n this.worker = new SharedWorker(workerFile);\r\n this.worker.port.onmessage = function (e) {\r\n _this.messageHandler(e.data);\r\n };\r\n }\r\n Object.defineProperty(SharedWorkerTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n SharedWorkerTransport.prototype.sendObject = function (msg) {\r\n this.worker.port.postMessage(msg);\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.send = function (_msg) {\r\n return Promise.reject(\"not supported\");\r\n };\r\n SharedWorkerTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n SharedWorkerTransport.prototype.onConnectedChanged = function (callback) {\r\n callback(true);\r\n return function () { };\r\n };\r\n SharedWorkerTransport.prototype.close = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.open = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.name = function () {\r\n return \"shared-worker\";\r\n };\r\n SharedWorkerTransport.prototype.reconnect = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.messageHandler = function (msg) {\r\n this.registry.execute(\"onMessage\", msg);\r\n };\r\n return SharedWorkerTransport;\r\n}());\n\nvar Utils = (function () {\r\n function Utils() {\r\n }\r\n Utils.isNode = function () {\r\n if (typeof Utils._isNode !== \"undefined\") {\r\n return Utils._isNode;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n Utils._isNode = false;\r\n return false;\r\n }\r\n try {\r\n Utils._isNode = Object.prototype.toString.call(global.process) === \"[object process]\";\r\n }\r\n catch (e) {\r\n Utils._isNode = false;\r\n }\r\n return Utils._isNode;\r\n };\r\n return Utils;\r\n}());\n\nvar PromiseWrapper = (function () {\r\n function PromiseWrapper() {\r\n var _this = this;\r\n this.rejected = false;\r\n this.resolved = false;\r\n this.promise = new Promise(function (resolve, reject) {\r\n _this.resolve = function (t) {\r\n _this.resolved = true;\r\n resolve(t);\r\n };\r\n _this.reject = function (err) {\r\n _this.rejected = true;\r\n reject(err);\r\n };\r\n });\r\n }\r\n PromiseWrapper.delay = function (time) {\r\n return new Promise(function (resolve) { return setTimeout(resolve, time); });\r\n };\r\n Object.defineProperty(PromiseWrapper.prototype, \"ended\", {\r\n get: function () {\r\n return this.rejected || this.resolved;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return PromiseWrapper;\r\n}());\n\nvar timers = {};\r\nfunction getAllTimers() {\r\n return timers;\r\n}\r\nfunction timer (timerName) {\r\n var existing = timers[timerName];\r\n if (existing) {\r\n return existing;\r\n }\r\n var marks = [];\r\n function now() {\r\n return new Date().getTime();\r\n }\r\n var startTime = now();\r\n mark(\"start\", startTime);\r\n var endTime;\r\n var period;\r\n function stop() {\r\n endTime = now();\r\n mark(\"end\", endTime);\r\n period = endTime - startTime;\r\n return period;\r\n }\r\n function mark(name, time) {\r\n var currentTime = time !== null && time !== void 0 ? time : now();\r\n var diff = 0;\r\n if (marks.length > 0) {\r\n diff = currentTime - marks[marks.length - 1].time;\r\n }\r\n marks.push({ name: name, time: currentTime, diff: diff });\r\n }\r\n var timerObj = {\r\n get startTime() {\r\n return startTime;\r\n },\r\n get endTime() {\r\n return endTime;\r\n },\r\n get period() {\r\n return period;\r\n },\r\n stop: stop,\r\n mark: mark,\r\n marks: marks\r\n };\r\n timers[timerName] = timerObj;\r\n return timerObj;\r\n}\n\nvar WebSocketConstructor = Utils.isNode() ? require(\"ws\") : window.WebSocket;\r\nvar WS = (function () {\r\n function WS(settings, logger) {\r\n this.startupTimer = timer(\"connection\");\r\n this._running = true;\r\n this._registry = lib$1();\r\n this.wsRequests = [];\r\n this.settings = settings;\r\n this.logger = logger;\r\n if (!this.settings.ws) {\r\n throw new Error(\"ws is missing\");\r\n }\r\n }\r\n WS.prototype.onMessage = function (callback) {\r\n return this._registry.add(\"onMessage\", callback);\r\n };\r\n WS.prototype.send = function (msg, options) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.waitForSocketConnection(function () {\r\n var _a;\r\n try {\r\n (_a = _this.ws) === null || _a === void 0 ? void 0 : _a.send(msg);\r\n resolve();\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n }, reject);\r\n });\r\n };\r\n WS.prototype.open = function () {\r\n var _this = this;\r\n this.logger.info(\"opening ws...\");\r\n this._running = true;\r\n return new Promise(function (resolve, reject) {\r\n _this.waitForSocketConnection(resolve, reject);\r\n });\r\n };\r\n WS.prototype.close = function () {\r\n this._running = false;\r\n if (this.ws) {\r\n this.ws.close();\r\n }\r\n return Promise.resolve();\r\n };\r\n WS.prototype.onConnectedChanged = function (callback) {\r\n return this._registry.add(\"onConnectedChanged\", callback);\r\n };\r\n WS.prototype.name = function () {\r\n return this.settings.ws;\r\n };\r\n WS.prototype.reconnect = function () {\r\n var _a;\r\n (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close();\r\n var pw = new PromiseWrapper();\r\n this.waitForSocketConnection(function () {\r\n pw.resolve();\r\n });\r\n return pw.promise;\r\n };\r\n WS.prototype.waitForSocketConnection = function (callback, failed) {\r\n var _a;\r\n failed = failed !== null && failed !== void 0 ? failed : (function () { });\r\n if (!this._running) {\r\n failed(\"wait for socket on \".concat(this.settings.ws, \" failed - socket closed by user\"));\r\n return;\r\n }\r\n if (((_a = this.ws) === null || _a === void 0 ? void 0 : _a.readyState) === 1) {\r\n callback();\r\n return;\r\n }\r\n this.wsRequests.push({ callback: callback, failed: failed });\r\n if (this.wsRequests.length > 1) {\r\n return;\r\n }\r\n this.openSocket();\r\n };\r\n WS.prototype.openSocket = function (retryInterval, retriesLeft) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.startupTimer.mark(\"opening-socket\");\r\n if (retryInterval === undefined) {\r\n retryInterval = this.settings.reconnectInterval;\r\n }\r\n if (typeof retriesLeft === \"undefined\") {\r\n retriesLeft = this.settings.reconnectAttempts;\r\n }\r\n if (retriesLeft !== undefined) {\r\n if (retriesLeft === 0) {\r\n this.notifyForSocketState(\"wait for socket on \".concat(this.settings.ws, \" failed - no more retries left\"));\r\n return [2];\r\n }\r\n this.logger.debug(\"will retry \".concat(retriesLeft, \" more times (every \").concat(retryInterval, \" ms)\"));\r\n }\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4, this.initiateSocket()];\r\n case 2:\r\n _b.sent();\r\n this.startupTimer.mark(\"socket-initiated\");\r\n this.notifyForSocketState();\r\n return [3, 4];\r\n case 3:\r\n _b.sent();\r\n setTimeout(function () {\r\n var retries = retriesLeft === undefined ? undefined : retriesLeft - 1;\r\n _this.openSocket(retryInterval, retries);\r\n }, retryInterval);\r\n return [3, 4];\r\n case 4: return [2];\r\n }\r\n });\r\n });\r\n };\r\n WS.prototype.initiateSocket = function () {\r\n var _this = this;\r\n var pw = new PromiseWrapper();\r\n this.logger.debug(\"initiating ws to \".concat(this.settings.ws, \"...\"));\r\n this.ws = new WebSocketConstructor(this.settings.ws || \"\");\r\n this.ws.onerror = function (err) {\r\n var reason = \"\";\r\n try {\r\n reason = JSON.stringify(err);\r\n }\r\n catch (error) {\r\n var seen_1 = new WeakSet();\r\n var replacer = function (key, value) {\r\n if (typeof value === \"object\" && value !== null) {\r\n if (seen_1.has(value)) {\r\n return;\r\n }\r\n seen_1.add(value);\r\n }\r\n return value;\r\n };\r\n reason = JSON.stringify(err, replacer);\r\n }\r\n pw.reject(\"error\");\r\n _this.notifyStatusChanged(false, reason);\r\n };\r\n this.ws.onclose = function (err) {\r\n _this.logger.info(\"ws closed \".concat(err));\r\n pw.reject(\"closed\");\r\n _this.notifyStatusChanged(false);\r\n };\r\n this.ws.onopen = function () {\r\n var _a;\r\n _this.startupTimer.mark(\"ws-opened\");\r\n _this.logger.info(\"ws opened \".concat((_a = _this.settings.identity) === null || _a === void 0 ? void 0 : _a.application));\r\n pw.resolve();\r\n _this.notifyStatusChanged(true);\r\n };\r\n this.ws.onmessage = function (message) {\r\n _this._registry.execute(\"onMessage\", message.data);\r\n };\r\n return pw.promise;\r\n };\r\n WS.prototype.notifyForSocketState = function (error) {\r\n this.wsRequests.forEach(function (wsRequest) {\r\n if (error) {\r\n if (wsRequest.failed) {\r\n wsRequest.failed(error);\r\n }\r\n }\r\n else {\r\n wsRequest.callback();\r\n }\r\n });\r\n this.wsRequests = [];\r\n };\r\n WS.prototype.notifyStatusChanged = function (status, reason) {\r\n this._registry.execute(\"onConnectedChanged\", status, reason);\r\n };\r\n return WS;\r\n}());\n\nvar shortidExports = {};\nvar shortid$1 = {\n get exports(){ return shortidExports; },\n set exports(v){ shortidExports = v; },\n};\n\nvar libExports = {};\nvar lib = {\n get exports(){ return libExports; },\n set exports(v){ libExports = v; },\n};\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n seed = (seed * 9301 + 49297) % 233280;\n return seed/(233280.0);\n}\n\nfunction setSeed$1(_seed_) {\n seed = _seed_;\n}\n\nvar randomFromSeed$1 = {\n nextValue: getNextValue,\n seed: setSeed$1\n};\n\nvar randomFromSeed = randomFromSeed$1;\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet$2;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet$2 !== ORIGINAL) {\n alphabet$2 = ORIGINAL;\n reset();\n }\n return;\n }\n\n if (_alphabet_ === alphabet$2) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function(item, ind, arr){\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet$2 = _alphabet_;\n reset();\n}\n\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet$2;\n}\n\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\n\nfunction shuffle() {\n if (!alphabet$2) {\n setCharacters(ORIGINAL);\n }\n\n var sourceArray = alphabet$2.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get () {\n return alphabet$2 || ORIGINAL;\n}\n\nvar alphabet_1 = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nvar randomByteBrowser = randomByte;\n\n// This file replaces `format.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nvar format_browser = function (random, alphabet, size) {\n // We can’t use bytes bigger than the alphabet. To make bytes values closer\n // to the alphabet, we apply bitmask on them. We look for the closest\n // `2 ** x - 1` number, which will be bigger than alphabet size. If we have\n // 30 symbols in the alphabet, we will take 31 (00011111).\n // We do not use faster Math.clz32, because it is not available in browsers.\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1;\n // Bitmask is not a perfect solution (in our example it will pass 31 bytes,\n // which is bigger than the alphabet). As a result, we will need more bytes,\n // than ID size, because we will refuse bytes bigger than the alphabet.\n\n // Every hardware random generator call is costly,\n // because we need to wait for entropy collection. This is why often it will\n // be faster to ask for few extra bytes in advance, to avoid additional calls.\n\n // Here we calculate how many random bytes should we call in advance.\n // It depends on ID length, mask / alphabet size and magic number 1.6\n // (which was selected according benchmarks).\n\n // -~f => Math.ceil(f) if n is float number\n // -~i => i + 1 if n is integer number\n var step = -~(1.6 * mask * size / alphabet.length);\n var id = '';\n\n while (true) {\n var bytes = random(step);\n // Compact alternative for `for (var i = 0; i < step; i++)`\n var i = step;\n while (i--) {\n // If random byte is bigger than alphabet even after bitmask,\n // we refuse it by `|| ''`.\n id += alphabet[bytes[i] & mask] || '';\n // More compact than `id.length + 1 === size`\n if (id.length === +size) return id\n }\n }\n};\n\nvar alphabet$1 = alphabet_1;\nvar random = randomByteBrowser;\nvar format = format_browser;\n\nfunction generate$1(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format(random, alphabet$1.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nvar generate_1 = generate$1;\n\nvar generate = generate_1;\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version$1 = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version$1);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nvar build_1 = build;\n\nvar alphabet = alphabet_1;\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nvar isValid = isShortId;\n\n(function (module) {\n\n\tvar alphabet = alphabet_1;\n\tvar build = build_1;\n\tvar isValid$1 = isValid;\n\n\t// if you are using cluster or multiple servers use this to make each instance\n\t// has a unique value for worker\n\t// Note: I don't know if this is automatically set when using third\n\t// party cluster solutions such as pm2.\n\tvar clusterWorkerId = 0;\n\n\t/**\n\t * Set the seed.\n\t * Highly recommended if you don't want people to try to figure out your id schema.\n\t * exposed as shortid.seed(int)\n\t * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n\t */\n\tfunction seed(seedValue) {\n\t alphabet.seed(seedValue);\n\t return module.exports;\n\t}\n\n\t/**\n\t * Set the cluster worker or machine id\n\t * exposed as shortid.worker(int)\n\t * @param workerId worker must be positive integer. Number less than 16 is recommended.\n\t * returns shortid module so it can be chained.\n\t */\n\tfunction worker(workerId) {\n\t clusterWorkerId = workerId;\n\t return module.exports;\n\t}\n\n\t/**\n\t *\n\t * sets new characters to use in the alphabet\n\t * returns the shuffled alphabet\n\t */\n\tfunction characters(newCharacters) {\n\t if (newCharacters !== undefined) {\n\t alphabet.characters(newCharacters);\n\t }\n\n\t return alphabet.shuffled();\n\t}\n\n\t/**\n\t * Generate unique id\n\t * Returns string id\n\t */\n\tfunction generate() {\n\t return build(clusterWorkerId);\n\t}\n\n\t// Export all other functions as properties of the generate function\n\tmodule.exports = generate;\n\tmodule.exports.generate = generate;\n\tmodule.exports.seed = seed;\n\tmodule.exports.worker = worker;\n\tmodule.exports.characters = characters;\n\tmodule.exports.isValid = isValid$1;\n} (lib));\n\n(function (module) {\n\tmodule.exports = libExports;\n} (shortid$1));\n\nvar shortid = /*@__PURE__*/getDefaultExportFromCjs(shortidExports);\n\nfunction domainSession (domain, connection, logger, successMessages, errorMessages) {\r\n if (domain == null) {\r\n domain = \"global\";\r\n }\r\n successMessages = successMessages || [\"success\"];\r\n errorMessages = errorMessages || [\"error\"];\r\n var isJoined = false;\r\n var tryReconnecting = false;\r\n var _latestOptions;\r\n var _connectionOn = false;\r\n var callbacks = lib$1();\r\n connection.disconnected(handleConnectionDisconnected);\r\n connection.loggedIn(handleConnectionLoggedIn);\r\n connection.on(\"success\", function (msg) { return handleSuccessMessage(msg); });\r\n connection.on(\"error\", function (msg) { return handleErrorMessage(msg); });\r\n connection.on(\"result\", function (msg) { return handleSuccessMessage(msg); });\r\n if (successMessages) {\r\n successMessages.forEach(function (sm) {\r\n connection.on(sm, function (msg) { return handleSuccessMessage(msg); });\r\n });\r\n }\r\n if (errorMessages) {\r\n errorMessages.forEach(function (sm) {\r\n connection.on(sm, function (msg) { return handleErrorMessage(msg); });\r\n });\r\n }\r\n var requestsMap = {};\r\n function join(options) {\r\n _latestOptions = options;\r\n return new Promise(function (resolve, reject) {\r\n if (isJoined) {\r\n resolve({});\r\n return;\r\n }\r\n var joinPromise;\r\n if (domain === \"global\") {\r\n joinPromise = _connectionOn ? Promise.resolve({}) : Promise.reject(\"not connected to gateway\");\r\n }\r\n else {\r\n logger.debug(\"joining domain \".concat(domain));\r\n var joinMsg = {\r\n type: \"join\",\r\n destination: domain,\r\n domain: \"global\",\r\n options: options,\r\n };\r\n joinPromise = send(joinMsg);\r\n }\r\n joinPromise\r\n .then(function () {\r\n handleJoined();\r\n resolve({});\r\n })\r\n .catch(function (err) {\r\n logger.debug(\"error joining \" + domain + \" domain: \" + JSON.stringify(err));\r\n reject(err);\r\n });\r\n });\r\n }\r\n function leave() {\r\n if (domain === \"global\") {\r\n return Promise.resolve();\r\n }\r\n logger.debug(\"stopping session \" + domain + \"...\");\r\n var leaveMsg = {\r\n type: \"leave\",\r\n destination: domain,\r\n domain: \"global\",\r\n };\r\n tryReconnecting = false;\r\n return send(leaveMsg)\r\n .then(function () {\r\n isJoined = false;\r\n callbacks.execute(\"onLeft\");\r\n })\r\n .catch(function () {\r\n isJoined = false;\r\n callbacks.execute(\"onLeft\");\r\n });\r\n }\r\n function handleJoined() {\r\n logger.debug(\"did join \" + domain);\r\n isJoined = true;\r\n var wasReconnect = tryReconnecting;\r\n tryReconnecting = false;\r\n callbacks.execute(\"onJoined\", wasReconnect);\r\n }\r\n function handleConnectionDisconnected() {\r\n _connectionOn = false;\r\n logger.debug(\"connection is down\");\r\n isJoined = false;\r\n tryReconnecting = true;\r\n callbacks.execute(\"onLeft\", { disconnected: true });\r\n }\r\n function handleConnectionLoggedIn() {\r\n _connectionOn = true;\r\n if (tryReconnecting) {\r\n logger.debug(\"connection is now up - trying to reconnect...\");\r\n join(_latestOptions);\r\n }\r\n }\r\n function onJoined(callback) {\r\n if (isJoined) {\r\n callback(false);\r\n }\r\n return callbacks.add(\"onJoined\", callback);\r\n }\r\n function onLeft(callback) {\r\n if (!isJoined) {\r\n callback();\r\n }\r\n return callbacks.add(\"onLeft\", callback);\r\n }\r\n function handleErrorMessage(msg) {\r\n if (domain !== msg.domain) {\r\n return;\r\n }\r\n var requestId = msg.request_id;\r\n if (!requestId) {\r\n return;\r\n }\r\n var entry = requestsMap[requestId];\r\n if (!entry) {\r\n return;\r\n }\r\n entry.error(msg);\r\n }\r\n function handleSuccessMessage(msg) {\r\n if (msg.domain !== domain) {\r\n return;\r\n }\r\n var requestId = msg.request_id;\r\n if (!requestId) {\r\n return;\r\n }\r\n var entry = requestsMap[requestId];\r\n if (!entry) {\r\n return;\r\n }\r\n entry.success(msg);\r\n }\r\n function getNextRequestId() {\r\n return shortid();\r\n }\r\n function send(msg, tag, options) {\r\n options = options || {};\r\n msg.request_id = msg.request_id || getNextRequestId();\r\n msg.domain = msg.domain || domain;\r\n if (!options.skipPeerId) {\r\n msg.peer_id = connection.peerId;\r\n }\r\n var requestId = msg.request_id;\r\n return new Promise(function (resolve, reject) {\r\n requestsMap[requestId] = {\r\n success: function (successMsg) {\r\n delete requestsMap[requestId];\r\n successMsg._tag = tag;\r\n resolve(successMsg);\r\n },\r\n error: function (errorMsg) {\r\n logger.warn(\"GW error - \".concat(JSON.stringify(errorMsg), \" for request \").concat(JSON.stringify(msg)));\r\n delete requestsMap[requestId];\r\n errorMsg._tag = tag;\r\n reject(errorMsg);\r\n },\r\n };\r\n connection\r\n .send(msg, options)\r\n .catch(function (err) {\r\n requestsMap[requestId].error({ err: err });\r\n });\r\n });\r\n }\r\n function sendFireAndForget(msg) {\r\n msg.request_id = msg.request_id ? msg.request_id : getNextRequestId();\r\n msg.domain = msg.domain || domain;\r\n msg.peer_id = connection.peerId;\r\n return connection.send(msg);\r\n }\r\n return {\r\n join: join,\r\n leave: leave,\r\n onJoined: onJoined,\r\n onLeft: onLeft,\r\n send: send,\r\n sendFireAndForget: sendFireAndForget,\r\n on: function (type, callback) {\r\n connection.on(type, function (msg) {\r\n if (msg.domain !== domain) {\r\n return;\r\n }\r\n try {\r\n callback(msg);\r\n }\r\n catch (e) {\r\n logger.error(\"Callback failed: \".concat(e, \" \\n \").concat(e.stack, \" \\n msg was: \").concat(JSON.stringify(msg)), e);\r\n }\r\n });\r\n },\r\n loggedIn: function (callback) { return connection.loggedIn(callback); },\r\n connected: function (callback) { return connection.connected(callback); },\r\n disconnected: function (callback) { return connection.disconnected(callback); },\r\n get peerId() {\r\n return connection.peerId;\r\n },\r\n get domain() {\r\n return domain;\r\n },\r\n };\r\n}\n\nvar GW3ProtocolImpl = (function () {\r\n function GW3ProtocolImpl(connection, settings, logger) {\r\n var _this = this;\r\n this.connection = connection;\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.protocolVersion = 3;\r\n this.datePrefix = \"#T42_DATE#\";\r\n this.datePrefixLen = this.datePrefix.length;\r\n this.dateMinLen = this.datePrefixLen + 1;\r\n this.datePrefixFirstChar = this.datePrefix[0];\r\n this.registry = lib$1();\r\n this._isLoggedIn = false;\r\n this.shouldTryLogin = true;\r\n this.initialLogin = true;\r\n this.initialLoginAttempts = 3;\r\n this.sessions = [];\r\n connection.disconnected(function () {\r\n _this.handleDisconnected();\r\n });\r\n this.ping();\r\n }\r\n Object.defineProperty(GW3ProtocolImpl.prototype, \"isLoggedIn\", {\r\n get: function () {\r\n return this._isLoggedIn;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n GW3ProtocolImpl.prototype.processStringMessage = function (message) {\r\n var _this = this;\r\n var msg = JSON.parse(message, function (key, value) {\r\n if (typeof value !== \"string\") {\r\n return value;\r\n }\r\n if (value.length < _this.dateMinLen) {\r\n return value;\r\n }\r\n if (value[0] !== _this.datePrefixFirstChar) {\r\n return value;\r\n }\r\n if (value.substring(0, _this.datePrefixLen) !== _this.datePrefix) {\r\n return value;\r\n }\r\n try {\r\n var milliseconds = parseInt(value.substring(_this.datePrefixLen, value.length), 10);\r\n if (isNaN(milliseconds)) {\r\n return value;\r\n }\r\n return new Date(milliseconds);\r\n }\r\n catch (ex) {\r\n return value;\r\n }\r\n });\r\n return {\r\n msg: msg,\r\n msgType: msg.type,\r\n };\r\n };\r\n GW3ProtocolImpl.prototype.createStringMessage = function (message) {\r\n var oldToJson = Date.prototype.toJSON;\r\n try {\r\n var datePrefix_1 = this.datePrefix;\r\n Date.prototype.toJSON = function () {\r\n return datePrefix_1 + this.getTime();\r\n };\r\n var result = JSON.stringify(message);\r\n return result;\r\n }\r\n finally {\r\n Date.prototype.toJSON = oldToJson;\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.processObjectMessage = function (message) {\r\n if (!message.type) {\r\n throw new Error(\"Object should have type property\");\r\n }\r\n return {\r\n msg: message,\r\n msgType: message.type,\r\n };\r\n };\r\n GW3ProtocolImpl.prototype.createObjectMessage = function (message) {\r\n return message;\r\n };\r\n GW3ProtocolImpl.prototype.login = function (config, reconnect) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authentication, token, e_1, _a, helloMsg, sendOptions, welcomeMsg, msg, token, _b, err_1;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n this.logger.debug(\"logging in...\");\r\n this.loginConfig = config;\r\n if (!this.loginConfig) {\r\n this.loginConfig = { username: \"\", password: \"\" };\r\n }\r\n this.shouldTryLogin = true;\r\n authentication = {};\r\n this.connection.gatewayToken = config.gatewayToken;\r\n if (!config.gatewayToken) return [3, 5];\r\n if (!reconnect) return [3, 4];\r\n _c.label = 1;\r\n case 1:\r\n _c.trys.push([1, 3, , 4]);\r\n return [4, this.getNewGWToken()];\r\n case 2:\r\n token = _c.sent();\r\n config.gatewayToken = token;\r\n return [3, 4];\r\n case 3:\r\n e_1 = _c.sent();\r\n this.logger.warn(\"failed to get GW token when reconnecting \".concat((e_1 === null || e_1 === void 0 ? void 0 : e_1.message) || e_1));\r\n return [3, 4];\r\n case 4:\r\n authentication.method = \"gateway-token\";\r\n authentication.token = config.gatewayToken;\r\n this.connection.gatewayToken = config.gatewayToken;\r\n return [3, 10];\r\n case 5:\r\n if (!(config.flowName === \"sspi\")) return [3, 9];\r\n authentication.provider = \"win\";\r\n authentication.method = \"access-token\";\r\n if (!(config.flowCallback && config.sessionId)) return [3, 7];\r\n _a = authentication;\r\n return [4, config.flowCallback(config.sessionId, null)];\r\n case 6:\r\n _a.token =\r\n (_c.sent())\r\n .data\r\n .toString(\"base64\");\r\n return [3, 8];\r\n case 7: throw new Error(\"Invalid SSPI config\");\r\n case 8: return [3, 10];\r\n case 9:\r\n if (config.token) {\r\n authentication.method = \"access-token\";\r\n authentication.token = config.token;\r\n }\r\n else if (config.username) {\r\n authentication.method = \"secret\";\r\n authentication.login = config.username;\r\n authentication.secret = config.password;\r\n }\r\n else if (config.provider) {\r\n authentication.provider = config.provider;\r\n authentication.providerContext = config.providerContext;\r\n }\r\n else {\r\n throw new Error(\"invalid auth message\" + JSON.stringify(config));\r\n }\r\n _c.label = 10;\r\n case 10:\r\n helloMsg = {\r\n type: \"hello\",\r\n identity: this.settings.identity,\r\n authentication: authentication\r\n };\r\n if (config.sessionId) {\r\n helloMsg.request_id = config.sessionId;\r\n }\r\n this.globalDomain = domainSession(\"global\", this.connection, this.logger.subLogger(\"global-domain\"), [\r\n \"welcome\",\r\n \"token\",\r\n \"authentication-request\"\r\n ]);\r\n sendOptions = { skipPeerId: true };\r\n if (this.initialLogin) {\r\n sendOptions.retryInterval = this.settings.reconnectInterval;\r\n sendOptions.maxRetries = this.settings.reconnectAttempts;\r\n }\r\n _c.label = 11;\r\n case 11:\r\n _c.trys.push([11, 19, 20, 21]);\r\n welcomeMsg = void 0;\r\n _c.label = 12;\r\n case 12:\r\n return [4, this.globalDomain.send(helloMsg, undefined, sendOptions)];\r\n case 13:\r\n msg = _c.sent();\r\n if (!(msg.type === \"authentication-request\")) return [3, 16];\r\n token = Buffer.from(msg.authentication.token, \"base64\");\r\n if (!(config.flowCallback && config.sessionId)) return [3, 15];\r\n _b = helloMsg.authentication;\r\n return [4, config.flowCallback(config.sessionId, token)];\r\n case 14:\r\n _b.token =\r\n (_c.sent())\r\n .data\r\n .toString(\"base64\");\r\n _c.label = 15;\r\n case 15:\r\n helloMsg.request_id = config.sessionId;\r\n return [3, 12];\r\n case 16:\r\n if (msg.type === \"welcome\") {\r\n welcomeMsg = msg;\r\n return [3, 18];\r\n }\r\n else if (msg.type === \"error\") {\r\n throw new Error(\"Authentication failed: \" + msg.reason);\r\n }\r\n else {\r\n throw new Error(\"Unexpected message type during authentication: \" + msg.type);\r\n }\r\n case 17: return [3, 12];\r\n case 18:\r\n this.initialLogin = false;\r\n this.logger.debug(\"login successful with peerId \" + welcomeMsg.peer_id);\r\n this.connection.peerId = welcomeMsg.peer_id;\r\n this.connection.resolvedIdentity = welcomeMsg.resolved_identity;\r\n this.connection.availableDomains = welcomeMsg.available_domains;\r\n if (welcomeMsg.options) {\r\n this.connection.token = welcomeMsg.options.access_token;\r\n this.connection.info = welcomeMsg.options.info;\r\n }\r\n this.setLoggedIn(true);\r\n return [2, welcomeMsg.resolved_identity];\r\n case 19:\r\n err_1 = _c.sent();\r\n this.logger.error(\"error sending hello message - \" + (err_1.message || err_1.msg || err_1.reason || err_1), err_1);\r\n throw err_1;\r\n case 20:\r\n if (config && config.flowCallback && config.sessionId) {\r\n config.flowCallback(config.sessionId, null);\r\n }\r\n return [7];\r\n case 21: return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.logout = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var promises;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.debug(\"logging out...\");\r\n this.shouldTryLogin = false;\r\n if (this.pingTimer) {\r\n clearTimeout(this.pingTimer);\r\n }\r\n promises = this.sessions.map(function (session) {\r\n session.leave();\r\n });\r\n return [4, Promise.all(promises)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.loggedIn = function (callback) {\r\n if (this._isLoggedIn) {\r\n callback();\r\n }\r\n return this.registry.add(\"onLoggedIn\", callback);\r\n };\r\n GW3ProtocolImpl.prototype.domain = function (domainName, domainLogger, successMessages, errorMessages) {\r\n var session = this.sessions.filter(function (s) { return s.domain === domainName; })[0];\r\n if (!session) {\r\n session = domainSession(domainName, this.connection, domainLogger, successMessages, errorMessages);\r\n this.sessions.push(session);\r\n }\r\n return session;\r\n };\r\n GW3ProtocolImpl.prototype.handleDisconnected = function () {\r\n var _this = this;\r\n this.setLoggedIn(false);\r\n var tryToLogin = this.shouldTryLogin;\r\n if (tryToLogin && this.initialLogin) {\r\n if (this.initialLoginAttempts <= 0) {\r\n return;\r\n }\r\n this.initialLoginAttempts--;\r\n }\r\n this.logger.debug(\"disconnected - will try new login?\" + this.shouldTryLogin);\r\n if (this.shouldTryLogin) {\r\n if (!this.loginConfig) {\r\n throw new Error(\"no login info\");\r\n }\r\n this.connection.login(this.loginConfig, true)\r\n .catch(function () {\r\n setTimeout(_this.handleDisconnected.bind(_this), _this.settings.reconnectInterval || 1000);\r\n });\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.setLoggedIn = function (value) {\r\n this._isLoggedIn = value;\r\n if (this._isLoggedIn) {\r\n this.registry.execute(\"onLoggedIn\");\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.ping = function () {\r\n var _this = this;\r\n if (!this.shouldTryLogin) {\r\n return;\r\n }\r\n if (this._isLoggedIn) {\r\n this.connection.send({ type: \"ping\" });\r\n }\r\n this.pingTimer = setTimeout(function () {\r\n _this.ping();\r\n }, 30 * 1000);\r\n };\r\n GW3ProtocolImpl.prototype.authToken = function () {\r\n var createTokenReq = {\r\n type: \"create-token\"\r\n };\r\n if (!this.globalDomain) {\r\n return Promise.reject(new Error(\"no global domain session\"));\r\n }\r\n return this.globalDomain.send(createTokenReq)\r\n .then(function (res) {\r\n return res.token;\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.getNewGWToken = function () {\r\n if (typeof window !== \"undefined\") {\r\n var glue42gd = window.glue42gd;\r\n if (glue42gd) {\r\n return glue42gd.getGWToken();\r\n }\r\n }\r\n return Promise.reject(new Error(\"not running in GD\"));\r\n };\r\n return GW3ProtocolImpl;\r\n}());\n\nvar MessageReplayerImpl = (function () {\r\n function MessageReplayerImpl(specs) {\r\n this.specsNames = [];\r\n this.messages = {};\r\n this.subs = {};\r\n this.subsRefCount = {};\r\n this.specs = {};\r\n for (var _i = 0, specs_1 = specs; _i < specs_1.length; _i++) {\r\n var spec = specs_1[_i];\r\n this.specs[spec.name] = spec;\r\n this.specsNames.push(spec.name);\r\n }\r\n }\r\n MessageReplayerImpl.prototype.init = function (connection) {\r\n var _this = this;\r\n this.connection = connection;\r\n for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) {\r\n var name_1 = _a[_i];\r\n var _loop_1 = function (type) {\r\n var refCount = this_1.subsRefCount[type];\r\n if (!refCount) {\r\n refCount = 0;\r\n }\r\n refCount += 1;\r\n this_1.subsRefCount[type] = refCount;\r\n if (refCount > 1) {\r\n return \"continue\";\r\n }\r\n var sub = connection.on(type, function (msg) { return _this.processMessage(type, msg); });\r\n this_1.subs[type] = sub;\r\n };\r\n var this_1 = this;\r\n for (var _b = 0, _c = this.specs[name_1].types; _b < _c.length; _b++) {\r\n var type = _c[_b];\r\n _loop_1(type);\r\n }\r\n }\r\n };\r\n MessageReplayerImpl.prototype.processMessage = function (type, msg) {\r\n if (this.isDone || !msg) {\r\n return;\r\n }\r\n for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) {\r\n var name_2 = _a[_i];\r\n if (this.specs[name_2].types.indexOf(type) !== -1) {\r\n var messages = this.messages[name_2] || [];\r\n this.messages[name_2] = messages;\r\n messages.push(msg);\r\n }\r\n }\r\n };\r\n MessageReplayerImpl.prototype.drain = function (name, callback) {\r\n var _a;\r\n if (callback) {\r\n (this.messages[name] || []).forEach(callback);\r\n }\r\n delete this.messages[name];\r\n for (var _i = 0, _b = this.specs[name].types; _i < _b.length; _i++) {\r\n var type = _b[_i];\r\n this.subsRefCount[type] -= 1;\r\n if (this.subsRefCount[type] <= 0) {\r\n (_a = this.connection) === null || _a === void 0 ? void 0 : _a.off(this.subs[type]);\r\n delete this.subs[type];\r\n delete this.subsRefCount[type];\r\n }\r\n }\r\n delete this.specs[name];\r\n if (!this.specs.length) {\r\n this.isDone = true;\r\n }\r\n };\r\n return MessageReplayerImpl;\r\n}());\n\nvar PromisePlus = function (executor, timeoutMilliseconds, timeoutMessage) {\r\n return new Promise(function (resolve, reject) {\r\n var timeout = setTimeout(function () {\r\n var message = timeoutMessage || \"Promise timeout hit: \".concat(timeoutMilliseconds);\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n var providedPromise = new Promise(executor);\r\n providedPromise\r\n .then(function (result) {\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch(function (error) {\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n};\n\nvar WebPlatformTransport = (function () {\r\n function WebPlatformTransport(settings, logger, identity) {\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.identity = identity;\r\n this.iAmConnected = false;\r\n this.parentReady = false;\r\n this.rejected = false;\r\n this.children = [];\r\n this.extContentAvailable = false;\r\n this.extContentConnecting = false;\r\n this.extContentConnected = false;\r\n this.parentInExtMode = false;\r\n this.webNamespace = \"g42_core_web\";\r\n this.parentPingTimeout = 5000;\r\n this.connectionRequestTimeout = 7000;\r\n this.defaultTargetString = \"*\";\r\n this.registry = lib$1();\r\n this.messages = {\r\n connectionAccepted: { name: \"connectionAccepted\", handle: this.handleConnectionAccepted.bind(this) },\r\n connectionRejected: { name: \"connectionRejected\", handle: this.handleConnectionRejected.bind(this) },\r\n connectionRequest: { name: \"connectionRequest\", handle: this.handleConnectionRequest.bind(this) },\r\n parentReady: {\r\n name: \"parentReady\", handle: function () {\r\n }\r\n },\r\n parentPing: { name: \"parentPing\", handle: this.handleParentPing.bind(this) },\r\n platformPing: { name: \"platformPing\", handle: this.handlePlatformPing.bind(this) },\r\n platformReady: { name: \"platformReady\", handle: this.handlePlatformReady.bind(this) },\r\n clientUnload: { name: \"clientUnload\", handle: this.handleClientUnload.bind(this) },\r\n manualUnload: { name: \"manualUnload\", handle: this.handleManualUnload.bind(this) },\r\n extConnectionResponse: { name: \"extConnectionResponse\", handle: this.handleExtConnectionResponse.bind(this) },\r\n extSetupRequest: { name: \"extSetupRequest\", handle: this.handleExtSetupRequest.bind(this) },\r\n gatewayDisconnect: { name: \"gatewayDisconnect\", handle: this.handleGatewayDisconnect.bind(this) },\r\n gatewayInternalConnect: { name: \"gatewayInternalConnect\", handle: this.handleGatewayInternalConnect.bind(this) }\r\n };\r\n this.extContentAvailable = !!window.glue42ext;\r\n this.setUpMessageListener();\r\n this.setUpUnload();\r\n this.setupPlatformUnloadListener();\r\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : undefined;\r\n }\r\n WebPlatformTransport.prototype.manualSetReadyState = function () {\r\n this.iAmConnected = true;\r\n this.parentReady = true;\r\n };\r\n Object.defineProperty(WebPlatformTransport.prototype, \"transportWindowId\", {\r\n get: function () {\r\n return this.publicWindowId;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebPlatformTransport.prototype, \"communicationId\", {\r\n get: function () {\r\n return this._communicationId;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WebPlatformTransport.prototype.sendObject = function (msg) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (this.extContentConnected) {\r\n return [2, window.postMessage({ glue42ExtOut: msg }, this.defaultTargetString)];\r\n }\r\n if (!this.port) {\r\n throw new Error(\"Cannot send message, because the port was not opened yet\");\r\n }\r\n this.port.postMessage(msg);\r\n return [2];\r\n });\r\n });\r\n };\r\n Object.defineProperty(WebPlatformTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WebPlatformTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n WebPlatformTransport.prototype.send = function () {\r\n return Promise.reject(\"not supported\");\r\n };\r\n WebPlatformTransport.prototype.onConnectedChanged = function (callback) {\r\n return this.registry.add(\"onConnectedChanged\", callback);\r\n };\r\n WebPlatformTransport.prototype.open = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.debug(\"opening a connection to the web platform gateway.\");\r\n return [4, this.connect()];\r\n case 1:\r\n _a.sent();\r\n this.notifyStatusChanged(true);\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.close = function () {\r\n var _a, _b;\r\n var message = {\r\n glue42core: {\r\n type: this.messages.gatewayDisconnect.name,\r\n data: {\r\n clientId: this.myClientId,\r\n ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n this.parentReady = false;\r\n this.notifyStatusChanged(false, \"manual reconnection\");\r\n return Promise.resolve();\r\n };\r\n WebPlatformTransport.prototype.name = function () {\r\n return \"web-platform\";\r\n };\r\n WebPlatformTransport.prototype.reconnect = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, this.close()];\r\n case 1:\r\n _a.sent();\r\n return [2, Promise.resolve()];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.initiateInternalConnection = function () {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.logger.debug(\"opening an internal web platform connection\");\r\n _this.port = _this.settings.port;\r\n if (_this.iAmConnected) {\r\n _this.logger.warn(\"cannot open a new connection, because this client is currently connected\");\r\n return;\r\n }\r\n _this.port.onmessage = function (event) {\r\n var _a, _b;\r\n if (_this.iAmConnected && !((_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core)) {\r\n _this.registry.execute(\"onMessage\", event.data);\r\n return;\r\n }\r\n var data = (_b = event.data) === null || _b === void 0 ? void 0 : _b.glue42core;\r\n if (!data) {\r\n return;\r\n }\r\n if (data.type === _this.messages.gatewayInternalConnect.name && data.success) {\r\n _this.publicWindowId = _this.settings.windowId;\r\n if (_this.identity && _this.publicWindowId) {\r\n _this.identity.windowId = _this.publicWindowId;\r\n _this.identity.instance = _this.publicWindowId;\r\n }\r\n resolve();\r\n }\r\n if (data.type === _this.messages.gatewayInternalConnect.name && data.error) {\r\n reject(data.error);\r\n }\r\n };\r\n _this.port.postMessage({\r\n glue42core: {\r\n type: _this.messages.gatewayInternalConnect.name\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.initiateRemoteConnection = function (target) {\r\n var _this = this;\r\n return PromisePlus(function (resolve, reject) {\r\n var _a;\r\n _this.connectionResolve = resolve;\r\n _this.connectionReject = reject;\r\n _this.myClientId = (_a = _this.myClientId) !== null && _a !== void 0 ? _a : shortid();\r\n var bridgeInstanceId = _this.getMyWindowId() || shortid();\r\n var request = {\r\n glue42core: {\r\n type: _this.messages.connectionRequest.name,\r\n clientId: _this.myClientId,\r\n clientType: \"child\",\r\n bridgeInstanceId: bridgeInstanceId,\r\n selfAssignedWindowId: _this.selfAssignedWindowId\r\n }\r\n };\r\n _this.logger.debug(\"sending connection request\");\r\n if (_this.extContentConnecting) {\r\n request.glue42core.clientType = \"child\";\r\n request.glue42core.bridgeInstanceId = _this.myClientId;\r\n request.glue42core.parentWindowId = _this.parentWindowId;\r\n return window.postMessage(request, _this.defaultTargetString);\r\n }\r\n if (!target) {\r\n throw new Error(\"Cannot send a connection request, because no glue target was specified!\");\r\n }\r\n target.postMessage(request, _this.defaultTargetString);\r\n }, this.connectionRequestTimeout, \"The connection to the target glue window timed out\");\r\n };\r\n WebPlatformTransport.prototype.isParentCheckSuccess = function (parentCheck) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, parentCheck];\r\n case 1:\r\n _a.sent();\r\n return [2, { success: true }];\r\n case 2:\r\n _a.sent();\r\n return [2, { success: false }];\r\n case 3: return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.setUpMessageListener = function () {\r\n var _this = this;\r\n if (this.settings.port) {\r\n this.logger.debug(\"skipping generic message listener, because this is an internal client\");\r\n return;\r\n }\r\n window.addEventListener(\"message\", function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (!data || _this.rejected) {\r\n return;\r\n }\r\n var allowedOrigins = _this.settings.allowedOrigins || [];\r\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\r\n _this.logger.warn(\"received a message from an origin which is not in the allowed list: \".concat(event.origin));\r\n return;\r\n }\r\n if (!_this.checkMessageTypeValid(data.type)) {\r\n _this.logger.error(\"cannot handle the incoming glue42 core message, because the type is invalid: \".concat(data.type));\r\n return;\r\n }\r\n var messageType = data.type;\r\n _this.logger.debug(\"received valid glue42core message of type: \".concat(messageType));\r\n _this.messages[messageType].handle(event);\r\n });\r\n };\r\n WebPlatformTransport.prototype.setUpUnload = function () {\r\n var _this = this;\r\n if (this.settings.port) {\r\n this.logger.debug(\"skipping unload event listener, because this is an internal client\");\r\n return;\r\n }\r\n window.addEventListener(\"beforeunload\", function () {\r\n var _a, _b;\r\n if (_this.extContentConnected) {\r\n return;\r\n }\r\n var message = {\r\n glue42core: {\r\n type: _this.messages.clientUnload.name,\r\n data: {\r\n clientId: _this.myClientId,\r\n ownWindowId: (_a = _this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n if (_this.parent) {\r\n _this.parent.postMessage(message, _this.defaultTargetString);\r\n }\r\n (_b = _this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n });\r\n };\r\n WebPlatformTransport.prototype.handlePlatformReady = function (event) {\r\n this.logger.debug(\"the web platform gave the ready signal\");\r\n this.parentReady = true;\r\n if (this.parentPingResolve) {\r\n this.parentPingResolve();\r\n delete this.parentPingResolve;\r\n }\r\n if (this.parentPingInterval) {\r\n clearInterval(this.parentPingInterval);\r\n delete this.parentPingInterval;\r\n }\r\n this.parent = event.source;\r\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : \"window\";\r\n };\r\n WebPlatformTransport.prototype.handleConnectionAccepted = function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (this.myClientId === data.clientId) {\r\n return this.handleAcceptanceOfMyRequest(data);\r\n }\r\n return this.handleAcceptanceOfGrandChildRequest(data, event);\r\n };\r\n WebPlatformTransport.prototype.handleAcceptanceOfMyRequest = function (data) {\r\n var _this = this;\r\n this.logger.debug(\"handling a connection accepted signal targeted at me.\");\r\n this.isPreferredActivated = data.isPreferredActivated;\r\n if (this.extContentConnecting) {\r\n return this.processExtContentConnection(data);\r\n }\r\n if (!data.port) {\r\n this.logger.error(\"cannot set up my connection, because I was not provided with a port\");\r\n return;\r\n }\r\n this.publicWindowId = this.getMyWindowId();\r\n if (this.identity) {\r\n this.identity.windowId = this.publicWindowId;\r\n this.identity.instance = this.identity.instance ? this.identity.instance : this.publicWindowId || shortid();\r\n }\r\n if (this.identity && data.appName) {\r\n this.identity.application = data.appName;\r\n this.identity.applicationName = data.appName;\r\n }\r\n this._communicationId = data.communicationId;\r\n this.port = data.port;\r\n this.port.onmessage = function (e) { return _this.registry.execute(\"onMessage\", e.data); };\r\n if (this.connectionResolve) {\r\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\r\n this.connectionResolve();\r\n delete this.connectionResolve;\r\n return;\r\n }\r\n this.logger.error(\"unable to call the connection resolve, because no connection promise was found\");\r\n };\r\n WebPlatformTransport.prototype.processExtContentConnection = function (data) {\r\n var _this = this;\r\n this.logger.debug(\"handling a connection accepted signal targeted at me for extension content connection.\");\r\n this.extContentConnecting = false;\r\n this.extContentConnected = true;\r\n this.publicWindowId = this.parentWindowId || this.myClientId;\r\n if (this.extContentConnecting && this.identity) {\r\n this.identity.windowId = this.publicWindowId;\r\n }\r\n if (this.identity && data.appName) {\r\n this.identity.application = data.appName;\r\n this.identity.applicationName = data.appName;\r\n }\r\n window.addEventListener(\"message\", function (event) {\r\n var _a;\r\n var extData = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42ExtInc;\r\n if (!extData) {\r\n return;\r\n }\r\n var allowedOrigins = _this.settings.allowedOrigins || [];\r\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\r\n _this.logger.warn(\"received a message from an origin which is not in the allowed list: \".concat(event.origin));\r\n return;\r\n }\r\n _this.registry.execute(\"onMessage\", extData);\r\n });\r\n if (this.connectionResolve) {\r\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\r\n this.connectionResolve();\r\n delete this.connectionResolve;\r\n return;\r\n }\r\n };\r\n WebPlatformTransport.prototype.handleAcceptanceOfGrandChildRequest = function (data, event) {\r\n if (this.extContentConnecting || this.extContentConnected) {\r\n this.logger.debug(\"cannot process acceptance of a grandchild, because I am connected to a content script\");\r\n return;\r\n }\r\n this.logger.debug(\"handling a connection accepted signal targeted at a grandchild: \".concat(data.clientId));\r\n var child = this.children.find(function (c) { return c.grandChildId === data.clientId; });\r\n if (!child) {\r\n this.logger.error(\"cannot handle connection accepted for grandchild: \".concat(data.clientId, \", because there is no grandchild with this id\"));\r\n return;\r\n }\r\n child.connected = true;\r\n this.logger.debug(\"the grandchild connection for \".concat(data.clientId, \" is set up, forwarding the success message and the gateway port\"));\r\n data.parentWindowId = this.publicWindowId;\r\n child.source.postMessage(event.data, child.origin, [data.port]);\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleConnectionRejected = function () {\r\n this.logger.debug(\"handling a connection rejection. Most likely the reason is that this window was not created by a glue API call\");\r\n if (this.connectionReject) {\r\n this.connectionReject(\"The platform connection was rejected. Most likely because this window was not created by a glue API call\");\r\n delete this.connectionReject;\r\n }\r\n };\r\n WebPlatformTransport.prototype.handleConnectionRequest = function (event) {\r\n if (this.extContentConnecting) {\r\n this.logger.debug(\"This connection request event is targeted at the extension content\");\r\n return;\r\n }\r\n var source = event.source;\r\n var data = event.data.glue42core;\r\n if (!data.clientType || data.clientType !== \"grandChild\") {\r\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source was not opened by a glue API call\");\r\n }\r\n if (!data.clientId) {\r\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source did not provide a valid id\");\r\n }\r\n if (!this.parent) {\r\n return this.rejectConnectionRequest(source, event.origin, \"Cannot forward the connection request, because no direct connection to the platform was found\");\r\n }\r\n this.logger.debug(\"handling a connection request for a grandchild: \".concat(data.clientId));\r\n this.children.push({ grandChildId: data.clientId, source: source, connected: false, origin: event.origin });\r\n this.logger.debug(\"grandchild: \".concat(data.clientId, \" is prepared, forwarding connection request to the platform\"));\r\n this.parent.postMessage(event.data, this.defaultTargetString);\r\n };\r\n WebPlatformTransport.prototype.handleParentPing = function (event) {\r\n if (!this.parentReady) {\r\n this.logger.debug(\"my parent is not ready, I am ignoring the parent ping\");\r\n return;\r\n }\r\n if (!this.iAmConnected) {\r\n this.logger.debug(\"i am not fully connected yet, I am ignoring the parent ping\");\r\n return;\r\n }\r\n var message = {\r\n glue42core: {\r\n type: this.messages.parentReady.name\r\n }\r\n };\r\n if (this.extContentConnected) {\r\n message.glue42core.extMode = { windowId: this.myClientId };\r\n }\r\n var source = event.source;\r\n this.logger.debug(\"responding to a parent ping with a ready message\");\r\n source.postMessage(message, event.origin);\r\n };\r\n WebPlatformTransport.prototype.setupPlatformUnloadListener = function () {\r\n var _this = this;\r\n this.onMessage(function (msg) {\r\n if (msg.type === \"platformUnload\") {\r\n _this.logger.debug(\"detected a web platform unload\");\r\n _this.parentReady = false;\r\n _this.notifyStatusChanged(false, \"Gateway unloaded\");\r\n }\r\n });\r\n };\r\n WebPlatformTransport.prototype.handleManualUnload = function () {\r\n var _a, _b;\r\n var message = {\r\n glue42core: {\r\n type: this.messages.clientUnload.name,\r\n data: {\r\n clientId: this.myClientId,\r\n ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n if (this.extContentConnected) {\r\n return window.postMessage({ glue42ExtOut: message }, this.defaultTargetString);\r\n }\r\n (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n };\r\n WebPlatformTransport.prototype.handleClientUnload = function (event) {\r\n var data = event.data.glue42core;\r\n var clientId = data === null || data === void 0 ? void 0 : data.data.clientId;\r\n if (!clientId) {\r\n this.logger.warn(\"cannot process grand child unload, because the provided id was not valid\");\r\n return;\r\n }\r\n var foundChild = this.children.find(function (child) { return child.grandChildId === clientId; });\r\n if (!foundChild) {\r\n this.logger.warn(\"cannot process grand child unload, because this client is unaware of this grandchild\");\r\n return;\r\n }\r\n this.logger.debug(\"handling grandchild unload for id: \".concat(clientId));\r\n this.children = this.children.filter(function (child) { return child.grandChildId !== clientId; });\r\n };\r\n WebPlatformTransport.prototype.handlePlatformPing = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.notifyStatusChanged = function (status, reason) {\r\n this.iAmConnected = status;\r\n this.registry.execute(\"onConnectedChanged\", status, reason);\r\n };\r\n WebPlatformTransport.prototype.checkMessageTypeValid = function (typeToValidate) {\r\n return typeof typeToValidate === \"string\" && !!this.messages[typeToValidate];\r\n };\r\n WebPlatformTransport.prototype.rejectConnectionRequest = function (source, origin, reason) {\r\n this.rejected = true;\r\n this.logger.error(reason);\r\n var rejection = {\r\n glue42core: {\r\n type: this.messages.connectionRejected.name\r\n }\r\n };\r\n source.postMessage(rejection, origin);\r\n };\r\n WebPlatformTransport.prototype.requestConnectionPermissionFromExt = function () {\r\n var _this = this;\r\n return this.waitForContentScript()\r\n .then(function () { return PromisePlus(function (resolve, reject) {\r\n _this.extConnectionResolve = resolve;\r\n _this.extConnectionReject = reject;\r\n var message = {\r\n glue42core: {\r\n type: \"extSetupRequest\"\r\n }\r\n };\r\n _this.logger.debug(\"permission request to the extension content script was sent\");\r\n window.postMessage(message, _this.defaultTargetString);\r\n }, _this.parentPingTimeout, \"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection timed out\"); });\r\n };\r\n WebPlatformTransport.prototype.handleExtConnectionResponse = function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (!data.approved) {\r\n return this.extConnectionReject ? this.extConnectionReject(\"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection was rejected\") : undefined;\r\n }\r\n if (this.extConnectionResolve) {\r\n this.extConnectionResolve();\r\n delete this.extConnectionResolve;\r\n }\r\n this.extContentConnecting = true;\r\n this.parentType = \"extension\";\r\n this.logger.debug(\"The extension connection was approved, proceeding.\");\r\n };\r\n WebPlatformTransport.prototype.handleExtSetupRequest = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleGatewayDisconnect = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleGatewayInternalConnect = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.waitForContentScript = function () {\r\n var _a;\r\n var contentReady = !!((_a = window.glue42ext) === null || _a === void 0 ? void 0 : _a.content);\r\n if (contentReady) {\r\n return Promise.resolve();\r\n }\r\n return PromisePlus(function (resolve) {\r\n window.addEventListener(\"Glue42EXTReady\", function () {\r\n resolve();\r\n });\r\n }, this.connectionRequestTimeout, \"The content script was available, but was never heard to be ready\");\r\n };\r\n WebPlatformTransport.prototype.connect = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.settings.port) return [3, 2];\r\n return [4, this.initiateInternalConnection()];\r\n case 1:\r\n _a.sent();\r\n this.logger.debug(\"internal web platform connection completed\");\r\n return [2];\r\n case 2:\r\n this.logger.debug(\"opening a client web platform connection\");\r\n return [4, this.findParent()];\r\n case 3:\r\n _a.sent();\r\n return [4, this.initiateRemoteConnection(this.parent)];\r\n case 4:\r\n _a.sent();\r\n this.logger.debug(\"the client is connected\");\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.findParent = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var connectionNotPossibleMsg, myInsideParents, myOutsideParents, uniqueParents, defaultParentCheck;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\r\n myInsideParents = this.getPossibleParentsInWindow(window);\r\n myOutsideParents = this.getPossibleParentsOutsideWindow((_a = window.top) === null || _a === void 0 ? void 0 : _a.opener, window.top);\r\n uniqueParents = new Set(__spreadArray(__spreadArray([], myInsideParents, true), myOutsideParents, true));\r\n if (!uniqueParents.size && !this.extContentAvailable) {\r\n throw new Error(connectionNotPossibleMsg);\r\n }\r\n if (!(!uniqueParents.size && this.extContentAvailable)) return [3, 2];\r\n return [4, this.requestConnectionPermissionFromExt()];\r\n case 1:\r\n _b.sent();\r\n return [2];\r\n case 2: return [4, this.isParentCheckSuccess(this.confirmParent(Array.from(uniqueParents)))];\r\n case 3:\r\n defaultParentCheck = _b.sent();\r\n if (defaultParentCheck.success) {\r\n this.logger.debug(\"The default parent was found!\");\r\n return [2];\r\n }\r\n if (!this.extContentAvailable) {\r\n throw new Error(connectionNotPossibleMsg);\r\n }\r\n return [4, this.requestConnectionPermissionFromExt()];\r\n case 4:\r\n _b.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.getPossibleParentsInWindow = function (currentWindow) {\r\n return (!currentWindow || currentWindow === currentWindow.top) ? [] : __spreadArray([currentWindow.parent], this.getPossibleParentsInWindow(currentWindow.parent), true);\r\n };\r\n WebPlatformTransport.prototype.getPossibleParentsOutsideWindow = function (opener, current) {\r\n return (!opener || !current || opener === current) ? [] : __spreadArray(__spreadArray([opener], this.getPossibleParentsInWindow(opener), true), this.getPossibleParentsOutsideWindow(opener.opener, opener), true);\r\n };\r\n WebPlatformTransport.prototype.confirmParent = function (targets) {\r\n var _this = this;\r\n var connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\r\n var parentCheck = PromisePlus(function (resolve) {\r\n _this.parentPingResolve = resolve;\r\n var message = {\r\n glue42core: {\r\n type: _this.messages.platformPing.name\r\n }\r\n };\r\n _this.parentPingInterval = setInterval(function () {\r\n targets.forEach(function (target) {\r\n target.postMessage(message, _this.defaultTargetString);\r\n });\r\n }, 1000);\r\n }, this.parentPingTimeout, connectionNotPossibleMsg);\r\n parentCheck.catch(function () {\r\n if (_this.parentPingInterval) {\r\n clearInterval(_this.parentPingInterval);\r\n delete _this.parentPingInterval;\r\n }\r\n });\r\n return parentCheck;\r\n };\r\n WebPlatformTransport.prototype.getMyWindowId = function () {\r\n var _a;\r\n if (this.parentType === \"workspace\") {\r\n return window.name.substring(0, window.name.indexOf(\"#wsp\"));\r\n }\r\n if (window !== window.top) {\r\n return;\r\n }\r\n if ((_a = window.name) === null || _a === void 0 ? void 0 : _a.includes(\"g42\")) {\r\n return window.name;\r\n }\r\n this.selfAssignedWindowId = this.selfAssignedWindowId || \"g42-\".concat(shortid());\r\n return this.selfAssignedWindowId;\r\n };\r\n return WebPlatformTransport;\r\n}());\n\nvar waitForInvocations = function (invocations, callback) {\r\n var left = invocations;\r\n return function () {\r\n left--;\r\n if (left === 0) {\r\n callback();\r\n }\r\n };\r\n};\n\nvar AsyncSequelizer = (function () {\r\n function AsyncSequelizer(minSequenceInterval) {\r\n if (minSequenceInterval === void 0) { minSequenceInterval = 0; }\r\n this.minSequenceInterval = minSequenceInterval;\r\n this.queue = [];\r\n this.isExecutingQueue = false;\r\n }\r\n AsyncSequelizer.prototype.enqueue = function (action) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.queue.push({ action: action, resolve: resolve, reject: reject });\r\n _this.executeQueue();\r\n });\r\n };\r\n AsyncSequelizer.prototype.executeQueue = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var operation, actionResult, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this.isExecutingQueue) {\r\n return [2];\r\n }\r\n this.isExecutingQueue = true;\r\n _a.label = 1;\r\n case 1:\r\n if (!this.queue.length) return [3, 7];\r\n operation = this.queue.shift();\r\n if (!operation) {\r\n this.isExecutingQueue = false;\r\n return [2];\r\n }\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4, operation.action()];\r\n case 3:\r\n actionResult = _a.sent();\r\n operation.resolve(actionResult);\r\n return [3, 5];\r\n case 4:\r\n error_1 = _a.sent();\r\n operation.reject(error_1);\r\n return [3, 5];\r\n case 5: return [4, this.intervalBreak()];\r\n case 6:\r\n _a.sent();\r\n return [3, 1];\r\n case 7:\r\n this.isExecutingQueue = false;\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n AsyncSequelizer.prototype.intervalBreak = function () {\r\n var _this = this;\r\n return new Promise(function (res) { return setTimeout(res, _this.minSequenceInterval); });\r\n };\r\n return AsyncSequelizer;\r\n}());\n\nvar Connection = (function () {\r\n function Connection(settings, logger) {\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.messageHandlers = {};\r\n this.ids = 1;\r\n this.registry = lib$1();\r\n this._connected = false;\r\n this.isTrace = false;\r\n this._swapTransport = false;\r\n this._switchInProgress = false;\r\n this._transportSubscriptions = [];\r\n this._sequelizer = new AsyncSequelizer();\r\n settings = settings || {};\r\n settings.reconnectAttempts = settings.reconnectAttempts || 10;\r\n settings.reconnectInterval = settings.reconnectInterval || 1000;\r\n if (settings.inproc) {\r\n this.transport = new InProcTransport(settings.inproc, logger.subLogger(\"inMemory\"));\r\n }\r\n else if (settings.sharedWorker) {\r\n this.transport = new SharedWorkerTransport(settings.sharedWorker, logger.subLogger(\"shared-worker\"));\r\n }\r\n else if (settings.webPlatform) {\r\n this.transport = new WebPlatformTransport(settings.webPlatform, logger.subLogger(\"web-platform\"), settings.identity);\r\n }\r\n else if (settings.ws !== undefined) {\r\n this.transport = new WS(settings, logger.subLogger(\"ws\"));\r\n }\r\n else {\r\n throw new Error(\"No connection information specified\");\r\n }\r\n this.isTrace = logger.canPublish(\"trace\");\r\n logger.debug(\"starting with \".concat(this.transport.name(), \" transport\"));\r\n this.protocol = new GW3ProtocolImpl(this, settings, logger.subLogger(\"protocol\"));\r\n var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\r\n var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\r\n this._transportSubscriptions.push(unsubConnectionChanged);\r\n this._transportSubscriptions.push(unsubOnMessage);\r\n this._defaultTransport = this.transport;\r\n }\r\n Object.defineProperty(Connection.prototype, \"protocolVersion\", {\r\n get: function () {\r\n var _a;\r\n return (_a = this.protocol) === null || _a === void 0 ? void 0 : _a.protocolVersion;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Connection.prototype.switchTransport = function (settings) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2, this._sequelizer.enqueue(function () { return __awaiter(_this, void 0, void 0, function () {\r\n var switchTargetTransport, verifyPromise, isSwitchSuccess;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!settings || typeof settings !== \"object\") {\r\n throw new Error(\"Cannot switch transports, because the settings are missing or invalid.\");\r\n }\r\n if (typeof settings.type === \"undefined\") {\r\n throw new Error(\"Cannot switch the transport, because the type is not defined\");\r\n }\r\n this.logger.trace(\"Starting transport switch with settings: \".concat(JSON.stringify(settings)));\r\n switchTargetTransport = settings.type === \"secondary\" ? this.getNewSecondaryTransport(settings) : this._defaultTransport;\r\n this._targetTransport = switchTargetTransport;\r\n this._targetAuth = settings.type === \"secondary\" ? this.getNewSecondaryAuth(settings) : this._defaultAuth;\r\n verifyPromise = this.verifyConnection();\r\n this._swapTransport = true;\r\n this._switchInProgress = true;\r\n this.logger.trace(\"The new transport has been set, closing the current transport\");\r\n return [4, this.transport.close()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4, verifyPromise];\r\n case 3:\r\n _a.sent();\r\n isSwitchSuccess = this.transport === switchTargetTransport;\r\n this.logger.info(\"The reconnection after the switch was completed. Was the switch a success: \".concat(isSwitchSuccess));\r\n this._switchInProgress = false;\r\n return [2, { success: isSwitchSuccess }];\r\n case 4:\r\n _a.sent();\r\n this.logger.info(\"The reconnection after the switch timed out, reverting back to the default transport.\");\r\n this.switchTransport({ type: \"default\" });\r\n this._switchInProgress = false;\r\n return [2, { success: false }];\r\n case 5: return [2];\r\n }\r\n });\r\n }); })];\r\n });\r\n });\r\n };\r\n Connection.prototype.onLibReAnnounced = function (callback) {\r\n return this.registry.add(\"libReAnnounced\", callback);\r\n };\r\n Connection.prototype.setLibReAnnounced = function (lib) {\r\n this.registry.execute(\"libReAnnounced\", lib);\r\n };\r\n Connection.prototype.send = function (message, options) {\r\n if (this.transport.sendObject &&\r\n this.transport.isObjectBasedTransport) {\r\n var msg = this.protocol.createObjectMessage(message);\r\n if (this.isTrace) {\r\n this.logger.trace(\">> \".concat(JSON.stringify(msg)));\r\n }\r\n return this.transport.sendObject(msg, options);\r\n }\r\n else {\r\n var strMessage = this.protocol.createStringMessage(message);\r\n if (this.isTrace) {\r\n this.logger.trace(\">> \".concat(strMessage));\r\n }\r\n return this.transport.send(strMessage, options);\r\n }\r\n };\r\n Connection.prototype.on = function (type, messageHandler) {\r\n type = type.toLowerCase();\r\n if (this.messageHandlers[type] === undefined) {\r\n this.messageHandlers[type] = {};\r\n }\r\n var id = this.ids++;\r\n this.messageHandlers[type][id] = messageHandler;\r\n return {\r\n type: type,\r\n id: id,\r\n };\r\n };\r\n Connection.prototype.off = function (info) {\r\n delete this.messageHandlers[info.type.toLowerCase()][info.id];\r\n };\r\n Object.defineProperty(Connection.prototype, \"isConnected\", {\r\n get: function () {\r\n return this.protocol.isLoggedIn;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Connection.prototype.connected = function (callback) {\r\n var _this = this;\r\n return this.protocol.loggedIn(function () {\r\n var currentServer = _this.transport.name();\r\n callback(currentServer);\r\n });\r\n };\r\n Connection.prototype.disconnected = function (callback) {\r\n return this.registry.add(\"disconnected\", callback);\r\n };\r\n Connection.prototype.login = function (authRequest, reconnect) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var newAuth, identity, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this._defaultAuth) {\r\n this._defaultAuth = authRequest;\r\n }\r\n if (this._swapTransport) {\r\n this.logger.trace(\"Detected a transport swap, swapping transports\");\r\n newAuth = this.transportSwap();\r\n authRequest = newAuth !== null && newAuth !== void 0 ? newAuth : authRequest;\r\n }\r\n this.logger.trace(\"Starting login for transport: \".concat(this.transport.name(), \" and auth \").concat(JSON.stringify(authRequest)));\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 4, , 5]);\r\n return [4, this.transport.open()];\r\n case 2:\r\n _a.sent();\r\n this.logger.trace(\"Transport: \".concat(this.transport.name(), \" opened, logging in\"));\r\n timer(\"connection\").mark(\"transport-opened\");\r\n return [4, this.protocol.login(authRequest, reconnect)];\r\n case 3:\r\n identity = _a.sent();\r\n this.logger.trace(\"Logged in with identity: \".concat(JSON.stringify(identity)));\r\n timer(\"connection\").mark(\"protocol-logged-in\");\r\n return [2, identity];\r\n case 4:\r\n error_2 = _a.sent();\r\n if (this._switchInProgress) {\r\n this.logger.trace(\"An error while logging in after a transport swap, preparing a default swap.\");\r\n this.prepareDefaultSwap();\r\n }\r\n throw new Error(error_2);\r\n case 5: return [2];\r\n }\r\n });\r\n });\r\n };\r\n Connection.prototype.logout = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, this.protocol.logout()];\r\n case 1:\r\n _a.sent();\r\n return [4, this.transport.close()];\r\n case 2:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Connection.prototype.loggedIn = function (callback) {\r\n return this.protocol.loggedIn(callback);\r\n };\r\n Connection.prototype.domain = function (domain, successMessages, errorMessages) {\r\n return this.protocol.domain(domain, this.logger.subLogger(\"domain=\".concat(domain)), successMessages, errorMessages);\r\n };\r\n Connection.prototype.authToken = function () {\r\n return this.protocol.authToken();\r\n };\r\n Connection.prototype.reconnect = function () {\r\n return this.transport.reconnect();\r\n };\r\n Connection.prototype.distributeMessage = function (message, type) {\r\n var _this = this;\r\n var handlers = this.messageHandlers[type.toLowerCase()];\r\n if (handlers !== undefined) {\r\n Object.keys(handlers).forEach(function (handlerId) {\r\n var handler = handlers[handlerId];\r\n if (handler !== undefined) {\r\n try {\r\n handler(message);\r\n }\r\n catch (error) {\r\n try {\r\n _this.logger.error(\"Message handler failed with \".concat(error.stack), error);\r\n }\r\n catch (loggerError) {\r\n console.log(\"Message handler failed\", error);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n };\r\n Connection.prototype.handleConnectionChanged = function (connected) {\r\n if (this._connected === connected) {\r\n return;\r\n }\r\n this._connected = connected;\r\n if (connected) {\r\n if (this.settings.replaySpecs && this.settings.replaySpecs.length) {\r\n this.replayer = new MessageReplayerImpl(this.settings.replaySpecs);\r\n this.replayer.init(this);\r\n }\r\n this.registry.execute(\"connected\");\r\n }\r\n else {\r\n this.registry.execute(\"disconnected\");\r\n }\r\n };\r\n Connection.prototype.handleTransportMessage = function (msg) {\r\n var msgObj;\r\n if (typeof msg === \"string\") {\r\n msgObj = this.protocol.processStringMessage(msg);\r\n }\r\n else {\r\n msgObj = this.protocol.processObjectMessage(msg);\r\n }\r\n if (this.isTrace) {\r\n this.logger.trace(\"<< \".concat(JSON.stringify(msgObj)));\r\n }\r\n this.distributeMessage(msgObj.msg, msgObj.msgType);\r\n };\r\n Connection.prototype.verifyConnection = function () {\r\n var _this = this;\r\n return PromisePlus(function (resolve) {\r\n var unsub;\r\n var ready = waitForInvocations(2, function () {\r\n if (unsub) {\r\n unsub();\r\n }\r\n resolve();\r\n });\r\n unsub = _this.onLibReAnnounced(function (lib) {\r\n if (lib.name === \"interop\") {\r\n return ready();\r\n }\r\n if (lib.name === \"contexts\") {\r\n return ready();\r\n }\r\n });\r\n }, 10000, \"Transport switch timed out waiting for all libraries to be re-announced\");\r\n };\r\n Connection.prototype.getNewSecondaryTransport = function (settings) {\r\n var _a;\r\n if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.url)) {\r\n throw new Error(\"Missing secondary transport URL.\");\r\n }\r\n return new WS(Object.assign({}, this.settings, { ws: settings.transportConfig.url, reconnectAttempts: 1 }), this.logger.subLogger(\"ws-secondary\"));\r\n };\r\n Connection.prototype.getNewSecondaryAuth = function (settings) {\r\n var _a;\r\n if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.auth)) {\r\n throw new Error(\"Missing secondary transport auth information.\");\r\n }\r\n return settings.transportConfig.auth;\r\n };\r\n Connection.prototype.transportSwap = function () {\r\n this._swapTransport = false;\r\n if (!this._targetTransport || !this._targetAuth) {\r\n this.logger.warn(\"Error while switching transports - either the target transport or auth is not defined: transport defined -> \".concat(!!this._defaultTransport, \", auth defined -> \").concat(!!this._targetAuth, \". Staying on the current one.\"));\r\n return;\r\n }\r\n this._transportSubscriptions.forEach(function (unsub) { return unsub(); });\r\n this._transportSubscriptions = [];\r\n this.transport = this._targetTransport;\r\n var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\r\n var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\r\n this._transportSubscriptions.push(unsubConnectionChanged);\r\n this._transportSubscriptions.push(unsubOnMessage);\r\n return this._targetAuth;\r\n };\r\n Connection.prototype.prepareDefaultSwap = function () {\r\n var _this = this;\r\n this._transportSubscriptions.forEach(function (unsub) { return unsub(); });\r\n this._transportSubscriptions = [];\r\n this.transport.close().catch(function (error) { return _this.logger.warn(\"Error closing the \".concat(_this.transport.name(), \" transport after a failed connection attempt: \").concat(JSON.stringify(error))); });\r\n this._targetTransport = this._defaultTransport;\r\n this._targetAuth = this._defaultAuth;\r\n this._swapTransport = true;\r\n };\r\n return Connection;\r\n}());\n\nvar order = [\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"off\"];\r\nvar Logger = (function () {\r\n function Logger(name, parent, logFn) {\r\n this.name = name;\r\n this.parent = parent;\r\n this.subLoggers = [];\r\n this.logFn = console;\r\n this.customLogFn = false;\r\n this.name = name;\r\n if (parent) {\r\n this.path = \"\".concat(parent.path, \".\").concat(name);\r\n }\r\n else {\r\n this.path = name;\r\n }\r\n this.loggerFullName = \"[\".concat(this.path, \"]\");\r\n this.includeTimeAndLevel = !logFn;\r\n if (logFn) {\r\n this.logFn = logFn;\r\n this.customLogFn = true;\r\n }\r\n }\r\n Logger.prototype.subLogger = function (name) {\r\n var existingSub = this.subLoggers.filter(function (subLogger) {\r\n return subLogger.name === name;\r\n })[0];\r\n if (existingSub !== undefined) {\r\n return existingSub;\r\n }\r\n Object.keys(this).forEach(function (key) {\r\n if (key === name) {\r\n throw new Error(\"This sub logger name is not allowed.\");\r\n }\r\n });\r\n var sub = new Logger(name, this, this.customLogFn ? this.logFn : undefined);\r\n this.subLoggers.push(sub);\r\n return sub;\r\n };\r\n Logger.prototype.publishLevel = function (level) {\r\n var _a;\r\n if (level) {\r\n this._publishLevel = level;\r\n }\r\n return this._publishLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.publishLevel());\r\n };\r\n Logger.prototype.consoleLevel = function (level) {\r\n var _a;\r\n if (level) {\r\n this._consoleLevel = level;\r\n }\r\n return this._consoleLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.consoleLevel());\r\n };\r\n Logger.prototype.log = function (message, level, error) {\r\n this.publishMessage(level || \"info\", message, error);\r\n };\r\n Logger.prototype.trace = function (message) {\r\n this.log(message, \"trace\");\r\n };\r\n Logger.prototype.debug = function (message) {\r\n this.log(message, \"debug\");\r\n };\r\n Logger.prototype.info = function (message) {\r\n this.log(message, \"info\");\r\n };\r\n Logger.prototype.warn = function (message) {\r\n this.log(message, \"warn\");\r\n };\r\n Logger.prototype.error = function (message, err) {\r\n this.log(message, \"error\");\r\n };\r\n Logger.prototype.canPublish = function (level, compareWith) {\r\n var levelIdx = order.indexOf(level);\r\n var restrictionIdx = order.indexOf(compareWith || this.consoleLevel() || \"trace\");\r\n return levelIdx >= restrictionIdx;\r\n };\r\n Logger.prototype.publishMessage = function (level, message, error) {\r\n var loggerName = this.loggerFullName;\r\n if (level === \"error\" && !error) {\r\n var e = new Error();\r\n if (e.stack) {\r\n message =\r\n message +\r\n \"\\n\" +\r\n e.stack\r\n .split(\"\\n\")\r\n .slice(3)\r\n .join(\"\\n\");\r\n }\r\n }\r\n if (this.canPublish(level, this.publishLevel())) {\r\n var interop = Logger.Interop;\r\n if (interop) {\r\n try {\r\n if (interop.methods({ name: Logger.InteropMethodName }).length > 0) {\r\n interop.invoke(Logger.InteropMethodName, {\r\n msg: \"\".concat(message),\r\n logger: loggerName,\r\n level: level\r\n });\r\n }\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n }\r\n if (this.canPublish(level)) {\r\n var prefix = \"\";\r\n if (this.includeTimeAndLevel) {\r\n var date = new Date();\r\n var time = \"\".concat(date.getHours(), \":\").concat(date.getMinutes(), \":\").concat(date.getSeconds(), \":\").concat(date.getMilliseconds());\r\n prefix = \"[\".concat(time, \"] [\").concat(level, \"] \");\r\n }\r\n var toPrint = \"\".concat(prefix).concat(loggerName, \": \").concat(message);\r\n switch (level) {\r\n case \"trace\":\r\n this.logFn.debug(toPrint);\r\n break;\r\n case \"debug\":\r\n if (this.logFn.debug) {\r\n this.logFn.debug(toPrint);\r\n }\r\n else {\r\n this.logFn.log(toPrint);\r\n }\r\n break;\r\n case \"info\":\r\n this.logFn.info(toPrint);\r\n break;\r\n case \"warn\":\r\n this.logFn.warn(toPrint);\r\n break;\r\n case \"error\":\r\n this.logFn.error(toPrint, error);\r\n break;\r\n }\r\n }\r\n };\r\n Logger.InteropMethodName = \"T42.AppLogger.Log\";\r\n return Logger;\r\n}());\n\nvar GW_MESSAGE_CREATE_CONTEXT = \"create-context\";\r\nvar GW_MESSAGE_ACTIVITY_CREATED = \"created\";\r\nvar GW_MESSAGE_ACTIVITY_DESTROYED = \"destroyed\";\r\nvar GW_MESSAGE_CONTEXT_CREATED = \"context-created\";\r\nvar GW_MESSAGE_CONTEXT_ADDED = \"context-added\";\r\nvar GW_MESSAGE_SUBSCRIBE_CONTEXT = \"subscribe-context\";\r\nvar GW_MESSAGE_SUBSCRIBED_CONTEXT = \"subscribed-context\";\r\nvar GW_MESSAGE_UNSUBSCRIBE_CONTEXT = \"unsubscribe-context\";\r\nvar GW_MESSAGE_DESTROY_CONTEXT = \"destroy-context\";\r\nvar GW_MESSAGE_CONTEXT_DESTROYED = \"context-destroyed\";\r\nvar GW_MESSAGE_UPDATE_CONTEXT = \"update-context\";\r\nvar GW_MESSAGE_CONTEXT_UPDATED = \"context-updated\";\r\nvar GW_MESSAGE_JOINED_ACTIVITY = \"joined\";\n\nvar ContextMessageReplaySpec = {\r\n get name() {\r\n return \"context\";\r\n },\r\n get types() {\r\n return [\r\n GW_MESSAGE_CREATE_CONTEXT,\r\n GW_MESSAGE_ACTIVITY_CREATED,\r\n GW_MESSAGE_ACTIVITY_DESTROYED,\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_CONTEXT_ADDED,\r\n GW_MESSAGE_SUBSCRIBE_CONTEXT,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\r\n GW_MESSAGE_DESTROY_CONTEXT,\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_UPDATE_CONTEXT,\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n GW_MESSAGE_JOINED_ACTIVITY\r\n ];\r\n }\r\n};\n\nvar version = \"6.1.0\";\n\nfunction prepareConfig (configuration, ext, glue42gd) {\r\n var _a, _b, _c, _d;\r\n var nodeStartingContext;\r\n if (Utils.isNode()) {\r\n var startingContextString = process.env._GD_STARTING_CONTEXT_;\r\n if (startingContextString) {\r\n try {\r\n nodeStartingContext = JSON.parse(startingContextString);\r\n }\r\n catch (_e) {\r\n }\r\n }\r\n }\r\n function getConnection() {\r\n var _a, _b, _c, _d, _e, _f;\r\n var gwConfig = configuration.gateway;\r\n var protocolVersion = (_a = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.protocolVersion) !== null && _a !== void 0 ? _a : 3;\r\n var reconnectInterval = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectInterval;\r\n var reconnectAttempts = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectAttempts;\r\n var defaultWs = \"ws://localhost:8385\";\r\n var ws = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.ws;\r\n var sharedWorker = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.sharedWorker;\r\n var inproc = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.inproc;\r\n var webPlatform = (_b = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.webPlatform) !== null && _b !== void 0 ? _b : undefined;\r\n if (glue42gd) {\r\n ws = glue42gd.gwURL;\r\n }\r\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwURL) {\r\n ws = nodeStartingContext.gwURL;\r\n }\r\n if (!ws && !sharedWorker && !inproc) {\r\n ws = defaultWs;\r\n }\r\n var instanceId;\r\n var windowId;\r\n var pid;\r\n var environment;\r\n var region;\r\n var appName = getApplication();\r\n var uniqueAppName = appName;\r\n if (typeof glue42gd !== \"undefined\") {\r\n windowId = glue42gd.windowId;\r\n pid = glue42gd.pid;\r\n if (glue42gd.env) {\r\n environment = glue42gd.env.env;\r\n region = glue42gd.env.region;\r\n }\r\n uniqueAppName = (_c = glue42gd.application) !== null && _c !== void 0 ? _c : \"glue-app\";\r\n instanceId = glue42gd.appInstanceId;\r\n }\r\n else if (Utils.isNode()) {\r\n pid = process.pid;\r\n if (nodeStartingContext) {\r\n environment = nodeStartingContext.env;\r\n region = nodeStartingContext.region;\r\n instanceId = nodeStartingContext.instanceId;\r\n }\r\n }\r\n else if (typeof (window === null || window === void 0 ? void 0 : window.glue42electron) !== \"undefined\") {\r\n windowId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId;\r\n pid = window === null || window === void 0 ? void 0 : window.glue42electron.pid;\r\n environment = window === null || window === void 0 ? void 0 : window.glue42electron.env;\r\n region = window === null || window === void 0 ? void 0 : window.glue42electron.region;\r\n uniqueAppName = (_d = window === null || window === void 0 ? void 0 : window.glue42electron.application) !== null && _d !== void 0 ? _d : \"glue-app\";\r\n instanceId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId;\r\n }\r\n else ;\r\n var replaySpecs = (_f = (_e = configuration.gateway) === null || _e === void 0 ? void 0 : _e.replaySpecs) !== null && _f !== void 0 ? _f : [];\r\n replaySpecs.push(ContextMessageReplaySpec);\r\n var identity = {\r\n application: uniqueAppName,\r\n applicationName: appName,\r\n windowId: windowId,\r\n instance: instanceId,\r\n process: pid,\r\n region: region,\r\n environment: environment,\r\n api: ext.version || version\r\n };\r\n if (configuration.identity) {\r\n identity = Object.assign(identity, configuration.identity);\r\n }\r\n return {\r\n identity: identity,\r\n reconnectInterval: reconnectInterval,\r\n ws: ws,\r\n sharedWorker: sharedWorker,\r\n webPlatform: webPlatform,\r\n inproc: inproc,\r\n protocolVersion: protocolVersion,\r\n reconnectAttempts: reconnectAttempts,\r\n replaySpecs: replaySpecs,\r\n };\r\n }\r\n function getContexts() {\r\n if (typeof configuration.contexts === \"undefined\") {\r\n return { reAnnounceKnownContexts: true };\r\n }\r\n if (typeof configuration.contexts === \"boolean\" && configuration.contexts) {\r\n return { reAnnounceKnownContexts: true };\r\n }\r\n if (typeof configuration.contexts === \"object\") {\r\n return Object.assign({}, { reAnnounceKnownContexts: true }, configuration.contexts);\r\n }\r\n return false;\r\n }\r\n function getApplication() {\r\n if (configuration.application) {\r\n return configuration.application;\r\n }\r\n if (glue42gd) {\r\n return glue42gd.applicationName;\r\n }\r\n if (typeof window !== \"undefined\" && typeof window.glue42electron !== \"undefined\") {\r\n return window.glue42electron.application;\r\n }\r\n var uid = shortid();\r\n if (Utils.isNode()) {\r\n if (nodeStartingContext) {\r\n return nodeStartingContext.applicationConfig.name;\r\n }\r\n return \"NodeJS\" + uid;\r\n }\r\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\r\n return document.title + \" (\".concat(uid, \")\");\r\n }\r\n return uid;\r\n }\r\n function getAuth() {\r\n var _a, _b, _c;\r\n if (typeof configuration.auth === \"string\") {\r\n return {\r\n token: configuration.auth\r\n };\r\n }\r\n if (configuration.auth) {\r\n return configuration.auth;\r\n }\r\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwToken) {\r\n return {\r\n gatewayToken: nodeStartingContext.gwToken\r\n };\r\n }\r\n if (((_a = configuration.gateway) === null || _a === void 0 ? void 0 : _a.webPlatform) || ((_b = configuration.gateway) === null || _b === void 0 ? void 0 : _b.inproc) || ((_c = configuration.gateway) === null || _c === void 0 ? void 0 : _c.sharedWorker)) {\r\n return {\r\n username: \"glue42\", password: \"glue42\"\r\n };\r\n }\r\n }\r\n function getLogger() {\r\n var _a, _b;\r\n var config = configuration.logger;\r\n var defaultLevel = \"warn\";\r\n if (!config) {\r\n config = defaultLevel;\r\n }\r\n var gdConsoleLevel;\r\n if (glue42gd) {\r\n gdConsoleLevel = glue42gd.consoleLogLevel;\r\n }\r\n if (typeof config === \"string\") {\r\n return { console: gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config, publish: defaultLevel };\r\n }\r\n return {\r\n console: (_a = gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config.console) !== null && _a !== void 0 ? _a : defaultLevel,\r\n publish: (_b = config.publish) !== null && _b !== void 0 ? _b : defaultLevel\r\n };\r\n }\r\n var connection = getConnection();\r\n var application = getApplication();\r\n if (typeof window !== \"undefined\") {\r\n var windowAsAny = window;\r\n var containerApplication = windowAsAny.htmlContainer ?\r\n \"\".concat(windowAsAny.htmlContainer.containerName, \".\").concat(windowAsAny.htmlContainer.application) :\r\n (_a = windowAsAny === null || windowAsAny === void 0 ? void 0 : windowAsAny.glue42gd) === null || _a === void 0 ? void 0 : _a.application;\r\n if (containerApplication) {\r\n application = containerApplication;\r\n }\r\n }\r\n return {\r\n bus: (_b = configuration.bus) !== null && _b !== void 0 ? _b : false,\r\n application: application,\r\n auth: getAuth(),\r\n logger: getLogger(),\r\n connection: connection,\r\n metrics: (_c = configuration.metrics) !== null && _c !== void 0 ? _c : true,\r\n contexts: getContexts(),\r\n version: ext.version || version,\r\n libs: (_d = ext.libs) !== null && _d !== void 0 ? _d : [],\r\n customLogger: configuration.customLogger\r\n };\r\n}\n\nvar GW3ContextData = (function () {\r\n function GW3ContextData(contextId, name, isAnnounced, activityId) {\r\n this.updateCallbacks = {};\r\n this.contextId = contextId;\r\n this.name = name;\r\n this.isAnnounced = isAnnounced;\r\n this.activityId = activityId;\r\n this.context = {};\r\n }\r\n GW3ContextData.prototype.hasCallbacks = function () {\r\n return Object.keys(this.updateCallbacks).length > 0;\r\n };\r\n GW3ContextData.prototype.getState = function () {\r\n if (this.isAnnounced && this.hasCallbacks()) {\r\n return 3;\r\n }\r\n if (this.isAnnounced) {\r\n return 2;\r\n }\r\n if (this.hasCallbacks()) {\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n return GW3ContextData;\r\n}());\n\nvar lodash_clonedeepExports = {};\nvar lodash_clonedeep = {\n get exports(){ return lodash_clonedeepExports; },\n set exports(v){ lodash_clonedeepExports = v; },\n};\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n(function (module, exports) {\n\t/** Used as the size to enable large array optimizations. */\n\tvar LARGE_ARRAY_SIZE = 200;\n\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t arrayTag = '[object Array]',\n\t boolTag = '[object Boolean]',\n\t dateTag = '[object Date]',\n\t errorTag = '[object Error]',\n\t funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]',\n\t mapTag = '[object Map]',\n\t numberTag = '[object Number]',\n\t objectTag = '[object Object]',\n\t promiseTag = '[object Promise]',\n\t regexpTag = '[object RegExp]',\n\t setTag = '[object Set]',\n\t stringTag = '[object String]',\n\t symbolTag = '[object Symbol]',\n\t weakMapTag = '[object WeakMap]';\n\n\tvar arrayBufferTag = '[object ArrayBuffer]',\n\t dataViewTag = '[object DataView]',\n\t float32Tag = '[object Float32Array]',\n\t float64Tag = '[object Float64Array]',\n\t int8Tag = '[object Int8Array]',\n\t int16Tag = '[object Int16Array]',\n\t int32Tag = '[object Int32Array]',\n\t uint8Tag = '[object Uint8Array]',\n\t uint8ClampedTag = '[object Uint8ClampedArray]',\n\t uint16Tag = '[object Uint16Array]',\n\t uint32Tag = '[object Uint32Array]';\n\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n\t/** Used to match `RegExp` flags from their coerced string values. */\n\tvar reFlags = /\\w*$/;\n\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n\t/** Used to identify `toStringTag` values supported by `_.clone`. */\n\tvar cloneableTags = {};\n\tcloneableTags[argsTag] = cloneableTags[arrayTag] =\n\tcloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n\tcloneableTags[boolTag] = cloneableTags[dateTag] =\n\tcloneableTags[float32Tag] = cloneableTags[float64Tag] =\n\tcloneableTags[int8Tag] = cloneableTags[int16Tag] =\n\tcloneableTags[int32Tag] = cloneableTags[mapTag] =\n\tcloneableTags[numberTag] = cloneableTags[objectTag] =\n\tcloneableTags[regexpTag] = cloneableTags[setTag] =\n\tcloneableTags[stringTag] = cloneableTags[symbolTag] =\n\tcloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n\tcloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n\tcloneableTags[errorTag] = cloneableTags[funcTag] =\n\tcloneableTags[weakMapTag] = false;\n\n\t/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n\t/** Detect free variable `self`. */\n\tvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n\t/** Used as a reference to the global object. */\n\tvar root = freeGlobal || freeSelf || Function('return this')();\n\n\t/** Detect free variable `exports`. */\n\tvar freeExports = exports && !exports.nodeType && exports;\n\n\t/** Detect free variable `module`. */\n\tvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n\t/** Detect the popular CommonJS extension `module.exports`. */\n\tvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n\t/**\n\t * Adds the key-value `pair` to `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to modify.\n\t * @param {Array} pair The key-value pair to add.\n\t * @returns {Object} Returns `map`.\n\t */\n\tfunction addMapEntry(map, pair) {\n\t // Don't return `map.set` because it's not chainable in IE 11.\n\t map.set(pair[0], pair[1]);\n\t return map;\n\t}\n\n\t/**\n\t * Adds `value` to `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to modify.\n\t * @param {*} value The value to add.\n\t * @returns {Object} Returns `set`.\n\t */\n\tfunction addSetEntry(set, value) {\n\t // Don't return `set.add` because it's not chainable in IE 11.\n\t set.add(value);\n\t return set;\n\t}\n\n\t/**\n\t * A specialized version of `_.forEach` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayEach(array, iteratee) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t while (++index < length) {\n\t if (iteratee(array[index], index, array) === false) {\n\t break;\n\t }\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Appends the elements of `values` to `array`.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {Array} values The values to append.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayPush(array, values) {\n\t var index = -1,\n\t length = values.length,\n\t offset = array.length;\n\n\t while (++index < length) {\n\t array[offset + index] = values[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * A specialized version of `_.reduce` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {boolean} [initAccum] Specify using the first element of `array` as\n\t * the initial value.\n\t * @returns {*} Returns the accumulated value.\n\t */\n\tfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t if (initAccum && length) {\n\t accumulator = array[++index];\n\t }\n\t while (++index < length) {\n\t accumulator = iteratee(accumulator, array[index], index, array);\n\t }\n\t return accumulator;\n\t}\n\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t var index = -1,\n\t result = Array(n);\n\n\t while (++index < n) {\n\t result[index] = iteratee(index);\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Gets the value at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} [object] The object to query.\n\t * @param {string} key The key of the property to get.\n\t * @returns {*} Returns the property value.\n\t */\n\tfunction getValue(object, key) {\n\t return object == null ? undefined : object[key];\n\t}\n\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t // Many host objects are `Object` objects that can coerce to strings\n\t // despite having improperly defined `toString` methods.\n\t var result = false;\n\t if (value != null && typeof value.toString != 'function') {\n\t try {\n\t result = !!(value + '');\n\t } catch (e) {}\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Converts `map` to its key-value pairs.\n\t *\n\t * @private\n\t * @param {Object} map The map to convert.\n\t * @returns {Array} Returns the key-value pairs.\n\t */\n\tfunction mapToArray(map) {\n\t var index = -1,\n\t result = Array(map.size);\n\n\t map.forEach(function(value, key) {\n\t result[++index] = [key, value];\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\n\t/**\n\t * Converts `set` to an array of its values.\n\t *\n\t * @private\n\t * @param {Object} set The set to convert.\n\t * @returns {Array} Returns the values.\n\t */\n\tfunction setToArray(set) {\n\t var index = -1,\n\t result = Array(set.size);\n\n\t set.forEach(function(value) {\n\t result[++index] = value;\n\t });\n\t return result;\n\t}\n\n\t/** Used for built-in method references. */\n\tvar arrayProto = Array.prototype,\n\t funcProto = Function.prototype,\n\t objectProto = Object.prototype;\n\n\t/** Used to detect overreaching core-js shims. */\n\tvar coreJsData = root['__core-js_shared__'];\n\n\t/** Used to detect methods masquerading as native. */\n\tvar maskSrcKey = (function() {\n\t var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n\t return uid ? ('Symbol(src)_1.' + uid) : '';\n\t}());\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\n\t/** Built-in value references. */\n\tvar Buffer = moduleExports ? root.Buffer : undefined,\n\t Symbol = root.Symbol,\n\t Uint8Array = root.Uint8Array,\n\t getPrototype = overArg(Object.getPrototypeOf, Object),\n\t objectCreate = Object.create,\n\t propertyIsEnumerable = objectProto.propertyIsEnumerable,\n\t splice = arrayProto.splice;\n\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeGetSymbols = Object.getOwnPropertySymbols,\n\t nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n\t nativeKeys = overArg(Object.keys, Object);\n\n\t/* Built-in method references that are verified to be native. */\n\tvar DataView = getNative(root, 'DataView'),\n\t Map = getNative(root, 'Map'),\n\t Promise = getNative(root, 'Promise'),\n\t Set = getNative(root, 'Set'),\n\t WeakMap = getNative(root, 'WeakMap'),\n\t nativeCreate = getNative(Object, 'create');\n\n\t/** Used to detect maps, sets, and weakmaps. */\n\tvar dataViewCtorString = toSource(DataView),\n\t mapCtorString = toSource(Map),\n\t promiseCtorString = toSource(Promise),\n\t setCtorString = toSource(Set),\n\t weakMapCtorString = toSource(WeakMap);\n\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n\t/**\n\t * Creates a hash object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Hash(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the hash.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Hash\n\t */\n\tfunction hashClear() {\n\t this.__data__ = nativeCreate ? nativeCreate(null) : {};\n\t}\n\n\t/**\n\t * Removes `key` and its value from the hash.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Hash\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction hashDelete(key) {\n\t return this.has(key) && delete this.__data__[key];\n\t}\n\n\t/**\n\t * Gets the hash value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction hashGet(key) {\n\t var data = this.__data__;\n\t if (nativeCreate) {\n\t var result = data[key];\n\t return result === HASH_UNDEFINED ? undefined : result;\n\t }\n\t return hasOwnProperty.call(data, key) ? data[key] : undefined;\n\t}\n\n\t/**\n\t * Checks if a hash value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Hash\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction hashHas(key) {\n\t var data = this.__data__;\n\t return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n\t}\n\n\t/**\n\t * Sets the hash `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the hash instance.\n\t */\n\tfunction hashSet(key, value) {\n\t var data = this.__data__;\n\t data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n\t return this;\n\t}\n\n\t// Add methods to `Hash`.\n\tHash.prototype.clear = hashClear;\n\tHash.prototype['delete'] = hashDelete;\n\tHash.prototype.get = hashGet;\n\tHash.prototype.has = hashHas;\n\tHash.prototype.set = hashSet;\n\n\t/**\n\t * Creates an list cache object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction ListCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the list cache.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf ListCache\n\t */\n\tfunction listCacheClear() {\n\t this.__data__ = [];\n\t}\n\n\t/**\n\t * Removes `key` and its value from the list cache.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction listCacheDelete(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t return false;\n\t }\n\t var lastIndex = data.length - 1;\n\t if (index == lastIndex) {\n\t data.pop();\n\t } else {\n\t splice.call(data, index, 1);\n\t }\n\t return true;\n\t}\n\n\t/**\n\t * Gets the list cache value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction listCacheGet(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t return index < 0 ? undefined : data[index][1];\n\t}\n\n\t/**\n\t * Checks if a list cache value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf ListCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction listCacheHas(key) {\n\t return assocIndexOf(this.__data__, key) > -1;\n\t}\n\n\t/**\n\t * Sets the list cache `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the list cache instance.\n\t */\n\tfunction listCacheSet(key, value) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t data.push([key, value]);\n\t } else {\n\t data[index][1] = value;\n\t }\n\t return this;\n\t}\n\n\t// Add methods to `ListCache`.\n\tListCache.prototype.clear = listCacheClear;\n\tListCache.prototype['delete'] = listCacheDelete;\n\tListCache.prototype.get = listCacheGet;\n\tListCache.prototype.has = listCacheHas;\n\tListCache.prototype.set = listCacheSet;\n\n\t/**\n\t * Creates a map cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction MapCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the map.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf MapCache\n\t */\n\tfunction mapCacheClear() {\n\t this.__data__ = {\n\t 'hash': new Hash,\n\t 'map': new (Map || ListCache),\n\t 'string': new Hash\n\t };\n\t}\n\n\t/**\n\t * Removes `key` and its value from the map.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction mapCacheDelete(key) {\n\t return getMapData(this, key)['delete'](key);\n\t}\n\n\t/**\n\t * Gets the map value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction mapCacheGet(key) {\n\t return getMapData(this, key).get(key);\n\t}\n\n\t/**\n\t * Checks if a map value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf MapCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction mapCacheHas(key) {\n\t return getMapData(this, key).has(key);\n\t}\n\n\t/**\n\t * Sets the map `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the map cache instance.\n\t */\n\tfunction mapCacheSet(key, value) {\n\t getMapData(this, key).set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `MapCache`.\n\tMapCache.prototype.clear = mapCacheClear;\n\tMapCache.prototype['delete'] = mapCacheDelete;\n\tMapCache.prototype.get = mapCacheGet;\n\tMapCache.prototype.has = mapCacheHas;\n\tMapCache.prototype.set = mapCacheSet;\n\n\t/**\n\t * Creates a stack cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Stack(entries) {\n\t this.__data__ = new ListCache(entries);\n\t}\n\n\t/**\n\t * Removes all key-value entries from the stack.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Stack\n\t */\n\tfunction stackClear() {\n\t this.__data__ = new ListCache;\n\t}\n\n\t/**\n\t * Removes `key` and its value from the stack.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction stackDelete(key) {\n\t return this.__data__['delete'](key);\n\t}\n\n\t/**\n\t * Gets the stack value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction stackGet(key) {\n\t return this.__data__.get(key);\n\t}\n\n\t/**\n\t * Checks if a stack value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Stack\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction stackHas(key) {\n\t return this.__data__.has(key);\n\t}\n\n\t/**\n\t * Sets the stack `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the stack cache instance.\n\t */\n\tfunction stackSet(key, value) {\n\t var cache = this.__data__;\n\t if (cache instanceof ListCache) {\n\t var pairs = cache.__data__;\n\t if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n\t pairs.push([key, value]);\n\t return this;\n\t }\n\t cache = this.__data__ = new MapCache(pairs);\n\t }\n\t cache.set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `Stack`.\n\tStack.prototype.clear = stackClear;\n\tStack.prototype['delete'] = stackDelete;\n\tStack.prototype.get = stackGet;\n\tStack.prototype.has = stackHas;\n\tStack.prototype.set = stackSet;\n\n\t/**\n\t * Creates an array of the enumerable property names of the array-like `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @param {boolean} inherited Specify returning inherited property names.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction arrayLikeKeys(value, inherited) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t // Safari 9 makes `arguments.length` enumerable in strict mode.\n\t var result = (isArray(value) || isArguments(value))\n\t ? baseTimes(value.length, String)\n\t : [];\n\n\t var length = result.length,\n\t skipIndexes = !!length;\n\n\t for (var key in value) {\n\t if ((inherited || hasOwnProperty.call(value, key)) &&\n\t !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Assigns `value` to `key` of `object` if the existing value is not equivalent\n\t * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to modify.\n\t * @param {string} key The key of the property to assign.\n\t * @param {*} value The value to assign.\n\t */\n\tfunction assignValue(object, key, value) {\n\t var objValue = object[key];\n\t if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n\t (value === undefined && !(key in object))) {\n\t object[key] = value;\n\t }\n\t}\n\n\t/**\n\t * Gets the index at which the `key` is found in `array` of key-value pairs.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {*} key The key to search for.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction assocIndexOf(array, key) {\n\t var length = array.length;\n\t while (length--) {\n\t if (eq(array[length][0], key)) {\n\t return length;\n\t }\n\t }\n\t return -1;\n\t}\n\n\t/**\n\t * The base implementation of `_.assign` without support for multiple sources\n\t * or `customizer` functions.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction baseAssign(object, source) {\n\t return object && copyObject(source, keys(source), object);\n\t}\n\n\t/**\n\t * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n\t * traversed objects.\n\t *\n\t * @private\n\t * @param {*} value The value to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @param {boolean} [isFull] Specify a clone including symbols.\n\t * @param {Function} [customizer] The function to customize cloning.\n\t * @param {string} [key] The key of `value`.\n\t * @param {Object} [object] The parent object of `value`.\n\t * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n\t * @returns {*} Returns the cloned value.\n\t */\n\tfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n\t var result;\n\t if (customizer) {\n\t result = object ? customizer(value, key, object, stack) : customizer(value);\n\t }\n\t if (result !== undefined) {\n\t return result;\n\t }\n\t if (!isObject(value)) {\n\t return value;\n\t }\n\t var isArr = isArray(value);\n\t if (isArr) {\n\t result = initCloneArray(value);\n\t if (!isDeep) {\n\t return copyArray(value, result);\n\t }\n\t } else {\n\t var tag = getTag(value),\n\t isFunc = tag == funcTag || tag == genTag;\n\n\t if (isBuffer(value)) {\n\t return cloneBuffer(value, isDeep);\n\t }\n\t if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n\t if (isHostObject(value)) {\n\t return object ? value : {};\n\t }\n\t result = initCloneObject(isFunc ? {} : value);\n\t if (!isDeep) {\n\t return copySymbols(value, baseAssign(result, value));\n\t }\n\t } else {\n\t if (!cloneableTags[tag]) {\n\t return object ? value : {};\n\t }\n\t result = initCloneByTag(value, tag, baseClone, isDeep);\n\t }\n\t }\n\t // Check for circular references and return its corresponding clone.\n\t stack || (stack = new Stack);\n\t var stacked = stack.get(value);\n\t if (stacked) {\n\t return stacked;\n\t }\n\t stack.set(value, result);\n\n\t if (!isArr) {\n\t var props = isFull ? getAllKeys(value) : keys(value);\n\t }\n\t arrayEach(props || value, function(subValue, key) {\n\t if (props) {\n\t key = subValue;\n\t subValue = value[key];\n\t }\n\t // Recursively populate clone (susceptible to call stack limits).\n\t assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * The base implementation of `_.create` without support for assigning\n\t * properties to the created object.\n\t *\n\t * @private\n\t * @param {Object} prototype The object to inherit from.\n\t * @returns {Object} Returns the new object.\n\t */\n\tfunction baseCreate(proto) {\n\t return isObject(proto) ? objectCreate(proto) : {};\n\t}\n\n\t/**\n\t * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n\t * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n\t * symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @param {Function} symbolsFunc The function to get the symbols of `object`.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n\t var result = keysFunc(object);\n\t return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n\t}\n\n\t/**\n\t * The base implementation of `getTag`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tfunction baseGetTag(value) {\n\t return objectToString.call(value);\n\t}\n\n\t/**\n\t * The base implementation of `_.isNative` without bad shim checks.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t * else `false`.\n\t */\n\tfunction baseIsNative(value) {\n\t if (!isObject(value) || isMasked(value)) {\n\t return false;\n\t }\n\t var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n\t return pattern.test(toSource(value));\n\t}\n\n\t/**\n\t * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t if (!isPrototype(object)) {\n\t return nativeKeys(object);\n\t }\n\t var result = [];\n\t for (var key in Object(object)) {\n\t if (hasOwnProperty.call(object, key) && key != 'constructor') {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `buffer`.\n\t *\n\t * @private\n\t * @param {Buffer} buffer The buffer to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Buffer} Returns the cloned buffer.\n\t */\n\tfunction cloneBuffer(buffer, isDeep) {\n\t if (isDeep) {\n\t return buffer.slice();\n\t }\n\t var result = new buffer.constructor(buffer.length);\n\t buffer.copy(result);\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `arrayBuffer`.\n\t *\n\t * @private\n\t * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n\t * @returns {ArrayBuffer} Returns the cloned array buffer.\n\t */\n\tfunction cloneArrayBuffer(arrayBuffer) {\n\t var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n\t new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `dataView`.\n\t *\n\t * @private\n\t * @param {Object} dataView The data view to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned data view.\n\t */\n\tfunction cloneDataView(dataView, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n\t return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n\t}\n\n\t/**\n\t * Creates a clone of `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned map.\n\t */\n\tfunction cloneMap(map, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n\t return arrayReduce(array, addMapEntry, new map.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of `regexp`.\n\t *\n\t * @private\n\t * @param {Object} regexp The regexp to clone.\n\t * @returns {Object} Returns the cloned regexp.\n\t */\n\tfunction cloneRegExp(regexp) {\n\t var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n\t result.lastIndex = regexp.lastIndex;\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned set.\n\t */\n\tfunction cloneSet(set, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n\t return arrayReduce(array, addSetEntry, new set.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of the `symbol` object.\n\t *\n\t * @private\n\t * @param {Object} symbol The symbol object to clone.\n\t * @returns {Object} Returns the cloned symbol object.\n\t */\n\tfunction cloneSymbol(symbol) {\n\t return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n\t}\n\n\t/**\n\t * Creates a clone of `typedArray`.\n\t *\n\t * @private\n\t * @param {Object} typedArray The typed array to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned typed array.\n\t */\n\tfunction cloneTypedArray(typedArray, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n\t return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n\t}\n\n\t/**\n\t * Copies the values of `source` to `array`.\n\t *\n\t * @private\n\t * @param {Array} source The array to copy values from.\n\t * @param {Array} [array=[]] The array to copy values to.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction copyArray(source, array) {\n\t var index = -1,\n\t length = source.length;\n\n\t array || (array = Array(length));\n\t while (++index < length) {\n\t array[index] = source[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Copies properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy properties from.\n\t * @param {Array} props The property identifiers to copy.\n\t * @param {Object} [object={}] The object to copy properties to.\n\t * @param {Function} [customizer] The function to customize copied values.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copyObject(source, props, object, customizer) {\n\t object || (object = {});\n\n\t var index = -1,\n\t length = props.length;\n\n\t while (++index < length) {\n\t var key = props[index];\n\n\t var newValue = customizer\n\t ? customizer(object[key], source[key], key, object, source)\n\t : undefined;\n\n\t assignValue(object, key, newValue === undefined ? source[key] : newValue);\n\t }\n\t return object;\n\t}\n\n\t/**\n\t * Copies own symbol properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy symbols from.\n\t * @param {Object} [object={}] The object to copy symbols to.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copySymbols(source, object) {\n\t return copyObject(source, getSymbols(source), object);\n\t}\n\n\t/**\n\t * Creates an array of own enumerable property names and symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction getAllKeys(object) {\n\t return baseGetAllKeys(object, keys, getSymbols);\n\t}\n\n\t/**\n\t * Gets the data for `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to query.\n\t * @param {string} key The reference key.\n\t * @returns {*} Returns the map data.\n\t */\n\tfunction getMapData(map, key) {\n\t var data = map.__data__;\n\t return isKeyable(key)\n\t ? data[typeof key == 'string' ? 'string' : 'hash']\n\t : data.map;\n\t}\n\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t var value = getValue(object, key);\n\t return baseIsNative(value) ? value : undefined;\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable symbol properties of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of symbols.\n\t */\n\tvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n\t/**\n\t * Gets the `toStringTag` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tvar getTag = baseGetTag;\n\n\t// Fallback for data views, maps, sets, and weak maps in IE 11,\n\t// for data views in Edge < 14, and promises in Node.js.\n\tif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n\t (Map && getTag(new Map) != mapTag) ||\n\t (Promise && getTag(Promise.resolve()) != promiseTag) ||\n\t (Set && getTag(new Set) != setTag) ||\n\t (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n\t getTag = function(value) {\n\t var result = objectToString.call(value),\n\t Ctor = result == objectTag ? value.constructor : undefined,\n\t ctorString = Ctor ? toSource(Ctor) : undefined;\n\n\t if (ctorString) {\n\t switch (ctorString) {\n\t case dataViewCtorString: return dataViewTag;\n\t case mapCtorString: return mapTag;\n\t case promiseCtorString: return promiseTag;\n\t case setCtorString: return setTag;\n\t case weakMapCtorString: return weakMapTag;\n\t }\n\t }\n\t return result;\n\t };\n\t}\n\n\t/**\n\t * Initializes an array clone.\n\t *\n\t * @private\n\t * @param {Array} array The array to clone.\n\t * @returns {Array} Returns the initialized clone.\n\t */\n\tfunction initCloneArray(array) {\n\t var length = array.length,\n\t result = array.constructor(length);\n\n\t // Add properties assigned by `RegExp#exec`.\n\t if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n\t result.index = array.index;\n\t result.input = array.input;\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Initializes an object clone.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneObject(object) {\n\t return (typeof object.constructor == 'function' && !isPrototype(object))\n\t ? baseCreate(getPrototype(object))\n\t : {};\n\t}\n\n\t/**\n\t * Initializes an object clone based on its `toStringTag`.\n\t *\n\t * **Note:** This function only supports cloning values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @param {string} tag The `toStringTag` of the object to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n\t var Ctor = object.constructor;\n\t switch (tag) {\n\t case arrayBufferTag:\n\t return cloneArrayBuffer(object);\n\n\t case boolTag:\n\t case dateTag:\n\t return new Ctor(+object);\n\n\t case dataViewTag:\n\t return cloneDataView(object, isDeep);\n\n\t case float32Tag: case float64Tag:\n\t case int8Tag: case int16Tag: case int32Tag:\n\t case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n\t return cloneTypedArray(object, isDeep);\n\n\t case mapTag:\n\t return cloneMap(object, isDeep, cloneFunc);\n\n\t case numberTag:\n\t case stringTag:\n\t return new Ctor(object);\n\n\t case regexpTag:\n\t return cloneRegExp(object);\n\n\t case setTag:\n\t return cloneSet(object, isDeep, cloneFunc);\n\n\t case symbolTag:\n\t return cloneSymbol(object);\n\t }\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return !!length &&\n\t (typeof value == 'number' || reIsUint.test(value)) &&\n\t (value > -1 && value % 1 == 0 && value < length);\n\t}\n\n\t/**\n\t * Checks if `value` is suitable for use as unique object key.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n\t */\n\tfunction isKeyable(value) {\n\t var type = typeof value;\n\t return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n\t ? (value !== '__proto__')\n\t : (value === null);\n\t}\n\n\t/**\n\t * Checks if `func` has its source masked.\n\t *\n\t * @private\n\t * @param {Function} func The function to check.\n\t * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n\t */\n\tfunction isMasked(func) {\n\t return !!maskSrcKey && (maskSrcKey in func);\n\t}\n\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t var Ctor = value && value.constructor,\n\t proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n\t return value === proto;\n\t}\n\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to process.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t if (func != null) {\n\t try {\n\t return funcToString.call(func);\n\t } catch (e) {}\n\t try {\n\t return (func + '');\n\t } catch (e) {}\n\t }\n\t return '';\n\t}\n\n\t/**\n\t * This method is like `_.clone` except that it recursively clones `value`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 1.0.0\n\t * @category Lang\n\t * @param {*} value The value to recursively clone.\n\t * @returns {*} Returns the deep cloned value.\n\t * @see _.clone\n\t * @example\n\t *\n\t * var objects = [{ 'a': 1 }, { 'b': 2 }];\n\t *\n\t * var deep = _.cloneDeep(objects);\n\t * console.log(deep[0] === objects[0]);\n\t * // => false\n\t */\n\tfunction cloneDeep(value) {\n\t return baseClone(value, true, true);\n\t}\n\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t * var other = { 'a': 1 };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t return value === other || (value !== value && other !== other);\n\t}\n\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tfunction isArguments(value) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n\t (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t return value != null && isLength(value.length) && !isFunction(value);\n\t}\n\n\t/**\n\t * This method is like `_.isArrayLike` except that it also checks if `value`\n\t * is an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array-like object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArrayLikeObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject('abc');\n\t * // => false\n\t *\n\t * _.isArrayLikeObject(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLikeObject(value) {\n\t return isObjectLike(value) && isArrayLike(value);\n\t}\n\n\t/**\n\t * Checks if `value` is a buffer.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.3.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n\t * @example\n\t *\n\t * _.isBuffer(new Buffer(2));\n\t * // => true\n\t *\n\t * _.isBuffer(new Uint8Array(2));\n\t * // => false\n\t */\n\tvar isBuffer = nativeIsBuffer || stubFalse;\n\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 8-9 which returns 'object' for typed array and other constructors.\n\t var tag = isObject(value) ? objectToString.call(value) : '';\n\t return tag == funcTag || tag == genTag;\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This method is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t return typeof value == 'number' &&\n\t value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n\t}\n\n\t/**\n\t * This method returns a new empty array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {Array} Returns the new empty array.\n\t * @example\n\t *\n\t * var arrays = _.times(2, _.stubArray);\n\t *\n\t * console.log(arrays);\n\t * // => [[], []]\n\t *\n\t * console.log(arrays[0] === arrays[1]);\n\t * // => false\n\t */\n\tfunction stubArray() {\n\t return [];\n\t}\n\n\t/**\n\t * This method returns `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {boolean} Returns `false`.\n\t * @example\n\t *\n\t * _.times(2, _.stubFalse);\n\t * // => [false, false]\n\t */\n\tfunction stubFalse() {\n\t return false;\n\t}\n\n\tmodule.exports = cloneDeep;\n} (lodash_clonedeep, lodash_clonedeepExports));\n\nvar cloneDeep = lodash_clonedeepExports;\n\nfunction applyContextDelta(context, delta, logger) {\r\n try {\r\n if (logger === null || logger === void 0 ? void 0 : logger.canPublish(\"trace\")) {\r\n logger === null || logger === void 0 ? void 0 : logger.trace(\"applying context delta \".concat(JSON.stringify(delta), \" on context \").concat(JSON.stringify(context)));\r\n }\r\n if (!delta) {\r\n return context;\r\n }\r\n if (delta.reset) {\r\n context = __assign({}, delta.reset);\r\n return context;\r\n }\r\n context = deepClone(context, undefined);\r\n if (delta.commands) {\r\n for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) {\r\n var command = _a[_i];\r\n if (command.type === \"remove\") {\r\n deletePath(context, command.path);\r\n }\r\n else if (command.type === \"set\") {\r\n setValueToPath(context, command.value, command.path);\r\n }\r\n }\r\n return context;\r\n }\r\n var added_1 = delta.added;\r\n var updated_1 = delta.updated;\r\n var removed = delta.removed;\r\n if (added_1) {\r\n Object.keys(added_1).forEach(function (key) {\r\n context[key] = added_1[key];\r\n });\r\n }\r\n if (updated_1) {\r\n Object.keys(updated_1).forEach(function (key) {\r\n mergeObjectsProperties(key, context, updated_1);\r\n });\r\n }\r\n if (removed) {\r\n removed.forEach(function (key) {\r\n delete context[key];\r\n });\r\n }\r\n return context;\r\n }\r\n catch (e) {\r\n logger === null || logger === void 0 ? void 0 : logger.error(\"error applying context delta \".concat(JSON.stringify(delta), \" on context \").concat(JSON.stringify(context)), e);\r\n return context;\r\n }\r\n}\r\nfunction deepClone(obj, hash) {\r\n return cloneDeep(obj);\r\n}\r\nvar mergeObjectsProperties = function (key, what, withWhat) {\r\n var right = withWhat[key];\r\n if (right === undefined) {\r\n return what;\r\n }\r\n var left = what[key];\r\n if (!left || !right) {\r\n what[key] = right;\r\n return what;\r\n }\r\n if (typeof left === \"string\" ||\r\n typeof left === \"number\" ||\r\n typeof left === \"boolean\" ||\r\n typeof right === \"string\" ||\r\n typeof right === \"number\" ||\r\n typeof right === \"boolean\" ||\r\n Array.isArray(left) ||\r\n Array.isArray(right)) {\r\n what[key] = right;\r\n return what;\r\n }\r\n what[key] = Object.assign({}, left, right);\r\n return what;\r\n};\r\nfunction deepEqual(x, y) {\r\n if (x === y) {\r\n return true;\r\n }\r\n if (!(x instanceof Object) || !(y instanceof Object)) {\r\n return false;\r\n }\r\n if (x.constructor !== y.constructor) {\r\n return false;\r\n }\r\n for (var p in x) {\r\n if (!x.hasOwnProperty(p)) {\r\n continue;\r\n }\r\n if (!y.hasOwnProperty(p)) {\r\n return false;\r\n }\r\n if (x[p] === y[p]) {\r\n continue;\r\n }\r\n if (typeof (x[p]) !== \"object\") {\r\n return false;\r\n }\r\n if (!deepEqual(x[p], y[p])) {\r\n return false;\r\n }\r\n }\r\n for (var p in y) {\r\n if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction setValueToPath(obj, value, path) {\r\n var pathArr = path.split(\".\");\r\n var i;\r\n for (i = 0; i < pathArr.length - 1; i++) {\r\n if (!obj[pathArr[i]]) {\r\n obj[pathArr[i]] = {};\r\n }\r\n if (typeof obj[pathArr[i]] !== \"object\") {\r\n obj[pathArr[i]] = {};\r\n }\r\n obj = obj[pathArr[i]];\r\n }\r\n obj[pathArr[i]] = value;\r\n}\r\nfunction isSubset(superObj, subObj) {\r\n return Object.keys(subObj).every(function (ele) {\r\n if (typeof subObj[ele] === \"object\") {\r\n return isSubset((superObj === null || superObj === void 0 ? void 0 : superObj[ele]) || {}, subObj[ele] || {});\r\n }\r\n return subObj[ele] === (superObj === null || superObj === void 0 ? void 0 : superObj[ele]);\r\n });\r\n}\r\nfunction deletePath(obj, path) {\r\n var pathArr = path.split(\".\");\r\n var i;\r\n for (i = 0; i < pathArr.length - 1; i++) {\r\n if (!obj[pathArr[i]]) {\r\n return;\r\n }\r\n obj = obj[pathArr[i]];\r\n }\r\n delete obj[pathArr[i]];\r\n}\n\nvar GW3Bridge = (function () {\r\n function GW3Bridge(config) {\r\n var _this = this;\r\n var _a;\r\n this._contextNameToData = {};\r\n this._gw3Subscriptions = [];\r\n this._nextCallbackSubscriptionNumber = 0;\r\n this._creationPromises = {};\r\n this._contextNameToId = {};\r\n this._contextIdToName = {};\r\n this._protocolVersion = undefined;\r\n this._contextsTempCache = {};\r\n this._contextsSubscriptionsCache = [];\r\n this._connection = config.connection;\r\n this._logger = config.logger;\r\n this._trackAllContexts = config.trackAllContexts;\r\n this._reAnnounceKnownContexts = config.reAnnounceKnownContexts;\r\n this._gw3Session = this._connection.domain(\"global\", [\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n ]);\r\n this._gw3Session.disconnected(this.resetState.bind(this));\r\n this._gw3Session.onJoined(function (wasReconnect) {\r\n if (!wasReconnect) {\r\n return;\r\n }\r\n if (!_this._reAnnounceKnownContexts) {\r\n return _this._connection.setLibReAnnounced({ name: \"contexts\" });\r\n }\r\n _this.reInitiateState().then(function () { return _this._connection.setLibReAnnounced({ name: \"contexts\" }); });\r\n });\r\n this.subscribeToContextCreatedMessages();\r\n this.subscribeToContextUpdatedMessages();\r\n this.subscribeToContextDestroyedMessages();\r\n (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) {\r\n var type = message.type;\r\n if (!type) {\r\n return;\r\n }\r\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\r\n type === GW_MESSAGE_CONTEXT_ADDED ||\r\n type === GW_MESSAGE_ACTIVITY_CREATED) {\r\n _this.handleContextCreatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\r\n type === GW_MESSAGE_CONTEXT_UPDATED ||\r\n type === GW_MESSAGE_JOINED_ACTIVITY) {\r\n _this.handleContextUpdatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\r\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n _this.handleContextDestroyedMessage(message);\r\n }\r\n });\r\n }\r\n Object.defineProperty(GW3Bridge.prototype, \"protocolVersion\", {\r\n get: function () {\r\n var _a;\r\n if (!this._protocolVersion) {\r\n var contextsDomainInfo = this._connection.availableDomains.find(function (d) { return d.uri === \"context\"; });\r\n this._protocolVersion = (_a = contextsDomainInfo === null || contextsDomainInfo === void 0 ? void 0 : contextsDomainInfo.version) !== null && _a !== void 0 ? _a : 1;\r\n }\r\n return this._protocolVersion;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(GW3Bridge.prototype, \"setPathSupported\", {\r\n get: function () {\r\n return this.protocolVersion >= 2;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n GW3Bridge.prototype.dispose = function () {\r\n for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) {\r\n var sub = _a[_i];\r\n this._connection.off(sub);\r\n }\r\n this._gw3Subscriptions.length = 0;\r\n for (var contextName in this._contextNameToData) {\r\n if (this._contextNameToId.hasOwnProperty(contextName)) {\r\n delete this._contextNameToData[contextName];\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.createContext = function (name, data) {\r\n var _this = this;\r\n if (name in this._creationPromises) {\r\n return this._creationPromises[name];\r\n }\r\n this._creationPromises[name] =\r\n this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_CREATE_CONTEXT,\r\n domain: \"global\",\r\n name: name,\r\n data: data,\r\n lifetime: \"retained\",\r\n })\r\n .then(function (createContextMsg) {\r\n _this._contextNameToId[name] = createContextMsg.context_id;\r\n _this._contextIdToName[createContextMsg.context_id] = name;\r\n var contextData = _this._contextNameToData[name] || new GW3ContextData(createContextMsg.context_id, name, true, undefined);\r\n contextData.isAnnounced = true;\r\n contextData.name = name;\r\n contextData.contextId = createContextMsg.context_id;\r\n contextData.context = createContextMsg.data || deepClone(data);\r\n contextData.hasReceivedSnapshot = true;\r\n _this._contextNameToData[name] = contextData;\r\n delete _this._creationPromises[name];\r\n return createContextMsg.context_id;\r\n });\r\n return this._creationPromises[name];\r\n };\r\n GW3Bridge.prototype.all = function () {\r\n var _this = this;\r\n return Object.keys(this._contextNameToData)\r\n .filter(function (name) { return _this._contextNameToData[name].isAnnounced; });\r\n };\r\n GW3Bridge.prototype.update = function (name, delta) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, currentContext, calculatedDelta;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (delta) {\r\n delta = deepClone(delta);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, this.createContext(name, delta)];\r\n }\r\n currentContext = contextData.context;\r\n if (!!contextData.hasCallbacks()) return [3, 4];\r\n return [4, this.get(contextData.name)];\r\n case 3:\r\n currentContext = _b.sent();\r\n _b.label = 4;\r\n case 4:\r\n calculatedDelta = this.protocolVersion === 2 ?\r\n this.calculateContextDeltaV2(currentContext, delta) :\r\n this.calculateContextDeltaV1(currentContext, delta);\r\n if (!Object.keys(calculatedDelta.added).length\r\n && !Object.keys(calculatedDelta.updated).length\r\n && !calculatedDelta.removed.length\r\n && !((_a = calculatedDelta.commands) === null || _a === void 0 ? void 0 : _a.length)) {\r\n return [2, Promise.resolve()];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: calculatedDelta,\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, calculatedDelta, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.set = function (name, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (data) {\r\n data = deepClone(data);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, this.createContext(name, data)];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: { reset: data },\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, {\r\n reset: data,\r\n added: {},\r\n removed: [],\r\n updated: {}\r\n }, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.setPath = function (name, path, value) {\r\n if (!this.setPathSupported) {\r\n return Promise.reject(\"glue.contexts.setPath operation is not supported, use Glue42 3.10 or later\");\r\n }\r\n return this.setPaths(name, [{ path: path, value: value }]);\r\n };\r\n GW3Bridge.prototype.setPaths = function (name, pathValues) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, obj, _i, pathValues_1, pathValue, commands, _a, pathValues_2, pathValue;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!this.setPathSupported) {\r\n return [2, Promise.reject(\"glue.contexts.setPaths operation is not supported, use Glue42 3.10 or later\")];\r\n }\r\n if (pathValues) {\r\n pathValues = deepClone(pathValues);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n obj = {};\r\n for (_i = 0, pathValues_1 = pathValues; _i < pathValues_1.length; _i++) {\r\n pathValue = pathValues_1[_i];\r\n setValueToPath(obj, pathValue.value, pathValue.path);\r\n }\r\n return [2, this.createContext(name, obj)];\r\n }\r\n commands = [];\r\n for (_a = 0, pathValues_2 = pathValues; _a < pathValues_2.length; _a++) {\r\n pathValue = pathValues_2[_a];\r\n if (pathValue.value === null) {\r\n commands.push({ type: \"remove\", path: pathValue.path });\r\n }\r\n else {\r\n commands.push({ type: \"set\", path: pathValue.path, value: pathValue.value });\r\n }\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: { commands: commands }\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, {\r\n added: {},\r\n removed: [],\r\n updated: {},\r\n commands: commands\r\n }, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.get = function (name) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, context;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, Promise.resolve({})];\r\n }\r\n if (contextData && (!contextData.hasCallbacks() || !contextData.hasReceivedSnapshot)) {\r\n return [2, new Promise(function (resolve) {\r\n _this.subscribe(name, function (data, _d, _r, un) {\r\n _this.unsubscribe(un);\r\n resolve(data);\r\n });\r\n })];\r\n }\r\n context = (_a = contextData === null || contextData === void 0 ? void 0 : contextData.context) !== null && _a !== void 0 ? _a : {};\r\n return [2, Promise.resolve(deepClone(context))];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.subscribe = function (name, callback, subscriptionKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var thisCallbackSubscriptionNumber, contextData, hadCallbacks, clone, clone, clone;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n thisCallbackSubscriptionNumber = typeof subscriptionKey === \"undefined\" ? this._nextCallbackSubscriptionNumber : subscriptionKey;\r\n if (typeof subscriptionKey === \"undefined\") {\r\n this._nextCallbackSubscriptionNumber += 1;\r\n }\r\n if (this._contextsSubscriptionsCache.every(function (subscription) { return subscription.subKey !== _this._nextCallbackSubscriptionNumber; })) {\r\n this._contextsSubscriptionsCache.push({ contextName: name, subKey: thisCallbackSubscriptionNumber, callback: callback });\r\n }\r\n contextData = this._contextNameToData[name];\r\n if (!contextData ||\r\n !contextData.isAnnounced) {\r\n contextData = contextData || new GW3ContextData(undefined, name, false, undefined);\r\n this._contextNameToData[name] = contextData;\r\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n hadCallbacks = contextData.hasCallbacks();\r\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\r\n if (!hadCallbacks) {\r\n if (!contextData.joinedActivity) {\r\n if (contextData.context && contextData.sentExplicitSubscription) {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n return [2, this.sendSubscribe(contextData)\r\n .then(function () { return thisCallbackSubscriptionNumber; })];\r\n }\r\n else {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n }\r\n else {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.unsubscribe = function (subscriptionKey) {\r\n this._contextsSubscriptionsCache = this._contextsSubscriptionsCache.filter(function (subscription) { return subscription.subKey !== subscriptionKey; });\r\n for (var _i = 0, _a = Object.keys(this._contextNameToData); _i < _a.length; _i++) {\r\n var name_1 = _a[_i];\r\n var contextData = this._contextNameToData[name_1];\r\n if (!contextData) {\r\n return;\r\n }\r\n var hadCallbacks = contextData.hasCallbacks();\r\n delete contextData.updateCallbacks[subscriptionKey];\r\n if (contextData.isAnnounced &&\r\n hadCallbacks &&\r\n !contextData.hasCallbacks() &&\r\n contextData.sentExplicitSubscription) {\r\n this.sendUnsubscribe(contextData);\r\n }\r\n if (!contextData.isAnnounced &&\r\n !contextData.hasCallbacks()) {\r\n delete this._contextNameToData[name_1];\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.destroy = function (name) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData) {\r\n return [2, Promise.reject(\"context with \".concat(name, \" does not exist\"))];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_DESTROY_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.handleUpdated = function (contextData, delta, extraData) {\r\n var oldContext = contextData.context;\r\n contextData.context = applyContextDelta(contextData.context, delta, this._logger);\r\n contextData.hasReceivedSnapshot = true;\r\n if (this._contextNameToData[contextData.name] === contextData &&\r\n !deepEqual(oldContext, contextData.context)) {\r\n this.invokeUpdateCallbacks(contextData, delta, extraData);\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextCreatedMessages = function () {\r\n var createdMessageTypes = [\r\n GW_MESSAGE_CONTEXT_ADDED,\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_ACTIVITY_CREATED,\r\n ];\r\n for (var _i = 0, createdMessageTypes_1 = createdMessageTypes; _i < createdMessageTypes_1.length; _i++) {\r\n var createdMessageType = createdMessageTypes_1[_i];\r\n var sub = this._connection.on(createdMessageType, this.handleContextCreatedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextCreatedMessage = function (contextCreatedMsg) {\r\n var _this = this;\r\n var createdMessageType = contextCreatedMsg.type;\r\n if (createdMessageType === GW_MESSAGE_ACTIVITY_CREATED) {\r\n this._contextNameToId[contextCreatedMsg.activity_id] = contextCreatedMsg.context_id;\r\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.activity_id;\r\n }\r\n else if (createdMessageType === GW_MESSAGE_CONTEXT_ADDED) {\r\n this._contextNameToId[contextCreatedMsg.name] = contextCreatedMsg.context_id;\r\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.name;\r\n }\r\n else ;\r\n var name = this._contextIdToName[contextCreatedMsg.context_id];\r\n if (!name) {\r\n throw new Error(\"Received created event for context with unknown name: \" + contextCreatedMsg.context_id);\r\n }\r\n if (!this._contextNameToId[name]) {\r\n throw new Error(\"Received created event for context with unknown id: \" + contextCreatedMsg.context_id);\r\n }\r\n var contextData = this._contextNameToData[name];\r\n if (contextData) {\r\n if (contextData.isAnnounced) {\r\n return;\r\n }\r\n else {\r\n if (!contextData.hasCallbacks()) {\r\n throw new Error(\"Assertion failure: contextData.hasCallbacks()\");\r\n }\r\n contextData.isAnnounced = true;\r\n contextData.contextId = contextCreatedMsg.context_id;\r\n contextData.activityId = contextCreatedMsg.activity_id;\r\n if (!contextData.sentExplicitSubscription) {\r\n this.sendSubscribe(contextData);\r\n }\r\n }\r\n }\r\n else {\r\n this._contextNameToData[name] = contextData =\r\n new GW3ContextData(contextCreatedMsg.context_id, name, true, contextCreatedMsg.activity_id);\r\n if (this._trackAllContexts) {\r\n this.subscribe(name, function () { }).then(function (subKey) { return _this._systemContextsSubKey = subKey; });\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextUpdatedMessages = function () {\r\n var updatedMessageTypes = [\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_JOINED_ACTIVITY,\r\n ];\r\n for (var _i = 0, updatedMessageTypes_1 = updatedMessageTypes; _i < updatedMessageTypes_1.length; _i++) {\r\n var updatedMessageType = updatedMessageTypes_1[_i];\r\n var sub = this._connection.on(updatedMessageType, this.handleContextUpdatedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextUpdatedMessage = function (contextUpdatedMsg) {\r\n var updatedMessageType = contextUpdatedMsg.type;\r\n var contextId = contextUpdatedMsg.context_id;\r\n var contextData = this._contextNameToData[this._contextIdToName[contextId]];\r\n var justSeen = !contextData || !contextData.isAnnounced;\r\n if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\r\n if (!contextData) {\r\n contextData =\r\n this._contextNameToData[contextUpdatedMsg.activity_id] ||\r\n new GW3ContextData(contextId, contextUpdatedMsg.activity_id, true, contextUpdatedMsg.activity_id);\r\n }\r\n this._contextNameToData[contextUpdatedMsg.activity_id] = contextData;\r\n this._contextIdToName[contextId] = contextUpdatedMsg.activity_id;\r\n this._contextNameToId[contextUpdatedMsg.activity_id] = contextId;\r\n contextData.contextId = contextId;\r\n contextData.isAnnounced = true;\r\n contextData.activityId = contextUpdatedMsg.activity_id;\r\n contextData.joinedActivity = true;\r\n }\r\n else {\r\n if (!contextData || !contextData.isAnnounced) {\r\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n contextData = contextData || new GW3ContextData(contextId, contextUpdatedMsg.name, true, undefined);\r\n contextData.sentExplicitSubscription = true;\r\n this._contextNameToData[contextUpdatedMsg.name] = contextData;\r\n this._contextIdToName[contextId] = contextUpdatedMsg.name;\r\n this._contextNameToId[contextUpdatedMsg.name] = contextId;\r\n }\r\n else {\r\n this._logger.error(\"Received 'update' for unknown context: \".concat(contextId));\r\n }\r\n return;\r\n }\r\n }\r\n var oldContext = contextData.context;\r\n contextData.hasReceivedSnapshot = true;\r\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n contextData.context = contextUpdatedMsg.data || {};\r\n }\r\n else if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\r\n contextData.context = contextUpdatedMsg.context_snapshot || {};\r\n }\r\n else if (updatedMessageType === GW_MESSAGE_CONTEXT_UPDATED) {\r\n contextData.context = applyContextDelta(contextData.context, contextUpdatedMsg.delta, this._logger);\r\n }\r\n else {\r\n throw new Error(\"Unrecognized context update message \" + updatedMessageType);\r\n }\r\n if (justSeen ||\r\n !deepEqual(contextData.context, oldContext) ||\r\n updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n this.invokeUpdateCallbacks(contextData, contextUpdatedMsg.delta, { updaterId: contextUpdatedMsg.updater_id });\r\n }\r\n };\r\n GW3Bridge.prototype.invokeUpdateCallbacks = function (contextData, delta, extraData) {\r\n delta = delta || { added: {}, updated: {}, reset: {}, removed: [] };\r\n if (delta.commands) {\r\n delta.added = delta.updated = delta.reset = {};\r\n delta.removed = [];\r\n for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) {\r\n var command = _a[_i];\r\n if (command.type === \"remove\") {\r\n if (command.path.indexOf(\".\") === -1) {\r\n delta.removed.push(command.path);\r\n }\r\n setValueToPath(delta.updated, null, command.path);\r\n }\r\n else if (command.type === \"set\") {\r\n setValueToPath(delta.updated, command.value, command.path);\r\n }\r\n }\r\n }\r\n for (var updateCallbackIndex in contextData.updateCallbacks) {\r\n if (contextData.updateCallbacks.hasOwnProperty(updateCallbackIndex)) {\r\n try {\r\n var updateCallback = contextData.updateCallbacks[updateCallbackIndex];\r\n updateCallback(deepClone(contextData.context), deepClone(Object.assign({}, delta.added || {}, delta.updated || {}, delta.reset || {})), delta.removed, parseInt(updateCallbackIndex, 10), extraData);\r\n }\r\n catch (err) {\r\n this._logger.debug(\"callback error: \" + JSON.stringify(err));\r\n }\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextDestroyedMessages = function () {\r\n var destroyedMessageTypes = [\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_ACTIVITY_DESTROYED,\r\n ];\r\n for (var _i = 0, destroyedMessageTypes_1 = destroyedMessageTypes; _i < destroyedMessageTypes_1.length; _i++) {\r\n var destroyedMessageType = destroyedMessageTypes_1[_i];\r\n var sub = this._connection.on(destroyedMessageType, this.handleContextDestroyedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextDestroyedMessage = function (destroyedMsg) {\r\n var destroyedMessageType = destroyedMsg.type;\r\n var contextId;\r\n var name;\r\n if (destroyedMessageType === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n name = destroyedMsg.activity_id;\r\n contextId = this._contextNameToId[name];\r\n if (!contextId) {\r\n this._logger.error(\"Received 'destroyed' for unknown activity: \".concat(destroyedMsg.activity_id));\r\n return;\r\n }\r\n }\r\n else {\r\n contextId = destroyedMsg.context_id;\r\n name = this._contextIdToName[contextId];\r\n if (!name) {\r\n this._logger.error(\"Received 'destroyed' for unknown context: \".concat(destroyedMsg.context_id));\r\n return;\r\n }\r\n }\r\n delete this._contextIdToName[contextId];\r\n delete this._contextNameToId[name];\r\n var contextData = this._contextNameToData[name];\r\n delete this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n this._logger.error(\"Received 'destroyed' for unknown context: \".concat(contextId));\r\n return;\r\n }\r\n };\r\n GW3Bridge.prototype.sendSubscribe = function (contextData) {\r\n contextData.sentExplicitSubscription = true;\r\n return this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_SUBSCRIBE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; });\r\n };\r\n GW3Bridge.prototype.sendUnsubscribe = function (contextData) {\r\n contextData.sentExplicitSubscription = false;\r\n return this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; });\r\n };\r\n GW3Bridge.prototype.calculateContextDeltaV1 = function (from, to) {\r\n var delta = { added: {}, updated: {}, removed: [], reset: undefined };\r\n if (from) {\r\n for (var _i = 0, _a = Object.keys(from); _i < _a.length; _i++) {\r\n var x = _a[_i];\r\n if (Object.keys(to).indexOf(x) !== -1\r\n && to[x] !== null\r\n && !deepEqual(from[x], to[x])) {\r\n delta.updated[x] = to[x];\r\n }\r\n }\r\n }\r\n for (var _b = 0, _c = Object.keys(to); _b < _c.length; _b++) {\r\n var x = _c[_b];\r\n if (!from || (Object.keys(from).indexOf(x) === -1)) {\r\n if (to[x] !== null) {\r\n delta.added[x] = to[x];\r\n }\r\n }\r\n else if (to[x] === null) {\r\n delta.removed.push(x);\r\n }\r\n }\r\n return delta;\r\n };\r\n GW3Bridge.prototype.calculateContextDeltaV2 = function (from, to) {\r\n var _a, _b;\r\n var delta = { added: {}, updated: {}, removed: [], reset: undefined, commands: [] };\r\n for (var _i = 0, _c = Object.keys(to); _i < _c.length; _i++) {\r\n var x = _c[_i];\r\n if (to[x] !== null) {\r\n var fromX = from ? from[x] : null;\r\n if (!deepEqual(fromX, to[x])) {\r\n (_a = delta.commands) === null || _a === void 0 ? void 0 : _a.push({ type: \"set\", path: x, value: to[x] });\r\n }\r\n }\r\n else {\r\n (_b = delta.commands) === null || _b === void 0 ? void 0 : _b.push({ type: \"remove\", path: x });\r\n }\r\n }\r\n return delta;\r\n };\r\n GW3Bridge.prototype.resetState = function () {\r\n var _this = this;\r\n for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) {\r\n var sub = _a[_i];\r\n this._connection.off(sub);\r\n }\r\n if (this._systemContextsSubKey) {\r\n this.unsubscribe(this._systemContextsSubKey);\r\n delete this._systemContextsSubKey;\r\n }\r\n this._gw3Subscriptions = [];\r\n this._contextNameToId = {};\r\n this._contextIdToName = {};\r\n delete this._protocolVersion;\r\n this._contextsTempCache = Object.keys(this._contextNameToData).reduce(function (cacheSoFar, ctxName) {\r\n cacheSoFar[ctxName] = _this._contextNameToData[ctxName].context;\r\n return cacheSoFar;\r\n }, {});\r\n this._contextNameToData = {};\r\n };\r\n GW3Bridge.prototype.reInitiateState = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _b, _c, _e, _i, ctxName, lastKnownData;\r\n var _this = this;\r\n return __generator(this, function (_f) {\r\n switch (_f.label) {\r\n case 0:\r\n this.subscribeToContextCreatedMessages();\r\n this.subscribeToContextUpdatedMessages();\r\n this.subscribeToContextDestroyedMessages();\r\n (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) {\r\n var type = message.type;\r\n if (!type) {\r\n return;\r\n }\r\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\r\n type === GW_MESSAGE_CONTEXT_ADDED ||\r\n type === GW_MESSAGE_ACTIVITY_CREATED) {\r\n _this.handleContextCreatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\r\n type === GW_MESSAGE_CONTEXT_UPDATED ||\r\n type === GW_MESSAGE_JOINED_ACTIVITY) {\r\n _this.handleContextUpdatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\r\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n _this.handleContextDestroyedMessage(message);\r\n }\r\n });\r\n return [4, Promise.all(this._contextsSubscriptionsCache.map(function (subscription) { return _this.subscribe(subscription.contextName, subscription.callback, subscription.subKey); }))];\r\n case 1:\r\n _f.sent();\r\n return [4, this.flushQueue()];\r\n case 2:\r\n _f.sent();\r\n _b = this._contextsTempCache;\r\n _c = [];\r\n for (_e in _b)\r\n _c.push(_e);\r\n _i = 0;\r\n _f.label = 3;\r\n case 3:\r\n if (!(_i < _c.length)) return [3, 7];\r\n _e = _c[_i];\r\n if (!(_e in _b)) return [3, 6];\r\n ctxName = _e;\r\n if (typeof this._contextsTempCache[ctxName] !== \"object\" || Object.keys(this._contextsTempCache[ctxName]).length === 0) {\r\n return [3, 6];\r\n }\r\n lastKnownData = this._contextsTempCache[ctxName];\r\n this._logger.info(\"Re-announcing known context: \".concat(ctxName));\r\n return [4, this.flushQueue()];\r\n case 4:\r\n _f.sent();\r\n return [4, this.update(ctxName, lastKnownData)];\r\n case 5:\r\n _f.sent();\r\n _f.label = 6;\r\n case 6:\r\n _i++;\r\n return [3, 3];\r\n case 7:\r\n this._contextsTempCache = {};\r\n this._logger.info(\"Contexts are re-announced\");\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.flushQueue = function () {\r\n return new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 0); });\r\n };\r\n return GW3Bridge;\r\n}());\n\nvar ContextsModule = (function () {\r\n function ContextsModule(config) {\r\n this._bridge = new GW3Bridge(config);\r\n }\r\n ContextsModule.prototype.all = function () {\r\n return this._bridge.all();\r\n };\r\n ContextsModule.prototype.update = function (name, data) {\r\n this.checkName(name);\r\n this.checkData(data);\r\n return this._bridge.update(name, data);\r\n };\r\n ContextsModule.prototype.set = function (name, data) {\r\n this.checkName(name);\r\n this.checkData(data);\r\n return this._bridge.set(name, data);\r\n };\r\n ContextsModule.prototype.setPath = function (name, path, data) {\r\n this.checkName(name);\r\n this.checkPath(path);\r\n var isTopLevelPath = path === \"\";\r\n if (isTopLevelPath) {\r\n this.checkData(data);\r\n return this.set(name, data);\r\n }\r\n return this._bridge.setPath(name, path, data);\r\n };\r\n ContextsModule.prototype.setPaths = function (name, paths) {\r\n this.checkName(name);\r\n if (!Array.isArray(paths)) {\r\n throw new Error(\"Please provide the paths as an array of PathValues!\");\r\n }\r\n for (var _i = 0, paths_1 = paths; _i < paths_1.length; _i++) {\r\n var _a = paths_1[_i], path = _a.path, value = _a.value;\r\n this.checkPath(path);\r\n var isTopLevelPath = path === \"\";\r\n if (isTopLevelPath) {\r\n this.checkData(value);\r\n }\r\n }\r\n return this._bridge.setPaths(name, paths);\r\n };\r\n ContextsModule.prototype.subscribe = function (name, callback) {\r\n var _this = this;\r\n this.checkName(name);\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Please provide the callback as a function!\");\r\n }\r\n return this._bridge\r\n .subscribe(name, function (data, delta, removed, key, extraData) { return callback(data, delta, removed, function () { return _this._bridge.unsubscribe(key); }, extraData); })\r\n .then(function (key) {\r\n return function () {\r\n _this._bridge.unsubscribe(key);\r\n };\r\n });\r\n };\r\n ContextsModule.prototype.get = function (name) {\r\n this.checkName(name);\r\n return this._bridge.get(name);\r\n };\r\n ContextsModule.prototype.ready = function () {\r\n return Promise.resolve(this);\r\n };\r\n ContextsModule.prototype.destroy = function (name) {\r\n this.checkName(name);\r\n return this._bridge.destroy(name);\r\n };\r\n Object.defineProperty(ContextsModule.prototype, \"setPathSupported\", {\r\n get: function () {\r\n return this._bridge.setPathSupported;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ContextsModule.prototype.checkName = function (name) {\r\n if (typeof name !== \"string\" || name === \"\") {\r\n throw new Error(\"Please provide the name as a non-empty string!\");\r\n }\r\n };\r\n ContextsModule.prototype.checkPath = function (path) {\r\n if (typeof path !== \"string\") {\r\n throw new Error(\"Please provide the path as a dot delimited string!\");\r\n }\r\n };\r\n ContextsModule.prototype.checkData = function (data) {\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Please provide the data as an object!\");\r\n }\r\n };\r\n return ContextsModule;\r\n}());\n\nfunction promisify (promise, successCallback, errorCallback) {\r\n if (typeof successCallback !== \"function\" && typeof errorCallback !== \"function\") {\r\n return promise;\r\n }\r\n if (typeof successCallback !== \"function\") {\r\n successCallback = function () { };\r\n }\r\n else if (typeof errorCallback !== \"function\") {\r\n errorCallback = function () { };\r\n }\r\n return promise.then(successCallback, errorCallback);\r\n}\n\nfunction rejectAfter(ms, promise, error) {\r\n if (ms === void 0) { ms = 0; }\r\n var timeout;\r\n var clearTimeoutIfThere = function () {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n }\r\n };\r\n promise\r\n .then(function () {\r\n clearTimeoutIfThere();\r\n })\r\n .catch(function () {\r\n clearTimeoutIfThere();\r\n });\r\n return new Promise(function (resolve, reject) {\r\n timeout = setTimeout(function () { return reject(error); }, ms);\r\n });\r\n}\n\nvar InvokeStatus;\r\n(function (InvokeStatus) {\r\n InvokeStatus[InvokeStatus[\"Success\"] = 0] = \"Success\";\r\n InvokeStatus[InvokeStatus[\"Error\"] = 1] = \"Error\";\r\n})(InvokeStatus || (InvokeStatus = {}));\r\nvar Client = (function () {\r\n function Client(protocol, repo, instance, configuration) {\r\n this.protocol = protocol;\r\n this.repo = repo;\r\n this.instance = instance;\r\n this.configuration = configuration;\r\n }\r\n Client.prototype.subscribe = function (method, options, successCallback, errorCallback, existingSub) {\r\n var _this = this;\r\n var callProtocolSubscribe = function (targetServers, stream, successProxy, errorProxy) {\r\n var _a;\r\n options.methodResponseTimeout = (_a = options.methodResponseTimeout) !== null && _a !== void 0 ? _a : options.waitTimeoutMs;\r\n _this.protocol.client.subscribe(stream, options, targetServers, successProxy, errorProxy, existingSub);\r\n };\r\n var promise = new Promise(function (resolve, reject) {\r\n var successProxy = function (sub) {\r\n resolve(sub);\r\n };\r\n var errorProxy = function (err) {\r\n reject(err);\r\n };\r\n if (!method) {\r\n reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\");\r\n return;\r\n }\r\n var methodDef;\r\n if (typeof method === \"string\") {\r\n methodDef = { name: method };\r\n }\r\n else {\r\n methodDef = method;\r\n }\r\n if (!methodDef.name) {\r\n reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\");\r\n return;\r\n }\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n var target = options.target;\r\n if (target === undefined) {\r\n target = \"best\";\r\n }\r\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\") {\r\n reject(new Error(\"\\\"\".concat(target, \"\\\" is not a valid target. Valid targets are \\\"all\\\", \\\"best\\\", or an instance.\")));\r\n return;\r\n }\r\n if (options.methodResponseTimeout === undefined) {\r\n options.methodResponseTimeout = options.method_response_timeout;\r\n if (options.methodResponseTimeout === undefined) {\r\n options.methodResponseTimeout = _this.configuration.methodResponseTimeout;\r\n }\r\n }\r\n if (options.waitTimeoutMs === undefined) {\r\n options.waitTimeoutMs = options.wait_for_method_timeout;\r\n if (options.waitTimeoutMs === undefined) {\r\n options.waitTimeoutMs = _this.configuration.waitTimeoutMs;\r\n }\r\n }\r\n var delayStep = 500;\r\n var delayTillNow = 0;\r\n var currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target);\r\n if (currentServers.length > 0) {\r\n callProtocolSubscribe(currentServers, currentServers[0].methods[0], successProxy, errorProxy);\r\n }\r\n else {\r\n var retry_1 = function () {\r\n if (!target || !(options.waitTimeoutMs)) {\r\n return;\r\n }\r\n delayTillNow += delayStep;\r\n currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target);\r\n if (currentServers.length > 0) {\r\n var streamInfo = currentServers[0].methods[0];\r\n callProtocolSubscribe(currentServers, streamInfo, successProxy, errorProxy);\r\n }\r\n else if (delayTillNow >= options.waitTimeoutMs) {\r\n var def = typeof method === \"string\" ? { name: method } : method;\r\n callProtocolSubscribe(currentServers, def, successProxy, errorProxy);\r\n }\r\n else {\r\n setTimeout(retry_1, delayStep);\r\n }\r\n };\r\n setTimeout(retry_1, delayStep);\r\n }\r\n });\r\n return promisify(promise, successCallback, errorCallback);\r\n };\r\n Client.prototype.servers = function (methodFilter) {\r\n var filterCopy = methodFilter === undefined\r\n ? undefined\r\n : __assign({}, methodFilter);\r\n return this.getServers(filterCopy).map(function (serverMethodMap) {\r\n return serverMethodMap.server.instance;\r\n });\r\n };\r\n Client.prototype.methods = function (methodFilter) {\r\n if (typeof methodFilter === \"string\") {\r\n methodFilter = { name: methodFilter };\r\n }\r\n else {\r\n methodFilter = __assign({}, methodFilter);\r\n }\r\n return this.getMethods(methodFilter);\r\n };\r\n Client.prototype.methodsForInstance = function (instance) {\r\n return this.getMethodsForInstance(instance);\r\n };\r\n Client.prototype.methodAdded = function (callback) {\r\n return this.repo.onMethodAdded(callback);\r\n };\r\n Client.prototype.methodRemoved = function (callback) {\r\n return this.repo.onMethodRemoved(callback);\r\n };\r\n Client.prototype.serverAdded = function (callback) {\r\n return this.repo.onServerAdded(callback);\r\n };\r\n Client.prototype.serverRemoved = function (callback) {\r\n return this.repo.onServerRemoved(function (server, reason) {\r\n callback(server, reason);\r\n });\r\n };\r\n Client.prototype.serverMethodAdded = function (callback) {\r\n return this.repo.onServerMethodAdded(function (server, method) {\r\n callback({ server: server, method: method });\r\n });\r\n };\r\n Client.prototype.serverMethodRemoved = function (callback) {\r\n return this.repo.onServerMethodRemoved(function (server, method) {\r\n callback({ server: server, method: method });\r\n });\r\n };\r\n Client.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var getInvokePromise;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n getInvokePromise = function () { return __awaiter(_this, void 0, void 0, function () {\r\n var methodDefinition, serversMethodMap, method, errorObj, timeout, additionalOptionsCopy, invokePromises, invocationMessages, results, allRejected;\r\n var _this = this;\r\n var _a, _b, _c;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n if (typeof methodFilter === \"string\") {\r\n methodDefinition = { name: methodFilter };\r\n }\r\n else {\r\n methodDefinition = __assign({}, methodFilter);\r\n }\r\n if (!methodDefinition.name) {\r\n return [2, Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\")];\r\n }\r\n if (!argumentObj) {\r\n argumentObj = {};\r\n }\r\n if (!target) {\r\n target = \"best\";\r\n }\r\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\" && target !== \"skipMine\") {\r\n return [2, Promise.reject(new Error(\"\\\"\".concat(target, \"\\\" is not a valid target. Valid targets are \\\"all\\\" and \\\"best\\\".\")))];\r\n }\r\n if (!additionalOptions) {\r\n additionalOptions = {};\r\n }\r\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\r\n additionalOptions.methodResponseTimeoutMs = additionalOptions.method_response_timeout;\r\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\r\n additionalOptions.methodResponseTimeoutMs = this.configuration.methodResponseTimeout;\r\n }\r\n }\r\n if (additionalOptions.waitTimeoutMs === undefined) {\r\n additionalOptions.waitTimeoutMs = additionalOptions.wait_for_method_timeout;\r\n if (additionalOptions.waitTimeoutMs === undefined) {\r\n additionalOptions.waitTimeoutMs = this.configuration.waitTimeoutMs;\r\n }\r\n }\r\n if (additionalOptions.waitTimeoutMs !== undefined && typeof additionalOptions.waitTimeoutMs !== \"number\") {\r\n return [2, Promise.reject(new Error(\"\\\"\".concat(additionalOptions.waitTimeoutMs, \"\\\" is not a valid number for \\\"waitTimeoutMs\\\" \")))];\r\n }\r\n if (typeof argumentObj !== \"object\") {\r\n return [2, Promise.reject(new Error(\"The method arguments must be an object. method: \".concat(methodDefinition.name)))];\r\n }\r\n serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target);\r\n if (!(serversMethodMap.length === 0)) return [3, 4];\r\n _d.label = 1;\r\n case 1:\r\n _d.trys.push([1, 3, , 4]);\r\n return [4, this.tryToAwaitForMethods(methodDefinition, target, additionalOptions)];\r\n case 2:\r\n serversMethodMap = _d.sent();\r\n return [3, 4];\r\n case 3:\r\n _d.sent();\r\n method = __assign(__assign({}, methodDefinition), { getServers: function () { return []; }, supportsStreaming: false, objectTypes: (_a = methodDefinition.objectTypes) !== null && _a !== void 0 ? _a : [], flags: (_c = (_b = methodDefinition.flags) === null || _b === void 0 ? void 0 : _b.metadata) !== null && _c !== void 0 ? _c : {} });\r\n errorObj = {\r\n method: method,\r\n called_with: argumentObj,\r\n message: \"Can not find a method matching \".concat(JSON.stringify(methodFilter), \" with server filter \").concat(JSON.stringify(target)),\r\n executed_by: undefined,\r\n returned: undefined,\r\n status: undefined,\r\n };\r\n return [2, Promise.reject(errorObj)];\r\n case 4:\r\n timeout = additionalOptions.methodResponseTimeoutMs;\r\n additionalOptionsCopy = additionalOptions;\r\n invokePromises = serversMethodMap.map(function (serversMethodPair) {\r\n var invId = shortid();\r\n var method = serversMethodPair.methods[0];\r\n var server = serversMethodPair.server;\r\n var invokePromise = _this.protocol.client.invoke(invId, method, argumentObj, server, additionalOptionsCopy);\r\n return Promise.race([\r\n invokePromise,\r\n rejectAfter(timeout, invokePromise, {\r\n invocationId: invId,\r\n message: \"Invocation timeout (\".concat(timeout, \" ms) reached for method name: \").concat(method === null || method === void 0 ? void 0 : method.name, \", target instance: \").concat(JSON.stringify(server.instance), \", options: \").concat(JSON.stringify(additionalOptionsCopy)),\r\n status: InvokeStatus.Error,\r\n })\r\n ]);\r\n });\r\n return [4, Promise.all(invokePromises)];\r\n case 5:\r\n invocationMessages = _d.sent();\r\n results = this.getInvocationResultObj(invocationMessages, methodDefinition, argumentObj);\r\n allRejected = invocationMessages.every(function (result) { return result.status === InvokeStatus.Error; });\r\n if (allRejected) {\r\n return [2, Promise.reject(results)];\r\n }\r\n return [2, results];\r\n }\r\n });\r\n }); };\r\n return [2, promisify(getInvokePromise(), success, error)];\r\n });\r\n });\r\n };\r\n Client.prototype.getInvocationResultObj = function (invocationResults, method, calledWith) {\r\n var all_return_values = invocationResults\r\n .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Success; })\r\n .reduce(function (allValues, currentValue) {\r\n allValues = __spreadArray(__spreadArray([], allValues, true), [\r\n {\r\n executed_by: currentValue.instance,\r\n returned: currentValue.result,\r\n called_with: calledWith,\r\n method: method,\r\n message: currentValue.message,\r\n status: currentValue.status,\r\n }\r\n ], false);\r\n return allValues;\r\n }, []);\r\n var all_errors = invocationResults\r\n .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Error; })\r\n .reduce(function (allErrors, currError) {\r\n allErrors = __spreadArray(__spreadArray([], allErrors, true), [\r\n {\r\n executed_by: currError.instance,\r\n called_with: calledWith,\r\n name: method.name,\r\n message: currError.message,\r\n }\r\n ], false);\r\n return allErrors;\r\n }, []);\r\n var invResult = invocationResults[0];\r\n var result = {\r\n method: method,\r\n called_with: calledWith,\r\n returned: invResult.result,\r\n executed_by: invResult.instance,\r\n all_return_values: all_return_values,\r\n all_errors: all_errors,\r\n message: invResult.message,\r\n status: invResult.status\r\n };\r\n return result;\r\n };\r\n Client.prototype.tryToAwaitForMethods = function (methodDefinition, target, additionalOptions) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n if (additionalOptions.waitTimeoutMs === 0) {\r\n reject();\r\n return;\r\n }\r\n var delayStep = 500;\r\n var delayTillNow = 0;\r\n var retry = function () {\r\n delayTillNow += delayStep;\r\n var serversMethodMap = _this.getServerMethodsByFilterAndTarget(methodDefinition, target);\r\n if (serversMethodMap.length > 0) {\r\n clearInterval(interval);\r\n resolve(serversMethodMap);\r\n }\r\n else if (delayTillNow >= (additionalOptions.waitTimeoutMs || 10000)) {\r\n clearInterval(interval);\r\n reject();\r\n return;\r\n }\r\n };\r\n var interval = setInterval(retry, delayStep);\r\n });\r\n };\r\n Client.prototype.filterByTarget = function (target, serverMethodMap) {\r\n var _this = this;\r\n if (typeof target === \"string\") {\r\n if (target === \"all\") {\r\n return __spreadArray([], serverMethodMap, true);\r\n }\r\n else if (target === \"best\") {\r\n var localMachine = serverMethodMap\r\n .find(function (s) { return s.server.instance.isLocal; });\r\n if (localMachine) {\r\n return [localMachine];\r\n }\r\n if (serverMethodMap[0] !== undefined) {\r\n return [serverMethodMap[0]];\r\n }\r\n }\r\n else if (target === \"skipMine\") {\r\n return serverMethodMap.filter(function (_a) {\r\n var server = _a.server;\r\n return server.instance.peerId !== _this.instance.peerId;\r\n });\r\n }\r\n }\r\n else {\r\n var targetArray = void 0;\r\n if (!Array.isArray(target)) {\r\n targetArray = [target];\r\n }\r\n else {\r\n targetArray = target;\r\n }\r\n var allServersMatching = targetArray.reduce(function (matches, filter) {\r\n var myMatches = serverMethodMap.filter(function (serverMethodPair) {\r\n return _this.instanceMatch(filter, serverMethodPair.server.instance);\r\n });\r\n return matches.concat(myMatches);\r\n }, []);\r\n return allServersMatching;\r\n }\r\n return [];\r\n };\r\n Client.prototype.instanceMatch = function (instanceFilter, instanceDefinition) {\r\n return this.containsProps(instanceFilter, instanceDefinition);\r\n };\r\n Client.prototype.methodMatch = function (methodFilter, methodDefinition) {\r\n return this.containsProps(methodFilter, methodDefinition);\r\n };\r\n Client.prototype.containsProps = function (filter, repoMethod) {\r\n var filterProps = Object.keys(filter)\r\n .filter(function (prop) {\r\n return filter[prop] !== undefined\r\n && filter[prop] !== null\r\n && typeof filter[prop] !== \"function\"\r\n && prop !== \"object_types\"\r\n && prop !== \"display_name\"\r\n && prop !== \"id\"\r\n && prop !== \"gatewayId\"\r\n && prop !== \"identifier\"\r\n && prop[0] !== \"_\";\r\n });\r\n return filterProps.every(function (prop) {\r\n var isMatch;\r\n var filterValue = filter[prop];\r\n var repoMethodValue = repoMethod[prop];\r\n switch (prop) {\r\n case \"objectTypes\":\r\n isMatch = (filterValue || []).every(function (filterValueEl) {\r\n return (repoMethodValue || []).includes(filterValueEl);\r\n });\r\n break;\r\n case \"flags\":\r\n isMatch = isSubset(repoMethodValue || {}, filterValue || {});\r\n break;\r\n default:\r\n isMatch = String(filterValue).toLowerCase() === String(repoMethodValue).toLowerCase();\r\n }\r\n return isMatch;\r\n });\r\n };\r\n Client.prototype.getMethods = function (methodFilter) {\r\n var _this = this;\r\n if (methodFilter === undefined) {\r\n return this.repo.getMethods();\r\n }\r\n var methods = this.repo.getMethods().filter(function (method) {\r\n return _this.methodMatch(methodFilter, method);\r\n });\r\n return methods;\r\n };\r\n Client.prototype.getMethodsForInstance = function (instanceFilter) {\r\n var _this = this;\r\n var allServers = this.repo.getServers();\r\n var matchingServers = allServers.filter(function (server) {\r\n return _this.instanceMatch(instanceFilter, server.instance);\r\n });\r\n if (matchingServers.length === 0) {\r\n return [];\r\n }\r\n var resultMethodsObject = {};\r\n if (matchingServers.length === 1) {\r\n resultMethodsObject = matchingServers[0].methods;\r\n }\r\n else {\r\n matchingServers.forEach(function (server) {\r\n Object.keys(server.methods).forEach(function (methodKey) {\r\n var method = server.methods[methodKey];\r\n resultMethodsObject[method.identifier] = method;\r\n });\r\n });\r\n }\r\n return Object.keys(resultMethodsObject)\r\n .map(function (key) {\r\n return resultMethodsObject[key];\r\n });\r\n };\r\n Client.prototype.getServers = function (methodFilter) {\r\n var _this = this;\r\n var servers = this.repo.getServers();\r\n if (methodFilter === undefined) {\r\n return servers.map(function (server) {\r\n return { server: server, methods: [] };\r\n });\r\n }\r\n return servers.reduce(function (prev, current) {\r\n var methodsForServer = Object.values(current.methods);\r\n var matchingMethods = methodsForServer.filter(function (method) {\r\n return _this.methodMatch(methodFilter, method);\r\n });\r\n if (matchingMethods.length > 0) {\r\n prev.push({ server: current, methods: matchingMethods });\r\n }\r\n return prev;\r\n }, []);\r\n };\r\n Client.prototype.getServerMethodsByFilterAndTarget = function (methodFilter, target) {\r\n var serversMethodMap = this.getServers(methodFilter);\r\n return this.filterByTarget(target, serversMethodMap);\r\n };\r\n return Client;\r\n}());\n\nvar ServerSubscription = (function () {\r\n function ServerSubscription(protocol, repoMethod, subscription) {\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n this.subscription = subscription;\r\n }\r\n Object.defineProperty(ServerSubscription.prototype, \"stream\", {\r\n get: function () {\r\n if (!this.repoMethod.stream) {\r\n throw new Error(\"no stream\");\r\n }\r\n return this.repoMethod.stream;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"arguments\", {\r\n get: function () { return this.subscription.arguments || {}; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"branchKey\", {\r\n get: function () { return this.subscription.branchKey; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"instance\", {\r\n get: function () {\r\n if (!this.subscription.instance) {\r\n throw new Error(\"no instance\");\r\n }\r\n return this.subscription.instance;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ServerSubscription.prototype.close = function () {\r\n this.protocol.server.closeSingleSubscription(this.repoMethod, this.subscription);\r\n };\r\n ServerSubscription.prototype.push = function (data) {\r\n this.protocol.server.pushDataToSingle(this.repoMethod, this.subscription, data);\r\n };\r\n return ServerSubscription;\r\n}());\n\nvar Request = (function () {\r\n function Request(protocol, repoMethod, requestContext) {\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n this.requestContext = requestContext;\r\n this.arguments = requestContext.arguments;\r\n this.instance = requestContext.instance;\r\n }\r\n Request.prototype.accept = function () {\r\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, \"\");\r\n };\r\n Request.prototype.acceptOnBranch = function (branch) {\r\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, branch);\r\n };\r\n Request.prototype.reject = function (reason) {\r\n this.protocol.server.rejectRequest(this.requestContext, this.repoMethod, reason);\r\n };\r\n return Request;\r\n}());\n\nvar ServerStreaming$1 = (function () {\r\n function ServerStreaming(protocol, server) {\r\n var _this = this;\r\n this.protocol = protocol;\r\n this.server = server;\r\n protocol.server.onSubRequest(function (rc, rm) { return _this.handleSubRequest(rc, rm); });\r\n protocol.server.onSubAdded(function (sub, rm) { return _this.handleSubAdded(sub, rm); });\r\n protocol.server.onSubRemoved(function (sub, rm) { return _this.handleSubRemoved(sub, rm); });\r\n }\r\n ServerStreaming.prototype.handleSubRequest = function (requestContext, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionRequestHandler === \"function\")) {\r\n return;\r\n }\r\n var request = new Request(this.protocol, repoMethod, requestContext);\r\n repoMethod.streamCallbacks.subscriptionRequestHandler(request);\r\n };\r\n ServerStreaming.prototype.handleSubAdded = function (subscription, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionAddedHandler === \"function\")) {\r\n return;\r\n }\r\n var sub = new ServerSubscription(this.protocol, repoMethod, subscription);\r\n repoMethod.streamCallbacks.subscriptionAddedHandler(sub);\r\n };\r\n ServerStreaming.prototype.handleSubRemoved = function (subscription, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionRemovedHandler === \"function\")) {\r\n return;\r\n }\r\n var sub = new ServerSubscription(this.protocol, repoMethod, subscription);\r\n repoMethod.streamCallbacks.subscriptionRemovedHandler(sub);\r\n };\r\n return ServerStreaming;\r\n}());\n\nvar ServerBranch = (function () {\r\n function ServerBranch(key, protocol, repoMethod) {\r\n this.key = key;\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n }\r\n ServerBranch.prototype.subscriptions = function () {\r\n var _this = this;\r\n var subList = this.protocol.server.getSubscriptionList(this.repoMethod, this.key);\r\n return subList.map(function (sub) {\r\n return new ServerSubscription(_this.protocol, _this.repoMethod, sub);\r\n });\r\n };\r\n ServerBranch.prototype.close = function () {\r\n this.protocol.server.closeAllSubscriptions(this.repoMethod, this.key);\r\n };\r\n ServerBranch.prototype.push = function (data) {\r\n this.protocol.server.pushData(this.repoMethod, data, [this.key]);\r\n };\r\n return ServerBranch;\r\n}());\n\nvar ServerStream = (function () {\r\n function ServerStream(_protocol, _repoMethod, _server) {\r\n this._protocol = _protocol;\r\n this._repoMethod = _repoMethod;\r\n this._server = _server;\r\n this.name = this._repoMethod.definition.name;\r\n }\r\n ServerStream.prototype.branches = function (key) {\r\n var _this = this;\r\n var bList = this._protocol.server.getBranchList(this._repoMethod);\r\n if (key) {\r\n if (bList.indexOf(key) > -1) {\r\n return new ServerBranch(key, this._protocol, this._repoMethod);\r\n }\r\n return undefined;\r\n }\r\n else {\r\n return bList.map(function (branchKey) {\r\n return new ServerBranch(branchKey, _this._protocol, _this._repoMethod);\r\n });\r\n }\r\n };\r\n ServerStream.prototype.branch = function (key) {\r\n return this.branches(key);\r\n };\r\n ServerStream.prototype.subscriptions = function () {\r\n var _this = this;\r\n var subList = this._protocol.server.getSubscriptionList(this._repoMethod);\r\n return subList.map(function (sub) {\r\n return new ServerSubscription(_this._protocol, _this._repoMethod, sub);\r\n });\r\n };\r\n Object.defineProperty(ServerStream.prototype, \"definition\", {\r\n get: function () {\r\n var _a;\r\n var def2 = this._repoMethod.definition;\r\n return {\r\n accepts: def2.accepts,\r\n description: def2.description,\r\n displayName: def2.displayName,\r\n name: def2.name,\r\n objectTypes: def2.objectTypes,\r\n returns: def2.returns,\r\n supportsStreaming: def2.supportsStreaming,\r\n flags: (_a = def2.flags) === null || _a === void 0 ? void 0 : _a.metadata,\r\n };\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ServerStream.prototype.close = function () {\r\n this._protocol.server.closeAllSubscriptions(this._repoMethod);\r\n this._server.unregister(this._repoMethod.definition, true);\r\n };\r\n ServerStream.prototype.push = function (data, branches) {\r\n if (typeof branches !== \"string\" && !Array.isArray(branches) && branches !== undefined) {\r\n throw new Error(\"invalid branches should be string or string array\");\r\n }\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n this._protocol.server.pushData(this._repoMethod, data, branches);\r\n };\r\n ServerStream.prototype.updateRepoMethod = function (repoMethod) {\r\n this._repoMethod = repoMethod;\r\n };\r\n return ServerStream;\r\n}());\n\nvar Server = (function () {\r\n function Server(protocol, serverRepository) {\r\n this.protocol = protocol;\r\n this.serverRepository = serverRepository;\r\n this.invocations = 0;\r\n this.currentlyUnregistering = {};\r\n this.streaming = new ServerStreaming$1(protocol, this);\r\n this.protocol.server.onInvoked(this.onMethodInvoked.bind(this));\r\n }\r\n Server.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback, existingStream) {\r\n var _this = this;\r\n var promise = new Promise(function (resolve, reject) {\r\n if (!streamDef) {\r\n reject(\"The stream name must be unique! Please, provide either a unique string for a stream name to “glue.interop.createStream()” or a “methodDefinition” object with a unique “name” property for the stream.\");\r\n return;\r\n }\r\n var streamMethodDefinition;\r\n if (typeof streamDef === \"string\") {\r\n streamMethodDefinition = { name: \"\" + streamDef };\r\n }\r\n else {\r\n streamMethodDefinition = __assign({}, streamDef);\r\n }\r\n if (!streamMethodDefinition.name) {\r\n return reject(\"The \\u201Cname\\u201D property is required for the \\u201CstreamDefinition\\u201D object and must be unique. Stream definition: \".concat(JSON.stringify(streamMethodDefinition)));\r\n }\r\n var nameAlreadyExists = _this.serverRepository.getList()\r\n .some(function (serverMethod) { return serverMethod.definition.name === streamMethodDefinition.name; });\r\n if (nameAlreadyExists) {\r\n return reject(\"A stream with the name \\\"\".concat(streamMethodDefinition.name, \"\\\" already exists! Please, provide a unique name for the stream.\"));\r\n }\r\n streamMethodDefinition.supportsStreaming = true;\r\n if (!callbacks) {\r\n callbacks = {};\r\n }\r\n if (typeof callbacks.subscriptionRequestHandler !== \"function\") {\r\n callbacks.subscriptionRequestHandler = function (request) {\r\n request.accept();\r\n };\r\n }\r\n var repoMethod = _this.serverRepository.add({\r\n definition: streamMethodDefinition,\r\n streamCallbacks: callbacks,\r\n protocolState: {},\r\n });\r\n _this.protocol.server.createStream(repoMethod)\r\n .then(function () {\r\n var streamUserObject;\r\n if (existingStream) {\r\n streamUserObject = existingStream;\r\n existingStream.updateRepoMethod(repoMethod);\r\n }\r\n else {\r\n streamUserObject = new ServerStream(_this.protocol, repoMethod, _this);\r\n }\r\n repoMethod.stream = streamUserObject;\r\n resolve(streamUserObject);\r\n })\r\n .catch(function (err) {\r\n if (repoMethod.repoId) {\r\n _this.serverRepository.remove(repoMethod.repoId);\r\n }\r\n reject(err);\r\n });\r\n });\r\n return promisify(promise, successCallback, errorCallback);\r\n };\r\n Server.prototype.register = function (methodDefinition, callback) {\r\n var _this = this;\r\n if (!methodDefinition) {\r\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\r\n }\r\n if (typeof callback !== \"function\") {\r\n return Promise.reject(\"The second parameter must be a callback function. Method: \".concat(typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name));\r\n }\r\n var wrappedCallbackFunction = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () {\r\n var result, resultValue, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 4, , 5]);\r\n result = callback(context.args, context.instance);\r\n if (!(result && typeof result.then === \"function\")) return [3, 2];\r\n return [4, result];\r\n case 1:\r\n resultValue = _a.sent();\r\n resultCallback(undefined, resultValue);\r\n return [3, 3];\r\n case 2:\r\n resultCallback(undefined, result);\r\n _a.label = 3;\r\n case 3: return [3, 5];\r\n case 4:\r\n e_1 = _a.sent();\r\n resultCallback(e_1 !== null && e_1 !== void 0 ? e_1 : \"\", e_1 !== null && e_1 !== void 0 ? e_1 : \"\");\r\n return [3, 5];\r\n case 5: return [2];\r\n }\r\n });\r\n }); };\r\n wrappedCallbackFunction.userCallback = callback;\r\n return this.registerCore(methodDefinition, wrappedCallbackFunction);\r\n };\r\n Server.prototype.registerAsync = function (methodDefinition, callback) {\r\n var _this = this;\r\n if (!methodDefinition) {\r\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\r\n }\r\n if (typeof callback !== \"function\") {\r\n return Promise.reject(\"The second parameter must be a callback function. Method: \".concat(typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name));\r\n }\r\n var wrappedCallback = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () {\r\n var resultCalled_1, success, error, methodResult;\r\n return __generator(this, function (_a) {\r\n try {\r\n resultCalled_1 = false;\r\n success = function (result) {\r\n if (!resultCalled_1) {\r\n resultCallback(undefined, result);\r\n }\r\n resultCalled_1 = true;\r\n };\r\n error = function (e) {\r\n if (!resultCalled_1) {\r\n if (!e) {\r\n e = \"\";\r\n }\r\n resultCallback(e, e);\r\n }\r\n resultCalled_1 = true;\r\n };\r\n methodResult = callback(context.args, context.instance, success, error);\r\n if (methodResult && typeof methodResult.then === \"function\") {\r\n methodResult\r\n .then(success)\r\n .catch(error);\r\n }\r\n }\r\n catch (e) {\r\n resultCallback(e, undefined);\r\n }\r\n return [2];\r\n });\r\n }); };\r\n wrappedCallback.userCallbackAsync = callback;\r\n return this.registerCore(methodDefinition, wrappedCallback);\r\n };\r\n Server.prototype.unregister = function (methodFilter, forStream) {\r\n if (forStream === void 0) { forStream = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodDefinition, methodToBeRemoved;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (methodFilter === undefined) {\r\n return [2, Promise.reject(\"Please, provide either a unique string for a name or an object containing a “name” property.\")];\r\n }\r\n if (!(typeof methodFilter === \"function\")) return [3, 2];\r\n return [4, this.unregisterWithPredicate(methodFilter, forStream)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n case 2:\r\n if (typeof methodFilter === \"string\") {\r\n methodDefinition = { name: methodFilter };\r\n }\r\n else {\r\n methodDefinition = methodFilter;\r\n }\r\n if (methodDefinition.name === undefined) {\r\n return [2, Promise.reject(\"Method name is required. Cannot find a method if the method name is undefined!\")];\r\n }\r\n methodToBeRemoved = this.serverRepository.getList().find(function (serverMethod) {\r\n return serverMethod.definition.name === methodDefinition.name\r\n && (serverMethod.definition.supportsStreaming || false) === forStream;\r\n });\r\n if (!methodToBeRemoved) {\r\n return [2, Promise.reject(\"Method with a name \\\"\".concat(methodDefinition.name, \"\\\" does not exist or is not registered by your application!\"))];\r\n }\r\n return [4, this.removeMethodsOrStreams([methodToBeRemoved])];\r\n case 3:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.unregisterWithPredicate = function (filterPredicate, forStream) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodsOrStreamsToRemove;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n methodsOrStreamsToRemove = this.serverRepository.getList()\r\n .filter(function (sm) { return filterPredicate(sm.definition); })\r\n .filter(function (serverMethod) {\r\n return (serverMethod.definition.supportsStreaming || false) === forStream;\r\n });\r\n if (!methodsOrStreamsToRemove || methodsOrStreamsToRemove.length === 0) {\r\n return [2, Promise.reject(\"Could not find a \".concat(forStream ? \"stream\" : \"method\", \" matching the specified condition!\"))];\r\n }\r\n return [4, this.removeMethodsOrStreams(methodsOrStreamsToRemove)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.removeMethodsOrStreams = function (methodsToRemove) {\r\n var _this = this;\r\n var methodUnregPromises = [];\r\n methodsToRemove.forEach(function (method) {\r\n var promise = _this.protocol.server.unregister(method)\r\n .then(function () {\r\n if (method.repoId) {\r\n _this.serverRepository.remove(method.repoId);\r\n }\r\n });\r\n methodUnregPromises.push(promise);\r\n _this.addAsCurrentlyUnregistering(method.definition.name, promise);\r\n });\r\n return Promise.all(methodUnregPromises);\r\n };\r\n Server.prototype.addAsCurrentlyUnregistering = function (methodName, promise) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var timeout;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n timeout = new Promise(function (resolve) { return setTimeout(resolve, 5000); });\r\n this.currentlyUnregistering[methodName] = Promise.race([promise, timeout]).then(function () {\r\n delete _this.currentlyUnregistering[methodName];\r\n });\r\n return [2];\r\n });\r\n });\r\n };\r\n Server.prototype.registerCore = function (method, theFunction) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodDefinition, unregisterInProgress, nameAlreadyExists, repoMethod;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (typeof method === \"string\") {\r\n methodDefinition = { name: \"\" + method };\r\n }\r\n else {\r\n methodDefinition = __assign({}, method);\r\n }\r\n if (!methodDefinition.name) {\r\n return [2, Promise.reject(\"Please, provide a (unique) string value for the \\u201Cname\\u201D property in the \\u201CmethodDefinition\\u201D object: \".concat(JSON.stringify(method)))];\r\n }\r\n unregisterInProgress = this.currentlyUnregistering[methodDefinition.name];\r\n if (!(typeof unregisterInProgress !== \"undefined\")) return [3, 2];\r\n return [4, unregisterInProgress];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n nameAlreadyExists = this.serverRepository.getList()\r\n .some(function (serverMethod) { return serverMethod.definition.name === methodDefinition.name; });\r\n if (nameAlreadyExists) {\r\n return [2, Promise.reject(\"A method with the name \\\"\".concat(methodDefinition.name, \"\\\" already exists! Please, provide a unique name for the method.\"))];\r\n }\r\n if (methodDefinition.supportsStreaming) {\r\n return [2, Promise.reject(\"When you create methods with \\u201Cglue.interop.register()\\u201D or \\u201Cglue.interop.registerAsync()\\u201D the property \\u201CsupportsStreaming\\u201D cannot be \\u201Ctrue\\u201D. If you want \\u201C\".concat(methodDefinition.name, \"\\u201D to be a stream, please use the \\u201Cglue.interop.createStream()\\u201D method.\"))];\r\n }\r\n repoMethod = this.serverRepository.add({\r\n definition: methodDefinition,\r\n theFunction: theFunction,\r\n protocolState: {},\r\n });\r\n return [2, this.protocol.server.register(repoMethod)\r\n .catch(function (err) {\r\n if (repoMethod === null || repoMethod === void 0 ? void 0 : repoMethod.repoId) {\r\n _this.serverRepository.remove(repoMethod.repoId);\r\n }\r\n throw err;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.onMethodInvoked = function (methodToExecute, invocationId, invocationArgs) {\r\n var _this = this;\r\n if (!methodToExecute || !methodToExecute.theFunction) {\r\n return;\r\n }\r\n methodToExecute.theFunction(invocationArgs, function (err, result) {\r\n if (err !== undefined && err !== null) {\r\n if (err.message && typeof err.message === \"string\") {\r\n err = err.message;\r\n }\r\n else if (typeof err !== \"string\") {\r\n try {\r\n err = JSON.stringify(err);\r\n }\r\n catch (unStrException) {\r\n err = \"un-stringifyable error in onMethodInvoked! Top level prop names: \".concat(Object.keys(err));\r\n }\r\n }\r\n }\r\n if (!result) {\r\n result = {};\r\n }\r\n else if (typeof result !== \"object\" || Array.isArray(result)) {\r\n result = { _value: result };\r\n }\r\n _this.protocol.server.methodInvocationResult(methodToExecute, invocationId, err, result);\r\n });\r\n };\r\n return Server;\r\n}());\n\nvar InstanceWrapper = (function () {\r\n function InstanceWrapper(API, instance, connection) {\r\n var _this = this;\r\n this.wrapped = {};\r\n this.wrapped.getMethods = function () {\r\n return API.methodsForInstance(this);\r\n };\r\n this.wrapped.getStreams = function () {\r\n return API.methodsForInstance(this).filter(function (m) { return m.supportsStreaming; });\r\n };\r\n if (instance) {\r\n this.refreshWrappedObject(instance);\r\n }\r\n if (connection) {\r\n connection.loggedIn(function () {\r\n _this.refresh(connection);\r\n });\r\n this.refresh(connection);\r\n }\r\n }\r\n InstanceWrapper.prototype.unwrap = function () {\r\n return this.wrapped;\r\n };\r\n InstanceWrapper.prototype.refresh = function (connection) {\r\n if (!connection) {\r\n return;\r\n }\r\n var resolvedIdentity = connection === null || connection === void 0 ? void 0 : connection.resolvedIdentity;\r\n var instance = Object.assign({}, resolvedIdentity !== null && resolvedIdentity !== void 0 ? resolvedIdentity : {}, { peerId: connection === null || connection === void 0 ? void 0 : connection.peerId });\r\n this.refreshWrappedObject(instance);\r\n };\r\n InstanceWrapper.prototype.refreshWrappedObject = function (resolvedIdentity) {\r\n var _this = this;\r\n var _a, _b, _c, _d;\r\n Object.keys(resolvedIdentity).forEach(function (key) {\r\n _this.wrapped[key] = resolvedIdentity[key];\r\n });\r\n this.wrapped.user = resolvedIdentity.user;\r\n this.wrapped.instance = resolvedIdentity.instance;\r\n this.wrapped.application = (_a = resolvedIdentity.application) !== null && _a !== void 0 ? _a : shortid();\r\n this.wrapped.applicationName = resolvedIdentity.applicationName;\r\n this.wrapped.pid = (_c = (_b = resolvedIdentity.pid) !== null && _b !== void 0 ? _b : resolvedIdentity.process) !== null && _c !== void 0 ? _c : Math.floor(Math.random() * 10000000000);\r\n this.wrapped.machine = resolvedIdentity.machine;\r\n this.wrapped.environment = resolvedIdentity.environment;\r\n this.wrapped.region = resolvedIdentity.region;\r\n this.wrapped.windowId = resolvedIdentity.windowId;\r\n this.wrapped.isLocal = (_d = resolvedIdentity.isLocal) !== null && _d !== void 0 ? _d : true;\r\n this.wrapped.api = resolvedIdentity.api;\r\n this.wrapped.service = resolvedIdentity.service;\r\n this.wrapped.peerId = resolvedIdentity.peerId;\r\n };\r\n return InstanceWrapper;\r\n}());\n\nvar hideMethodSystemFlags = function (method) {\r\n return __assign(__assign({}, method), { flags: method.flags.metadata || {} });\r\n};\r\nvar ClientRepository = (function () {\r\n function ClientRepository(logger, API) {\r\n this.logger = logger;\r\n this.API = API;\r\n this.servers = {};\r\n this.methodsCount = {};\r\n this.callbacks = lib$1();\r\n var peerId = this.API.instance.peerId;\r\n this.myServer = {\r\n id: peerId,\r\n methods: {},\r\n instance: this.API.instance,\r\n wrapper: this.API.unwrappedInstance,\r\n };\r\n this.servers[peerId] = this.myServer;\r\n }\r\n ClientRepository.prototype.addServer = function (info, serverId) {\r\n this.logger.debug(\"adding server \".concat(serverId));\r\n var current = this.servers[serverId];\r\n if (current) {\r\n return current.id;\r\n }\r\n var wrapper = new InstanceWrapper(this.API, info);\r\n var serverEntry = {\r\n id: serverId,\r\n methods: {},\r\n instance: wrapper.unwrap(),\r\n wrapper: wrapper,\r\n };\r\n this.servers[serverId] = serverEntry;\r\n this.callbacks.execute(\"onServerAdded\", serverEntry.instance);\r\n return serverId;\r\n };\r\n ClientRepository.prototype.removeServerById = function (id, reason) {\r\n var _this = this;\r\n var server = this.servers[id];\r\n if (!server) {\r\n this.logger.warn(\"not aware of server \".concat(id, \", my state \").concat(JSON.stringify(Object.keys(this.servers))));\r\n return;\r\n }\r\n else {\r\n this.logger.debug(\"removing server \".concat(id));\r\n }\r\n Object.keys(server.methods).forEach(function (methodId) {\r\n _this.removeServerMethod(id, methodId);\r\n });\r\n delete this.servers[id];\r\n this.callbacks.execute(\"onServerRemoved\", server.instance, reason);\r\n };\r\n ClientRepository.prototype.addServerMethod = function (serverId, method) {\r\n var _a;\r\n var server = this.servers[serverId];\r\n if (!server) {\r\n throw new Error(\"server does not exists\");\r\n }\r\n if (server.methods[method.id]) {\r\n return;\r\n }\r\n var identifier = this.createMethodIdentifier(method);\r\n var that = this;\r\n var methodDefinition = {\r\n identifier: identifier,\r\n gatewayId: method.id,\r\n name: method.name,\r\n displayName: method.display_name,\r\n description: method.description,\r\n version: method.version,\r\n objectTypes: method.object_types || [],\r\n accepts: method.input_signature,\r\n returns: method.result_signature,\r\n supportsStreaming: typeof method.flags !== \"undefined\" ? method.flags.streaming : false,\r\n flags: (_a = method.flags) !== null && _a !== void 0 ? _a : {},\r\n getServers: function () {\r\n return that.getServersByMethod(identifier);\r\n }\r\n };\r\n methodDefinition.object_types = methodDefinition.objectTypes;\r\n methodDefinition.display_name = methodDefinition.displayName;\r\n methodDefinition.version = methodDefinition.version;\r\n server.methods[method.id] = methodDefinition;\r\n var clientMethodDefinition = hideMethodSystemFlags(methodDefinition);\r\n if (!this.methodsCount[identifier]) {\r\n this.methodsCount[identifier] = 0;\r\n this.callbacks.execute(\"onMethodAdded\", clientMethodDefinition);\r\n }\r\n this.methodsCount[identifier] = this.methodsCount[identifier] + 1;\r\n this.callbacks.execute(\"onServerMethodAdded\", server.instance, clientMethodDefinition);\r\n return methodDefinition;\r\n };\r\n ClientRepository.prototype.removeServerMethod = function (serverId, methodId) {\r\n var server = this.servers[serverId];\r\n if (!server) {\r\n throw new Error(\"server does not exists\");\r\n }\r\n var method = server.methods[methodId];\r\n delete server.methods[methodId];\r\n var clientMethodDefinition = hideMethodSystemFlags(method);\r\n this.methodsCount[method.identifier] = this.methodsCount[method.identifier] - 1;\r\n if (this.methodsCount[method.identifier] === 0) {\r\n this.callbacks.execute(\"onMethodRemoved\", clientMethodDefinition);\r\n }\r\n this.callbacks.execute(\"onServerMethodRemoved\", server.instance, clientMethodDefinition);\r\n };\r\n ClientRepository.prototype.getMethods = function () {\r\n return this.extractMethodsFromServers(Object.values(this.servers)).map(hideMethodSystemFlags);\r\n };\r\n ClientRepository.prototype.getServers = function () {\r\n return Object.values(this.servers).map(this.hideServerMethodSystemFlags);\r\n };\r\n ClientRepository.prototype.onServerAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerAdded\", callback);\r\n var serversWithMethodsToReplay = this.getServers().map(function (s) { return s.instance; });\r\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, serversWithMethodsToReplay, callback);\r\n };\r\n ClientRepository.prototype.onMethodAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onMethodAdded\", callback);\r\n var methodsToReplay = this.getMethods();\r\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, methodsToReplay, callback);\r\n };\r\n ClientRepository.prototype.onServerMethodAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerMethodAdded\", callback);\r\n var unsubCalled = false;\r\n var servers = this.getServers();\r\n setTimeout(function () {\r\n servers.forEach(function (server) {\r\n var methods = server.methods;\r\n Object.keys(methods).forEach(function (methodId) {\r\n if (!unsubCalled) {\r\n callback(server.instance, methods[methodId]);\r\n }\r\n });\r\n });\r\n }, 0);\r\n return function () {\r\n unsubCalled = true;\r\n unsubscribeFunc();\r\n };\r\n };\r\n ClientRepository.prototype.onMethodRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onMethodRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.onServerRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.onServerMethodRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerMethodRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.getServerById = function (id) {\r\n return this.hideServerMethodSystemFlags(this.servers[id]);\r\n };\r\n ClientRepository.prototype.reset = function () {\r\n var _a;\r\n var _this = this;\r\n Object.keys(this.servers).forEach(function (key) {\r\n _this.removeServerById(key, \"reset\");\r\n });\r\n this.servers = (_a = {},\r\n _a[this.myServer.id] = this.myServer,\r\n _a);\r\n this.methodsCount = {};\r\n };\r\n ClientRepository.prototype.createMethodIdentifier = function (methodInfo) {\r\n var _a, _b;\r\n var accepts = (_a = methodInfo.input_signature) !== null && _a !== void 0 ? _a : \"\";\r\n var returns = (_b = methodInfo.result_signature) !== null && _b !== void 0 ? _b : \"\";\r\n return (methodInfo.name + accepts + returns).toLowerCase();\r\n };\r\n ClientRepository.prototype.getServersByMethod = function (identifier) {\r\n var allServers = [];\r\n Object.values(this.servers).forEach(function (server) {\r\n Object.values(server.methods).forEach(function (method) {\r\n if (method.identifier === identifier) {\r\n allServers.push(server.instance);\r\n }\r\n });\r\n });\r\n return allServers;\r\n };\r\n ClientRepository.prototype.returnUnsubWithDelayedReplay = function (unsubscribeFunc, collectionToReplay, callback) {\r\n var unsubCalled = false;\r\n setTimeout(function () {\r\n collectionToReplay.forEach(function (item) {\r\n if (!unsubCalled) {\r\n callback(item);\r\n }\r\n });\r\n }, 0);\r\n return function () {\r\n unsubCalled = true;\r\n unsubscribeFunc();\r\n };\r\n };\r\n ClientRepository.prototype.hideServerMethodSystemFlags = function (server) {\r\n var clientMethods = {};\r\n Object.entries(server.methods).forEach(function (_a) {\r\n var name = _a[0], method = _a[1];\r\n clientMethods[name] = hideMethodSystemFlags(method);\r\n });\r\n return __assign(__assign({}, server), { methods: clientMethods });\r\n };\r\n ClientRepository.prototype.extractMethodsFromServers = function (servers) {\r\n var methods = Object.values(servers).reduce(function (clientMethods, server) {\r\n return __spreadArray(__spreadArray([], clientMethods, true), Object.values(server.methods), true);\r\n }, []);\r\n return methods;\r\n };\r\n return ClientRepository;\r\n}());\n\nvar ServerRepository = (function () {\r\n function ServerRepository() {\r\n this.nextId = 0;\r\n this.methods = [];\r\n }\r\n ServerRepository.prototype.add = function (method) {\r\n method.repoId = String(this.nextId);\r\n this.nextId += 1;\r\n this.methods.push(method);\r\n return method;\r\n };\r\n ServerRepository.prototype.remove = function (repoId) {\r\n if (typeof repoId !== \"string\") {\r\n return new TypeError(\"Expecting a string\");\r\n }\r\n this.methods = this.methods.filter(function (m) {\r\n return m.repoId !== repoId;\r\n });\r\n };\r\n ServerRepository.prototype.getById = function (id) {\r\n if (typeof id !== \"string\") {\r\n return undefined;\r\n }\r\n return this.methods.find(function (m) {\r\n return m.repoId === id;\r\n });\r\n };\r\n ServerRepository.prototype.getList = function () {\r\n return this.methods.map(function (m) { return m; });\r\n };\r\n ServerRepository.prototype.length = function () {\r\n return this.methods.length;\r\n };\r\n ServerRepository.prototype.reset = function () {\r\n this.methods = [];\r\n };\r\n return ServerRepository;\r\n}());\n\nvar SUBSCRIPTION_REQUEST = \"onSubscriptionRequest\";\r\nvar SUBSCRIPTION_ADDED = \"onSubscriptionAdded\";\r\nvar SUBSCRIPTION_REMOVED = \"onSubscriptionRemoved\";\r\nvar ServerStreaming = (function () {\r\n function ServerStreaming(session, repository, serverRepository) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.serverRepository = serverRepository;\r\n this.ERR_URI_SUBSCRIPTION_FAILED = \"com.tick42.agm.errors.subscription.failure\";\r\n this.callbacks = lib$1();\r\n this.nextStreamId = 0;\r\n session.on(\"add-interest\", function (msg) {\r\n _this.handleAddInterest(msg);\r\n });\r\n session.on(\"remove-interest\", function (msg) {\r\n _this.handleRemoveInterest(msg);\r\n });\r\n }\r\n ServerStreaming.prototype.acceptRequestOnBranch = function (requestContext, streamingMethod, branch) {\r\n if (typeof branch !== \"string\") {\r\n branch = \"\";\r\n }\r\n if (typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\r\n throw new TypeError(\"The streaming method is missing its subscriptions.\");\r\n }\r\n if (!Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\r\n throw new TypeError(\"The streaming method is missing its branches.\");\r\n }\r\n var streamId = this.getStreamId(streamingMethod, branch);\r\n var key = requestContext.msg.subscription_id;\r\n var subscription = {\r\n id: key,\r\n arguments: requestContext.arguments,\r\n instance: requestContext.instance,\r\n branchKey: branch,\r\n streamId: streamId,\r\n subscribeMsg: requestContext.msg,\r\n };\r\n streamingMethod.protocolState.subscriptionsMap[key] = subscription;\r\n this.session.sendFireAndForget({\r\n type: \"accepted\",\r\n subscription_id: key,\r\n stream_id: streamId,\r\n });\r\n this.callbacks.execute(SUBSCRIPTION_ADDED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.rejectRequest = function (requestContext, streamingMethod, reason) {\r\n if (typeof reason !== \"string\") {\r\n reason = \"\";\r\n }\r\n this.sendSubscriptionFailed(\"Subscription rejected by user. \" + reason, requestContext.msg.subscription_id);\r\n };\r\n ServerStreaming.prototype.pushData = function (streamingMethod, data, branches) {\r\n var _this = this;\r\n if (typeof streamingMethod !== \"object\" || !Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\r\n return;\r\n }\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n if (typeof branches === \"string\") {\r\n branches = [branches];\r\n }\r\n else if (!Array.isArray(branches) || branches.length <= 0) {\r\n branches = [];\r\n }\r\n var streamIdList = streamingMethod.protocolState.branchKeyToStreamIdMap\r\n .filter(function (br) {\r\n if (!branches || branches.length === 0) {\r\n return true;\r\n }\r\n return branches.indexOf(br.key) >= 0;\r\n }).map(function (br) {\r\n return br.streamId;\r\n });\r\n streamIdList.forEach(function (streamId) {\r\n var publishMessage = {\r\n type: \"publish\",\r\n stream_id: streamId,\r\n data: data,\r\n };\r\n _this.session.sendFireAndForget(publishMessage);\r\n });\r\n };\r\n ServerStreaming.prototype.pushDataToSingle = function (method, subscription, data) {\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n var postMessage = {\r\n type: \"post\",\r\n subscription_id: subscription.id,\r\n data: data,\r\n };\r\n this.session.sendFireAndForget(postMessage);\r\n };\r\n ServerStreaming.prototype.closeSingleSubscription = function (streamingMethod, subscription) {\r\n if (streamingMethod.protocolState.subscriptionsMap) {\r\n delete streamingMethod.protocolState.subscriptionsMap[subscription.id];\r\n }\r\n var dropSubscriptionMessage = {\r\n type: \"drop-subscription\",\r\n subscription_id: subscription.id,\r\n reason: \"Server dropping a single subscription\",\r\n };\r\n this.session.sendFireAndForget(dropSubscriptionMessage);\r\n subscription.instance;\r\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.closeMultipleSubscriptions = function (streamingMethod, branchKey) {\r\n var _this = this;\r\n if (typeof streamingMethod !== \"object\" || typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\r\n return;\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return;\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var subscriptionsToClose = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n if (typeof branchKey === \"string\") {\r\n subscriptionsToClose = subscriptionsToClose.filter(function (sub) {\r\n return sub.branchKey === branchKey;\r\n });\r\n }\r\n subscriptionsToClose.forEach(function (subscription) {\r\n delete subscriptionsMap[subscription.id];\r\n var drop = {\r\n type: \"drop-subscription\",\r\n subscription_id: subscription.id,\r\n reason: \"Server dropping all subscriptions on stream_id: \" + subscription.streamId,\r\n };\r\n _this.session.sendFireAndForget(drop);\r\n });\r\n };\r\n ServerStreaming.prototype.getSubscriptionList = function (streamingMethod, branchKey) {\r\n if (typeof streamingMethod !== \"object\") {\r\n return [];\r\n }\r\n var subscriptions = [];\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return [];\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var allSubscriptions = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n if (typeof branchKey !== \"string\") {\r\n subscriptions = allSubscriptions;\r\n }\r\n else {\r\n subscriptions = allSubscriptions.filter(function (sub) {\r\n return sub.branchKey === branchKey;\r\n });\r\n }\r\n return subscriptions;\r\n };\r\n ServerStreaming.prototype.getBranchList = function (streamingMethod) {\r\n if (typeof streamingMethod !== \"object\") {\r\n return [];\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return [];\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var allSubscriptions = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n var result = [];\r\n allSubscriptions.forEach(function (sub) {\r\n var branch = \"\";\r\n if (typeof sub === \"object\" && typeof sub.branchKey === \"string\") {\r\n branch = sub.branchKey;\r\n }\r\n if (result.indexOf(branch) === -1) {\r\n result.push(branch);\r\n }\r\n });\r\n return result;\r\n };\r\n ServerStreaming.prototype.onSubAdded = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_ADDED, callback);\r\n };\r\n ServerStreaming.prototype.onSubRequest = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REQUEST, callback);\r\n };\r\n ServerStreaming.prototype.onSubRemoved = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REMOVED, callback);\r\n };\r\n ServerStreaming.prototype.handleRemoveInterest = function (msg) {\r\n var streamingMethod = this.serverRepository.getById(msg.method_id);\r\n if (typeof msg.subscription_id !== \"string\" ||\r\n typeof streamingMethod !== \"object\") {\r\n return;\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return;\r\n }\r\n if (typeof streamingMethod.protocolState.subscriptionsMap[msg.subscription_id] !== \"object\") {\r\n return;\r\n }\r\n var subscription = streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\r\n delete streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\r\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.onSubscriptionLifetimeEvent = function (eventName, handlerFunc) {\r\n this.callbacks.add(eventName, handlerFunc);\r\n };\r\n ServerStreaming.prototype.getNextStreamId = function () {\r\n return this.nextStreamId++ + \"\";\r\n };\r\n ServerStreaming.prototype.handleAddInterest = function (msg) {\r\n var caller = this.repository.getServerById(msg.caller_id);\r\n var instance = caller.instance;\r\n var requestContext = {\r\n msg: msg,\r\n arguments: msg.arguments_kv || {},\r\n instance: instance,\r\n };\r\n var streamingMethod = this.serverRepository.getById(msg.method_id);\r\n if (streamingMethod === undefined) {\r\n var errorMsg = \"No method with id \" + msg.method_id + \" on this server.\";\r\n this.sendSubscriptionFailed(errorMsg, msg.subscription_id);\r\n return;\r\n }\r\n if (streamingMethod.protocolState.subscriptionsMap &&\r\n streamingMethod.protocolState.subscriptionsMap[msg.subscription_id]) {\r\n this.sendSubscriptionFailed(\"A subscription with id \" + msg.subscription_id + \" already exists.\", msg.subscription_id);\r\n return;\r\n }\r\n this.callbacks.execute(SUBSCRIPTION_REQUEST, requestContext, streamingMethod);\r\n };\r\n ServerStreaming.prototype.sendSubscriptionFailed = function (reason, subscriptionId) {\r\n var errorMessage = {\r\n type: \"error\",\r\n reason_uri: this.ERR_URI_SUBSCRIPTION_FAILED,\r\n reason: reason,\r\n request_id: subscriptionId,\r\n };\r\n this.session.sendFireAndForget(errorMessage);\r\n };\r\n ServerStreaming.prototype.getStreamId = function (streamingMethod, branchKey) {\r\n if (typeof branchKey !== \"string\") {\r\n branchKey = \"\";\r\n }\r\n if (!streamingMethod.protocolState.branchKeyToStreamIdMap) {\r\n throw new Error(\"streaming \".concat(streamingMethod.definition.name, \" method without protocol state\"));\r\n }\r\n var needleBranch = streamingMethod.protocolState.branchKeyToStreamIdMap.filter(function (branch) {\r\n return branch.key === branchKey;\r\n })[0];\r\n var streamId = (needleBranch ? needleBranch.streamId : undefined);\r\n if (typeof streamId !== \"string\" || streamId === \"\") {\r\n streamId = this.getNextStreamId();\r\n streamingMethod.protocolState.branchKeyToStreamIdMap.push({ key: branchKey, streamId: streamId });\r\n }\r\n return streamId;\r\n };\r\n return ServerStreaming;\r\n}());\n\nvar ServerProtocol = (function () {\r\n function ServerProtocol(session, clientRepository, serverRepository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.clientRepository = clientRepository;\r\n this.serverRepository = serverRepository;\r\n this.logger = logger;\r\n this.callbacks = lib$1();\r\n this.streaming = new ServerStreaming(session, clientRepository, serverRepository);\r\n this.session.on(\"invoke\", function (msg) { return _this.handleInvokeMessage(msg); });\r\n }\r\n ServerProtocol.prototype.createStream = function (repoMethod) {\r\n repoMethod.protocolState.subscriptionsMap = {};\r\n repoMethod.protocolState.branchKeyToStreamIdMap = [];\r\n return this.register(repoMethod, true);\r\n };\r\n ServerProtocol.prototype.register = function (repoMethod, isStreaming) {\r\n var _this = this;\r\n var _a;\r\n var methodDef = repoMethod.definition;\r\n var flags = Object.assign({}, { metadata: (_a = methodDef.flags) !== null && _a !== void 0 ? _a : {} }, { streaming: isStreaming || false });\r\n var registerMsg = {\r\n type: \"register\",\r\n methods: [{\r\n id: repoMethod.repoId,\r\n name: methodDef.name,\r\n display_name: methodDef.displayName,\r\n description: methodDef.description,\r\n version: methodDef.version,\r\n flags: flags,\r\n object_types: methodDef.objectTypes || methodDef.object_types,\r\n input_signature: methodDef.accepts,\r\n result_signature: methodDef.returns,\r\n restrictions: undefined,\r\n }],\r\n };\r\n return this.session.send(registerMsg, { methodId: repoMethod.repoId })\r\n .then(function () {\r\n _this.logger.debug(\"registered method \" + repoMethod.definition.name + \" with id \" + repoMethod.repoId);\r\n })\r\n .catch(function (msg) {\r\n _this.logger.warn(\"failed to register method \".concat(repoMethod.definition.name, \" with id \").concat(repoMethod.repoId, \" - \").concat(JSON.stringify(msg)));\r\n throw msg;\r\n });\r\n };\r\n ServerProtocol.prototype.onInvoked = function (callback) {\r\n this.callbacks.add(\"onInvoked\", callback);\r\n };\r\n ServerProtocol.prototype.methodInvocationResult = function (method, invocationId, err, result) {\r\n var msg;\r\n if (err || err === \"\") {\r\n msg = {\r\n type: \"error\",\r\n request_id: invocationId,\r\n reason_uri: \"agm.errors.client_error\",\r\n reason: err,\r\n context: result,\r\n peer_id: undefined,\r\n };\r\n }\r\n else {\r\n msg = {\r\n type: \"yield\",\r\n invocation_id: invocationId,\r\n peer_id: this.session.peerId,\r\n result: result,\r\n request_id: undefined,\r\n };\r\n }\r\n this.session.sendFireAndForget(msg);\r\n };\r\n ServerProtocol.prototype.unregister = function (method) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var msg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n msg = {\r\n type: \"unregister\",\r\n methods: [method.repoId],\r\n };\r\n return [4, this.session.send(msg)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n ServerProtocol.prototype.getBranchList = function (method) {\r\n return this.streaming.getBranchList(method);\r\n };\r\n ServerProtocol.prototype.getSubscriptionList = function (method, branchKey) {\r\n return this.streaming.getSubscriptionList(method, branchKey);\r\n };\r\n ServerProtocol.prototype.closeAllSubscriptions = function (method, branchKey) {\r\n this.streaming.closeMultipleSubscriptions(method, branchKey);\r\n };\r\n ServerProtocol.prototype.pushData = function (method, data, branches) {\r\n this.streaming.pushData(method, data, branches);\r\n };\r\n ServerProtocol.prototype.pushDataToSingle = function (method, subscription, data) {\r\n this.streaming.pushDataToSingle(method, subscription, data);\r\n };\r\n ServerProtocol.prototype.closeSingleSubscription = function (method, subscription) {\r\n this.streaming.closeSingleSubscription(method, subscription);\r\n };\r\n ServerProtocol.prototype.acceptRequestOnBranch = function (requestContext, method, branch) {\r\n this.streaming.acceptRequestOnBranch(requestContext, method, branch);\r\n };\r\n ServerProtocol.prototype.rejectRequest = function (requestContext, method, reason) {\r\n this.streaming.rejectRequest(requestContext, method, reason);\r\n };\r\n ServerProtocol.prototype.onSubRequest = function (callback) {\r\n this.streaming.onSubRequest(callback);\r\n };\r\n ServerProtocol.prototype.onSubAdded = function (callback) {\r\n this.streaming.onSubAdded(callback);\r\n };\r\n ServerProtocol.prototype.onSubRemoved = function (callback) {\r\n this.streaming.onSubRemoved(callback);\r\n };\r\n ServerProtocol.prototype.handleInvokeMessage = function (msg) {\r\n var invocationId = msg.invocation_id;\r\n var callerId = msg.caller_id;\r\n var methodId = msg.method_id;\r\n var args = msg.arguments_kv;\r\n var methodList = this.serverRepository.getList();\r\n var method = methodList.filter(function (m) {\r\n return m.repoId === methodId;\r\n })[0];\r\n if (method === undefined) {\r\n return;\r\n }\r\n var client = this.clientRepository.getServerById(callerId).instance;\r\n var invocationArgs = { args: args, instance: client };\r\n this.callbacks.execute(\"onInvoked\", method, invocationId, invocationArgs);\r\n };\r\n return ServerProtocol;\r\n}());\n\nvar UserSubscription = (function () {\r\n function UserSubscription(repository, subscriptionData) {\r\n this.repository = repository;\r\n this.subscriptionData = subscriptionData;\r\n }\r\n Object.defineProperty(UserSubscription.prototype, \"requestArguments\", {\r\n get: function () {\r\n return this.subscriptionData.params.arguments || {};\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"servers\", {\r\n get: function () {\r\n var _this = this;\r\n return this.subscriptionData.trackedServers\r\n .filter(function (pair) { return pair.subscriptionId; })\r\n .map(function (pair) { return _this.repository.getServerById(pair.serverId).instance; });\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"serverInstance\", {\r\n get: function () {\r\n return this.servers[0];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"stream\", {\r\n get: function () {\r\n return this.subscriptionData.method;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n UserSubscription.prototype.onData = function (dataCallback) {\r\n if (typeof dataCallback !== \"function\") {\r\n throw new TypeError(\"The data callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onData.push(dataCallback);\r\n if (this.subscriptionData.handlers.onData.length === 1 && this.subscriptionData.queued.data.length > 0) {\r\n this.subscriptionData.queued.data.forEach(function (dataItem) {\r\n dataCallback(dataItem);\r\n });\r\n }\r\n };\r\n UserSubscription.prototype.onClosed = function (closedCallback) {\r\n if (typeof closedCallback !== \"function\") {\r\n throw new TypeError(\"The callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onClosed.push(closedCallback);\r\n };\r\n UserSubscription.prototype.onFailed = function (callback) {\r\n };\r\n UserSubscription.prototype.onConnected = function (callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new TypeError(\"The callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onConnected.push(callback);\r\n };\r\n UserSubscription.prototype.close = function () {\r\n this.subscriptionData.close();\r\n };\r\n UserSubscription.prototype.setNewSubscription = function (newSub) {\r\n this.subscriptionData = newSub;\r\n };\r\n return UserSubscription;\r\n}());\n\nvar TimedCache = (function () {\r\n function TimedCache(config) {\r\n this.config = config;\r\n this.cache = [];\r\n this.timeoutIds = [];\r\n }\r\n TimedCache.prototype.add = function (element) {\r\n var _this = this;\r\n var id = shortid();\r\n this.cache.push({ id: id, element: element });\r\n var timeoutId = setTimeout(function () {\r\n var elementIdx = _this.cache.findIndex(function (entry) { return entry.id === id; });\r\n if (elementIdx < 0) {\r\n return;\r\n }\r\n _this.cache.splice(elementIdx, 1);\r\n }, this.config.ELEMENT_TTL_MS);\r\n this.timeoutIds.push(timeoutId);\r\n };\r\n TimedCache.prototype.flush = function () {\r\n var elements = this.cache.map(function (entry) { return entry.element; });\r\n this.timeoutIds.forEach(function (id) { return clearInterval(id); });\r\n this.cache = [];\r\n this.timeoutIds = [];\r\n return elements;\r\n };\r\n return TimedCache;\r\n}());\n\nvar STATUS_AWAITING_ACCEPT = \"awaitingAccept\";\r\nvar STATUS_SUBSCRIBED = \"subscribed\";\r\nvar ERR_MSG_SUB_FAILED = \"Subscription failed.\";\r\nvar ERR_MSG_SUB_REJECTED = \"Subscription rejected.\";\r\nvar ON_CLOSE_MSG_SERVER_INIT = \"ServerInitiated\";\r\nvar ON_CLOSE_MSG_CLIENT_INIT = \"ClientInitiated\";\r\nvar ClientStreaming = (function () {\r\n function ClientStreaming(session, repository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.logger = logger;\r\n this.subscriptionsList = {};\r\n this.timedCache = new TimedCache({ ELEMENT_TTL_MS: 10000 });\r\n this.subscriptionIdToLocalKeyMap = {};\r\n this.nextSubLocalKey = 0;\r\n this.handleErrorSubscribing = function (errorResponse) {\r\n var tag = errorResponse._tag;\r\n var subLocalKey = tag.subLocalKey;\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (typeof pendingSub !== \"object\") {\r\n return;\r\n }\r\n pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) {\r\n return server.serverId !== tag.serverId;\r\n });\r\n if (pendingSub.trackedServers.length <= 0) {\r\n clearTimeout(pendingSub.timeoutId);\r\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\r\n var reason = (typeof errorResponse.reason === \"string\" && errorResponse.reason !== \"\") ?\r\n ' Publisher said \"' + errorResponse.reason + '\".' :\r\n \" No reason given.\";\r\n var callArgs = typeof pendingSub.params.arguments === \"object\" ?\r\n JSON.stringify(pendingSub.params.arguments) :\r\n \"{}\";\r\n pendingSub.error({\r\n message: ERR_MSG_SUB_REJECTED + reason + \" Called with:\" + callArgs,\r\n called_with: pendingSub.params.arguments,\r\n method: pendingSub.method,\r\n });\r\n }\r\n else if (pendingSub.status === STATUS_SUBSCRIBED) {\r\n _this.callOnClosedHandlers(pendingSub);\r\n }\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n };\r\n this.handleSubscribed = function (msg) {\r\n var subLocalKey = msg._tag.subLocalKey;\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (typeof pendingSub !== \"object\") {\r\n return;\r\n }\r\n var serverId = msg._tag.serverId;\r\n var acceptingServer = pendingSub.trackedServers\r\n .filter(function (server) {\r\n return server.serverId === serverId;\r\n })[0];\r\n if (typeof acceptingServer !== \"object\") {\r\n return;\r\n }\r\n acceptingServer.subscriptionId = msg.subscription_id;\r\n _this.subscriptionIdToLocalKeyMap[msg.subscription_id] = subLocalKey;\r\n var isFirstResponse = (pendingSub.status === STATUS_AWAITING_ACCEPT);\r\n pendingSub.status = STATUS_SUBSCRIBED;\r\n if (isFirstResponse) {\r\n var reconnect = false;\r\n var sub = pendingSub.subscription;\r\n if (sub) {\r\n sub.setNewSubscription(pendingSub);\r\n pendingSub.success(sub);\r\n reconnect = true;\r\n }\r\n else {\r\n sub = new UserSubscription(_this.repository, pendingSub);\r\n pendingSub.subscription = sub;\r\n pendingSub.success(sub);\r\n }\r\n for (var _i = 0, _a = pendingSub.handlers.onConnected; _i < _a.length; _i++) {\r\n var handler = _a[_i];\r\n try {\r\n handler(sub.serverInstance, reconnect);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n }\r\n };\r\n this.handleEventData = function (msg) {\r\n var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n if (typeof subLocalKey === \"undefined\") {\r\n return;\r\n }\r\n var subscription = _this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n var trackedServersFound = subscription.trackedServers.filter(function (server) {\r\n return server.subscriptionId === msg.subscription_id;\r\n });\r\n if (trackedServersFound.length !== 1) {\r\n return;\r\n }\r\n var isPrivateData = msg.oob;\r\n var sendingServerId = trackedServersFound[0].serverId;\r\n var receivedStreamData = function () {\r\n return {\r\n data: msg.data,\r\n server: _this.repository.getServerById(sendingServerId).instance,\r\n requestArguments: subscription.params.arguments,\r\n message: undefined,\r\n private: isPrivateData,\r\n };\r\n };\r\n var onDataHandlers = subscription.handlers.onData;\r\n var queuedData = subscription.queued.data;\r\n if (onDataHandlers.length > 0) {\r\n onDataHandlers.forEach(function (callback) {\r\n if (typeof callback === \"function\") {\r\n callback(receivedStreamData());\r\n }\r\n });\r\n }\r\n else {\r\n queuedData.push(receivedStreamData());\r\n }\r\n };\r\n this.handleSubscriptionCancelled = function (msg) {\r\n var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n if (typeof subLocalKey === \"undefined\") {\r\n return;\r\n }\r\n var subscription = _this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n var expectedNewLength = subscription.trackedServers.length - 1;\r\n subscription.trackedServers = subscription.trackedServers.filter(function (server) {\r\n if (server.subscriptionId === msg.subscription_id) {\r\n subscription.queued.closers.push(server.serverId);\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n if (subscription.trackedServers.length !== expectedNewLength) {\r\n return;\r\n }\r\n if (subscription.trackedServers.length <= 0) {\r\n _this.timedCache.add(subscription);\r\n clearTimeout(subscription.timeoutId);\r\n _this.callOnClosedHandlers(subscription);\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n delete _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n };\r\n session.on(\"subscribed\", this.handleSubscribed);\r\n session.on(\"event\", this.handleEventData);\r\n session.on(\"subscription-cancelled\", this.handleSubscriptionCancelled);\r\n }\r\n ClientStreaming.prototype.subscribe = function (streamingMethod, params, targetServers, success, error, existingSub) {\r\n var _this = this;\r\n if (targetServers.length === 0) {\r\n error({\r\n method: streamingMethod,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" No available servers matched the target params.\",\r\n });\r\n return;\r\n }\r\n var subLocalKey = this.getNextSubscriptionLocalKey();\r\n var pendingSub = this.registerSubscription(subLocalKey, streamingMethod, params, success, error, params.methodResponseTimeout || 10000, existingSub);\r\n if (typeof pendingSub !== \"object\") {\r\n error({\r\n method: streamingMethod,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" Unable to register the user callbacks.\",\r\n });\r\n return;\r\n }\r\n targetServers.forEach(function (target) {\r\n var serverId = target.server.id;\r\n var method = target.methods.find(function (m) { return m.name === streamingMethod.name; });\r\n if (!method) {\r\n _this.logger.error(\"can not find method \".concat(streamingMethod.name, \" for target \").concat(target.server.id));\r\n return;\r\n }\r\n pendingSub.trackedServers.push({\r\n serverId: serverId,\r\n subscriptionId: undefined,\r\n });\r\n var msg = {\r\n type: \"subscribe\",\r\n server_id: serverId,\r\n method_id: method.gatewayId,\r\n arguments_kv: params.arguments,\r\n };\r\n _this.session.send(msg, { serverId: serverId, subLocalKey: subLocalKey })\r\n .then(function (m) { return _this.handleSubscribed(m); })\r\n .catch(function (err) { return _this.handleErrorSubscribing(err); });\r\n });\r\n };\r\n ClientStreaming.prototype.drainSubscriptions = function () {\r\n var existing = Object.values(this.subscriptionsList);\r\n this.subscriptionsList = {};\r\n this.subscriptionIdToLocalKeyMap = {};\r\n return existing;\r\n };\r\n ClientStreaming.prototype.drainSubscriptionsCache = function () {\r\n return this.timedCache.flush();\r\n };\r\n ClientStreaming.prototype.getNextSubscriptionLocalKey = function () {\r\n var current = this.nextSubLocalKey;\r\n this.nextSubLocalKey += 1;\r\n return current;\r\n };\r\n ClientStreaming.prototype.registerSubscription = function (subLocalKey, method, params, success, error, timeout, existingSub) {\r\n var _this = this;\r\n var subsInfo = {\r\n localKey: subLocalKey,\r\n status: STATUS_AWAITING_ACCEPT,\r\n method: method,\r\n params: params,\r\n success: success,\r\n error: error,\r\n trackedServers: [],\r\n handlers: {\r\n onData: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onData) || [],\r\n onClosed: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onClosed) || [],\r\n onConnected: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onConnected) || [],\r\n },\r\n queued: {\r\n data: [],\r\n closers: [],\r\n },\r\n timeoutId: undefined,\r\n close: function () { return _this.closeSubscription(subLocalKey); },\r\n subscription: existingSub === null || existingSub === void 0 ? void 0 : existingSub.subscription\r\n };\r\n if (!existingSub) {\r\n if (params.onData) {\r\n subsInfo.handlers.onData.push(params.onData);\r\n }\r\n if (params.onClosed) {\r\n subsInfo.handlers.onClosed.push(params.onClosed);\r\n }\r\n if (params.onConnected) {\r\n subsInfo.handlers.onConnected.push(params.onConnected);\r\n }\r\n }\r\n this.subscriptionsList[subLocalKey] = subsInfo;\r\n subsInfo.timeoutId = setTimeout(function () {\r\n if (_this.subscriptionsList[subLocalKey] === undefined) {\r\n return;\r\n }\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\r\n error({\r\n method: method,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" Subscription attempt timed out after \" + timeout + \" ms.\",\r\n });\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n else if (pendingSub.status === STATUS_SUBSCRIBED && pendingSub.trackedServers.length > 0) {\r\n pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) {\r\n return (typeof server.subscriptionId !== \"undefined\");\r\n });\r\n delete pendingSub.timeoutId;\r\n if (pendingSub.trackedServers.length <= 0) {\r\n _this.callOnClosedHandlers(pendingSub);\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n }\r\n }, timeout);\r\n return subsInfo;\r\n };\r\n ClientStreaming.prototype.callOnClosedHandlers = function (subscription, reason) {\r\n var closersCount = subscription.queued.closers.length;\r\n var closingServerId = (closersCount > 0) ? subscription.queued.closers[closersCount - 1] : null;\r\n var closingServer;\r\n if (closingServerId !== undefined && typeof closingServerId === \"string\") {\r\n closingServer = this.repository.getServerById(closingServerId).instance;\r\n }\r\n subscription.handlers.onClosed.forEach(function (callback) {\r\n if (typeof callback !== \"function\") {\r\n return;\r\n }\r\n callback({\r\n message: reason || ON_CLOSE_MSG_SERVER_INIT,\r\n requestArguments: subscription.params.arguments || {},\r\n server: closingServer,\r\n stream: subscription.method,\r\n });\r\n });\r\n };\r\n ClientStreaming.prototype.closeSubscription = function (subLocalKey) {\r\n var _this = this;\r\n var subscription = this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n subscription.trackedServers.forEach(function (server) {\r\n if (typeof server.subscriptionId === \"undefined\") {\r\n return;\r\n }\r\n subscription.queued.closers.push(server.serverId);\r\n _this.session.sendFireAndForget({\r\n type: \"unsubscribe\",\r\n subscription_id: server.subscriptionId,\r\n reason_uri: \"\",\r\n reason: ON_CLOSE_MSG_CLIENT_INIT,\r\n });\r\n delete _this.subscriptionIdToLocalKeyMap[server.subscriptionId];\r\n });\r\n subscription.trackedServers = [];\r\n this.callOnClosedHandlers(subscription, ON_CLOSE_MSG_CLIENT_INIT);\r\n delete this.subscriptionsList[subLocalKey];\r\n };\r\n return ClientStreaming;\r\n}());\n\nvar ClientProtocol = (function () {\r\n function ClientProtocol(session, repository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.logger = logger;\r\n session.on(\"peer-added\", function (msg) { return _this.handlePeerAdded(msg); });\r\n session.on(\"peer-removed\", function (msg) { return _this.handlePeerRemoved(msg); });\r\n session.on(\"methods-added\", function (msg) { return _this.handleMethodsAddedMessage(msg); });\r\n session.on(\"methods-removed\", function (msg) { return _this.handleMethodsRemovedMessage(msg); });\r\n this.streaming = new ClientStreaming(session, repository, logger);\r\n }\r\n ClientProtocol.prototype.subscribe = function (stream, options, targetServers, success, error, existingSub) {\r\n this.streaming.subscribe(stream, options, targetServers, success, error, existingSub);\r\n };\r\n ClientProtocol.prototype.invoke = function (id, method, args, target) {\r\n var _this = this;\r\n var serverId = target.id;\r\n var methodId = method.gatewayId;\r\n var msg = {\r\n type: \"call\",\r\n server_id: serverId,\r\n method_id: methodId,\r\n arguments_kv: args,\r\n };\r\n return this.session.send(msg, { invocationId: id, serverId: serverId })\r\n .then(function (m) { return _this.handleResultMessage(m); })\r\n .catch(function (err) { return _this.handleInvocationError(err); });\r\n };\r\n ClientProtocol.prototype.drainSubscriptions = function () {\r\n return this.streaming.drainSubscriptions();\r\n };\r\n ClientProtocol.prototype.drainSubscriptionsCache = function () {\r\n return this.streaming.drainSubscriptionsCache();\r\n };\r\n ClientProtocol.prototype.handlePeerAdded = function (msg) {\r\n var newPeerId = msg.new_peer_id;\r\n var remoteId = msg.identity;\r\n var isLocal = msg.meta ? msg.meta.local : true;\r\n var pid = Number(remoteId.process);\r\n var serverInfo = {\r\n machine: remoteId.machine,\r\n pid: isNaN(pid) ? remoteId.process : pid,\r\n instance: remoteId.instance,\r\n application: remoteId.application,\r\n applicationName: remoteId.applicationName,\r\n environment: remoteId.environment,\r\n region: remoteId.region,\r\n user: remoteId.user,\r\n windowId: remoteId.windowId,\r\n peerId: newPeerId,\r\n api: remoteId.api,\r\n isLocal: isLocal\r\n };\r\n this.repository.addServer(serverInfo, newPeerId);\r\n };\r\n ClientProtocol.prototype.handlePeerRemoved = function (msg) {\r\n var removedPeerId = msg.removed_id;\r\n var reason = msg.reason;\r\n this.repository.removeServerById(removedPeerId, reason);\r\n };\r\n ClientProtocol.prototype.handleMethodsAddedMessage = function (msg) {\r\n var _this = this;\r\n var serverId = msg.server_id;\r\n var methods = msg.methods;\r\n methods.forEach(function (method) {\r\n _this.repository.addServerMethod(serverId, method);\r\n });\r\n };\r\n ClientProtocol.prototype.handleMethodsRemovedMessage = function (msg) {\r\n var _this = this;\r\n var serverId = msg.server_id;\r\n var methodIdList = msg.methods;\r\n var server = this.repository.getServerById(serverId);\r\n var serverMethodKeys = Object.keys(server.methods);\r\n serverMethodKeys.forEach(function (methodKey) {\r\n var method = server.methods[methodKey];\r\n if (methodIdList.indexOf(method.gatewayId) > -1) {\r\n _this.repository.removeServerMethod(serverId, methodKey);\r\n }\r\n });\r\n };\r\n ClientProtocol.prototype.handleResultMessage = function (msg) {\r\n var invocationId = msg._tag.invocationId;\r\n var result = msg.result;\r\n var serverId = msg._tag.serverId;\r\n var server = this.repository.getServerById(serverId);\r\n return {\r\n invocationId: invocationId,\r\n result: result,\r\n instance: server.instance,\r\n status: InvokeStatus.Success,\r\n message: \"\"\r\n };\r\n };\r\n ClientProtocol.prototype.handleInvocationError = function (msg) {\r\n this.logger.debug(\"handle invocation error \".concat(JSON.stringify(msg)));\r\n if (\"_tag\" in msg) {\r\n var invocationId = msg._tag.invocationId;\r\n var serverId = msg._tag.serverId;\r\n var server = this.repository.getServerById(serverId);\r\n var message = msg.reason;\r\n var context_1 = msg.context;\r\n return {\r\n invocationId: invocationId,\r\n result: context_1,\r\n instance: server.instance,\r\n status: InvokeStatus.Error,\r\n message: message\r\n };\r\n }\r\n else {\r\n return {\r\n invocationId: \"\",\r\n message: msg.message,\r\n status: InvokeStatus.Error,\r\n error: msg\r\n };\r\n }\r\n };\r\n return ClientProtocol;\r\n}());\n\nfunction gW3ProtocolFactory (instance, connection, clientRepository, serverRepository, libConfig, interop) {\r\n var logger = libConfig.logger.subLogger(\"gw3-protocol\");\r\n var resolveReadyPromise;\r\n var readyPromise = new Promise(function (resolve) {\r\n resolveReadyPromise = resolve;\r\n });\r\n var session = connection.domain(\"agm\", [\"subscribed\"]);\r\n var server = new ServerProtocol(session, clientRepository, serverRepository, logger.subLogger(\"server\"));\r\n var client = new ClientProtocol(session, clientRepository, logger.subLogger(\"client\"));\r\n function handleReconnect() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reconnectionPromises, existingSubscriptions, _loop_1, _i, existingSubscriptions_1, sub, registeredMethods, _loop_2, _a, registeredMethods_1, method;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n logger.info(\"reconnected - will replay registered methods and subscriptions\");\r\n client.drainSubscriptionsCache().forEach(function (sub) {\r\n var methodInfo = sub.method;\r\n var params = Object.assign({}, sub.params);\r\n logger.info(\"trying to soft-re-subscribe to method \".concat(methodInfo.name, \", with params: \").concat(JSON.stringify(params)));\r\n interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info(\"soft-subscribing to method \".concat(methodInfo.name, \" DONE\")); }).catch(function (error) { return logger.warn(\"subscribing to method \".concat(methodInfo.name, \" failed: \").concat(JSON.stringify(error), \"}\")); });\r\n });\r\n reconnectionPromises = [];\r\n existingSubscriptions = client.drainSubscriptions();\r\n _loop_1 = function (sub) {\r\n var methodInfo = sub.method;\r\n var params = Object.assign({}, sub.params);\r\n logger.info(\"trying to re-subscribe to method \".concat(methodInfo.name, \", with params: \").concat(JSON.stringify(params)));\r\n reconnectionPromises.push(interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info(\"subscribing to method \".concat(methodInfo.name, \" DONE\")); }));\r\n };\r\n for (_i = 0, existingSubscriptions_1 = existingSubscriptions; _i < existingSubscriptions_1.length; _i++) {\r\n sub = existingSubscriptions_1[_i];\r\n _loop_1(sub);\r\n }\r\n registeredMethods = serverRepository.getList();\r\n serverRepository.reset();\r\n _loop_2 = function (method) {\r\n var def = method.definition;\r\n logger.info(\"re-publishing method \".concat(def.name));\r\n if (method.stream) {\r\n reconnectionPromises.push(interop.server.createStream(def, method.streamCallbacks, undefined, undefined, method.stream).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n else if (method.theFunction && method.theFunction.userCallback) {\r\n reconnectionPromises.push(interop.register(def, method.theFunction.userCallback).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n else if (method.theFunction && method.theFunction.userCallbackAsync) {\r\n reconnectionPromises.push(interop.registerAsync(def, method.theFunction.userCallbackAsync).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n logger.info(\"re-publishing method \".concat(def.name, \" DONE\"));\r\n };\r\n for (_a = 0, registeredMethods_1 = registeredMethods; _a < registeredMethods_1.length; _a++) {\r\n method = registeredMethods_1[_a];\r\n _loop_2(method);\r\n }\r\n return [4, Promise.all(reconnectionPromises)];\r\n case 1:\r\n _b.sent();\r\n logger.info(\"Interop is re-announced\");\r\n return [2];\r\n }\r\n });\r\n });\r\n }\r\n function handleInitialJoin() {\r\n if (resolveReadyPromise) {\r\n resolveReadyPromise({\r\n client: client,\r\n server: server,\r\n });\r\n resolveReadyPromise = undefined;\r\n }\r\n }\r\n session.onJoined(function (reconnect) {\r\n clientRepository.addServer(instance, connection.peerId);\r\n if (reconnect) {\r\n handleReconnect().then(function () { return connection.setLibReAnnounced({ name: \"interop\" }); }).catch(function (error) { return logger.warn(\"Error while re-announcing interop: \".concat(JSON.stringify(error))); });\r\n }\r\n else {\r\n handleInitialJoin();\r\n }\r\n });\r\n session.onLeft(function () {\r\n clientRepository.reset();\r\n });\r\n session.join();\r\n return readyPromise;\r\n}\n\nvar Interop = (function () {\r\n function Interop(configuration) {\r\n var _this = this;\r\n if (typeof configuration === \"undefined\") {\r\n throw new Error(\"configuration is required\");\r\n }\r\n if (typeof configuration.connection === \"undefined\") {\r\n throw new Error(\"configuration.connections is required\");\r\n }\r\n var connection = configuration.connection;\r\n if (typeof configuration.methodResponseTimeout !== \"number\") {\r\n configuration.methodResponseTimeout = 30 * 1000;\r\n }\r\n if (typeof configuration.waitTimeoutMs !== \"number\") {\r\n configuration.waitTimeoutMs = 30 * 1000;\r\n }\r\n this.unwrappedInstance = new InstanceWrapper(this, undefined, connection);\r\n this.instance = this.unwrappedInstance.unwrap();\r\n this.clientRepository = new ClientRepository(configuration.logger.subLogger(\"cRep\"), this);\r\n this.serverRepository = new ServerRepository();\r\n var protocolPromise;\r\n if (connection.protocolVersion === 3) {\r\n protocolPromise = gW3ProtocolFactory(this.instance, connection, this.clientRepository, this.serverRepository, configuration, this);\r\n }\r\n else {\r\n throw new Error(\"protocol \".concat(connection.protocolVersion, \" not supported\"));\r\n }\r\n this.readyPromise = protocolPromise.then(function (protocol) {\r\n _this.protocol = protocol;\r\n _this.client = new Client(_this.protocol, _this.clientRepository, _this.instance, configuration);\r\n _this.server = new Server(_this.protocol, _this.serverRepository);\r\n return _this;\r\n });\r\n }\r\n Interop.prototype.ready = function () {\r\n return this.readyPromise;\r\n };\r\n Interop.prototype.serverRemoved = function (callback) {\r\n return this.client.serverRemoved(callback);\r\n };\r\n Interop.prototype.serverAdded = function (callback) {\r\n return this.client.serverAdded(callback);\r\n };\r\n Interop.prototype.serverMethodRemoved = function (callback) {\r\n return this.client.serverMethodRemoved(callback);\r\n };\r\n Interop.prototype.serverMethodAdded = function (callback) {\r\n return this.client.serverMethodAdded(callback);\r\n };\r\n Interop.prototype.methodRemoved = function (callback) {\r\n return this.client.methodRemoved(callback);\r\n };\r\n Interop.prototype.methodAdded = function (callback) {\r\n return this.client.methodAdded(callback);\r\n };\r\n Interop.prototype.methodsForInstance = function (instance) {\r\n return this.client.methodsForInstance(instance);\r\n };\r\n Interop.prototype.methods = function (methodFilter) {\r\n return this.client.methods(methodFilter);\r\n };\r\n Interop.prototype.servers = function (methodFilter) {\r\n return this.client.servers(methodFilter);\r\n };\r\n Interop.prototype.subscribe = function (method, options, successCallback, errorCallback) {\r\n return this.client.subscribe(method, options, successCallback, errorCallback);\r\n };\r\n Interop.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback) {\r\n return this.server.createStream(streamDef, callbacks, successCallback, errorCallback);\r\n };\r\n Interop.prototype.unregister = function (methodFilter) {\r\n return this.server.unregister(methodFilter);\r\n };\r\n Interop.prototype.registerAsync = function (methodDefinition, callback) {\r\n return this.server.registerAsync(methodDefinition, callback);\r\n };\r\n Interop.prototype.register = function (methodDefinition, callback) {\r\n return this.server.register(methodDefinition, callback);\r\n };\r\n Interop.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) {\r\n return this.client.invoke(methodFilter, argumentObj, target, additionalOptions, success, error);\r\n };\r\n Interop.prototype.waitForMethod = function (name) {\r\n var pw = new PromiseWrapper();\r\n var unsubscribe = this.client.methodAdded(function (m) {\r\n if (m.name === name) {\r\n unsubscribe();\r\n pw.resolve(m);\r\n }\r\n });\r\n return pw.promise;\r\n };\r\n return Interop;\r\n}());\n\nvar successMessages = [\"subscribed\", \"success\"];\r\nvar MessageBus = (function () {\r\n function MessageBus(connection, logger) {\r\n var _this = this;\r\n this.publish = function (topic, data, options) {\r\n var _a = options || {}, routingKey = _a.routingKey, target = _a.target;\r\n var args = _this.removeEmptyValues({\r\n type: \"publish\",\r\n topic: topic,\r\n data: data,\r\n peer_id: _this.peerId,\r\n routing_key: routingKey,\r\n target_identity: target\r\n });\r\n _this.session.send(args);\r\n };\r\n this.subscribe = function (topic, callback, options) {\r\n return new Promise(function (resolve, reject) {\r\n var _a = options || {}, routingKey = _a.routingKey, target = _a.target;\r\n var args = _this.removeEmptyValues({\r\n type: \"subscribe\",\r\n topic: topic,\r\n peer_id: _this.peerId,\r\n routing_key: routingKey,\r\n source: target\r\n });\r\n _this.session.send(args)\r\n .then(function (response) {\r\n var subscription_id = response.subscription_id;\r\n _this.subscriptions.push({ subscription_id: subscription_id, topic: topic, callback: callback, source: target });\r\n resolve({\r\n unsubscribe: function () {\r\n _this.session.send({ type: \"unsubscribe\", subscription_id: subscription_id, peer_id: _this.peerId });\r\n _this.subscriptions = _this.subscriptions.filter(function (s) { return s.subscription_id !== subscription_id; });\r\n return Promise.resolve();\r\n }\r\n });\r\n })\r\n .catch(function (error) { return reject(error); });\r\n });\r\n };\r\n this.watchOnEvent = function () {\r\n _this.session.on(\"event\", function (args) {\r\n var data = args.data, subscription_id = args.subscription_id;\r\n var source = args[\"publisher-identity\"];\r\n var subscription = _this.subscriptions.find(function (s) { return s.subscription_id === subscription_id; });\r\n if (subscription) {\r\n if (!subscription.source) {\r\n subscription.callback(data, subscription.topic, source);\r\n }\r\n else {\r\n if (_this.keysMatch(subscription.source, source)) {\r\n subscription.callback(data, subscription.topic, source);\r\n }\r\n }\r\n }\r\n });\r\n };\r\n this.connection = connection;\r\n this.logger = logger;\r\n this.peerId = connection.peerId;\r\n this.subscriptions = [];\r\n this.session = connection.domain(\"bus\", successMessages);\r\n this.readyPromise = this.session.join();\r\n this.readyPromise.then(function () {\r\n _this.watchOnEvent();\r\n });\r\n }\r\n MessageBus.prototype.ready = function () {\r\n return this.readyPromise;\r\n };\r\n MessageBus.prototype.removeEmptyValues = function (obj) {\r\n var cleaned = {};\r\n Object.keys(obj).forEach(function (key) {\r\n if (obj[key] !== undefined && obj[key] !== null) {\r\n cleaned[key] = obj[key];\r\n }\r\n });\r\n return cleaned;\r\n };\r\n MessageBus.prototype.keysMatch = function (obj1, obj2) {\r\n var keysObj1 = Object.keys(obj1);\r\n var allMatch = true;\r\n keysObj1.forEach(function (key) {\r\n if (obj1[key] !== obj2[key]) {\r\n allMatch = false;\r\n }\r\n });\r\n return allMatch;\r\n };\r\n return MessageBus;\r\n}());\n\nvar IOConnectCoreFactory = function (userConfig, ext) {\r\n var _a, _b;\r\n var iodesktop = typeof window === \"object\" ? ((_a = window.iodesktop) !== null && _a !== void 0 ? _a : window.glue42gd) : undefined;\r\n var preloadPromise = typeof window === \"object\" ? ((_b = window.gdPreloadPromise) !== null && _b !== void 0 ? _b : Promise.resolve()) : Promise.resolve();\r\n var glueInitTimer = timer(\"glue\");\r\n userConfig = userConfig || {};\r\n ext = ext || {};\r\n var internalConfig = prepareConfig(userConfig, ext, iodesktop);\r\n var _connection;\r\n var _interop;\r\n var _logger;\r\n var _metrics;\r\n var _contexts;\r\n var _bus;\r\n var _allowTrace;\r\n var libs = {};\r\n function registerLib(name, inner, t) {\r\n _allowTrace = _logger.canPublish(\"trace\");\r\n if (_allowTrace) {\r\n _logger.trace(\"registering \".concat(name, \" module\"));\r\n }\r\n var done = function () {\r\n inner.initTime = t.stop();\r\n inner.initEndTime = t.endTime;\r\n inner.marks = t.marks;\r\n if (_allowTrace) {\r\n _logger.trace(\"\".concat(name, \" is ready - \").concat(t.endTime - t.startTime));\r\n }\r\n };\r\n inner.initStartTime = t.startTime;\r\n if (inner.ready) {\r\n inner.ready().then(function () {\r\n done();\r\n });\r\n }\r\n else {\r\n done();\r\n }\r\n if (!Array.isArray(name)) {\r\n name = [name];\r\n }\r\n name.forEach(function (n) {\r\n libs[n] = inner;\r\n IOConnectCoreFactory[n] = inner;\r\n });\r\n }\r\n function setupConnection() {\r\n var initTimer = timer(\"connection\");\r\n _connection = new Connection(internalConfig.connection, _logger.subLogger(\"connection\"));\r\n var authPromise = Promise.resolve(internalConfig.auth);\r\n if (internalConfig.connection && !internalConfig.auth) {\r\n if (iodesktop) {\r\n authPromise = iodesktop.getGWToken()\r\n .then(function (token) {\r\n return {\r\n gatewayToken: token\r\n };\r\n });\r\n }\r\n else if (typeof window !== \"undefined\" && (window === null || window === void 0 ? void 0 : window.glue42electron)) {\r\n if (typeof window.glue42electron.gwToken === \"string\") {\r\n authPromise = Promise.resolve({\r\n gatewayToken: window.glue42electron.gwToken\r\n });\r\n }\r\n }\r\n else {\r\n authPromise = Promise.reject(\"You need to provide auth information\");\r\n }\r\n }\r\n return authPromise\r\n .then(function (authConfig) {\r\n initTimer.mark(\"auth-promise-resolved\");\r\n var authRequest;\r\n if (Object.prototype.toString.call(authConfig) === \"[object Object]\") {\r\n authRequest = authConfig;\r\n }\r\n else {\r\n throw new Error(\"Invalid auth object - \" + JSON.stringify(authConfig));\r\n }\r\n return _connection.login(authRequest);\r\n })\r\n .then(function () {\r\n registerLib(\"connection\", _connection, initTimer);\r\n return internalConfig;\r\n })\r\n .catch(function (e) {\r\n if (_connection) {\r\n _connection.logout();\r\n }\r\n throw e;\r\n });\r\n }\r\n function setupLogger() {\r\n var _a;\r\n var initTimer = timer(\"logger\");\r\n _logger = new Logger(\"\".concat((_a = internalConfig.connection.identity) === null || _a === void 0 ? void 0 : _a.application), undefined, internalConfig.customLogger);\r\n _logger.consoleLevel(internalConfig.logger.console);\r\n _logger.publishLevel(internalConfig.logger.publish);\r\n if (_logger.canPublish(\"debug\")) {\r\n _logger.debug(\"initializing glue...\");\r\n }\r\n registerLib(\"logger\", _logger, initTimer);\r\n return Promise.resolve(undefined);\r\n }\r\n function setupMetrics() {\r\n var _a, _b, _c, _d, _e;\r\n var initTimer = timer(\"metrics\");\r\n var config = internalConfig.metrics;\r\n var metricsPublishingEnabledFunc = iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.getMetricsPublishingEnabled;\r\n var identity = internalConfig.connection.identity;\r\n var canUpdateMetric = metricsPublishingEnabledFunc ? metricsPublishingEnabledFunc : function () { return true; };\r\n var disableAutoAppSystem = (_a = (typeof config !== \"boolean\" && config.disableAutoAppSystem)) !== null && _a !== void 0 ? _a : false;\r\n _metrics = metrics({\r\n connection: config ? _connection : undefined,\r\n logger: _logger.subLogger(\"metrics\"),\r\n canUpdateMetric: canUpdateMetric,\r\n system: \"Glue42\",\r\n service: (_c = (_b = identity === null || identity === void 0 ? void 0 : identity.service) !== null && _b !== void 0 ? _b : iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.applicationName) !== null && _c !== void 0 ? _c : internalConfig.application,\r\n instance: (_e = (_d = identity === null || identity === void 0 ? void 0 : identity.instance) !== null && _d !== void 0 ? _d : identity === null || identity === void 0 ? void 0 : identity.windowId) !== null && _e !== void 0 ? _e : shortid(),\r\n disableAutoAppSystem: disableAutoAppSystem,\r\n pagePerformanceMetrics: typeof config !== \"boolean\" ? config === null || config === void 0 ? void 0 : config.pagePerformanceMetrics : undefined\r\n });\r\n registerLib(\"metrics\", _metrics, initTimer);\r\n return Promise.resolve();\r\n }\r\n function setupInterop() {\r\n var initTimer = timer(\"interop\");\r\n var agmConfig = {\r\n connection: _connection,\r\n logger: _logger.subLogger(\"interop\"),\r\n };\r\n _interop = new Interop(agmConfig);\r\n Logger.Interop = _interop;\r\n registerLib([\"interop\", \"agm\"], _interop, initTimer);\r\n return Promise.resolve();\r\n }\r\n function setupContexts() {\r\n var hasActivities = (internalConfig.activities && _connection.protocolVersion === 3);\r\n var needsContexts = internalConfig.contexts || hasActivities;\r\n if (needsContexts) {\r\n var initTimer = timer(\"contexts\");\r\n _contexts = new ContextsModule({\r\n connection: _connection,\r\n logger: _logger.subLogger(\"contexts\"),\r\n trackAllContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.trackAllContexts : false,\r\n reAnnounceKnownContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.reAnnounceKnownContexts : false\r\n });\r\n registerLib(\"contexts\", _contexts, initTimer);\r\n return _contexts;\r\n }\r\n else {\r\n var replayer = _connection.replayer;\r\n if (replayer) {\r\n replayer.drain(ContextMessageReplaySpec.name);\r\n }\r\n }\r\n }\r\n function setupBus() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var initTimer;\r\n return __generator(this, function (_a) {\r\n if (!internalConfig.bus) {\r\n return [2, Promise.resolve()];\r\n }\r\n initTimer = timer(\"bus\");\r\n _bus = new MessageBus(_connection, _logger.subLogger(\"bus\"));\r\n registerLib(\"bus\", _bus, initTimer);\r\n return [2, Promise.resolve()];\r\n });\r\n });\r\n }\r\n function setupExternalLibs(externalLibs) {\r\n try {\r\n externalLibs.forEach(function (lib) {\r\n setupExternalLib(lib.name, lib.create);\r\n });\r\n return Promise.resolve();\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n function setupExternalLib(name, createCallback) {\r\n var initTimer = timer(name);\r\n var lib = createCallback(libs);\r\n if (lib) {\r\n registerLib(name, lib, initTimer);\r\n }\r\n }\r\n function waitForLibs() {\r\n var libsReadyPromises = Object.keys(libs).map(function (key) {\r\n var lib = libs[key];\r\n return lib.ready ?\r\n lib.ready() : Promise.resolve();\r\n });\r\n return Promise.all(libsReadyPromises);\r\n }\r\n function constructGlueObject() {\r\n var feedbackFunc = function (feedbackInfo) {\r\n if (!_interop) {\r\n return;\r\n }\r\n _interop.invoke(\"T42.ACS.Feedback\", feedbackInfo, \"best\");\r\n };\r\n var info = {\r\n coreVersion: version,\r\n version: internalConfig.version\r\n };\r\n glueInitTimer.stop();\r\n var glue = {\r\n feedback: feedbackFunc,\r\n info: info,\r\n logger: _logger,\r\n interop: _interop,\r\n agm: _interop,\r\n connection: _connection,\r\n metrics: _metrics,\r\n contexts: _contexts,\r\n bus: _bus,\r\n version: internalConfig.version,\r\n userConfig: userConfig,\r\n done: function () {\r\n _logger === null || _logger === void 0 ? void 0 : _logger.info(\"done called by user...\");\r\n return _connection.logout();\r\n }\r\n };\r\n glue.performance = {\r\n get glueVer() {\r\n return internalConfig.version;\r\n },\r\n get glueConfig() {\r\n return JSON.stringify(userConfig);\r\n },\r\n get browser() {\r\n return window.performance.timing.toJSON();\r\n },\r\n get memory() {\r\n return window.performance.memory;\r\n },\r\n get initTimes() {\r\n var all = getAllTimers();\r\n return Object.keys(all).map(function (key) {\r\n var t = all[key];\r\n return {\r\n name: key,\r\n duration: t.endTime - t.startTime,\r\n marks: t.marks,\r\n startTime: t.startTime,\r\n endTime: t.endTime\r\n };\r\n });\r\n }\r\n };\r\n Object.keys(libs).forEach(function (key) {\r\n var lib = libs[key];\r\n glue[key] = lib;\r\n });\r\n glue.config = {};\r\n Object.keys(internalConfig).forEach(function (k) {\r\n glue.config[k] = internalConfig[k];\r\n });\r\n if (ext && ext.extOptions) {\r\n Object.keys(ext.extOptions).forEach(function (k) {\r\n glue.config[k] = ext === null || ext === void 0 ? void 0 : ext.extOptions[k];\r\n });\r\n }\r\n if (ext === null || ext === void 0 ? void 0 : ext.enrichGlue) {\r\n ext.enrichGlue(glue);\r\n }\r\n if (iodesktop && iodesktop.updatePerfData) {\r\n iodesktop.updatePerfData(glue.performance);\r\n }\r\n if (glue.agm) {\r\n var deprecatedDecorator = function (fn, wrong, proper) {\r\n return function () {\r\n glue.logger.warn(\"glue.js - 'glue.agm.\".concat(wrong, \"' method is deprecated, use 'glue.interop.\").concat(proper, \"' instead.\"));\r\n return fn.apply(glue.agm, arguments);\r\n };\r\n };\r\n var agmAny = glue.agm;\r\n agmAny.method_added = deprecatedDecorator(glue.agm.methodAdded, \"method_added\", \"methodAdded\");\r\n agmAny.method_removed = deprecatedDecorator(glue.agm.methodRemoved, \"method_removed\", \"methodRemoved\");\r\n agmAny.server_added = deprecatedDecorator(glue.agm.serverAdded, \"server_added\", \"serverAdded\");\r\n agmAny.server_method_aded = deprecatedDecorator(glue.agm.serverMethodAdded, \"server_method_aded\", \"serverMethodAdded\");\r\n agmAny.server_method_removed = deprecatedDecorator(glue.agm.serverMethodRemoved, \"server_method_removed\", \"serverMethodRemoved\");\r\n }\r\n return glue;\r\n }\r\n function registerInstanceIfNeeded() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var RegisterInstanceMethodName, isMethodAvailable, error_1, typedError;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n RegisterInstanceMethodName = \"T42.ACS.RegisterInstance\";\r\n if (!(Utils.isNode() && typeof process.env._GD_STARTING_CONTEXT_ === \"undefined\" && typeof (userConfig === null || userConfig === void 0 ? void 0 : userConfig.application) !== \"undefined\")) return [3, 4];\r\n isMethodAvailable = _interop.methods({ name: RegisterInstanceMethodName }).length > 0;\r\n if (!isMethodAvailable) return [3, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4, _interop.invoke(RegisterInstanceMethodName, { appName: userConfig === null || userConfig === void 0 ? void 0 : userConfig.application, pid: process.pid })];\r\n case 2:\r\n _a.sent();\r\n return [3, 4];\r\n case 3:\r\n error_1 = _a.sent();\r\n typedError = error_1;\r\n _logger.error(\"Cannot register as an instance: \".concat(JSON.stringify(typedError.message)));\r\n return [3, 4];\r\n case 4: return [2];\r\n }\r\n });\r\n });\r\n }\r\n return preloadPromise\r\n .then(setupLogger)\r\n .then(setupConnection)\r\n .then(function () { return Promise.all([setupMetrics(), setupInterop(), setupContexts(), setupBus()]); })\r\n .then(function () { return _interop.readyPromise; })\r\n .then(function () { return registerInstanceIfNeeded(); })\r\n .then(function () {\r\n return setupExternalLibs(internalConfig.libs || []);\r\n })\r\n .then(waitForLibs)\r\n .then(constructGlueObject)\r\n .catch(function (err) {\r\n return Promise.reject({\r\n err: err,\r\n libs: libs\r\n });\r\n });\r\n};\r\nif (typeof window !== \"undefined\") {\r\n window.IOConnectCore = IOConnectCoreFactory;\r\n}\r\nIOConnectCoreFactory.version = version;\r\nIOConnectCoreFactory.default = IOConnectCoreFactory;\n\nexport { IOConnectCoreFactory as default };\n//# sourceMappingURL=core.es.js.map\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nimport { createFactoryFunction } from \"./web\";\r\nimport createIoConnectCore from \"@interopio/core\";\r\nimport { version } from \"../package.json\";\r\n\r\nconst iOConnectBrowserFactory = createFactoryFunction(createIoConnectCore);\r\n\r\n// attach to window object\r\nif (typeof window !== \"undefined\") {\r\n const windowAny = window as any;\r\n\r\n windowAny.IOBrowser = iOConnectBrowserFactory;\r\n\r\n delete windowAny.GlueCore;\r\n delete windowAny.IOConnectCore;\r\n}\r\n\r\nconst legacyGlobal = (window as any).glue42gd || (window as any).glue42core;\r\nconst ioGlobal = (window as any).iodesktop || (window as any).iobrowser;\r\n\r\nif (!legacyGlobal && !ioGlobal) {\r\n (window as any).iobrowser = { webStarted: false };\r\n}\r\n\r\n(iOConnectBrowserFactory as any).version = version;\r\n\r\nexport default iOConnectBrowserFactory;\r\n"],"names":["ok","err","asPromise","withDefault","withException","map","map2","mapError","andThen","__assign","__rest","isEqual","isJsonArray","isJsonObject","typeString","expectedGot","printPath","prependAt","Decoder","string","number","boolean","anyJson","constant","object","array","optional","oneOf","nonEmptyStringDecoder","nonNegativeNumberDecoder","intentDefinitionDecoder","IoC","operations","createRegistry","lib","CallbackRegistryFactory","PromisePlus","seed","getNextValue","setSeed","randomFromSeed","require$$0","ORIGINAL","alphabet","previousSeed","shuffled","reset","setCharacters","characters","shuffle","getShuffled","lookup","get","alphabet_1","crypto","randomByte","randomByteBrowser","format_browser","random","require$$1","format","require$$2","generate","generate_1","REDUCE_TIME","version","counter","previousSeconds","build","build_1","isShortId","isValid","shortid","__awaiter","createIoConnectCore"],"mappings":"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,EAAE,QAAQ,CAAC;AAC1E,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC;AAC5F,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,KAAK,EAAE;AAC7B,GAAG,OAAO,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACnC,GAAG,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AACpD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,QAAQ,GAAG,cAAc,IAAI,SAAS,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,KAAK,EAAE;AAC5B;AACA;AACA,GAAG,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAC/D,GAAG,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,CAAC;AAC1C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC1B,GAAG,OAAO,OAAO,KAAK,IAAI,QAAQ;AAClC,KAAK,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,gBAAgB,CAAC;AAC/D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC1B,GAAG,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;AAC3B,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;AAC9D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,KAAK,EAAE;AAC9B,GAAG,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;AAC9C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE;AACvB,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzE,EAAE;AACF;AACA;AACA;AACA;AA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"} \ No newline at end of file +{"version":3,"file":"browser.es.js","sources":["../src/config/index.ts","../src/config/checkSingleton.ts","../src/enterprise/index.ts","../node_modules/decoder-validate/dist/index.es5.js","../../utils/dist/utils.es.js","../src/shared/decoders.ts","../src/windows/protocol.ts","../node_modules/callback-registry/lib/index.js","../src/windows/webWindow.ts","../src/shared/systemOperations.ts","../src/shared/promise-plus.ts","../src/windows/controller.ts","../src/communication/constants.ts","../src/communication/bridge.ts","../src/appManager/protocol.ts","../src/appManager/controller.ts","../src/appManager/instance.ts","../src/appManager/application.ts","../src/layouts/protocol.ts","../src/layouts/controller.ts","../src/notifications/protocol.ts","../node_modules/shortid/lib/random/random-from-seed.js","../node_modules/shortid/lib/alphabet.js","../node_modules/shortid/lib/random/random-byte-browser.js","../node_modules/shortid/node_modules/nanoid/format.browser.js","../node_modules/shortid/lib/generate.js","../node_modules/shortid/lib/build.js","../node_modules/shortid/lib/is-valid.js","../node_modules/shortid/lib/index.js","../node_modules/shortid/index.js","../src/notifications/controller.ts","../src/intents/protocol.ts","../src/intents/constants.ts","../src/intents/controller.ts","../src/shared/constants.ts","../src/channels/protocol.ts","../src/channels/controller.ts","../src/system/protocol.ts","../src/system/controller.ts","../src/notifications/notification.ts","../src/extension/decoders.ts","../src/extension/protocol.ts","../src/extension/controller.ts","../src/shared/dispatcher.ts","../src/communication/preferred.ts","../src/intents/legacyHelper.ts","../src/themes/protocol.ts","../src/themes/controller.ts","../src/storage/session.ts","../src/prefs/protocol.ts","../src/prefs/controller.ts","../src/shared/ioc.ts","../src/web.ts","../../core/dist/core.es.js","../src/index.ts"],"sourcesContent":["import { IOConnectBrowser } from \"../../browser\";\nimport { ParsedConfig } from \"../shared/types\";\n\nconst defaultConfig = {\n logger: \"info\",\n gateway: { webPlatform: {} },\n libraries: [],\n exposeAPI: true\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const parseConfig = (config?: IOConnectBrowser.Config): ParsedConfig => {\n const isPlatformInternal = !!(config as any)?.gateway?.webPlatform?.port;\n\n const combined: ParsedConfig = Object.assign({}, defaultConfig, config, { isPlatformInternal });\n\n if (combined.systemLogger) {\n combined.logger = combined.systemLogger.level ?? \"info\";\n }\n\n return combined;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const checkSingleton = (): void => {\n const ioConnectBrowserNamespace = (window as any).glue42core || (window as any).iobrowser;\n\n if (ioConnectBrowserNamespace && ioConnectBrowserNamespace.webStarted) {\n throw new Error(\"IoConnect Browser has already been started for this application.\");\n }\n\n if (!ioConnectBrowserNamespace) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).iobrowser = { webStarted: true };\n return;\n }\n\n ioConnectBrowserNamespace.webStarted = true;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { IOConnectDesktop } from \"@interopio/desktop\";\nimport { IOConnectBrowser } from \"../../browser\";\n\nexport const enterprise = (config?: IOConnectBrowser.Config): IOConnectDesktop.API => {\n const enterpriseConfig = {\n windows: true,\n layouts: \"full\",\n appManager: \"full\",\n channels: true,\n libraries: config?.libraries ?? [],\n logger: config?.systemLogger?.level ?? \"warn\"\n };\n\n const injectedFactory = (window as any).IODesktop || (window as any).Glue;\n\n return injectedFactory(enterpriseConfig);\n};","/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Typeguard for `Ok`.\r\n */\r\nvar isOk = function (r) { return r.ok === true; };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Typeguard for `Err`.\r\n */\r\nvar isErr = function (r) { return r.ok === false; };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Given an array of `Result`s, return the successful values.\r\n */\r\nvar successes = function (results) {\r\n return results.reduce(function (acc, r) { return (r.ok === true ? acc.concat(r.result) : acc); }, []);\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n\r\nvar result = Object.freeze({\r\n\tok: ok,\r\n\tisOk: isOk,\r\n\terr: err,\r\n\tisErr: isErr,\r\n\tasPromise: asPromise,\r\n\twithDefault: withDefault,\r\n\twithException: withException,\r\n\tsuccesses: successes,\r\n\tmap: map,\r\n\tmap2: map2,\r\n\tmapError: mapError,\r\n\tandThen: andThen\r\n});\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/**\r\n * Type guard for `DecoderError`. One use case of the type guard is in the\r\n * `catch` of a promise. Typescript types the error argument of `catch` as\r\n * `any`, so when dealing with a decoder as a promise you may need to\r\n * distinguish between a `DecoderError` and an error string.\r\n */\r\nvar isDecoderError = function (a) {\r\n return a.kind === 'DecoderError' && typeof a.at === 'string' && typeof a.message === 'string';\r\n};\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nvar unknownJson = Decoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nvar tuple = Decoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nvar union = Decoder.union;\r\n/** See `Decoder.intersection` */\r\nvar intersection = Decoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nvar withDefault$1 = Decoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nvar valueAt = Decoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nvar succeed = Decoder.succeed;\r\n/** See `Decoder.fail` */\r\nvar fail = Decoder.fail;\r\n/** See `Decoder.lazy` */\r\nvar lazy = Decoder.lazy;\r\n\r\nexport { result as Result, Decoder, isDecoderError, string, number, boolean, anyJson, unknownJson, constant, object, array, tuple, dict, optional, oneOf, union, intersection, withDefault$1 as withDefault, valueAt, succeed, fail, lazy };\r\n//# sourceMappingURL=index.es5.js.map\r\n","const connectBrowserAppProps = [\"name\", \"title\", \"version\", \"customProperties\", \"icon\", \"caption\", \"type\"];\nconst fdc3v2AppProps = [\"appId\", \"name\", \"type\", \"details\", \"version\", \"title\", \"tooltip\", \"lang\", \"description\", \"categories\", \"icons\", \"screenshots\", \"contactEmail\", \"moreInfo\", \"publisher\", \"customConfig\", \"hostManifests\", \"interop\", \"localizedVersions\"];\n\n/**\r\n * Wraps values in an `Ok` type.\r\n *\r\n * Example: `ok(5) // => {ok: true, result: 5}`\r\n */\r\nvar ok = function (result) { return ({ ok: true, result: result }); };\r\n/**\r\n * Wraps errors in an `Err` type.\r\n *\r\n * Example: `err('on fire') // => {ok: false, error: 'on fire'}`\r\n */\r\nvar err = function (error) { return ({ ok: false, error: error }); };\r\n/**\r\n * Create a `Promise` that either resolves with the result of `Ok` or rejects\r\n * with the error of `Err`.\r\n */\r\nvar asPromise = function (r) {\r\n return r.ok === true ? Promise.resolve(r.result) : Promise.reject(r.error);\r\n};\r\n/**\r\n * Unwraps a `Result` and returns either the result of an `Ok`, or\r\n * `defaultValue`.\r\n *\r\n * Example:\r\n * ```\r\n * Result.withDefault(5, number().run(json))\r\n * ```\r\n *\r\n * It would be nice if `Decoder` had an instance method that mirrored this\r\n * function. Such a method would look something like this:\r\n * ```\r\n * class Decoder {\r\n * runWithDefault = (defaultValue: A, json: any): A =>\r\n * Result.withDefault(defaultValue, this.run(json));\r\n * }\r\n *\r\n * number().runWithDefault(5, json)\r\n * ```\r\n * Unfortunately, the type of `defaultValue: A` on the method causes issues\r\n * with type inference on the `object` decoder in some situations. While these\r\n * inference issues can be solved by providing the optional type argument for\r\n * `object`s, the extra trouble and confusion doesn't seem worth it.\r\n */\r\nvar withDefault = function (defaultValue, r) {\r\n return r.ok === true ? r.result : defaultValue;\r\n};\r\n/**\r\n * Return the successful result, or throw an error.\r\n */\r\nvar withException = function (r) {\r\n if (r.ok === true) {\r\n return r.result;\r\n }\r\n else {\r\n throw r.error;\r\n }\r\n};\r\n/**\r\n * Apply `f` to the result of an `Ok`, or pass the error through.\r\n */\r\nvar map = function (f, r) {\r\n return r.ok === true ? ok(f(r.result)) : r;\r\n};\r\n/**\r\n * Apply `f` to the result of two `Ok`s, or pass an error through. If both\r\n * `Result`s are errors then the first one is returned.\r\n */\r\nvar map2 = function (f, ar, br) {\r\n return ar.ok === false ? ar :\r\n br.ok === false ? br :\r\n ok(f(ar.result, br.result));\r\n};\r\n/**\r\n * Apply `f` to the error of an `Err`, or pass the success through.\r\n */\r\nvar mapError = function (f, r) {\r\n return r.ok === true ? r : err(f(r.error));\r\n};\r\n/**\r\n * Chain together a sequence of computations that may fail, similar to a\r\n * `Promise`. If the first computation fails then the error will propagate\r\n * through. If it succeeds, then `f` will be applied to the value, returning a\r\n * new `Result`.\r\n */\r\nvar andThen = function (f, r) {\r\n return r.ok === true ? f(r.result) : r;\r\n};\r\n\r\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\n\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction isEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n if (a === null && b === null) {\r\n return true;\r\n }\r\n if (typeof (a) !== typeof (b)) {\r\n return false;\r\n }\r\n if (typeof (a) === 'object') {\r\n // Array\r\n if (Array.isArray(a)) {\r\n if (!Array.isArray(b)) {\r\n return false;\r\n }\r\n if (a.length !== b.length) {\r\n return false;\r\n }\r\n for (var i = 0; i < a.length; i++) {\r\n if (!isEqual(a[i], b[i])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n // Hash table\r\n var keys = Object.keys(a);\r\n if (keys.length !== Object.keys(b).length) {\r\n return false;\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!b.hasOwnProperty(keys[i])) {\r\n return false;\r\n }\r\n if (!isEqual(a[keys[i]], b[keys[i]])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n/*\r\n * Helpers\r\n */\r\nvar isJsonArray = function (json) { return Array.isArray(json); };\r\nvar isJsonObject = function (json) {\r\n return typeof json === 'object' && json !== null && !isJsonArray(json);\r\n};\r\nvar typeString = function (json) {\r\n switch (typeof json) {\r\n case 'string':\r\n return 'a string';\r\n case 'number':\r\n return 'a number';\r\n case 'boolean':\r\n return 'a boolean';\r\n case 'undefined':\r\n return 'undefined';\r\n case 'object':\r\n if (json instanceof Array) {\r\n return 'an array';\r\n }\r\n else if (json === null) {\r\n return 'null';\r\n }\r\n else {\r\n return 'an object';\r\n }\r\n default:\r\n return JSON.stringify(json);\r\n }\r\n};\r\nvar expectedGot = function (expected, got) {\r\n return \"expected \" + expected + \", got \" + typeString(got);\r\n};\r\nvar printPath = function (paths) {\r\n return paths.map(function (path) { return (typeof path === 'string' ? \".\" + path : \"[\" + path + \"]\"); }).join('');\r\n};\r\nvar prependAt = function (newAt, _a) {\r\n var at = _a.at, rest = __rest(_a, [\"at\"]);\r\n return (__assign({ at: newAt + (at || '') }, rest));\r\n};\r\n/**\r\n * Decoders transform json objects with unknown structure into known and\r\n * verified forms. You can create objects of type `Decoder` with either the\r\n * primitive decoder functions, such as `boolean()` and `string()`, or by\r\n * applying higher-order decoders to the primitives, such as `array(boolean())`\r\n * or `dict(string())`.\r\n *\r\n * Each of the decoder functions are available both as a static method on\r\n * `Decoder` and as a function alias -- for example the string decoder is\r\n * defined at `Decoder.string()`, but is also aliased to `string()`. Using the\r\n * function aliases exported with the library is recommended.\r\n *\r\n * `Decoder` exposes a number of 'run' methods, which all decode json in the\r\n * same way, but communicate success and failure in different ways. The `map`\r\n * and `andThen` methods modify decoders without having to call a 'run' method.\r\n *\r\n * Alternatively, the main decoder `run()` method returns an object of type\r\n * `Result`. This library provides a number of helper\r\n * functions for dealing with the `Result` type, so you can do all the same\r\n * things with a `Result` as with the decoder methods.\r\n */\r\nvar Decoder = /** @class */ (function () {\r\n /**\r\n * The Decoder class constructor is kept private to separate the internal\r\n * `decode` function from the external `run` function. The distinction\r\n * between the two functions is that `decode` returns a\r\n * `Partial` on failure, which contains an unfinished error\r\n * report. When `run` is called on a decoder, the relevant series of `decode`\r\n * calls is made, and then on failure the resulting `Partial`\r\n * is turned into a `DecoderError` by filling in the missing information.\r\n *\r\n * While hiding the constructor may seem restrictive, leveraging the\r\n * provided decoder combinators and helper functions such as\r\n * `andThen` and `map` should be enough to build specialized decoders as\r\n * needed.\r\n */\r\n function Decoder(decode) {\r\n var _this = this;\r\n this.decode = decode;\r\n /**\r\n * Run the decoder and return a `Result` with either the decoded value or a\r\n * `DecoderError` containing the json input, the location of the error, and\r\n * the error message.\r\n *\r\n * Examples:\r\n * ```\r\n * number().run(12)\r\n * // => {ok: true, result: 12}\r\n *\r\n * string().run(9001)\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {\r\n * // kind: 'DecoderError',\r\n * // input: 9001,\r\n * // at: 'input',\r\n * // message: 'expected a string, got 9001'\r\n * // }\r\n * // }\r\n * ```\r\n */\r\n this.run = function (json) {\r\n return mapError(function (error) { return ({\r\n kind: 'DecoderError',\r\n input: json,\r\n at: 'input' + (error.at || ''),\r\n message: error.message || ''\r\n }); }, _this.decode(json));\r\n };\r\n /**\r\n * Run the decoder as a `Promise`.\r\n */\r\n this.runPromise = function (json) { return asPromise(_this.run(json)); };\r\n /**\r\n * Run the decoder and return the value on success, or throw an exception\r\n * with a formatted error string.\r\n */\r\n this.runWithException = function (json) { return withException(_this.run(json)); };\r\n /**\r\n * Construct a new decoder that applies a transformation to the decoded\r\n * result. If the decoder succeeds then `f` will be applied to the value. If\r\n * it fails the error will propagated through.\r\n *\r\n * Example:\r\n * ```\r\n * number().map(x => x * 5).run(10)\r\n * // => {ok: true, result: 50}\r\n * ```\r\n */\r\n this.map = function (f) {\r\n return new Decoder(function (json) { return map(f, _this.decode(json)); });\r\n };\r\n /**\r\n * Chain together a sequence of decoders. The first decoder will run, and\r\n * then the function will determine what decoder to run second. If the result\r\n * of the first decoder succeeds then `f` will be applied to the decoded\r\n * value. If it fails the error will propagate through.\r\n *\r\n * This is a very powerful method -- it can act as both the `map` and `where`\r\n * methods, can improve error messages for edge cases, and can be used to\r\n * make a decoder for custom types.\r\n *\r\n * Example of adding an error message:\r\n * ```\r\n * const versionDecoder = valueAt(['version'], number());\r\n * const infoDecoder3 = object({a: boolean()});\r\n *\r\n * const decoder = versionDecoder.andThen(version => {\r\n * switch (version) {\r\n * case 3:\r\n * return infoDecoder3;\r\n * default:\r\n * return fail(`Unable to decode info, version ${version} is not supported.`);\r\n * }\r\n * });\r\n *\r\n * decoder.run({version: 3, a: true})\r\n * // => {ok: true, result: {a: true}}\r\n *\r\n * decoder.run({version: 5, x: 'abc'})\r\n * // =>\r\n * // {\r\n * // ok: false,\r\n * // error: {... message: 'Unable to decode info, version 5 is not supported.'}\r\n * // }\r\n * ```\r\n *\r\n * Example of decoding a custom type:\r\n * ```\r\n * // nominal type for arrays with a length of at least one\r\n * type NonEmptyArray = T[] & { __nonEmptyArrayBrand__: void };\r\n *\r\n * const nonEmptyArrayDecoder = (values: Decoder): Decoder> =>\r\n * array(values).andThen(arr =>\r\n * arr.length > 0\r\n * ? succeed(createNonEmptyArray(arr))\r\n * : fail(`expected a non-empty array, got an empty array`)\r\n * );\r\n * ```\r\n */\r\n this.andThen = function (f) {\r\n return new Decoder(function (json) {\r\n return andThen(function (value) { return f(value).decode(json); }, _this.decode(json));\r\n });\r\n };\r\n /**\r\n * Add constraints to a decoder _without_ changing the resulting type. The\r\n * `test` argument is a predicate function which returns true for valid\r\n * inputs. When `test` fails on an input, the decoder fails with the given\r\n * `errorMessage`.\r\n *\r\n * ```\r\n * const chars = (length: number): Decoder =>\r\n * string().where(\r\n * (s: string) => s.length === length,\r\n * `expected a string of length ${length}`\r\n * );\r\n *\r\n * chars(5).run('12345')\r\n * // => {ok: true, result: '12345'}\r\n *\r\n * chars(2).run('HELLO')\r\n * // => {ok: false, error: {... message: 'expected a string of length 2'}}\r\n *\r\n * chars(12).run(true)\r\n * // => {ok: false, error: {... message: 'expected a string, got a boolean'}}\r\n * ```\r\n */\r\n this.where = function (test, errorMessage) {\r\n return _this.andThen(function (value) { return (test(value) ? Decoder.succeed(value) : Decoder.fail(errorMessage)); });\r\n };\r\n }\r\n /**\r\n * Decoder primitive that validates strings, and fails on all other input.\r\n */\r\n Decoder.string = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'string'\r\n ? ok(json)\r\n : err({ message: expectedGot('a string', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates numbers, and fails on all other input.\r\n */\r\n Decoder.number = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'number'\r\n ? ok(json)\r\n : err({ message: expectedGot('a number', json) });\r\n });\r\n };\r\n /**\r\n * Decoder primitive that validates booleans, and fails on all other input.\r\n */\r\n Decoder.boolean = function () {\r\n return new Decoder(function (json) {\r\n return typeof json === 'boolean'\r\n ? ok(json)\r\n : err({ message: expectedGot('a boolean', json) });\r\n });\r\n };\r\n Decoder.constant = function (value) {\r\n return new Decoder(function (json) {\r\n return isEqual(json, value)\r\n ? ok(value)\r\n : err({ message: \"expected \" + JSON.stringify(value) + \", got \" + JSON.stringify(json) });\r\n });\r\n };\r\n Decoder.object = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json) && decoders) {\r\n var obj = {};\r\n for (var key in decoders) {\r\n if (decoders.hasOwnProperty(key)) {\r\n var r = decoders[key].decode(json[key]);\r\n if (r.ok === true) {\r\n // tslint:disable-next-line:strict-type-predicates\r\n if (r.result !== undefined) {\r\n obj[key] = r.result;\r\n }\r\n }\r\n else if (json[key] === undefined) {\r\n return err({ message: \"the key '\" + key + \"' is required but was not present\" });\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else if (isJsonObject(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n Decoder.array = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json) && decoder) {\r\n var decodeValue_1 = function (v, i) {\r\n return mapError(function (err$$1) { return prependAt(\"[\" + i + \"]\", err$$1); }, decoder.decode(v));\r\n };\r\n return json.reduce(function (acc, v, i) {\r\n return map2(function (arr, result) { return arr.concat([result]); }, acc, decodeValue_1(v, i));\r\n }, ok([]));\r\n }\r\n else if (isJsonArray(json)) {\r\n return ok(json);\r\n }\r\n else {\r\n return err({ message: expectedGot('an array', json) });\r\n }\r\n });\r\n };\r\n Decoder.tuple = function (decoders) {\r\n return new Decoder(function (json) {\r\n if (isJsonArray(json)) {\r\n if (json.length !== decoders.length) {\r\n return err({\r\n message: \"expected a tuple of length \" + decoders.length + \", got one of length \" + json.length\r\n });\r\n }\r\n var result = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var nth = decoders[i].decode(json[i]);\r\n if (nth.ok) {\r\n result[i] = nth.result;\r\n }\r\n else {\r\n return err(prependAt(\"[\" + i + \"]\", nth.error));\r\n }\r\n }\r\n return ok(result);\r\n }\r\n else {\r\n return err({ message: expectedGot(\"a tuple of length \" + decoders.length, json) });\r\n }\r\n });\r\n };\r\n Decoder.union = function (ad, bd) {\r\n var decoders = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n decoders[_i - 2] = arguments[_i];\r\n }\r\n return Decoder.oneOf.apply(Decoder, [ad, bd].concat(decoders));\r\n };\r\n Decoder.intersection = function (ad, bd) {\r\n var ds = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n ds[_i - 2] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n return [ad, bd].concat(ds).reduce(function (acc, decoder) { return map2(Object.assign, acc, decoder.decode(json)); }, ok({}));\r\n });\r\n };\r\n /**\r\n * Escape hatch to bypass validation. Always succeeds and types the result as\r\n * `any`. Useful for defining decoders incrementally, particularly for\r\n * complex objects.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * name: string;\r\n * complexUserData: ComplexType;\r\n * }\r\n *\r\n * const userDecoder: Decoder = object({\r\n * name: string(),\r\n * complexUserData: anyJson()\r\n * });\r\n * ```\r\n */\r\n Decoder.anyJson = function () { return new Decoder(function (json) { return ok(json); }); };\r\n /**\r\n * Decoder identity function which always succeeds and types the result as\r\n * `unknown`.\r\n */\r\n Decoder.unknownJson = function () {\r\n return new Decoder(function (json) { return ok(json); });\r\n };\r\n /**\r\n * Decoder for json objects where the keys are unknown strings, but the values\r\n * should all be of the same type.\r\n *\r\n * Example:\r\n * ```\r\n * dict(number()).run({chocolate: 12, vanilla: 10, mint: 37});\r\n * // => {ok: true, result: {chocolate: 12, vanilla: 10, mint: 37}}\r\n * ```\r\n */\r\n Decoder.dict = function (decoder) {\r\n return new Decoder(function (json) {\r\n if (isJsonObject(json)) {\r\n var obj = {};\r\n for (var key in json) {\r\n if (json.hasOwnProperty(key)) {\r\n var r = decoder.decode(json[key]);\r\n if (r.ok === true) {\r\n obj[key] = r.result;\r\n }\r\n else {\r\n return err(prependAt(\".\" + key, r.error));\r\n }\r\n }\r\n }\r\n return ok(obj);\r\n }\r\n else {\r\n return err({ message: expectedGot('an object', json) });\r\n }\r\n });\r\n };\r\n /**\r\n * Decoder for values that may be `undefined`. This is primarily helpful for\r\n * decoding interfaces with optional fields.\r\n *\r\n * Example:\r\n * ```\r\n * interface User {\r\n * id: number;\r\n * isOwner?: boolean;\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * id: number(),\r\n * isOwner: optional(boolean())\r\n * });\r\n * ```\r\n */\r\n Decoder.optional = function (decoder) {\r\n return new Decoder(function (json) { return (json === undefined || json === null ? ok(undefined) : decoder.decode(json)); });\r\n };\r\n /**\r\n * Decoder that attempts to run each decoder in `decoders` and either succeeds\r\n * with the first successful decoder, or fails after all decoders have failed.\r\n *\r\n * Note that `oneOf` expects the decoders to all have the same return type,\r\n * while `union` creates a decoder for the union type of all the input\r\n * decoders.\r\n *\r\n * Examples:\r\n * ```\r\n * oneOf(string(), number().map(String))\r\n * oneOf(constant('start'), constant('stop'), succeed('unknown'))\r\n * ```\r\n */\r\n Decoder.oneOf = function () {\r\n var decoders = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n decoders[_i] = arguments[_i];\r\n }\r\n return new Decoder(function (json) {\r\n var errors = [];\r\n for (var i = 0; i < decoders.length; i++) {\r\n var r = decoders[i].decode(json);\r\n if (r.ok === true) {\r\n return r;\r\n }\r\n else {\r\n errors[i] = r.error;\r\n }\r\n }\r\n var errorsList = errors\r\n .map(function (error) { return \"at error\" + (error.at || '') + \": \" + error.message; })\r\n .join('\", \"');\r\n return err({\r\n message: \"expected a value matching one of the decoders, got the errors [\\\"\" + errorsList + \"\\\"]\"\r\n });\r\n });\r\n };\r\n /**\r\n * Decoder that always succeeds with either the decoded value, or a fallback\r\n * default value.\r\n */\r\n Decoder.withDefault = function (defaultValue, decoder) {\r\n return new Decoder(function (json) {\r\n return ok(withDefault(defaultValue, decoder.decode(json)));\r\n });\r\n };\r\n /**\r\n * Decoder that pulls a specific field out of a json structure, instead of\r\n * decoding and returning the full structure. The `paths` array describes the\r\n * object keys and array indices to traverse, so that values can be pulled out\r\n * of a nested structure.\r\n *\r\n * Example:\r\n * ```\r\n * const decoder = valueAt(['a', 'b', 0], string());\r\n *\r\n * decoder.run({a: {b: ['surprise!']}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * decoder.run({a: {x: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b[0]' message: 'path does not exist'}}\r\n * ```\r\n *\r\n * Note that the `decoder` is ran on the value found at the last key in the\r\n * path, even if the last key is not found. This allows the `optional`\r\n * decoder to succeed when appropriate.\r\n * ```\r\n * const optionalDecoder = valueAt(['a', 'b', 'c'], optional(string()));\r\n *\r\n * optionalDecoder.run({a: {b: {c: 'surprise!'}}})\r\n * // => {ok: true, result: 'surprise!'}\r\n *\r\n * optionalDecoder.run({a: {b: 'cats'}})\r\n * // => {ok: false, error: {... at: 'input.a.b.c' message: 'expected an object, got \"cats\"'}\r\n *\r\n * optionalDecoder.run({a: {b: {z: 1}}})\r\n * // => {ok: true, result: undefined}\r\n * ```\r\n */\r\n Decoder.valueAt = function (paths, decoder) {\r\n return new Decoder(function (json) {\r\n var jsonAtPath = json;\r\n for (var i = 0; i < paths.length; i++) {\r\n if (jsonAtPath === undefined) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: 'path does not exist'\r\n });\r\n }\r\n else if (typeof paths[i] === 'string' && !isJsonObject(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an object', jsonAtPath)\r\n });\r\n }\r\n else if (typeof paths[i] === 'number' && !isJsonArray(jsonAtPath)) {\r\n return err({\r\n at: printPath(paths.slice(0, i + 1)),\r\n message: expectedGot('an array', jsonAtPath)\r\n });\r\n }\r\n else {\r\n jsonAtPath = jsonAtPath[paths[i]];\r\n }\r\n }\r\n return mapError(function (error) {\r\n return jsonAtPath === undefined\r\n ? { at: printPath(paths), message: 'path does not exist' }\r\n : prependAt(printPath(paths), error);\r\n }, decoder.decode(jsonAtPath));\r\n });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always succeeds with `fixedValue`.\r\n */\r\n Decoder.succeed = function (fixedValue) {\r\n return new Decoder(function (json) { return ok(fixedValue); });\r\n };\r\n /**\r\n * Decoder that ignores the input json and always fails with `errorMessage`.\r\n */\r\n Decoder.fail = function (errorMessage) {\r\n return new Decoder(function (json) { return err({ message: errorMessage }); });\r\n };\r\n /**\r\n * Decoder that allows for validating recursive data structures. Unlike with\r\n * functions, decoders assigned to variables can't reference themselves\r\n * before they are fully defined. We can avoid prematurely referencing the\r\n * decoder by wrapping it in a function that won't be called until use, at\r\n * which point the decoder has been defined.\r\n *\r\n * Example:\r\n * ```\r\n * interface Comment {\r\n * msg: string;\r\n * replies: Comment[];\r\n * }\r\n *\r\n * const decoder: Decoder = object({\r\n * msg: string(),\r\n * replies: lazy(() => array(decoder))\r\n * });\r\n * ```\r\n */\r\n Decoder.lazy = function (mkDecoder) {\r\n return new Decoder(function (json) { return mkDecoder().decode(json); });\r\n };\r\n return Decoder;\r\n}());\r\n\r\n/* tslint:disable:variable-name */\r\n/** See `Decoder.string` */\r\nvar string = Decoder.string;\r\n/** See `Decoder.number` */\r\nvar number = Decoder.number;\r\n/** See `Decoder.boolean` */\r\nvar boolean = Decoder.boolean;\r\n/** See `Decoder.anyJson` */\r\nvar anyJson = Decoder.anyJson;\r\n/** See `Decoder.unknownJson` */\r\nDecoder.unknownJson;\r\n/** See `Decoder.constant` */\r\nvar constant = Decoder.constant;\r\n/** See `Decoder.object` */\r\nvar object = Decoder.object;\r\n/** See `Decoder.array` */\r\nvar array = Decoder.array;\r\n/** See `Decoder.tuple` */\r\nDecoder.tuple;\r\n/** See `Decoder.dict` */\r\nvar dict = Decoder.dict;\r\n/** See `Decoder.optional` */\r\nvar optional = Decoder.optional;\r\n/** See `Decoder.oneOf` */\r\nvar oneOf = Decoder.oneOf;\r\n/** See `Decoder.union` */\r\nDecoder.union;\r\n/** See `Decoder.intersection` */\r\nDecoder.intersection;\r\n/** See `Decoder.withDefault` */\r\nDecoder.withDefault;\r\n/** See `Decoder.valueAt` */\r\nDecoder.valueAt;\r\n/** See `Decoder.succeed` */\r\nDecoder.succeed;\r\n/** See `Decoder.fail` */\r\nDecoder.fail;\r\n/** See `Decoder.lazy` */\r\nDecoder.lazy;\n\nconst nonEmptyStringDecoder = string().where((s) => s.length > 0, \"Expected a non-empty string\");\nconst nonNegativeNumberDecoder = number().where((num) => num >= 0, \"Expected a non-negative number\");\n\nconst intentDefinitionDecoder = object({\n name: nonEmptyStringDecoder,\n displayName: optional(string()),\n contexts: optional(array(string())),\n customConfig: optional(object())\n});\nconst v2TypeDecoder = oneOf(constant(\"web\"), constant(\"native\"), constant(\"citrix\"), constant(\"onlineNative\"), constant(\"other\"));\nconst v2DetailsDecoder = object({\n url: nonEmptyStringDecoder\n});\nconst v2IconDecoder = object({\n src: nonEmptyStringDecoder,\n size: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder)\n});\nconst v2ScreenshotDecoder = object({\n src: nonEmptyStringDecoder,\n size: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder),\n label: optional(nonEmptyStringDecoder)\n});\nconst v2ListensForIntentDecoder = object({\n contexts: array(nonEmptyStringDecoder),\n displayName: optional(nonEmptyStringDecoder),\n resultType: optional(nonEmptyStringDecoder),\n customConfig: optional(anyJson())\n});\nconst v2IntentsDecoder = object({\n listensFor: optional(dict(v2ListensForIntentDecoder)),\n raises: optional(dict(array(nonEmptyStringDecoder)))\n});\nconst v2UserChannelDecoder = object({\n broadcasts: optional(array(nonEmptyStringDecoder)),\n listensFor: optional(array(nonEmptyStringDecoder))\n});\nconst v2AppChannelDecoder = object({\n name: nonEmptyStringDecoder,\n description: optional(nonEmptyStringDecoder),\n broadcasts: optional(array(nonEmptyStringDecoder)),\n listensFor: optional(array(nonEmptyStringDecoder))\n});\nconst v2InteropDecoder = object({\n intents: optional(v2IntentsDecoder),\n userChannels: optional(v2UserChannelDecoder),\n appChannels: optional(array(v2AppChannelDecoder))\n});\nconst glue42ApplicationDetailsDecoder = object({\n url: nonEmptyStringDecoder,\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n});\nconst glue42HostManifestsBrowserDecoder = object({\n name: optional(nonEmptyStringDecoder),\n type: optional(nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\")),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n customProperties: optional(anyJson()),\n icon: optional(string()),\n caption: optional(string()),\n details: optional(glue42ApplicationDetailsDecoder),\n intents: optional(array(intentDefinitionDecoder)),\n hidden: optional(boolean())\n});\nconst hostManifestsBrowserDecoder = oneOf(object({\n \"Glue42\": oneOf(glue42HostManifestsBrowserDecoder, anyJson())\n}), anyJson());\nconst v1DefinitionDecoder = object({\n name: nonEmptyStringDecoder,\n appId: nonEmptyStringDecoder,\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n manifest: nonEmptyStringDecoder,\n manifestType: nonEmptyStringDecoder,\n tooltip: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n images: optional(array(object({ url: optional(nonEmptyStringDecoder) }))),\n icons: optional(array(object({ icon: optional(nonEmptyStringDecoder) }))),\n customConfig: anyJson(),\n intents: optional(array(intentDefinitionDecoder))\n});\nconst v2LocalizedDefinitionDecoder = object({\n appId: optional(nonEmptyStringDecoder),\n name: optional(nonEmptyStringDecoder),\n details: optional(v2DetailsDecoder),\n version: optional(nonEmptyStringDecoder),\n title: optional(nonEmptyStringDecoder),\n tooltip: optional(nonEmptyStringDecoder),\n lang: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n categories: optional(array(nonEmptyStringDecoder)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n moreInfo: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder)\n});\nconst v2DefinitionDecoder = object({\n appId: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder,\n type: v2TypeDecoder,\n details: v2DetailsDecoder,\n version: optional(nonEmptyStringDecoder),\n title: optional(nonEmptyStringDecoder),\n tooltip: optional(nonEmptyStringDecoder),\n lang: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n categories: optional(array(nonEmptyStringDecoder)),\n icons: optional(array(v2IconDecoder)),\n screenshots: optional(array(v2ScreenshotDecoder)),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n moreInfo: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n customConfig: optional(array(anyJson())),\n hostManifests: optional(hostManifestsBrowserDecoder),\n interop: optional(v2InteropDecoder),\n localizedVersions: optional(dict(v2LocalizedDefinitionDecoder))\n});\nconst allDefinitionsDecoder = oneOf(v1DefinitionDecoder, v2DefinitionDecoder);\n\nconst parseDecoderErrorToStringMessage = (error) => {\n return `${error.kind} at ${error.at}: ${JSON.stringify(error.input)}. Reason - ${error.message}`;\n};\n\nclass FDC3Service {\n constructor() {\n this.fdc3ToDesktopDefinitionType = {\n web: \"window\",\n native: \"exe\",\n citrix: \"citrix\",\n onlineNative: \"clickonce\",\n other: \"window\"\n };\n }\n toApi() {\n return {\n isFdc3Definition: this.isFdc3Definition.bind(this),\n parseToBrowserBaseAppData: this.parseToBrowserBaseAppData.bind(this),\n parseToDesktopAppConfig: this.parseToDesktopAppConfig.bind(this)\n };\n }\n isFdc3Definition(definition) {\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n return { isFdc3: false, reason: parseDecoderErrorToStringMessage(decodeRes.error) };\n }\n if (definition.appId && definition.details) {\n return { isFdc3: true, version: \"2.0\" };\n }\n if (definition.manifest) {\n return { isFdc3: true, version: \"1.2\" };\n }\n return { isFdc3: false, reason: \"The passed definition is not FDC3\" };\n }\n parseToBrowserBaseAppData(definition) {\n var _a;\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n const userProperties = this.getUserPropertiesFromDefinition(definition, version);\n const createOptions = { url: this.getUrl(definition, version) };\n let baseApplicationData = {\n name: definition.appId,\n type: \"window\",\n createOptions,\n userProperties: Object.assign(Object.assign({}, userProperties), { intents: version === \"1.2\"\n ? userProperties.intents\n : this.getIntentsFromV2AppDefinition(definition), details: createOptions }),\n title: definition.title,\n version: definition.version,\n icon: this.getIconFromDefinition(definition, version),\n caption: definition.description,\n fdc3: version === \"2.0\" ? Object.assign(Object.assign({}, definition), { definitionVersion: \"2.0\" }) : undefined,\n };\n if ((_a = definition.hostManifests) === null || _a === void 0 ? void 0 : _a[\"Glue42\"]) {\n const decodeRes = glue42HostManifestsBrowserDecoder.run(definition.hostManifests[\"Glue42\"]);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n if (!Object.keys(decodeRes.result).length) {\n throw new Error(\"Invalid 'hostManifests['Glue42]' key\");\n }\n baseApplicationData = this.mergeBaseAppDataWithGlueManifest(baseApplicationData, decodeRes.result);\n }\n return baseApplicationData;\n }\n parseToDesktopAppConfig(definition) {\n var _a, _b, _c;\n const { isFdc3, version } = this.isFdc3Definition(definition);\n if (!isFdc3) {\n throw new Error(\"The passed definition is not FDC3\");\n }\n const decodeRes = allDefinitionsDecoder.run(definition);\n if (!decodeRes.ok) {\n throw new Error(`Invalid FDC3 ${version} definition. Error: ${parseDecoderErrorToStringMessage(decodeRes.error)}`);\n }\n if (version === \"1.2\") {\n const fdc3v1Definition = definition;\n return {\n name: fdc3v1Definition.appId,\n type: \"window\",\n details: {\n url: this.getUrl(definition, version)\n },\n version: fdc3v1Definition.version,\n title: fdc3v1Definition.title,\n tooltip: fdc3v1Definition.tooltip,\n caption: fdc3v1Definition.description,\n icon: (_a = fdc3v1Definition.icons) === null || _a === void 0 ? void 0 : _a[0].icon,\n intents: fdc3v1Definition.intents,\n customProperties: {\n manifestType: fdc3v1Definition.manifestType,\n images: fdc3v1Definition.images,\n contactEmail: fdc3v1Definition.contactEmail,\n supportEmail: fdc3v1Definition.supportEmail,\n publisher: fdc3v1Definition.publisher,\n icons: fdc3v1Definition.icons,\n customConfig: fdc3v1Definition.customConfig\n }\n };\n }\n const fdc3v2Definition = definition;\n let desktopDefinition = {\n name: fdc3v2Definition.appId,\n type: this.fdc3ToDesktopDefinitionType[fdc3v2Definition.type],\n details: fdc3v2Definition.details,\n version: fdc3v2Definition.version,\n title: fdc3v2Definition.title,\n tooltip: fdc3v2Definition.tooltip,\n caption: fdc3v2Definition.description,\n icon: this.getIconFromDefinition(fdc3v2Definition, \"2.0\"),\n intents: this.getIntentsFromV2AppDefinition(fdc3v2Definition),\n fdc3: Object.assign(Object.assign({}, fdc3v2Definition), { definitionVersion: \"2.0\" })\n };\n if ((_b = fdc3v2Definition.hostManifests) === null || _b === void 0 ? void 0 : _b[\"Glue42\"]) {\n if (typeof fdc3v2Definition.hostManifests[\"Glue42\"] !== \"object\" || Array.isArray(fdc3v2Definition.hostManifests[\"Glue42\"])) {\n throw new Error(\"Invalid 'hostManifests['Glue42]' key\");\n }\n desktopDefinition = this.mergeDesktopConfigWithGlueManifest(desktopDefinition, (_c = fdc3v2Definition.hostManifests) === null || _c === void 0 ? void 0 : _c[\"Glue42\"]);\n }\n return desktopDefinition;\n }\n getUserPropertiesFromDefinition(definition, version) {\n if (version === \"1.2\") {\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key)));\n }\n return Object.fromEntries(Object.entries(definition).filter(([key]) => !connectBrowserAppProps.includes(key) && !fdc3v2AppProps.includes(key)));\n }\n getUrl(definition, version) {\n var _a, _b;\n let url;\n if (version === \"1.2\") {\n const parsedManifest = JSON.parse(definition.manifest);\n url = ((_a = parsedManifest.details) === null || _a === void 0 ? void 0 : _a.url) || parsedManifest.url;\n }\n else {\n url = (_b = definition.details) === null || _b === void 0 ? void 0 : _b.url;\n }\n if (!url || typeof url !== \"string\") {\n throw new Error(`Invalid FDC3 ${version} definition. Provide valid 'url' under '${version === \"1.2\" ? \"manifest\" : \"details\"}' key`);\n }\n return url;\n }\n getIntentsFromV2AppDefinition(definition) {\n var _a, _b;\n const fdc3Intents = (_b = (_a = definition.interop) === null || _a === void 0 ? void 0 : _a.intents) === null || _b === void 0 ? void 0 : _b.listensFor;\n if (!fdc3Intents) {\n return;\n }\n const intents = Object.entries(fdc3Intents).map((fdc3Intent) => {\n const [intentName, intentData] = fdc3Intent;\n return Object.assign({ name: intentName }, intentData);\n });\n return intents;\n }\n getIconFromDefinition(definition, version) {\n var _a, _b, _c, _d;\n if (version === \"1.2\") {\n return ((_b = (_a = definition.icons) === null || _a === void 0 ? void 0 : _a.find((iconDef) => iconDef.icon)) === null || _b === void 0 ? void 0 : _b.icon) || undefined;\n }\n return ((_d = (_c = definition.icons) === null || _c === void 0 ? void 0 : _c.find((iconDef) => iconDef.src)) === null || _d === void 0 ? void 0 : _d.src) || undefined;\n }\n mergeBaseAppDataWithGlueManifest(baseAppData, hostManifestDefinition) {\n let baseApplicationDefinition = baseAppData;\n if (hostManifestDefinition.details) {\n const details = Object.assign(Object.assign({}, baseAppData.createOptions), hostManifestDefinition.details);\n baseApplicationDefinition.createOptions = details;\n baseApplicationDefinition.userProperties.details = details;\n }\n if (Array.isArray(hostManifestDefinition.intents)) {\n baseApplicationDefinition.userProperties.intents = (baseApplicationDefinition.userProperties.intents || []).concat(hostManifestDefinition.intents);\n }\n baseApplicationDefinition = Object.assign(Object.assign({}, baseApplicationDefinition), hostManifestDefinition);\n delete baseApplicationDefinition.details;\n delete baseApplicationDefinition.intents;\n return baseApplicationDefinition;\n }\n mergeDesktopConfigWithGlueManifest(config, desktopDefinition) {\n const appConfig = Object.assign({}, config, desktopDefinition, { details: Object.assign(Object.assign({}, config.details), desktopDefinition.details) });\n if (Array.isArray(desktopDefinition.intents)) {\n appConfig.intents = (config.intents || []).concat(desktopDefinition.intents);\n }\n return appConfig;\n }\n}\n\nconst decoders$1 = {\n common: {\n nonEmptyStringDecoder,\n nonNegativeNumberDecoder\n },\n fdc3: {\n allDefinitionsDecoder,\n v1DefinitionDecoder,\n v2DefinitionDecoder\n }\n};\n\nvar INTENTS_ERRORS;\n(function (INTENTS_ERRORS) {\n INTENTS_ERRORS[\"USER_CANCELLED\"] = \"User Closed Intents Resolver UI without choosing a handler\";\n INTENTS_ERRORS[\"CALLER_NOT_DEFINED\"] = \"Caller Id is not defined\";\n INTENTS_ERRORS[\"TIMEOUT_HIT\"] = \"Timeout hit\";\n INTENTS_ERRORS[\"INTENT_NOT_FOUND\"] = \"Cannot find Intent\";\n INTENTS_ERRORS[\"HANDLER_NOT_FOUND\"] = \"Cannot find Intent Handler\";\n INTENTS_ERRORS[\"TARGET_INSTANCE_UNAVAILABLE\"] = \"Cannot start Target Instance\";\n INTENTS_ERRORS[\"INTENT_DELIVERY_FAILED\"] = \"Target Instance did not add a listener\";\n INTENTS_ERRORS[\"RESOLVER_UNAVAILABLE\"] = \"Intents Resolver UI unavailable\";\n INTENTS_ERRORS[\"RESOLVER_TIMEOUT\"] = \"User did not choose a handler\";\n INTENTS_ERRORS[\"INVALID_RESOLVER_RESPONSE\"] = \"Intents Resolver UI returned invalid response\";\n INTENTS_ERRORS[\"INTENT_HANDLER_REJECTION\"] = \"Intent Handler function processing the raised intent threw an error or rejected the promise it returned\";\n})(INTENTS_ERRORS || (INTENTS_ERRORS = {}));\n\nclass IoC {\n constructor() {\n this._decoders = decoders$1;\n this._errors = {\n intents: INTENTS_ERRORS\n };\n }\n get fdc3() {\n if (!this._fdc3) {\n this._fdc3 = new FDC3Service().toApi();\n }\n return this._fdc3;\n }\n get decoders() {\n return this._decoders;\n }\n get errors() {\n return this._errors;\n }\n}\n\nconst ioc = new IoC();\nconst fdc3 = ioc.fdc3;\nconst decoders = ioc.decoders;\nconst errors = ioc.errors;\n\nexport { decoders, errors, fdc3 };\n//# sourceMappingURL=utils.es.js.map\n","import { IOConnectWorkspaces } from \"@interopio/workspaces-api\";\nimport { decoders } from \"@interopio/utils\";\nimport { Decoder, string, number, object, constant, oneOf, optional, array, boolean, anyJson, lazy } from \"decoder-validate\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { AppsImportOperation, AppHelloSuccess, ApplicationData, ApplicationStartConfig, AppManagerOperationTypes, AppRemoveConfig, BaseApplicationData, BasicInstanceData, InstanceData, AppsExportOperation, FDC3Definition, AppDirectoryStateChange } from \"../appManager/protocol\";\nimport { AllLayoutsFullConfig, AllLayoutsSummariesResult, GetAllLayoutsConfig, LayoutsImportConfig, LayoutsOperationTypes, OptionalSimpleLayoutResult, RestoreLayoutConfig, SaveLayoutConfig, SaveRequestClientResponse, PlatformSaveRequestConfig, SimpleLayoutConfig, SimpleLayoutResult, PermissionStateResult, SimpleAvailabilityResult, SetDefaultGlobalConfig } from \"../layouts/protocol\";\nimport { HelloSuccess, OpenWindowConfig, CoreWindowData, WindowHello, WindowOperationTypes, SimpleWindowCommand, WindowTitleConfig, WindowBoundsResult, WindowMoveResizeConfig, WindowUrlResult, FrameWindowBoundsResult, FocusEventData, WindowChannelResult } from \"../windows/protocol\";\nimport { IntentsOperationTypes, WrappedIntentFilter, WrappedIntents } from \"../intents/protocol\";\nimport { ActiveNotificationsCountChange, AllNotificationsData, NotificationEventPayload, NotificationSetStateRequest, NotificationsConfigurationProtocol, NotificationsOperationTypes, PermissionQueryResult, PermissionRequestResult, RaiseNotification, RaiseNotificationResult, SimpleNotificationData, SimpleNotificationSelect, StrictNotificationsConfigurationProtocol } from \"../notifications/protocol\";\nimport { LibDomains, OperationCheckConfig, OperationCheckResult, SimpleItemIdRequest, WorkspaceFrameBoundsResult } from \"./types\";\nimport { AllThemesResponse, SelectThemeConfig, SimpleThemeResponse } from \"../themes/protocol\";\nimport { SystemOperationTypes } from \"../system/protocol\";\nimport { WindowIdsOnChannelData, ChannelOperationTypes, WrappedWindowWithChannelFilter, WindowIdsWithChannelsData, MyChannelData, JoinChannelData } from \"../channels/protocol\";\nimport { FilterHandlersWithResolverConfig, IntentRequestWithResolverConfig, IntentResolverResponse, ResolverConfig } from \"../intents/types\";\nimport { BasePrefsConfig, PrefsHelloSuccess, PrefsOperationTypes } from \"../prefs/protocol\";\n\nexport const nonEmptyStringDecoder: Decoder = string().where((s) => s.length > 0, \"Expected a non-empty string\");\nexport const nonNegativeNumberDecoder: Decoder = number().where((num) => num >= 0, \"Expected a non-negative number\");\nexport const optionalNonEmptyStringDecoder: Decoder = optional(nonEmptyStringDecoder);\n\nexport const libDomainDecoder: Decoder = oneOf<\"system\" | \"windows\" | \"appManager\" | \"layouts\" | \"intents\" | \"notifications\" | \"channels\" | \"extension\" | \"themes\" | \"prefs\">(\n constant(\"system\"),\n constant(\"windows\"),\n constant(\"appManager\"),\n constant(\"layouts\"),\n constant(\"intents\"),\n constant(\"notifications\"),\n constant(\"channels\"),\n constant(\"extension\"),\n constant(\"themes\"),\n constant(\"prefs\")\n);\n\nexport const windowOperationTypesDecoder: Decoder = oneOf<\"openWindow\" | \"getBounds\" | \"getFrameBounds\" | \"windowHello\" | \"windowAdded\" | \"windowRemoved\" | \"getUrl\" | \"moveResize\" | \"focus\" | \"close\" | \"getTitle\" | \"setTitle\" | \"focusChange\" | \"getChannel\">(\n constant(\"openWindow\"),\n constant(\"windowHello\"),\n constant(\"windowAdded\"),\n constant(\"windowRemoved\"),\n constant(\"getBounds\"),\n constant(\"getFrameBounds\"),\n constant(\"getUrl\"),\n constant(\"moveResize\"),\n constant(\"focus\"),\n constant(\"close\"),\n constant(\"getTitle\"),\n constant(\"setTitle\"),\n constant(\"focusChange\"),\n constant(\"getChannel\"),\n);\n\nexport const appManagerOperationTypesDecoder: Decoder = oneOf<\"appHello\" | \"appDirectoryStateChange\" | \"instanceStarted\" | \"instanceStopped\" | \"applicationStart\" | \"instanceStop\" | \"clear\">(\n constant(\"appHello\"),\n constant(\"appDirectoryStateChange\"),\n constant(\"instanceStarted\"),\n constant(\"instanceStopped\"),\n constant(\"applicationStart\"),\n constant(\"instanceStop\"),\n constant(\"clear\")\n);\n\nexport const layoutsOperationTypesDecoder: Decoder = oneOf<\"layoutAdded\" | \"layoutChanged\" | \"layoutRemoved\" | \"get\" | \"getAll\" | \"export\" | \"import\" | \"remove\" | \"clientSaveRequest\" | \"getGlobalPermissionState\" | \"requestGlobalPermission\" | \"checkGlobalActivated\" | \"getDefaultGlobal\" | \"setDefaultGlobal\" | \"clearDefaultGlobal\">(\n constant(\"layoutAdded\"),\n constant(\"layoutChanged\"),\n constant(\"layoutRemoved\"),\n constant(\"get\"),\n constant(\"getAll\"),\n constant(\"export\"),\n constant(\"import\"),\n constant(\"remove\"),\n constant(\"clientSaveRequest\"),\n constant(\"getGlobalPermissionState\"),\n constant(\"checkGlobalActivated\"),\n constant(\"requestGlobalPermission\"),\n constant(\"getDefaultGlobal\"),\n constant(\"setDefaultGlobal\"),\n constant(\"clearDefaultGlobal\")\n);\n\nexport const notificationsOperationTypesDecoder: Decoder = oneOf<\"raiseNotification\" | \"requestPermission\" | \"notificationShow\" | \"notificationClick\" | \"getPermission\" | \"list\" | \"notificationRaised\" | \"notificationClosed\" | \"click\" | \"clear\" | \"clearAll\" | \"configure\" | \"getConfiguration\" | \"configurationChanged\" | \"setState\" | \"clearOld\" | \"activeCountChange\" | \"stateChange\">(\n constant(\"raiseNotification\"),\n constant(\"requestPermission\"),\n constant(\"notificationShow\"),\n constant(\"notificationClick\"),\n constant(\"getPermission\"),\n constant(\"list\"),\n constant(\"notificationRaised\"),\n constant(\"notificationClosed\"),\n constant(\"click\"),\n constant(\"clear\"),\n constant(\"clearAll\"),\n constant(\"configure\"),\n constant(\"getConfiguration\"),\n constant(\"configurationChanged\"),\n constant(\"setState\"),\n constant(\"clearOld\"),\n constant(\"activeCountChange\"),\n constant(\"stateChange\")\n);\n\nexport const systemOperationTypesDecoder: Decoder = oneOf<\"getEnvironment\" | \"getBase\" | \"platformShutdown\">(\n constant(\"getEnvironment\"),\n constant(\"getBase\"),\n constant(\"platformShutdown\")\n);\n\nexport const windowRelativeDirectionDecoder: Decoder = oneOf<\"top\" | \"left\" | \"right\" | \"bottom\">(\n constant(\"top\"),\n constant(\"left\"),\n constant(\"right\"),\n constant(\"bottom\")\n);\n\nexport const windowBoundsDecoder: Decoder = object({\n top: number(),\n left: number(),\n width: nonNegativeNumberDecoder,\n height: nonNegativeNumberDecoder\n});\n\nexport const windowOpenSettingsDecoder: Decoder = optional(object({\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder),\n context: optional(anyJson()),\n relativeTo: optional(nonEmptyStringDecoder),\n relativeDirection: optional(windowRelativeDirectionDecoder),\n windowId: optional(nonEmptyStringDecoder),\n layoutComponentId: optional(nonEmptyStringDecoder)\n}));\n\nexport const openWindowConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n url: nonEmptyStringDecoder,\n options: windowOpenSettingsDecoder\n});\n\nexport const windowHelloDecoder: Decoder = object({\n windowId: optional(nonEmptyStringDecoder)\n});\n\nexport const coreWindowDataDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder\n});\n\nexport const simpleWindowDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder\n});\n\nexport const helloSuccessDecoder: Decoder = object({\n windows: array(coreWindowDataDecoder),\n isWorkspaceFrame: boolean()\n});\n\n\nexport const windowTitleConfigDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n title: string()\n});\n\nexport const focusEventDataDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n hasFocus: boolean()\n});\n\nexport const windowMoveResizeConfigDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder),\n relative: optional(boolean())\n});\n\nexport const windowBoundsResultDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n bounds: object({\n top: number(),\n left: number(),\n width: nonNegativeNumberDecoder,\n height: nonNegativeNumberDecoder\n })\n});\n\nexport const frameWindowBoundsResultDecoder: Decoder = object({\n bounds: object({\n top: number(),\n left: number(),\n width: nonNegativeNumberDecoder,\n height: nonNegativeNumberDecoder\n })\n});\n\nexport const windowUrlResultDecoder: Decoder = object({\n windowId: nonEmptyStringDecoder,\n url: nonEmptyStringDecoder\n});\n\nexport const anyDecoder: Decoder = anyJson();\n\nexport const boundsDecoder: Decoder> = object({\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n});\n\nexport const instanceDataDecoder: Decoder = object({\n id: nonEmptyStringDecoder,\n applicationName: nonEmptyStringDecoder\n});\n\nexport const applicationDetailsDecoder: Decoder = object({\n url: nonEmptyStringDecoder,\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder)\n});\n\nexport const intentDefinitionDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n displayName: optional(string()),\n contexts: optional(array(string())),\n customConfig: optional(object())\n});\n\nexport const fdc3AppDefinitionDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n appId: optional(nonEmptyStringDecoder),\n manifest: nonEmptyStringDecoder,\n manifestType: nonEmptyStringDecoder,\n tooltip: optional(nonEmptyStringDecoder),\n description: optional(nonEmptyStringDecoder),\n contactEmail: optional(nonEmptyStringDecoder),\n supportEmail: optional(nonEmptyStringDecoder),\n publisher: optional(nonEmptyStringDecoder),\n images: optional(array(object({ url: optional(nonEmptyStringDecoder) }))),\n icons: optional(array(object({ icon: optional(nonEmptyStringDecoder) }))),\n customConfig: anyJson(),\n intents: optional(array(intentDefinitionDecoder))\n});\n\nexport const applicationDefinitionDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n customProperties: optional(anyJson()),\n icon: optional(string()),\n caption: optional(string()),\n details: applicationDetailsDecoder,\n intents: optional(array(intentDefinitionDecoder)),\n hidden: optional(boolean()),\n fdc3: optional(decoders.fdc3.v2DefinitionDecoder)\n});\n\nexport const allApplicationDefinitionsDecoder: Decoder = oneOf(\n applicationDefinitionDecoder,\n decoders.fdc3.v2DefinitionDecoder,\n decoders.fdc3.v1DefinitionDecoder\n);\n\nexport const appsImportOperationDecoder: Decoder = object({\n definitions: array(allApplicationDefinitionsDecoder),\n mode: oneOf<\"replace\" | \"merge\">(\n constant(\"replace\"),\n constant(\"merge\")\n )\n});\n\nexport const appRemoveConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder\n});\n\nexport const appsExportOperationDecoder: Decoder = object({\n definitions: array(applicationDefinitionDecoder)\n});\n\nexport const applicationDataDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\n instances: array(instanceDataDecoder),\n userProperties: optional(anyJson()),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n icon: optional(nonEmptyStringDecoder),\n caption: optional(nonEmptyStringDecoder)\n});\n\nexport const baseApplicationDataDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: nonEmptyStringDecoder.where((s) => s === \"window\", \"Expected a value of window\"),\n userProperties: anyJson(),\n title: optional(nonEmptyStringDecoder),\n version: optional(nonEmptyStringDecoder),\n icon: optional(nonEmptyStringDecoder),\n caption: optional(nonEmptyStringDecoder)\n});\n\nexport const appDirectoryStateChangeDecoder: Decoder = object({\n appsAdded: array(baseApplicationDataDecoder),\n appsChanged: array(baseApplicationDataDecoder),\n appsRemoved: array(baseApplicationDataDecoder)\n});\n\nexport const appHelloSuccessDecoder: Decoder = object({\n apps: array(applicationDataDecoder),\n initialChannelId: optional(nonEmptyStringDecoder)\n});\n\nexport const basicInstanceDataDecoder: Decoder = object({\n id: nonEmptyStringDecoder\n});\n\nexport const applicationStartConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n waitForAGMReady: boolean(),\n id: optional(nonEmptyStringDecoder),\n context: optional(anyJson()),\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder),\n relativeTo: optional(nonEmptyStringDecoder),\n relativeDirection: optional(windowRelativeDirectionDecoder),\n forceChromeTab: optional(boolean()),\n layoutComponentId: optional(nonEmptyStringDecoder),\n channelId: optional(nonEmptyStringDecoder)\n});\n\nexport const layoutTypeDecoder: Decoder = oneOf<\"Global\" | \"Activity\" | \"ApplicationDefault\" | \"Swimlane\" | \"Workspace\">(\n constant(\"Global\"),\n constant(\"Activity\"),\n constant(\"ApplicationDefault\"),\n constant(\"Swimlane\"),\n constant(\"Workspace\")\n);\n\nexport const componentTypeDecoder: Decoder = oneOf<\"application\" | \"activity\">(\n constant(\"application\"),\n constant(\"activity\")\n);\n\nexport const windowComponentStateDecoder: Decoder = object({\n context: optional(anyJson()),\n bounds: windowBoundsDecoder,\n createArgs: object({\n name: optional(nonEmptyStringDecoder),\n url: optional(nonEmptyStringDecoder),\n context: optional(anyJson())\n }),\n windowState: optional(nonEmptyStringDecoder),\n restoreState: optional(nonEmptyStringDecoder),\n instanceId: nonEmptyStringDecoder,\n isCollapsed: optional(boolean()),\n isSticky: optional(boolean()),\n restoreSettings: object({\n groupId: optional(nonEmptyStringDecoder),\n groupZOrder: optional(number())\n })\n});\n\nexport const windowLayoutComponentDecoder: Decoder = object({\n type: constant(\"window\"),\n componentType: optional(componentTypeDecoder),\n application: nonEmptyStringDecoder,\n state: windowComponentStateDecoder\n});\n\nexport const windowLayoutItemDecoder: Decoder = object({\n type: constant(\"window\"),\n config: object({\n appName: nonEmptyStringDecoder,\n url: optional(nonEmptyStringDecoder),\n title: optional(string()),\n allowExtract: optional(boolean()),\n allowReorder: optional(boolean()),\n showCloseButton: optional(boolean()),\n isMaximized: optional(boolean())\n })\n});\n\nexport const groupLayoutItemDecoder: Decoder = object({\n type: constant(\"group\"),\n config: anyJson(),\n children: array(oneOf(\n windowLayoutItemDecoder\n ))\n});\n\nexport const columnLayoutItemDecoder: Decoder = object({\n type: constant(\"column\"),\n config: anyJson(),\n children: array(oneOf(\n groupLayoutItemDecoder,\n windowLayoutItemDecoder,\n lazy(() => columnLayoutItemDecoder),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n lazy(() => rowLayoutItemDecoder)\n ))\n});\n\nexport const rowLayoutItemDecoder: Decoder = object({\n type: constant(\"row\"),\n config: anyJson(),\n children: array(oneOf(\n columnLayoutItemDecoder,\n groupLayoutItemDecoder,\n windowLayoutItemDecoder,\n lazy(() => rowLayoutItemDecoder)\n ))\n});\n\nexport const workspaceLayoutComponentStateDecoder: Decoder = object({\n config: anyJson(),\n context: anyJson(),\n children: array(oneOf(\n rowLayoutItemDecoder,\n columnLayoutItemDecoder,\n groupLayoutItemDecoder,\n windowLayoutItemDecoder\n ))\n});\n\nexport const workspaceLayoutComponentDecoder: Decoder = object({\n type: constant(\"Workspace\"),\n application: optional(nonEmptyStringDecoder),\n state: workspaceLayoutComponentStateDecoder\n});\n\nexport const workspaceFrameComponentStateDecoder: Decoder = object({\n bounds: windowBoundsDecoder,\n instanceId: nonEmptyStringDecoder,\n selectedWorkspace: nonNegativeNumberDecoder,\n workspaces: array(workspaceLayoutComponentStateDecoder),\n windowState: optional(nonEmptyStringDecoder),\n restoreState: optional(nonEmptyStringDecoder),\n context: optional(anyJson())\n});\n\nexport const workspaceFrameComponentDecoder: Decoder = object({\n type: constant<\"workspaceFrame\">(\"workspaceFrame\"),\n application: nonEmptyStringDecoder,\n componentType: optional(componentTypeDecoder),\n state: workspaceFrameComponentStateDecoder\n});\n\nexport const glueLayoutDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: layoutTypeDecoder,\n components: array(oneOf(\n windowLayoutComponentDecoder,\n workspaceLayoutComponentDecoder,\n workspaceFrameComponentDecoder\n )),\n context: optional(anyJson()),\n metadata: optional(anyJson()),\n version: optional(number())\n});\n\nexport const newLayoutOptionsDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n context: optional(anyJson()),\n metadata: optional(anyJson()),\n instances: optional(array(nonEmptyStringDecoder)),\n ignoreInstances: optional(array(nonEmptyStringDecoder))\n});\n\nexport const restoreOptionsDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n context: optional(anyJson()),\n closeRunningInstance: optional(boolean()),\n closeMe: optional(boolean()),\n timeout: optional(nonNegativeNumberDecoder)\n});\n\nexport const layoutSummaryDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: layoutTypeDecoder,\n context: optional(anyJson()),\n metadata: optional(anyJson())\n});\n\nexport const simpleLayoutConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n type: layoutTypeDecoder\n});\n\nexport const saveLayoutConfigDecoder: Decoder = object({\n layout: newLayoutOptionsDecoder\n});\n\nexport const restoreLayoutConfigDecoder: Decoder = object({\n layout: restoreOptionsDecoder\n});\n\nexport const getAllLayoutsConfigDecoder: Decoder = object({\n type: layoutTypeDecoder\n});\n\nexport const allLayoutsFullConfigDecoder: Decoder = object({\n layouts: array(glueLayoutDecoder)\n});\n\nexport const importModeDecoder: Decoder<\"replace\" | \"merge\"> = oneOf<\"replace\" | \"merge\">(\n constant(\"replace\"),\n constant(\"merge\")\n);\n\nexport const layoutsImportConfigDecoder: Decoder = object({\n layouts: array(glueLayoutDecoder),\n mode: importModeDecoder,\n isManagerOperation: optional(boolean())\n});\n\nexport const allLayoutsSummariesResultDecoder: Decoder = object({\n summaries: array(layoutSummaryDecoder)\n});\n\nexport const simpleLayoutResultDecoder: Decoder = object({\n layout: glueLayoutDecoder\n});\n\nexport const optionalSimpleLayoutResult: Decoder = object({\n layout: optional(glueLayoutDecoder)\n});\n\nexport const setDefaultGlobalConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder\n});\n\nexport const intentsOperationTypesDecoder: Decoder = oneOf<\"findIntent\" | \"getIntents\" | \"raiseIntent\" | \"raise\" | \"filterHandlers\">(\n constant(\"findIntent\"),\n constant(\"getIntents\"),\n constant(\"raiseIntent\"),\n constant(\"raise\"),\n constant(\"filterHandlers\")\n);\n\nexport const intentHandlerDecoder: Decoder = object({\n applicationName: nonEmptyStringDecoder,\n applicationTitle: optional(string()),\n applicationDescription: optional(string()),\n applicationIcon: optional(string()),\n type: oneOf<\"app\" | \"instance\">(constant(\"app\"), constant(\"instance\")),\n displayName: optional(string()),\n contextTypes: optional(array(nonEmptyStringDecoder)),\n instanceId: optional(string()),\n instanceTitle: optional(string()),\n resultType: optional(string())\n});\n\nexport const resolverIntentHandlerDecoder = object({\n applicationName: string(),\n applicationIcon: optional(string()),\n instanceId: optional(string()),\n});\n\nexport const intentResolverResponseDecoder: Decoder = object({\n intent: nonEmptyStringDecoder,\n handler: intentHandlerDecoder\n});\n\nconst intentDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n handlers: array(intentHandlerDecoder)\n});\n\nconst intentTargetDecoder: Decoder<\"startNew\" | \"reuse\" | { app?: string; instance?: string }> = oneOf<\"startNew\" | \"reuse\" | { app?: string; instance?: string }>(\n constant(\"startNew\"),\n constant(\"reuse\"),\n object({\n app: optional(nonEmptyStringDecoder),\n instance: optional(nonEmptyStringDecoder)\n })\n);\n\nconst intentContextDecoder: Decoder = object({\n type: optional(nonEmptyStringDecoder),\n data: optional(anyJson())\n});\n\nexport const intentsDecoder: Decoder = array(intentDecoder);\n\nexport const wrappedIntentsDecoder: Decoder = object({\n intents: intentsDecoder\n});\n\nexport const intentFilterDecoder: Decoder = object({\n name: optional(nonEmptyStringDecoder),\n contextType: optional(nonEmptyStringDecoder),\n resultType: optional(nonEmptyStringDecoder)\n});\n\nexport const findFilterDecoder: Decoder = oneOf(\n nonEmptyStringDecoder,\n intentFilterDecoder\n);\n\nexport const wrappedIntentFilterDecoder: Decoder = object({\n filter: optional(intentFilterDecoder)\n});\n\nexport const intentRequestDecoder: Decoder = object({\n intent: nonEmptyStringDecoder,\n target: optional(intentTargetDecoder),\n context: optional(intentContextDecoder),\n options: optional(windowOpenSettingsDecoder),\n handlers: optional(array(intentHandlerDecoder)),\n timeout: optional(nonNegativeNumberDecoder),\n waitUserResponseIndefinitely: optional(boolean())\n});\n\nexport const raiseRequestDecoder: Decoder = oneOf(\n nonEmptyStringDecoder,\n intentRequestDecoder\n);\n\nexport const resolverConfigDecoder: Decoder = object({\n enabled: boolean(),\n appName: nonEmptyStringDecoder,\n waitResponseTimeout: number()\n});\n\nexport const raiseIntentRequestDecoder: Decoder = object({\n intentRequest: intentRequestDecoder,\n resolverConfig: resolverConfigDecoder\n});\n\nexport const intentResultDecoder: Decoder = object({\n request: intentRequestDecoder,\n handler: intentHandlerDecoder,\n result: anyJson()\n});\n\nexport const handlersFilterDecoder: Decoder = object({\n title: optional(nonEmptyStringDecoder),\n openResolver: optional(boolean()),\n timeout: optional(nonNegativeNumberDecoder),\n intent: optional(nonEmptyStringDecoder),\n contextTypes: optional(array(nonEmptyStringDecoder)),\n resultType: optional(nonEmptyStringDecoder),\n applicationNames: optional(array(nonEmptyStringDecoder))\n});\n\nexport const filterHandlersResultDecoder: Decoder = object({\n handlers: array(intentHandlerDecoder)\n});\n\nexport const filterHandlersWithResolverConfigDecoder: Decoder = object({\n filterHandlersRequest: handlersFilterDecoder,\n resolverConfig: resolverConfigDecoder\n});\n\nexport const AddIntentListenerRequestDecoder: Decoder = object({\n intent: nonEmptyStringDecoder,\n contextTypes: optional(array(nonEmptyStringDecoder)),\n displayName: optional(string()),\n icon: optional(string()),\n description: optional(string()),\n resultType: optional(string())\n});\n\nexport const AddIntentListenerDecoder: Decoder = oneOf(\n nonEmptyStringDecoder,\n AddIntentListenerRequestDecoder\n);\n\nexport const intentInfoDecoder: Decoder = object({\n intent: nonEmptyStringDecoder,\n contextTypes: optional(array(nonEmptyStringDecoder)),\n description: optional(nonEmptyStringDecoder),\n displayName: optional(nonEmptyStringDecoder),\n icon: optional(nonEmptyStringDecoder),\n resultType: optional(nonEmptyStringDecoder)\n});\n\nexport const getIntentsResultDecoder: Decoder = object({\n intents: array(intentInfoDecoder)\n});\n\nexport const channelNameDecoder = (channelNames: string[]): Decoder => {\n return nonEmptyStringDecoder.where(s => channelNames.includes(s), \"Expected a valid channel name\");\n};\n\nexport const interopActionSettingsDecoder: Decoder = object({\n method: nonEmptyStringDecoder,\n arguments: optional(anyJson()),\n target: optional(oneOf<\"all\" | \"best\">(\n constant(\"all\"),\n constant(\"best\")\n ))\n});\n\nexport const glue42NotificationActionDecoder: Decoder = object({\n action: string(),\n title: nonEmptyStringDecoder,\n icon: optional(string()),\n interop: optional(interopActionSettingsDecoder)\n});\n\nexport const notificationStateDecoder: Decoder = oneOf<\"Active\" | \"Acknowledged\" | \"Seen\" | \"Closed\" | \"Stale\" | \"Snoozed\" | \"Processing\">(\n constant(\"Active\"),\n constant(\"Acknowledged\"),\n constant(\"Seen\"),\n constant(\"Closed\"),\n constant(\"Stale\"),\n constant(\"Snoozed\"),\n constant(\"Processing\")\n);\n\nexport const activeNotificationsCountChangeDecoder: Decoder = object({\n count: number()\n});\n\nexport const notificationDefinitionDecoder: Decoder = object({\n badge: optional(string()),\n body: optional(string()),\n data: optional(anyJson()),\n dir: optional(oneOf<\"auto\" | \"ltr\" | \"rtl\">(\n constant(\"auto\"),\n constant(\"ltr\"),\n constant(\"rtl\")\n )),\n icon: optional(string()),\n image: optional(string()),\n lang: optional(string()),\n renotify: optional(boolean()),\n requireInteraction: optional(boolean()),\n silent: optional(boolean()),\n tag: optional(string()),\n timestamp: optional(nonNegativeNumberDecoder),\n vibrate: optional(array(number()))\n});\n\nexport const glue42NotificationOptionsDecoder: Decoder = object({\n title: nonEmptyStringDecoder,\n clickInterop: optional(interopActionSettingsDecoder),\n actions: optional(array(glue42NotificationActionDecoder)),\n focusPlatformOnDefaultClick: optional(boolean()),\n badge: optional(string()),\n body: optional(string()),\n data: optional(anyJson()),\n dir: optional(oneOf<\"auto\" | \"ltr\" | \"rtl\">(\n constant(\"auto\"),\n constant(\"ltr\"),\n constant(\"rtl\")\n )),\n icon: optional(string()),\n image: optional(string()),\n lang: optional(string()),\n renotify: optional(boolean()),\n requireInteraction: optional(boolean()),\n silent: optional(boolean()),\n tag: optional(string()),\n timestamp: optional(nonNegativeNumberDecoder),\n vibrate: optional(array(number())),\n severity: optional(oneOf<\"Low\" | \"Medium\" | \"High\" | \"Critical\" | \"None\">(\n constant(\"Low\"),\n constant(\"None\"),\n constant(\"Medium\"),\n constant(\"High\"),\n constant(\"Critical\")\n )),\n showToast: optional(boolean()),\n showInPanel: optional(boolean()),\n state: optional(notificationStateDecoder)\n});\n\nexport const notificationSetStateRequestDecoder: Decoder = object({\n id: nonEmptyStringDecoder,\n state: notificationStateDecoder\n}); \n\nexport const channelContextDecoder: Decoder = object({\n name: nonEmptyStringDecoder,\n meta: object({\n color: nonEmptyStringDecoder\n }),\n data: optional(object()),\n});\n\n\nexport const raiseNotificationDecoder: Decoder = object({\n settings: glue42NotificationOptionsDecoder,\n id: nonEmptyStringDecoder\n});\n\nexport const raiseNotificationResultDecoder: Decoder = object({\n settings: glue42NotificationOptionsDecoder\n});\n\nexport const permissionRequestResultDecoder: Decoder = object({\n permissionGranted: boolean()\n});\n\nexport const permissionQueryResultDecoder: Decoder = object({\n permission: oneOf<\"default\" | \"granted\" | \"denied\">(\n constant(\"default\"),\n constant(\"granted\"),\n constant(\"denied\")\n )\n});\n\nexport const notificationEventPayloadDecoder: Decoder = object({\n definition: notificationDefinitionDecoder,\n action: optional(string()),\n id: optional(nonEmptyStringDecoder)\n});\n\nexport const notificationFilterDecoder: Decoder = object({\n allowed: optional(array(nonEmptyStringDecoder)),\n blocked: optional(array(nonEmptyStringDecoder))\n});\n\nexport const notificationsConfigurationDecoder: Decoder = object({\n enable: optional(boolean()),\n enableToasts: optional(boolean()),\n sourceFilter: optional(notificationFilterDecoder),\n}); \n\nexport const notificationsConfigurationProtocolDecoder: Decoder = object({\n configuration: notificationsConfigurationDecoder\n});\n\nexport const strictNotificationsConfigurationProtocolDecoder: Decoder = object({\n configuration: object({\n enable: boolean(),\n enableToasts: boolean(),\n sourceFilter: object({\n allowed: array(nonEmptyStringDecoder),\n blocked: array(nonEmptyStringDecoder)\n })\n })\n});\n\nexport const platformSaveRequestConfigDecoder: Decoder = object({\n layoutType: oneOf<\"Global\" | \"Workspace\">(\n constant(\"Global\"),\n constant(\"Workspace\")\n ),\n layoutName: nonEmptyStringDecoder,\n context: optional(anyJson())\n});\n\nexport const saveRequestClientResponseDecoder: Decoder = object({\n windowContext: optional(anyJson()),\n});\n\nexport const permissionStateResultDecoder: Decoder = object({\n state: oneOf<\"prompt\" | \"granted\" | \"denied\">(\n constant(\"prompt\"),\n constant(\"denied\"),\n constant(\"granted\")\n )\n});\n\nexport const simpleAvailabilityResultDecoder: Decoder = object({\n isAvailable: boolean()\n});\n\nexport const simpleItemIdDecoder: Decoder = object({\n itemId: nonEmptyStringDecoder\n});\n\nexport const operationCheckResultDecoder: Decoder = object({\n isSupported: boolean()\n});\n\nexport const operationCheckConfigDecoder: Decoder = object({\n operation: nonEmptyStringDecoder\n});\n\nexport const workspaceFrameBoundsResultDecoder: Decoder = object({\n bounds: windowBoundsDecoder\n});\n\nexport const themeDecoder: Decoder = object({\n displayName: nonEmptyStringDecoder,\n name: nonEmptyStringDecoder\n});\n\nexport const simpleThemeResponseDecoder: Decoder = object({\n theme: themeDecoder\n});\n\nexport const allThemesResponseDecoder: Decoder = object({\n themes: array(themeDecoder)\n});\n\nexport const selectThemeConfigDecoder: Decoder = object({\n name: nonEmptyStringDecoder\n});\n\nexport const notificationsDataDecoder: Decoder = object({\n id: nonEmptyStringDecoder,\n title: nonEmptyStringDecoder,\n clickInterop: optional(interopActionSettingsDecoder),\n actions: optional(array(glue42NotificationActionDecoder)),\n focusPlatformOnDefaultClick: optional(boolean()),\n badge: optional(string()),\n body: optional(string()),\n data: optional(anyJson()),\n dir: optional(oneOf<\"auto\" | \"ltr\" | \"rtl\">(\n constant(\"auto\"),\n constant(\"ltr\"),\n constant(\"rtl\")\n )),\n icon: optional(string()),\n image: optional(string()),\n lang: optional(string()),\n renotify: optional(boolean()),\n requireInteraction: optional(boolean()),\n silent: optional(boolean()),\n tag: optional(string()),\n timestamp: optional(nonNegativeNumberDecoder),\n vibrate: optional(array(number())),\n severity: optional(oneOf<\"Low\" | \"Medium\" | \"High\" | \"Critical\" | \"None\">(\n constant(\"Low\"),\n constant(\"None\"),\n constant(\"Medium\"),\n constant(\"High\"),\n constant(\"Critical\")\n )),\n showToast: optional(boolean()),\n showInPanel: optional(boolean()),\n state: optional(notificationStateDecoder)\n});\n\nexport const simpleNotificationDataDecoder: Decoder = object({\n notification: notificationsDataDecoder\n});\n\nexport const allNotificationsDataDecoder: Decoder = object({\n notifications: array(notificationsDataDecoder)\n});\n\nexport const simpleNotificationSelectDecoder: Decoder = object({\n id: nonEmptyStringDecoder\n});\n\nexport const getWindowIdsOnChannelDataDecoder: Decoder<{ channel: string }> = object({\n channel: nonEmptyStringDecoder\n});\n\nexport const getWindowIdsOnChannelResultDecoder: Decoder = object({\n windowIds: array(nonEmptyStringDecoder)\n});\n\nexport const channelsOperationTypesDecoder: Decoder = oneOf<\"addChannel\" | \"getMyChannel\" | \"getWindowIdsOnChannel\" | \"getWindowIdsWithChannels\" | \"joinChannel\">(\n constant(\"addChannel\"),\n constant(\"getMyChannel\"),\n constant(\"getWindowIdsOnChannel\"),\n constant(\"getWindowIdsWithChannels\"),\n constant(\"joinChannel\"),\n);\n\nexport const getMyChanelResultDecoder: Decoder = object({\n channel: optional(nonEmptyStringDecoder)\n});\n\nexport const windowWithChannelFilterDecoder: Decoder = object({\n application: optional(nonEmptyStringDecoder),\n channels: optional(array(nonEmptyStringDecoder)),\n windowIds: optional(array(nonEmptyStringDecoder))\n});\n\nexport const wrappedWindowWithChannelFilterDecoder: Decoder = object({\n filter: optional(windowWithChannelFilterDecoder)\n});\n\nexport const getWindowIdsWithChannelsResultDecoder: Decoder = object({\n windowIdsWithChannels: array(object({\n application: nonEmptyStringDecoder,\n channel: optional(nonEmptyStringDecoder),\n windowId: nonEmptyStringDecoder\n }))\n});\nexport const startApplicationContextDecoder = optional(anyJson());\n\nexport const startApplicationOptionsDecoder: Decoder = optional(object({\n top: optional(number()),\n left: optional(number()),\n width: optional(nonNegativeNumberDecoder),\n height: optional(nonNegativeNumberDecoder),\n relativeTo: optional(nonEmptyStringDecoder),\n relativeDirection: optional(windowRelativeDirectionDecoder),\n waitForAGMReady: optional(boolean()),\n channelId: optional(nonEmptyStringDecoder),\n reuseId: optional(nonEmptyStringDecoder),\n}));\n\nexport const joinChannelDataDecoder: Decoder = object({\n channel: nonEmptyStringDecoder,\n windowId: nonEmptyStringDecoder\n});\n\nexport const windowChannelResultDecoder: Decoder = object({\n channel: optional(nonEmptyStringDecoder),\n});\n\nexport const prefsOperationTypesDecoder: Decoder = oneOf<\"clear\" | \"clearAll\" | \"get\" | \"getAll\" | \"set\" | \"update\" | \"prefsChanged\" | \"prefsHello\">(\n constant(\"clear\"),\n constant(\"clearAll\"),\n constant(\"get\"),\n constant(\"getAll\"),\n constant(\"set\"),\n constant(\"update\"),\n constant(\"prefsChanged\"),\n constant(\"prefsHello\"),\n);\n\nexport const appPreferencesDecoder: Decoder = object({\n app: nonEmptyStringDecoder,\n data: object(), \n lastUpdate: optional(nonEmptyStringDecoder),\n});\n\nexport const basePrefsConfigDecoder: Decoder = object({\n app: nonEmptyStringDecoder,\n});\n\nexport const getPrefsResultDecoder: Decoder<{ prefs: IOConnectBrowser.Prefs.AppPreferences }> = object({\n prefs: appPreferencesDecoder,\n});\n\nexport const getAllPrefsResultDecoder: Decoder<{ all: IOConnectBrowser.Prefs.AppPreferences[] }> = object({\n all: array(appPreferencesDecoder),\n});\n\nexport const changePrefsDataDecoder: Decoder<{ app: string, data: any }> = object({\n app: nonEmptyStringDecoder,\n data: object(),\n});\n\nexport const prefsHelloSuccessDecoder: Decoder = object({\n platform: object({\n app: nonEmptyStringDecoder,\n }),\n});\n","import { IOConnectBrowser } from \"../../browser\";\nimport { openWindowConfigDecoder, coreWindowDataDecoder, windowHelloDecoder, helloSuccessDecoder, simpleWindowDecoder, windowBoundsResultDecoder, windowUrlResultDecoder, windowMoveResizeConfigDecoder, windowTitleConfigDecoder, frameWindowBoundsResultDecoder, focusEventDataDecoder, windowChannelResultDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\nimport { WebWindowModel } from \"./webWindow\";\n\nexport type WindowOperationTypes = \"openWindow\" | \"getBounds\" | \"getFrameBounds\" |\n \"windowHello\" | \"windowAdded\" | \"windowRemoved\" | \"getUrl\" |\n \"moveResize\" | \"focus\" | \"close\" | \"getTitle\" | \"setTitle\" | \"focusChange\" |\n \"getChannel\";\n\nexport const operations: { [key in WindowOperationTypes]: BridgeOperation } = {\n openWindow: { name: \"openWindow\", dataDecoder: openWindowConfigDecoder, resultDecoder: coreWindowDataDecoder },\n windowHello: { name: \"windowHello\", dataDecoder: windowHelloDecoder, resultDecoder: helloSuccessDecoder },\n windowAdded: { name: \"windowAdded\", dataDecoder: coreWindowDataDecoder },\n windowRemoved: { name: \"windowRemoved\", dataDecoder: simpleWindowDecoder },\n getBounds: { name: \"getBounds\", dataDecoder: simpleWindowDecoder, resultDecoder: windowBoundsResultDecoder },\n getFrameBounds: { name: \"getFrameBounds\", dataDecoder: simpleWindowDecoder, resultDecoder: frameWindowBoundsResultDecoder },\n getUrl: { name: \"getUrl\", dataDecoder: simpleWindowDecoder, resultDecoder: windowUrlResultDecoder },\n moveResize: { name: \"moveResize\", dataDecoder: windowMoveResizeConfigDecoder },\n focus: { name: \"focus\", dataDecoder: simpleWindowDecoder },\n close: { name: \"close\", dataDecoder: simpleWindowDecoder },\n getTitle: { name: \"getTitle\", dataDecoder: simpleWindowDecoder, resultDecoder: windowTitleConfigDecoder },\n setTitle: { name: \"setTitle\", dataDecoder: windowTitleConfigDecoder },\n focusChange: { name: \"focusChange\", dataDecoder: focusEventDataDecoder },\n getChannel: { name: \"getChannel\", dataDecoder: simpleWindowDecoder, resultDecoder: windowChannelResultDecoder },\n};\n\nexport interface WindowProjection {\n id: string;\n model: WebWindowModel;\n api: IOConnectBrowser.Windows.WebWindow;\n}\n\nexport interface WindowHello {\n windowId?: string;\n}\n\nexport interface OpenWindowConfig {\n name: string;\n url: string;\n options?: IOConnectBrowser.Windows.Settings;\n}\n\nexport interface FocusEventData {\n windowId: string;\n hasFocus: boolean;\n}\n\nexport interface SimpleWindowCommand {\n windowId: string;\n}\n\nexport interface WindowTitleConfig {\n windowId: string;\n title: string;\n}\n\nexport interface WindowMoveResizeConfig {\n windowId: string;\n top?: number;\n left?: number;\n width?: number;\n height?: number;\n relative?: boolean;\n}\n\nexport interface HelloSuccess {\n windows: CoreWindowData[];\n isWorkspaceFrame: boolean;\n}\n\nexport interface CoreWindowData {\n windowId: string;\n name: string;\n}\n\nexport interface WindowBoundsResult {\n windowId: string;\n bounds: IOConnectBrowser.Windows.Bounds;\n}\n\nexport interface FrameWindowBoundsResult {\n bounds: IOConnectBrowser.Windows.Bounds;\n}\n\nexport interface WindowUrlResult {\n windowId: string;\n url: string;\n}\n\nexport interface WindowChannelResult {\n channel?: string;\n}\n","\"use strict\";\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\n;\ncreateRegistry.default = createRegistry;\nmodule.exports = createRegistry;\n//# sourceMappingURL=index.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { number } from \"decoder-validate\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { anyDecoder, boundsDecoder, nonEmptyStringDecoder, nonNegativeNumberDecoder } from \"../shared/decoders\";\nimport { operations, SimpleWindowCommand, WindowBoundsResult, WindowChannelResult, WindowMoveResizeConfig, WindowTitleConfig, WindowUrlResult } from \"./protocol\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\n\nexport class WebWindowModel {\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private readonly myCtxKey: string;\n private ctxUnsubscribe: UnsubscribeFunction | undefined;\n private me!: IOConnectBrowser.Windows.WebWindow;\n\n constructor(private readonly _id: string, private readonly _name: string, private readonly _bridge: GlueBridge) {\n this.myCtxKey = `___window___${this.id}`;\n }\n\n public get id(): string {\n return this._id.slice();\n }\n\n public get name(): string {\n return this._name.slice();\n }\n\n public clean(): void {\n if (this.ctxUnsubscribe) {\n this.ctxUnsubscribe();\n }\n }\n\n public processSelfFocusEvent(hasFocus: boolean): void {\n this.me.isFocused = hasFocus;\n\n this.registry.execute(\"focus-change\", this.me);\n }\n\n public async toApi(): Promise {\n\n this.ctxUnsubscribe = await this._bridge.contextLib.subscribe(this.myCtxKey, (data) => this.registry.execute(\"context-updated\", data));\n\n this.me = {\n id: this.id,\n name: this.name,\n isFocused: false,\n getURL: this.getURL.bind(this),\n moveResize: this.moveResize.bind(this),\n resizeTo: this.resizeTo.bind(this),\n moveTo: this.moveTo.bind(this),\n focus: this.focus.bind(this),\n close: this.close.bind(this),\n getTitle: this.getTitle.bind(this),\n setTitle: this.setTitle.bind(this),\n getBounds: this.getBounds.bind(this),\n getContext: this.getContext.bind(this),\n updateContext: this.updateContext.bind(this),\n setContext: this.setContext.bind(this),\n onContextUpdated: this.onContextUpdated.bind(this),\n onFocusChanged: this.onFocusChanged.bind(this),\n getChannel: this.getChannel.bind(this),\n };\n\n return this.me;\n }\n\n private async getURL(): Promise {\n const result = await this._bridge.send(\"windows\", operations.getUrl, { windowId: this.id });\n return result.url;\n }\n\n private onFocusChanged(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to context changes, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"focus-change\", callback);\n }\n\n private async moveResize(dimension: Partial): Promise {\n const targetBounds = boundsDecoder.runWithException(dimension);\n\n const commandArgs = Object.assign({}, targetBounds, { windowId: this.id, relative: false });\n\n await this._bridge.send(\"windows\", operations.moveResize, commandArgs);\n\n return this.me;\n }\n\n private async resizeTo(width?: number, height?: number): Promise {\n if (typeof width === \"undefined\" && typeof height === \"undefined\") {\n return this.me;\n }\n\n if (typeof width !== \"undefined\") {\n nonNegativeNumberDecoder.runWithException(width);\n }\n\n if (typeof height !== \"undefined\") {\n nonNegativeNumberDecoder.runWithException(height);\n }\n\n const commandArgs = Object.assign({}, { width, height }, { windowId: this.id, relative: true });\n\n await this._bridge.send(\"windows\", operations.moveResize, commandArgs);\n\n return this.me;\n }\n\n private async moveTo(top?: number, left?: number): Promise {\n if (typeof top === \"undefined\" && typeof left === \"undefined\") {\n return this.me;\n }\n\n if (typeof top !== \"undefined\") {\n number().runWithException(top);\n }\n\n if (typeof left !== \"undefined\") {\n number().runWithException(left);\n }\n\n const commandArgs = Object.assign({}, { top, left }, { windowId: this.id, relative: true });\n\n await this._bridge.send(\"windows\", operations.moveResize, commandArgs);\n\n return this.me;\n }\n\n private async focus(): Promise {\n if (this.name === \"Platform\") {\n window.open(undefined, this.id);\n } else {\n await this._bridge.send(\"windows\", operations.focus, { windowId: this.id });\n }\n\n return this.me;\n }\n\n private async close(): Promise {\n await this._bridge.send(\"windows\", operations.close, { windowId: this.id });\n\n return this.me;\n }\n\n private async getTitle(): Promise {\n const result = await this._bridge.send(\"windows\", operations.getTitle, { windowId: this.id });\n\n return result.title;\n }\n\n private async setTitle(title: string): Promise {\n const ttl = nonEmptyStringDecoder.runWithException(title);\n\n await this._bridge.send(\"windows\", operations.setTitle, { windowId: this.id, title: ttl });\n\n return this.me;\n }\n\n private async getBounds(): Promise {\n const result = await this._bridge.send(\"windows\", operations.getBounds, { windowId: this.id });\n\n return result.bounds;\n }\n\n private async getContext(): Promise {\n const ctx = await this._bridge.contextLib.get(this.myCtxKey);\n return ctx;\n }\n\n private async updateContext(context: any): Promise {\n const ctx = anyDecoder.runWithException(context);\n\n await this._bridge.contextLib.update(this.myCtxKey, ctx);\n\n return this.me;\n }\n\n private async setContext(context: any): Promise {\n const ctx = anyDecoder.runWithException(context);\n\n await this._bridge.contextLib.set(this.myCtxKey, ctx);\n\n return this.me;\n }\n\n private onContextUpdated(callback: (context: any, window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to context changes, because the provided callback is not a function!\");\n }\n\n const wrappedCallback = (data: any): void => {\n callback(data, this.me);\n };\n\n return this.registry.add(\"context-updated\", wrappedCallback);\n }\n\n private async getChannel(): Promise {\n const result = await this._bridge.send(\"windows\", operations.getChannel, { windowId: this.id }, undefined, { includeOperationCheck: true });\n\n return result.channel as string;\n }\n}\n","import { operationCheckConfigDecoder, operationCheckResultDecoder, simpleItemIdDecoder, workspaceFrameBoundsResultDecoder } from \"./decoders\";\nimport { BridgeOperation } from \"./types\";\n\nexport type SystemOperationTypes = \"operationCheck\" | \"getWorkspaceWindowFrameBounds\";\n\nexport const systemOperations: { [key in SystemOperationTypes]: BridgeOperation } = {\n operationCheck: { name: \"operationCheck\", dataDecoder: operationCheckConfigDecoder, resultDecoder: operationCheckResultDecoder },\n getWorkspaceWindowFrameBounds: { name: \"getWorkspaceWindowFrameBounds\", resultDecoder: workspaceFrameBoundsResultDecoder, dataDecoder: simpleItemIdDecoder }\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\n\r\nexport const PromiseWrap = (promise: () => Promise, timeoutMilliseconds: number, timeoutMessage?: string): Promise => {\r\n return new Promise((resolve, reject) => {\r\n\r\n let promiseActive = true;\r\n\r\n const timeout = setTimeout(() => {\r\n if (!promiseActive) {\r\n return;\r\n }\r\n promiseActive = false;\r\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\r\n\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n\r\n promise()\r\n .then((result) => {\r\n if (!promiseActive) {\r\n return;\r\n }\r\n promiseActive = false;\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch((error) => {\r\n if (!promiseActive) {\r\n return;\r\n }\r\n promiseActive = false;\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n};\r\n\r\nexport const PromisePlus = (executor: (resolve: (value: T | PromiseLike) => void, reject: (reason?: any) => void) => void, timeoutMilliseconds: number, timeoutMessage?: string): Promise => {\r\n\r\n return new Promise((resolve, reject) => {\r\n const timeout = setTimeout(() => {\r\n\r\n const message = timeoutMessage || `Promise timeout hit: ${timeoutMilliseconds}`;\r\n\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n\r\n const providedPromise = new Promise(executor);\r\n\r\n providedPromise\r\n .then((result) => {\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch((error) => {\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n\r\n};\r\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { nonEmptyStringDecoder, windowOpenSettingsDecoder, windowOperationTypesDecoder } from \"../shared/decoders\";\nimport { LibController, OperationCheckConfig, OperationCheckResult } from \"../shared/types\";\nimport { HelloSuccess, OpenWindowConfig, CoreWindowData, WindowHello, operations, WindowBoundsResult, WindowTitleConfig, WindowUrlResult, WindowMoveResizeConfig, WindowProjection, FocusEventData, WindowChannelResult } from \"./protocol\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { IoC } from \"../shared/ioc\";\nimport { systemOperations } from \"../shared/systemOperations\";\nimport { PromisePlus } from \"../shared/promise-plus\";\nimport { ChannelsController } from \"../channels/controller\";\n\nexport class WindowsController implements LibController {\n\n private focusEventHandler?: () => void;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private platformRegistration!: Promise;\n private ioc!: IoC;\n private bridge!: GlueBridge;\n private publicWindowId!: string;\n private allWindowProjections: WindowProjection[] = [];\n private me?: IOConnectBrowser.Windows.WebWindow;\n private logger!: IOConnectBrowser.Logger.API;\n private isWorkspaceFrame?: boolean;\n private instanceId!: string;\n private channelsController!: ChannelsController;\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n\n this.logger = coreGlue.logger.subLogger(\"windows.controller.web\");\n\n this.logger.trace(\"starting the web windows controller\");\n\n this.publicWindowId = ioc.publicWindowId;\n\n this.addWindowOperationExecutors();\n\n this.ioc = ioc;\n this.bridge = ioc.bridge;\n this.instanceId = coreGlue.interop.instance.instance as string;\n\n this.channelsController = ioc.channelsController;\n\n this.logger.trace(`set the public window id: ${this.publicWindowId}, set the bridge operations and ioc, registering with the platform now`);\n\n this.platformRegistration = this.registerWithPlatform();\n\n await this.platformRegistration;\n\n await this.initializeFocusTracking();\n\n this.logger.trace(\"registration with the platform successful, attaching the windows property to glue and returning\");\n\n const api = this.toApi();\n\n (coreGlue as IOConnectBrowser.API).windows = api;\n }\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n this.allWindowProjections = [];\n\n if (!this.focusEventHandler) {\n return;\n }\n\n document.removeEventListener(\"visibilityChange\", this.focusEventHandler);\n window.removeEventListener(\"focus\", this.focusEventHandler);\n window.removeEventListener(\"blur\", this.focusEventHandler);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public async handleBridgeMessage(args: any): Promise {\n await this.platformRegistration;\n\n const operationName = windowOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private async open(name: string, url: string, options?: IOConnectBrowser.Windows.Settings): Promise {\n nonEmptyStringDecoder.runWithException(name);\n nonEmptyStringDecoder.runWithException(url);\n // layoutComponentId is a hidden property for global layouts\n const settings = windowOpenSettingsDecoder.runWithException(options);\n\n const windowSuccess = await this.bridge.send(\"windows\", operations.openWindow, { name, url, options: settings });\n\n return this.waitForWindowAdded(windowSuccess.windowId);\n }\n\n private list(): IOConnectBrowser.Windows.WebWindow[] {\n return this.allWindowProjections.map((projection) => projection.api);\n }\n\n public findById(id: string): IOConnectBrowser.Windows.WebWindow | undefined {\n nonEmptyStringDecoder.runWithException(id);\n\n return this.allWindowProjections.find((projection) => projection.id === id)?.api;\n }\n\n private toApi(): IOConnectBrowser.Windows.API {\n return {\n open: this.open.bind(this),\n my: this.my.bind(this),\n list: this.list.bind(this),\n findById: this.findById.bind(this),\n onWindowAdded: this.onWindowAdded.bind(this),\n onWindowRemoved: this.onWindowRemoved.bind(this),\n onWindowGotFocus: this.onWindowGotFocus.bind(this),\n onWindowLostFocus: this.onWindowLostFocus.bind(this)\n };\n }\n\n private addWindowOperationExecutors(): void {\n operations.focusChange.execute = this.handleFocusChangeEvent.bind(this);\n operations.windowAdded.execute = this.handleWindowAdded.bind(this);\n operations.windowRemoved.execute = this.handleWindowRemoved.bind(this);\n operations.getBounds.execute = this.handleGetBounds.bind(this);\n operations.getFrameBounds.execute = this.handleGetBounds.bind(this);\n operations.getTitle.execute = this.handleGetTitle.bind(this);\n operations.getUrl.execute = this.handleGetUrl.bind(this);\n operations.moveResize.execute = this.handleMoveResize.bind(this);\n operations.setTitle.execute = this.handleSetTitle.bind(this);\n operations.getChannel.execute = this.handleGetChannel.bind(this);\n }\n\n public my(): IOConnectBrowser.Windows.WebWindow {\n return Object.assign({}, this.me);\n }\n\n private onWindowAdded(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to window added, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"window-added\", callback);\n }\n\n private onWindowRemoved(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to window removed, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"window-removed\", callback);\n }\n\n private onWindowGotFocus(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onWindowGotFocus, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"window-got-focus\", callback);\n }\n\n private onWindowLostFocus(callback: (window: IOConnectBrowser.Windows.WebWindow) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onWindowLostFocus, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"window-lost-focus\", callback);\n }\n\n private async sayHello(): Promise {\n const helloSuccess = await this.bridge.send(\"windows\", operations.windowHello, { windowId: this.publicWindowId });\n\n return helloSuccess;\n }\n\n private async registerWithPlatform(): Promise {\n\n const { windows, isWorkspaceFrame } = await this.sayHello();\n\n this.isWorkspaceFrame = isWorkspaceFrame;\n\n this.logger.trace(\"the platform responded to the hello message\");\n\n // if I am an iframe, I am not considered a Glue Window\n if (!this.isWorkspaceFrame && this.publicWindowId) {\n this.logger.trace(\"i am not treated as a workspace frame, setting my window\");\n\n const myWindow = windows.find((w) => w.windowId === this.publicWindowId);\n\n if (!myWindow) {\n throw new Error(\"Cannot initialize the window library, because I received no information about me from the platform\");\n }\n\n const myProjection = await this.ioc.buildWebWindow(this.publicWindowId, myWindow.name);\n\n this.me = myProjection.api;\n\n this.allWindowProjections.push(myProjection);\n }\n\n const currentWindows = await Promise.all(windows\n .filter((w) => w.windowId !== this.publicWindowId)\n .map((w) => this.ioc.buildWebWindow(w.windowId, w.name))\n );\n\n this.logger.trace(\"all windows projections are completed, building the list collection\");\n\n this.allWindowProjections.push(...currentWindows);\n }\n\n private async handleFocusChangeEvent(focusData: FocusEventData): Promise {\n const foundProjection = this.allWindowProjections.find((projection) => projection.id === focusData.windowId);\n\n if (!foundProjection) {\n return;\n }\n\n foundProjection.model.processSelfFocusEvent(focusData.hasFocus);\n\n const keyToExecute = focusData.hasFocus ? \"window-got-focus\" : \"window-lost-focus\";\n\n this.registry.execute(keyToExecute, foundProjection.api);\n }\n\n private async handleWindowAdded(data: CoreWindowData): Promise {\n if (this.allWindowProjections.some((projection) => projection.id === data.windowId)) {\n return;\n }\n\n const webWindowProjection = await this.ioc.buildWebWindow(data.windowId, data.name);\n this.allWindowProjections.push(webWindowProjection);\n\n this.registry.execute(\"window-added\", webWindowProjection.api);\n }\n\n private async handleWindowRemoved(data: CoreWindowData): Promise {\n const removed = this.allWindowProjections.find((w) => w.id === data.windowId);\n\n if (!removed) {\n return;\n }\n\n this.allWindowProjections = this.allWindowProjections.filter((w) => w.id !== data.windowId);\n\n removed.model.clean();\n\n this.registry.execute(\"window-removed\", removed.api);\n }\n\n private async handleGetBounds(): Promise {\n\n if (!this.me && !this.isWorkspaceFrame) {\n throw new Error(\"This window cannot report it's bounds, because it is not a Glue Window, most likely because it is an iframe\");\n }\n\n // this.me is optional, because this handler responds to a workspace frame bounds request and the frame is not a regular GD window\n return {\n windowId: this.isWorkspaceFrame ? \"noop\" : this.me!.id,\n bounds: {\n top: window.screenTop,\n left: window.screenLeft,\n width: window.innerWidth,\n height: window.innerHeight\n }\n };\n }\n\n private async handleGetTitle(): Promise {\n\n if (!this.me) {\n throw new Error(\"This window cannot report it's title, because it is not a Glue Window, most likely because it is an iframe\");\n }\n\n return {\n windowId: this.me.id,\n title: document.title\n };\n }\n\n private async handleGetUrl(): Promise {\n\n if (!this.me) {\n throw new Error(\"This window cannot report it's url, because it is not a Glue Window, most likely because it is an iframe\");\n }\n\n return {\n windowId: this.me.id,\n url: window.location.href\n };\n }\n\n private async handleMoveResize(config: WindowMoveResizeConfig): Promise {\n\n const targetTop = typeof config.top === \"number\" ? config.top :\n config.relative ? 0 : window.screenTop;\n\n const targetLeft = typeof config.left === \"number\" ? config.left :\n config.relative ? 0 : window.screenLeft;\n\n const targetHeight = typeof config.height === \"number\" ? config.height :\n config.relative ? 0 : window.innerHeight;\n\n const targetWidth = typeof config.width === \"number\" ? config.width :\n config.relative ? 0 : window.innerWidth;\n\n const moveMethod = config.relative ? window.moveBy : window.moveTo;\n const resizeMethod = config.relative ? window.resizeBy : window.resizeTo;\n\n moveMethod(targetLeft, targetTop);\n resizeMethod(targetWidth, targetHeight);\n }\n\n private async handleSetTitle(config: WindowTitleConfig): Promise {\n document.title = config.title;\n }\n\n private async initializeFocusTracking(): Promise {\n\n if (this.isWorkspaceFrame) {\n this.logger.trace(\"Ignoring the focus tracking, because this client is a workspace frame\");\n return;\n }\n\n try {\n await this.bridge.send(\"windows\", systemOperations.operationCheck, { operation: \"focusChange\" });\n } catch (error) {\n this.logger.warn(\"The platform of this client is outdated and does not support focus tracking, disabling focus events for this client.\");\n return;\n }\n\n const hasFocus = document.hasFocus();\n\n // every window when opened gaines focus\n await this.transmitFocusChange(true);\n\n if (!hasFocus) {\n // manual focus lost announce in case focus was lost while Web was initializing\n await this.transmitFocusChange(false);\n }\n\n this.defineEventListeners();\n }\n\n private processFocusEvent(): void {\n const hasFocus = document.hasFocus();\n\n this.transmitFocusChange(hasFocus);\n }\n\n private waitForWindowAdded(windowId: string): Promise {\n\n const foundWindow = this.allWindowProjections.find((projection) => projection.id === windowId);\n\n if (foundWindow) {\n return Promise.resolve(foundWindow.api);\n }\n\n return PromisePlus((resolve) => {\n const unsubscribe = this.onWindowAdded((addedWindow) => {\n if (addedWindow.id === windowId) {\n unsubscribe();\n resolve(addedWindow);\n }\n });\n }, 30000, `Timed out waiting for ${windowId} to be announced`);\n }\n\n private async transmitFocusChange(hasFocus: boolean): Promise {\n\n const eventData: FocusEventData = {\n windowId: this.me?.id || `iframe-${this.instanceId}`,\n hasFocus\n };\n\n if (this.me) {\n this.me.isFocused = hasFocus;\n }\n\n await this.bridge.send(\"windows\", operations.focusChange, eventData);\n }\n\n private defineEventListeners(): void {\n\n this.focusEventHandler = this.processFocusEvent.bind(this);\n\n document.addEventListener(\"visibilityChange\", this.focusEventHandler);\n window.addEventListener(\"focus\", this.focusEventHandler);\n window.addEventListener(\"blur\", this.focusEventHandler);\n }\n\n private async handleGetChannel(): Promise {\n\n if (!this.me) {\n throw new Error(\"This window cannot report it's channel, because it is not a Glue Window, most likely because it is an iframe\");\n }\n\n const channel = this.channelsController.my();\n\n return {\n ...(channel ? { channel } : {}),\n };\n }\n}\n","export const GlueWebPlatformControlName = \"T42.Web.Platform.Control\";\n\nexport const GlueWebPlatformStreamName = \"T42.Web.Platform.Stream\";\n\nexport const GlueClientControlName = \"T42.Web.Client.Control\";\n\nexport const GlueCorePlusThemesStream = \"T42.Core.Plus.Themes.Stream\";","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { libDomainDecoder } from \"../shared/decoders\";\nimport { PromisePlus } from \"../shared/promise-plus\";\nimport { systemOperations } from \"../shared/systemOperations\";\nimport { BridgeOperation, LibController, LibDomains, OperationCheckConfig, OperationCheckResult } from \"../shared/types\";\nimport { GlueClientControlName, GlueCorePlusThemesStream, GlueWebPlatformControlName, GlueWebPlatformStreamName } from \"./constants\";\n\nexport class GlueBridge {\n private readonly platformMethodTimeoutMs = 10000;\n private controllers!: { [key in LibDomains]: LibController };\n private sub!: IOConnectCore.AGM.Subscription;\n private running?: boolean;\n\n constructor(private readonly coreGlue: IOConnectCore.API, private readonly communicationId: string) {}\n\n public get contextLib(): IOConnectCore.Contexts.API {\n return this.coreGlue.contexts;\n }\n\n public get interopInstance(): string | undefined {\n return this.coreGlue.interop.instance.instance;\n }\n\n public async stop(): Promise {\n this.running = false;\n this.sub.close();\n await this.coreGlue.interop.unregister(GlueClientControlName);\n }\n\n public async start(controllers: { [key in LibDomains]: LibController }): Promise {\n this.running = true;\n this.controllers = controllers;\n\n await Promise.all([\n this.checkWaitMethod(GlueWebPlatformControlName),\n this.checkWaitMethod(GlueWebPlatformStreamName)\n ]);\n\n // this systemId will be missing if the platform is older than 1.12.X\n const systemId = this.communicationId;\n\n const [sub] = await Promise.all([\n this.coreGlue.interop.subscribe(GlueWebPlatformStreamName, systemId ? { target: { instance: this.communicationId } } : undefined),\n this.coreGlue.interop.registerAsync(GlueClientControlName, (args, _, success, error) => this.passMessageController(args, success, error))\n ]);\n\n this.sub = sub;\n\n this.sub.onData((pkg) => this.passMessageController(pkg.data));\n }\n\n public getInteropInstance(windowId: string): IOConnectCore.Interop.Instance {\n const result = this.coreGlue.interop.servers().find((s) => s.windowId && s.windowId === windowId);\n\n return {\n application: result?.application,\n applicationName: result?.applicationName,\n peerId: result?.peerId,\n instance: result?.instance,\n windowId: result?.windowId\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public async send(domain: LibDomains, operation: BridgeOperation, operationData: OutBound, options?: IOConnectCore.AGM.InvokeOptions, webOptions?: { includeOperationCheck?: boolean }): Promise {\n\n if (operation.dataDecoder) {\n try {\n operation.dataDecoder.runWithException(operationData);\n } catch (error: any) {\n throw new Error(`Unexpected Web->Platform outgoing validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`);\n }\n }\n\n const operationSupported = webOptions?.includeOperationCheck ? \n (await this.checkOperationSupported(domain, operation)).isSupported :\n true;\n\n if (!operationSupported) {\n throw new Error(`Cannot complete operation: ${operation.name} for domain: ${domain} because this client is connected to a platform which does not support it`);\n }\n\n try {\n const operationResult = await this.transmitMessage(domain, operation, operationData, options);\n\n if (operation.resultDecoder) {\n operation.resultDecoder.runWithException(operationResult);\n }\n\n return operationResult;\n\n } catch (error: any) {\n if (error.kind) {\n throw new Error(`Unexpected Web<-Platform incoming validation error: ${error.message}, for operation: ${operation.name} and input: ${JSON.stringify(error.input)}`);\n }\n throw new Error(error.message);\n }\n }\n\n public async createNotificationsSteam(): Promise {\n const streamExists = this.coreGlue.interop.methods().some((method) => method.name === GlueCorePlusThemesStream);\n\n if (!streamExists) {\n throw new Error(\"Cannot subscribe to theme changes, because the underlying interop stream does not exist. Most likely this is the case when this client is not connected to Core Plus.\");\n }\n\n return this.coreGlue.interop.subscribe(GlueCorePlusThemesStream, this.communicationId ? { target: { instance: this.communicationId } } : undefined);\n }\n\n private async checkOperationSupported(domain: LibDomains, operation: BridgeOperation): Promise {\n try {\n const result = await this.send(domain, systemOperations.operationCheck, { operation: operation.name });\n\n return result;\n } catch (error) {\n return { isSupported: false };\n }\n }\n\n private checkWaitMethod(name: string): Promise {\n return PromisePlus((resolve) => {\n\n const hasMethod = this.coreGlue.interop.methods().some((method) => {\n const nameMatch = method.name === name;\n\n const serverMatch = this.communicationId ?\n method.getServers().some((server) => server.instance === this.communicationId) :\n true;\n\n return nameMatch && serverMatch;\n });\n\n if (hasMethod) {\n return resolve();\n }\n\n const unSub = this.coreGlue.interop.serverMethodAdded((data) => {\n const method = data.method;\n const server = data.server;\n\n const serverMatch = this.communicationId ?\n server.instance === this.communicationId :\n true;\n\n if (method.name === name && serverMatch) {\n unSub();\n resolve();\n }\n });\n\n }, this.platformMethodTimeoutMs, `Cannot initiate Glue Web, because a system method's discovery timed out: ${name}`);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private passMessageController(args: any, success?: (args?: any) => void, error?: (error?: string | object | undefined) => void): void {\n const decodeResult = libDomainDecoder.run(args.domain);\n\n if (!decodeResult.ok) {\n if (error) {\n error(`Cannot execute this client control, because of domain validation error: ${JSON.stringify(decodeResult.error)}`);\n }\n return;\n }\n\n const domain = decodeResult.result;\n\n this.controllers[domain]\n .handleBridgeMessage(args)\n .then((resolutionData: unknown) => {\n if (success) {\n success(resolutionData);\n }\n })\n .catch((err: string | object | undefined) => {\n if (error) {\n error(err);\n }\n console.warn(err);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private async transmitMessage(domain: string, operation: BridgeOperation, data: any, options?: IOConnectCore.AGM.InvokeOptions): Promise {\n\n const messageData = { domain, data, operation: operation.name };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let invocationResult: IOConnectCore.Interop.InvocationResult;\n\n const baseErrorMessage = `Internal Platform Communication Error. Attempted operation: ${JSON.stringify(operation.name)} with data: ${JSON.stringify(data)}. `;\n\n const systemId = this.communicationId;\n\n try {\n\n if (!this.running) {\n throw new Error(\"Cannot send a control message, because the platform shut down\");\n }\n\n invocationResult = await this.coreGlue.interop.invoke(GlueWebPlatformControlName, messageData, systemId ? { instance: this.communicationId } : undefined, options);\n\n if (!invocationResult) {\n throw new Error(\"Received unsupported result from the platform - empty result\");\n }\n\n if (!Array.isArray(invocationResult.all_return_values) || invocationResult.all_return_values.length === 0) {\n throw new Error(\"Received unsupported result from the platform - empty values collection\");\n }\n\n } catch (error: any) {\n if (error && error.all_errors && error.all_errors.length) {\n // IMPORTANT: Do NOT change the `Inner message:` string, because it is used by other programs to extract the inner message of a communication error\n const invocationErrorMessage = error.all_errors[0].message;\n throw new Error(`${baseErrorMessage} -> Inner message: ${invocationErrorMessage}`);\n\n }\n // IMPORTANT: Do NOT change the `Inner message:` string, because it is used by other programs to extract the inner message of a communication error\n throw new Error(`${baseErrorMessage} -> Inner message: ${error.message}`);\n }\n\n return invocationResult.all_return_values[0].returned;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectBrowser } from \"../../browser\";\nimport { appDirectoryStateChangeDecoder, appHelloSuccessDecoder, applicationStartConfigDecoder, appRemoveConfigDecoder, appsExportOperationDecoder, basicInstanceDataDecoder, instanceDataDecoder, windowHelloDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type AppManagerOperationTypes = \"appHello\" | \"appDirectoryStateChange\" | \"instanceStarted\" | \"instanceStopped\" |\n \"applicationStart\" | \"instanceStop\" | \"import\" | \"remove\" | \"export\" | \"clear\";\n\nexport const operations: { [key in AppManagerOperationTypes]: BridgeOperation } = {\n appHello: { name: \"appHello\", dataDecoder: windowHelloDecoder, resultDecoder: appHelloSuccessDecoder },\n appDirectoryStateChange: { name: \"appDirectoryStateChange\", dataDecoder: appDirectoryStateChangeDecoder },\n instanceStarted: { name: \"instanceStarted\", dataDecoder: instanceDataDecoder },\n instanceStopped: { name: \"instanceStopped\", dataDecoder: instanceDataDecoder },\n applicationStart: { name: \"applicationStart\", dataDecoder: applicationStartConfigDecoder, resultDecoder: instanceDataDecoder },\n instanceStop: { name: \"instanceStop\", dataDecoder: basicInstanceDataDecoder },\n import: { name: \"import\" },\n remove: { name: \"remove\", dataDecoder: appRemoveConfigDecoder },\n export: { name: \"export\", resultDecoder: appsExportOperationDecoder },\n clear: { name: \"clear\" }\n};\n\nexport interface InstanceData {\n id: string;\n applicationName: string;\n}\n\nexport interface BaseApplicationData {\n name: string;\n type: string;\n userProperties: any;\n title?: string;\n version?: string;\n icon?: string;\n caption?: string;\n}\n\nexport interface ApplicationData extends BaseApplicationData {\n instances: InstanceData[];\n}\n\nexport interface AppDirectoryStateChange {\n appsAdded: BaseApplicationData[];\n appsChanged: BaseApplicationData[];\n appsRemoved: BaseApplicationData[];\n}\n\nexport interface AppRemoveConfig {\n name: string;\n}\n\nexport interface AppsExportOperation {\n definitions: IOConnectBrowser.AppManager.Definition[];\n}\n\nexport interface AppsImportOperation {\n definitions: Array;\n mode: \"replace\" | \"merge\";\n}\n\nexport interface AppHelloSuccess {\n apps: ApplicationData[];\n initialChannelId?: string;\n}\n\nexport interface ApplicationStartConfig {\n name: string;\n waitForAGMReady: boolean;\n id?: string;\n context?: any;\n top?: number;\n left?: number;\n width?: number;\n height?: number;\n relativeTo?: string;\n relativeDirection?: \"top\" | \"left\" | \"right\" | \"bottom\";\n forceChromeTab?: boolean;\n layoutComponentId?: string;\n channelId?: string;\n}\n\nexport interface BasicInstanceData {\n id: string;\n}\n\nexport interface FDC3Definition {\n name: string;\n title?: string;\n version?: string;\n appId?: string;\n manifest: string;\n manifestType: string;\n tooltip?: string;\n description?: string;\n contactEmail?: string;\n supportEmail?: string;\n publisher?: string;\n images?: Array<{ url?: string }>;\n icons?: Array<{ icon?: string }>;\n customConfig?: any;\n intents?: Intent[];\n}\n\nexport interface Intent {\n name: string;\n displayName?: string;\n contexts?: string[];\n customConfig?: any;\n}\n\nexport interface DefinitionParseResult {\n valid: IOConnectBrowser.AppManager.Definition[];\n invalid: Array<{ app: string; error: string }>;\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { allApplicationDefinitionsDecoder, appManagerOperationTypesDecoder, importModeDecoder, nonEmptyStringDecoder } from \"../shared/decoders\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport { WindowHello } from \"../windows/protocol\";\nimport { AppsImportOperation, AppHelloSuccess, ApplicationStartConfig, AppRemoveConfig, InstanceData, operations, BaseApplicationData, AppsExportOperation, DefinitionParseResult, AppDirectoryStateChange } from \"./protocol\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { ChannelsController } from \"../channels/controller\";\nimport { SessionStorageController } from \"../storage/session\";\n\nexport class AppManagerController implements LibController {\n public me: IOConnectBrowser.AppManager.Instance | undefined;\n\n private baseApplicationsTimeoutMS = 60000;\n private appImportTimeoutMS = 20;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private ioc!: IoC;\n private bridge!: GlueBridge;\n private publicWindowId!: string;\n private applications: IOConnectBrowser.AppManager.Application[] = [];\n private instances: IOConnectBrowser.AppManager.Instance[] = [];\n private platformRegistration!: Promise;\n private logger!: IOConnectBrowser.Logger.API;\n private channelsController!: ChannelsController;\n private sessionController!: SessionStorageController;\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n this.applications = [];\n this.instances = [];\n delete this.me;\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"appManger.controller.web\");\n\n this.logger.trace(\"starting the web appManager controller\");\n\n this.publicWindowId = ioc.publicWindowId;\n\n this.addOperationsExecutors();\n\n this.ioc = ioc;\n this.bridge = ioc.bridge;\n this.channelsController = ioc.channelsController;\n this.sessionController = ioc.sessionController;\n\n this.platformRegistration = this.registerWithPlatform();\n\n await this.platformRegistration;\n\n this.logger.trace(\"registration with the platform successful, attaching the appManager property to glue and returning\");\n\n const api = this.toApi();\n\n (coreGlue as IOConnectBrowser.API).appManager = api;\n }\n\n public async handleBridgeMessage(args: any): Promise {\n await this.platformRegistration;\n\n const operationName = appManagerOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n public onInstanceStarted(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onInstanceStarted requires a single argument of type function\");\n }\n\n return this.registry.add(\"instance-started\", callback, this.instances);\n }\n\n public onInstanceStopped(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onInstanceStopped requires a single argument of type function\");\n }\n\n return this.registry.add(\"instance-stopped\", callback);\n }\n\n public async startApplication(appName: string, context?: object, options?: IOConnectBrowser.AppManager.ApplicationStartOptions): Promise {\n const channels = await this.channelsController.all();\n\n if (options?.channelId && !channels.includes(options.channelId)) {\n throw new Error(`The channel with name \"${options.channelId}\" doesn't exist!`);\n }\n \n // reuseId is a hidden property for workspaces-only use\n // layoutComponentId is a hidden property for global layouts\n // forceChromeTab is a hidden property for extension use only\n const startOptions: ApplicationStartConfig = {\n name: appName,\n waitForAGMReady: options?.waitForAGMReady ?? true,\n context,\n top: options?.top,\n left: options?.left,\n width: options?.width,\n height: options?.height,\n relativeTo: options?.relativeTo,\n relativeDirection: options?.relativeDirection,\n id: (options as any)?.reuseId,\n forceChromeTab: (options as any)?.forceTab,\n layoutComponentId: (options as any)?.layoutComponentId,\n channelId: options?.channelId\n };\n\n const openResult = await this.bridge.send(\"appManager\", operations.applicationStart, startOptions);\n\n const app = this.applications.find((a) => a.name === openResult.applicationName) as IOConnectBrowser.AppManager.Application;\n\n return this.ioc.buildInstance(openResult, app);\n }\n\n public getApplication(name: string): IOConnectBrowser.AppManager.Application {\n const verifiedName = nonEmptyStringDecoder.runWithException(name);\n\n return this.applications.find((app) => app.name === verifiedName) as IOConnectBrowser.AppManager.Application;\n }\n\n public getInstances(): IOConnectBrowser.AppManager.Instance[] {\n return this.instances.slice();\n }\n\n private toApi(): IOConnectBrowser.AppManager.API {\n const api: IOConnectBrowser.AppManager.API = {\n myInstance: this.me as unknown as IOConnectBrowser.AppManager.Instance,\n inMemory: {\n import: this.import.bind(this),\n remove: this.remove.bind(this),\n export: this.export.bind(this),\n clear: this.clear.bind(this)\n },\n application: this.getApplication.bind(this),\n applications: this.getApplications.bind(this),\n instances: this.getInstances.bind(this),\n onAppAdded: this.onAppAdded.bind(this),\n onAppChanged: this.onAppChanged.bind(this),\n onAppRemoved: this.onAppRemoved.bind(this),\n onInstanceStarted: this.onInstanceStarted.bind(this),\n onInstanceStopped: this.onInstanceStopped.bind(this)\n };\n\n return api;\n }\n\n private addOperationsExecutors(): void {\n operations.appDirectoryStateChange.execute = this.handleAppDirectoryStateChange.bind(this);\n operations.instanceStarted.execute = this.handleInstanceStartedMessage.bind(this);\n operations.instanceStopped.execute = this.handleInstanceStoppedMessage.bind(this);\n }\n\n private async handleAppDirectoryStateChange(data: AppDirectoryStateChange): Promise {\n data.appsAdded.forEach(this.handleApplicationAddedMessage.bind(this));\n data.appsChanged.forEach(this.handleApplicationChangedMessage.bind(this));\n data.appsRemoved.forEach(this.handleApplicationRemovedMessage.bind(this));\n }\n\n private onAppAdded(callback: (app: IOConnectBrowser.AppManager.Application) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onAppAdded requires a single argument of type function\");\n }\n\n return this.registry.add(\"application-added\", callback, this.applications);\n }\n\n private onAppRemoved(callback: (app: IOConnectBrowser.AppManager.Application) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onAppRemoved requires a single argument of type function\");\n }\n\n return this.registry.add(\"application-removed\", callback);\n }\n\n private onAppChanged(callback: (app: IOConnectBrowser.AppManager.Application) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onAppChanged requires a single argument of type function\");\n }\n\n return this.registry.add(\"application-changed\", callback);\n }\n\n private async handleApplicationAddedMessage(appData: BaseApplicationData): Promise {\n\n if (this.applications.some((app) => app.name === appData.name)) {\n return;\n }\n\n const app = await this.ioc.buildApplication(appData, []);\n\n const instances = this.instances.filter((instance) => instance.application.name === app.name);\n\n app.instances.push(...instances);\n\n this.applications.push(app);\n\n this.registry.execute(\"application-added\", app);\n }\n\n private async handleApplicationRemovedMessage(appData: BaseApplicationData): Promise {\n const appIndex = this.applications.findIndex((app) => app.name === appData.name);\n\n if (appIndex < 0) {\n return;\n }\n\n const app = this.applications[appIndex];\n\n this.applications.splice(appIndex, 1);\n\n this.registry.execute(\"application-removed\", app);\n }\n\n private async handleApplicationChangedMessage(appData: BaseApplicationData): Promise {\n const app = this.applications.find((app) => app.name === appData.name);\n\n if (!app) {\n return this.handleApplicationAddedMessage(appData);\n }\n\n app.title = appData.title as string;\n app.version = appData.version as string;\n app.icon = appData.icon as string;\n app.caption = appData.caption as string;\n app.userProperties = appData.userProperties;\n\n this.registry.execute(\"application-changed\", app);\n }\n\n private async handleInstanceStartedMessage(instanceData: InstanceData): Promise {\n if (this.instances.some((instance) => instance.id === instanceData.id)) {\n return;\n }\n\n const application = this.applications.find((app) => app.name === instanceData.applicationName);\n\n if (!application) {\n throw new Error(`Cannot add instance: ${instanceData.id}, because there is no application definition associated with it`);\n }\n\n const instance = this.ioc.buildInstance(instanceData, application);\n\n this.instances.push(instance);\n application.instances.push(instance);\n\n this.registry.execute(\"instance-started\", instance);\n }\n\n private async handleInstanceStoppedMessage(instanceData: InstanceData): Promise {\n const instance = this.instances.find((i) => i.id === instanceData.id);\n\n if (instance) {\n const instIdx = this.instances.findIndex((inst) => inst.id === instanceData.id);\n this.instances.splice(instIdx, 1);\n }\n\n const application = this.applications.find((app) => app.instances.some((inst) => inst.id === instanceData.id));\n\n if (application) {\n const instIdxApps = application.instances.findIndex((inst) => inst.id === instanceData.id);\n application.instances.splice(instIdxApps, 1);\n }\n\n if (!instance) {\n return;\n }\n\n this.registry.execute(\"instance-stopped\", instance);\n }\n\n private async import(definitions: IOConnectBrowser.AppManager.Definition[], mode: \"replace\" | \"merge\" = \"replace\"): Promise {\n importModeDecoder.runWithException(mode);\n\n if (!Array.isArray(definitions)) {\n throw new Error(\"Import must be called with an array of definitions\");\n }\n\n if (definitions.length > 10000) {\n throw new Error(\"Cannot import more than 10000 app definitions in Glue42 Core.\");\n }\n\n const parseResult = definitions.reduce((soFar, definition) => {\n\n const decodeResult = allApplicationDefinitionsDecoder.run(definition);\n\n if (!decodeResult.ok) {\n soFar.invalid.push({ app: definition?.name, error: JSON.stringify(decodeResult.error) });\n } else {\n soFar.valid.push(definition);\n }\n\n return soFar;\n }, { valid: [], invalid: [] });\n\n const responseTimeout = this.baseApplicationsTimeoutMS + this.appImportTimeoutMS * parseResult.valid.length;\n\n await this.bridge.send(\"appManager\", operations.import, { definitions: parseResult.valid, mode }, { methodResponseTimeoutMs: responseTimeout });\n\n return {\n imported: parseResult.valid.map((valid) => valid.name),\n errors: parseResult.invalid\n };\n }\n\n private async remove(name: string): Promise {\n nonEmptyStringDecoder.runWithException(name);\n\n await this.bridge.send(\"appManager\", operations.remove, { name }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n }\n\n private async clear(): Promise {\n await this.bridge.send(\"appManager\", operations.clear, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n }\n\n private async export(): Promise {\n\n const response = await this.bridge.send(\"appManager\", operations.export, undefined, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n\n return response.definitions;\n }\n\n public getApplications(): IOConnectBrowser.AppManager.Application[] {\n return this.applications.slice();\n }\n\n private async joinInitialChannel(initialChannelId: string): Promise {\n try {\n await this.channelsController.join(initialChannelId);\n } catch (error) {\n this.logger.warn(`Application instance ${this.me} was unable to join the ${initialChannelId} channel. Reason: ${JSON.stringify(error)}`);\n }\n }\n\n private async registerWithPlatform(): Promise {\n const result = await this.bridge.send(\"appManager\", operations.appHello, { windowId: this.publicWindowId }, { methodResponseTimeoutMs: this.baseApplicationsTimeoutMS });\n\n this.logger.trace(\"the platform responded to the hello message with a full list of apps\");\n\n this.applications = await Promise.all(result.apps.map((app) => this.ioc.buildApplication(app, app.instances)));\n\n this.instances = this.applications.reduce((instancesSoFar, app) => {\n\n instancesSoFar.push(...app.instances);\n\n return instancesSoFar;\n }, []);\n\n this.me = this.findMyInstance();\n\n this.logger.trace(`all applications were parsed and saved. I am ${this.me ? \"NOT a\" : \"a\"} valid instance`);\n\n const { channels: channelsStorageData } = this.sessionController.getWindowData();\n const channel = channelsStorageData ? channelsStorageData.currentName : result.initialChannelId;\n \n if (channel) {\n await this.joinInitialChannel(channel);\n }\n }\n \n private findMyInstance(): IOConnectBrowser.AppManager.Instance | undefined {\n for (const app of this.applications) {\n const foundInstance = app.instances.find((instance) => instance.id === this.publicWindowId);\n\n if (foundInstance) {\n return foundInstance;\n }\n }\n\n // this satisfies the TS \"noImplicitReturns\" true flag\n return undefined;\n }\n}\n","import { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { BasicInstanceData, InstanceData, operations } from \"./protocol\";\n\nexport class InstanceModel {\n private me!: IOConnectBrowser.AppManager.Instance;\n private readonly myCtxKey: string;\n\n constructor(private readonly data: InstanceData, private readonly bridge: GlueBridge, private readonly application: IOConnectBrowser.AppManager.Application) {\n this.myCtxKey = `___instance___${this.data.id}`;\n }\n\n public toApi(): IOConnectBrowser.AppManager.Instance {\n const agm = this.bridge.getInteropInstance(this.data.id);\n\n const api: IOConnectBrowser.AppManager.Instance = {\n id: this.data.id,\n agm,\n application: this.application,\n stop: this.stop.bind(this),\n getContext: this.getContext.bind(this)\n };\n\n this.me = Object.freeze(api);\n\n return this.me;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private async getContext(): Promise {\n return this.bridge.contextLib.get(this.myCtxKey);\n }\n\n private async stop(): Promise {\n await this.bridge.send(\"appManager\", operations.instanceStop, { id: this.data.id });\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { UnsubscribeFunction } from \"callback-registry\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { AppManagerController } from \"./controller\";\nimport { BaseApplicationData } from \"./protocol\";\nimport { startApplicationContextDecoder, startApplicationOptionsDecoder } from \"../shared/decoders\";\n\nexport class ApplicationModel {\n private me!: IOConnectBrowser.AppManager.Application;\n\n constructor(\n private readonly data: BaseApplicationData,\n private readonly instances: IOConnectBrowser.AppManager.Instance[],\n private readonly controller: AppManagerController,\n ) { }\n\n public toApi(): IOConnectBrowser.AppManager.Application {\n const api: IOConnectBrowser.AppManager.Application = {\n name: this.data.name,\n title: this.data.title as string,\n version: this.data.version as string,\n icon: this.data.icon as string,\n caption: this.data.caption as string,\n userProperties: this.data.userProperties,\n instances: this.instances,\n start: this.start.bind(this),\n onInstanceStarted: this.onInstanceStarted.bind(this),\n onInstanceStopped: this.onInstanceStopped.bind(this)\n };\n\n this.me = api;\n\n return this.me;\n }\n\n private onInstanceStarted(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\n\n if (typeof callback !== \"function\") {\n throw new Error(\"OnInstanceStarted requires a single argument of type function\");\n }\n\n return this.controller.onInstanceStarted((instance) => {\n if (instance.application.name === this.data.name) {\n callback(instance);\n }\n });\n }\n\n private onInstanceStopped(callback: (instance: IOConnectBrowser.AppManager.Instance) => any): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"OnInstanceStarted requires a single argument of type function\");\n }\n\n return this.controller.onInstanceStopped((instance) => {\n if (instance.application.name === this.data.name) {\n callback(instance);\n }\n });\n }\n\n private async start(context?: any, options?: IOConnectBrowser.AppManager.ApplicationStartOptions): Promise {\n const verifiedContext = startApplicationContextDecoder.runWithException(context);\n const verifiedOptions = startApplicationOptionsDecoder.runWithException(options);\n\n return this.controller.startApplication(this.data.name, verifiedContext, verifiedOptions);\n }\n}","import { IOConnectBrowser } from \"../../browser\";\nimport { allLayoutsFullConfigDecoder, allLayoutsSummariesResultDecoder, getAllLayoutsConfigDecoder, glueLayoutDecoder, layoutsImportConfigDecoder, optionalSimpleLayoutResult, restoreLayoutConfigDecoder, saveLayoutConfigDecoder, saveRequestClientResponseDecoder, platformSaveRequestConfigDecoder, simpleLayoutConfigDecoder, simpleLayoutResultDecoder, simpleAvailabilityResultDecoder, permissionStateResultDecoder, setDefaultGlobalConfigDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type LayoutsOperationTypes = \"layoutAdded\" | \"layoutChanged\" | \"layoutRemoved\" |\n \"get\" | \"getAll\" | \"export\" | \"import\" | \"remove\" | \"save\" | \"restore\" | \"clientSaveRequest\" |\n \"getGlobalPermissionState\" | \"requestGlobalPermission\" | \"checkGlobalActivated\" | \"getDefaultGlobal\" | \"setDefaultGlobal\" | \"clearDefaultGlobal\";\n\nexport const operations: { [key in LayoutsOperationTypes]: BridgeOperation } = {\n layoutAdded: { name: \"layoutAdded\", dataDecoder: glueLayoutDecoder },\n layoutChanged: { name: \"layoutChanged\", dataDecoder: glueLayoutDecoder },\n layoutRemoved: { name: \"layoutRemoved\", dataDecoder: glueLayoutDecoder },\n get: { name: \"get\", dataDecoder: simpleLayoutConfigDecoder, resultDecoder: optionalSimpleLayoutResult },\n getAll: { name: \"getAll\", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsSummariesResultDecoder },\n export: { name: \"export\", dataDecoder: getAllLayoutsConfigDecoder, resultDecoder: allLayoutsFullConfigDecoder },\n import: { name: \"import\", dataDecoder: layoutsImportConfigDecoder },\n remove: { name: \"remove\", dataDecoder: simpleLayoutConfigDecoder },\n save: { name: \"save\", dataDecoder: saveLayoutConfigDecoder, resultDecoder: simpleLayoutResultDecoder },\n restore: { name: \"restore\", dataDecoder: restoreLayoutConfigDecoder },\n clientSaveRequest: { name: \"clientSaveRequest\", dataDecoder: platformSaveRequestConfigDecoder, resultDecoder: saveRequestClientResponseDecoder },\n getGlobalPermissionState: { name: \"getGlobalPermissionState\", resultDecoder: permissionStateResultDecoder },\n requestGlobalPermission: { name: \"requestGlobalPermission\", resultDecoder: simpleAvailabilityResultDecoder },\n checkGlobalActivated: { name: \"checkGlobalActivated\", resultDecoder: simpleAvailabilityResultDecoder },\n getDefaultGlobal: { name: \"getDefaultGlobal\", resultDecoder: optionalSimpleLayoutResult },\n setDefaultGlobal: { name: \"setDefaultGlobal\", dataDecoder: setDefaultGlobalConfigDecoder },\n clearDefaultGlobal: { name: \"clearDefaultGlobal\" }\n};\n\nexport interface SimpleLayoutConfig {\n name: string;\n type: IOConnectBrowser.Layouts.LayoutType;\n}\n\nexport interface SaveLayoutConfig {\n layout: IOConnectBrowser.Layouts.NewLayoutOptions;\n}\n\nexport interface RestoreLayoutConfig {\n layout: IOConnectBrowser.Layouts.RestoreOptions;\n}\n\nexport interface GetAllLayoutsConfig {\n type: IOConnectBrowser.Layouts.LayoutType;\n}\n\nexport interface LayoutsImportConfig {\n layouts: IOConnectBrowser.Layouts.Layout[];\n mode: \"replace\" | \"merge\";\n isManagerOperation?: boolean;\n}\n\nexport interface AllLayoutsFullConfig {\n layouts: IOConnectBrowser.Layouts.Layout[];\n}\n\nexport interface AllLayoutsSummariesResult {\n summaries: IOConnectBrowser.Layouts.LayoutSummary[];\n}\n\nexport interface SimpleLayoutResult {\n layout: IOConnectBrowser.Layouts.Layout;\n}\n\nexport interface OptionalSimpleLayoutResult {\n layout?: IOConnectBrowser.Layouts.Layout;\n}\n\nexport interface LayoutParseResult {\n valid: IOConnectBrowser.Layouts.Layout[];\n}\n\nexport interface PlatformSaveRequestConfig {\n layoutType: \"Global\" | \"Workspace\";\n layoutName: string;\n context?: any;\n}\n\nexport interface SaveRequestClientResponse {\n windowContext?: any;\n}\n\nexport interface PermissionStateResult {\n state: \"prompt\" | \"granted\" | \"denied\";\n}\n\nexport interface SimpleAvailabilityResult {\n isAvailable: boolean;\n}\n\nexport interface SetDefaultGlobalConfig {\n name: string;\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { glueLayoutDecoder, importModeDecoder, layoutsOperationTypesDecoder, layoutTypeDecoder, newLayoutOptionsDecoder, nonEmptyStringDecoder, restoreOptionsDecoder } from \"../shared/decoders\";\nimport { AllLayoutsFullConfig, AllLayoutsSummariesResult, GetAllLayoutsConfig, LayoutParseResult, LayoutsImportConfig, operations, OptionalSimpleLayoutResult, RestoreLayoutConfig, SaveLayoutConfig, SaveRequestClientResponse, PlatformSaveRequestConfig, SimpleLayoutConfig, SimpleLayoutResult, PermissionStateResult, SimpleAvailabilityResult, SetDefaultGlobalConfig } from \"./protocol\";\nimport { WindowsController } from \"../windows/controller\";\n\nexport class LayoutsController implements LibController {\n private readonly defaultLayoutRestoreTimeoutMS = 120000;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private bridge!: GlueBridge;\n private logger!: IOConnectBrowser.Logger.API;\n private windowsController!: WindowsController;\n private saveRequestSubscription?: (info?: IOConnectBrowser.Layouts.SaveRequestContext) => IOConnectBrowser.Layouts.SaveRequestResponse;\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"layouts.controller.web\");\n\n this.logger.trace(\"starting the web layouts controller\");\n\n this.bridge = ioc.bridge;\n\n this.windowsController = ioc.windowsController;\n\n this.addOperationsExecutors();\n\n const api = this.toApi();\n\n this.logger.trace(\"no need for platform registration, attaching the layouts property to glue and returning\");\n\n (coreGlue as IOConnectBrowser.API).layouts = api;\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = layoutsOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n private toApi(): IOConnectBrowser.Layouts.API {\n const api: IOConnectBrowser.Layouts.API = {\n get: this.get.bind(this),\n getAll: this.getAll.bind(this),\n export: this.export.bind(this),\n import: this.import.bind(this),\n save: this.save.bind(this),\n restore: this.restore.bind(this),\n remove: this.remove.bind(this),\n onAdded: this.onAdded.bind(this),\n onChanged: this.onChanged.bind(this),\n onRemoved: this.onRemoved.bind(this),\n onSaveRequested: this.subscribeOnSaveRequested.bind(this),\n getMultiScreenPermissionState: this.getGlobalPermissionState.bind(this),\n requestMultiScreenPermission: this.requestGlobalPermission.bind(this),\n getGlobalTypeState: this.checkGlobalActivated.bind(this),\n getDefaultGlobal: this.getDefaultGlobal.bind(this),\n setDefaultGlobal: this.setDefaultGlobal.bind(this),\n clearDefaultGlobal: this.clearDefaultGlobal.bind(this)\n };\n\n return Object.freeze(api);\n }\n\n private addOperationsExecutors(): void {\n operations.layoutAdded.execute = this.handleOnAdded.bind(this);\n operations.layoutChanged.execute = this.handleOnChanged.bind(this);\n operations.layoutRemoved.execute = this.handleOnRemoved.bind(this);\n operations.clientSaveRequest.execute = this.handleSaveRequest.bind(this);\n }\n\n private async get(name: string, type: IOConnectBrowser.Layouts.LayoutType): Promise {\n nonEmptyStringDecoder.runWithException(name);\n layoutTypeDecoder.runWithException(type);\n\n const result = await this.bridge.send(\"layouts\", operations.get, { name, type });\n\n return result.layout;\n }\n\n private async getAll(type: IOConnectBrowser.Layouts.LayoutType): Promise {\n layoutTypeDecoder.runWithException(type);\n\n const result = await this.bridge.send(\"layouts\", operations.getAll, { type });\n\n return result.summaries;\n }\n\n private async export(type: IOConnectBrowser.Layouts.LayoutType): Promise {\n layoutTypeDecoder.runWithException(type);\n\n const result = await this.bridge.send(\"layouts\", operations.export, { type });\n\n return result.layouts;\n }\n\n private async import(layouts: IOConnectBrowser.Layouts.Layout[], mode: \"replace\" | \"merge\" = \"replace\"): Promise {\n importModeDecoder.runWithException(mode);\n\n if (!Array.isArray(layouts)) {\n throw new Error(\"Import must be called with an array of layouts\");\n }\n\n if (layouts.length > 1000) {\n throw new Error(\"Cannot import more than 1000 layouts at once in Glue42 Core.\");\n }\n\n const parseResult = layouts.reduce((soFar, layout) => {\n\n const decodeResult = glueLayoutDecoder.run(layout);\n\n if (decodeResult.ok) {\n soFar.valid.push(layout);\n } else {\n this.logger.warn(`A layout with name: ${layout.name} was not imported, because of error: ${JSON.stringify(decodeResult.error)}`);\n }\n\n return soFar;\n\n }, { valid: [] });\n\n const layoutsToImport = layouts.filter((layout) => parseResult.valid.some((validLayout) => validLayout.name === layout.name));\n\n await this.bridge.send(\"layouts\", operations.import, { layouts: layoutsToImport, mode });\n }\n\n private async save(layout: IOConnectBrowser.Layouts.NewLayoutOptions): Promise {\n newLayoutOptionsDecoder.runWithException(layout);\n\n const saveResult = await this.bridge.send(\"layouts\", operations.save, { layout });\n\n return saveResult.layout;\n }\n\n private async restore(options: IOConnectBrowser.Layouts.RestoreOptions): Promise {\n restoreOptionsDecoder.runWithException(options);\n\n // the user-provided timeout needs to be doubled for the invocation in order to allow time for the Global Layouts plugin to correctly honor the user timeout.\n const invocationTimeout = options.timeout ? options.timeout * 2 : this.defaultLayoutRestoreTimeoutMS;\n\n await this.bridge.send(\"layouts\", operations.restore, { layout: options }, { methodResponseTimeoutMs: invocationTimeout });\n }\n\n private async remove(type: IOConnectBrowser.Layouts.LayoutType, name: string): Promise {\n layoutTypeDecoder.runWithException(type);\n nonEmptyStringDecoder.runWithException(name);\n\n await this.bridge.send(\"layouts\", operations.remove, { type, name });\n }\n\n private async handleSaveRequest(config: PlatformSaveRequestConfig): Promise {\n const response: SaveRequestClientResponse = {};\n\n if (this.saveRequestSubscription) {\n try {\n const onSaveRequestResponse = this.saveRequestSubscription(config);\n\n response.windowContext = onSaveRequestResponse?.windowContext;\n } catch (error) {\n this.logger.warn(`An error was thrown by the onSaveRequested callback, ignoring the callback: ${JSON.stringify(error)}`);\n }\n }\n\n return response;\n }\n\n private async getGlobalPermissionState(): Promise<{ state: \"prompt\" | \"granted\" | \"denied\" }> {\n const requestResult = await this.bridge.send(\"layouts\", operations.getGlobalPermissionState, undefined);\n\n return requestResult;\n }\n\n private async requestGlobalPermission(): Promise<{ permissionGranted: boolean }> {\n\n const currentState = (await this.getGlobalPermissionState()).state;\n\n if (currentState === \"denied\") {\n return { permissionGranted: false };\n }\n\n if (currentState === \"granted\") {\n return { permissionGranted: true };\n }\n\n const myWindow = this.windowsController.my();\n\n const globalNamespace = (window as any).glue42core || (window as any).iobrowser;\n\n const amIWorkspaceFrame = globalNamespace.isPlatformFrame;\n\n if (myWindow.name !== \"Platform\" && !amIWorkspaceFrame) {\n throw new Error(\"Cannot request permission for multi-window placement from any app other than the Platform.\");\n }\n\n const requestResult = await this.bridge.send(\"layouts\", operations.requestGlobalPermission, undefined, { methodResponseTimeoutMs: 180000 });\n\n return { permissionGranted: requestResult.isAvailable };\n }\n\n private async checkGlobalActivated(): Promise<{ activated: boolean }> {\n const requestResult = await this.bridge.send(\"layouts\", operations.checkGlobalActivated, undefined);\n\n return { activated: requestResult.isAvailable };\n }\n\n private async getDefaultGlobal(): Promise {\n const requestResult = await this.bridge.send(\"layouts\", operations.getDefaultGlobal, undefined, undefined, { includeOperationCheck: true });\n\n return requestResult.layout;\n }\n\n private async setDefaultGlobal(name: string): Promise {\n nonEmptyStringDecoder.runWithException(name);\n\n await this.bridge.send(\"layouts\", operations.setDefaultGlobal, { name }, undefined, { includeOperationCheck: true });\n }\n\n private async clearDefaultGlobal(): Promise {\n await this.bridge.send(\"layouts\", operations.clearDefaultGlobal, undefined, undefined, { includeOperationCheck: true });\n }\n\n private onAdded(callback: (layout: IOConnectBrowser.Layouts.Layout) => void): UnsubscribeFunction {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.export(\"Global\").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => {});\n this.export(\"Workspace\").then((layouts) => layouts.forEach((layout) => callback(layout))).catch(() => {});\n\n return this.registry.add(operations.layoutAdded.name, callback);\n }\n\n private onChanged(callback: (layout: IOConnectBrowser.Layouts.Layout) => void): UnsubscribeFunction {\n return this.registry.add(operations.layoutChanged.name, callback);\n }\n\n private onRemoved(callback: (layout: IOConnectBrowser.Layouts.Layout) => void): UnsubscribeFunction {\n return this.registry.add(operations.layoutRemoved.name, callback);\n }\n\n private subscribeOnSaveRequested(callback: (info?: IOConnectBrowser.Layouts.SaveRequestContext) => IOConnectBrowser.Layouts.SaveRequestResponse): () => void {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onSaveRequested, because the provided argument is not a valid callback function.\");\n }\n\n if (this.saveRequestSubscription) {\n throw new Error(\"Cannot subscribe to onSaveRequested, because this client has already subscribed and only one subscription is supported. Consider unsubscribing from the initial one.\");\n }\n\n this.saveRequestSubscription = callback;\n\n return () => {\n delete this.saveRequestSubscription;\n };\n }\n\n private async handleOnAdded(layout: IOConnectBrowser.Layouts.Layout): Promise {\n this.registry.execute(operations.layoutAdded.name, layout);\n }\n\n private async handleOnChanged(layout: IOConnectBrowser.Layouts.Layout): Promise {\n this.registry.execute(operations.layoutChanged.name, layout);\n }\n\n private async handleOnRemoved(layout: IOConnectBrowser.Layouts.Layout): Promise {\n this.registry.execute(operations.layoutRemoved.name, layout);\n }\n}","import { IOConnectBrowser } from \"../../browser\";\nimport { activeNotificationsCountChangeDecoder, allNotificationsDataDecoder, notificationEventPayloadDecoder, notificationSetStateRequestDecoder, notificationsConfigurationProtocolDecoder, permissionQueryResultDecoder, permissionRequestResultDecoder, raiseNotificationDecoder, raiseNotificationResultDecoder, simpleNotificationDataDecoder, simpleNotificationSelectDecoder, strictNotificationsConfigurationProtocolDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type NotificationsOperationTypes = \"raiseNotification\" | \"requestPermission\" | \"notificationShow\" | \"notificationClick\" | \"getPermission\" |\n \"list\" | \"notificationRaised\" | \"notificationClosed\" | \"click\" | \"clear\" | \"clearAll\" | \"clearOld\" | \n \"configure\" | \"getConfiguration\" | \"configurationChanged\" | \"setState\" | \"activeCountChange\" | \"stateChange\";\n\nexport type NotificationPermissionTypes = \"default\" | \"granted\" | \"denied\";\n\nexport const operations: { [key in NotificationsOperationTypes]: BridgeOperation } = {\n raiseNotification: { name: \"raiseNotification\", dataDecoder: raiseNotificationDecoder, resultDecoder:raiseNotificationResultDecoder },\n requestPermission: { name: \"requestPermission\", resultDecoder: permissionRequestResultDecoder },\n notificationShow: { name: \"notificationShow\", dataDecoder: notificationEventPayloadDecoder },\n notificationClick: { name: \"notificationClick\", dataDecoder: notificationEventPayloadDecoder },\n getPermission: { name: \"getPermission\", resultDecoder: permissionQueryResultDecoder },\n list: { name: \"list\", resultDecoder: allNotificationsDataDecoder },\n notificationRaised: { name: \"notificationRaised\", dataDecoder: simpleNotificationDataDecoder },\n notificationClosed: { name: \"notificationClosed\", dataDecoder: simpleNotificationSelectDecoder },\n click: { name: \"click\" },\n clear: { name: \"clear\" },\n clearAll: { name: \"clearAll\" },\n clearOld: { name: \"clearOld\" },\n configure: { name: \"configure\", dataDecoder: notificationsConfigurationProtocolDecoder },\n getConfiguration: { name: \"getConfiguration\", resultDecoder: strictNotificationsConfigurationProtocolDecoder },\n configurationChanged: { name: \"configurationChanged\", resultDecoder: strictNotificationsConfigurationProtocolDecoder },\n setState: { name: \"setState\", dataDecoder: notificationSetStateRequestDecoder },\n activeCountChange: { name: \"activeCountChange\", resultDecoder: activeNotificationsCountChangeDecoder },\n stateChange: { name: \"stateChange\", resultDecoder: notificationSetStateRequestDecoder }\n};\n\nexport interface RaiseNotification {\n settings: IOConnectBrowser.Notifications.RaiseOptions;\n id: string;\n}\n\nexport interface RaiseNotificationResult {\n settings: IOConnectBrowser.Notifications.RaiseOptions;\n}\n\nexport interface PermissionRequestResult {\n permissionGranted: boolean;\n}\n\nexport interface PermissionQueryResult {\n permission: NotificationPermissionTypes;\n}\n\nexport interface NotificationEventPayload {\n definition: IOConnectBrowser.Notifications.NotificationDefinition;\n action?: string;\n id?: string;\n}\n\nexport interface SimpleNotificationData {\n notification: IOConnectBrowser.Notifications.NotificationData;\n}\n\nexport interface AllNotificationsData {\n notifications: IOConnectBrowser.Notifications.NotificationData[];\n}\n\nexport interface NotificationClickConfig {\n id: string;\n action?: string;\n}\n\nexport interface SimpleNotificationSelect {\n id: string;\n}\n\nexport interface NotificationsConfigurationProtocol {\n configuration: IOConnectBrowser.Notifications.Configuration;\n}\n\nexport interface StrictSourceFiler extends IOConnectBrowser.Notifications.NotificationFilter {\n allowed: NonNullable;\n blocked: NonNullable;\n}\n\nexport interface StrictConfiguration extends IOConnectBrowser.Notifications.Configuration {\n enable: NonNullable;\n enableToasts: NonNullable;\n sourceFilter: StrictSourceFiler;\n}\n\nexport interface StrictNotificationsConfigurationProtocol {\n configuration: StrictConfiguration;\n}\n\nexport interface NotificationSetStateRequest {\n id: string;\n state: IOConnectBrowser.Notifications.State;\n}\n\nexport interface ActiveNotificationsCountChange {\n count: number;\n}\n","'use strict';\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n seed = (seed * 9301 + 49297) % 233280;\n return seed/(233280.0);\n}\n\nfunction setSeed(_seed_) {\n seed = _seed_;\n}\n\nmodule.exports = {\n nextValue: getNextValue,\n seed: setSeed\n};\n","'use strict';\n\nvar randomFromSeed = require('./random/random-from-seed');\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet !== ORIGINAL) {\n alphabet = ORIGINAL;\n reset();\n }\n return;\n }\n\n if (_alphabet_ === alphabet) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function(item, ind, arr){\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet = _alphabet_;\n reset();\n}\n\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet;\n}\n\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\n\nfunction shuffle() {\n if (!alphabet) {\n setCharacters(ORIGINAL);\n }\n\n var sourceArray = alphabet.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get () {\n return alphabet || ORIGINAL;\n}\n\nmodule.exports = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};\n","'use strict';\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nmodule.exports = randomByte;\n","// This file replaces `format.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nmodule.exports = function (random, alphabet, size) {\n // We can’t use bytes bigger than the alphabet. To make bytes values closer\n // to the alphabet, we apply bitmask on them. We look for the closest\n // `2 ** x - 1` number, which will be bigger than alphabet size. If we have\n // 30 symbols in the alphabet, we will take 31 (00011111).\n // We do not use faster Math.clz32, because it is not available in browsers.\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1\n // Bitmask is not a perfect solution (in our example it will pass 31 bytes,\n // which is bigger than the alphabet). As a result, we will need more bytes,\n // than ID size, because we will refuse bytes bigger than the alphabet.\n\n // Every hardware random generator call is costly,\n // because we need to wait for entropy collection. This is why often it will\n // be faster to ask for few extra bytes in advance, to avoid additional calls.\n\n // Here we calculate how many random bytes should we call in advance.\n // It depends on ID length, mask / alphabet size and magic number 1.6\n // (which was selected according benchmarks).\n\n // -~f => Math.ceil(f) if n is float number\n // -~i => i + 1 if n is integer number\n var step = -~(1.6 * mask * size / alphabet.length)\n var id = ''\n\n while (true) {\n var bytes = random(step)\n // Compact alternative for `for (var i = 0; i < step; i++)`\n var i = step\n while (i--) {\n // If random byte is bigger than alphabet even after bitmask,\n // we refuse it by `|| ''`.\n id += alphabet[bytes[i] & mask] || ''\n // More compact than `id.length + 1 === size`\n if (id.length === +size) return id\n }\n }\n}\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar random = require('./random/random-byte');\nvar format = require('nanoid/format');\n\nfunction generate(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format(random, alphabet.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nmodule.exports = generate;\n","'use strict';\n\nvar generate = require('./generate');\nvar alphabet = require('./alphabet');\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nmodule.exports = build;\n","'use strict';\nvar alphabet = require('./alphabet');\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nmodule.exports = isShortId;\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar build = require('./build');\nvar isValid = require('./is-valid');\n\n// if you are using cluster or multiple servers use this to make each instance\n// has a unique value for worker\n// Note: I don't know if this is automatically set when using third\n// party cluster solutions such as pm2.\nvar clusterWorkerId = require('./util/cluster-worker-id') || 0;\n\n/**\n * Set the seed.\n * Highly recommended if you don't want people to try to figure out your id schema.\n * exposed as shortid.seed(int)\n * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n */\nfunction seed(seedValue) {\n alphabet.seed(seedValue);\n return module.exports;\n}\n\n/**\n * Set the cluster worker or machine id\n * exposed as shortid.worker(int)\n * @param workerId worker must be positive integer. Number less than 16 is recommended.\n * returns shortid module so it can be chained.\n */\nfunction worker(workerId) {\n clusterWorkerId = workerId;\n return module.exports;\n}\n\n/**\n *\n * sets new characters to use in the alphabet\n * returns the shuffled alphabet\n */\nfunction characters(newCharacters) {\n if (newCharacters !== undefined) {\n alphabet.characters(newCharacters);\n }\n\n return alphabet.shuffled();\n}\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction generate() {\n return build(clusterWorkerId);\n}\n\n// Export all other functions as properties of the generate function\nmodule.exports = generate;\nmodule.exports.generate = generate;\nmodule.exports.seed = seed;\nmodule.exports.worker = worker;\nmodule.exports.characters = characters;\nmodule.exports.isValid = isValid;\n","'use strict';\nmodule.exports = require('./lib/index');\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { glue42NotificationOptionsDecoder, nonEmptyStringDecoder, notificationFilterDecoder, notificationStateDecoder, notificationsConfigurationDecoder, notificationsOperationTypesDecoder } from \"../shared/decoders\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport { ActiveNotificationsCountChange, AllNotificationsData, NotificationClickConfig, NotificationEventPayload, NotificationsConfigurationProtocol, NotificationSetStateRequest, operations, PermissionQueryResult, PermissionRequestResult, RaiseNotification, RaiseNotificationResult, SimpleNotificationData, SimpleNotificationSelect, StrictNotificationsConfigurationProtocol } from \"./protocol\";\nimport { generate } from \"shortid\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction\n} from \"callback-registry\";\n\nexport class NotificationsController implements LibController {\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private logger!: IOConnectBrowser.Logger.API;\n private bridge!: GlueBridge;\n private notificationsSettings?: IOConnectBrowser.Notifications.Settings;\n private notifications: { [key in string]: IOConnectBrowser.Notifications.Notification } = {};\n private coreGlue!: IOConnectCore.API;\n private buildNotificationFunc!: (config: IOConnectBrowser.Notifications.RaiseOptions, id: string) => IOConnectBrowser.Notifications.Notification;\n\n public handlePlatformShutdown(): void {\n this.notifications = {};\n this.registry.clear();\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"notifications.controller.web\");\n\n this.logger.trace(\"starting the web notifications controller\");\n\n this.bridge = ioc.bridge;\n\n this.coreGlue = coreGlue;\n\n this.notificationsSettings = ioc.config.notifications;\n\n this.buildNotificationFunc = ioc.buildNotification;\n\n const api = this.toApi();\n\n this.addOperationExecutors();\n\n (coreGlue as IOConnectBrowser.API).notifications = api;\n\n this.logger.trace(\"notifications are ready\");\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = notificationsOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n private toApi(): IOConnectBrowser.Notifications.API {\n const api: IOConnectBrowser.Notifications.API = {\n raise: this.raise.bind(this),\n requestPermission: this.requestPermission.bind(this),\n getPermission: this.getPermission.bind(this),\n list: this.list.bind(this),\n onRaised: this.onRaised.bind(this),\n onClosed: this.onClosed.bind(this),\n click: this.click.bind(this),\n clear: this.clear.bind(this),\n clearAll: this.clearAll.bind(this),\n clearOld: this.clearOld.bind(this),\n configure: this.configure.bind(this),\n getConfiguration: this.getConfiguration.bind(this),\n getFilter: this.getFilter.bind(this),\n setFilter: this.setFilter.bind(this),\n setState: this.setState.bind(this),\n onConfigurationChanged: this.onConfigurationChanged.bind(this),\n onActiveCountChanged: this.onActiveCountChanged.bind(this),\n onStateChanged: this.onStateChanged.bind(this)\n };\n\n return Object.freeze(api);\n }\n\n private async getPermission(): Promise<\"default\" | \"granted\" | \"denied\"> {\n\n const queryResult = await this.bridge.send(\"notifications\", operations.getPermission, undefined);\n\n return queryResult.permission;\n }\n\n private async requestPermission(): Promise {\n\n const permissionResult = await this.bridge.send(\"notifications\", operations.requestPermission, undefined);\n\n return permissionResult.permissionGranted;\n }\n\n private async raise(options: IOConnectBrowser.Notifications.RaiseOptions): Promise {\n const settings = glue42NotificationOptionsDecoder.runWithException(options);\n\n settings.showToast = typeof settings.showToast === \"boolean\" ? settings.showToast : true;\n settings.showInPanel = typeof settings.showInPanel === \"boolean\" ? settings.showInPanel : true;\n\n const permissionGranted = await this.requestPermission();\n\n if (!permissionGranted) {\n throw new Error(\"Cannot raise the notification, because the user has declined the permission request\");\n }\n\n const id = generate();\n\n const raiseResult = await this.bridge.send(\"notifications\", operations.raiseNotification, { settings, id });\n\n const notification = this.buildNotificationFunc(raiseResult.settings, id);\n\n this.notifications[id] = notification;\n\n return notification;\n }\n\n private async list(): Promise {\n const bridgeResponse = await this.bridge.send(\"notifications\", operations.list, undefined, undefined, { includeOperationCheck: true });\n\n return bridgeResponse.notifications;\n }\n\n private onRaised(callback: (notification: IOConnectBrowser.Notifications.NotificationData) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onRaised expects a callback of type function\");\n }\n\n return this.registry.add(\"notification-raised\", callback);\n }\n\n private onClosed(callback: (notification: SimpleNotificationSelect) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"onRaised expects a callback of type function\");\n }\n\n return this.registry.add(\"notification-closed\", callback);\n }\n\n private async click(id: string, action?: string): Promise {\n nonEmptyStringDecoder.runWithException(id);\n\n if (action) {\n nonEmptyStringDecoder.runWithException(action);\n }\n\n await this.bridge.send(\"notifications\", operations.click, { id, action }, undefined, { includeOperationCheck: true });\n }\n\n private async clear(id: string): Promise {\n nonEmptyStringDecoder.runWithException(id);\n\n await this.bridge.send(\"notifications\", operations.clear, { id }, undefined, { includeOperationCheck: true });\n }\n\n private async clearAll(): Promise {\n await this.bridge.send(\"notifications\", operations.clearAll, undefined, undefined, { includeOperationCheck: true });\n }\n\n private async clearOld(): Promise {\n await this.bridge.send(\"notifications\", operations.clearOld, undefined, undefined, { includeOperationCheck: true });\n }\n\n private async configure(config: IOConnectBrowser.Notifications.Configuration): Promise {\n const verifiedConfig = notificationsConfigurationDecoder.runWithException(config);\n\n await this.bridge.send(\"notifications\", operations.configure, { configuration: verifiedConfig }, undefined, { includeOperationCheck: true });\n }\n\n private async getConfiguration(): Promise {\n const response = await this.bridge.send(\"notifications\", operations.getConfiguration, undefined, undefined, { includeOperationCheck: true });\n\n return response.configuration;\n }\n\n private async getFilter(): Promise {\n const response = await this.bridge.send(\"notifications\", operations.getConfiguration, undefined, undefined, { includeOperationCheck: true });\n\n return response.configuration.sourceFilter;\n }\n\n private async setFilter(filter: IOConnectBrowser.Notifications.NotificationFilter): Promise {\n const verifiedFilter = notificationFilterDecoder.runWithException(filter);\n\n await this.bridge.send(\"notifications\", operations.configure, { configuration: { sourceFilter: verifiedFilter } }, undefined, { includeOperationCheck: true });\n\n return verifiedFilter;\n }\n\n private async setState(id: string, state: IOConnectBrowser.Notifications.State): Promise {\n nonEmptyStringDecoder.runWithException(id);\n notificationStateDecoder.runWithException(state);\n\n await this.bridge.send(\"notifications\", operations.setState, { id, state }, undefined, { includeOperationCheck: true });\n }\n\n private onConfigurationChanged(callback: (config: IOConnectBrowser.Notifications.Configuration) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to configuration changed, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"notifications-config-changed\", callback);\n }\n\n private onActiveCountChanged(callback: (info: { count: number; }) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onActiveCountChanged changed, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"notifications-active-count-changed\", callback);\n }\n\n private onStateChanged(callback: (notification: { id: string; }, state: IOConnectBrowser.Notifications.State) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to onStateChanged changed, because the provided callback is not a function!\");\n }\n\n return this.registry.add(\"notification-state-changed\", callback);\n }\n\n private addOperationExecutors(): void {\n operations.notificationShow.execute = this.handleNotificationShow.bind(this);\n operations.notificationClick.execute = this.handleNotificationClick.bind(this);\n operations.notificationRaised.execute = this.handleNotificationRaised.bind(this);\n operations.notificationClosed.execute = this.handleNotificationClosed.bind(this);\n operations.configurationChanged.execute = this.handleConfigurationChanged.bind(this);\n operations.activeCountChange.execute = this.handleActiveCountChanged.bind(this);\n operations.stateChange.execute = this.handleNotificationStateChanged.bind(this);\n }\n\n private async handleConfigurationChanged(data: StrictNotificationsConfigurationProtocol): Promise {\n this.registry.execute(\"notifications-config-changed\", data.configuration);\n }\n\n private async handleActiveCountChanged(data: ActiveNotificationsCountChange): Promise {\n this.registry.execute(\"notifications-active-count-changed\", data);\n }\n\n private async handleNotificationStateChanged(data: NotificationSetStateRequest): Promise {\n this.registry.execute(\"notification-state-changed\", {id: data.id}, data.state);\n }\n\n private async handleNotificationShow(data: NotificationEventPayload): Promise {\n\n if (!data.id) {\n return;\n }\n\n const notification = this.notifications[data.id];\n if (notification && notification.onshow) {\n notification.onshow();\n }\n }\n\n private async handleNotificationClick(data: NotificationEventPayload): Promise {\n\n if (!data.action && this.notificationsSettings?.defaultClick) {\n this.notificationsSettings.defaultClick(this.coreGlue as IOConnectBrowser.API, data.definition);\n }\n\n if (data.action && this.notificationsSettings?.actionClicks?.some((actionDef) => actionDef.action === data.action)) {\n const foundHandler = this.notificationsSettings?.actionClicks?.find((actionDef) => actionDef.action === data.action) as IOConnectBrowser.Notifications.ActionClickHandler;\n\n foundHandler.handler(this.coreGlue as IOConnectBrowser.API, data.definition);\n }\n\n if (!data.id) {\n return;\n }\n\n const notification = this.notifications[data.id];\n\n if (notification && notification.onclick) {\n notification.onclick();\n delete this.notifications[data.id];\n }\n\n }\n\n private async handleNotificationRaised(data: SimpleNotificationData): Promise {\n this.registry.execute(\"notification-raised\", data.notification);\n }\n\n private async handleNotificationClosed(data: SimpleNotificationSelect): Promise {\n this.registry.execute(\"notification-closed\", data);\n }\n}\n","import { IOConnectBrowser } from \"../../browser\";\nimport { wrappedIntentFilterDecoder, intentRequestDecoder, intentResultDecoder, wrappedIntentsDecoder, raiseIntentRequestDecoder, filterHandlersResultDecoder, filterHandlersWithResolverConfigDecoder, intentHandlerDecoder, getIntentsResultDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type IntentsOperationTypes = \"getIntents\" | \"findIntent\" | \"raiseIntent\" | \"raise\" | \"filterHandlers\" | \"getIntentsByHandler\";\n\nexport const operations: { [key in IntentsOperationTypes]: BridgeOperation } = {\n getIntents: { name: \"getIntents\", resultDecoder: wrappedIntentsDecoder },\n findIntent: { name: \"findIntent\", dataDecoder: wrappedIntentFilterDecoder, resultDecoder: wrappedIntentsDecoder },\n raiseIntent: { name: \"raiseIntent\", dataDecoder: intentRequestDecoder, resultDecoder: intentResultDecoder },\n raise: { name: \"raise\", dataDecoder: raiseIntentRequestDecoder, resultDecoder: intentResultDecoder },\n filterHandlers: { name: \"filterHandlers\", dataDecoder: filterHandlersWithResolverConfigDecoder, resultDecoder: filterHandlersResultDecoder },\n getIntentsByHandler: { name: \"getIntentsByHandler\", dataDecoder: intentHandlerDecoder, resultDecoder: getIntentsResultDecoder }\n};\n\nexport interface WrappedIntentFilter {\n filter?: IOConnectBrowser.Intents.IntentFilter;\n}\n\nexport interface WrappedIntents {\n intents: IOConnectBrowser.Intents.Intent[];\n}\n\nexport interface IntentsResolverResponse {\n intent: string;\n handler: IOConnectBrowser.Intents.IntentHandler;\n}\n\nexport interface IntentsResolverResponsePromise {\n intent: string;\n methodName: string;\n promise: Promise;\n resolve: (arg: IntentsResolverResponse) => void;\n reject: (reason: string) => void;\n}\n\nexport interface RaiseIntentArgs extends IOConnectBrowser.Intents.IntentContext {\n _initialCallerId: string;\n}","export const GLUE42_FDC3_INTENTS_METHOD_PREFIX = \"Tick42.FDC3.Intents.\";\n\nexport const INTENTS_RESOLVER_INTEROP_PREFIX = \"T42.Intents.Resolver.Control.\";\n\nexport const INTENTS_RESOLVER_APP_NAME = \"intentsResolver\";\n\nexport const DEFAULT_RESOLVER_RESPONSE_TIMEOUT = 60 * 1000;\n\nexport const ADDITIONAL_BRIDGE_OPERATION_TIMEOUT = 30 * 1000;\n\nexport const INTENTS_RESOLVER_WIDTH = 400;\n\nexport const INTENTS_RESOLVER_HEIGHT = 440;\n\n// JS setTimeout max value - When delay is larger than 2147483647 or less than 1, the delay will be set to 1\nexport const MAX_SET_TIMEOUT_DELAY = 2147483647;\n\nexport const DEFAULT_PICK_HANDLER_BY_TIMEOUT = 90 * 1000;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController, OperationCheckConfig, OperationCheckResult } from \"../shared/types\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { UnsubscribeFunction } from \"callback-registry\";\nimport { intentsOperationTypesDecoder, raiseRequestDecoder, findFilterDecoder, AddIntentListenerDecoder, handlersFilterDecoder, intentHandlerDecoder } from \"../shared/decoders\";\nimport { operations, RaiseIntentArgs, WrappedIntentFilter, WrappedIntents } from \"./protocol\";\nimport { ADDITIONAL_BRIDGE_OPERATION_TIMEOUT, DEFAULT_PICK_HANDLER_BY_TIMEOUT, DEFAULT_RESOLVER_RESPONSE_TIMEOUT, GLUE42_FDC3_INTENTS_METHOD_PREFIX, INTENTS_RESOLVER_APP_NAME, MAX_SET_TIMEOUT_DELAY } from \"./constants\";\nimport { LegacyIntentsHelper } from \"./legacyHelper\";\nimport { systemOperations } from \"../shared/systemOperations\";\nimport { FilterHandlersWithResolverConfig, ResolverConfig, IntentRequestWithResolverConfig, IsRaiseOperationSupported, GetResolverConfigByRequestArgs } from \"./types\"; \n\nexport class IntentsController implements LibController {\n private bridge!: GlueBridge;\n private logger!: IOConnectBrowser.Logger.API;\n private interop!: IOConnectCore.AGM.API;\n private legacyIntentsController!: LegacyIntentsHelper;\n private myIntents = new Set();\n\n private useIntentsResolverUI = true;\n private intentsResolverAppName!: string;\n private intentResolverResponseTimeout!: number;\n\n private unregisterIntentPromises: Promise[] = [];\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"intents.controller.web\");\n\n this.logger.trace(\"starting the web intents controller\");\n\n this.bridge = ioc.bridge;\n\n this.interop = coreGlue.interop;\n\n this.legacyIntentsController = ioc.legacyIntentsHelper;\n\n this.checkIfIntentsResolverIsEnabled(ioc.config);\n\n const api = this.toApi();\n\n this.logger.trace(\"no need for platform registration, attaching the intents property to glue and returning\");\n\n (coreGlue as IOConnectBrowser.API).intents = api;\n }\n\n public handlePlatformShutdown(): void {\n this.myIntents = new Set();\n this.unregisterIntentPromises = [];\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = intentsOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n private toApi(): IOConnectBrowser.Intents.API {\n const api: IOConnectBrowser.Intents.API = {\n raise: this.raise.bind(this),\n all: this.all.bind(this),\n addIntentListener: this.addIntentListener.bind(this),\n register: this.register.bind(this),\n find: this.find.bind(this),\n filterHandlers: this.filterHandlers.bind(this),\n getIntents: this.getIntentsByHandler.bind(this)\n };\n\n return api;\n }\n\n private async raise(request: string | IOConnectBrowser.Intents.IntentRequest): Promise {\n const validatedIntentRequest = raiseRequestDecoder.runWithException(request);\n\n const intentRequest: IOConnectBrowser.Intents.IntentRequest = typeof validatedIntentRequest === \"string\"\n ? { intent: validatedIntentRequest }\n : validatedIntentRequest;\n\n await Promise.all(this.unregisterIntentPromises);\n\n const requestWithResolverInfo = { intentRequest, resolverConfig: this.getResolverConfigByRequest({ intentRequest }) };\n\n const isRaiseOperationSupported = await this.isRaiseOperationSupported();\n\n if (!isRaiseOperationSupported.supported) {\n this.logger.warn(`${isRaiseOperationSupported.reason}. Invoking legacy raise method`);\n\n return this.legacyIntentsController.raise(requestWithResolverInfo, this.find.bind(this));\n }\n\n this.logger.trace(`Sending raise request to the platform: ${JSON.stringify(request)} and method response timeout of ${this.intentResolverResponseTimeout}ms`);\n\n // waitUserResponseIndefinitely: true -> methodResponseTimeoutMs: Number.MAX_SAFE_INTEGER\n const methodResponseTimeoutMs = intentRequest.waitUserResponseIndefinitely \n ? MAX_SET_TIMEOUT_DELAY\n : (intentRequest.timeout || this.intentResolverResponseTimeout) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT;\n\n const response = await this.bridge.send(\"intents\", operations.raise, requestWithResolverInfo, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs });\n\n return response;\n }\n\n private getResolverConfigByRequest(filter: GetResolverConfigByRequestArgs): ResolverConfig {\n if (filter.handlerFilter) {\n return {\n enabled: typeof filter.handlerFilter?.openResolver === \"boolean\" ? filter.handlerFilter?.openResolver : this.useIntentsResolverUI,\n appName: this.intentsResolverAppName,\n waitResponseTimeout: filter.handlerFilter?.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT\n };\n }\n\n\n // if waitUserResponseIndefinitely: true -> ignore resolver timeout and wait for eternity until the user chooses a handler\n const waitResponseTimeout = filter.intentRequest?.waitUserResponseIndefinitely ? MAX_SET_TIMEOUT_DELAY : this.intentResolverResponseTimeout;\n\n return { \n enabled: this.useIntentsResolverUI,\n appName: this.intentsResolverAppName,\n waitResponseTimeout\n };\n }\n\n private async isRaiseOperationSupported(): Promise {\n try {\n const { isSupported } = await this.bridge.send(\"intents\", systemOperations.operationCheck, { operation: \"raise\" });\n\n return {\n supported: isSupported,\n reason: isSupported ? \"\" : \"The platform of this client is outdated and does not support \\\"raise\\\" operation\"\n };\n } catch (error) {\n return {\n supported: false,\n reason: \"The platform of this client is outdated and does not support \\\"operationCheck\\\" command\"\n };\n }\n }\n\n private async all(): Promise {\n await Promise.all(this.unregisterIntentPromises);\n\n const result = await this.bridge.send(\"intents\", operations.getIntents, undefined);\n\n return result.intents;\n }\n\n private addIntentListener(intent: string | IOConnectBrowser.Intents.AddIntentListenerRequest, handler: (context: IOConnectBrowser.Intents.IntentContext) => any): { unsubscribe: UnsubscribeFunction } {\n AddIntentListenerDecoder.runWithException(intent);\n if (typeof handler !== \"function\") {\n throw new Error(\"Cannot add intent listener, because the provided handler is not a function!\");\n }\n\n // eslint-disable-next-line prefer-const\n let registerPromise: Promise;\n\n // `addIntentListener()` is sync.\n const intentName = typeof intent === \"string\" ? intent : intent.intent;\n const methodName = this.buildInteropMethodName(intentName);\n\n const alreadyRegistered = this.myIntents.has(intentName);\n\n if (alreadyRegistered) {\n throw new Error(`Intent listener for intent ${intentName} already registered!`);\n }\n this.myIntents.add(intentName);\n\n const result = {\n unsubscribe: (): void => {\n this.myIntents.delete(intentName);\n\n registerPromise\n .then(() => this.interop.unregister(methodName))\n .catch((err) => this.logger.trace(`Unregistration of a method with name ${methodName} failed with reason: ${err}`));\n }\n };\n\n let intentFlag: Omit = {};\n\n if (typeof intent === \"object\") {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { intent: removed, ...rest } = intent;\n intentFlag = rest;\n }\n\n registerPromise = this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args: RaiseIntentArgs) => {\n if (this.myIntents.has(intentName)) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { _initialCallerId, ...rest } = args;\n\n return handler(rest);\n }\n });\n\n registerPromise.catch(err => {\n this.myIntents.delete(intentName);\n\n this.logger.warn(`Registration of a method with name ${methodName} failed with reason: ${err}`);\n });\n\n return result;\n }\n\n private async register(intent: string | IOConnectBrowser.Intents.AddIntentListenerRequest, handler: (context: IOConnectBrowser.Intents.IntentContext, caller?: IOConnectCore.Interop.Instance) => any): Promise<{ unsubscribe: UnsubscribeFunction }> {\n AddIntentListenerDecoder.runWithException(intent);\n\n if (typeof handler !== \"function\") {\n throw new Error(\"Cannot add intent listener, because the provided handler is not a function!\");\n }\n\n await Promise.all(this.unregisterIntentPromises);\n\n const intentName = typeof intent === \"string\" ? intent : intent.intent;\n const methodName = this.buildInteropMethodName(intentName);\n\n const alreadyRegistered = this.myIntents.has(intentName);\n\n if (alreadyRegistered) {\n throw new Error(`Intent listener for intent ${intentName} already registered!`);\n }\n this.myIntents.add(intentName);\n\n let intentFlag: Omit = {};\n\n if (typeof intent === \"object\") {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { intent: removed, ...rest } = intent;\n intentFlag = rest;\n }\n\n try {\n await this.interop.register({ name: methodName, flags: { intent: intentFlag } }, (args: RaiseIntentArgs) => {\n if (this.myIntents.has(intentName)) {\n const { _initialCallerId, ...rest } = args;\n\n const caller = this.interop.servers().find((server) => server.instance === _initialCallerId);\n\n return handler(rest, caller);\n }\n });\n } catch (err) {\n this.myIntents.delete(intentName);\n\n throw new Error(`Registration of a method with name ${methodName} failed with reason: ${JSON.stringify(err)}`);\n }\n\n return {\n unsubscribe: () => this.unsubscribeIntent(intentName)\n };\n }\n\n private async find(intentFilter?: string | IOConnectBrowser.Intents.IntentFilter): Promise {\n let data: WrappedIntentFilter | undefined = undefined;\n\n if (typeof intentFilter !== \"undefined\") {\n const intentFilterObj = findFilterDecoder.runWithException(intentFilter);\n\n if (typeof intentFilterObj === \"string\") {\n data = {\n filter: {\n name: intentFilterObj\n }\n };\n } else if (typeof intentFilterObj === \"object\") {\n data = {\n filter: intentFilterObj\n };\n }\n }\n\n await Promise.all(this.unregisterIntentPromises);\n\n const result = await this.bridge.send(\"intents\", operations.findIntent, data);\n\n return result.intents;\n }\n\n private checkIfIntentsResolverIsEnabled(options: IOConnectBrowser.Config): void {\n this.useIntentsResolverUI = typeof options.intents?.enableIntentsResolverUI === \"boolean\"\n ? options.intents.enableIntentsResolverUI\n : true;\n\n this.intentsResolverAppName = options.intents?.intentsResolverAppName ?? INTENTS_RESOLVER_APP_NAME;\n\n this.intentResolverResponseTimeout = options.intents?.methodResponseTimeoutMs ?? DEFAULT_RESOLVER_RESPONSE_TIMEOUT;\n }\n\n private clearUnregistrationPromise(promiseToRemove: Promise): void {\n this.unregisterIntentPromises = this.unregisterIntentPromises.filter(promise => promise !== promiseToRemove);\n }\n\n private buildInteropMethodName(intentName: string): string {\n return `${GLUE42_FDC3_INTENTS_METHOD_PREFIX}${intentName}`;\n }\n\n private unsubscribeIntent(intentName: string): void {\n this.myIntents.delete(intentName);\n\n const methodName = this.buildInteropMethodName(intentName);\n\n // typings are wrong and mark unregister as a sync method\n const unregisterPromise = this.interop.unregister(methodName) as unknown as Promise;\n\n this.unregisterIntentPromises.push(unregisterPromise);\n\n unregisterPromise\n .then(() => {\n this.clearUnregistrationPromise(unregisterPromise);\n })\n .catch((err) => {\n this.logger.error(`Unregistration of a method with name ${methodName} failed with reason: ${err}`);\n\n this.clearUnregistrationPromise(unregisterPromise);\n });\n }\n\n private async filterHandlers(handlerFilter: IOConnectBrowser.Intents.HandlerFilter): Promise {\n handlersFilterDecoder.runWithException(handlerFilter);\n \n this.checkIfAtLeastOneFilterIsPresent(handlerFilter);\n\n if (handlerFilter.openResolver && !this.useIntentsResolverUI) {\n throw new Error(\"Cannot resolve 'filterHandlers' request using Intents Resolver UI because it's globally disabled\");\n }\n\n const methodResponseTimeoutMs = (handlerFilter.timeout || DEFAULT_PICK_HANDLER_BY_TIMEOUT) + ADDITIONAL_BRIDGE_OPERATION_TIMEOUT;\n\n const filterHandlersRequestWithResolverConfig: FilterHandlersWithResolverConfig = { filterHandlersRequest: handlerFilter, resolverConfig: this.getResolverConfigByRequest({ handlerFilter }) };\n \n const result = await this.bridge.send(\"intents\", operations.filterHandlers, filterHandlersRequestWithResolverConfig, { methodResponseTimeoutMs, waitTimeoutMs: methodResponseTimeoutMs }, { includeOperationCheck: true });\n\n return result;\n }\n\n private checkIfAtLeastOneFilterIsPresent(filter: IOConnectBrowser.Intents.HandlerFilter): void {\n const errorMsg = \"Provide at least one filter criteria of the following: 'intent' | 'contextTypes' | 'resultType' | 'applicationNames'\";\n \n if (!Object.keys(filter).length) {\n // only title was present\n throw new Error(errorMsg);\n }\n\n const { intent, resultType, contextTypes, applicationNames } = filter;\n\n const existingValidContextTypes = contextTypes?.length;\n const existingValidApplicationNames = applicationNames?.length;\n\n if (!intent && !resultType && !existingValidContextTypes && !existingValidApplicationNames) {\n throw new Error(errorMsg);\n }\n }\n\n private async getIntentsByHandler(handler: IOConnectBrowser.Intents.IntentHandler): Promise {\n intentHandlerDecoder.runWithException(handler);\n\n const result = await this.bridge.send(\"intents\", operations.getIntentsByHandler, handler, undefined, { includeOperationCheck: true });\n\n return result;\n }\n}\n","import { PlatformMessages } from \"./types\";\n\nexport const Glue42CoreMessageTypes: { [key in PlatformMessages]: { name: PlatformMessages } } = {\n platformUnload: { name: \"platformUnload\" },\n transportSwitchRequest: { name: \"transportSwitchRequest\" },\n transportSwitchResponse: { name: \"transportSwitchResponse\" },\n getCurrentTransport: { name: \"getCurrentTransport\" },\n getCurrentTransportResponse: { name: \"getCurrentTransportResponse\" },\n checkPreferredLogic: { name: \"checkPreferredLogic\" },\n checkPreferredConnection: { name: \"checkPreferredConnection\" },\n checkPreferredLogicResponse: { name: \"checkPreferredLogicResponse\" },\n checkPreferredConnectionResponse: { name: \"checkPreferredConnectionResponse\" }\n};\n\nexport const webPlatformTransportName = \"web-platform\";\n\nexport const latestFDC3Type = \"latest_fdc3_type\";","import { channelContextDecoder, getMyChanelResultDecoder, getWindowIdsOnChannelDataDecoder, getWindowIdsOnChannelResultDecoder, getWindowIdsWithChannelsResultDecoder, joinChannelDataDecoder, wrappedWindowWithChannelFilterDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\nimport { IOConnectBrowser } from \"../../browser\";\n\nexport type ChannelOperationTypes = \"addChannel\" | \"getMyChannel\" | \"getWindowIdsOnChannel\" | \"getWindowIdsWithChannels\" | \"joinChannel\";\n\nexport const operations: { [key in ChannelOperationTypes]: BridgeOperation } = {\n addChannel: { name: \"addChannel\", dataDecoder: channelContextDecoder },\n getMyChannel: { name: \"getMyChannel\", resultDecoder: getMyChanelResultDecoder },\n getWindowIdsOnChannel: { name: \"getWindowIdsOnChannel\", dataDecoder: getWindowIdsOnChannelDataDecoder, resultDecoder: getWindowIdsOnChannelResultDecoder },\n getWindowIdsWithChannels: { name: \"getWindowIdsWithChannels\", dataDecoder: wrappedWindowWithChannelFilterDecoder, resultDecoder: getWindowIdsWithChannelsResultDecoder },\n joinChannel: { name: \"joinChannel\", dataDecoder: joinChannelDataDecoder },\n};\n\nexport interface MyChannelData {\n channel?: string;\n}\n\nexport interface WindowIdsOnChannelData {\n windowIds: string[];\n}\n\nexport interface WindowIdsWithChannelsData {\n windowIdsWithChannels: {\n application: string;\n channel?: string;\n windowId: string;\n }[]\n}\n\nexport interface WrappedWindowWithChannelFilter {\n filter?: IOConnectBrowser.Channels.WindowWithChannelFilter\n}\n\nexport interface JoinChannelData {\n channel: string;\n windowId: string;\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { channelContextDecoder, channelNameDecoder, channelsOperationTypesDecoder, optionalNonEmptyStringDecoder, windowWithChannelFilterDecoder } from \"../shared/decoders\";\nimport { LibController } from \"../shared/types\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { latestFDC3Type } from \"../shared/constants\";\nimport { IoC } from \"../shared/ioc\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { JoinChannelData, operations, WindowIdsOnChannelData, WindowIdsWithChannelsData, WrappedWindowWithChannelFilter } from \"./protocol\";\nimport { WindowsController } from \"../windows/controller\";\nimport { SessionStorageController } from \"../storage/session\";\n\nexport class ChannelsController implements LibController {\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private logger!: IOConnectBrowser.Logger.API;\n private contexts!: IOConnectCore.Contexts.API;\n private bridge!: GlueBridge;\n private currentChannelName: string | undefined;\n private windowsController!: WindowsController;\n private sessionController!: SessionStorageController;\n private unsubscribeFunc: (() => void) | undefined;\n\n private readonly GlueWebChannelsPrefix = \"___channel___\";\n private readonly SubsKey = \"subs\";\n private readonly ChangedKey = \"changed\";\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n }\n\n private addOperationsExecutors(): void {\n operations.getMyChannel.execute = this.handleGetMyChannel.bind(this);\n operations.joinChannel.execute = this.handleJoinChannel.bind(this);\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"channels.controller.web\");\n\n this.logger.trace(\"starting the web channels controller\");\n\n this.contexts = coreGlue.contexts;\n\n this.addOperationsExecutors();\n\n this.bridge = ioc.bridge;\n\n this.windowsController = ioc.windowsController;\n \n this.sessionController = ioc.sessionController;\n\n this.logger.trace(\"no need for platform registration, attaching the channels property to glue and returning\");\n\n const api = this.toApi();\n\n (coreGlue as IOConnectBrowser.API).channels = api;\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = channelsOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if(!operation.execute) {\n return; \n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n public async list(): Promise {\n const channelNames = this.getAllChannelNames();\n\n const channelContexts = await Promise.all(channelNames.map((channelName) => this.get(channelName)));\n\n return channelContexts;\n }\n\n public my(): string {\n return this.current();\n }\n\n private async handleGetMyChannel() {\n const channel = this.my();\n \n return channel ? { channel } : {};\n }\n\n public async join(name: string, windowId?: string): Promise {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n optionalNonEmptyStringDecoder.runWithException(windowId);\n\n if (!windowId || windowId === this.windowsController.my().id) {\n await this.switchToChannel(name);\n } else {\n await this.bridge.send(\"channels\", operations.joinChannel, { channel: name, windowId }, undefined, { includeOperationCheck: true });\n }\n }\n\n private handleJoinChannel({ channel, windowId }: JoinChannelData) {\n return this.join(channel, windowId);\n }\n\n public onChanged(callback: (channel: string) => void): UnsubscribeFunction {\n return this.changed(callback);\n }\n\n public async leave(): Promise {\n await this.switchToChannel();\n }\n\n private toApi(): IOConnectBrowser.Channels.API {\n const api: IOConnectBrowser.Channels.API = {\n subscribe: this.subscribe.bind(this),\n subscribeFor: this.subscribeFor.bind(this),\n publish: this.publish.bind(this),\n all: this.all.bind(this),\n list: this.list.bind(this),\n get: this.get.bind(this),\n join: this.join.bind(this),\n leave: this.leave.bind(this),\n current: this.current.bind(this),\n my: this.my.bind(this),\n changed: this.changed.bind(this),\n onChanged: this.onChanged.bind(this),\n add: this.add.bind(this),\n getMy: this.getMy.bind(this),\n getWindowsOnChannel: this.getWindowsOnChannel.bind(this),\n getWindowsWithChannels: this.getWindowsWithChannels.bind(this),\n };\n\n return Object.freeze(api);\n }\n\n private createContextName(channelName: string): string {\n return `${this.GlueWebChannelsPrefix}${channelName}`;\n }\n\n private getAllChannelNames(): string[] {\n const contextNames = this.contexts.all();\n\n const channelContextNames = contextNames.filter((contextName) => contextName.startsWith(this.GlueWebChannelsPrefix));\n\n const channelNames = channelContextNames.map((channelContextName) => channelContextName.replace(this.GlueWebChannelsPrefix, \"\"));\n\n return channelNames;\n }\n\n private unsubscribe(): void {\n if (this.unsubscribeFunc) {\n this.unsubscribeFunc();\n\n this.unsubscribeFunc = undefined;\n }\n }\n\n private async switchToChannel(name?: string): Promise {\n this.unsubscribe();\n\n // TODO: Should be set after `subscribe()` has resolved, but due to an issue where `subscribe()` replays the context before returning an unsubscribe function this has been moved here.\n this.currentChannelName = name;\n\n // When joining a channel (and not leaving).\n if (typeof name !== \"undefined\") {\n const contextName = this.createContextName(name);\n\n this.unsubscribeFunc = await this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\n this.registry.execute(this.SubsKey, context.data, context, extraData?.updaterId);\n });\n }\n\n this.registry.execute(this.ChangedKey, name);\n\n this.sessionController.setWindowData({ currentName: name }, \"channels\");\n }\n\n private async updateData(name: string, data: any): Promise {\n const contextName = this.createContextName(name);\n const fdc3Type = this.getFDC3Type(data);\n\n if (this.contexts.setPathSupported) {\n const pathValues: IOConnectBrowser.Contexts.PathValue[] = Object.keys(data).map((key) => {\n return {\n path: `data.${key}`,\n value: data[key]\n };\n });\n\n if (fdc3Type) {\n pathValues.push({ path: latestFDC3Type, value: fdc3Type});\n }\n\n await this.contexts.setPaths(contextName, pathValues);\n } else {\n if (fdc3Type) {\n data[latestFDC3Type] = fdc3Type;\n }\n\n // Pre @glue42/core 5.2.0. Note that we update the data property only.\n await this.contexts.update(contextName, { data });\n }\n }\n\n private getFDC3Type(data: any): string | undefined {\n const fdc3PropsArr = Object.keys(data).filter((key: string) => key.indexOf(\"fdc3_\") === 0);\n\n if (fdc3PropsArr.length === 0) {\n return;\n }\n\n if (fdc3PropsArr.length > 1) {\n throw new Error(\"FDC3 does not support updating of multiple context keys\");\n }\n\n return fdc3PropsArr[0].split(\"_\").slice(1).join(\"_\");\n }\n\n private subscribe(callback: (data: any, context: IOConnectBrowser.Channels.ChannelContext, updaterId: string) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to channels, because the provided callback is not a function!\");\n }\n\n const currentChannel = this.current();\n \n if (currentChannel) {\n this.replaySubscribe(callback, currentChannel);\n }\n\n return this.registry.add(this.SubsKey, callback);\n }\n\n private async subscribeFor(name: string, callback: (data: any, context: IOConnectBrowser.Channels.ChannelContext, updaterId: string) => void): Promise {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n if (typeof callback !== \"function\") {\n throw new Error(`Cannot subscribe to channel ${name}, because the provided callback is not a function!`);\n }\n\n const contextName = this.createContextName(name);\n\n return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\n callback(context.data, context, extraData?.updaterId);\n });\n }\n\n private publish(data: any, name?: string): Promise {\n if (typeof data !== \"object\") {\n throw new Error(\"Cannot publish to channel, because the provided data is not an object!\");\n }\n if (typeof name !== \"undefined\") {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n\n return this.updateData(name, data);\n }\n\n if (typeof this.currentChannelName === \"undefined\") {\n throw new Error(\"Cannot publish to channel, because not joined to a channel!\");\n }\n\n return this.updateData(this.currentChannelName, data);\n }\n\n public async all(): Promise {\n const channelNames = this.getAllChannelNames();\n\n return channelNames;\n }\n\n private async get(name: string): Promise {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(name);\n\n const contextName = this.createContextName(name);\n\n const channelContext = await this.contexts.get(contextName);\n\n if (channelContext.latest_fdc3_type) {\n const { latest_fdc3_type, ...rest} = channelContext;\n\n return { ...rest };\n }\n\n return channelContext;\n }\n\n private current(): string {\n return this.currentChannelName as string;\n }\n\n private changed(callback: (channel: string) => void): UnsubscribeFunction {\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to channel changed, because the provided callback is not a function!\");\n }\n\n return this.registry.add(this.ChangedKey, callback);\n }\n\n private async add(info: IOConnectBrowser.Channels.ChannelContext): Promise {\n const channelContext = channelContextDecoder.runWithException(info);\n\n const channelWithSuchNameExists = this.getAllChannelNames().includes(channelContext.name);\n\n if (channelWithSuchNameExists) {\n throw new Error(\"There's an already existing channel with such name\");\n }\n\n await this.bridge.send(\"channels\", operations.addChannel, channelContext);\n\n return channelContext;\n }\n\n private replaySubscribe = (callback: (data: any, context: IOConnectBrowser.Channels.ChannelContext, updaterId: string) => void, channelId: string) => {\n this.get(channelId)\n .then((channelContext: IOConnectBrowser.Channels.ChannelContext) => {\n if (typeof channelContext.data === \"object\" && Object.keys(channelContext.data).length) {\n const contextName = this.createContextName(channelContext.name);\n\n return this.contexts.subscribe(contextName, (context, _, __, ___, extraData) => {\n callback(context.data, context, extraData?.updaterId);\n });\n }\n\n // this satisfies the TS \"noImplicitReturns\" true flag\n return undefined;\n })\n .then((un: (() => void) | undefined) => {\n if (un && typeof un === \"function\") {\n un();\n }\n })\n .catch(err => this.logger.trace(err));\n };\n\n private async getMy(): Promise {\n if (!this.currentChannelName) {\n return;\n }\n\n return this.get(this.currentChannelName);\n }\n\n private async getWindowsOnChannel(channel: string): Promise {\n const channelNames = this.getAllChannelNames();\n channelNameDecoder(channelNames).runWithException(channel);\n\n const { windowIds } = await this.bridge.send<{ channel: string }, WindowIdsOnChannelData>(\"channels\", operations.getWindowIdsOnChannel, { channel }, undefined, { includeOperationCheck: true });\n\n const result = windowIds.reduce((windows, windowId) => {\n const window = this.windowsController.findById(windowId);\n\n return window ? [...windows, window] : windows;\n }, []);\n\n return result;\n }\n \n private async getWindowsWithChannels(filter?: IOConnectBrowser.Channels.WindowWithChannelFilter): Promise {\n const operationData: WrappedWindowWithChannelFilter = filter !== undefined\n ? { filter: windowWithChannelFilterDecoder.runWithException(filter) }\n : {};\n\n const { windowIdsWithChannels } = await this.bridge.send(\"channels\", operations.getWindowIdsWithChannels, operationData, undefined, { includeOperationCheck: true });\n\n const result = windowIdsWithChannels.reduce((windowsWithChannels, { application, channel, windowId }) => {\n const window = this.windowsController.findById(windowId);\n\n return window ? [...windowsWithChannels, { application, channel, window }] : windowsWithChannels;\n }, []);\n\n return result;\n }\n}\n","import { anyDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type SystemOperationTypes = \"getEnvironment\" | \"getBase\" | \"platformShutdown\";\n\nexport const operations: { [key in SystemOperationTypes]: BridgeOperation } = {\n getEnvironment: { name: \"getEnvironment\", resultDecoder: anyDecoder },\n getBase: { name: \"getBase\", resultDecoder: anyDecoder },\n platformShutdown: { name: \"platformShutdown\" }\n};\n","import { IOConnectCore } from \"@interopio/core\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { systemOperationTypesDecoder } from \"../shared/decoders\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport { operations } from \"./protocol\";\n\nexport class SystemController implements LibController {\n private bridge!: GlueBridge;\n private ioc!: IoC;\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.bridge = ioc.bridge;\n this.ioc = ioc;\n\n this.addOperationsExecutors();\n\n await this.setEnvironment();\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = systemOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n private async processPlatformShutdown(): Promise {\n\n Object.values(this.ioc.controllers).forEach((controller) => controller.handlePlatformShutdown ? controller.handlePlatformShutdown() : null);\n\n this.ioc.preferredConnectionController.stop();\n\n this.ioc.eventsDispatcher.stop();\n\n await this.bridge.stop();\n\n }\n\n private async setEnvironment(): Promise {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const environment = await this.bridge.send(\"system\", operations.getEnvironment, undefined);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const base = await this.bridge.send(\"system\", operations.getBase, undefined);\n\n const globalNamespace = (window as any).glue42core || (window as any).iobrowser;\n\n const globalNamespaceName = (window as any).glue42core ? \"glue42core\" : \"iobrowser\";\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalObj = Object.assign({}, globalNamespace, base, { environment });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any)[globalNamespaceName] = Object.freeze(globalObj);\n }\n\n private addOperationsExecutors(): void {\n operations.platformShutdown.execute = this.processPlatformShutdown.bind(this);\n }\n}","/* eslint-disable @typescript-eslint/no-empty-function */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectBrowser } from \"../../browser\";\n\nexport class Notification implements IOConnectBrowser.Notifications.Notification {\n\n public onclick: () => any = () => { };\n public onshow: () => any = () => { };\n public id: string;\n public title: string;\n public badge?: string | undefined;\n public body?: string | undefined;\n public data?: any;\n public dir?: \"auto\" | \"ltr\" | \"rtl\" | undefined;\n public icon?: string | undefined;\n public image?: string | undefined;\n public lang?: string | undefined;\n public renotify?: boolean | undefined;\n public requireInteraction?: boolean | undefined;\n public silent?: boolean | undefined;\n public tag?: string | undefined;\n public timestamp?: number | undefined;\n public vibrate?: number[] | undefined;\n public clickInterop?: IOConnectBrowser.Notifications.InteropActionSettings | undefined;\n public actions?: IOConnectBrowser.Notifications.NotificationAction[] | undefined;\n public focusPlatformOnDefaultClick?: boolean | undefined;\n public severity?: \"Low\" | \"Medium\" | \"High\" | \"Critical\" | \"None\" | undefined;\n public showToast?: boolean | undefined;\n public showInPanel?: boolean | undefined;\n public state?: IOConnectBrowser.Notifications.State;\n\n constructor(config: IOConnectBrowser.Notifications.RaiseOptions, id: string) {\n this.id = id;\n this.badge = config.badge;\n this.body = config.body;\n this.data = config.data;\n this.dir = config.dir;\n this.icon = config.icon;\n this.image = config.image;\n this.lang = config.lang;\n this.renotify = config.renotify;\n this.requireInteraction = config.requireInteraction;\n this.silent = config.silent;\n this.tag = config.tag;\n this.timestamp = config.timestamp;\n this.vibrate = config.vibrate;\n this.title = config.title;\n this.clickInterop = config.clickInterop;\n this.actions = config.actions;\n this.focusPlatformOnDefaultClick = config.focusPlatformOnDefaultClick;\n this.severity = config.severity;\n this.showToast = config.showToast;\n this.showInPanel = config.showInPanel;\n this.state = config.state;\n }\n\n}","import { Decoder, oneOf, constant, object, boolean } from \"decoder-validate\";\nimport { ExtensionConfig, ExtensionOperationTypes } from \"./protocol\";\n\nexport const extensionOperationTypesDecoder: Decoder = oneOf<\"clientHello\">(\n constant(\"clientHello\")\n);\n\nexport const extensionConfigDecoder: Decoder = object({\n widget: object({\n inject: boolean()\n })\n});\n","import { IOConnectBrowser } from \"../../browser\";\nimport { BridgeOperation } from \"../shared/types\";\nimport { extensionConfigDecoder } from \"./decoders\";\n\nexport type ExtensionOperationTypes = \"clientHello\";\n\nexport const operations: { [key in ExtensionOperationTypes]: BridgeOperation } = {\n clientHello: { name: \"clientHello\", resultDecoder: extensionConfigDecoder }\n};\n\nexport interface ExtensionConfig {\n widget: {\n inject: boolean;\n };\n}\n\nexport interface WidgetInjectionPermission { \n command: \"permissionResponse\";\n allowed: boolean;\n channels?: IOConnectBrowser.Channels.ChannelContext[]; \n currentChannel?: IOConnectBrowser.Channels.ChannelContext; \n}","/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { ChannelsController } from \"../channels/controller\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { EventsDispatcher } from \"../shared/dispatcher\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport { ExtensionConfig, operations, WidgetInjectionPermission } from \"./protocol\";\n\nexport class ExtController implements LibController {\n\n private windowId!: string;\n private logger!: IOConnectBrowser.Logger.API;\n private bridge!: GlueBridge;\n private eventsDispatcher!: EventsDispatcher;\n private channelsController!: ChannelsController;\n private config!: ExtensionConfig;\n private channels: IOConnectBrowser.Channels.ChannelContext[] = [];\n private unsubFuncs: (() => void)[] = [];\n\n private readonly contentCommands: { [key in string]: { name: string; handle: (message: any) => Promise } } = {\n widgetVisualizationPermission: { name: \"widgetVisualizationPermission\", handle: this.handleWidgetVisualizationPermission.bind(this) },\n changeChannel: { name: \"changeChannel\", handle: this.handleChangeChannel.bind(this) }\n };\n\n public handlePlatformShutdown(): void {\n this.unsubFuncs.forEach((unsub) => unsub());\n this.channels = [];\n this.unsubFuncs = [];\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n\n this.logger = coreGlue.logger.subLogger(\"extension.controller.web\");\n \n this.windowId = ioc.publicWindowId;\n\n this.logger.trace(\"starting the extension web controller\");\n\n this.bridge = ioc.bridge;\n this.channelsController = ioc.channelsController;\n this.eventsDispatcher = ioc.eventsDispatcher;\n\n // TODO: Maybe think about a better way, because the platform will reject and log an error\n try {\n await this.registerWithPlatform();\n } catch (error) {\n // this is soft controller initialization to ensure that\n // this non-essential controller will not break Glue Web \n // initialization combined with older platforms\n return;\n }\n\n this.channels = await this.channelsController.list();\n\n const unsubDispatcher = this.eventsDispatcher.onContentMessage(this.handleContentMessage.bind(this));\n const unsubChannels = this.channelsController.onChanged((channel) => {\n this.eventsDispatcher.sendContentMessage({ command: \"channelChange\", newChannel: channel });\n });\n\n this.unsubFuncs.push(unsubDispatcher);\n this.unsubFuncs.push(unsubChannels);\n }\n\n public async handleBridgeMessage(_: any): Promise {\n // noop\n }\n\n private handleContentMessage(message: any): void {\n\n if (!message || typeof message.command !== \"string\") {\n return;\n }\n\n const foundHandler = this.contentCommands[message.command];\n\n if (!foundHandler) {\n return;\n }\n\n foundHandler.handle(message);\n }\n\n private async registerWithPlatform(): Promise {\n this.logger.trace(\"registering with the platform\");\n\n this.config = await this.bridge.send<{ windowId: string }, ExtensionConfig>(\"extension\", operations.clientHello, { windowId: this.windowId });\n\n this.logger.trace(\"the platform responded to the hello message with a valid extension config\");\n }\n\n private async handleWidgetVisualizationPermission(): Promise {\n if (!this.config?.widget.inject) {\n return this.eventsDispatcher.sendContentMessage({ command: \"permissionResponse\", allowed: false });\n }\n\n const currentChannel = this.channels.find((channel) => channel.name === this.channelsController.my());\n\n this.eventsDispatcher.sendContentMessage({ command: \"permissionResponse\", allowed: true, channels: this.channels, currentChannel });\n }\n\n private async handleChangeChannel(message: { name: string }): Promise {\n if (message.name === \"no-channel\") {\n await this.channelsController.leave();\n return;\n }\n\n await this.channelsController.join(message.name);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { Glue42EventPayload, ParsedConfig } from \"./types\";\n\nexport class EventsDispatcher {\n private glue!: IOConnectBrowser.API;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private readonly glue42EventName = \"Glue42\";\n private _handleMessage!: (event: Event) => void;\n\n constructor(private readonly config: ParsedConfig) { }\n\n private readonly events: { [key in string]: { name: string; handle: (glue42Data: any) => void | Promise } } = {\n notifyStarted: { name: \"notifyStarted\", handle: this.handleNotifyStarted.bind(this) },\n contentInc: { name: \"contentInc\", handle: this.handleContentInc.bind(this) },\n requestGlue: { name: \"requestGlue\", handle: this.handleRequestGlue.bind(this) }\n };\n\n public stop(): void {\n window.removeEventListener(this.glue42EventName, this._handleMessage);\n }\n\n public start(glue: IOConnectBrowser.API): void {\n this.glue = glue;\n\n this.wireCustomEventListener();\n\n this.announceStarted();\n }\n\n public sendContentMessage(message: T): void {\n this.send(\"contentOut\", \"glue42core\", message);\n }\n\n public onContentMessage(callback: (message: any) => void): UnsubscribeFunction {\n return this.registry.add(\"content-inc\", callback);\n }\n\n private wireCustomEventListener(): void {\n\n this._handleMessage = this.handleMessage.bind(this);\n\n window.addEventListener(this.glue42EventName, this._handleMessage);\n }\n\n private handleMessage(event: Event): void {\n const data = (event as CustomEvent).detail;\n\n const namespace = data?.glue42 ?? data?.glue42core;\n \n if (!namespace) {\n return;\n }\n\n const glue42Event: string = namespace.event;\n\n const foundHandler = this.events[glue42Event];\n\n if (!foundHandler) {\n return;\n }\n\n foundHandler.handle(namespace.message);\n }\n\n private announceStarted(): void {\n this.send(\"start\", \"glue42\");\n }\n\n private handleRequestGlue(): void {\n if (!this.config.exposeAPI) {\n this.send(\"requestGlueResponse\", \"glue42\", { error: \"Will not give access to the underlying Glue API, because it was explicitly denied upon initialization.\" });\n return;\n }\n\n this.send(\"requestGlueResponse\", \"glue42\", { glue: this.glue });\n }\n\n private handleNotifyStarted(): void {\n this.announceStarted();\n }\n\n private handleContentInc(message: any): void {\n this.registry.execute(\"content-inc\", message);\n }\n\n private send(eventName: string, namespace: \"glue42core\" | \"glue42\", message?: any): void {\n const payload: Glue42EventPayload = {};\n payload[namespace] = { event: eventName, message };\n\n const event = new CustomEvent(this.glue42EventName, { detail: payload });\n\n window.dispatchEvent(event);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { UnsubscribeFunction } from \"callback-registry\";\nimport { generate } from \"shortid\";\nimport { Glue42CoreMessageTypes, webPlatformTransportName } from \"../shared/constants\";\nimport { ParsedConfig, PlatformMessages, Transaction, TransportState } from \"../shared/types\";\n\nexport class PreferredConnectionController {\n\n private readonly transactionTimeout = 15000;\n private readonly transactionLocks: { [key in string]: Transaction } = {};\n private webPlatformTransport: any;\n private webPlatformMessagesUnsubscribe: UnsubscribeFunction | undefined;\n private reconnectCounter = 0;\n private readonly logger: IOConnectCore.Logger.API;\n\n constructor(private readonly coreGlue: IOConnectCore.API) {\n this.logger = this.coreGlue.logger.subLogger(\"web.preferred.connection.controller\");\n }\n\n public stop(): void {\n if (!this.webPlatformMessagesUnsubscribe) {\n return;\n }\n\n this.webPlatformMessagesUnsubscribe();\n }\n\n public async start(coreConfig: ParsedConfig): Promise {\n if (coreConfig.isPlatformInternal) {\n this.logger.trace(\"This is an internal client to the platform, skipping all client preferred communication logic.\");\n return;\n }\n\n const isConnectedToPlatform = (this.coreGlue as any).connection.transport.name() === webPlatformTransportName;\n\n if (!isConnectedToPlatform) {\n throw new Error(\"Cannot initiate the Glue Web Bridge, because the initial connection was not handled by a Web Platform transport.\");\n }\n\n if (!(this.coreGlue as any).connection.transport.isPreferredActivated) {\n this.logger.trace(\"The platform of this client was configured without a preferred connection, skipping the rest of the initialization.\");\n return;\n }\n\n this.webPlatformTransport = (this.coreGlue as any).connection.transport;\n\n this.webPlatformMessagesUnsubscribe = this.webPlatformTransport.onMessage(this.handleWebPlatformMessage.bind(this));\n\n const transportState = await this.getCurrentPlatformTransportState();\n\n await this.checkSwitchTransport(transportState);\n }\n\n private handleWebPlatformMessage(msg: string | object): void {\n if (typeof msg === \"string\") {\n return;\n }\n\n const isConnectedToPlatform = (this.coreGlue as any).connection.transport.name() === webPlatformTransportName;\n\n const type = (msg as any).type;\n const args = (msg as any).args;\n const transactionId = (msg as any).transactionId;\n\n if (type === Glue42CoreMessageTypes.transportSwitchRequest.name) {\n return this.handleTransportSwitchRequest(args, transactionId);\n }\n\n if (type === Glue42CoreMessageTypes.platformUnload.name && !isConnectedToPlatform) {\n return this.handlePlatformUnload();\n }\n\n if (type === Glue42CoreMessageTypes.getCurrentTransportResponse.name) {\n return this.handleGetCurrentTransportResponse(args, transactionId);\n }\n\n if (type === Glue42CoreMessageTypes.checkPreferredLogic.name) {\n return this.handleCheckPreferredLogic(transactionId);\n }\n\n if (type === Glue42CoreMessageTypes.checkPreferredConnection.name) {\n return this.handleCheckPreferredConnection(args, transactionId);\n }\n\n }\n\n private async reEstablishPlatformPort(): Promise {\n try {\n await this.webPlatformTransport.connect();\n } catch (error) {\n this.logger.trace(`Error when re-establishing port connection to the platform: ${JSON.stringify(error)}`);\n --this.reconnectCounter;\n\n if (this.reconnectCounter > 0) {\n return this.reEstablishPlatformPort();\n }\n\n this.logger.warn(\"This client lost connection to the platform while connected to a preferred GW and was not able to re-connect to the platform.\");\n }\n\n this.logger.trace(\"The connection to the platform was re-established, closing the connection to the web gateway.\");\n\n this.reconnectCounter = 0;\n\n this.webPlatformTransport.close();\n\n const transportState = await this.getCurrentPlatformTransportState();\n\n await this.checkSwitchTransport(transportState);\n\n }\n\n private async checkSwitchTransport(config: TransportState): Promise {\n const myCurrentTransportName: string = (this.coreGlue as any).connection.transport.name();\n\n if (myCurrentTransportName === config.transportName) {\n this.logger.trace(\"A check switch was requested, but the platform transport and my transport are identical, no switch is necessary\");\n return;\n }\n\n this.logger.trace(`A check switch was requested and a transport switch is necessary, because this client is now on ${myCurrentTransportName}, but it should reconnect to ${JSON.stringify(config)}`);\n\n const result = await this.coreGlue.connection.switchTransport(config);\n\n this.setConnected();\n\n this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`);\n }\n\n private async getCurrentPlatformTransportState(): Promise {\n\n this.logger.trace(\"Requesting the current transport state of the platform.\");\n\n const transaction = this.setTransaction(Glue42CoreMessageTypes.getCurrentTransport.name);\n\n this.sendPlatformMessage(Glue42CoreMessageTypes.getCurrentTransport.name, transaction.id);\n\n const transportState = await transaction.lock;\n\n this.logger.trace(`The platform responded with transport state: ${JSON.stringify(transportState)}`);\n\n return transportState;\n }\n\n private setTransaction(operation: PlatformMessages): Transaction {\n const transaction: Transaction = {} as Transaction;\n\n const transactionId = generate();\n\n const transactionLock = new Promise((resolve, reject) => {\n\n let transactionLive = true;\n\n transaction.lift = (args): void => {\n transactionLive = false;\n delete this.transactionLocks[transactionId];\n resolve(args);\n };\n\n transaction.fail = (reason): void => {\n transactionLive = false;\n delete this.transactionLocks[transactionId];\n reject(reason);\n };\n\n setTimeout(() => {\n if (!transactionLive) {\n return;\n }\n\n transactionLive = false;\n this.logger.warn(`Transaction for operation: ${operation} timed out.`);\n delete this.transactionLocks[transactionId];\n reject(`Transaction for operation: ${operation} timed out.`);\n }, this.transactionTimeout);\n });\n\n transaction.lock = transactionLock;\n\n transaction.id = transactionId;\n\n this.transactionLocks[transactionId] = transaction;\n\n return transaction;\n }\n\n private sendPlatformMessage(type: PlatformMessages, transactionId: string, args?: any): void {\n this.logger.trace(`Sending a platform message of type: ${type}, id: ${transactionId} and args: ${JSON.stringify(args)}`);\n this.webPlatformTransport.sendObject({\n glue42core: { type, args, transactionId }\n });\n }\n\n private handleTransportSwitchRequest(args: any, transactionId: string): void {\n this.logger.trace(`Received a transport switch request with id: ${transactionId} and data: ${JSON.stringify(args)}`);\n this.coreGlue.connection.switchTransport(args.switchSettings)\n .then((result) => {\n this.logger.trace(`The transport switch was completed with result: ${JSON.stringify(result)}`);\n this.setConnected();\n this.sendPlatformMessage(Glue42CoreMessageTypes.transportSwitchResponse.name, transactionId, { success: result.success });\n })\n .catch((error) => {\n this.logger.error(error);\n this.sendPlatformMessage(Glue42CoreMessageTypes.transportSwitchResponse.name, transactionId, { success: false });\n });\n }\n\n private handlePlatformUnload(): void {\n this.reconnectCounter = 5;\n this.logger.trace(\"The platform was unloaded while I am connected to a preferred connection, re-establishing the port connection.\");\n this.reEstablishPlatformPort();\n }\n\n private handleGetCurrentTransportResponse(args: any, transactionId: string): void {\n this.logger.trace(`Got a current transport response from the platform with id: ${transactionId} and data: ${JSON.stringify(args)}`);\n const transportState = args.transportState as TransportState;\n\n const transaction = this.transactionLocks[transactionId];\n\n transaction?.lift(transportState);\n }\n\n private handleCheckPreferredLogic(transactionId: string): void {\n setTimeout(() => this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredLogicResponse.name, transactionId), 0);\n }\n\n private handleCheckPreferredConnection(args: any, transactionId: string): void {\n const url = args.url;\n\n this.logger.trace(`Testing the possible connection to: ${url}`);\n\n this.checkPreferredConnection(url)\n .then((result) => {\n this.logger.trace(`The connection to ${url} is possible`);\n this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredConnectionResponse.name, transactionId, result);\n })\n .catch((error) => {\n this.logger.trace(`The connection to ${url} is not possible`);\n this.sendPlatformMessage(Glue42CoreMessageTypes.checkPreferredConnectionResponse.name, transactionId, { error });\n });\n }\n\n private checkPreferredConnection(url: string): Promise<{ live: boolean }> {\n\n return new Promise<{ live: boolean }>((resolve) => {\n const ws = new WebSocket(url);\n\n ws.onerror = (): void => resolve({ live: false });\n\n ws.onopen = (): void => {\n ws.close();\n resolve({ live: true });\n };\n\n });\n\n }\n\n private setConnected(): void {\n this.webPlatformTransport.manualSetReadyState();\n }\n}\n","import { IOConnectCore } from \"@interopio/core\";\nimport shortid from \"shortid\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { AppManagerController } from \"../appManager/controller\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { intentResolverResponseDecoder } from \"../shared/decoders\";\nimport { PromisePlus } from \"../shared/promise-plus\";\nimport { systemOperations } from \"../shared/systemOperations\";\nimport { LibDomains, OperationCheckConfig, OperationCheckResult, SimpleItemIdRequest, WorkspaceFrameBoundsResult } from \"../shared/types\";\nimport { WindowsController } from \"../windows/controller\";\nimport { INTENTS_RESOLVER_HEIGHT, INTENTS_RESOLVER_INTEROP_PREFIX, INTENTS_RESOLVER_WIDTH } from \"./constants\";\nimport { IntentsResolverResponse, IntentsResolverResponsePromise, operations } from \"./protocol\";\nimport { IntentRequestWithResolverConfig, IntentsResolverStartContext, ShouldResolverOpen, ResolverConfig, IntentResolverResponse } from \"./types\";\n\nexport class LegacyIntentsHelper {\n private logger!: IOConnectBrowser.Logger.API;\n\n private intentsResolverResponsePromises: { [instanceId: string]: IntentsResolverResponsePromise } = {};\n\n constructor(\n logger: IOConnectBrowser.Logger.API,\n private readonly bridge: GlueBridge,\n private readonly interop: IOConnectCore.AGM.API,\n private readonly appManagerController: AppManagerController,\n private readonly windowsController: WindowsController\n ) {\n this.logger = this.configureLogger(logger);\n }\n\n public async raise(requestWithResolverInfo: IntentRequestWithResolverConfig, findIntentFn: (intentFilter?: string | IOConnectBrowser.Intents.IntentFilter | undefined) => Promise): Promise {\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\n\n const intent = (await findIntentFn(intentRequest.intent)).find(intent => intent.name === intentRequest.intent);\n\n if (!intent) {\n throw new Error(`Intent with name ${intentRequest.intent} not found`);\n }\n\n const { open, reason } = this.checkIfResolverShouldBeOpened(intent, intentRequest, resolverConfig);\n\n if (!open) {\n this.logger?.trace(`Intent Resolver UI won't be used. Reason: ${reason}`);\n\n return this.invokeRaiseIntent(intentRequest);\n }\n\n const intentResult = await this.raiseIntentWithResolverApp(requestWithResolverInfo);\n\n return intentResult;\n }\n\n private configureLogger(loggerInst: IOConnectBrowser.Logger.API): IOConnectBrowser.Logger.API {\n return loggerInst.subLogger(\"intents.legacy.helper.web\");\n }\n\n private async raiseIntentWithResolverApp(requestWithResolverInfo: IntentRequestWithResolverConfig): Promise {\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\n\n this.logger.trace(`Intents Resolver UI with app name ${resolverConfig.appName} will be used`);\n\n const responseMethodName = await this.registerResponseMethod();\n\n this.logger.trace(`Registered interop method ${responseMethodName}`);\n\n const resolverInstance = await this.openIntentResolverApplication(requestWithResolverInfo, responseMethodName);\n\n this.logger.trace(`Intents Resolver Instance with id ${resolverInstance.id} opened`);\n\n const handler = await this.handleInstanceResponse(resolverInstance.id);\n\n const target = handler.type === \"app\"\n ? { app: handler.applicationName }\n : { instance: handler.instanceId };\n\n this.logger.trace(`Intent handler chosen by the user: ${JSON.stringify(target)}`);\n\n const intentResult = await this.invokeRaiseIntent({ ...intentRequest, target });\n\n return intentResult;\n }\n\n private async handleInstanceResponse(instanceId: string): Promise {\n try {\n const { handler, intent } = await this.intentsResolverResponsePromises[instanceId].promise;\n\n this.logger?.trace(`Intent handler chosen for intent ${intent}: ${JSON.stringify(handler)}`);\n\n this.stopResolverInstance(instanceId);\n\n return handler;\n\n } catch (error) {\n this.stopResolverInstance(instanceId);\n\n throw new Error(error as string);\n }\n }\n\n private invokeRaiseIntent(requestObj: IOConnectBrowser.Intents.IntentRequest): Promise {\n return this.bridge.send(\"intents\", operations.raiseIntent, requestObj);\n }\n\n private async registerResponseMethod(): Promise {\n const methodName = INTENTS_RESOLVER_INTEROP_PREFIX + shortid();\n\n await this.interop.register(methodName, this.resolverResponseHandler.bind(this));\n\n return methodName;\n }\n\n private async openIntentResolverApplication(requestWithResolverInfo: IntentRequestWithResolverConfig, methodName: string): Promise {\n const { intentRequest, resolverConfig } = requestWithResolverInfo;\n\n const startContext = this.buildStartContext(intentRequest, methodName);\n\n const startOptions = await this.buildStartOptions();\n\n this.logger.trace(`Starting Intents Resolver UI with context: ${JSON.stringify(startContext)} and options: ${startOptions}`);\n\n const instance = await this.appManagerController.getApplication(resolverConfig.appName).start(startContext, startOptions);\n\n this.logger.trace(`Intents Resolver instance with id ${instance.id} opened`);\n\n this.subscribeOnInstanceStopped(instance);\n\n this.createResponsePromise(intentRequest.intent, instance.id, methodName, resolverConfig.waitResponseTimeout);\n\n return instance;\n }\n\n private async cleanUpIntentResolverPromise(instanceId: string): Promise {\n const intentPromise = this.intentsResolverResponsePromises[instanceId];\n\n if (!intentPromise) {\n return;\n }\n\n // typings are wrong and mark unregister as a sync method\n const unregisterPromise = this.interop.unregister(intentPromise.methodName) as unknown as Promise;\n\n unregisterPromise.catch((error) => this.logger.warn(error));\n\n delete this.intentsResolverResponsePromises[instanceId];\n }\n\n private buildStartContext(requestObj: IOConnectBrowser.Intents.IntentRequest, methodName: string): IntentsResolverStartContext {\n return {\n intent: requestObj,\n callerId: this.interop.instance.instance!,\n methodName\n };\n }\n\n private async buildStartOptions(): Promise {\n const bounds = await this.getTargetBounds();\n\n return {\n top: (bounds.height - INTENTS_RESOLVER_HEIGHT) / 2 + bounds.top,\n left: (bounds.width - INTENTS_RESOLVER_WIDTH) / 2 + bounds.left,\n width: INTENTS_RESOLVER_WIDTH,\n height: INTENTS_RESOLVER_HEIGHT\n };\n }\n\n private async getTargetBounds(): Promise {\n const bounds = await this.tryGetWindowBasedBounds() || await this.tryGetWorkspaceBasedBounds();\n\n if (bounds) {\n this.logger.trace(`Opening Intents Resolver UI with bounds: ${JSON.stringify(bounds)}`);\n\n return bounds;\n }\n\n const defaultBounds: IOConnectBrowser.Windows.Bounds = {\n top: (window as any).screen.availTop || 0,\n left: (window as any).screen.availLeft || 0,\n width: window.screen.width,\n height: window.screen.height\n };\n\n this.logger.trace(`Opening Intents Resolver UI relative to my screen bounds: ${JSON.stringify(defaultBounds)}`);\n\n return defaultBounds;\n }\n\n private async tryGetWindowBasedBounds(): Promise {\n try {\n const myWindowBounds = await this.windowsController.my().getBounds();\n\n this.logger.trace(`Opening the resolver UI relative to my window bounds: ${JSON.stringify(myWindowBounds)}`);\n\n return myWindowBounds;\n } catch (error) {\n this.logger.trace(`Failure to get my window bounds: ${JSON.stringify(error)}`);\n }\n \n // this satisfies the TS \"noImplicitReturns\" true flag\n return undefined;\n }\n\n private async tryGetWorkspaceBasedBounds(): Promise {\n try {\n await this.bridge.send(\"workspaces\" as LibDomains, systemOperations.operationCheck, { operation: \"getWorkspaceWindowFrameBounds\" });\n\n const bridgeResponse = await this.bridge.send(\"workspaces\" as LibDomains, systemOperations.getWorkspaceWindowFrameBounds, { itemId: this.windowsController.my().id });\n\n const myWorkspaceBounds = bridgeResponse.bounds;\n\n this.logger.trace(`Opening the resolver UI relative to my workspace frame window bounds: ${JSON.stringify(myWorkspaceBounds)}`);\n\n return myWorkspaceBounds;\n } catch (error) {\n this.logger.trace(`Failure to get my workspace frame window bounds: ${JSON.stringify(error)}`);\n }\n \n // this satisfies the TS \"noImplicitReturns\" true flag\n return undefined;\n }\n\n private subscribeOnInstanceStopped(instance: IOConnectBrowser.AppManager.Instance): void {\n const { application } = instance;\n\n const unsub = application.onInstanceStopped((inst: IOConnectBrowser.AppManager.Instance) => {\n if (inst.id !== instance.id) {\n return;\n }\n\n const intentPromise = this.intentsResolverResponsePromises[inst.id];\n\n if (!intentPromise) {\n return unsub();\n }\n\n intentPromise.reject(`Cannot resolve raised intent \"${intentPromise.intent}\" - User closed ${application.name} app without choosing an intent handler`);\n\n this.cleanUpIntentResolverPromise(inst.id);\n\n unsub();\n });\n }\n\n private createResponsePromise(intent: string, instanceId: string, methodName: string, timeout: number): void {\n let resolve: (arg: IntentsResolverResponse) => void = () => { };\n let reject: (reason: string) => void = () => { };\n\n const promise = PromisePlus((res, rej) => {\n resolve = res;\n reject = rej;\n }, timeout, `Timeout of ${timeout}ms hit waiting for the user to choose a handler for intent ${intent}`);\n\n this.intentsResolverResponsePromises[instanceId] = { intent, resolve, reject, promise, methodName };\n }\n\n private resolverResponseHandler(args: any, callerId: IOConnectBrowser.Interop.Instance): void {\n const response = intentResolverResponseDecoder.run(args);\n\n const instanceId = callerId.instance;\n\n if (response.ok) {\n this.logger.trace(`Intent Resolver instance with id ${instanceId} send a valid response: ${JSON.stringify(response.result)}`);\n\n return this.intentsResolverResponsePromises[instanceId!].resolve(response.result);\n }\n\n this.logger.trace(`Intent Resolver instance with id ${instanceId} sent an invalid response. Error: ${JSON.stringify(response.error)}`);\n\n this.intentsResolverResponsePromises[instanceId!].reject(response.error.message);\n\n this.stopResolverInstance(instanceId!);\n }\n\n private stopResolverInstance(instanceId: string): void {\n const searchedInstance = this.appManagerController.getInstances().find((inst: IOConnectBrowser.AppManager.Instance) => inst.id === instanceId);\n\n if (!searchedInstance) {\n return;\n }\n\n searchedInstance.stop().catch(err => this.logger.error(err));\n }\n\n private checkIfIntentHasMoreThanOneHandler(intent: IOConnectBrowser.Intents.Intent, request: IOConnectBrowser.Intents.IntentRequest): boolean {\n // if a specific app / instance is passed, do not open the resolver\n if (typeof request.target === \"object\") {\n return false;\n }\n\n return request.handlers ? request.handlers.length > 1 : intent.handlers.length > 1;\n }\n\n private checkIfResolverShouldBeOpened(intent: IOConnectBrowser.Intents.Intent, intentRequest: IOConnectBrowser.Intents.IntentRequest, resolverConfig: ResolverConfig): ShouldResolverOpen {\n if (!resolverConfig.enabled) {\n return { open: false, reason: \"Intent Resolver is disabled. Raising intent to first found handler\" };\n }\n\n const intentsResolverApp = this.appManagerController.getApplication(resolverConfig.appName);\n\n if (!intentsResolverApp) {\n return { open: false, reason: `Application with name ${resolverConfig.appName} not found` };\n }\n\n const hasMoreThanOneHandler = this.checkIfIntentHasMoreThanOneHandler(intent, intentRequest);\n\n if (!hasMoreThanOneHandler) {\n return { open: false, reason: \"Raised intent has only one handler\" };\n }\n\n return { open: true };\n }\n}","import { IOConnectBrowser } from \"../../browser\";\nimport { allThemesResponseDecoder, selectThemeConfigDecoder, simpleThemeResponseDecoder } from \"../shared/decoders\";\nimport { BridgeOperation } from \"../shared/types\";\n\nexport type ThemesOperationTypes = \"getCurrent\" | \"list\" | \"select\";\n\nexport const operations: { [key in ThemesOperationTypes]: BridgeOperation } = {\n getCurrent: { name: \"getCurrent\", resultDecoder: simpleThemeResponseDecoder },\n list: { name: \"list\", resultDecoder: allThemesResponseDecoder },\n select: { name: \"select\", dataDecoder: selectThemeConfigDecoder }\n};\n\nexport interface SimpleThemeResponse {\n theme: IOConnectBrowser.Themes.Theme;\n}\n\nexport interface AllThemesResponse {\n themes: IOConnectBrowser.Themes.Theme[];\n}\n\nexport interface SelectThemeConfig {\n name: string;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IOConnectCore } from \"@interopio/core\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { IoC } from \"../shared/ioc\";\nimport { LibController } from \"../shared/types\";\nimport {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction\n} from \"callback-registry\";\nimport { nonEmptyStringDecoder, simpleThemeResponseDecoder } from \"../shared/decoders\";\nimport { AllThemesResponse, operations, SelectThemeConfig, SimpleThemeResponse } from \"./protocol\";\n\nexport class ThemesController implements LibController {\n\n private logger!: IOConnectBrowser.Logger.API;\n private bridge!: GlueBridge;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n private themesSubscription: IOConnectCore.AGM.Subscription | undefined;\n private activeThemeSubs = 0;\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"themes.controller.web\");\n\n this.logger.trace(\"starting the web themes controller\");\n\n this.bridge = ioc.bridge;\n\n const api = this.toApi();\n\n (coreGlue as IOConnectBrowser.API).themes = api;\n\n this.logger.trace(\"themes are ready\");\n }\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n this.activeThemeSubs = 0;\n this.themesSubscription?.close();\n\n delete this.themesSubscription;\n }\n\n public async handleBridgeMessage(): Promise {\n // noop, because we do not want theme changes notifications to be published by default\n }\n\n private toApi(): IOConnectBrowser.Themes.API {\n const api: IOConnectBrowser.Themes.API = {\n getCurrent: this.getCurrent.bind(this),\n list: this.list.bind(this),\n select: this.select.bind(this),\n onChanged: this.onChanged.bind(this)\n };\n\n return Object.freeze(api);\n }\n\n private async getCurrent(): Promise {\n\n const bridgeResponse = await this.bridge.send(\"themes\", operations.getCurrent, undefined, undefined, { includeOperationCheck: true });\n\n return bridgeResponse.theme;\n }\n\n private async list(): Promise {\n const bridgeResponse = await this.bridge.send(\"themes\", operations.list, undefined, undefined, { includeOperationCheck: true });\n\n return bridgeResponse.themes;\n }\n\n private async select(name: string): Promise {\n nonEmptyStringDecoder.runWithException(name);\n\n await this.bridge.send(\"themes\", operations.select, { name }, undefined, { includeOperationCheck: true });\n }\n\n private async onChanged(callback: (theme: IOConnectBrowser.Themes.Theme) => any): Promise {\n\n if (typeof callback !== \"function\") {\n throw new Error(\"onChanged requires a callback of type function\");\n }\n\n const subReady = this.themesSubscription ?\n Promise.resolve() :\n this.configureThemeSubscription();\n\n await subReady;\n\n ++this.activeThemeSubs;\n const unsubFunc = this.registry.add(\"on-theme-change\", callback);\n\n return () => this.themeUnsub(unsubFunc);\n }\n\n private async configureThemeSubscription(): Promise {\n if (this.themesSubscription) {\n return;\n }\n\n this.themesSubscription = await this.bridge.createNotificationsSteam();\n\n this.themesSubscription.onData((data) => {\n const eventData = data.data;\n\n const validation = simpleThemeResponseDecoder.run(eventData);\n\n if (!validation.ok) {\n this.logger.warn(`Received invalid theme data on the theme event stream: ${JSON.stringify(validation.error)}`);\n return;\n }\n\n const themeChanged = validation.result;\n\n this.registry.execute(\"on-theme-change\", themeChanged.theme);\n });\n\n this.themesSubscription.onClosed(() => {\n this.logger.warn(\"The Themes interop stream was closed, no theme changes notifications will be received\");\n this.registry.clear();\n this.activeThemeSubs = 0;\n delete this.themesSubscription;\n });\n\n }\n\n private themeUnsub(registryUnsub: UnsubscribeFunction): void {\n registryUnsub();\n --this.activeThemeSubs;\n\n if (this.activeThemeSubs) {\n return;\n }\n\n this.themesSubscription?.close();\n\n delete this.themesSubscription;\n }\n}","import { SessionStorageConfig, WindowSessionData } from \"./types\";\n\nexport class SessionStorageController {\n private sessionStorage: Storage = window.sessionStorage;\n private windowId!: string;\n private get allNamespaces(): { namespace: string; defaultValue: any }[] {\n return [{ namespace: this.windowNamespace, defaultValue: {} }];\n }\n\n public configure(config: SessionStorageConfig): void {\n this.windowId = config.windowId;\n\n this.allNamespaces.forEach(({ namespace, defaultValue }) => {\n const data = this.sessionStorage.getItem(namespace);\n\n if (!data) {\n this.sessionStorage.setItem(namespace, JSON.stringify(defaultValue));\n }\n });\n }\n\n private get windowNamespace(): string {\n return `io_connect_window_${this.windowId}`;\n }\n\n public getWindowData(): WindowSessionData {\n return JSON.parse(this.sessionStorage.getItem(this.windowNamespace) as string);\n }\n\n public setWindowData(data: WindowSessionData[Key], key: Key): void {\n const allData = this.getWindowData();\n\n allData[key] = data;\n\n this.sessionStorage.setItem(this.windowNamespace, JSON.stringify(allData));\n }\n}\n","import { BridgeOperation } from \"../shared/types\";\nimport { basePrefsConfigDecoder, changePrefsDataDecoder, getAllPrefsResultDecoder, getPrefsResultDecoder, prefsHelloSuccessDecoder } from \"../shared/decoders\";\n\nexport type PrefsOperationTypes = \"clear\" | \"clearAll\" | \"get\" | \"getAll\" | \"set\" | \"update\" | \"prefsChanged\" | \"prefsHello\";\n\nexport const operations: { [key in PrefsOperationTypes]: BridgeOperation } = {\n clear: { name: \"clear\", dataDecoder: basePrefsConfigDecoder },\n clearAll: { name: \"clearAll\" },\n get: { name: \"get\", dataDecoder: basePrefsConfigDecoder, resultDecoder: getPrefsResultDecoder },\n getAll: { name: \"getAll\", resultDecoder: getAllPrefsResultDecoder },\n set: { name: \"set\", dataDecoder: changePrefsDataDecoder },\n update: { name: \"update\", dataDecoder: changePrefsDataDecoder },\n prefsChanged: { name: \"prefsChanged\", dataDecoder: getPrefsResultDecoder },\n prefsHello: { name: \"prefsHello\", resultDecoder: prefsHelloSuccessDecoder },\n};\n\nexport interface BasePrefsConfig {\n app: string;\n}\n\nexport interface PrefsHelloSuccess {\n platform: {\n app: string;\n };\n}\n","import {\n default as CallbackRegistryFactory,\n CallbackRegistry,\n UnsubscribeFunction,\n} from \"callback-registry\";\nimport { IOConnectCore } from \"@interopio/core\";\nimport { object, optional } from \"decoder-validate\";\nimport { AppManagerController } from \"../appManager/controller\";\nimport { BasePrefsConfig, PrefsHelloSuccess, operations } from \"./protocol\";\nimport { basePrefsConfigDecoder, nonEmptyStringDecoder, prefsOperationTypesDecoder } from \"../shared/decoders\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { IoC } from \"../shared/ioc\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { LibController, ParsedConfig } from \"../shared/types\";\n\nexport class PrefsController implements LibController {\n private bridge!: GlueBridge;\n private config!: ParsedConfig;\n private logger!: IOConnectBrowser.Logger.API;\n private appManagerController!: AppManagerController;\n private platformAppName!: string;\n private readonly registry: CallbackRegistry = CallbackRegistryFactory();\n\n public handlePlatformShutdown(): void {\n this.registry.clear();\n }\n\n public async start(coreGlue: IOConnectCore.API, ioc: IoC): Promise {\n this.logger = coreGlue.logger.subLogger(\"prefs.controller.web\");\n\n this.logger.trace(\"starting the web prefs controller\");\n\n this.addOperationsExecutors();\n\n this.bridge = ioc.bridge;\n\n this.config = ioc.config;\n\n this.appManagerController = ioc.appManagerController;\n\n try {\n const prefsHelloSuccess = await this.bridge.send(\"prefs\", operations.prefsHello, undefined, undefined, { includeOperationCheck: true });\n\n this.platformAppName = prefsHelloSuccess.platform.app;\n } catch (error) {\n this.logger.warn(\"The platform of this client is outdated and does not support Prefs API.\");\n return;\n }\n\n this.logger.trace(\"no need for platform registration, attaching the prefs property to glue and returning\");\n\n const api = this.toApi();\n\n (coreGlue as IOConnectBrowser.API).prefs = api;\n }\n\n public async handleBridgeMessage(args: any): Promise {\n const operationName = prefsOperationTypesDecoder.runWithException(args.operation);\n\n const operation = operations[operationName];\n\n if (!operation.execute) {\n return;\n }\n\n let operationData: any = args.data;\n\n if (operation.dataDecoder) {\n operationData = operation.dataDecoder.runWithException(args.data);\n }\n\n return await operation.execute(operationData);\n }\n\n private addOperationsExecutors(): void {\n operations.prefsChanged.execute = this.handleOnChanged.bind(this);\n }\n\n private toApi(): IOConnectBrowser.Prefs.API {\n const api: IOConnectBrowser.Prefs.API = {\n clear: this.clear.bind(this),\n clearAll: this.clearAll.bind(this),\n clearFor: this.clearFor.bind(this),\n get: this.get.bind(this),\n getAll: this.getAll.bind(this),\n set: this.set.bind(this),\n setFor: this.setFor.bind(this),\n subscribe: this.subscribe.bind(this),\n subscribeFor: this.subscribeFor.bind(this),\n update: this.update.bind(this),\n updateFor: this.updateFor.bind(this),\n };\n\n return api;\n }\n\n private async clear(): Promise {\n const app = this.getMyAppName();\n\n await this.clearFor(app);\n }\n\n private async clearAll(): Promise {\n await this.bridge.send(\"prefs\", operations.clearAll, undefined , undefined, { includeOperationCheck: true });\n }\n\n private async clearFor(app: string): Promise {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n\n await this.bridge.send(\"prefs\", operations.clear, { app: verifiedApp }, undefined, { includeOperationCheck: true });\n }\n\n private async get(app?: string): Promise {\n const verifiedApp = app === undefined || app === null ? this.getMyAppName() : nonEmptyStringDecoder.runWithException(app);\n\n const { prefs } = await this.bridge.send(\"prefs\", operations.get, { app: verifiedApp }, undefined, { includeOperationCheck: true });\n \n return prefs;\n }\n\n private async getAll(): Promise<{ all: IOConnectBrowser.Prefs.AppPreferences[] }> {\n const result = await this.bridge.send(\"prefs\", operations.getAll, undefined, undefined, { includeOperationCheck: true });\n\n return result;\n }\n\n private async set(data: any, options?: BasePrefsConfig): Promise {\n const verifiedOptions = optional(basePrefsConfigDecoder).runWithException(options);\n const app = verifiedOptions?.app ?? this.getMyAppName();\n\n await this.setFor(app, data);\n }\n\n private async setFor(app: string, data: any): Promise {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n const verifiedData = object().runWithException(data);\n\n await this.bridge.send<{ app: string, data: any }, void>(\"prefs\", operations.set, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true });\n }\n\n private subscribe(callback: (prefs: IOConnectBrowser.Prefs.AppPreferences) => void): UnsubscribeFunction {\n const app = this.getMyAppName();\n\n return this.subscribeFor(app, callback);\n }\n\n private subscribeFor(app: string, callback: (prefs: IOConnectBrowser.Prefs.AppPreferences) => void): UnsubscribeFunction {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n const applications = this.appManagerController.getApplications();\n const isValidApp = verifiedApp === this.platformAppName || applications.some((application) => application.name === verifiedApp);\n\n if (!isValidApp) {\n throw new Error(`The provided app name \"${app}\" is not valid.`);\n }\n\n if (typeof callback !== \"function\") {\n throw new Error(\"Cannot subscribe to prefs, because the provided callback is not a function!\");\n }\n\n const subscriptionKey = this.getSubscriptionKey(verifiedApp);\n\n this.get(verifiedApp).then(callback);\n\n return this.registry.add(subscriptionKey, callback);\n }\n\n private async update(data: any, options?: BasePrefsConfig): Promise {\n const verifiedOptions = optional(basePrefsConfigDecoder).runWithException(options);\n const app = verifiedOptions?.app ?? this.getMyAppName();\n\n await this.updateFor(app, data);\n }\n\n private async updateFor(app: string, data: any): Promise {\n const verifiedApp = nonEmptyStringDecoder.runWithException(app);\n const verifiedData = object().runWithException(data);\n\n await this.bridge.send<{ app: string, data: any }, void>(\"prefs\", operations.update, { app: verifiedApp, data: verifiedData }, undefined, { includeOperationCheck: true });\n }\n\n private getMyAppName(): string {\n const myAppName = this.config.isPlatformInternal ? this.platformAppName : this.appManagerController.me?.application.name;\n\n if (!myAppName) {\n throw new Error(\"App Preferences operations can not be executed for windows that do not have app!\");\n }\n \n return myAppName;\n }\n\n private getSubscriptionKey(app: string): string {\n return `prefs-changed-${app}`;\n }\n\n private async handleOnChanged({ prefs }: { prefs: IOConnectBrowser.Prefs.AppPreferences }): Promise {\n const subscriptionKey = this.getSubscriptionKey(prefs.app);\n \n this.registry.execute(subscriptionKey, prefs);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { WebWindowModel } from \"../windows/webWindow\";\nimport { LibController, LibDomains, ParsedConfig } from \"./types\";\nimport { WindowsController } from \"../windows/controller\";\nimport { IOConnectCore } from \"@interopio/core\";\nimport { GlueBridge } from \"../communication/bridge\";\nimport { AppManagerController } from \"../appManager/controller\";\nimport { WindowProjection } from \"../windows/protocol\";\nimport { BaseApplicationData, InstanceData } from \"../appManager/protocol\";\nimport { IOConnectBrowser } from \"../../browser\";\nimport { InstanceModel } from \"../appManager/instance\";\nimport { ApplicationModel } from \"../appManager/application\";\nimport { LayoutsController } from \"../layouts/controller\";\nimport { NotificationsController } from \"../notifications/controller\";\nimport { IntentsController } from \"../intents/controller\";\nimport { ChannelsController } from \"../channels/controller\";\nimport { SystemController } from \"../system/controller\";\nimport { Notification } from \"../notifications/notification\";\nimport { ExtController } from \"../extension/controller\";\nimport { EventsDispatcher } from \"./dispatcher\";\nimport { PreferredConnectionController } from \"../communication/preferred\";\nimport { LegacyIntentsHelper } from \"../intents/legacyHelper\";\nimport { ThemesController } from \"../themes/controller\";\nimport { SessionStorageController } from \"../storage/session\";\nimport { PrefsController } from \"../prefs/controller\";\n\nexport class IoC {\n private _coreGlue!: IOConnectCore.API;\n private _communicationId!: string;\n private _publicWindowId!: string;\n private _webConfig!: ParsedConfig;\n private _windowsControllerInstance!: WindowsController;\n private _appManagerControllerInstance!: AppManagerController;\n private _layoutsControllerInstance!: LayoutsController;\n private _notificationsControllerInstance!: NotificationsController;\n private _intentsControllerInstance!: IntentsController;\n private _legacyIntentsHelperInstance!: LegacyIntentsHelper;\n private _channelsControllerInstance!: ChannelsController;\n private _themesControllerInstance!: ThemesController;\n private _extensionController!: ExtController;\n private _systemControllerInstance!: SystemController;\n private _bridgeInstance!: GlueBridge;\n private _eventsDispatcher!: EventsDispatcher;\n private _preferredConnectionController!: PreferredConnectionController;\n private _sessionController!: SessionStorageController;\n private _prefsControllerInstance!: PrefsController;\n\n public controllers: { [key in LibDomains]: LibController } = {\n windows: this.windowsController,\n appManager: this.appManagerController,\n layouts: this.layoutsController,\n notifications: this.notificationsController,\n intents: this.intentsController,\n channels: this.channelsController,\n system: this.systemController,\n extension: this.extensionController,\n themes: this.themesController,\n prefs: this.prefsController\n };\n\n public get communicationId(): string {\n return this._communicationId;\n }\n\n public get publicWindowId(): string {\n return this._publicWindowId;\n }\n\n public get windowsController(): WindowsController {\n if (!this._windowsControllerInstance) {\n this._windowsControllerInstance = new WindowsController();\n }\n\n return this._windowsControllerInstance;\n }\n\n public get appManagerController(): AppManagerController {\n if (!this._appManagerControllerInstance) {\n this._appManagerControllerInstance = new AppManagerController();\n }\n\n return this._appManagerControllerInstance;\n }\n\n public get layoutsController(): LayoutsController {\n if (!this._layoutsControllerInstance) {\n this._layoutsControllerInstance = new LayoutsController();\n }\n\n return this._layoutsControllerInstance;\n }\n\n public get themesController(): ThemesController {\n if (!this._themesControllerInstance) {\n this._themesControllerInstance = new ThemesController();\n }\n\n return this._themesControllerInstance;\n }\n\n public get notificationsController(): NotificationsController {\n if (!this._notificationsControllerInstance) {\n this._notificationsControllerInstance = new NotificationsController();\n }\n\n return this._notificationsControllerInstance;\n }\n\n public get intentsController(): IntentsController {\n if (!this._intentsControllerInstance) {\n this._intentsControllerInstance = new IntentsController();\n }\n\n return this._intentsControllerInstance;\n }\n\n public get legacyIntentsHelper(): LegacyIntentsHelper {\n if (!this._legacyIntentsHelperInstance) {\n this._legacyIntentsHelperInstance = new LegacyIntentsHelper(this._coreGlue.logger, this.bridge, this._coreGlue.interop, this.appManagerController, this.windowsController);\n }\n\n return this._legacyIntentsHelperInstance;\n }\n\n public get systemController(): SystemController {\n if (!this._systemControllerInstance) {\n this._systemControllerInstance = new SystemController();\n }\n\n return this._systemControllerInstance;\n }\n\n public get channelsController(): ChannelsController {\n if (!this._channelsControllerInstance) {\n this._channelsControllerInstance = new ChannelsController();\n }\n\n return this._channelsControllerInstance;\n }\n\n public get prefsController(): PrefsController {\n if (!this._prefsControllerInstance) {\n this._prefsControllerInstance = new PrefsController();\n }\n\n return this._prefsControllerInstance;\n }\n\n public get extensionController(): ExtController {\n if (!this._extensionController) {\n this._extensionController = new ExtController();\n }\n\n return this._extensionController;\n }\n\n public get eventsDispatcher(): EventsDispatcher {\n if (!this._eventsDispatcher) {\n this._eventsDispatcher = new EventsDispatcher(this.config);\n }\n\n return this._eventsDispatcher;\n }\n\n public get bridge(): GlueBridge {\n if (!this._bridgeInstance) {\n this._bridgeInstance = new GlueBridge(this._coreGlue, this.communicationId);\n }\n\n return this._bridgeInstance;\n }\n\n public get preferredConnectionController(): PreferredConnectionController {\n if (!this._preferredConnectionController) {\n this._preferredConnectionController = new PreferredConnectionController(this._coreGlue);\n }\n\n return this._preferredConnectionController;\n }\n \n public get sessionController(): SessionStorageController {\n if (!this._sessionController) {\n this._sessionController = new SessionStorageController();\n }\n\n return this._sessionController;\n }\n\n public get config(): ParsedConfig {\n return this._webConfig;\n }\n\n public defineGlue(coreGlue: IOConnectCore.API): void {\n this._coreGlue = coreGlue;\n\n this._publicWindowId = (coreGlue as any).connection.transport.publicWindowId;\n\n const globalNamespace = (window as any).glue42core || (window as any).iobrowser;\n // the communicationId will be available in the global namespace if this client is an internal client to the platform\n this._communicationId = (coreGlue as any).connection.transport.communicationId || globalNamespace.communicationId;\n }\n\n public defineConfig(config: ParsedConfig): void {\n this._webConfig = config;\n }\n\n public async buildWebWindow(id: string, name: string): Promise {\n\n const model = new WebWindowModel(id, name, this.bridge);\n\n const api = await model.toApi();\n\n return { id, model, api };\n }\n\n public buildNotification(config: IOConnectBrowser.Notifications.RaiseOptions, id: string): IOConnectBrowser.Notifications.Notification {\n return new Notification(config, id);\n }\n\n public async buildApplication(app: BaseApplicationData, applicationInstances: InstanceData[]): Promise {\n\n const application = (new ApplicationModel(app, [], this.appManagerController)).toApi();\n\n const instances = applicationInstances.map((instanceData) => this.buildInstance(instanceData, application));\n\n application.instances.push(...instances);\n\n return application;\n }\n\n public buildInstance(instanceData: InstanceData, app: IOConnectBrowser.AppManager.Application): IOConnectBrowser.AppManager.Instance {\n return (new InstanceModel(instanceData, this.bridge, app)).toApi();\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* tslint:disable:no-console no-empty */\nimport { IOConnectCoreFactoryFunction } from \"@interopio/core\";\nimport { IOConnectDesktop } from \"@interopio/desktop\";\nimport { IOConnectBrowser, IOConnectBrowserFactoryFunction } from \"../browser\";\nimport { parseConfig } from \"./config\";\nimport { checkSingleton } from \"./config/checkSingleton\";\nimport { enterprise } from \"./enterprise\";\nimport { IoC } from \"./shared/ioc\";\nimport { PromiseWrap } from \"./shared/promise-plus\";\nimport { version } from \"../package.json\";\n\n/** This function creates the factory function which is the default export of the library */\nexport const createFactoryFunction = (coreFactoryFunction: IOConnectCoreFactoryFunction): IOConnectBrowserFactoryFunction => {\n\n return async (userConfig?: IOConnectBrowser.Config): Promise => {\n if (window.glue42gd || (window as any).iodesktop) {\n return enterprise(userConfig);\n }\n\n const ioc = new IoC();\n\n const config = parseConfig(userConfig);\n\n checkSingleton();\n\n const glue = await PromiseWrap(() => coreFactoryFunction(config, { version }) as Promise, 30000, \"Glue Web initialization timed out, because core didn't resolve\");\n\n const logger = glue.logger.subLogger(\"web.main.controller\");\n\n ioc.defineGlue(glue);\n\n ioc.sessionController.configure({ windowId: glue.interop.instance.instance as string });\n\n await ioc.preferredConnectionController.start(config);\n\n await ioc.bridge.start(ioc.controllers);\n\n ioc.defineConfig(config);\n\n logger.trace(\"the bridge has been started, initializing all controllers\");\n\n await Promise.all(Object.values(ioc.controllers).map((controller) => controller.start(glue, ioc)));\n\n logger.trace(\"all controllers reported started, starting all additional libraries\");\n\n await Promise.all(config.libraries.map((lib: any) => lib(glue, config)));\n\n logger.trace(\"all libraries were started\");\n\n ioc.eventsDispatcher.start(glue);\n\n logger.trace(\"start event dispatched, glue is ready, returning it\");\n\n return glue;\n };\n};\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar MetricTypes = {\r\n STRING: 1,\r\n NUMBER: 2,\r\n TIMESTAMP: 3,\r\n OBJECT: 4\r\n};\n\nfunction getMetricTypeByValue(metric) {\r\n if (metric.type === MetricTypes.TIMESTAMP) {\r\n return \"timestamp\";\r\n }\r\n else if (metric.type === MetricTypes.NUMBER) {\r\n return \"number\";\r\n }\r\n else if (metric.type === MetricTypes.STRING) {\r\n return \"string\";\r\n }\r\n else if (metric.type === MetricTypes.OBJECT) {\r\n return \"object\";\r\n }\r\n return \"unknown\";\r\n}\r\nfunction getTypeByValue(value) {\r\n if (value.constructor === Date) {\r\n return \"timestamp\";\r\n }\r\n else if (typeof value === \"number\") {\r\n return \"number\";\r\n }\r\n else if (typeof value === \"string\") {\r\n return \"string\";\r\n }\r\n else if (typeof value === \"object\") {\r\n return \"object\";\r\n }\r\n else {\r\n return \"string\";\r\n }\r\n}\r\nfunction serializeMetric(metric) {\r\n var serializedMetrics = {};\r\n var type = getMetricTypeByValue(metric);\r\n if (type === \"object\") {\r\n var values = Object.keys(metric.value).reduce(function (memo, key) {\r\n var innerType = getTypeByValue(metric.value[key]);\r\n if (innerType === \"object\") {\r\n var composite = defineNestedComposite(metric.value[key]);\r\n memo[key] = {\r\n type: \"object\",\r\n description: \"\",\r\n context: {},\r\n composite: composite,\r\n };\r\n }\r\n else {\r\n memo[key] = {\r\n type: innerType,\r\n description: \"\",\r\n context: {},\r\n };\r\n }\r\n return memo;\r\n }, {});\r\n serializedMetrics.composite = values;\r\n }\r\n serializedMetrics.name = normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name);\r\n serializedMetrics.type = type;\r\n serializedMetrics.description = metric.description;\r\n serializedMetrics.context = {};\r\n return serializedMetrics;\r\n}\r\nfunction defineNestedComposite(values) {\r\n return Object.keys(values).reduce(function (memo, key) {\r\n var type = getTypeByValue(values[key]);\r\n if (type === \"object\") {\r\n memo[key] = {\r\n type: \"object\",\r\n description: \"\",\r\n context: {},\r\n composite: defineNestedComposite(values[key]),\r\n };\r\n }\r\n else {\r\n memo[key] = {\r\n type: type,\r\n description: \"\",\r\n context: {},\r\n };\r\n }\r\n return memo;\r\n }, {});\r\n}\r\nfunction normalizeMetricName(name) {\r\n if (typeof name !== \"undefined\" && name.length > 0 && name[0] !== \"/\") {\r\n return \"/\" + name;\r\n }\r\n else {\r\n return name;\r\n }\r\n}\r\nfunction getMetricValueByType(metric) {\r\n var type = getMetricTypeByValue(metric);\r\n if (type === \"timestamp\") {\r\n return Date.now();\r\n }\r\n else {\r\n return publishNestedComposite(metric.value);\r\n }\r\n}\r\nfunction publishNestedComposite(values) {\r\n if (typeof values !== \"object\") {\r\n return values;\r\n }\r\n return Object.keys(values).reduce(function (memo, key) {\r\n var value = values[key];\r\n if (typeof value === \"object\" && value.constructor !== Date) {\r\n memo[key] = publishNestedComposite(value);\r\n }\r\n else if (value.constructor === Date) {\r\n memo[key] = new Date(value).getTime();\r\n }\r\n else if (value.constructor === Boolean) {\r\n memo[key] = value.toString();\r\n }\r\n else {\r\n memo[key] = value;\r\n }\r\n return memo;\r\n }, {});\r\n}\r\nfunction flatten(arr) {\r\n return arr.reduce(function (flat, toFlatten) {\r\n return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);\r\n }, []);\r\n}\r\nfunction getHighestState(arr) {\r\n return arr.sort(function (a, b) {\r\n if (!a.state) {\r\n return 1;\r\n }\r\n if (!b.state) {\r\n return -1;\r\n }\r\n return b.state - a.state;\r\n })[0];\r\n}\r\nfunction aggregateDescription(arr) {\r\n var msg = \"\";\r\n arr.forEach(function (m, idx, a) {\r\n var path = m.path.join(\".\");\r\n if (idx === a.length - 1) {\r\n msg += path + \".\" + m.name + \": \" + m.description;\r\n }\r\n else {\r\n msg += path + \".\" + m.name + \": \" + m.description + \",\";\r\n }\r\n });\r\n if (msg.length > 100) {\r\n return msg.slice(0, 100) + \"...\";\r\n }\r\n else {\r\n return msg;\r\n }\r\n}\r\nfunction composeMsgForRootStateMetric(system) {\r\n var aggregatedState = system.root.getAggregateState();\r\n var merged = flatten(aggregatedState);\r\n var highestState = getHighestState(merged);\r\n var aggregateDesc = aggregateDescription(merged);\r\n return {\r\n description: aggregateDesc,\r\n value: highestState.state,\r\n };\r\n}\n\nfunction gw3 (connection, config) {\r\n var _this = this;\r\n if (!connection || typeof connection !== \"object\") {\r\n throw new Error(\"Connection is required parameter\");\r\n }\r\n var joinPromise;\r\n var session;\r\n var init = function (repo) {\r\n var resolveReadyPromise;\r\n joinPromise = new Promise(function (resolve) {\r\n resolveReadyPromise = resolve;\r\n });\r\n session = connection.domain(\"metrics\");\r\n session.onJoined(function (reconnect) {\r\n if (!reconnect && resolveReadyPromise) {\r\n resolveReadyPromise();\r\n resolveReadyPromise = undefined;\r\n }\r\n var rootStateMetric = {\r\n name: \"/State\",\r\n type: \"object\",\r\n composite: {\r\n Description: {\r\n type: \"string\",\r\n description: \"\",\r\n },\r\n Value: {\r\n type: \"number\",\r\n description: \"\",\r\n },\r\n },\r\n description: \"System state\",\r\n context: {},\r\n };\r\n var defineRootMetricsMsg = {\r\n type: \"define\",\r\n metrics: [rootStateMetric],\r\n };\r\n session.send(defineRootMetricsMsg);\r\n if (reconnect) {\r\n replayRepo(repo);\r\n }\r\n });\r\n session.join({\r\n system: config.system,\r\n service: config.service,\r\n instance: config.instance\r\n });\r\n };\r\n var replayRepo = function (repo) {\r\n replaySystem(repo.root);\r\n };\r\n var replaySystem = function (system) {\r\n createSystem(system);\r\n system.metrics.forEach(function (m) {\r\n createMetric(m);\r\n });\r\n system.subSystems.forEach(function (ss) {\r\n replaySystem(ss);\r\n });\r\n };\r\n var createSystem = function (system) { return __awaiter(_this, void 0, void 0, function () {\r\n var metric, createMetricsMsg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (system.parent === undefined) {\r\n return [2];\r\n }\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n metric = {\r\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\r\n type: \"object\",\r\n composite: {\r\n Description: {\r\n type: \"string\",\r\n description: \"\",\r\n },\r\n Value: {\r\n type: \"number\",\r\n description: \"\",\r\n },\r\n },\r\n description: \"System state\",\r\n context: {},\r\n };\r\n createMetricsMsg = {\r\n type: \"define\",\r\n metrics: [metric],\r\n };\r\n session.send(createMetricsMsg);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateSystem = function (system, state) { return __awaiter(_this, void 0, void 0, function () {\r\n var shadowedUpdateMetric, stateObj, rootMetric;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n shadowedUpdateMetric = {\r\n type: \"publish\",\r\n values: [{\r\n name: normalizeMetricName(system.path.join(\"/\") + \"/\" + system.name + \"/State\"),\r\n value: {\r\n Description: state.description,\r\n Value: state.state,\r\n },\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n session.send(shadowedUpdateMetric);\r\n stateObj = composeMsgForRootStateMetric(system);\r\n rootMetric = {\r\n type: \"publish\",\r\n peer_id: connection.peerId,\r\n values: [{\r\n name: \"/State\",\r\n value: {\r\n Description: stateObj.description,\r\n Value: stateObj.value,\r\n },\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n session.send(rootMetric);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var createMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () {\r\n var metricClone, m, createMetricsMsg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metricClone = cloneMetric(metric);\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n m = serializeMetric(metricClone);\r\n createMetricsMsg = {\r\n type: \"define\",\r\n metrics: [m],\r\n };\r\n session.send(createMetricsMsg);\r\n if (typeof metricClone.value !== \"undefined\") {\r\n updateMetricCore(metricClone);\r\n }\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateMetric = function (metric) { return __awaiter(_this, void 0, void 0, function () {\r\n var metricClone;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metricClone = cloneMetric(metric);\r\n return [4, joinPromise];\r\n case 1:\r\n _a.sent();\r\n updateMetricCore(metricClone);\r\n return [2];\r\n }\r\n });\r\n }); };\r\n var updateMetricCore = function (metric) {\r\n if (canUpdate()) {\r\n var value = getMetricValueByType(metric);\r\n var publishMetricsMsg = {\r\n type: \"publish\",\r\n values: [{\r\n name: normalizeMetricName(metric.path.join(\"/\") + \"/\" + metric.name),\r\n value: value,\r\n timestamp: Date.now(),\r\n }],\r\n };\r\n return session.sendFireAndForget(publishMetricsMsg);\r\n }\r\n return Promise.resolve();\r\n };\r\n var cloneMetric = function (metric) {\r\n var metricClone = __assign({}, metric);\r\n if (typeof metric.value === \"object\" && metric.value !== null) {\r\n metricClone.value = __assign({}, metric.value);\r\n }\r\n return metricClone;\r\n };\r\n var canUpdate = function () {\r\n var _a;\r\n try {\r\n var func = (_a = config.canUpdateMetric) !== null && _a !== void 0 ? _a : (function () { return true; });\r\n return func();\r\n }\r\n catch (_b) {\r\n return true;\r\n }\r\n };\r\n return {\r\n init: init,\r\n createSystem: createSystem,\r\n updateSystem: updateSystem,\r\n createMetric: createMetric,\r\n updateMetric: updateMetric,\r\n };\r\n}\n\nvar Helpers = {\r\n validate: function (definition, parent, transport) {\r\n if (definition === null || typeof definition !== \"object\") {\r\n throw new Error(\"Missing definition\");\r\n }\r\n if (parent === null || typeof parent !== \"object\") {\r\n throw new Error(\"Missing parent\");\r\n }\r\n if (transport === null || typeof transport !== \"object\") {\r\n throw new Error(\"Missing transport\");\r\n }\r\n },\r\n};\n\nvar BaseMetric = (function () {\r\n function BaseMetric(definition, system, transport, value, type) {\r\n this.definition = definition;\r\n this.system = system;\r\n this.transport = transport;\r\n this.value = value;\r\n this.type = type;\r\n this.path = [];\r\n Helpers.validate(definition, system, transport);\r\n this.path = system.path.slice(0);\r\n this.path.push(system.name);\r\n this.name = definition.name;\r\n this.description = definition.description;\r\n transport.createMetric(this);\r\n }\r\n Object.defineProperty(BaseMetric.prototype, \"repo\", {\r\n get: function () {\r\n var _a;\r\n return (_a = this.system) === null || _a === void 0 ? void 0 : _a.repo;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(BaseMetric.prototype, \"id\", {\r\n get: function () { return \"\".concat(this.system.path, \"/\").concat(name); },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n BaseMetric.prototype.update = function (newValue) {\r\n this.value = newValue;\r\n return this.transport.updateMetric(this);\r\n };\r\n return BaseMetric;\r\n}());\n\nvar NumberMetric = (function (_super) {\r\n __extends(NumberMetric, _super);\r\n function NumberMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.NUMBER) || this;\r\n }\r\n NumberMetric.prototype.incrementBy = function (num) {\r\n this.update(this.value + num);\r\n };\r\n NumberMetric.prototype.increment = function () {\r\n this.incrementBy(1);\r\n };\r\n NumberMetric.prototype.decrement = function () {\r\n this.incrementBy(-1);\r\n };\r\n NumberMetric.prototype.decrementBy = function (num) {\r\n this.incrementBy(num * -1);\r\n };\r\n return NumberMetric;\r\n}(BaseMetric));\n\nvar ObjectMetric = (function (_super) {\r\n __extends(ObjectMetric, _super);\r\n function ObjectMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.OBJECT) || this;\r\n }\r\n ObjectMetric.prototype.update = function (newValue) {\r\n this.mergeValues(newValue);\r\n return this.transport.updateMetric(this);\r\n };\r\n ObjectMetric.prototype.mergeValues = function (values) {\r\n var _this = this;\r\n return Object.keys(this.value).forEach(function (k) {\r\n if (typeof values[k] !== \"undefined\") {\r\n _this.value[k] = values[k];\r\n }\r\n });\r\n };\r\n return ObjectMetric;\r\n}(BaseMetric));\n\nvar StringMetric = (function (_super) {\r\n __extends(StringMetric, _super);\r\n function StringMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.STRING) || this;\r\n }\r\n return StringMetric;\r\n}(BaseMetric));\n\nvar TimestampMetric = (function (_super) {\r\n __extends(TimestampMetric, _super);\r\n function TimestampMetric(definition, system, transport, value) {\r\n return _super.call(this, definition, system, transport, value, MetricTypes.TIMESTAMP) || this;\r\n }\r\n TimestampMetric.prototype.now = function () {\r\n this.update(new Date());\r\n };\r\n return TimestampMetric;\r\n}(BaseMetric));\n\nfunction system(name, repo, protocol, parent, description) {\r\n if (!repo) {\r\n throw new Error(\"Repository is required\");\r\n }\r\n if (!protocol) {\r\n throw new Error(\"Transport is required\");\r\n }\r\n var _transport = protocol;\r\n var _name = name;\r\n var _description = description || \"\";\r\n var _repo = repo;\r\n var _parent = parent;\r\n var _path = _buildPath(parent);\r\n var _state = {};\r\n var id = _arrayToString(_path, \"/\") + name;\r\n var root = repo.root;\r\n var _subSystems = [];\r\n var _metrics = [];\r\n function subSystem(nameSystem, descriptionSystem) {\r\n if (!nameSystem || nameSystem.length === 0) {\r\n throw new Error(\"name is required\");\r\n }\r\n var match = _subSystems.filter(function (s) { return s.name === nameSystem; });\r\n if (match.length > 0) {\r\n return match[0];\r\n }\r\n var _system = system(nameSystem, _repo, _transport, me, descriptionSystem);\r\n _subSystems.push(_system);\r\n return _system;\r\n }\r\n function setState(state, stateDescription) {\r\n _state = { state: state, description: stateDescription };\r\n _transport.updateSystem(me, _state);\r\n }\r\n function stringMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.STRING, value, function (metricDef) { return new StringMetric(metricDef, me, _transport, value); });\r\n }\r\n function numberMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.NUMBER, value, function (metricDef) { return new NumberMetric(metricDef, me, _transport, value); });\r\n }\r\n function objectMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.OBJECT, value, function (metricDef) { return new ObjectMetric(metricDef, me, _transport, value); });\r\n }\r\n function timestampMetric(definition, value) {\r\n return _getOrCreateMetric(definition, MetricTypes.TIMESTAMP, value, function (metricDef) { return new TimestampMetric(metricDef, me, _transport, value); });\r\n }\r\n function _getOrCreateMetric(metricObject, expectedType, value, createMetric) {\r\n var metricDef = { name: \"\" };\r\n if (typeof metricObject === \"string\") {\r\n metricDef = { name: metricObject };\r\n }\r\n else {\r\n metricDef = metricObject;\r\n }\r\n var matching = _metrics.filter(function (shadowedMetric) { return shadowedMetric.name === metricDef.name; });\r\n if (matching.length > 0) {\r\n var existing = matching[0];\r\n if (existing.type !== expectedType) {\r\n throw new Error(\"A metric named \".concat(metricDef.name, \" is already defined with different type.\"));\r\n }\r\n if (typeof value !== \"undefined\") {\r\n existing\r\n .update(value)\r\n .catch(function () { });\r\n }\r\n return existing;\r\n }\r\n var metric = createMetric(metricDef);\r\n _metrics.push(metric);\r\n return metric;\r\n }\r\n function _buildPath(shadowedSystem) {\r\n if (!shadowedSystem || !shadowedSystem.parent) {\r\n return [];\r\n }\r\n var path = _buildPath(shadowedSystem.parent);\r\n path.push(shadowedSystem.name);\r\n return path;\r\n }\r\n function _arrayToString(path, separator) {\r\n return ((path && path.length > 0) ? path.join(separator) : \"\");\r\n }\r\n function getAggregateState() {\r\n var aggState = [];\r\n if (Object.keys(_state).length > 0) {\r\n aggState.push({\r\n name: _name,\r\n path: _path,\r\n state: _state.state,\r\n description: _state.description,\r\n });\r\n }\r\n _subSystems.forEach(function (shadowedSubSystem) {\r\n var result = shadowedSubSystem.getAggregateState();\r\n if (result.length > 0) {\r\n aggState.push.apply(aggState, result);\r\n }\r\n });\r\n return aggState;\r\n }\r\n var me = {\r\n get name() {\r\n return _name;\r\n },\r\n get description() {\r\n return _description;\r\n },\r\n get repo() {\r\n return _repo;\r\n },\r\n get parent() {\r\n return _parent;\r\n },\r\n path: _path,\r\n id: id,\r\n root: root,\r\n get subSystems() {\r\n return _subSystems;\r\n },\r\n get metrics() {\r\n return _metrics;\r\n },\r\n subSystem: subSystem,\r\n getState: function () {\r\n return _state;\r\n },\r\n setState: setState,\r\n stringMetric: stringMetric,\r\n timestampMetric: timestampMetric,\r\n objectMetric: objectMetric,\r\n numberMetric: numberMetric,\r\n getAggregateState: getAggregateState,\r\n };\r\n _transport.createSystem(me);\r\n return me;\r\n}\n\nvar Repository = (function () {\r\n function Repository(options, protocol) {\r\n protocol.init(this);\r\n this.root = system(\"\", this, protocol);\r\n this.addSystemMetrics(this.root, options.clickStream || options.clickStream === undefined);\r\n }\r\n Repository.prototype.addSystemMetrics = function (rootSystem, useClickStream) {\r\n if (typeof navigator !== \"undefined\") {\r\n rootSystem.stringMetric(\"UserAgent\", navigator.userAgent);\r\n }\r\n if (useClickStream && typeof document !== \"undefined\") {\r\n var clickStream_1 = rootSystem.subSystem(\"ClickStream\");\r\n var documentClickHandler = function (e) {\r\n var _a;\r\n if (!e.target) {\r\n return;\r\n }\r\n var target = e.target;\r\n var className = target ? (_a = target.getAttribute(\"class\")) !== null && _a !== void 0 ? _a : \"\" : \"\";\r\n clickStream_1.objectMetric(\"LastBrowserEvent\", {\r\n type: \"click\",\r\n timestamp: new Date(),\r\n target: {\r\n className: className,\r\n id: target.id,\r\n type: \"<\" + target.tagName.toLowerCase() + \">\",\r\n href: target.href || \"\",\r\n },\r\n });\r\n };\r\n clickStream_1.objectMetric(\"Page\", {\r\n title: document.title,\r\n page: window.location.href,\r\n });\r\n if (document.addEventListener) {\r\n document.addEventListener(\"click\", documentClickHandler);\r\n }\r\n else {\r\n document.attachEvent(\"onclick\", documentClickHandler);\r\n }\r\n }\r\n rootSystem.stringMetric(\"StartTime\", (new Date()).toString());\r\n var urlMetric = rootSystem.stringMetric(\"StartURL\", \"\");\r\n var appNameMetric = rootSystem.stringMetric(\"AppName\", \"\");\r\n if (typeof window !== \"undefined\") {\r\n if (typeof window.location !== \"undefined\") {\r\n var startUrl = window.location.href;\r\n urlMetric.update(startUrl);\r\n }\r\n if (typeof window.glue42gd !== \"undefined\") {\r\n appNameMetric.update(window.glue42gd.appName);\r\n }\r\n }\r\n };\r\n return Repository;\r\n}());\n\nvar NullProtocol = (function () {\r\n function NullProtocol() {\r\n }\r\n NullProtocol.prototype.init = function (repo) {\r\n };\r\n NullProtocol.prototype.createSystem = function (system) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.updateSystem = function (metric, state) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.createMetric = function (metric) {\r\n return Promise.resolve();\r\n };\r\n NullProtocol.prototype.updateMetric = function (metric) {\r\n return Promise.resolve();\r\n };\r\n return NullProtocol;\r\n}());\n\nvar PerfTracker = (function () {\r\n function PerfTracker(api, initialPublishTimeout, publishInterval) {\r\n this.api = api;\r\n this.lastCount = 0;\r\n this.initialPublishTimeout = 10 * 1000;\r\n this.publishInterval = 60 * 1000;\r\n this.initialPublishTimeout = initialPublishTimeout !== null && initialPublishTimeout !== void 0 ? initialPublishTimeout : this.initialPublishTimeout;\r\n this.publishInterval = publishInterval !== null && publishInterval !== void 0 ? publishInterval : this.publishInterval;\r\n this.scheduleCollection();\r\n this.system = this.api.subSystem(\"performance\", \"Performance data published by the web application\");\r\n }\r\n PerfTracker.prototype.scheduleCollection = function () {\r\n var _this = this;\r\n setTimeout(function () {\r\n _this.collect();\r\n setInterval(function () {\r\n _this.collect();\r\n }, _this.publishInterval);\r\n }, this.initialPublishTimeout);\r\n };\r\n PerfTracker.prototype.collect = function () {\r\n try {\r\n this.collectMemory();\r\n this.collectEntries();\r\n }\r\n catch (_a) {\r\n }\r\n };\r\n PerfTracker.prototype.collectMemory = function () {\r\n var memory = window.performance.memory;\r\n this.system.stringMetric(\"memory\", JSON.stringify({\r\n totalJSHeapSize: memory.totalJSHeapSize,\r\n usedJSHeapSize: memory.usedJSHeapSize\r\n }));\r\n };\r\n PerfTracker.prototype.collectEntries = function () {\r\n var allEntries = window.performance.getEntries();\r\n if (allEntries.length <= this.lastCount) {\r\n return;\r\n }\r\n this.lastCount = allEntries.length;\r\n var jsonfiedEntries = allEntries.map(function (i) { return i.toJSON(); });\r\n this.system.stringMetric(\"entries\", JSON.stringify(jsonfiedEntries));\r\n };\r\n return PerfTracker;\r\n}());\n\nvar metrics = (function (options) {\r\n var protocol;\r\n if (!options.connection || typeof options.connection !== \"object\") {\r\n protocol = new NullProtocol();\r\n }\r\n else {\r\n protocol = gw3(options.connection, options);\r\n }\r\n var repo = new Repository(options, protocol);\r\n var rootSystem = repo.root;\r\n if (!options.disableAutoAppSystem) {\r\n rootSystem = rootSystem.subSystem(\"App\");\r\n }\r\n var api = addFAVSupport(rootSystem);\r\n initPerf(api, options.pagePerformanceMetrics);\r\n return api;\r\n});\r\nfunction initPerf(api, config) {\r\n var _a, _b;\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n var perfConfig = (_b = (_a = window === null || window === void 0 ? void 0 : window.glue42gd) === null || _a === void 0 ? void 0 : _a.metrics) === null || _b === void 0 ? void 0 : _b.pagePerformanceMetrics;\r\n if (perfConfig) {\r\n config = perfConfig;\r\n }\r\n if (config === null || config === void 0 ? void 0 : config.enabled) {\r\n new PerfTracker(api, config.initialPublishTimeout, config.publishInterval);\r\n }\r\n}\r\nfunction addFAVSupport(system) {\r\n var reportingSystem = system.subSystem(\"reporting\");\r\n var def = {\r\n name: \"features\"\r\n };\r\n var featureMetric;\r\n var featureMetricFunc = function (name, action, payload) {\r\n if (typeof name === \"undefined\" || name === \"\") {\r\n throw new Error(\"name is mandatory\");\r\n }\r\n else if (typeof action === \"undefined\" || action === \"\") {\r\n throw new Error(\"action is mandatory\");\r\n }\r\n else if (typeof payload === \"undefined\" || payload === \"\") {\r\n throw new Error(\"payload is mandatory\");\r\n }\r\n if (!featureMetric) {\r\n featureMetric = reportingSystem.objectMetric(def, { name: name, action: action, payload: payload });\r\n }\r\n else {\r\n featureMetric.update({\r\n name: name,\r\n action: action,\r\n payload: payload\r\n });\r\n }\r\n };\r\n system.featureMetric = featureMetricFunc;\r\n return system;\r\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createRegistry(options) {\n if (options && options.errorHandling\n && typeof options.errorHandling !== \"function\"\n && options.errorHandling !== \"log\"\n && options.errorHandling !== \"silent\"\n && options.errorHandling !== \"throw\") {\n throw new Error(\"Invalid options passed to createRegistry. Prop errorHandling should be [\\\"log\\\" | \\\"silent\\\" | \\\"throw\\\" | (err) => void], but \" + typeof options.errorHandling + \" was passed\");\n }\n var _userErrorHandler = options && typeof options.errorHandling === \"function\" && options.errorHandling;\n var callbacks = {};\n function add(key, callback, replayArgumentsArr) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n callbacksForKey = [];\n callbacks[key] = callbacksForKey;\n }\n callbacksForKey.push(callback);\n if (replayArgumentsArr) {\n setTimeout(function () {\n replayArgumentsArr.forEach(function (replayArgument) {\n var _a;\n if ((_a = callbacks[key]) === null || _a === void 0 ? void 0 : _a.includes(callback)) {\n try {\n if (Array.isArray(replayArgument)) {\n callback.apply(undefined, replayArgument);\n }\n else {\n callback.apply(undefined, [replayArgument]);\n }\n }\n catch (err) {\n _handleError(err, key);\n }\n }\n });\n }, 0);\n }\n return function () {\n var allForKey = callbacks[key];\n if (!allForKey) {\n return;\n }\n allForKey = allForKey.reduce(function (acc, element, index) {\n if (!(element === callback && acc.length === index)) {\n acc.push(element);\n }\n return acc;\n }, []);\n if (allForKey.length === 0) {\n delete callbacks[key];\n }\n else {\n callbacks[key] = allForKey;\n }\n };\n }\n function execute(key) {\n var argumentsArr = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n argumentsArr[_i - 1] = arguments[_i];\n }\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey || callbacksForKey.length === 0) {\n return [];\n }\n var results = [];\n callbacksForKey.forEach(function (callback) {\n try {\n var result = callback.apply(undefined, argumentsArr);\n results.push(result);\n }\n catch (err) {\n results.push(undefined);\n _handleError(err, key);\n }\n });\n return results;\n }\n function _handleError(exceptionArtifact, key) {\n var errParam = exceptionArtifact instanceof Error ? exceptionArtifact : new Error(exceptionArtifact);\n if (_userErrorHandler) {\n _userErrorHandler(errParam);\n return;\n }\n var msg = \"[ERROR] callback-registry: User callback for key \\\"\" + key + \"\\\" failed: \" + errParam.stack;\n if (options) {\n switch (options.errorHandling) {\n case \"log\":\n return console.error(msg);\n case \"silent\":\n return;\n case \"throw\":\n throw new Error(msg);\n }\n }\n console.error(msg);\n }\n function clear() {\n callbacks = {};\n }\n function clearKey(key) {\n var callbacksForKey = callbacks[key];\n if (!callbacksForKey) {\n return;\n }\n delete callbacks[key];\n }\n return {\n add: add,\n execute: execute,\n clear: clear,\n clearKey: clearKey\n };\n}\ncreateRegistry.default = createRegistry;\nvar lib$1 = createRegistry;\n\nvar InProcTransport = (function () {\r\n function InProcTransport(settings, logger) {\r\n var _this = this;\r\n this.registry = lib$1();\r\n this.gw = settings.facade;\r\n this.gw.connect(function (_client, message) {\r\n _this.messageHandler(message);\r\n }).then(function (client) {\r\n _this.client = client;\r\n });\r\n }\r\n Object.defineProperty(InProcTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n InProcTransport.prototype.sendObject = function (msg) {\r\n if (this.client) {\r\n this.client.send(msg);\r\n return Promise.resolve(undefined);\r\n }\r\n else {\r\n return Promise.reject(\"not connected\");\r\n }\r\n };\r\n InProcTransport.prototype.send = function (_msg) {\r\n return Promise.reject(\"not supported\");\r\n };\r\n InProcTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n InProcTransport.prototype.onConnectedChanged = function (callback) {\r\n callback(true);\r\n return function () { };\r\n };\r\n InProcTransport.prototype.close = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.open = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.name = function () {\r\n return \"in-memory\";\r\n };\r\n InProcTransport.prototype.reconnect = function () {\r\n return Promise.resolve();\r\n };\r\n InProcTransport.prototype.messageHandler = function (msg) {\r\n this.registry.execute(\"onMessage\", msg);\r\n };\r\n return InProcTransport;\r\n}());\n\nvar SharedWorkerTransport = (function () {\r\n function SharedWorkerTransport(workerFile, logger) {\r\n var _this = this;\r\n this.logger = logger;\r\n this.registry = lib$1();\r\n this.worker = new SharedWorker(workerFile);\r\n this.worker.port.onmessage = function (e) {\r\n _this.messageHandler(e.data);\r\n };\r\n }\r\n Object.defineProperty(SharedWorkerTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n SharedWorkerTransport.prototype.sendObject = function (msg) {\r\n this.worker.port.postMessage(msg);\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.send = function (_msg) {\r\n return Promise.reject(\"not supported\");\r\n };\r\n SharedWorkerTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n SharedWorkerTransport.prototype.onConnectedChanged = function (callback) {\r\n callback(true);\r\n return function () { };\r\n };\r\n SharedWorkerTransport.prototype.close = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.open = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.name = function () {\r\n return \"shared-worker\";\r\n };\r\n SharedWorkerTransport.prototype.reconnect = function () {\r\n return Promise.resolve();\r\n };\r\n SharedWorkerTransport.prototype.messageHandler = function (msg) {\r\n this.registry.execute(\"onMessage\", msg);\r\n };\r\n return SharedWorkerTransport;\r\n}());\n\nvar Utils = (function () {\r\n function Utils() {\r\n }\r\n Utils.isNode = function () {\r\n if (typeof Utils._isNode !== \"undefined\") {\r\n return Utils._isNode;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n Utils._isNode = false;\r\n return false;\r\n }\r\n try {\r\n Utils._isNode = Object.prototype.toString.call(global.process) === \"[object process]\";\r\n }\r\n catch (e) {\r\n Utils._isNode = false;\r\n }\r\n return Utils._isNode;\r\n };\r\n return Utils;\r\n}());\n\nvar PromiseWrapper = (function () {\r\n function PromiseWrapper() {\r\n var _this = this;\r\n this.rejected = false;\r\n this.resolved = false;\r\n this.promise = new Promise(function (resolve, reject) {\r\n _this.resolve = function (t) {\r\n _this.resolved = true;\r\n resolve(t);\r\n };\r\n _this.reject = function (err) {\r\n _this.rejected = true;\r\n reject(err);\r\n };\r\n });\r\n }\r\n PromiseWrapper.delay = function (time) {\r\n return new Promise(function (resolve) { return setTimeout(resolve, time); });\r\n };\r\n Object.defineProperty(PromiseWrapper.prototype, \"ended\", {\r\n get: function () {\r\n return this.rejected || this.resolved;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return PromiseWrapper;\r\n}());\n\nvar timers = {};\r\nfunction getAllTimers() {\r\n return timers;\r\n}\r\nfunction timer (timerName) {\r\n var existing = timers[timerName];\r\n if (existing) {\r\n return existing;\r\n }\r\n var marks = [];\r\n function now() {\r\n return new Date().getTime();\r\n }\r\n var startTime = now();\r\n mark(\"start\", startTime);\r\n var endTime;\r\n var period;\r\n function stop() {\r\n endTime = now();\r\n mark(\"end\", endTime);\r\n period = endTime - startTime;\r\n return period;\r\n }\r\n function mark(name, time) {\r\n var currentTime = time !== null && time !== void 0 ? time : now();\r\n var diff = 0;\r\n if (marks.length > 0) {\r\n diff = currentTime - marks[marks.length - 1].time;\r\n }\r\n marks.push({ name: name, time: currentTime, diff: diff });\r\n }\r\n var timerObj = {\r\n get startTime() {\r\n return startTime;\r\n },\r\n get endTime() {\r\n return endTime;\r\n },\r\n get period() {\r\n return period;\r\n },\r\n stop: stop,\r\n mark: mark,\r\n marks: marks\r\n };\r\n timers[timerName] = timerObj;\r\n return timerObj;\r\n}\n\nvar WebSocketConstructor = Utils.isNode() ? require(\"ws\") : window.WebSocket;\r\nvar WS = (function () {\r\n function WS(settings, logger) {\r\n this.startupTimer = timer(\"connection\");\r\n this._running = true;\r\n this._registry = lib$1();\r\n this.wsRequests = [];\r\n this.settings = settings;\r\n this.logger = logger;\r\n if (!this.settings.ws) {\r\n throw new Error(\"ws is missing\");\r\n }\r\n }\r\n WS.prototype.onMessage = function (callback) {\r\n return this._registry.add(\"onMessage\", callback);\r\n };\r\n WS.prototype.send = function (msg, options) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.waitForSocketConnection(function () {\r\n var _a;\r\n try {\r\n (_a = _this.ws) === null || _a === void 0 ? void 0 : _a.send(msg);\r\n resolve();\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n }, reject);\r\n });\r\n };\r\n WS.prototype.open = function () {\r\n var _this = this;\r\n this.logger.info(\"opening ws...\");\r\n this._running = true;\r\n return new Promise(function (resolve, reject) {\r\n _this.waitForSocketConnection(resolve, reject);\r\n });\r\n };\r\n WS.prototype.close = function () {\r\n this._running = false;\r\n if (this.ws) {\r\n this.ws.close();\r\n }\r\n return Promise.resolve();\r\n };\r\n WS.prototype.onConnectedChanged = function (callback) {\r\n return this._registry.add(\"onConnectedChanged\", callback);\r\n };\r\n WS.prototype.name = function () {\r\n return this.settings.ws;\r\n };\r\n WS.prototype.reconnect = function () {\r\n var _a;\r\n (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close();\r\n var pw = new PromiseWrapper();\r\n this.waitForSocketConnection(function () {\r\n pw.resolve();\r\n });\r\n return pw.promise;\r\n };\r\n WS.prototype.waitForSocketConnection = function (callback, failed) {\r\n var _a;\r\n failed = failed !== null && failed !== void 0 ? failed : (function () { });\r\n if (!this._running) {\r\n failed(\"wait for socket on \".concat(this.settings.ws, \" failed - socket closed by user\"));\r\n return;\r\n }\r\n if (((_a = this.ws) === null || _a === void 0 ? void 0 : _a.readyState) === 1) {\r\n callback();\r\n return;\r\n }\r\n this.wsRequests.push({ callback: callback, failed: failed });\r\n if (this.wsRequests.length > 1) {\r\n return;\r\n }\r\n this.openSocket();\r\n };\r\n WS.prototype.openSocket = function (retryInterval, retriesLeft) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.startupTimer.mark(\"opening-socket\");\r\n if (retryInterval === undefined) {\r\n retryInterval = this.settings.reconnectInterval;\r\n }\r\n if (typeof retriesLeft === \"undefined\") {\r\n retriesLeft = this.settings.reconnectAttempts;\r\n }\r\n if (retriesLeft !== undefined) {\r\n if (retriesLeft === 0) {\r\n this.notifyForSocketState(\"wait for socket on \".concat(this.settings.ws, \" failed - no more retries left\"));\r\n return [2];\r\n }\r\n this.logger.debug(\"will retry \".concat(retriesLeft, \" more times (every \").concat(retryInterval, \" ms)\"));\r\n }\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4, this.initiateSocket()];\r\n case 2:\r\n _b.sent();\r\n this.startupTimer.mark(\"socket-initiated\");\r\n this.notifyForSocketState();\r\n return [3, 4];\r\n case 3:\r\n _b.sent();\r\n setTimeout(function () {\r\n var retries = retriesLeft === undefined ? undefined : retriesLeft - 1;\r\n _this.openSocket(retryInterval, retries);\r\n }, retryInterval);\r\n return [3, 4];\r\n case 4: return [2];\r\n }\r\n });\r\n });\r\n };\r\n WS.prototype.initiateSocket = function () {\r\n var _this = this;\r\n var pw = new PromiseWrapper();\r\n this.logger.debug(\"initiating ws to \".concat(this.settings.ws, \"...\"));\r\n this.ws = new WebSocketConstructor(this.settings.ws || \"\");\r\n this.ws.onerror = function (err) {\r\n var reason = \"\";\r\n try {\r\n reason = JSON.stringify(err);\r\n }\r\n catch (error) {\r\n var seen_1 = new WeakSet();\r\n var replacer = function (key, value) {\r\n if (typeof value === \"object\" && value !== null) {\r\n if (seen_1.has(value)) {\r\n return;\r\n }\r\n seen_1.add(value);\r\n }\r\n return value;\r\n };\r\n reason = JSON.stringify(err, replacer);\r\n }\r\n pw.reject(\"error\");\r\n _this.notifyStatusChanged(false, reason);\r\n };\r\n this.ws.onclose = function (err) {\r\n _this.logger.info(\"ws closed \".concat(err));\r\n pw.reject(\"closed\");\r\n _this.notifyStatusChanged(false);\r\n };\r\n this.ws.onopen = function () {\r\n var _a;\r\n _this.startupTimer.mark(\"ws-opened\");\r\n _this.logger.info(\"ws opened \".concat((_a = _this.settings.identity) === null || _a === void 0 ? void 0 : _a.application));\r\n pw.resolve();\r\n _this.notifyStatusChanged(true);\r\n };\r\n this.ws.onmessage = function (message) {\r\n _this._registry.execute(\"onMessage\", message.data);\r\n };\r\n return pw.promise;\r\n };\r\n WS.prototype.notifyForSocketState = function (error) {\r\n this.wsRequests.forEach(function (wsRequest) {\r\n if (error) {\r\n if (wsRequest.failed) {\r\n wsRequest.failed(error);\r\n }\r\n }\r\n else {\r\n wsRequest.callback();\r\n }\r\n });\r\n this.wsRequests = [];\r\n };\r\n WS.prototype.notifyStatusChanged = function (status, reason) {\r\n this._registry.execute(\"onConnectedChanged\", status, reason);\r\n };\r\n return WS;\r\n}());\n\nvar shortidExports = {};\nvar shortid$1 = {\n get exports(){ return shortidExports; },\n set exports(v){ shortidExports = v; },\n};\n\nvar libExports = {};\nvar lib = {\n get exports(){ return libExports; },\n set exports(v){ libExports = v; },\n};\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n seed = (seed * 9301 + 49297) % 233280;\n return seed/(233280.0);\n}\n\nfunction setSeed$1(_seed_) {\n seed = _seed_;\n}\n\nvar randomFromSeed$1 = {\n nextValue: getNextValue,\n seed: setSeed$1\n};\n\nvar randomFromSeed = randomFromSeed$1;\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet$2;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet$2 !== ORIGINAL) {\n alphabet$2 = ORIGINAL;\n reset();\n }\n return;\n }\n\n if (_alphabet_ === alphabet$2) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function(item, ind, arr){\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet$2 = _alphabet_;\n reset();\n}\n\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet$2;\n}\n\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\n\nfunction shuffle() {\n if (!alphabet$2) {\n setCharacters(ORIGINAL);\n }\n\n var sourceArray = alphabet$2.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get () {\n return alphabet$2 || ORIGINAL;\n}\n\nvar alphabet_1 = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nvar randomByteBrowser = randomByte;\n\n// This file replaces `format.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nvar format_browser = function (random, alphabet, size) {\n // We can’t use bytes bigger than the alphabet. To make bytes values closer\n // to the alphabet, we apply bitmask on them. We look for the closest\n // `2 ** x - 1` number, which will be bigger than alphabet size. If we have\n // 30 symbols in the alphabet, we will take 31 (00011111).\n // We do not use faster Math.clz32, because it is not available in browsers.\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1;\n // Bitmask is not a perfect solution (in our example it will pass 31 bytes,\n // which is bigger than the alphabet). As a result, we will need more bytes,\n // than ID size, because we will refuse bytes bigger than the alphabet.\n\n // Every hardware random generator call is costly,\n // because we need to wait for entropy collection. This is why often it will\n // be faster to ask for few extra bytes in advance, to avoid additional calls.\n\n // Here we calculate how many random bytes should we call in advance.\n // It depends on ID length, mask / alphabet size and magic number 1.6\n // (which was selected according benchmarks).\n\n // -~f => Math.ceil(f) if n is float number\n // -~i => i + 1 if n is integer number\n var step = -~(1.6 * mask * size / alphabet.length);\n var id = '';\n\n while (true) {\n var bytes = random(step);\n // Compact alternative for `for (var i = 0; i < step; i++)`\n var i = step;\n while (i--) {\n // If random byte is bigger than alphabet even after bitmask,\n // we refuse it by `|| ''`.\n id += alphabet[bytes[i] & mask] || '';\n // More compact than `id.length + 1 === size`\n if (id.length === +size) return id\n }\n }\n};\n\nvar alphabet$1 = alphabet_1;\nvar random = randomByteBrowser;\nvar format = format_browser;\n\nfunction generate$1(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format(random, alphabet$1.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nvar generate_1 = generate$1;\n\nvar generate = generate_1;\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version$1 = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version$1);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nvar build_1 = build;\n\nvar alphabet = alphabet_1;\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nvar isValid = isShortId;\n\n(function (module) {\n\n\tvar alphabet = alphabet_1;\n\tvar build = build_1;\n\tvar isValid$1 = isValid;\n\n\t// if you are using cluster or multiple servers use this to make each instance\n\t// has a unique value for worker\n\t// Note: I don't know if this is automatically set when using third\n\t// party cluster solutions such as pm2.\n\tvar clusterWorkerId = 0;\n\n\t/**\n\t * Set the seed.\n\t * Highly recommended if you don't want people to try to figure out your id schema.\n\t * exposed as shortid.seed(int)\n\t * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n\t */\n\tfunction seed(seedValue) {\n\t alphabet.seed(seedValue);\n\t return module.exports;\n\t}\n\n\t/**\n\t * Set the cluster worker or machine id\n\t * exposed as shortid.worker(int)\n\t * @param workerId worker must be positive integer. Number less than 16 is recommended.\n\t * returns shortid module so it can be chained.\n\t */\n\tfunction worker(workerId) {\n\t clusterWorkerId = workerId;\n\t return module.exports;\n\t}\n\n\t/**\n\t *\n\t * sets new characters to use in the alphabet\n\t * returns the shuffled alphabet\n\t */\n\tfunction characters(newCharacters) {\n\t if (newCharacters !== undefined) {\n\t alphabet.characters(newCharacters);\n\t }\n\n\t return alphabet.shuffled();\n\t}\n\n\t/**\n\t * Generate unique id\n\t * Returns string id\n\t */\n\tfunction generate() {\n\t return build(clusterWorkerId);\n\t}\n\n\t// Export all other functions as properties of the generate function\n\tmodule.exports = generate;\n\tmodule.exports.generate = generate;\n\tmodule.exports.seed = seed;\n\tmodule.exports.worker = worker;\n\tmodule.exports.characters = characters;\n\tmodule.exports.isValid = isValid$1;\n} (lib));\n\n(function (module) {\n\tmodule.exports = libExports;\n} (shortid$1));\n\nvar shortid = /*@__PURE__*/getDefaultExportFromCjs(shortidExports);\n\nfunction domainSession (domain, connection, logger, successMessages, errorMessages) {\r\n if (domain == null) {\r\n domain = \"global\";\r\n }\r\n successMessages = successMessages || [\"success\"];\r\n errorMessages = errorMessages || [\"error\"];\r\n var isJoined = false;\r\n var tryReconnecting = false;\r\n var _latestOptions;\r\n var _connectionOn = false;\r\n var callbacks = lib$1();\r\n connection.disconnected(handleConnectionDisconnected);\r\n connection.loggedIn(handleConnectionLoggedIn);\r\n connection.on(\"success\", function (msg) { return handleSuccessMessage(msg); });\r\n connection.on(\"error\", function (msg) { return handleErrorMessage(msg); });\r\n connection.on(\"result\", function (msg) { return handleSuccessMessage(msg); });\r\n if (successMessages) {\r\n successMessages.forEach(function (sm) {\r\n connection.on(sm, function (msg) { return handleSuccessMessage(msg); });\r\n });\r\n }\r\n if (errorMessages) {\r\n errorMessages.forEach(function (sm) {\r\n connection.on(sm, function (msg) { return handleErrorMessage(msg); });\r\n });\r\n }\r\n var requestsMap = {};\r\n function join(options) {\r\n _latestOptions = options;\r\n return new Promise(function (resolve, reject) {\r\n if (isJoined) {\r\n resolve({});\r\n return;\r\n }\r\n var joinPromise;\r\n if (domain === \"global\") {\r\n joinPromise = _connectionOn ? Promise.resolve({}) : Promise.reject(\"not connected to gateway\");\r\n }\r\n else {\r\n logger.debug(\"joining domain \".concat(domain));\r\n var joinMsg = {\r\n type: \"join\",\r\n destination: domain,\r\n domain: \"global\",\r\n options: options,\r\n };\r\n joinPromise = send(joinMsg);\r\n }\r\n joinPromise\r\n .then(function () {\r\n handleJoined();\r\n resolve({});\r\n })\r\n .catch(function (err) {\r\n logger.debug(\"error joining \" + domain + \" domain: \" + JSON.stringify(err));\r\n reject(err);\r\n });\r\n });\r\n }\r\n function leave() {\r\n if (domain === \"global\") {\r\n return Promise.resolve();\r\n }\r\n logger.debug(\"stopping session \" + domain + \"...\");\r\n var leaveMsg = {\r\n type: \"leave\",\r\n destination: domain,\r\n domain: \"global\",\r\n };\r\n tryReconnecting = false;\r\n return send(leaveMsg)\r\n .then(function () {\r\n isJoined = false;\r\n callbacks.execute(\"onLeft\");\r\n })\r\n .catch(function () {\r\n isJoined = false;\r\n callbacks.execute(\"onLeft\");\r\n });\r\n }\r\n function handleJoined() {\r\n logger.debug(\"did join \" + domain);\r\n isJoined = true;\r\n var wasReconnect = tryReconnecting;\r\n tryReconnecting = false;\r\n callbacks.execute(\"onJoined\", wasReconnect);\r\n }\r\n function handleConnectionDisconnected() {\r\n _connectionOn = false;\r\n logger.debug(\"connection is down\");\r\n isJoined = false;\r\n tryReconnecting = true;\r\n callbacks.execute(\"onLeft\", { disconnected: true });\r\n }\r\n function handleConnectionLoggedIn() {\r\n _connectionOn = true;\r\n if (tryReconnecting) {\r\n logger.debug(\"connection is now up - trying to reconnect...\");\r\n join(_latestOptions);\r\n }\r\n }\r\n function onJoined(callback) {\r\n if (isJoined) {\r\n callback(false);\r\n }\r\n return callbacks.add(\"onJoined\", callback);\r\n }\r\n function onLeft(callback) {\r\n if (!isJoined) {\r\n callback();\r\n }\r\n return callbacks.add(\"onLeft\", callback);\r\n }\r\n function handleErrorMessage(msg) {\r\n if (domain !== msg.domain) {\r\n return;\r\n }\r\n var requestId = msg.request_id;\r\n if (!requestId) {\r\n return;\r\n }\r\n var entry = requestsMap[requestId];\r\n if (!entry) {\r\n return;\r\n }\r\n entry.error(msg);\r\n }\r\n function handleSuccessMessage(msg) {\r\n if (msg.domain !== domain) {\r\n return;\r\n }\r\n var requestId = msg.request_id;\r\n if (!requestId) {\r\n return;\r\n }\r\n var entry = requestsMap[requestId];\r\n if (!entry) {\r\n return;\r\n }\r\n entry.success(msg);\r\n }\r\n function getNextRequestId() {\r\n return shortid();\r\n }\r\n function send(msg, tag, options) {\r\n options = options || {};\r\n msg.request_id = msg.request_id || getNextRequestId();\r\n msg.domain = msg.domain || domain;\r\n if (!options.skipPeerId) {\r\n msg.peer_id = connection.peerId;\r\n }\r\n var requestId = msg.request_id;\r\n return new Promise(function (resolve, reject) {\r\n requestsMap[requestId] = {\r\n success: function (successMsg) {\r\n delete requestsMap[requestId];\r\n successMsg._tag = tag;\r\n resolve(successMsg);\r\n },\r\n error: function (errorMsg) {\r\n logger.warn(\"GW error - \".concat(JSON.stringify(errorMsg), \" for request \").concat(JSON.stringify(msg)));\r\n delete requestsMap[requestId];\r\n errorMsg._tag = tag;\r\n reject(errorMsg);\r\n },\r\n };\r\n connection\r\n .send(msg, options)\r\n .catch(function (err) {\r\n requestsMap[requestId].error({ err: err });\r\n });\r\n });\r\n }\r\n function sendFireAndForget(msg) {\r\n msg.request_id = msg.request_id ? msg.request_id : getNextRequestId();\r\n msg.domain = msg.domain || domain;\r\n msg.peer_id = connection.peerId;\r\n return connection.send(msg);\r\n }\r\n return {\r\n join: join,\r\n leave: leave,\r\n onJoined: onJoined,\r\n onLeft: onLeft,\r\n send: send,\r\n sendFireAndForget: sendFireAndForget,\r\n on: function (type, callback) {\r\n connection.on(type, function (msg) {\r\n if (msg.domain !== domain) {\r\n return;\r\n }\r\n try {\r\n callback(msg);\r\n }\r\n catch (e) {\r\n logger.error(\"Callback failed: \".concat(e, \" \\n \").concat(e.stack, \" \\n msg was: \").concat(JSON.stringify(msg)), e);\r\n }\r\n });\r\n },\r\n loggedIn: function (callback) { return connection.loggedIn(callback); },\r\n connected: function (callback) { return connection.connected(callback); },\r\n disconnected: function (callback) { return connection.disconnected(callback); },\r\n get peerId() {\r\n return connection.peerId;\r\n },\r\n get domain() {\r\n return domain;\r\n },\r\n };\r\n}\n\nvar GW3ProtocolImpl = (function () {\r\n function GW3ProtocolImpl(connection, settings, logger) {\r\n var _this = this;\r\n this.connection = connection;\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.protocolVersion = 3;\r\n this.datePrefix = \"#T42_DATE#\";\r\n this.datePrefixLen = this.datePrefix.length;\r\n this.dateMinLen = this.datePrefixLen + 1;\r\n this.datePrefixFirstChar = this.datePrefix[0];\r\n this.registry = lib$1();\r\n this._isLoggedIn = false;\r\n this.shouldTryLogin = true;\r\n this.initialLogin = true;\r\n this.initialLoginAttempts = 3;\r\n this.sessions = [];\r\n connection.disconnected(function () {\r\n _this.handleDisconnected();\r\n });\r\n this.ping();\r\n }\r\n Object.defineProperty(GW3ProtocolImpl.prototype, \"isLoggedIn\", {\r\n get: function () {\r\n return this._isLoggedIn;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n GW3ProtocolImpl.prototype.processStringMessage = function (message) {\r\n var _this = this;\r\n var msg = JSON.parse(message, function (key, value) {\r\n if (typeof value !== \"string\") {\r\n return value;\r\n }\r\n if (value.length < _this.dateMinLen) {\r\n return value;\r\n }\r\n if (value[0] !== _this.datePrefixFirstChar) {\r\n return value;\r\n }\r\n if (value.substring(0, _this.datePrefixLen) !== _this.datePrefix) {\r\n return value;\r\n }\r\n try {\r\n var milliseconds = parseInt(value.substring(_this.datePrefixLen, value.length), 10);\r\n if (isNaN(milliseconds)) {\r\n return value;\r\n }\r\n return new Date(milliseconds);\r\n }\r\n catch (ex) {\r\n return value;\r\n }\r\n });\r\n return {\r\n msg: msg,\r\n msgType: msg.type,\r\n };\r\n };\r\n GW3ProtocolImpl.prototype.createStringMessage = function (message) {\r\n var oldToJson = Date.prototype.toJSON;\r\n try {\r\n var datePrefix_1 = this.datePrefix;\r\n Date.prototype.toJSON = function () {\r\n return datePrefix_1 + this.getTime();\r\n };\r\n var result = JSON.stringify(message);\r\n return result;\r\n }\r\n finally {\r\n Date.prototype.toJSON = oldToJson;\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.processObjectMessage = function (message) {\r\n if (!message.type) {\r\n throw new Error(\"Object should have type property\");\r\n }\r\n return {\r\n msg: message,\r\n msgType: message.type,\r\n };\r\n };\r\n GW3ProtocolImpl.prototype.createObjectMessage = function (message) {\r\n return message;\r\n };\r\n GW3ProtocolImpl.prototype.login = function (config, reconnect) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authentication, token, e_1, _a, helloMsg, sendOptions, welcomeMsg, msg, token, _b, err_1;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0:\r\n this.logger.debug(\"logging in...\");\r\n this.loginConfig = config;\r\n if (!this.loginConfig) {\r\n this.loginConfig = { username: \"\", password: \"\" };\r\n }\r\n this.shouldTryLogin = true;\r\n authentication = {};\r\n this.connection.gatewayToken = config.gatewayToken;\r\n if (!config.gatewayToken) return [3, 5];\r\n if (!reconnect) return [3, 4];\r\n _c.label = 1;\r\n case 1:\r\n _c.trys.push([1, 3, , 4]);\r\n return [4, this.getNewGWToken()];\r\n case 2:\r\n token = _c.sent();\r\n config.gatewayToken = token;\r\n return [3, 4];\r\n case 3:\r\n e_1 = _c.sent();\r\n this.logger.warn(\"failed to get GW token when reconnecting \".concat((e_1 === null || e_1 === void 0 ? void 0 : e_1.message) || e_1));\r\n return [3, 4];\r\n case 4:\r\n authentication.method = \"gateway-token\";\r\n authentication.token = config.gatewayToken;\r\n this.connection.gatewayToken = config.gatewayToken;\r\n return [3, 10];\r\n case 5:\r\n if (!(config.flowName === \"sspi\")) return [3, 9];\r\n authentication.provider = \"win\";\r\n authentication.method = \"access-token\";\r\n if (!(config.flowCallback && config.sessionId)) return [3, 7];\r\n _a = authentication;\r\n return [4, config.flowCallback(config.sessionId, null)];\r\n case 6:\r\n _a.token =\r\n (_c.sent())\r\n .data\r\n .toString(\"base64\");\r\n return [3, 8];\r\n case 7: throw new Error(\"Invalid SSPI config\");\r\n case 8: return [3, 10];\r\n case 9:\r\n if (config.token) {\r\n authentication.method = \"access-token\";\r\n authentication.token = config.token;\r\n }\r\n else if (config.username) {\r\n authentication.method = \"secret\";\r\n authentication.login = config.username;\r\n authentication.secret = config.password;\r\n }\r\n else if (config.provider) {\r\n authentication.provider = config.provider;\r\n authentication.providerContext = config.providerContext;\r\n }\r\n else {\r\n throw new Error(\"invalid auth message\" + JSON.stringify(config));\r\n }\r\n _c.label = 10;\r\n case 10:\r\n helloMsg = {\r\n type: \"hello\",\r\n identity: this.settings.identity,\r\n authentication: authentication\r\n };\r\n if (config.sessionId) {\r\n helloMsg.request_id = config.sessionId;\r\n }\r\n this.globalDomain = domainSession(\"global\", this.connection, this.logger.subLogger(\"global-domain\"), [\r\n \"welcome\",\r\n \"token\",\r\n \"authentication-request\"\r\n ]);\r\n sendOptions = { skipPeerId: true };\r\n if (this.initialLogin) {\r\n sendOptions.retryInterval = this.settings.reconnectInterval;\r\n sendOptions.maxRetries = this.settings.reconnectAttempts;\r\n }\r\n _c.label = 11;\r\n case 11:\r\n _c.trys.push([11, 19, 20, 21]);\r\n welcomeMsg = void 0;\r\n _c.label = 12;\r\n case 12:\r\n return [4, this.globalDomain.send(helloMsg, undefined, sendOptions)];\r\n case 13:\r\n msg = _c.sent();\r\n if (!(msg.type === \"authentication-request\")) return [3, 16];\r\n token = Buffer.from(msg.authentication.token, \"base64\");\r\n if (!(config.flowCallback && config.sessionId)) return [3, 15];\r\n _b = helloMsg.authentication;\r\n return [4, config.flowCallback(config.sessionId, token)];\r\n case 14:\r\n _b.token =\r\n (_c.sent())\r\n .data\r\n .toString(\"base64\");\r\n _c.label = 15;\r\n case 15:\r\n helloMsg.request_id = config.sessionId;\r\n return [3, 12];\r\n case 16:\r\n if (msg.type === \"welcome\") {\r\n welcomeMsg = msg;\r\n return [3, 18];\r\n }\r\n else if (msg.type === \"error\") {\r\n throw new Error(\"Authentication failed: \" + msg.reason);\r\n }\r\n else {\r\n throw new Error(\"Unexpected message type during authentication: \" + msg.type);\r\n }\r\n case 17: return [3, 12];\r\n case 18:\r\n this.initialLogin = false;\r\n this.logger.debug(\"login successful with peerId \" + welcomeMsg.peer_id);\r\n this.connection.peerId = welcomeMsg.peer_id;\r\n this.connection.resolvedIdentity = welcomeMsg.resolved_identity;\r\n this.connection.availableDomains = welcomeMsg.available_domains;\r\n if (welcomeMsg.options) {\r\n this.connection.token = welcomeMsg.options.access_token;\r\n this.connection.info = welcomeMsg.options.info;\r\n }\r\n this.setLoggedIn(true);\r\n return [2, welcomeMsg.resolved_identity];\r\n case 19:\r\n err_1 = _c.sent();\r\n this.logger.error(\"error sending hello message - \" + (err_1.message || err_1.msg || err_1.reason || err_1), err_1);\r\n throw err_1;\r\n case 20:\r\n if (config && config.flowCallback && config.sessionId) {\r\n config.flowCallback(config.sessionId, null);\r\n }\r\n return [7];\r\n case 21: return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.logout = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var promises;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.debug(\"logging out...\");\r\n this.shouldTryLogin = false;\r\n if (this.pingTimer) {\r\n clearTimeout(this.pingTimer);\r\n }\r\n promises = this.sessions.map(function (session) {\r\n session.leave();\r\n });\r\n return [4, Promise.all(promises)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.loggedIn = function (callback) {\r\n if (this._isLoggedIn) {\r\n callback();\r\n }\r\n return this.registry.add(\"onLoggedIn\", callback);\r\n };\r\n GW3ProtocolImpl.prototype.domain = function (domainName, domainLogger, successMessages, errorMessages) {\r\n var session = this.sessions.filter(function (s) { return s.domain === domainName; })[0];\r\n if (!session) {\r\n session = domainSession(domainName, this.connection, domainLogger, successMessages, errorMessages);\r\n this.sessions.push(session);\r\n }\r\n return session;\r\n };\r\n GW3ProtocolImpl.prototype.handleDisconnected = function () {\r\n var _this = this;\r\n this.setLoggedIn(false);\r\n var tryToLogin = this.shouldTryLogin;\r\n if (tryToLogin && this.initialLogin) {\r\n if (this.initialLoginAttempts <= 0) {\r\n return;\r\n }\r\n this.initialLoginAttempts--;\r\n }\r\n this.logger.debug(\"disconnected - will try new login?\" + this.shouldTryLogin);\r\n if (this.shouldTryLogin) {\r\n if (!this.loginConfig) {\r\n throw new Error(\"no login info\");\r\n }\r\n this.connection.login(this.loginConfig, true)\r\n .catch(function () {\r\n setTimeout(_this.handleDisconnected.bind(_this), _this.settings.reconnectInterval || 1000);\r\n });\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.setLoggedIn = function (value) {\r\n this._isLoggedIn = value;\r\n if (this._isLoggedIn) {\r\n this.registry.execute(\"onLoggedIn\");\r\n }\r\n };\r\n GW3ProtocolImpl.prototype.ping = function () {\r\n var _this = this;\r\n if (!this.shouldTryLogin) {\r\n return;\r\n }\r\n if (this._isLoggedIn) {\r\n this.connection.send({ type: \"ping\" });\r\n }\r\n this.pingTimer = setTimeout(function () {\r\n _this.ping();\r\n }, 30 * 1000);\r\n };\r\n GW3ProtocolImpl.prototype.authToken = function () {\r\n var createTokenReq = {\r\n type: \"create-token\"\r\n };\r\n if (!this.globalDomain) {\r\n return Promise.reject(new Error(\"no global domain session\"));\r\n }\r\n return this.globalDomain.send(createTokenReq)\r\n .then(function (res) {\r\n return res.token;\r\n });\r\n };\r\n GW3ProtocolImpl.prototype.getNewGWToken = function () {\r\n if (typeof window !== \"undefined\") {\r\n var glue42gd = window.glue42gd;\r\n if (glue42gd) {\r\n return glue42gd.getGWToken();\r\n }\r\n }\r\n return Promise.reject(new Error(\"not running in GD\"));\r\n };\r\n return GW3ProtocolImpl;\r\n}());\n\nvar MessageReplayerImpl = (function () {\r\n function MessageReplayerImpl(specs) {\r\n this.specsNames = [];\r\n this.messages = {};\r\n this.subs = {};\r\n this.subsRefCount = {};\r\n this.specs = {};\r\n for (var _i = 0, specs_1 = specs; _i < specs_1.length; _i++) {\r\n var spec = specs_1[_i];\r\n this.specs[spec.name] = spec;\r\n this.specsNames.push(spec.name);\r\n }\r\n }\r\n MessageReplayerImpl.prototype.init = function (connection) {\r\n var _this = this;\r\n this.connection = connection;\r\n for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) {\r\n var name_1 = _a[_i];\r\n var _loop_1 = function (type) {\r\n var refCount = this_1.subsRefCount[type];\r\n if (!refCount) {\r\n refCount = 0;\r\n }\r\n refCount += 1;\r\n this_1.subsRefCount[type] = refCount;\r\n if (refCount > 1) {\r\n return \"continue\";\r\n }\r\n var sub = connection.on(type, function (msg) { return _this.processMessage(type, msg); });\r\n this_1.subs[type] = sub;\r\n };\r\n var this_1 = this;\r\n for (var _b = 0, _c = this.specs[name_1].types; _b < _c.length; _b++) {\r\n var type = _c[_b];\r\n _loop_1(type);\r\n }\r\n }\r\n };\r\n MessageReplayerImpl.prototype.processMessage = function (type, msg) {\r\n if (this.isDone || !msg) {\r\n return;\r\n }\r\n for (var _i = 0, _a = this.specsNames; _i < _a.length; _i++) {\r\n var name_2 = _a[_i];\r\n if (this.specs[name_2].types.indexOf(type) !== -1) {\r\n var messages = this.messages[name_2] || [];\r\n this.messages[name_2] = messages;\r\n messages.push(msg);\r\n }\r\n }\r\n };\r\n MessageReplayerImpl.prototype.drain = function (name, callback) {\r\n var _a;\r\n if (callback) {\r\n (this.messages[name] || []).forEach(callback);\r\n }\r\n delete this.messages[name];\r\n for (var _i = 0, _b = this.specs[name].types; _i < _b.length; _i++) {\r\n var type = _b[_i];\r\n this.subsRefCount[type] -= 1;\r\n if (this.subsRefCount[type] <= 0) {\r\n (_a = this.connection) === null || _a === void 0 ? void 0 : _a.off(this.subs[type]);\r\n delete this.subs[type];\r\n delete this.subsRefCount[type];\r\n }\r\n }\r\n delete this.specs[name];\r\n if (!this.specs.length) {\r\n this.isDone = true;\r\n }\r\n };\r\n return MessageReplayerImpl;\r\n}());\n\nvar PromisePlus = function (executor, timeoutMilliseconds, timeoutMessage) {\r\n return new Promise(function (resolve, reject) {\r\n var timeout = setTimeout(function () {\r\n var message = timeoutMessage || \"Promise timeout hit: \".concat(timeoutMilliseconds);\r\n reject(message);\r\n }, timeoutMilliseconds);\r\n var providedPromise = new Promise(executor);\r\n providedPromise\r\n .then(function (result) {\r\n clearTimeout(timeout);\r\n resolve(result);\r\n })\r\n .catch(function (error) {\r\n clearTimeout(timeout);\r\n reject(error);\r\n });\r\n });\r\n};\n\nvar WebPlatformTransport = (function () {\r\n function WebPlatformTransport(settings, logger, identity) {\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.identity = identity;\r\n this.iAmConnected = false;\r\n this.parentReady = false;\r\n this.rejected = false;\r\n this.children = [];\r\n this.extContentAvailable = false;\r\n this.extContentConnecting = false;\r\n this.extContentConnected = false;\r\n this.parentInExtMode = false;\r\n this.webNamespace = \"g42_core_web\";\r\n this.parentPingTimeout = 5000;\r\n this.connectionRequestTimeout = 7000;\r\n this.defaultTargetString = \"*\";\r\n this.registry = lib$1();\r\n this.messages = {\r\n connectionAccepted: { name: \"connectionAccepted\", handle: this.handleConnectionAccepted.bind(this) },\r\n connectionRejected: { name: \"connectionRejected\", handle: this.handleConnectionRejected.bind(this) },\r\n connectionRequest: { name: \"connectionRequest\", handle: this.handleConnectionRequest.bind(this) },\r\n parentReady: {\r\n name: \"parentReady\", handle: function () {\r\n }\r\n },\r\n parentPing: { name: \"parentPing\", handle: this.handleParentPing.bind(this) },\r\n platformPing: { name: \"platformPing\", handle: this.handlePlatformPing.bind(this) },\r\n platformReady: { name: \"platformReady\", handle: this.handlePlatformReady.bind(this) },\r\n clientUnload: { name: \"clientUnload\", handle: this.handleClientUnload.bind(this) },\r\n manualUnload: { name: \"manualUnload\", handle: this.handleManualUnload.bind(this) },\r\n extConnectionResponse: { name: \"extConnectionResponse\", handle: this.handleExtConnectionResponse.bind(this) },\r\n extSetupRequest: { name: \"extSetupRequest\", handle: this.handleExtSetupRequest.bind(this) },\r\n gatewayDisconnect: { name: \"gatewayDisconnect\", handle: this.handleGatewayDisconnect.bind(this) },\r\n gatewayInternalConnect: { name: \"gatewayInternalConnect\", handle: this.handleGatewayInternalConnect.bind(this) }\r\n };\r\n this.extContentAvailable = !!window.glue42ext;\r\n this.setUpMessageListener();\r\n this.setUpUnload();\r\n this.setupPlatformUnloadListener();\r\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : undefined;\r\n }\r\n WebPlatformTransport.prototype.manualSetReadyState = function () {\r\n this.iAmConnected = true;\r\n this.parentReady = true;\r\n };\r\n Object.defineProperty(WebPlatformTransport.prototype, \"transportWindowId\", {\r\n get: function () {\r\n return this.publicWindowId;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(WebPlatformTransport.prototype, \"communicationId\", {\r\n get: function () {\r\n return this._communicationId;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WebPlatformTransport.prototype.sendObject = function (msg) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (this.extContentConnected) {\r\n return [2, window.postMessage({ glue42ExtOut: msg }, this.defaultTargetString)];\r\n }\r\n if (!this.port) {\r\n throw new Error(\"Cannot send message, because the port was not opened yet\");\r\n }\r\n this.port.postMessage(msg);\r\n return [2];\r\n });\r\n });\r\n };\r\n Object.defineProperty(WebPlatformTransport.prototype, \"isObjectBasedTransport\", {\r\n get: function () {\r\n return true;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n WebPlatformTransport.prototype.onMessage = function (callback) {\r\n return this.registry.add(\"onMessage\", callback);\r\n };\r\n WebPlatformTransport.prototype.send = function () {\r\n return Promise.reject(\"not supported\");\r\n };\r\n WebPlatformTransport.prototype.onConnectedChanged = function (callback) {\r\n return this.registry.add(\"onConnectedChanged\", callback);\r\n };\r\n WebPlatformTransport.prototype.open = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.debug(\"opening a connection to the web platform gateway.\");\r\n return [4, this.connect()];\r\n case 1:\r\n _a.sent();\r\n this.notifyStatusChanged(true);\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.close = function () {\r\n var _a, _b;\r\n var message = {\r\n glue42core: {\r\n type: this.messages.gatewayDisconnect.name,\r\n data: {\r\n clientId: this.myClientId,\r\n ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n this.parentReady = false;\r\n this.notifyStatusChanged(false, \"manual reconnection\");\r\n return Promise.resolve();\r\n };\r\n WebPlatformTransport.prototype.name = function () {\r\n return \"web-platform\";\r\n };\r\n WebPlatformTransport.prototype.reconnect = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, this.close()];\r\n case 1:\r\n _a.sent();\r\n return [2, Promise.resolve()];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.initiateInternalConnection = function () {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.logger.debug(\"opening an internal web platform connection\");\r\n _this.port = _this.settings.port;\r\n if (_this.iAmConnected) {\r\n _this.logger.warn(\"cannot open a new connection, because this client is currently connected\");\r\n return;\r\n }\r\n _this.port.onmessage = function (event) {\r\n var _a, _b;\r\n if (_this.iAmConnected && !((_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core)) {\r\n _this.registry.execute(\"onMessage\", event.data);\r\n return;\r\n }\r\n var data = (_b = event.data) === null || _b === void 0 ? void 0 : _b.glue42core;\r\n if (!data) {\r\n return;\r\n }\r\n if (data.type === _this.messages.gatewayInternalConnect.name && data.success) {\r\n _this.publicWindowId = _this.settings.windowId;\r\n if (_this.identity && _this.publicWindowId) {\r\n _this.identity.windowId = _this.publicWindowId;\r\n _this.identity.instance = _this.publicWindowId;\r\n }\r\n resolve();\r\n }\r\n if (data.type === _this.messages.gatewayInternalConnect.name && data.error) {\r\n reject(data.error);\r\n }\r\n };\r\n _this.port.postMessage({\r\n glue42core: {\r\n type: _this.messages.gatewayInternalConnect.name\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.initiateRemoteConnection = function (target) {\r\n var _this = this;\r\n return PromisePlus(function (resolve, reject) {\r\n var _a;\r\n _this.connectionResolve = resolve;\r\n _this.connectionReject = reject;\r\n _this.myClientId = (_a = _this.myClientId) !== null && _a !== void 0 ? _a : shortid();\r\n var bridgeInstanceId = _this.getMyWindowId() || shortid();\r\n var request = {\r\n glue42core: {\r\n type: _this.messages.connectionRequest.name,\r\n clientId: _this.myClientId,\r\n clientType: \"child\",\r\n bridgeInstanceId: bridgeInstanceId,\r\n selfAssignedWindowId: _this.selfAssignedWindowId\r\n }\r\n };\r\n _this.logger.debug(\"sending connection request\");\r\n if (_this.extContentConnecting) {\r\n request.glue42core.clientType = \"child\";\r\n request.glue42core.bridgeInstanceId = _this.myClientId;\r\n request.glue42core.parentWindowId = _this.parentWindowId;\r\n return window.postMessage(request, _this.defaultTargetString);\r\n }\r\n if (!target) {\r\n throw new Error(\"Cannot send a connection request, because no glue target was specified!\");\r\n }\r\n target.postMessage(request, _this.defaultTargetString);\r\n }, this.connectionRequestTimeout, \"The connection to the target glue window timed out\");\r\n };\r\n WebPlatformTransport.prototype.isParentCheckSuccess = function (parentCheck) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4, parentCheck];\r\n case 1:\r\n _a.sent();\r\n return [2, { success: true }];\r\n case 2:\r\n _a.sent();\r\n return [2, { success: false }];\r\n case 3: return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.setUpMessageListener = function () {\r\n var _this = this;\r\n if (this.settings.port) {\r\n this.logger.debug(\"skipping generic message listener, because this is an internal client\");\r\n return;\r\n }\r\n window.addEventListener(\"message\", function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (!data || _this.rejected) {\r\n return;\r\n }\r\n var allowedOrigins = _this.settings.allowedOrigins || [];\r\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\r\n _this.logger.warn(\"received a message from an origin which is not in the allowed list: \".concat(event.origin));\r\n return;\r\n }\r\n if (!_this.checkMessageTypeValid(data.type)) {\r\n _this.logger.error(\"cannot handle the incoming glue42 core message, because the type is invalid: \".concat(data.type));\r\n return;\r\n }\r\n var messageType = data.type;\r\n _this.logger.debug(\"received valid glue42core message of type: \".concat(messageType));\r\n _this.messages[messageType].handle(event);\r\n });\r\n };\r\n WebPlatformTransport.prototype.setUpUnload = function () {\r\n var _this = this;\r\n if (this.settings.port) {\r\n this.logger.debug(\"skipping unload event listener, because this is an internal client\");\r\n return;\r\n }\r\n window.addEventListener(\"beforeunload\", function () {\r\n var _a, _b;\r\n if (_this.extContentConnected) {\r\n return;\r\n }\r\n var message = {\r\n glue42core: {\r\n type: _this.messages.clientUnload.name,\r\n data: {\r\n clientId: _this.myClientId,\r\n ownWindowId: (_a = _this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n if (_this.parent) {\r\n _this.parent.postMessage(message, _this.defaultTargetString);\r\n }\r\n (_b = _this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n });\r\n };\r\n WebPlatformTransport.prototype.handlePlatformReady = function (event) {\r\n this.logger.debug(\"the web platform gave the ready signal\");\r\n this.parentReady = true;\r\n if (this.parentPingResolve) {\r\n this.parentPingResolve();\r\n delete this.parentPingResolve;\r\n }\r\n if (this.parentPingInterval) {\r\n clearInterval(this.parentPingInterval);\r\n delete this.parentPingInterval;\r\n }\r\n this.parent = event.source;\r\n this.parentType = window.name.includes(\"#wsp\") ? \"workspace\" : \"window\";\r\n };\r\n WebPlatformTransport.prototype.handleConnectionAccepted = function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (this.myClientId === data.clientId) {\r\n return this.handleAcceptanceOfMyRequest(data);\r\n }\r\n return this.handleAcceptanceOfGrandChildRequest(data, event);\r\n };\r\n WebPlatformTransport.prototype.handleAcceptanceOfMyRequest = function (data) {\r\n var _this = this;\r\n this.logger.debug(\"handling a connection accepted signal targeted at me.\");\r\n this.isPreferredActivated = data.isPreferredActivated;\r\n if (this.extContentConnecting) {\r\n return this.processExtContentConnection(data);\r\n }\r\n if (!data.port) {\r\n this.logger.error(\"cannot set up my connection, because I was not provided with a port\");\r\n return;\r\n }\r\n this.publicWindowId = this.getMyWindowId();\r\n if (this.identity) {\r\n this.identity.windowId = this.publicWindowId;\r\n this.identity.instance = this.identity.instance ? this.identity.instance : this.publicWindowId || shortid();\r\n }\r\n if (this.identity && data.appName) {\r\n this.identity.application = data.appName;\r\n this.identity.applicationName = data.appName;\r\n }\r\n this._communicationId = data.communicationId;\r\n this.port = data.port;\r\n this.port.onmessage = function (e) { return _this.registry.execute(\"onMessage\", e.data); };\r\n if (this.connectionResolve) {\r\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\r\n this.connectionResolve();\r\n delete this.connectionResolve;\r\n return;\r\n }\r\n this.logger.error(\"unable to call the connection resolve, because no connection promise was found\");\r\n };\r\n WebPlatformTransport.prototype.processExtContentConnection = function (data) {\r\n var _this = this;\r\n this.logger.debug(\"handling a connection accepted signal targeted at me for extension content connection.\");\r\n this.extContentConnecting = false;\r\n this.extContentConnected = true;\r\n this.publicWindowId = this.parentWindowId || this.myClientId;\r\n if (this.extContentConnecting && this.identity) {\r\n this.identity.windowId = this.publicWindowId;\r\n }\r\n if (this.identity && data.appName) {\r\n this.identity.application = data.appName;\r\n this.identity.applicationName = data.appName;\r\n }\r\n window.addEventListener(\"message\", function (event) {\r\n var _a;\r\n var extData = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42ExtInc;\r\n if (!extData) {\r\n return;\r\n }\r\n var allowedOrigins = _this.settings.allowedOrigins || [];\r\n if (allowedOrigins.length && !allowedOrigins.includes(event.origin)) {\r\n _this.logger.warn(\"received a message from an origin which is not in the allowed list: \".concat(event.origin));\r\n return;\r\n }\r\n _this.registry.execute(\"onMessage\", extData);\r\n });\r\n if (this.connectionResolve) {\r\n this.logger.debug(\"my connection is set up, calling the connection resolve.\");\r\n this.connectionResolve();\r\n delete this.connectionResolve;\r\n return;\r\n }\r\n };\r\n WebPlatformTransport.prototype.handleAcceptanceOfGrandChildRequest = function (data, event) {\r\n if (this.extContentConnecting || this.extContentConnected) {\r\n this.logger.debug(\"cannot process acceptance of a grandchild, because I am connected to a content script\");\r\n return;\r\n }\r\n this.logger.debug(\"handling a connection accepted signal targeted at a grandchild: \".concat(data.clientId));\r\n var child = this.children.find(function (c) { return c.grandChildId === data.clientId; });\r\n if (!child) {\r\n this.logger.error(\"cannot handle connection accepted for grandchild: \".concat(data.clientId, \", because there is no grandchild with this id\"));\r\n return;\r\n }\r\n child.connected = true;\r\n this.logger.debug(\"the grandchild connection for \".concat(data.clientId, \" is set up, forwarding the success message and the gateway port\"));\r\n data.parentWindowId = this.publicWindowId;\r\n child.source.postMessage(event.data, child.origin, [data.port]);\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleConnectionRejected = function () {\r\n this.logger.debug(\"handling a connection rejection. Most likely the reason is that this window was not created by a glue API call\");\r\n if (this.connectionReject) {\r\n this.connectionReject(\"The platform connection was rejected. Most likely because this window was not created by a glue API call\");\r\n delete this.connectionReject;\r\n }\r\n };\r\n WebPlatformTransport.prototype.handleConnectionRequest = function (event) {\r\n if (this.extContentConnecting) {\r\n this.logger.debug(\"This connection request event is targeted at the extension content\");\r\n return;\r\n }\r\n var source = event.source;\r\n var data = event.data.glue42core;\r\n if (!data.clientType || data.clientType !== \"grandChild\") {\r\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source was not opened by a glue API call\");\r\n }\r\n if (!data.clientId) {\r\n return this.rejectConnectionRequest(source, event.origin, \"rejecting a connection request, because the source did not provide a valid id\");\r\n }\r\n if (!this.parent) {\r\n return this.rejectConnectionRequest(source, event.origin, \"Cannot forward the connection request, because no direct connection to the platform was found\");\r\n }\r\n this.logger.debug(\"handling a connection request for a grandchild: \".concat(data.clientId));\r\n this.children.push({ grandChildId: data.clientId, source: source, connected: false, origin: event.origin });\r\n this.logger.debug(\"grandchild: \".concat(data.clientId, \" is prepared, forwarding connection request to the platform\"));\r\n this.parent.postMessage(event.data, this.defaultTargetString);\r\n };\r\n WebPlatformTransport.prototype.handleParentPing = function (event) {\r\n if (!this.parentReady) {\r\n this.logger.debug(\"my parent is not ready, I am ignoring the parent ping\");\r\n return;\r\n }\r\n if (!this.iAmConnected) {\r\n this.logger.debug(\"i am not fully connected yet, I am ignoring the parent ping\");\r\n return;\r\n }\r\n var message = {\r\n glue42core: {\r\n type: this.messages.parentReady.name\r\n }\r\n };\r\n if (this.extContentConnected) {\r\n message.glue42core.extMode = { windowId: this.myClientId };\r\n }\r\n var source = event.source;\r\n this.logger.debug(\"responding to a parent ping with a ready message\");\r\n source.postMessage(message, event.origin);\r\n };\r\n WebPlatformTransport.prototype.setupPlatformUnloadListener = function () {\r\n var _this = this;\r\n this.onMessage(function (msg) {\r\n if (msg.type === \"platformUnload\") {\r\n _this.logger.debug(\"detected a web platform unload\");\r\n _this.parentReady = false;\r\n _this.notifyStatusChanged(false, \"Gateway unloaded\");\r\n }\r\n });\r\n };\r\n WebPlatformTransport.prototype.handleManualUnload = function () {\r\n var _a, _b;\r\n var message = {\r\n glue42core: {\r\n type: this.messages.clientUnload.name,\r\n data: {\r\n clientId: this.myClientId,\r\n ownWindowId: (_a = this.identity) === null || _a === void 0 ? void 0 : _a.windowId\r\n }\r\n }\r\n };\r\n if (this.extContentConnected) {\r\n return window.postMessage({ glue42ExtOut: message }, this.defaultTargetString);\r\n }\r\n (_b = this.port) === null || _b === void 0 ? void 0 : _b.postMessage(message);\r\n };\r\n WebPlatformTransport.prototype.handleClientUnload = function (event) {\r\n var data = event.data.glue42core;\r\n var clientId = data === null || data === void 0 ? void 0 : data.data.clientId;\r\n if (!clientId) {\r\n this.logger.warn(\"cannot process grand child unload, because the provided id was not valid\");\r\n return;\r\n }\r\n var foundChild = this.children.find(function (child) { return child.grandChildId === clientId; });\r\n if (!foundChild) {\r\n this.logger.warn(\"cannot process grand child unload, because this client is unaware of this grandchild\");\r\n return;\r\n }\r\n this.logger.debug(\"handling grandchild unload for id: \".concat(clientId));\r\n this.children = this.children.filter(function (child) { return child.grandChildId !== clientId; });\r\n };\r\n WebPlatformTransport.prototype.handlePlatformPing = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.notifyStatusChanged = function (status, reason) {\r\n this.iAmConnected = status;\r\n this.registry.execute(\"onConnectedChanged\", status, reason);\r\n };\r\n WebPlatformTransport.prototype.checkMessageTypeValid = function (typeToValidate) {\r\n return typeof typeToValidate === \"string\" && !!this.messages[typeToValidate];\r\n };\r\n WebPlatformTransport.prototype.rejectConnectionRequest = function (source, origin, reason) {\r\n this.rejected = true;\r\n this.logger.error(reason);\r\n var rejection = {\r\n glue42core: {\r\n type: this.messages.connectionRejected.name\r\n }\r\n };\r\n source.postMessage(rejection, origin);\r\n };\r\n WebPlatformTransport.prototype.requestConnectionPermissionFromExt = function () {\r\n var _this = this;\r\n return this.waitForContentScript()\r\n .then(function () { return PromisePlus(function (resolve, reject) {\r\n _this.extConnectionResolve = resolve;\r\n _this.extConnectionReject = reject;\r\n var message = {\r\n glue42core: {\r\n type: \"extSetupRequest\"\r\n }\r\n };\r\n _this.logger.debug(\"permission request to the extension content script was sent\");\r\n window.postMessage(message, _this.defaultTargetString);\r\n }, _this.parentPingTimeout, \"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection timed out\"); });\r\n };\r\n WebPlatformTransport.prototype.handleExtConnectionResponse = function (event) {\r\n var _a;\r\n var data = (_a = event.data) === null || _a === void 0 ? void 0 : _a.glue42core;\r\n if (!data.approved) {\r\n return this.extConnectionReject ? this.extConnectionReject(\"Cannot initialize glue, because this app was not opened or created by a Glue Client and the request for extension connection was rejected\") : undefined;\r\n }\r\n if (this.extConnectionResolve) {\r\n this.extConnectionResolve();\r\n delete this.extConnectionResolve;\r\n }\r\n this.extContentConnecting = true;\r\n this.parentType = \"extension\";\r\n this.logger.debug(\"The extension connection was approved, proceeding.\");\r\n };\r\n WebPlatformTransport.prototype.handleExtSetupRequest = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleGatewayDisconnect = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.handleGatewayInternalConnect = function () {\r\n return;\r\n };\r\n WebPlatformTransport.prototype.waitForContentScript = function () {\r\n var _a;\r\n var contentReady = !!((_a = window.glue42ext) === null || _a === void 0 ? void 0 : _a.content);\r\n if (contentReady) {\r\n return Promise.resolve();\r\n }\r\n return PromisePlus(function (resolve) {\r\n window.addEventListener(\"Glue42EXTReady\", function () {\r\n resolve();\r\n });\r\n }, this.connectionRequestTimeout, \"The content script was available, but was never heard to be ready\");\r\n };\r\n WebPlatformTransport.prototype.connect = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.settings.port) return [3, 2];\r\n return [4, this.initiateInternalConnection()];\r\n case 1:\r\n _a.sent();\r\n this.logger.debug(\"internal web platform connection completed\");\r\n return [2];\r\n case 2:\r\n this.logger.debug(\"opening a client web platform connection\");\r\n return [4, this.findParent()];\r\n case 3:\r\n _a.sent();\r\n return [4, this.initiateRemoteConnection(this.parent)];\r\n case 4:\r\n _a.sent();\r\n this.logger.debug(\"the client is connected\");\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.findParent = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var connectionNotPossibleMsg, myInsideParents, myOutsideParents, uniqueParents, defaultParentCheck;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\r\n myInsideParents = this.getPossibleParentsInWindow(window);\r\n myOutsideParents = this.getPossibleParentsOutsideWindow((_a = window.top) === null || _a === void 0 ? void 0 : _a.opener, window.top);\r\n uniqueParents = new Set(__spreadArray(__spreadArray([], myInsideParents, true), myOutsideParents, true));\r\n if (!uniqueParents.size && !this.extContentAvailable) {\r\n throw new Error(connectionNotPossibleMsg);\r\n }\r\n if (!(!uniqueParents.size && this.extContentAvailable)) return [3, 2];\r\n return [4, this.requestConnectionPermissionFromExt()];\r\n case 1:\r\n _b.sent();\r\n return [2];\r\n case 2: return [4, this.isParentCheckSuccess(this.confirmParent(Array.from(uniqueParents)))];\r\n case 3:\r\n defaultParentCheck = _b.sent();\r\n if (defaultParentCheck.success) {\r\n this.logger.debug(\"The default parent was found!\");\r\n return [2];\r\n }\r\n if (!this.extContentAvailable) {\r\n throw new Error(connectionNotPossibleMsg);\r\n }\r\n return [4, this.requestConnectionPermissionFromExt()];\r\n case 4:\r\n _b.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n WebPlatformTransport.prototype.getPossibleParentsInWindow = function (currentWindow) {\r\n return (!currentWindow || currentWindow === currentWindow.top) ? [] : __spreadArray([currentWindow.parent], this.getPossibleParentsInWindow(currentWindow.parent), true);\r\n };\r\n WebPlatformTransport.prototype.getPossibleParentsOutsideWindow = function (opener, current) {\r\n return (!opener || !current || opener === current) ? [] : __spreadArray(__spreadArray([opener], this.getPossibleParentsInWindow(opener), true), this.getPossibleParentsOutsideWindow(opener.opener, opener), true);\r\n };\r\n WebPlatformTransport.prototype.confirmParent = function (targets) {\r\n var _this = this;\r\n var connectionNotPossibleMsg = \"Cannot initiate glue, because this window was not opened or created by a glue client\";\r\n var parentCheck = PromisePlus(function (resolve) {\r\n _this.parentPingResolve = resolve;\r\n var message = {\r\n glue42core: {\r\n type: _this.messages.platformPing.name\r\n }\r\n };\r\n _this.parentPingInterval = setInterval(function () {\r\n targets.forEach(function (target) {\r\n target.postMessage(message, _this.defaultTargetString);\r\n });\r\n }, 1000);\r\n }, this.parentPingTimeout, connectionNotPossibleMsg);\r\n parentCheck.catch(function () {\r\n if (_this.parentPingInterval) {\r\n clearInterval(_this.parentPingInterval);\r\n delete _this.parentPingInterval;\r\n }\r\n });\r\n return parentCheck;\r\n };\r\n WebPlatformTransport.prototype.getMyWindowId = function () {\r\n var _a;\r\n if (this.parentType === \"workspace\") {\r\n return window.name.substring(0, window.name.indexOf(\"#wsp\"));\r\n }\r\n if (window !== window.top) {\r\n return;\r\n }\r\n if ((_a = window.name) === null || _a === void 0 ? void 0 : _a.includes(\"g42\")) {\r\n return window.name;\r\n }\r\n this.selfAssignedWindowId = this.selfAssignedWindowId || \"g42-\".concat(shortid());\r\n return this.selfAssignedWindowId;\r\n };\r\n return WebPlatformTransport;\r\n}());\n\nvar waitForInvocations = function (invocations, callback) {\r\n var left = invocations;\r\n return function () {\r\n left--;\r\n if (left === 0) {\r\n callback();\r\n }\r\n };\r\n};\n\nvar AsyncSequelizer = (function () {\r\n function AsyncSequelizer(minSequenceInterval) {\r\n if (minSequenceInterval === void 0) { minSequenceInterval = 0; }\r\n this.minSequenceInterval = minSequenceInterval;\r\n this.queue = [];\r\n this.isExecutingQueue = false;\r\n }\r\n AsyncSequelizer.prototype.enqueue = function (action) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n _this.queue.push({ action: action, resolve: resolve, reject: reject });\r\n _this.executeQueue();\r\n });\r\n };\r\n AsyncSequelizer.prototype.executeQueue = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var operation, actionResult, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this.isExecutingQueue) {\r\n return [2];\r\n }\r\n this.isExecutingQueue = true;\r\n _a.label = 1;\r\n case 1:\r\n if (!this.queue.length) return [3, 7];\r\n operation = this.queue.shift();\r\n if (!operation) {\r\n this.isExecutingQueue = false;\r\n return [2];\r\n }\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4, operation.action()];\r\n case 3:\r\n actionResult = _a.sent();\r\n operation.resolve(actionResult);\r\n return [3, 5];\r\n case 4:\r\n error_1 = _a.sent();\r\n operation.reject(error_1);\r\n return [3, 5];\r\n case 5: return [4, this.intervalBreak()];\r\n case 6:\r\n _a.sent();\r\n return [3, 1];\r\n case 7:\r\n this.isExecutingQueue = false;\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n AsyncSequelizer.prototype.intervalBreak = function () {\r\n var _this = this;\r\n return new Promise(function (res) { return setTimeout(res, _this.minSequenceInterval); });\r\n };\r\n return AsyncSequelizer;\r\n}());\n\nvar Connection = (function () {\r\n function Connection(settings, logger) {\r\n this.settings = settings;\r\n this.logger = logger;\r\n this.messageHandlers = {};\r\n this.ids = 1;\r\n this.registry = lib$1();\r\n this._connected = false;\r\n this.isTrace = false;\r\n this._swapTransport = false;\r\n this._switchInProgress = false;\r\n this._transportSubscriptions = [];\r\n this._sequelizer = new AsyncSequelizer();\r\n settings = settings || {};\r\n settings.reconnectAttempts = settings.reconnectAttempts || 10;\r\n settings.reconnectInterval = settings.reconnectInterval || 1000;\r\n if (settings.inproc) {\r\n this.transport = new InProcTransport(settings.inproc, logger.subLogger(\"inMemory\"));\r\n }\r\n else if (settings.sharedWorker) {\r\n this.transport = new SharedWorkerTransport(settings.sharedWorker, logger.subLogger(\"shared-worker\"));\r\n }\r\n else if (settings.webPlatform) {\r\n this.transport = new WebPlatformTransport(settings.webPlatform, logger.subLogger(\"web-platform\"), settings.identity);\r\n }\r\n else if (settings.ws !== undefined) {\r\n this.transport = new WS(settings, logger.subLogger(\"ws\"));\r\n }\r\n else {\r\n throw new Error(\"No connection information specified\");\r\n }\r\n this.isTrace = logger.canPublish(\"trace\");\r\n logger.debug(\"starting with \".concat(this.transport.name(), \" transport\"));\r\n this.protocol = new GW3ProtocolImpl(this, settings, logger.subLogger(\"protocol\"));\r\n var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\r\n var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\r\n this._transportSubscriptions.push(unsubConnectionChanged);\r\n this._transportSubscriptions.push(unsubOnMessage);\r\n this._defaultTransport = this.transport;\r\n }\r\n Object.defineProperty(Connection.prototype, \"protocolVersion\", {\r\n get: function () {\r\n var _a;\r\n return (_a = this.protocol) === null || _a === void 0 ? void 0 : _a.protocolVersion;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Connection.prototype.switchTransport = function (settings) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2, this._sequelizer.enqueue(function () { return __awaiter(_this, void 0, void 0, function () {\r\n var switchTargetTransport, verifyPromise, isSwitchSuccess;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!settings || typeof settings !== \"object\") {\r\n throw new Error(\"Cannot switch transports, because the settings are missing or invalid.\");\r\n }\r\n if (typeof settings.type === \"undefined\") {\r\n throw new Error(\"Cannot switch the transport, because the type is not defined\");\r\n }\r\n this.logger.trace(\"Starting transport switch with settings: \".concat(JSON.stringify(settings)));\r\n switchTargetTransport = settings.type === \"secondary\" ? this.getNewSecondaryTransport(settings) : this._defaultTransport;\r\n this._targetTransport = switchTargetTransport;\r\n this._targetAuth = settings.type === \"secondary\" ? this.getNewSecondaryAuth(settings) : this._defaultAuth;\r\n verifyPromise = this.verifyConnection();\r\n this._swapTransport = true;\r\n this._switchInProgress = true;\r\n this.logger.trace(\"The new transport has been set, closing the current transport\");\r\n return [4, this.transport.close()];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4, verifyPromise];\r\n case 3:\r\n _a.sent();\r\n isSwitchSuccess = this.transport === switchTargetTransport;\r\n this.logger.info(\"The reconnection after the switch was completed. Was the switch a success: \".concat(isSwitchSuccess));\r\n this._switchInProgress = false;\r\n return [2, { success: isSwitchSuccess }];\r\n case 4:\r\n _a.sent();\r\n this.logger.info(\"The reconnection after the switch timed out, reverting back to the default transport.\");\r\n this.switchTransport({ type: \"default\" });\r\n this._switchInProgress = false;\r\n return [2, { success: false }];\r\n case 5: return [2];\r\n }\r\n });\r\n }); })];\r\n });\r\n });\r\n };\r\n Connection.prototype.onLibReAnnounced = function (callback) {\r\n return this.registry.add(\"libReAnnounced\", callback);\r\n };\r\n Connection.prototype.setLibReAnnounced = function (lib) {\r\n this.registry.execute(\"libReAnnounced\", lib);\r\n };\r\n Connection.prototype.send = function (message, options) {\r\n if (this.transport.sendObject &&\r\n this.transport.isObjectBasedTransport) {\r\n var msg = this.protocol.createObjectMessage(message);\r\n if (this.isTrace) {\r\n this.logger.trace(\">> \".concat(JSON.stringify(msg)));\r\n }\r\n return this.transport.sendObject(msg, options);\r\n }\r\n else {\r\n var strMessage = this.protocol.createStringMessage(message);\r\n if (this.isTrace) {\r\n this.logger.trace(\">> \".concat(strMessage));\r\n }\r\n return this.transport.send(strMessage, options);\r\n }\r\n };\r\n Connection.prototype.on = function (type, messageHandler) {\r\n type = type.toLowerCase();\r\n if (this.messageHandlers[type] === undefined) {\r\n this.messageHandlers[type] = {};\r\n }\r\n var id = this.ids++;\r\n this.messageHandlers[type][id] = messageHandler;\r\n return {\r\n type: type,\r\n id: id,\r\n };\r\n };\r\n Connection.prototype.off = function (info) {\r\n delete this.messageHandlers[info.type.toLowerCase()][info.id];\r\n };\r\n Object.defineProperty(Connection.prototype, \"isConnected\", {\r\n get: function () {\r\n return this.protocol.isLoggedIn;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Connection.prototype.connected = function (callback) {\r\n var _this = this;\r\n return this.protocol.loggedIn(function () {\r\n var currentServer = _this.transport.name();\r\n callback(currentServer);\r\n });\r\n };\r\n Connection.prototype.disconnected = function (callback) {\r\n return this.registry.add(\"disconnected\", callback);\r\n };\r\n Connection.prototype.login = function (authRequest, reconnect) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var newAuth, identity, error_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this._defaultAuth) {\r\n this._defaultAuth = authRequest;\r\n }\r\n if (this._swapTransport) {\r\n this.logger.trace(\"Detected a transport swap, swapping transports\");\r\n newAuth = this.transportSwap();\r\n authRequest = newAuth !== null && newAuth !== void 0 ? newAuth : authRequest;\r\n }\r\n this.logger.trace(\"Starting login for transport: \".concat(this.transport.name(), \" and auth \").concat(JSON.stringify(authRequest)));\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 4, , 5]);\r\n return [4, this.transport.open()];\r\n case 2:\r\n _a.sent();\r\n this.logger.trace(\"Transport: \".concat(this.transport.name(), \" opened, logging in\"));\r\n timer(\"connection\").mark(\"transport-opened\");\r\n return [4, this.protocol.login(authRequest, reconnect)];\r\n case 3:\r\n identity = _a.sent();\r\n this.logger.trace(\"Logged in with identity: \".concat(JSON.stringify(identity)));\r\n timer(\"connection\").mark(\"protocol-logged-in\");\r\n return [2, identity];\r\n case 4:\r\n error_2 = _a.sent();\r\n if (this._switchInProgress) {\r\n this.logger.trace(\"An error while logging in after a transport swap, preparing a default swap.\");\r\n this.prepareDefaultSwap();\r\n }\r\n throw new Error(error_2);\r\n case 5: return [2];\r\n }\r\n });\r\n });\r\n };\r\n Connection.prototype.logout = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4, this.protocol.logout()];\r\n case 1:\r\n _a.sent();\r\n return [4, this.transport.close()];\r\n case 2:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Connection.prototype.loggedIn = function (callback) {\r\n return this.protocol.loggedIn(callback);\r\n };\r\n Connection.prototype.domain = function (domain, successMessages, errorMessages) {\r\n return this.protocol.domain(domain, this.logger.subLogger(\"domain=\".concat(domain)), successMessages, errorMessages);\r\n };\r\n Connection.prototype.authToken = function () {\r\n return this.protocol.authToken();\r\n };\r\n Connection.prototype.reconnect = function () {\r\n return this.transport.reconnect();\r\n };\r\n Connection.prototype.distributeMessage = function (message, type) {\r\n var _this = this;\r\n var handlers = this.messageHandlers[type.toLowerCase()];\r\n if (handlers !== undefined) {\r\n Object.keys(handlers).forEach(function (handlerId) {\r\n var handler = handlers[handlerId];\r\n if (handler !== undefined) {\r\n try {\r\n handler(message);\r\n }\r\n catch (error) {\r\n try {\r\n _this.logger.error(\"Message handler failed with \".concat(error.stack), error);\r\n }\r\n catch (loggerError) {\r\n console.log(\"Message handler failed\", error);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n };\r\n Connection.prototype.handleConnectionChanged = function (connected) {\r\n if (this._connected === connected) {\r\n return;\r\n }\r\n this._connected = connected;\r\n if (connected) {\r\n if (this.settings.replaySpecs && this.settings.replaySpecs.length) {\r\n this.replayer = new MessageReplayerImpl(this.settings.replaySpecs);\r\n this.replayer.init(this);\r\n }\r\n this.registry.execute(\"connected\");\r\n }\r\n else {\r\n this.registry.execute(\"disconnected\");\r\n }\r\n };\r\n Connection.prototype.handleTransportMessage = function (msg) {\r\n var msgObj;\r\n if (typeof msg === \"string\") {\r\n msgObj = this.protocol.processStringMessage(msg);\r\n }\r\n else {\r\n msgObj = this.protocol.processObjectMessage(msg);\r\n }\r\n if (this.isTrace) {\r\n this.logger.trace(\"<< \".concat(JSON.stringify(msgObj)));\r\n }\r\n this.distributeMessage(msgObj.msg, msgObj.msgType);\r\n };\r\n Connection.prototype.verifyConnection = function () {\r\n var _this = this;\r\n return PromisePlus(function (resolve) {\r\n var unsub;\r\n var ready = waitForInvocations(2, function () {\r\n if (unsub) {\r\n unsub();\r\n }\r\n resolve();\r\n });\r\n unsub = _this.onLibReAnnounced(function (lib) {\r\n if (lib.name === \"interop\") {\r\n return ready();\r\n }\r\n if (lib.name === \"contexts\") {\r\n return ready();\r\n }\r\n });\r\n }, 10000, \"Transport switch timed out waiting for all libraries to be re-announced\");\r\n };\r\n Connection.prototype.getNewSecondaryTransport = function (settings) {\r\n var _a;\r\n if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.url)) {\r\n throw new Error(\"Missing secondary transport URL.\");\r\n }\r\n return new WS(Object.assign({}, this.settings, { ws: settings.transportConfig.url, reconnectAttempts: 1 }), this.logger.subLogger(\"ws-secondary\"));\r\n };\r\n Connection.prototype.getNewSecondaryAuth = function (settings) {\r\n var _a;\r\n if (!((_a = settings.transportConfig) === null || _a === void 0 ? void 0 : _a.auth)) {\r\n throw new Error(\"Missing secondary transport auth information.\");\r\n }\r\n return settings.transportConfig.auth;\r\n };\r\n Connection.prototype.transportSwap = function () {\r\n this._swapTransport = false;\r\n if (!this._targetTransport || !this._targetAuth) {\r\n this.logger.warn(\"Error while switching transports - either the target transport or auth is not defined: transport defined -> \".concat(!!this._defaultTransport, \", auth defined -> \").concat(!!this._targetAuth, \". Staying on the current one.\"));\r\n return;\r\n }\r\n this._transportSubscriptions.forEach(function (unsub) { return unsub(); });\r\n this._transportSubscriptions = [];\r\n this.transport = this._targetTransport;\r\n var unsubConnectionChanged = this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this));\r\n var unsubOnMessage = this.transport.onMessage(this.handleTransportMessage.bind(this));\r\n this._transportSubscriptions.push(unsubConnectionChanged);\r\n this._transportSubscriptions.push(unsubOnMessage);\r\n return this._targetAuth;\r\n };\r\n Connection.prototype.prepareDefaultSwap = function () {\r\n var _this = this;\r\n this._transportSubscriptions.forEach(function (unsub) { return unsub(); });\r\n this._transportSubscriptions = [];\r\n this.transport.close().catch(function (error) { return _this.logger.warn(\"Error closing the \".concat(_this.transport.name(), \" transport after a failed connection attempt: \").concat(JSON.stringify(error))); });\r\n this._targetTransport = this._defaultTransport;\r\n this._targetAuth = this._defaultAuth;\r\n this._swapTransport = true;\r\n };\r\n return Connection;\r\n}());\n\nvar order = [\"trace\", \"debug\", \"info\", \"warn\", \"error\", \"off\"];\r\nvar Logger = (function () {\r\n function Logger(name, parent, logFn) {\r\n this.name = name;\r\n this.parent = parent;\r\n this.subLoggers = [];\r\n this.logFn = console;\r\n this.customLogFn = false;\r\n this.name = name;\r\n if (parent) {\r\n this.path = \"\".concat(parent.path, \".\").concat(name);\r\n }\r\n else {\r\n this.path = name;\r\n }\r\n this.loggerFullName = \"[\".concat(this.path, \"]\");\r\n this.includeTimeAndLevel = !logFn;\r\n if (logFn) {\r\n this.logFn = logFn;\r\n this.customLogFn = true;\r\n }\r\n }\r\n Logger.prototype.subLogger = function (name) {\r\n var existingSub = this.subLoggers.filter(function (subLogger) {\r\n return subLogger.name === name;\r\n })[0];\r\n if (existingSub !== undefined) {\r\n return existingSub;\r\n }\r\n Object.keys(this).forEach(function (key) {\r\n if (key === name) {\r\n throw new Error(\"This sub logger name is not allowed.\");\r\n }\r\n });\r\n var sub = new Logger(name, this, this.customLogFn ? this.logFn : undefined);\r\n this.subLoggers.push(sub);\r\n return sub;\r\n };\r\n Logger.prototype.publishLevel = function (level) {\r\n var _a;\r\n if (level) {\r\n this._publishLevel = level;\r\n }\r\n return this._publishLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.publishLevel());\r\n };\r\n Logger.prototype.consoleLevel = function (level) {\r\n var _a;\r\n if (level) {\r\n this._consoleLevel = level;\r\n }\r\n return this._consoleLevel || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.consoleLevel());\r\n };\r\n Logger.prototype.log = function (message, level, error) {\r\n this.publishMessage(level || \"info\", message, error);\r\n };\r\n Logger.prototype.trace = function (message) {\r\n this.log(message, \"trace\");\r\n };\r\n Logger.prototype.debug = function (message) {\r\n this.log(message, \"debug\");\r\n };\r\n Logger.prototype.info = function (message) {\r\n this.log(message, \"info\");\r\n };\r\n Logger.prototype.warn = function (message) {\r\n this.log(message, \"warn\");\r\n };\r\n Logger.prototype.error = function (message, err) {\r\n this.log(message, \"error\");\r\n };\r\n Logger.prototype.canPublish = function (level, compareWith) {\r\n var levelIdx = order.indexOf(level);\r\n var restrictionIdx = order.indexOf(compareWith || this.consoleLevel() || \"trace\");\r\n return levelIdx >= restrictionIdx;\r\n };\r\n Logger.prototype.publishMessage = function (level, message, error) {\r\n var loggerName = this.loggerFullName;\r\n if (level === \"error\" && !error) {\r\n var e = new Error();\r\n if (e.stack) {\r\n message =\r\n message +\r\n \"\\n\" +\r\n e.stack\r\n .split(\"\\n\")\r\n .slice(3)\r\n .join(\"\\n\");\r\n }\r\n }\r\n if (this.canPublish(level, this.publishLevel())) {\r\n var interop = Logger.Interop;\r\n if (interop) {\r\n try {\r\n if (interop.methods({ name: Logger.InteropMethodName }).length > 0) {\r\n interop.invoke(Logger.InteropMethodName, {\r\n msg: \"\".concat(message),\r\n logger: loggerName,\r\n level: level\r\n });\r\n }\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n }\r\n if (this.canPublish(level)) {\r\n var prefix = \"\";\r\n if (this.includeTimeAndLevel) {\r\n var date = new Date();\r\n var time = \"\".concat(date.getHours(), \":\").concat(date.getMinutes(), \":\").concat(date.getSeconds(), \":\").concat(date.getMilliseconds());\r\n prefix = \"[\".concat(time, \"] [\").concat(level, \"] \");\r\n }\r\n var toPrint = \"\".concat(prefix).concat(loggerName, \": \").concat(message);\r\n switch (level) {\r\n case \"trace\":\r\n this.logFn.debug(toPrint);\r\n break;\r\n case \"debug\":\r\n if (this.logFn.debug) {\r\n this.logFn.debug(toPrint);\r\n }\r\n else {\r\n this.logFn.log(toPrint);\r\n }\r\n break;\r\n case \"info\":\r\n this.logFn.info(toPrint);\r\n break;\r\n case \"warn\":\r\n this.logFn.warn(toPrint);\r\n break;\r\n case \"error\":\r\n this.logFn.error(toPrint, error);\r\n break;\r\n }\r\n }\r\n };\r\n Logger.InteropMethodName = \"T42.AppLogger.Log\";\r\n return Logger;\r\n}());\n\nvar GW_MESSAGE_CREATE_CONTEXT = \"create-context\";\r\nvar GW_MESSAGE_ACTIVITY_CREATED = \"created\";\r\nvar GW_MESSAGE_ACTIVITY_DESTROYED = \"destroyed\";\r\nvar GW_MESSAGE_CONTEXT_CREATED = \"context-created\";\r\nvar GW_MESSAGE_CONTEXT_ADDED = \"context-added\";\r\nvar GW_MESSAGE_SUBSCRIBE_CONTEXT = \"subscribe-context\";\r\nvar GW_MESSAGE_SUBSCRIBED_CONTEXT = \"subscribed-context\";\r\nvar GW_MESSAGE_UNSUBSCRIBE_CONTEXT = \"unsubscribe-context\";\r\nvar GW_MESSAGE_DESTROY_CONTEXT = \"destroy-context\";\r\nvar GW_MESSAGE_CONTEXT_DESTROYED = \"context-destroyed\";\r\nvar GW_MESSAGE_UPDATE_CONTEXT = \"update-context\";\r\nvar GW_MESSAGE_CONTEXT_UPDATED = \"context-updated\";\r\nvar GW_MESSAGE_JOINED_ACTIVITY = \"joined\";\n\nvar ContextMessageReplaySpec = {\r\n get name() {\r\n return \"context\";\r\n },\r\n get types() {\r\n return [\r\n GW_MESSAGE_CREATE_CONTEXT,\r\n GW_MESSAGE_ACTIVITY_CREATED,\r\n GW_MESSAGE_ACTIVITY_DESTROYED,\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_CONTEXT_ADDED,\r\n GW_MESSAGE_SUBSCRIBE_CONTEXT,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\r\n GW_MESSAGE_DESTROY_CONTEXT,\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_UPDATE_CONTEXT,\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n GW_MESSAGE_JOINED_ACTIVITY\r\n ];\r\n }\r\n};\n\nvar version = \"6.2.0\";\n\nfunction prepareConfig (configuration, ext, glue42gd) {\r\n var _a, _b, _c, _d;\r\n var nodeStartingContext;\r\n if (Utils.isNode()) {\r\n var startingContextString = process.env._GD_STARTING_CONTEXT_;\r\n if (startingContextString) {\r\n try {\r\n nodeStartingContext = JSON.parse(startingContextString);\r\n }\r\n catch (_e) {\r\n }\r\n }\r\n }\r\n function getConnection() {\r\n var _a, _b, _c, _d, _e, _f;\r\n var gwConfig = configuration.gateway;\r\n var protocolVersion = (_a = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.protocolVersion) !== null && _a !== void 0 ? _a : 3;\r\n var reconnectInterval = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectInterval;\r\n var reconnectAttempts = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.reconnectAttempts;\r\n var defaultWs = \"ws://localhost:8385\";\r\n var ws = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.ws;\r\n var sharedWorker = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.sharedWorker;\r\n var inproc = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.inproc;\r\n var webPlatform = (_b = gwConfig === null || gwConfig === void 0 ? void 0 : gwConfig.webPlatform) !== null && _b !== void 0 ? _b : undefined;\r\n if (glue42gd) {\r\n ws = glue42gd.gwURL;\r\n }\r\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwURL) {\r\n ws = nodeStartingContext.gwURL;\r\n }\r\n if (!ws && !sharedWorker && !inproc) {\r\n ws = defaultWs;\r\n }\r\n var instanceId;\r\n var windowId;\r\n var pid;\r\n var environment;\r\n var region;\r\n var appName = getApplication();\r\n var uniqueAppName = appName;\r\n if (typeof glue42gd !== \"undefined\") {\r\n windowId = glue42gd.windowId;\r\n pid = glue42gd.pid;\r\n if (glue42gd.env) {\r\n environment = glue42gd.env.env;\r\n region = glue42gd.env.region;\r\n }\r\n uniqueAppName = (_c = glue42gd.application) !== null && _c !== void 0 ? _c : \"glue-app\";\r\n instanceId = glue42gd.appInstanceId;\r\n }\r\n else if (Utils.isNode()) {\r\n pid = process.pid;\r\n if (nodeStartingContext) {\r\n environment = nodeStartingContext.env;\r\n region = nodeStartingContext.region;\r\n instanceId = nodeStartingContext.instanceId;\r\n }\r\n }\r\n else if (typeof (window === null || window === void 0 ? void 0 : window.glue42electron) !== \"undefined\") {\r\n windowId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId;\r\n pid = window === null || window === void 0 ? void 0 : window.glue42electron.pid;\r\n environment = window === null || window === void 0 ? void 0 : window.glue42electron.env;\r\n region = window === null || window === void 0 ? void 0 : window.glue42electron.region;\r\n uniqueAppName = (_d = window === null || window === void 0 ? void 0 : window.glue42electron.application) !== null && _d !== void 0 ? _d : \"glue-app\";\r\n instanceId = window === null || window === void 0 ? void 0 : window.glue42electron.instanceId;\r\n }\r\n else ;\r\n var replaySpecs = (_f = (_e = configuration.gateway) === null || _e === void 0 ? void 0 : _e.replaySpecs) !== null && _f !== void 0 ? _f : [];\r\n replaySpecs.push(ContextMessageReplaySpec);\r\n var identity = {\r\n application: uniqueAppName,\r\n applicationName: appName,\r\n windowId: windowId,\r\n instance: instanceId,\r\n process: pid,\r\n region: region,\r\n environment: environment,\r\n api: ext.version || version\r\n };\r\n if (configuration.identity) {\r\n identity = Object.assign(identity, configuration.identity);\r\n }\r\n return {\r\n identity: identity,\r\n reconnectInterval: reconnectInterval,\r\n ws: ws,\r\n sharedWorker: sharedWorker,\r\n webPlatform: webPlatform,\r\n inproc: inproc,\r\n protocolVersion: protocolVersion,\r\n reconnectAttempts: reconnectAttempts,\r\n replaySpecs: replaySpecs,\r\n };\r\n }\r\n function getContexts() {\r\n if (typeof configuration.contexts === \"undefined\") {\r\n return { reAnnounceKnownContexts: true };\r\n }\r\n if (typeof configuration.contexts === \"boolean\" && configuration.contexts) {\r\n return { reAnnounceKnownContexts: true };\r\n }\r\n if (typeof configuration.contexts === \"object\") {\r\n return Object.assign({}, { reAnnounceKnownContexts: true }, configuration.contexts);\r\n }\r\n return false;\r\n }\r\n function getApplication() {\r\n if (configuration.application) {\r\n return configuration.application;\r\n }\r\n if (glue42gd) {\r\n return glue42gd.applicationName;\r\n }\r\n if (typeof window !== \"undefined\" && typeof window.glue42electron !== \"undefined\") {\r\n return window.glue42electron.application;\r\n }\r\n var uid = shortid();\r\n if (Utils.isNode()) {\r\n if (nodeStartingContext) {\r\n return nodeStartingContext.applicationConfig.name;\r\n }\r\n return \"NodeJS\" + uid;\r\n }\r\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\") {\r\n return document.title + \" (\".concat(uid, \")\");\r\n }\r\n return uid;\r\n }\r\n function getAuth() {\r\n var _a, _b, _c;\r\n if (typeof configuration.auth === \"string\") {\r\n return {\r\n token: configuration.auth\r\n };\r\n }\r\n if (configuration.auth) {\r\n return configuration.auth;\r\n }\r\n if (Utils.isNode() && nodeStartingContext && nodeStartingContext.gwToken) {\r\n return {\r\n gatewayToken: nodeStartingContext.gwToken\r\n };\r\n }\r\n if (((_a = configuration.gateway) === null || _a === void 0 ? void 0 : _a.webPlatform) || ((_b = configuration.gateway) === null || _b === void 0 ? void 0 : _b.inproc) || ((_c = configuration.gateway) === null || _c === void 0 ? void 0 : _c.sharedWorker)) {\r\n return {\r\n username: \"glue42\", password: \"glue42\"\r\n };\r\n }\r\n }\r\n function getLogger() {\r\n var _a, _b;\r\n var config = configuration.logger;\r\n var defaultLevel = \"warn\";\r\n if (!config) {\r\n config = defaultLevel;\r\n }\r\n var gdConsoleLevel;\r\n if (glue42gd) {\r\n gdConsoleLevel = glue42gd.consoleLogLevel;\r\n }\r\n if (typeof config === \"string\") {\r\n return { console: gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config, publish: defaultLevel };\r\n }\r\n return {\r\n console: (_a = gdConsoleLevel !== null && gdConsoleLevel !== void 0 ? gdConsoleLevel : config.console) !== null && _a !== void 0 ? _a : defaultLevel,\r\n publish: (_b = config.publish) !== null && _b !== void 0 ? _b : defaultLevel\r\n };\r\n }\r\n var connection = getConnection();\r\n var application = getApplication();\r\n if (typeof window !== \"undefined\") {\r\n var windowAsAny = window;\r\n var containerApplication = windowAsAny.htmlContainer ?\r\n \"\".concat(windowAsAny.htmlContainer.containerName, \".\").concat(windowAsAny.htmlContainer.application) :\r\n (_a = windowAsAny === null || windowAsAny === void 0 ? void 0 : windowAsAny.glue42gd) === null || _a === void 0 ? void 0 : _a.application;\r\n if (containerApplication) {\r\n application = containerApplication;\r\n }\r\n }\r\n return {\r\n bus: (_b = configuration.bus) !== null && _b !== void 0 ? _b : false,\r\n application: application,\r\n auth: getAuth(),\r\n logger: getLogger(),\r\n connection: connection,\r\n metrics: (_c = configuration.metrics) !== null && _c !== void 0 ? _c : true,\r\n contexts: getContexts(),\r\n version: ext.version || version,\r\n libs: (_d = ext.libs) !== null && _d !== void 0 ? _d : [],\r\n customLogger: configuration.customLogger\r\n };\r\n}\n\nvar GW3ContextData = (function () {\r\n function GW3ContextData(contextId, name, isAnnounced, activityId) {\r\n this.updateCallbacks = {};\r\n this.contextId = contextId;\r\n this.name = name;\r\n this.isAnnounced = isAnnounced;\r\n this.activityId = activityId;\r\n this.context = {};\r\n }\r\n GW3ContextData.prototype.hasCallbacks = function () {\r\n return Object.keys(this.updateCallbacks).length > 0;\r\n };\r\n GW3ContextData.prototype.getState = function () {\r\n if (this.isAnnounced && this.hasCallbacks()) {\r\n return 3;\r\n }\r\n if (this.isAnnounced) {\r\n return 2;\r\n }\r\n if (this.hasCallbacks()) {\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n return GW3ContextData;\r\n}());\n\nvar lodash_clonedeepExports = {};\nvar lodash_clonedeep = {\n get exports(){ return lodash_clonedeepExports; },\n set exports(v){ lodash_clonedeepExports = v; },\n};\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n(function (module, exports) {\n\t/** Used as the size to enable large array optimizations. */\n\tvar LARGE_ARRAY_SIZE = 200;\n\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t arrayTag = '[object Array]',\n\t boolTag = '[object Boolean]',\n\t dateTag = '[object Date]',\n\t errorTag = '[object Error]',\n\t funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]',\n\t mapTag = '[object Map]',\n\t numberTag = '[object Number]',\n\t objectTag = '[object Object]',\n\t promiseTag = '[object Promise]',\n\t regexpTag = '[object RegExp]',\n\t setTag = '[object Set]',\n\t stringTag = '[object String]',\n\t symbolTag = '[object Symbol]',\n\t weakMapTag = '[object WeakMap]';\n\n\tvar arrayBufferTag = '[object ArrayBuffer]',\n\t dataViewTag = '[object DataView]',\n\t float32Tag = '[object Float32Array]',\n\t float64Tag = '[object Float64Array]',\n\t int8Tag = '[object Int8Array]',\n\t int16Tag = '[object Int16Array]',\n\t int32Tag = '[object Int32Array]',\n\t uint8Tag = '[object Uint8Array]',\n\t uint8ClampedTag = '[object Uint8ClampedArray]',\n\t uint16Tag = '[object Uint16Array]',\n\t uint32Tag = '[object Uint32Array]';\n\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n\t/** Used to match `RegExp` flags from their coerced string values. */\n\tvar reFlags = /\\w*$/;\n\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n\t/** Used to identify `toStringTag` values supported by `_.clone`. */\n\tvar cloneableTags = {};\n\tcloneableTags[argsTag] = cloneableTags[arrayTag] =\n\tcloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n\tcloneableTags[boolTag] = cloneableTags[dateTag] =\n\tcloneableTags[float32Tag] = cloneableTags[float64Tag] =\n\tcloneableTags[int8Tag] = cloneableTags[int16Tag] =\n\tcloneableTags[int32Tag] = cloneableTags[mapTag] =\n\tcloneableTags[numberTag] = cloneableTags[objectTag] =\n\tcloneableTags[regexpTag] = cloneableTags[setTag] =\n\tcloneableTags[stringTag] = cloneableTags[symbolTag] =\n\tcloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n\tcloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n\tcloneableTags[errorTag] = cloneableTags[funcTag] =\n\tcloneableTags[weakMapTag] = false;\n\n\t/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n\n\t/** Detect free variable `self`. */\n\tvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n\t/** Used as a reference to the global object. */\n\tvar root = freeGlobal || freeSelf || Function('return this')();\n\n\t/** Detect free variable `exports`. */\n\tvar freeExports = exports && !exports.nodeType && exports;\n\n\t/** Detect free variable `module`. */\n\tvar freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;\n\n\t/** Detect the popular CommonJS extension `module.exports`. */\n\tvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n\t/**\n\t * Adds the key-value `pair` to `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to modify.\n\t * @param {Array} pair The key-value pair to add.\n\t * @returns {Object} Returns `map`.\n\t */\n\tfunction addMapEntry(map, pair) {\n\t // Don't return `map.set` because it's not chainable in IE 11.\n\t map.set(pair[0], pair[1]);\n\t return map;\n\t}\n\n\t/**\n\t * Adds `value` to `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to modify.\n\t * @param {*} value The value to add.\n\t * @returns {Object} Returns `set`.\n\t */\n\tfunction addSetEntry(set, value) {\n\t // Don't return `set.add` because it's not chainable in IE 11.\n\t set.add(value);\n\t return set;\n\t}\n\n\t/**\n\t * A specialized version of `_.forEach` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayEach(array, iteratee) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t while (++index < length) {\n\t if (iteratee(array[index], index, array) === false) {\n\t break;\n\t }\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Appends the elements of `values` to `array`.\n\t *\n\t * @private\n\t * @param {Array} array The array to modify.\n\t * @param {Array} values The values to append.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction arrayPush(array, values) {\n\t var index = -1,\n\t length = values.length,\n\t offset = array.length;\n\n\t while (++index < length) {\n\t array[offset + index] = values[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * A specialized version of `_.reduce` for arrays without support for\n\t * iteratee shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @param {*} [accumulator] The initial value.\n\t * @param {boolean} [initAccum] Specify using the first element of `array` as\n\t * the initial value.\n\t * @returns {*} Returns the accumulated value.\n\t */\n\tfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\n\t if (initAccum && length) {\n\t accumulator = array[++index];\n\t }\n\t while (++index < length) {\n\t accumulator = iteratee(accumulator, array[index], index, array);\n\t }\n\t return accumulator;\n\t}\n\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t var index = -1,\n\t result = Array(n);\n\n\t while (++index < n) {\n\t result[index] = iteratee(index);\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Gets the value at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} [object] The object to query.\n\t * @param {string} key The key of the property to get.\n\t * @returns {*} Returns the property value.\n\t */\n\tfunction getValue(object, key) {\n\t return object == null ? undefined : object[key];\n\t}\n\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t // Many host objects are `Object` objects that can coerce to strings\n\t // despite having improperly defined `toString` methods.\n\t var result = false;\n\t if (value != null && typeof value.toString != 'function') {\n\t try {\n\t result = !!(value + '');\n\t } catch (e) {}\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Converts `map` to its key-value pairs.\n\t *\n\t * @private\n\t * @param {Object} map The map to convert.\n\t * @returns {Array} Returns the key-value pairs.\n\t */\n\tfunction mapToArray(map) {\n\t var index = -1,\n\t result = Array(map.size);\n\n\t map.forEach(function(value, key) {\n\t result[++index] = [key, value];\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\n\t/**\n\t * Converts `set` to an array of its values.\n\t *\n\t * @private\n\t * @param {Object} set The set to convert.\n\t * @returns {Array} Returns the values.\n\t */\n\tfunction setToArray(set) {\n\t var index = -1,\n\t result = Array(set.size);\n\n\t set.forEach(function(value) {\n\t result[++index] = value;\n\t });\n\t return result;\n\t}\n\n\t/** Used for built-in method references. */\n\tvar arrayProto = Array.prototype,\n\t funcProto = Function.prototype,\n\t objectProto = Object.prototype;\n\n\t/** Used to detect overreaching core-js shims. */\n\tvar coreJsData = root['__core-js_shared__'];\n\n\t/** Used to detect methods masquerading as native. */\n\tvar maskSrcKey = (function() {\n\t var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n\t return uid ? ('Symbol(src)_1.' + uid) : '';\n\t}());\n\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\n\t/** Built-in value references. */\n\tvar Buffer = moduleExports ? root.Buffer : undefined,\n\t Symbol = root.Symbol,\n\t Uint8Array = root.Uint8Array,\n\t getPrototype = overArg(Object.getPrototypeOf, Object),\n\t objectCreate = Object.create,\n\t propertyIsEnumerable = objectProto.propertyIsEnumerable,\n\t splice = arrayProto.splice;\n\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeGetSymbols = Object.getOwnPropertySymbols,\n\t nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n\t nativeKeys = overArg(Object.keys, Object);\n\n\t/* Built-in method references that are verified to be native. */\n\tvar DataView = getNative(root, 'DataView'),\n\t Map = getNative(root, 'Map'),\n\t Promise = getNative(root, 'Promise'),\n\t Set = getNative(root, 'Set'),\n\t WeakMap = getNative(root, 'WeakMap'),\n\t nativeCreate = getNative(Object, 'create');\n\n\t/** Used to detect maps, sets, and weakmaps. */\n\tvar dataViewCtorString = toSource(DataView),\n\t mapCtorString = toSource(Map),\n\t promiseCtorString = toSource(Promise),\n\t setCtorString = toSource(Set),\n\t weakMapCtorString = toSource(WeakMap);\n\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n\t/**\n\t * Creates a hash object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Hash(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the hash.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Hash\n\t */\n\tfunction hashClear() {\n\t this.__data__ = nativeCreate ? nativeCreate(null) : {};\n\t}\n\n\t/**\n\t * Removes `key` and its value from the hash.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Hash\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction hashDelete(key) {\n\t return this.has(key) && delete this.__data__[key];\n\t}\n\n\t/**\n\t * Gets the hash value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction hashGet(key) {\n\t var data = this.__data__;\n\t if (nativeCreate) {\n\t var result = data[key];\n\t return result === HASH_UNDEFINED ? undefined : result;\n\t }\n\t return hasOwnProperty.call(data, key) ? data[key] : undefined;\n\t}\n\n\t/**\n\t * Checks if a hash value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Hash\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction hashHas(key) {\n\t var data = this.__data__;\n\t return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n\t}\n\n\t/**\n\t * Sets the hash `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the hash instance.\n\t */\n\tfunction hashSet(key, value) {\n\t var data = this.__data__;\n\t data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n\t return this;\n\t}\n\n\t// Add methods to `Hash`.\n\tHash.prototype.clear = hashClear;\n\tHash.prototype['delete'] = hashDelete;\n\tHash.prototype.get = hashGet;\n\tHash.prototype.has = hashHas;\n\tHash.prototype.set = hashSet;\n\n\t/**\n\t * Creates an list cache object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction ListCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the list cache.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf ListCache\n\t */\n\tfunction listCacheClear() {\n\t this.__data__ = [];\n\t}\n\n\t/**\n\t * Removes `key` and its value from the list cache.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction listCacheDelete(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t return false;\n\t }\n\t var lastIndex = data.length - 1;\n\t if (index == lastIndex) {\n\t data.pop();\n\t } else {\n\t splice.call(data, index, 1);\n\t }\n\t return true;\n\t}\n\n\t/**\n\t * Gets the list cache value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction listCacheGet(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t return index < 0 ? undefined : data[index][1];\n\t}\n\n\t/**\n\t * Checks if a list cache value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf ListCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction listCacheHas(key) {\n\t return assocIndexOf(this.__data__, key) > -1;\n\t}\n\n\t/**\n\t * Sets the list cache `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the list cache instance.\n\t */\n\tfunction listCacheSet(key, value) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\n\t if (index < 0) {\n\t data.push([key, value]);\n\t } else {\n\t data[index][1] = value;\n\t }\n\t return this;\n\t}\n\n\t// Add methods to `ListCache`.\n\tListCache.prototype.clear = listCacheClear;\n\tListCache.prototype['delete'] = listCacheDelete;\n\tListCache.prototype.get = listCacheGet;\n\tListCache.prototype.has = listCacheHas;\n\tListCache.prototype.set = listCacheSet;\n\n\t/**\n\t * Creates a map cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction MapCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\n\t/**\n\t * Removes all key-value entries from the map.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf MapCache\n\t */\n\tfunction mapCacheClear() {\n\t this.__data__ = {\n\t 'hash': new Hash,\n\t 'map': new (Map || ListCache),\n\t 'string': new Hash\n\t };\n\t}\n\n\t/**\n\t * Removes `key` and its value from the map.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction mapCacheDelete(key) {\n\t return getMapData(this, key)['delete'](key);\n\t}\n\n\t/**\n\t * Gets the map value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction mapCacheGet(key) {\n\t return getMapData(this, key).get(key);\n\t}\n\n\t/**\n\t * Checks if a map value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf MapCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction mapCacheHas(key) {\n\t return getMapData(this, key).has(key);\n\t}\n\n\t/**\n\t * Sets the map `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the map cache instance.\n\t */\n\tfunction mapCacheSet(key, value) {\n\t getMapData(this, key).set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `MapCache`.\n\tMapCache.prototype.clear = mapCacheClear;\n\tMapCache.prototype['delete'] = mapCacheDelete;\n\tMapCache.prototype.get = mapCacheGet;\n\tMapCache.prototype.has = mapCacheHas;\n\tMapCache.prototype.set = mapCacheSet;\n\n\t/**\n\t * Creates a stack cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Stack(entries) {\n\t this.__data__ = new ListCache(entries);\n\t}\n\n\t/**\n\t * Removes all key-value entries from the stack.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Stack\n\t */\n\tfunction stackClear() {\n\t this.__data__ = new ListCache;\n\t}\n\n\t/**\n\t * Removes `key` and its value from the stack.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction stackDelete(key) {\n\t return this.__data__['delete'](key);\n\t}\n\n\t/**\n\t * Gets the stack value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction stackGet(key) {\n\t return this.__data__.get(key);\n\t}\n\n\t/**\n\t * Checks if a stack value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Stack\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction stackHas(key) {\n\t return this.__data__.has(key);\n\t}\n\n\t/**\n\t * Sets the stack `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the stack cache instance.\n\t */\n\tfunction stackSet(key, value) {\n\t var cache = this.__data__;\n\t if (cache instanceof ListCache) {\n\t var pairs = cache.__data__;\n\t if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n\t pairs.push([key, value]);\n\t return this;\n\t }\n\t cache = this.__data__ = new MapCache(pairs);\n\t }\n\t cache.set(key, value);\n\t return this;\n\t}\n\n\t// Add methods to `Stack`.\n\tStack.prototype.clear = stackClear;\n\tStack.prototype['delete'] = stackDelete;\n\tStack.prototype.get = stackGet;\n\tStack.prototype.has = stackHas;\n\tStack.prototype.set = stackSet;\n\n\t/**\n\t * Creates an array of the enumerable property names of the array-like `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @param {boolean} inherited Specify returning inherited property names.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction arrayLikeKeys(value, inherited) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t // Safari 9 makes `arguments.length` enumerable in strict mode.\n\t var result = (isArray(value) || isArguments(value))\n\t ? baseTimes(value.length, String)\n\t : [];\n\n\t var length = result.length,\n\t skipIndexes = !!length;\n\n\t for (var key in value) {\n\t if ((inherited || hasOwnProperty.call(value, key)) &&\n\t !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Assigns `value` to `key` of `object` if the existing value is not equivalent\n\t * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to modify.\n\t * @param {string} key The key of the property to assign.\n\t * @param {*} value The value to assign.\n\t */\n\tfunction assignValue(object, key, value) {\n\t var objValue = object[key];\n\t if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n\t (value === undefined && !(key in object))) {\n\t object[key] = value;\n\t }\n\t}\n\n\t/**\n\t * Gets the index at which the `key` is found in `array` of key-value pairs.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {*} key The key to search for.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction assocIndexOf(array, key) {\n\t var length = array.length;\n\t while (length--) {\n\t if (eq(array[length][0], key)) {\n\t return length;\n\t }\n\t }\n\t return -1;\n\t}\n\n\t/**\n\t * The base implementation of `_.assign` without support for multiple sources\n\t * or `customizer` functions.\n\t *\n\t * @private\n\t * @param {Object} object The destination object.\n\t * @param {Object} source The source object.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction baseAssign(object, source) {\n\t return object && copyObject(source, keys(source), object);\n\t}\n\n\t/**\n\t * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n\t * traversed objects.\n\t *\n\t * @private\n\t * @param {*} value The value to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @param {boolean} [isFull] Specify a clone including symbols.\n\t * @param {Function} [customizer] The function to customize cloning.\n\t * @param {string} [key] The key of `value`.\n\t * @param {Object} [object] The parent object of `value`.\n\t * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n\t * @returns {*} Returns the cloned value.\n\t */\n\tfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n\t var result;\n\t if (customizer) {\n\t result = object ? customizer(value, key, object, stack) : customizer(value);\n\t }\n\t if (result !== undefined) {\n\t return result;\n\t }\n\t if (!isObject(value)) {\n\t return value;\n\t }\n\t var isArr = isArray(value);\n\t if (isArr) {\n\t result = initCloneArray(value);\n\t if (!isDeep) {\n\t return copyArray(value, result);\n\t }\n\t } else {\n\t var tag = getTag(value),\n\t isFunc = tag == funcTag || tag == genTag;\n\n\t if (isBuffer(value)) {\n\t return cloneBuffer(value, isDeep);\n\t }\n\t if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n\t if (isHostObject(value)) {\n\t return object ? value : {};\n\t }\n\t result = initCloneObject(isFunc ? {} : value);\n\t if (!isDeep) {\n\t return copySymbols(value, baseAssign(result, value));\n\t }\n\t } else {\n\t if (!cloneableTags[tag]) {\n\t return object ? value : {};\n\t }\n\t result = initCloneByTag(value, tag, baseClone, isDeep);\n\t }\n\t }\n\t // Check for circular references and return its corresponding clone.\n\t stack || (stack = new Stack);\n\t var stacked = stack.get(value);\n\t if (stacked) {\n\t return stacked;\n\t }\n\t stack.set(value, result);\n\n\t if (!isArr) {\n\t var props = isFull ? getAllKeys(value) : keys(value);\n\t }\n\t arrayEach(props || value, function(subValue, key) {\n\t if (props) {\n\t key = subValue;\n\t subValue = value[key];\n\t }\n\t // Recursively populate clone (susceptible to call stack limits).\n\t assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n\t });\n\t return result;\n\t}\n\n\t/**\n\t * The base implementation of `_.create` without support for assigning\n\t * properties to the created object.\n\t *\n\t * @private\n\t * @param {Object} prototype The object to inherit from.\n\t * @returns {Object} Returns the new object.\n\t */\n\tfunction baseCreate(proto) {\n\t return isObject(proto) ? objectCreate(proto) : {};\n\t}\n\n\t/**\n\t * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n\t * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n\t * symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {Function} keysFunc The function to get the keys of `object`.\n\t * @param {Function} symbolsFunc The function to get the symbols of `object`.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n\t var result = keysFunc(object);\n\t return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n\t}\n\n\t/**\n\t * The base implementation of `getTag`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tfunction baseGetTag(value) {\n\t return objectToString.call(value);\n\t}\n\n\t/**\n\t * The base implementation of `_.isNative` without bad shim checks.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t * else `false`.\n\t */\n\tfunction baseIsNative(value) {\n\t if (!isObject(value) || isMasked(value)) {\n\t return false;\n\t }\n\t var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n\t return pattern.test(toSource(value));\n\t}\n\n\t/**\n\t * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t if (!isPrototype(object)) {\n\t return nativeKeys(object);\n\t }\n\t var result = [];\n\t for (var key in Object(object)) {\n\t if (hasOwnProperty.call(object, key) && key != 'constructor') {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `buffer`.\n\t *\n\t * @private\n\t * @param {Buffer} buffer The buffer to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Buffer} Returns the cloned buffer.\n\t */\n\tfunction cloneBuffer(buffer, isDeep) {\n\t if (isDeep) {\n\t return buffer.slice();\n\t }\n\t var result = new buffer.constructor(buffer.length);\n\t buffer.copy(result);\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `arrayBuffer`.\n\t *\n\t * @private\n\t * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n\t * @returns {ArrayBuffer} Returns the cloned array buffer.\n\t */\n\tfunction cloneArrayBuffer(arrayBuffer) {\n\t var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n\t new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `dataView`.\n\t *\n\t * @private\n\t * @param {Object} dataView The data view to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned data view.\n\t */\n\tfunction cloneDataView(dataView, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n\t return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n\t}\n\n\t/**\n\t * Creates a clone of `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned map.\n\t */\n\tfunction cloneMap(map, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n\t return arrayReduce(array, addMapEntry, new map.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of `regexp`.\n\t *\n\t * @private\n\t * @param {Object} regexp The regexp to clone.\n\t * @returns {Object} Returns the cloned regexp.\n\t */\n\tfunction cloneRegExp(regexp) {\n\t var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n\t result.lastIndex = regexp.lastIndex;\n\t return result;\n\t}\n\n\t/**\n\t * Creates a clone of `set`.\n\t *\n\t * @private\n\t * @param {Object} set The set to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned set.\n\t */\n\tfunction cloneSet(set, isDeep, cloneFunc) {\n\t var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n\t return arrayReduce(array, addSetEntry, new set.constructor);\n\t}\n\n\t/**\n\t * Creates a clone of the `symbol` object.\n\t *\n\t * @private\n\t * @param {Object} symbol The symbol object to clone.\n\t * @returns {Object} Returns the cloned symbol object.\n\t */\n\tfunction cloneSymbol(symbol) {\n\t return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n\t}\n\n\t/**\n\t * Creates a clone of `typedArray`.\n\t *\n\t * @private\n\t * @param {Object} typedArray The typed array to clone.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the cloned typed array.\n\t */\n\tfunction cloneTypedArray(typedArray, isDeep) {\n\t var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n\t return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n\t}\n\n\t/**\n\t * Copies the values of `source` to `array`.\n\t *\n\t * @private\n\t * @param {Array} source The array to copy values from.\n\t * @param {Array} [array=[]] The array to copy values to.\n\t * @returns {Array} Returns `array`.\n\t */\n\tfunction copyArray(source, array) {\n\t var index = -1,\n\t length = source.length;\n\n\t array || (array = Array(length));\n\t while (++index < length) {\n\t array[index] = source[index];\n\t }\n\t return array;\n\t}\n\n\t/**\n\t * Copies properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy properties from.\n\t * @param {Array} props The property identifiers to copy.\n\t * @param {Object} [object={}] The object to copy properties to.\n\t * @param {Function} [customizer] The function to customize copied values.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copyObject(source, props, object, customizer) {\n\t object || (object = {});\n\n\t var index = -1,\n\t length = props.length;\n\n\t while (++index < length) {\n\t var key = props[index];\n\n\t var newValue = customizer\n\t ? customizer(object[key], source[key], key, object, source)\n\t : undefined;\n\n\t assignValue(object, key, newValue === undefined ? source[key] : newValue);\n\t }\n\t return object;\n\t}\n\n\t/**\n\t * Copies own symbol properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy symbols from.\n\t * @param {Object} [object={}] The object to copy symbols to.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copySymbols(source, object) {\n\t return copyObject(source, getSymbols(source), object);\n\t}\n\n\t/**\n\t * Creates an array of own enumerable property names and symbols of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names and symbols.\n\t */\n\tfunction getAllKeys(object) {\n\t return baseGetAllKeys(object, keys, getSymbols);\n\t}\n\n\t/**\n\t * Gets the data for `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to query.\n\t * @param {string} key The reference key.\n\t * @returns {*} Returns the map data.\n\t */\n\tfunction getMapData(map, key) {\n\t var data = map.__data__;\n\t return isKeyable(key)\n\t ? data[typeof key == 'string' ? 'string' : 'hash']\n\t : data.map;\n\t}\n\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t var value = getValue(object, key);\n\t return baseIsNative(value) ? value : undefined;\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable symbol properties of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of symbols.\n\t */\n\tvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n\t/**\n\t * Gets the `toStringTag` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tvar getTag = baseGetTag;\n\n\t// Fallback for data views, maps, sets, and weak maps in IE 11,\n\t// for data views in Edge < 14, and promises in Node.js.\n\tif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n\t (Map && getTag(new Map) != mapTag) ||\n\t (Promise && getTag(Promise.resolve()) != promiseTag) ||\n\t (Set && getTag(new Set) != setTag) ||\n\t (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n\t getTag = function(value) {\n\t var result = objectToString.call(value),\n\t Ctor = result == objectTag ? value.constructor : undefined,\n\t ctorString = Ctor ? toSource(Ctor) : undefined;\n\n\t if (ctorString) {\n\t switch (ctorString) {\n\t case dataViewCtorString: return dataViewTag;\n\t case mapCtorString: return mapTag;\n\t case promiseCtorString: return promiseTag;\n\t case setCtorString: return setTag;\n\t case weakMapCtorString: return weakMapTag;\n\t }\n\t }\n\t return result;\n\t };\n\t}\n\n\t/**\n\t * Initializes an array clone.\n\t *\n\t * @private\n\t * @param {Array} array The array to clone.\n\t * @returns {Array} Returns the initialized clone.\n\t */\n\tfunction initCloneArray(array) {\n\t var length = array.length,\n\t result = array.constructor(length);\n\n\t // Add properties assigned by `RegExp#exec`.\n\t if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n\t result.index = array.index;\n\t result.input = array.input;\n\t }\n\t return result;\n\t}\n\n\t/**\n\t * Initializes an object clone.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneObject(object) {\n\t return (typeof object.constructor == 'function' && !isPrototype(object))\n\t ? baseCreate(getPrototype(object))\n\t : {};\n\t}\n\n\t/**\n\t * Initializes an object clone based on its `toStringTag`.\n\t *\n\t * **Note:** This function only supports cloning values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} object The object to clone.\n\t * @param {string} tag The `toStringTag` of the object to clone.\n\t * @param {Function} cloneFunc The function to clone values.\n\t * @param {boolean} [isDeep] Specify a deep clone.\n\t * @returns {Object} Returns the initialized clone.\n\t */\n\tfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n\t var Ctor = object.constructor;\n\t switch (tag) {\n\t case arrayBufferTag:\n\t return cloneArrayBuffer(object);\n\n\t case boolTag:\n\t case dateTag:\n\t return new Ctor(+object);\n\n\t case dataViewTag:\n\t return cloneDataView(object, isDeep);\n\n\t case float32Tag: case float64Tag:\n\t case int8Tag: case int16Tag: case int32Tag:\n\t case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n\t return cloneTypedArray(object, isDeep);\n\n\t case mapTag:\n\t return cloneMap(object, isDeep, cloneFunc);\n\n\t case numberTag:\n\t case stringTag:\n\t return new Ctor(object);\n\n\t case regexpTag:\n\t return cloneRegExp(object);\n\n\t case setTag:\n\t return cloneSet(object, isDeep, cloneFunc);\n\n\t case symbolTag:\n\t return cloneSymbol(object);\n\t }\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return !!length &&\n\t (typeof value == 'number' || reIsUint.test(value)) &&\n\t (value > -1 && value % 1 == 0 && value < length);\n\t}\n\n\t/**\n\t * Checks if `value` is suitable for use as unique object key.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n\t */\n\tfunction isKeyable(value) {\n\t var type = typeof value;\n\t return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n\t ? (value !== '__proto__')\n\t : (value === null);\n\t}\n\n\t/**\n\t * Checks if `func` has its source masked.\n\t *\n\t * @private\n\t * @param {Function} func The function to check.\n\t * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n\t */\n\tfunction isMasked(func) {\n\t return !!maskSrcKey && (maskSrcKey in func);\n\t}\n\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t var Ctor = value && value.constructor,\n\t proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n\t return value === proto;\n\t}\n\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to process.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t if (func != null) {\n\t try {\n\t return funcToString.call(func);\n\t } catch (e) {}\n\t try {\n\t return (func + '');\n\t } catch (e) {}\n\t }\n\t return '';\n\t}\n\n\t/**\n\t * This method is like `_.clone` except that it recursively clones `value`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 1.0.0\n\t * @category Lang\n\t * @param {*} value The value to recursively clone.\n\t * @returns {*} Returns the deep cloned value.\n\t * @see _.clone\n\t * @example\n\t *\n\t * var objects = [{ 'a': 1 }, { 'b': 2 }];\n\t *\n\t * var deep = _.cloneDeep(objects);\n\t * console.log(deep[0] === objects[0]);\n\t * // => false\n\t */\n\tfunction cloneDeep(value) {\n\t return baseClone(value, true, true);\n\t}\n\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t * var other = { 'a': 1 };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t return value === other || (value !== value && other !== other);\n\t}\n\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tfunction isArguments(value) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n\t (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n\t}\n\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t return value != null && isLength(value.length) && !isFunction(value);\n\t}\n\n\t/**\n\t * This method is like `_.isArrayLike` except that it also checks if `value`\n\t * is an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array-like object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArrayLikeObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject('abc');\n\t * // => false\n\t *\n\t * _.isArrayLikeObject(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLikeObject(value) {\n\t return isObjectLike(value) && isArrayLike(value);\n\t}\n\n\t/**\n\t * Checks if `value` is a buffer.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.3.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n\t * @example\n\t *\n\t * _.isBuffer(new Buffer(2));\n\t * // => true\n\t *\n\t * _.isBuffer(new Uint8Array(2));\n\t * // => false\n\t */\n\tvar isBuffer = nativeIsBuffer || stubFalse;\n\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 8-9 which returns 'object' for typed array and other constructors.\n\t var tag = isObject(value) ? objectToString.call(value) : '';\n\t return tag == funcTag || tag == genTag;\n\t}\n\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This method is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t return typeof value == 'number' &&\n\t value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n\t}\n\n\t/**\n\t * This method returns a new empty array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {Array} Returns the new empty array.\n\t * @example\n\t *\n\t * var arrays = _.times(2, _.stubArray);\n\t *\n\t * console.log(arrays);\n\t * // => [[], []]\n\t *\n\t * console.log(arrays[0] === arrays[1]);\n\t * // => false\n\t */\n\tfunction stubArray() {\n\t return [];\n\t}\n\n\t/**\n\t * This method returns `false`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.13.0\n\t * @category Util\n\t * @returns {boolean} Returns `false`.\n\t * @example\n\t *\n\t * _.times(2, _.stubFalse);\n\t * // => [false, false]\n\t */\n\tfunction stubFalse() {\n\t return false;\n\t}\n\n\tmodule.exports = cloneDeep;\n} (lodash_clonedeep, lodash_clonedeepExports));\n\nvar cloneDeep = lodash_clonedeepExports;\n\nfunction applyContextDelta(context, delta, logger) {\r\n try {\r\n if (logger === null || logger === void 0 ? void 0 : logger.canPublish(\"trace\")) {\r\n logger === null || logger === void 0 ? void 0 : logger.trace(\"applying context delta \".concat(JSON.stringify(delta), \" on context \").concat(JSON.stringify(context)));\r\n }\r\n if (!delta) {\r\n return context;\r\n }\r\n if (delta.reset) {\r\n context = __assign({}, delta.reset);\r\n return context;\r\n }\r\n context = deepClone(context, undefined);\r\n if (delta.commands) {\r\n for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) {\r\n var command = _a[_i];\r\n if (command.type === \"remove\") {\r\n deletePath(context, command.path);\r\n }\r\n else if (command.type === \"set\") {\r\n setValueToPath(context, command.value, command.path);\r\n }\r\n }\r\n return context;\r\n }\r\n var added_1 = delta.added;\r\n var updated_1 = delta.updated;\r\n var removed = delta.removed;\r\n if (added_1) {\r\n Object.keys(added_1).forEach(function (key) {\r\n context[key] = added_1[key];\r\n });\r\n }\r\n if (updated_1) {\r\n Object.keys(updated_1).forEach(function (key) {\r\n mergeObjectsProperties(key, context, updated_1);\r\n });\r\n }\r\n if (removed) {\r\n removed.forEach(function (key) {\r\n delete context[key];\r\n });\r\n }\r\n return context;\r\n }\r\n catch (e) {\r\n logger === null || logger === void 0 ? void 0 : logger.error(\"error applying context delta \".concat(JSON.stringify(delta), \" on context \").concat(JSON.stringify(context)), e);\r\n return context;\r\n }\r\n}\r\nfunction deepClone(obj, hash) {\r\n return cloneDeep(obj);\r\n}\r\nvar mergeObjectsProperties = function (key, what, withWhat) {\r\n var right = withWhat[key];\r\n if (right === undefined) {\r\n return what;\r\n }\r\n var left = what[key];\r\n if (!left || !right) {\r\n what[key] = right;\r\n return what;\r\n }\r\n if (typeof left === \"string\" ||\r\n typeof left === \"number\" ||\r\n typeof left === \"boolean\" ||\r\n typeof right === \"string\" ||\r\n typeof right === \"number\" ||\r\n typeof right === \"boolean\" ||\r\n Array.isArray(left) ||\r\n Array.isArray(right)) {\r\n what[key] = right;\r\n return what;\r\n }\r\n what[key] = Object.assign({}, left, right);\r\n return what;\r\n};\r\nfunction deepEqual(x, y) {\r\n if (x === y) {\r\n return true;\r\n }\r\n if (!(x instanceof Object) || !(y instanceof Object)) {\r\n return false;\r\n }\r\n if (x.constructor !== y.constructor) {\r\n return false;\r\n }\r\n for (var p in x) {\r\n if (!x.hasOwnProperty(p)) {\r\n continue;\r\n }\r\n if (!y.hasOwnProperty(p)) {\r\n return false;\r\n }\r\n if (x[p] === y[p]) {\r\n continue;\r\n }\r\n if (typeof (x[p]) !== \"object\") {\r\n return false;\r\n }\r\n if (!deepEqual(x[p], y[p])) {\r\n return false;\r\n }\r\n }\r\n for (var p in y) {\r\n if (y.hasOwnProperty(p) && !x.hasOwnProperty(p)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction setValueToPath(obj, value, path) {\r\n var pathArr = path.split(\".\");\r\n var i;\r\n for (i = 0; i < pathArr.length - 1; i++) {\r\n if (!obj[pathArr[i]]) {\r\n obj[pathArr[i]] = {};\r\n }\r\n if (typeof obj[pathArr[i]] !== \"object\") {\r\n obj[pathArr[i]] = {};\r\n }\r\n obj = obj[pathArr[i]];\r\n }\r\n obj[pathArr[i]] = value;\r\n}\r\nfunction isSubset(superObj, subObj) {\r\n return Object.keys(subObj).every(function (ele) {\r\n if (typeof subObj[ele] === \"object\") {\r\n return isSubset((superObj === null || superObj === void 0 ? void 0 : superObj[ele]) || {}, subObj[ele] || {});\r\n }\r\n return subObj[ele] === (superObj === null || superObj === void 0 ? void 0 : superObj[ele]);\r\n });\r\n}\r\nfunction deletePath(obj, path) {\r\n var pathArr = path.split(\".\");\r\n var i;\r\n for (i = 0; i < pathArr.length - 1; i++) {\r\n if (!obj[pathArr[i]]) {\r\n return;\r\n }\r\n obj = obj[pathArr[i]];\r\n }\r\n delete obj[pathArr[i]];\r\n}\n\nvar GW3Bridge = (function () {\r\n function GW3Bridge(config) {\r\n var _this = this;\r\n var _a;\r\n this._contextNameToData = {};\r\n this._gw3Subscriptions = [];\r\n this._nextCallbackSubscriptionNumber = 0;\r\n this._creationPromises = {};\r\n this._contextNameToId = {};\r\n this._contextIdToName = {};\r\n this._protocolVersion = undefined;\r\n this._contextsTempCache = {};\r\n this._contextsSubscriptionsCache = [];\r\n this._connection = config.connection;\r\n this._logger = config.logger;\r\n this._trackAllContexts = config.trackAllContexts;\r\n this._reAnnounceKnownContexts = config.reAnnounceKnownContexts;\r\n this._gw3Session = this._connection.domain(\"global\", [\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n ]);\r\n this._gw3Session.disconnected(this.resetState.bind(this));\r\n this._gw3Session.onJoined(function (wasReconnect) {\r\n if (!wasReconnect) {\r\n return;\r\n }\r\n if (!_this._reAnnounceKnownContexts) {\r\n return _this._connection.setLibReAnnounced({ name: \"contexts\" });\r\n }\r\n _this.reInitiateState().then(function () { return _this._connection.setLibReAnnounced({ name: \"contexts\" }); });\r\n });\r\n this.subscribeToContextCreatedMessages();\r\n this.subscribeToContextUpdatedMessages();\r\n this.subscribeToContextDestroyedMessages();\r\n (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) {\r\n var type = message.type;\r\n if (!type) {\r\n return;\r\n }\r\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\r\n type === GW_MESSAGE_CONTEXT_ADDED ||\r\n type === GW_MESSAGE_ACTIVITY_CREATED) {\r\n _this.handleContextCreatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\r\n type === GW_MESSAGE_CONTEXT_UPDATED ||\r\n type === GW_MESSAGE_JOINED_ACTIVITY) {\r\n _this.handleContextUpdatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\r\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n _this.handleContextDestroyedMessage(message);\r\n }\r\n });\r\n }\r\n Object.defineProperty(GW3Bridge.prototype, \"protocolVersion\", {\r\n get: function () {\r\n var _a;\r\n if (!this._protocolVersion) {\r\n var contextsDomainInfo = this._connection.availableDomains.find(function (d) { return d.uri === \"context\"; });\r\n this._protocolVersion = (_a = contextsDomainInfo === null || contextsDomainInfo === void 0 ? void 0 : contextsDomainInfo.version) !== null && _a !== void 0 ? _a : 1;\r\n }\r\n return this._protocolVersion;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(GW3Bridge.prototype, \"setPathSupported\", {\r\n get: function () {\r\n return this.protocolVersion >= 2;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n GW3Bridge.prototype.dispose = function () {\r\n for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) {\r\n var sub = _a[_i];\r\n this._connection.off(sub);\r\n }\r\n this._gw3Subscriptions.length = 0;\r\n for (var contextName in this._contextNameToData) {\r\n if (this._contextNameToId.hasOwnProperty(contextName)) {\r\n delete this._contextNameToData[contextName];\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.createContext = function (name, data) {\r\n var _this = this;\r\n if (name in this._creationPromises) {\r\n return this._creationPromises[name];\r\n }\r\n this._creationPromises[name] =\r\n this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_CREATE_CONTEXT,\r\n domain: \"global\",\r\n name: name,\r\n data: data,\r\n lifetime: \"retained\",\r\n })\r\n .then(function (createContextMsg) {\r\n _this._contextNameToId[name] = createContextMsg.context_id;\r\n _this._contextIdToName[createContextMsg.context_id] = name;\r\n var contextData = _this._contextNameToData[name] || new GW3ContextData(createContextMsg.context_id, name, true, undefined);\r\n contextData.isAnnounced = true;\r\n contextData.name = name;\r\n contextData.contextId = createContextMsg.context_id;\r\n contextData.context = createContextMsg.data || deepClone(data);\r\n contextData.hasReceivedSnapshot = true;\r\n _this._contextNameToData[name] = contextData;\r\n delete _this._creationPromises[name];\r\n return createContextMsg.context_id;\r\n });\r\n return this._creationPromises[name];\r\n };\r\n GW3Bridge.prototype.all = function () {\r\n var _this = this;\r\n return Object.keys(this._contextNameToData)\r\n .filter(function (name) { return _this._contextNameToData[name].isAnnounced; });\r\n };\r\n GW3Bridge.prototype.update = function (name, delta) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, currentContext, calculatedDelta;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (delta) {\r\n delta = deepClone(delta);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, this.createContext(name, delta)];\r\n }\r\n currentContext = contextData.context;\r\n if (!!contextData.hasCallbacks()) return [3, 4];\r\n return [4, this.get(contextData.name)];\r\n case 3:\r\n currentContext = _b.sent();\r\n _b.label = 4;\r\n case 4:\r\n calculatedDelta = this.setPathSupported ?\r\n this.calculateContextDeltaV2(currentContext, delta) :\r\n this.calculateContextDeltaV1(currentContext, delta);\r\n if (!Object.keys(calculatedDelta.added).length\r\n && !Object.keys(calculatedDelta.updated).length\r\n && !calculatedDelta.removed.length\r\n && !((_a = calculatedDelta.commands) === null || _a === void 0 ? void 0 : _a.length)) {\r\n return [2, Promise.resolve()];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: calculatedDelta,\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, calculatedDelta, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.set = function (name, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (data) {\r\n data = deepClone(data);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, this.createContext(name, data)];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: { reset: data },\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, {\r\n reset: data,\r\n added: {},\r\n removed: [],\r\n updated: {}\r\n }, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.setPath = function (name, path, value) {\r\n if (!this.setPathSupported) {\r\n return Promise.reject(\"glue.contexts.setPath operation is not supported, use Glue42 3.10 or later\");\r\n }\r\n return this.setPaths(name, [{ path: path, value: value }]);\r\n };\r\n GW3Bridge.prototype.setPaths = function (name, pathValues) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, obj, _i, pathValues_1, pathValue, commands, _a, pathValues_2, pathValue;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!this.setPathSupported) {\r\n return [2, Promise.reject(\"glue.contexts.setPaths operation is not supported, use Glue42 3.10 or later\")];\r\n }\r\n if (pathValues) {\r\n pathValues = deepClone(pathValues);\r\n }\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n obj = {};\r\n for (_i = 0, pathValues_1 = pathValues; _i < pathValues_1.length; _i++) {\r\n pathValue = pathValues_1[_i];\r\n setValueToPath(obj, pathValue.value, pathValue.path);\r\n }\r\n return [2, this.createContext(name, obj)];\r\n }\r\n commands = [];\r\n for (_a = 0, pathValues_2 = pathValues; _a < pathValues_2.length; _a++) {\r\n pathValue = pathValues_2[_a];\r\n if (pathValue.value === null) {\r\n commands.push({ type: \"remove\", path: pathValue.path });\r\n }\r\n else {\r\n commands.push({ type: \"set\", path: pathValue.path, value: pathValue.value });\r\n }\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UPDATE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n delta: { commands: commands }\r\n }, {}, { skipPeerId: false })\r\n .then(function (gwResponse) {\r\n _this.handleUpdated(contextData, {\r\n added: {},\r\n removed: [],\r\n updated: {},\r\n commands: commands\r\n }, {\r\n updaterId: gwResponse.peer_id\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.get = function (name) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData, context;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _b.sent();\r\n _b.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n return [2, Promise.resolve({})];\r\n }\r\n if (contextData && (!contextData.hasCallbacks() || !contextData.hasReceivedSnapshot)) {\r\n return [2, new Promise(function (resolve) {\r\n _this.subscribe(name, function (data, _d, _r, un) {\r\n _this.unsubscribe(un);\r\n resolve(data);\r\n });\r\n })];\r\n }\r\n context = (_a = contextData === null || contextData === void 0 ? void 0 : contextData.context) !== null && _a !== void 0 ? _a : {};\r\n return [2, Promise.resolve(deepClone(context))];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.subscribe = function (name, callback, subscriptionKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var thisCallbackSubscriptionNumber, contextData, hadCallbacks, clone, clone, clone;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n thisCallbackSubscriptionNumber = typeof subscriptionKey === \"undefined\" ? this._nextCallbackSubscriptionNumber : subscriptionKey;\r\n if (typeof subscriptionKey === \"undefined\") {\r\n this._nextCallbackSubscriptionNumber += 1;\r\n }\r\n if (this._contextsSubscriptionsCache.every(function (subscription) { return subscription.subKey !== _this._nextCallbackSubscriptionNumber; })) {\r\n this._contextsSubscriptionsCache.push({ contextName: name, subKey: thisCallbackSubscriptionNumber, callback: callback });\r\n }\r\n contextData = this._contextNameToData[name];\r\n if (!contextData ||\r\n !contextData.isAnnounced) {\r\n contextData = contextData || new GW3ContextData(undefined, name, false, undefined);\r\n this._contextNameToData[name] = contextData;\r\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n hadCallbacks = contextData.hasCallbacks();\r\n contextData.updateCallbacks[thisCallbackSubscriptionNumber] = callback;\r\n if (!hadCallbacks) {\r\n if (!contextData.joinedActivity) {\r\n if (contextData.context && contextData.sentExplicitSubscription) {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n return [2, this.sendSubscribe(contextData)\r\n .then(function () { return thisCallbackSubscriptionNumber; })];\r\n }\r\n else {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n }\r\n else {\r\n if (contextData.hasReceivedSnapshot) {\r\n clone = deepClone(contextData.context);\r\n callback(clone, clone, [], thisCallbackSubscriptionNumber);\r\n }\r\n return [2, Promise.resolve(thisCallbackSubscriptionNumber)];\r\n }\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.unsubscribe = function (subscriptionKey) {\r\n this._contextsSubscriptionsCache = this._contextsSubscriptionsCache.filter(function (subscription) { return subscription.subKey !== subscriptionKey; });\r\n for (var _i = 0, _a = Object.keys(this._contextNameToData); _i < _a.length; _i++) {\r\n var name_1 = _a[_i];\r\n var contextData = this._contextNameToData[name_1];\r\n if (!contextData) {\r\n return;\r\n }\r\n var hadCallbacks = contextData.hasCallbacks();\r\n delete contextData.updateCallbacks[subscriptionKey];\r\n if (contextData.isAnnounced &&\r\n hadCallbacks &&\r\n !contextData.hasCallbacks() &&\r\n contextData.sentExplicitSubscription) {\r\n this.sendUnsubscribe(contextData);\r\n }\r\n if (!contextData.isAnnounced &&\r\n !contextData.hasCallbacks()) {\r\n delete this._contextNameToData[name_1];\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.destroy = function (name) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var contextData;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!(name in this._creationPromises)) return [3, 2];\r\n return [4, this._creationPromises[name]];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n contextData = this._contextNameToData[name];\r\n if (!contextData) {\r\n return [2, Promise.reject(\"context with \".concat(name, \" does not exist\"))];\r\n }\r\n return [2, this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_DESTROY_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; })];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.handleUpdated = function (contextData, delta, extraData) {\r\n var oldContext = contextData.context;\r\n contextData.context = applyContextDelta(contextData.context, delta, this._logger);\r\n contextData.hasReceivedSnapshot = true;\r\n if (this._contextNameToData[contextData.name] === contextData &&\r\n !deepEqual(oldContext, contextData.context)) {\r\n this.invokeUpdateCallbacks(contextData, delta, extraData);\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextCreatedMessages = function () {\r\n var createdMessageTypes = [\r\n GW_MESSAGE_CONTEXT_ADDED,\r\n GW_MESSAGE_CONTEXT_CREATED,\r\n GW_MESSAGE_ACTIVITY_CREATED,\r\n ];\r\n for (var _i = 0, createdMessageTypes_1 = createdMessageTypes; _i < createdMessageTypes_1.length; _i++) {\r\n var createdMessageType = createdMessageTypes_1[_i];\r\n var sub = this._connection.on(createdMessageType, this.handleContextCreatedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextCreatedMessage = function (contextCreatedMsg) {\r\n var _this = this;\r\n var createdMessageType = contextCreatedMsg.type;\r\n if (createdMessageType === GW_MESSAGE_ACTIVITY_CREATED) {\r\n this._contextNameToId[contextCreatedMsg.activity_id] = contextCreatedMsg.context_id;\r\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.activity_id;\r\n }\r\n else if (createdMessageType === GW_MESSAGE_CONTEXT_ADDED) {\r\n this._contextNameToId[contextCreatedMsg.name] = contextCreatedMsg.context_id;\r\n this._contextIdToName[contextCreatedMsg.context_id] = contextCreatedMsg.name;\r\n }\r\n else ;\r\n var name = this._contextIdToName[contextCreatedMsg.context_id];\r\n if (!name) {\r\n throw new Error(\"Received created event for context with unknown name: \" + contextCreatedMsg.context_id);\r\n }\r\n if (!this._contextNameToId[name]) {\r\n throw new Error(\"Received created event for context with unknown id: \" + contextCreatedMsg.context_id);\r\n }\r\n var contextData = this._contextNameToData[name];\r\n if (contextData) {\r\n if (contextData.isAnnounced) {\r\n return;\r\n }\r\n else {\r\n if (!contextData.hasCallbacks()) {\r\n throw new Error(\"Assertion failure: contextData.hasCallbacks()\");\r\n }\r\n contextData.isAnnounced = true;\r\n contextData.contextId = contextCreatedMsg.context_id;\r\n contextData.activityId = contextCreatedMsg.activity_id;\r\n if (!contextData.sentExplicitSubscription) {\r\n this.sendSubscribe(contextData);\r\n }\r\n }\r\n }\r\n else {\r\n this._contextNameToData[name] = contextData =\r\n new GW3ContextData(contextCreatedMsg.context_id, name, true, contextCreatedMsg.activity_id);\r\n if (this._trackAllContexts) {\r\n this.subscribe(name, function () { }).then(function (subKey) { return _this._systemContextsSubKey = subKey; });\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextUpdatedMessages = function () {\r\n var updatedMessageTypes = [\r\n GW_MESSAGE_CONTEXT_UPDATED,\r\n GW_MESSAGE_SUBSCRIBED_CONTEXT,\r\n GW_MESSAGE_JOINED_ACTIVITY,\r\n ];\r\n for (var _i = 0, updatedMessageTypes_1 = updatedMessageTypes; _i < updatedMessageTypes_1.length; _i++) {\r\n var updatedMessageType = updatedMessageTypes_1[_i];\r\n var sub = this._connection.on(updatedMessageType, this.handleContextUpdatedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextUpdatedMessage = function (contextUpdatedMsg) {\r\n var updatedMessageType = contextUpdatedMsg.type;\r\n var contextId = contextUpdatedMsg.context_id;\r\n var contextData = this._contextNameToData[this._contextIdToName[contextId]];\r\n var justSeen = !contextData || !contextData.isAnnounced;\r\n if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\r\n if (!contextData) {\r\n contextData =\r\n this._contextNameToData[contextUpdatedMsg.activity_id] ||\r\n new GW3ContextData(contextId, contextUpdatedMsg.activity_id, true, contextUpdatedMsg.activity_id);\r\n }\r\n this._contextNameToData[contextUpdatedMsg.activity_id] = contextData;\r\n this._contextIdToName[contextId] = contextUpdatedMsg.activity_id;\r\n this._contextNameToId[contextUpdatedMsg.activity_id] = contextId;\r\n contextData.contextId = contextId;\r\n contextData.isAnnounced = true;\r\n contextData.activityId = contextUpdatedMsg.activity_id;\r\n contextData.joinedActivity = true;\r\n }\r\n else {\r\n if (!contextData || !contextData.isAnnounced) {\r\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n contextData = contextData || new GW3ContextData(contextId, contextUpdatedMsg.name, true, undefined);\r\n contextData.sentExplicitSubscription = true;\r\n this._contextNameToData[contextUpdatedMsg.name] = contextData;\r\n this._contextIdToName[contextId] = contextUpdatedMsg.name;\r\n this._contextNameToId[contextUpdatedMsg.name] = contextId;\r\n }\r\n else {\r\n this._logger.error(\"Received 'update' for unknown context: \".concat(contextId));\r\n }\r\n return;\r\n }\r\n }\r\n var oldContext = contextData.context;\r\n contextData.hasReceivedSnapshot = true;\r\n if (updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n contextData.context = contextUpdatedMsg.data || {};\r\n }\r\n else if (updatedMessageType === GW_MESSAGE_JOINED_ACTIVITY) {\r\n contextData.context = contextUpdatedMsg.context_snapshot || {};\r\n }\r\n else if (updatedMessageType === GW_MESSAGE_CONTEXT_UPDATED) {\r\n contextData.context = applyContextDelta(contextData.context, contextUpdatedMsg.delta, this._logger);\r\n }\r\n else {\r\n throw new Error(\"Unrecognized context update message \" + updatedMessageType);\r\n }\r\n if (justSeen ||\r\n !deepEqual(contextData.context, oldContext) ||\r\n updatedMessageType === GW_MESSAGE_SUBSCRIBED_CONTEXT) {\r\n this.invokeUpdateCallbacks(contextData, contextUpdatedMsg.delta, { updaterId: contextUpdatedMsg.updater_id });\r\n }\r\n };\r\n GW3Bridge.prototype.invokeUpdateCallbacks = function (contextData, delta, extraData) {\r\n delta = delta || { added: {}, updated: {}, reset: {}, removed: [] };\r\n if (delta.commands) {\r\n delta.added = delta.updated = delta.reset = {};\r\n delta.removed = [];\r\n for (var _i = 0, _a = delta.commands; _i < _a.length; _i++) {\r\n var command = _a[_i];\r\n if (command.type === \"remove\") {\r\n if (command.path.indexOf(\".\") === -1) {\r\n delta.removed.push(command.path);\r\n }\r\n setValueToPath(delta.updated, null, command.path);\r\n }\r\n else if (command.type === \"set\") {\r\n setValueToPath(delta.updated, command.value, command.path);\r\n }\r\n }\r\n }\r\n for (var updateCallbackIndex in contextData.updateCallbacks) {\r\n if (contextData.updateCallbacks.hasOwnProperty(updateCallbackIndex)) {\r\n try {\r\n var updateCallback = contextData.updateCallbacks[updateCallbackIndex];\r\n updateCallback(deepClone(contextData.context), deepClone(Object.assign({}, delta.added || {}, delta.updated || {}, delta.reset || {})), delta.removed, parseInt(updateCallbackIndex, 10), extraData);\r\n }\r\n catch (err) {\r\n this._logger.debug(\"callback error: \" + JSON.stringify(err));\r\n }\r\n }\r\n }\r\n };\r\n GW3Bridge.prototype.subscribeToContextDestroyedMessages = function () {\r\n var destroyedMessageTypes = [\r\n GW_MESSAGE_CONTEXT_DESTROYED,\r\n GW_MESSAGE_ACTIVITY_DESTROYED,\r\n ];\r\n for (var _i = 0, destroyedMessageTypes_1 = destroyedMessageTypes; _i < destroyedMessageTypes_1.length; _i++) {\r\n var destroyedMessageType = destroyedMessageTypes_1[_i];\r\n var sub = this._connection.on(destroyedMessageType, this.handleContextDestroyedMessage.bind(this));\r\n this._gw3Subscriptions.push(sub);\r\n }\r\n };\r\n GW3Bridge.prototype.handleContextDestroyedMessage = function (destroyedMsg) {\r\n var destroyedMessageType = destroyedMsg.type;\r\n var contextId;\r\n var name;\r\n if (destroyedMessageType === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n name = destroyedMsg.activity_id;\r\n contextId = this._contextNameToId[name];\r\n if (!contextId) {\r\n this._logger.error(\"Received 'destroyed' for unknown activity: \".concat(destroyedMsg.activity_id));\r\n return;\r\n }\r\n }\r\n else {\r\n contextId = destroyedMsg.context_id;\r\n name = this._contextIdToName[contextId];\r\n if (!name) {\r\n this._logger.error(\"Received 'destroyed' for unknown context: \".concat(destroyedMsg.context_id));\r\n return;\r\n }\r\n }\r\n delete this._contextIdToName[contextId];\r\n delete this._contextNameToId[name];\r\n var contextData = this._contextNameToData[name];\r\n delete this._contextNameToData[name];\r\n if (!contextData || !contextData.isAnnounced) {\r\n this._logger.error(\"Received 'destroyed' for unknown context: \".concat(contextId));\r\n return;\r\n }\r\n };\r\n GW3Bridge.prototype.sendSubscribe = function (contextData) {\r\n contextData.sentExplicitSubscription = true;\r\n return this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_SUBSCRIBE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; });\r\n };\r\n GW3Bridge.prototype.sendUnsubscribe = function (contextData) {\r\n contextData.sentExplicitSubscription = false;\r\n return this._gw3Session\r\n .send({\r\n type: GW_MESSAGE_UNSUBSCRIBE_CONTEXT,\r\n domain: \"global\",\r\n context_id: contextData.contextId,\r\n }).then(function (_) { return undefined; });\r\n };\r\n GW3Bridge.prototype.calculateContextDeltaV1 = function (from, to) {\r\n var delta = { added: {}, updated: {}, removed: [], reset: undefined };\r\n if (from) {\r\n for (var _i = 0, _a = Object.keys(from); _i < _a.length; _i++) {\r\n var x = _a[_i];\r\n if (Object.keys(to).indexOf(x) !== -1\r\n && to[x] !== null\r\n && !deepEqual(from[x], to[x])) {\r\n delta.updated[x] = to[x];\r\n }\r\n }\r\n }\r\n for (var _b = 0, _c = Object.keys(to); _b < _c.length; _b++) {\r\n var x = _c[_b];\r\n if (!from || (Object.keys(from).indexOf(x) === -1)) {\r\n if (to[x] !== null) {\r\n delta.added[x] = to[x];\r\n }\r\n }\r\n else if (to[x] === null) {\r\n delta.removed.push(x);\r\n }\r\n }\r\n return delta;\r\n };\r\n GW3Bridge.prototype.calculateContextDeltaV2 = function (from, to) {\r\n var _a, _b;\r\n var delta = { added: {}, updated: {}, removed: [], reset: undefined, commands: [] };\r\n for (var _i = 0, _c = Object.keys(to); _i < _c.length; _i++) {\r\n var x = _c[_i];\r\n if (to[x] !== null) {\r\n var fromX = from ? from[x] : null;\r\n if (!deepEqual(fromX, to[x])) {\r\n (_a = delta.commands) === null || _a === void 0 ? void 0 : _a.push({ type: \"set\", path: x, value: to[x] });\r\n }\r\n }\r\n else {\r\n (_b = delta.commands) === null || _b === void 0 ? void 0 : _b.push({ type: \"remove\", path: x });\r\n }\r\n }\r\n return delta;\r\n };\r\n GW3Bridge.prototype.resetState = function () {\r\n var _this = this;\r\n for (var _i = 0, _a = this._gw3Subscriptions; _i < _a.length; _i++) {\r\n var sub = _a[_i];\r\n this._connection.off(sub);\r\n }\r\n if (this._systemContextsSubKey) {\r\n this.unsubscribe(this._systemContextsSubKey);\r\n delete this._systemContextsSubKey;\r\n }\r\n this._gw3Subscriptions = [];\r\n this._contextNameToId = {};\r\n this._contextIdToName = {};\r\n delete this._protocolVersion;\r\n this._contextsTempCache = Object.keys(this._contextNameToData).reduce(function (cacheSoFar, ctxName) {\r\n cacheSoFar[ctxName] = _this._contextNameToData[ctxName].context;\r\n return cacheSoFar;\r\n }, {});\r\n this._contextNameToData = {};\r\n };\r\n GW3Bridge.prototype.reInitiateState = function () {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _b, _c, _e, _i, ctxName, lastKnownData;\r\n var _this = this;\r\n return __generator(this, function (_f) {\r\n switch (_f.label) {\r\n case 0:\r\n this.subscribeToContextCreatedMessages();\r\n this.subscribeToContextUpdatedMessages();\r\n this.subscribeToContextDestroyedMessages();\r\n (_a = this._connection.replayer) === null || _a === void 0 ? void 0 : _a.drain(ContextMessageReplaySpec.name, function (message) {\r\n var type = message.type;\r\n if (!type) {\r\n return;\r\n }\r\n if (type === GW_MESSAGE_CONTEXT_CREATED ||\r\n type === GW_MESSAGE_CONTEXT_ADDED ||\r\n type === GW_MESSAGE_ACTIVITY_CREATED) {\r\n _this.handleContextCreatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_SUBSCRIBED_CONTEXT ||\r\n type === GW_MESSAGE_CONTEXT_UPDATED ||\r\n type === GW_MESSAGE_JOINED_ACTIVITY) {\r\n _this.handleContextUpdatedMessage(message);\r\n }\r\n else if (type === GW_MESSAGE_CONTEXT_DESTROYED ||\r\n type === GW_MESSAGE_ACTIVITY_DESTROYED) {\r\n _this.handleContextDestroyedMessage(message);\r\n }\r\n });\r\n return [4, Promise.all(this._contextsSubscriptionsCache.map(function (subscription) { return _this.subscribe(subscription.contextName, subscription.callback, subscription.subKey); }))];\r\n case 1:\r\n _f.sent();\r\n return [4, this.flushQueue()];\r\n case 2:\r\n _f.sent();\r\n _b = this._contextsTempCache;\r\n _c = [];\r\n for (_e in _b)\r\n _c.push(_e);\r\n _i = 0;\r\n _f.label = 3;\r\n case 3:\r\n if (!(_i < _c.length)) return [3, 7];\r\n _e = _c[_i];\r\n if (!(_e in _b)) return [3, 6];\r\n ctxName = _e;\r\n if (typeof this._contextsTempCache[ctxName] !== \"object\" || Object.keys(this._contextsTempCache[ctxName]).length === 0) {\r\n return [3, 6];\r\n }\r\n lastKnownData = this._contextsTempCache[ctxName];\r\n this._logger.info(\"Re-announcing known context: \".concat(ctxName));\r\n return [4, this.flushQueue()];\r\n case 4:\r\n _f.sent();\r\n return [4, this.update(ctxName, lastKnownData)];\r\n case 5:\r\n _f.sent();\r\n _f.label = 6;\r\n case 6:\r\n _i++;\r\n return [3, 3];\r\n case 7:\r\n this._contextsTempCache = {};\r\n this._logger.info(\"Contexts are re-announced\");\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n GW3Bridge.prototype.flushQueue = function () {\r\n return new Promise(function (resolve) { return setTimeout(function () { return resolve(); }, 0); });\r\n };\r\n return GW3Bridge;\r\n}());\n\nvar ContextsModule = (function () {\r\n function ContextsModule(config) {\r\n this._bridge = new GW3Bridge(config);\r\n }\r\n ContextsModule.prototype.all = function () {\r\n return this._bridge.all();\r\n };\r\n ContextsModule.prototype.update = function (name, data) {\r\n this.checkName(name);\r\n this.checkData(data);\r\n return this._bridge.update(name, data);\r\n };\r\n ContextsModule.prototype.set = function (name, data) {\r\n this.checkName(name);\r\n this.checkData(data);\r\n return this._bridge.set(name, data);\r\n };\r\n ContextsModule.prototype.setPath = function (name, path, data) {\r\n this.checkName(name);\r\n this.checkPath(path);\r\n var isTopLevelPath = path === \"\";\r\n if (isTopLevelPath) {\r\n this.checkData(data);\r\n return this.set(name, data);\r\n }\r\n return this._bridge.setPath(name, path, data);\r\n };\r\n ContextsModule.prototype.setPaths = function (name, paths) {\r\n this.checkName(name);\r\n if (!Array.isArray(paths)) {\r\n throw new Error(\"Please provide the paths as an array of PathValues!\");\r\n }\r\n for (var _i = 0, paths_1 = paths; _i < paths_1.length; _i++) {\r\n var _a = paths_1[_i], path = _a.path, value = _a.value;\r\n this.checkPath(path);\r\n var isTopLevelPath = path === \"\";\r\n if (isTopLevelPath) {\r\n this.checkData(value);\r\n }\r\n }\r\n return this._bridge.setPaths(name, paths);\r\n };\r\n ContextsModule.prototype.subscribe = function (name, callback) {\r\n var _this = this;\r\n this.checkName(name);\r\n if (typeof callback !== \"function\") {\r\n throw new Error(\"Please provide the callback as a function!\");\r\n }\r\n return this._bridge\r\n .subscribe(name, function (data, delta, removed, key, extraData) { return callback(data, delta, removed, function () { return _this._bridge.unsubscribe(key); }, extraData); })\r\n .then(function (key) {\r\n return function () {\r\n _this._bridge.unsubscribe(key);\r\n };\r\n });\r\n };\r\n ContextsModule.prototype.get = function (name) {\r\n this.checkName(name);\r\n return this._bridge.get(name);\r\n };\r\n ContextsModule.prototype.ready = function () {\r\n return Promise.resolve(this);\r\n };\r\n ContextsModule.prototype.destroy = function (name) {\r\n this.checkName(name);\r\n return this._bridge.destroy(name);\r\n };\r\n Object.defineProperty(ContextsModule.prototype, \"setPathSupported\", {\r\n get: function () {\r\n return this._bridge.setPathSupported;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ContextsModule.prototype.checkName = function (name) {\r\n if (typeof name !== \"string\" || name === \"\") {\r\n throw new Error(\"Please provide the name as a non-empty string!\");\r\n }\r\n };\r\n ContextsModule.prototype.checkPath = function (path) {\r\n if (typeof path !== \"string\") {\r\n throw new Error(\"Please provide the path as a dot delimited string!\");\r\n }\r\n };\r\n ContextsModule.prototype.checkData = function (data) {\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Please provide the data as an object!\");\r\n }\r\n };\r\n return ContextsModule;\r\n}());\n\nfunction promisify (promise, successCallback, errorCallback) {\r\n if (typeof successCallback !== \"function\" && typeof errorCallback !== \"function\") {\r\n return promise;\r\n }\r\n if (typeof successCallback !== \"function\") {\r\n successCallback = function () { };\r\n }\r\n else if (typeof errorCallback !== \"function\") {\r\n errorCallback = function () { };\r\n }\r\n return promise.then(successCallback, errorCallback);\r\n}\n\nfunction rejectAfter(ms, promise, error) {\r\n if (ms === void 0) { ms = 0; }\r\n var timeout;\r\n var clearTimeoutIfThere = function () {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n }\r\n };\r\n promise\r\n .then(function () {\r\n clearTimeoutIfThere();\r\n })\r\n .catch(function () {\r\n clearTimeoutIfThere();\r\n });\r\n return new Promise(function (resolve, reject) {\r\n timeout = setTimeout(function () { return reject(error); }, ms);\r\n });\r\n}\n\nvar InvokeStatus;\r\n(function (InvokeStatus) {\r\n InvokeStatus[InvokeStatus[\"Success\"] = 0] = \"Success\";\r\n InvokeStatus[InvokeStatus[\"Error\"] = 1] = \"Error\";\r\n})(InvokeStatus || (InvokeStatus = {}));\r\nvar Client = (function () {\r\n function Client(protocol, repo, instance, configuration) {\r\n this.protocol = protocol;\r\n this.repo = repo;\r\n this.instance = instance;\r\n this.configuration = configuration;\r\n }\r\n Client.prototype.subscribe = function (method, options, successCallback, errorCallback, existingSub) {\r\n var _this = this;\r\n var callProtocolSubscribe = function (targetServers, stream, successProxy, errorProxy) {\r\n var _a;\r\n options.methodResponseTimeout = (_a = options.methodResponseTimeout) !== null && _a !== void 0 ? _a : options.waitTimeoutMs;\r\n _this.protocol.client.subscribe(stream, options, targetServers, successProxy, errorProxy, existingSub);\r\n };\r\n var promise = new Promise(function (resolve, reject) {\r\n var successProxy = function (sub) {\r\n resolve(sub);\r\n };\r\n var errorProxy = function (err) {\r\n reject(err);\r\n };\r\n if (!method) {\r\n reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\");\r\n return;\r\n }\r\n var methodDef;\r\n if (typeof method === \"string\") {\r\n methodDef = { name: method };\r\n }\r\n else {\r\n methodDef = method;\r\n }\r\n if (!methodDef.name) {\r\n reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\");\r\n return;\r\n }\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n var target = options.target;\r\n if (target === undefined) {\r\n target = \"best\";\r\n }\r\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\") {\r\n reject(new Error(\"\\\"\".concat(target, \"\\\" is not a valid target. Valid targets are \\\"all\\\", \\\"best\\\", or an instance.\")));\r\n return;\r\n }\r\n if (options.methodResponseTimeout === undefined) {\r\n options.methodResponseTimeout = options.method_response_timeout;\r\n if (options.methodResponseTimeout === undefined) {\r\n options.methodResponseTimeout = _this.configuration.methodResponseTimeout;\r\n }\r\n }\r\n if (options.waitTimeoutMs === undefined) {\r\n options.waitTimeoutMs = options.wait_for_method_timeout;\r\n if (options.waitTimeoutMs === undefined) {\r\n options.waitTimeoutMs = _this.configuration.waitTimeoutMs;\r\n }\r\n }\r\n var delayStep = 500;\r\n var delayTillNow = 0;\r\n var currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target);\r\n if (currentServers.length > 0) {\r\n callProtocolSubscribe(currentServers, currentServers[0].methods[0], successProxy, errorProxy);\r\n }\r\n else {\r\n var retry_1 = function () {\r\n if (!target || !(options.waitTimeoutMs)) {\r\n return;\r\n }\r\n delayTillNow += delayStep;\r\n currentServers = _this.getServerMethodsByFilterAndTarget(methodDef, target);\r\n if (currentServers.length > 0) {\r\n var streamInfo = currentServers[0].methods[0];\r\n callProtocolSubscribe(currentServers, streamInfo, successProxy, errorProxy);\r\n }\r\n else if (delayTillNow >= options.waitTimeoutMs) {\r\n var def = typeof method === \"string\" ? { name: method } : method;\r\n callProtocolSubscribe(currentServers, def, successProxy, errorProxy);\r\n }\r\n else {\r\n setTimeout(retry_1, delayStep);\r\n }\r\n };\r\n setTimeout(retry_1, delayStep);\r\n }\r\n });\r\n return promisify(promise, successCallback, errorCallback);\r\n };\r\n Client.prototype.servers = function (methodFilter) {\r\n var filterCopy = methodFilter === undefined\r\n ? undefined\r\n : __assign({}, methodFilter);\r\n return this.getServers(filterCopy).map(function (serverMethodMap) {\r\n return serverMethodMap.server.instance;\r\n });\r\n };\r\n Client.prototype.methods = function (methodFilter) {\r\n if (typeof methodFilter === \"string\") {\r\n methodFilter = { name: methodFilter };\r\n }\r\n else {\r\n methodFilter = __assign({}, methodFilter);\r\n }\r\n return this.getMethods(methodFilter);\r\n };\r\n Client.prototype.methodsForInstance = function (instance) {\r\n return this.getMethodsForInstance(instance);\r\n };\r\n Client.prototype.methodAdded = function (callback) {\r\n return this.repo.onMethodAdded(callback);\r\n };\r\n Client.prototype.methodRemoved = function (callback) {\r\n return this.repo.onMethodRemoved(callback);\r\n };\r\n Client.prototype.serverAdded = function (callback) {\r\n return this.repo.onServerAdded(callback);\r\n };\r\n Client.prototype.serverRemoved = function (callback) {\r\n return this.repo.onServerRemoved(function (server, reason) {\r\n callback(server, reason);\r\n });\r\n };\r\n Client.prototype.serverMethodAdded = function (callback) {\r\n return this.repo.onServerMethodAdded(function (server, method) {\r\n callback({ server: server, method: method });\r\n });\r\n };\r\n Client.prototype.serverMethodRemoved = function (callback) {\r\n return this.repo.onServerMethodRemoved(function (server, method) {\r\n callback({ server: server, method: method });\r\n });\r\n };\r\n Client.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var getInvokePromise;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n getInvokePromise = function () { return __awaiter(_this, void 0, void 0, function () {\r\n var methodDefinition, serversMethodMap, method, errorObj, timeout, additionalOptionsCopy, invokePromises, invocationMessages, results, allRejected;\r\n var _this = this;\r\n var _a, _b, _c;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n if (typeof methodFilter === \"string\") {\r\n methodDefinition = { name: methodFilter };\r\n }\r\n else {\r\n methodDefinition = __assign({}, methodFilter);\r\n }\r\n if (!methodDefinition.name) {\r\n return [2, Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a \\u201CmethodDefinition\\u201D object with a required \\u201Cname\\u201D property.\")];\r\n }\r\n if (!argumentObj) {\r\n argumentObj = {};\r\n }\r\n if (!target) {\r\n target = \"best\";\r\n }\r\n if (typeof target === \"string\" && target !== \"all\" && target !== \"best\" && target !== \"skipMine\") {\r\n return [2, Promise.reject(new Error(\"\\\"\".concat(target, \"\\\" is not a valid target. Valid targets are \\\"all\\\" and \\\"best\\\".\")))];\r\n }\r\n if (!additionalOptions) {\r\n additionalOptions = {};\r\n }\r\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\r\n additionalOptions.methodResponseTimeoutMs = additionalOptions.method_response_timeout;\r\n if (additionalOptions.methodResponseTimeoutMs === undefined) {\r\n additionalOptions.methodResponseTimeoutMs = this.configuration.methodResponseTimeout;\r\n }\r\n }\r\n if (additionalOptions.waitTimeoutMs === undefined) {\r\n additionalOptions.waitTimeoutMs = additionalOptions.wait_for_method_timeout;\r\n if (additionalOptions.waitTimeoutMs === undefined) {\r\n additionalOptions.waitTimeoutMs = this.configuration.waitTimeoutMs;\r\n }\r\n }\r\n if (additionalOptions.waitTimeoutMs !== undefined && typeof additionalOptions.waitTimeoutMs !== \"number\") {\r\n return [2, Promise.reject(new Error(\"\\\"\".concat(additionalOptions.waitTimeoutMs, \"\\\" is not a valid number for \\\"waitTimeoutMs\\\" \")))];\r\n }\r\n if (typeof argumentObj !== \"object\") {\r\n return [2, Promise.reject(new Error(\"The method arguments must be an object. method: \".concat(methodDefinition.name)))];\r\n }\r\n serversMethodMap = this.getServerMethodsByFilterAndTarget(methodDefinition, target);\r\n if (!(serversMethodMap.length === 0)) return [3, 4];\r\n _d.label = 1;\r\n case 1:\r\n _d.trys.push([1, 3, , 4]);\r\n return [4, this.tryToAwaitForMethods(methodDefinition, target, additionalOptions)];\r\n case 2:\r\n serversMethodMap = _d.sent();\r\n return [3, 4];\r\n case 3:\r\n _d.sent();\r\n method = __assign(__assign({}, methodDefinition), { getServers: function () { return []; }, supportsStreaming: false, objectTypes: (_a = methodDefinition.objectTypes) !== null && _a !== void 0 ? _a : [], flags: (_c = (_b = methodDefinition.flags) === null || _b === void 0 ? void 0 : _b.metadata) !== null && _c !== void 0 ? _c : {} });\r\n errorObj = {\r\n method: method,\r\n called_with: argumentObj,\r\n message: \"Can not find a method matching \".concat(JSON.stringify(methodFilter), \" with server filter \").concat(JSON.stringify(target)),\r\n executed_by: undefined,\r\n returned: undefined,\r\n status: undefined,\r\n };\r\n return [2, Promise.reject(errorObj)];\r\n case 4:\r\n timeout = additionalOptions.methodResponseTimeoutMs;\r\n additionalOptionsCopy = additionalOptions;\r\n invokePromises = serversMethodMap.map(function (serversMethodPair) {\r\n var invId = shortid();\r\n var method = serversMethodPair.methods[0];\r\n var server = serversMethodPair.server;\r\n var invokePromise = _this.protocol.client.invoke(invId, method, argumentObj, server, additionalOptionsCopy);\r\n return Promise.race([\r\n invokePromise,\r\n rejectAfter(timeout, invokePromise, {\r\n invocationId: invId,\r\n message: \"Invocation timeout (\".concat(timeout, \" ms) reached for method name: \").concat(method === null || method === void 0 ? void 0 : method.name, \", target instance: \").concat(JSON.stringify(server.instance), \", options: \").concat(JSON.stringify(additionalOptionsCopy)),\r\n status: InvokeStatus.Error,\r\n })\r\n ]);\r\n });\r\n return [4, Promise.all(invokePromises)];\r\n case 5:\r\n invocationMessages = _d.sent();\r\n results = this.getInvocationResultObj(invocationMessages, methodDefinition, argumentObj);\r\n allRejected = invocationMessages.every(function (result) { return result.status === InvokeStatus.Error; });\r\n if (allRejected) {\r\n return [2, Promise.reject(results)];\r\n }\r\n return [2, results];\r\n }\r\n });\r\n }); };\r\n return [2, promisify(getInvokePromise(), success, error)];\r\n });\r\n });\r\n };\r\n Client.prototype.getInvocationResultObj = function (invocationResults, method, calledWith) {\r\n var all_return_values = invocationResults\r\n .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Success; })\r\n .reduce(function (allValues, currentValue) {\r\n allValues = __spreadArray(__spreadArray([], allValues, true), [\r\n {\r\n executed_by: currentValue.instance,\r\n returned: currentValue.result,\r\n called_with: calledWith,\r\n method: method,\r\n message: currentValue.message,\r\n status: currentValue.status,\r\n }\r\n ], false);\r\n return allValues;\r\n }, []);\r\n var all_errors = invocationResults\r\n .filter(function (invokeMessage) { return invokeMessage.status === InvokeStatus.Error; })\r\n .reduce(function (allErrors, currError) {\r\n allErrors = __spreadArray(__spreadArray([], allErrors, true), [\r\n {\r\n executed_by: currError.instance,\r\n called_with: calledWith,\r\n name: method.name,\r\n message: currError.message,\r\n }\r\n ], false);\r\n return allErrors;\r\n }, []);\r\n var invResult = invocationResults[0];\r\n var result = {\r\n method: method,\r\n called_with: calledWith,\r\n returned: invResult.result,\r\n executed_by: invResult.instance,\r\n all_return_values: all_return_values,\r\n all_errors: all_errors,\r\n message: invResult.message,\r\n status: invResult.status\r\n };\r\n return result;\r\n };\r\n Client.prototype.tryToAwaitForMethods = function (methodDefinition, target, additionalOptions) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n if (additionalOptions.waitTimeoutMs === 0) {\r\n reject();\r\n return;\r\n }\r\n var delayStep = 500;\r\n var delayTillNow = 0;\r\n var retry = function () {\r\n delayTillNow += delayStep;\r\n var serversMethodMap = _this.getServerMethodsByFilterAndTarget(methodDefinition, target);\r\n if (serversMethodMap.length > 0) {\r\n clearInterval(interval);\r\n resolve(serversMethodMap);\r\n }\r\n else if (delayTillNow >= (additionalOptions.waitTimeoutMs || 10000)) {\r\n clearInterval(interval);\r\n reject();\r\n return;\r\n }\r\n };\r\n var interval = setInterval(retry, delayStep);\r\n });\r\n };\r\n Client.prototype.filterByTarget = function (target, serverMethodMap) {\r\n var _this = this;\r\n if (typeof target === \"string\") {\r\n if (target === \"all\") {\r\n return __spreadArray([], serverMethodMap, true);\r\n }\r\n else if (target === \"best\") {\r\n var localMachine = serverMethodMap\r\n .find(function (s) { return s.server.instance.isLocal; });\r\n if (localMachine) {\r\n return [localMachine];\r\n }\r\n if (serverMethodMap[0] !== undefined) {\r\n return [serverMethodMap[0]];\r\n }\r\n }\r\n else if (target === \"skipMine\") {\r\n return serverMethodMap.filter(function (_a) {\r\n var server = _a.server;\r\n return server.instance.peerId !== _this.instance.peerId;\r\n });\r\n }\r\n }\r\n else {\r\n var targetArray = void 0;\r\n if (!Array.isArray(target)) {\r\n targetArray = [target];\r\n }\r\n else {\r\n targetArray = target;\r\n }\r\n var allServersMatching = targetArray.reduce(function (matches, filter) {\r\n var myMatches = serverMethodMap.filter(function (serverMethodPair) {\r\n return _this.instanceMatch(filter, serverMethodPair.server.instance);\r\n });\r\n return matches.concat(myMatches);\r\n }, []);\r\n return allServersMatching;\r\n }\r\n return [];\r\n };\r\n Client.prototype.instanceMatch = function (instanceFilter, instanceDefinition) {\r\n return this.containsProps(instanceFilter, instanceDefinition);\r\n };\r\n Client.prototype.methodMatch = function (methodFilter, methodDefinition) {\r\n return this.containsProps(methodFilter, methodDefinition);\r\n };\r\n Client.prototype.containsProps = function (filter, repoMethod) {\r\n var filterProps = Object.keys(filter)\r\n .filter(function (prop) {\r\n return filter[prop] !== undefined\r\n && filter[prop] !== null\r\n && typeof filter[prop] !== \"function\"\r\n && prop !== \"object_types\"\r\n && prop !== \"display_name\"\r\n && prop !== \"id\"\r\n && prop !== \"gatewayId\"\r\n && prop !== \"identifier\"\r\n && prop[0] !== \"_\";\r\n });\r\n return filterProps.every(function (prop) {\r\n var isMatch;\r\n var filterValue = filter[prop];\r\n var repoMethodValue = repoMethod[prop];\r\n switch (prop) {\r\n case \"objectTypes\":\r\n isMatch = (filterValue || []).every(function (filterValueEl) {\r\n return (repoMethodValue || []).includes(filterValueEl);\r\n });\r\n break;\r\n case \"flags\":\r\n isMatch = isSubset(repoMethodValue || {}, filterValue || {});\r\n break;\r\n default:\r\n isMatch = String(filterValue).toLowerCase() === String(repoMethodValue).toLowerCase();\r\n }\r\n return isMatch;\r\n });\r\n };\r\n Client.prototype.getMethods = function (methodFilter) {\r\n var _this = this;\r\n if (methodFilter === undefined) {\r\n return this.repo.getMethods();\r\n }\r\n var methods = this.repo.getMethods().filter(function (method) {\r\n return _this.methodMatch(methodFilter, method);\r\n });\r\n return methods;\r\n };\r\n Client.prototype.getMethodsForInstance = function (instanceFilter) {\r\n var _this = this;\r\n var allServers = this.repo.getServers();\r\n var matchingServers = allServers.filter(function (server) {\r\n return _this.instanceMatch(instanceFilter, server.instance);\r\n });\r\n if (matchingServers.length === 0) {\r\n return [];\r\n }\r\n var resultMethodsObject = {};\r\n if (matchingServers.length === 1) {\r\n resultMethodsObject = matchingServers[0].methods;\r\n }\r\n else {\r\n matchingServers.forEach(function (server) {\r\n Object.keys(server.methods).forEach(function (methodKey) {\r\n var method = server.methods[methodKey];\r\n resultMethodsObject[method.identifier] = method;\r\n });\r\n });\r\n }\r\n return Object.keys(resultMethodsObject)\r\n .map(function (key) {\r\n return resultMethodsObject[key];\r\n });\r\n };\r\n Client.prototype.getServers = function (methodFilter) {\r\n var _this = this;\r\n var servers = this.repo.getServers();\r\n if (methodFilter === undefined) {\r\n return servers.map(function (server) {\r\n return { server: server, methods: [] };\r\n });\r\n }\r\n return servers.reduce(function (prev, current) {\r\n var methodsForServer = Object.values(current.methods);\r\n var matchingMethods = methodsForServer.filter(function (method) {\r\n return _this.methodMatch(methodFilter, method);\r\n });\r\n if (matchingMethods.length > 0) {\r\n prev.push({ server: current, methods: matchingMethods });\r\n }\r\n return prev;\r\n }, []);\r\n };\r\n Client.prototype.getServerMethodsByFilterAndTarget = function (methodFilter, target) {\r\n var serversMethodMap = this.getServers(methodFilter);\r\n return this.filterByTarget(target, serversMethodMap);\r\n };\r\n return Client;\r\n}());\n\nvar ServerSubscription = (function () {\r\n function ServerSubscription(protocol, repoMethod, subscription) {\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n this.subscription = subscription;\r\n }\r\n Object.defineProperty(ServerSubscription.prototype, \"stream\", {\r\n get: function () {\r\n if (!this.repoMethod.stream) {\r\n throw new Error(\"no stream\");\r\n }\r\n return this.repoMethod.stream;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"arguments\", {\r\n get: function () { return this.subscription.arguments || {}; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"branchKey\", {\r\n get: function () { return this.subscription.branchKey; },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(ServerSubscription.prototype, \"instance\", {\r\n get: function () {\r\n if (!this.subscription.instance) {\r\n throw new Error(\"no instance\");\r\n }\r\n return this.subscription.instance;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ServerSubscription.prototype.close = function () {\r\n this.protocol.server.closeSingleSubscription(this.repoMethod, this.subscription);\r\n };\r\n ServerSubscription.prototype.push = function (data) {\r\n this.protocol.server.pushDataToSingle(this.repoMethod, this.subscription, data);\r\n };\r\n return ServerSubscription;\r\n}());\n\nvar Request = (function () {\r\n function Request(protocol, repoMethod, requestContext) {\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n this.requestContext = requestContext;\r\n this.arguments = requestContext.arguments;\r\n this.instance = requestContext.instance;\r\n }\r\n Request.prototype.accept = function () {\r\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, \"\");\r\n };\r\n Request.prototype.acceptOnBranch = function (branch) {\r\n this.protocol.server.acceptRequestOnBranch(this.requestContext, this.repoMethod, branch);\r\n };\r\n Request.prototype.reject = function (reason) {\r\n this.protocol.server.rejectRequest(this.requestContext, this.repoMethod, reason);\r\n };\r\n return Request;\r\n}());\n\nvar ServerStreaming$1 = (function () {\r\n function ServerStreaming(protocol, server) {\r\n var _this = this;\r\n this.protocol = protocol;\r\n this.server = server;\r\n protocol.server.onSubRequest(function (rc, rm) { return _this.handleSubRequest(rc, rm); });\r\n protocol.server.onSubAdded(function (sub, rm) { return _this.handleSubAdded(sub, rm); });\r\n protocol.server.onSubRemoved(function (sub, rm) { return _this.handleSubRemoved(sub, rm); });\r\n }\r\n ServerStreaming.prototype.handleSubRequest = function (requestContext, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionRequestHandler === \"function\")) {\r\n return;\r\n }\r\n var request = new Request(this.protocol, repoMethod, requestContext);\r\n repoMethod.streamCallbacks.subscriptionRequestHandler(request);\r\n };\r\n ServerStreaming.prototype.handleSubAdded = function (subscription, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionAddedHandler === \"function\")) {\r\n return;\r\n }\r\n var sub = new ServerSubscription(this.protocol, repoMethod, subscription);\r\n repoMethod.streamCallbacks.subscriptionAddedHandler(sub);\r\n };\r\n ServerStreaming.prototype.handleSubRemoved = function (subscription, repoMethod) {\r\n if (!(repoMethod &&\r\n repoMethod.streamCallbacks &&\r\n typeof repoMethod.streamCallbacks.subscriptionRemovedHandler === \"function\")) {\r\n return;\r\n }\r\n var sub = new ServerSubscription(this.protocol, repoMethod, subscription);\r\n repoMethod.streamCallbacks.subscriptionRemovedHandler(sub);\r\n };\r\n return ServerStreaming;\r\n}());\n\nvar ServerBranch = (function () {\r\n function ServerBranch(key, protocol, repoMethod) {\r\n this.key = key;\r\n this.protocol = protocol;\r\n this.repoMethod = repoMethod;\r\n }\r\n ServerBranch.prototype.subscriptions = function () {\r\n var _this = this;\r\n var subList = this.protocol.server.getSubscriptionList(this.repoMethod, this.key);\r\n return subList.map(function (sub) {\r\n return new ServerSubscription(_this.protocol, _this.repoMethod, sub);\r\n });\r\n };\r\n ServerBranch.prototype.close = function () {\r\n this.protocol.server.closeAllSubscriptions(this.repoMethod, this.key);\r\n };\r\n ServerBranch.prototype.push = function (data) {\r\n this.protocol.server.pushData(this.repoMethod, data, [this.key]);\r\n };\r\n return ServerBranch;\r\n}());\n\nvar ServerStream = (function () {\r\n function ServerStream(_protocol, _repoMethod, _server) {\r\n this._protocol = _protocol;\r\n this._repoMethod = _repoMethod;\r\n this._server = _server;\r\n this.name = this._repoMethod.definition.name;\r\n }\r\n ServerStream.prototype.branches = function (key) {\r\n var _this = this;\r\n var bList = this._protocol.server.getBranchList(this._repoMethod);\r\n if (key) {\r\n if (bList.indexOf(key) > -1) {\r\n return new ServerBranch(key, this._protocol, this._repoMethod);\r\n }\r\n return undefined;\r\n }\r\n else {\r\n return bList.map(function (branchKey) {\r\n return new ServerBranch(branchKey, _this._protocol, _this._repoMethod);\r\n });\r\n }\r\n };\r\n ServerStream.prototype.branch = function (key) {\r\n return this.branches(key);\r\n };\r\n ServerStream.prototype.subscriptions = function () {\r\n var _this = this;\r\n var subList = this._protocol.server.getSubscriptionList(this._repoMethod);\r\n return subList.map(function (sub) {\r\n return new ServerSubscription(_this._protocol, _this._repoMethod, sub);\r\n });\r\n };\r\n Object.defineProperty(ServerStream.prototype, \"definition\", {\r\n get: function () {\r\n var _a;\r\n var def2 = this._repoMethod.definition;\r\n return {\r\n accepts: def2.accepts,\r\n description: def2.description,\r\n displayName: def2.displayName,\r\n name: def2.name,\r\n objectTypes: def2.objectTypes,\r\n returns: def2.returns,\r\n supportsStreaming: def2.supportsStreaming,\r\n flags: (_a = def2.flags) === null || _a === void 0 ? void 0 : _a.metadata,\r\n };\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n ServerStream.prototype.close = function () {\r\n this._protocol.server.closeAllSubscriptions(this._repoMethod);\r\n this._server.unregister(this._repoMethod.definition, true);\r\n };\r\n ServerStream.prototype.push = function (data, branches) {\r\n if (typeof branches !== \"string\" && !Array.isArray(branches) && branches !== undefined) {\r\n throw new Error(\"invalid branches should be string or string array\");\r\n }\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n this._protocol.server.pushData(this._repoMethod, data, branches);\r\n };\r\n ServerStream.prototype.updateRepoMethod = function (repoMethod) {\r\n this._repoMethod = repoMethod;\r\n };\r\n return ServerStream;\r\n}());\n\nvar Server = (function () {\r\n function Server(protocol, serverRepository) {\r\n this.protocol = protocol;\r\n this.serverRepository = serverRepository;\r\n this.invocations = 0;\r\n this.currentlyUnregistering = {};\r\n this.streaming = new ServerStreaming$1(protocol, this);\r\n this.protocol.server.onInvoked(this.onMethodInvoked.bind(this));\r\n }\r\n Server.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback, existingStream) {\r\n var _this = this;\r\n var promise = new Promise(function (resolve, reject) {\r\n if (!streamDef) {\r\n reject(\"The stream name must be unique! Please, provide either a unique string for a stream name to “glue.interop.createStream()” or a “methodDefinition” object with a unique “name” property for the stream.\");\r\n return;\r\n }\r\n var streamMethodDefinition;\r\n if (typeof streamDef === \"string\") {\r\n streamMethodDefinition = { name: \"\" + streamDef };\r\n }\r\n else {\r\n streamMethodDefinition = __assign({}, streamDef);\r\n }\r\n if (!streamMethodDefinition.name) {\r\n return reject(\"The \\u201Cname\\u201D property is required for the \\u201CstreamDefinition\\u201D object and must be unique. Stream definition: \".concat(JSON.stringify(streamMethodDefinition)));\r\n }\r\n var nameAlreadyExists = _this.serverRepository.getList()\r\n .some(function (serverMethod) { return serverMethod.definition.name === streamMethodDefinition.name; });\r\n if (nameAlreadyExists) {\r\n return reject(\"A stream with the name \\\"\".concat(streamMethodDefinition.name, \"\\\" already exists! Please, provide a unique name for the stream.\"));\r\n }\r\n streamMethodDefinition.supportsStreaming = true;\r\n if (!callbacks) {\r\n callbacks = {};\r\n }\r\n if (typeof callbacks.subscriptionRequestHandler !== \"function\") {\r\n callbacks.subscriptionRequestHandler = function (request) {\r\n request.accept();\r\n };\r\n }\r\n var repoMethod = _this.serverRepository.add({\r\n definition: streamMethodDefinition,\r\n streamCallbacks: callbacks,\r\n protocolState: {},\r\n });\r\n _this.protocol.server.createStream(repoMethod)\r\n .then(function () {\r\n var streamUserObject;\r\n if (existingStream) {\r\n streamUserObject = existingStream;\r\n existingStream.updateRepoMethod(repoMethod);\r\n }\r\n else {\r\n streamUserObject = new ServerStream(_this.protocol, repoMethod, _this);\r\n }\r\n repoMethod.stream = streamUserObject;\r\n resolve(streamUserObject);\r\n })\r\n .catch(function (err) {\r\n if (repoMethod.repoId) {\r\n _this.serverRepository.remove(repoMethod.repoId);\r\n }\r\n reject(err);\r\n });\r\n });\r\n return promisify(promise, successCallback, errorCallback);\r\n };\r\n Server.prototype.register = function (methodDefinition, callback) {\r\n var _this = this;\r\n if (!methodDefinition) {\r\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\r\n }\r\n if (typeof callback !== \"function\") {\r\n return Promise.reject(\"The second parameter must be a callback function. Method: \".concat(typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name));\r\n }\r\n var wrappedCallbackFunction = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () {\r\n var result, resultValue, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 4, , 5]);\r\n result = callback(context.args, context.instance);\r\n if (!(result && typeof result.then === \"function\")) return [3, 2];\r\n return [4, result];\r\n case 1:\r\n resultValue = _a.sent();\r\n resultCallback(undefined, resultValue);\r\n return [3, 3];\r\n case 2:\r\n resultCallback(undefined, result);\r\n _a.label = 3;\r\n case 3: return [3, 5];\r\n case 4:\r\n e_1 = _a.sent();\r\n resultCallback(e_1 !== null && e_1 !== void 0 ? e_1 : \"\", e_1 !== null && e_1 !== void 0 ? e_1 : \"\");\r\n return [3, 5];\r\n case 5: return [2];\r\n }\r\n });\r\n }); };\r\n wrappedCallbackFunction.userCallback = callback;\r\n return this.registerCore(methodDefinition, wrappedCallbackFunction);\r\n };\r\n Server.prototype.registerAsync = function (methodDefinition, callback) {\r\n var _this = this;\r\n if (!methodDefinition) {\r\n return Promise.reject(\"Method definition is required. Please, provide either a unique string for a method name or a “methodDefinition” object with a required “name” property.\");\r\n }\r\n if (typeof callback !== \"function\") {\r\n return Promise.reject(\"The second parameter must be a callback function. Method: \".concat(typeof methodDefinition === \"string\" ? methodDefinition : methodDefinition.name));\r\n }\r\n var wrappedCallback = function (context, resultCallback) { return __awaiter(_this, void 0, void 0, function () {\r\n var resultCalled_1, success, error, methodResult;\r\n return __generator(this, function (_a) {\r\n try {\r\n resultCalled_1 = false;\r\n success = function (result) {\r\n if (!resultCalled_1) {\r\n resultCallback(undefined, result);\r\n }\r\n resultCalled_1 = true;\r\n };\r\n error = function (e) {\r\n if (!resultCalled_1) {\r\n if (!e) {\r\n e = \"\";\r\n }\r\n resultCallback(e, e);\r\n }\r\n resultCalled_1 = true;\r\n };\r\n methodResult = callback(context.args, context.instance, success, error);\r\n if (methodResult && typeof methodResult.then === \"function\") {\r\n methodResult\r\n .then(success)\r\n .catch(error);\r\n }\r\n }\r\n catch (e) {\r\n resultCallback(e, undefined);\r\n }\r\n return [2];\r\n });\r\n }); };\r\n wrappedCallback.userCallbackAsync = callback;\r\n return this.registerCore(methodDefinition, wrappedCallback);\r\n };\r\n Server.prototype.unregister = function (methodFilter, forStream) {\r\n if (forStream === void 0) { forStream = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodDefinition, methodToBeRemoved;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (methodFilter === undefined) {\r\n return [2, Promise.reject(\"Please, provide either a unique string for a name or an object containing a “name” property.\")];\r\n }\r\n if (!(typeof methodFilter === \"function\")) return [3, 2];\r\n return [4, this.unregisterWithPredicate(methodFilter, forStream)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n case 2:\r\n if (typeof methodFilter === \"string\") {\r\n methodDefinition = { name: methodFilter };\r\n }\r\n else {\r\n methodDefinition = methodFilter;\r\n }\r\n if (methodDefinition.name === undefined) {\r\n return [2, Promise.reject(\"Method name is required. Cannot find a method if the method name is undefined!\")];\r\n }\r\n methodToBeRemoved = this.serverRepository.getList().find(function (serverMethod) {\r\n return serverMethod.definition.name === methodDefinition.name\r\n && (serverMethod.definition.supportsStreaming || false) === forStream;\r\n });\r\n if (!methodToBeRemoved) {\r\n return [2, Promise.reject(\"Method with a name \\\"\".concat(methodDefinition.name, \"\\\" does not exist or is not registered by your application!\"))];\r\n }\r\n return [4, this.removeMethodsOrStreams([methodToBeRemoved])];\r\n case 3:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.unregisterWithPredicate = function (filterPredicate, forStream) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodsOrStreamsToRemove;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n methodsOrStreamsToRemove = this.serverRepository.getList()\r\n .filter(function (sm) { return filterPredicate(sm.definition); })\r\n .filter(function (serverMethod) {\r\n return (serverMethod.definition.supportsStreaming || false) === forStream;\r\n });\r\n if (!methodsOrStreamsToRemove || methodsOrStreamsToRemove.length === 0) {\r\n return [2, Promise.reject(\"Could not find a \".concat(forStream ? \"stream\" : \"method\", \" matching the specified condition!\"))];\r\n }\r\n return [4, this.removeMethodsOrStreams(methodsOrStreamsToRemove)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.removeMethodsOrStreams = function (methodsToRemove) {\r\n var _this = this;\r\n var methodUnregPromises = [];\r\n methodsToRemove.forEach(function (method) {\r\n var promise = _this.protocol.server.unregister(method)\r\n .then(function () {\r\n if (method.repoId) {\r\n _this.serverRepository.remove(method.repoId);\r\n }\r\n });\r\n methodUnregPromises.push(promise);\r\n _this.addAsCurrentlyUnregistering(method.definition.name, promise);\r\n });\r\n return Promise.all(methodUnregPromises);\r\n };\r\n Server.prototype.addAsCurrentlyUnregistering = function (methodName, promise) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var timeout;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n timeout = new Promise(function (resolve) { return setTimeout(resolve, 5000); });\r\n this.currentlyUnregistering[methodName] = Promise.race([promise, timeout]).then(function () {\r\n delete _this.currentlyUnregistering[methodName];\r\n });\r\n return [2];\r\n });\r\n });\r\n };\r\n Server.prototype.registerCore = function (method, theFunction) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var methodDefinition, unregisterInProgress, nameAlreadyExists, repoMethod;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (typeof method === \"string\") {\r\n methodDefinition = { name: \"\" + method };\r\n }\r\n else {\r\n methodDefinition = __assign({}, method);\r\n }\r\n if (!methodDefinition.name) {\r\n return [2, Promise.reject(\"Please, provide a (unique) string value for the \\u201Cname\\u201D property in the \\u201CmethodDefinition\\u201D object: \".concat(JSON.stringify(method)))];\r\n }\r\n unregisterInProgress = this.currentlyUnregistering[methodDefinition.name];\r\n if (!(typeof unregisterInProgress !== \"undefined\")) return [3, 2];\r\n return [4, unregisterInProgress];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n nameAlreadyExists = this.serverRepository.getList()\r\n .some(function (serverMethod) { return serverMethod.definition.name === methodDefinition.name; });\r\n if (nameAlreadyExists) {\r\n return [2, Promise.reject(\"A method with the name \\\"\".concat(methodDefinition.name, \"\\\" already exists! Please, provide a unique name for the method.\"))];\r\n }\r\n if (methodDefinition.supportsStreaming) {\r\n return [2, Promise.reject(\"When you create methods with \\u201Cglue.interop.register()\\u201D or \\u201Cglue.interop.registerAsync()\\u201D the property \\u201CsupportsStreaming\\u201D cannot be \\u201Ctrue\\u201D. If you want \\u201C\".concat(methodDefinition.name, \"\\u201D to be a stream, please use the \\u201Cglue.interop.createStream()\\u201D method.\"))];\r\n }\r\n repoMethod = this.serverRepository.add({\r\n definition: methodDefinition,\r\n theFunction: theFunction,\r\n protocolState: {},\r\n });\r\n return [2, this.protocol.server.register(repoMethod)\r\n .catch(function (err) {\r\n if (repoMethod === null || repoMethod === void 0 ? void 0 : repoMethod.repoId) {\r\n _this.serverRepository.remove(repoMethod.repoId);\r\n }\r\n throw err;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n Server.prototype.onMethodInvoked = function (methodToExecute, invocationId, invocationArgs) {\r\n var _this = this;\r\n if (!methodToExecute || !methodToExecute.theFunction) {\r\n return;\r\n }\r\n methodToExecute.theFunction(invocationArgs, function (err, result) {\r\n if (err !== undefined && err !== null) {\r\n if (err.message && typeof err.message === \"string\") {\r\n err = err.message;\r\n }\r\n else if (typeof err !== \"string\") {\r\n try {\r\n err = JSON.stringify(err);\r\n }\r\n catch (unStrException) {\r\n err = \"un-stringifyable error in onMethodInvoked! Top level prop names: \".concat(Object.keys(err));\r\n }\r\n }\r\n }\r\n if (!result) {\r\n result = {};\r\n }\r\n else if (typeof result !== \"object\" || Array.isArray(result)) {\r\n result = { _value: result };\r\n }\r\n _this.protocol.server.methodInvocationResult(methodToExecute, invocationId, err, result);\r\n });\r\n };\r\n return Server;\r\n}());\n\nvar InstanceWrapper = (function () {\r\n function InstanceWrapper(API, instance, connection) {\r\n var _this = this;\r\n this.wrapped = {};\r\n this.wrapped.getMethods = function () {\r\n return API.methodsForInstance(this);\r\n };\r\n this.wrapped.getStreams = function () {\r\n return API.methodsForInstance(this).filter(function (m) { return m.supportsStreaming; });\r\n };\r\n if (instance) {\r\n this.refreshWrappedObject(instance);\r\n }\r\n if (connection) {\r\n connection.loggedIn(function () {\r\n _this.refresh(connection);\r\n });\r\n this.refresh(connection);\r\n }\r\n }\r\n InstanceWrapper.prototype.unwrap = function () {\r\n return this.wrapped;\r\n };\r\n InstanceWrapper.prototype.refresh = function (connection) {\r\n if (!connection) {\r\n return;\r\n }\r\n var resolvedIdentity = connection === null || connection === void 0 ? void 0 : connection.resolvedIdentity;\r\n var instance = Object.assign({}, resolvedIdentity !== null && resolvedIdentity !== void 0 ? resolvedIdentity : {}, { peerId: connection === null || connection === void 0 ? void 0 : connection.peerId });\r\n this.refreshWrappedObject(instance);\r\n };\r\n InstanceWrapper.prototype.refreshWrappedObject = function (resolvedIdentity) {\r\n var _this = this;\r\n var _a, _b, _c, _d;\r\n Object.keys(resolvedIdentity).forEach(function (key) {\r\n _this.wrapped[key] = resolvedIdentity[key];\r\n });\r\n this.wrapped.user = resolvedIdentity.user;\r\n this.wrapped.instance = resolvedIdentity.instance;\r\n this.wrapped.application = (_a = resolvedIdentity.application) !== null && _a !== void 0 ? _a : shortid();\r\n this.wrapped.applicationName = resolvedIdentity.applicationName;\r\n this.wrapped.pid = (_c = (_b = resolvedIdentity.pid) !== null && _b !== void 0 ? _b : resolvedIdentity.process) !== null && _c !== void 0 ? _c : Math.floor(Math.random() * 10000000000);\r\n this.wrapped.machine = resolvedIdentity.machine;\r\n this.wrapped.environment = resolvedIdentity.environment;\r\n this.wrapped.region = resolvedIdentity.region;\r\n this.wrapped.windowId = resolvedIdentity.windowId;\r\n this.wrapped.isLocal = (_d = resolvedIdentity.isLocal) !== null && _d !== void 0 ? _d : true;\r\n this.wrapped.api = resolvedIdentity.api;\r\n this.wrapped.service = resolvedIdentity.service;\r\n this.wrapped.peerId = resolvedIdentity.peerId;\r\n };\r\n return InstanceWrapper;\r\n}());\n\nvar hideMethodSystemFlags = function (method) {\r\n return __assign(__assign({}, method), { flags: method.flags.metadata || {} });\r\n};\r\nvar ClientRepository = (function () {\r\n function ClientRepository(logger, API) {\r\n this.logger = logger;\r\n this.API = API;\r\n this.servers = {};\r\n this.methodsCount = {};\r\n this.callbacks = lib$1();\r\n var peerId = this.API.instance.peerId;\r\n this.myServer = {\r\n id: peerId,\r\n methods: {},\r\n instance: this.API.instance,\r\n wrapper: this.API.unwrappedInstance,\r\n };\r\n this.servers[peerId] = this.myServer;\r\n }\r\n ClientRepository.prototype.addServer = function (info, serverId) {\r\n this.logger.debug(\"adding server \".concat(serverId));\r\n var current = this.servers[serverId];\r\n if (current) {\r\n return current.id;\r\n }\r\n var wrapper = new InstanceWrapper(this.API, info);\r\n var serverEntry = {\r\n id: serverId,\r\n methods: {},\r\n instance: wrapper.unwrap(),\r\n wrapper: wrapper,\r\n };\r\n this.servers[serverId] = serverEntry;\r\n this.callbacks.execute(\"onServerAdded\", serverEntry.instance);\r\n return serverId;\r\n };\r\n ClientRepository.prototype.removeServerById = function (id, reason) {\r\n var _this = this;\r\n var server = this.servers[id];\r\n if (!server) {\r\n this.logger.warn(\"not aware of server \".concat(id, \", my state \").concat(JSON.stringify(Object.keys(this.servers))));\r\n return;\r\n }\r\n else {\r\n this.logger.debug(\"removing server \".concat(id));\r\n }\r\n Object.keys(server.methods).forEach(function (methodId) {\r\n _this.removeServerMethod(id, methodId);\r\n });\r\n delete this.servers[id];\r\n this.callbacks.execute(\"onServerRemoved\", server.instance, reason);\r\n };\r\n ClientRepository.prototype.addServerMethod = function (serverId, method) {\r\n var _a;\r\n var server = this.servers[serverId];\r\n if (!server) {\r\n throw new Error(\"server does not exists\");\r\n }\r\n if (server.methods[method.id]) {\r\n return;\r\n }\r\n var identifier = this.createMethodIdentifier(method);\r\n var that = this;\r\n var methodDefinition = {\r\n identifier: identifier,\r\n gatewayId: method.id,\r\n name: method.name,\r\n displayName: method.display_name,\r\n description: method.description,\r\n version: method.version,\r\n objectTypes: method.object_types || [],\r\n accepts: method.input_signature,\r\n returns: method.result_signature,\r\n supportsStreaming: typeof method.flags !== \"undefined\" ? method.flags.streaming : false,\r\n flags: (_a = method.flags) !== null && _a !== void 0 ? _a : {},\r\n getServers: function () {\r\n return that.getServersByMethod(identifier);\r\n }\r\n };\r\n methodDefinition.object_types = methodDefinition.objectTypes;\r\n methodDefinition.display_name = methodDefinition.displayName;\r\n methodDefinition.version = methodDefinition.version;\r\n server.methods[method.id] = methodDefinition;\r\n var clientMethodDefinition = hideMethodSystemFlags(methodDefinition);\r\n if (!this.methodsCount[identifier]) {\r\n this.methodsCount[identifier] = 0;\r\n this.callbacks.execute(\"onMethodAdded\", clientMethodDefinition);\r\n }\r\n this.methodsCount[identifier] = this.methodsCount[identifier] + 1;\r\n this.callbacks.execute(\"onServerMethodAdded\", server.instance, clientMethodDefinition);\r\n return methodDefinition;\r\n };\r\n ClientRepository.prototype.removeServerMethod = function (serverId, methodId) {\r\n var server = this.servers[serverId];\r\n if (!server) {\r\n throw new Error(\"server does not exists\");\r\n }\r\n var method = server.methods[methodId];\r\n delete server.methods[methodId];\r\n var clientMethodDefinition = hideMethodSystemFlags(method);\r\n this.methodsCount[method.identifier] = this.methodsCount[method.identifier] - 1;\r\n if (this.methodsCount[method.identifier] === 0) {\r\n this.callbacks.execute(\"onMethodRemoved\", clientMethodDefinition);\r\n }\r\n this.callbacks.execute(\"onServerMethodRemoved\", server.instance, clientMethodDefinition);\r\n };\r\n ClientRepository.prototype.getMethods = function () {\r\n return this.extractMethodsFromServers(Object.values(this.servers)).map(hideMethodSystemFlags);\r\n };\r\n ClientRepository.prototype.getServers = function () {\r\n return Object.values(this.servers).map(this.hideServerMethodSystemFlags);\r\n };\r\n ClientRepository.prototype.onServerAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerAdded\", callback);\r\n var serversWithMethodsToReplay = this.getServers().map(function (s) { return s.instance; });\r\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, serversWithMethodsToReplay, callback);\r\n };\r\n ClientRepository.prototype.onMethodAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onMethodAdded\", callback);\r\n var methodsToReplay = this.getMethods();\r\n return this.returnUnsubWithDelayedReplay(unsubscribeFunc, methodsToReplay, callback);\r\n };\r\n ClientRepository.prototype.onServerMethodAdded = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerMethodAdded\", callback);\r\n var unsubCalled = false;\r\n var servers = this.getServers();\r\n setTimeout(function () {\r\n servers.forEach(function (server) {\r\n var methods = server.methods;\r\n Object.keys(methods).forEach(function (methodId) {\r\n if (!unsubCalled) {\r\n callback(server.instance, methods[methodId]);\r\n }\r\n });\r\n });\r\n }, 0);\r\n return function () {\r\n unsubCalled = true;\r\n unsubscribeFunc();\r\n };\r\n };\r\n ClientRepository.prototype.onMethodRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onMethodRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.onServerRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.onServerMethodRemoved = function (callback) {\r\n var unsubscribeFunc = this.callbacks.add(\"onServerMethodRemoved\", callback);\r\n return unsubscribeFunc;\r\n };\r\n ClientRepository.prototype.getServerById = function (id) {\r\n return this.hideServerMethodSystemFlags(this.servers[id]);\r\n };\r\n ClientRepository.prototype.reset = function () {\r\n var _a;\r\n var _this = this;\r\n Object.keys(this.servers).forEach(function (key) {\r\n _this.removeServerById(key, \"reset\");\r\n });\r\n this.servers = (_a = {},\r\n _a[this.myServer.id] = this.myServer,\r\n _a);\r\n this.methodsCount = {};\r\n };\r\n ClientRepository.prototype.createMethodIdentifier = function (methodInfo) {\r\n var _a, _b;\r\n var accepts = (_a = methodInfo.input_signature) !== null && _a !== void 0 ? _a : \"\";\r\n var returns = (_b = methodInfo.result_signature) !== null && _b !== void 0 ? _b : \"\";\r\n return (methodInfo.name + accepts + returns).toLowerCase();\r\n };\r\n ClientRepository.prototype.getServersByMethod = function (identifier) {\r\n var allServers = [];\r\n Object.values(this.servers).forEach(function (server) {\r\n Object.values(server.methods).forEach(function (method) {\r\n if (method.identifier === identifier) {\r\n allServers.push(server.instance);\r\n }\r\n });\r\n });\r\n return allServers;\r\n };\r\n ClientRepository.prototype.returnUnsubWithDelayedReplay = function (unsubscribeFunc, collectionToReplay, callback) {\r\n var unsubCalled = false;\r\n setTimeout(function () {\r\n collectionToReplay.forEach(function (item) {\r\n if (!unsubCalled) {\r\n callback(item);\r\n }\r\n });\r\n }, 0);\r\n return function () {\r\n unsubCalled = true;\r\n unsubscribeFunc();\r\n };\r\n };\r\n ClientRepository.prototype.hideServerMethodSystemFlags = function (server) {\r\n var clientMethods = {};\r\n Object.entries(server.methods).forEach(function (_a) {\r\n var name = _a[0], method = _a[1];\r\n clientMethods[name] = hideMethodSystemFlags(method);\r\n });\r\n return __assign(__assign({}, server), { methods: clientMethods });\r\n };\r\n ClientRepository.prototype.extractMethodsFromServers = function (servers) {\r\n var methods = Object.values(servers).reduce(function (clientMethods, server) {\r\n return __spreadArray(__spreadArray([], clientMethods, true), Object.values(server.methods), true);\r\n }, []);\r\n return methods;\r\n };\r\n return ClientRepository;\r\n}());\n\nvar ServerRepository = (function () {\r\n function ServerRepository() {\r\n this.nextId = 0;\r\n this.methods = [];\r\n }\r\n ServerRepository.prototype.add = function (method) {\r\n method.repoId = String(this.nextId);\r\n this.nextId += 1;\r\n this.methods.push(method);\r\n return method;\r\n };\r\n ServerRepository.prototype.remove = function (repoId) {\r\n if (typeof repoId !== \"string\") {\r\n return new TypeError(\"Expecting a string\");\r\n }\r\n this.methods = this.methods.filter(function (m) {\r\n return m.repoId !== repoId;\r\n });\r\n };\r\n ServerRepository.prototype.getById = function (id) {\r\n if (typeof id !== \"string\") {\r\n return undefined;\r\n }\r\n return this.methods.find(function (m) {\r\n return m.repoId === id;\r\n });\r\n };\r\n ServerRepository.prototype.getList = function () {\r\n return this.methods.map(function (m) { return m; });\r\n };\r\n ServerRepository.prototype.length = function () {\r\n return this.methods.length;\r\n };\r\n ServerRepository.prototype.reset = function () {\r\n this.methods = [];\r\n };\r\n return ServerRepository;\r\n}());\n\nvar SUBSCRIPTION_REQUEST = \"onSubscriptionRequest\";\r\nvar SUBSCRIPTION_ADDED = \"onSubscriptionAdded\";\r\nvar SUBSCRIPTION_REMOVED = \"onSubscriptionRemoved\";\r\nvar ServerStreaming = (function () {\r\n function ServerStreaming(session, repository, serverRepository) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.serverRepository = serverRepository;\r\n this.ERR_URI_SUBSCRIPTION_FAILED = \"com.tick42.agm.errors.subscription.failure\";\r\n this.callbacks = lib$1();\r\n this.nextStreamId = 0;\r\n session.on(\"add-interest\", function (msg) {\r\n _this.handleAddInterest(msg);\r\n });\r\n session.on(\"remove-interest\", function (msg) {\r\n _this.handleRemoveInterest(msg);\r\n });\r\n }\r\n ServerStreaming.prototype.acceptRequestOnBranch = function (requestContext, streamingMethod, branch) {\r\n if (typeof branch !== \"string\") {\r\n branch = \"\";\r\n }\r\n if (typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\r\n throw new TypeError(\"The streaming method is missing its subscriptions.\");\r\n }\r\n if (!Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\r\n throw new TypeError(\"The streaming method is missing its branches.\");\r\n }\r\n var streamId = this.getStreamId(streamingMethod, branch);\r\n var key = requestContext.msg.subscription_id;\r\n var subscription = {\r\n id: key,\r\n arguments: requestContext.arguments,\r\n instance: requestContext.instance,\r\n branchKey: branch,\r\n streamId: streamId,\r\n subscribeMsg: requestContext.msg,\r\n };\r\n streamingMethod.protocolState.subscriptionsMap[key] = subscription;\r\n this.session.sendFireAndForget({\r\n type: \"accepted\",\r\n subscription_id: key,\r\n stream_id: streamId,\r\n });\r\n this.callbacks.execute(SUBSCRIPTION_ADDED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.rejectRequest = function (requestContext, streamingMethod, reason) {\r\n if (typeof reason !== \"string\") {\r\n reason = \"\";\r\n }\r\n this.sendSubscriptionFailed(\"Subscription rejected by user. \" + reason, requestContext.msg.subscription_id);\r\n };\r\n ServerStreaming.prototype.pushData = function (streamingMethod, data, branches) {\r\n var _this = this;\r\n if (typeof streamingMethod !== \"object\" || !Array.isArray(streamingMethod.protocolState.branchKeyToStreamIdMap)) {\r\n return;\r\n }\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n if (typeof branches === \"string\") {\r\n branches = [branches];\r\n }\r\n else if (!Array.isArray(branches) || branches.length <= 0) {\r\n branches = [];\r\n }\r\n var streamIdList = streamingMethod.protocolState.branchKeyToStreamIdMap\r\n .filter(function (br) {\r\n if (!branches || branches.length === 0) {\r\n return true;\r\n }\r\n return branches.indexOf(br.key) >= 0;\r\n }).map(function (br) {\r\n return br.streamId;\r\n });\r\n streamIdList.forEach(function (streamId) {\r\n var publishMessage = {\r\n type: \"publish\",\r\n stream_id: streamId,\r\n data: data,\r\n };\r\n _this.session.sendFireAndForget(publishMessage);\r\n });\r\n };\r\n ServerStreaming.prototype.pushDataToSingle = function (method, subscription, data) {\r\n if (typeof data !== \"object\") {\r\n throw new Error(\"Invalid arguments. Data must be an object.\");\r\n }\r\n var postMessage = {\r\n type: \"post\",\r\n subscription_id: subscription.id,\r\n data: data,\r\n };\r\n this.session.sendFireAndForget(postMessage);\r\n };\r\n ServerStreaming.prototype.closeSingleSubscription = function (streamingMethod, subscription) {\r\n if (streamingMethod.protocolState.subscriptionsMap) {\r\n delete streamingMethod.protocolState.subscriptionsMap[subscription.id];\r\n }\r\n var dropSubscriptionMessage = {\r\n type: \"drop-subscription\",\r\n subscription_id: subscription.id,\r\n reason: \"Server dropping a single subscription\",\r\n };\r\n this.session.sendFireAndForget(dropSubscriptionMessage);\r\n subscription.instance;\r\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.closeMultipleSubscriptions = function (streamingMethod, branchKey) {\r\n var _this = this;\r\n if (typeof streamingMethod !== \"object\" || typeof streamingMethod.protocolState.subscriptionsMap !== \"object\") {\r\n return;\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return;\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var subscriptionsToClose = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n if (typeof branchKey === \"string\") {\r\n subscriptionsToClose = subscriptionsToClose.filter(function (sub) {\r\n return sub.branchKey === branchKey;\r\n });\r\n }\r\n subscriptionsToClose.forEach(function (subscription) {\r\n delete subscriptionsMap[subscription.id];\r\n var drop = {\r\n type: \"drop-subscription\",\r\n subscription_id: subscription.id,\r\n reason: \"Server dropping all subscriptions on stream_id: \" + subscription.streamId,\r\n };\r\n _this.session.sendFireAndForget(drop);\r\n });\r\n };\r\n ServerStreaming.prototype.getSubscriptionList = function (streamingMethod, branchKey) {\r\n if (typeof streamingMethod !== \"object\") {\r\n return [];\r\n }\r\n var subscriptions = [];\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return [];\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var allSubscriptions = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n if (typeof branchKey !== \"string\") {\r\n subscriptions = allSubscriptions;\r\n }\r\n else {\r\n subscriptions = allSubscriptions.filter(function (sub) {\r\n return sub.branchKey === branchKey;\r\n });\r\n }\r\n return subscriptions;\r\n };\r\n ServerStreaming.prototype.getBranchList = function (streamingMethod) {\r\n if (typeof streamingMethod !== \"object\") {\r\n return [];\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return [];\r\n }\r\n var subscriptionsMap = streamingMethod.protocolState.subscriptionsMap;\r\n var allSubscriptions = Object.keys(subscriptionsMap)\r\n .map(function (key) {\r\n return subscriptionsMap[key];\r\n });\r\n var result = [];\r\n allSubscriptions.forEach(function (sub) {\r\n var branch = \"\";\r\n if (typeof sub === \"object\" && typeof sub.branchKey === \"string\") {\r\n branch = sub.branchKey;\r\n }\r\n if (result.indexOf(branch) === -1) {\r\n result.push(branch);\r\n }\r\n });\r\n return result;\r\n };\r\n ServerStreaming.prototype.onSubAdded = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_ADDED, callback);\r\n };\r\n ServerStreaming.prototype.onSubRequest = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REQUEST, callback);\r\n };\r\n ServerStreaming.prototype.onSubRemoved = function (callback) {\r\n this.onSubscriptionLifetimeEvent(SUBSCRIPTION_REMOVED, callback);\r\n };\r\n ServerStreaming.prototype.handleRemoveInterest = function (msg) {\r\n var streamingMethod = this.serverRepository.getById(msg.method_id);\r\n if (typeof msg.subscription_id !== \"string\" ||\r\n typeof streamingMethod !== \"object\") {\r\n return;\r\n }\r\n if (!streamingMethod.protocolState.subscriptionsMap) {\r\n return;\r\n }\r\n if (typeof streamingMethod.protocolState.subscriptionsMap[msg.subscription_id] !== \"object\") {\r\n return;\r\n }\r\n var subscription = streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\r\n delete streamingMethod.protocolState.subscriptionsMap[msg.subscription_id];\r\n this.callbacks.execute(SUBSCRIPTION_REMOVED, subscription, streamingMethod);\r\n };\r\n ServerStreaming.prototype.onSubscriptionLifetimeEvent = function (eventName, handlerFunc) {\r\n this.callbacks.add(eventName, handlerFunc);\r\n };\r\n ServerStreaming.prototype.getNextStreamId = function () {\r\n return this.nextStreamId++ + \"\";\r\n };\r\n ServerStreaming.prototype.handleAddInterest = function (msg) {\r\n var caller = this.repository.getServerById(msg.caller_id);\r\n var instance = caller.instance;\r\n var requestContext = {\r\n msg: msg,\r\n arguments: msg.arguments_kv || {},\r\n instance: instance,\r\n };\r\n var streamingMethod = this.serverRepository.getById(msg.method_id);\r\n if (streamingMethod === undefined) {\r\n var errorMsg = \"No method with id \" + msg.method_id + \" on this server.\";\r\n this.sendSubscriptionFailed(errorMsg, msg.subscription_id);\r\n return;\r\n }\r\n if (streamingMethod.protocolState.subscriptionsMap &&\r\n streamingMethod.protocolState.subscriptionsMap[msg.subscription_id]) {\r\n this.sendSubscriptionFailed(\"A subscription with id \" + msg.subscription_id + \" already exists.\", msg.subscription_id);\r\n return;\r\n }\r\n this.callbacks.execute(SUBSCRIPTION_REQUEST, requestContext, streamingMethod);\r\n };\r\n ServerStreaming.prototype.sendSubscriptionFailed = function (reason, subscriptionId) {\r\n var errorMessage = {\r\n type: \"error\",\r\n reason_uri: this.ERR_URI_SUBSCRIPTION_FAILED,\r\n reason: reason,\r\n request_id: subscriptionId,\r\n };\r\n this.session.sendFireAndForget(errorMessage);\r\n };\r\n ServerStreaming.prototype.getStreamId = function (streamingMethod, branchKey) {\r\n if (typeof branchKey !== \"string\") {\r\n branchKey = \"\";\r\n }\r\n if (!streamingMethod.protocolState.branchKeyToStreamIdMap) {\r\n throw new Error(\"streaming \".concat(streamingMethod.definition.name, \" method without protocol state\"));\r\n }\r\n var needleBranch = streamingMethod.protocolState.branchKeyToStreamIdMap.filter(function (branch) {\r\n return branch.key === branchKey;\r\n })[0];\r\n var streamId = (needleBranch ? needleBranch.streamId : undefined);\r\n if (typeof streamId !== \"string\" || streamId === \"\") {\r\n streamId = this.getNextStreamId();\r\n streamingMethod.protocolState.branchKeyToStreamIdMap.push({ key: branchKey, streamId: streamId });\r\n }\r\n return streamId;\r\n };\r\n return ServerStreaming;\r\n}());\n\nvar ServerProtocol = (function () {\r\n function ServerProtocol(session, clientRepository, serverRepository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.clientRepository = clientRepository;\r\n this.serverRepository = serverRepository;\r\n this.logger = logger;\r\n this.callbacks = lib$1();\r\n this.streaming = new ServerStreaming(session, clientRepository, serverRepository);\r\n this.session.on(\"invoke\", function (msg) { return _this.handleInvokeMessage(msg); });\r\n }\r\n ServerProtocol.prototype.createStream = function (repoMethod) {\r\n repoMethod.protocolState.subscriptionsMap = {};\r\n repoMethod.protocolState.branchKeyToStreamIdMap = [];\r\n return this.register(repoMethod, true);\r\n };\r\n ServerProtocol.prototype.register = function (repoMethod, isStreaming) {\r\n var _this = this;\r\n var _a;\r\n var methodDef = repoMethod.definition;\r\n var flags = Object.assign({}, { metadata: (_a = methodDef.flags) !== null && _a !== void 0 ? _a : {} }, { streaming: isStreaming || false });\r\n var registerMsg = {\r\n type: \"register\",\r\n methods: [{\r\n id: repoMethod.repoId,\r\n name: methodDef.name,\r\n display_name: methodDef.displayName,\r\n description: methodDef.description,\r\n version: methodDef.version,\r\n flags: flags,\r\n object_types: methodDef.objectTypes || methodDef.object_types,\r\n input_signature: methodDef.accepts,\r\n result_signature: methodDef.returns,\r\n restrictions: undefined,\r\n }],\r\n };\r\n return this.session.send(registerMsg, { methodId: repoMethod.repoId })\r\n .then(function () {\r\n _this.logger.debug(\"registered method \" + repoMethod.definition.name + \" with id \" + repoMethod.repoId);\r\n })\r\n .catch(function (msg) {\r\n _this.logger.warn(\"failed to register method \".concat(repoMethod.definition.name, \" with id \").concat(repoMethod.repoId, \" - \").concat(JSON.stringify(msg)));\r\n throw msg;\r\n });\r\n };\r\n ServerProtocol.prototype.onInvoked = function (callback) {\r\n this.callbacks.add(\"onInvoked\", callback);\r\n };\r\n ServerProtocol.prototype.methodInvocationResult = function (method, invocationId, err, result) {\r\n var msg;\r\n if (err || err === \"\") {\r\n msg = {\r\n type: \"error\",\r\n request_id: invocationId,\r\n reason_uri: \"agm.errors.client_error\",\r\n reason: err,\r\n context: result,\r\n peer_id: undefined,\r\n };\r\n }\r\n else {\r\n msg = {\r\n type: \"yield\",\r\n invocation_id: invocationId,\r\n peer_id: this.session.peerId,\r\n result: result,\r\n request_id: undefined,\r\n };\r\n }\r\n this.session.sendFireAndForget(msg);\r\n };\r\n ServerProtocol.prototype.unregister = function (method) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var msg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n msg = {\r\n type: \"unregister\",\r\n methods: [method.repoId],\r\n };\r\n return [4, this.session.send(msg)];\r\n case 1:\r\n _a.sent();\r\n return [2];\r\n }\r\n });\r\n });\r\n };\r\n ServerProtocol.prototype.getBranchList = function (method) {\r\n return this.streaming.getBranchList(method);\r\n };\r\n ServerProtocol.prototype.getSubscriptionList = function (method, branchKey) {\r\n return this.streaming.getSubscriptionList(method, branchKey);\r\n };\r\n ServerProtocol.prototype.closeAllSubscriptions = function (method, branchKey) {\r\n this.streaming.closeMultipleSubscriptions(method, branchKey);\r\n };\r\n ServerProtocol.prototype.pushData = function (method, data, branches) {\r\n this.streaming.pushData(method, data, branches);\r\n };\r\n ServerProtocol.prototype.pushDataToSingle = function (method, subscription, data) {\r\n this.streaming.pushDataToSingle(method, subscription, data);\r\n };\r\n ServerProtocol.prototype.closeSingleSubscription = function (method, subscription) {\r\n this.streaming.closeSingleSubscription(method, subscription);\r\n };\r\n ServerProtocol.prototype.acceptRequestOnBranch = function (requestContext, method, branch) {\r\n this.streaming.acceptRequestOnBranch(requestContext, method, branch);\r\n };\r\n ServerProtocol.prototype.rejectRequest = function (requestContext, method, reason) {\r\n this.streaming.rejectRequest(requestContext, method, reason);\r\n };\r\n ServerProtocol.prototype.onSubRequest = function (callback) {\r\n this.streaming.onSubRequest(callback);\r\n };\r\n ServerProtocol.prototype.onSubAdded = function (callback) {\r\n this.streaming.onSubAdded(callback);\r\n };\r\n ServerProtocol.prototype.onSubRemoved = function (callback) {\r\n this.streaming.onSubRemoved(callback);\r\n };\r\n ServerProtocol.prototype.handleInvokeMessage = function (msg) {\r\n var invocationId = msg.invocation_id;\r\n var callerId = msg.caller_id;\r\n var methodId = msg.method_id;\r\n var args = msg.arguments_kv;\r\n var methodList = this.serverRepository.getList();\r\n var method = methodList.filter(function (m) {\r\n return m.repoId === methodId;\r\n })[0];\r\n if (method === undefined) {\r\n return;\r\n }\r\n var client = this.clientRepository.getServerById(callerId).instance;\r\n var invocationArgs = { args: args, instance: client };\r\n this.callbacks.execute(\"onInvoked\", method, invocationId, invocationArgs);\r\n };\r\n return ServerProtocol;\r\n}());\n\nvar UserSubscription = (function () {\r\n function UserSubscription(repository, subscriptionData) {\r\n this.repository = repository;\r\n this.subscriptionData = subscriptionData;\r\n }\r\n Object.defineProperty(UserSubscription.prototype, \"requestArguments\", {\r\n get: function () {\r\n return this.subscriptionData.params.arguments || {};\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"servers\", {\r\n get: function () {\r\n var _this = this;\r\n return this.subscriptionData.trackedServers\r\n .filter(function (pair) { return pair.subscriptionId; })\r\n .map(function (pair) { return _this.repository.getServerById(pair.serverId).instance; });\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"serverInstance\", {\r\n get: function () {\r\n return this.servers[0];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(UserSubscription.prototype, \"stream\", {\r\n get: function () {\r\n return this.subscriptionData.method;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n UserSubscription.prototype.onData = function (dataCallback) {\r\n if (typeof dataCallback !== \"function\") {\r\n throw new TypeError(\"The data callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onData.push(dataCallback);\r\n if (this.subscriptionData.handlers.onData.length === 1 && this.subscriptionData.queued.data.length > 0) {\r\n this.subscriptionData.queued.data.forEach(function (dataItem) {\r\n dataCallback(dataItem);\r\n });\r\n }\r\n };\r\n UserSubscription.prototype.onClosed = function (closedCallback) {\r\n if (typeof closedCallback !== \"function\") {\r\n throw new TypeError(\"The callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onClosed.push(closedCallback);\r\n };\r\n UserSubscription.prototype.onFailed = function (callback) {\r\n };\r\n UserSubscription.prototype.onConnected = function (callback) {\r\n if (typeof callback !== \"function\") {\r\n throw new TypeError(\"The callback must be a function.\");\r\n }\r\n this.subscriptionData.handlers.onConnected.push(callback);\r\n };\r\n UserSubscription.prototype.close = function () {\r\n this.subscriptionData.close();\r\n };\r\n UserSubscription.prototype.setNewSubscription = function (newSub) {\r\n this.subscriptionData = newSub;\r\n };\r\n return UserSubscription;\r\n}());\n\nvar TimedCache = (function () {\r\n function TimedCache(config) {\r\n this.config = config;\r\n this.cache = [];\r\n this.timeoutIds = [];\r\n }\r\n TimedCache.prototype.add = function (element) {\r\n var _this = this;\r\n var id = shortid();\r\n this.cache.push({ id: id, element: element });\r\n var timeoutId = setTimeout(function () {\r\n var elementIdx = _this.cache.findIndex(function (entry) { return entry.id === id; });\r\n if (elementIdx < 0) {\r\n return;\r\n }\r\n _this.cache.splice(elementIdx, 1);\r\n }, this.config.ELEMENT_TTL_MS);\r\n this.timeoutIds.push(timeoutId);\r\n };\r\n TimedCache.prototype.flush = function () {\r\n var elements = this.cache.map(function (entry) { return entry.element; });\r\n this.timeoutIds.forEach(function (id) { return clearInterval(id); });\r\n this.cache = [];\r\n this.timeoutIds = [];\r\n return elements;\r\n };\r\n return TimedCache;\r\n}());\n\nvar STATUS_AWAITING_ACCEPT = \"awaitingAccept\";\r\nvar STATUS_SUBSCRIBED = \"subscribed\";\r\nvar ERR_MSG_SUB_FAILED = \"Subscription failed.\";\r\nvar ERR_MSG_SUB_REJECTED = \"Subscription rejected.\";\r\nvar ON_CLOSE_MSG_SERVER_INIT = \"ServerInitiated\";\r\nvar ON_CLOSE_MSG_CLIENT_INIT = \"ClientInitiated\";\r\nvar ClientStreaming = (function () {\r\n function ClientStreaming(session, repository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.logger = logger;\r\n this.subscriptionsList = {};\r\n this.timedCache = new TimedCache({ ELEMENT_TTL_MS: 10000 });\r\n this.subscriptionIdToLocalKeyMap = {};\r\n this.nextSubLocalKey = 0;\r\n this.handleErrorSubscribing = function (errorResponse) {\r\n var tag = errorResponse._tag;\r\n var subLocalKey = tag.subLocalKey;\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (typeof pendingSub !== \"object\") {\r\n return;\r\n }\r\n pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) {\r\n return server.serverId !== tag.serverId;\r\n });\r\n if (pendingSub.trackedServers.length <= 0) {\r\n clearTimeout(pendingSub.timeoutId);\r\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\r\n var reason = (typeof errorResponse.reason === \"string\" && errorResponse.reason !== \"\") ?\r\n ' Publisher said \"' + errorResponse.reason + '\".' :\r\n \" No reason given.\";\r\n var callArgs = typeof pendingSub.params.arguments === \"object\" ?\r\n JSON.stringify(pendingSub.params.arguments) :\r\n \"{}\";\r\n pendingSub.error({\r\n message: ERR_MSG_SUB_REJECTED + reason + \" Called with:\" + callArgs,\r\n called_with: pendingSub.params.arguments,\r\n method: pendingSub.method,\r\n });\r\n }\r\n else if (pendingSub.status === STATUS_SUBSCRIBED) {\r\n _this.callOnClosedHandlers(pendingSub);\r\n }\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n };\r\n this.handleSubscribed = function (msg) {\r\n var subLocalKey = msg._tag.subLocalKey;\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (typeof pendingSub !== \"object\") {\r\n return;\r\n }\r\n var serverId = msg._tag.serverId;\r\n var acceptingServer = pendingSub.trackedServers\r\n .filter(function (server) {\r\n return server.serverId === serverId;\r\n })[0];\r\n if (typeof acceptingServer !== \"object\") {\r\n return;\r\n }\r\n acceptingServer.subscriptionId = msg.subscription_id;\r\n _this.subscriptionIdToLocalKeyMap[msg.subscription_id] = subLocalKey;\r\n var isFirstResponse = (pendingSub.status === STATUS_AWAITING_ACCEPT);\r\n pendingSub.status = STATUS_SUBSCRIBED;\r\n if (isFirstResponse) {\r\n var reconnect = false;\r\n var sub = pendingSub.subscription;\r\n if (sub) {\r\n sub.setNewSubscription(pendingSub);\r\n pendingSub.success(sub);\r\n reconnect = true;\r\n }\r\n else {\r\n sub = new UserSubscription(_this.repository, pendingSub);\r\n pendingSub.subscription = sub;\r\n pendingSub.success(sub);\r\n }\r\n for (var _i = 0, _a = pendingSub.handlers.onConnected; _i < _a.length; _i++) {\r\n var handler = _a[_i];\r\n try {\r\n handler(sub.serverInstance, reconnect);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n }\r\n };\r\n this.handleEventData = function (msg) {\r\n var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n if (typeof subLocalKey === \"undefined\") {\r\n return;\r\n }\r\n var subscription = _this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n var trackedServersFound = subscription.trackedServers.filter(function (server) {\r\n return server.subscriptionId === msg.subscription_id;\r\n });\r\n if (trackedServersFound.length !== 1) {\r\n return;\r\n }\r\n var isPrivateData = msg.oob;\r\n var sendingServerId = trackedServersFound[0].serverId;\r\n var receivedStreamData = function () {\r\n return {\r\n data: msg.data,\r\n server: _this.repository.getServerById(sendingServerId).instance,\r\n requestArguments: subscription.params.arguments,\r\n message: undefined,\r\n private: isPrivateData,\r\n };\r\n };\r\n var onDataHandlers = subscription.handlers.onData;\r\n var queuedData = subscription.queued.data;\r\n if (onDataHandlers.length > 0) {\r\n onDataHandlers.forEach(function (callback) {\r\n if (typeof callback === \"function\") {\r\n callback(receivedStreamData());\r\n }\r\n });\r\n }\r\n else {\r\n queuedData.push(receivedStreamData());\r\n }\r\n };\r\n this.handleSubscriptionCancelled = function (msg) {\r\n var subLocalKey = _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n if (typeof subLocalKey === \"undefined\") {\r\n return;\r\n }\r\n var subscription = _this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n var expectedNewLength = subscription.trackedServers.length - 1;\r\n subscription.trackedServers = subscription.trackedServers.filter(function (server) {\r\n if (server.subscriptionId === msg.subscription_id) {\r\n subscription.queued.closers.push(server.serverId);\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n });\r\n if (subscription.trackedServers.length !== expectedNewLength) {\r\n return;\r\n }\r\n if (subscription.trackedServers.length <= 0) {\r\n _this.timedCache.add(subscription);\r\n clearTimeout(subscription.timeoutId);\r\n _this.callOnClosedHandlers(subscription);\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n delete _this.subscriptionIdToLocalKeyMap[msg.subscription_id];\r\n };\r\n session.on(\"subscribed\", this.handleSubscribed);\r\n session.on(\"event\", this.handleEventData);\r\n session.on(\"subscription-cancelled\", this.handleSubscriptionCancelled);\r\n }\r\n ClientStreaming.prototype.subscribe = function (streamingMethod, params, targetServers, success, error, existingSub) {\r\n var _this = this;\r\n if (targetServers.length === 0) {\r\n error({\r\n method: streamingMethod,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" No available servers matched the target params.\",\r\n });\r\n return;\r\n }\r\n var subLocalKey = this.getNextSubscriptionLocalKey();\r\n var pendingSub = this.registerSubscription(subLocalKey, streamingMethod, params, success, error, params.methodResponseTimeout || 10000, existingSub);\r\n if (typeof pendingSub !== \"object\") {\r\n error({\r\n method: streamingMethod,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" Unable to register the user callbacks.\",\r\n });\r\n return;\r\n }\r\n targetServers.forEach(function (target) {\r\n var serverId = target.server.id;\r\n var method = target.methods.find(function (m) { return m.name === streamingMethod.name; });\r\n if (!method) {\r\n _this.logger.error(\"can not find method \".concat(streamingMethod.name, \" for target \").concat(target.server.id));\r\n return;\r\n }\r\n pendingSub.trackedServers.push({\r\n serverId: serverId,\r\n subscriptionId: undefined,\r\n });\r\n var msg = {\r\n type: \"subscribe\",\r\n server_id: serverId,\r\n method_id: method.gatewayId,\r\n arguments_kv: params.arguments,\r\n };\r\n _this.session.send(msg, { serverId: serverId, subLocalKey: subLocalKey })\r\n .then(function (m) { return _this.handleSubscribed(m); })\r\n .catch(function (err) { return _this.handleErrorSubscribing(err); });\r\n });\r\n };\r\n ClientStreaming.prototype.drainSubscriptions = function () {\r\n var existing = Object.values(this.subscriptionsList);\r\n this.subscriptionsList = {};\r\n this.subscriptionIdToLocalKeyMap = {};\r\n return existing;\r\n };\r\n ClientStreaming.prototype.drainSubscriptionsCache = function () {\r\n return this.timedCache.flush();\r\n };\r\n ClientStreaming.prototype.getNextSubscriptionLocalKey = function () {\r\n var current = this.nextSubLocalKey;\r\n this.nextSubLocalKey += 1;\r\n return current;\r\n };\r\n ClientStreaming.prototype.registerSubscription = function (subLocalKey, method, params, success, error, timeout, existingSub) {\r\n var _this = this;\r\n var subsInfo = {\r\n localKey: subLocalKey,\r\n status: STATUS_AWAITING_ACCEPT,\r\n method: method,\r\n params: params,\r\n success: success,\r\n error: error,\r\n trackedServers: [],\r\n handlers: {\r\n onData: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onData) || [],\r\n onClosed: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onClosed) || [],\r\n onConnected: (existingSub === null || existingSub === void 0 ? void 0 : existingSub.handlers.onConnected) || [],\r\n },\r\n queued: {\r\n data: [],\r\n closers: [],\r\n },\r\n timeoutId: undefined,\r\n close: function () { return _this.closeSubscription(subLocalKey); },\r\n subscription: existingSub === null || existingSub === void 0 ? void 0 : existingSub.subscription\r\n };\r\n if (!existingSub) {\r\n if (params.onData) {\r\n subsInfo.handlers.onData.push(params.onData);\r\n }\r\n if (params.onClosed) {\r\n subsInfo.handlers.onClosed.push(params.onClosed);\r\n }\r\n if (params.onConnected) {\r\n subsInfo.handlers.onConnected.push(params.onConnected);\r\n }\r\n }\r\n this.subscriptionsList[subLocalKey] = subsInfo;\r\n subsInfo.timeoutId = setTimeout(function () {\r\n if (_this.subscriptionsList[subLocalKey] === undefined) {\r\n return;\r\n }\r\n var pendingSub = _this.subscriptionsList[subLocalKey];\r\n if (pendingSub.status === STATUS_AWAITING_ACCEPT) {\r\n error({\r\n method: method,\r\n called_with: params.arguments,\r\n message: ERR_MSG_SUB_FAILED + \" Subscription attempt timed out after \" + timeout + \" ms.\",\r\n });\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n else if (pendingSub.status === STATUS_SUBSCRIBED && pendingSub.trackedServers.length > 0) {\r\n pendingSub.trackedServers = pendingSub.trackedServers.filter(function (server) {\r\n return (typeof server.subscriptionId !== \"undefined\");\r\n });\r\n delete pendingSub.timeoutId;\r\n if (pendingSub.trackedServers.length <= 0) {\r\n _this.callOnClosedHandlers(pendingSub);\r\n delete _this.subscriptionsList[subLocalKey];\r\n }\r\n }\r\n }, timeout);\r\n return subsInfo;\r\n };\r\n ClientStreaming.prototype.callOnClosedHandlers = function (subscription, reason) {\r\n var closersCount = subscription.queued.closers.length;\r\n var closingServerId = (closersCount > 0) ? subscription.queued.closers[closersCount - 1] : null;\r\n var closingServer;\r\n if (closingServerId !== undefined && typeof closingServerId === \"string\") {\r\n closingServer = this.repository.getServerById(closingServerId).instance;\r\n }\r\n subscription.handlers.onClosed.forEach(function (callback) {\r\n if (typeof callback !== \"function\") {\r\n return;\r\n }\r\n callback({\r\n message: reason || ON_CLOSE_MSG_SERVER_INIT,\r\n requestArguments: subscription.params.arguments || {},\r\n server: closingServer,\r\n stream: subscription.method,\r\n });\r\n });\r\n };\r\n ClientStreaming.prototype.closeSubscription = function (subLocalKey) {\r\n var _this = this;\r\n var subscription = this.subscriptionsList[subLocalKey];\r\n if (typeof subscription !== \"object\") {\r\n return;\r\n }\r\n subscription.trackedServers.forEach(function (server) {\r\n if (typeof server.subscriptionId === \"undefined\") {\r\n return;\r\n }\r\n subscription.queued.closers.push(server.serverId);\r\n _this.session.sendFireAndForget({\r\n type: \"unsubscribe\",\r\n subscription_id: server.subscriptionId,\r\n reason_uri: \"\",\r\n reason: ON_CLOSE_MSG_CLIENT_INIT,\r\n });\r\n delete _this.subscriptionIdToLocalKeyMap[server.subscriptionId];\r\n });\r\n subscription.trackedServers = [];\r\n this.callOnClosedHandlers(subscription, ON_CLOSE_MSG_CLIENT_INIT);\r\n delete this.subscriptionsList[subLocalKey];\r\n };\r\n return ClientStreaming;\r\n}());\n\nvar ClientProtocol = (function () {\r\n function ClientProtocol(session, repository, logger) {\r\n var _this = this;\r\n this.session = session;\r\n this.repository = repository;\r\n this.logger = logger;\r\n session.on(\"peer-added\", function (msg) { return _this.handlePeerAdded(msg); });\r\n session.on(\"peer-removed\", function (msg) { return _this.handlePeerRemoved(msg); });\r\n session.on(\"methods-added\", function (msg) { return _this.handleMethodsAddedMessage(msg); });\r\n session.on(\"methods-removed\", function (msg) { return _this.handleMethodsRemovedMessage(msg); });\r\n this.streaming = new ClientStreaming(session, repository, logger);\r\n }\r\n ClientProtocol.prototype.subscribe = function (stream, options, targetServers, success, error, existingSub) {\r\n this.streaming.subscribe(stream, options, targetServers, success, error, existingSub);\r\n };\r\n ClientProtocol.prototype.invoke = function (id, method, args, target) {\r\n var _this = this;\r\n var serverId = target.id;\r\n var methodId = method.gatewayId;\r\n var msg = {\r\n type: \"call\",\r\n server_id: serverId,\r\n method_id: methodId,\r\n arguments_kv: args,\r\n };\r\n return this.session.send(msg, { invocationId: id, serverId: serverId })\r\n .then(function (m) { return _this.handleResultMessage(m); })\r\n .catch(function (err) { return _this.handleInvocationError(err); });\r\n };\r\n ClientProtocol.prototype.drainSubscriptions = function () {\r\n return this.streaming.drainSubscriptions();\r\n };\r\n ClientProtocol.prototype.drainSubscriptionsCache = function () {\r\n return this.streaming.drainSubscriptionsCache();\r\n };\r\n ClientProtocol.prototype.handlePeerAdded = function (msg) {\r\n var newPeerId = msg.new_peer_id;\r\n var remoteId = msg.identity;\r\n var isLocal = msg.meta ? msg.meta.local : true;\r\n var pid = Number(remoteId.process);\r\n var serverInfo = {\r\n machine: remoteId.machine,\r\n pid: isNaN(pid) ? remoteId.process : pid,\r\n instance: remoteId.instance,\r\n application: remoteId.application,\r\n applicationName: remoteId.applicationName,\r\n environment: remoteId.environment,\r\n region: remoteId.region,\r\n user: remoteId.user,\r\n windowId: remoteId.windowId,\r\n peerId: newPeerId,\r\n api: remoteId.api,\r\n isLocal: isLocal\r\n };\r\n this.repository.addServer(serverInfo, newPeerId);\r\n };\r\n ClientProtocol.prototype.handlePeerRemoved = function (msg) {\r\n var removedPeerId = msg.removed_id;\r\n var reason = msg.reason;\r\n this.repository.removeServerById(removedPeerId, reason);\r\n };\r\n ClientProtocol.prototype.handleMethodsAddedMessage = function (msg) {\r\n var _this = this;\r\n var serverId = msg.server_id;\r\n var methods = msg.methods;\r\n methods.forEach(function (method) {\r\n _this.repository.addServerMethod(serverId, method);\r\n });\r\n };\r\n ClientProtocol.prototype.handleMethodsRemovedMessage = function (msg) {\r\n var _this = this;\r\n var serverId = msg.server_id;\r\n var methodIdList = msg.methods;\r\n var server = this.repository.getServerById(serverId);\r\n var serverMethodKeys = Object.keys(server.methods);\r\n serverMethodKeys.forEach(function (methodKey) {\r\n var method = server.methods[methodKey];\r\n if (methodIdList.indexOf(method.gatewayId) > -1) {\r\n _this.repository.removeServerMethod(serverId, methodKey);\r\n }\r\n });\r\n };\r\n ClientProtocol.prototype.handleResultMessage = function (msg) {\r\n var invocationId = msg._tag.invocationId;\r\n var result = msg.result;\r\n var serverId = msg._tag.serverId;\r\n var server = this.repository.getServerById(serverId);\r\n return {\r\n invocationId: invocationId,\r\n result: result,\r\n instance: server.instance,\r\n status: InvokeStatus.Success,\r\n message: \"\"\r\n };\r\n };\r\n ClientProtocol.prototype.handleInvocationError = function (msg) {\r\n this.logger.debug(\"handle invocation error \".concat(JSON.stringify(msg)));\r\n if (\"_tag\" in msg) {\r\n var invocationId = msg._tag.invocationId;\r\n var serverId = msg._tag.serverId;\r\n var server = this.repository.getServerById(serverId);\r\n var message = msg.reason;\r\n var context_1 = msg.context;\r\n return {\r\n invocationId: invocationId,\r\n result: context_1,\r\n instance: server.instance,\r\n status: InvokeStatus.Error,\r\n message: message\r\n };\r\n }\r\n else {\r\n return {\r\n invocationId: \"\",\r\n message: msg.message,\r\n status: InvokeStatus.Error,\r\n error: msg\r\n };\r\n }\r\n };\r\n return ClientProtocol;\r\n}());\n\nfunction gW3ProtocolFactory (instance, connection, clientRepository, serverRepository, libConfig, interop) {\r\n var logger = libConfig.logger.subLogger(\"gw3-protocol\");\r\n var resolveReadyPromise;\r\n var readyPromise = new Promise(function (resolve) {\r\n resolveReadyPromise = resolve;\r\n });\r\n var session = connection.domain(\"agm\", [\"subscribed\"]);\r\n var server = new ServerProtocol(session, clientRepository, serverRepository, logger.subLogger(\"server\"));\r\n var client = new ClientProtocol(session, clientRepository, logger.subLogger(\"client\"));\r\n function handleReconnect() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reconnectionPromises, existingSubscriptions, _loop_1, _i, existingSubscriptions_1, sub, registeredMethods, _loop_2, _a, registeredMethods_1, method;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n logger.info(\"reconnected - will replay registered methods and subscriptions\");\r\n client.drainSubscriptionsCache().forEach(function (sub) {\r\n var methodInfo = sub.method;\r\n var params = Object.assign({}, sub.params);\r\n logger.info(\"trying to soft-re-subscribe to method \".concat(methodInfo.name, \", with params: \").concat(JSON.stringify(params)));\r\n interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info(\"soft-subscribing to method \".concat(methodInfo.name, \" DONE\")); }).catch(function (error) { return logger.warn(\"subscribing to method \".concat(methodInfo.name, \" failed: \").concat(JSON.stringify(error), \"}\")); });\r\n });\r\n reconnectionPromises = [];\r\n existingSubscriptions = client.drainSubscriptions();\r\n _loop_1 = function (sub) {\r\n var methodInfo = sub.method;\r\n var params = Object.assign({}, sub.params);\r\n logger.info(\"trying to re-subscribe to method \".concat(methodInfo.name, \", with params: \").concat(JSON.stringify(params)));\r\n reconnectionPromises.push(interop.client.subscribe(methodInfo, params, undefined, undefined, sub).then(function () { return logger.info(\"subscribing to method \".concat(methodInfo.name, \" DONE\")); }));\r\n };\r\n for (_i = 0, existingSubscriptions_1 = existingSubscriptions; _i < existingSubscriptions_1.length; _i++) {\r\n sub = existingSubscriptions_1[_i];\r\n _loop_1(sub);\r\n }\r\n registeredMethods = serverRepository.getList();\r\n serverRepository.reset();\r\n _loop_2 = function (method) {\r\n var def = method.definition;\r\n logger.info(\"re-publishing method \".concat(def.name));\r\n if (method.stream) {\r\n reconnectionPromises.push(interop.server.createStream(def, method.streamCallbacks, undefined, undefined, method.stream).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n else if (method.theFunction && method.theFunction.userCallback) {\r\n reconnectionPromises.push(interop.register(def, method.theFunction.userCallback).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n else if (method.theFunction && method.theFunction.userCallbackAsync) {\r\n reconnectionPromises.push(interop.registerAsync(def, method.theFunction.userCallbackAsync).then(function () { return logger.info(\"subscribing to method \".concat(def.name, \" DONE\")); }));\r\n }\r\n logger.info(\"re-publishing method \".concat(def.name, \" DONE\"));\r\n };\r\n for (_a = 0, registeredMethods_1 = registeredMethods; _a < registeredMethods_1.length; _a++) {\r\n method = registeredMethods_1[_a];\r\n _loop_2(method);\r\n }\r\n return [4, Promise.all(reconnectionPromises)];\r\n case 1:\r\n _b.sent();\r\n logger.info(\"Interop is re-announced\");\r\n return [2];\r\n }\r\n });\r\n });\r\n }\r\n function handleInitialJoin() {\r\n if (resolveReadyPromise) {\r\n resolveReadyPromise({\r\n client: client,\r\n server: server,\r\n });\r\n resolveReadyPromise = undefined;\r\n }\r\n }\r\n session.onJoined(function (reconnect) {\r\n clientRepository.addServer(instance, connection.peerId);\r\n if (reconnect) {\r\n handleReconnect().then(function () { return connection.setLibReAnnounced({ name: \"interop\" }); }).catch(function (error) { return logger.warn(\"Error while re-announcing interop: \".concat(JSON.stringify(error))); });\r\n }\r\n else {\r\n handleInitialJoin();\r\n }\r\n });\r\n session.onLeft(function () {\r\n clientRepository.reset();\r\n });\r\n session.join();\r\n return readyPromise;\r\n}\n\nvar Interop = (function () {\r\n function Interop(configuration) {\r\n var _this = this;\r\n if (typeof configuration === \"undefined\") {\r\n throw new Error(\"configuration is required\");\r\n }\r\n if (typeof configuration.connection === \"undefined\") {\r\n throw new Error(\"configuration.connections is required\");\r\n }\r\n var connection = configuration.connection;\r\n if (typeof configuration.methodResponseTimeout !== \"number\") {\r\n configuration.methodResponseTimeout = 30 * 1000;\r\n }\r\n if (typeof configuration.waitTimeoutMs !== \"number\") {\r\n configuration.waitTimeoutMs = 30 * 1000;\r\n }\r\n this.unwrappedInstance = new InstanceWrapper(this, undefined, connection);\r\n this.instance = this.unwrappedInstance.unwrap();\r\n this.clientRepository = new ClientRepository(configuration.logger.subLogger(\"cRep\"), this);\r\n this.serverRepository = new ServerRepository();\r\n var protocolPromise;\r\n if (connection.protocolVersion === 3) {\r\n protocolPromise = gW3ProtocolFactory(this.instance, connection, this.clientRepository, this.serverRepository, configuration, this);\r\n }\r\n else {\r\n throw new Error(\"protocol \".concat(connection.protocolVersion, \" not supported\"));\r\n }\r\n this.readyPromise = protocolPromise.then(function (protocol) {\r\n _this.protocol = protocol;\r\n _this.client = new Client(_this.protocol, _this.clientRepository, _this.instance, configuration);\r\n _this.server = new Server(_this.protocol, _this.serverRepository);\r\n return _this;\r\n });\r\n }\r\n Interop.prototype.ready = function () {\r\n return this.readyPromise;\r\n };\r\n Interop.prototype.serverRemoved = function (callback) {\r\n return this.client.serverRemoved(callback);\r\n };\r\n Interop.prototype.serverAdded = function (callback) {\r\n return this.client.serverAdded(callback);\r\n };\r\n Interop.prototype.serverMethodRemoved = function (callback) {\r\n return this.client.serverMethodRemoved(callback);\r\n };\r\n Interop.prototype.serverMethodAdded = function (callback) {\r\n return this.client.serverMethodAdded(callback);\r\n };\r\n Interop.prototype.methodRemoved = function (callback) {\r\n return this.client.methodRemoved(callback);\r\n };\r\n Interop.prototype.methodAdded = function (callback) {\r\n return this.client.methodAdded(callback);\r\n };\r\n Interop.prototype.methodsForInstance = function (instance) {\r\n return this.client.methodsForInstance(instance);\r\n };\r\n Interop.prototype.methods = function (methodFilter) {\r\n return this.client.methods(methodFilter);\r\n };\r\n Interop.prototype.servers = function (methodFilter) {\r\n return this.client.servers(methodFilter);\r\n };\r\n Interop.prototype.subscribe = function (method, options, successCallback, errorCallback) {\r\n return this.client.subscribe(method, options, successCallback, errorCallback);\r\n };\r\n Interop.prototype.createStream = function (streamDef, callbacks, successCallback, errorCallback) {\r\n return this.server.createStream(streamDef, callbacks, successCallback, errorCallback);\r\n };\r\n Interop.prototype.unregister = function (methodFilter) {\r\n return this.server.unregister(methodFilter);\r\n };\r\n Interop.prototype.registerAsync = function (methodDefinition, callback) {\r\n return this.server.registerAsync(methodDefinition, callback);\r\n };\r\n Interop.prototype.register = function (methodDefinition, callback) {\r\n return this.server.register(methodDefinition, callback);\r\n };\r\n Interop.prototype.invoke = function (methodFilter, argumentObj, target, additionalOptions, success, error) {\r\n return this.client.invoke(methodFilter, argumentObj, target, additionalOptions, success, error);\r\n };\r\n Interop.prototype.waitForMethod = function (name) {\r\n var pw = new PromiseWrapper();\r\n var unsubscribe = this.client.methodAdded(function (m) {\r\n if (m.name === name) {\r\n unsubscribe();\r\n pw.resolve(m);\r\n }\r\n });\r\n return pw.promise;\r\n };\r\n return Interop;\r\n}());\n\nvar successMessages = [\"subscribed\", \"success\"];\r\nvar MessageBus = (function () {\r\n function MessageBus(connection, logger) {\r\n var _this = this;\r\n this.publish = function (topic, data, options) {\r\n var _a = options || {}, routingKey = _a.routingKey, target = _a.target;\r\n var args = _this.removeEmptyValues({\r\n type: \"publish\",\r\n topic: topic,\r\n data: data,\r\n peer_id: _this.peerId,\r\n routing_key: routingKey,\r\n target_identity: target\r\n });\r\n _this.session.send(args);\r\n };\r\n this.subscribe = function (topic, callback, options) {\r\n return new Promise(function (resolve, reject) {\r\n var _a = options || {}, routingKey = _a.routingKey, target = _a.target;\r\n var args = _this.removeEmptyValues({\r\n type: \"subscribe\",\r\n topic: topic,\r\n peer_id: _this.peerId,\r\n routing_key: routingKey,\r\n source: target\r\n });\r\n _this.session.send(args)\r\n .then(function (response) {\r\n var subscription_id = response.subscription_id;\r\n _this.subscriptions.push({ subscription_id: subscription_id, topic: topic, callback: callback, source: target });\r\n resolve({\r\n unsubscribe: function () {\r\n _this.session.send({ type: \"unsubscribe\", subscription_id: subscription_id, peer_id: _this.peerId });\r\n _this.subscriptions = _this.subscriptions.filter(function (s) { return s.subscription_id !== subscription_id; });\r\n return Promise.resolve();\r\n }\r\n });\r\n })\r\n .catch(function (error) { return reject(error); });\r\n });\r\n };\r\n this.watchOnEvent = function () {\r\n _this.session.on(\"event\", function (args) {\r\n var data = args.data, subscription_id = args.subscription_id;\r\n var source = args[\"publisher-identity\"];\r\n var subscription = _this.subscriptions.find(function (s) { return s.subscription_id === subscription_id; });\r\n if (subscription) {\r\n if (!subscription.source) {\r\n subscription.callback(data, subscription.topic, source);\r\n }\r\n else {\r\n if (_this.keysMatch(subscription.source, source)) {\r\n subscription.callback(data, subscription.topic, source);\r\n }\r\n }\r\n }\r\n });\r\n };\r\n this.connection = connection;\r\n this.logger = logger;\r\n this.peerId = connection.peerId;\r\n this.subscriptions = [];\r\n this.session = connection.domain(\"bus\", successMessages);\r\n this.readyPromise = this.session.join();\r\n this.readyPromise.then(function () {\r\n _this.watchOnEvent();\r\n });\r\n }\r\n MessageBus.prototype.ready = function () {\r\n return this.readyPromise;\r\n };\r\n MessageBus.prototype.removeEmptyValues = function (obj) {\r\n var cleaned = {};\r\n Object.keys(obj).forEach(function (key) {\r\n if (obj[key] !== undefined && obj[key] !== null) {\r\n cleaned[key] = obj[key];\r\n }\r\n });\r\n return cleaned;\r\n };\r\n MessageBus.prototype.keysMatch = function (obj1, obj2) {\r\n var keysObj1 = Object.keys(obj1);\r\n var allMatch = true;\r\n keysObj1.forEach(function (key) {\r\n if (obj1[key] !== obj2[key]) {\r\n allMatch = false;\r\n }\r\n });\r\n return allMatch;\r\n };\r\n return MessageBus;\r\n}());\n\nvar IOConnectCoreFactory = function (userConfig, ext) {\r\n var _a, _b;\r\n var iodesktop = typeof window === \"object\" ? ((_a = window.iodesktop) !== null && _a !== void 0 ? _a : window.glue42gd) : undefined;\r\n var preloadPromise = typeof window === \"object\" ? ((_b = window.gdPreloadPromise) !== null && _b !== void 0 ? _b : Promise.resolve()) : Promise.resolve();\r\n var glueInitTimer = timer(\"glue\");\r\n userConfig = userConfig || {};\r\n ext = ext || {};\r\n var internalConfig = prepareConfig(userConfig, ext, iodesktop);\r\n var _connection;\r\n var _interop;\r\n var _logger;\r\n var _metrics;\r\n var _contexts;\r\n var _bus;\r\n var _allowTrace;\r\n var libs = {};\r\n function registerLib(name, inner, t) {\r\n _allowTrace = _logger.canPublish(\"trace\");\r\n if (_allowTrace) {\r\n _logger.trace(\"registering \".concat(name, \" module\"));\r\n }\r\n var done = function () {\r\n inner.initTime = t.stop();\r\n inner.initEndTime = t.endTime;\r\n inner.marks = t.marks;\r\n if (_allowTrace) {\r\n _logger.trace(\"\".concat(name, \" is ready - \").concat(t.endTime - t.startTime));\r\n }\r\n };\r\n inner.initStartTime = t.startTime;\r\n if (inner.ready) {\r\n inner.ready().then(function () {\r\n done();\r\n });\r\n }\r\n else {\r\n done();\r\n }\r\n if (!Array.isArray(name)) {\r\n name = [name];\r\n }\r\n name.forEach(function (n) {\r\n libs[n] = inner;\r\n IOConnectCoreFactory[n] = inner;\r\n });\r\n }\r\n function setupConnection() {\r\n var initTimer = timer(\"connection\");\r\n _connection = new Connection(internalConfig.connection, _logger.subLogger(\"connection\"));\r\n var authPromise = Promise.resolve(internalConfig.auth);\r\n if (internalConfig.connection && !internalConfig.auth) {\r\n if (iodesktop) {\r\n authPromise = iodesktop.getGWToken()\r\n .then(function (token) {\r\n return {\r\n gatewayToken: token\r\n };\r\n });\r\n }\r\n else if (typeof window !== \"undefined\" && (window === null || window === void 0 ? void 0 : window.glue42electron)) {\r\n if (typeof window.glue42electron.gwToken === \"string\") {\r\n authPromise = Promise.resolve({\r\n gatewayToken: window.glue42electron.gwToken\r\n });\r\n }\r\n }\r\n else {\r\n authPromise = Promise.reject(\"You need to provide auth information\");\r\n }\r\n }\r\n return authPromise\r\n .then(function (authConfig) {\r\n initTimer.mark(\"auth-promise-resolved\");\r\n var authRequest;\r\n if (Object.prototype.toString.call(authConfig) === \"[object Object]\") {\r\n authRequest = authConfig;\r\n }\r\n else {\r\n throw new Error(\"Invalid auth object - \" + JSON.stringify(authConfig));\r\n }\r\n return _connection.login(authRequest);\r\n })\r\n .then(function () {\r\n registerLib(\"connection\", _connection, initTimer);\r\n return internalConfig;\r\n })\r\n .catch(function (e) {\r\n if (_connection) {\r\n _connection.logout();\r\n }\r\n throw e;\r\n });\r\n }\r\n function setupLogger() {\r\n var _a;\r\n var initTimer = timer(\"logger\");\r\n _logger = new Logger(\"\".concat((_a = internalConfig.connection.identity) === null || _a === void 0 ? void 0 : _a.application), undefined, internalConfig.customLogger);\r\n _logger.consoleLevel(internalConfig.logger.console);\r\n _logger.publishLevel(internalConfig.logger.publish);\r\n if (_logger.canPublish(\"debug\")) {\r\n _logger.debug(\"initializing glue...\");\r\n }\r\n registerLib(\"logger\", _logger, initTimer);\r\n return Promise.resolve(undefined);\r\n }\r\n function setupMetrics() {\r\n var _a, _b, _c, _d, _e;\r\n var initTimer = timer(\"metrics\");\r\n var config = internalConfig.metrics;\r\n var metricsPublishingEnabledFunc = iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.getMetricsPublishingEnabled;\r\n var identity = internalConfig.connection.identity;\r\n var canUpdateMetric = metricsPublishingEnabledFunc ? metricsPublishingEnabledFunc : function () { return true; };\r\n var disableAutoAppSystem = (_a = (typeof config !== \"boolean\" && config.disableAutoAppSystem)) !== null && _a !== void 0 ? _a : false;\r\n _metrics = metrics({\r\n connection: config ? _connection : undefined,\r\n logger: _logger.subLogger(\"metrics\"),\r\n canUpdateMetric: canUpdateMetric,\r\n system: \"Glue42\",\r\n service: (_c = (_b = identity === null || identity === void 0 ? void 0 : identity.service) !== null && _b !== void 0 ? _b : iodesktop === null || iodesktop === void 0 ? void 0 : iodesktop.applicationName) !== null && _c !== void 0 ? _c : internalConfig.application,\r\n instance: (_e = (_d = identity === null || identity === void 0 ? void 0 : identity.instance) !== null && _d !== void 0 ? _d : identity === null || identity === void 0 ? void 0 : identity.windowId) !== null && _e !== void 0 ? _e : shortid(),\r\n disableAutoAppSystem: disableAutoAppSystem,\r\n pagePerformanceMetrics: typeof config !== \"boolean\" ? config === null || config === void 0 ? void 0 : config.pagePerformanceMetrics : undefined\r\n });\r\n registerLib(\"metrics\", _metrics, initTimer);\r\n return Promise.resolve();\r\n }\r\n function setupInterop() {\r\n var initTimer = timer(\"interop\");\r\n var agmConfig = {\r\n connection: _connection,\r\n logger: _logger.subLogger(\"interop\"),\r\n };\r\n _interop = new Interop(agmConfig);\r\n Logger.Interop = _interop;\r\n registerLib([\"interop\", \"agm\"], _interop, initTimer);\r\n return Promise.resolve();\r\n }\r\n function setupContexts() {\r\n var hasActivities = (internalConfig.activities && _connection.protocolVersion === 3);\r\n var needsContexts = internalConfig.contexts || hasActivities;\r\n if (needsContexts) {\r\n var initTimer = timer(\"contexts\");\r\n _contexts = new ContextsModule({\r\n connection: _connection,\r\n logger: _logger.subLogger(\"contexts\"),\r\n trackAllContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.trackAllContexts : false,\r\n reAnnounceKnownContexts: typeof internalConfig.contexts === \"object\" ? internalConfig.contexts.reAnnounceKnownContexts : false\r\n });\r\n registerLib(\"contexts\", _contexts, initTimer);\r\n return _contexts;\r\n }\r\n else {\r\n var replayer = _connection.replayer;\r\n if (replayer) {\r\n replayer.drain(ContextMessageReplaySpec.name);\r\n }\r\n }\r\n }\r\n function setupBus() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var initTimer;\r\n return __generator(this, function (_a) {\r\n if (!internalConfig.bus) {\r\n return [2, Promise.resolve()];\r\n }\r\n initTimer = timer(\"bus\");\r\n _bus = new MessageBus(_connection, _logger.subLogger(\"bus\"));\r\n registerLib(\"bus\", _bus, initTimer);\r\n return [2, Promise.resolve()];\r\n });\r\n });\r\n }\r\n function setupExternalLibs(externalLibs) {\r\n try {\r\n externalLibs.forEach(function (lib) {\r\n setupExternalLib(lib.name, lib.create);\r\n });\r\n return Promise.resolve();\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n }\r\n function setupExternalLib(name, createCallback) {\r\n var initTimer = timer(name);\r\n var lib = createCallback(libs);\r\n if (lib) {\r\n registerLib(name, lib, initTimer);\r\n }\r\n }\r\n function waitForLibs() {\r\n var libsReadyPromises = Object.keys(libs).map(function (key) {\r\n var lib = libs[key];\r\n return lib.ready ?\r\n lib.ready() : Promise.resolve();\r\n });\r\n return Promise.all(libsReadyPromises);\r\n }\r\n function constructGlueObject() {\r\n var feedbackFunc = function (feedbackInfo) {\r\n if (!_interop) {\r\n return;\r\n }\r\n _interop.invoke(\"T42.ACS.Feedback\", feedbackInfo, \"best\");\r\n };\r\n var info = {\r\n coreVersion: version,\r\n version: internalConfig.version\r\n };\r\n glueInitTimer.stop();\r\n var glue = {\r\n feedback: feedbackFunc,\r\n info: info,\r\n logger: _logger,\r\n interop: _interop,\r\n agm: _interop,\r\n connection: _connection,\r\n metrics: _metrics,\r\n contexts: _contexts,\r\n bus: _bus,\r\n version: internalConfig.version,\r\n userConfig: userConfig,\r\n done: function () {\r\n _logger === null || _logger === void 0 ? void 0 : _logger.info(\"done called by user...\");\r\n return _connection.logout();\r\n }\r\n };\r\n glue.performance = {\r\n get glueVer() {\r\n return internalConfig.version;\r\n },\r\n get glueConfig() {\r\n return JSON.stringify(userConfig);\r\n },\r\n get browser() {\r\n return window.performance.timing.toJSON();\r\n },\r\n get memory() {\r\n return window.performance.memory;\r\n },\r\n get initTimes() {\r\n var all = getAllTimers();\r\n return Object.keys(all).map(function (key) {\r\n var t = all[key];\r\n return {\r\n name: key,\r\n duration: t.endTime - t.startTime,\r\n marks: t.marks,\r\n startTime: t.startTime,\r\n endTime: t.endTime\r\n };\r\n });\r\n }\r\n };\r\n Object.keys(libs).forEach(function (key) {\r\n var lib = libs[key];\r\n glue[key] = lib;\r\n });\r\n glue.config = {};\r\n Object.keys(internalConfig).forEach(function (k) {\r\n glue.config[k] = internalConfig[k];\r\n });\r\n if (ext && ext.extOptions) {\r\n Object.keys(ext.extOptions).forEach(function (k) {\r\n glue.config[k] = ext === null || ext === void 0 ? void 0 : ext.extOptions[k];\r\n });\r\n }\r\n if (ext === null || ext === void 0 ? void 0 : ext.enrichGlue) {\r\n ext.enrichGlue(glue);\r\n }\r\n if (iodesktop && iodesktop.updatePerfData) {\r\n iodesktop.updatePerfData(glue.performance);\r\n }\r\n if (glue.agm) {\r\n var deprecatedDecorator = function (fn, wrong, proper) {\r\n return function () {\r\n glue.logger.warn(\"glue.js - 'glue.agm.\".concat(wrong, \"' method is deprecated, use 'glue.interop.\").concat(proper, \"' instead.\"));\r\n return fn.apply(glue.agm, arguments);\r\n };\r\n };\r\n var agmAny = glue.agm;\r\n agmAny.method_added = deprecatedDecorator(glue.agm.methodAdded, \"method_added\", \"methodAdded\");\r\n agmAny.method_removed = deprecatedDecorator(glue.agm.methodRemoved, \"method_removed\", \"methodRemoved\");\r\n agmAny.server_added = deprecatedDecorator(glue.agm.serverAdded, \"server_added\", \"serverAdded\");\r\n agmAny.server_method_aded = deprecatedDecorator(glue.agm.serverMethodAdded, \"server_method_aded\", \"serverMethodAdded\");\r\n agmAny.server_method_removed = deprecatedDecorator(glue.agm.serverMethodRemoved, \"server_method_removed\", \"serverMethodRemoved\");\r\n }\r\n return glue;\r\n }\r\n function registerInstanceIfNeeded() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var RegisterInstanceMethodName, isMethodAvailable, error_1, typedError;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n RegisterInstanceMethodName = \"T42.ACS.RegisterInstance\";\r\n if (!(Utils.isNode() && typeof process.env._GD_STARTING_CONTEXT_ === \"undefined\" && typeof (userConfig === null || userConfig === void 0 ? void 0 : userConfig.application) !== \"undefined\")) return [3, 4];\r\n isMethodAvailable = _interop.methods({ name: RegisterInstanceMethodName }).length > 0;\r\n if (!isMethodAvailable) return [3, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4, _interop.invoke(RegisterInstanceMethodName, { appName: userConfig === null || userConfig === void 0 ? void 0 : userConfig.application, pid: process.pid })];\r\n case 2:\r\n _a.sent();\r\n return [3, 4];\r\n case 3:\r\n error_1 = _a.sent();\r\n typedError = error_1;\r\n _logger.error(\"Cannot register as an instance: \".concat(JSON.stringify(typedError.message)));\r\n return [3, 4];\r\n case 4: return [2];\r\n }\r\n });\r\n });\r\n }\r\n return preloadPromise\r\n .then(setupLogger)\r\n .then(setupConnection)\r\n .then(function () { return Promise.all([setupMetrics(), setupInterop(), setupContexts(), setupBus()]); })\r\n .then(function () { return _interop.readyPromise; })\r\n .then(function () { return registerInstanceIfNeeded(); })\r\n .then(function () {\r\n return setupExternalLibs(internalConfig.libs || []);\r\n })\r\n .then(waitForLibs)\r\n .then(constructGlueObject)\r\n .catch(function (err) {\r\n return Promise.reject({\r\n err: err,\r\n libs: libs\r\n });\r\n });\r\n};\r\nif (typeof window !== \"undefined\") {\r\n window.IOConnectCore = IOConnectCoreFactory;\r\n}\r\nIOConnectCoreFactory.version = version;\r\nIOConnectCoreFactory.default = IOConnectCoreFactory;\n\nexport { IOConnectCoreFactory as default };\n//# sourceMappingURL=core.es.js.map\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { createFactoryFunction } from \"./web\";\nimport createIoConnectCore from \"@interopio/core\";\nimport { version } from \"../package.json\";\n\nconst iOConnectBrowserFactory = createFactoryFunction(createIoConnectCore);\n\n// attach to window object\nif (typeof window !== \"undefined\") {\n const windowAny = window as any;\n\n windowAny.IOBrowser = iOConnectBrowserFactory;\n\n delete windowAny.GlueCore;\n delete windowAny.IOConnectCore;\n}\n\nconst legacyGlobal = (window as any).glue42gd || (window as any).glue42core;\nconst ioGlobal = (window as any).iodesktop || (window as any).iobrowser;\n\nif (!legacyGlobal && !ioGlobal) {\n (window as any).iobrowser = { webStarted: false };\n}\n\n(iOConnectBrowserFactory as any).version = version;\n\nexport default iOConnectBrowserFactory;\n"],"names":["ok","err","asPromise","withDefault","withException","map","map2","mapError","andThen","__assign","__rest","isEqual","isJsonArray","isJsonObject","typeString","expectedGot","printPath","prependAt","Decoder","string","number","boolean","anyJson","constant","object","array","optional","oneOf","nonEmptyStringDecoder","nonNegativeNumberDecoder","intentDefinitionDecoder","IoC","operations","createRegistry","lib","CallbackRegistryFactory","PromisePlus","seed","getNextValue","setSeed","randomFromSeed","require$$0","ORIGINAL","alphabet","previousSeed","shuffled","reset","setCharacters","characters","shuffle","getShuffled","lookup","get","alphabet_1","crypto","randomByte","randomByteBrowser","format_browser","random","require$$1","format","require$$2","generate","generate_1","REDUCE_TIME","version","counter","previousSeconds","build","build_1","isShortId","isValid","shortid","__awaiter","createIoConnectCore"],"mappings":"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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,WAAW,CAAC,KAAK,EAAE;AAC7B,GAAG,OAAO,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,iBAAiB,CAAC,KAAK,EAAE;AACnC,GAAG,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AACpD,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,IAAI,QAAQ,GAAG,cAAc,IAAI,SAAS,CAAC;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,UAAU,CAAC,KAAK,EAAE;AAC5B;AACA;AACA,GAAG,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAC/D,GAAG,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,MAAM,CAAC;AAC1C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC1B,GAAG,OAAO,OAAO,KAAK,IAAI,QAAQ;AAClC,KAAK,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,gBAAgB,CAAC;AAC/D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,QAAQ,CAAC,KAAK,EAAE;AAC1B,GAAG,IAAI,IAAI,GAAG,OAAO,KAAK,CAAC;AAC3B,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC;AAC9D,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,YAAY,CAAC,KAAK,EAAE;AAC9B,GAAG,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,IAAI,QAAQ,CAAC;AAC9C,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE;AACvB,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AACzE,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,GAAG;AACtB,GAAG,OAAO,EAAE,CAAC;AACb,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,SAAS,SAAS,GAAG;AACtB,GAAG,OAAO,KAAK,CAAC;AAChB,EAAE;AACF;AACA,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;AAC5B,CAAC,EAAE,gBAAgB,EAAE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"} \ No newline at end of file diff --git a/browser-platform-dev-react-seed/intents-resolver-ui/asset-manifest.json b/browser-platform-dev-react-seed/intents-resolver-ui/asset-manifest.json index d350907..4dc242a 100644 --- a/browser-platform-dev-react-seed/intents-resolver-ui/asset-manifest.json +++ b/browser-platform-dev-react-seed/intents-resolver-ui/asset-manifest.json @@ -1,15 +1,15 @@ { "files": { "main.css": "./static/css/main.20e683fe.css", - "main.js": "./static/js/main.3f836378.js", + "main.js": "./static/js/main.37f9cff4.js", "static/js/787.17e09523.chunk.js": "./static/js/787.17e09523.chunk.js", "index.html": "./index.html", "main.20e683fe.css.map": "./static/css/main.20e683fe.css.map", - "main.3f836378.js.map": "./static/js/main.3f836378.js.map", + "main.37f9cff4.js.map": "./static/js/main.37f9cff4.js.map", "787.17e09523.chunk.js.map": "./static/js/787.17e09523.chunk.js.map" }, "entrypoints": [ "static/css/main.20e683fe.css", - "static/js/main.3f836378.js" + "static/js/main.37f9cff4.js" ] } \ No newline at end of file diff --git a/browser-platform-dev-react-seed/intents-resolver-ui/index.html b/browser-platform-dev-react-seed/intents-resolver-ui/index.html index 3a94147..cbb7c81 100644 --- a/browser-platform-dev-react-seed/intents-resolver-ui/index.html +++ b/browser-platform-dev-react-seed/intents-resolver-ui/index.html @@ -1 +1 @@ -
\ No newline at end of file +
\ No newline at end of file diff --git a/browser-platform-dev-react-seed/intents-resolver-ui/static/js/main.37f9cff4.js b/browser-platform-dev-react-seed/intents-resolver-ui/static/js/main.37f9cff4.js new file mode 100644 index 0000000..00fa0a8 --- /dev/null +++ b/browser-platform-dev-react-seed/intents-resolver-ui/static/js/main.37f9cff4.js @@ -0,0 +1,3 @@ +/*! For license information please see main.37f9cff4.js.LICENSE.txt */ +(()=>{var e={664:function(e,t,n){e.exports=function(){"use strict";var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};function t(t,n){if("function"!==typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}var i=function(){return i=Object.assign||function(e){for(var t,n=1,i=arguments.length;n0&&r[r.length-1])&&(6===a[0]||2===a[0])){s=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]0&&"/"!==e[0]?"/"+e:e}function p(e){return"timestamp"===c(e)?Date.now():f(e.value)}function f(e){return"object"!==typeof e?e:Object.keys(e).reduce((function(t,n){var i=e[n];return"object"===typeof i&&i.constructor!==Date?t[n]=f(i):i.constructor===Date?t[n]=new Date(i).getTime():i.constructor===Boolean?t[n]=i.toString():t[n]=i,t}),{})}function g(e){return e.reduce((function(e,t){return e.concat(Array.isArray(t)?g(t):t)}),[])}function m(e){return e.sort((function(e,t){return e.state?t.state?t.state-e.state:-1:1}))[0]}function v(e){var t="";return e.forEach((function(e,n,i){var r=e.path.join(".");n===i.length-1?t+=r+"."+e.name+": "+e.description:t+=r+"."+e.name+": "+e.description+","})),t.length>100?t.slice(0,100)+"...":t}function y(e){var t=g(e.root.getAggregateState()),n=m(t);return{description:v(t),value:n.state}}function w(e,t){var n,s,a=this;if(!e||"object"!==typeof e)throw new Error("Connection is required parameter");var c=function(i){var r;n=new Promise((function(e){r=e})),(s=e.domain("metrics")).onJoined((function(e){!e&&r&&(r(),r=void 0);var t={type:"define",metrics:[{name:"/State",type:"object",composite:{Description:{type:"string",description:""},Value:{type:"number",description:""}},description:"System state",context:{}}]};s.send(t),e&&u(i)})),s.join({system:t.system,service:t.service,instance:t.instance})},u=function(e){l(e.root)},l=function(e){f(e),e.metrics.forEach((function(e){m(e)})),e.subSystems.forEach((function(e){l(e)}))},f=function(e){return r(a,void 0,void 0,(function(){var t,i;return o(this,(function(r){switch(r.label){case 0:return void 0===e.parent?[2]:[4,n];case 1:return r.sent(),t={name:h(e.path.join("/")+"/"+e.name+"/State"),type:"object",composite:{Description:{type:"string",description:""},Value:{type:"number",description:""}},description:"System state",context:{}},i={type:"define",metrics:[t]},s.send(i),[2]}}))}))},g=function(t,i){return r(a,void 0,void 0,(function(){var r,a,c;return o(this,(function(o){switch(o.label){case 0:return[4,n];case 1:return o.sent(),r={type:"publish",values:[{name:h(t.path.join("/")+"/"+t.name+"/State"),value:{Description:i.description,Value:i.state},timestamp:Date.now()}]},s.send(r),a=y(t),c={type:"publish",peer_id:e.peerId,values:[{name:"/State",value:{Description:a.description,Value:a.value},timestamp:Date.now()}]},s.send(c),[2]}}))}))},m=function(e){return r(a,void 0,void 0,(function(){var t,i,r;return o(this,(function(o){switch(o.label){case 0:return t=b(e),[4,n];case 1:return o.sent(),i=d(t),r={type:"define",metrics:[i]},s.send(r),"undefined"!==typeof t.value&&w(t),[2]}}))}))},v=function(e){return r(a,void 0,void 0,(function(){var t;return o(this,(function(i){switch(i.label){case 0:return t=b(e),[4,n];case 1:return i.sent(),w(t),[2]}}))}))},w=function(e){if(_()){var t=p(e),n={type:"publish",values:[{name:h(e.path.join("/")+"/"+e.name),value:t,timestamp:Date.now()}]};return s.sendFireAndForget(n)}return Promise.resolve()},b=function(e){var t=i({},e);return"object"===typeof e.value&&null!==e.value&&(t.value=i({},e.value)),t},_=function(){var e;try{return(null!==(e=t.canUpdateMetric)&&void 0!==e?e:function(){return!0})()}catch(Bo){return!0}};return{init:c,createSystem:f,updateSystem:g,createMetric:m,updateMetric:v}}var b={validate:function(e,t,n){if(null===e||"object"!==typeof e)throw new Error("Missing definition");if(null===t||"object"!==typeof t)throw new Error("Missing parent");if(null===n||"object"!==typeof n)throw new Error("Missing transport")}},_=function(){function e(e,t,n,i,r){this.definition=e,this.system=t,this.transport=n,this.value=i,this.type=r,this.path=[],b.validate(e,t,n),this.path=t.path.slice(0),this.path.push(t.name),this.name=e.name,this.description=e.description,n.createMetric(this)}return Object.defineProperty(e.prototype,"repo",{get:function(){var e;return null===(e=this.system)||void 0===e?void 0:e.repo},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"id",{get:function(){return"".concat(this.system.path,"/").concat(name)},enumerable:!1,configurable:!0}),e.prototype.update=function(e){return this.value=e,this.transport.updateMetric(this)},e}(),C=function(e){function n(t,n,i,r){return e.call(this,t,n,i,r,a.NUMBER)||this}return t(n,e),n.prototype.incrementBy=function(e){this.update(this.value+e)},n.prototype.increment=function(){this.incrementBy(1)},n.prototype.decrement=function(){this.incrementBy(-1)},n.prototype.decrementBy=function(e){this.incrementBy(-1*e)},n}(_),I=function(e){function n(t,n,i,r){return e.call(this,t,n,i,r,a.OBJECT)||this}return t(n,e),n.prototype.update=function(e){return this.mergeValues(e),this.transport.updateMetric(this)},n.prototype.mergeValues=function(e){var t=this;return Object.keys(this.value).forEach((function(n){"undefined"!==typeof e[n]&&(t.value[n]=e[n])}))},n}(_),S=function(e){function n(t,n,i,r){return e.call(this,t,n,i,r,a.STRING)||this}return t(n,e),n}(_),k=function(e){function n(t,n,i,r){return e.call(this,t,n,i,r,a.TIMESTAMP)||this}return t(n,e),n.prototype.now=function(){this.update(new Date)},n}(_);function x(e,t,n,i,r){if(!t)throw new Error("Repository is required");if(!n)throw new Error("Transport is required");var o=n,s=e,c=r||"",u=t,d=i,l=E(i),h={},p=P(l,"/")+e,f=t.root,g=[],m=[];function v(e,t){if(!e||0===e.length)throw new Error("name is required");var n=g.filter((function(t){return t.name===e}));if(n.length>0)return n[0];var i=x(e,u,o,R,t);return g.push(i),i}function y(e,t){h={state:e,description:t},o.updateSystem(R,h)}function w(e,t){return A(e,a.STRING,t,(function(e){return new S(e,R,o,t)}))}function b(e,t){return A(e,a.NUMBER,t,(function(e){return new C(e,R,o,t)}))}function _(e,t){return A(e,a.OBJECT,t,(function(e){return new I(e,R,o,t)}))}function T(e,t){return A(e,a.TIMESTAMP,t,(function(e){return new k(e,R,o,t)}))}function A(e,t,n,i){var r={name:""};r="string"===typeof e?{name:e}:e;var o=m.filter((function(e){return e.name===r.name}));if(o.length>0){var s=o[0];if(s.type!==t)throw new Error("A metric named ".concat(r.name," is already defined with different type."));return"undefined"!==typeof n&&s.update(n).catch((function(){})),s}var a=i(r);return m.push(a),a}function E(e){if(!e||!e.parent)return[];var t=E(e.parent);return t.push(e.name),t}function P(e,t){return e&&e.length>0?e.join(t):""}function M(){var e=[];return Object.keys(h).length>0&&e.push({name:s,path:l,state:h.state,description:h.description}),g.forEach((function(t){var n=t.getAggregateState();n.length>0&&e.push.apply(e,n)})),e}var R={get name(){return s},get description(){return c},get repo(){return u},get parent(){return d},path:l,id:p,root:f,get subSystems(){return g},get metrics(){return m},subSystem:v,getState:function(){return h},setState:y,stringMetric:w,timestampMetric:T,objectMetric:_,numberMetric:b,getAggregateState:M};return o.createSystem(R),R}var T=function(){function e(e,t){t.init(this),this.root=x("",this,t),this.addSystemMetrics(this.root,e.clickStream||void 0===e.clickStream)}return e.prototype.addSystemMetrics=function(e,t){if("undefined"!==typeof navigator&&e.stringMetric("UserAgent",navigator.userAgent),t&&"undefined"!==typeof document){var n=e.subSystem("ClickStream"),i=function(e){var t;if(e.target){var i=e.target,r=i&&null!==(t=i.getAttribute("class"))&&void 0!==t?t:"";n.objectMetric("LastBrowserEvent",{type:"click",timestamp:new Date,target:{className:r,id:i.id,type:"<"+i.tagName.toLowerCase()+">",href:i.href||""}})}};n.objectMetric("Page",{title:document.title,page:window.location.href}),document.addEventListener?document.addEventListener("click",i):document.attachEvent("onclick",i)}e.stringMetric("StartTime",(new Date).toString());var r=e.stringMetric("StartURL",""),o=e.stringMetric("AppName","");if("undefined"!==typeof window){if("undefined"!==typeof window.location){var s=window.location.href;r.update(s)}"undefined"!==typeof window.glue42gd&&o.update(window.glue42gd.appName)}},e}(),A=function(){function e(){}return e.prototype.init=function(e){},e.prototype.createSystem=function(e){return Promise.resolve()},e.prototype.updateSystem=function(e,t){return Promise.resolve()},e.prototype.createMetric=function(e){return Promise.resolve()},e.prototype.updateMetric=function(e){return Promise.resolve()},e}(),E=function(){function e(e,t,n){this.api=e,this.lastCount=0,this.initialPublishTimeout=1e4,this.publishInterval=6e4,this.initialPublishTimeout=null!==t&&void 0!==t?t:this.initialPublishTimeout,this.publishInterval=null!==n&&void 0!==n?n:this.publishInterval,this.scheduleCollection(),this.system=this.api.subSystem("performance","Performance data published by the web application")}return e.prototype.scheduleCollection=function(){var e=this;setTimeout((function(){e.collect(),setInterval((function(){e.collect()}),e.publishInterval)}),this.initialPublishTimeout)},e.prototype.collect=function(){try{this.collectMemory(),this.collectEntries()}catch(Uo){}},e.prototype.collectMemory=function(){var e=window.performance.memory;this.system.stringMetric("memory",JSON.stringify({totalJSHeapSize:e.totalJSHeapSize,usedJSHeapSize:e.usedJSHeapSize}))},e.prototype.collectEntries=function(){var e=window.performance.getEntries();if(!(e.length<=this.lastCount)){this.lastCount=e.length;var t=e.map((function(e){return e.toJSON()}));this.system.stringMetric("entries",JSON.stringify(t))}},e}(),P=function(e){var t;t=e.connection&&"object"===typeof e.connection?w(e.connection,e):new A;var n=new T(e,t).root;e.disableAutoAppSystem||(n=n.subSystem("App"));var i=R(n);return M(i,e.pagePerformanceMetrics),i};function M(e,t){var n,i;if("undefined"!==typeof window){var r=null===(i=null===(n=null===window||void 0===window?void 0:window.glue42gd)||void 0===n?void 0:n.metrics)||void 0===i?void 0:i.pagePerformanceMetrics;r&&(t=r),(null===t||void 0===t?void 0:t.enabled)&&new E(e,t.initialPublishTimeout,t.publishInterval)}}function R(e){var t,n=e.subSystem("reporting"),i={name:"features"},r=function(e,r,o){if("undefined"===typeof e||""===e)throw new Error("name is mandatory");if("undefined"===typeof r||""===r)throw new Error("action is mandatory");if("undefined"===typeof o||""===o)throw new Error("payload is mandatory");t?t.update({name:e,action:r,payload:o}):t=n.objectMetric(i,{name:e,action:r,payload:o})};return e.featureMetric=r,e}var N="undefined"!==typeof globalThis?globalThis:"undefined"!==typeof window?window:"undefined"!==typeof n.g?n.g:"undefined"!==typeof self?self:{};function O(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function j(e){if(e&&e.errorHandling&&"function"!==typeof e.errorHandling&&"log"!==e.errorHandling&&"silent"!==e.errorHandling&&"throw"!==e.errorHandling)throw new Error('Invalid options passed to createRegistry. Prop errorHandling should be ["log" | "silent" | "throw" | (err) => void], but '+typeof e.errorHandling+" was passed");var t=e&&"function"===typeof e.errorHandling&&e.errorHandling,n={};function i(e,t,i){var r=n[e];return r||(r=[],n[e]=r),r.push(t),i&&setTimeout((function(){i.forEach((function(i){var r;if(null===(r=n[e])||void 0===r?void 0:r.includes(t))try{Array.isArray(i)?t.apply(void 0,i):t.apply(void 0,[i])}catch(s){o(s,e)}}))}),0),function(){var i=n[e];i&&(0===(i=i.reduce((function(e,n,i){return n===t&&e.length===i||e.push(n),e}),[])).length?delete n[e]:n[e]=i)}}function r(e){for(var t=[],i=1;i0&&(o=r-n[n.length-1].time),n.push({name:e,time:r,diff:o})}c("start",s);var u={get startTime(){return s},get endTime(){return r},get period(){return o},stop:a,mark:c,marks:n};return B[e]=u,u}var q=L.isNode()?null:window.WebSocket,z=function(){function e(e,t){if(this.startupTimer=G("connection"),this._running=!0,this._registry=D(),this.wsRequests=[],this.settings=e,this.logger=t,!this.settings.ws)throw new Error("ws is missing")}return e.prototype.onMessage=function(e){return this._registry.add("onMessage",e)},e.prototype.send=function(e,t){var n=this;return new Promise((function(t,i){n.waitForSocketConnection((function(){var r;try{null===(r=n.ws)||void 0===r||r.send(e),t()}catch(o){i(o)}}),i)}))},e.prototype.open=function(){var e=this;return this.logger.info("opening ws..."),this._running=!0,new Promise((function(t,n){e.waitForSocketConnection(t,n)}))},e.prototype.close=function(){return this._running=!1,this.ws&&this.ws.close(),Promise.resolve()},e.prototype.onConnectedChanged=function(e){return this._registry.add("onConnectedChanged",e)},e.prototype.name=function(){return this.settings.ws},e.prototype.reconnect=function(){var e;null===(e=this.ws)||void 0===e||e.close();var t=new U;return this.waitForSocketConnection((function(){t.resolve()})),t.promise},e.prototype.waitForSocketConnection=function(e,t){var n;t=null!==t&&void 0!==t?t:function(){},this._running?1!==(null===(n=this.ws)||void 0===n?void 0:n.readyState)?(this.wsRequests.push({callback:e,failed:t}),this.wsRequests.length>1||this.openSocket()):e():t("wait for socket on ".concat(this.settings.ws," failed - socket closed by user"))},e.prototype.openSocket=function(e,t){return r(this,void 0,void 0,(function(){var n=this;return o(this,(function(i){switch(i.label){case 0:if(this.startupTimer.mark("opening-socket"),void 0===e&&(e=this.settings.reconnectInterval),"undefined"===typeof t&&(t=this.settings.reconnectAttempts),void 0!==t){if(0===t)return this.notifyForSocketState("wait for socket on ".concat(this.settings.ws," failed - no more retries left")),[2];this.logger.debug("will retry ".concat(t," more times (every ").concat(e," ms)"))}i.label=1;case 1:return i.trys.push([1,3,,4]),[4,this.initiateSocket()];case 2:return i.sent(),this.startupTimer.mark("socket-initiated"),this.notifyForSocketState(),[3,4];case 3:return i.sent(),setTimeout((function(){var i=void 0===t?void 0:t-1;n.openSocket(e,i)}),e),[3,4];case 4:return[2]}}))}))},e.prototype.initiateSocket=function(){var e=this,t=new U;return this.logger.debug("initiating ws to ".concat(this.settings.ws,"...")),this.ws=new q(this.settings.ws||""),this.ws.onerror=function(n){var i="";try{i=JSON.stringify(n)}catch(s){var r=new WeakSet,o=function(e,t){if("object"===typeof t&&null!==t){if(r.has(t))return;r.add(t)}return t};i=JSON.stringify(n,o)}t.reject("error"),e.notifyStatusChanged(!1,i)},this.ws.onclose=function(n){e.logger.info("ws closed ".concat(n)),t.reject("closed"),e.notifyStatusChanged(!1)},this.ws.onopen=function(){var n;e.startupTimer.mark("ws-opened"),e.logger.info("ws opened ".concat(null===(n=e.settings.identity)||void 0===n?void 0:n.application)),t.resolve(),e.notifyStatusChanged(!0)},this.ws.onmessage=function(t){e._registry.execute("onMessage",t.data)},t.promise},e.prototype.notifyForSocketState=function(e){this.wsRequests.forEach((function(t){e?t.failed&&t.failed(e):t.callback()})),this.wsRequests=[]},e.prototype.notifyStatusChanged=function(e,t){this._registry.execute("onConnectedChanged",e,t)},e}(),V={},J={get exports(){return V},set exports(e){V=e}},K={},$={get exports(){return K},set exports(e){K=e}},Q=1;function Y(){return(Q=(9301*Q+49297)%233280)/233280}function X(e){Q=e}var Z,ee,te,ne={nextValue:Y,seed:X},ie="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-";function re(){te=!1}function oe(e){if(e){if(e!==Z){if(e.length!==ie.length)throw new Error("Custom alphabet for shortid must be "+ie.length+" unique characters. You submitted "+e.length+" characters: "+e);var t=e.split("").filter((function(e,t,n){return t!==n.lastIndexOf(e)}));if(t.length)throw new Error("Custom alphabet for shortid must be "+ie.length+" unique characters. These characters were not unique: "+t.join(", "));Z=e,re()}}else Z!==ie&&(Z=ie,re())}function se(e){return oe(e),Z}function ae(e){ne.seed(e),ee!==e&&(re(),ee=e)}function ce(){Z||oe(ie);for(var e,t=Z.split(""),n=[],i=ne.nextValue();t.length>0;)i=ne.nextValue(),e=Math.floor(i*t.length),n.push(t.splice(e,1)[0]);return n.join("")}function ue(){return te||(te=ce())}function de(e){return ue()[e]}function le(){return Z||ie}var he,pe={get:le,characters:se,seed:ae,lookup:de,shuffled:ue},fe="object"===typeof window&&(window.crypto||window.msCrypto);he=fe&&fe.getRandomValues?function(e){return fe.getRandomValues(new Uint8Array(e))}:function(e){for(var t=[],n=0;n0&&(t+=Ce(be)),t+=Ce(n)}var xe=ke,Te=pe;function Ae(e){return!(!e||"string"!==typeof e||e.length<6)&&!new RegExp("[^"+Te.get().replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&")+"]").test(e)}var Ee=Ae;(function(e){var t=pe,n=xe,i=Ee,r=0;function o(n){return t.seed(n),e.exports}function s(t){return r=t,e.exports}function a(e){return void 0!==e&&t.characters(e),t.shuffled()}function c(){return n(r)}e.exports=c,e.exports.generate=c,e.exports.seed=o,e.exports.worker=s,e.exports.characters=a,e.exports.isValid=i})($),function(e){e.exports=K}(J);var Pe=O(V);function Me(e,t,n,i,r){null==e&&(e="global"),i=i||["success"],r=r||["error"];var o,s=!1,a=!1,c=!1,u=D();t.disconnected(f),t.loggedIn(g),t.on("success",(function(e){return w(e)})),t.on("error",(function(e){return y(e)})),t.on("result",(function(e){return w(e)})),i&&i.forEach((function(e){t.on(e,(function(e){return w(e)}))})),r&&r.forEach((function(e){t.on(e,(function(e){return y(e)}))}));var d={};function l(t){return o=t,new Promise((function(i,r){var o;s?i({}):("global"===e?o=c?Promise.resolve({}):Promise.reject("not connected to gateway"):(n.debug("joining domain ".concat(e)),o=_({type:"join",destination:e,domain:"global",options:t})),o.then((function(){p(),i({})})).catch((function(t){n.debug("error joining "+e+" domain: "+JSON.stringify(t)),r(t)})))}))}function h(){return"global"===e?Promise.resolve():(n.debug("stopping session "+e+"..."),a=!1,_({type:"leave",destination:e,domain:"global"}).then((function(){s=!1,u.execute("onLeft")})).catch((function(){s=!1,u.execute("onLeft")})))}function p(){n.debug("did join "+e),s=!0;var t=a;a=!1,u.execute("onJoined",t)}function f(){c=!1,n.debug("connection is down"),s=!1,a=!0,u.execute("onLeft",{disconnected:!0})}function g(){c=!0,a&&(n.debug("connection is now up - trying to reconnect..."),l(o))}function m(e){return s&&e(!1),u.add("onJoined",e)}function v(e){return s||e(),u.add("onLeft",e)}function y(t){if(e===t.domain){var n=t.request_id;if(n){var i=d[n];i&&i.error(t)}}}function w(t){if(t.domain===e){var n=t.request_id;if(n){var i=d[n];i&&i.success(t)}}}function b(){return Pe()}function _(i,r,o){o=o||{},i.request_id=i.request_id||b(),i.domain=i.domain||e,o.skipPeerId||(i.peer_id=t.peerId);var s=i.request_id;return new Promise((function(e,a){d[s]={success:function(t){delete d[s],t._tag=r,e(t)},error:function(e){n.warn("GW error - ".concat(JSON.stringify(e)," for request ").concat(JSON.stringify(i))),delete d[s],e._tag=r,a(e)}},t.send(i,o).catch((function(e){d[s].error({err:e})}))}))}function C(n){return n.request_id=n.request_id?n.request_id:b(),n.domain=n.domain||e,n.peer_id=t.peerId,t.send(n)}return{join:l,leave:h,onJoined:m,onLeft:v,send:_,sendFireAndForget:C,on:function(i,r){t.on(i,(function(t){if(t.domain===e)try{r(t)}catch(i){n.error("Callback failed: ".concat(i," \n ").concat(i.stack," \n msg was: ").concat(JSON.stringify(t)),i)}}))},loggedIn:function(e){return t.loggedIn(e)},connected:function(e){return t.connected(e)},disconnected:function(e){return t.disconnected(e)},get peerId(){return t.peerId},get domain(){return e}}}var Re=function(){function e(e,t,n){var i=this;this.connection=e,this.settings=t,this.logger=n,this.protocolVersion=3,this.datePrefix="#T42_DATE#",this.datePrefixLen=this.datePrefix.length,this.dateMinLen=this.datePrefixLen+1,this.datePrefixFirstChar=this.datePrefix[0],this.registry=D(),this._isLoggedIn=!1,this.shouldTryLogin=!0,this.initialLogin=!0,this.initialLoginAttempts=3,this.sessions=[],e.disconnected((function(){i.handleDisconnected()})),this.ping()}return Object.defineProperty(e.prototype,"isLoggedIn",{get:function(){return this._isLoggedIn},enumerable:!1,configurable:!0}),e.prototype.processStringMessage=function(e){var t=this,n=JSON.parse(e,(function(e,n){if("string"!==typeof n)return n;if(n.length1)return"continue";var r=e.on(n,(function(e){return t.processMessage(n,e)}));s.subs[n]=r},s=this,a=0,c=this.specs[r].types;a> ".concat(JSON.stringify(n))),this.transport.sendObject(n,t)}var i=this.protocol.createStringMessage(e);return this.isTrace&&this.logger.trace(">> ".concat(i)),this.transport.send(i,t)},e.prototype.on=function(e,t){e=e.toLowerCase(),void 0===this.messageHandlers[e]&&(this.messageHandlers[e]={});var n=this.ids++;return this.messageHandlers[e][n]=t,{type:e,id:n}},e.prototype.off=function(e){delete this.messageHandlers[e.type.toLowerCase()][e.id]},Object.defineProperty(e.prototype,"isConnected",{get:function(){return this.protocol.isLoggedIn},enumerable:!1,configurable:!0}),e.prototype.connected=function(e){var t=this;return this.protocol.loggedIn((function(){var n=t.transport.name();e(n)}))},e.prototype.disconnected=function(e){return this.registry.add("disconnected",e)},e.prototype.login=function(e,t){return r(this,void 0,void 0,(function(){var n,i,r;return o(this,(function(o){switch(o.label){case 0:this._defaultAuth||(this._defaultAuth=e),this._swapTransport&&(this.logger.trace("Detected a transport swap, swapping transports"),n=this.transportSwap(),e=null!==n&&void 0!==n?n:e),this.logger.trace("Starting login for transport: ".concat(this.transport.name()," and auth ").concat(JSON.stringify(e))),o.label=1;case 1:return o.trys.push([1,4,,5]),[4,this.transport.open()];case 2:return o.sent(),this.logger.trace("Transport: ".concat(this.transport.name()," opened, logging in")),G("connection").mark("transport-opened"),[4,this.protocol.login(e,t)];case 3:return i=o.sent(),this.logger.trace("Logged in with identity: ".concat(JSON.stringify(i))),G("connection").mark("protocol-logged-in"),[2,i];case 4:throw r=o.sent(),this._switchInProgress&&(this.logger.trace("An error while logging in after a transport swap, preparing a default swap."),this.prepareDefaultSwap()),new Error(r);case 5:return[2]}}))}))},e.prototype.logout=function(){return r(this,void 0,void 0,(function(){return o(this,(function(e){switch(e.label){case 0:return[4,this.protocol.logout()];case 1:return e.sent(),[4,this.transport.close()];case 2:return e.sent(),[2]}}))}))},e.prototype.loggedIn=function(e){return this.protocol.loggedIn(e)},e.prototype.domain=function(e,t,n){return this.protocol.domain(e,this.logger.subLogger("domain=".concat(e)),t,n)},e.prototype.authToken=function(){return this.protocol.authToken()},e.prototype.reconnect=function(){return this.transport.reconnect()},e.prototype.distributeMessage=function(e,t){var n=this,i=this.messageHandlers[t.toLowerCase()];void 0!==i&&Object.keys(i).forEach((function(t){var r=i[t];if(void 0!==r)try{r(e)}catch(o){try{n.logger.error("Message handler failed with ".concat(o.stack),o)}catch(s){console.log("Message handler failed",o)}}}))},e.prototype.handleConnectionChanged=function(e){this._connected!==e&&(this._connected=e,e?(this.settings.replaySpecs&&this.settings.replaySpecs.length&&(this.replayer=new Ne(this.settings.replaySpecs),this.replayer.init(this)),this.registry.execute("connected")):this.registry.execute("disconnected"))},e.prototype.handleTransportMessage=function(e){var t;t="string"===typeof e?this.protocol.processStringMessage(e):this.protocol.processObjectMessage(e),this.isTrace&&this.logger.trace("<< ".concat(JSON.stringify(t))),this.distributeMessage(t.msg,t.msgType)},e.prototype.verifyConnection=function(){var e=this;return Oe((function(t){var n,i=De(2,(function(){n&&n(),t()}));n=e.onLibReAnnounced((function(e){return"interop"===e.name||"contexts"===e.name?i():void 0}))}),1e4,"Transport switch timed out waiting for all libraries to be re-announced")},e.prototype.getNewSecondaryTransport=function(e){var t;if(!(null===(t=e.transportConfig)||void 0===t?void 0:t.url))throw new Error("Missing secondary transport URL.");return new z(Object.assign({},this.settings,{ws:e.transportConfig.url,reconnectAttempts:1}),this.logger.subLogger("ws-secondary"))},e.prototype.getNewSecondaryAuth=function(e){var t;if(!(null===(t=e.transportConfig)||void 0===t?void 0:t.auth))throw new Error("Missing secondary transport auth information.");return e.transportConfig.auth},e.prototype.transportSwap=function(){if(this._swapTransport=!1,this._targetTransport&&this._targetAuth){this._transportSubscriptions.forEach((function(e){return e()})),this._transportSubscriptions=[],this.transport=this._targetTransport;var e=this.transport.onConnectedChanged(this.handleConnectionChanged.bind(this)),t=this.transport.onMessage(this.handleTransportMessage.bind(this));return this._transportSubscriptions.push(e),this._transportSubscriptions.push(t),this._targetAuth}this.logger.warn("Error while switching transports - either the target transport or auth is not defined: transport defined -> ".concat(!!this._defaultTransport,", auth defined -> ").concat(!!this._targetAuth,". Staying on the current one."))},e.prototype.prepareDefaultSwap=function(){var e=this;this._transportSubscriptions.forEach((function(e){return e()})),this._transportSubscriptions=[],this.transport.close().catch((function(t){return e.logger.warn("Error closing the ".concat(e.transport.name()," transport after a failed connection attempt: ").concat(JSON.stringify(t)))})),this._targetTransport=this._defaultTransport,this._targetAuth=this._defaultAuth,this._swapTransport=!0},e}(),Le=["trace","debug","info","warn","error","off"],Ue=function(){function e(e,t,n){this.name=e,this.parent=t,this.subLoggers=[],this.logFn=console,this.customLogFn=!1,this.name=e,this.path=t?"".concat(t.path,".").concat(e):e,this.loggerFullName="[".concat(this.path,"]"),this.includeTimeAndLevel=!n,n&&(this.logFn=n,this.customLogFn=!0)}return e.prototype.subLogger=function(t){var n=this.subLoggers.filter((function(e){return e.name===t}))[0];if(void 0!==n)return n;Object.keys(this).forEach((function(e){if(e===t)throw new Error("This sub logger name is not allowed.")}));var i=new e(t,this,this.customLogFn?this.logFn:void 0);return this.subLoggers.push(i),i},e.prototype.publishLevel=function(e){var t;return e&&(this._publishLevel=e),this._publishLevel||(null===(t=this.parent)||void 0===t?void 0:t.publishLevel())},e.prototype.consoleLevel=function(e){var t;return e&&(this._consoleLevel=e),this._consoleLevel||(null===(t=this.parent)||void 0===t?void 0:t.consoleLevel())},e.prototype.log=function(e,t,n){this.publishMessage(t||"info",e,n)},e.prototype.trace=function(e){this.log(e,"trace")},e.prototype.debug=function(e){this.log(e,"debug")},e.prototype.info=function(e){this.log(e,"info")},e.prototype.warn=function(e){this.log(e,"warn")},e.prototype.error=function(e,t){this.log(e,"error")},e.prototype.canPublish=function(e,t){return Le.indexOf(e)>=Le.indexOf(t||this.consoleLevel()||"trace")},e.prototype.publishMessage=function(t,n,i){var r=this.loggerFullName;if("error"===t&&!i){var o=new Error;o.stack&&(n=n+"\n"+o.stack.split("\n").slice(3).join("\n"))}if(this.canPublish(t,this.publishLevel())){var s=e.Interop;if(s)try{s.methods({name:e.InteropMethodName}).length>0&&s.invoke(e.InteropMethodName,{msg:"".concat(n),logger:r,level:t})}catch(Uo){}}if(this.canPublish(t)){var a="";if(this.includeTimeAndLevel){var c=new Date,u="".concat(c.getHours(),":").concat(c.getMinutes(),":").concat(c.getSeconds(),":").concat(c.getMilliseconds());a="[".concat(u,"] [").concat(t,"] ")}var d="".concat(a).concat(r,": ").concat(n);switch(t){case"trace":this.logFn.debug(d);break;case"debug":this.logFn.debug?this.logFn.debug(d):this.logFn.log(d);break;case"info":this.logFn.info(d);break;case"warn":this.logFn.warn(d);break;case"error":this.logFn.error(d,i)}}},e.InteropMethodName="T42.AppLogger.Log",e}(),Be="create-context",He="created",Ge="destroyed",qe="context-created",ze="context-added",Ve="subscribe-context",Je="subscribed-context",Ke="unsubscribe-context",$e="destroy-context",Qe="context-destroyed",Ye="update-context",Xe="context-updated",Ze="joined",et={get name(){return"context"},get types(){return[Be,He,Ge,qe,ze,Ve,Je,Ke,$e,Qe,Ye,Xe,Ze]}},tt="6.1.0";function nt(e,t,n){var i,r,o,s,a;if(L.isNode()){var c={NODE_ENV:"production",PUBLIC_URL:".",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0}._GD_STARTING_CONTEXT_;if(c)try{a=JSON.parse(c)}catch(y){}}function u(){var i,r,o,s,c,u,d,h,p,f,g,m=e.gateway,v=null!==(i=null===m||void 0===m?void 0:m.protocolVersion)&&void 0!==i?i:3,y=null===m||void 0===m?void 0:m.reconnectInterval,w=null===m||void 0===m?void 0:m.reconnectAttempts,b="ws://localhost:8385",_=null===m||void 0===m?void 0:m.ws,C=null===m||void 0===m?void 0:m.sharedWorker,I=null===m||void 0===m?void 0:m.inproc,S=null!==(r=null===m||void 0===m?void 0:m.webPlatform)&&void 0!==r?r:void 0;n&&(_=n.gwURL),L.isNode()&&a&&a.gwURL&&(_=a.gwURL),_||C||I||(_=b);var k=l(),x=k;"undefined"!==typeof n?(h=n.windowId,p=n.pid,n.env&&(f=n.env.env,g=n.env.region),x=null!==(o=n.application)&&void 0!==o?o:"glue-app",d=n.appInstanceId):L.isNode()?(p=process.pid,a&&(f=a.env,g=a.region,d=a.instanceId)):"undefined"!==typeof(null===window||void 0===window?void 0:window.glue42electron)&&(h=null===window||void 0===window?void 0:window.glue42electron.instanceId,p=null===window||void 0===window?void 0:window.glue42electron.pid,f=null===window||void 0===window?void 0:window.glue42electron.env,g=null===window||void 0===window?void 0:window.glue42electron.region,x=null!==(s=null===window||void 0===window?void 0:window.glue42electron.application)&&void 0!==s?s:"glue-app",d=null===window||void 0===window?void 0:window.glue42electron.instanceId);var T=null!==(u=null===(c=e.gateway)||void 0===c?void 0:c.replaySpecs)&&void 0!==u?u:[];T.push(et);var A={application:x,applicationName:k,windowId:h,instance:d,process:p,region:g,environment:f,api:t.version||tt};return e.identity&&(A=Object.assign(A,e.identity)),{identity:A,reconnectInterval:y,ws:_,sharedWorker:C,webPlatform:S,inproc:I,protocolVersion:v,reconnectAttempts:w,replaySpecs:T}}function d(){return"undefined"===typeof e.contexts||"boolean"===typeof e.contexts&&e.contexts?{reAnnounceKnownContexts:!0}:"object"===typeof e.contexts&&Object.assign({},{reAnnounceKnownContexts:!0},e.contexts)}function l(){if(e.application)return e.application;if(n)return n.applicationName;if("undefined"!==typeof window&&"undefined"!==typeof window.glue42electron)return window.glue42electron.application;var t=Pe();return L.isNode()?a?a.applicationConfig.name:"NodeJS"+t:"undefined"!==typeof window&&"undefined"!==typeof document?document.title+" (".concat(t,")"):t}function h(){var t,n,i;return"string"===typeof e.auth?{token:e.auth}:e.auth?e.auth:L.isNode()&&a&&a.gwToken?{gatewayToken:a.gwToken}:(null===(t=e.gateway)||void 0===t?void 0:t.webPlatform)||(null===(n=e.gateway)||void 0===n?void 0:n.inproc)||(null===(i=e.gateway)||void 0===i?void 0:i.sharedWorker)?{username:"glue42",password:"glue42"}:void 0}function p(){var t,i,r,o=e.logger,s="warn";return o||(o=s),n&&(r=n.consoleLogLevel),"string"===typeof o?{console:null!==r&&void 0!==r?r:o,publish:s}:{console:null!==(t=null!==r&&void 0!==r?r:o.console)&&void 0!==t?t:s,publish:null!==(i=o.publish)&&void 0!==i?i:s}}var f=u(),g=l();if("undefined"!==typeof window){var m=window,v=m.htmlContainer?"".concat(m.htmlContainer.containerName,".").concat(m.htmlContainer.application):null===(i=null===m||void 0===m?void 0:m.glue42gd)||void 0===i?void 0:i.application;v&&(g=v)}return{bus:null!==(r=e.bus)&&void 0!==r&&r,application:g,auth:h(),logger:p(),connection:f,metrics:null===(o=e.metrics)||void 0===o||o,contexts:d(),version:t.version||tt,libs:null!==(s=t.libs)&&void 0!==s?s:[],customLogger:e.customLogger}}var it=function(){function e(e,t,n,i){this.updateCallbacks={},this.contextId=e,this.name=t,this.isAnnounced=n,this.activityId=i,this.context={}}return e.prototype.hasCallbacks=function(){return Object.keys(this.updateCallbacks).length>0},e.prototype.getState=function(){return this.isAnnounced&&this.hasCallbacks()?3:this.isAnnounced?2:this.hasCallbacks()?1:0},e}(),rt={};!function(e,t){var n=200,i="__lodash_hash_undefined__",r=9007199254740991,o="[object Arguments]",s="[object Array]",a="[object Boolean]",c="[object Date]",u="[object Error]",d="[object Function]",l="[object GeneratorFunction]",h="[object Map]",p="[object Number]",f="[object Object]",g="[object Promise]",m="[object RegExp]",v="[object Set]",y="[object String]",w="[object Symbol]",b="[object WeakMap]",_="[object ArrayBuffer]",C="[object DataView]",I="[object Float32Array]",S="[object Float64Array]",k="[object Int8Array]",x="[object Int16Array]",T="[object Int32Array]",A="[object Uint8Array]",E="[object Uint8ClampedArray]",P="[object Uint16Array]",M="[object Uint32Array]",R=/[\\^$.*+?()[\]{}|]/g,O=/\w*$/,j=/^\[object .+?Constructor\]$/,D=/^(?:0|[1-9]\d*)$/,F={};F[o]=F[s]=F[_]=F[C]=F[a]=F[c]=F[I]=F[S]=F[k]=F[x]=F[T]=F[h]=F[p]=F[f]=F[m]=F[v]=F[y]=F[w]=F[A]=F[E]=F[P]=F[M]=!0,F[u]=F[d]=F[b]=!1;var W="object"==typeof N&&N&&N.Object===Object&&N,L="object"==typeof self&&self&&self.Object===Object&&self,U=W||L||Function("return this")(),B=t&&!t.nodeType&&t,H=B&&e&&!e.nodeType&&e,G=H&&H.exports===B;function q(e,t){return e.set(t[0],t[1]),e}function z(e,t){return e.add(t),e}function V(e,t){for(var n=-1,i=e?e.length:0;++n-1}function qe(e,t){var n=this.__data__,i=ot(n,e);return i<0?n.push([e,t]):n[i][1]=t,this}function ze(e){var t=-1,n=e?e.length:0;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=r}function Vt(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Jt(e){return!!e&&"object"==typeof e}function Kt(e){return Bt(e)?it(e):ht(e)}function $t(){return[]}function Qt(){return!1}e.exports=Ft}({get exports(){return rt},set exports(e){rt=e}},rt);var ot=rt;function st(e,t,n){try{if((null===n||void 0===n?void 0:n.canPublish("trace"))&&(null===n||void 0===n||n.trace("applying context delta ".concat(JSON.stringify(t)," on context ").concat(JSON.stringify(e)))),!t)return e;if(t.reset)return e=i({},t.reset);if(e=at(e,void 0),t.commands){for(var r=0,o=t.commands;r=2},enumerable:!1,configurable:!0}),e.prototype.dispose=function(){for(var e=0,t=this._gw3Subscriptions;e0)s(h,h[0].methods[0],a,c);else{var p=function(){if(u&&t.waitTimeoutMs)if(l+=d,(h=o.getServerMethodsByFilterAndTarget(r,u)).length>0){var n=h[0].methods[0];s(h,n,a,c)}else l>=t.waitTimeoutMs?s(h,"string"===typeof e?{name:e}:e,a,c):setTimeout(p,d)};setTimeout(p,d)}}else i(new Error('"'.concat(u,'" is not a valid target. Valid targets are "all", "best", or an instance.')))}else i("Method definition is required. Please, provide either a unique string for a method name or a \u201cmethodDefinition\u201d object with a required \u201cname\u201d property.");else i("Method definition is required. Please, provide either a unique string for a method name or a \u201cmethodDefinition\u201d object with a required \u201cname\u201d property.")})),n,i)},e.prototype.servers=function(e){var t=void 0===e?void 0:i({},e);return this.getServers(t).map((function(e){return e.server.instance}))},e.prototype.methods=function(e){return e="string"===typeof e?{name:e}:i({},e),this.getMethods(e)},e.prototype.methodsForInstance=function(e){return this.getMethodsForInstance(e)},e.prototype.methodAdded=function(e){return this.repo.onMethodAdded(e)},e.prototype.methodRemoved=function(e){return this.repo.onMethodRemoved(e)},e.prototype.serverAdded=function(e){return this.repo.onServerAdded(e)},e.prototype.serverRemoved=function(e){return this.repo.onServerRemoved((function(t,n){e(t,n)}))},e.prototype.serverMethodAdded=function(e){return this.repo.onServerMethodAdded((function(t,n){e({server:t,method:n})}))},e.prototype.serverMethodRemoved=function(e){return this.repo.onServerMethodRemoved((function(t,n){e({server:t,method:n})}))},e.prototype.invoke=function(e,t,n,s,a,c){return r(this,void 0,void 0,(function(){var u,d=this;return o(this,(function(l){return u=function(){return r(d,void 0,void 0,(function(){var r,a,c,u,d,l,h,p,f,g,m,v,y=this;return o(this,(function(o){switch(o.label){case 0:if(!(r="string"===typeof e?{name:e}:i({},e)).name)return[2,Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a \u201cmethodDefinition\u201d object with a required \u201cname\u201d property.")];if(t||(t={}),n||(n="best"),"string"===typeof n&&"all"!==n&&"best"!==n&&"skipMine"!==n)return[2,Promise.reject(new Error('"'.concat(n,'" is not a valid target. Valid targets are "all" and "best".')))];if(s||(s={}),void 0===s.methodResponseTimeoutMs&&(s.methodResponseTimeoutMs=s.method_response_timeout,void 0===s.methodResponseTimeoutMs&&(s.methodResponseTimeoutMs=this.configuration.methodResponseTimeout)),void 0===s.waitTimeoutMs&&(s.waitTimeoutMs=s.wait_for_method_timeout,void 0===s.waitTimeoutMs&&(s.waitTimeoutMs=this.configuration.waitTimeoutMs)),void 0!==s.waitTimeoutMs&&"number"!==typeof s.waitTimeoutMs)return[2,Promise.reject(new Error('"'.concat(s.waitTimeoutMs,'" is not a valid number for "waitTimeoutMs" ')))];if("object"!==typeof t)return[2,Promise.reject(new Error("The method arguments must be an object. method: ".concat(r.name)))];if(0!==(a=this.getServerMethodsByFilterAndTarget(r,n)).length)return[3,4];o.label=1;case 1:return o.trys.push([1,3,,4]),[4,this.tryToAwaitForMethods(r,n,s)];case 2:return a=o.sent(),[3,4];case 3:return o.sent(),c=i(i({},r),{getServers:function(){return[]},supportsStreaming:!1,objectTypes:null!==(g=r.objectTypes)&&void 0!==g?g:[],flags:null!==(v=null===(m=r.flags)||void 0===m?void 0:m.metadata)&&void 0!==v?v:{}}),u={method:c,called_with:t,message:"Can not find a method matching ".concat(JSON.stringify(e)," with server filter ").concat(JSON.stringify(n)),executed_by:void 0,returned:void 0,status:void 0},[2,Promise.reject(u)];case 4:return d=s.methodResponseTimeoutMs,l=s,h=a.map((function(e){var n=Pe(),i=e.methods[0],r=e.server,o=y.protocol.client.invoke(n,i,t,r,l);return Promise.race([o,vt(d,o,{invocationId:n,message:"Invocation timeout (".concat(d," ms) reached for method name: ").concat(null===i||void 0===i?void 0:i.name,", target instance: ").concat(JSON.stringify(r.instance),", options: ").concat(JSON.stringify(l)),status:pt.Error})])})),[4,Promise.all(h)];case 5:return p=o.sent(),f=this.getInvocationResultObj(p,r,t),p.every((function(e){return e.status===pt.Error}))?[2,Promise.reject(f)]:[2,f]}}))}))},[2,mt(u(),a,c)]}))}))},e.prototype.getInvocationResultObj=function(e,t,n){var i=e.filter((function(e){return e.status===pt.Success})).reduce((function(e,i){return e=s(s([],e,!0),[{executed_by:i.instance,returned:i.result,called_with:n,method:t,message:i.message,status:i.status}],!1)}),[]),r=e.filter((function(e){return e.status===pt.Error})).reduce((function(e,i){return e=s(s([],e,!0),[{executed_by:i.instance,called_with:n,name:t.name,message:i.message}],!1)}),[]),o=e[0];return{method:t,called_with:n,returned:o.result,executed_by:o.instance,all_return_values:i,all_errors:r,message:o.message,status:o.status}},e.prototype.tryToAwaitForMethods=function(e,t,n){var i=this;return new Promise((function(r,o){if(0!==n.waitTimeoutMs)var s=500,a=0,c=setInterval((function(){a+=s;var u=i.getServerMethodsByFilterAndTarget(e,t);if(u.length>0)clearInterval(c),r(u);else if(a>=(n.waitTimeoutMs||1e4))return clearInterval(c),void o()}),s);else o()}))},e.prototype.filterByTarget=function(e,t){var n=this;if("string"!==typeof e)return(Array.isArray(e)?e:[e]).reduce((function(e,i){var r=t.filter((function(e){return n.instanceMatch(i,e.server.instance)}));return e.concat(r)}),[]);if("all"===e)return s([],t,!0);if("best"===e){var i=t.find((function(e){return e.server.instance.isLocal}));if(i)return[i];if(void 0!==t[0])return[t[0]]}else if("skipMine"===e)return t.filter((function(e){return e.server.instance.peerId!==n.instance.peerId}));return[]},e.prototype.instanceMatch=function(e,t){return this.containsProps(e,t)},e.prototype.methodMatch=function(e,t){return this.containsProps(e,t)},e.prototype.containsProps=function(e,t){return Object.keys(e).filter((function(t){return void 0!==e[t]&&null!==e[t]&&"function"!==typeof e[t]&&"object_types"!==t&&"display_name"!==t&&"id"!==t&&"gatewayId"!==t&&"identifier"!==t&&"_"!==t[0]})).every((function(n){var i,r=e[n],o=t[n];switch(n){case"objectTypes":i=(r||[]).every((function(e){return(o||[]).includes(e)}));break;case"flags":i=lt(o||{},r||{});break;default:i=String(r).toLowerCase()===String(o).toLowerCase()}return i}))},e.prototype.getMethods=function(e){var t=this;return void 0===e?this.repo.getMethods():this.repo.getMethods().filter((function(n){return t.methodMatch(e,n)}))},e.prototype.getMethodsForInstance=function(e){var t=this,n=this.repo.getServers().filter((function(n){return t.instanceMatch(e,n.instance)}));if(0===n.length)return[];var i={};return 1===n.length?i=n[0].methods:n.forEach((function(e){Object.keys(e.methods).forEach((function(t){var n=e.methods[t];i[n.identifier]=n}))})),Object.keys(i).map((function(e){return i[e]}))},e.prototype.getServers=function(e){var t=this,n=this.repo.getServers();return void 0===e?n.map((function(e){return{server:e,methods:[]}})):n.reduce((function(n,i){var r=Object.values(i.methods).filter((function(n){return t.methodMatch(e,n)}));return r.length>0&&n.push({server:i,methods:r}),n}),[])},e.prototype.getServerMethodsByFilterAndTarget=function(e,t){var n=this.getServers(e);return this.filterByTarget(t,n)},e}(),wt=function(){function e(e,t,n){this.protocol=e,this.repoMethod=t,this.subscription=n}return Object.defineProperty(e.prototype,"stream",{get:function(){if(!this.repoMethod.stream)throw new Error("no stream");return this.repoMethod.stream},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"arguments",{get:function(){return this.subscription.arguments||{}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"branchKey",{get:function(){return this.subscription.branchKey},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"instance",{get:function(){if(!this.subscription.instance)throw new Error("no instance");return this.subscription.instance},enumerable:!1,configurable:!0}),e.prototype.close=function(){this.protocol.server.closeSingleSubscription(this.repoMethod,this.subscription)},e.prototype.push=function(e){this.protocol.server.pushDataToSingle(this.repoMethod,this.subscription,e)},e}(),bt=function(){function e(e,t,n){this.protocol=e,this.repoMethod=t,this.requestContext=n,this.arguments=n.arguments,this.instance=n.instance}return e.prototype.accept=function(){this.protocol.server.acceptRequestOnBranch(this.requestContext,this.repoMethod,"")},e.prototype.acceptOnBranch=function(e){this.protocol.server.acceptRequestOnBranch(this.requestContext,this.repoMethod,e)},e.prototype.reject=function(e){this.protocol.server.rejectRequest(this.requestContext,this.repoMethod,e)},e}(),_t=function(){function e(e,t){var n=this;this.protocol=e,this.server=t,e.server.onSubRequest((function(e,t){return n.handleSubRequest(e,t)})),e.server.onSubAdded((function(e,t){return n.handleSubAdded(e,t)})),e.server.onSubRemoved((function(e,t){return n.handleSubRemoved(e,t)}))}return e.prototype.handleSubRequest=function(e,t){if(t&&t.streamCallbacks&&"function"===typeof t.streamCallbacks.subscriptionRequestHandler){var n=new bt(this.protocol,t,e);t.streamCallbacks.subscriptionRequestHandler(n)}},e.prototype.handleSubAdded=function(e,t){if(t&&t.streamCallbacks&&"function"===typeof t.streamCallbacks.subscriptionAddedHandler){var n=new wt(this.protocol,t,e);t.streamCallbacks.subscriptionAddedHandler(n)}},e.prototype.handleSubRemoved=function(e,t){if(t&&t.streamCallbacks&&"function"===typeof t.streamCallbacks.subscriptionRemovedHandler){var n=new wt(this.protocol,t,e);t.streamCallbacks.subscriptionRemovedHandler(n)}},e}(),Ct=function(){function e(e,t,n){this.key=e,this.protocol=t,this.repoMethod=n}return e.prototype.subscriptions=function(){var e=this;return this.protocol.server.getSubscriptionList(this.repoMethod,this.key).map((function(t){return new wt(e.protocol,e.repoMethod,t)}))},e.prototype.close=function(){this.protocol.server.closeAllSubscriptions(this.repoMethod,this.key)},e.prototype.push=function(e){this.protocol.server.pushData(this.repoMethod,e,[this.key])},e}(),It=function(){function e(e,t,n){this._protocol=e,this._repoMethod=t,this._server=n,this.name=this._repoMethod.definition.name}return e.prototype.branches=function(e){var t=this,n=this._protocol.server.getBranchList(this._repoMethod);return e?n.indexOf(e)>-1?new Ct(e,this._protocol,this._repoMethod):void 0:n.map((function(e){return new Ct(e,t._protocol,t._repoMethod)}))},e.prototype.branch=function(e){return this.branches(e)},e.prototype.subscriptions=function(){var e=this;return this._protocol.server.getSubscriptionList(this._repoMethod).map((function(t){return new wt(e._protocol,e._repoMethod,t)}))},Object.defineProperty(e.prototype,"definition",{get:function(){var e,t=this._repoMethod.definition;return{accepts:t.accepts,description:t.description,displayName:t.displayName,name:t.name,objectTypes:t.objectTypes,returns:t.returns,supportsStreaming:t.supportsStreaming,flags:null===(e=t.flags)||void 0===e?void 0:e.metadata}},enumerable:!1,configurable:!0}),e.prototype.close=function(){this._protocol.server.closeAllSubscriptions(this._repoMethod),this._server.unregister(this._repoMethod.definition,!0)},e.prototype.push=function(e,t){if("string"!==typeof t&&!Array.isArray(t)&&void 0!==t)throw new Error("invalid branches should be string or string array");if("object"!==typeof e)throw new Error("Invalid arguments. Data must be an object.");this._protocol.server.pushData(this._repoMethod,e,t)},e.prototype.updateRepoMethod=function(e){this._repoMethod=e},e}(),St=function(){function e(e,t){this.protocol=e,this.serverRepository=t,this.invocations=0,this.currentlyUnregistering={},this.streaming=new _t(e,this),this.protocol.server.onInvoked(this.onMethodInvoked.bind(this))}return e.prototype.createStream=function(e,t,n,r,o){var s=this;return mt(new Promise((function(n,r){if(e){var a;if(!(a="string"===typeof e?{name:""+e}:i({},e)).name)return r("The \u201cname\u201d property is required for the \u201cstreamDefinition\u201d object and must be unique. Stream definition: ".concat(JSON.stringify(a)));if(s.serverRepository.getList().some((function(e){return e.definition.name===a.name})))return r('A stream with the name "'.concat(a.name,'" already exists! Please, provide a unique name for the stream.'));a.supportsStreaming=!0,t||(t={}),"function"!==typeof t.subscriptionRequestHandler&&(t.subscriptionRequestHandler=function(e){e.accept()});var c=s.serverRepository.add({definition:a,streamCallbacks:t,protocolState:{}});s.protocol.server.createStream(c).then((function(){var e;o?(e=o,o.updateRepoMethod(c)):e=new It(s.protocol,c,s),c.stream=e,n(e)})).catch((function(e){c.repoId&&s.serverRepository.remove(c.repoId),r(e)}))}else r("The stream name must be unique! Please, provide either a unique string for a stream name to \u201cglue.interop.createStream()\u201d or a \u201cmethodDefinition\u201d object with a unique \u201cname\u201d property for the stream.")})),n,r)},e.prototype.register=function(e,t){var n=this;if(!e)return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a \u201cmethodDefinition\u201d object with a required \u201cname\u201d property.");if("function"!==typeof t)return Promise.reject("The second parameter must be a callback function. Method: ".concat("string"===typeof e?e:e.name));var i=function(e,i){return r(n,void 0,void 0,(function(){var n,r,s;return o(this,(function(o){switch(o.label){case 0:return o.trys.push([0,4,,5]),(n=t(e.args,e.instance))&&"function"===typeof n.then?[4,n]:[3,2];case 1:return r=o.sent(),i(void 0,r),[3,3];case 2:i(void 0,n),o.label=3;case 3:return[3,5];case 4:return s=o.sent(),i(null!==s&&void 0!==s?s:"",null!==s&&void 0!==s?s:""),[3,5];case 5:return[2]}}))}))};return i.userCallback=t,this.registerCore(e,i)},e.prototype.registerAsync=function(e,t){if(!e)return Promise.reject("Method definition is required. Please, provide either a unique string for a method name or a \u201cmethodDefinition\u201d object with a required \u201cname\u201d property.");if("function"!==typeof t)return Promise.reject("The second parameter must be a callback function. Method: ".concat("string"===typeof e?e:e.name));var n=function(e,n){try{var i=!1,r=function(e){i||n(void 0,e),i=!0},o=function(e){i||(e||(e=""),n(e,e)),i=!0},s=t(e.args,e.instance,r,o);s&&"function"===typeof s.then&&s.then(r).catch(o)}catch(a){n(a,void 0)}};return n.userCallbackAsync=t,this.registerCore(e,n)},e.prototype.unregister=function(e,t){return void 0===t&&(t=!1),r(this,void 0,void 0,(function(){var n,i;return o(this,(function(r){switch(r.label){case 0:return void 0===e?[2,Promise.reject("Please, provide either a unique string for a name or an object containing a \u201cname\u201d property.")]:"function"!==typeof e?[3,2]:[4,this.unregisterWithPredicate(e,t)];case 1:case 3:return r.sent(),[2];case 2:return void 0===(n="string"===typeof e?{name:e}:e).name?[2,Promise.reject("Method name is required. Cannot find a method if the method name is undefined!")]:(i=this.serverRepository.getList().find((function(e){return e.definition.name===n.name&&(e.definition.supportsStreaming||!1)===t})))?[4,this.removeMethodsOrStreams([i])]:[2,Promise.reject('Method with a name "'.concat(n.name,'" does not exist or is not registered by your application!'))]}}))}))},e.prototype.unregisterWithPredicate=function(e,t){return r(this,void 0,void 0,(function(){var n;return o(this,(function(i){switch(i.label){case 0:return(n=this.serverRepository.getList().filter((function(t){return e(t.definition)})).filter((function(e){return(e.definition.supportsStreaming||!1)===t})))&&0!==n.length?[4,this.removeMethodsOrStreams(n)]:[2,Promise.reject("Could not find a ".concat(t?"stream":"method"," matching the specified condition!"))];case 1:return i.sent(),[2]}}))}))},e.prototype.removeMethodsOrStreams=function(e){var t=this,n=[];return e.forEach((function(e){var i=t.protocol.server.unregister(e).then((function(){e.repoId&&t.serverRepository.remove(e.repoId)}));n.push(i),t.addAsCurrentlyUnregistering(e.definition.name,i)})),Promise.all(n)},e.prototype.addAsCurrentlyUnregistering=function(e,t){return r(this,void 0,void 0,(function(){var n,i=this;return o(this,(function(r){return n=new Promise((function(e){return setTimeout(e,5e3)})),this.currentlyUnregistering[e]=Promise.race([t,n]).then((function(){delete i.currentlyUnregistering[e]})),[2]}))}))},e.prototype.registerCore=function(e,t){return r(this,void 0,void 0,(function(){var n,r,s,a=this;return o(this,(function(o){switch(o.label){case 0:return(n="string"===typeof e?{name:""+e}:i({},e)).name?(r=this.currentlyUnregistering[n.name])?[4,r]:[3,2]:[2,Promise.reject("Please, provide a (unique) string value for the \u201cname\u201d property in the \u201cmethodDefinition\u201d object: ".concat(JSON.stringify(e)))];case 1:o.sent(),o.label=2;case 2:return this.serverRepository.getList().some((function(e){return e.definition.name===n.name}))?[2,Promise.reject('A method with the name "'.concat(n.name,'" already exists! Please, provide a unique name for the method.'))]:n.supportsStreaming?[2,Promise.reject("When you create methods with \u201cglue.interop.register()\u201d or \u201cglue.interop.registerAsync()\u201d the property \u201csupportsStreaming\u201d cannot be \u201ctrue\u201d. If you want \u201c".concat(n.name,"\u201d to be a stream, please use the \u201cglue.interop.createStream()\u201d method."))]:(s=this.serverRepository.add({definition:n,theFunction:t,protocolState:{}}),[2,this.protocol.server.register(s).catch((function(e){throw(null===s||void 0===s?void 0:s.repoId)&&a.serverRepository.remove(s.repoId),e}))])}}))}))},e.prototype.onMethodInvoked=function(e,t,n){var i=this;e&&e.theFunction&&e.theFunction(n,(function(n,r){if(void 0!==n&&null!==n)if(n.message&&"string"===typeof n.message)n=n.message;else if("string"!==typeof n)try{n=JSON.stringify(n)}catch(o){n="un-stringifyable error in onMethodInvoked! Top level prop names: ".concat(Object.keys(n))}r?("object"!==typeof r||Array.isArray(r))&&(r={_value:r}):r={},i.protocol.server.methodInvocationResult(e,t,n,r)}))},e}(),kt=function(){function e(e,t,n){var i=this;this.wrapped={},this.wrapped.getMethods=function(){return e.methodsForInstance(this)},this.wrapped.getStreams=function(){return e.methodsForInstance(this).filter((function(e){return e.supportsStreaming}))},t&&this.refreshWrappedObject(t),n&&(n.loggedIn((function(){i.refresh(n)})),this.refresh(n))}return e.prototype.unwrap=function(){return this.wrapped},e.prototype.refresh=function(e){if(e){var t=null===e||void 0===e?void 0:e.resolvedIdentity,n=Object.assign({},null!==t&&void 0!==t?t:{},{peerId:null===e||void 0===e?void 0:e.peerId});this.refreshWrappedObject(n)}},e.prototype.refreshWrappedObject=function(e){var t,n,i,r,o=this;Object.keys(e).forEach((function(t){o.wrapped[t]=e[t]})),this.wrapped.user=e.user,this.wrapped.instance=e.instance,this.wrapped.application=null!==(t=e.application)&&void 0!==t?t:Pe(),this.wrapped.applicationName=e.applicationName,this.wrapped.pid=null!==(i=null!==(n=e.pid)&&void 0!==n?n:e.process)&&void 0!==i?i:Math.floor(1e10*Math.random()),this.wrapped.machine=e.machine,this.wrapped.environment=e.environment,this.wrapped.region=e.region,this.wrapped.windowId=e.windowId,this.wrapped.isLocal=null===(r=e.isLocal)||void 0===r||r,this.wrapped.api=e.api,this.wrapped.service=e.service,this.wrapped.peerId=e.peerId},e}(),xt=function(e){return i(i({},e),{flags:e.flags.metadata||{}})},Tt=function(){function e(e,t){this.logger=e,this.API=t,this.servers={},this.methodsCount={},this.callbacks=D();var n=this.API.instance.peerId;this.myServer={id:n,methods:{},instance:this.API.instance,wrapper:this.API.unwrappedInstance},this.servers[n]=this.myServer}return e.prototype.addServer=function(e,t){this.logger.debug("adding server ".concat(t));var n=this.servers[t];if(n)return n.id;var i=new kt(this.API,e),r={id:t,methods:{},instance:i.unwrap(),wrapper:i};return this.servers[t]=r,this.callbacks.execute("onServerAdded",r.instance),t},e.prototype.removeServerById=function(e,t){var n=this,i=this.servers[e];i?(this.logger.debug("removing server ".concat(e)),Object.keys(i.methods).forEach((function(t){n.removeServerMethod(e,t)})),delete this.servers[e],this.callbacks.execute("onServerRemoved",i.instance,t)):this.logger.warn("not aware of server ".concat(e,", my state ").concat(JSON.stringify(Object.keys(this.servers))))},e.prototype.addServerMethod=function(e,t){var n,i=this.servers[e];if(!i)throw new Error("server does not exists");if(!i.methods[t.id]){var r=this.createMethodIdentifier(t),o=this,s={identifier:r,gatewayId:t.id,name:t.name,displayName:t.display_name,description:t.description,version:t.version,objectTypes:t.object_types||[],accepts:t.input_signature,returns:t.result_signature,supportsStreaming:"undefined"!==typeof t.flags&&t.flags.streaming,flags:null!==(n=t.flags)&&void 0!==n?n:{},getServers:function(){return o.getServersByMethod(r)}};s.object_types=s.objectTypes,s.display_name=s.displayName,s.version=s.version,i.methods[t.id]=s;var a=xt(s);return this.methodsCount[r]||(this.methodsCount[r]=0,this.callbacks.execute("onMethodAdded",a)),this.methodsCount[r]=this.methodsCount[r]+1,this.callbacks.execute("onServerMethodAdded",i.instance,a),s}},e.prototype.removeServerMethod=function(e,t){var n=this.servers[e];if(!n)throw new Error("server does not exists");var i=n.methods[t];delete n.methods[t];var r=xt(i);this.methodsCount[i.identifier]=this.methodsCount[i.identifier]-1,0===this.methodsCount[i.identifier]&&this.callbacks.execute("onMethodRemoved",r),this.callbacks.execute("onServerMethodRemoved",n.instance,r)},e.prototype.getMethods=function(){return this.extractMethodsFromServers(Object.values(this.servers)).map(xt)},e.prototype.getServers=function(){return Object.values(this.servers).map(this.hideServerMethodSystemFlags)},e.prototype.onServerAdded=function(e){var t=this.callbacks.add("onServerAdded",e),n=this.getServers().map((function(e){return e.instance}));return this.returnUnsubWithDelayedReplay(t,n,e)},e.prototype.onMethodAdded=function(e){var t=this.callbacks.add("onMethodAdded",e),n=this.getMethods();return this.returnUnsubWithDelayedReplay(t,n,e)},e.prototype.onServerMethodAdded=function(e){var t=this.callbacks.add("onServerMethodAdded",e),n=!1,i=this.getServers();return setTimeout((function(){i.forEach((function(t){var i=t.methods;Object.keys(i).forEach((function(r){n||e(t.instance,i[r])}))}))}),0),function(){n=!0,t()}},e.prototype.onMethodRemoved=function(e){return this.callbacks.add("onMethodRemoved",e)},e.prototype.onServerRemoved=function(e){return this.callbacks.add("onServerRemoved",e)},e.prototype.onServerMethodRemoved=function(e){return this.callbacks.add("onServerMethodRemoved",e)},e.prototype.getServerById=function(e){return this.hideServerMethodSystemFlags(this.servers[e])},e.prototype.reset=function(){var e,t=this;Object.keys(this.servers).forEach((function(e){t.removeServerById(e,"reset")})),this.servers=((e={})[this.myServer.id]=this.myServer,e),this.methodsCount={}},e.prototype.createMethodIdentifier=function(e){var t,n,i=null!==(t=e.input_signature)&&void 0!==t?t:"",r=null!==(n=e.result_signature)&&void 0!==n?n:"";return(e.name+i+r).toLowerCase()},e.prototype.getServersByMethod=function(e){var t=[];return Object.values(this.servers).forEach((function(n){Object.values(n.methods).forEach((function(i){i.identifier===e&&t.push(n.instance)}))})),t},e.prototype.returnUnsubWithDelayedReplay=function(e,t,n){var i=!1;return setTimeout((function(){t.forEach((function(e){i||n(e)}))}),0),function(){i=!0,e()}},e.prototype.hideServerMethodSystemFlags=function(e){var t={};return Object.entries(e.methods).forEach((function(e){var n=e[0],i=e[1];t[n]=xt(i)})),i(i({},e),{methods:t})},e.prototype.extractMethodsFromServers=function(e){return Object.values(e).reduce((function(e,t){return s(s([],e,!0),Object.values(t.methods),!0)}),[])},e}(),At=function(){function e(){this.nextId=0,this.methods=[]}return e.prototype.add=function(e){return e.repoId=String(this.nextId),this.nextId+=1,this.methods.push(e),e},e.prototype.remove=function(e){if("string"!==typeof e)return new TypeError("Expecting a string");this.methods=this.methods.filter((function(t){return t.repoId!==e}))},e.prototype.getById=function(e){if("string"===typeof e)return this.methods.find((function(t){return t.repoId===e}))},e.prototype.getList=function(){return this.methods.map((function(e){return e}))},e.prototype.length=function(){return this.methods.length},e.prototype.reset=function(){this.methods=[]},e}(),Et="onSubscriptionRequest",Pt="onSubscriptionAdded",Mt="onSubscriptionRemoved",Rt=function(){function e(e,t,n){var i=this;this.session=e,this.repository=t,this.serverRepository=n,this.ERR_URI_SUBSCRIPTION_FAILED="com.tick42.agm.errors.subscription.failure",this.callbacks=D(),this.nextStreamId=0,e.on("add-interest",(function(e){i.handleAddInterest(e)})),e.on("remove-interest",(function(e){i.handleRemoveInterest(e)}))}return e.prototype.acceptRequestOnBranch=function(e,t,n){if("string"!==typeof n&&(n=""),"object"!==typeof t.protocolState.subscriptionsMap)throw new TypeError("The streaming method is missing its subscriptions.");if(!Array.isArray(t.protocolState.branchKeyToStreamIdMap))throw new TypeError("The streaming method is missing its branches.");var i=this.getStreamId(t,n),r=e.msg.subscription_id,o={id:r,arguments:e.arguments,instance:e.instance,branchKey:n,streamId:i,subscribeMsg:e.msg};t.protocolState.subscriptionsMap[r]=o,this.session.sendFireAndForget({type:"accepted",subscription_id:r,stream_id:i}),this.callbacks.execute(Pt,o,t)},e.prototype.rejectRequest=function(e,t,n){"string"!==typeof n&&(n=""),this.sendSubscriptionFailed("Subscription rejected by user. "+n,e.msg.subscription_id)},e.prototype.pushData=function(e,t,n){var i=this;if("object"===typeof e&&Array.isArray(e.protocolState.branchKeyToStreamIdMap)){if("object"!==typeof t)throw new Error("Invalid arguments. Data must be an object.");"string"===typeof n?n=[n]:(!Array.isArray(n)||n.length<=0)&&(n=[]),e.protocolState.branchKeyToStreamIdMap.filter((function(e){return!n||0===n.length||n.indexOf(e.key)>=0})).map((function(e){return e.streamId})).forEach((function(e){var n={type:"publish",stream_id:e,data:t};i.session.sendFireAndForget(n)}))}},e.prototype.pushDataToSingle=function(e,t,n){if("object"!==typeof n)throw new Error("Invalid arguments. Data must be an object.");var i={type:"post",subscription_id:t.id,data:n};this.session.sendFireAndForget(i)},e.prototype.closeSingleSubscription=function(e,t){e.protocolState.subscriptionsMap&&delete e.protocolState.subscriptionsMap[t.id];var n={type:"drop-subscription",subscription_id:t.id,reason:"Server dropping a single subscription"};this.session.sendFireAndForget(n),t.instance,this.callbacks.execute(Mt,t,e)},e.prototype.closeMultipleSubscriptions=function(e,t){var n=this;if("object"===typeof e&&"object"===typeof e.protocolState.subscriptionsMap&&e.protocolState.subscriptionsMap){var i=e.protocolState.subscriptionsMap,r=Object.keys(i).map((function(e){return i[e]}));"string"===typeof t&&(r=r.filter((function(e){return e.branchKey===t}))),r.forEach((function(e){delete i[e.id];var t={type:"drop-subscription",subscription_id:e.id,reason:"Server dropping all subscriptions on stream_id: "+e.streamId};n.session.sendFireAndForget(t)}))}},e.prototype.getSubscriptionList=function(e,t){if("object"!==typeof e)return[];if(!e.protocolState.subscriptionsMap)return[];var n=e.protocolState.subscriptionsMap,i=Object.keys(n).map((function(e){return n[e]}));return"string"!==typeof t?i:i.filter((function(e){return e.branchKey===t}))},e.prototype.getBranchList=function(e){if("object"!==typeof e)return[];if(!e.protocolState.subscriptionsMap)return[];var t=e.protocolState.subscriptionsMap,n=Object.keys(t).map((function(e){return t[e]})),i=[];return n.forEach((function(e){var t="";"object"===typeof e&&"string"===typeof e.branchKey&&(t=e.branchKey),-1===i.indexOf(t)&&i.push(t)})),i},e.prototype.onSubAdded=function(e){this.onSubscriptionLifetimeEvent(Pt,e)},e.prototype.onSubRequest=function(e){this.onSubscriptionLifetimeEvent(Et,e)},e.prototype.onSubRemoved=function(e){this.onSubscriptionLifetimeEvent(Mt,e)},e.prototype.handleRemoveInterest=function(e){var t=this.serverRepository.getById(e.method_id);if("string"===typeof e.subscription_id&&"object"===typeof t&&t.protocolState.subscriptionsMap&&"object"===typeof t.protocolState.subscriptionsMap[e.subscription_id]){var n=t.protocolState.subscriptionsMap[e.subscription_id];delete t.protocolState.subscriptionsMap[e.subscription_id],this.callbacks.execute(Mt,n,t)}},e.prototype.onSubscriptionLifetimeEvent=function(e,t){this.callbacks.add(e,t)},e.prototype.getNextStreamId=function(){return this.nextStreamId+++""},e.prototype.handleAddInterest=function(e){var t=this.repository.getServerById(e.caller_id).instance,n={msg:e,arguments:e.arguments_kv||{},instance:t},i=this.serverRepository.getById(e.method_id);if(void 0!==i)i.protocolState.subscriptionsMap&&i.protocolState.subscriptionsMap[e.subscription_id]?this.sendSubscriptionFailed("A subscription with id "+e.subscription_id+" already exists.",e.subscription_id):this.callbacks.execute(Et,n,i);else{var r="No method with id "+e.method_id+" on this server.";this.sendSubscriptionFailed(r,e.subscription_id)}},e.prototype.sendSubscriptionFailed=function(e,t){var n={type:"error",reason_uri:this.ERR_URI_SUBSCRIPTION_FAILED,reason:e,request_id:t};this.session.sendFireAndForget(n)},e.prototype.getStreamId=function(e,t){if("string"!==typeof t&&(t=""),!e.protocolState.branchKeyToStreamIdMap)throw new Error("streaming ".concat(e.definition.name," method without protocol state"));var n=e.protocolState.branchKeyToStreamIdMap.filter((function(e){return e.key===t}))[0],i=n?n.streamId:void 0;return"string"===typeof i&&""!==i||(i=this.getNextStreamId(),e.protocolState.branchKeyToStreamIdMap.push({key:t,streamId:i})),i},e}(),Nt=function(){function e(e,t,n,i){var r=this;this.session=e,this.clientRepository=t,this.serverRepository=n,this.logger=i,this.callbacks=D(),this.streaming=new Rt(e,t,n),this.session.on("invoke",(function(e){return r.handleInvokeMessage(e)}))}return e.prototype.createStream=function(e){return e.protocolState.subscriptionsMap={},e.protocolState.branchKeyToStreamIdMap=[],this.register(e,!0)},e.prototype.register=function(e,t){var n,i=this,r=e.definition,o=Object.assign({},{metadata:null!==(n=r.flags)&&void 0!==n?n:{}},{streaming:t||!1}),s={type:"register",methods:[{id:e.repoId,name:r.name,display_name:r.displayName,description:r.description,version:r.version,flags:o,object_types:r.objectTypes||r.object_types,input_signature:r.accepts,result_signature:r.returns,restrictions:void 0}]};return this.session.send(s,{methodId:e.repoId}).then((function(){i.logger.debug("registered method "+e.definition.name+" with id "+e.repoId)})).catch((function(t){throw i.logger.warn("failed to register method ".concat(e.definition.name," with id ").concat(e.repoId," - ").concat(JSON.stringify(t))),t}))},e.prototype.onInvoked=function(e){this.callbacks.add("onInvoked",e)},e.prototype.methodInvocationResult=function(e,t,n,i){var r;r=n||""===n?{type:"error",request_id:t,reason_uri:"agm.errors.client_error",reason:n,context:i,peer_id:void 0}:{type:"yield",invocation_id:t,peer_id:this.session.peerId,result:i,request_id:void 0},this.session.sendFireAndForget(r)},e.prototype.unregister=function(e){return r(this,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return t={type:"unregister",methods:[e.repoId]},[4,this.session.send(t)];case 1:return n.sent(),[2]}}))}))},e.prototype.getBranchList=function(e){return this.streaming.getBranchList(e)},e.prototype.getSubscriptionList=function(e,t){return this.streaming.getSubscriptionList(e,t)},e.prototype.closeAllSubscriptions=function(e,t){this.streaming.closeMultipleSubscriptions(e,t)},e.prototype.pushData=function(e,t,n){this.streaming.pushData(e,t,n)},e.prototype.pushDataToSingle=function(e,t,n){this.streaming.pushDataToSingle(e,t,n)},e.prototype.closeSingleSubscription=function(e,t){this.streaming.closeSingleSubscription(e,t)},e.prototype.acceptRequestOnBranch=function(e,t,n){this.streaming.acceptRequestOnBranch(e,t,n)},e.prototype.rejectRequest=function(e,t,n){this.streaming.rejectRequest(e,t,n)},e.prototype.onSubRequest=function(e){this.streaming.onSubRequest(e)},e.prototype.onSubAdded=function(e){this.streaming.onSubAdded(e)},e.prototype.onSubRemoved=function(e){this.streaming.onSubRemoved(e)},e.prototype.handleInvokeMessage=function(e){var t=e.invocation_id,n=e.caller_id,i=e.method_id,r=e.arguments_kv,o=this.serverRepository.getList().filter((function(e){return e.repoId===i}))[0];if(void 0!==o){var s={args:r,instance:this.clientRepository.getServerById(n).instance};this.callbacks.execute("onInvoked",o,t,s)}},e}(),Ot=function(){function e(e,t){this.repository=e,this.subscriptionData=t}return Object.defineProperty(e.prototype,"requestArguments",{get:function(){return this.subscriptionData.params.arguments||{}},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"servers",{get:function(){var e=this;return this.subscriptionData.trackedServers.filter((function(e){return e.subscriptionId})).map((function(t){return e.repository.getServerById(t.serverId).instance}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"serverInstance",{get:function(){return this.servers[0]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"stream",{get:function(){return this.subscriptionData.method},enumerable:!1,configurable:!0}),e.prototype.onData=function(e){if("function"!==typeof e)throw new TypeError("The data callback must be a function.");this.subscriptionData.handlers.onData.push(e),1===this.subscriptionData.handlers.onData.length&&this.subscriptionData.queued.data.length>0&&this.subscriptionData.queued.data.forEach((function(t){e(t)}))},e.prototype.onClosed=function(e){if("function"!==typeof e)throw new TypeError("The callback must be a function.");this.subscriptionData.handlers.onClosed.push(e)},e.prototype.onFailed=function(e){},e.prototype.onConnected=function(e){if("function"!==typeof e)throw new TypeError("The callback must be a function.");this.subscriptionData.handlers.onConnected.push(e)},e.prototype.close=function(){this.subscriptionData.close()},e.prototype.setNewSubscription=function(e){this.subscriptionData=e},e}(),jt=function(){function e(e){this.config=e,this.cache=[],this.timeoutIds=[]}return e.prototype.add=function(e){var t=this,n=Pe();this.cache.push({id:n,element:e});var i=setTimeout((function(){var e=t.cache.findIndex((function(e){return e.id===n}));e<0||t.cache.splice(e,1)}),this.config.ELEMENT_TTL_MS);this.timeoutIds.push(i)},e.prototype.flush=function(){var e=this.cache.map((function(e){return e.element}));return this.timeoutIds.forEach((function(e){return clearInterval(e)})),this.cache=[],this.timeoutIds=[],e},e}(),Dt="awaitingAccept",Ft="subscribed",Wt="Subscription failed.",Lt="Subscription rejected.",Ut="ServerInitiated",Bt="ClientInitiated",Ht=function(){function e(e,t,n){var i=this;this.session=e,this.repository=t,this.logger=n,this.subscriptionsList={},this.timedCache=new jt({ELEMENT_TTL_MS:1e4}),this.subscriptionIdToLocalKeyMap={},this.nextSubLocalKey=0,this.handleErrorSubscribing=function(e){var t=e._tag,n=t.subLocalKey,r=i.subscriptionsList[n];if("object"===typeof r&&(r.trackedServers=r.trackedServers.filter((function(e){return e.serverId!==t.serverId})),r.trackedServers.length<=0)){if(clearTimeout(r.timeoutId),r.status===Dt){var o="string"===typeof e.reason&&""!==e.reason?' Publisher said "'+e.reason+'".':" No reason given.",s="object"===typeof r.params.arguments?JSON.stringify(r.params.arguments):"{}";r.error({message:Lt+o+" Called with:"+s,called_with:r.params.arguments,method:r.method})}else r.status===Ft&&i.callOnClosedHandlers(r);delete i.subscriptionsList[n]}},this.handleSubscribed=function(e){var t=e._tag.subLocalKey,n=i.subscriptionsList[t];if("object"===typeof n){var r=e._tag.serverId,o=n.trackedServers.filter((function(e){return e.serverId===r}))[0];if("object"===typeof o){o.subscriptionId=e.subscription_id,i.subscriptionIdToLocalKeyMap[e.subscription_id]=t;var s=n.status===Dt;if(n.status=Ft,s){var a=!1,c=n.subscription;c?(c.setNewSubscription(n),n.success(c),a=!0):(c=new Ot(i.repository,n),n.subscription=c,n.success(c));for(var u=0,d=n.handlers.onConnected;u0?c.forEach((function(e){"function"===typeof e&&e(a())})):u.push(a())}}}},this.handleSubscriptionCancelled=function(e){var t=i.subscriptionIdToLocalKeyMap[e.subscription_id];if("undefined"!==typeof t){var n=i.subscriptionsList[t];if("object"===typeof n){var r=n.trackedServers.length-1;n.trackedServers=n.trackedServers.filter((function(t){return t.subscriptionId!==e.subscription_id||(n.queued.closers.push(t.serverId),!1)})),n.trackedServers.length===r&&(n.trackedServers.length<=0&&(i.timedCache.add(n),clearTimeout(n.timeoutId),i.callOnClosedHandlers(n),delete i.subscriptionsList[t]),delete i.subscriptionIdToLocalKeyMap[e.subscription_id])}}},e.on("subscribed",this.handleSubscribed),e.on("event",this.handleEventData),e.on("subscription-cancelled",this.handleSubscriptionCancelled)}return e.prototype.subscribe=function(e,t,n,i,r,o){var s=this;if(0!==n.length){var a=this.getNextSubscriptionLocalKey(),c=this.registerSubscription(a,e,t,i,r,t.methodResponseTimeout||1e4,o);"object"===typeof c?n.forEach((function(n){var i=n.server.id,r=n.methods.find((function(t){return t.name===e.name}));if(r){c.trackedServers.push({serverId:i,subscriptionId:void 0});var o={type:"subscribe",server_id:i,method_id:r.gatewayId,arguments_kv:t.arguments};s.session.send(o,{serverId:i,subLocalKey:a}).then((function(e){return s.handleSubscribed(e)})).catch((function(e){return s.handleErrorSubscribing(e)}))}else s.logger.error("can not find method ".concat(e.name," for target ").concat(n.server.id))})):r({method:e,called_with:t.arguments,message:Wt+" Unable to register the user callbacks."})}else r({method:e,called_with:t.arguments,message:Wt+" No available servers matched the target params."})},e.prototype.drainSubscriptions=function(){var e=Object.values(this.subscriptionsList);return this.subscriptionsList={},this.subscriptionIdToLocalKeyMap={},e},e.prototype.drainSubscriptionsCache=function(){return this.timedCache.flush()},e.prototype.getNextSubscriptionLocalKey=function(){var e=this.nextSubLocalKey;return this.nextSubLocalKey+=1,e},e.prototype.registerSubscription=function(e,t,n,i,r,o,s){var a=this,c={localKey:e,status:Dt,method:t,params:n,success:i,error:r,trackedServers:[],handlers:{onData:(null===s||void 0===s?void 0:s.handlers.onData)||[],onClosed:(null===s||void 0===s?void 0:s.handlers.onClosed)||[],onConnected:(null===s||void 0===s?void 0:s.handlers.onConnected)||[]},queued:{data:[],closers:[]},timeoutId:void 0,close:function(){return a.closeSubscription(e)},subscription:null===s||void 0===s?void 0:s.subscription};return s||(n.onData&&c.handlers.onData.push(n.onData),n.onClosed&&c.handlers.onClosed.push(n.onClosed),n.onConnected&&c.handlers.onConnected.push(n.onConnected)),this.subscriptionsList[e]=c,c.timeoutId=setTimeout((function(){if(void 0!==a.subscriptionsList[e]){var i=a.subscriptionsList[e];i.status===Dt?(r({method:t,called_with:n.arguments,message:Wt+" Subscription attempt timed out after "+o+" ms."}),delete a.subscriptionsList[e]):i.status===Ft&&i.trackedServers.length>0&&(i.trackedServers=i.trackedServers.filter((function(e){return"undefined"!==typeof e.subscriptionId})),delete i.timeoutId,i.trackedServers.length<=0&&(a.callOnClosedHandlers(i),delete a.subscriptionsList[e]))}}),o),c},e.prototype.callOnClosedHandlers=function(e,t){var n,i=e.queued.closers.length,r=i>0?e.queued.closers[i-1]:null;void 0!==r&&"string"===typeof r&&(n=this.repository.getServerById(r).instance),e.handlers.onClosed.forEach((function(i){"function"===typeof i&&i({message:t||Ut,requestArguments:e.params.arguments||{},server:n,stream:e.method})}))},e.prototype.closeSubscription=function(e){var t=this,n=this.subscriptionsList[e];"object"===typeof n&&(n.trackedServers.forEach((function(e){"undefined"!==typeof e.subscriptionId&&(n.queued.closers.push(e.serverId),t.session.sendFireAndForget({type:"unsubscribe",subscription_id:e.subscriptionId,reason_uri:"",reason:Bt}),delete t.subscriptionIdToLocalKeyMap[e.subscriptionId])})),n.trackedServers=[],this.callOnClosedHandlers(n,Bt),delete this.subscriptionsList[e])},e}(),Gt=function(){function e(e,t,n){var i=this;this.session=e,this.repository=t,this.logger=n,e.on("peer-added",(function(e){return i.handlePeerAdded(e)})),e.on("peer-removed",(function(e){return i.handlePeerRemoved(e)})),e.on("methods-added",(function(e){return i.handleMethodsAddedMessage(e)})),e.on("methods-removed",(function(e){return i.handleMethodsRemovedMessage(e)})),this.streaming=new Ht(e,t,n)}return e.prototype.subscribe=function(e,t,n,i,r,o){this.streaming.subscribe(e,t,n,i,r,o)},e.prototype.invoke=function(e,t,n,i){var r=this,o=i.id,s={type:"call",server_id:o,method_id:t.gatewayId,arguments_kv:n};return this.session.send(s,{invocationId:e,serverId:o}).then((function(e){return r.handleResultMessage(e)})).catch((function(e){return r.handleInvocationError(e)}))},e.prototype.drainSubscriptions=function(){return this.streaming.drainSubscriptions()},e.prototype.drainSubscriptionsCache=function(){return this.streaming.drainSubscriptionsCache()},e.prototype.handlePeerAdded=function(e){var t=e.new_peer_id,n=e.identity,i=!e.meta||e.meta.local,r=Number(n.process),o={machine:n.machine,pid:isNaN(r)?n.process:r,instance:n.instance,application:n.application,applicationName:n.applicationName,environment:n.environment,region:n.region,user:n.user,windowId:n.windowId,peerId:t,api:n.api,isLocal:i};this.repository.addServer(o,t)},e.prototype.handlePeerRemoved=function(e){var t=e.removed_id,n=e.reason;this.repository.removeServerById(t,n)},e.prototype.handleMethodsAddedMessage=function(e){var t=this,n=e.server_id;e.methods.forEach((function(e){t.repository.addServerMethod(n,e)}))},e.prototype.handleMethodsRemovedMessage=function(e){var t=this,n=e.server_id,i=e.methods,r=this.repository.getServerById(n);Object.keys(r.methods).forEach((function(e){var o=r.methods[e];i.indexOf(o.gatewayId)>-1&&t.repository.removeServerMethod(n,e)}))},e.prototype.handleResultMessage=function(e){var t=e._tag.invocationId,n=e.result,i=e._tag.serverId;return{invocationId:t,result:n,instance:this.repository.getServerById(i).instance,status:pt.Success,message:""}},e.prototype.handleInvocationError=function(e){if(this.logger.debug("handle invocation error ".concat(JSON.stringify(e))),"_tag"in e){var t=e._tag.invocationId,n=e._tag.serverId,i=this.repository.getServerById(n),r=e.reason;return{invocationId:t,result:e.context,instance:i.instance,status:pt.Error,message:r}}return{invocationId:"",message:e.message,status:pt.Error,error:e}},e}();function qt(e,t,n,i,s,a){var c,u=s.logger.subLogger("gw3-protocol"),d=new Promise((function(e){c=e})),l=t.domain("agm",["subscribed"]),h=new Nt(l,n,i,u.subLogger("server")),p=new Gt(l,n,u.subLogger("client"));function f(){return r(this,void 0,void 0,(function(){var e,t,n,r,s,c,d,l,h,f,g;return o(this,(function(o){switch(o.label){case 0:for(u.info("reconnected - will replay registered methods and subscriptions"),p.drainSubscriptionsCache().forEach((function(e){var t=e.method,n=Object.assign({},e.params);u.info("trying to soft-re-subscribe to method ".concat(t.name,", with params: ").concat(JSON.stringify(n))),a.client.subscribe(t,n,void 0,void 0,e).then((function(){return u.info("soft-subscribing to method ".concat(t.name," DONE"))})).catch((function(e){return u.warn("subscribing to method ".concat(t.name," failed: ").concat(JSON.stringify(e),"}"))}))})),e=[],t=p.drainSubscriptions(),n=function(t){var n=t.method,i=Object.assign({},t.params);u.info("trying to re-subscribe to method ".concat(n.name,", with params: ").concat(JSON.stringify(i))),e.push(a.client.subscribe(n,i,void 0,void 0,t).then((function(){return u.info("subscribing to method ".concat(n.name," DONE"))})))},r=0,s=t;r0))return[3,4];r.label=1;case 1:return r.trys.push([1,3,,4]),[4,a.invoke(t,{appName:null===e||void 0===e?void 0:e.application,pid:process.pid})];case 2:return r.sent(),[3,4];case 3:return n=r.sent(),i=n,c.error("Cannot register as an instance: ".concat(JSON.stringify(i.message))),[3,4];case 4:return[2]}}))}))}return f.then(b).then(w).then((function(){return Promise.all([_(),C(),I(),S()])})).then((function(){return a.readyPromise})).then((function(){return E()})).then((function(){return k(m.libs||[])})).then(T).then(A).catch((function(e){return Promise.reject({err:e,libs:v})}))};"undefined"!==typeof window&&(window.IOConnectCore=Kt),Kt.version=tt,Kt.default=Kt;class $t{constructor(e){this._id=e}get id(){return this._id}_update(e){if(e._id!==this._id)throw Error("Can not update from entity with different id.");this._updateCore(e)}_updateCore(e){}_beforeDelete(e){}}function Qt(e){return"number"===typeof e}function Yt(e){return"string"===typeof e}function Xt(e){return"object"===typeof e&&null!==e}function Zt(e){return Array.isArray?Array.isArray(e):"[object Array]"===toString.call(e)}function en(e){return"undefined"===typeof e}function tn(e){return null===e||"undefined"===typeof e}function nn(e){return"string"!==typeof e||!e||0===e.length||/^\s*$/.test(e)}function rn(e){return!0===e||!1===e||"[object Boolean]"===toString.call(e)}function on(e){return!!(e&&e.constructor&&e.call&&e.apply)}function sn(e,t){for(let n=0;n{}:"function"!==typeof n&&(n=()=>{}),e.then(t,n)}class un extends $t{constructor(e,t,n,i){super(e),this._name=e,this._description=i,this._ownerWindow=t,this._helperWindows=n||[]}get name(){return this._name}get description(){return this._description}get helperWindows(){return this._helperWindows.map((e=>this.covertToWindowDef(e)))}get ownerWindow(){return this.covertToWindowDef(this._ownerWindow)}initiate(e,t,n){return this._manager.initiate(this._name,e,t,n)}_updateCore(e){super._updateCore(e),an(e._description,(e=>this._description=e)),an(e._ownerWindow,(e=>this._ownerWindow=e)),an(e._helperWindows,(e=>this._helperWindows=e))}covertToWindowDef(e){var t,n;return{type:null===(t=null===e||void 0===e?void 0:e.id)||void 0===t?void 0:t.type,name:null===(n=null===e||void 0===e?void 0:e.id)||void 0===n?void 0:n.name}}}class dn extends $t{constructor(e,t){super(e),this._name=e,this._appByWindowTypeGetter=t}get name(){return this._name}get config(){return this._appByWindowTypeGetter(this._name)}get windows(){return this._manager.getWindows({type:this._name})}create(e,t){const n=Object.assign({type:this.name,name:this.name,isIndependent:!1},t);return this._manager.createWindow(e,n)}}class ln{constructor(e,t){this.entity=e,this.context=t}}class hn{constructor(e){this.type=e}}class pn extends hn{constructor(e,t){super(gn.StatusChange),this.newStatus=e,this.oldStatus=t}}class fn extends hn{constructor(e,t,n){super(gn.ActivityContextChange),this.context="string"===typeof e?JSON.parse(e):e,this.updated=t,this.removed=n}}class gn{}gn.Added="added",gn.Removed="removed",gn.Updated="updated",gn.Closed="closed",gn.StatusChange="statusChange",gn.ActivityContextChange="activityContextUpdate",gn.ActivityWindowEvent="activityWindowEvent",gn.ActivityWindowJoinedActivity="joined",gn.ActivityWindowLeftActivity="left";class mn{}mn.Created="created",mn.Started="started",mn.Destroyed="destroyed";class vn{constructor(e){this._activity=e}register(e,t){this._ensureHasAgm(),vn.AGM.register(e,t)}servers(){return this._ensureHasAgm(),tn(this._activity)?[]:this._activity.windows.map((e=>e.instance))}methods(){if(this._ensureHasAgm(),tn(this._activity))return[];const e=this._activity.windows,t=[],n=[];return e.forEach((e=>{this.methodsForWindow(e).forEach((e=>{-1===t.indexOf(e.name)&&(t.push(e.name),n.push(e))}))})),n}methodsForWindow(e){return this._ensureHasAgm(),e.instance?vn.AGM.methodsForInstance(e.instance):[]}invoke(e,t,n,i,r,o){this._ensureHasAgm();const s=this.servers();if(tn(n)&&(n="activity.all"),Yt(n))if("activity.all"===n);else{if("activity.best"!==n){if("all"===n||"best"===n)return cn(vn.AGM.invoke(e,t,n,i),r,o);throw new Error("Invalid invoke target "+n)}{const t=s.filter((t=>vn.AGM.methodsForInstance(t).filter((t=>t.name===e)).length>0));t.length>0&&t[0]}}else if(Zt(n)){if(n.length>=0){const e=n[0];if(this._isInstance(e))n.map((e=>e));else{if(!this._isActivityWindow(e))throw new Error("Unknown target object");n.map((e=>e.instance))}}}else if(this._isInstance(n));else{if(!this._isActivityWindow(n))throw new Error("Unknown target object");n.instance}throw new Error("Not implemented")}unregister(e){return this._ensureHasAgm(),vn.AGM.unregister(e)}createStream(e,t,n){this._ensureHasAgm(),vn.AGM.createStream(e,{subscriptionAddedHandler:t,subscriptionRemovedHandler:n,subscriptionRequestHandler:void 0})}subscribe(e,t,n){return this._ensureHasAgm(),vn.AGM.subscribe(e,t)}_ensureHasAgm(){if(tn(vn.AGM))throw new Error("Agm should be configured to be used in activity")}_isInstance(e){return void 0!==e.application}_isActivityWindow(e){return void 0!==e.instance}}class yn{constructor(e,t,n){this._manager=e,this._ownerActivityId=t,this._state=n}get ownerId(){return this._state.ownerId}get windowIds(){return this._state.windowIds}get frameColor(){return this._state.frameColor}get context(){return this._state.context}get tag(){return this._state.tag}detach(e){e=e||{};const t={};return Object.keys(this._state).forEach((e=>{t[e]=this._state[e]})),t.context=e.context||t.context,t.frameColor=e.frameColor||t.frameColor,this._manager.detachActivities(this._ownerActivityId,t)}}const wn=e=>{setTimeout(e,0)};function bn(e,t){if(!on(t))return e;e.then((e=>{wn((()=>{t(null,e)}))}),(e=>{wn((()=>{t(e,null)}))}))}class _n extends $t{constructor(e,t,n,i,r){super(e),this._id=e,this._actType=t,this._status=n,this._context=i,this._ownerId=r,this._agm=new vn(this)}get type(){if(this._manager)return this._manager.getActivityType(this._actType)}get context(){return this._context}get status(){return this._status}get owner(){return this._ownerId?this._manager.getWindows({id:this._ownerId})[0]:null}get windows(){return this._manager.getWindows({activityId:this._id})}get agm(){return this._agm}addWindow(e,t){return this._manager.addWindowToActivity(this,e,t)}createWindow(e,t){return this._manager.createWindow(this,e,t)}createStackedWindows(e,t,n){return this._manager.createStackedWindows(this,e,t,n)}leave(e,t){return this._manager.leaveWindowFromActivity(this,e,t)}getWindowsByType(e){const t={activityId:this._id,type:e};return this._manager.getWindows(t)}setContext(e,t){return this._manager.setActivityContext(this,e,t)}updateContext(e,t){return this._manager.updateActivityContext(this,e,t)}onStatusChange(e){return this._manager.subscribeActivityEvents(((t,n,i)=>{t.id===this.id&&e(t,n,i)}))}onWindowEvent(e){return this._manager.subscribeWindowEvents(((t,n,i)=>{t.id===this.id&&e(t,n,i)}))}onContextChanged(e){this._manager.subscribeActivityContextChanged(((t,n,i,r)=>{t.id===this.id&&e(n,i,r,t)}));try{e(this.context,this.context,[],this)}catch(t){return}}stop(){this._manager.stopActivity(this)}clone(e){return this._manager.clone(this,e)}attach(e,t){let n;return n="string"===typeof e?e:e.id,this._manager.attachActivities(n,this.id,t)}onActivityAttached(e){this._manager.subscribeActivitiesAttached(((t,n,i)=>{t===this._id&&e(i)}))}onDetached(e){this._manager.subscribeActivitiesDetached(((t,n,i)=>{n.id===this._id&&e(t,i)}))}_updateCore(e){super._updateCore(e),an(e._actType,(e=>this._actType=e)),an(e._context,(e=>this._context=e)),an(e._ownerId,(e=>this._ownerId=e)),!e._status||this._status&&this._status.state===e._status.state||(this._status=e._status)}_updateDescriptors(e){this._attached=e.map((e=>new yn(this._manager,this._id,e)))}get attached(){return this._attached}setFrameColor(e,t){return bn(new Promise(((t,n)=>{let i=this.windows.length;0===i&&t(this),this.windows.forEach((n=>{n.underlyingWindow.setFrameColor(e,(()=>{i--,i<=0&&t(this)}))})),setTimeout((()=>{i>0&&n(this.id+" - timed out waiting for setFrameColor with"+e)}),5e3)})),t)}getFrameColor(){return this.windows&&0!==this.windows.length?this.windows[0].underlyingWindow.frameColor:""}}class Cn{}Cn.Trace="trace",Cn.Debug="debug",Cn.Info="info",Cn.Warn="warn",Cn.Error="error";class In{static GetNamed(e){return new In(e)}static Get(e){return new In(In.GetTypeName(e))}constructor(e){this._name=e,tn(In.GlueLogger)||(this._glueLogger=In.GlueLogger.subLogger(e))}trace(e){tn(this._glueLogger)?In.Level===Cn.Trace&&console.info(this._getMessage(e,Cn.Trace)):this._glueLogger.trace(e)}debug(e){tn(this._glueLogger)?In.Level!==Cn.Debug&&In.Level!==Cn.Trace||console.info(this._getMessage(e,Cn.Debug)):this._glueLogger.debug(e)}info(e){tn(this._glueLogger)?In.Level!==Cn.Debug&&In.Level!==Cn.Trace&&In.Level!==Cn.Info||console.info(this._getMessage(e,Cn.Info)):this._glueLogger.info(e)}warn(e){tn(this._glueLogger)?In.Level!==Cn.Debug&&In.Level!==Cn.Trace&&In.Level!==Cn.Info&&In.Level!==Cn.Warn||console.info(this._getMessage(e,Cn.Info)):this._glueLogger.warn(e)}error(e){tn(this._glueLogger)?(console.error(this._getMessage(e,Cn.Error)),console.trace()):this._glueLogger.error(e)}_getMessage(e,t){return"["+t+"] "+this._name+" - "+e}static GetTypeName(e){const t=/function (.{1,})\(/.exec(e.constructor.toString());return t&&t.length>1?t[1]:""}}In.Level=Cn.Info;class Sn extends $t{constructor(e,t,n,i,r,o,s,a){super(e),this._logger=In.Get("window"),this._type=n,this._activityId=i,this._name=t,this._instance=r,this._isIndependent=o,this._windowGetter=s,this._hcWindowId=a}getBounds(){return this._manager.getWindowBounds(this.id)}get name(){return this._name}get isIndependent(){return this._isIndependent}get type(){if(this._manager)return this._manager.getWindowType(this._type)}get activity(){if(!en(this._activityId))return this._manager.getActivityById(this._activityId)}get isOwner(){const e=this.activity;return!en(e)&&e.owner.id===this.id}setVisible(e,t){return this._manager.setWindowVisibility(this.id,e)}activate(e){return this._manager.activateWindow(this.id,e)}setBounds(e,t){return this._manager.setWindowBounds(this.id,e,t)}close(){return this._manager.closeWindow(this.id)}get instance(){return this._instance}get underlyingWindow(){const e=this._windowGetter();return e||{id:this._hcWindowId}}onActivityJoined(e){this._subscribeForActivityWindowEvent(gn.ActivityWindowJoinedActivity,e)}onActivityRemoved(e){this._subscribeForActivityWindowEvent(gn.ActivityWindowLeftActivity,e)}_updateCore(e){an(e._activityId,(e=>this._activityId=e)),an(e._isIndependent,(e=>this._isIndependent=e)),an(e._hcWindowId,(e=>this._hcWindowId=e)),an(e._type,(e=>this._type=e)),an(e._name,(e=>this._name=e)),tn(e._instance)||(this._instance=e._instance)}_subscribeForActivityWindowEvent(e,t){this._manager.subscribeWindowEvents(((n,i,r)=>{i.id===this.id&&r===e&&t(n)}))}_beforeDelete(e){this._hcWindowId=e._hcWindowId}}class kn{constructor(e,t,n){this.state=e,this.message=t,this.time=n}getState(){return this.state}getMessage(){return this.message}getTime(){return this.time}}const xn="error",Tn="add-types",An="types-added",En="remove-types",Pn="types-removed",Mn="created",Rn="destroyed",Nn="initiated",On="join-activity",jn="joined",Dn="activity-joined",Fn="leave-activity",Wn="left",Ln="merge",Un="split",Bn="owner-changed",Hn="add-peer-factories",Gn="peer-factories-added",qn="remove-peer-factories",zn="peer-factories-removed",Vn="create",Jn="create-peer",Kn="peer-requested",$n="ready",Qn="peer-created",Yn="destroy",Xn="dispose-peer",Zn="destroy-peer";class ei{static activityTypeGwMessageEntityToActivityType(e,t){const n=e=>new dn(e,void 0);return new un(e.name,e.owner_type&&n(e.owner_type),e.helper_types&&e.helper_types.map(n),t)}static peerFactoryGwMessageEntityToWindowType(e){return new dn(e.peer_type,(e=>{}))}static activityGwMessageToActivity(e,t){const n=void 0!==e.owner?e.owner.peer_id:e.owner_id;return new _n(e.activity_id,e.activity_type,t,e.context_snapshot,n)}static activityToActivityStatusChangeEvent(e){return new ln(e,new pn(e.status,void 0))}constructor(e){if(this._activityChangeCallbacks=[],this._activityTypeStatusChangeCallbacks=[],this._activityWindowChangeCallbacks=[],this._windowTypeStatusChangeCallbacks=[],this._peerIdAndFactoryIdToPeerType={},this._peerFactoriesRegisteredByUs={},this._gw3Subscriptions=[],this._contextSubscriptions={},this._activityTypesInitiatedFromMe={},this._config=e,this._connection=e.connection,this._logger=e.logger,this._contexts=e.contexts,this._windows=e.windows,this._sessionJoinedPromise=new Promise((e=>{this._sessionJoinedPromiseResolve=e})),this._activityJoinedPromise=new Promise((e=>{this._activityJoinedPromiseResolve=e})),this._config.activityId||this._activityJoinedPromiseResolve({}),this._gw3Session=this._connection.domain("activity",["joined","initiated","peer-created","token"]),"undefined"!==typeof window){const e=window.glue42gd;e&&e.activityInfo&&("function"===typeof e.addRefreshHandler&&e.addRefreshHandler(((t,n)=>{this._gw3Session.send({type:"reload"}).then((i=>{if(i.token){try{e.setGWToken(i.token)}catch(r){return void n(r.message||r)}t()}else n("Expected gateway token for refreshing.")}),n)})),e&&"function"===typeof e.addWillNavigateHandler&&e.addWillNavigateHandler(((t,n)=>{this._gw3Session.send({type:"reload"}).then((i=>{if(i.token){try{e.setGWToken(i.token)}catch(r){return void n(r.message||r)}t()}else n("Expected gateway token for refreshing.")}),n)})))}}get bridgeType(){return"GW3"}init(){this.forwardActivityTypeMessagesToStatusEventHandlers(),this.subscribe(Mn,this.handleActivityCreatedMessage),this.subscribe(Rn,this.handleActivityDestroyedMessage),this.forwardActivityMessagesToStatusEventHandlers(),this.forwardActivityCreatedAndJoinedActivityToActivityWindowEventHandlers(),this.forwardPeerFactoryMessagesToStatusEventHandlers(),this.forwardPeerFactoryMessagesToPeerFactoryRequests(),this.subscribe(Gn,this.handlePeerFactoriesAdded),this.subscribe(zn,this.handlePeerFactoriesRemoved),this.forwardActivityWindowMessagesToEventHandlers(),this.subscribe(Xn,(()=>{if("dispose"!==this._config.disposeRequestHandling){if("exit"===this._config.disposeRequestHandling){if(this._windows&&"undefined"!==typeof this._windows.my())return void this._windows.my().close();if("undefined"!==typeof window&&"function"===typeof window.close)return void window.close();if("undefined"!==typeof process&&"function"===typeof process.exit)return void process.exit()}}else this.dispose()})),this._gw3Session.onJoined((()=>{"trackMyOnly"===this._config.mode||"trackMyTypeAndInitiatedFromMe"===this._config.mode?this._sessionJoinedPromiseResolve(this):this._gw3Session.send({type:"subscribe",activity_types:"trackAll"===this._config.mode?[]:"trackTypes"===this._config.mode?this._config.typesToTrack:[]}).then((()=>{this._sessionJoinedPromiseResolve(this)}))})),this._gw3Session.join()}dispose(){this._gw3Subscriptions.forEach((e=>e&&this._connection.off(e))),this._gw3Subscriptions.length=0}ready(){return Promise.all([this._sessionJoinedPromise,this._activityJoinedPromise])}initReady(){return this._sessionJoinedPromise}onActivityTypeStatusChange(e){this._activityTypeStatusChangeCallbacks.push(e)}registerActivityType(e,t,n,i,r){const o={};o.name=e;const s=e=>({type:e.type,name:e.name,configuration:e});return o.owner_type=s(t),o.helper_types=n.map(s),this._gw3Session.send({type:Tn,types:[o]}).then((()=>{const e=ei.activityTypeGwMessageEntityToActivityType(o,r);return this.invokeCallbacks(this._activityTypeStatusChangeCallbacks,new ln(e,new hn(gn.Added)),Tn),e}))}unregisterActivityType(e){return this._gw3Session.send({type:En,types:[e]}).then((()=>{const t=new un(e,void 0,void 0,void 0);this.invokeCallbacks(this._activityTypeStatusChangeCallbacks,new ln(t,new hn(gn.Removed)),Tn)}))}onWindowTypeStatusChange(e){this._windowTypeStatusChangeCallbacks.push(e)}registerWindowFactory(e,t,n){if(this._peerFactoriesRegisteredByUs[e])return Promise.reject(new Error("Factory for windowType ".concat(e," already registered.")));this._peerFactoriesRegisteredByUs[e]=t;const i={id:e,peer_type:e,configuration:n};return this._gw3Session.send({type:Hn,factories:[i]}).then((()=>{this.invokeCallbacks(this._windowTypeStatusChangeCallbacks,new ln(ei.peerFactoryGwMessageEntityToWindowType(i),new hn(gn.Added)),Hn)})).catch((()=>{delete this._peerFactoriesRegisteredByUs[e]}))}unregisterWindowFactory(e){return this._peerFactoriesRegisteredByUs[e]?(delete this._peerFactoriesRegisteredByUs[e],this._gw3Session.send({type:qn,factory_ids:[e]}).then((()=>{this.invokeCallbacks(this._windowTypeStatusChangeCallbacks,new ln(new dn(e,void 0),new hn(gn.Removed)),Hn)}))):Promise.reject(new Error("Factory for windowType ".concat(e," not registered.")))}onActivityStatusChange(e){this._activityChangeCallbacks.push(e)}initiateActivity(e,t,n){const i={type:Vn,activity_type:e,initial_context:t};return this.isOverrideTypeDefinition(n)?i.types_override={owner_type:{type:n.owner.type,name:n.owner.name,configuration:n.owner},helper_types:n.helpers&&n.helpers.map((e=>({type:e.type,name:e.name,configuration:e})))}:i.configuration=n&&n.map((e=>({type:e.type,name:e.name,configuration:e}))),this.sendCreateAndMapResultingMessagesToPromise(i,Nn,((e,t)=>e.request_id===t),Mn,((e,t,n)=>e.activity_id===n.activity_id),Rn,((e,t,n)=>e.activity_id===n.activity_id),(e=>e.activity_id),null).then((t=>"trackMyTypeAndInitiatedFromMe"!==this._config.mode||this._activityTypesInitiatedFromMe[e]?t:(this._activityTypesInitiatedFromMe[e]=!0,this._gw3Session.send({type:"subscribe",activity_types:[e]}).then((()=>t)))))}stopActivity(e){return this._gw3Session.send({type:Yn,activity_id:e.id,reason_uri:"com.tick42.glue.activity.constants.destroyReason.general",reason:"Destroying activity"}).then((e=>!0))}updateActivityContext(e,t,n,i){if(n)return this._contexts.set(e.id,t);i=i||[];for(const r of i)t[r]=null;return this._contexts.update(e.id,t)}announceWindow(e,t){throw new Error("Invalid operation 'announceWindow' for GW3 protocol")}registerWindow(e,t,n){let i="undefined"!==typeof this._connection.gatewayToken;const r=this._connection.peerId;if("undefined"!==typeof window){const e=window.glue42gd;e&&(i="undefined"!==typeof e.activityInfo)}return i&&this._gw3Session.send({type:$n}),this.invokeCallbacks(this._activityWindowChangeCallbacks,new ln(new Sn(r,t,e,void 0,this.getAgmInstance(r),n,this.generateWindowGetter(r),void 0),new hn(gn.Added)),"register window"),Promise.resolve(r)}onActivityWindowChange(e){this._activityWindowChangeCallbacks.push(e)}createWindow(e,t){t.layout||(t.left||t.width||t.height||t.top)&&(t.layout={mode:"pixels",cellSize:1});const n=n=>{if(e)return this.joinActivity(e,n,t.name).then((()=>n))};return this.sendCreateAndMapResultingMessagesToPromise({type:Jn,peer_type:t.type,peer_name:t.name||t.type,configuration:t,activity_id:e},void 0,void 0,Qn,((e,t)=>e.request_id===t),void 0,void 0,(e=>e.created_id),n).then(n)}closeWindow(e){return this._gw3Session.send({type:Zn,destroy_peer_id:e}).then((e=>{}))}getAnnouncementInfo(){let e=this._config.activityId||this._config.announcementInfo&&this._config.announcementInfo.activityId,t=this._config.announcementInfo&&this._config.announcementInfo.activityWindowType,n=this._config.announcementInfo&&this._config.announcementInfo.activityWindowIndependent,i=this._config.announcementInfo&&this._config.announcementInfo.activityWindowName;if("undefined"!==typeof window&&"undefined"!==typeof window.location&&window.location.search&&"function"===typeof URLSearchParams){const r=new URLSearchParams(location.search.slice(1));t=t||r.get("t42PeerType"),t=t||r.get("t42ActivityWindowType"),"undefined"===typeof n&&(n=r.get("t42ActivityWindowIndependent")),i=i||r.get("t42ActivityWindowName"),e=e||r.get("t42ActivityId")}return t=t||"unknown",n=n||!1,i=i||this._connection.peerId,{activityWindowId:void 0,activityId:e,activityWindowType:t,activityWindowIndependent:n,activityWindowName:i}}joinActivity(e,t,n){const i=n&&{name:n}||{};return this._gw3Session.send({type:On,target_id:t,activity_id:e,...i}).then((()=>{this.invokeCallbacks(this._activityWindowChangeCallbacks,new ln(new Sn(t,void 0,void 0,e,this.getAgmInstance(t),void 0,this.generateWindowGetter(t),void 0),new hn(gn.ActivityWindowJoinedActivity)),"activity joined - ActivityWindow"),this.invokeCallbacks(this._activityChangeCallbacks,new ln(new _n(e,void 0,new kn("created",void 0,void 0),void 0,void 0),new hn(gn.Updated)),"activity joined - Activity")}))}leaveActivity(e,t){return this._gw3Session.send({type:Fn,target_id:t,activity_id:e}).then((()=>{this.invokeCallbacks(this._activityWindowChangeCallbacks,new ln(new Sn(t,void 0,void 0,null,this.getAgmInstance(t),void 0,this.generateWindowGetter(t),void 0),new hn(gn.ActivityWindowLeftActivity)),"activity left - ActivityWindow"),this.invokeCallbacks(this._activityChangeCallbacks,new ln(new _n(e,void 0,new kn("created",void 0,void 0),void 0,void 0),new hn(gn.Updated)),"activity left - Activity")}))}getActivityTypes(){return Promise.resolve([])}getWindowTypes(){return Promise.resolve([])}getActivities(){return Promise.resolve([])}getActivityWindows(){return Promise.resolve([])}createStackedWindows(e,t,n){}getWindowBounds(e){}setWindowBounds(e,t){}activateWindow(e,t){}setWindowVisibility(e,t){}cloneActivity(e,t){}attachActivities(e,t,n){return this._gw3Session.send({type:Ln,into:t,merge:e})}detachActivities(e,t){return this._gw3Session.send({type:Un,from:e}).then((()=>""))}onActivitiesAttached(e){}onActivitiesDetached(e){}onActivityAttachedDescriptorsRefreshed(e){}getAttachedDescriptors(){return Promise.resolve([])}getRandomRequestId(){return this._connection.peerId+":"+Math.floor(1e9*Math.random())}forwardAddedAndRemovedMessagesToEventHandler(e,t,n,i){const r=e=>t=>new ln(t,new hn(e?gn.Added:gn.Removed));return[e&&this.forwardMessageToEventHandler(e,(e=>n(e,!0)),r(!0),i),t&&this.forwardMessageToEventHandler(t,(e=>n(e,!1)),r(!1),i)].filter((e=>e))}forwardMessageToEventHandler(e,t,n,i){return this.subscribe(e,(e=>{t(e).forEach((t=>i.forEach((i=>i(n(t,e))))))}))}sendCreateAndMapResultingMessagesToPromise(e,t,n,i,r,o,s,a,c){const u=this.getRandomRequestId();let d,l;const h=new Promise(((e,t)=>{d=e,l=t}));let p,f,g,m,v=null;const y=()=>{this.dropSubscription(p),c||this.dropSubscription(f),this.dropSubscription(g),this.dropSubscription(m)};p=t&&this.subscribe(t,(e=>{n(e,u)&&(v=e,this.dropSubscription(p))}));let w=!1;f=this.subscribe(i,(e=>{r(e,u,v)&&(w?c&&c(a(e)):(w=!0,d(a(e))))})),g=o&&this.subscribe(o,(e=>{s(e,u,v)&&l(e)})),m=o&&this.subscribe(xn,(e=>{e.request_id===u&&l(e)})),e.request_id=u;const b=this._gw3Session.send(e).then((()=>h));return b.then(y,y),b}peerFactoryIdAndOwnerIdToWindowType(e,t){const n=this._peerIdAndFactoryIdToPeerType[t+":"+e];return n?new dn(n,void 0):null}subscribe(e,t){const n=this._connection.on(e,(e=>t.bind(this)(e)));return this._gw3Subscriptions.push(n),n}dropSubscription(e){e&&(this._connection.off(e),delete this._gw3Subscriptions[this._gw3Subscriptions.indexOf(e)])}invokeCallbacks(e,t,n){e.forEach((e=>{try{e(t)}catch(i){this._logger.error("Error in ".concat(n||t.context.type," callback: ")+JSON.stringify(i))}}))}handleActivityCreatedMessage(e){e.context_id?this._contextSubscriptions[e.activity_id]||this.subscribeToContext(e):this._logger.error("Activity created with unknown context_id: "+e.activity_id)}async subscribeToContext(e){const t=e.activity_id;this._contextSubscriptions[t]=await this._contexts.subscribe(t,((e,n,i)=>{const r=new ln(new _n(t,void 0,void 0,e,void 0),new fn(e,n,i));this.invokeCallbacks(this._activityChangeCallbacks,r,"context updated")}))}handleActivityDestroyedMessage(e){const t=this._contextSubscriptions[e.activity_id];"function"===typeof t&&t(),delete this._contextSubscriptions[e.activity_id]}handlePeerFactoriesAdded(e){e.factories.forEach((t=>{this._peerIdAndFactoryIdToPeerType[e.owner_id+":"+t.id]=t.peer_type}))}handlePeerFactoriesRemoved(e){e.factory_ids.forEach((t=>{delete this._peerIdAndFactoryIdToPeerType[e.owner_id+":"+t]}))}forwardActivityTypeMessagesToStatusEventHandlers(){this.forwardAddedAndRemovedMessagesToEventHandler(An,Pn,((e,t)=>t?e.types.map((e=>ei.activityTypeGwMessageEntityToActivityType(e,void 0))):e.types.map((e=>new un(e.name,void 0,void 0,void 0)))),this._activityTypeStatusChangeCallbacks)}forwardActivityCreatedAndJoinedActivityToActivityWindowEventHandlers(){for(const e of[Mn,jn,Bn])this.forwardMessageToEventHandler(e,(e=>[e.owner||{...e,type:e.peer_type,name:e.peer_name,peer_id:e.owner_id}].concat(e.participants||[]).map((t=>new Sn(t.peer_id,t.name,t.type,e.activity_id,this.getAgmInstance(t.peer_id),void 0,this.generateWindowGetter(t.peer_id),void 0)))),((e,t)=>new ln(e,new hn(gn.ActivityWindowJoinedActivity))),this._activityWindowChangeCallbacks)}forwardActivityMessagesToStatusEventHandlers(){for(const e of[Mn,jn])this.forwardMessageToEventHandler(e,(e=>[ei.activityGwMessageToActivity(e,new kn("started","",new Date))]),((e,t)=>ei.activityToActivityStatusChangeEvent(e)),this._activityChangeCallbacks);this.forwardMessageToEventHandler(Rn,(e=>[ei.activityGwMessageToActivity(e,new kn("destroyed",e.reason,new Date))]),((e,t)=>ei.activityToActivityStatusChangeEvent(e)),this._activityChangeCallbacks),this.forwardMessageToEventHandler(Nn,(e=>[ei.activityGwMessageToActivity(e,new kn("created","",new Date))]),((e,t)=>ei.activityToActivityStatusChangeEvent(e)),this._activityChangeCallbacks),this.forwardMessageToEventHandler(Bn,(e=>[ei.activityGwMessageToActivity(e,new kn("created","",new Date))]),((e,t)=>ei.activityToActivityStatusChangeEvent(e)),this._activityChangeCallbacks)}forwardPeerFactoryMessagesToStatusEventHandlers(){this.forwardAddedAndRemovedMessagesToEventHandler(Gn,zn,((e,t)=>t?e.factories.map(ei.peerFactoryGwMessageEntityToWindowType):e.factory_ids.map((t=>this.peerFactoryIdAndOwnerIdToWindowType(t,e.owner_id))).filter((e=>null!=e))),this._windowTypeStatusChangeCallbacks)}forwardPeerFactoryMessagesToPeerFactoryRequests(){this.subscribe(Kn,(e=>{const t=this._peerFactoriesRegisteredByUs[e.peer_factory];if(t)try{const n=e.configuration||{};n.gateway_token=n.gateway_token||e.gateway_token,n.peer_factory=n.peer_factory||e.peer_factory;const i=t({activityId:e.activity&&e.activity.id,activityType:e.activity&&e.activity.type,type:e.configuration&&e.configuration.type,gwToken:n.gateway_token,configuration:n});i&&i.then&&i.catch&&i.catch((t=>this._gw3Session.send({type:xn,request_id:e.request_id,reason:t&&(t.message||JSON.stringify(t))})))}catch(n){this._gw3Session.send({type:xn,request_id:e.request_id,reason:n&&(n.message||JSON.stringify(n))})}else this._gw3Session.send({type:xn,request_id:e.request_id,reason:"Unknown peer factory ".concat(e.peer_factory)})}))}forwardActivityWindowMessagesToEventHandlers(){for(const e of[Dn,jn])this.subscribe(e,(t=>{const n=e===Dn?t.joined_id:t.peer_id,i=e===Dn?t.joined_type:t.peer_type,r=e===Dn?t.joined_name:t.peer_name,o=new Sn(n,r,i,t.activity_id,this.getAgmInstance(n),void 0,this.generateWindowGetter(n),void 0);this._contextSubscriptions[t.activity_id]?e===jn&&this._activityJoinedPromiseResolve({}):this.subscribeToContext(t).then((()=>{e===jn&&this._activityJoinedPromiseResolve({})})),this.invokeCallbacks(this._activityWindowChangeCallbacks,new ln(o,new hn(gn.ActivityWindowJoinedActivity)),e)}));this.subscribe(Wn,(e=>{const t=new Sn(e.left_id,void 0,void 0,null,this.getAgmInstance(e.left_id),void 0,this.generateWindowGetter(e.left_id),void 0);this.invokeCallbacks(this._activityWindowChangeCallbacks,new ln(t,new hn(gn.ActivityWindowLeftActivity)),Wn)})),this.forwardAddedAndRemovedMessagesToEventHandler(Qn,void 0,(e=>[new Sn(e.created_id,void 0,void 0,void 0,void 0,void 0,this.generateWindowGetter(e.created_id),void 0)]),this._activityWindowChangeCallbacks)}getAgmInstance(e){return this._config.agm.servers().find((t=>t.peerId===e||t.windowId===e))}generateWindowGetter(e){return()=>{const t=this.getAgmInstance(e);if(!t)return;const n=t.windowId;return this._config.windows.list().filter((e=>e.id===n))[0]}}isOverrideTypeDefinition(e){return"undefined"!==typeof e&&!!e.owner}}class ti{constructor(e,t){this._myAttached=[],this._myDetached=[],this._myAttachedTo=[],this._myDetachedFrom=[],this._myActivityFrameColorChanged=[],this._myActivityJoinedCallbacks=[],this._myActivityRemovedCallbacks=[],this._myContextUpdateCallbacks=[],this._logger=In.Get(this),this._m=e,e.ready().then((e=>{e.subscribeActivityContextChanged(this._subscribeMyContextChanged.bind(this)),e.subscribeWindowEvents(this._subscribeMyWindowEvent.bind(this)),e.subscribeActivitiesAttached(this._subscribeActivitiesAttached.bind(this)),e.subscribeActivitiesDetached(this._subscribeActivitiesDetached.bind(this)),t&&t.onWindowFrameColorChanged(this._subscribeWindowFrameColorChanged.bind(this))}))}get window(){if(tn(this._w)){const e=this._m.announcedWindows;e.length>0&&(this._w=e[0])}return this._w}get activity(){const e=this.window;if(!tn(e))return e.activity}createWindow(e){return this._m.createWindow(this.activity,e)}createStackedWindows(e,t){return this._m.createStackedWindows(this.activity,e,t)}get context(){const e=this.activity;return en(e)?{}:e.context}updateContext(e,t){const n=this.activity;return en(n)?new Promise(((e,t)=>{t("Not in activity")})):n.updateContext(e,t)}setContext(e,t){const n=this.activity;return en(n)?new Promise(((e,t)=>{t("Not in activity")})):n.setContext(e,t)}onActivityJoined(e){this._myActivityJoinedCallbacks.push(e);const t=this.window;tn(t)||tn(t.activity)||e(t.activity)}onActivityLeft(e){this._myActivityRemovedCallbacks.push(e)}onContextChanged(e){this._myContextUpdateCallbacks.push(e);const t=this.window;if(tn(t))return;const n=t.activity;tn(n)||e(n.context,n.context,[],n)}clone(e,t){const n=this.activity;return this._m.clone(n,e,t)}attach(e,t){let n;return n="string"===typeof e?e:e.id,this._m.attachActivities(n,this.activity.id,t)}onActivityAttached(e){this._myAttached.push(e)}onActivityDetached(e){this._myDetached.push(e)}onAttachedToActivity(e){this._myAttachedTo.push(e)}onDetachedFromActivity(e){this._myDetachedFrom.push(e)}get attached(){return this.activity?this.activity.attached:[]}setFrameColor(e,t){return this.activity?this.activity.setFrameColor(e,t):Promise.resolve(null)}getFrameColor(){return this.activity?this.activity.getFrameColor():""}onFrameColorChanged(e){this._myActivityFrameColorChanged.push(e)}_subscribeMyContextChanged(e,t,n,i){const r=this.window;if(tn(r))return;const o=r.activity;tn(o)||e.id===o.id&&this._notifyMyContextChanged(e,t,n,i)}_subscribeMyWindowEvent(e,t,n){tn(this.window)||this.window.id===t.id&&(n===gn.ActivityWindowJoinedActivity?(this._notifyMyWindowEvent(e,this._myActivityJoinedCallbacks),this._notifyMyContextChanged(e,e.context,null,null)):n===gn.ActivityWindowLeftActivity&&this._notifyMyWindowEvent(e,this._myActivityRemovedCallbacks))}_notifyMyWindowEvent(e,t){t.forEach((t=>{try{t(e,event)}catch(n){this._logger.warn("error in user callback "+n)}}))}_notifyMyContextChanged(e,t,n,i){n=n||{},i=i||[],this._myContextUpdateCallbacks.forEach((r=>{try{r(t,n,i,e)}catch(o){this._logger.warn("error in user callback "+o)}}))}_notifyAttached(e){this._myAttached.forEach((t=>{try{t(e)}catch(n){this._logger.warn("error in user callback "+n)}}))}_notifyDetached(e){this._myDetached.forEach((t=>{try{t(e)}catch(n){this._logger.warn("error in user callback "+n)}}))}_notifyAttachedTo(e){this._myAttachedTo.forEach((t=>{try{t(this.activity,e)}catch(n){this._logger.warn("error in user callback "+n)}}))}_notifyDetachedFrom(e,t,n){this._myDetachedFrom.forEach((i=>{try{i(e,t,n)}catch(r){this._logger.warn("error in user callback "+r)}}))}_subscribeActivitiesAttached(e,t){const n=this.window;if(tn(n))return;const i=n.activity;tn(i)||e.id===i.id&&(t.windowIds.indexOf(n.id)>=0?this._notifyAttachedTo(t):this._notifyAttached(t))}_subscribeActivitiesDetached(e,t,n){const i=this.window;if(tn(i))return;const r=i.activity;tn(r)||(t.id===r.id&&this._notifyDetached(n),e.id===r.id&&this._notifyDetachedFrom(e,t,n))}_subscribeWindowFrameColorChanged(e){const t=this.activity;t&&t.owner&&t.owner.underlyingWindow.id===e.id&&this._myActivityFrameColorChanged.forEach((t=>{t(e.frameColor)}))}}class ni{constructor(e,t){if(this._logger=In.Get("ReadyMarker ["+e+"]"),this._logger.debug("Initializing ready marker for '"+e+"' with "+t+" signals to wait"),t<=0)throw new Error("Invalid signal number. Should be > 0");this._signals=t,this._callbacks=[],this._name=e}setCallback(e){this.isSet()?e(void 0):this.isError()?e(this._error):this._callbacks.push(e)}signal(e){if(this._logger.debug("Signaled - "+e+" - signals left "+(this._signals-1)),this._signals--,this._signals<0)throw new Error("Error in ready marker '"+this._name+" - signals are "+this._signals);this.isSet()&&this._callbacks.forEach((e=>{e(void 0)}))}error(e){this._error=e,this._callbacks.forEach((t=>{t(e)}))}isSet(){return!this.isError()&&0===this._signals}isError(){return!en(this._error)}getError(){return this._error}}class ii{constructor(e){this._items={},this._listeners=[],this._processNew=e}addOne(e){this.add([e])}add(e){e.forEach((e=>{this.process(new ln(e,new hn(gn.Added)))}))}process(e){const t=e.context,n=t.type,i=e.entity;if(n===gn.StatusChange&&!t.oldStatus){const e=this._items[i.id];e&&(t.oldStatus=e.status)}n===gn.StatusChange&&t.oldStatus&&t.newStatus&&t.oldStatus.state===t.newStatus.state&&(t.type=gn.Updated),"undefined"===typeof htmlContainer&&(n===gn.ActivityWindowJoinedActivity&&this._items[i.id]&&this._items[i.id].activity&&(t.type=gn.Updated),n===gn.ActivityWindowLeftActivity&&this._items[i.id]&&!this._items[i.id].activity&&(t.type=gn.Updated));const r=this._updateInternalCollections(i,n,t);return this._notifyListeners(r,t),r}get(){const e=[];for(const t in this._items)if(this._items.hasOwnProperty(t)){const n=this._items[t];e.push(n)}return e}getByName(e){for(const t in this._items)if(t===e)return this._items[t]}getOrWait(e){return new Promise((t=>{const n=i=>{i.id===e&&(t(i),this.unsubscribe(n))};this.subscribe(n);const i=this.getByName(e);if(i)return this.unsubscribe(n),void t(i)}))}subscribe(e){return this._listeners.push(e),Object.keys(this._items).forEach((t=>{const n=this._items[t];e(n,new hn(gn.Added.toString()))})),()=>{this.unsubscribe(e)}}unsubscribe(e){const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}_notifyListeners(e,t){this._listeners.forEach((n=>{try{n(e,t)}catch(i){return}}))}_updateInternalCollections(e,t,n){const i=e,r=t===gn.StatusChange&&i.status&&i.status.state===mn.Destroyed||t===gn.StatusChange&&n&&n.newStatus&&n.newStatus.state===mn.Destroyed,o=t===gn.Closed;if(t===gn.Removed&&"undefined"===typeof i.isIndependent||o||r){const t=this._items[e.id];return delete this._items[e.id],this._processNew(e),t&&e._beforeDelete(t),e}{const t=e.id;this._items.hasOwnProperty(t)?this._items[e.id]._update(e):(this._processNew(e),this._items[e.id]=e)}return this._items[e.id]}}class ri{get usingHc(){return"HC"===this._bridge.bridgeType}get announcedWindows(){return this._announcedWindows}set announcedWindows(e){throw new Error("not allowed")}constructor(e,t,n){this._logger=In.Get("activityManager"),this._announcedWindows=[],this._attachedCallbacks=[],this._detachedCallbacks=[],this._frameColorChangesCallbacks=[],this._windowHandlers=[],this._bridge=e,this._activityTypes=new ii((e=>this._grabEntity(e))),this._windowTypes=new ii((e=>this._grabEntity(e))),this._activities=new ii((e=>this._grabEntity(e))),this._windows=new ii((e=>this._grabEntity(e))),this._dataReadyMarker=new ni("Activity Manager Data",4),this._descriptorsMarker=new ni("Attached Activities Descriptors",1),t?(this._readyMarker=new ni("Activity Manager Announce",1),this._dataReadyMarker.setCallback((e=>{e&&this._readyMarker.error(e),this._descriptorsMarker.setCallback((e=>{e&&this._readyMarker.error(e),this._logger.debug("Auto announcing window"),this.announceWindow().then((e=>{this._announcedWindows.push(e),this._readyMarker.signal("Successfully announced window with id '"+e.id+"'")})).catch((e=>{this._logger.debug("Will not announce window - "+e),this._readyMarker.signal()}))})),this.refreshDescriptors()}))):this._readyMarker=this._dataReadyMarker,this._bridge.onActivitiesAttached((e=>{this._handleActivitiesAttached(e)})),this._bridge.onActivitiesDetached((e=>{this._handleActivitiesDetached(e)})),this._bridge.onActivityAttachedDescriptorsRefreshed((e=>{this._handleActivityDescriptorsRefreshed(e)})),n&&n.onWindowFrameColorChanged(this._handleWindowFrameColorChanged.bind(this)),this._bridge.init(),this._subscribeForData(),this._bridge.initReady().then((e=>{this._getInitialData()})).catch((e=>{console.log(e)}))}ready(e){const t=new Promise(((e,t)=>{this._readyMarker.setCallback((n=>{n?t(this._readyMarker.getError()):e(this)}))}));return bn(Promise.all([this._bridge.ready(),t]).then((()=>this)),e)}getActivityTypes(){return this._activityTypes.get()}getActivityType(e){return this._activityTypes.getByName(e)}registerActivityType(e,t,n,i,r,o){return bn(new Promise(((o,s)=>{if(tn(e))return void s("activityTypeName argument can not be undefined");if(!Yt(e))return void s("activityTypeName should be string");if(!tn(this.getActivityType(e)))return void s("Activity type '"+e+"' already exists");let a;if(en(t))return void s("Owner window type can not be undefined");a=Yt(t)?{type:t,name:"",isIndependent:!1,arguments:{}}:t;const c=[];if(!en(n)&&Zt(n))for(const e in n){const t=n[e];if(Yt(t)){const e={type:t,name:"",isIndependent:!1,arguments:{},relativeTo:"",relativeDirection:"",windowStyleAttributes:{}};c.push(e)}else c.push(t)}this._bridge.registerActivityType(e,a,c,i,r).then((e=>{this._grabEntity(e),o(e)})).catch((e=>{s(e)}))})),o)}unregisterActivityType(e,t){return bn(new Promise(((t,n)=>{const i=this.getActivityType(e);en(i)?n("Activity type '"+e+"' does not exists"):this._bridge.unregisterActivityType(e).then((()=>t(i)),n)})),t)}initiate(e,t,n,i){return bn(new Promise(((n,r)=>{en(this.getActivityType(e))?r("Activity type '"+e+"' does not exists"):this._bridge.initiateActivity(e,t,i).then((e=>{this._activities.getOrWait(e).then((e=>{n(e)})).catch((e=>r(e)))})).catch((e=>{r(e)}))})),n)}subscribeActivityTypeEvents(e){this._activityTypes.subscribe(((t,n)=>{e(t,n.type)}))}getWindowTypes(){return this._windowTypes.get()}getWindowType(e){return this._windowTypes.getByName(e)}registerWindowFactory(e,t,n){return bn(new Promise(((n,i)=>{if(tn(e))i("no windowType specified");else{if(Xt(e))e=e.getName();else if(!Yt(e))return void i("windowType should be string or object that has getName method");this._bridge.registerWindowFactory(e,t).then((e=>{n(e)})).catch((e=>{i(e)}))}})),n)}unregisterWindowFactory(e,t){return bn(new Promise(((t,n)=>{tn(e)?n("no windowType specified"):Yt(e)?this._bridge.unregisterWindowFactory(e).then((e=>{t(e)})).catch((e=>{n(e)})):n("windowType should be a string")})),t)}getActivities(e){let t=this._activities.get();if(t=t.filter((e=>e._ownerId)),!e)return t;let n=e;if(Yt(e))n=[e];else if(e instanceof un)n=[e.name];else if(!(e instanceof Array))throw new Error("Invalid input argument 'activityType' = "+e);return t.filter((e=>{const t=e.type;return sn(n,(e=>t.id===e.id))}))}getActivityById(e){return this._activities.getByName(e)}announceWindow(e,t){return new Promise(((n,i)=>{const r=this._bridge.getAnnouncementInfo();if(en(e)&&(e=r.activityWindowId),en(t)&&(t=r.activityWindowType),tn(t))throw new Error("Can not announce - unknown windowType");const o=r&&r.activityId;if(tn(e))this._logger.debug("Registering window with type:'"+t+"', name:'"+r.activityWindowName+"', ind.:'"+r.activityWindowIndependent+"'"),this._bridge.registerWindow(t,r.activityWindowName,r.activityWindowIndependent).then(this._windows.getOrWait.bind(this._windows)).then((e=>o?this._activities.getOrWait(o).then((t=>e)):e)).then((e=>{n(e)})).catch((e=>{this._logger.error(e)}));else{this._logger.debug("Announcing window with id '"+e+"' and type '"+t+"'");const r=this._windows.getByName(e);if(!tn(r))return this._logger.debug("Window with id '"+e+"' already announced - reusing the window"),void n(r);const o=(t,r,s)=>{e===r.id&&s===gn.ActivityWindowJoinedActivity&&(en(r.activity)&&i("UNDEFINED ACTIVITY"),this._logger.trace("Got joined event for id '"+e+"'"),n(r),this.unsubscribeWindowEvents(o))};this.subscribeWindowEvents(o),this._logger.trace("Waiting for joined event for id '"+e+"'"),this._bridge.announceWindow(t,e)}}))}subscribeWindowTypeEvents(e){this._windowTypes.subscribe(((t,n)=>{e(t,n.type)}))}subscribeActivityEvents(e){return this._activities.subscribe(((t,n)=>{if(n.type===gn.StatusChange){const i=n;e(t,i.newStatus,i.oldStatus)}if(n.type===gn.Removed||n.type===gn.StatusChange&&n.newStatus.getState()===mn.Destroyed)for(const e of this._windows.get())e.activity&&e.activity.id===t.id&&this._windows.process(new ln(e,new hn(gn.ActivityWindowLeftActivity)))}))}subscribeWindowEvents(e){const t=(t,n)=>{let i=n.type;i===gn.Added&&(i="opened"),e(t.activity,t,i)};return this._windowHandlers.push([e,t]),this._windows.subscribe(t)}unsubscribeWindowEvents(e){const t=this._windowHandlers.find((t=>t[0]===e));t&&(this._windowHandlers.splice(this._windowHandlers.indexOf(t),1),this._windows.unsubscribe(t[1]))}createWindow(e,t,n){return bn(new Promise(((n,i)=>{let r,o;if(tn(t)&&i("windowType is undefined"),Yt(t))r={type:t,name:"",isIndependent:!1,arguments:{}};else if(t instanceof dn)r={type:t.type||t.id,name:t.name||t.type||t.id,isIndependent:!1};else{const e=["url"],n={};Object.keys(t).forEach((i=>{-1===e.indexOf(i)&&(n[i]=t[i])})),r=n}if(!tn(r.relativeTo))if(o=r.relativeTo,"string"===typeof o){const e=this.getWindows({type:o});!tn(e)&&e.length>0&&(r.relativeTo=e[0].id)}else if(tn(o.type))tn(o.windowId)||(r.relativeTo=o.windowId);else{const e=this.getWindows({type:o.type});!tn(e)&&e.length>0&&(r.relativeTo=e[0].id)}this._bridge.createWindow(e&&e.id,r).then((t=>{this._logger.debug("Window created, waiting for window entity with id "+t);const i=(r,o)=>{r.id!==t||e&&!r.activity||(this._logger.debug("Got entity window with id "+t),n(r),this._windows.unsubscribe(i))};this._windows.subscribe(i)})).catch((e=>{i(e)}))})),n)}createStackedWindows(e,t,n,i){return bn(new Promise(((i,r)=>{tn(e)&&r("activity is undefined"),tn(t)&&r("relativeWindowTypes is undefined"),Array.isArray(t)||r("relativeWindowTypes has to be an array"),tn(n)&&(n=2e4);const o=[];t.forEach((e=>{let t,i;if(t=Yt(e)?{type:e,name:"",isIndependent:!1,arguments:{}}:e,t.stackedWindow=!0,t.timeout=n,!tn(t.relativeTo))if(i=t.relativeTo,tn(i.type)){if(!tn(i.windowId)){const e=this.getWindows({id:i.windowId});!tn(e)&&e.length>0&&(t.relativeTo=e[0].type.name)}}else t.relativeTo=i.type;o.push(t)}));const s=[];o.forEach((t=>s.push(this.createWindow(e,t)))),Promise.all(s).then(i).catch(r)})),i)}addWindowToActivity(e,t,n){const i=this._bridge.joinActivity(e.id,t.id).then((()=>t));return bn(i,n),i}leaveWindowFromActivity(e,t,n){const i=this._bridge.leaveActivity(e.id,t.id).then((()=>t));return bn(i,n),i}setActivityContext(e,t,n){return bn(new Promise(((n,i)=>{tn(e)&&i("activity can not be null"),this._bridge.updateActivityContext(e,t,!0).then((t=>{n(e)})).catch((e=>{i(e)}))})),n)}updateActivityContext(e,t,n){return bn(new Promise(((n,i)=>{tn(e)&&i("activity can not be null");const r=[];for(const e in t)t.hasOwnProperty(e)&&null===t[e]&&r.push(e);for(const e of r)delete t[e];this._bridge.updateActivityContext(e,t,!1,r).then((t=>{n(e)})).catch((e=>{i(e)}))})),n)}subscribeActivityContextChanged(e){this._activities.subscribe(((t,n)=>{if(n.type===gn.ActivityContextChange){const i=n;e(t,i.context,i.updated,i.removed)}}))}stopActivity(e,t){return bn(this._bridge.stopActivity(e),t)}getWindows(e){return en(e)?this._windows.get():en(e.id)?this._windows.get().filter((t=>{if(!en(e.type)&&t.type.id!==e.type)return!1;if(!en(e.name)&&t.name!==e.name)return!1;if(!en(e.activityId)){if(tn(t.activity))return!1;if(t.activity.id!==e.activityId)return!1}return!0})):[this._windows.getByName(e.id)]}getWindowBounds(e){return this._bridge.getWindowBounds(e)}setWindowBounds(e,t,n){return bn(new Promise(((n,i)=>{this._bridge.setWindowBounds(e,t).then((()=>n())).catch((e=>i(e)))})),n)}closeWindow(e){return this._bridge.closeWindow(e)}activateWindow(e,t){return this._bridge.activateWindow(e,t)}setWindowVisibility(e,t){return this._bridge.setWindowVisibility(e,t)}clone(e,t,n){return bn(new Promise(((n,i)=>{e||i("activity can not be null"),this._bridge.cloneActivity(e.id,t).then((e=>{this._activities.getOrWait(e).then((e=>{n(e)})).catch((e=>i(e)))})).catch((e=>i(e)))})),n)}attachActivities(e,t,n,i){return n=n||{},bn(new Promise(((i,r)=>{if(this._activities.getByName(e))return this._activities.getByName(t)?this._bridge.attachActivities(e,t,n).then((e=>{const t=e.to,n=e.descriptor,r=e.descriptors;this._activities.getOrWait(t).then((e=>{e._updateDescriptors(r);const t=e.attached.filter((e=>e.ownerId===n.ownerId))[0];i(t)}))})).catch((e=>{r(e)})):void r("can not find activity with id "+t);r("can not find activity with id "+e)})),i)}detachActivities(e,t,n){return bn(new Promise(((n,i)=>this._bridge.detachActivities(e,t).then((()=>{const e=void 0,t=void 0,r=void 0;this._activities.getOrWait(e).then((e=>{e._updateDescriptors(r),this._activities.getOrWait(t).then((e=>{n(e)}))})).catch((e=>i(e)))})).catch((e=>{i(e)})))),n)}subscribeActivitiesAttached(e){this._attachedCallbacks.push(e)}subscribeActivitiesDetached(e){this._detachedCallbacks.push(e)}subscribeActivityFrameColorChanged(e){this._frameColorChangesCallbacks.push(e)}_grabEntity(e){e._manager=this}_getInitialData(){this._logger.debug("Request initial data..."),this._bridge.getActivityTypes().then((e=>{this._activityTypes.add(e),this._dataReadyMarker.signal("Got act types")})).catch((e=>{this._logger.error(e),this._dataReadyMarker.error("Can not initialize ActivityManager - error getting activity types -"+e)})),this._bridge.getWindowTypes().then((e=>{this._windowTypes.add(e),this._dataReadyMarker.signal("Got window types")})).catch((e=>{this._logger.error(e),this._dataReadyMarker.error("Can not initialize ActivityManager - error getting window types "+e)})),this._bridge.getActivities().then((e=>{this._activities.add(e),this._dataReadyMarker.signal("Got activities")})).catch((e=>{this._logger.error(e),this._dataReadyMarker.error("Can not initialize ActivityManager - error getting activity instances -"+e)})),this._bridge.getActivityWindows().then((e=>{this._windows.add(e),this._dataReadyMarker.signal("Got windows")})).catch((e=>{this._logger.error(e),this._dataReadyMarker.error("Can not initialize ActivityManager - error getting activity windows -"+e)}))}_subscribeForData(){this._logger.debug("Subscribe for data..."),this._bridge.onActivityTypeStatusChange((e=>{this._activityTypes.process(e)})),this._bridge.onWindowTypeStatusChange((e=>{this._windowTypes.process(e)})),this._bridge.onActivityWindowChange((e=>{this._windows.process(e)})),this._bridge.onActivityStatusChange((e=>{this._activities.process(e)}))}_handleActivitiesAttached(e){const t=e.to,n=e.descriptor,i=e.descriptors;this._activities.getOrWait(t).then((e=>{e._updateDescriptors(i);const t=e.attached.filter((e=>e.ownerId===n.ownerId))[0];this._attachedCallbacks.forEach((n=>{try{n(e,t)}catch(i){return}}))}))}_handleActivitiesDetached(e){const t=e.oldActivityId,n=e.newActivityId,i=e.descriptors,r=e.descriptor;this._activities.getOrWait(t).then((e=>{e._updateDescriptors(i),this._activities.getOrWait(n).then((t=>{this._detachedCallbacks.forEach((n=>{try{n(t,e,r)}catch(i){return}}))}))}))}_handleActivityDescriptorsRefreshed(e){const t=e.id,n=e.descriptors,i=this._activities.getByName(t);i&&i._updateDescriptors(n)}refreshDescriptors(){this._bridge.getAttachedDescriptors().then((e=>{e&&Object.keys(e).forEach((t=>{const n=t,i=e[t],r=this._activities.getByName(n);r&&r._updateDescriptors(i)})),this._descriptorsMarker.signal("Successfully got descriptors")})).catch((e=>{this._descriptorsMarker.error("failed to get descriptors - "+e)}))}_handleWindowFrameColorChanged(e){if(!e.activityId)return;const t=this._activities.getByName(e.activityId);t&&t.owner&&t.owner.underlyingWindow.id===e.id&&this._frameColorChangesCallbacks.forEach((n=>{try{n(t,e.frameColor)}catch(i){return}}))}}class oi{constructor(e,t){this._m=e,this._my=t,this.activityTypes={get:this._getActivityTypesWrapper.bind(this),register:this._m.registerActivityType.bind(this._m),unregister:this._m.unregisterActivityType.bind(this._m),subscribe:this._m.subscribeActivityTypeEvents.bind(this._m),unsubscribe:void 0,initiate:this._m.initiate.bind(this._m)},this.windowTypes={get:this._getWindowTypesWrapper.bind(this),registerFactory:this._m.registerWindowFactory.bind(this._m),unregisterFactory:this._m.unregisterWindowFactory.bind(this._m),subscribe:this._m.subscribeWindowTypeEvents.bind(this._m),unsubscribe:void 0},this.windows={get:this._m.getWindows.bind(this._m),subscribe:this._m.subscribeWindowEvents.bind(this._m),announce:this._m.announceWindow.bind(this._m),unsubscribe:void 0,create:this._m.createWindow.bind(this._m)},this.instances={get:this._m.getActivities.bind(this._m),subscribe:this._m.subscribeActivityEvents.bind(this._m),unsubscribe:void 0}}onAttached(e){this._m.subscribeActivitiesAttached(e)}onDetached(e){this._m.subscribeActivitiesDetached(e)}onActivityFrameColorChanged(e){this._m.subscribeActivityFrameColorChanged(e)}_getActivityTypesWrapper(e){return en(e)?this._m.getActivityTypes():this._m.getActivityType(e)}_getWindowTypesWrapper(e){return en(e)?this._m.getWindowTypes():this._m.getWindowType(e)}}class si{constructor(e,t){this._mgr=e,this._my=t,this.all=new oi(e,t)}ready(e){return bn(new Promise(((e,t)=>{this._mgr.ready().then((()=>{e(this)})).catch((e=>{t(e)}))})),e)}get my(){return this._my}get aware(){return void 0!==this._my.window}get inActivity(){return this.aware&&void 0!==this._my.activity}get agm(){if(this.aware)return this.inActivity?this._my.activity.agm:new vn(null)}getAvailableFrameColors(){return[]}}class ai{static checkIsUsingGW3Implementation(e){return 3===e.protocolVersion}get api(){return this._api}set api(e){this._api=e}constructor(e){if(!e)throw new Error("config can not be null");let t;if(en(e.logLevel)||(In.Level=e.logLevel),tn(e.logger)||(In.GlueLogger=e.logger),this._isUsingHCImplementation=2===e.gdMajorVersion,this._isUsingGW3Implementation=ai.checkIsUsingGW3Implementation(e.connection),this._isUsingHCImplementation)throw new Error("GD2 not supported");if(!this._isUsingGW3Implementation)throw new Error("Unable to instantiate activity bridge implementation");if(t=new ei(e),!t)throw new Error("A bridge to native activity is needed to create activity lib.");vn.AGM=e.agm;const n=new ri(t,!e.disableAutoAnnounce,e.windows),i=new ti(n,e.windows);this._api=new si(n,i),this._readyPromise=n.ready().then((e=>this))}get isUsingHCImplementation(){return this._isUsingHCImplementation}get isUsingGW3Implementation(){return this._isUsingGW3Implementation}ready(e){return bn(this._readyPromise,e)}}const ci="T42.ACS.Shutdown",ui="T42.ACS.OnGDShutdown",di="T42.ACS.Restart",li="T42.ACS.GetConfigurationRegion",hi="T42.ACS.SetConfigurationRegion",pi="T42.ACS.GetUser",fi="T42.ACS.GetBranches",gi="T42.ACS.GetCurrentBranch",mi="T42.ACS.SetCurrentBranch",vi="T42.ACS.GetFunctionalEntitlement",yi="T42.ACS.CanI",wi="T42.ACS.StartApplication",bi="T42.ACS.StopApplication",_i="T42.ACS.ActivateApplication",Ci="T42.ACS.OnEvent",Ii="T42.ACS.GetApplications";function Si(e){if(e&&e.errorHandling&&"function"!==typeof e.errorHandling&&"log"!==e.errorHandling&&"silent"!==e.errorHandling&&"throw"!==e.errorHandling)throw new Error('Invalid options passed to createRegistry. Prop errorHandling should be ["log" | "silent" | "throw" | (err) => void], but '+typeof e.errorHandling+" was passed");var t=e&&"function"===typeof e.errorHandling&&e.errorHandling,n={};function i(e,t,i){var r=n[e];return r||(r=[],n[e]=r),r.push(t),i&&setTimeout((function(){i.forEach((function(i){var r;if(null===(r=n[e])||void 0===r?void 0:r.includes(t))try{Array.isArray(i)?t.apply(void 0,i):t.apply(void 0,[i])}catch(s){o(s,e)}}))}),0),function(){var i=n[e];i&&(0===(i=i.reduce((function(e,n,i){return n===t&&e.length===i||e.push(n),e}),[])).length?delete n[e]:n[e]=i)}}function r(e){for(var t=[],i=1;ie[t])):[]}function Ti(e){let t;try{t=JSON.parse(JSON.stringify(e||{}))}catch(n){t={}}return t}function Ai(e,t){if(t.throwErrors&&"function"!==typeof e)throw new Error("Please provide the callback as a function!")}class Ei{constructor(e,t,n,i){this._appManager=e,this._name=t,this._agm=n,this._configuration=i,this._registry=ki(),e.onInstanceStarted((e=>{e.application&&e.application.name!==this._name||this._registry.execute("instanceStarted",e)})),e.onInstanceStopped((e=>{e.application&&e.application.name!==this._name||this._registry.execute("instanceStopped",e)})),e.onAppRemoved((e=>{e.name===this._name&&this._registry.execute("appRemoved",e)})),e.onAppChanged((e=>{e.name===this._name&&this._registry.execute("appChanged",e)})),e.onAppAvailable((e=>{e.name===this._name&&(this._props.IsReady=!0,this._registry.execute("appAvailable",e))})),e.onAppUnavailable((e=>{e.name===this._name&&(this._props.IsReady=!1,this._registry.execute("appUnavailable",e))}))}get name(){return this._name}get title(){return this._props.Title}get version(){return this._props.Version}get autoStart(){return this._props.AutoStart}get isShell(){return this._props.IsShell}get caption(){return this._props.Caption}get hidden(){return this._props.IsHidden}get container(){return this._props.ApplicationName}get activityType(){return this._props.ActivityType}get activityWindowType(){return this._props.ActivityWindowType}get windowSettings(){return this._props.Arguments?Ti(this._props.Arguments):{}}get allowMultiple(){return this._props.AllowMultiple}get available(){return this._props.IsReady||!0}get icon(){return this._props.Icon}get iconURL(){return this._props.IconUrl}get sortOrder(){return this._props.SortOrder}get userProperties(){return this._props.UserProperties?Ti(this._props.UserProperties):{}}get keywords(){return this._props.Keywords?this._props.Keywords:[]}get isActivity(){return void 0!==this._props.ActivityType&&""!==this._props.ActivityType}get configuration(){return{autoStart:this._props.AutoStart,caption:this._props.Caption,hidden:this._props.IsHidden,container:this._props.ApplicationName,activityType:this._props.ActivityType,allowMultiple:this._props.AllowMultiple}}get instances(){return this._appManager.instances().filter((e=>e.application.name===this._name))}get type(){return this._props.Type}get mode(){if(!this._props)return"unknown";if(this._props.Mode&&"string"===typeof this._props.Mode)return this._props.Mode.toLowerCase();if(this.isActivity)return"unknown";if(this._props.Arguments&&this._props.Arguments.mode&&"string"===typeof this._props.Arguments.mode)return this._props.Arguments.mode.toLowerCase();let e=this._props.WindowStyleAttributes;if(e){e=e.split(" ").join("");const t='mode:"',n=e.indexOf(t);if(-1!==n){const i=n+t.length,r=e.indexOf('"',i),o=e.substr(i,r-i);if(o&&"string"===typeof o)return o.toLowerCase()}}return"flat"}async getConfiguration(){return(await this._agm.invoke(Ii,{v2:{apps:[this._name]}})).returned.applications[0]}updateFromProps(e){this._props||(this._props={Name:e.Name}),Object.keys(e).forEach((t=>{this._props[t]=e[t]}))}start(e,t){return new Promise((async(n,i)=>{var r,o,s,a,c;const u=this._name;let d=6e4;if(tn(e))e={};else if((null===(r=this._configuration())||void 0===r?void 0:r.throwErrors)&&"object"!==typeof e||Array.isArray(e))return i(new Error('Invalid "context" parameter - must be an object.'));if(tn(t))t={};else if((null===(o=this._configuration())||void 0===o?void 0:o.throwErrors)&&"object"!==typeof t)return i(new Error('Invalid "options" parameter - must be an object.'));let l=null===(a=null!==(s=t.awaitInterop)&&void 0!==s?s:t.waitForAGMReady)||void 0===a||a;const h=e=>{let t;const r=setTimeout((()=>{t&&t(),i("timed out while waiting for instance id ".concat(e," for app ").concat(this.name))}),d),o=i=>{i.id===e&&(t&&(t(),t=void 0),clearTimeout(r),n(i))};t=l?this._appManager.onInstanceAgmServerReady(o):this._appManager.onInstanceStarted(o)};try{const i=(await this._agm.invoke(wi,{Name:u,Context:e,Options:t},"best",{methodResponseTimeoutMs:d})).returned;if("undefined"!==typeof i.timeout&&(d=1e3*i.timeout),"undefined"!==typeof i.waitForInterop&&"undefined"===typeof t.waitForAGMReady&&"undefined"===typeof t.awaitInterop&&(l=i.waitForInterop),i&&i.Id)if("startOnly"===this._appManager.mode){const e=this._appManager.handleInstanceStarted({ActivityId:void 0,IsActivityOwner:void 0,Context:void 0,Title:void 0,AgmServers:void 0,Id:i.Id,Name:i.Name});n(e)}else h(i.Id);else n(void 0)}catch(p){i(null!==(c=p.message)&&void 0!==c?c:p)}}))}onInstanceStarted(e){return Ai(e,this._configuration()),this._registry.add("instanceStarted",e)}onInstanceStopped(e){return Ai(e,this._configuration()),this._registry.add("instanceStopped",e)}onAvailable(e){return Ai(e,this._configuration()),this._props.IsReady&&setTimeout((()=>{this._registry.execute("appAvailable",this)}),0),this._registry.add("appAvailable",e)}onUnavailable(e){return Ai(e,this._configuration()),!1===this._props.IsReady&&setTimeout((()=>{this._registry.execute("appUnavailable",this)}),0),this._registry.add("appUnavailable",e)}onChanged(e){Ai(e,this._configuration()),this._registry.add("appChanged",e)}onRemoved(e){Ai(e,this._configuration()),this._registry.add("appRemoved",e)}}class Pi{constructor(e,t,n,i,r,o,s,a){this._id=e,this._appName=t,this._appManager=n,this._agm=i,this._activities=r,this._windows=o,this._configuration=a,this._registry=ki(),s||(this._unsubscribeInstanceStopped=this._appManager.onInstanceStopped((e=>{e.id===this._id&&this._registry.execute("stopped",e)})),this._unsubscribeInstanceAgmServerReady=this._appManager.onInstanceAgmServerReady((e=>{e.id===this._id&&this._registry.execute("agmReady",e)})))}get id(){return this._id}get application(){return this._appManager.application(this._appName)}get activity(){if(!this._activities)throw new Error("This method requires glue.activities library to be enabled.");return this._activities.all.instances.get().filter((e=>e.id===this._activityId))[0]}get isActivityOwner(){return this._isActivityOwner}get activityInstances(){return this._appManager.instances().filter((e=>"activity"!==e.application.type&&e.activityId&&e.activityId===this._activityId))}get activityOwnerInstance(){if(this._activityId)return this.activityInstances.filter((e=>null===e||void 0===e?void 0:e.isActivityOwner))[0]}get window(){if(!this._windows)throw new Error("This method requires glue.windows library to be enabled.");let e=this._windows.list().filter((e=>e.id===this._id))[0];return!e&&this._activities&&this.activity&&this.activityOwnerInstance&&(e=this.activityOwnerInstance.window),e}get context(){var e,t,n;return null!==(n=null!==(e=this._startUpContext)&&void 0!==e?e:null===(t=this.window)||void 0===t?void 0:t.context)&&void 0!==n?n:{}}get title(){return this._title}get isActivityInstance(){return this._isActivityInstance}get activityId(){return this._activityId}get inActivity(){return this._inActivity}get isSingleWindowApp(){return!this._inActivity}get agm(){return this._agmInstance}get interopInstance(){return this._agmInstance}onInteropReady(e){return Ai(e,this._configuration()),this._agmInstance&&setTimeout((()=>{this._registry.execute("agmReady",this)}),0),this._registry.add("agmReady",e)}onAgmReady(e){return this.onInteropReady(e)}onStopped(e){return Ai(e,this._configuration()),this._registry.add("stopped",e)}getWindow(){return new Promise(((e,t)=>{const n=this.window;if(n)return void e(n);const i=(n,i)=>{n&&t(n),i&&e(i),setTimeout((()=>{clearTimeout(r),o()}),0)},r=setTimeout((()=>{i(new Error("can not find a window with id ".concat(this._id)))}),3e4),o=this._windows.onWindowAdded((e=>{e.id===this._id&&i(void 0,e)}))}))}updateFromProps(e){this._startUpContext=e.Context,this._title=e.Title,this._isActivityInstance=!1,e.ActivityId&&""!==e.ActivityId&&(this._activityId=e.ActivityId,this._isActivityInstance=!0),this._isActivityOwner=e.IsActivityOwner,!this._activityId&&this._startUpContext&&this._startUpContext.activityId&&(this._activityId=this._startUpContext.activityId),this._inActivity=Boolean(this._activityId),this.updateAgmInstanceFromProps(e)}updateAgmInstanceFromProps(e){if(!e.AgmServers)return;const t=e.AgmServers;t&&t.length>0&&!tn(t[0])&&(this._agmInstance=t[0])}stop(){return new Promise(((e,t)=>{let n=this._id;this.isActivityOwner&&(n=this.activityId);const i=this._appManager.onInstanceStopped((t=>{t.id===n&&(i(),e())}));this._agm.invoke(bi,{Name:this._appName,Id:this._id}).then((()=>{"startOnly"===this._appManager.mode&&(this._appManager.handleInstanceStopped({Name:this._appName,Id:this.id}),e())})).catch((e=>t(e)))}))}activate(){return this._agm.invoke(_i,{Name:this._appName,Id:this._id})}done(){this._registry.clear(),this._unsubscribeInstanceAgmServerReady(),this._unsubscribeInstanceStopped()}getContext(){return Promise.resolve(this.context)}}class Mi{constructor(e,t,n,i,r,o,s){this.mode=e,this._agm=t,this._activities=n,this._windows=i,this._logger=r,this._gdMajorVersion=o,this._configuration=s,this._apps={},this._instances=[],this._registry=ki(),this.getConfigurations=async e=>{const t={v2:{apps:void 0}};return Array.isArray(e)&&(t.v2={apps:e}),(await this._agm.invoke(Ii,t)).returned.applications},this.application=e=>{var t;if((null===(t=this._configuration())||void 0===t?void 0:t.throwErrors)&&"string"!==typeof e)throw new Error('"name" must be string');return this._apps[e]},this.applications=()=>Object.keys(this._apps).map((e=>this._apps[e])),this.instances=()=>this._instances.map((e=>e)),this.getMyInstance=()=>{const e="undefined"!==typeof window&&window.glue42gd;if(!e){const e=this._agm.instance.instance;return this._instances.find((t=>t.id===e))}if(this._gdMajorVersion>=3){const t=e.appInstanceId;return this._instances.find((e=>e.id===t))}},this.getMyApplication=()=>{if(this._agm.instance)return this.application(this._agm.instance.applicationName)},this.handleSnapshotAppsAdded=e=>{const t=this.applications();t.length>0&&t.forEach((t=>{const n=t.name;e.find((e=>e.Name===t.name))||this.handleAppRemoved({Name:n})})),e.forEach((e=>{t.find((t=>t.name===e.Name))||this.handleAppAdded(e)}))},this.handleSnapshotInstanceStarted=e=>{const t=this.instances();t.length>0&&t.forEach((t=>{const n=t.id;e.find((e=>e.Id===n))||this.handleInstanceStopped({Name:t.application.name,Id:n})})),e.forEach((e=>{t.find((t=>t.id===e.Id))||this.handleInstanceStarted(e)}))},this.handleAppAdded=e=>{const t=this._getAppId(e);this._logger.trace("adding app ".concat(t)),this._apps[t]=new Ei(this,t,this._agm,this._configuration);const n=this._updateAppFromProps(e);this._registry.execute("appAdded",n),this._registry.execute("appAvailable",n)},this.handleAppUpdated=e=>{const t=this._updateAppFromProps(e);this._registry.execute("appChanged",t)},this.handleAppRemoved=e=>{const t=this._getAppId(e);this._logger.trace("removing app ".concat(t));const n=this.application(t);this._instances=this._instances.filter((e=>e.application.name!==n.name)),delete this._apps[t],this._registry.execute("appRemoved",n)},this.handleAppReady=e=>{const t=this._getAppId(e),n=this._getAppOrThrow(t);n.updateFromProps(e),n.available?this._registry.execute("appAvailable",n):this._registry.execute("appUnavailable",n)},this.handleInstanceStarted=e=>{this._logger.trace("started app ".concat(e.Name," ").concat(e.Id));const t=this._getInstanceId(e),n=this._getInstanceAppName(e),i=new Pi(t,n,this,this._agm,this._activities,this._windows,!1,this._configuration);return this._updateInstanceFromProps(i,e),this._instances.push(i),this._registry.execute("instanceStarted",i),i},this.handleInstanceStopped=e=>{this._logger.trace("failed to start app ".concat(e.Name," ").concat(e.Id));const t=this._getInstanceId(e),n=this._getInstanceAppName(e),i=this._getInstanceOrThrow(t,n);this._instances=this._instances.filter((e=>!this._matchInstance(e,t,n))),this._registry.execute("instanceStopped",i),i.done()},this.handleInstanceAgmServerReady=e=>{const t=this._getInstanceId(e),n=this._getInstanceAppName(e),i=this._getInstanceOrThrow(t,n);i.updateAgmInstanceFromProps(e),this._registry.execute("instanceAgmServerReady",i)},this.handleInstanceStartFailed=e=>{const t=this._getInstanceId(e),n=this._getInstanceAppName(e),i=new Pi(t,n,void 0,void 0,void 0,void 0,!0,this._configuration);this._updateInstanceFromProps(i,e),this._registry.execute("instanceStartFailed",i)},this.handleInstanceUpdated=e=>{const t=this._getInstanceId(e),n=this._getInstanceAppName(e),i=this._getInstanceOrThrow(t,n);this._updateInstanceFromProps(i,e)},this.onInstanceStarted=e=>(Ai(e,this._configuration()),this._registry.add("instanceStarted",e,this._instances)),this.onInstanceStartFailed=e=>(Ai(e,this._configuration()),this._registry.add("instanceStartFailed",e)),this.onInstanceStopped=e=>(Ai(e,this._configuration()),this._registry.add("instanceStopped",e)),this.onInstanceUpdated=e=>(Ai(e,this._configuration()),this._registry.add("instanceChanged",e)),this.onInstanceAgmServerReady=e=>(Ai(e,this._configuration()),this._registry.add("instanceAgmServerReady",e)),this.onAppAdded=e=>(Ai(e,this._configuration()),this._registry.add("appAdded",e,Object.values(this._apps))),this.onAppRemoved=e=>(Ai(e,this._configuration()),this._registry.add("appRemoved",e)),this.onAppAvailable=e=>(Ai(e,this._configuration()),this._registry.add("appAvailable",e)),this.onAppUnavailable=e=>(Ai(e,this._configuration()),this._registry.add("appUnavailable",e)),this.onAppChanged=e=>(Ai(e,this._configuration()),this._registry.add("appChanged",e))}_getAppOrThrow(e){const t=this.application(e);if(!t)throw Error("app with id ".concat(e," not found"));return t}_getAppId(e){return e.Name}_matchInstance(e,t,n){return e.id===t&&e.application.name===n}_getInstanceByIdAndName(e,t){return this._instances.filter((n=>this._matchInstance(n,e,t)))[0]}_getInstanceOrThrow(e,t){const n=this._getInstanceByIdAndName(e,t);if(!n)throw Error("instance with id ".concat(e," not found"));return n}_getInstanceId(e){return e.Id}_getInstanceAppName(e){return e.Name}_updateAppFromProps(e){const t=this._getAppId(e);this._logger.trace("updating app with + ".concat(t,", ").concat(JSON.stringify(e)));const n=this._getAppOrThrow(t);return n.updateFromProps(e),n}_updateInstanceFromProps(e,t){this._logger.trace("updating instance with "+this._getInstanceId(t)+" for app "+this._getInstanceAppName(t)),e.updateFromProps(t)}}function Ri(e,t,n){const i=e=>!!(e&&e.constructor&&e.call&&e.apply);return i(t)||i(n)?(i(t)?i(n)||(n=()=>{}):t=()=>{},e.then(t,n)):e}class Ni{constructor(e){this._agm=e,this._registry=ki(),this._isMethodRegistered=!1,this.handleBranchModified=e=>{this._registry.execute("branchChanged",e)},this.handleBranchesModified=e=>{this._registry.execute("branchesChanged",e)},this.getRegion=(e,t)=>Ri(this._agmInvoke(li,(e=>e.returned.Region)),e,t),this.getBranches=(e,t)=>Ri(this._agmInvoke(fi,(e=>{const t=e.returned.Branches;return Object.keys(t).map((e=>t[e]))})),e,t),this.getCurrentBranch=(e,t)=>Ri(this._agmInvoke(gi,(e=>e.returned.Branch),void 0),e,t),this.setRegion=(e,t,n)=>Ri(this._agmInvoke(hi,(e=>e.returned.ResultMessage),{Region:e}),t,n),this.setCurrentBranch=(e,t,n)=>Ri(this._agmInvoke(mi,(e=>e.returned.ResultMessage),{Branch:e}),t,n),this.currentUser=(e,t)=>Ri(this._agmInvoke(pi),e,t),this.getFunctionalEntitlement=(e,t,n)=>Ri(this._agmInvoke(vi,(e=>e.returned.Entitlement),{Function:e}),t,n),this.getFunctionalEntitlementBranch=(e,t,n,i)=>Ri(this._agmInvoke(vi,(e=>e.returned.Entitlement),{Function:e,Branch:t}),n,i),this.canI=(e,t,n)=>Ri(this._agmInvoke(yi,(e=>e.returned.Result),{Function:e}),t,n),this.canIBranch=(e,t,n,i)=>Ri(this._agmInvoke(yi,(e=>e.returned.Result),{Function:e,Branch:t}),n,i),this.onBranchesChanged=e=>this._registry.add("branchesChanged",e),this.onBranchChanged=e=>this._registry.add("branchChanged",e),this.exit=e=>this._agmInvoke(ci,null,e),this.onShuttingDown=e=>(this.registerMethod(),this._registry.add("onShuttingDown",e)),this.restart=e=>this._agmInvoke(di,null,e),this._agmInvoke=(e,t,n)=>(n=n||{},new Promise(((i,r)=>{const o=e=>r(e);this._agm.invoke(e,n).then((e=>{t||(t=e=>e.returned),i(t(e))})).catch(o)})))}registerMethod(){this._isMethodRegistered||(this._agm.register(ui,(async e=>{try{const t=await Promise.all(this._registry.execute("onShuttingDown",e));return{prevent:t.some((e=>e.prevent))}}catch(t){}})),this._isMethodRegistered=!0)}}function Oi(e,t){return new Promise(((n,i)=>{e.invoke(Ii,{skipIcon:!0}).then((e=>{var i;const r=e.returned,o=null!==(i=e.returned.configuration)&&void 0!==i?i:{};r||n(o);const s=r.applications;s||n(o),xi(s).map((e=>t.handleAppAdded(e))),n(o)})).catch((e=>i("Error getting application snapshot: ".concat(e.message))))}))}const ji="OnBranchChanged",Di="OnBranchesModified",Fi="OnApplicationAdded",Wi="OnApplicationRemoved",Li="OnApplicationChanged",Ui="OnApplicationReady",Bi="OnApplicationStarted",Hi="OnApplicationAgmServerReady",Gi="OnApplicationUpdated",qi="OnApplicationStopped",zi="OnApplicationStartFailed";function Vi(e,t,n,i){let r,o=!1;const s=()=>{let s,a;const c=new Promise(((e,t)=>{s=e,a=t}));return e.subscribe(Ci,{arguments:{skipIcon:i},waitTimeoutMs:1e4}).then((i=>{r=i,r.onData((i=>{var r;const a=i.data,c=null!==(r=a.configuration)&&void 0!==r?r:{},u=xi(a[Fi]);i.data.isSnapshot?t.handleSnapshotAppsAdded(u):u.forEach((e=>t.handleAppAdded(e))),xi(a[Li]).forEach((e=>t.handleAppUpdated(e))),xi(a[Wi]).forEach((e=>t.handleAppRemoved(e))),xi(a[Ui]).forEach((e=>t.handleAppReady(e)));const d=xi(a[Bi]);if(i.data.isSnapshot?t.handleSnapshotInstanceStarted(d):d.forEach((e=>t.handleInstanceStarted(e))),xi(a[zi]).forEach((e=>t.handleInstanceStartFailed(e))),xi(a[qi]).forEach((e=>t.handleInstanceStopped(e))),xi(a[Gi]).forEach((e=>t.handleInstanceUpdated(e))),xi(a[Hi]).forEach((e=>t.handleInstanceAgmServerReady(e))),xi(a[ji]).forEach((e=>n.handleBranchModified(e))),xi(a[Di]).forEach((e=>n.handleBranchesModified(e))),!o){o=!0;const n=u.some((t=>t.Name===e.instance.application)),i=d.some((t=>t.Id===e.instance.instance));if(n)if(i)s(c);else{const n=t.onInstanceStarted((t=>{t.id===e.instance.instance&&(n(),s(c))}))}else s(c)}})),r.onFailed((e=>a(e)))})).catch((e=>{var t;return a("Error subscribing for ".concat(Ci," stream. Err: ").concat(null!==(t=e.message)&&void 0!==t?t:JSON.stringify(e)))})),c};return{start:s,stop:()=>{r&&r.close()}}}const Ji="T42.ACS.InMemoryStoreCommand";class Ki{constructor(e){this.interop=e}import(e,t){if(!e||!Array.isArray(e))return Promise.reject("invalid apps argument - should be an array of application definitions");if(t&&"replace"!==t&&"merge"!==t)return Promise.reject("invalid mode argument - should be 'replace' or 'merge'");const n={command:"import",args:{apps:e,mode:t=null!==t&&void 0!==t?t:"replace"}};return this.interop.invoke(Ji,n).then((e=>e.returned))}export(){return this.interop.invoke(Ji,{command:"export"}).then((e=>e.returned.apps))}remove(e){if(!e||"string"!==typeof e)return Promise.reject("invalid app name, should be a string value");const t={command:"remove",args:{apps:[e]}};return this.interop.invoke(Ji,t).then((e=>e.returned))}clear(){const e={command:"clear"};return this.interop.invoke(Ji,e).then((e=>e.returned))}createAppDef(e,t){return t||(t="https://google.com"),{name:e,type:"window",title:e,details:{url:t}}}}var $i=e=>{if(!e)throw Error("config not set");if(!e.agm)throw Error("config.agm is missing");const t="startOnly",n="skipIcons",i="full",r=e.mode||t;if(r!==t&&r!==n&&r!==i)throw new Error("Invalid mode for appManager lib - ".concat(r," is not supported"));const o=e.activities,s=e.agm,a=e.logger,c=e.windows;let u={};const d=new Mi(r,s,o,c,a.subLogger("applications"),e.gdMajorVersion,(()=>u)),l=new Ni(s);let h;if(r===t)h=Oi(s,d);else{const e=Vi(s,d,l,r===n);h=e.start()}return{ready:()=>h.then((e=>{u=e})),applications:d.applications,application:d.application,getConfigurations:d.getConfigurations,onAppAdded:d.onAppAdded,onAppRemoved:d.onAppRemoved,onAppChanged:d.onAppChanged,onAppAvailable:d.onAppAvailable,onAppUnavailable:d.onAppUnavailable,instances:d.instances,get myInstance(){return d.getMyInstance()},get myApplication(){return d.getMyApplication()},onInstanceStarted:d.onInstanceStarted,onInstanceStopped:d.onInstanceStopped,onInstanceUpdated:d.onInstanceUpdated,onInstanceStartFailed:d.onInstanceStartFailed,getRegion:l.getRegion,getBranches:l.getBranches,getCurrentBranch:l.getCurrentBranch,getFunctionalEntitlement:l.getFunctionalEntitlement,getFunctionalEntitlementBranch:l.getFunctionalEntitlementBranch,setCurrentBranch:l.setCurrentBranch,setRegion:l.setRegion,currentUser:l.currentUser,canI:l.canI,canIBranch:l.canIBranch,onBranchesChanged:l.onBranchesChanged,exit:l.exit,restart:l.restart,onShuttingDown:l.onShuttingDown,inMemory:new Ki(s)}};let Qi="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",Yi=function(){let e="",t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:21;for(;t--;)e+=Qi[64*Math.random()|0];return e};class Xi{static getGDMajorVersion(){if("undefined"===typeof window)return-1;if(!window.glueDesktop)return-1;if(!window.glueDesktop.version)return-1;const e=Number(window.glueDesktop.version.substr(0,1));return isNaN(e)?-1:e}static callbackifyPromise(e,t,n){const i=e=>{let t=e;if(e instanceof Error&&(t=e.message),"function"!==typeof n)return Promise.reject(t);n(t)};try{return e().then((e=>("function"===typeof t&&t(e),e))).catch((e=>i(e)))}catch(r){return i(r)}}static getMonitor(e,t){return t.map((t=>{const{left:n,top:i,workingAreaWidth:r,workingAreaHeight:o}=t;return{monitor:t,totalOverlap:this.calculateTotalOverlap({left:n,top:i,width:r,height:o},e)}})).sort(((e,t)=>t.totalOverlap-e.totalOverlap))[0].monitor}static getDisplayCenterOfScreen(e,t,n){const i=e.width/t.scaleFactor,r=e.height/t.scaleFactor,o=t.workArea.left/n.scaleFactor,s=t.workArea.top/n.scaleFactor,a=t.workArea.width/t.scaleFactor,c=t.workArea.height/t.scaleFactor,u=Math.max((a-i)/2,0),d=Math.max((c-r)/2,0),l=Math.floor(o+u),h=Math.floor(s+d);return{left:l*n.scaleFactor,top:h*n.scaleFactor,width:e.width,height:e.height}}static isNode(){if("undefined"!==typeof Xi._isNode)return Xi._isNode;if("undefined"!==typeof window)return Xi._isNode=!1,!1;try{Xi._isNode="[object process]"===Object.prototype.toString.call(n.g.process)}catch(e){Xi._isNode=!1}return Xi._isNode}static generateId(){return Yi(10)}static calculateTotalOverlap(e,t){const n=e.left,i=e.top,r=n+e.width,o=i+e.height,s=t.left,a=t.top,c=s+t.width,u=a+t.height;return Math.max(0,Math.min(r,c)-Math.max(n,s))*Math.max(0,Math.min(o,u)-Math.max(i,a))}}const Zi="T42.JumpList.Action";class er{constructor(){this._groupActionCallbacks=new Map,this._registered=!1}init(e,t,n){this._executor=e,this._agm=t,this._logger=n,this.registerCallbackMethod()}setEnabled(e,t){const n={enabled:t};return this._executor.updateJumpList(e,n)}createCategory(e,t,n){this.validateActions(t,n);const i={category:{title:t,operation:"create",actions:this.toUpdateActions(e,"create",t,n)}};return this._executor.updateJumpList(e,i)}removeCategory(e,t){const n={category:{title:t,operation:"remove",actions:[]}};return this.manageActionCallback(e,n.category.operation,t),this._executor.updateJumpList(e,n)}createActions(e,t,n){this.validateActions(t,n);const i={category:{title:t,operation:"update",actions:this.toUpdateActions(e,"create",t,n)}};return this._executor.updateJumpList(e,i)}removeActions(e,t,n){const i={category:{title:t,operation:"update",actions:this.toUpdateActions(e,"remove",t,n)}};return this._executor.updateJumpList(e,i)}async getActions(e,t){const n=[],i=(await this.getJumpListSettings(e)).categories.find((e=>e.title===t));return i&&i.actions.forEach((e=>{const t=this.getActionCallback(e.callbackId);t&&(e.callback=t.callback),n.push({icon:e.icon,callback:e.callback,singleInstanceTitle:e.singleInstanceTitle,multiInstanceTitle:e.multiInstanceTitle})})),Promise.resolve(n)}getJumpListSettings(e){return this._executor.getJumpList(e)}toUpdateActions(e,t,n,i){return i.map((i=>{const r={icon:i.icon,callback:i.callback,callbackId:Xi.generateId(),singleInstanceTitle:i.singleInstanceTitle,multiInstanceTitle:i.multiInstanceTitle,operation:t};return this.manageActionCallback(e,t,n,r),r}))}manageActionCallback(e,t,n,i){var r;const o="".concat(n,"-").concat(e);if("create"===t)this._groupActionCallbacks.has(o)||this._groupActionCallbacks.set(o,[]),this._groupActionCallbacks.get(o).push({callbackId:i.callbackId,callback:i.callback});else if("remove"===t)if(i){let e=null!==(r=this._groupActionCallbacks.get(o))&&void 0!==r?r:[];e=e.filter((e=>e.callbackId!==i.callbackId)),0===e.length?this._groupActionCallbacks.delete(o):this._groupActionCallbacks.set(o,e)}else this._groupActionCallbacks.delete(o)}registerCallbackMethod(){if(!this._registered){this._registered=!0;try{this._agm.register(Zi,((e,t)=>{const n=this.getActionCallback(e.callbackId);if(n)try{n.callback()}catch(i){this._logger.error("Unable to execute user callback for jump list action!",i)}}))}catch(e){return this._logger.error("Unable to register method ".concat(Zi," for invoking jump list action callbacks!"),e),Promise.reject(e)}}}getActionCallback(e){let t;return[...this._groupActionCallbacks.values()].forEach((n=>{const i=n.find((t=>t.callbackId===e));i&&(t=i)})),t}validateActions(e,t){if(!(t&&t.length>0))throw new Error("Category '".concat(e,"' doesn't contain any actions!"));t.forEach((t=>{if(!t.singleInstanceTitle)throw new Error("Category '".concat(e,"' contains an action with undefined singleInstanceTitle!"));if(!t.multiInstanceTitle)throw new Error("Category '".concat(e,"' contains an action with undefined multiInstanceTitle!"));if(!t.callback)throw new Error("Category '".concat(e,"' contains an action with undefined callback function!"))}))}}var tr=new er;class nr{constructor(){this.waitForTimeoutInMilliseconds=6e4,this._windows={},this._pendingWindows={},this._pendingWindowsStates={},this._registry=ki()}init(e){this._logger=e}get(e){return this._windows[e]||this._pendingWindows[e]}getIfReady(e){return this._windows[e]}get list(){return this._windows}add(e){if(this._pendingWindows[e.API.id])return void this._logger.error("trying to add window with id ".concat(e.API.id," from windowStore, which already exists"));const t="remote"===e.API.windowType;this._pendingWindows[e.API.id]=e,this._pendingWindowsStates[e.API.id]={ready:!1,urlChanged:t},this._registry.execute("on-added",e)}remove(e){delete this._windows[e.API.id],delete this._pendingWindows[e.API.id],delete this._pendingWindowsStates[e.API.id],this._registry.execute("on-removed",e)}setReadyState(e){const t=this._pendingWindowsStates[e];"undefined"!==typeof t&&(t.ready=!0,t.urlChanged&&this.markReadyToShow(e))}setUrlChangedState(e){const t=this._pendingWindowsStates[e];"undefined"!==typeof t&&(t.urlChanged=!0,t.ready&&this.markReadyToShow(e))}setCompositionChangedState(e,t){"undefined"!==typeof this._pendingWindowsStates[e]&&!1===t&&this.markReadyToShow(e)}waitFor(e){return new Promise(((t,n)=>{let i,r;const o=setTimeout((()=>{i(),r(),n('Window with id "'.concat(e,'" was not ready within ').concat(this.waitForTimeoutInMilliseconds," milliseconds."))}),this.waitForTimeoutInMilliseconds),s=this._windows[e];if(s)clearTimeout(o),t(s);else{const s=()=>{clearTimeout(o),i(),r()};i=this.onReadyWindow((n=>{n.API.id===e&&(s(),t(n))})),r=this.onRemoved((t=>{t.API.id===e&&(s(),n('Window with id "'.concat(e,'" was removed before it became ready.')))}))}}))}onReadyWindow(e){return this._registry.add("on-ready",e)}onAdded(e){return this._registry.add("on-added",e)}onRemoved(e){return this._registry.add("on-removed",e)}markReadyToShow(e){this._pendingWindows[e]&&(this._windows[e]=this._pendingWindows[e],delete this._pendingWindows[e],delete this._pendingWindowsStates[e]),this._registry.execute("on-ready",this._windows[e])}}var ir=new nr;class rr{constructor(e,t){this.windowId=e,this._categoryTitle=t.title}list(){return tr.getActions(this.windowId,this._categoryTitle)}create(e){return tr.createActions(this.windowId,this._categoryTitle,e)}remove(e){return tr.removeActions(this.windowId,this._categoryTitle,e)}}class or{constructor(e){this.windowId=e}list(){return this.getCategories()}create(e,t){return tr.createCategory(this.windowId,e,t)}remove(e){return tr.removeCategory(this.windowId,e)}async find(e){return(await this.getCategories()).find((t=>t.title===e))}async getCategories(){const e=[];return(await tr.getJumpListSettings(this.windowId)).categories.forEach((t=>{e.push({title:t.title,actions:new rr(this.windowId,t)})})),e}}class sr{constructor(e){this.windowId=e,this._categories=new or(e)}get categories(){return this._categories}async isEnabled(){return(await tr.getJumpListSettings(this.windowId)).enabled}setEnabled(e){return tr.setEnabled(this.windowId,e)}}var ar=(e,t,n,i,r,o,s,a)=>{var c,u,d,l;const h=ki(),p=()=>{const e=s();if(!e)throw new Error("To use this method you need to enable channels API - set the channels property to true when initializing the Glue42 library");return e},f=e,g=t.name,m=t.mode;let v=t.bounds,y=t.url,w=t.title,b=null!==(c=t.context)&&void 0!==c?c:{},_=t.frameColor,C=t.focus,I=null!==(u=t.neighbours)&&void 0!==u?u:{},S=t.groupId,k=t.isGroupHeaderVisible,x=t.isTabHeaderVisible,T=t.isGroupHibernated,A=t.isGroupVisible,E=null!==(d=t.isTabSelected)&&void 0!==d&&d,P=t.settings;const M=t.applicationName;let R,N=t.isVisible,O=t.isSticky,j=t.isCollapsed,D=t.state,F=t.tabGroupId,W=t.tabIndex,L=t.frameId,U=t.isLocked,B=null!==(l=t.frameButtons)&&void 0!==l?l:[],H=t.zoomFactor,G=t.placementSettings;const q=new sr(e);function z(t,i){return"undefined"===typeof t||"function"===typeof t?Xi.callbackifyPromise((()=>{if(!e)throw new Error("The window is already closed.");return n.close(wn)}),t,i):n.close(wn,t)}function V(e,t,i){if("function"===typeof t)return Xi.callbackifyPromise((()=>{if(nn(e))throw new Error("The new URL must be a non-empty string.");return n.navigate(wn,e)}),t,i);if(nn(e))throw new Error("The new URL must be a non-empty string.");return n.navigate(wn,e,t)}function J(e,t,i){return Xi.callbackifyPromise((()=>{if(!e||0===Object.keys(e).length||Object.keys(e).every((e=>!e)))throw new Error("Invalid style arguments: "+JSON.stringify(e));if(e&&void 0!==e.focus){if("boolean"!==typeof e.focus)throw new Error("Focus must be a boolean value. Currently, only `focus: true` is supported.");!1===e.focus&&console.warn("`focus: false` is not supported!")}if(e&&void 0!==e.hidden&&"boolean"!==typeof e.hidden)throw new Error("The `hidden` property must hold a boolean value.");for(const t of["minHeight","maxHeight","minWidth","maxWidth"]){const n=e,i=n[t];if(t in e){if(tn(i)){delete n[t];continue}if(!Qt(n[t]))throw new Error('"'.concat(t,'" must be a number'))}}return n.setStyle(wn,e)}),t,i)}function K(e,t,i){return Xi.callbackifyPromise((()=>n.resetButtons(wn,e)),t,i)}function $(){return n.getButtons(wn)}function Q(e,t,i){return Xi.callbackifyPromise((()=>{if("string"===typeof e){if("always"!==e)throw new Error("`onTop` must hold a `always` value.")}else if("boolean"!==typeof e)throw new Error("`onTop` must hold a boolean or `always` value.");return n.setOnTop(wn,e)}),t,i)}function Y(e,t,i){return Xi.callbackifyPromise((()=>{if(!e||Object.keys(e).every((e=>void 0===e)))throw new Error("The properties of `constraints` cannot be null or undefined.");return n.setSizeConstraints(wn,e)}),t,i)}function X(){return n.getSizeConstraints(wn)}function Z(e,t,i){return Xi.callbackifyPromise((()=>{if(tn(e))throw new Error("`newTitle` must not be null or undefined.");return e===w?Promise.resolve(wn):n.setTitle(wn,e)}),t,i)}function ee(e,t,i){return Xi.callbackifyPromise((()=>{if("boolean"!==typeof e)throw new Error("`isSticky` must hold a boolean value.");return n.setSticky(wn,e)}),t,i)}function te(e,t,i){return Xi.callbackifyPromise((()=>{if(tn(e))throw new Error("The properties of `bounds` cannot be null or undefined.");return n.moveResize(wn,e)}),t,i)}function ne(e,t,i){return Xi.callbackifyPromise((()=>{if("undefined"===typeof e||0===Object.keys(e).length)throw new Error("Button info is not available.");if(nn(e.buttonId))throw new Error("`buttonId` must not be null or undefined.");if(nn(e.imageBase64))throw new Error("`imageBase64` must not be null or undefined.");return n.addFrameButton(wn,e)}),t,i)}function ie(e,t,i){return Xi.callbackifyPromise((()=>{if(nn(e))throw new Error("`buttonId` must not be null or undefined.");return n.removeFrameButton(wn,e)}),t,i)}function re(e,t){return Xi.callbackifyPromise((()=>C?Promise.resolve(wn):n.activate(wn)),e,t)}function oe(e,t){return Xi.callbackifyPromise((()=>C?Promise.resolve(wn):n.focus(wn)),e,t)}function se(e,t){return Xi.callbackifyPromise((()=>n.maximizeRestore(wn)),e,t)}function ae(e,t){return Xi.callbackifyPromise((()=>"maximized"===D?Promise.resolve(wn):n.maximize(wn)),e,t)}function ce(e,t){return Xi.callbackifyPromise((()=>"normal"===D?Promise.resolve(wn):n.restore(wn)),e,t)}function ue(e,t){return Xi.callbackifyPromise((()=>"minimized"===D?Promise.resolve(wn):n.minimize(wn)),e,t)}function de(e,t){return Xi.callbackifyPromise((()=>j?Promise.resolve(wn):n.collapse(wn)),e,t)}function le(e,t){return Xi.callbackifyPromise((()=>j?n.expand(wn):Promise.resolve(wn)),e,t)}function he(e,t){return Xi.callbackifyPromise((()=>n.toggleCollapse(wn)),e,t)}function pe(e,t,i,r){return Xi.callbackifyPromise((()=>{if(tn(e))throw new Error("A target window is not specified - ".concat("string"===typeof e?e:JSON.stringify(e)));if("string"===typeof e){const t=ir.get(e);if(!t)throw new Error('Invalid "target" parameter or no such window. Invoked with: '.concat(e));e=t.API}return"string"===typeof t&&(t={direction:t,autoAlign:!0}),n.snap(wn,e,t)}),i,r)}function fe(e,t,i,r){return Xi.callbackifyPromise((()=>{var i;const r='Invalid "tab" parameter - must be an object with an "id" property or a string. Invoked for source window with ID:';if(tn(e)){const t="".concat(r," ").concat("string"===typeof e?e:JSON.stringify(e));throw new Error(t)}let o;if("string"===typeof e){if(o=null===(i=ir.get(e))||void 0===i?void 0:i.API,tn(o)){const e="".concat(r," ").concat("string"===typeof o?o:JSON.stringify(o));throw new Error(e)}}else{if(tn(e.id))throw new Error(r);o=e}const s={};return tn(t)||("number"===typeof t?s.index=t:(s.selected=t.selected,s.index=t.index)),n.attachTab(wn,o,s)}),i,r)}function ge(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,i=arguments.length>2?arguments[2]:void 0;return Xi.callbackifyPromise((()=>{const t={};function i(e){return void 0!==e.relativeTo}return i(e)?("string"===typeof e.relativeTo?t.relativeTo=e.relativeTo:tn(e.relativeTo.id)||(t.relativeTo=e.relativeTo.id),tn(e.relativeDirection)||(t.relativeDirection=e.relativeDirection),tn(e.width)||(t.width=e.width),tn(e.height)||(t.height=e.height)):tn(e.bounds)||(t.bounds=e.bounds),tn(e.hideTabHeader)||(t.hideTabHeader=e.hideTabHeader),n.detachTab(wn,t)}),t,i)}function me(e,t,i){return Xi.callbackifyPromise((()=>n.setVisible(wn,e)),t,i)}async function ve(e){return e&&ye(e),n.center(wn,e)}function ye(e){if("object"!==typeof e)throw Error("display argument must be a valid display object");if(!e.workArea||!e.scaleFactor)throw Error("display argument is not a valid display object")}function we(e){return n.showLoader(wn,e)}function be(){return n.hideLoader(wn)}function _e(e,t,i){return Xi.callbackifyPromise((()=>{if(tn(e))throw new Error('"context" must not be null or undefined.');return n.updateContext(wn,e,!1)}),t,i)}function Ce(e,t){return Xi.callbackifyPromise((()=>n.lock(wn)),e,t)}function Ie(e,t){return Xi.callbackifyPromise((()=>n.unlock(wn)),e,t)}function Se(e,t){return Xi.callbackifyPromise((()=>n.getIcon(wn)),e,t)}function ke(e,t,i){return Xi.callbackifyPromise((()=>{if(nn(e))throw new Error('"base64Image" must be a non-empty string.');return n.setIcon(wn,e)}),t,i)}function xe(e,t,i){return Xi.callbackifyPromise((()=>{if(nn(e))throw new Error('"frameColor" must be a non-empty string');return n.setFrameColor(wn,e)}),t,i)}function Te(e,t,i){return Xi.callbackifyPromise((()=>{if("boolean"!==typeof e)throw new Error('"toBeTabHeaderVisible" must hold a boolean value.');return n.setTabHeaderVisible(wn,e)}),t,i)}async function Ae(e){if(nn(e))throw new Error('"'.concat(e,'" must not be null or undefined'));return n.setTabTooltip(wn,e)}async function Ee(){return n.getTabTooltip(wn)}function Pe(e){return n.showPopup(wn,e)}function Me(e){return n.createFlydown(wn.id,e)}function Re(e){return n.setModalState(wn.id,e||!1)}function Ne(e,t){return Xi.callbackifyPromise((()=>n.zoomIn(wn)),e,t)}function Oe(e,t){return Xi.callbackifyPromise((()=>n.zoomOut(wn)),e,t)}function je(e,t,i){return Xi.callbackifyPromise((()=>{if(isNaN(e))throw new Error("zoomFactor is not a number");return n.setZoomFactor(wn,e)}),t,i)}function De(){return n.showDevTools(wn)}function Fe(e){return n.capture(wn,e)}function We(e,t){const i={shouldFlash:!0,mode:"auto"};return"boolean"===typeof e&&(i.shouldFlash=e),"undefined"!==typeof t&&(i.mode=t),n.flash(wn,i)}function Le(e){const t={shouldFlash:!0};return"boolean"===typeof e&&(t.shouldFlash=e),n.flashTab(wn,t)}function Ue(e){return n.print(wn,e)}function Be(e){return n.printToPDF(wn,e)}function He(t){return new Promise(((i,r)=>{const o=bt(((t,n,r)=>{e===t.id&&(o(),i(wn))}));n.ungroup(wn,t).catch((e=>{o(),r(e)}))}))}function Ge(e){return n.place(wn,e)}function qe(e){return n.refresh(wn,e)}function ze(e,t){return n.download(wn,e,t)}function Ve(e){return n.configureWindow(wn,e)}function Je(){return n.getWindowConfiguration(wn)}function Ke(){return n.getDockingPlacement(wn)}function $e(e){return n.dock(wn,e)}async function Qe(e){return n.clone(wn,e)}function Ye(e){if(!on(e))throw new Error("callback should be a function");return e(wn.title,wn),Et("onTitleChanged",e)}function Xe(t){if(!on(t))throw new Error("callback should be a function");return void 0===e&&t(wn),h.add("onClose",t)}function Ze(e){return Et("onUrlChanged",e)}function et(e){return Et("onFrameButtonAdded",e)}function tt(e){return Et("onFrameButtonRemoved",e)}function nt(e){return Et("onFrameButtonClicked",e)}function it(e){if(!on(e))throw new Error("callback should be a function");return j&&e(wn),h.add("collapsed",e)}function rt(e){if(!on(e))throw new Error("callback should be a function");return j||e(wn),h.add("expanded",e)}function ot(e){return"maximized"===D?Et("maximized",e,[wn]):Et("maximized",e)}function st(e){return"minimized"===D?Et("minimized",e,[wn]):Et("minimized",e)}function at(e){return"normal"===D?Et("normal",e,[wn]):Et("normal",e)}function ct(e){return Et("attached",e)}function ut(e){return Et("detached",e)}function dt(e){return Et("visibility-changed",e)}function lt(e){return Et("context-updated",e)}function ht(e){return Et("lock-changed",e)}function pt(e){return Et("bounds-changed",e)}function ft(e){return Et("focus-changed",e)}function gt(e){return Et("sticky-changed",e)}function mt(e){return Et("frame-color-changed",e)}function vt(e){return Et("tab-header-visibility-changed",e)}function yt(e){return Et("window-attached",e)}function wt(e){return Et("window-detached",e)}function bt(e){return Et("group-changed",e)}function _t(e){return Et("tab-selection-changed",e)}function Ct(e){if(!on(e))throw new Error("callback must be a function");const t=(t,n,i)=>{const r=e(i);(null===r||void 0===r?void 0:r.then)?r.then(t).catch(n):t()};return n.onClosing(t,wn)}function It(e){if(!on(e))throw new Error("callback must be a function");const t=(t,n,i)=>{const r=e(i);(null===r||void 0===r?void 0:r.then)?r.then(t).catch(n):t()};return n.onRefreshing(t,wn)}function St(e){if(!on(e))throw new Error("callback must be a function");const t=(t,n,i,r)=>{const o=e(r);(null===o||void 0===o?void 0:o.then)?o.then(t).catch(n):t()};return n.onNavigating(t,wn)}function kt(e){return Et("zoom-factor-changed",e)}function xt(e){return Et("placementSettingsChanged",e)}function Tt(e){return Et("neighbours-changed",e)}function At(e){return Et("docking-changed",e)}function Et(e,t,n){if(!on(t))throw new Error("callback must be a function");return h.add(e,t,n)}function Pt(){return n.goBack(wn)}function Mt(){return n.goForward(wn)}function Rt(e){return n.startDrag(wn,e)}function Nt(e){if((null===e||void 0===e?void 0:e.timerDuration)&&isNaN(null===e||void 0===e?void 0:e.timerDuration))throw new Error("timerDuration must be a number");if((null===e||void 0===e?void 0:e.showTimer)&&"boolean"!==typeof(null===e||void 0===e?void 0:e.showTimer))throw new Error("showTimer must be a boolean");return n.showDialog(wn,e)}function Ot(e){y=e.url,w=e.title,b=e.context||{},v=e.bounds,_=e.frameColor,C=e.focus,I=e.neighbours||{},S=e.groupId,k=e.isGroupHeaderVisible,x=e.isTabHeaderVisible,T=e.isGroupHibernated,A=e.isGroupVisible,E=e.isTabSelected,P=e.settings,N=e.isVisible,O=e.isSticky,j=e.isCollapsed,D=e.state,F=e.tabGroupId,L=e.frameId,U=e.isLocked,H=e.zoomFactor,G=e.placementSettings}function jt(e){w=e,n.finished.finally((()=>{h.execute("onTitleChanged",e,wn)}))}function Dt(e){y=e,h.execute("onUrlChanged",e,wn)}function Ft(e){e!==N&&(N=e,h.execute("visibility-changed",wn))}function Wt(e){P=e,h.execute("settings-changed",wn)}function Lt(e){b=e,h.execute("context-updated",b,wn)}function Ut(){void 0!==e&&(h.execute("onClose",wn),e=void 0)}function Bt(e){const t=["buttonId","imageBase64","order","tooltip"].reduce(((t,n)=>(t[n]=e[n],t)),{});-1===B.map((e=>e.buttonId)).indexOf(e.buttonId)&&B.push(t),h.execute("onFrameButtonAdded",t,wn)}function Ht(e){let t;B=B.reduce(((n,i)=>(i.buttonId===e?t=i:n.push(i),n)),[]),void 0!==t&&h.execute("onFrameButtonRemoved",t,wn)}function Gt(e){const t=B.filter((t=>t.buttonId===e.buttonId));t.length>0&&h.execute("onFrameButtonClicked",t[0],wn)}async function qt(e){"collapsed"===e?j=!0:"expanded"===e?j=!1:D=e,await n.finished,h.execute(e,wn)}function zt(e){U=e,h.execute("lock-changed",wn)}function Vt(e){v.top===e.top&&v.left===e.left&&v.width===e.width&&v.height===e.height||(v=e,h.execute("bounds-changed",wn))}function Jt(e){C=e,h.execute("focus-changed",wn)}function Kt(e){O=e,h.execute("sticky-changed",e,wn)}function $t(e){_=e,h.execute("frame-color-changed",wn)}function Yt(e,t,n){F=e,L=t,x=n,h.execute("frame-attached",wn)}function Xt(e){I=e.neighbors||{},W=e.index,h.execute("neighbours-changed",I,wn)}function Zt(e){k=e}function en(e){x!==e&&(x=e,h.execute("tab-header-visibility-changed",wn))}async function rn(t,i){let r;t===e?(E=!0,r=wn):(E=!1,r=ir.get(t)?ir.get(t).API:void 0);const o=ir.get(i)?ir.get(i).API:void 0;await n.finished,h.execute("tab-selection-changed",r,o,wn)}async function sn(e,t,i,r,o){F=e,x=i,L=t,"undefined"!==typeof r&&(U=r),await n.finished,o.forEach((e=>{e.Events.handleWindowAttached(wn)})),h.execute("attached",wn)}function an(e){h.execute("window-attached",e)}async function cn(e,t){F=void 0,E=!1,"undefined"!==typeof e&&(U=e),await n.finished,t.forEach((e=>{e.Events.handleWindowDetached(wn)})),h.execute("detached",wn)}function un(e){h.execute("window-detached",e)}function dn(e){H=e,h.execute("zoom-factor-changed",wn)}function ln(e){let t;const n=e;if(n.display){const e=o();if(e){const i=n.display-1;t=new Promise(((t,n)=>{e.all().then((e=>{const n=e.find((e=>e.index===i));t(n)})).catch(n)}))}else t=Promise.resolve(void 0)}else t=Promise.resolve(void 0);t.then((e=>{n.display=e,G=n,h.execute("placementSettingsChanged",wn)}))}function hn(e){h.execute("docking-changed",wn,{docked:e.docked,position:e.position,claimScreenArea:e.claimScreenArea})}function pn(e,t){R=e,S=null===e||void 0===e?void 0:e.id,tn(e)||tn(t)||h.execute("group-changed",wn,e,t)}function fn(){const e=ir.list;return"tab"!==m.toLowerCase()?[]:Object.keys(e).reduce(((t,n)=>{const i=e[n];return i&&i.API.tabGroupId&&"undefined"!==typeof i.API.tabGroupId&&"undefined"!==typeof wn.tabGroupId&&i.API.tabGroupId===wn.tabGroupId&&t.push(i.API),t}),[]).sort(((e,t)=>{if(e.tabIndex!==t.tabIndex){if(-1===e.tabIndex)return Number.MAX_SAFE_INTEGER;if(-1===t.tabIndex)return Number.MIN_SAFE_INTEGER}return e.tabIndex-t.tabIndex}))}function gn(e){return e.reduce(((e,t)=>{const n=ir.get(t);return n&&e.push(n.API),e}),[])}function mn(e){const t=I[e];if("undefined"!==typeof t)return gn(t)}function vn(){var t;if(M)return M;if(b._APPLICATION_NAME)return b._APPLICATION_NAME;if(b&&b._t42&&b._t42.application)return b._t42.application;const n=yn();if(n&&n.applicationName)return n.applicationName;const i=r();if(i){const n=i.instances().find((t=>e===t.id));if(n)return null===(t=n.application)||void 0===t?void 0:t.name}}function yn(){if("undefined"!==typeof window&&window.glue42gd&&window.glue42gd.getWindowInfo){const t=window.glue42gd.getWindowInfo(e);return t||void 0}}const wn={get id(){return f},get name(){return g},get application(){const e=r(),t=vn();if(t&&e)return e.application(t)},get hostInstance(){return n.hostInstance},get interopInstance(){const e=a.servers().find((e=>e.windowId===this.id));if(e)return e;{const e=vn();if(e)return{application:e}}},get agmInstance(){return wn.interopInstance},get url(){return y},get title(){return w},get windowStyleAttributes(){return P},get settings(){return P},get tabGroupId(){return"tab"===m.toLowerCase()?F:void 0},get tabIndex(){return"tab"===m.toLowerCase()?W:void 0},get frameId(){return L},get frameButtons(){return B.sort(((e,t)=>e.order-t.order))},get mode(){return m},get state(){return D},get isCollapsed(){return j},get isVisible(){return N},get isLocked(){return U},get context(){return b},get bounds(){return v},get minHeight(){return P.minHeight},get maxHeight(){return P.maxHeight},get minWidth(){return P.minWidth},get maxWidth(){return P.maxWidth},get isFocused(){return C},get frameColor(){return _},get opened(){return void 0!==wn.id},get group(){return R},get groupId(){return S},get isSticky(){return O},get topNeighbours(){return mn("top")},get leftNeighbours(){return mn("left")},get rightNeighbours(){return mn("right")},get bottomNeighbours(){return mn("bottom")},get isGroupHeaderVisible(){return k},get activityId(){if(b._t42)return b._t42.activityId;const e=yn();return e?e.activityId:void 0},get activityWindowId(){if(b._t42)return b._t42.activityWindowId;const e=yn();return e?e.activityWindowId:void 0},get windowType(){return t.windowType||"electron"},get zoomFactor(){return H},get screen(){if("undefined"!==typeof window&&window.glue42gd)return Xi.getMonitor(wn.bounds,window.glue42gd.monitors)},get placementSettings(){return Object.assign({},G)},get jumpList(){return q},maximize:ae,restore:ce,minimize:ue,maximizeRestore:se,collapse:de,expand:le,toggleCollapse:he,focus:oe,activate:re,moveResize:te,setTitle:Z,setStyle:J,setOnTop:Q,resetButtons:K,getButtons:$,setSizeConstraints:Y,getSizeConstraints:X,navigate:V,addFrameButton:ne,removeFrameButton:ie,setVisible:me,show:()=>me(!0),hide:()=>me(!1),center:ve,close:z,snap:pe,showLoader:we,hideLoader:be,updateContext:_e,lock:Ce,unlock:Ie,getIcon:Se,setIcon:ke,setFrameColor:xe,setTabTooltip:Ae,getTabTooltip:Ee,attachTab:fe,detachTab:ge,setTabHeaderVisible:Te,showPopup:Pe,createFlydown:Me,setModalState:Re,setZoomFactor:je,zoomIn:Ne,zoomOut:Oe,showDevTools:De,capture:Fe,flash:We,flashTab:Le,setSticky:ee,print:Ue,printToPDF:Be,place:Ge,ungroup:He,refresh:qe,goBack:Pt,goForward:Mt,download:ze,configure:Ve,getConfiguration:Je,getDockingPlacement:Ke,dock:$e,clone:Qe,getChannel:async()=>{var e;return null===(e=(await p().getWindowsWithChannels({windowIds:[f]}))[0])||void 0===e?void 0:e.channel},startDrag:Rt,showDialog:Nt,onClose:Xe,onUrlChanged:Ze,onTitleChanged:Ye,onFrameButtonAdded:et,onFrameButtonRemoved:tt,onFrameButtonClicked:nt,onCollapsed:it,onExpanded:rt,onMinimized:st,onMaximized:ot,onNormal:at,onAttached:ct,onDetached:ut,onVisibilityChanged:dt,onContextUpdated:lt,onLockingChanged:ht,onBoundsChanged:pt,onFrameColorChanged:mt,onFocusChanged:ft,onStickyChanged:gt,onGroupChanged:bt,onWindowAttached:yt,onWindowDetached:wt,onTabSelectionChanged:_t,onTabHeaderVisibilityChanged:vt,onClosing:Ct,onRefreshing:It,onZoomFactorChanged:kt,onPlacementSettingsChanged:xt,onNeighboursChanged:Tt,onDockingChanged:At,onNavigating:St,get tabs(){return fn()},get isTabHeaderVisible(){return x},get isTabSelected(){return E},getURL:()=>Promise.resolve(y),getTitle:()=>Promise.resolve(w),getBounds:()=>Promise.resolve(v),getContext:()=>Promise.resolve(b),setContext(e){if(tn(e))throw new Error('"context" must not be null or undefined, set to empty object if you want to clear it out.');return n.updateContext(wn,e,!0)},getDisplay:()=>o().getByWindowId(e),resizeTo:(e,t)=>te({width:e,height:t}),moveTo:(e,t)=>te({top:e,left:t}),async getParentWindow(){var e;const t=P.parentInstanceId;if(t)return null===(e=ir.list[t])||void 0===e?void 0:e.API},getChildWindows:async()=>Object.keys(ir.list).map((e=>ir.list[e].API)).filter((t=>t.settings.parentInstanceId===e)),joinChannel:t=>p().join(t,e),leaveChannel:()=>p().leave(e)};return{API:wn,Events:{handleUpdate:Ot,handleWindowClose:Ut,handleWindowChangeState:qt,handleTitleChanged:jt,handleVisibilityChanged:Ft,handleUrlChanged:Dt,handleWindowSettingsChanged:Wt,handleContextUpdated:Lt,handleFrameIsLockedChanged:zt,handleBoundsChanged:Vt,handleFocusChanged:Jt,handleFrameButtonAdded:Bt,handleFrameButtonRemoved:Ht,handleFrameButtonClicked:Gt,handleFrameColorChanged:$t,handleFrameAttached:Yt,handleFrameSelectionChanged:rn,handleCompositionChanged:Xt,handleGroupHeaderVisibilityChanged:Zt,handleTabHeaderVisibilityChanged:en,handleGroupChanged:pn,handleAttached:sn,handleDetached:cn,handleWindowAttached:an,handleWindowDetached:un,handleZoomFactorChanged:dn,handleIsStickyChanged:Kt,handlePlacementSettingsChanged:ln,handleDockingChanged:hn},GroupCreationArgs:{get isGroupHibernated(){return T},get isGroupVisible(){return A}}}};function cr(e,t){const n=ir.list;return Object.keys(n).reduce(((i,r)=>{const o=n[r];return o.API.tabGroupId===t&&o.API.id!==e&&i.push(o),i}),[])}function ur(e){return!(e&&!Object.keys(e).every((t=>void 0===e[t])))}class dr{constructor(){this.GroupMethodName="T42.Group.Execute",this.WndMethodName="T42.Wnd.Execute",this._registry=ki(),this._finished=Promise.resolve(),this.unsubCallbacks={}}get hostInstance(){return this.agmTarget}get finished(){return this._finished}get configuration(){return this._configuration}init(e,t){this.agm=e,this.agmTarget=t,this._registry.add("event",(e=>{"Closed"===e.type&&Object.keys(this.unsubCallbacks).forEach((t=>{t.startsWith(e.windowId)&&delete this.unsubCallbacks[t]}))}))}setConfiguration(e){this._configuration=e}handleEvent(e){this._registry.execute("event",e)}async open(e){let t;this._finished=new Promise((e=>{t=e}));try{const t=await this.agm.invoke("T42.Wnd.Create",e,this.agmTarget);if(void 0===t.returned)throw new Error("failed to execute T42.Wnd.Create - unknown reason");const n=t.returned.id,i=await ir.waitFor(n);return this.configuration&&!this.configuration.windowAvailableOnURLChanged||setTimeout((()=>{"electron"===i.API.windowType&&i.Events.handleUrlChanged(i.API.url)}),0),i.API}catch(n){throw n}finally{t()}}async close(e,t){const n=await this.execute("close",{windowId:e.id,options:t},"Closed");return t?n.closed:e}async navigate(e,t,n){return await this.execute("navigate",{windowId:e.id,options:{url:t,urlLoadOptions:n}},"UrlChanged"),e}async setStyle(e,t){var n;const i=[],r=e=>i.push(e);if(tn(t.focus)||e.isFocused||r(e.focus()),!tn(t.hidden)){const n=!t.hidden;r(e.setVisible(n))}if(tn(t.onTop)||r(e.setOnTop(t.onTop)),!nn(t.tabTooltip)||!nn(t.tabToolTip)){const i=null!==(n=t.tabTooltip)&&void 0!==n?n:t.tabToolTip;r(e.setTabTooltip(i))}nn(t.tabTitle)||r(this.execute("setTabTitle",{windowId:e.id,options:{tabTitle:t.tabTitle}}));const o={minHeight:t.minHeight,minWidth:t.minWidth,maxHeight:t.maxHeight,maxWidth:t.maxWidth};!ur(o)&&r(e.setSizeConstraints(o));const s={allowClose:t.allowClose,allowCollapse:t.allowCollapse,allowLockUnlock:t.allowLockUnlock,allowMaximize:t.allowMaximize,allowMinimize:t.allowMinimize};return!ur(s)&&r(e.resetButtons(s)),await Promise.all(i),e}async setSizeConstraints(e,t){return await this.execute("setSizeConstraints",{windowId:e.id,options:t}),e}async getSizeConstraints(e){return await this.execute("getSizeConstraints",{windowId:e.id})}async setTabTooltip(e,t){return await this.execute("setTabTooltip",{windowId:e.id,options:{tabTooltip:t}}),e}async getTabTooltip(e){return(await this.execute("getTabTooltip",{windowId:e.id})).tabTooltip}async resetButtons(e,t){return await this.execute("resetButtons",{windowId:e.id,options:t}),e}async getButtons(e){return await this.execute("getButtons",{windowId:e.id})}async setOnTop(e,t){return await this.execute("setOnTop",{windowId:e.id,options:{onTop:t}}),e}async setTitle(e,t){const n={windowId:e.id,options:{title:t}};return await this.execute("setTitle",n,"TitleChanged"),e}async setSticky(e,t){const n={windowId:e.id,options:{isSticky:t}};return await this.execute("setSticky",n),e}async moveResize(e,t){return"undefined"!==typeof window&&window.glueDesktop.versionNum<31200?new Promise((async(n,i)=>{const r=this.areBoundsEqual(t,e);let o=!1;const s=()=>{o||(o=!0,c&&(c(),c=void 0),n(e),a&&(clearTimeout(a),a=void 0))};let a,c;r||(c=e.onBoundsChanged((e=>{this.areBoundsEqual(t,e)&&s()})));try{await this.execute("moveResize",{windowId:e.id,options:{bounds:t}})}catch(u){return void i(u)}r?s():a=setTimeout((()=>{s()}),1e3)})):(await this.execute("moveResize",{windowId:e.id,options:{bounds:t}}),e)}async addFrameButton(e,t){return await this.execute("addButton",{windowId:e.id,options:t},"ButtonAdded"),e}async removeFrameButton(e,t){return await this.execute("removeButton",{windowId:e.id,options:t},"ButtonRemoved"),e}async activate(e){let t;try{const n=new Promise(((n,i)=>{t=e.onFocusChanged((()=>{n()}))}));return await Promise.all([this.execute("activate",{windowId:e.id},"FocusChanged"),n]),e}catch(n){throw n}finally{t&&t()}}async focus(e){let t;try{const n=new Promise(((n,i)=>{t=e.onFocusChanged((()=>{n()}))}));return await Promise.all([this.execute("focus",{windowId:e.id},"FocusChanged"),n]),e}catch(n){throw n}finally{t&&t()}}async maximizeRestore(e){return await this.execute("maximizeRestore",{windowId:e.id},"StateChanged"),e}async maximize(e){return await this.execute("maximize",{windowId:e.id},"StateChanged"),e}async restore(e){return await this.execute("restore",{windowId:e.id},"StateChanged"),e}async minimize(e){return await this.execute("minimize",{windowId:e.id},"StateChanged"),e}async collapse(e){return await this.execute("collapse",{windowId:e.id},"StateChanged"),e}async expand(e){return await this.execute("expand",{windowId:e.id},"StateChanged"),e}async toggleCollapse(e){return await this.execute("toggleCollapse",{windowId:e.id},"StateChanged"),e}async snap(e,t,n){const i={targetWindowId:t.id};return i.snappingEdge=n.direction,i.autoAlign=n.autoAlign,await this.execute("snap",{windowId:e.id,options:i},"CompositionChanged","CompositionChanged-".concat(t.id)),e}async attachTab(e,t,n){return await this.execute("attachTab",{windowId:e.id,options:{index:n,sourceWindowId:t.id,targetWindowId:e.id}},"WindowFrameAdded-".concat(t.id),"WindowFrameRemoved-".concat(t.id)),e}async detachTab(e,t){const n=["WindowFrameRemoved","WindowFrameAdded"];return tn(null===t||void 0===t?void 0:t.relativeTo)?n.push("BoundsChanged"):(n.push("CompositionChanged"),n.push("CompositionChanged-".concat(t.relativeTo))),await this.execute("detachTab",{windowId:e.id,options:t},...n),e}async setVisible(e){let t;return t=arguments.length>1&&void 0!==arguments[1]&&!arguments[1]?"hide":"show",await this.execute(t,{windowId:e.id},"VisibilityChanged"),e}async center(e,t){return await this.execute("center",{windowId:e.id,options:t}),e}async showLoader(e,t){return await this.execute("showLoadingAnimation",{windowId:e.id,options:t}),e}async hideLoader(e){return await this.execute("hideLoadingAnimation",{windowId:e.id}),e}async updateContext(e,t,n){let i;try{const r=this.swapUndefinedToNull(t),o=new Promise(((t,n)=>{i=e.onContextUpdated((()=>{t()}))}));return await Promise.all([this.execute("updateContext",{windowId:e.id,context:r,replace:n}),o]),e}catch(r){throw r}finally{i&&i()}}async lock(e){return await this.execute("lockUnlock",{windowId:e.id,options:{lock:!0}},"FrameIsLockedChanged"),e}async unlock(e){return await this.execute("lockUnlock",{windowId:e.id,options:{lock:!1}},"FrameIsLockedChanged"),e}async getIcon(e){return(await this.execute("getIcon",{windowId:e.id,options:{}})).icon}async setIcon(e,t){return await this.execute("setIcon",{windowId:e.id,options:{dataURL:t}}),e}async setFrameColor(e,t){return await this.execute("setFrameColor",{windowId:e.id,options:{frameColor:t}},"FrameColorChanged"),e}async setTabHeaderVisible(e,t){return await this.execute("setTabHeaderVisible",{windowId:e.id,options:{toShow:t}},"TabHeaderVisibilityChanged"),e}async showPopup(e,t){if(!t)throw new Error("The options object is not valid!");const n={...t};n.targetLocation||(n.targetLocation="bottom");const i={...n,popupBounds:n.size,targetId:e.id,popupId:n.windowId};return await this.execute("showPopupWindow",{windowId:e.id,options:i}),e}async createFlydown(e,t){if(!t)throw new Error("The options object is not valid!");const n={...t};n.horizontalOffset||(n.horizontalOffset=0),n.verticalOffset||(n.verticalOffset=0);const i=this.reformatFlydownOptions(e,n);return this.execute("setFlydownArea",{windowId:e,options:i}).then((()=>{const e=i.zones.map((e=>e.id));return i.zones.forEach((e=>{let n="function"===typeof e.flydownSize?e.flydownSize:()=>e.flydownSize;t.size instanceof Function&&e.flydownSize&&(n=async(n,i)=>{let r;return t.size instanceof Function&&(r=await t.size(n,i)),e.flydownSize instanceof Function&&e.flydownSize!==t.size?await e.flydownSize(n,i)||r:r||e.flydownSize}),this._registry.clearKey("".concat(i.targetId,"_").concat(e.id)),this._registry.add("".concat(i.targetId,"_").concat(e.id),n)})),{destroy:()=>this.clearFlydownArea(i.targetId,e),options:n}}))}async setModalState(e,t){return this.execute("setModalState",{windowId:e,options:{isModal:t}})}async autoArrange(e){return this.execute("autoArrange",{options:{displayId:e}})}async handleFlydownBoundsRequested(e,t){const n=()=>t.cancel=!0,i={zoneId:t.flydownId,flydownWindowBounds:t.flydownWindowBounds,flydownWindowId:t.flydownWindowId},r=await Promise.all(this._registry.execute("".concat(e,"_").concat(t.flydownId),i,n));if(1===r.length){const e={height:0,width:0,top:0,left:0},n="object"!==typeof r[0]||Array.isArray(r[0])?e:r[0];return{...t,flydownWindowBounds:n}}}async handleOnEventRequested(e,t){var n;const i=null!==(n=this.unsubCallbacks[e])&&void 0!==n?n:[];let r=!1;const o=[];return await Promise.all(i.map((e=>new Promise(((n,i)=>{e((()=>{n()}),(()=>{i()}),(e=>{r=!0,o.push(e)}),t)}))))),{prevented:r,preventArgs:o}}async zoomIn(e){return await this.execute("zoomIn",{windowId:e.id}),e}async zoomOut(e){return await this.execute("zoomOut",{windowId:e.id}),e}async setZoomFactor(e,t){return await this.execute("setZoomFactor",{windowId:e.id,options:{zoomFactor:t}}),e}async showDevTools(e){return await this.execute("showDevTools",{windowId:e.id}),e}async capture(e,t){return(await this.execute("captureScreenshot",{windowId:e.id,options:{...t}})).data}async captureGroup(e,t){return(await this.execute("captureGroupScreenshot",{windowId:e[0],options:{groupWindowIds:e,...t}})).data}async flash(e,t){return await this.execute("flash",{windowId:e.id,options:{...t}}),e}async flashTab(e,t){return await this.execute("flashTab",{windowId:e.id,options:{...t}}),e}async configure(e,t){return this.execute("configure",{windowId:e,options:{...t}})}async print(e,t){return await this.execute("print",{windowId:e.id,options:{...t}}),e}async printToPDF(e,t){return(await this.execute("printToPDF",{windowId:e.id,options:{...t}})).filePath}async place(e,t){const n={...t};return t.display&&"current"!==t.display||(n.display=await e.getDisplay()),n.display&&"string"!==typeof n.display&&"number"!==typeof n.display&&(n.display=n.display.index+1),this.execute("place",{windowId:e.id,options:{...n}})}async refresh(e,t){return await this.execute("refresh",{windowId:e.id,options:{ignoreCache:t}}),e}async download(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};n.enableDownloadBar=!n.silent;const i=await this.execute("downloadURL",{windowId:e.id,options:{url:t,options:n}});return{url:t,path:i.fullPath,size:i.fileSize}}async configureWindow(e,t){return await this.execute("configureWindow",{windowId:e.id,options:t}),e}async getWindowConfiguration(e){return await this.execute("getWindowConfiguration",{windowId:e.id})}async startDrag(e,t){return await this.execute("startDrag",{windowId:e.id,options:t}),e}showDialog(e,t){return new Promise(((n,i)=>{const r=Xi.generateId(),o=this._registry.add("event",(t=>{if("DialogResult"===t.type&&t.windowId===e.id&&t.data.token===r){o();const e=t.data;"status"in e&&("failed"===e.status?i(e.message):"successful"===e.status&&n(e.result))}}));this.execute("showDialog",{windowId:e.id,options:Object.assign({},{...t},{token:r})})}))}async execute(e,t){for(var n=arguments.length,i=new Array(n>2?n-2:0),r=2;r2?n-2:0),r=2;r{t.startsWith(e)&&delete this.unsubCallbacks[t]}))}nonWindowHandlers(e,t,n){return this.nonWindowHandlersCore(t,n,!1,e)}nonWindowHandlersCore(e,t,n,i){const r="".concat(e,"-").concat(t),o=()=>{var o;if(this.unsubCallbacks[r]){const e=this.unsubCallbacks[r];this.unsubCallbacks[r]=e.filter((e=>e!==i)),0===this.unsubCallbacks[r].length&&delete this.unsubCallbacks[r]}if(0===(null!==(o=this.unsubCallbacks[r])&&void 0!==o?o:[]).length){const i={unsubscribe:!0};n?this.executeGroup(t,{groupId:e,options:i}):this.execute(t,{windowId:e,options:i})}};return this.unsubCallbacks[r]?(this.unsubCallbacks[r].push(i),o):(this.unsubCallbacks[r]=[i],n?this.executeGroup(t,{groupId:e}):this.execute(t,{windowId:e}),o)}reformatFlydownOptions(e,t){const n=(e,n)=>{if(t[n]&&(void 0===e[n]||null===e[n])){const i=t[n];e[n]=i}},i=t.zones.map((e=>(n(e,"windowId"),n(e,"targetLocation"),!t.size||void 0!==e.flydownSize&&null!==e.flydownSize||(e.flydownSize=t.size),e.flydownBounds=e.flydownSize,e.flydownId=e.windowId,e.targetLocation||(e.targetLocation="bottom"),e)));return{...t,zones:i,targetId:e,flydownBounds:t.size,flydownActiveArea:t.activeArea}}clearFlydownArea(e,t){return this.execute("clearFlydownWindowArea",{windowId:e,options:{}}).then((()=>{t.forEach((t=>{this._registry.clearKey("".concat(e,"_").concat(t))}))}))}executeWithoutToken(e){const t=[];for(var n=arguments.length,i=new Array(n>1?n-1:0),r=1;r!tn(e))).map((n=>new Promise((i=>{const[r,o=e.windowId]=n.split("-");t.push(this._registry.add("event",(e=>{e.type===r&&e.windowId===o&&i()})))})))),s=new Promise(((t,n)=>{this.agm.invoke("T42.Wnd.Execute",e,this.agmTarget).then((e=>{e.returned&&e.returned.errorMsg?n(e):t(e.returned)})).catch((e=>n(e)))}));return Promise.all([s,...o]).then((e=>e[0])).finally((()=>{t.forEach((e=>e()))}))}async executeCore(e,t,n){const i={...n,command:t};let r;this._finished=new Promise((e=>{r=e}));try{if("undefined"!==typeof window&&window.glueDesktop.versionNum<31200){for(var o=arguments.length,s=new Array(o>3?o-3:0),a=3;a{n=this._registry.add("event",(t=>{t.token===i&&e()}))})),o=new Promise(((n,r)=>{t.token=i,this.agm.invoke(e,t,this.agmTarget).then((e=>{e.returned&&e.returned.errorMsg?r(e):n(e.returned)})).catch((e=>{r(e)}))}));return(await Promise.all([o,r]))[0]}catch(i){throw i}finally{n&&n()}}areBoundsEqual(e,t){const n=t.bounds,i=t.settings;let r=e.height,o=e.width;e.heighti.maxHeight&&(r=i.maxHeight),e.widthi.maxWidth&&(o=i.maxWidth);const s=!r||n.height===r,a=!o||n.width===o,c=!e.left||n.left===e.left,u=!e.top||n.top===e.top;return s&&a&&c&&u}swapUndefinedToNull(e){try{const t={};for(const n of Object.keys(e)){let i=e[n];"undefined"===typeof i&&(i=null),t[n]=i}return t}catch{return e}}}var lr=new dr;class hr{constructor(e,t,n,i,r,o){this._registry=ki(),this._waitTimeout=1e4,this._agm=e,this._logger=t.subLogger("gd-env"),this._windowId=o,this._appManagerGetter=n,this._displayAPIGetter=i,this._channelsAPIGetter=r}init(){return new Promise(((e,t)=>{this._agm.register("T42.Wnd.OnEventWithResponse",((e,t)=>this.respondToEvent(e))),new Promise(((n,i)=>{this._agm.subscribe("T42.Wnd.OnEvent",{waitTimeoutMs:this._waitTimeout,target:"best",arguments:{withConfig:!0},onData:t=>{if("Configuration"===t.data.type)return this._configuration=t.data,void lr.setConfiguration(this._configuration);this.updateWindow(t.data,e),lr.handleEvent(t.data)},onConnected:e=>{this._agmInstance=e,lr.init(this._agm,this._agmInstance)}}).catch((e=>{var n;const i="".concat(null===(n=null===e||void 0===e?void 0:e.method)||void 0===n?void 0:n.name," - ").concat(JSON.stringify(null===e||void 0===e?void 0:e.called_with)," - ").concat(null===e||void 0===e?void 0:e.message);t(new Error(i))}))}))}))}get executor(){return lr}open(e,t,n){n=n||{};const i={...n};return void 0!==i.relativeTo&&"string"!==typeof i.relativeTo&&(i.relativeTo=i.relativeTo.id||""),i.name=e,i.url=t,i.windowState=n.windowState||n.state,delete i.state,this.executor.open(i)}createFlydown(e,t){return this.executor.createFlydown(e,t)}async showPopup(e,t){const n=ir.get(e);await this.executor.showPopup(n.API,t)}tabAttached(e){return this._registry.add("tab-attached",e)}tabDetached(e){return this._registry.add("tab-detached",e)}onWindowFrameColorChanged(e){return this._registry.add("frame-color-changed",e)}onEvent(e){return this._registry.add("window-event",e)}my(){return this._windowId}execute(e,t,n){return this._agm.invoke("T42.Wnd.Execute",{command:e,options:n,windowId:t})}onCompositionChanged(e){return this._registry.add("composition-changed",e)}onGroupHeaderVisibilityChanged(e){return this._registry.add("group-header-changed",e)}onGroupVisibilityChanged(e){return this._registry.add("group-visibility-changed",e)}onGroupStateChanged(e){return this._registry.add("group-state-changed",e)}onWindowGotFocus(e){return this._registry.add("got-focus",e)}onWindowLostFocus(e){return this._registry.add("lost-focus",e)}onWindowsAutoArrangeChanged(e){return this._registry.add("windows-auto-arranged-changed",e)}respondToEvent(e){return"ShowFlydownBoundsRequested"===e.type?this.executor.handleFlydownBoundsRequested(e.data.windowId,e.data):"OnClosing"===e.type||"OnRefreshing"===e.type||"OnNavigating"===e.type?this.executor.handleOnEventRequested(e.data.callbackId,e.data.args):Promise.reject("There isn't a handler for ".concat(e.type))}updateWindow(e,t){var n;const i=this.getExtendedStreamEvent(e);if("Snapshot"===e.type)return e.windows.forEach((e=>{const t=ir.get(e.id);if(t)t.Events.handleUpdate(this.mapToWindowConstructorOptions(e)),t.GroupCreationArgs=this.mapToGroupCreationArgs(e);else{const t=this.createWindow(e.id,e);ir.markReadyToShow(t.API.id)}this._registry.execute("window-event",i)})),void t(this);if("CommandExecuted"===e.type)return void this._registry.execute("window-event",i);if("Created"===e.type){const t=e,n=this.createWindow(t.windowId,t.data||{});return ir.setReadyState(n.API.id),void this._registry.execute("window-event",i)}if("OnGroupVisibilityChanged"===e.type){const t=e;return this._registry.execute("group-visibility-changed",t.data),void this._registry.execute("window-event",e)}if("OnGroupStateChanged"===e.type){const t=e;return this._registry.execute("group-state-changed",t.data),void this._registry.execute("window-event",e)}if("OnWindowsAutoArrangeChanged"===e.type){const t=e;return this._registry.execute("windows-auto-arranged-changed",t.data),void this._registry.execute("window-event",e)}const r=ir.get(e.windowId);if(!r)return void this._logger.error("received update for unknown window. Stream:', ".concat(JSON.stringify(e,null,4)));const o=r.API,s=r.Events;if("BoundsChanged"===e.type){const t=e;s.handleBoundsChanged(t.data)}if("UrlChanged"===e.type){const t=e;ir.setUrlChangedState(t.windowId),s.handleUrlChanged(t.data)}if("TitleChanged"===e.type){const t=e;s.handleTitleChanged(t.data)}if("IsStickyChanged"===e.type){const t=e;s.handleIsStickyChanged(t.data)}if("VisibilityChanged"===e.type&&s.handleVisibilityChanged(e.data),"ContextChanged"===e.type&&s.handleContextUpdated(e.data),"StateChanged"===e.type&&s.handleWindowChangeState(e.data),"FrameColorChanged"===e.type&&(s.handleFrameColorChanged(e.data),this._registry.execute("frame-color-changed",o)),"CompositionChanged"===e.type){const t=e;s.handleCompositionChanged(t.data),ir.setCompositionChangedState(t.data.windowId,null===(n=this._configuration)||void 0===n?void 0:n.windowAvailableOnURLChanged),this._registry.execute("composition-changed",t.data)}if("GroupHeaderVisibilityChanged"===e.type){const t=e;s.handleGroupHeaderVisibilityChanged(t.data.groupHeaderVisible),this._registry.execute("group-header-changed",t.data)}if("FocusChanged"===e.type){const t=e;this.focusChanged(s,o,t.data)}if("WindowFrameChanged"===e.type&&(s.handleFrameAttached(e.data.frameId,e.data.frameId,e.data.isTabHeaderVisible),this._registry.execute("frame-changed")),"WindowFrameAdded"===e.type){const t=cr(o.id,e.data.frameId),n=e.data;s.handleAttached(n.frameId,n.frameId,n.isTabHeaderVisible,n.isLocked,t).then((async()=>{t.length>0&&(await lr.finished,this._registry.execute("tab-attached",o,e.data.frameId,e.data.isTabHeaderVisible))}))}if("WindowFrameRemoved"===e.type){const t=o.tabGroupId,n=cr(o.id,t);s.handleDetached(e.data.isLocked,n).then((async()=>{n.length>0&&(await lr.finished,this._registry.execute("tab-detached",o,e.data.frameId,o.tabGroupId))}))}"TabHeaderVisibilityChanged"===e.type&&s.handleTabHeaderVisibilityChanged(e.data.isTabHeaderVisible),"FrameSelectionChanged"===e.type&&s.handleFrameSelectionChanged(e.data.newWindowId,e.data.prevWindowId),"ButtonClicked"===e.type&&s.handleFrameButtonClicked(e.data),"ButtonAdded"===e.type&&s.handleFrameButtonAdded(e.data),"ButtonRemoved"===e.type&&s.handleFrameButtonRemoved(e.data),"WindowZoomFactorChanged"===e.type&&s.handleZoomFactorChanged(e.data),"Closed"===e.type&&(ir.remove(r),s.handleWindowClose()),"FrameIsLockedChanged"===e.type&&s.handleFrameIsLockedChanged(e.data),"PlacementSettingsChanged"===e.type&&s.handlePlacementSettingsChanged(e.data),"DockingChanged"===e.type&&s.handleDockingChanged(e.data),this._registry.execute("window-event",i)}createWindow(e,t){const n=ar(e,this.mapToWindowConstructorOptions(t),lr,this._logger,this._appManagerGetter,this._displayAPIGetter,this._channelsAPIGetter,this._agm);return n.GroupCreationArgs=this.mapToGroupCreationArgs(t),ir.add(n),n}async focusChanged(e,t,n){e.handleFocusChanged(n);try{this._configuration.windowAvailableOnURLChanged||await ir.waitFor(t.id)}catch(i){return}n?this._registry.execute("got-focus",t):this._registry.execute("lost-focus",t)}mapToWindowConstructorOptions(e){return{name:e.name,context:e.context,bounds:e.bounds,url:e.url,title:e.title,isVisible:e.isVisible,focus:e.isFocused,state:e.state,frameColor:e.frameColor,groupId:e.groupId,neighbours:e.neighbors,isFocused:e.isFocused,isGroupHeaderVisible:e.groupHeaderVisible,isCollapsed:e.isCollapsed,tabGroupId:e.frameId,frameId:e.frameId,mode:e.mode,isTabHeaderVisible:e.isTabHeaderVisible,isTabSelected:e.isActiveTab,settings:e.settings,windowType:e.windowType,zoomFactor:e.zoomFactor,isLocked:e.isLocked,placementSettings:e.placementSettings,isSticky:e.isSticky,tabIndex:e.tabIndex,frameButtons:e.frameButtons,jumpListOptions:e.jumpList,applicationName:e.applicationName}}mapToGroupCreationArgs(e){return{isGroupHibernated:e.isGroupHibernated,isGroupVisible:e.isGroupVisible}}getExtendedStreamEvent(e){try{if(!e.windowId)return e;const t=ir.get(e.windowId);if(!t)return e;const n={state:e.type,windowName:t.API.name,...e};return"WindowFrameAdded"===n.state&&(n.state="TabAttached"),"StateChanged"===n.state&&(n.state=n.data.charAt(0).toUpperCase()+n.data.slice(1)),"ButtonAdded"===n.state&&(n.state="FrameButtonAdded"),"ButtonRemoved"===n.state&&(n.state="FrameButtonRemoved"),n}catch(t){return e}}}var pr=(e,t,n,i,r,o)=>{const s=t;if(2===o)throw s.trace("running in HC"),new Error("GD2 not supported");return o>=3?(s.trace("running in GD 3"),new hr(e,s,n,i,r,window.glue42gd.windowId).init()):new hr(e,s,n,i,r).init()},fr=(e,t)=>{const n=ki(),i=[];let r,o;async function s(e){var s,a,c,u;if(-1===i.indexOf(e)){i.push(e);const d=ir.get(e);d.Events.handleGroupChanged(I,void 0),r=null!==(a=null!==(s=d.GroupCreationArgs.isGroupHibernated)&&void 0!==s?s:r)&&void 0!==a&&a,o=null===(u=null!==(c=d.GroupCreationArgs.isGroupVisible)&&void 0!==c?c:o)||void 0===u||u,await t.finished,n.execute("window-added",I,d.API)}}async function a(e){const r=i.indexOf(e.API.id);-1!==r&&(i.splice(r,1),e.Events.handleGroupChanged(void 0,I),await t.finished,n.execute("window-removed",I,e.API))}function c(e,t,n){let i;"string"===typeof e?i=e:tn(e)||(i=e.id);const r=g(i);if(r)return"function"===typeof t&&t(r),r;"function"===typeof n&&n("No window with ID: ".concat(i))}function u(e){const t=f();return"function"===typeof e&&e(t),t}async function d(e,n){for(var i=arguments.length,r=new Array(i>2?i-2:0),o=2;o{const n=g(t);"undefined"!==typeof n&&e.push(n)})),e}function g(e){return ir.get(e)?ir.get(e).API:void 0}function m(){return void 0===f().find((e=>!e.isGroupHeaderVisible))}function v(){return r}function y(e){return n.add("header-visibility-changed",e)}function w(e){return n.add("window-added",e)}function b(e){return n.add("window-removed",e)}function _(e){if(!e)throw new Error("Callback argument is required");if(e&&"function"!==typeof e)throw new Error("Callback argument must be a function");return n.add("group-visibility-changed",e)}function C(e){if("function"!==typeof e)throw new Error("callback must be a function");const n=(t,n,i)=>{const r=e(i);(null===r||void 0===r?void 0:r.then)?r.then(t).catch(n):t()};return t.onGroupClosing(n,I)}const I={id:e,get windows(){return u()},find:c,get isHeaderVisible(){return m()},get isHibernated(){return v()},get isVisible(){return o},showHeader:(e,t)=>Xi.callbackifyPromise((()=>d("setGroupHeaderVisibility",{windowId:i[0],options:{toShow:!0}},...i.map((e=>"GroupHeaderVisibilityChanged-".concat(e))))),e,t),hideHeader:(e,t)=>Xi.callbackifyPromise((()=>d("setGroupHeaderVisibility",{windowId:i[0],options:{toShow:!1}},...i.map((e=>"GroupHeaderVisibilityChanged-".concat(e))))),e,t),getTitle:async()=>(await t.execute("getGroupTitle",{windowId:i[0]})).title,setTitle:async e=>{if(nn(e))throw new Error("`title` must not be null or undefined.");return d("setGroupTitle",{windowId:i[0],options:{title:e}})},capture:e=>t.captureGroup(i,e),maximize:(e,t)=>Xi.callbackifyPromise((()=>d("maximizeGroup",{windowId:i[0]},...i.map((e=>"StateChanged-".concat(e))))),e,t),restore:(e,t)=>Xi.callbackifyPromise((()=>d("restoreGroup",{windowId:i[0]},...i.map((e=>"StateChanged-".concat(e))))),e,t),show:n=>{if(!tn(n)&&!rn(n))throw new Error("Activate flag must be a boolean!");return n=!!tn(n)||n,t.executeGroup("showGroup",{groupId:e,options:{activate:n}})},hide:()=>t.executeGroup("hideGroup",{groupId:e}),onHeaderVisibilityChanged:y,onWindowAdded:w,onWindowRemoved:b,onVisibilityChanged:_,onClosing:C};return{groupAPI:I,groupInternal:{get windows(){return i},addWindow:s,removeWindow:a,handleGroupHeaderVisibilityChanged:l,handleGroupVisibilityChanged:h,handleGroupHibernateChanged:p}}},gr=(e,t)=>{const n=ki(),i={};let r=-1;const o=ir.list;function s(){return c(e.my())}function a(e){const t=Object.keys(i).map((e=>{if(i[e])return i[e].groupAPI}));return"function"===typeof e&&e(t),t}function c(e,t,n){let r;"string"===typeof e?r=e:tn(e)||(r=e.id);const o=Object.values(i).find((e=>e.groupAPI.windows.filter((e=>e.id===r)).length));if(o)return"function"===typeof t&&t(o.groupAPI),o.groupAPI;"function"===typeof n&&n("Cannot find the group of the window.")}function u(e){return e?new Promise(((t,n)=>{const r=i[e];if(r)t(r.groupAPI);else{const n=h((i=>{i.id===e&&(n(),t(i))}))}})):Promise.reject("groupId must be defined")}async function d(e,t){if(!tn(t)&&!rn(t))throw new Error("Activate flag must be a boolean!");t=!!tn(t)||t,await lr.executeGroup("resumeGroup",{groupId:e,options:{activate:t}})}async function l(e){return await lr.executeGroup("hibernateGroup",{groupId:e}),e}function h(e){return n.add("group-added",e)}function p(e){return n.add("group-removed",e)}function f(e){return n.add("window-moved",e)}function g(e){if(!e)throw new Error("Callback argument is required");if(e&&"function"!==typeof e)throw new Error("Callback argument must be a function");return n.add("group-hibernated",e)}function m(e){if(!e)throw new Error("Callback argument is required");if(e&&"function"!==typeof e)throw new Error("Callback argument must be a function");return n.add("group-resumed",e)}function v(t){if(i.hasOwnProperty(t))return i[t];{const r=fr(t,e.executor);i[t]=r;const o=r.groupAPI;return n.execute("group-added",o),r}}function y(e){const t=e.groupAPI;0===t.windows.length&&(delete i[t.id],lr.clearCallbacks(t.id),n.execute("group-removed",t))}function w(e,t){const n=v(e);return n.groupInternal.addWindow(t),n}function b(e,t){e&&(e.groupInternal.removeWindow(t),y(e))}function _(e){const t=e.groupId,n=e.windowId,i=ir.get(n);if(!i)return;const r=I(i.API);tn(t)?b(r,i):!tn(r)||tn(t)?r.groupAPI.id!==t&&C(i,r.groupAPI.id,t):w(t,i.API.id)}function C(e,t,r){const o=e.API.id,s=i[t];b(s,e);const a=w(r,o);e.Events.handleGroupChanged(a.groupAPI,s.groupAPI),n.execute("window-moved",o,t,r)}function I(e){let t;return"string"===typeof e?t=e:tn(e)||(t=e.id),Object.values(i).find((e=>e.groupInternal.windows.filter((e=>e===t)).length))}return Object.keys(o).forEach((e=>{const t=o[e],n=t.API.groupId,i=t.API.id;nn(n)||w(n,i)})),ir.onRemoved((e=>{b(I(e.API),e)})),e.onCompositionChanged((e=>{_(e)})),e.onGroupHeaderVisibilityChanged((e=>{const t=c(e.windowId);if("undefined"!==typeof t){const n=i[t.id];-1===r&&(r=t.windows.length),r--,0===r&&(r=-1,n.groupInternal.handleGroupHeaderVisibilityChanged(e))}})),e.onGroupVisibilityChanged((e=>{const t=i[e.groupId];t&&t.groupInternal.handleGroupVisibilityChanged(e.visible)})),e.onGroupStateChanged((e=>{const t=i[e.groupId];"hibernated"===e.state?(t&&t.groupAPI&&t.groupInternal.handleGroupHibernateChanged(!0),n.execute("group-hibernated",e.groupId)):"resumed"===e.state&&(t&&t.groupAPI&&t.groupInternal.handleGroupHibernateChanged(!1),n.execute("group-resumed",t.groupAPI))})),{groupsAPI:{get my(){return s()},list:a,findGroupByWindow:c,waitForGroup:u,onGroupAdded:h,onGroupRemoved:p,hibernate:l,resume:d,onHibernated:g,onResumed:m},groupsEvents:{onWindowMoved:f}}},mr=(e,t,n,i,r,o)=>{const s=ki(),a=t;let c,u;ir.init(a);const d=new Promise(((t,s)=>{pr(e,a,n,i,r,o).then((n=>{u=n,c=gr(n),tr.init(n.executor,e,a),t()})).catch((e=>{const t="Timed out waiting for connection to Glue42 Enterprise: Error: ".concat(e.message);a.error(t,e),s(new Error(t))}))}));function l(){return d}function h(){const e=ir.getIfReady(u.my());return e?e.API:void 0}function p(e,t,n,i,r){return Xi.callbackifyPromise((()=>{if(nn(e))throw new Error("The window name is missing.");if(nn(t))throw new Error("The window URL is missing.");if(!tn(n)){const e=n;for(const t of["minHeight","maxHeight","minWidth","maxWidth","width","height","top","left"])if(t in e){const n=e[t];if(tn(n)){delete e[t];continue}if(!Qt(n)){const e="".concat(t," must be a number");throw new Error(e)}if(("width"===e[t]||"height"===e[t])&&n<=0){const e="".concat(t," must be a positive number");throw new Error(e)}}}return u.open(e,t,n)}),i,r)}function f(e,t,n){const i=ir.list,r=Object.keys(i).reduce(((t,n)=>{var r;const o=i[n];return(null===(r=null===o||void 0===o?void 0:o.API)||void 0===r?void 0:r.name)===e&&t.push(o.API),t}),[]);if(r[0])return"function"===typeof t&&t(r[0]),r[0];"function"===typeof n&&n("There is no window with name:"+e)}function g(e,t,n){const i=ir.list,r=Object.keys(i).reduce(((t,n)=>{const r=i[n];return"undefined"!==typeof r&&r.API.id===e&&t.push(r.API),t}),[]);if(r[0])return"function"===typeof t&&t(r[0]),r[0];"function"===typeof n&&n("There is no window with such id:"+e)}function m(e){const t=ir.list,n=Object.keys(t).map((e=>t[e].API));if("function"!==typeof e)return n;e(n)}function v(e){const t=h(),n=t?t.id:"";return lr.configure(n,e)}function y(e){return lr.autoArrange(e)}function w(e){return s.add("window-added",e)}function b(e){return s.add("window-removed",e)}function _(e){let t,n=!1;return d.then((()=>{n||(t=u.tabAttached(e))})),()=>{n=!0,t&&t()}}function C(e){let t,n=!1;return d.then((()=>{n||(t=u.tabDetached(e))})),()=>{n=!0,t&&t()}}function I(e){let t,n=!1;return d.then((()=>{n||(t=u.onWindowFrameColorChanged(e))})),()=>{n=!0,t&&t()}}function S(e){let t,n=!1;return d.then((()=>{n||(t=u.onWindowGotFocus(e))})),()=>{n=!0,t&&t()}}function k(e){let t,n=!1;return d.then((()=>{n||(t=u.onWindowLostFocus(e))})),()=>{n=!0,t&&t()}}function x(e){return u.onWindowsAutoArrangeChanged(e)}function T(e){let t,n=!1;return d.then((()=>{n||(t=u.onEvent(e))})),()=>{n=!0,t&&t()}}function A(e,t){return u.createFlydown(e,t)}function E(e,t){return u.showPopup(e,t)}function P(e){s.execute("window-added",e.API)}function M(e){s.execute("window-removed",e.API)}return ir.onReadyWindow(P),ir.onRemoved(M),{my:h,open:p,find:f,findById:g,list:m,ready:l,onWindowAdded:w,windowAdded:w,onWindowRemoved:b,windowRemoved:b,onTabAttached:_,onTabDetached:C,onWindowFrameColorChanged:I,onArrangementChanged:x,get groups(){return c.groupsAPI},onWindowGotFocus:S,onWindowLostFocus:k,onEvent:T,createFlydown:A,showPopup:E,configure:v,autoArrange:y}};class vr{constructor(){this.layouts=[]}removeWhere(e){this.layouts=this.layouts.filter(e)}removeAll(){this.layouts=[]}add(e){this.layouts.push(e)}get all(){return this.layouts}where(e){return this.layouts.filter(e)}first(e){return this.where(e)[0]}}var yr=new vr;const wr="T42.HC.GetSaveContext";class br{constructor(e,t,n,i){this.config=e,this.activitiesGetter=t,this.callbacks=n,this.logger=i,this.interop=e.agm,this.registerRequestMethods()}onSaveRequested(e){return this.callbacks.add("saveRequested",e)}isActivityOwner(){if("undefined"!==typeof htmlContainer){const e=htmlContainer.getContext();return e&&e._t42&&e._t42.activityIsOwner}const e=this.activitiesGetter();if(!e)return!1;if(!e.inActivity)return!1;const t=e.my.window,n=e.my.activity;return!(!n&&!t)&&n.owner.id===t.id}registerRequestMethods(){this.interop.register(wr,(e=>{const t=this.callbacks.execute("saveRequested",e);(null===t||void 0===t?void 0:t.length)>1&&this.logger.warn('Multiple subscriptions for "glue.layouts.onSaveRequested" - only the first one will be used');const n=t[0],i=this.config.autoSaveWindowContext;if("boolean"===typeof i&&i)return{autoSaveWindowContext:i};if(Array.isArray(i)&&i.length>0)return{autoSaveWindowContext:i};const r={windowContext:null===n||void 0===n?void 0:n.windowContext,activityContext:void 0};return this.isActivityOwner()&&(r.activityContext=null===n||void 0===n?void 0:n.activityContext),r}))}}function _r(e){if(!e)return e;if(Array.isArray(e))return e.map((e=>_r(e)));if("string"===typeof e||"number"===typeof e||"boolean"===typeof e)return e;const t={};return Object.keys(e).reduce(((t,n)=>{var i;const r=_r(e[n]);let o=n;return(null===(i=n[0])||void 0===i?void 0:i.toLowerCase())!==n[0]&&(o=n[0].toLowerCase()+n.substr(1)),t[o]=r,t}),t)}class Cr{constructor(e){this.name=e.name,this.type=e.type,this.components=e.components,this.context=e.context,this.metadata=e.metadata,this.version=e.version,this.displays=e.displays}}const Ir="T42.ACS.Command";class Sr{constructor(e,t,n,i){this.config=e,this.stream=t,this.callbacks=n,this.isRegisterMethodForLayoutModified=!1,this.appManager=e.appManager,this.provider=new br(e,e.activityGetter,n,i),t.subscribe()}async setDefaultGlobal(e){const t="SelectDefaultLayout";await this.invokeMethodCore(t,{name:e})}async clearDefaultGlobal(){const e="DeselectDefaultLayout";this.invokeMethodCore(e)}async getDefaultGlobal(){const e="GetDefaultLayout",t=(await this.invokeMethodCore(e)).returned;if(t)return this.isSlimMode()?t:this.list().find((e=>e.name===t.name&&"Global"===e.type))}ready(){return"fullWaitSnapshot"===this.config.mode?this.stream.gotSnapshot:this.stream.ready}save(e){return new Promise(((t,n)=>{var i,r;if(this.verifyNotSlimMode(),tn(e))return n(new Error("layout is required"));if(nn(e.name))return n(new Error("layout.name argument is required"));nn(e.type)&&(e.type="Global"),nn(e.activityId)||(e.type="Activity");const o={name:e.name,type:e.type,context:null!==(i=e.context)&&void 0!==i?i:{},metadata:null!==(r=e.metadata)&&void 0!==r?r:{},options:{}};if("Activity"===e.type){let t=e.activityId;if(!t){if(!this.appManager.myInstance.inActivity)return n(new Error("Current application is not in activity. Cannot save activity layout for it."));t=this.appManager.myInstance.activityId}o.activityId=t}else{if("Global"!==e.type)return n(new Error("layout type ".concat(e.type," is not supported")));Array.isArray(e.ignoreInstances)&&(o.options.ignoreInstances=e.ignoreInstances),Array.isArray(e.instances)&&(o.options.instances=e.instances),"boolean"===typeof e.setAsCurrent&&(o.options.setAsCurrent=e.setAsCurrent)}this.invokeMethodAndTrack("SaveLayout",o,t,n)}))}restore(e){return new Promise(((t,n)=>{var i,r,o;if(this.verifyNotSlimMode(),tn(e))return n(new Error("options argument is required"));if(nn(e.name))return n(new Error("options.name argument is required"));if(nn(e.type)&&(e.type="Global"),nn(e.activityIdToJoin)||(e.type="Activity"),"Activity"===e.type){if(tn(e.setActivityContext)&&(e.setActivityContext=!0),"boolean"!==typeof e.setActivityContext)return n(new Error("`setActivityContext` must hold a boolean value."));e.activityIdToJoin=null!==(i=e.activityIdToJoin)&&void 0!==i?i:this.appManager.myInstance.activityId}if(tn(e.closeRunningInstance)||(e.closeRunningInstances=e.closeRunningInstance),tn(e.closeRunningInstances)&&(e.closeRunningInstances=!0),!rn(e.closeRunningInstances))return n(new Error("`closeRunningInstances` must hold a boolean value."));if(tn(e.closeMe)&&(e.closeMe=e.closeRunningInstances),!rn(e.closeMe))return n(new Error("`closeMe` must hold a boolean value."));if(!tn(e.context)&&!Xt(e.context))return n(new Error("`context` must hold an object value."));if(!tn(e.timeout)&&"number"!==typeof e.timeout)return n(new Error("`timeout` must hold an number value."));e.context=null!==(r=e.context)&&void 0!==r?r:{};const s={activityToJoin:e.activityIdToJoin,setActivityContext:e.setActivityContext,ignoreActivityWindowTypes:e.ignoreActivityWindowTypes,reuseExistingWindows:e.reuseWindows,closeRunningInstances:e.closeRunningInstances,excludeFromClosing:e.closeMe?[]:[null===(o=this.appManager.myInstance)||void 0===o?void 0:o.id]},a={type:e.type,name:e.name,context:e.context,options:s};e.timeout&&(a.timeout=e.timeout),this.invokeMethodAndTrack("RestoreLayout",a,t,n,!0)}))}remove(e,t){return new Promise(((n,i)=>{if(this.verifyNotSlimMode(),!t)return i(new Error("name argument is required"));if(!e)return i(new Error("type argument is required"));const r={type:e,name:t};this.invokeMethodAndTrack("RemoveLayout",r,n,i)}))}list(){return this.verifyNotSlimMode(),yr.all}import(e,t){return new Promise(((n,i)=>{if(this.verifyNotSlimMode(),!tn(t)&&"merge"!==t&&"replace"!==t)return i(new Error("".concat(t,' is not supported - only "merge" and "replace"')));if(!Array.isArray(e))return i(new Error("layouts arguments is not an array"));const r={mode:t||"replace",layouts:e};this.invokeMethodAndTrack("ImportLayouts",r,n,i,!0)}))}export(e){return new Promise(((t,n)=>{const i=n=>{let i=this.getObjectValues(n.Layouts).map((e=>new Cr(_r(e))));e&&(i=i.filter((t=>t.type===e))),t(i)};this.invokeMethodAndTrack("ExportLayouts",{},i,n,!0)}))}rename(e,t){return new Promise(((n,i)=>{if(this.verifyNotSlimMode(),!e)return i(new Error("layout argument is required"));if(!e.name)return i(new Error("name argument is required"));if(!e.type)return i(new Error("type argument is required"));const r={type:e.type,oldName:e.name,newName:t};this.invokeMethodAndTrack("RenameLayout",r,n,i)}))}updateMetadata(e){return new Promise(((t,n)=>{if(!e)return n(new Error("layout argument is required"));if(!e.name)return n(new Error("name argument is required"));if(!e.type)return n(new Error("type argument is required"));if(!e.metadata)return n(new Error("metadata argument is required"));const i={name:e.name,type:e.type,metadata:e.metadata};this.invokeMethodAndTrack("UpdateMetadata",i,t,n,!0)}))}hibernate(e,t){return new Promise(((n,i)=>{if(!e)return i(new Error("name cannot be empty"));const r={name:e,type:"Global",context:(t=t||{}).context||{},metadata:t.metadata||{}};this.invokeMethodAndTrack("HibernateLayout",r,n,i,!0)}))}resume(e,t,n){return new Promise(((i,r)=>{if(!e)return r(new Error("name cannot be empty"));const o={name:e,type:"Global",context:t,...n};this.invokeMethodAndTrack("ResumeLayout",o,i,r,!0)}))}async getCurrentLayout(){const e="GetCurrentLayout";let t=(await this.invokeMethodCore(e)).returned.layout;if(t)return this.isSlimMode()||(t=this.list().find((e=>e.name===t.name&&e.type===t.type))),t}onAdded(e){const t=this.callbacks.add("added",e);return yr.all.length>0&&yr.all.forEach((t=>{try{e(t)}catch(n){}})),t}onRemoved(e){return this.callbacks.add("removed",e)}onChanged(e){return this.callbacks.add("changed",e)}onRestored(e){return this.callbacks.add("restored",e)}onRenamed(e){return this.callbacks.add("renamed",e)}onEvent(e){return this.stream.onEvent(e)}onSaveRequested(e){return this.provider.onSaveRequested(e)}onLayoutModified(e){return!1===this.isRegisterMethodForLayoutModified&&(this.isRegisterMethodForLayoutModified=!0,this.registerMethodForLayoutModified()),this.callbacks.add("layout-modified",e)}updateAppContextInCurrent(e){return new Promise(((t,n)=>{if(e&&"object"!==typeof e)return n(new Error("context must be an object"));const i={context:e=null!==e&&void 0!==e?e:{}};this.invokeMethodAndTrack("UpdateLayoutComponentContext",i,t,n,!0)}))}updateDefaultContext(e){return new Promise(((t,n)=>{if(e&&"object"!==typeof e)return n(new Error("context must be an object"));const i={context:e=null!==e&&void 0!==e?e:{}};this.invokeMethodAndTrack("UpdateDefaultContext",i,t,n,!0)}))}async get(e,t){const n=this.list().find((n=>n.name===e&&n.type===t));if(!n)throw new Error("cannot find layout with name=".concat(e," and type=").concat(t));return n}async getAll(e){return this.list().filter((t=>e===t.type))}async forceRefresh(){const e="RefreshLayouts";await this.invokeMethodCore(e)}isSlimMode(){return"slim"===this.config.mode}verifyNotSlimMode(){if(this.isSlimMode())throw Error("Operation not allowed in slim mode. Run in full mode.")}async registerMethodForLayoutModified(){await this.config.agm.register("T42.ACS.LayoutModified",((e,t)=>{this.callbacks.execute("layout-modified",e)}))}invokeMethodAndTrack(e,t,n,i,r){let o,s=r;const a=Xi.generateId();t.token=a;const c=()=>{s&&o&&n(o)},u=12e4;r||this.stream.waitFor(a,u).then((()=>{s=!0,c()})).catch((e=>{i(e)}));const d=t=>{if(!t.returned)return i(new Error("No result from method "+e));if(t.returned.status&&"Success"!==t.returned.status&&"PartialSuccess"!==t.returned.status){if("string"===typeof t.returned)return i(new Error(t.returned));if("object"===typeof t.returned)return t.returned.status&&t.returned.failed?i(new Error("".concat(t.returned.status,": ").concat(JSON.stringify(t.returned.failed)))):i(new Error(t.returned))}o=t.returned,c()};this.invokeMethodCore(e,t,"best",{methodResponseTimeoutMs:u}).then(d).catch((e=>i(e)))}async invokeMethodCore(e,t,n,i){return this.isCommandMethodPresent()?await this.config.agm.invoke(Ir,{command:e,data:t},n,i):await this.config.agm.invoke("T42.ACS.".concat(e),t,n,i)}getObjectValues(e){return e?Object.keys(e).map((t=>e[t])):[]}isCommandMethodPresent(){return this.config.agm.methods().some((e=>e.name===Ir))}}class kr{constructor(e,t){this.agm=e,this.callbacks=t,this.StreamName="T42.ACS.OnLayoutEvent",this.ready=new Promise(((e,t)=>{this.resolveReady=e,this.rejectReady=t})),this.gotSnapshot=new Promise(((e,t)=>{this.resolveGotSnapshot=e,this.rejectGotSnapshot=t}))}subscribe(e){const t=e=>this.getObjectValues(e).map((e=>_r(e)));this.checkForLayoutEventMethod()?this.agm.subscribe(this.StreamName,{waitTimeoutMs:1e4}).then((e=>{e.onData((e=>{const n=e.data;n.IsSnapshot&&this.resolveGotSnapshot(),this.addLayouts(t(n.OnLayoutAdded),n.IsSnapshot),this.removeLayouts(t(n.OnLayoutRemoved)),this.changeLayouts(t(n.OnLayoutChanged)),this.renameLayouts(t(n.OnLayoutRenamed)),this.restoredLayout(t(n.OnLayoutRestored)),this.callbacks.execute("streamEvent",n)})),e.onFailed((e=>{const t='Can not subscribe to "'.concat(this.StreamName,'" stream - ').concat(JSON.stringify(e));this.rejectReady(t),this.rejectGotSnapshot(t)})),this.resolveReady()})).catch((e=>{const t='Error subscribing to "'.concat(this.StreamName,'" stream - ').concat(JSON.stringify(e));this.rejectReady(t),this.rejectGotSnapshot(t)})):(e&&this.resolveReady(),setTimeout((()=>{this.subscribe(!0)}),500))}onEvent(e){return this.callbacks.add("streamEvent",e)}waitFor(e,t){return t||(t=3e4),new Promise(((n,i)=>{let r=!1;const o=this.onEvent((t=>{t.Token===e&&(r=!0,o(),n())}));setTimeout((()=>{r||i("timed out")}),t)}))}checkForLayoutEventMethod(){try{return-1!==this.agm.methods().map((e=>e.name)).indexOf(this.StreamName)}catch(e){return!1}}addLayouts(e,t){if(!e)return;const n=e=>{const t=new Cr(e);yr.add(t),this.callbacks.execute("added",t)};e.forEach((e=>{t&&yr.first((t=>this.compareLayouts(t,e)))||n(e)}))}removeLayouts(e){e&&e.forEach((e=>{yr.removeWhere((t=>!this.compareLayouts(t,e))),this.callbacks.execute("removed",e)}))}changeLayouts(e){e&&e.forEach((e=>{yr.removeWhere((t=>!this.compareLayouts(t,e))),yr.add(new Cr(e)),this.callbacks.execute("changed",e)}))}renameLayouts(e){e&&e.forEach((e=>{const t=yr.first((t=>this.compareLayouts(t,{type:e.type,name:e.oldName})));if(!t)throw Error("received rename event for unknown layout with type ".concat(e.type," and name ").concat(e.oldName));t.name=e.newName,this.callbacks.execute("renamed",t)}))}compareLayouts(e,t){return e.name===t.name&&e.type===t.type}getObjectValues(e){return e?Object.keys(e).map((t=>e[t])):[]}restoredLayout(e){e&&e.forEach((e=>{const t=yr.first((t=>this.compareLayouts(t,{type:e.type,name:e.name})));this.callbacks.execute("restored",t)}))}}function xr(e){if(!e.agm)throw Error("config.agm is required");if(!e.logger)throw Error("config.logger is required");e.mode=e.mode||"slim";const t=e.logger,n=ki();let i;return e.mode,i=new kr(e.agm,n),new Sr(e,i,n,t)}const Tr="T42.Displays.Command",Ar="T42.Displays.OnEvent";class Er{constructor(e,t){this._agm=e,this._logger=t,this._registry=ki(),this._registered=!1,this.all=async()=>(await this.callGD(Pr.GetAll,{})).map(this.decorateDisplay),this.get=async e=>{const t=await this.callGD(Pr.Get,{id:e});return this.decorateDisplay(t)},this.getPrimary=async()=>(await this.all()).find((e=>e.isPrimary)),this.capture=async e=>await this.callGD(Pr.Capture,{...e}),this.captureAll=async e=>await this.callGD(Pr.CaptureAll,{...e}),this.getMousePosition=async()=>await this.callGD(Pr.GetMousePosition),this.callGD=async(e,t)=>(await this._agm.invoke(Tr,{options:{...t},command:e})).returned.data,this.decorateDisplay=e=>{const t={...e,capture:t=>this.capture({id:e.id,size:t})},n=t.workArea;return n.x=n.left,n.y=t.workArea.top,t}}getByWindowId(e){return this.callGD(Pr.GetByWindowId,{id:e})}onDisplayChanged(e){return this.register(),this._registry.add("on-display-changed",e)}register(){this._registered||(this._registered=!0,this._agm.register(Ar,((e,t)=>{const n=e.event,i=e.data;"display-changed"===n?this._registry.execute("on-display-changed",i.displays.map(this.decorateDisplay)):this._logger.warn("unknown event - ".concat(n))})))}}var Pr;let Mr,Rr;!function(e){e.Capture="capture",e.CaptureAll="captureAll",e.GetAll="getAll",e.Get="get",e.GetByWindowId="getByWindowId",e.GetMousePosition="getMousePosition"}(Pr||(Pr={}));const Nr="T42.Channels.Announce";async function Or(e,t){Mr=e,"undefined"!==typeof window&&window.glue42gd&&(Rr=window.glue42gd.windowId),Rr&&(await Mr.register("T42.Channels.Command",(e=>{const n=e.command;if(!n)throw new Error("missing command argument");if("join"!==n){if("leave"!==n){if("get"===n)return{id:t.current()};throw new Error("unknown command ".concat(n))}t.leaveNoSelectorSwitch()}else{const n=e.channel;if(!n)throw new Error("missing argument id");t.joinNoSelectorSwitch(n)}})),await Mr.invoke("T42.Channels.Announce",{swId:Rr,instance:Mr.instance.instance}))}async function jr(e,t){Mr.invoke("T42.Channels.Announce",{swId:null!==t&&void 0!==t?t:Rr,command:"switchChannel",data:{newChannel:e}})}async function Dr(e){return(await Mr.invoke(Nr,{command:"getChannelsInfo",data:{filter:e}})).returned}async function Fr(e,t,n){await Mr.invoke(Nr,{command:e,data:{id:t,color:n}})}const Wr="___channel___",Lr="latest_fdc3_type";class Ur{constructor(e){this.contexts=e}subscribe(e){this.callback=e}subscribeFor(e,t){if(!this.isChannel(e))return Promise.reject(new Error("Channel with name: ".concat(e," doesn't exist!")));const n=this.createContextName(e);return this.contexts.subscribe(n,((e,n,i,r,o)=>{t(e.data,e,null===o||void 0===o?void 0:o.updaterId)}))}async switchChannel(e){this.unsubscribe();const t=this.createContextName(e);this.unsubscribeFunc=await this.contexts.subscribe(t,((e,t,n,i,r)=>{this.callback&&this.callback(e.data,e,null===r||void 0===r?void 0:r.updaterId)}))}leave(){this.callback&&this.callback({},void 0),this.unsubscribe()}all(){return this.contexts.all().filter((e=>e.startsWith(Wr))).map((e=>e.substr(Wr.length)))}async getContextData(e){if(!this.isChannel(e))throw new Error("A channel with name: ".concat(e," doesn't exist!"));const t=this.createContextName(e),n=await this.contexts.get(t);if(n[Lr]){const{latest_fdc3_type:e,...t}=n;return t}return n}updateChannel(e,t){const n=this.createContextName(e);return this.contexts.update(n,t)}updateData(e,t){const n=this.createContextName(e),i=this.getFDC3Type(t);if(this.contexts.setPathSupported){const e=Object.keys(t).map((e=>({path:"data."+e,value:t[e]})));return i&&e.push({path:Lr,value:i}),this.contexts.setPaths(n,e)}return i&&(t[Lr]=i),this.contexts.update(n,{data:t})}isChannel(e){return this.all().some((t=>t===e))}async remove(e){if(!this.isChannel(e))throw new Error("A channel with name: ".concat(e," doesn't exist!"));const t=this.createContextName(e);await this.contexts.destroy(t)}unsubscribe(){this.unsubscribeFunc&&this.unsubscribeFunc()}createContextName(e){return Wr+e}getFDC3Type(e){const t=Object.keys(e).filter((e=>0===e.indexOf("fdc3_")));if(0!==t.length){if(t.length>1)throw new Error("FDC3 does not support updating of multiple context keys");return t[0].split("_").slice(1).join("_")}}}class Br{constructor(e,t,n,i){this.shared=e,this.interop=t,this.getWindows=n,this.logger=i,this.subsKey="subs",this.changedKey="changed",this.isInitialJoin=!0,this.registry=ki(),this.pendingReplays={},this.shared.subscribe(this.handler.bind(this)),"undefined"!==typeof window&&"undefined"!==typeof window.glue42gd&&(this.currentContext=window.glue42gd.initialChannel,this.currentContext&&this.joinNoSelectorSwitch(this.currentContext))}subscribe(e){if("function"!==typeof e)throw new Error("Please provide the callback as a function!");const t=Xi.generateId();if(this.pendingReplays[t]=!0,this.lastUpdate){let n=Object.assign({},this.lastUpdate);setTimeout((()=>{this.pendingReplays[t]&&(this.lastUpdate&&(n=this.lastUpdate),e(n.context.data,n.context,n.updaterId)),delete this.pendingReplays[t]}),0)}const n=this.registry.add(this.subsKey,e);return()=>{this.pendingReplays[t]=!1,n()}}async subscribeFor(e,t){if("string"!==typeof e)throw new Error("Please provide the name as a string!");if("function"!==typeof t)throw new Error("Please provide the callback as a function!");return await this.shared.subscribeFor(e,t)}async publish(e,t){if("object"!==typeof e)throw new Error("Please provide the data as an object!");if(t){if("string"!==typeof t)throw new Error("Please provide the name as a string!");return this.shared.isChannel(t)?this.shared.updateData(t,e):Promise.reject(new Error("A channel with name: ".concat(t," doesn't exist!")))}if(!this.currentContext)throw new Error("Not joined to any channel!");return this.shared.updateData(this.currentContext,e)}all(){const e=this.shared.all();return Promise.resolve(e)}async list(){const e=await this.all();return await Promise.all(e.map((e=>this.get(e))))}get(e){return"string"!==typeof e?Promise.reject(new Error("Please provide the channel name as a string!")):this.shared.getContextData(e)}getMy(){return this.currentContext?this.get(this.currentContext):Promise.resolve(void 0)}async join(e,t){return t?jr(e,t):this.joinCore(e)}async joinNoSelectorSwitch(e){return this.joinCore(e,!1)}leave(e){return e?jr(void 0,e):this.leaveCore()}leaveNoSelectorSwitch(){return this.leaveCore(!1)}current(){return this.currentContext}my(){return this.current()}changed(e){if("function"!==typeof e)throw new Error("Please provide the callback as a function!");return this.current()&&setTimeout((()=>{e(this.current())}),0),this.registry.add(this.changedKey,e)}onChanged(e){return this.changed(e)}async add(e){if("object"!==typeof e)throw new Error("Please provide the info as an object!");if("undefined"===typeof e.name)throw new Error("info.name is missing!");if("string"!==typeof e.name)throw new Error("Please provide the info.name as a string!");if("undefined"===typeof e.meta)throw new Error("info.meta is missing!");if("object"!==typeof e.meta)throw new Error("Please provide the info.meta as an object!");if("undefined"===typeof e.meta.color)throw new Error("info.meta.color is missing!");if("string"!==typeof e.meta.color)throw new Error("Please provide the info.meta.color as a string!");const t={name:e.name,meta:e.meta||{},data:e.data||{}};return await this.shared.updateChannel(e.name,t),await Fr("addChannel",e.name,e.meta.color),t}async remove(e){if("string"!==typeof e)throw new Error("Please provide the channel name as a string!");await this.shared.remove(e),await Fr("removeChannel",e)}async getWindowsOnChannel(e){if("string"!==typeof e)throw new Error("Please provide the channel name as a string!");return(await this.getWindowsWithChannels({channels:[e]})).map((e=>e.window))}async getWindowsWithChannels(e){try{const t=await Dr(e),n=this.getWindows();if(null===t||void 0===t?void 0:t.windows)return t.windows.map((e=>({window:n.findById(e.windowId),channel:e.channel,application:e.application})))}catch(t){this.logger.error("Error getting all channel enabled windows. This method is available since Glue42 3.12",t)}return[]}handler(e,t,n){t||n?(this.lastUpdate={context:t,updaterId:n},this.pendingReplays={},this.registry.execute(this.subsKey,e,t,n)):this.lastUpdate=void 0}async joinCore(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if("string"!==typeof e)throw new Error("Please provide the channel name as a string!");if(!this.isInitialJoin&&e===this.currentContext)return;this.isInitialJoin=!1;const n=e=>this.shared.all().includes(e);if(!n(e)){const t=new Promise(((t,i)=>{const r=setInterval((()=>{n(e)&&(clearTimeout(o),clearInterval(r),t())}),100),o=setTimeout((()=>(clearInterval(r),i(new Error("A channel with name: ".concat(e," doesn't exist!"))))),3e3)}));await t}this.currentContext=e,this.lastUpdate=void 0,await this.shared.switchChannel(e),t&&jr(e),this.registry.execute(this.changedKey,e)}leaveCore(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.currentContext=void 0,this.registry.execute(this.changedKey,void 0),this.shared.leave(),e&&jr(),Promise.resolve()}}function Hr(e,t,n,i){const r=new Ur(e),o=new Br(r,t,n,i),s=Or(t,o);return{subscribe:o.subscribe.bind(o),subscribeFor:o.subscribeFor.bind(o),publish:o.publish.bind(o),all:o.all.bind(o),list:o.list.bind(o),get:o.get.bind(o),join:o.join.bind(o),leave:o.leave.bind(o),current:o.current.bind(o),my:o.my.bind(o),changed:o.changed.bind(o),onChanged:o.onChanged.bind(o),add:o.add.bind(o),remove:o.remove.bind(o),getWindowsOnChannel:o.getWindowsOnChannel.bind(o),getWindowsWithChannels:o.getWindowsWithChannels.bind(o),getMy:o.getMy.bind(o),ready:async()=>{await Promise.all([e.ready(),s])}}}const Gr="T42.Hotkeys.Command",qr="T42.Hotkeys.Invoke",zr="register",Vr="unregister",Jr="unregisterAll";class Kr{constructor(e){this.agm=e,this.registry=ki(),this.firstHotkey=!0,this.hotkeys=new Map}async register(e,t){if("undefined"===typeof e)throw new Error("Hotkey parameter missing");if("string"===typeof e)e={hotkey:e};else{if(!e.hotkey)throw new Error("Info's hotkey parameter missing");e={hotkey:e.hotkey,description:e.description}}const n=this.formatHotkey(e.hotkey);if(this.hotkeys.has(n))throw new Error("Shortcut for ".concat(n," already registered"));this.firstHotkey&&(this.firstHotkey=!1,await this.registerInvokeAGMMethod()),this.registry.add(n,t),await this.agm.invoke(Gr,{command:zr,hotkey:n,description:e.description}),this.hotkeys.set(n,e)}async unregister(e){if("undefined"===typeof e)throw new Error("hotkey parameter missing");if("string"!==typeof e)throw new Error("hotkey parameter must be string");const t=this.formatHotkey(e);await this.agm.invoke(Gr,{command:Vr,hotkey:t}),this.hotkeys.delete(t),this.registry.clearKey(t)}async unregisterAll(){await this.agm.invoke(Gr,{command:Jr}),this.hotkeys.clear(),this.registry.clear()}isRegistered(e){const t=this.formatHotkey(e);return this.hotkeys.has(t)}registerInvokeAGMMethod(){return this.agm.register(qr,(e=>{const t=e.key.toLowerCase(),n=this.hotkeys.get(t);this.registry.execute(t,n)}))}formatHotkey(e){if(e)return e.replace(/\s/g,"").toLowerCase()}}function $r(e){const t=new Kr(e);return{register:t.register.bind(t),unregister:t.unregister.bind(t),unregisterAll:t.unregisterAll.bind(t),isRegistered:t.isRegistered.bind(t),ready:()=>Promise.resolve()}}var Qr="6.2.2",Yr=e=>{function t(e,t,i){if("boolean"===typeof e&&!e)return;const r=n(e,t,i);return"undefined"!==typeof r?"object"===typeof e?(e.mode=r,e):{mode:r}:void 0}function n(e,t,i){return"object"===typeof e?n(e.mode,t,i).toString():"undefined"===typeof e?"boolean"!==typeof t||t?"boolean"===typeof t&&t?"undefined"===typeof i?t:i:"undefined"===typeof t?void 0:t:void 0:"boolean"===typeof e?e?"undefined"===typeof i?t:i:void 0:e}const i=!0,r="startOnly",o=!Xi.isNode()&&"trackMyTypeAndInitiatedFromMe",s="trackMyTypeAndInitiatedFromMe",a="slim",c=a,u="boolean"===typeof e.exposeAPI||"boolean"===typeof e.exposeGlue;return{layouts:t(e.layouts,a,c),activities:t(e.activities,o,s),appManager:t(e.appManager,i,r),windows:t(e.windows,!0,!0),channels:t(e.channels,!1,!0),displays:t(e.displays,!0,!0),exposeAPI:u||!0}};class Xr{constructor(e){this.options=e,this.callbacks=ki(),this.actions=e.actions,this.body=e.body,this.badge=e.badge,this.data=e.data,this.dir=e.dir,this.icon=e.icon,this.image=e.image,this.lang=e.lang,this.renotify=e.renotify,this.requireInteraction=e.requireInteraction,this.silent=e.silent,this.tag=e.tag,this.timestamp=e.timestamp,this.title=e.title}close(){throw new Error("Method not implemented.")}addEventListener(e,t,n){this.callbacks.add(e,t)}removeEventListener(e,t,n){}dispatchEvent(e){return this.callbacks.execute(e.type,e),!0}}class Zr{constructor(e,t){this.interop=e,this.onStreamEvent=t}onVisibilityChanged(e){return this.onStreamEvent("on-panel-visibility-changed",e)}toggle(){return this.interop.invoke("T42.Notifications.Show")}show(){return this.interop.invoke("T42.Notifications.Show",{show:!0})}hide(){return this.interop.invoke("T42.Notifications.Hide")}async isVisible(){return(await this.interop.invoke("T42.Notifications.Execute",{command:"isPanelVisible"})).returned.panelVisible}toAPI(){return{onVisibilityChanged:this.onVisibilityChanged.bind(this),toggle:this.toggle.bind(this),show:this.show.bind(this),hide:this.hide.bind(this),isVisible:this.isVisible.bind(this)}}}const eo=0;class to{constructor(e,t){this.interop=e,this.NotificationsSubscribeStream="T42.GNS.Subscribe.Notifications",this.NotificationsCounterStream="T42.Notifications.Counter",this.RaiseNotificationMethodName="T42.GNS.Publish.RaiseNotification",this.NotificationsExecuteMethod="T42.Notifications.Execute",this.methodsRegistered=!1,this.NOTIFICATIONS_CONFIGURE_METHOD_NAME="T42.Notifications.Configure",this.methodNameRoot="T42.Notifications.Handler-"+Xi.generateId(),this.nextId=0,this.notifications={},this.registry=ki(),this.subscribedForNotifications=!1,this.subscribedCounterStream=!1,this.subscriptionsCountForNotifications=0,this.subscriptionsCountForCounter=0,this.logger=t.subLogger("notifications"),this._panel=new Zr(e,this.onStreamEventCore.bind(this)),this.subscribeInternalEvents()}get maxActions(){return 2}get panel(){return this._panel.toAPI()}async raise(e){var t,n,i,r;if(this.validate(e),!this.methodsRegistered){const e=[];for(let t=eo;t{this.handleNotificationErrorEvent(c,e)}),1)}return c}async setFilter(e){return(await this.interop.invoke("T42.Notifications.Filter",e)).returned}async getFilter(){return(await this.interop.invoke("T42.Notifications.Filter")).returned}async configure(e){var t,n,i,r,o,s,a,c;if(!e||Array.isArray(e))throw new Error("Invalid options - should be an object.");if(0===Object.values(e).length)throw new Error("The argument must be a non-empty object.");if("undefined"!==typeof e.enable&&"boolean"!==typeof e.enable)throw new Error("Expected type of enabled - boolean.");if("undefined"!==typeof e.enableToasts&&"boolean"!==typeof e.enableToasts)throw new Error("Expected type of enableToasts - boolean.");if("undefined"!==typeof e.toastExpiry&&"number"!==typeof e.toastExpiry)throw new Error("Expected type of toastExpiry - number.");if(e.sourceFilter&&"object"!==typeof e.sourceFilter)throw new Error("Expected type of sourceFilter - object.");if((null===(t=e.sourceFilter)||void 0===t?void 0:t.allowed)&&!Array.isArray(null===(n=e.sourceFilter)||void 0===n?void 0:n.allowed))throw new Error("Expected type of sourceFilter.allowed - array.");if((null===(i=e.sourceFilter)||void 0===i?void 0:i.blocked)&&!Array.isArray(null===(r=e.sourceFilter)||void 0===r?void 0:r.blocked))throw new Error("Expected type of sourceFilter.blocked - array.");if(e.toasts&&"object"!==typeof e.toasts)throw new Error("Expected type of (options.toasts - object.");if((null===(o=e.toasts)||void 0===o?void 0:o.mode)&&"string"!==typeof e.toasts.mode)throw new Error("Expected type of (options.toasts.mode - string.");if((null===(s=e.toasts)||void 0===s?void 0:s.stackBy)&&"string"!==typeof e.toasts.stackBy)throw new Error("Expected type of (options.toasts.stackBy - string.");if(e.placement&&"object"!==typeof e.placement)throw new Error("Expected type of (options.placement - object.");if((null===(a=e.placement)||void 0===a?void 0:a.toasts)&&"string"!==typeof e.placement.toasts)throw new Error("Expected type of (options.placement.toasts - string.");if((null===(c=e.placement)||void 0===c?void 0:c.panel)&&"string"!==typeof e.placement.panel)throw new Error("Expected type of (options.placement.panel - string.");return(await this.interop.invoke(this.NOTIFICATIONS_CONFIGURE_METHOD_NAME,e)).returned}async getConfiguration(){return(await this.interop.invoke(this.NotificationsExecuteMethod,{command:"getConfiguration"})).returned}async list(){return(await this.interop.invoke(this.NotificationsExecuteMethod,{command:"list"})).returned.notifications}async updateData(e,t){const n=(e,t)=>"undefined"===typeof t?null:t,i={key:"data",value:{stringValue:JSON.stringify(t,n)}};return(await this.interop.invoke(this.NotificationsExecuteMethod,{command:"create-or-update-attribute",data:{id:e,attribute:i}})).returned}onRaised(e){return this.onStreamEventCore("on-notification-raised",e)}onStateChanged(e){return this.onStreamEventCore("on-state-changed",e)}onClosed(e){return this.onStreamEventCore("on-notification-closed",e)}onConfigurationChanged(e){if("function"!==typeof e)throw new Error("Please provide the callback as a function!");this.subscribe();const t=this.registry.add("on-configuration-changed",e);return()=>{t(),this.closeStreamSubscriptionIfNoNeeded()}}onCounterChanged(e){if("function"!==typeof e)throw new Error("Please provide the callback as a function!");this.subscribeForCounterStream();const t=this.registry.add("on-counter-changed",e);return()=>{t(),this.closeStreamCounterSubscriptionIfNoNeeded()}}onDataChanged(e){if("function"!==typeof e)throw new Error("Please provide the callback as a function!");this.subscribe();const t=this.registry.add("on-notification-data-changed",e);return()=>{t(),this.closeStreamSubscriptionIfNoNeeded()}}async clearAll(){await this.interop.invoke(this.NotificationsExecuteMethod,{command:"clearAll"})}async clearOld(){await this.interop.invoke(this.NotificationsExecuteMethod,{command:"clearAllOld"})}async clear(e){if(!e)throw new Error("The 'id' argument cannot be null or undefined");if("string"!==typeof e)throw new Error("The 'id' argument must be a string");await this.interop.invoke(this.NotificationsExecuteMethod,{command:"clear",data:{id:e}})}async click(e,t,n){await this.interop.invoke(this.NotificationsExecuteMethod,{command:"click",data:{id:e,action:t,options:n}})}async setState(e,t){if(!e)throw new Error("The 'id' argument cannot be null or undefined");if("string"!==typeof e)throw new Error("The 'id' argument must be a string");if(!t)throw new Error("The 'state' argument cannot be null or undefined");this.validateState(t),await this.interop.invoke(this.NotificationsExecuteMethod,{command:"updateState",data:{id:e,state:t}})}toAPI(){return{maxActions:this.maxActions,panel:this._panel.toAPI(),raise:this.raise.bind(this),setFilter:this.setFilter.bind(this),getFilter:this.getFilter.bind(this),configure:this.configure.bind(this),getConfiguration:this.getConfiguration.bind(this),list:this.list.bind(this),onRaised:this.onRaised.bind(this),onStateChanged:this.onStateChanged.bind(this),onClosed:this.onClosed.bind(this),onConfigurationChanged:this.onConfigurationChanged.bind(this),onCounterChanged:this.onCounterChanged.bind(this),onDataChanged:this.onDataChanged.bind(this),clearAll:this.clearAll.bind(this),clearOld:this.clearOld.bind(this),clear:this.clear.bind(this),click:this.click.bind(this),setState:this.setState.bind(this),updateData:this.updateData.bind(this)}}onStreamEventCore(e,t){if("function"!==typeof t)throw new Error("Please provide the callback as a function!");this.subscribe();const n=this.registry.add(e,t);return()=>{n(),this.closeStreamSubscriptionIfNoNeeded()}}handleOptions(e,t){if(e.icon&&(t.attributes=t.attributes||[],t.attributes.push({key:"icon",value:{stringValue:e.icon}})),e.data){t.attributes=t.attributes||[];const n=JSON.stringify(e.data);t.attributes.push({key:"data",value:{stringValue:n}})}"number"===typeof e.panelExpiry&&(t.attributes=t.attributes||[],t.attributes.push({key:"panelExpiry",value:{stringValue:e.panelExpiry.toString()}})),"number"===typeof e.toastExpiry&&(t.attributes=t.attributes||[],t.attributes.push({key:"toastExpiry",value:{stringValue:e.toastExpiry.toString()}}))}handleActions(e,t,n){var i,r,o;const s=e.actions.slice(0,this.maxActions);let a=eo;for(const c of s){const e={g42notificationId:t,g42action:c.action,g42interopMethod:null===(i=c.interop)||void 0===i?void 0:i.method,g42interopTarget:null===(r=c.interop)||void 0===r?void 0:r.target,g42interopArguments:JSON.stringify(null===(o=c.interop)||void 0===o?void 0:o.arguments)},s=Object.keys(e).map((t=>({name:t,value:{stringValue:e[t]}}))),u={name:"".concat(this.methodNameRoot,"_").concat(a),description:c.title,displayName:c.title,parameters:s};n.actions.push(u),a++}}validate(e){if(!e)throw new Error("invalid options - should be an object");if("object"!==typeof e)throw new Error("invalid options - should be an object");if(!e.title)throw new Error("invalid options - should have a title");if("string"!==typeof e.title)throw new Error("invalid options - title should be a string");if(e.severity&&"string"!==typeof e.severity)throw new Error("invalid options - severity should be a string");if(e.panelExpiry&&"number"!==typeof e.panelExpiry)throw new Error("invalid options - panelExpiry should be a number");if(e.toastExpiry&&"number"!==typeof e.toastExpiry)throw new Error("invalid options - toastExpiry should be a number");e.state&&this.validateState(e.state)}validateState(e){if("string"!==typeof e)throw new Error("The 'state' argument must be a string");if(!["Active","Acknowledged","Stale"].includes(e))throw new Error("The state argument: ".concat(e," is not valid!"))}subscribe(){var e=this;this.subscriptionsCountForNotifications++,this.subscribedForNotifications||(this.subscribedForNotifications=!0,this.logger.info('Attempting to subscribe to "'.concat(this.NotificationsSubscribeStream,'".')),this.interop.subscribe(this.NotificationsSubscribeStream,{arguments:{sendDeltaOnly:!0}}).then((t=>{this.subscriptionForNotifications=t,this.logger.info('Successfully subscribed to "'.concat(this.NotificationsSubscribeStream,'".')),t.onData((e=>{let{data:t}=e;this.handleData(t)})),t.onClosed((function(){e.subscribedForNotifications=!1;for(var t=arguments.length,n=new Array(t),i=0;i{this.subscribedForNotifications=!1,this.logger.error('Unable to subscribe to "'.concat(this.NotificationsSubscribeStream,'"'),e)})))}subscribeForCounterStream(){var e=this;this.subscriptionsCountForCounter++,this.subscribedCounterStream||(this.subscribedCounterStream=!0,this.logger.info('Attempting to subscribe to "'.concat(this.NotificationsCounterStream,'".')),this.interop.subscribe(this.NotificationsCounterStream,{arguments:{sendDeltaOnly:!0}}).then((t=>{this.subscriptionForCounter=t,this.logger.info('Successfully subscribed to "'.concat(this.NotificationsCounterStream,'".')),t.onData((e=>{let{data:t}=e;this.registry.execute("on-counter-changed",{count:t.count})})),t.onClosed((function(){e.subscribedCounterStream=!1;for(var t=arguments.length,n=new Array(t),i=0;i{this.subscribedCounterStream=!1,this.logger.error('Unable to subscribe to "'.concat(this.NotificationsCounterStream,'"'),e)})))}subscribeInternalEvents(){this.registry.add("on-notification-closed",(e=>{this.handleOnClosed(e)})),this.registry.add("on-notification-raised",(e=>{this.handleOnShow(e.id)}))}handleData(e){var t;try{"items"in e&&Array.isArray(e.items)?this.handleItemsData(e):"deltas"in e&&Array.isArray(e.deltas)&&this.handleDeltas(e),"configuration"in e&&"object"===typeof e.configuration&&(this.logger.info("Received configuration ".concat(JSON.stringify(e.configuration)," from the stream")),this.registry.execute("on-configuration-changed",e.configuration,e.configuration.allApplications)),"command"in e&&"string"===typeof e.command&&(this.logger.info('Received command "'.concat(null!==(t=e.command)&&void 0!==t?t:JSON.stringify(e),'" from the stream')),"showPanel"!==e.command&&"hidePanel"!==e.command||this.registry.execute("on-panel-visibility-changed","showPanel"===e.command))}catch(n){this.logger.error("Failed to parse data from the stream",n)}}handleItemsData(e){const t=e.items;this.logger.info("Received ".concat(t.length," notifications from the stream"));const n=t;if(e.isSnapshot)n.forEach((e=>{this.registry.execute("on-notification-raised",e)}));else{const e=n[0];"Closed"===e.state?this.registry.execute("on-notification-closed",{id:e.id}):this.registry.execute("on-notification-raised",e)}}handleDeltas(e){e.deltas.forEach((e=>{var t;const n=e.id,i=null!==(t=e.delta)&&void 0!==t?t:{};if("Closed"===i.state)this.registry.execute("on-notification-closed",{id:n,...i});else if(i.state)this.registry.execute("on-state-changed",{id:n},i.state);else if(i.attributes){const e=i.attributes.find((e=>"data"===e.key));e&&this.registry.execute("on-notification-data-changed",{id:n},JSON.parse(e.value.stringValue))}}))}handleOnClosed(e){const{notification:t,key:n}=this.getNotification(e);t&&(this.handleEvent(t,"close"),delete this.notifications[n])}handleOnShow(e){const{notification:t}=this.getNotification(e);t&&this.handleEvent(t,"show")}getNotification(e){let t,n;for(const i in this.notifications)if(this.notifications[i].id===e){t=this.notifications[i],n=i;break}return{notification:t,key:n}}handleNotificationEvent(e){const t=this.getGnsNotificationArgs(e);if("unknown"===t.event)return;const n=this.notifications[t.notificationId];n&&this.handleNotificationEventCore(n,t)}handleNotificationEventCore(e,t){switch(t.event){case"action":return this.handleNotificationActionEvent(e,t.notificationActionPayload);case"click":return this.handleNotificationClickEvent(e);case"close":return this.handleEvent(e,"close");case"error":return this.handleNotificationErrorEvent(e,t.error);case"show":return this.handleEvent(e,"show")}}handleNotificationActionEvent(e,t){const n={type:"onaction",action:t.g42action};e.onaction&&e.onaction(n),e.dispatchEvent(n)}handleNotificationClickEvent(e){const t={type:"onclick"};e.onclick&&e.onclick(t),e.dispatchEvent(t)}handleEvent(e,t){var n;const i={type:t};null===(n=e["on".concat(t)])||void 0===n||n.call(e,i),e.dispatchEvent(i)}handleNotificationErrorEvent(e,t){const n={type:"onerror",error:t};e.onerror&&e.onerror(n),e.dispatchEvent(n)}getGnsNotificationArgs(e){var t;let n;const i=null===(t=e.notification)||void 0===t?void 0:t.event;return n=i?{event:i,notificationId:e.notification.sourceNotificationId,notificationActionPayload:e}:this.getBackwardGnsNotificationArgs(e),n}getBackwardGnsNotificationArgs(e){var t;let n;return n=e.g42notificationId?{event:"action",notificationId:e.g42notificationId,notificationActionPayload:e}:(null===(t=e.notification)||void 0===t?void 0:t.sourceNotificationId)?{event:"click",notificationId:e.notification.sourceNotificationId,notificationActionPayload:e}:{event:"unknown",notificationId:void 0,notificationActionPayload:e},n}closeStreamSubscriptionIfNoNeeded(){this.subscriptionsCountForNotifications--,this.subscriptionForNotifications&&0===this.subscriptionsCountForNotifications&&(this.subscriptionForNotifications.close(),this.subscriptionForNotifications=void 0)}closeStreamCounterSubscriptionIfNoNeeded(){this.subscriptionsCountForCounter--,this.subscriptionForCounter&&0===this.subscriptionsCountForCounter&&(this.subscriptionForCounter.close(),this.subscriptionForCounter=void 0)}}const no="T42.Themes.Configuration";class io{constructor(e,t){this.contexts=e,this.interop=t,this.registry=ki(),this.isSubscribed=!1,this.getConfiguration()}async list(){if(await this.getConfiguration(),!this.getMethodName)throw new Error("not supported");return(await this.getAll()).returned.all}async getCurrent(){if(await this.getConfiguration(),!this.getMethodName)throw new Error("not supported");const e=await this.getAll();return e.returned.all.find((t=>t.name===e.returned.selected))}async select(e){if(await this.getConfiguration(),!this.setMethodName)throw new Error("not supported");await this.interop.invoke(this.setMethodName,{theme:e})}onChanged(e){return this.subscribe(),this.registry.add("changed",e)}async getConfiguration(){try{if(this.sharedContextName)return;const e=await this.interop.invoke(no);this.sharedContextName=e.returned.sharedContextName,this.getMethodName=e.returned.getThemesMethodName,this.setMethodName=e.returned.setThemesMethodName}catch(e){return}}async getAll(){return await this.getConfiguration(),await this.interop.invoke(this.getMethodName)}async subscribe(){await this.getConfiguration(),this.isSubscribed||(this.isSubscribed=!0,this.contexts.subscribe(this.sharedContextName,(e=>{e&&e.all&&e.selected&&this.registry.execute("changed",e.all.find((t=>t.name===e.selected)))})))}}function ro(e,t){const n=new io(e,t);return{list:n.list.bind(n),getCurrent:n.getCurrent.bind(n),select:n.select.bind(n),onChanged:n.onChanged.bind(n),ready:()=>Promise.resolve()}}const oo="Tick42.FDC3.Intents.",so="T42.Intents.Resolver.Control",ao=400,co=440,uo=6e4,lo=["applicationName","type"],ho="intentsResolver",po=6e4,fo=9e4,go=9e4,mo=(e,t,n)=>new Promise(((i,r)=>{const o=setTimeout((()=>{const e=n||"Promise timeout hit: ".concat(t);r(e)}),t);new Promise(e).then((e=>{clearTimeout(o),i(e)})).catch((e=>{clearTimeout(o),r(e)}))})),vo=(e,t,n)=>new Promise(((i,r)=>{let o=!0;const s=setTimeout((()=>{if(!o)return;o=!1;const e=n||"Promise timeout hit: ".concat(t);r(e)}),t);e().then((e=>{o&&(o=!1,clearTimeout(s),i(e))})).catch((e=>{o&&(o=!1,clearTimeout(s),r(e))}))})),yo=e=>{if("object"!==typeof e)return{isValid:!1,error:"Response object has invalid 'handler' key. Expected an object, got ".concat(typeof e)};const t=lo.filter((t=>!(t in e)));return t.length?{isValid:!1,error:"Handler in Response object does not provide compulsory keys: ".concat(t.join(", "))}:{isValid:!0,ok:e}},wo=e=>{if(Object.keys(e).some((e=>"intent"!==e&&"handler"!==e)))return{isValid:!1,error:"Response is not a valid object. Expected { intent: string, handler: IntentHandler }"};if("string"!==typeof e.intent)return{isValid:!1,error:"Response object has invalid 'intent' key. Expected a string, got ".concat(typeof e.intent)};const{isValid:t,error:n}=yo(e.handler);return t?{isValid:!0,ok:{intent:e.intent,handler:e.handler}}:{isValid:!1,error:n}},bo=e=>{if(!e.handler)return{isValid:!1,error:"Response is not a valid object. Expected { handler: IntentHandler }"};const{isValid:t,error:n}=yo(e.handler);return t?{isValid:!0,ok:{handler:e.handler}}:{isValid:!1,error:n}},_o=e=>{if(e&&"string"!==typeof e&&"object"!==typeof e)throw new Error('Please provide the intent target as one of the valid values: "reuse", "startNew", { app: string }, { instance: string } ')},Co=e=>{if(e){if("object"!==typeof e)throw new Error("Please provide the intent context as an object");if(e.type&&"string"!==typeof e.type)throw new Error("Please provide the intent context as an object with 'type' property as string");if(e.data&&"object"!==typeof e.data)throw new Error("Please provide the intent context as an object with 'data' property as object")}},Io=e=>{if(!e.applicationName)throw new Error("Please provide applicationName for handler ".concat(JSON.stringify(e)));if(!e.type)throw new Error("Please provide type for handler ".concat(JSON.stringify(e)));if("instance"===e.type&&!e.instanceId)throw new Error("Please provide instanceId for handler ".concat(JSON.stringify(e)))},So=e=>{if(e){if("number"!==typeof e)throw new Error("Please provide the timeout as a number");if(e<=0)throw new Error("Please provide the timeout as a positive number")}},ko=e=>{if(e&&"boolean"!==typeof e)throw new Error("Please provide waitUserResponseIndefinitely as a boolean")},xo=e=>{if(!e)throw new Error("Provide 'handlerFilter' with at least one filter criteria of the following: 'intent' | 'contextTypes' | 'resultType' | 'applicationNames'");const{title:t,openResolver:n,timeout:i,intent:r,contextTypes:o,resultType:s,applicationNames:a}=e;if("undefined"!==typeof t&&("string"!==typeof t||!t.length))throw new Error("Provide 'title' as a non empty string");if("undefined"!==typeof n&&"boolean"!==typeof n)throw new Error("Provide 'openResolver' prop as a boolean");if("undefined"!==typeof i&&("number"!==typeof i||i<=0))throw new Error("Provide 'timeout' prop as a positive number");if("undefined"!==typeof r&&("string"!==typeof r||!r.length))throw new Error("Provide 'intent' as a non empty string");if("undefined"!==typeof o&&(!Array.isArray(o)||o.some((e=>"string"!==typeof e))))throw new Error("Provide 'contextTypes' as an array of non empty strings");if("undefined"!==typeof s&&("string"!==typeof s||!s.length))throw new Error("Provide 'resultType' as a non empty string");if("undefined"!==typeof a&&(!Array.isArray(a)||a.some((e=>"string"!==typeof e))))throw new Error("Provide 'applicationNames' as an array of non empty strings");const c="Provide at least one filter criteria of the following: 'intent' | 'contextTypes' | 'resultType' | 'applicationNames'";if(!Object.keys(e).length)throw new Error(c);if(!r&&!s&&(!o||!o.length)&&(!a||!a.length))throw new Error(c)},To=(e,t)=>"raise"===e?wo(t):bo(t),Ao=e=>{Co(e.context),_o(e.target),So(e.timeout),ko(e.waitUserResponseIndefinitely),e.handlers&&e.handlers.forEach((e=>Io(e)))},Eo=e=>{if("object"!==typeof e)throw new Error("IntentHandler must be an object");if("string"!==typeof e.applicationName||!e.applicationName.length)throw new Error("Please provide 'applicationName' as a non-empty string");if("string"!==typeof e.type||!["app","instance"].includes(e.type))throw new Error("Invalid 'type' property. Expected 'app' | 'instance' got ".concat(e.type));if("undefined"!==typeof e.applicationTitle&&"string"!==typeof e.applicationTitle)throw new Error("Provide 'applicationTitle' as a string");if("undefined"!==typeof e.applicationDescription&&"string"!==typeof e.applicationDescription)throw new Error("Provide 'applicationDescription' as a string");if("undefined"!==typeof e.applicationIcon&&"string"!==typeof e.applicationIcon)throw new Error("Provide 'applicationIcon' as a string");if("undefined"!==typeof e.displayName&&"string"!==typeof e.displayName)throw new Error("Provide 'displayName' as a string");if("undefined"!==typeof e.contextTypes&&(!Array.isArray(e.contextTypes)||e.contextTypes.some((e=>"string"!==typeof e))))throw new Error("Provide 'contextTypes' as an array of non empty strings");if("undefined"!==typeof e.instanceId&&"string"!==typeof e.instanceId)throw new Error("Provide 'instanceId' as a string");if("undefined"!==typeof e.instanceTitle&&"string"!==typeof e.instanceTitle)throw new Error("Provide 'instanceTitle' as a string");if("undefined"!==typeof e.resultType&&"string"!==typeof e.resultType)throw new Error("Provide 'resultType' as a string")},Po=e=>{Object.keys(e).forEach((t=>{null!==e[t]&&void 0!==e[t]||delete e[t]}))};class Mo{constructor(e,t,n,i,r){this.interop=e,this.windows=t,this.logger=n,this.appManager=r,this.myIntents=new Set,this.intentsResolverResponsePromises={},this.useIntentsResolverUI=!0,this.unregisterIntentPromises=[],this.checkIfIntentsResolverIsEnabled(i,r)}async find(e){await Promise.all(this.unregisterIntentPromises);let t=await this.all();if("undefined"===typeof e)return t;if("string"===typeof e)return t.filter((t=>t.name===e));if("object"!==typeof e)throw new Error("Please provide the intentFilter as a string or an object!");if(e.contextType){const n=e.contextType.toLowerCase();t=t.filter((e=>e.handlers.some((e=>{var t;return null===(t=e.contextTypes)||void 0===t?void 0:t.some((e=>e.toLowerCase()===n))}))))}if(e.resultType){const n=e.resultType.toLowerCase();t=t.filter((e=>e.handlers.some((e=>{var t;return(null===(t=e.resultType)||void 0===t?void 0:t.toLowerCase())===n}))))}return e.name&&(t=t.filter((t=>t.name===e.name))),t}async raise(e){if("string"!==typeof e&&"object"!==typeof e||"object"===typeof e&&"string"!==typeof e.intent)throw new Error("Please provide the intent as a string or an object with an intent property!");"string"===typeof e&&(e={intent:e}),Ao(e),await Promise.all(this.unregisterIntentPromises);const t=e.timeout||fo,n={},i=this.coreRaiseIntent.bind(this,{request:e,resolverInstance:n,timeout:t});if(e.waitUserResponseIndefinitely)return i();const r=vo(i,t,"Timeout of ".concat(t,"ms hit for intent request ").concat(JSON.stringify(e)));return r.catch((()=>this.handleRaiseOnError(n.instanceId))),r}async all(){let e;await Promise.all(this.unregisterIntentPromises);try{const t=await this.interop.invoke("T42.ACS.GetApplications",{withIntentsInfo:!0});e=t.returned.applications}catch(a){return this.logger.error("Failed to get the applications!",a),[]}const t={},n=e.filter((e=>e.intents&&e.intents.length>0));for(const c of n)for(const e of c.intents){let n=t[e.name];n||(n={name:e.name,handlers:[]},t[e.name]=n);const i={applicationName:c.name,applicationTitle:c.title||"",applicationDescription:c.caption,displayName:e.displayName,contextTypes:e.contexts,applicationIcon:c.icon,type:"app",resultType:e.resultType};n.handlers.push(i)}const i=this.interop.servers(),r=i.map((e=>e.windowId)).filter((e=>"undefined"!==typeof e)),o="T42.Wnd.GetInfo";let s;if(this.interop.methods().some((e=>e.name===o)))try{const e=await this.interop.invoke(o,{ids:r});s=e.returned.windows}catch(a){}for(const c of i)await Promise.all(c.getMethods().filter((e=>e.name.startsWith(oo))).map((async n=>{const i=n.name.replace(oo,"");let r=t[i];r||(r={name:i,handlers:[]},t[i]=r);const o=n.flags.intent,a=e.find((e=>e.name===c.application));let u;a&&a.intents&&(u=a.intents.find((e=>e.name===i)));const d=await this.windowsIdToTitle(c.windowId,s),l={instanceId:c.instance,applicationName:c.application,applicationIcon:o.icon||(null===a||void 0===a?void 0:a.icon),applicationTitle:(null===a||void 0===a?void 0:a.title)||"",applicationDescription:o.description||(null===a||void 0===a?void 0:a.caption),displayName:o.displayName||(null===u||void 0===u?void 0:u.displayName),contextTypes:o.contextTypes||(null===u||void 0===u?void 0:u.contexts),instanceTitle:d,type:"instance",resultType:(null===u||void 0===u?void 0:u.resultType)||o.resultType};r.handlers.push(l)})));return Object.values(t)}addIntentListener(e,t){if("string"!==typeof e&&"object"!==typeof e||"object"===typeof e&&"string"!==typeof e.intent)throw new Error("Please provide the intent as a string or an object with an intent property!");if("function"!==typeof t)throw new Error("Please provide the handler as a function!");const n="string"===typeof e?e:e.intent,i="".concat(oo).concat(n);let r,o={};if(this.myIntents.has(n))throw new Error("Intent listener for intent ".concat(n," already registered!"));this.myIntents.add(n);const s={unsubscribe:()=>{this.myIntents.delete(n),r.then((()=>this.interop.unregister(i))).catch((e=>this.logger.trace("Unregistration of a method with name ".concat(i," failed with reason: ").concat(JSON.stringify(e)))))}};if("object"===typeof e){const{intent:t,...n}=e;o=n}return r=this.interop.register({name:i,flags:{intent:o}},(e=>{if(this.myIntents.has(n))return t(e)})),r.catch((e=>{this.myIntents.delete(n),this.logger.warn("Registration of a method with name ".concat(i," failed with reason: ").concat(JSON.stringify(e)))})),s}async register(e,t){if("string"!==typeof e&&"object"!==typeof e||"object"===typeof e&&"string"!==typeof e.intent)throw new Error("Please provide the intent as a string or an object with an intent property!");if("function"!==typeof t)throw new Error("Please provide the handler as a function!");await Promise.all(this.unregisterIntentPromises);const n="string"===typeof e?e:e.intent,i=this.buildInteropMethodName(n);let r={};if(this.myIntents.has(n))throw new Error("Intent listener for intent ".concat(n," already registered!"));if(this.myIntents.add(n),"object"===typeof e){const{intent:t,...n}=e;r=n}try{await this.interop.register({name:i,flags:{intent:r}},((e,i)=>{if(this.myIntents.has(n))return t(e,i)}))}catch(o){throw this.myIntents.delete(n),new Error("Registration of a method with name ".concat(i," failed with reason: ").concat(JSON.stringify(o)))}return{unsubscribe:()=>this.unsubscribeIntent(n)}}async filterHandlers(e){var t,n;if(xo(e),e.openResolver&&!this.useIntentsResolverUI)throw new Error("Cannot resolve 'filterHandlers' request using Intents Resolver UI because it's globally disabled");null===(t=this.logger)||void 0===t||t.trace("Received 'filterHandlers' command with request: ".concat(JSON.stringify(e)));const i=this.filterHandlersBy(await this.all(),e);if(!i||!i.length)return{handlers:[]};const{open:r,reason:o}=this.checkIfResolverShouldBeOpenedForFilterHandlers(i,e);if(!r)return null===(n=this.logger)||void 0===n||n.trace("Intent Resolver UI won't be used. Reason: ".concat(o)),{handlers:i};const s={instanceId:void 0},a=e.timeout||go;return{handlers:[await vo((()=>this.startResolverApp({request:e,resolverInstance:s,method:"filterHandlers"})),a,"Timeout of ".concat(a,"ms hit for 'filterHandlers' request with filter: ").concat(JSON.stringify(e)))]}}async getIntents(e){var t;this.logger.trace("Received 'getIntents' command with handler ".concat(JSON.stringify(e))),Eo(e);const n=await this.all();Po(e),null===(t=this.logger)||void 0===t||t.trace("Extracting valid intents for the passed handler");const i=this.extractIntentsWithInfoByHandler(n,e);return this.logger.trace("Returning intents for handler ".concat(JSON.stringify(e))),{intents:i}}filterHandlersBy(e,t){const n=e.filter((e=>{if(!t.intent||t.intent===e.name){if(t.resultType){const n=e.handlers.filter((e=>e.resultType&&e.resultType===t.resultType));if(!n.length)return;e.handlers=n}if(t.contextTypes){const n=e.handlers.filter((e=>{var n;return null===(n=t.contextTypes)||void 0===n?void 0:n.every((t=>{var n;return null===(n=e.contextTypes)||void 0===n?void 0:n.includes(t)}))}));if(!n.length)return;e.handlers=n}if(t.applicationNames){const n=e.handlers.filter((e=>{var n;return null===(n=t.applicationNames)||void 0===n?void 0:n.includes(e.applicationName)}));if(!n.length)return;e.handlers=n}return e}}));return n.map((e=>e.handlers)).flat(1)}async coreRaiseIntent(e){let{request:t,resolverInstance:n,timeout:i}=e;var r,o;const s=await this.get(t.intent);if("undefined"===typeof s)throw new Error("Intent ".concat(t.intent," not found."));const{open:a,reason:c}=this.checkIfResolverShouldBeOpenedForRaise(s,t);if(!a)return this.logger.trace("Intent Resolver UI won't be used. Reason: ".concat(c)),t.waitUserResponseIndefinitely?vo((()=>this.raiseIntent(t,i)),i,"Timeout of ".concat(i,"ms hit for raise to resolve")):this.raiseIntent(t,i);const u=await this.startResolverApp({request:t,method:"raise",resolverInstance:n});if(null===(r=this.logger)||void 0===r||r.trace("Raising intent to target handler: ".concat(JSON.stringify(u)," with timeout of ").concat(i)),t.waitUserResponseIndefinitely)return vo((()=>this.raiseIntentToTargetHandler(t,u,i)),i,"Timeout of ".concat(i,"ms hit for raise to resolve"));const d=await this.raiseIntentToTargetHandler(t,u,i);return null===(o=this.logger)||void 0===o||o.trace("Result from raise() method for intent ".concat(JSON.stringify(t.intent),": ").concat(JSON.stringify(d))),d}async get(e){return(await this.all()).find((t=>t.name===e))}async raiseIntent(e,t){const n=e.intent,i=await this.get(n);if("undefined"===typeof i)throw new Error("Intent ".concat(n," not found."));const r=e.handlers?this.findHandlerByFilter(e.handlers,{type:"app"}):this.findHandlerByFilter(i.handlers,{type:"app"}),o=e.handlers?this.findHandlerByFilter(e.handlers,{type:"instance"}):this.findHandlerByFilter(i.handlers,{type:"instance"});let s;if(e.target&&"reuse"!==e.target||(s=o||r),"startNew"===e.target&&(s=r),"object"===typeof e.target&&e.target.app&&(s=this.findHandlerByFilter(i.handlers,{app:e.target.app})),"object"===typeof e.target&&e.target.instance&&(s=this.findHandlerByFilter(i.handlers,{instance:e.target.instance,app:e.target.app})),!s)throw new Error("Can not raise intent for request ".concat(JSON.stringify(e)," - can not find intent handler!"));return await this.raiseIntentToTargetHandler(e,s,t)}async raiseIntentToTargetHandler(e,t,n){var i,r;null===(i=this.logger)||void 0===i||i.trace("Raising intent to target handler:".concat(JSON.stringify(t))),t.instanceId||(t.instanceId=await this.invokeStartApp(t.applicationName,e.context,e.options));const o="".concat(oo).concat(e.intent),s={methodResponseTimeoutMs:n?n+1e3:po,waitTimeoutMs:n?n+1e3:po},a=await this.interop.invoke(o,e.context,{instance:t.instanceId},s);return null===(r=this.logger)||void 0===r||r.trace("raiseIntent command completed. Returning result: ".concat(JSON.stringify(a))),{request:e,handler:{...t,type:"instance"},result:a.returned}}async startResolverApp(e){let{request:t,method:n,resolverInstance:i}=e;var r,o,s,a;null===(r=this.logger)||void 0===r||r.trace("Intents Resolver UI with app name ".concat(this.intentsResolverAppName," will be used for request: ").concat(JSON.stringify(t)));const c=await this.registerIntentResolverMethod(n);null===(o=this.logger)||void 0===o||o.trace("Registered interop method ".concat(c));const u=this.buildStartContext(n,t,c),d=await this.buildStartOptions();null===(s=this.logger)||void 0===s||s.trace("Starting Intents Resolver UI with context: ".concat(JSON.stringify(u)," and options: ").concat(JSON.stringify(d)));const l=await this.appManager.application(this.intentsResolverAppName).start(u,d);i.instanceId=l.id,null===(a=this.logger)||void 0===a||a.trace("Intents Resolver instance with id ".concat(l.id," opened")),this.subscribeOnInstanceStopped(l,n);const h=t.timeout||"raise"===n?fo:go;return this.createResponsePromise({intent:"raise"===n?t.intent:void 0,instanceId:l.id,responseMethodName:c,timeout:h,errorMsg:"Timeout of ".concat(h,"ms hit waiting for the user to choose a handler ").concat("raise"===n?"for intent ".concat(t.intent):"for '".concat(n,"' method with filter ").concat(JSON.stringify(t)))}),await this.handleInstanceResponse(l.id,n)}async windowsIdToTitle(e,t){var n,i;if("undefined"!==typeof t)return null===(n=t.find((t=>t.id===e)))||void 0===n?void 0:n.title;const r=null===(i=this.windows)||void 0===i?void 0:i.findById(e);return await(null===r||void 0===r?void 0:r.getTitle())}async handleInstanceResponse(e,t){var n,i;try{const r=await this.intentsResolverResponsePromises[e].promise;return null===(n=this.logger)||void 0===n||n.trace("Intent handler chosen ".concat("raise"===t?"for intent ".concat(r.intent," "):"",": ").concat(JSON.stringify(r.handler),". Stopping resolver instance with id ").concat(e)),this.stopResolverInstance(e),null===(i=this.logger)||void 0===i||i.trace("Instance with id ".concat(e," successfully stopped")),r.handler}catch(r){throw this.stopResolverInstance(e),new Error(r)}}async registerIntentResolverMethod(e){const t=so+Xi.generateId();return await this.interop.register(t,((t,n)=>this.resolverResponseHandler(t,n,e))),t}resolverResponseHandler(e,t,n){const{instance:i}=t,r=To(n,e);if(!r)return this.logger.trace("Intent Resolver instance with id ".concat(t.instance," sent invalid response. Error: ").concat(r.error)),this.intentsResolverResponsePromises[i].reject(r.error),void this.stopResolverInstance(i);const o=r.ok;this.intentsResolverResponsePromises[i].resolve(o),this.cleanUpIntentResolverPromise(i)}buildStartContext(e,t,n){const i={callerId:this.interop.instance.instance,methodName:n};return"raise"===e?{...i,intent:t}:{...i,handlerFilter:t}}async buildStartOptions(){const e=this.windows.my();if(!e)return;const t=await e.getBounds();return{top:(t.height-co)/2+t.top,left:(t.width-ao)/2+t.left,width:ao,height:co}}createResponsePromise(e){let{instanceId:t,intent:n,responseMethodName:i,timeout:r,errorMsg:o}=e,s=()=>{},a=()=>{};const c=mo(((e,t)=>{s=e,a=t}),r,o);this.intentsResolverResponsePromises[t]={intent:n,resolve:s,reject:a,promise:c,methodName:i}}async invokeStartApp(e,t,n){return(await this.interop.invoke("T42.ACS.StartApplication",{Name:e,options:n})).returned.Id}subscribeOnInstanceStopped(e,t){const{application:n}=e,i=n.onInstanceStopped((n=>{if(n.id!==e.id)return;const r=this.intentsResolverResponsePromises[n.id];if(!r)return i();const o="Cannot resolve ".concat("raise"===t?"raised intent ".concat(r.intent):"'".concat(t,"' method")," - User closed ").concat(e.application.name," app without choosing a handler");r.reject(o),this.cleanUpIntentResolverPromise(n.id),i()}))}async cleanUpIntentResolverPromise(e){const t=this.intentsResolverResponsePromises[e];t&&(this.interop.unregister(t.methodName).catch((e=>this.logger.warn(e))),delete this.intentsResolverResponsePromises[e])}handleRaiseOnError(e){e&&this.stopResolverInstance(e)}stopResolverInstance(e){const t=this.windows.findById(e);null===t||void 0===t||t.close().catch((e=>this.logger.error(e)))}checkIfIntentsResolverIsEnabled(e,t){var n,i,r,o,s;t?(this.useIntentsResolverUI="boolean"!==typeof(null===(n=e.intents)||void 0===n?void 0:n.enableIntentsResolverUI)||e.intents.enableIntentsResolverUI,this.intentsResolverAppName=null!==(r=null===(i=e.intents)||void 0===i?void 0:i.intentsResolverAppName)&&void 0!==r?r:ho,this.intentsResolverResponseTimeout=null!==(s=null===(o=e.intents)||void 0===o?void 0:o.methodResponseTimeoutMs)&&void 0!==s?s:uo):this.useIntentsResolverUI=!1}checkIfResolverShouldBeOpenedForRaise(e,t){const n=this.checkIfIntentsResolverShouldBeOpened();return n.open?this.checkIfIntentHasMoreThanOneHandler(e,t)?{open:!0}:{open:!1,reason:"Raised intent ".concat(e.name," has only one handler")}:n}checkIfResolverShouldBeOpenedForFilterHandlers(e,t){return 1===e.length?{open:!1,reason:"There's only one valid intent handler for filter ".concat(JSON.stringify(t))}:"boolean"!==typeof(null===t||void 0===t?void 0:t.openResolver)||t.openResolver?this.checkIfIntentsResolverShouldBeOpened():{open:!1,reason:"Intents resolver is disabled by IntentHandler filter"}}checkIfIntentsResolverShouldBeOpened(){return this.useIntentsResolverUI?this.appManager.application(this.intentsResolverAppName)?{open:!0}:{open:!1,reason:"Intent Resolver Application with name ".concat(this.intentsResolverAppName," not found.")}:{open:!1,reason:"Intent Resolver is disabled. Resolving to first found handler"}}checkIfIntentHasMoreThanOneHandler(e,t){return t.target?"reuse"===t.target?t.handlers?t.handlers.filter((e=>"instance"===e.type&&e.instanceId)).length>1||t.handlers.filter((e=>"app"===e.type)).length>1:e.handlers.filter((e=>"instance"===e.type&&e.instanceId)).length>1||e.handlers.filter((e=>"app"===e.type)).length>1:"startNew"===t.target?t.handlers?t.handlers.filter((e=>"app"===e.type)).length>1:e.handlers.filter((e=>"app"===e.type)).length>1:(t.target,!1):t.handlers?t.handlers.length>1:e.handlers.length>1}buildInteropMethodName(e){return"".concat(oo).concat(e)}clearUnregistrationPromise(e){this.unregisterIntentPromises=this.unregisterIntentPromises.filter((t=>t!==e))}unsubscribeIntent(e){this.myIntents.delete(e);const t=this.buildInteropMethodName(e),n=this.interop.unregister(t);this.unregisterIntentPromises.push(n),n.then((()=>{this.clearUnregistrationPromise(n)})).catch((e=>{this.logger.error("Unregistration of a method with name ".concat(t," failed with reason: "),e),this.clearUnregistrationPromise(n)}))}findHandlerByFilter(e,t){return t.type?e.find((e=>e.type===t.type)):t.instance?e.find((e=>t.app?e.applicationName===t.app&&e.instanceId===t.instance:e.instanceId===t.instance)):t.app?e.find((e=>e.applicationName===t.app)):void 0}extractIntentsWithInfoByHandler(e,t){const n=e.reduce(((e,n)=>(n.handlers.forEach((i=>{const r=Object.keys(t).every((e=>{var n;return"contextTypes"===e?null===(n=t.contextTypes)||void 0===n?void 0:n.every((e=>{var t;return null===(t=i.contextTypes)||void 0===t?void 0:t.includes(e)})):i[e]===t[e]}));if(!r)return;const o={intent:n.name,contextTypes:i.contextTypes,description:i.applicationDescription,displayName:i.displayName,icon:i.applicationIcon,resultType:i.resultType};e.push(o)})),e)),[]);return n}}class Ro{constructor(){this.initialized=!1,this.details=[],this.reject=()=>{},this.resolve=()=>{}}init(e){this.initialized=!0,this.addCall(e),this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}addCall(e){this.details.push({date:new Date,config:e})}done(e){this.resolve(e)}error(e){this.reject(e)}}class No{constructor(e,t){this.appName=e,this.interop=t,this.registry=ki(),this.interopMethodRegistered=!1}async get(e){return(await this.interop.invoke("T42.Prefs.Get",{app:null!==e&&void 0!==e?e:this.appName})).returned}async set(e,t){var n;this.verifyDataObject(e),await this.interop.invoke("T42.Prefs.Set",{app:null!==(n=null===t||void 0===t?void 0:t.app)&&void 0!==n?n:this.appName,data:e,merge:!1})}async setFor(e,t){return this.verifyApp(e),this.verifyDataObject(t),this.set(t,{app:e})}async update(e,t){var n;this.verifyDataObject(e),await this.interop.invoke("T42.Prefs.Set",{app:null!==(n=null===t||void 0===t?void 0:t.app)&&void 0!==n?n:this.appName,data:e,merge:!0})}async updateFor(e,t){return this.verifyApp(e),this.verifyDataObject(t),this.update(t,{app:e})}async clear(e){await this.interop.invoke("T42.Prefs.Set",{app:null!==e&&void 0!==e?e:this.appName,clear:!0})}async clearFor(e){this.verifyApp(e),await this.interop.invoke("T42.Prefs.Set",{app:e,clear:!0})}async getAll(){return(await this.interop.invoke("T42.Prefs.Get")).returned}async clearAll(){await this.interop.invoke("T42.Prefs.Set",{clear:!0})}subscribe(e){return this.verifyCallback(e),this.subscribeFor(this.appName,e)}subscribeFor(e,t){this.verifyApp(e),this.verifyCallback(t);const n=this.registry.add(e,t);return this.registerInteropIfNeeded().then((()=>{this.interop.invoke("T42.Prefs.Get",{app:e,subscribe:!0})})),()=>{n()}}async registerInteropIfNeeded(){this.interopMethodRegistered||(this.interopMethodRegistered=!0,await this.interop.register("T42.Prefs.Update",(e=>{this.registry.execute(e.app,e)})))}verifyApp(e){if(!e)throw new Error("app should be defined");if(!Yt(e))throw new Error("app should be a string")}verifyDataObject(e){if(!e)throw new Error("data should be defined");if(!Xt(e))throw new Error("data should be an object")}verifyCallback(e){if(!on(e))throw new Error("callback should be defined")}}class Oo{constructor(e,t){this.methodName=e,this.interop=t}async get(e){return(await this.invoke("get-cookies",{filter:e})).returned.cookies}async set(e){this.verifyCookieObject(e),await this.invoke("set-cookie",e)}async remove(e,t){if(!Yt(e))throw new Error("url should be a string");if(!Yt(t))throw new Error("name should be a string");await this.invoke("remove-cookie",{url:e,name:t})}invoke(e,t){return this.interop.invoke(this.methodName,{command:e,args:t})}verifyCookieObject(e){if(!e)throw new Error("cookie should be defined");if(!Xt(e))throw new Error("cookie should be an object")}}function jo(e,t){const n=new Oo(t,e);return{get:n.get.bind(n),remove:n.remove.bind(n),set:n.set.bind(n),ready:()=>Promise.resolve()}}class Do{constructor(e){this.config=e,this.glue42EventName="Glue42",this.events={notifyStarted:{name:"notifyStarted",handle:this.handleNotifyStarted.bind(this)},requestGlue:{name:"requestGlue",handle:this.handleRequestGlue.bind(this)}}}start(e){Xi.isNode()||(this.glue=e,this.wireCustomEventListener(),this.announceStarted())}wireCustomEventListener(){window.addEventListener(this.glue42EventName,(e=>{const t=e.detail;if(!t||!t.glue42)return;const n=t.glue42.event,i=this.events[n];i&&i.handle(t.glue42.message)}))}announceStarted(){this.send("start")}handleRequestGlue(){this.config.exposeAPI?this.send("requestGlueResponse",{glue:this.glue}):this.send("requestGlueResponse",{error:"Will not give access to the underlying Glue API, because it was explicitly denied upon initialization."})}handleNotifyStarted(){this.announceStarted()}send(e,t){const n={glue42:{event:e,message:t}},i=new CustomEvent(this.glue42EventName,{detail:n});window.dispatchEvent(i)}}const Fo=new Ro,Wo=async e=>{let t=!1;Fo.initialized||(t=!0,Fo.init(e));const n="undefined"!==typeof window&&window.glue42gd;if(n&&!t)return Fo.addCall(e),Fo.promise;const i=await Lo(e,n);return Fo.resolve(i),i},Lo=async(e,t)=>{const n="T42.GD.Execute",i=Xi.getGDMajorVersion(),r=Yr(e=e||{});let o,s,a,c,u;e.gateway=e.gateway||{};const d=new Do(r);function l(e){if(r.windows){const t=I("windows",e.logger,r.windows);return a=mr(e.agm,t,(()=>o),(()=>c),(()=>u),i),x(a),a}}function h(e){var n;if(r.activities&&ai.checkIsUsingGW3Implementation&&ai.checkIsUsingGW3Implementation(e.connection)){const c=I("activity",e.logger,r.activities);return s=new ai({connection:e.connection,contexts:e.contexts,agm:e.agm,logger:c,logLevel:"info",disableAutoAnnounce:!1,disposeRequestHandling:"exit",announcementInfo:null,windows:a,appManagerGetter:()=>o,mode:r.activities.mode,typesToTrack:r.activities.typesToTrack,activityId:null===(n=null===t||void 0===t?void 0:t.activityInfo)||void 0===n?void 0:n.activityId,gdMajorVersion:i}).api,x(s),s}}function p(e){if(!r.appManager)return;const t=I("appManager",e.logger,r.appManager);return o=$i({agm:e.agm,windows:a,logger:t,activities:s,mode:r.appManager.mode,gdMajorVersion:i}),x(o),o}function f(e){var t;if(!r.layouts)return;const n=I("layouts",e.logger,r.layouts),a=r.layouts,c=xr({agm:e.agm,appManager:o,activityGetter:()=>s,logger:n,mode:a.mode,autoSaveWindowContext:null!==(t=a.autoSaveWindowContext)&&void 0!==t&&t,gdMajorVersion:i});return x(c),c}function g(e){if(!r.channels)return;if(!e.contexts)return;const t=I("channels",e.logger,r.channels);return u=Hr(e.contexts,e.agm,(()=>a),t),x(u),u}function m(e){const t=$r(e.agm);return x(t),t}function v(t){const n=new Mo(t.agm,a,t.logger.subLogger("intents"),e,o);return x(n),n}function y(e){const t=new to(e.interop,e.logger).toAPI();return x(t),t}function w(e){if(r.displays){const t=I("displays",e.logger,r.displays);return c=new Er(e.agm,t),x(c),c}}function b(e){if(!e.contexts)return;const t=ro(e.contexts,e.interop);return x(t),t}function _(n){var i,r;const o=null!==(r=null!==(i=e.application)&&void 0!==i?i:null===t||void 0===t?void 0:t.application)&&void 0!==r?r:n.interop.instance.application,s=new No(o,n.interop);return x(s),s}function C(e){const t=jo(e.interop,n);return x(t),t}function I(e,t,n){const i=t.subLogger(e);if(n&&n.logger){const e=n.logger;e.console&&i.consoleLevel(e.console),e.publish&&i.publishLevel(e.publish)}return i}const S={libs:[{name:"windows",create:l},{name:"activities",create:h},{name:"appManager",create:p},{name:"layouts",create:f},{name:"channels",create:g},{name:"hotkeys",create:m},{name:"displays",create:w},{name:"intents",create:v},{name:"notifications",create:y},{name:"themes",create:b},{name:"prefs",create:_},{name:"cookies",create:C}],version:Qr,enrichGlue:e=>{e.config.activities=r.activities,e.config.windows=r.windows,e.config.appManager=r.appManager,e.config.layouts=r.layouts,e.config.channels=r.channels,e.config.displays=r.displays}},k=[];function x(e){k.push(e)}"undefined"!==typeof window&&(window.glueFactoryLog||(window.glueFactoryLog=[]),window.glueFactoryLog.push(k));const T=await Kt(e,S);return Array.isArray(null===e||void 0===e?void 0:e.libraries)&&e.libraries.length&&await Promise.all(e.libraries.map((t=>t(T,e)))),d.start(T),T};var Uo,Bo;Wo.coreVersion=Kt.version,Wo.version=Qr,Wo.calls=Fo;let Ho=Wo,Go=!0;if("undefined"!==typeof window){const e=window,t=null!==(Uo=e.iodesktop)&&void 0!==Uo?Uo:e.glue42gd;t&&t.autoInjected&&(Ho=null!==(Bo=e.IODesktop)&&void 0!==Bo?Bo:e.Glue,Go=!1),Go&&(e.Glue=Ho,e.IODesktop=Ho),delete e.IOBrowser,delete e.GlueCore}return Ho.default=Ho,Ho}()},888:(e,t,n)=>{"use strict";var i=n(47);function r(){}function o(){}o.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,o,s){if(s!==i){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:r};return n.PropTypes=n,n}},7:(e,t,n)=>{e.exports=n(888)()},47:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},463:(e,t,n)=>{"use strict";var i=n(791),r=n(296);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n