@factset/frontgate-js-sdk 7.1.2 → 7.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -1
- package/dist/lib/esnext/mixins/connection/FrontgateWSMixin.js +26 -22
- package/dist/lib/esnext/version.js +1 -1
- package/dist/lib/node/mixins/connection/FrontgateWSMixin.js +26 -22
- package/dist/lib/node/version.js +1 -1
- package/dist/lib/umd/mdg2.client.min.umd.js +1 -1
- package/dist/lib/umd/mdg2.client.umd.js +35 -32
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,30 @@
|
|
|
1
|
+
## <small>7.1.3 (2026-06-24)</small>
|
|
2
|
+
|
|
3
|
+
* fix(frontgate-ws-mixin): message lost between connected and authenticated [b20b034]
|
|
4
|
+
* fix(frontgate-ws-mixin): prepare authentication details once available [b2cde24]
|
|
5
|
+
* feat(repo): drop canary releases [3ce31b7]
|
|
6
|
+
* feat(repo): replace lerna with workspaces [1a451d1]
|
|
7
|
+
* chore(deps): lock file maintenance [f14e678]
|
|
8
|
+
* chore(deps): lock file maintenance [2110b1b]
|
|
9
|
+
* chore(deps): lock file maintenance [c48b42c]
|
|
10
|
+
* chore(deps): lock file maintenance [c0cc9f4]
|
|
11
|
+
* chore(deps): update actions/checkout action to v6.0.3 [34823e9]
|
|
12
|
+
* chore(deps): update actions/checkout action to v7 [a3b4a19]
|
|
13
|
+
* chore(deps): update dependency @babel/runtime to v8 [da9abd9]
|
|
14
|
+
* chore(deps): update dependency concurrently to v10 [cfb5542]
|
|
15
|
+
* chore(deps): update dependency nx to v23 [5fed1fa]
|
|
16
|
+
* chore(deps): update factset/waffle-actions action to v2.9.0 [b872147]
|
|
17
|
+
* chore(deps): update lockfile [cd9fff6]
|
|
18
|
+
* chore(deps): update shared-actions-public/sonarsource_sonarqube-scan-action action to v8.2.0 [e47d8c3]
|
|
19
|
+
* chore(deps): update yarn to v4.16.0 [f66761e]
|
|
20
|
+
* chore(deps): update yarn to v4.17.0 [8c4a62b]
|
|
21
|
+
|
|
1
22
|
## <small>7.1.2 (2026-05-26)</small>
|
|
2
23
|
|
|
3
|
-
* fix(endpoint-subscription): prevent late response from clobbering active subscription [75b39a8]
|
|
4
24
|
* chore(deps): lock file maintenance [862e3b9]
|
|
5
25
|
* chore(deps): update yarn to v4.15.0 [e0356c8]
|
|
26
|
+
* chore(release): update changelog for v7.1.2 [77637d8]
|
|
27
|
+
* fix(endpoint-subscription): prevent late response from clobbering active subscription [75b39a8]
|
|
6
28
|
* docs(client-usage): fix usage instructions [7f70434]
|
|
7
29
|
|
|
8
30
|
## <small>7.1.1 (2026-05-22)</small>
|
|
@@ -51,12 +51,12 @@ export const wsConnection = (conf) => {
|
|
|
51
51
|
if (msg.callbackType === 'job') {
|
|
52
52
|
const jobId = __classPrivateFieldGet(this, _instances, "m", _addJobIdToMessage).call(this, msg.message);
|
|
53
53
|
msg.callbackId = `${jobId}`;
|
|
54
|
-
__classPrivateFieldGet(this, _instances, "m", _prepareMessage).call(this, msg.message);
|
|
55
54
|
}
|
|
56
55
|
if (__classPrivateFieldGet(this, _instances, "a", _wsState_get) === 'connected' && msg.callbackType === 'response') {
|
|
57
56
|
void __classPrivateFieldGet(this, _instances, "m", _sendMessage).call(this, msg.message);
|
|
58
57
|
}
|
|
59
58
|
else if (__classPrivateFieldGet(this, _instances, "a", _wsState_get) === 'authenticated') {
|
|
59
|
+
__classPrivateFieldGet(this, _instances, "m", _prepareMessage).call(this, msg.message);
|
|
60
60
|
void __classPrivateFieldGet(this, _instances, "m", _sendMessage).call(this, msg.message);
|
|
61
61
|
}
|
|
62
62
|
else {
|
|
@@ -66,27 +66,6 @@ export const wsConnection = (conf) => {
|
|
|
66
66
|
__classPrivateFieldGet(this, _msgBuffer, "f").push(msg);
|
|
67
67
|
}
|
|
68
68
|
});
|
|
69
|
-
this.hooks.hook('frontgateConnection:authenticated', () => {
|
|
70
|
-
if (!__classPrivateFieldGet(this, _wsConf, "f")) {
|
|
71
|
-
throw new Error('No connection configuration set');
|
|
72
|
-
}
|
|
73
|
-
this.log(LogLevel.DEBUG, 'Draining message buffer');
|
|
74
|
-
while (__classPrivateFieldGet(this, _msgBuffer, "f").length > 0) {
|
|
75
|
-
const msg = __classPrivateFieldGet(this, _msgBuffer, "f").shift();
|
|
76
|
-
if (msg) {
|
|
77
|
-
__classPrivateFieldGet(this, _instances, "m", _prepareMessage).call(this, msg.message);
|
|
78
|
-
void __classPrivateFieldGet(this, _instances, "m", _sendMessage).call(this, msg.message);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
__classPrivateFieldSet(this, _keepAliveTimer, setInterval(() => {
|
|
82
|
-
this.log(LogLevel.DEBUG, 'Sending keepalive');
|
|
83
|
-
void this.hooks.callHook('frontgateConnection:sendMessage', {
|
|
84
|
-
message: __classPrivateFieldGet(this, _instances, "m", _getKeepAliveMessage).call(this),
|
|
85
|
-
callbackType: 'response',
|
|
86
|
-
callbackId: 'KeepAliveMessage',
|
|
87
|
-
});
|
|
88
|
-
}, (__classPrivateFieldGet(this, _wsConf, "f").maximumIdleIntervalInS / 2) * 1000), "f");
|
|
89
|
-
});
|
|
90
69
|
this.hooks.hook('reconnect:attempt', async () => {
|
|
91
70
|
clearInterval(__classPrivateFieldGet(this, _keepAliveTimer, "f"));
|
|
92
71
|
this.log(LogLevel.DEBUG, 'Reconnecting');
|
|
@@ -141,12 +120,37 @@ export const wsConnection = (conf) => {
|
|
|
141
120
|
__classPrivateFieldGet(this, _ws, "f").binaryType = 'arraybuffer';
|
|
142
121
|
let unhookOnFrontgateConnectionAuthenticated;
|
|
143
122
|
__classPrivateFieldGet(this, _ws, "f").onopen = () => {
|
|
123
|
+
const sendMessagesInBuffer = () => {
|
|
124
|
+
this.log(LogLevel.DEBUG, 'Draining message buffer');
|
|
125
|
+
while (__classPrivateFieldGet(this, _msgBuffer, "f").length > 0) {
|
|
126
|
+
const msg = __classPrivateFieldGet(this, _msgBuffer, "f").shift();
|
|
127
|
+
if (msg) {
|
|
128
|
+
__classPrivateFieldGet(this, _instances, "m", _prepareMessage).call(this, msg.message);
|
|
129
|
+
void __classPrivateFieldGet(this, _instances, "m", _sendMessage).call(this, msg.message);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
const startKeepAliveTimer = () => {
|
|
134
|
+
if (!__classPrivateFieldGet(this, _wsConf, "f")) {
|
|
135
|
+
throw new Error('No connection configuration set');
|
|
136
|
+
}
|
|
137
|
+
__classPrivateFieldSet(this, _keepAliveTimer, setInterval(() => {
|
|
138
|
+
this.log(LogLevel.DEBUG, 'Sending keepalive');
|
|
139
|
+
void this.hooks.callHook('frontgateConnection:sendMessage', {
|
|
140
|
+
message: __classPrivateFieldGet(this, _instances, "m", _getKeepAliveMessage).call(this),
|
|
141
|
+
callbackType: 'response',
|
|
142
|
+
callbackId: 'KeepAliveMessage',
|
|
143
|
+
});
|
|
144
|
+
}, (__classPrivateFieldGet(this, _wsConf, "f").maximumIdleIntervalInS / 2) * 1000), "f");
|
|
145
|
+
};
|
|
144
146
|
__classPrivateFieldSet(this, _wsStateInternal, 'connected', "f");
|
|
145
147
|
this.log(LogLevel.DEBUG, 'Connected');
|
|
146
148
|
void this.hooks.callHook('frontgateConnection:connected', __classPrivateFieldGet(this, _wsConf, "f")).catch(reject);
|
|
147
149
|
unhookOnFrontgateConnectionAuthenticated = this.hooks.hookOnce('frontgateConnection:authenticated', () => {
|
|
148
150
|
__classPrivateFieldSet(this, _wsStateInternal, 'authenticated', "f");
|
|
149
151
|
this.log(LogLevel.DEBUG, 'Authenticated');
|
|
152
|
+
sendMessagesInBuffer();
|
|
153
|
+
startKeepAliveTimer();
|
|
150
154
|
resolve();
|
|
151
155
|
});
|
|
152
156
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const PACKAGE_JSON = { version: '7.1.
|
|
1
|
+
export const PACKAGE_JSON = { version: '7.1.3', package: '@factset/frontgate-js-sdk' };
|
|
@@ -57,12 +57,12 @@ const wsConnection = (conf) => {
|
|
|
57
57
|
if (msg.callbackType === 'job') {
|
|
58
58
|
const jobId = __classPrivateFieldGet(this, _instances, "m", _addJobIdToMessage).call(this, msg.message);
|
|
59
59
|
msg.callbackId = `${jobId}`;
|
|
60
|
-
__classPrivateFieldGet(this, _instances, "m", _prepareMessage).call(this, msg.message);
|
|
61
60
|
}
|
|
62
61
|
if (__classPrivateFieldGet(this, _instances, "a", _wsState_get) === 'connected' && msg.callbackType === 'response') {
|
|
63
62
|
void __classPrivateFieldGet(this, _instances, "m", _sendMessage).call(this, msg.message);
|
|
64
63
|
}
|
|
65
64
|
else if (__classPrivateFieldGet(this, _instances, "a", _wsState_get) === 'authenticated') {
|
|
65
|
+
__classPrivateFieldGet(this, _instances, "m", _prepareMessage).call(this, msg.message);
|
|
66
66
|
void __classPrivateFieldGet(this, _instances, "m", _sendMessage).call(this, msg.message);
|
|
67
67
|
}
|
|
68
68
|
else {
|
|
@@ -72,27 +72,6 @@ const wsConnection = (conf) => {
|
|
|
72
72
|
__classPrivateFieldGet(this, _msgBuffer, "f").push(msg);
|
|
73
73
|
}
|
|
74
74
|
});
|
|
75
|
-
this.hooks.hook('frontgateConnection:authenticated', () => {
|
|
76
|
-
if (!__classPrivateFieldGet(this, _wsConf, "f")) {
|
|
77
|
-
throw new Error('No connection configuration set');
|
|
78
|
-
}
|
|
79
|
-
this.log(logger_1.LogLevel.DEBUG, 'Draining message buffer');
|
|
80
|
-
while (__classPrivateFieldGet(this, _msgBuffer, "f").length > 0) {
|
|
81
|
-
const msg = __classPrivateFieldGet(this, _msgBuffer, "f").shift();
|
|
82
|
-
if (msg) {
|
|
83
|
-
__classPrivateFieldGet(this, _instances, "m", _prepareMessage).call(this, msg.message);
|
|
84
|
-
void __classPrivateFieldGet(this, _instances, "m", _sendMessage).call(this, msg.message);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
__classPrivateFieldSet(this, _keepAliveTimer, setInterval(() => {
|
|
88
|
-
this.log(logger_1.LogLevel.DEBUG, 'Sending keepalive');
|
|
89
|
-
void this.hooks.callHook('frontgateConnection:sendMessage', {
|
|
90
|
-
message: __classPrivateFieldGet(this, _instances, "m", _getKeepAliveMessage).call(this),
|
|
91
|
-
callbackType: 'response',
|
|
92
|
-
callbackId: 'KeepAliveMessage',
|
|
93
|
-
});
|
|
94
|
-
}, (__classPrivateFieldGet(this, _wsConf, "f").maximumIdleIntervalInS / 2) * 1000), "f");
|
|
95
|
-
});
|
|
96
75
|
this.hooks.hook('reconnect:attempt', async () => {
|
|
97
76
|
clearInterval(__classPrivateFieldGet(this, _keepAliveTimer, "f"));
|
|
98
77
|
this.log(logger_1.LogLevel.DEBUG, 'Reconnecting');
|
|
@@ -147,12 +126,37 @@ const wsConnection = (conf) => {
|
|
|
147
126
|
__classPrivateFieldGet(this, _ws, "f").binaryType = 'arraybuffer';
|
|
148
127
|
let unhookOnFrontgateConnectionAuthenticated;
|
|
149
128
|
__classPrivateFieldGet(this, _ws, "f").onopen = () => {
|
|
129
|
+
const sendMessagesInBuffer = () => {
|
|
130
|
+
this.log(logger_1.LogLevel.DEBUG, 'Draining message buffer');
|
|
131
|
+
while (__classPrivateFieldGet(this, _msgBuffer, "f").length > 0) {
|
|
132
|
+
const msg = __classPrivateFieldGet(this, _msgBuffer, "f").shift();
|
|
133
|
+
if (msg) {
|
|
134
|
+
__classPrivateFieldGet(this, _instances, "m", _prepareMessage).call(this, msg.message);
|
|
135
|
+
void __classPrivateFieldGet(this, _instances, "m", _sendMessage).call(this, msg.message);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
const startKeepAliveTimer = () => {
|
|
140
|
+
if (!__classPrivateFieldGet(this, _wsConf, "f")) {
|
|
141
|
+
throw new Error('No connection configuration set');
|
|
142
|
+
}
|
|
143
|
+
__classPrivateFieldSet(this, _keepAliveTimer, setInterval(() => {
|
|
144
|
+
this.log(logger_1.LogLevel.DEBUG, 'Sending keepalive');
|
|
145
|
+
void this.hooks.callHook('frontgateConnection:sendMessage', {
|
|
146
|
+
message: __classPrivateFieldGet(this, _instances, "m", _getKeepAliveMessage).call(this),
|
|
147
|
+
callbackType: 'response',
|
|
148
|
+
callbackId: 'KeepAliveMessage',
|
|
149
|
+
});
|
|
150
|
+
}, (__classPrivateFieldGet(this, _wsConf, "f").maximumIdleIntervalInS / 2) * 1000), "f");
|
|
151
|
+
};
|
|
150
152
|
__classPrivateFieldSet(this, _wsStateInternal, 'connected', "f");
|
|
151
153
|
this.log(logger_1.LogLevel.DEBUG, 'Connected');
|
|
152
154
|
void this.hooks.callHook('frontgateConnection:connected', __classPrivateFieldGet(this, _wsConf, "f")).catch(reject);
|
|
153
155
|
unhookOnFrontgateConnectionAuthenticated = this.hooks.hookOnce('frontgateConnection:authenticated', () => {
|
|
154
156
|
__classPrivateFieldSet(this, _wsStateInternal, 'authenticated', "f");
|
|
155
157
|
this.log(logger_1.LogLevel.DEBUG, 'Authenticated');
|
|
158
|
+
sendMessagesInBuffer();
|
|
159
|
+
startKeepAliveTimer();
|
|
156
160
|
resolve();
|
|
157
161
|
});
|
|
158
162
|
};
|
package/dist/lib/node/version.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PACKAGE_JSON = void 0;
|
|
4
|
-
exports.PACKAGE_JSON = { version: '7.1.
|
|
4
|
+
exports.PACKAGE_JSON = { version: '7.1.3', package: '@factset/frontgate-js-sdk' };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.fdsg={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),c=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},l=((e,r,i)=>(i=e==null?{}:t(a(e)),c(r||!e||!e.__esModule?n(i,`default`,{value:e,enumerable:!0}):i,e)))(s(((e,t)=>{var n=function(e){return r(e)&&!i(e)};function r(e){return!!e&&typeof e==`object`}function i(e){var t=Object.prototype.toString.call(e);return t===`[object RegExp]`||t===`[object Date]`||o(e)}var a=typeof Symbol==`function`&&Symbol.for?Symbol.for(`react.element`):60103;function o(e){return e.$$typeof===a}function s(e){return Array.isArray(e)?[]:{}}function c(e,t){return t.clone!==!1&&t.isMergeableObject(e)?g(s(e),e,t):e}function l(e,t,n){return e.concat(t).map(function(e){return c(e,n)})}function u(e,t){if(!t.customMerge)return g;var n=t.customMerge(e);return typeof n==`function`?n:g}function d(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return Object.propertyIsEnumerable.call(e,t)}):[]}function f(e){return Object.keys(e).concat(d(e))}function p(e,t){try{return t in e}catch{return!1}}function m(e,t){return p(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function h(e,t,n){var r={};return n.isMergeableObject(e)&&f(e).forEach(function(t){r[t]=c(e[t],n)}),f(t).forEach(function(i){m(e,i)||(p(e,i)&&n.isMergeableObject(t[i])?r[i]=u(i,n)(e[i],t[i],n):r[i]=c(t[i],n))}),r}function g(e,t,r){r||={},r.arrayMerge=r.arrayMerge||l,r.isMergeableObject=r.isMergeableObject||n,r.cloneUnlessOtherwiseSpecified=c;var i=Array.isArray(t);return i===Array.isArray(e)?i?r.arrayMerge(e,t,r):h(e,t,r):c(t,r)}g.all=function(e,t){if(!Array.isArray(e))throw Error(`first argument should be an array`);return e.reduce(function(e,n){return g(e,n,t)},{})},t.exports=g}))());function u(e){return!!e&&typeof e==`object`}function d(...e){let t=e.filter(u);return l.default.all(t,{arrayMerge:(e,t)=>t})}function f(e){return e.replace(/[=]/g,``).replace(/\//g,`_`).replace(/\+/g,`-`)}var p=class{constructor(e){let t=f(e),n=Math.ceil(t.length/2);this.firstFactor=t.substring(0,n),this.secondFactor=t.substring(n)}getFirstFactor(){return this.firstFactor}getSecondFactor(){return this.secondFactor}},m=-2,h=-2,g=-1;function _(e){let t=[];if(e)for(let n=0;n<e.length;n++)t.push(e.readInt8(n));return t}var v=function(e){return e[e.DISCONNECTED=0]=`DISCONNECTED`,e[e.CONNECTING=1]=`CONNECTING`,e[e.AUTHENTICATED=2]=`AUTHENTICATED`,e[e.RECONNECTING=3]=`RECONNECTING`,e}({}),y=function(e){return e[e.production=40]=`production`,e[e.preproduction=35]=`preproduction`,e[e.show=30]=`show`,e[e.testing=20]=`testing`,e}({}),b=function(e){return e.production=`frontgate-eu.factsetdigitalsolutions.com`,e.show=`frontgate-eu.show.factsetdigitalsolutions.com`,e}({}),x=function(e){return e.MAXIMUM_STRING=`9223372036854775807`,e.MINIMUM_STRING=`-9223372036854775807`,e}({});function S(e){return e.toString().slice(0,-3)}var C={version:`7.1.2`,package:`@factset/frontgate-js-sdk`};function w(){let e=T();return{userAgent:e.userAgent??`unknown`,platform:`frontgate-js-sdk`,version:C.version,package:C.package,mobile:/Mobi/i.test(e.userAgent??`unknown`)}}function T(){return typeof navigator<`u`?navigator:typeof process<`u`?{userAgent:`node.js/io.js, ${process.version}`}:{userAgent:`unknown`}}var E=e=>{let t=[18,20,9],n=e=>{for(let n=e.length;n>e.length-16;n-=2){let r=parseInt(e.substring(n-2,n),16);r>127&&(r-=256),t.push(r)}};return n(e.traceId),t.push(17),n(e.spanId),t.push(24),t.push(0),t},D=async(e,t)=>new Promise((n,r)=>{setTimeout(()=>{r(t)},e)}),O=async(e,t,n)=>Promise.race([D(e,t),n]),k=e=>e+Math.random()*100,A=6e3,j=class e{constructor(){this.headerMembers={dataset:{id_dataset:0},id_job:0,flags_r2:0,resend_counter:0,timeout:A,authentication_identifiers:{id_application:0,id_user:0},cache_key:{value:[]},previous_response_hash:{value:[]},tracing:{value:{value:[]}}},this.flags=[]}static{this.PRICE_QUALITY={RLT:129,DLY:0,EOD:130}}static{this.FLAG_VALUE={add_subscription:1,no_merge:2,support_caching:4,permission_denied_response:8,internal_client:16,current_state_refresh:32,subscription_use_pull_permissions:64,allow_chunked_response:128}}getPtlMessage(){return this.headerMembers}getQuality(){return Object.keys(e.PRICE_QUALITY).find(t=>e.PRICE_QUALITY[t]===this.headerMembers.dataset.id_dataset)}setQuality(t){this.headerMembers.dataset.id_dataset=e.PRICE_QUALITY[t]}setIdApplication(e,t=!1){(this.headerMembers.authentication_identifiers.id_application===0||t)&&(this.headerMembers.authentication_identifiers.id_application=e)}setIdUser(e,t=!1){(this.headerMembers.authentication_identifiers.id_user===0||t)&&(this.headerMembers.authentication_identifiers.id_user=e)}setFlag(e,t=!0){let n=this.flags.indexOf(e);t&&n===-1&&this.flags.push(e),!t&&n>-1&&this.flags.splice(n,1),this.headerMembers.flags_r2=this.getFlagsValue()}getFlagsValue(){return this.flags.reduce((t,n)=>t+e.FLAG_VALUE[n],0)}isFlagValueSet(e){return this.flags.find(t=>t===e)!==void 0}setJobId(e){this.headerMembers.id_job=e}getJobId(){return this.headerMembers.id_job}countResend(){this.headerMembers.resend_counter++}getResendCounter(){return this.headerMembers.resend_counter}setTimeout(e){if(e>0){this.headerMembers.timeout=e;return}throw Error(`Attempted to set the timeout to "${e}". The timeout must be greater than 0.`)}getTimeout(){return this.headerMembers.timeout}setTracing(e){/^0+$/.test(e.traceId)||(this.headerMembers.tracing.value.value=E(e))}static getDataSet(t){return Object.prototype.hasOwnProperty.call(e.PRICE_QUALITY,t)?e.PRICE_QUALITY[t]:e.PRICE_QUALITY.DLY}},M=class{constructor(e,t){this.header=new j,this.coreMembers={Message:e,Version:t},this.members={}}getPtlMessage(){let e={header:this.header.getPtlMessage()};return d(this.coreMembers,e,this.members)}},N=class{constructor(e,t){this.token=e,this.maximumIdleInterval=t}toJson(){let e=w();return{Message:`AuthenticationByTokenRequest`,Version:1,token:{value:this.token},software:JSON.stringify(e),os:e.platform,feature_flags_wanted:{value:0},maximum_idle_interval:this.maximumIdleInterval,maximum_receivable_message_size:1048576,flags:0,cache_authentication_salt:{value:[]},cache_authentication_encrypted_secret:{encrypted_secret:[]}}}},P=class e extends M{static{this.NAME=`AuthenticationTokenRequest`}static{this.VERSION=6}static{this.LIFETIME_SECONDS_DEFAULT=-1}static{this.LIFETIME_SECONDS_MAXIMUM=-2}static{this.FLAG_SINGLE_USAGE=1}constructor(t,n,r,i,a=!1){super(e.NAME,e.VERSION),n&&this.header.setIdUser(n),r&&this.header.setIdApplication(r),i&&this.header.setTimeout(i),this.members.flags=a?e.FLAG_SINGLE_USAGE:0,this.members.lifetime_seconds_r2=t??e.LIFETIME_SECONDS_DEFAULT,this.header.setFlag(`no_merge`)}},F=class e extends M{static{this.NAME=`CancelSubscriptionRequest`}static{this.VERSION=6}constructor(t){super(e.NAME,e.VERSION),this.members.id_job_subscription=t}},ee=class e extends M{static{this.NAME=`HighLevelRequest`}static{this.VERSION=3}static{this.METHOD={GET:1,POST:2}}constructor(t,n,r={},i){super(e.NAME,e.VERSION),this.members.accept=`application/json`,this.members.content_type=`application/json`,this.members.body={value:[]},this.members.query=``,this.members.path=n,this.setMethod(t),Object.keys(r).length>0&&(t===`POST`?this.setBody(r):this.setQuery(r)),i&&this.setOptions(i)}setOptions(e){Object.hasOwnProperty.call(e,`accept`)&&(this.members.accept=e.accept),Object.hasOwnProperty.call(e,`content_type`)&&(this.members.content_type=e.content_type),Object.hasOwnProperty.call(e,`subscribe`)&&e.subscribe&&this.header.setFlag(`add_subscription`),Object.hasOwnProperty.call(e,`no_merge`)&&e.no_merge&&this.header.setFlag(`no_merge`),Object.hasOwnProperty.call(e,`allowChunkedResponse`)&&e.allowChunkedResponse&&this.header.setFlag(`allow_chunked_response`),Object.hasOwnProperty.call(e,`idApplication`)&&e.idApplication&&this.header.setIdApplication(e.idApplication),Object.hasOwnProperty.call(e,`idUser`)&&e.idUser&&this.header.setIdUser(e.idUser)}setMethod(t){let n=t===`POST`?e.METHOD.POST:e.METHOD.GET;this.members.method={value:n}}setBody(e={}){e instanceof Array?this.members.body={value:e}:this.members.body={value:JSON.stringify(e)}}getData(){return this.members.method.value===e.METHOD.POST?e.ptlToJsonData(this.members.body.value):this.members.query}setQuery(e={}){this.members.query=Object.keys(e).map(t=>`${encodeURIComponent(t)}=${encodeURIComponent(e[t])}`).join(`&`)}static ptlToJsonData(e){if(typeof e==`string`)return JSON.parse(e);if(e instanceof Array&&e.length>0){let t=``;return e.forEach(e=>{t+=String.fromCharCode(e)}),JSON.parse(t)}}},I=class e extends M{static{this.NAME=`HTTPProxyRequest`}static{this.VERSION=2}static{this.PROTOCOL={HTTP:1,HTTPS:2}}static{this.METHOD={GET:1,POST:2,OPTIONS:3,HEAD:4,PUT:5,DELETE:6,TRACE:7,CONNECT:8}}constructor(t,n,r){super(e.NAME,e.VERSION),this.members.request={headers:{values:[{key:`accept`,value:`application/json`},{key:`content-type`,value:`application/json`}]},protocol:{value:e.PROTOCOL.HTTPS},host:``,port:0,path:n,query:``,body:{value:[]}},this.setQuery(),this.setMethod(t),r&&this.setOptions(r)}setOptions(t){t.no_merge&&this.header.setFlag(`no_merge`),t.idApplication&&this.header.setIdApplication(t.idApplication),t.idUser&&this.header.setIdUser(t.idUser),t.protocol&&(this.members.request.protocol=t.protocol.toUpperCase()===`HTTP`?{value:e.PROTOCOL.HTTP}:{value:e.PROTOCOL.HTTPS}),t.method&&(this.members.request.method={value:e.METHOD[t.method]}),t.host&&(this.members.request.host=t.host),t.port&&(this.members.request.port=t.port),t.path&&(this.members.request.path=t.path),t.query&&(this.members.request.query=typeof t.query==`string`?t.query:Object.keys(t.query).map(e=>`${encodeURIComponent(e)}=${encodeURIComponent(t.query[e])}`).join(`&`)),t.body&&this.setBody(t.body),t.headers&&this.setHeaders(t.headers)}setHeaders(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n=e[t],r=this.members.request.headers.values.findIndex(e=>e.key===t);r!==-1&&this.members.request.headers.values.splice(r,1),this.members.request.headers.values.push({key:t,value:n})}}setQuery(){if(this.members.request.path.includes(`?`)){let e=this.members.request.path.split(`?`);this.members.request.path=e[0],this.members.request.query=e[1]}}setMethod(t){this.members.request.method={value:e.METHOD[t]}}setBody(e={}){return e instanceof Array||typeof e==`string`?this.members.request.body={value:e}:this.members.request.body={value:JSON.stringify(e)},this}getData(){if(this.members.request.body?.value)return ee.ptlToJsonData(this.members.request.body.value)}},L=class e{static{this.NAME=`PingRequest`}static{this.VERSION=3}constructor(){this._timeAtSender=Date.now()}getPtlMessage(){return{Message:e.NAME,Version:e.VERSION,time_at_sender:{microseconds:this._timeAtSender*1e3}}}resetTimeAtSender(){this._timeAtSender=Date.now()}get timeAtSender(){return this._timeAtSender}},R=class extends M{constructor(e){super(e.Message,e.version?e.version:e.Version),this._extractRequestAttributes(e)}_extractRequestAttributes(e){for(let t of Object.keys(this.coreMembers))delete e[t];this.members=(0,l.default)(this.members,e)}},z=class{constructor(e){this.raw=e}get msg(){return this.raw}get name(){return this.raw.Message}get jobId(){return this.raw.header.id_job}get serviceId(){return this.raw.header.id_service}isUpdateMessage(){return Object.hasOwnProperty.call(this.raw,`header`)?(Object.hasOwnProperty.call(this.raw.header,`id_service`)||Object.hasOwnProperty.call(this.raw.header,`id_job`))&&this.raw.Message.endsWith(`Update`):!1}isLossMessage(){return Object.hasOwnProperty.call(this.raw,`header`)?(Object.hasOwnProperty.call(this.raw.header,`id_service`)||Object.hasOwnProperty.call(this.raw.header,`id_job`))&&(this.raw.Message.endsWith(`LossMessage`)||this.raw.Message.endsWith(`Loss`)):!1}},B=class extends z{constructor(e){if(super(e),!this.raw.token.value.b64)throw Error(`Token not set in AuthenticationTokenResponse`);if(!this.raw.expiry.microseconds)throw Error(`Expiry not set in AuthenticationTokenResponse`);this.token=this.raw.token.value.b64,this.expiry=parseInt(S(this.raw.expiry.microseconds),10)}getToken(){return this.token}getExpiry(){return this.expiry}},V=class extends z{get reason(){return this.raw.details}get jobId(){return this.raw.id_job}},te=class extends z{constructor(e){super(e);try{this.responseData=JSON.parse(this.raw.body.value)}catch(e){throw Error(`Could not parse HighLevelResponse: ${e.message}`)}}get data(){return this.responseData.data}get meta(){return this.responseData.meta}get status(){return this.meta.status}get statusCode(){return this.status.code}},ne=class extends z{constructor(e){super(e);try{let e=this.raw.response.body.value,t=e.substr(0,1)===`{`;this.responseData=t?JSON.parse(e):e}catch(e){throw Error(`Could not parse HTTPProxyResponse: ${e}`)}this.responseInfo=this.raw.info,this.statusReason=this.raw.response.status_reason,this.statusCode=this.raw.response.status_code.value}get data(){return this.responseData}get meta(){return this.responseData.meta}get status(){return{code:this.statusCode,reason:this.statusReason}}},re=class e{static{this.NAME=`Foundation::PingResponse`}static{this.VERSION=2}constructor(t){if(t.Message!==e.NAME)throw Error(`Unsupported message=${t.Message}`);if(t.Version!==e.VERSION)throw Error(`Unsupported version=${t.Version} for message=${t.Message}`);this._timeReceivedResponse=Date.now(),this._timeAtSender=Number(S(t.time_at_sender.microseconds)),this._timeFromRequest=Number(S(t.time_from_request.microseconds))}get timeAtPeer(){return this._timeAtSender}get timeOfRequest(){return this._timeFromRequest}get timeOfResponse(){return this._timeReceivedResponse}get latencyTotal(){return this._timeReceivedResponse-this._timeFromRequest}get latencyAtPeer(){return this._timeAtSender-this._timeFromRequest}},ie=class extends z{constructor(e){if(super(e),typeof this.raw.body.value!=`string`)throw Error(`Incorrect response type in HighLevelUpdate`);try{this.responseData=JSON.parse(this.raw.body.value)}catch(e){throw Error(`Could not parse HighLevelUpdate: ${e.message}`)}}get data(){return this.responseData}},ae=8,H=function(e){return e[e.TRACE=10]=`TRACE`,e[e.DEBUG=20]=`DEBUG`,e[e.INFO=30]=`INFO`,e[e.WARN=40]=`WARN`,e[e.ERROR=50]=`ERROR`,e[e.FATAL=60]=`FATAL`,e[e.SILENT=100]=`SILENT`,e}({}),oe=class e{static{this.loggers={}}constructor(t=``){this.defaultLevel=40,this.noop=()=>null,this.name=t,this.level=this.defaultLevel,this.setDefaultLevelFromLocalStorage(),Object.assign(e.loggers,{[t]:this})}getName(){return this.name}setLevel(e){this.level=e}getLevel(){return typeof this.level==`number`&&isFinite(this.level)&&Math.floor(this.level)===this.level?this.level:this.defaultLevel}shouldLog(e){switch(this.getLevel()){case 100:return!1;case 60:return e===`fatal`;case 50:return e===`fatal`||e===`error`;case 40:return e===`fatal`||e===`error`||e===`warn`;case 30:return e===`fatal`||e===`error`||e===`warn`||e===`info`;case 20:return e===`fatal`||e===`error`||e===`warn`||e===`info`||e===`debug`;default:return!0}}setDefaultLevelFromLocalStorage(){let t;try{if(typeof localStorage!=`object`)return;let e=localStorage.getItem(`loglevel`);if(!e)return;t=e}catch{return}t&&this.setLevel(e.getLogLevel(t))}static getLogLevel(e){let t=e.toLowerCase();switch(t){case`silent`:return 100;case`fatal`:return 60;case`error`:return 50;case`warn`:return 40;case`info`:return 30;case`debug`:return 20;case`trace`:return 10;default:throw Error(`Invalid log level: ${t}`)}}static getLogger(t,n){if(Object.prototype.hasOwnProperty.call(e.loggers,t))return e.loggers[t];let r=new n(t);return e.loggers[t]=r,r}},se=class{static getLogLevel(e){let t=e.toLowerCase();switch(t){case`silent`:return H.SILENT;case`fatal`:return H.FATAL;case`error`:return H.ERROR;case`warn`:return H.WARN;case`info`:return H.INFO;case`debug`:return H.DEBUG;case`trace`:return H.TRACE;default:throw Error(`Invalid log level: ${t}`)}}},ce=class e extends oe{constructor(...e){super(...e),this.trace=this.getLogMethod(`trace`),this.debug=this.getLogMethod(`debug`),this.info=this.getLogMethod(`info`),this.warn=this.getLogMethod(`warn`),this.error=this.getLogMethod(`error`),this.fatal=this.getLogMethod(`fatal`)}setLevel(e){this.level=e,this.trace=this.getLogMethod(`trace`),this.debug=this.getLogMethod(`debug`),this.info=this.getLogMethod(`info`),this.warn=this.getLogMethod(`warn`),this.error=this.getLogMethod(`error`),this.fatal=this.getLogMethod(`fatal`)}getLogMethod(e){if(this.shouldLog(e)){let t=e===`debug`||e===`fatal`?`log`:e,n=this.name?`${this.name}: [${e.toUpperCase()}] `:`-----> [${e.toUpperCase()}] `;return Function.prototype.bind.call(console[t],console,n)}return this.noop}static getLogger(t=``){return super.getLogger(t,e)}},le={silent:0,fatal:1,error:2,warn:3,info:4,debug:5,trace:6},ue=class extends oe{constructor(e,t=``){super(t),this.name=t,this.logger=e,e.trace&&(this.trace=Function.prototype.bind.call(e.trace,e)),this.debug=Function.prototype.bind.call(e.debug,e),this.info=Function.prototype.bind.call(e.info,e),this.warn=Function.prototype.bind.call(e.warn,e),this.error=Function.prototype.bind.call(e.error,e),this.fatal=Function.prototype.bind.call(e.error,e)}setLevel(e){this.level=e,this.logger&&(this.logger.level=H[e].toLowerCase())}static getLogger(e=``){return Object.prototype.hasOwnProperty.call(oe.loggers,e)?oe.loggers[e]:null}},de=class e extends oe{constructor(...e){super(...e),this.trace=this.noop,this.debug=this.noop,this.info=this.noop,this.warn=this.noop,this.error=this.noop}static getLogger(t=``){return super.getLogger(t,e)}},fe=()=>$(e=>class extends e{async requestAuthenticationToken(e=30,t=0,n=0,r=this.defaultTimeoutInMs){let i={message:new P(e,t,n,r).getPtlMessage(),callbackType:`job`,callbackId:``};await this.hooks.callHook(`frontgateConnection:sendMessage`,i);let a=new Promise((e,t)=>{this.hooks.hookOnce(`frontgateConnection:response:${i.callbackId}`,n=>{if(!n.Message.includes(`AuthenticationTokenResponse`)){t(JSON.stringify(n));return}let r=new B(n);e({token:r.getToken(),expiry:r.getExpiry()})})});return O(r,`Request timeout reached (${r} ms) for ${i.message.Message}`,a)}async requestAuthenticationTokenForCookieTokenAuthentication(e=30,t=0,n=0,r=this.defaultTimeoutInMs){return new p((await this.requestAuthenticationToken(e,t,n,r)).token)}},{featureName:`AuthTokenRequest`,featureGroups:[`Misc`]}),pe=e=>$(t=>class extends t{async requestEndpoint(t,n,r,i,a=this.defaultTimeoutInMs){let o=new ee(t,n,r,{...i,allowChunkedResponse:!e?.disableChunkedResponse});o.header.setTimeout(a),e?.allowPermissionDeniedResponse&&o.header.setFlag(`permission_denied_response`);let s={message:o.getPtlMessage(),callbackType:`job`,callbackId:``};await this.hooks.callHook(`frontgateConnection:sendMessage`,s);let c=new Promise((e,t)=>{let n=[],r=()=>{this.hooks.hookOnce(`frontgateConnection:response:${s.callbackId}`,i=>{try{if(!i.Message.includes(`HighLevelResponse`)){t(JSON.stringify(i));return}if(this.#e(i))n.push({body:i.body?.value??``,processingTime:i.header?.processingTime??0}),r();else{n.push({body:i.body?.value??``,processingTime:i.header?.processingTime??0});let t=new te({...i,body:{value:n.map(e=>e.body).join(``)},header:{...i.header,processingTime:n.reduce((e,t)=>e+t.processingTime,0)}});e({response:t,data:t.data})}}catch(e){t(e)}})};r()});return O(a,`Request timeout reached (${a} ms) for ${s.message.Message}`,c)}#e(e){return((e.header?.flags??0)&8)==8}},{featureName:`EndpointRequest`,featureGroups:[`Misc`]}),me=null;typeof WebSocket<`u`?me=WebSocket:typeof MozWebSocket<`u`?me=MozWebSocket:typeof global<`u`?me=global.WebSocket||global.MozWebSocket:typeof window<`u`?me=window.WebSocket||window.MozWebSocket:typeof self<`u`&&(me=self.WebSocket||self.MozWebSocket);var he=me,ge=e=>$(t=>class extends t{#e;#t;#n=`disconnected`;#r;#i=0;#a;#o;get#s(){return this.#e&&this.#e.readyState<2?this.#n:`disconnected`}#c=0;#l=[];set conf(e){let t=this.#_(e);this.#c=t.messageBufferSize,this.#t=t}constructor(...t){super(...t),this.#a=-2,this.#o=-1,e&&(this.conf=e),this.hooks.hook(`frontgateConnection:setIdApp`,e=>{this.#a=e}),this.hooks.hook(`frontgateConnection:setIdUser`,e=>{this.#o=e}),this.hooks.hook(`frontgateConnection:sendMessage`,e=>{if(e.callbackType===`job`&&(e.callbackId=`${this.#m(e.message)}`,this.#h(e.message)),this.#s===`connected`&&e.callbackType===`response`)this.#f(e.message);else if(this.#s===`authenticated`)this.#f(e.message);else{if(this.#l.length>=this.#c)throw Error(`Message buffer is full`);this.#l.push(e)}}),this.hooks.hook(`frontgateConnection:authenticated`,()=>{if(!this.#t)throw Error(`No connection configuration set`);for(this.log(H.DEBUG,`Draining message buffer`);this.#l.length>0;){let e=this.#l.shift();e&&(this.#h(e.message),this.#f(e.message))}this.#r=setInterval(()=>{this.log(H.DEBUG,`Sending keepalive`),this.hooks.callHook(`frontgateConnection:sendMessage`,{message:this.#d(),callbackType:`response`,callbackId:`KeepAliveMessage`})},this.#t.maximumIdleIntervalInS/2*1e3)}),this.hooks.hook(`reconnect:attempt`,async()=>{clearInterval(this.#r),this.log(H.DEBUG,`Reconnecting`),await this.hooks.callHook(`frontgateConnection:reset`);try{await this.connect(),await this.hooks.callHook(`reconnect:success`)}catch(e){this.log(H.ERROR,`Reconnect failed`,e),await this.hooks.callHook(`reconnect:failed`,e)}})}async connect(){if(!this.#t)throw Error(`No connection configuration set`);if(this.#s!==`disconnected`)throw Error(`Client is already connected or is connecting right now`);let{host:e,port:t,tls:n,pathPrefix:r}=this.#t;this.#n=`connecting`;let i=`${n?`wss`:`ws`}://${e}:${t}${r??``}/ws`,a={encoding:`jsjson-v2`};await this.hooks.callHook(`frontgateConnection:afterSetEncoding`,a);let[o,s]=a.encoding.split(`-`),c={url:i,subProtocols:[`${s?`${s}.`:``}ws-${o}.mdgms.com`]};try{await this.hooks.callHook(`frontgateConnection:beforeConnect`,c)}catch(e){throw this.#n=`disconnected`,e}this.log(H.DEBUG,`Connecting to ${c.url} with subprotocols ${c.subProtocols}`);let l=new Promise((e,t)=>{if(!this.#t)throw Error(`No connection configuration set`);this.#t.wsClientOptions&&typeof window>`u`?this.#e=new he(c.url,c.subProtocols,this.#t.wsClientOptions):this.#e=new he(c.url,c.subProtocols),this.#e.binaryType=`arraybuffer`;let n;this.#e.onopen=()=>{this.#n=`connected`,this.log(H.DEBUG,`Connected`),this.hooks.callHook(`frontgateConnection:connected`,this.#t).catch(t),n=this.hooks.hookOnce(`frontgateConnection:authenticated`,()=>{this.#n=`authenticated`,this.log(H.DEBUG,`Authenticated`),e()})},this.#e.onclose=e=>{n?.(),this.log(H.DEBUG,`Disconnected`,e),this.#n===`connecting`||this.#n===`connected`?t(JSON.stringify(e)):this.hooks.callHook(`frontgateConnection:disconnected`,e),clearInterval(this.#r),this.#n=`disconnected`},this.#e.onerror=e=>{n?.(),this.log(H.ERROR,`Error:`,e),this.hooks.callHook(`frontgateConnection:error`,e),(this.#n===`connecting`||this.#n===`connected`)&&t(Error(`Websocket error`)),clearInterval(this.#r),this.#n=`disconnected`},this.#e.onmessage=e=>{let{data:t}=e;this.log(H.DEBUG,`Received data:`,t);let n={msg:t};this.hooks.callHook(`frontgateConnection:afterReceiveMessage`,n).then(()=>{this.log(H.DEBUG,`Received message`,n.msg);let e=n.msg.toString(`utf-8`),t=JSON.parse(e);if(this.hooks.callHook(`frontgateConnection:message`,t),t.Message===`Foundation::DisconnectionMessage`){this.#e?.close(),this.hooks.callHook(`frontgateConnection:disconnected`,t);return}this.#p(t)})}}),u=`Timeout reached (${this.defaultTimeoutInMs} ms) for connection to ${i}`;return O(this.defaultTimeoutInMs,u,l)}async disconnect(){return new Promise(e=>{this.#f(this.#u()),this.hooks.hookOnce(`frontgateConnection:disconnected`,()=>{this.#e?.close(),e()})})}#u(){return{Message:`Foundation::DisconnectionMessage`,Version:3,reason:{value:64},details:`client shutdown`}}#d(){return{Message:`KeepAliveMessage`,Version:2}}async#f(e){await this.hooks.callHook(`frontgateConnection:beforeSerializeMessage`,e);let t={msg:JSON.stringify(e)};await this.hooks.callHook(`frontgateConnection:beforeSendMessage`,t),this.log(H.DEBUG,`Sending message:`,e),this.log(H.TRACE,`Sending data:`,t.msg);try{this.#e?.send(t.msg)}catch(t){let n=this.#g(t,e);this.#p(n.msg)}}#p(e){if(e.header?.id_job!==void 0){this.hooks.callHook(`frontgateConnection:response:${e.header.id_job}`,e);return}if(e.header?.id_service!==void 0&&e.id_notation!==void 0){this.hooks.callHook(`frontgateConnection:response:${e.header.id_service}-${e.id_notation}`,e);return}if(e.id_job!==void 0){this.hooks.callHook(`frontgateConnection:response:${e.id_job}`,e);return}typeof e.Message==`string`&&this.hooks.callHook(`frontgateConnection:response:${e.Message.replace(`Foundation::`,``)}`,e)}#m(e){this.#i+=1;let t=this.#i;return e.header={...e.header,id_job:t},this.#i}#h(e){e.header||={authentication_identifiers:{id_application:void 0,id_user:void 0}},e.header.authentication_identifiers||(e.header={...e.header,authentication_identifiers:{id_application:void 0,id_user:void 0}}),e.header.authentication_identifiers.id_application||=this.#a,e.header.authentication_identifiers.id_user||=this.#o}#g(e,t){return new V({Message:`Foundation::ErrorResponse`,Version:1,id_job:t.header?.id_job,reason:8,details:e})}#_(e){let t=e.maximumIdleIntervalInS??60,n=e.maximumIdleInterval??t*1e6;return{...e,payloadContent:e.payloadContent??`foundation`,maximumIdleIntervalInS:t,maximumIdleInterval:n,tls:e.tls??!0,messageBufferSize:e.messageBufferSize??512}}isConnected(){return this.#s===`authenticated`}isDisconnected(){return this.#n!==`authenticated`}isReadyToConnect(){return this.#s===`disconnected`}},{featureName:`WSConnection`,disabledFeatureGroups:[`Connection`]}),_e=(e,t)=>(t&&e.setLevel(t),$(t=>class extends t{constructor(...t){super(...t),this.logger=e}},{featureName:`Logger`,featureGroups:[`Misc`]})),U=Uint8Array,W=Uint16Array,ve=Int32Array,ye=new U([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),be=new U([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),xe=new U([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Se=function(e,t){for(var n=new W(31),r=0;r<31;++r)n[r]=t+=1<<e[r-1];for(var i=new ve(n[30]),r=1;r<30;++r)for(var a=n[r];a<n[r+1];++a)i[a]=a-n[r]<<5|r;return{b:n,r:i}},Ce=Se(ye,2),we=Ce.b,Te=Ce.r;we[28]=258,Te[258]=28;for(var Ee=Se(be,0),De=Ee.b,Oe=Ee.r,ke=new W(32768),G=0;G<32768;++G){var K=(G&43690)>>1|(G&21845)<<1;K=(K&52428)>>2|(K&13107)<<2,K=(K&61680)>>4|(K&3855)<<4,ke[G]=((K&65280)>>8|(K&255)<<8)>>1}for(var q=(function(e,t,n){for(var r=e.length,i=0,a=new W(t);i<r;++i)e[i]&&++a[e[i]-1];var o=new W(t);for(i=1;i<t;++i)o[i]=o[i-1]+a[i-1]<<1;var s;if(n){s=new W(1<<t);var c=15-t;for(i=0;i<r;++i)if(e[i])for(var l=i<<4|e[i],u=t-e[i],d=o[e[i]-1]++<<u,f=d|(1<<u)-1;d<=f;++d)s[ke[d]>>c]=l}else for(s=new W(r),i=0;i<r;++i)e[i]&&(s[i]=ke[o[e[i]-1]++]>>15-e[i]);return s}),J=new U(288),G=0;G<144;++G)J[G]=8;for(var G=144;G<256;++G)J[G]=9;for(var G=256;G<280;++G)J[G]=7;for(var G=280;G<288;++G)J[G]=8;for(var Ae=new U(32),G=0;G<32;++G)Ae[G]=5;var je=q(J,9,0),Me=q(J,9,1),Ne=q(Ae,5,0),Pe=q(Ae,5,1),Fe=function(e){for(var t=e[0],n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},Y=function(e,t,n){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},Ie=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},Le=function(e){return(e+7)/8|0},Re=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new U(e.subarray(t,n))},ze=[`unexpected EOF`,`invalid block type`,`invalid length/literal`,`invalid distance`,`stream finished`,`no stream handler`,,`no callback`,`invalid UTF-8 data`,`extra field too long`,`date not in range 1980-2099`,`filename too long`,`stream finishing`,`invalid zip data`],X=function(e,t,n){var r=Error(t||ze[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,X),!n)throw r;return r},Be=function(e,t,n,r){var i=e.length,a=r?r.length:0;if(!i||t.f&&!t.l)return n||new U(0);var o=!n,s=o||t.i!=2,c=t.i;o&&(n=new U(i*3));var l=function(e){var t=n.length;if(e>t){var r=new U(Math.max(t*2,e));r.set(n),n=r}},u=t.f||0,d=t.p||0,f=t.b||0,p=t.l,m=t.d,h=t.m,g=t.n,_=i*8;do{if(!p){u=Y(e,d,1);var v=Y(e,d+1,3);if(d+=3,!v){var y=Le(d)+4,b=e[y-4]|e[y-3]<<8,x=y+b;if(x>i){c&&X(0);break}s&&l(f+b),n.set(e.subarray(y,x),f),t.b=f+=b,t.p=d=x*8,t.f=u;continue}else if(v==1)p=Me,m=Pe,h=9,g=5;else if(v==2){var S=Y(e,d,31)+257,C=Y(e,d+10,15)+4,w=S+Y(e,d+5,31)+1;d+=14;for(var T=new U(w),E=new U(19),D=0;D<C;++D)E[xe[D]]=Y(e,d+D*3,7);d+=C*3;for(var O=Fe(E),k=(1<<O)-1,A=q(E,O,1),D=0;D<w;){var j=A[Y(e,d,k)];d+=j&15;var y=j>>4;if(y<16)T[D++]=y;else{var M=0,N=0;for(y==16?(N=3+Y(e,d,3),d+=2,M=T[D-1]):y==17?(N=3+Y(e,d,7),d+=3):y==18&&(N=11+Y(e,d,127),d+=7);N--;)T[D++]=M}}var P=T.subarray(0,S),F=T.subarray(S);h=Fe(P),g=Fe(F),p=q(P,h,1),m=q(F,g,1)}else X(1);if(d>_){c&&X(0);break}}s&&l(f+131072);for(var ee=(1<<h)-1,I=(1<<g)-1,L=d;;L=d){var M=p[Ie(e,d)&ee],R=M>>4;if(d+=M&15,d>_){c&&X(0);break}if(M||X(2),R<256)n[f++]=R;else if(R==256){L=d,p=null;break}else{var z=R-254;if(R>264){var D=R-257,B=ye[D];z=Y(e,d,(1<<B)-1)+we[D],d+=B}var V=m[Ie(e,d)&I],te=V>>4;V||X(3),d+=V&15;var F=De[te];if(te>3){var B=be[te];F+=Ie(e,d)&(1<<B)-1,d+=B}if(d>_){c&&X(0);break}s&&l(f+131072);var ne=f+z;if(f<F){var re=a-F,ie=Math.min(F,ne);for(re+f<0&&X(3);f<ie;++f)n[f]=r[re+f]}for(;f<ne;++f)n[f]=n[f-F]}}t.l=p,t.p=L,t.b=f,t.f=u,p&&(u=1,t.m=h,t.d=m,t.n=g)}while(!u);return f!=n.length&&o?Re(n,0,f):n.subarray(0,f)},Z=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8},Ve=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8,e[r+2]|=n>>16},He=function(e,t){for(var n=[],r=0;r<e.length;++r)e[r]&&n.push({s:r,f:e[r]});var i=n.length,a=n.slice();if(!i)return{t:Ye,l:0};if(i==1){var o=new U(n[0].s+1);return o[n[0].s]=1,{t:o,l:1}}n.sort(function(e,t){return e.f-t.f}),n.push({s:-1,f:25001});var s=n[0],c=n[1],l=0,u=1,d=2;for(n[0]={s:-1,f:s.f+c.f,l:s,r:c};u!=i-1;)s=n[n[l].f<n[d].f?l++:d++],c=n[l!=u&&n[l].f<n[d].f?l++:d++],n[u++]={s:-1,f:s.f+c.f,l:s,r:c};for(var f=a[0].s,r=1;r<i;++r)a[r].s>f&&(f=a[r].s);var p=new W(f+1),m=Ue(n[u-1],p,0);if(m>t){var r=0,h=0,g=m-t,_=1<<g;for(a.sort(function(e,t){return p[t.s]-p[e.s]||e.f-t.f});r<i;++r){var v=a[r].s;if(p[v]>t)h+=_-(1<<m-p[v]),p[v]=t;else break}for(h>>=g;h>0;){var y=a[r].s;p[y]<t?h-=1<<t-p[y]++-1:++r}for(;r>=0&&h;--r){var b=a[r].s;p[b]==t&&(--p[b],++h)}m=t}return{t:new U(p),l:m}},Ue=function(e,t,n){return e.s==-1?Math.max(Ue(e.l,t,n+1),Ue(e.r,t,n+1)):t[e.s]=n},We=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new W(++t),r=0,i=e[0],a=1,o=function(e){n[r++]=e},s=1;s<=t;++s)if(e[s]==i&&s!=t)++a;else{if(!i&&a>2){for(;a>138;a-=138)o(32754);a>2&&(o(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(o(i),--a;a>6;a-=6)o(8304);a>2&&(o(a-3<<5|8208),a=0)}for(;a--;)o(i);a=1,i=e[s]}return{c:n.subarray(0,r),n:t}},Ge=function(e,t){for(var n=0,r=0;r<t.length;++r)n+=e[r]*t[r];return n},Ke=function(e,t,n){var r=n.length,i=Le(t+2);e[i]=r&255,e[i+1]=r>>8,e[i+2]=e[i]^255,e[i+3]=e[i+1]^255;for(var a=0;a<r;++a)e[i+a+4]=n[a];return(i+4+r)*8},qe=function(e,t,n,r,i,a,o,s,c,l,u){Z(t,u++,n),++i[256];for(var d=He(i,15),f=d.t,p=d.l,m=He(a,15),h=m.t,g=m.l,_=We(f),v=_.c,y=_.n,b=We(h),x=b.c,S=b.n,C=new W(19),w=0;w<v.length;++w)++C[v[w]&31];for(var w=0;w<x.length;++w)++C[x[w]&31];for(var T=He(C,7),E=T.t,D=T.l,O=19;O>4&&!E[xe[O-1]];--O);var k=l+5<<3,A=Ge(i,J)+Ge(a,Ae)+o,j=Ge(i,f)+Ge(a,h)+o+14+3*O+Ge(C,E)+2*C[16]+3*C[17]+7*C[18];if(c>=0&&k<=A&&k<=j)return Ke(t,u,e.subarray(c,c+l));var M,N,P,F;if(Z(t,u,1+(j<A)),u+=2,j<A){M=q(f,p,0),N=f,P=q(h,g,0),F=h;var ee=q(E,D,0);Z(t,u,y-257),Z(t,u+5,S-1),Z(t,u+10,O-4),u+=14;for(var w=0;w<O;++w)Z(t,u+3*w,E[xe[w]]);u+=3*O;for(var I=[v,x],L=0;L<2;++L)for(var R=I[L],w=0;w<R.length;++w){var z=R[w]&31;Z(t,u,ee[z]),u+=E[z],z>15&&(Z(t,u,R[w]>>5&127),u+=R[w]>>12)}}else M=je,N=J,P=Ne,F=Ae;for(var w=0;w<s;++w){var B=r[w];if(B>255){var z=B>>18&31;Ve(t,u,M[z+257]),u+=N[z+257],z>7&&(Z(t,u,B>>23&31),u+=ye[z]);var V=B&31;Ve(t,u,P[V]),u+=F[V],V>3&&(Ve(t,u,B>>5&8191),u+=be[V])}else Ve(t,u,M[B]),u+=N[B]}return Ve(t,u,M[256]),u+N[256]},Je=new ve([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Ye=new U(0),Xe=function(e,t,n,r,i,a){var o=a.z||e.length,s=new U(r+o+5*(1+Math.ceil(o/7e3))+i),c=s.subarray(r,s.length-i),l=a.l,u=(a.r||0)&7;if(t){u&&(c[0]=a.r>>3);for(var d=Je[t-1],f=d>>13,p=d&8191,m=(1<<n)-1,h=a.p||new W(32768),g=a.h||new W(m+1),_=Math.ceil(n/3),v=2*_,y=function(t){return(e[t]^e[t+1]<<_^e[t+2]<<v)&m},b=new ve(25e3),x=new W(288),S=new W(32),C=0,w=0,T=a.i||0,E=0,D=a.w||0,O=0;T+2<o;++T){var k=y(T),A=T&32767,j=g[k];if(h[A]=j,g[k]=A,D<=T){var M=o-T;if((C>7e3||E>24576)&&(M>423||!l)){u=qe(e,c,0,b,x,S,w,E,O,T-O,u),E=C=w=0,O=T;for(var N=0;N<286;++N)x[N]=0;for(var N=0;N<30;++N)S[N]=0}var P=2,F=0,ee=p,I=A-j&32767;if(M>2&&k==y(T-I))for(var L=Math.min(f,M)-1,R=Math.min(32767,T),z=Math.min(258,M);I<=R&&--ee&&A!=j;){if(e[T+P]==e[T+P-I]){for(var B=0;B<z&&e[T+B]==e[T+B-I];++B);if(B>P){if(P=B,F=I,B>L)break;for(var V=Math.min(I,B-2),te=0,N=0;N<V;++N){var ne=T-I+N&32767,re=ne-h[ne]&32767;re>te&&(te=re,j=ne)}}}A=j,j=h[A],I+=A-j&32767}if(F){b[E++]=268435456|Te[P]<<18|Oe[F];var ie=Te[P]&31,ae=Oe[F]&31;w+=ye[ie]+be[ae],++x[257+ie],++S[ae],D=T+P,++C}else b[E++]=e[T],++x[e[T]]}}for(T=Math.max(T,D);T<o;++T)b[E++]=e[T],++x[e[T]];u=qe(e,c,l,b,x,S,w,E,O,T-O,u),l||(a.r=u&7|c[u/8|0]<<3,u-=7,a.h=g,a.p=h,a.i=T,a.w=D)}else{for(var T=a.w||0;T<o+l;T+=65535){var H=T+65535;H>=o&&(c[u/8|0]=l,H=o),u=Ke(c,u+1,e.subarray(T,H))}a.i=o}return Re(s,0,r+Le(u)+i)},Ze=function(){var e=1,t=0;return{p:function(n){for(var r=e,i=t,a=n.length|0,o=0;o!=a;){for(var s=Math.min(o+2655,a);o<s;++o)i+=r+=n[o];r=(r&65535)+15*(r>>16),i=(i&65535)+15*(i>>16)}e=r,t=i},d:function(){return e%=65521,t%=65521,(e&255)<<24|(e&65280)<<8|(t&255)<<8|t>>8}}},Qe=function(e,t,n,r,i){if(!i&&(i={l:1},t.dictionary)){var a=t.dictionary.subarray(-32768),o=new U(a.length+e.length);o.set(a),o.set(e,a.length),e=o,i.w=a.length}return Xe(e,t.level==null?6:t.level,t.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,n,r,i)},$e=function(e,t,n){for(;n;++t)e[t]=n,n>>>=8},et=function(e,t){var n=t.level,r=n==0?0:n<6?1:n==9?3:2;if(e[0]=120,e[1]=r<<6|(t.dictionary&&32),e[1]|=31-(e[0]<<8|e[1])%31,t.dictionary){var i=Ze();i.p(t.dictionary),$e(e,2,i.d())}},tt=function(e,t){return((e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31)&&X(6,`invalid zlib data`),(e[1]>>5&1)==+!t&&X(6,`invalid zlib data: `+(e[1]&32?`need`:`unexpected`)+` dictionary`),(e[1]>>3&4)+2},nt=function(){function e(e,t){if(typeof e==`function`&&(t=e,e={}),this.ondata=t,this.o=e||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new U(98304),this.o.dictionary){var n=this.o.dictionary.subarray(-32768);this.b.set(n,32768-n.length),this.s.i=32768-n.length}}return e.prototype.p=function(e,t){this.ondata(Qe(e,this.o,0,0,this.s),t)},e.prototype.push=function(e,t){this.ondata||X(5),this.s.l&&X(4);var n=e.length+this.s.z;if(n>this.b.length){if(n>2*this.b.length-32768){var r=new U(n&-32768);r.set(this.b.subarray(0,this.s.z)),this.b=r}var i=this.b.length-this.s.z;this.b.set(e.subarray(0,i),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(e.subarray(i),32768),this.s.z=e.length-i+32768,this.s.i=32766,this.s.w=32768}else this.b.set(e,this.s.z),this.s.z+=e.length;this.s.l=t&1,(this.s.z>this.s.w+8191||t)&&(this.p(this.b,t||!1),this.s.w=this.s.i,this.s.i-=2),t&&(this.s=this.o={},this.b=Ye)},e.prototype.flush=function(e){if(this.ondata||X(5),this.s.l&&X(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2,e){var t=new U(6);t[0]=this.s.r>>3;var n=Ke(t,this.s.r,Ye);this.s.r=0,this.ondata(t.subarray(0,n>>3),!1)}},e}(),rt=function(){function e(e,t){typeof e==`function`&&(t=e,e={}),this.ondata=t;var n=e&&e.dictionary&&e.dictionary.subarray(-32768);this.s={i:0,b:n?n.length:0},this.o=new U(32768),this.p=new U(0),n&&this.o.set(n)}return e.prototype.e=function(e){if(this.ondata||X(5),this.d&&X(4),!this.p.length)this.p=e;else if(e.length){var t=new U(this.p.length+e.length);t.set(this.p),t.set(e,this.p.length),this.p=t}},e.prototype.c=function(e){this.s.i=+(this.d=e||!1);var t=this.s.b,n=Be(this.p,this.s,this.o);this.ondata(Re(n,t,this.s.b),this.d),this.o=Re(n,this.s.b-32768),this.s.b=this.o.length,this.p=Re(this.p,this.s.p/8|0),this.s.p&=7},e.prototype.push=function(e,t){this.e(e),this.c(t)},e}(),it=function(){function e(e,t){this.c=Ze(),this.v=1,nt.call(this,e,t)}return e.prototype.push=function(e,t){this.c.p(e),nt.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){var n=Qe(e,this.o,this.v&&(this.o.dictionary?6:2),t&&4,this.s);this.v&&=(et(n,this.o),0),t&&$e(n,n.length-4,this.c.d()),this.ondata(n,t)},e.prototype.flush=function(e){nt.prototype.flush.call(this,e)},e}(),at=function(){function e(e,t){rt.call(this,e,t),this.v=e&&e.dictionary?2:1}return e.prototype.push=function(e,t){if(rt.prototype.e.call(this,e),this.v){if(this.p.length<6&&!t)return;this.p=this.p.subarray(tt(this.p,this.v-1)),this.v=0}t&&(this.p.length<4&&X(6,`invalid zlib data`),this.p=this.p.subarray(0,-4)),rt.prototype.c.call(this,t)},e}(),ot=typeof TextEncoder<`u`&&new TextEncoder,st=typeof TextDecoder<`u`&&new TextDecoder;try{st.decode(Ye,{stream:!0})}catch{}var ct=function(e){for(var t=``,n=0;;){var r=e[n++],i=(r>127)+(r>223)+(r>239);if(n+i>e.length)return{s:t,r:Re(e,n-1)};i?i==3?(r=((r&15)<<18|(e[n++]&63)<<12|(e[n++]&63)<<6|e[n++]&63)-65536,t+=String.fromCharCode(55296|r>>10,56320|r&1023)):i&1?t+=String.fromCharCode((r&31)<<6|e[n++]&63):t+=String.fromCharCode((r&15)<<12|(e[n++]&63)<<6|e[n++]&63):t+=String.fromCharCode(r)}};function lt(e,t){if(t){for(var n=new U(e.length),r=0;r<e.length;++r)n[r]=e.charCodeAt(r);return n}if(ot)return ot.encode(e);for(var i=e.length,a=new U(e.length+(e.length>>1)),o=0,s=function(e){a[o++]=e},r=0;r<i;++r){if(o+5>a.length){var c=new U(o+8+(i-r<<1));c.set(a),a=c}var l=e.charCodeAt(r);l<128||t?s(l):l<2048?(s(192|l>>6),s(128|l&63)):l>55295&&l<57344?(l=65536+(l&1047552)|e.charCodeAt(++r)&1023,s(240|l>>18),s(128|l>>12&63),s(128|l>>6&63),s(128|l&63)):(s(224|l>>12),s(128|l>>6&63),s(128|l&63))}return Re(a,0,o)}function ut(e,t){if(t){for(var n=``,r=0;r<e.length;r+=16384)n+=String.fromCharCode.apply(null,e.subarray(r,r+16384));return n}else if(st)return st.decode(e);else{var i=ct(e),a=i.s,n=i.r;return n.length&&X(8),a}}var dt=e=>{if(e.length===1)return e[0];let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0));for(let n=0,r=0;n<e.length;++n)t.set(e[n],r),r+=e[n].length;return t},ft=class{constructor(){this.compressor=null,this.decompressor=null,this.reset()}reset(){this.compressor=null,this.decompressor=null}compress(e){this.compressor||=new it({mem:4});let t=[];return this.compressor.ondata=e=>{t.push(e)},this.compressor.push(lt(e)),this.compressor.flush(),dt(t)}decompress(e){this.decompressor||=new at;let t;this.decompressor.ondata=e=>{t=e};try{if(this.decompressor.push(e),t===void 0)throw Error(`invalid block type`)}catch(t){throw Error(`Decompression error: ${t.message}, length: ${e.length}, data: [${e.toString()}]`)}return ut(t)}},pt=()=>$(e=>class extends e{#e;constructor(...e){super(...e),this.#e=new ft,this.hooks.hook(`frontgateConnection:reset`,()=>{this.#e.reset()}),this.hooks.hook(`frontgateConnection:afterSetEncoding`,e=>{e.encoding=`jsjsonc-v2`}),this.hooks.hook(`frontgateConnection:beforeSendMessage`,e=>{e.msg=this.#e.compress(e.msg)}),this.hooks.hook(`frontgateConnection:afterReceiveMessage`,e=>{e.msg=this.#e.decompress(new Uint8Array(e.msg))})}},{featureName:`MessageCompressor`,featureGroups:[`Compression`]}),mt=()=>$(e=>class extends e{async request(e,t=this.defaultTimeoutInMs){e.header.setTimeout(t);let n={message:e.getPtlMessage(),callbackType:`job`,callbackId:``};await this.hooks.callHook(`frontgateConnection:sendMessage`,n);let r=new Promise(e=>{this.hooks.hookOnce(`frontgateConnection:response:${n.callbackId}`,t=>{e(new z(t))})});return O(t,`Request timeout reached (${t} ms) for ${n.message.Message}`,r)}},{featureName:`Request`,featureGroups:[`Misc`]}),ht=e=>$(t=>{let n={...e};return class extends t{#e=new Map;#t=new Map;#n=new Map;async observeEndpoint(e,t,r,i){let a=`${e}:${t}:${JSON.stringify(r)}:${JSON.stringify(i??{})}`;if(this.#n.has(a)){let e=this.#n.get(a);this.log(H.INFO,`Catching inflight subscription for ${a}`);let t=this.#t.get(a)??0;return this.#t.set(a,t+1),e}let o=n.timeout??this.defaultTimeoutInMs,s=n.subscriptionResubscribeTimeout??1e3;if(this.#e.has(a)){let e=this.#e.get(a),t=this.#t.get(a)??0;if(e)return this.#t.set(a,t+1),this.log(H.INFO,`Reusing existing subscription for ${a}`),e}this.log(H.INFO,`Creating new subscription for ${a}`);let c=new ee(e,t,r,{...i,subscribe:!0});c.header.setTimeout(o);let l={message:c.getPtlMessage(),callbackType:`job`,callbackId:``},u=!1,d=new Promise((e,t)=>{this.hooks.callHook(`frontgateConnection:sendMessage`,l).then(()=>{this.hooks.hookOnce(`frontgateConnection:response:${l.callbackId}`,n=>{if(!n.Message.includes(`HighLevelResponse`)){this.log(H.ERROR,`Unexpected response: ${n.Message}`),t(new V(JSON.stringify(n)));return}let r;try{r=JSON.parse(n.body.value)}catch(e){this.log(H.ERROR,`Failed to parse response: ${n.body.value}`),this.log(H.ERROR,e),t(e);return}let i=new wt(n.header.id_job,r);if(u){this.log(H.WARN,`Zombie subscription detected for ${a}. Cancelling stale subscription on server.`);let e=new F(i.idJob);this.hooks.callHook(`frontgateConnection:sendMessage`,{message:e.getPtlMessage(),callbackType:`job`,callbackId:``});return}let c=this.hooks.hook(`frontgateConnection:response:${l.callbackId}`,e=>{if(!e.Message.includes(`HighLevelUpdate`)){if(e.Message.includes(`SubscriptionLoss`)){this.log(H.DEBUG,`Received: ${e.Message}`),setTimeout(()=>{d()},k(s)),c();return}this.log(H.ERROR,`Unexpected response: ${n.Message}`),i.pushError(new V(JSON.stringify(e))),c();return}let t;try{t=new ie(e)}catch(t){this.log(H.ERROR,`Failed to parse response: ${e.body.value}`),i.pushError(t);return}i.pushPatchData(t.data)}),d=async()=>{c(),this.log(H.INFO,`Resubscribing to ${a} due to reconnect`),await this.hooks.callHook(`frontgateConnection:sendMessage`,l);let e,t=new Promise((t,n)=>{e=this.hooks.hookOnce(`frontgateConnection:response:${l.callbackId}`,e=>{if(!e.Message.includes(`HighLevelResponse`)){let t=new V(e);this.log(H.ERROR,`Unexpected response: ${e.Message}`),c(),n(t);return}if(this.log(H.INFO,`Resubscribed to ${a} with ${e.header.id_job}`),i.idJob=e.header.id_job,u){this.log(H.WARN,`Zombie subscription detected for ${a}. Initiating unsubscribe.`),i.unsubscribe?.(),t();return}try{i.pushData(JSON.parse(e.body.value))}catch(t){this.log(H.ERROR,`Failed to parse response: ${e.body.value}`),this.log(H.ERROR,t),n(t);return}c=this.hooks.hook(`frontgateConnection:response:${e.header.id_job}`,e=>{if(!e.Message.includes(`HighLevelUpdate`)){if(e.Message.includes(`SubscriptionLoss`)){this.log(H.DEBUG,`Received: ${e.Message}`),setTimeout(()=>{d()},k(s));return}this.log(H.ERROR,`Unexpected response: ${e.Message}`);let t=new V(e);i.pushError(t);return}let t;try{t=new ie(e)}catch(t){this.log(H.ERROR,`Failed to parse response: ${e.body.value}`),i.pushError(t);return}i.pushPatchData(t.data)}),t()})});try{await O(o,`Request timeout reached`,t)}catch(t){e?.(),u=!0,i.pushError(new V({Message:`Resubscribe failed`,Error:t}))}},f=this.hooks.hook(`reconnect:success`,d);i.unsubscribe=()=>{if(this.#e.get(a)){let e=this.#t.get(a)??0;if(this.#t.set(a,e-1),e-1>0){this.log(H.INFO,`Not unsubscribing from ${a} as there are still ${e} subscribers`);return}this.#e.delete(a),this.#t.delete(a),u=!0}this.log(H.INFO,`Unsubscribing from ${a}`);let e={message:new F(i.idJob).getPtlMessage(),callbackType:`job`,callbackId:``};this.hooks.callHook(`frontgateConnection:sendMessage`,e),c(),f()},this.#e.set(a,i);let p=this.#t.get(a)??0;this.#t.set(a,p+1),e(i)})}).catch(e=>{t(e)})}),f=O(o,`Request timeout reached (${o} ms) for ${l.message.Message}`,d).catch(e=>{throw u=!0,this.#t.delete(a),this.#e.delete(a),e}).finally(()=>{this.#n.delete(a)});return this.#n.set(a,f),f}}},{featureName:`EndpointSubscriptions`,featureGroups:[`Misc`]}),gt=()=>$(e=>class extends e{#e=new Map;async observe(e,t=this.defaultTimeoutInMs){return this.#t(e,`job`,void 0,t)}async observeConnectionBased(e,t,n=this.defaultTimeoutInMs){return this.#t(e,`connection`,t,n)}async#t(e,t,n,r=this.defaultTimeoutInMs){let i=JSON.stringify(e.getPtlMessage());if(this.#e.has(i)){let e=this.#e.get(i);if(e)return e.count++,this.log(H.INFO,`Reusing existing subscription for ${i}`),e.observer}this.log(H.INFO,`Creating new subscription for ${i}`);let a={message:e.getPtlMessage(),callbackType:`job`,callbackId:``};await this.hooks.callHook(`frontgateConnection:sendMessage`,a);let o=new Promise((o,s)=>{this.hooks.hookOnce(`frontgateConnection:response:${a.callbackId}`,c=>{if(c.Message.includes(`Error`)||c.Message.includes(`PermissionDenied`)){this.log(H.ERROR,`Unexpected response: ${c.Message}`),s(Error(`Unexpected response: ${c.Message}`));return}let l=t===`connection`?`${c.header.id_service}-${e.getPtlMessage().id_notation}`:c.header.id_job,u=n===void 0?new F(c.header.id_job):new n(c.header.id_service,e.getPtlMessage().id_notation),d=new Ct(c.header.id_job,c),f=this.hooks.hook(`frontgateConnection:response:${l}`,e=>{if(e.Message.includes(`Error`)||e.Message.includes(`PermissionDenied`)){this.log(H.ERROR,`Unexpected response: ${c.Message}`),d.pushError(new V(JSON.stringify(e)));return}d.pushData(e)}),p=this.hooks.hook(`reconnect:success`,async()=>{f(),this.log(H.INFO,`Resubscribing to ${i} due to reconnect`),await this.hooks.callHook(`frontgateConnection:sendMessage`,a);let o=new Promise((r,o)=>{this.hooks.hookOnce(`frontgateConnection:response:${a.callbackId}`,a=>{if(a.Message.includes(`Error`)||a.Message.includes(`PermissionDenied`)){let e=new V(a);this.log(H.ERROR,`Unexpected resp: ${a.Message}`),o(e);return}let s=t===`connection`?`${a.header.id_service}-${e.getPtlMessage().id_notation}`:a.header.id_job,c=n===void 0?new F(a.header.id_job):new n(a.header.id_service,e.getPtlMessage().id_notation);d.idJob=a.header.id_job,f=this.hooks.hook(`frontgateConnection:response:${s}`,e=>{if(e.Message.includes(`Error`)||e.Message.includes(`PermissionDenied`)){this.log(H.ERROR,`Unexpected response: ${e.Message}`);let t=new V(e);d.pushError(t);return}d.unsubscribe=()=>{let e=this.#e.get(i);if(e){if(e.count--,e.count>0){this.log(H.INFO,`Not unsubscribing from ${i} as there are still ${e.count} subscribers`);return}this.#e.delete(i)}this.log(H.INFO,`Unsubscribing from ${i}`);let t={message:c.getPtlMessage(),callbackType:`job`,callbackId:``};this.hooks.callHook(`frontgateConnection:sendMessage`,t),f(),p()},d.pushData(e)}),r()})});try{await O(r,`Request timeout reached`,o)}catch(e){d.pushError(new V({Message:`Reconnect failed`,Error:e}))}});d.unsubscribe=()=>{let e=this.#e.get(i);if(e){if(e.count--,e.count>0){this.log(H.INFO,`Not unsubscribing from ${i} as there are still ${e.count} subscribers`);return}this.#e.delete(i)}this.log(H.INFO,`Unsubscribing from ${i}`);let t={message:u.getPtlMessage(),callbackType:`job`,callbackId:``};this.hooks.callHook(`frontgateConnection:sendMessage`,t),f(),p()},this.#e.set(i,{observer:d,count:1}),o(d)})});return O(r,`Request timeout reached (${r} ms) for ${a.message.Message}`,o)}},{featureName:`RawSubscriptions`,featureGroups:[`Misc`]}),_t=(e,t)=>{let n=t.split(`/`).slice(1),r=e;for(let e=0;e<n.length-1;e++){let i=decodeURIComponent(n[e]);if(!(i in r))throw Error(`Path not found: ${t}`);r=r[i]}return[r,decodeURIComponent(n[n.length-1])]},vt=(e,t,n)=>{let[r,i]=_t(e,t);r[i]=n},yt=`-`,bt=(e,t,n)=>{let[r,i]=_t(e,t);Array.isArray(r)?i===yt?r.push(n):r.splice(parseInt(i,10),0,n):r[i]=n},xt=(e,t)=>{let[n,r]=_t(e,t);Array.isArray(n)?n.splice(parseInt(r,10),1):delete n[r]};function St(e,t){return t.forEach(t=>{switch(t.op){case`replace`:vt(e,t.path,t.value);break;case`add`:bt(e,t.path,t.value);break;case`remove`:xt(e,t.path);break;default:throw Error(`Unsupported op: ${t.op}`)}}),e}var Ct=class{#e;#t=[];#n=[];get data(){return this.#e}constructor(e,t){this.#e=t,this.idJob=e}subscribe({next:e,error:t}){e(this.#e),t&&this.#n.push(t),this.#t.push(e)}pushData(e){this.#e=e,this.#t.forEach(t=>{t(e)})}pushError(e){this.#n.forEach(t=>{t(e)})}},wt=class extends Ct{pushPatchData(e){try{let t=St(this.data,e);super.pushData(t)}catch(e){super.pushError(new V(e.message))}}},Tt=e=>$(t=>class extends t{constructor(...t){super(...t),this.hooks.hook(`frontgateConnection:beforeConnect`,t=>{this.hooks.callHook(`frontgateConnection:setIdApp`,-2),this.hooks.callHook(`frontgateConnection:setIdUser`,-2),this.log(H.DEBUG,`Adding mdg2auth subprotocol`),t.subProtocols.push(`mdg2auth-${e}`)}),this.hooks.hookOnce(`frontgateConnection:connected`,async e=>{this.hooks.callHook(`frontgateConnection:setIdApp`,-2),this.hooks.callHook(`frontgateConnection:setIdUser`,-2);let t=new N({b64:``},{maximum_idle_interval:e.maximumIdleInterval}.maximum_idle_interval).toJson();this.log(H.INFO,`Sending message`,t);let n={message:t,callbackType:`response`,callbackId:t.Message.replace(`Request`,`Response`)};await this.hooks.callHook(`frontgateConnection:sendMessage`,n),this.hooks.hookOnce(`frontgateConnection:response:${n.callbackId}`,e=>{this.log(H.INFO,`Received response`,e),this.hooks.callHook(`frontgateConnection:authenticated`)})})}},{featureName:`CookieTokenAuth`,featureGroups:[`Auth`],disabledFeatureGroups:[`Auth`]}),Et=e=>$(t=>class extends t{#e;constructor(...t){super(...t),this.#e=e??``,this.hooks.hook(`frontgateConnection:connected`,async e=>{this.hooks.callHook(`frontgateConnection:setIdApp`,-2),this.hooks.callHook(`frontgateConnection:setIdUser`,-2);let t={maximum_idle_interval:e.maximumIdleInterval},n=new N({b64:this.#e},t.maximum_idle_interval).toJson();this.log(H.INFO,`Sending message`,n);let r={message:n,callbackType:`response`,callbackId:n.Message.replace(`Request`,`Response`)};await this.hooks.callHook(`frontgateConnection:sendMessage`,r),this.hooks.hookOnce(`frontgateConnection:response:${r.callbackId}`,e=>{this.log(H.INFO,`Received response`,e),this.hooks.callHook(`frontgateConnection:authenticated`)})})}set token(e){this.#e=e}},{featureName:`TokenAuth`,featureGroups:[`Auth`],disabledFeatureGroups:[`Auth`]}),Dt=(e,t,n)=>$(r=>class extends ge({host:``,pathPrefix:``,port:0,tls:!0,maximumIdleIntervalInS:e.maximumIdleIntervalInS})(r){#e=``;#t=``;#n;#r;constructor(...e){super(...e),this.#n=t,this.#r=n,this.hooks.hook(`frontgateConnection:beforeConnect`,async e=>{this.hooks.callHook(`frontgateConnection:setIdApp`,-2),this.hooks.callHook(`frontgateConnection:setIdUser`,-2),this.log(H.DEBUG,`Fetching connection configuration`);let t=await this.#i();if(this.log(H.DEBUG,`Connection configuration received`,t),e.url=t.url,t.authtenticationType===`token`&&t.authenticationToken)this.#e=t.authenticationToken;else if(t.splitAuthenticationTokenSecondFactor)this.#t=t.splitAuthenticationTokenSecondFactor;else throw Error(`Invalid authentication configuration`);this.log(H.DEBUG,`Adding mdg2auth subprotocol`),this.#t!==``&&e.subProtocols.push(`mdg2auth-${this.#t}`)}),this.hooks.hook(`frontgateConnection:connected`,async e=>{this.hooks.callHook(`frontgateConnection:setIdApp`,-2),this.hooks.callHook(`frontgateConnection:setIdUser`,-2);let t={maximum_idle_interval:e.maximumIdleInterval},n=new N({b64:this.#e},t.maximum_idle_interval).toJson();this.log(H.INFO,`Sending message`,n);let r={message:n,callbackType:`response`,callbackId:n.Message.replace(`Request`,`Response`)};await this.hooks.callHook(`frontgateConnection:sendMessage`,r),this.hooks.hookOnce(`frontgateConnection:response:${r.callbackId}`,e=>{this.log(H.INFO,`Received response`,e),this.hooks.callHook(`frontgateConnection:authenticated`)})})}async#i(){let e=await fetch(this.#n,this.#r);if(!e.ok)throw Error(`Failed to fetch connection configuration: ${e.status} ${e.statusText}`);let{headers:t}=e,n=t.get(`frontgate-host`),r=t.get(`frontgate-path-prefix`),i=t.get(`frontgate-split-authentication-token-second-factor`),a=t.get(`frontgate-authentication-type`),o=t.get(`frontgate-authentication-token`),s=`wss://${n}:${t.get(`frontgate-websocket-port`)??`443`}${r??``}/ws`;if(a===`token`&&!o)throw Error(`Authentication token is required for token authentication`);if(a!==`token`&&!i)throw Error(`Split authentication token second factor is required`);return{url:s,authtenticationType:a,authenticationToken:o,splitAuthenticationTokenSecondFactor:i}}},{featureName:`FetchAuth`,featureGroups:[`Auth`,`Connection`],disabledFeatureGroups:[`Auth`,`Connection`]}),Ot=(e,t,n)=>$(r=>class extends ge({host:``,pathPrefix:``,port:0,tls:!0,maximumIdleIntervalInS:e.maximumIdleIntervalInS})(r){#e=``;#t=``;#n=!1;#r;#i;#a;constructor(...e){super(...e),this.#i=t,this.#a=n,this.#r=new ft,this.hooks.hook(`frontgateConnection:reset`,()=>{this.#n&&this.#r.reset()}),this.hooks.hook(`frontgateConnection:beforeSendMessage`,e=>{this.#n&&(e.msg=this.#r.compress(e.msg))}),this.hooks.hook(`frontgateConnection:afterReceiveMessage`,e=>{this.#n&&(e.msg=this.#r.decompress(new Uint8Array(e.msg)))}),this.hooks.hook(`frontgateConnection:beforeConnect`,async e=>{this.hooks.callHook(`frontgateConnection:setIdApp`,-2),this.hooks.callHook(`frontgateConnection:setIdUser`,-2),this.log(H.DEBUG,`Fetching connection configuration`);let t=await this.#o();if(this.log(H.DEBUG,`Connection configuration received`,t),e.url=t.url,t.authtenticationType===`token`&&t.authenticationToken)this.#e=t.authenticationToken;else if(t.splitAuthenticationTokenSecondFactor)this.#t=t.splitAuthenticationTokenSecondFactor;else throw Error(`Invalid authentication configuration`);this.log(H.DEBUG,`Adding mdg2auth subprotocol`),this.#t!==``&&e.subProtocols.push(`mdg2auth-${this.#t}`),this.#n&&e.subProtocols.forEach((t,n)=>{t.includes(`jsjson`)&&!t.includes(`jsjsonc`)&&(e.subProtocols[n]=t.replace(`jsjson`,`jsjsonc`))})}),this.hooks.hook(`frontgateConnection:connected`,async e=>{this.hooks.callHook(`frontgateConnection:setIdApp`,-2),this.hooks.callHook(`frontgateConnection:setIdUser`,-2);let t={maximum_idle_interval:e.maximumIdleInterval},n=new N({b64:this.#e},t.maximum_idle_interval).toJson();this.log(H.INFO,`Sending message`,n);let r={message:n,callbackType:`response`,callbackId:n.Message.replace(`Request`,`Response`)};await this.hooks.callHook(`frontgateConnection:sendMessage`,r),this.hooks.hookOnce(`frontgateConnection:response:${r.callbackId}`,e=>{this.log(H.INFO,`Received response`,e),this.hooks.callHook(`frontgateConnection:authenticated`)})})}async#o(){let e=await fetch(this.#i,this.#a);if(!e.ok)throw Error(`Failed to fetch connection configuration: ${e.status} ${e.statusText}`);let{headers:t}=e,n=t.get(`frontgate-host`),r=t.get(`frontgate-path-prefix`),i=t.get(`frontgate-split-authentication-token-second-factor`),a=t.get(`frontgate-authentication-type`),o=t.get(`frontgate-authentication-token`),s=`wss://${n}:${t.get(`frontgate-websocket-port`)??`443`}${r??``}/ws`;if(a===`token`&&!o)throw Error(`Authentication token is required for token authentication`);if(a!==`token`&&!i)throw Error(`Split authentication token second factor is required`);return t.get(`frontgate-websocket-protocol`)===`jsjsonc-v2`?this.#n=!0:this.#n=!1,{url:s,authtenticationType:a,authenticationToken:o,splitAuthenticationTokenSecondFactor:i}}},{featureName:`FetchAuthWithOptionalCompressor`,featureGroups:[`Auth`,`Connection`],disabledFeatureGroups:[`Auth`,`Connection`,`Compression`]}),kt=e=>$(t=>class extends t{#e=0;#t;#n;constructor(...t){super(...t),this.#t=e??[1e3,2e3,4e3,8e3,16e3,32e3];let n=e=>{if(e.code!==1e3){this.#n&&(this.log(H.WARN,`Aborting previous reconnect attempt`),clearTimeout(this.#n),this.#e=0);let t=this.#e;this.#e>=this.#t.length&&(t=this.#t.length-1);let r=this.#t[t];this.#n=setTimeout(()=>{this.log(H.INFO,`Reconnecting... Attempt ${this.#e}`);let t=this.hooks.hookOnce(`reconnect:failed`,n);this.hooks.callHook(`reconnect:attempt`,e).then(t).catch(()=>{this.log(H.ERROR,`Failed to reconnect`)}),this.#n=void 0},r),this.#e++}};this.hooks.hookOnce(`frontgateConnection:disconnected`,n),this.hooks.hook(`reconnect:success`,()=>{clearTimeout(this.#n),this.#n=void 0,this.#e=0,this.log(H.INFO,`Reconnected`),this.hooks.hookOnce(`frontgateConnection:disconnected`,n)})}},{featureName:`Reconnect`,featureGroups:[`Misc`],disabledFeatures:[`TokenAuth`,`CookieTokenAuth`]}),At=`1.9.1`,jt=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function Mt(e){let t=new Set([e]),n=new Set,r=e.match(jt);if(!r)return()=>!1;let i={major:+r[1],minor:+r[2],patch:+r[3],prerelease:r[4]};if(i.prerelease!=null)return function(t){return t===e};function a(e){return n.add(e),!1}function o(e){return t.add(e),!0}return function(e){if(t.has(e))return!0;if(n.has(e))return!1;let r=e.match(jt);if(!r)return a(e);let s={major:+r[1],minor:+r[2],patch:+r[3],prerelease:r[4]};return s.prerelease!=null||i.major!==s.major?a(e):i.major===0?i.minor===s.minor&&i.patch<=s.patch?o(e):a(e):i.minor<=s.minor?o(e):a(e)}}var Nt=Mt(At),Pt=At.split(`.`)[0],Ft=Symbol.for(`opentelemetry.js.api.${Pt}`),It=typeof globalThis==`object`?globalThis:typeof self==`object`?self:typeof window==`object`?window:typeof global==`object`?global:{};function Lt(e,t,n,r=!1){let i=It[Ft]=It[Ft]??{version:At};if(!r&&i[e]){let t=Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`);return n.error(t.stack||t.message),!1}if(i.version!==`1.9.1`){let t=Error(`@opentelemetry/api: Registration of version v${i.version} for ${e} does not match previously registered API v${At}`);return n.error(t.stack||t.message),!1}return i[e]=t,n.debug(`@opentelemetry/api: Registered a global for ${e} v${At}.`),!0}function Rt(e){let t=It[Ft]?.version;if(!(!t||!Nt(t)))return It[Ft]?.[e]}function zt(e,t){t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${At}.`);let n=It[Ft];n&&delete n[e]}var Bt=class{constructor(e){this._namespace=e.namespace||`DiagComponentLogger`}debug(...e){return Vt(`debug`,this._namespace,e)}error(...e){return Vt(`error`,this._namespace,e)}info(...e){return Vt(`info`,this._namespace,e)}warn(...e){return Vt(`warn`,this._namespace,e)}verbose(...e){return Vt(`verbose`,this._namespace,e)}};function Vt(e,t,n){let r=Rt(`diag`);if(r)return r[e](t,...n)}var Q;(function(e){e[e.NONE=0]=`NONE`,e[e.ERROR=30]=`ERROR`,e[e.WARN=50]=`WARN`,e[e.INFO=60]=`INFO`,e[e.DEBUG=70]=`DEBUG`,e[e.VERBOSE=80]=`VERBOSE`,e[e.ALL=9999]=`ALL`})(Q||={});function Ht(e,t){e<Q.NONE?e=Q.NONE:e>Q.ALL&&(e=Q.ALL),t||={};function n(n,r){let i=t[n];return typeof i==`function`&&e>=r?i.bind(t):function(){}}return{error:n(`error`,Q.ERROR),warn:n(`warn`,Q.WARN),info:n(`info`,Q.INFO),debug:n(`debug`,Q.DEBUG),verbose:n(`verbose`,Q.VERBOSE)}}var Ut=`diag`,Wt=class e{static instance(){return this._instance||=new e,this._instance}constructor(){function e(e){return function(...t){let n=Rt(`diag`);if(n)return n[e](...t)}}let t=this;t.setLogger=(e,n={logLevel:Q.INFO})=>{if(e===t){let e=Error(`Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation`);return t.error(e.stack??e.message),!1}typeof n==`number`&&(n={logLevel:n});let r=Rt(`diag`),i=Ht(n.logLevel??Q.INFO,e);if(r&&!n.suppressOverrideMessage){let e=Error().stack??`<failed to generate stacktrace>`;r.warn(`Current logger will be overwritten from ${e}`),i.warn(`Current logger will overwrite one already registered from ${e}`)}return Lt(`diag`,i,t,!0)},t.disable=()=>{zt(Ut,t)},t.createComponentLogger=e=>new Bt(e),t.verbose=e(`verbose`),t.debug=e(`debug`),t.info=e(`info`),t.warn=e(`warn`),t.error=e(`error`)}};function Gt(e){return Symbol.for(e)}var Kt=new class e{constructor(t){let n=this;n._currentContext=t?new Map(t):new Map,n.getValue=e=>n._currentContext.get(e),n.setValue=(t,r)=>{let i=new e(n._currentContext);return i._currentContext.set(t,r),i},n.deleteValue=t=>{let r=new e(n._currentContext);return r._currentContext.delete(t),r}}},qt=class{active(){return Kt}with(e,t,n,...r){return t.call(n,...r)}bind(e,t){return t}enable(){return this}disable(){return this}},Jt=`context`,Yt=new qt,Xt=class e{constructor(){}static getInstance(){return this._instance||=new e,this._instance}setGlobalContextManager(e){return Lt(Jt,e,Wt.instance())}active(){return this._getContextManager().active()}with(e,t,n,...r){return this._getContextManager().with(e,t,n,...r)}bind(e,t){return this._getContextManager().bind(e,t)}_getContextManager(){return Rt(Jt)||Yt}disable(){this._getContextManager().disable(),zt(Jt,Wt.instance())}},Zt;(function(e){e[e.NONE=0]=`NONE`,e[e.SAMPLED=1]=`SAMPLED`})(Zt||={});var Qt={traceId:`00000000000000000000000000000000`,spanId:`0000000000000000`,traceFlags:Zt.NONE},$t=class{constructor(e=Qt){this._spanContext=e}spanContext(){return this._spanContext}setAttribute(e,t){return this}setAttributes(e){return this}addEvent(e,t){return this}addLink(e){return this}addLinks(e){return this}setStatus(e){return this}updateName(e){return this}end(e){}isRecording(){return!1}recordException(e,t){}},en=Gt(`OpenTelemetry Context Key SPAN`);function tn(e){return e.getValue(en)||void 0}function nn(){return tn(Xt.getInstance().active())}function rn(e,t){return e.setValue(en,t)}function an(e){return e.deleteValue(en)}function on(e,t){return rn(e,new $t(t))}function sn(e){return tn(e)?.spanContext()}var cn=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1]);function ln(e,t){if(typeof e!=`string`||e.length!==t)return!1;let n=0;for(let t=0;t<e.length;t+=4)n+=(cn[e.charCodeAt(t)]|0)+(cn[e.charCodeAt(t+1)]|0)+(cn[e.charCodeAt(t+2)]|0)+(cn[e.charCodeAt(t+3)]|0);return n===t}function un(e){return ln(e,32)&&e!==`00000000000000000000000000000000`}function dn(e){return ln(e,16)&&e!==`0000000000000000`}function fn(e){return un(e.traceId)&&dn(e.spanId)}function pn(e){return new $t(e)}var mn=Xt.getInstance(),hn=class{startSpan(e,t,n=mn.active()){if(t?.root)return new $t;let r=n&&sn(n);return gn(r)&&fn(r)?new $t(r):new $t}startActiveSpan(e,t,n,r){let i,a,o;if(arguments.length<2)return;arguments.length===2?o=t:arguments.length===3?(i=t,o=n):(i=t,a=n,o=r);let s=a??mn.active(),c=this.startSpan(e,i,s),l=rn(s,c);return mn.with(l,o,void 0,c)}};function gn(e){return typeof e==`object`&&!!e&&`spanId`in e&&typeof e.spanId==`string`&&`traceId`in e&&typeof e.traceId==`string`&&`traceFlags`in e&&typeof e.traceFlags==`number`}var _n=new hn,vn=class{constructor(e,t,n,r){this._provider=e,this.name=t,this.version=n,this.options=r}startSpan(e,t,n){return this._getTracer().startSpan(e,t,n)}startActiveSpan(e,t,n,r){let i=this._getTracer();return Reflect.apply(i.startActiveSpan,i,arguments)}_getTracer(){if(this._delegate)return this._delegate;let e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):_n}},yn=new class{getTracer(e,t,n){return new hn}},bn=class{getTracer(e,t,n){return this.getDelegateTracer(e,t,n)??new vn(this,e,t,n)}getDelegate(){return this._delegate??yn}setDelegate(e){this._delegate=e}getDelegateTracer(e,t,n){return this._delegate?.getTracer(e,t,n)}},xn=`trace`,Sn=class e{constructor(){this._proxyTracerProvider=new bn,this.wrapSpanContext=pn,this.isSpanContextValid=fn,this.deleteSpan=an,this.getSpan=tn,this.getActiveSpan=nn,this.getSpanContext=sn,this.setSpan=rn,this.setSpanContext=on}static getInstance(){return this._instance||=new e,this._instance}setGlobalTracerProvider(e){let t=Lt(xn,this._proxyTracerProvider,Wt.instance());return t&&this._proxyTracerProvider.setDelegate(e),t}getTracerProvider(){return Rt(xn)||this._proxyTracerProvider}getTracer(e,t){return this.getTracerProvider().getTracer(e,t)}disable(){zt(xn,Wt.instance()),this._proxyTracerProvider=new bn}}.getInstance(),Cn=()=>$(e=>class extends e{constructor(...e){super(...e),this.hooks.hook(`frontgateConnection:beforeSerializeMessage`,e=>{e.header&&Sn.getTracer(`frontgate-js-sdk`).startActiveSpan(`frontgateConnection:sendMessage`,t=>{let n=this.#e(t.spanContext());n&&(e.header={...e.header,...n}),t.end()})})}#e(e){if(!/^0+$/.test(e.traceId))return{tracing:{value:{value:wn(e)}}}}},{featureName:`OpenTelemetry`,featureGroups:[`Misc`]}),wn=e=>{let t=[18,20,9],n=e=>{for(let n=e.length;n>e.length-16;n-=2){let r=parseInt(e.substring(n-2,n),16);r>127&&(r-=256),t.push(r)}};return n(e.traceId),t.push(17),n(e.spanId),t.push(24),t.push(0),t},Tn=()=>$(e=>class extends e{async requestProxyEndpoint(e,t,n,r,i=this.defaultTimeoutInMs){let a=new I(e,t,r);n&&a.setBody(n),a.header.setTimeout(i);let o={message:a.getPtlMessage(),callbackType:`job`,callbackId:``};await this.hooks.callHook(`frontgateConnection:sendMessage`,o);let s=new Promise((e,t)=>{this.hooks.hookOnce(`frontgateConnection:response:${o.callbackId}`,n=>{try{if(!n.Message.includes(`HTTPProxyResponse`)){t(JSON.stringify(n));return}let r=new ne(n);e({response:r,data:r.data})}catch(e){t(e)}})});return O(i,`Request timeout reached (${i} ms) for ${o.message.Message}`,s)}},{featureName:`HTTPProxyRequest`,featureGroups:[`Misc`]}),En=()=>$(e=>class extends e{async ping(e=this.defaultTimeoutInMs){let t={message:new L().getPtlMessage(),callbackType:`response`,callbackId:`PingResponse`};await this.hooks.callHook(`frontgateConnection:sendMessage`,t);let n=new Promise(e=>{this.hooks.hookOnce(`frontgateConnection:response:${t.callbackId}`,t=>{e(new re(t))})});return O(e,`Request timeout reached (${e} ms) for ${t.message.Message}`,n)}},{featureName:`Pingable`,featureGroups:[`Misc`]}),Dn=e=>$(t=>class extends t{async logRemotely(t){let n={message:new R({Message:`LogMessage`,timestamp:{microseconds:Date.now()*1e3},uuid:{id_1:e??0,id_2:0},level:{value:4},area:61,Version:1,message:t}).getPtlMessage(),callbackType:`job`,callbackId:``};return this.hooks.callHook(`frontgateConnection:sendMessage`,n)}},{featureName:`RemoteLogger`,featureGroups:[`Misc`]}),$=(e,t)=>{let n=e;return n.featureName=t.featureName,n.featureGroups=t.featureGroups,n.disabledFeatures=t.disabledFeatures,n.disabledFeatureGroups=t.disabledFeatureGroups,n};function On(e,t={},n){for(let r in e){let i=e[r],a=n?`${n}:${r}`:r;typeof i==`object`&&i?On(i,t,a):typeof i==`function`&&(t[a]=i)}return t}var kn={run:e=>e()},An=console.createTask===void 0?()=>kn:console.createTask;function jn(e,t){let n=An(t.shift());return e.reduce((e,r)=>e.then(()=>n.run(()=>r(...t))),Promise.resolve())}function Mn(e,t){let n=An(t.shift());return Promise.all(e.map(e=>n.run(()=>e(...t))))}function Nn(e,t){for(let n of[...e])n(t)}var Pn=class{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(e,t,n={}){if(!e||typeof t!=`function`)return()=>{};let r=e,i;for(;this._deprecatedHooks[e];)i=this._deprecatedHooks[e],e=i.to;if(i&&!n.allowDeprecated){let e=i.message;e||=`${r} hook has been deprecated`+(i.to?`, please use ${i.to}`:``),this._deprecatedMessages||=new Set,this._deprecatedMessages.has(e)||(console.warn(e),this._deprecatedMessages.add(e))}if(!t.name)try{Object.defineProperty(t,"name",{get:()=>`_`+e.replace(/\W+/g,`_`)+`_hook_cb`,configurable:!0})}catch{}return this._hooks[e]=this._hooks[e]||[],this._hooks[e].push(t),()=>{t&&=(this.removeHook(e,t),void 0)}}hookOnce(e,t){let n,r=(...e)=>(typeof n==`function`&&n(),n=void 0,r=void 0,t(...e));return n=this.hook(e,r),n}removeHook(e,t){if(this._hooks[e]){let n=this._hooks[e].indexOf(t);n!==-1&&this._hooks[e].splice(n,1),this._hooks[e].length===0&&delete this._hooks[e]}}deprecateHook(e,t){this._deprecatedHooks[e]=typeof t==`string`?{to:t}:t;let n=this._hooks[e]||[];delete this._hooks[e];for(let t of n)this.hook(e,t)}deprecateHooks(e){Object.assign(this._deprecatedHooks,e);for(let t in e)this.deprecateHook(t,e[t])}addHooks(e){let t=On(e),n=Object.keys(t).map(e=>this.hook(e,t[e]));return()=>{for(let e of n.splice(0,n.length))e()}}removeHooks(e){let t=On(e);for(let e in t)this.removeHook(e,t[e])}removeAllHooks(){for(let e in this._hooks)delete this._hooks[e]}callHook(e,...t){return t.unshift(e),this.callHookWith(jn,e,...t)}callHookParallel(e,...t){return t.unshift(e),this.callHookWith(Mn,e,...t)}callHookWith(e,t,...n){let r=this._before||this._after?{name:t,args:n,context:{}}:void 0;this._before&&Nn(this._before,r);let i=e(t in this._hooks?[...this._hooks[t]]:[],n);return i instanceof Promise?i.finally(()=>{this._after&&r&&Nn(this._after,r)}):(this._after&&r&&Nn(this._after,r),i)}beforeEach(e){return this._before=this._before||[],this._before.push(e),()=>{if(this._before!==void 0){let t=this._before.indexOf(e);t!==-1&&this._before.splice(t,1)}}}afterEach(e){return this._after=this._after||[],this._after.push(e),()=>{if(this._after!==void 0){let t=this._after.indexOf(e);t!==-1&&this._after.splice(t,1)}}}};function Fn(){return new Pn}var In=typeof window<`u`;function Ln(e,t={}){let n={inspect:In,group:In,filter:()=>!0,...t},r=n.filter,i=typeof r==`string`?e=>e.startsWith(r):r,a=n.tag?`[${n.tag}] `:``,o=e=>a+e.name+``.padEnd(e._id,`\0`),s={},c=e.beforeEach(e=>{i!==void 0&&!i(e.name)||(s[e.name]=s[e.name]||0,e._id=s[e.name]++,console.time(o(e)))}),l=e.afterEach(e=>{i!==void 0&&!i(e.name)||(n.group&&console.groupCollapsed(e.name),n.inspect?console.timeLog(o(e),e.args):console.timeEnd(o(e)),n.group&&console.groupEnd(),s[e.name]--)});return{close:()=>{c(),l()}}}var Rn=class{#e;get defaultTimeoutInMs(){return this.#e}constructor(e){this.hooks=Fn(),this.#e=1e4,e?.hookDebug&&Ln(this.hooks,{tag:`hooks`}),e?.defaultRequestTimeout&&(this.#e=e.defaultRequestTimeout)}log(e,...t){if(this.hooks.callHook(`base:log`,t),this.logger)switch(e){case H.TRACE:this.logger.trace(t);break;case H.DEBUG:this.logger.debug(t);break;case H.INFO:this.logger.info(t);break;case H.WARN:this.logger.warn(t);break;case H.ERROR:this.logger.error(t);break;case H.FATAL:this.logger.fatal(t);break;default:break}}},zn=class e{#e;#t=[];#n=[];#r=[];constructor(e,t=[],n=[],r=[]){this.#e=e,this.#t=t,this.#n=n,this.#r=r}static create(){return new e(Rn)}#i(e){if(this.#t.includes(e))throw Error(`Feature "${e}" has already been used.`)}#a(e){for(let t of this.#n)if(t.feature===e)throw Error(`Feature "${e}" has been disabled by ${t.disabler.join(`,`)}.`)}#o(e){for(let t of this.#r)if(t.feature===e)throw Error(`Group "${e}" has been disabled by ${t.disabler.join(`,`)}.`)}#s(e,t){for(let n of this.#n)if(n.feature===t){n.disabler.push(e);return}this.#n.push({disabler:[e],feature:t})}#c(e,t){for(let n of this.#r)if(n.feature===t){n.disabler.push(e);return}this.#r.push({disabler:[e],feature:t})}with(t){let{featureName:n,disabledFeatures:r,disabledFeatureGroups:i,featureGroups:a}=t;if(!n)throw Error(`Feature name is missing`);if(n!==`Custom`){if(this.#i(n),this.#a(n),this.#t.push(n),a&&a.length>0)for(let e of a)this.#o(e);if(r&&r.length>0)for(let e of r)this.#s(n,e);if(i&&i.length>0)for(let e of i)this.#c(n,e)}return new e(t(this.#e),this.#t,this.#n,this.#r)}build(e){return new this.#e(e)}getClientConstructor(){return this.#e}};e.AbstractLogger=oe,e.AbstractMdg2Request=M,e.AuthenticationByTokenRequest=N,e.AuthenticationTokenRequest=P,e.AuthenticationTokenResponse=B,e.CancelSubscriptionRequest=F,e.ConnectionState=v,e.ConsoleLogger=ce,e.CookieTokenAuthenticationFactors=p,e.DEFAULT_TIMEOUT_IN_MS=A,e.DefaultHosts=b,e.DeploymentStage=y,e.ErrorResponse=V,e.FLAG_HAS_NEXT_CHUNK=ae,e.FrontgateClient=Rn,e.FrontgateClientBuilder=zn,e.FrontgateClientDataObserver=Ct,e.FrontgateClientEndpointDataObserver=wt,e.HTTPProxyRequest=I,e.HTTPProxyResponse=ne,e.HighLevelRequest=ee,e.HighLevelResponse=te,e.HighLevelUpdate=ie,e.ID_APP_AUTHENTICATED=m,e.ID_USER_AUTHENTICATED=h,e.ID_USER_NONE=g,e.LogLevel=H,e.LoggerHelper=se,e.Mdg2Response=z,e.NullLogger=de,e.PingRequest=L,e.PingResponse=re,e.RawRequest=R,e.TimeOptions=x,e.TransportLayerClientRequestHeader=j,e.WinstonLogger=ue,e.authTokenRequest=fe,e.cookieTokenAuth=Tt,e.createExtendedMixinFactory=$,e.encodeSpanContext=wn,e.endpointRequest=pe,e.endpointSubscriptions=ht,e.fetchAuth=Dt,e.fetchAuthWithOptionalCompressor=Ot,e.getBytesFromBuffer=_,e.httpProxyRequest=Tn,e.levels=le,e.logger=_e,e.messageCompressor=pt,e.openTelemetry=Cn,e.pingRequests=En,e.rawSubscriptions=gt,e.reconnect=kt,e.remotelogger=Dn,e.requests=mt,e.timeToMilliseconds=S,e.tokenAuth=Et,e.useTimeout=O,e.wsConnection=ge});
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.fdsg={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.create,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,s=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),c=(e,t,a,s)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=i(t),l=0,u=c.length,d;l<u;l++)d=c[l],!o.call(e,d)&&d!==a&&n(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(s=r(t,d))||s.enumerable});return e},l=((e,r,i)=>(i=e==null?{}:t(a(e)),c(r||!e||!e.__esModule?n(i,`default`,{value:e,enumerable:!0}):i,e)))(s(((e,t)=>{var n=function(e){return r(e)&&!i(e)};function r(e){return!!e&&typeof e==`object`}function i(e){var t=Object.prototype.toString.call(e);return t===`[object RegExp]`||t===`[object Date]`||o(e)}var a=typeof Symbol==`function`&&Symbol.for?Symbol.for(`react.element`):60103;function o(e){return e.$$typeof===a}function s(e){return Array.isArray(e)?[]:{}}function c(e,t){return t.clone!==!1&&t.isMergeableObject(e)?g(s(e),e,t):e}function l(e,t,n){return e.concat(t).map(function(e){return c(e,n)})}function u(e,t){if(!t.customMerge)return g;var n=t.customMerge(e);return typeof n==`function`?n:g}function d(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return Object.propertyIsEnumerable.call(e,t)}):[]}function f(e){return Object.keys(e).concat(d(e))}function p(e,t){try{return t in e}catch{return!1}}function m(e,t){return p(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function h(e,t,n){var r={};return n.isMergeableObject(e)&&f(e).forEach(function(t){r[t]=c(e[t],n)}),f(t).forEach(function(i){m(e,i)||(p(e,i)&&n.isMergeableObject(t[i])?r[i]=u(i,n)(e[i],t[i],n):r[i]=c(t[i],n))}),r}function g(e,t,r){r||={},r.arrayMerge=r.arrayMerge||l,r.isMergeableObject=r.isMergeableObject||n,r.cloneUnlessOtherwiseSpecified=c;var i=Array.isArray(t);return i===Array.isArray(e)?i?r.arrayMerge(e,t,r):h(e,t,r):c(t,r)}g.all=function(e,t){if(!Array.isArray(e))throw Error(`first argument should be an array`);return e.reduce(function(e,n){return g(e,n,t)},{})},t.exports=g}))());function u(e){return!!e&&typeof e==`object`}function d(...e){let t=e.filter(u);return l.default.all(t,{arrayMerge:(e,t)=>t})}function f(e){return e.replace(/[=]/g,``).replace(/\//g,`_`).replace(/\+/g,`-`)}var p=class{constructor(e){let t=f(e),n=Math.ceil(t.length/2);this.firstFactor=t.substring(0,n),this.secondFactor=t.substring(n)}getFirstFactor(){return this.firstFactor}getSecondFactor(){return this.secondFactor}},m=-2,h=-2,g=-1;function _(e){let t=[];if(e)for(let n=0;n<e.length;n++)t.push(e.readInt8(n));return t}var v=function(e){return e[e.DISCONNECTED=0]=`DISCONNECTED`,e[e.CONNECTING=1]=`CONNECTING`,e[e.AUTHENTICATED=2]=`AUTHENTICATED`,e[e.RECONNECTING=3]=`RECONNECTING`,e}({}),y=function(e){return e[e.production=40]=`production`,e[e.preproduction=35]=`preproduction`,e[e.show=30]=`show`,e[e.testing=20]=`testing`,e}({}),b=function(e){return e.production=`frontgate-eu.factsetdigitalsolutions.com`,e.show=`frontgate-eu.show.factsetdigitalsolutions.com`,e}({}),x=function(e){return e.MAXIMUM_STRING=`9223372036854775807`,e.MINIMUM_STRING=`-9223372036854775807`,e}({});function S(e){return e.toString().slice(0,-3)}var C={version:`7.1.3`,package:`@factset/frontgate-js-sdk`};function w(){let e=T();return{userAgent:e.userAgent??`unknown`,platform:`frontgate-js-sdk`,version:C.version,package:C.package,mobile:/Mobi/i.test(e.userAgent??`unknown`)}}function T(){return typeof navigator<`u`?navigator:typeof process<`u`?{userAgent:`node.js/io.js, ${process.version}`}:{userAgent:`unknown`}}var E=e=>{let t=[18,20,9],n=e=>{for(let n=e.length;n>e.length-16;n-=2){let r=parseInt(e.substring(n-2,n),16);r>127&&(r-=256),t.push(r)}};return n(e.traceId),t.push(17),n(e.spanId),t.push(24),t.push(0),t},D=async(e,t)=>new Promise((n,r)=>{setTimeout(()=>{r(t)},e)}),O=async(e,t,n)=>Promise.race([D(e,t),n]),k=e=>e+Math.random()*100,A=6e3,j=class e{constructor(){this.headerMembers={dataset:{id_dataset:0},id_job:0,flags_r2:0,resend_counter:0,timeout:A,authentication_identifiers:{id_application:0,id_user:0},cache_key:{value:[]},previous_response_hash:{value:[]},tracing:{value:{value:[]}}},this.flags=[]}static{this.PRICE_QUALITY={RLT:129,DLY:0,EOD:130}}static{this.FLAG_VALUE={add_subscription:1,no_merge:2,support_caching:4,permission_denied_response:8,internal_client:16,current_state_refresh:32,subscription_use_pull_permissions:64,allow_chunked_response:128}}getPtlMessage(){return this.headerMembers}getQuality(){return Object.keys(e.PRICE_QUALITY).find(t=>e.PRICE_QUALITY[t]===this.headerMembers.dataset.id_dataset)}setQuality(t){this.headerMembers.dataset.id_dataset=e.PRICE_QUALITY[t]}setIdApplication(e,t=!1){(this.headerMembers.authentication_identifiers.id_application===0||t)&&(this.headerMembers.authentication_identifiers.id_application=e)}setIdUser(e,t=!1){(this.headerMembers.authentication_identifiers.id_user===0||t)&&(this.headerMembers.authentication_identifiers.id_user=e)}setFlag(e,t=!0){let n=this.flags.indexOf(e);t&&n===-1&&this.flags.push(e),!t&&n>-1&&this.flags.splice(n,1),this.headerMembers.flags_r2=this.getFlagsValue()}getFlagsValue(){return this.flags.reduce((t,n)=>t+e.FLAG_VALUE[n],0)}isFlagValueSet(e){return this.flags.find(t=>t===e)!==void 0}setJobId(e){this.headerMembers.id_job=e}getJobId(){return this.headerMembers.id_job}countResend(){this.headerMembers.resend_counter++}getResendCounter(){return this.headerMembers.resend_counter}setTimeout(e){if(e>0){this.headerMembers.timeout=e;return}throw Error(`Attempted to set the timeout to "${e}". The timeout must be greater than 0.`)}getTimeout(){return this.headerMembers.timeout}setTracing(e){/^0+$/.test(e.traceId)||(this.headerMembers.tracing.value.value=E(e))}static getDataSet(t){return Object.prototype.hasOwnProperty.call(e.PRICE_QUALITY,t)?e.PRICE_QUALITY[t]:e.PRICE_QUALITY.DLY}},M=class{constructor(e,t){this.header=new j,this.coreMembers={Message:e,Version:t},this.members={}}getPtlMessage(){let e={header:this.header.getPtlMessage()};return d(this.coreMembers,e,this.members)}},N=class{constructor(e,t){this.token=e,this.maximumIdleInterval=t}toJson(){let e=w();return{Message:`AuthenticationByTokenRequest`,Version:1,token:{value:this.token},software:JSON.stringify(e),os:e.platform,feature_flags_wanted:{value:0},maximum_idle_interval:this.maximumIdleInterval,maximum_receivable_message_size:1048576,flags:0,cache_authentication_salt:{value:[]},cache_authentication_encrypted_secret:{encrypted_secret:[]}}}},P=class e extends M{static{this.NAME=`AuthenticationTokenRequest`}static{this.VERSION=6}static{this.LIFETIME_SECONDS_DEFAULT=-1}static{this.LIFETIME_SECONDS_MAXIMUM=-2}static{this.FLAG_SINGLE_USAGE=1}constructor(t,n,r,i,a=!1){super(e.NAME,e.VERSION),n&&this.header.setIdUser(n),r&&this.header.setIdApplication(r),i&&this.header.setTimeout(i),this.members.flags=a?e.FLAG_SINGLE_USAGE:0,this.members.lifetime_seconds_r2=t??e.LIFETIME_SECONDS_DEFAULT,this.header.setFlag(`no_merge`)}},F=class e extends M{static{this.NAME=`CancelSubscriptionRequest`}static{this.VERSION=6}constructor(t){super(e.NAME,e.VERSION),this.members.id_job_subscription=t}},ee=class e extends M{static{this.NAME=`HighLevelRequest`}static{this.VERSION=3}static{this.METHOD={GET:1,POST:2}}constructor(t,n,r={},i){super(e.NAME,e.VERSION),this.members.accept=`application/json`,this.members.content_type=`application/json`,this.members.body={value:[]},this.members.query=``,this.members.path=n,this.setMethod(t),Object.keys(r).length>0&&(t===`POST`?this.setBody(r):this.setQuery(r)),i&&this.setOptions(i)}setOptions(e){Object.hasOwnProperty.call(e,`accept`)&&(this.members.accept=e.accept),Object.hasOwnProperty.call(e,`content_type`)&&(this.members.content_type=e.content_type),Object.hasOwnProperty.call(e,`subscribe`)&&e.subscribe&&this.header.setFlag(`add_subscription`),Object.hasOwnProperty.call(e,`no_merge`)&&e.no_merge&&this.header.setFlag(`no_merge`),Object.hasOwnProperty.call(e,`allowChunkedResponse`)&&e.allowChunkedResponse&&this.header.setFlag(`allow_chunked_response`),Object.hasOwnProperty.call(e,`idApplication`)&&e.idApplication&&this.header.setIdApplication(e.idApplication),Object.hasOwnProperty.call(e,`idUser`)&&e.idUser&&this.header.setIdUser(e.idUser)}setMethod(t){let n=t===`POST`?e.METHOD.POST:e.METHOD.GET;this.members.method={value:n}}setBody(e={}){e instanceof Array?this.members.body={value:e}:this.members.body={value:JSON.stringify(e)}}getData(){return this.members.method.value===e.METHOD.POST?e.ptlToJsonData(this.members.body.value):this.members.query}setQuery(e={}){this.members.query=Object.keys(e).map(t=>`${encodeURIComponent(t)}=${encodeURIComponent(e[t])}`).join(`&`)}static ptlToJsonData(e){if(typeof e==`string`)return JSON.parse(e);if(e instanceof Array&&e.length>0){let t=``;return e.forEach(e=>{t+=String.fromCharCode(e)}),JSON.parse(t)}}},I=class e extends M{static{this.NAME=`HTTPProxyRequest`}static{this.VERSION=2}static{this.PROTOCOL={HTTP:1,HTTPS:2}}static{this.METHOD={GET:1,POST:2,OPTIONS:3,HEAD:4,PUT:5,DELETE:6,TRACE:7,CONNECT:8}}constructor(t,n,r){super(e.NAME,e.VERSION),this.members.request={headers:{values:[{key:`accept`,value:`application/json`},{key:`content-type`,value:`application/json`}]},protocol:{value:e.PROTOCOL.HTTPS},host:``,port:0,path:n,query:``,body:{value:[]}},this.setQuery(),this.setMethod(t),r&&this.setOptions(r)}setOptions(t){t.no_merge&&this.header.setFlag(`no_merge`),t.idApplication&&this.header.setIdApplication(t.idApplication),t.idUser&&this.header.setIdUser(t.idUser),t.protocol&&(this.members.request.protocol=t.protocol.toUpperCase()===`HTTP`?{value:e.PROTOCOL.HTTP}:{value:e.PROTOCOL.HTTPS}),t.method&&(this.members.request.method={value:e.METHOD[t.method]}),t.host&&(this.members.request.host=t.host),t.port&&(this.members.request.port=t.port),t.path&&(this.members.request.path=t.path),t.query&&(this.members.request.query=typeof t.query==`string`?t.query:Object.keys(t.query).map(e=>`${encodeURIComponent(e)}=${encodeURIComponent(t.query[e])}`).join(`&`)),t.body&&this.setBody(t.body),t.headers&&this.setHeaders(t.headers)}setHeaders(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n=e[t],r=this.members.request.headers.values.findIndex(e=>e.key===t);r!==-1&&this.members.request.headers.values.splice(r,1),this.members.request.headers.values.push({key:t,value:n})}}setQuery(){if(this.members.request.path.includes(`?`)){let e=this.members.request.path.split(`?`);this.members.request.path=e[0],this.members.request.query=e[1]}}setMethod(t){this.members.request.method={value:e.METHOD[t]}}setBody(e={}){return e instanceof Array||typeof e==`string`?this.members.request.body={value:e}:this.members.request.body={value:JSON.stringify(e)},this}getData(){if(this.members.request.body?.value)return ee.ptlToJsonData(this.members.request.body.value)}},L=class e{static{this.NAME=`PingRequest`}static{this.VERSION=3}constructor(){this._timeAtSender=Date.now()}getPtlMessage(){return{Message:e.NAME,Version:e.VERSION,time_at_sender:{microseconds:this._timeAtSender*1e3}}}resetTimeAtSender(){this._timeAtSender=Date.now()}get timeAtSender(){return this._timeAtSender}},R=class extends M{constructor(e){super(e.Message,e.version?e.version:e.Version),this._extractRequestAttributes(e)}_extractRequestAttributes(e){for(let t of Object.keys(this.coreMembers))delete e[t];this.members=(0,l.default)(this.members,e)}},z=class{constructor(e){this.raw=e}get msg(){return this.raw}get name(){return this.raw.Message}get jobId(){return this.raw.header.id_job}get serviceId(){return this.raw.header.id_service}isUpdateMessage(){return Object.hasOwnProperty.call(this.raw,`header`)?(Object.hasOwnProperty.call(this.raw.header,`id_service`)||Object.hasOwnProperty.call(this.raw.header,`id_job`))&&this.raw.Message.endsWith(`Update`):!1}isLossMessage(){return Object.hasOwnProperty.call(this.raw,`header`)?(Object.hasOwnProperty.call(this.raw.header,`id_service`)||Object.hasOwnProperty.call(this.raw.header,`id_job`))&&(this.raw.Message.endsWith(`LossMessage`)||this.raw.Message.endsWith(`Loss`)):!1}},B=class extends z{constructor(e){if(super(e),!this.raw.token.value.b64)throw Error(`Token not set in AuthenticationTokenResponse`);if(!this.raw.expiry.microseconds)throw Error(`Expiry not set in AuthenticationTokenResponse`);this.token=this.raw.token.value.b64,this.expiry=parseInt(S(this.raw.expiry.microseconds),10)}getToken(){return this.token}getExpiry(){return this.expiry}},V=class extends z{get reason(){return this.raw.details}get jobId(){return this.raw.id_job}},te=class extends z{constructor(e){super(e);try{this.responseData=JSON.parse(this.raw.body.value)}catch(e){throw Error(`Could not parse HighLevelResponse: ${e.message}`)}}get data(){return this.responseData.data}get meta(){return this.responseData.meta}get status(){return this.meta.status}get statusCode(){return this.status.code}},ne=class extends z{constructor(e){super(e);try{let e=this.raw.response.body.value,t=e.substr(0,1)===`{`;this.responseData=t?JSON.parse(e):e}catch(e){throw Error(`Could not parse HTTPProxyResponse: ${e}`)}this.responseInfo=this.raw.info,this.statusReason=this.raw.response.status_reason,this.statusCode=this.raw.response.status_code.value}get data(){return this.responseData}get meta(){return this.responseData.meta}get status(){return{code:this.statusCode,reason:this.statusReason}}},re=class e{static{this.NAME=`Foundation::PingResponse`}static{this.VERSION=2}constructor(t){if(t.Message!==e.NAME)throw Error(`Unsupported message=${t.Message}`);if(t.Version!==e.VERSION)throw Error(`Unsupported version=${t.Version} for message=${t.Message}`);this._timeReceivedResponse=Date.now(),this._timeAtSender=Number(S(t.time_at_sender.microseconds)),this._timeFromRequest=Number(S(t.time_from_request.microseconds))}get timeAtPeer(){return this._timeAtSender}get timeOfRequest(){return this._timeFromRequest}get timeOfResponse(){return this._timeReceivedResponse}get latencyTotal(){return this._timeReceivedResponse-this._timeFromRequest}get latencyAtPeer(){return this._timeAtSender-this._timeFromRequest}},ie=class extends z{constructor(e){if(super(e),typeof this.raw.body.value!=`string`)throw Error(`Incorrect response type in HighLevelUpdate`);try{this.responseData=JSON.parse(this.raw.body.value)}catch(e){throw Error(`Could not parse HighLevelUpdate: ${e.message}`)}}get data(){return this.responseData}},ae=8,H=function(e){return e[e.TRACE=10]=`TRACE`,e[e.DEBUG=20]=`DEBUG`,e[e.INFO=30]=`INFO`,e[e.WARN=40]=`WARN`,e[e.ERROR=50]=`ERROR`,e[e.FATAL=60]=`FATAL`,e[e.SILENT=100]=`SILENT`,e}({}),oe=class e{static{this.loggers={}}constructor(t=``){this.defaultLevel=40,this.noop=()=>null,this.name=t,this.level=this.defaultLevel,this.setDefaultLevelFromLocalStorage(),Object.assign(e.loggers,{[t]:this})}getName(){return this.name}setLevel(e){this.level=e}getLevel(){return typeof this.level==`number`&&isFinite(this.level)&&Math.floor(this.level)===this.level?this.level:this.defaultLevel}shouldLog(e){switch(this.getLevel()){case 100:return!1;case 60:return e===`fatal`;case 50:return e===`fatal`||e===`error`;case 40:return e===`fatal`||e===`error`||e===`warn`;case 30:return e===`fatal`||e===`error`||e===`warn`||e===`info`;case 20:return e===`fatal`||e===`error`||e===`warn`||e===`info`||e===`debug`;default:return!0}}setDefaultLevelFromLocalStorage(){let t;try{if(typeof localStorage!=`object`)return;let e=localStorage.getItem(`loglevel`);if(!e)return;t=e}catch{return}t&&this.setLevel(e.getLogLevel(t))}static getLogLevel(e){let t=e.toLowerCase();switch(t){case`silent`:return 100;case`fatal`:return 60;case`error`:return 50;case`warn`:return 40;case`info`:return 30;case`debug`:return 20;case`trace`:return 10;default:throw Error(`Invalid log level: ${t}`)}}static getLogger(t,n){if(Object.prototype.hasOwnProperty.call(e.loggers,t))return e.loggers[t];let r=new n(t);return e.loggers[t]=r,r}},se=class{static getLogLevel(e){let t=e.toLowerCase();switch(t){case`silent`:return H.SILENT;case`fatal`:return H.FATAL;case`error`:return H.ERROR;case`warn`:return H.WARN;case`info`:return H.INFO;case`debug`:return H.DEBUG;case`trace`:return H.TRACE;default:throw Error(`Invalid log level: ${t}`)}}},ce=class e extends oe{constructor(...e){super(...e),this.trace=this.getLogMethod(`trace`),this.debug=this.getLogMethod(`debug`),this.info=this.getLogMethod(`info`),this.warn=this.getLogMethod(`warn`),this.error=this.getLogMethod(`error`),this.fatal=this.getLogMethod(`fatal`)}setLevel(e){this.level=e,this.trace=this.getLogMethod(`trace`),this.debug=this.getLogMethod(`debug`),this.info=this.getLogMethod(`info`),this.warn=this.getLogMethod(`warn`),this.error=this.getLogMethod(`error`),this.fatal=this.getLogMethod(`fatal`)}getLogMethod(e){if(this.shouldLog(e)){let t=e===`debug`||e===`fatal`?`log`:e,n=this.name?`${this.name}: [${e.toUpperCase()}] `:`-----> [${e.toUpperCase()}] `;return Function.prototype.bind.call(console[t],console,n)}return this.noop}static getLogger(t=``){return super.getLogger(t,e)}},le={silent:0,fatal:1,error:2,warn:3,info:4,debug:5,trace:6},ue=class extends oe{constructor(e,t=``){super(t),this.name=t,this.logger=e,e.trace&&(this.trace=Function.prototype.bind.call(e.trace,e)),this.debug=Function.prototype.bind.call(e.debug,e),this.info=Function.prototype.bind.call(e.info,e),this.warn=Function.prototype.bind.call(e.warn,e),this.error=Function.prototype.bind.call(e.error,e),this.fatal=Function.prototype.bind.call(e.error,e)}setLevel(e){this.level=e,this.logger&&(this.logger.level=H[e].toLowerCase())}static getLogger(e=``){return Object.prototype.hasOwnProperty.call(oe.loggers,e)?oe.loggers[e]:null}},de=class e extends oe{constructor(...e){super(...e),this.trace=this.noop,this.debug=this.noop,this.info=this.noop,this.warn=this.noop,this.error=this.noop}static getLogger(t=``){return super.getLogger(t,e)}},fe=()=>$(e=>class extends e{async requestAuthenticationToken(e=30,t=0,n=0,r=this.defaultTimeoutInMs){let i={message:new P(e,t,n,r).getPtlMessage(),callbackType:`job`,callbackId:``};await this.hooks.callHook(`frontgateConnection:sendMessage`,i);let a=new Promise((e,t)=>{this.hooks.hookOnce(`frontgateConnection:response:${i.callbackId}`,n=>{if(!n.Message.includes(`AuthenticationTokenResponse`)){t(JSON.stringify(n));return}let r=new B(n);e({token:r.getToken(),expiry:r.getExpiry()})})});return O(r,`Request timeout reached (${r} ms) for ${i.message.Message}`,a)}async requestAuthenticationTokenForCookieTokenAuthentication(e=30,t=0,n=0,r=this.defaultTimeoutInMs){return new p((await this.requestAuthenticationToken(e,t,n,r)).token)}},{featureName:`AuthTokenRequest`,featureGroups:[`Misc`]}),pe=e=>$(t=>class extends t{async requestEndpoint(t,n,r,i,a=this.defaultTimeoutInMs){let o=new ee(t,n,r,{...i,allowChunkedResponse:!e?.disableChunkedResponse});o.header.setTimeout(a),e?.allowPermissionDeniedResponse&&o.header.setFlag(`permission_denied_response`);let s={message:o.getPtlMessage(),callbackType:`job`,callbackId:``};await this.hooks.callHook(`frontgateConnection:sendMessage`,s);let c=new Promise((e,t)=>{let n=[],r=()=>{this.hooks.hookOnce(`frontgateConnection:response:${s.callbackId}`,i=>{try{if(!i.Message.includes(`HighLevelResponse`)){t(JSON.stringify(i));return}if(this.#e(i))n.push({body:i.body?.value??``,processingTime:i.header?.processingTime??0}),r();else{n.push({body:i.body?.value??``,processingTime:i.header?.processingTime??0});let t=new te({...i,body:{value:n.map(e=>e.body).join(``)},header:{...i.header,processingTime:n.reduce((e,t)=>e+t.processingTime,0)}});e({response:t,data:t.data})}}catch(e){t(e)}})};r()});return O(a,`Request timeout reached (${a} ms) for ${s.message.Message}`,c)}#e(e){return((e.header?.flags??0)&8)==8}},{featureName:`EndpointRequest`,featureGroups:[`Misc`]}),me=null;typeof WebSocket<`u`?me=WebSocket:typeof MozWebSocket<`u`?me=MozWebSocket:typeof global<`u`?me=global.WebSocket||global.MozWebSocket:typeof window<`u`?me=window.WebSocket||window.MozWebSocket:typeof self<`u`&&(me=self.WebSocket||self.MozWebSocket);var he=me,ge=e=>$(t=>class extends t{#e;#t;#n=`disconnected`;#r;#i=0;#a;#o;get#s(){return this.#e&&this.#e.readyState<2?this.#n:`disconnected`}#c=0;#l=[];set conf(e){let t=this.#_(e);this.#c=t.messageBufferSize,this.#t=t}constructor(...t){super(...t),this.#a=-2,this.#o=-1,e&&(this.conf=e),this.hooks.hook(`frontgateConnection:setIdApp`,e=>{this.#a=e}),this.hooks.hook(`frontgateConnection:setIdUser`,e=>{this.#o=e}),this.hooks.hook(`frontgateConnection:sendMessage`,e=>{if(e.callbackType===`job`&&(e.callbackId=`${this.#m(e.message)}`),this.#s===`connected`&&e.callbackType===`response`)this.#f(e.message);else if(this.#s===`authenticated`)this.#h(e.message),this.#f(e.message);else{if(this.#l.length>=this.#c)throw Error(`Message buffer is full`);this.#l.push(e)}}),this.hooks.hook(`reconnect:attempt`,async()=>{clearInterval(this.#r),this.log(H.DEBUG,`Reconnecting`),await this.hooks.callHook(`frontgateConnection:reset`);try{await this.connect(),await this.hooks.callHook(`reconnect:success`)}catch(e){this.log(H.ERROR,`Reconnect failed`,e),await this.hooks.callHook(`reconnect:failed`,e)}})}async connect(){if(!this.#t)throw Error(`No connection configuration set`);if(this.#s!==`disconnected`)throw Error(`Client is already connected or is connecting right now`);let{host:e,port:t,tls:n,pathPrefix:r}=this.#t;this.#n=`connecting`;let i=`${n?`wss`:`ws`}://${e}:${t}${r??``}/ws`,a={encoding:`jsjson-v2`};await this.hooks.callHook(`frontgateConnection:afterSetEncoding`,a);let[o,s]=a.encoding.split(`-`),c={url:i,subProtocols:[`${s?`${s}.`:``}ws-${o}.mdgms.com`]};try{await this.hooks.callHook(`frontgateConnection:beforeConnect`,c)}catch(e){throw this.#n=`disconnected`,e}this.log(H.DEBUG,`Connecting to ${c.url} with subprotocols ${c.subProtocols}`);let l=new Promise((e,t)=>{if(!this.#t)throw Error(`No connection configuration set`);this.#t.wsClientOptions&&typeof window>`u`?this.#e=new he(c.url,c.subProtocols,this.#t.wsClientOptions):this.#e=new he(c.url,c.subProtocols),this.#e.binaryType=`arraybuffer`;let n;this.#e.onopen=()=>{let r=()=>{for(this.log(H.DEBUG,`Draining message buffer`);this.#l.length>0;){let e=this.#l.shift();e&&(this.#h(e.message),this.#f(e.message))}},i=()=>{if(!this.#t)throw Error(`No connection configuration set`);this.#r=setInterval(()=>{this.log(H.DEBUG,`Sending keepalive`),this.hooks.callHook(`frontgateConnection:sendMessage`,{message:this.#d(),callbackType:`response`,callbackId:`KeepAliveMessage`})},this.#t.maximumIdleIntervalInS/2*1e3)};this.#n=`connected`,this.log(H.DEBUG,`Connected`),this.hooks.callHook(`frontgateConnection:connected`,this.#t).catch(t),n=this.hooks.hookOnce(`frontgateConnection:authenticated`,()=>{this.#n=`authenticated`,this.log(H.DEBUG,`Authenticated`),r(),i(),e()})},this.#e.onclose=e=>{n?.(),this.log(H.DEBUG,`Disconnected`,e),this.#n===`connecting`||this.#n===`connected`?t(JSON.stringify(e)):this.hooks.callHook(`frontgateConnection:disconnected`,e),clearInterval(this.#r),this.#n=`disconnected`},this.#e.onerror=e=>{n?.(),this.log(H.ERROR,`Error:`,e),this.hooks.callHook(`frontgateConnection:error`,e),(this.#n===`connecting`||this.#n===`connected`)&&t(Error(`Websocket error`)),clearInterval(this.#r),this.#n=`disconnected`},this.#e.onmessage=e=>{let{data:t}=e;this.log(H.DEBUG,`Received data:`,t);let n={msg:t};this.hooks.callHook(`frontgateConnection:afterReceiveMessage`,n).then(()=>{this.log(H.DEBUG,`Received message`,n.msg);let e=n.msg.toString(`utf-8`),t=JSON.parse(e);if(this.hooks.callHook(`frontgateConnection:message`,t),t.Message===`Foundation::DisconnectionMessage`){this.#e?.close(),this.hooks.callHook(`frontgateConnection:disconnected`,t);return}this.#p(t)})}}),u=`Timeout reached (${this.defaultTimeoutInMs} ms) for connection to ${i}`;return O(this.defaultTimeoutInMs,u,l)}async disconnect(){return new Promise(e=>{this.#f(this.#u()),this.hooks.hookOnce(`frontgateConnection:disconnected`,()=>{this.#e?.close(),e()})})}#u(){return{Message:`Foundation::DisconnectionMessage`,Version:3,reason:{value:64},details:`client shutdown`}}#d(){return{Message:`KeepAliveMessage`,Version:2}}async#f(e){await this.hooks.callHook(`frontgateConnection:beforeSerializeMessage`,e);let t={msg:JSON.stringify(e)};await this.hooks.callHook(`frontgateConnection:beforeSendMessage`,t),this.log(H.DEBUG,`Sending message:`,e),this.log(H.TRACE,`Sending data:`,t.msg);try{this.#e?.send(t.msg)}catch(t){let n=this.#g(t,e);this.#p(n.msg)}}#p(e){if(e.header?.id_job!==void 0){this.hooks.callHook(`frontgateConnection:response:${e.header.id_job}`,e);return}if(e.header?.id_service!==void 0&&e.id_notation!==void 0){this.hooks.callHook(`frontgateConnection:response:${e.header.id_service}-${e.id_notation}`,e);return}if(e.id_job!==void 0){this.hooks.callHook(`frontgateConnection:response:${e.id_job}`,e);return}typeof e.Message==`string`&&this.hooks.callHook(`frontgateConnection:response:${e.Message.replace(`Foundation::`,``)}`,e)}#m(e){this.#i+=1;let t=this.#i;return e.header={...e.header,id_job:t},this.#i}#h(e){e.header||={authentication_identifiers:{id_application:void 0,id_user:void 0}},e.header.authentication_identifiers||(e.header={...e.header,authentication_identifiers:{id_application:void 0,id_user:void 0}}),e.header.authentication_identifiers.id_application||=this.#a,e.header.authentication_identifiers.id_user||=this.#o}#g(e,t){return new V({Message:`Foundation::ErrorResponse`,Version:1,id_job:t.header?.id_job,reason:8,details:e})}#_(e){let t=e.maximumIdleIntervalInS??60,n=e.maximumIdleInterval??t*1e6;return{...e,payloadContent:e.payloadContent??`foundation`,maximumIdleIntervalInS:t,maximumIdleInterval:n,tls:e.tls??!0,messageBufferSize:e.messageBufferSize??512}}isConnected(){return this.#s===`authenticated`}isDisconnected(){return this.#n!==`authenticated`}isReadyToConnect(){return this.#s===`disconnected`}},{featureName:`WSConnection`,disabledFeatureGroups:[`Connection`]}),_e=(e,t)=>(t&&e.setLevel(t),$(t=>class extends t{constructor(...t){super(...t),this.logger=e}},{featureName:`Logger`,featureGroups:[`Misc`]})),U=Uint8Array,W=Uint16Array,ve=Int32Array,ye=new U([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),be=new U([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),xe=new U([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Se=function(e,t){for(var n=new W(31),r=0;r<31;++r)n[r]=t+=1<<e[r-1];for(var i=new ve(n[30]),r=1;r<30;++r)for(var a=n[r];a<n[r+1];++a)i[a]=a-n[r]<<5|r;return{b:n,r:i}},Ce=Se(ye,2),we=Ce.b,Te=Ce.r;we[28]=258,Te[258]=28;for(var Ee=Se(be,0),De=Ee.b,Oe=Ee.r,ke=new W(32768),G=0;G<32768;++G){var K=(G&43690)>>1|(G&21845)<<1;K=(K&52428)>>2|(K&13107)<<2,K=(K&61680)>>4|(K&3855)<<4,ke[G]=((K&65280)>>8|(K&255)<<8)>>1}for(var q=(function(e,t,n){for(var r=e.length,i=0,a=new W(t);i<r;++i)e[i]&&++a[e[i]-1];var o=new W(t);for(i=1;i<t;++i)o[i]=o[i-1]+a[i-1]<<1;var s;if(n){s=new W(1<<t);var c=15-t;for(i=0;i<r;++i)if(e[i])for(var l=i<<4|e[i],u=t-e[i],d=o[e[i]-1]++<<u,f=d|(1<<u)-1;d<=f;++d)s[ke[d]>>c]=l}else for(s=new W(r),i=0;i<r;++i)e[i]&&(s[i]=ke[o[e[i]-1]++]>>15-e[i]);return s}),J=new U(288),G=0;G<144;++G)J[G]=8;for(var G=144;G<256;++G)J[G]=9;for(var G=256;G<280;++G)J[G]=7;for(var G=280;G<288;++G)J[G]=8;for(var Ae=new U(32),G=0;G<32;++G)Ae[G]=5;var je=q(J,9,0),Me=q(J,9,1),Ne=q(Ae,5,0),Pe=q(Ae,5,1),Fe=function(e){for(var t=e[0],n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},Y=function(e,t,n){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},Ie=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},Le=function(e){return(e+7)/8|0},Re=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new U(e.subarray(t,n))},ze=[`unexpected EOF`,`invalid block type`,`invalid length/literal`,`invalid distance`,`stream finished`,`no stream handler`,,`no callback`,`invalid UTF-8 data`,`extra field too long`,`date not in range 1980-2099`,`filename too long`,`stream finishing`,`invalid zip data`],X=function(e,t,n){var r=Error(t||ze[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,X),!n)throw r;return r},Be=function(e,t,n,r){var i=e.length,a=r?r.length:0;if(!i||t.f&&!t.l)return n||new U(0);var o=!n,s=o||t.i!=2,c=t.i;o&&(n=new U(i*3));var l=function(e){var t=n.length;if(e>t){var r=new U(Math.max(t*2,e));r.set(n),n=r}},u=t.f||0,d=t.p||0,f=t.b||0,p=t.l,m=t.d,h=t.m,g=t.n,_=i*8;do{if(!p){u=Y(e,d,1);var v=Y(e,d+1,3);if(d+=3,!v){var y=Le(d)+4,b=e[y-4]|e[y-3]<<8,x=y+b;if(x>i){c&&X(0);break}s&&l(f+b),n.set(e.subarray(y,x),f),t.b=f+=b,t.p=d=x*8,t.f=u;continue}else if(v==1)p=Me,m=Pe,h=9,g=5;else if(v==2){var S=Y(e,d,31)+257,C=Y(e,d+10,15)+4,w=S+Y(e,d+5,31)+1;d+=14;for(var T=new U(w),E=new U(19),D=0;D<C;++D)E[xe[D]]=Y(e,d+D*3,7);d+=C*3;for(var O=Fe(E),k=(1<<O)-1,A=q(E,O,1),D=0;D<w;){var j=A[Y(e,d,k)];d+=j&15;var y=j>>4;if(y<16)T[D++]=y;else{var M=0,N=0;for(y==16?(N=3+Y(e,d,3),d+=2,M=T[D-1]):y==17?(N=3+Y(e,d,7),d+=3):y==18&&(N=11+Y(e,d,127),d+=7);N--;)T[D++]=M}}var P=T.subarray(0,S),F=T.subarray(S);h=Fe(P),g=Fe(F),p=q(P,h,1),m=q(F,g,1)}else X(1);if(d>_){c&&X(0);break}}s&&l(f+131072);for(var ee=(1<<h)-1,I=(1<<g)-1,L=d;;L=d){var M=p[Ie(e,d)&ee],R=M>>4;if(d+=M&15,d>_){c&&X(0);break}if(M||X(2),R<256)n[f++]=R;else if(R==256){L=d,p=null;break}else{var z=R-254;if(R>264){var D=R-257,B=ye[D];z=Y(e,d,(1<<B)-1)+we[D],d+=B}var V=m[Ie(e,d)&I],te=V>>4;V||X(3),d+=V&15;var F=De[te];if(te>3){var B=be[te];F+=Ie(e,d)&(1<<B)-1,d+=B}if(d>_){c&&X(0);break}s&&l(f+131072);var ne=f+z;if(f<F){var re=a-F,ie=Math.min(F,ne);for(re+f<0&&X(3);f<ie;++f)n[f]=r[re+f]}for(;f<ne;++f)n[f]=n[f-F]}}t.l=p,t.p=L,t.b=f,t.f=u,p&&(u=1,t.m=h,t.d=m,t.n=g)}while(!u);return f!=n.length&&o?Re(n,0,f):n.subarray(0,f)},Z=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8},Ve=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8,e[r+2]|=n>>16},He=function(e,t){for(var n=[],r=0;r<e.length;++r)e[r]&&n.push({s:r,f:e[r]});var i=n.length,a=n.slice();if(!i)return{t:Ye,l:0};if(i==1){var o=new U(n[0].s+1);return o[n[0].s]=1,{t:o,l:1}}n.sort(function(e,t){return e.f-t.f}),n.push({s:-1,f:25001});var s=n[0],c=n[1],l=0,u=1,d=2;for(n[0]={s:-1,f:s.f+c.f,l:s,r:c};u!=i-1;)s=n[n[l].f<n[d].f?l++:d++],c=n[l!=u&&n[l].f<n[d].f?l++:d++],n[u++]={s:-1,f:s.f+c.f,l:s,r:c};for(var f=a[0].s,r=1;r<i;++r)a[r].s>f&&(f=a[r].s);var p=new W(f+1),m=Ue(n[u-1],p,0);if(m>t){var r=0,h=0,g=m-t,_=1<<g;for(a.sort(function(e,t){return p[t.s]-p[e.s]||e.f-t.f});r<i;++r){var v=a[r].s;if(p[v]>t)h+=_-(1<<m-p[v]),p[v]=t;else break}for(h>>=g;h>0;){var y=a[r].s;p[y]<t?h-=1<<t-p[y]++-1:++r}for(;r>=0&&h;--r){var b=a[r].s;p[b]==t&&(--p[b],++h)}m=t}return{t:new U(p),l:m}},Ue=function(e,t,n){return e.s==-1?Math.max(Ue(e.l,t,n+1),Ue(e.r,t,n+1)):t[e.s]=n},We=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new W(++t),r=0,i=e[0],a=1,o=function(e){n[r++]=e},s=1;s<=t;++s)if(e[s]==i&&s!=t)++a;else{if(!i&&a>2){for(;a>138;a-=138)o(32754);a>2&&(o(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(o(i),--a;a>6;a-=6)o(8304);a>2&&(o(a-3<<5|8208),a=0)}for(;a--;)o(i);a=1,i=e[s]}return{c:n.subarray(0,r),n:t}},Ge=function(e,t){for(var n=0,r=0;r<t.length;++r)n+=e[r]*t[r];return n},Ke=function(e,t,n){var r=n.length,i=Le(t+2);e[i]=r&255,e[i+1]=r>>8,e[i+2]=e[i]^255,e[i+3]=e[i+1]^255;for(var a=0;a<r;++a)e[i+a+4]=n[a];return(i+4+r)*8},qe=function(e,t,n,r,i,a,o,s,c,l,u){Z(t,u++,n),++i[256];for(var d=He(i,15),f=d.t,p=d.l,m=He(a,15),h=m.t,g=m.l,_=We(f),v=_.c,y=_.n,b=We(h),x=b.c,S=b.n,C=new W(19),w=0;w<v.length;++w)++C[v[w]&31];for(var w=0;w<x.length;++w)++C[x[w]&31];for(var T=He(C,7),E=T.t,D=T.l,O=19;O>4&&!E[xe[O-1]];--O);var k=l+5<<3,A=Ge(i,J)+Ge(a,Ae)+o,j=Ge(i,f)+Ge(a,h)+o+14+3*O+Ge(C,E)+2*C[16]+3*C[17]+7*C[18];if(c>=0&&k<=A&&k<=j)return Ke(t,u,e.subarray(c,c+l));var M,N,P,F;if(Z(t,u,1+(j<A)),u+=2,j<A){M=q(f,p,0),N=f,P=q(h,g,0),F=h;var ee=q(E,D,0);Z(t,u,y-257),Z(t,u+5,S-1),Z(t,u+10,O-4),u+=14;for(var w=0;w<O;++w)Z(t,u+3*w,E[xe[w]]);u+=3*O;for(var I=[v,x],L=0;L<2;++L)for(var R=I[L],w=0;w<R.length;++w){var z=R[w]&31;Z(t,u,ee[z]),u+=E[z],z>15&&(Z(t,u,R[w]>>5&127),u+=R[w]>>12)}}else M=je,N=J,P=Ne,F=Ae;for(var w=0;w<s;++w){var B=r[w];if(B>255){var z=B>>18&31;Ve(t,u,M[z+257]),u+=N[z+257],z>7&&(Z(t,u,B>>23&31),u+=ye[z]);var V=B&31;Ve(t,u,P[V]),u+=F[V],V>3&&(Ve(t,u,B>>5&8191),u+=be[V])}else Ve(t,u,M[B]),u+=N[B]}return Ve(t,u,M[256]),u+N[256]},Je=new ve([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Ye=new U(0),Xe=function(e,t,n,r,i,a){var o=a.z||e.length,s=new U(r+o+5*(1+Math.ceil(o/7e3))+i),c=s.subarray(r,s.length-i),l=a.l,u=(a.r||0)&7;if(t){u&&(c[0]=a.r>>3);for(var d=Je[t-1],f=d>>13,p=d&8191,m=(1<<n)-1,h=a.p||new W(32768),g=a.h||new W(m+1),_=Math.ceil(n/3),v=2*_,y=function(t){return(e[t]^e[t+1]<<_^e[t+2]<<v)&m},b=new ve(25e3),x=new W(288),S=new W(32),C=0,w=0,T=a.i||0,E=0,D=a.w||0,O=0;T+2<o;++T){var k=y(T),A=T&32767,j=g[k];if(h[A]=j,g[k]=A,D<=T){var M=o-T;if((C>7e3||E>24576)&&(M>423||!l)){u=qe(e,c,0,b,x,S,w,E,O,T-O,u),E=C=w=0,O=T;for(var N=0;N<286;++N)x[N]=0;for(var N=0;N<30;++N)S[N]=0}var P=2,F=0,ee=p,I=A-j&32767;if(M>2&&k==y(T-I))for(var L=Math.min(f,M)-1,R=Math.min(32767,T),z=Math.min(258,M);I<=R&&--ee&&A!=j;){if(e[T+P]==e[T+P-I]){for(var B=0;B<z&&e[T+B]==e[T+B-I];++B);if(B>P){if(P=B,F=I,B>L)break;for(var V=Math.min(I,B-2),te=0,N=0;N<V;++N){var ne=T-I+N&32767,re=ne-h[ne]&32767;re>te&&(te=re,j=ne)}}}A=j,j=h[A],I+=A-j&32767}if(F){b[E++]=268435456|Te[P]<<18|Oe[F];var ie=Te[P]&31,ae=Oe[F]&31;w+=ye[ie]+be[ae],++x[257+ie],++S[ae],D=T+P,++C}else b[E++]=e[T],++x[e[T]]}}for(T=Math.max(T,D);T<o;++T)b[E++]=e[T],++x[e[T]];u=qe(e,c,l,b,x,S,w,E,O,T-O,u),l||(a.r=u&7|c[u/8|0]<<3,u-=7,a.h=g,a.p=h,a.i=T,a.w=D)}else{for(var T=a.w||0;T<o+l;T+=65535){var H=T+65535;H>=o&&(c[u/8|0]=l,H=o),u=Ke(c,u+1,e.subarray(T,H))}a.i=o}return Re(s,0,r+Le(u)+i)},Ze=function(){var e=1,t=0;return{p:function(n){for(var r=e,i=t,a=n.length|0,o=0;o!=a;){for(var s=Math.min(o+2655,a);o<s;++o)i+=r+=n[o];r=(r&65535)+15*(r>>16),i=(i&65535)+15*(i>>16)}e=r,t=i},d:function(){return e%=65521,t%=65521,(e&255)<<24|(e&65280)<<8|(t&255)<<8|t>>8}}},Qe=function(e,t,n,r,i){if(!i&&(i={l:1},t.dictionary)){var a=t.dictionary.subarray(-32768),o=new U(a.length+e.length);o.set(a),o.set(e,a.length),e=o,i.w=a.length}return Xe(e,t.level==null?6:t.level,t.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,n,r,i)},$e=function(e,t,n){for(;n;++t)e[t]=n,n>>>=8},et=function(e,t){var n=t.level,r=n==0?0:n<6?1:n==9?3:2;if(e[0]=120,e[1]=r<<6|(t.dictionary&&32),e[1]|=31-(e[0]<<8|e[1])%31,t.dictionary){var i=Ze();i.p(t.dictionary),$e(e,2,i.d())}},tt=function(e,t){return((e[0]&15)!=8||e[0]>>4>7||(e[0]<<8|e[1])%31)&&X(6,`invalid zlib data`),(e[1]>>5&1)==+!t&&X(6,`invalid zlib data: `+(e[1]&32?`need`:`unexpected`)+` dictionary`),(e[1]>>3&4)+2},nt=function(){function e(e,t){if(typeof e==`function`&&(t=e,e={}),this.ondata=t,this.o=e||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new U(98304),this.o.dictionary){var n=this.o.dictionary.subarray(-32768);this.b.set(n,32768-n.length),this.s.i=32768-n.length}}return e.prototype.p=function(e,t){this.ondata(Qe(e,this.o,0,0,this.s),t)},e.prototype.push=function(e,t){this.ondata||X(5),this.s.l&&X(4);var n=e.length+this.s.z;if(n>this.b.length){if(n>2*this.b.length-32768){var r=new U(n&-32768);r.set(this.b.subarray(0,this.s.z)),this.b=r}var i=this.b.length-this.s.z;this.b.set(e.subarray(0,i),this.s.z),this.s.z=this.b.length,this.p(this.b,!1),this.b.set(this.b.subarray(-32768)),this.b.set(e.subarray(i),32768),this.s.z=e.length-i+32768,this.s.i=32766,this.s.w=32768}else this.b.set(e,this.s.z),this.s.z+=e.length;this.s.l=t&1,(this.s.z>this.s.w+8191||t)&&(this.p(this.b,t||!1),this.s.w=this.s.i,this.s.i-=2),t&&(this.s=this.o={},this.b=Ye)},e.prototype.flush=function(e){if(this.ondata||X(5),this.s.l&&X(4),this.p(this.b,!1),this.s.w=this.s.i,this.s.i-=2,e){var t=new U(6);t[0]=this.s.r>>3;var n=Ke(t,this.s.r,Ye);this.s.r=0,this.ondata(t.subarray(0,n>>3),!1)}},e}(),rt=function(){function e(e,t){typeof e==`function`&&(t=e,e={}),this.ondata=t;var n=e&&e.dictionary&&e.dictionary.subarray(-32768);this.s={i:0,b:n?n.length:0},this.o=new U(32768),this.p=new U(0),n&&this.o.set(n)}return e.prototype.e=function(e){if(this.ondata||X(5),this.d&&X(4),!this.p.length)this.p=e;else if(e.length){var t=new U(this.p.length+e.length);t.set(this.p),t.set(e,this.p.length),this.p=t}},e.prototype.c=function(e){this.s.i=+(this.d=e||!1);var t=this.s.b,n=Be(this.p,this.s,this.o);this.ondata(Re(n,t,this.s.b),this.d),this.o=Re(n,this.s.b-32768),this.s.b=this.o.length,this.p=Re(this.p,this.s.p/8|0),this.s.p&=7},e.prototype.push=function(e,t){this.e(e),this.c(t)},e}(),it=function(){function e(e,t){this.c=Ze(),this.v=1,nt.call(this,e,t)}return e.prototype.push=function(e,t){this.c.p(e),nt.prototype.push.call(this,e,t)},e.prototype.p=function(e,t){var n=Qe(e,this.o,this.v&&(this.o.dictionary?6:2),t&&4,this.s);this.v&&=(et(n,this.o),0),t&&$e(n,n.length-4,this.c.d()),this.ondata(n,t)},e.prototype.flush=function(e){nt.prototype.flush.call(this,e)},e}(),at=function(){function e(e,t){rt.call(this,e,t),this.v=e&&e.dictionary?2:1}return e.prototype.push=function(e,t){if(rt.prototype.e.call(this,e),this.v){if(this.p.length<6&&!t)return;this.p=this.p.subarray(tt(this.p,this.v-1)),this.v=0}t&&(this.p.length<4&&X(6,`invalid zlib data`),this.p=this.p.subarray(0,-4)),rt.prototype.c.call(this,t)},e}(),ot=typeof TextEncoder<`u`&&new TextEncoder,st=typeof TextDecoder<`u`&&new TextDecoder;try{st.decode(Ye,{stream:!0})}catch{}var ct=function(e){for(var t=``,n=0;;){var r=e[n++],i=(r>127)+(r>223)+(r>239);if(n+i>e.length)return{s:t,r:Re(e,n-1)};i?i==3?(r=((r&15)<<18|(e[n++]&63)<<12|(e[n++]&63)<<6|e[n++]&63)-65536,t+=String.fromCharCode(55296|r>>10,56320|r&1023)):i&1?t+=String.fromCharCode((r&31)<<6|e[n++]&63):t+=String.fromCharCode((r&15)<<12|(e[n++]&63)<<6|e[n++]&63):t+=String.fromCharCode(r)}};function lt(e,t){if(t){for(var n=new U(e.length),r=0;r<e.length;++r)n[r]=e.charCodeAt(r);return n}if(ot)return ot.encode(e);for(var i=e.length,a=new U(e.length+(e.length>>1)),o=0,s=function(e){a[o++]=e},r=0;r<i;++r){if(o+5>a.length){var c=new U(o+8+(i-r<<1));c.set(a),a=c}var l=e.charCodeAt(r);l<128||t?s(l):l<2048?(s(192|l>>6),s(128|l&63)):l>55295&&l<57344?(l=65536+(l&1047552)|e.charCodeAt(++r)&1023,s(240|l>>18),s(128|l>>12&63),s(128|l>>6&63),s(128|l&63)):(s(224|l>>12),s(128|l>>6&63),s(128|l&63))}return Re(a,0,o)}function ut(e,t){if(t){for(var n=``,r=0;r<e.length;r+=16384)n+=String.fromCharCode.apply(null,e.subarray(r,r+16384));return n}else if(st)return st.decode(e);else{var i=ct(e),a=i.s,n=i.r;return n.length&&X(8),a}}var dt=e=>{if(e.length===1)return e[0];let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0));for(let n=0,r=0;n<e.length;++n)t.set(e[n],r),r+=e[n].length;return t},ft=class{constructor(){this.compressor=null,this.decompressor=null,this.reset()}reset(){this.compressor=null,this.decompressor=null}compress(e){this.compressor||=new it({mem:4});let t=[];return this.compressor.ondata=e=>{t.push(e)},this.compressor.push(lt(e)),this.compressor.flush(),dt(t)}decompress(e){this.decompressor||=new at;let t;this.decompressor.ondata=e=>{t=e};try{if(this.decompressor.push(e),t===void 0)throw Error(`invalid block type`)}catch(t){throw Error(`Decompression error: ${t.message}, length: ${e.length}, data: [${e.toString()}]`)}return ut(t)}},pt=()=>$(e=>class extends e{#e;constructor(...e){super(...e),this.#e=new ft,this.hooks.hook(`frontgateConnection:reset`,()=>{this.#e.reset()}),this.hooks.hook(`frontgateConnection:afterSetEncoding`,e=>{e.encoding=`jsjsonc-v2`}),this.hooks.hook(`frontgateConnection:beforeSendMessage`,e=>{e.msg=this.#e.compress(e.msg)}),this.hooks.hook(`frontgateConnection:afterReceiveMessage`,e=>{e.msg=this.#e.decompress(new Uint8Array(e.msg))})}},{featureName:`MessageCompressor`,featureGroups:[`Compression`]}),mt=()=>$(e=>class extends e{async request(e,t=this.defaultTimeoutInMs){e.header.setTimeout(t);let n={message:e.getPtlMessage(),callbackType:`job`,callbackId:``};await this.hooks.callHook(`frontgateConnection:sendMessage`,n);let r=new Promise(e=>{this.hooks.hookOnce(`frontgateConnection:response:${n.callbackId}`,t=>{e(new z(t))})});return O(t,`Request timeout reached (${t} ms) for ${n.message.Message}`,r)}},{featureName:`Request`,featureGroups:[`Misc`]}),ht=e=>$(t=>{let n={...e};return class extends t{#e=new Map;#t=new Map;#n=new Map;async observeEndpoint(e,t,r,i){let a=`${e}:${t}:${JSON.stringify(r)}:${JSON.stringify(i??{})}`;if(this.#n.has(a)){let e=this.#n.get(a);this.log(H.INFO,`Catching inflight subscription for ${a}`);let t=this.#t.get(a)??0;return this.#t.set(a,t+1),e}let o=n.timeout??this.defaultTimeoutInMs,s=n.subscriptionResubscribeTimeout??1e3;if(this.#e.has(a)){let e=this.#e.get(a),t=this.#t.get(a)??0;if(e)return this.#t.set(a,t+1),this.log(H.INFO,`Reusing existing subscription for ${a}`),e}this.log(H.INFO,`Creating new subscription for ${a}`);let c=new ee(e,t,r,{...i,subscribe:!0});c.header.setTimeout(o);let l={message:c.getPtlMessage(),callbackType:`job`,callbackId:``},u=!1,d=new Promise((e,t)=>{this.hooks.callHook(`frontgateConnection:sendMessage`,l).then(()=>{this.hooks.hookOnce(`frontgateConnection:response:${l.callbackId}`,n=>{if(!n.Message.includes(`HighLevelResponse`)){this.log(H.ERROR,`Unexpected response: ${n.Message}`),t(new V(JSON.stringify(n)));return}let r;try{r=JSON.parse(n.body.value)}catch(e){this.log(H.ERROR,`Failed to parse response: ${n.body.value}`),this.log(H.ERROR,e),t(e);return}let i=new wt(n.header.id_job,r);if(u){this.log(H.WARN,`Zombie subscription detected for ${a}. Cancelling stale subscription on server.`);let e=new F(i.idJob);this.hooks.callHook(`frontgateConnection:sendMessage`,{message:e.getPtlMessage(),callbackType:`job`,callbackId:``});return}let c=this.hooks.hook(`frontgateConnection:response:${l.callbackId}`,e=>{if(!e.Message.includes(`HighLevelUpdate`)){if(e.Message.includes(`SubscriptionLoss`)){this.log(H.DEBUG,`Received: ${e.Message}`),setTimeout(()=>{d()},k(s)),c();return}this.log(H.ERROR,`Unexpected response: ${n.Message}`),i.pushError(new V(JSON.stringify(e))),c();return}let t;try{t=new ie(e)}catch(t){this.log(H.ERROR,`Failed to parse response: ${e.body.value}`),i.pushError(t);return}i.pushPatchData(t.data)}),d=async()=>{c(),this.log(H.INFO,`Resubscribing to ${a} due to reconnect`),await this.hooks.callHook(`frontgateConnection:sendMessage`,l);let e,t=new Promise((t,n)=>{e=this.hooks.hookOnce(`frontgateConnection:response:${l.callbackId}`,e=>{if(!e.Message.includes(`HighLevelResponse`)){let t=new V(e);this.log(H.ERROR,`Unexpected response: ${e.Message}`),c(),n(t);return}if(this.log(H.INFO,`Resubscribed to ${a} with ${e.header.id_job}`),i.idJob=e.header.id_job,u){this.log(H.WARN,`Zombie subscription detected for ${a}. Initiating unsubscribe.`),i.unsubscribe?.(),t();return}try{i.pushData(JSON.parse(e.body.value))}catch(t){this.log(H.ERROR,`Failed to parse response: ${e.body.value}`),this.log(H.ERROR,t),n(t);return}c=this.hooks.hook(`frontgateConnection:response:${e.header.id_job}`,e=>{if(!e.Message.includes(`HighLevelUpdate`)){if(e.Message.includes(`SubscriptionLoss`)){this.log(H.DEBUG,`Received: ${e.Message}`),setTimeout(()=>{d()},k(s));return}this.log(H.ERROR,`Unexpected response: ${e.Message}`);let t=new V(e);i.pushError(t);return}let t;try{t=new ie(e)}catch(t){this.log(H.ERROR,`Failed to parse response: ${e.body.value}`),i.pushError(t);return}i.pushPatchData(t.data)}),t()})});try{await O(o,`Request timeout reached`,t)}catch(t){e?.(),u=!0,i.pushError(new V({Message:`Resubscribe failed`,Error:t}))}},f=this.hooks.hook(`reconnect:success`,d);i.unsubscribe=()=>{if(this.#e.get(a)){let e=this.#t.get(a)??0;if(this.#t.set(a,e-1),e-1>0){this.log(H.INFO,`Not unsubscribing from ${a} as there are still ${e} subscribers`);return}this.#e.delete(a),this.#t.delete(a),u=!0}this.log(H.INFO,`Unsubscribing from ${a}`);let e={message:new F(i.idJob).getPtlMessage(),callbackType:`job`,callbackId:``};this.hooks.callHook(`frontgateConnection:sendMessage`,e),c(),f()},this.#e.set(a,i);let p=this.#t.get(a)??0;this.#t.set(a,p+1),e(i)})}).catch(e=>{t(e)})}),f=O(o,`Request timeout reached (${o} ms) for ${l.message.Message}`,d).catch(e=>{throw u=!0,this.#t.delete(a),this.#e.delete(a),e}).finally(()=>{this.#n.delete(a)});return this.#n.set(a,f),f}}},{featureName:`EndpointSubscriptions`,featureGroups:[`Misc`]}),gt=()=>$(e=>class extends e{#e=new Map;async observe(e,t=this.defaultTimeoutInMs){return this.#t(e,`job`,void 0,t)}async observeConnectionBased(e,t,n=this.defaultTimeoutInMs){return this.#t(e,`connection`,t,n)}async#t(e,t,n,r=this.defaultTimeoutInMs){let i=JSON.stringify(e.getPtlMessage());if(this.#e.has(i)){let e=this.#e.get(i);if(e)return e.count++,this.log(H.INFO,`Reusing existing subscription for ${i}`),e.observer}this.log(H.INFO,`Creating new subscription for ${i}`);let a={message:e.getPtlMessage(),callbackType:`job`,callbackId:``};await this.hooks.callHook(`frontgateConnection:sendMessage`,a);let o=new Promise((o,s)=>{this.hooks.hookOnce(`frontgateConnection:response:${a.callbackId}`,c=>{if(c.Message.includes(`Error`)||c.Message.includes(`PermissionDenied`)){this.log(H.ERROR,`Unexpected response: ${c.Message}`),s(Error(`Unexpected response: ${c.Message}`));return}let l=t===`connection`?`${c.header.id_service}-${e.getPtlMessage().id_notation}`:c.header.id_job,u=n===void 0?new F(c.header.id_job):new n(c.header.id_service,e.getPtlMessage().id_notation),d=new Ct(c.header.id_job,c),f=this.hooks.hook(`frontgateConnection:response:${l}`,e=>{if(e.Message.includes(`Error`)||e.Message.includes(`PermissionDenied`)){this.log(H.ERROR,`Unexpected response: ${c.Message}`),d.pushError(new V(JSON.stringify(e)));return}d.pushData(e)}),p=this.hooks.hook(`reconnect:success`,async()=>{f(),this.log(H.INFO,`Resubscribing to ${i} due to reconnect`),await this.hooks.callHook(`frontgateConnection:sendMessage`,a);let o=new Promise((r,o)=>{this.hooks.hookOnce(`frontgateConnection:response:${a.callbackId}`,a=>{if(a.Message.includes(`Error`)||a.Message.includes(`PermissionDenied`)){let e=new V(a);this.log(H.ERROR,`Unexpected resp: ${a.Message}`),o(e);return}let s=t===`connection`?`${a.header.id_service}-${e.getPtlMessage().id_notation}`:a.header.id_job,c=n===void 0?new F(a.header.id_job):new n(a.header.id_service,e.getPtlMessage().id_notation);d.idJob=a.header.id_job,f=this.hooks.hook(`frontgateConnection:response:${s}`,e=>{if(e.Message.includes(`Error`)||e.Message.includes(`PermissionDenied`)){this.log(H.ERROR,`Unexpected response: ${e.Message}`);let t=new V(e);d.pushError(t);return}d.unsubscribe=()=>{let e=this.#e.get(i);if(e){if(e.count--,e.count>0){this.log(H.INFO,`Not unsubscribing from ${i} as there are still ${e.count} subscribers`);return}this.#e.delete(i)}this.log(H.INFO,`Unsubscribing from ${i}`);let t={message:c.getPtlMessage(),callbackType:`job`,callbackId:``};this.hooks.callHook(`frontgateConnection:sendMessage`,t),f(),p()},d.pushData(e)}),r()})});try{await O(r,`Request timeout reached`,o)}catch(e){d.pushError(new V({Message:`Reconnect failed`,Error:e}))}});d.unsubscribe=()=>{let e=this.#e.get(i);if(e){if(e.count--,e.count>0){this.log(H.INFO,`Not unsubscribing from ${i} as there are still ${e.count} subscribers`);return}this.#e.delete(i)}this.log(H.INFO,`Unsubscribing from ${i}`);let t={message:u.getPtlMessage(),callbackType:`job`,callbackId:``};this.hooks.callHook(`frontgateConnection:sendMessage`,t),f(),p()},this.#e.set(i,{observer:d,count:1}),o(d)})});return O(r,`Request timeout reached (${r} ms) for ${a.message.Message}`,o)}},{featureName:`RawSubscriptions`,featureGroups:[`Misc`]}),_t=(e,t)=>{let n=t.split(`/`).slice(1),r=e;for(let e=0;e<n.length-1;e++){let i=decodeURIComponent(n[e]);if(!(i in r))throw Error(`Path not found: ${t}`);r=r[i]}return[r,decodeURIComponent(n[n.length-1])]},vt=(e,t,n)=>{let[r,i]=_t(e,t);r[i]=n},yt=`-`,bt=(e,t,n)=>{let[r,i]=_t(e,t);Array.isArray(r)?i===yt?r.push(n):r.splice(parseInt(i,10),0,n):r[i]=n},xt=(e,t)=>{let[n,r]=_t(e,t);Array.isArray(n)?n.splice(parseInt(r,10),1):delete n[r]};function St(e,t){return t.forEach(t=>{switch(t.op){case`replace`:vt(e,t.path,t.value);break;case`add`:bt(e,t.path,t.value);break;case`remove`:xt(e,t.path);break;default:throw Error(`Unsupported op: ${t.op}`)}}),e}var Ct=class{#e;#t=[];#n=[];get data(){return this.#e}constructor(e,t){this.#e=t,this.idJob=e}subscribe({next:e,error:t}){e(this.#e),t&&this.#n.push(t),this.#t.push(e)}pushData(e){this.#e=e,this.#t.forEach(t=>{t(e)})}pushError(e){this.#n.forEach(t=>{t(e)})}},wt=class extends Ct{pushPatchData(e){try{let t=St(this.data,e);super.pushData(t)}catch(e){super.pushError(new V(e.message))}}},Tt=e=>$(t=>class extends t{constructor(...t){super(...t),this.hooks.hook(`frontgateConnection:beforeConnect`,t=>{this.hooks.callHook(`frontgateConnection:setIdApp`,-2),this.hooks.callHook(`frontgateConnection:setIdUser`,-2),this.log(H.DEBUG,`Adding mdg2auth subprotocol`),t.subProtocols.push(`mdg2auth-${e}`)}),this.hooks.hookOnce(`frontgateConnection:connected`,async e=>{this.hooks.callHook(`frontgateConnection:setIdApp`,-2),this.hooks.callHook(`frontgateConnection:setIdUser`,-2);let t=new N({b64:``},{maximum_idle_interval:e.maximumIdleInterval}.maximum_idle_interval).toJson();this.log(H.INFO,`Sending message`,t);let n={message:t,callbackType:`response`,callbackId:t.Message.replace(`Request`,`Response`)};await this.hooks.callHook(`frontgateConnection:sendMessage`,n),this.hooks.hookOnce(`frontgateConnection:response:${n.callbackId}`,e=>{this.log(H.INFO,`Received response`,e),this.hooks.callHook(`frontgateConnection:authenticated`)})})}},{featureName:`CookieTokenAuth`,featureGroups:[`Auth`],disabledFeatureGroups:[`Auth`]}),Et=e=>$(t=>class extends t{#e;constructor(...t){super(...t),this.#e=e??``,this.hooks.hook(`frontgateConnection:connected`,async e=>{this.hooks.callHook(`frontgateConnection:setIdApp`,-2),this.hooks.callHook(`frontgateConnection:setIdUser`,-2);let t={maximum_idle_interval:e.maximumIdleInterval},n=new N({b64:this.#e},t.maximum_idle_interval).toJson();this.log(H.INFO,`Sending message`,n);let r={message:n,callbackType:`response`,callbackId:n.Message.replace(`Request`,`Response`)};await this.hooks.callHook(`frontgateConnection:sendMessage`,r),this.hooks.hookOnce(`frontgateConnection:response:${r.callbackId}`,e=>{this.log(H.INFO,`Received response`,e),this.hooks.callHook(`frontgateConnection:authenticated`)})})}set token(e){this.#e=e}},{featureName:`TokenAuth`,featureGroups:[`Auth`],disabledFeatureGroups:[`Auth`]}),Dt=(e,t,n)=>$(r=>class extends ge({host:``,pathPrefix:``,port:0,tls:!0,maximumIdleIntervalInS:e.maximumIdleIntervalInS})(r){#e=``;#t=``;#n;#r;constructor(...e){super(...e),this.#n=t,this.#r=n,this.hooks.hook(`frontgateConnection:beforeConnect`,async e=>{this.hooks.callHook(`frontgateConnection:setIdApp`,-2),this.hooks.callHook(`frontgateConnection:setIdUser`,-2),this.log(H.DEBUG,`Fetching connection configuration`);let t=await this.#i();if(this.log(H.DEBUG,`Connection configuration received`,t),e.url=t.url,t.authtenticationType===`token`&&t.authenticationToken)this.#e=t.authenticationToken;else if(t.splitAuthenticationTokenSecondFactor)this.#t=t.splitAuthenticationTokenSecondFactor;else throw Error(`Invalid authentication configuration`);this.log(H.DEBUG,`Adding mdg2auth subprotocol`),this.#t!==``&&e.subProtocols.push(`mdg2auth-${this.#t}`)}),this.hooks.hook(`frontgateConnection:connected`,async e=>{this.hooks.callHook(`frontgateConnection:setIdApp`,-2),this.hooks.callHook(`frontgateConnection:setIdUser`,-2);let t={maximum_idle_interval:e.maximumIdleInterval},n=new N({b64:this.#e},t.maximum_idle_interval).toJson();this.log(H.INFO,`Sending message`,n);let r={message:n,callbackType:`response`,callbackId:n.Message.replace(`Request`,`Response`)};await this.hooks.callHook(`frontgateConnection:sendMessage`,r),this.hooks.hookOnce(`frontgateConnection:response:${r.callbackId}`,e=>{this.log(H.INFO,`Received response`,e),this.hooks.callHook(`frontgateConnection:authenticated`)})})}async#i(){let e=await fetch(this.#n,this.#r);if(!e.ok)throw Error(`Failed to fetch connection configuration: ${e.status} ${e.statusText}`);let{headers:t}=e,n=t.get(`frontgate-host`),r=t.get(`frontgate-path-prefix`),i=t.get(`frontgate-split-authentication-token-second-factor`),a=t.get(`frontgate-authentication-type`),o=t.get(`frontgate-authentication-token`),s=`wss://${n}:${t.get(`frontgate-websocket-port`)??`443`}${r??``}/ws`;if(a===`token`&&!o)throw Error(`Authentication token is required for token authentication`);if(a!==`token`&&!i)throw Error(`Split authentication token second factor is required`);return{url:s,authtenticationType:a,authenticationToken:o,splitAuthenticationTokenSecondFactor:i}}},{featureName:`FetchAuth`,featureGroups:[`Auth`,`Connection`],disabledFeatureGroups:[`Auth`,`Connection`]}),Ot=(e,t,n)=>$(r=>class extends ge({host:``,pathPrefix:``,port:0,tls:!0,maximumIdleIntervalInS:e.maximumIdleIntervalInS})(r){#e=``;#t=``;#n=!1;#r;#i;#a;constructor(...e){super(...e),this.#i=t,this.#a=n,this.#r=new ft,this.hooks.hook(`frontgateConnection:reset`,()=>{this.#n&&this.#r.reset()}),this.hooks.hook(`frontgateConnection:beforeSendMessage`,e=>{this.#n&&(e.msg=this.#r.compress(e.msg))}),this.hooks.hook(`frontgateConnection:afterReceiveMessage`,e=>{this.#n&&(e.msg=this.#r.decompress(new Uint8Array(e.msg)))}),this.hooks.hook(`frontgateConnection:beforeConnect`,async e=>{this.hooks.callHook(`frontgateConnection:setIdApp`,-2),this.hooks.callHook(`frontgateConnection:setIdUser`,-2),this.log(H.DEBUG,`Fetching connection configuration`);let t=await this.#o();if(this.log(H.DEBUG,`Connection configuration received`,t),e.url=t.url,t.authtenticationType===`token`&&t.authenticationToken)this.#e=t.authenticationToken;else if(t.splitAuthenticationTokenSecondFactor)this.#t=t.splitAuthenticationTokenSecondFactor;else throw Error(`Invalid authentication configuration`);this.log(H.DEBUG,`Adding mdg2auth subprotocol`),this.#t!==``&&e.subProtocols.push(`mdg2auth-${this.#t}`),this.#n&&e.subProtocols.forEach((t,n)=>{t.includes(`jsjson`)&&!t.includes(`jsjsonc`)&&(e.subProtocols[n]=t.replace(`jsjson`,`jsjsonc`))})}),this.hooks.hook(`frontgateConnection:connected`,async e=>{this.hooks.callHook(`frontgateConnection:setIdApp`,-2),this.hooks.callHook(`frontgateConnection:setIdUser`,-2);let t={maximum_idle_interval:e.maximumIdleInterval},n=new N({b64:this.#e},t.maximum_idle_interval).toJson();this.log(H.INFO,`Sending message`,n);let r={message:n,callbackType:`response`,callbackId:n.Message.replace(`Request`,`Response`)};await this.hooks.callHook(`frontgateConnection:sendMessage`,r),this.hooks.hookOnce(`frontgateConnection:response:${r.callbackId}`,e=>{this.log(H.INFO,`Received response`,e),this.hooks.callHook(`frontgateConnection:authenticated`)})})}async#o(){let e=await fetch(this.#i,this.#a);if(!e.ok)throw Error(`Failed to fetch connection configuration: ${e.status} ${e.statusText}`);let{headers:t}=e,n=t.get(`frontgate-host`),r=t.get(`frontgate-path-prefix`),i=t.get(`frontgate-split-authentication-token-second-factor`),a=t.get(`frontgate-authentication-type`),o=t.get(`frontgate-authentication-token`),s=`wss://${n}:${t.get(`frontgate-websocket-port`)??`443`}${r??``}/ws`;if(a===`token`&&!o)throw Error(`Authentication token is required for token authentication`);if(a!==`token`&&!i)throw Error(`Split authentication token second factor is required`);return t.get(`frontgate-websocket-protocol`)===`jsjsonc-v2`?this.#n=!0:this.#n=!1,{url:s,authtenticationType:a,authenticationToken:o,splitAuthenticationTokenSecondFactor:i}}},{featureName:`FetchAuthWithOptionalCompressor`,featureGroups:[`Auth`,`Connection`],disabledFeatureGroups:[`Auth`,`Connection`,`Compression`]}),kt=e=>$(t=>class extends t{#e=0;#t;#n;constructor(...t){super(...t),this.#t=e??[1e3,2e3,4e3,8e3,16e3,32e3];let n=e=>{if(e.code!==1e3){this.#n&&(this.log(H.WARN,`Aborting previous reconnect attempt`),clearTimeout(this.#n),this.#e=0);let t=this.#e;this.#e>=this.#t.length&&(t=this.#t.length-1);let r=this.#t[t];this.#n=setTimeout(()=>{this.log(H.INFO,`Reconnecting... Attempt ${this.#e}`);let t=this.hooks.hookOnce(`reconnect:failed`,n);this.hooks.callHook(`reconnect:attempt`,e).then(t).catch(()=>{this.log(H.ERROR,`Failed to reconnect`)}),this.#n=void 0},r),this.#e++}};this.hooks.hookOnce(`frontgateConnection:disconnected`,n),this.hooks.hook(`reconnect:success`,()=>{clearTimeout(this.#n),this.#n=void 0,this.#e=0,this.log(H.INFO,`Reconnected`),this.hooks.hookOnce(`frontgateConnection:disconnected`,n)})}},{featureName:`Reconnect`,featureGroups:[`Misc`],disabledFeatures:[`TokenAuth`,`CookieTokenAuth`]}),At=`1.9.1`,jt=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function Mt(e){let t=new Set([e]),n=new Set,r=e.match(jt);if(!r)return()=>!1;let i={major:+r[1],minor:+r[2],patch:+r[3],prerelease:r[4]};if(i.prerelease!=null)return function(t){return t===e};function a(e){return n.add(e),!1}function o(e){return t.add(e),!0}return function(e){if(t.has(e))return!0;if(n.has(e))return!1;let r=e.match(jt);if(!r)return a(e);let s={major:+r[1],minor:+r[2],patch:+r[3],prerelease:r[4]};return s.prerelease!=null||i.major!==s.major?a(e):i.major===0?i.minor===s.minor&&i.patch<=s.patch?o(e):a(e):i.minor<=s.minor?o(e):a(e)}}var Nt=Mt(At),Pt=At.split(`.`)[0],Ft=Symbol.for(`opentelemetry.js.api.${Pt}`),It=typeof globalThis==`object`?globalThis:typeof self==`object`?self:typeof window==`object`?window:typeof global==`object`?global:{};function Lt(e,t,n,r=!1){let i=It[Ft]=It[Ft]??{version:At};if(!r&&i[e]){let t=Error(`@opentelemetry/api: Attempted duplicate registration of API: ${e}`);return n.error(t.stack||t.message),!1}if(i.version!==`1.9.1`){let t=Error(`@opentelemetry/api: Registration of version v${i.version} for ${e} does not match previously registered API v${At}`);return n.error(t.stack||t.message),!1}return i[e]=t,n.debug(`@opentelemetry/api: Registered a global for ${e} v${At}.`),!0}function Rt(e){let t=It[Ft]?.version;if(!(!t||!Nt(t)))return It[Ft]?.[e]}function zt(e,t){t.debug(`@opentelemetry/api: Unregistering a global for ${e} v${At}.`);let n=It[Ft];n&&delete n[e]}var Bt=class{constructor(e){this._namespace=e.namespace||`DiagComponentLogger`}debug(...e){return Vt(`debug`,this._namespace,e)}error(...e){return Vt(`error`,this._namespace,e)}info(...e){return Vt(`info`,this._namespace,e)}warn(...e){return Vt(`warn`,this._namespace,e)}verbose(...e){return Vt(`verbose`,this._namespace,e)}};function Vt(e,t,n){let r=Rt(`diag`);if(r)return r[e](t,...n)}var Q;(function(e){e[e.NONE=0]=`NONE`,e[e.ERROR=30]=`ERROR`,e[e.WARN=50]=`WARN`,e[e.INFO=60]=`INFO`,e[e.DEBUG=70]=`DEBUG`,e[e.VERBOSE=80]=`VERBOSE`,e[e.ALL=9999]=`ALL`})(Q||={});function Ht(e,t){e<Q.NONE?e=Q.NONE:e>Q.ALL&&(e=Q.ALL),t||={};function n(n,r){let i=t[n];return typeof i==`function`&&e>=r?i.bind(t):function(){}}return{error:n(`error`,Q.ERROR),warn:n(`warn`,Q.WARN),info:n(`info`,Q.INFO),debug:n(`debug`,Q.DEBUG),verbose:n(`verbose`,Q.VERBOSE)}}var Ut=`diag`,Wt=class e{static instance(){return this._instance||=new e,this._instance}constructor(){function e(e){return function(...t){let n=Rt(`diag`);if(n)return n[e](...t)}}let t=this;t.setLogger=(e,n={logLevel:Q.INFO})=>{if(e===t){let e=Error(`Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation`);return t.error(e.stack??e.message),!1}typeof n==`number`&&(n={logLevel:n});let r=Rt(`diag`),i=Ht(n.logLevel??Q.INFO,e);if(r&&!n.suppressOverrideMessage){let e=Error().stack??`<failed to generate stacktrace>`;r.warn(`Current logger will be overwritten from ${e}`),i.warn(`Current logger will overwrite one already registered from ${e}`)}return Lt(`diag`,i,t,!0)},t.disable=()=>{zt(Ut,t)},t.createComponentLogger=e=>new Bt(e),t.verbose=e(`verbose`),t.debug=e(`debug`),t.info=e(`info`),t.warn=e(`warn`),t.error=e(`error`)}};function Gt(e){return Symbol.for(e)}var Kt=new class e{constructor(t){let n=this;n._currentContext=t?new Map(t):new Map,n.getValue=e=>n._currentContext.get(e),n.setValue=(t,r)=>{let i=new e(n._currentContext);return i._currentContext.set(t,r),i},n.deleteValue=t=>{let r=new e(n._currentContext);return r._currentContext.delete(t),r}}},qt=class{active(){return Kt}with(e,t,n,...r){return t.call(n,...r)}bind(e,t){return t}enable(){return this}disable(){return this}},Jt=`context`,Yt=new qt,Xt=class e{constructor(){}static getInstance(){return this._instance||=new e,this._instance}setGlobalContextManager(e){return Lt(Jt,e,Wt.instance())}active(){return this._getContextManager().active()}with(e,t,n,...r){return this._getContextManager().with(e,t,n,...r)}bind(e,t){return this._getContextManager().bind(e,t)}_getContextManager(){return Rt(Jt)||Yt}disable(){this._getContextManager().disable(),zt(Jt,Wt.instance())}},Zt;(function(e){e[e.NONE=0]=`NONE`,e[e.SAMPLED=1]=`SAMPLED`})(Zt||={});var Qt={traceId:`00000000000000000000000000000000`,spanId:`0000000000000000`,traceFlags:Zt.NONE},$t=class{constructor(e=Qt){this._spanContext=e}spanContext(){return this._spanContext}setAttribute(e,t){return this}setAttributes(e){return this}addEvent(e,t){return this}addLink(e){return this}addLinks(e){return this}setStatus(e){return this}updateName(e){return this}end(e){}isRecording(){return!1}recordException(e,t){}},en=Gt(`OpenTelemetry Context Key SPAN`);function tn(e){return e.getValue(en)||void 0}function nn(){return tn(Xt.getInstance().active())}function rn(e,t){return e.setValue(en,t)}function an(e){return e.deleteValue(en)}function on(e,t){return rn(e,new $t(t))}function sn(e){return tn(e)?.spanContext()}var cn=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1]);function ln(e,t){if(typeof e!=`string`||e.length!==t)return!1;let n=0;for(let t=0;t<e.length;t+=4)n+=(cn[e.charCodeAt(t)]|0)+(cn[e.charCodeAt(t+1)]|0)+(cn[e.charCodeAt(t+2)]|0)+(cn[e.charCodeAt(t+3)]|0);return n===t}function un(e){return ln(e,32)&&e!==`00000000000000000000000000000000`}function dn(e){return ln(e,16)&&e!==`0000000000000000`}function fn(e){return un(e.traceId)&&dn(e.spanId)}function pn(e){return new $t(e)}var mn=Xt.getInstance(),hn=class{startSpan(e,t,n=mn.active()){if(t?.root)return new $t;let r=n&&sn(n);return gn(r)&&fn(r)?new $t(r):new $t}startActiveSpan(e,t,n,r){let i,a,o;if(arguments.length<2)return;arguments.length===2?o=t:arguments.length===3?(i=t,o=n):(i=t,a=n,o=r);let s=a??mn.active(),c=this.startSpan(e,i,s),l=rn(s,c);return mn.with(l,o,void 0,c)}};function gn(e){return typeof e==`object`&&!!e&&`spanId`in e&&typeof e.spanId==`string`&&`traceId`in e&&typeof e.traceId==`string`&&`traceFlags`in e&&typeof e.traceFlags==`number`}var _n=new hn,vn=class{constructor(e,t,n,r){this._provider=e,this.name=t,this.version=n,this.options=r}startSpan(e,t,n){return this._getTracer().startSpan(e,t,n)}startActiveSpan(e,t,n,r){let i=this._getTracer();return Reflect.apply(i.startActiveSpan,i,arguments)}_getTracer(){if(this._delegate)return this._delegate;let e=this._provider.getDelegateTracer(this.name,this.version,this.options);return e?(this._delegate=e,this._delegate):_n}},yn=new class{getTracer(e,t,n){return new hn}},bn=class{getTracer(e,t,n){return this.getDelegateTracer(e,t,n)??new vn(this,e,t,n)}getDelegate(){return this._delegate??yn}setDelegate(e){this._delegate=e}getDelegateTracer(e,t,n){return this._delegate?.getTracer(e,t,n)}},xn=`trace`,Sn=class e{constructor(){this._proxyTracerProvider=new bn,this.wrapSpanContext=pn,this.isSpanContextValid=fn,this.deleteSpan=an,this.getSpan=tn,this.getActiveSpan=nn,this.getSpanContext=sn,this.setSpan=rn,this.setSpanContext=on}static getInstance(){return this._instance||=new e,this._instance}setGlobalTracerProvider(e){let t=Lt(xn,this._proxyTracerProvider,Wt.instance());return t&&this._proxyTracerProvider.setDelegate(e),t}getTracerProvider(){return Rt(xn)||this._proxyTracerProvider}getTracer(e,t){return this.getTracerProvider().getTracer(e,t)}disable(){zt(xn,Wt.instance()),this._proxyTracerProvider=new bn}}.getInstance(),Cn=()=>$(e=>class extends e{constructor(...e){super(...e),this.hooks.hook(`frontgateConnection:beforeSerializeMessage`,e=>{e.header&&Sn.getTracer(`frontgate-js-sdk`).startActiveSpan(`frontgateConnection:sendMessage`,t=>{let n=this.#e(t.spanContext());n&&(e.header={...e.header,...n}),t.end()})})}#e(e){if(!/^0+$/.test(e.traceId))return{tracing:{value:{value:wn(e)}}}}},{featureName:`OpenTelemetry`,featureGroups:[`Misc`]}),wn=e=>{let t=[18,20,9],n=e=>{for(let n=e.length;n>e.length-16;n-=2){let r=parseInt(e.substring(n-2,n),16);r>127&&(r-=256),t.push(r)}};return n(e.traceId),t.push(17),n(e.spanId),t.push(24),t.push(0),t},Tn=()=>$(e=>class extends e{async requestProxyEndpoint(e,t,n,r,i=this.defaultTimeoutInMs){let a=new I(e,t,r);n&&a.setBody(n),a.header.setTimeout(i);let o={message:a.getPtlMessage(),callbackType:`job`,callbackId:``};await this.hooks.callHook(`frontgateConnection:sendMessage`,o);let s=new Promise((e,t)=>{this.hooks.hookOnce(`frontgateConnection:response:${o.callbackId}`,n=>{try{if(!n.Message.includes(`HTTPProxyResponse`)){t(JSON.stringify(n));return}let r=new ne(n);e({response:r,data:r.data})}catch(e){t(e)}})});return O(i,`Request timeout reached (${i} ms) for ${o.message.Message}`,s)}},{featureName:`HTTPProxyRequest`,featureGroups:[`Misc`]}),En=()=>$(e=>class extends e{async ping(e=this.defaultTimeoutInMs){let t={message:new L().getPtlMessage(),callbackType:`response`,callbackId:`PingResponse`};await this.hooks.callHook(`frontgateConnection:sendMessage`,t);let n=new Promise(e=>{this.hooks.hookOnce(`frontgateConnection:response:${t.callbackId}`,t=>{e(new re(t))})});return O(e,`Request timeout reached (${e} ms) for ${t.message.Message}`,n)}},{featureName:`Pingable`,featureGroups:[`Misc`]}),Dn=e=>$(t=>class extends t{async logRemotely(t){let n={message:new R({Message:`LogMessage`,timestamp:{microseconds:Date.now()*1e3},uuid:{id_1:e??0,id_2:0},level:{value:4},area:61,Version:1,message:t}).getPtlMessage(),callbackType:`job`,callbackId:``};return this.hooks.callHook(`frontgateConnection:sendMessage`,n)}},{featureName:`RemoteLogger`,featureGroups:[`Misc`]}),$=(e,t)=>{let n=e;return n.featureName=t.featureName,n.featureGroups=t.featureGroups,n.disabledFeatures=t.disabledFeatures,n.disabledFeatureGroups=t.disabledFeatureGroups,n};function On(e,t={},n){for(let r in e){let i=e[r],a=n?`${n}:${r}`:r;typeof i==`object`&&i?On(i,t,a):typeof i==`function`&&(t[a]=i)}return t}var kn={run:e=>e()},An=console.createTask===void 0?()=>kn:console.createTask;function jn(e,t){let n=An(t.shift());return e.reduce((e,r)=>e.then(()=>n.run(()=>r(...t))),Promise.resolve())}function Mn(e,t){let n=An(t.shift());return Promise.all(e.map(e=>n.run(()=>e(...t))))}function Nn(e,t){for(let n of[...e])n(t)}var Pn=class{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(e,t,n={}){if(!e||typeof t!=`function`)return()=>{};let r=e,i;for(;this._deprecatedHooks[e];)i=this._deprecatedHooks[e],e=i.to;if(i&&!n.allowDeprecated){let e=i.message;e||=`${r} hook has been deprecated`+(i.to?`, please use ${i.to}`:``),this._deprecatedMessages||=new Set,this._deprecatedMessages.has(e)||(console.warn(e),this._deprecatedMessages.add(e))}if(!t.name)try{Object.defineProperty(t,"name",{get:()=>`_`+e.replace(/\W+/g,`_`)+`_hook_cb`,configurable:!0})}catch{}return this._hooks[e]=this._hooks[e]||[],this._hooks[e].push(t),()=>{t&&=(this.removeHook(e,t),void 0)}}hookOnce(e,t){let n,r=(...e)=>(typeof n==`function`&&n(),n=void 0,r=void 0,t(...e));return n=this.hook(e,r),n}removeHook(e,t){if(this._hooks[e]){let n=this._hooks[e].indexOf(t);n!==-1&&this._hooks[e].splice(n,1),this._hooks[e].length===0&&delete this._hooks[e]}}deprecateHook(e,t){this._deprecatedHooks[e]=typeof t==`string`?{to:t}:t;let n=this._hooks[e]||[];delete this._hooks[e];for(let t of n)this.hook(e,t)}deprecateHooks(e){Object.assign(this._deprecatedHooks,e);for(let t in e)this.deprecateHook(t,e[t])}addHooks(e){let t=On(e),n=Object.keys(t).map(e=>this.hook(e,t[e]));return()=>{for(let e of n.splice(0,n.length))e()}}removeHooks(e){let t=On(e);for(let e in t)this.removeHook(e,t[e])}removeAllHooks(){for(let e in this._hooks)delete this._hooks[e]}callHook(e,...t){return t.unshift(e),this.callHookWith(jn,e,...t)}callHookParallel(e,...t){return t.unshift(e),this.callHookWith(Mn,e,...t)}callHookWith(e,t,...n){let r=this._before||this._after?{name:t,args:n,context:{}}:void 0;this._before&&Nn(this._before,r);let i=e(t in this._hooks?[...this._hooks[t]]:[],n);return i instanceof Promise?i.finally(()=>{this._after&&r&&Nn(this._after,r)}):(this._after&&r&&Nn(this._after,r),i)}beforeEach(e){return this._before=this._before||[],this._before.push(e),()=>{if(this._before!==void 0){let t=this._before.indexOf(e);t!==-1&&this._before.splice(t,1)}}}afterEach(e){return this._after=this._after||[],this._after.push(e),()=>{if(this._after!==void 0){let t=this._after.indexOf(e);t!==-1&&this._after.splice(t,1)}}}};function Fn(){return new Pn}var In=typeof window<`u`;function Ln(e,t={}){let n={inspect:In,group:In,filter:()=>!0,...t},r=n.filter,i=typeof r==`string`?e=>e.startsWith(r):r,a=n.tag?`[${n.tag}] `:``,o=e=>a+e.name+``.padEnd(e._id,`\0`),s={},c=e.beforeEach(e=>{i!==void 0&&!i(e.name)||(s[e.name]=s[e.name]||0,e._id=s[e.name]++,console.time(o(e)))}),l=e.afterEach(e=>{i!==void 0&&!i(e.name)||(n.group&&console.groupCollapsed(e.name),n.inspect?console.timeLog(o(e),e.args):console.timeEnd(o(e)),n.group&&console.groupEnd(),s[e.name]--)});return{close:()=>{c(),l()}}}var Rn=class{#e;get defaultTimeoutInMs(){return this.#e}constructor(e){this.hooks=Fn(),this.#e=1e4,e?.hookDebug&&Ln(this.hooks,{tag:`hooks`}),e?.defaultRequestTimeout&&(this.#e=e.defaultRequestTimeout)}log(e,...t){if(this.hooks.callHook(`base:log`,t),this.logger)switch(e){case H.TRACE:this.logger.trace(t);break;case H.DEBUG:this.logger.debug(t);break;case H.INFO:this.logger.info(t);break;case H.WARN:this.logger.warn(t);break;case H.ERROR:this.logger.error(t);break;case H.FATAL:this.logger.fatal(t);break;default:break}}},zn=class e{#e;#t=[];#n=[];#r=[];constructor(e,t=[],n=[],r=[]){this.#e=e,this.#t=t,this.#n=n,this.#r=r}static create(){return new e(Rn)}#i(e){if(this.#t.includes(e))throw Error(`Feature "${e}" has already been used.`)}#a(e){for(let t of this.#n)if(t.feature===e)throw Error(`Feature "${e}" has been disabled by ${t.disabler.join(`,`)}.`)}#o(e){for(let t of this.#r)if(t.feature===e)throw Error(`Group "${e}" has been disabled by ${t.disabler.join(`,`)}.`)}#s(e,t){for(let n of this.#n)if(n.feature===t){n.disabler.push(e);return}this.#n.push({disabler:[e],feature:t})}#c(e,t){for(let n of this.#r)if(n.feature===t){n.disabler.push(e);return}this.#r.push({disabler:[e],feature:t})}with(t){let{featureName:n,disabledFeatures:r,disabledFeatureGroups:i,featureGroups:a}=t;if(!n)throw Error(`Feature name is missing`);if(n!==`Custom`){if(this.#i(n),this.#a(n),this.#t.push(n),a&&a.length>0)for(let e of a)this.#o(e);if(r&&r.length>0)for(let e of r)this.#s(n,e);if(i&&i.length>0)for(let e of i)this.#c(n,e)}return new e(t(this.#e),this.#t,this.#n,this.#r)}build(e){return new this.#e(e)}getClientConstructor(){return this.#e}};e.AbstractLogger=oe,e.AbstractMdg2Request=M,e.AuthenticationByTokenRequest=N,e.AuthenticationTokenRequest=P,e.AuthenticationTokenResponse=B,e.CancelSubscriptionRequest=F,e.ConnectionState=v,e.ConsoleLogger=ce,e.CookieTokenAuthenticationFactors=p,e.DEFAULT_TIMEOUT_IN_MS=A,e.DefaultHosts=b,e.DeploymentStage=y,e.ErrorResponse=V,e.FLAG_HAS_NEXT_CHUNK=ae,e.FrontgateClient=Rn,e.FrontgateClientBuilder=zn,e.FrontgateClientDataObserver=Ct,e.FrontgateClientEndpointDataObserver=wt,e.HTTPProxyRequest=I,e.HTTPProxyResponse=ne,e.HighLevelRequest=ee,e.HighLevelResponse=te,e.HighLevelUpdate=ie,e.ID_APP_AUTHENTICATED=m,e.ID_USER_AUTHENTICATED=h,e.ID_USER_NONE=g,e.LogLevel=H,e.LoggerHelper=se,e.Mdg2Response=z,e.NullLogger=de,e.PingRequest=L,e.PingResponse=re,e.RawRequest=R,e.TimeOptions=x,e.TransportLayerClientRequestHeader=j,e.WinstonLogger=ue,e.authTokenRequest=fe,e.cookieTokenAuth=Tt,e.createExtendedMixinFactory=$,e.encodeSpanContext=wn,e.endpointRequest=pe,e.endpointSubscriptions=ht,e.fetchAuth=Dt,e.fetchAuthWithOptionalCompressor=Ot,e.getBytesFromBuffer=_,e.httpProxyRequest=Tn,e.levels=le,e.logger=_e,e.messageCompressor=pt,e.openTelemetry=Cn,e.pingRequests=En,e.rawSubscriptions=gt,e.reconnect=kt,e.remotelogger=Dn,e.requests=mt,e.timeToMilliseconds=S,e.tokenAuth=Et,e.useTimeout=O,e.wsConnection=ge});
|
|
@@ -204,7 +204,7 @@
|
|
|
204
204
|
//#endregion
|
|
205
205
|
//#region src/version.ts
|
|
206
206
|
var PACKAGE_JSON = {
|
|
207
|
-
version: "7.1.
|
|
207
|
+
version: "7.1.3",
|
|
208
208
|
package: "@factset/frontgate-js-sdk"
|
|
209
209
|
};
|
|
210
210
|
//#endregion
|
|
@@ -1180,36 +1180,16 @@
|
|
|
1180
1180
|
this.#idUser = id;
|
|
1181
1181
|
});
|
|
1182
1182
|
this.hooks.hook("frontgateConnection:sendMessage", (msg) => {
|
|
1183
|
-
if (msg.callbackType === "job") {
|
|
1184
|
-
msg.callbackId = `${this.#addJobIdToMessage(msg.message)}`;
|
|
1185
|
-
this.#prepareMessage(msg.message);
|
|
1186
|
-
}
|
|
1183
|
+
if (msg.callbackType === "job") msg.callbackId = `${this.#addJobIdToMessage(msg.message)}`;
|
|
1187
1184
|
if (this.#wsState === "connected" && msg.callbackType === "response") this.#sendMessage(msg.message);
|
|
1188
|
-
else if (this.#wsState === "authenticated")
|
|
1189
|
-
|
|
1185
|
+
else if (this.#wsState === "authenticated") {
|
|
1186
|
+
this.#prepareMessage(msg.message);
|
|
1187
|
+
this.#sendMessage(msg.message);
|
|
1188
|
+
} else {
|
|
1190
1189
|
if (this.#msgBuffer.length >= this.#message_buffer_size) throw new Error("Message buffer is full");
|
|
1191
1190
|
this.#msgBuffer.push(msg);
|
|
1192
1191
|
}
|
|
1193
1192
|
});
|
|
1194
|
-
this.hooks.hook("frontgateConnection:authenticated", () => {
|
|
1195
|
-
if (!this.#wsConf) throw new Error("No connection configuration set");
|
|
1196
|
-
this.log(LogLevel.DEBUG, "Draining message buffer");
|
|
1197
|
-
while (this.#msgBuffer.length > 0) {
|
|
1198
|
-
const msg = this.#msgBuffer.shift();
|
|
1199
|
-
if (msg) {
|
|
1200
|
-
this.#prepareMessage(msg.message);
|
|
1201
|
-
this.#sendMessage(msg.message);
|
|
1202
|
-
}
|
|
1203
|
-
}
|
|
1204
|
-
this.#keepAliveTimer = setInterval(() => {
|
|
1205
|
-
this.log(LogLevel.DEBUG, "Sending keepalive");
|
|
1206
|
-
this.hooks.callHook("frontgateConnection:sendMessage", {
|
|
1207
|
-
message: this.#getKeepAliveMessage(),
|
|
1208
|
-
callbackType: "response",
|
|
1209
|
-
callbackId: "KeepAliveMessage"
|
|
1210
|
-
});
|
|
1211
|
-
}, this.#wsConf.maximumIdleIntervalInS / 2 * 1e3);
|
|
1212
|
-
});
|
|
1213
1193
|
this.hooks.hook("reconnect:attempt", async () => {
|
|
1214
1194
|
clearInterval(this.#keepAliveTimer);
|
|
1215
1195
|
this.log(LogLevel.DEBUG, "Reconnecting");
|
|
@@ -1250,12 +1230,35 @@
|
|
|
1250
1230
|
this.#ws.binaryType = "arraybuffer";
|
|
1251
1231
|
let unhookOnFrontgateConnectionAuthenticated;
|
|
1252
1232
|
this.#ws.onopen = () => {
|
|
1233
|
+
const sendMessagesInBuffer = () => {
|
|
1234
|
+
this.log(LogLevel.DEBUG, "Draining message buffer");
|
|
1235
|
+
while (this.#msgBuffer.length > 0) {
|
|
1236
|
+
const msg = this.#msgBuffer.shift();
|
|
1237
|
+
if (msg) {
|
|
1238
|
+
this.#prepareMessage(msg.message);
|
|
1239
|
+
this.#sendMessage(msg.message);
|
|
1240
|
+
}
|
|
1241
|
+
}
|
|
1242
|
+
};
|
|
1243
|
+
const startKeepAliveTimer = () => {
|
|
1244
|
+
if (!this.#wsConf) throw new Error("No connection configuration set");
|
|
1245
|
+
this.#keepAliveTimer = setInterval(() => {
|
|
1246
|
+
this.log(LogLevel.DEBUG, "Sending keepalive");
|
|
1247
|
+
this.hooks.callHook("frontgateConnection:sendMessage", {
|
|
1248
|
+
message: this.#getKeepAliveMessage(),
|
|
1249
|
+
callbackType: "response",
|
|
1250
|
+
callbackId: "KeepAliveMessage"
|
|
1251
|
+
});
|
|
1252
|
+
}, this.#wsConf.maximumIdleIntervalInS / 2 * 1e3);
|
|
1253
|
+
};
|
|
1253
1254
|
this.#wsStateInternal = "connected";
|
|
1254
1255
|
this.log(LogLevel.DEBUG, "Connected");
|
|
1255
1256
|
this.hooks.callHook("frontgateConnection:connected", this.#wsConf).catch(reject);
|
|
1256
1257
|
unhookOnFrontgateConnectionAuthenticated = this.hooks.hookOnce("frontgateConnection:authenticated", () => {
|
|
1257
1258
|
this.#wsStateInternal = "authenticated";
|
|
1258
1259
|
this.log(LogLevel.DEBUG, "Authenticated");
|
|
1260
|
+
sendMessagesInBuffer();
|
|
1261
|
+
startKeepAliveTimer();
|
|
1259
1262
|
resolve();
|
|
1260
1263
|
});
|
|
1261
1264
|
};
|
|
@@ -1567,8 +1570,8 @@
|
|
|
1567
1570
|
for (var i = 280; i < 288; ++i) flt[i] = 8;
|
|
1568
1571
|
var fdt = new u8(32);
|
|
1569
1572
|
for (var i = 0; i < 32; ++i) fdt[i] = 5;
|
|
1570
|
-
var flm =
|
|
1571
|
-
var fdm =
|
|
1573
|
+
var flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);
|
|
1574
|
+
var fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);
|
|
1572
1575
|
var max = function(a) {
|
|
1573
1576
|
var m = a[0];
|
|
1574
1577
|
for (var i = 1; i < a.length; ++i) if (a[i] > m) m = a[i];
|
|
@@ -1923,7 +1926,7 @@
|
|
|
1923
1926
|
wbits16(out, p, lm[256]);
|
|
1924
1927
|
return p + ll[256];
|
|
1925
1928
|
};
|
|
1926
|
-
var deo =
|
|
1929
|
+
var deo = /*#__PURE__*/ new i32([
|
|
1927
1930
|
65540,
|
|
1928
1931
|
131080,
|
|
1929
1932
|
131088,
|
|
@@ -1934,7 +1937,7 @@
|
|
|
1934
1937
|
2114560,
|
|
1935
1938
|
2117632
|
|
1936
1939
|
]);
|
|
1937
|
-
var et =
|
|
1940
|
+
var et = /*#__PURE__*/ new u8(0);
|
|
1938
1941
|
var dflt = function(dat, lvl, plvl, pre, post, st) {
|
|
1939
1942
|
var s = st.z || dat.length;
|
|
1940
1943
|
var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7e3)) + post);
|
|
@@ -2270,8 +2273,8 @@
|
|
|
2270
2273
|
};
|
|
2271
2274
|
return Unzlib;
|
|
2272
2275
|
}();
|
|
2273
|
-
var te = typeof TextEncoder != "undefined" &&
|
|
2274
|
-
var td = typeof TextDecoder != "undefined" &&
|
|
2276
|
+
var te = typeof TextEncoder != "undefined" && /*#__PURE__*/ new TextEncoder();
|
|
2277
|
+
var td = typeof TextDecoder != "undefined" && /*#__PURE__*/ new TextDecoder();
|
|
2275
2278
|
try {
|
|
2276
2279
|
td.decode(et, { stream: true });
|
|
2277
2280
|
} catch (e) {}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@factset/frontgate-js-sdk",
|
|
3
3
|
"author": "Factset GmbH",
|
|
4
|
-
"version": "7.1.
|
|
4
|
+
"version": "7.1.3",
|
|
5
5
|
"description": "Typescript based client to request and subscribe values from mdg2 (frontgate)",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"main": "./dist/lib/node/index.js",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"@types/ws": "^8.18.1",
|
|
71
71
|
"@typescript-eslint/eslint-plugin": "^8.38.0",
|
|
72
72
|
"@vitest/coverage-v8": "^4.0.0",
|
|
73
|
-
"concurrently": "^
|
|
73
|
+
"concurrently": "^10.0.0",
|
|
74
74
|
"conventional-changelog": "^7.1.1",
|
|
75
75
|
"cross-env": "^10.0.0",
|
|
76
76
|
"eslint": "^9.31.0",
|
|
@@ -86,5 +86,5 @@
|
|
|
86
86
|
"vite": "^8.0.0",
|
|
87
87
|
"vitest": "^4.0.0"
|
|
88
88
|
},
|
|
89
|
-
"packageManager": "yarn@4.
|
|
89
|
+
"packageManager": "yarn@4.17.0"
|
|
90
90
|
}
|