@nanolink/mirrors 1.0.15 → 1.0.17

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.
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=MirrorOpSync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MirrorOpSync.js","sourceRoot":"","sources":["../src/MirrorOpSync.ts"],"names":[],"mappings":""}
@@ -75,8 +75,9 @@ export declare class MirrorSync extends EventEmitter {
75
75
  /** Deferred promise resolved on first DONE after a (re)start full sync cycle. Reset on constructor, start(), and VERSION_ERROR re-init. */
76
76
  loaded: Promise<ReadonlyMapView<string, any>>;
77
77
  private resolveLoaded?;
78
- private onReconnected?;
79
- private onConnected?;
78
+ private __onReconnected?;
79
+ private __onConnected?;
80
+ private backlog;
80
81
  get Storage(): ReadonlyMapView<string, any>;
81
82
  constructor(client: SubscriptionClient, options: MirrorSyncOptions & {
82
83
  log?: (msg: string, meta?: any) => void;
@@ -97,6 +97,7 @@ var MirrorSync = /** @class */ (function (_super) {
97
97
  _this.unsub = null;
98
98
  _this.fullSyncPhase = false; // only true during START..DONE when initiating from version -1
99
99
  _this.dmap = new DelegatingMap(function () { return _this.mirror; });
100
+ _this.backlog = [];
100
101
  _this.client = client;
101
102
  _this.options = options;
102
103
  _this.log = options.log;
@@ -113,27 +114,27 @@ var MirrorSync = /** @class */ (function (_super) {
113
114
  this.log(msg, meta); };
114
115
  MirrorSync.prototype.attachClientEvents = function () {
115
116
  var _this = this;
116
- this.onReconnected = function () {
117
+ this.__onReconnected = function () {
117
118
  _this.emit('resubscribe', { fromVersion: _this.currentVersion });
118
119
  _this.resubscribe();
119
120
  };
120
- this.onConnected = function () {
121
+ this.__onConnected = function () {
121
122
  if ((_this.currentVersion === -1 || _this.currentOpVersion === null) && !_this.unsub) {
122
123
  _this.l('initial connected subscribe', { version: _this.currentVersion, opVersion: _this.currentOpVersion });
123
124
  _this.subscribeInternal(_this.currentVersion, _this.currentOpVersion);
124
125
  }
125
126
  };
126
- this.client.on('reconnected', this.onReconnected);
127
- this.client.on('connected', this.onConnected);
127
+ this.client.on('reconnected', this.__onReconnected);
128
+ this.client.on('connected', this.__onConnected);
128
129
  };
129
130
  MirrorSync.prototype.detachClientEvents = function () {
130
- if (this.onReconnected) {
131
- this.client.off('reconnected', this.onReconnected);
132
- this.onReconnected = undefined;
131
+ if (this.__onReconnected) {
132
+ this.client.off('reconnected', this.__onReconnected);
133
+ this.__onReconnected = undefined;
133
134
  }
134
- if (this.onConnected) {
135
- this.client.off('connected', this.onConnected);
136
- this.onConnected = undefined;
135
+ if (this.__onConnected) {
136
+ this.client.off('connected', this.__onConnected);
137
+ this.__onConnected = undefined;
137
138
  }
138
139
  };
139
140
  MirrorSync.prototype.needsFullSync = function () { return this.currentVersion === -1 || this.currentOpVersion === null; };
@@ -204,6 +205,7 @@ var MirrorSync = /** @class */ (function (_super) {
204
205
  });
205
206
  };
206
207
  MirrorSync.prototype.handlePayload = function (raw) {
208
+ var e_1, _a;
207
209
  if (!raw)
208
210
  return;
209
211
  // Always pick the first field in the payload object regardless of configured rootField
@@ -238,6 +240,22 @@ var MirrorSync = /** @class */ (function (_super) {
238
240
  }
239
241
  this.fullSyncPhase = false;
240
242
  var d = { full: wasFull };
243
+ if (wasFull) {
244
+ try {
245
+ for (var _b = __values(this.backlog), _c = _b.next(); !_c.done; _c = _b.next()) {
246
+ var b = _c.value;
247
+ b();
248
+ }
249
+ }
250
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
251
+ finally {
252
+ try {
253
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
254
+ }
255
+ finally { if (e_1) throw e_1.error; }
256
+ }
257
+ this.backlog = [];
258
+ }
241
259
  this.emit('done', d);
242
260
  // Resolve deferred if pending
243
261
  if (this.resolveLoaded) {
@@ -253,7 +271,8 @@ var MirrorSync = /** @class */ (function (_super) {
253
271
  // restart as full sync
254
272
  this.currentVersion = -1;
255
273
  this.currentOpVersion = null;
256
- this.buffer = null;
274
+ this.buffer = new Map();
275
+ this.fullSyncPhase = true;
257
276
  this.resetLoaded();
258
277
  this.subscribeInternal(this.currentVersion, this.currentOpVersion);
259
278
  break;
@@ -265,36 +284,47 @@ var MirrorSync = /** @class */ (function (_super) {
265
284
  return Array.isArray(data) ? data : [data];
266
285
  };
267
286
  MirrorSync.prototype.applyUpdated = function (data, isFullPhase) {
268
- var e_1, _a;
287
+ var e_2, _a;
288
+ var _this = this;
289
+ var _loop_1 = function (item) {
290
+ if (!item || typeof item.id !== 'string')
291
+ return "continue";
292
+ var hasNumeric = typeof item.version === 'number';
293
+ var hasOp = typeof item.opVersion === 'string';
294
+ if (!hasNumeric && !hasOp)
295
+ return "continue";
296
+ var existing = this_1.targetMap().get(item.id);
297
+ var newerNumeric = hasNumeric && (!(existing === null || existing === void 0 ? void 0 : existing.version) || item.version >= existing.version);
298
+ var newerOp = hasOp && (!(existing === null || existing === void 0 ? void 0 : existing.opVersion) || item.opVersion >= existing.opVersion);
299
+ if (!existing || newerNumeric || newerOp) {
300
+ this_1.targetMap().set(item.id, item);
301
+ this_1.advanceNumeric(item.version);
302
+ this_1.advanceOp(item.opVersion);
303
+ if (this_1.fullSyncPhase) {
304
+ this_1.backlog.push(function () { return _this.emit('updated', item, isFullPhase); });
305
+ }
306
+ else {
307
+ this_1.emit('updated', item, isFullPhase);
308
+ }
309
+ }
310
+ };
311
+ var this_1 = this;
269
312
  try {
270
313
  for (var _b = __values(this.normalizeItems(data)), _c = _b.next(); !_c.done; _c = _b.next()) {
271
314
  var item = _c.value;
272
- if (!item || typeof item.id !== 'string')
273
- continue;
274
- var hasNumeric = typeof item.version === 'number';
275
- var hasOp = typeof item.opVersion === 'string';
276
- if (!hasNumeric && !hasOp)
277
- continue;
278
- var existing = this.targetMap().get(item.id);
279
- var newerNumeric = hasNumeric && (!(existing === null || existing === void 0 ? void 0 : existing.version) || item.version >= existing.version);
280
- var newerOp = hasOp && (!(existing === null || existing === void 0 ? void 0 : existing.opVersion) || item.opVersion >= existing.opVersion);
281
- if (!existing || newerNumeric || newerOp) {
282
- this.targetMap().set(item.id, item);
283
- this.advanceNumeric(item.version);
284
- this.advanceOp(item.opVersion);
285
- this.emit('updated', item, isFullPhase);
286
- }
315
+ _loop_1(item);
287
316
  }
288
317
  }
289
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
318
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
290
319
  finally {
291
320
  try {
292
321
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
293
322
  }
294
- finally { if (e_1) throw e_1.error; }
323
+ finally { if (e_2) throw e_2.error; }
295
324
  }
296
325
  };
297
326
  MirrorSync.prototype.applyDeleted = function (id, deleteVersion, deleteOpVersion) {
327
+ var _this = this;
298
328
  var _a;
299
329
  if (!id)
300
330
  return;
@@ -310,7 +340,12 @@ var MirrorSync = /** @class */ (function (_super) {
310
340
  var del = { id: id, version: deleteVersion };
311
341
  if (deleteOpVersion)
312
342
  del.opVersion = deleteOpVersion;
313
- this.emit('deleted', del);
343
+ if (this.fullSyncPhase) {
344
+ this.backlog.push(function () { return _this.emit('deleted', del); });
345
+ }
346
+ else {
347
+ this.emit('deleted', del);
348
+ }
314
349
  };
315
350
  MirrorSync.prototype.get = function (id) { return this.mirror.get(id); };
316
351
  MirrorSync.prototype.values = function () { return Array.from(this.mirror.values()); };
@@ -1 +1 @@
1
- {"version":3,"file":"MirrorSync.js","sourceRoot":"","sources":["../src/MirrorSync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MirrorSync.js","sourceRoot":"","sources":["../src/MirrorSync.ts"],"names":[],"mappings":"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"}
@@ -53,13 +53,14 @@ export interface Observer<T> {
53
53
  complete?: () => void;
54
54
  }
55
55
  export declare class SubscriptionClient extends EventEmitter {
56
- private options;
56
+ private options?;
57
57
  private client;
58
58
  private connectAttempt;
59
59
  private closedExplicitly;
60
60
  private reconnecting;
61
61
  private hasEverConnected;
62
- constructor(opts: SubscriptionClientOptions);
62
+ constructor();
63
+ InitClient(opts: SubscriptionClientOptions): void;
63
64
  private resolveWebSocketImpl;
64
65
  /** Returns true if an underlying websocket client exists (connected or in-flight). */
65
66
  isConnected(): boolean;
@@ -54,16 +54,19 @@ import { createClient } from 'graphql-ws';
54
54
  import EventEmitter from 'eventemitter3';
55
55
  var SubscriptionClient = /** @class */ (function (_super) {
56
56
  __extends(SubscriptionClient, _super);
57
- function SubscriptionClient(opts) {
58
- var _a, _b, _c, _d, _e;
57
+ function SubscriptionClient() {
59
58
  var _this = _super.call(this) || this;
60
59
  _this.client = null;
61
60
  _this.connectAttempt = 0;
62
61
  _this.closedExplicitly = false;
63
62
  _this.reconnecting = false;
64
63
  _this.hasEverConnected = false;
65
- _this.options = {
66
- url: opts.url.replace(/^http/, "ws").replace(/^https/, "wss") + '/ws',
64
+ return _this;
65
+ }
66
+ SubscriptionClient.prototype.InitClient = function (opts) {
67
+ var _a, _b, _c, _d, _e;
68
+ this.options = {
69
+ url: opts.url,
67
70
  connectionParams: opts.connectionParams,
68
71
  maxReconnectAttempts: (_a = opts.maxReconnectAttempts) !== null && _a !== void 0 ? _a : Infinity,
69
72
  retryDelayMs: (_b = opts.retryDelayMs) !== null && _b !== void 0 ? _b : 500,
@@ -72,9 +75,10 @@ var SubscriptionClient = /** @class */ (function (_super) {
72
75
  webSocketImpl: (_e = opts.webSocketImpl) !== null && _e !== void 0 ? _e : undefined,
73
76
  log: opts.log,
74
77
  };
75
- return _this;
76
- }
78
+ };
77
79
  SubscriptionClient.prototype.resolveWebSocketImpl = function () {
80
+ if (!this.options)
81
+ throw new Error('SubscriptionClient not initialized - call InitConnection first');
78
82
  // Proxy-aware priority:
79
83
  // 1. Explicit user-supplied impl
80
84
  // 2. Browser bundle: never load 'ws' — use global WebSocket
@@ -117,11 +121,14 @@ var SubscriptionClient = /** @class */ (function (_super) {
117
121
  return !!this.client; // createClientIfNeeded only after socket open attempt
118
122
  };
119
123
  SubscriptionClient.prototype.log = function (msg, meta) {
120
- if (this.options.log)
124
+ var _a;
125
+ if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.log)
121
126
  this.options.log(msg, meta);
122
127
  };
123
128
  SubscriptionClient.prototype.createClientIfNeeded = function (isReconnect) {
124
129
  var _this = this;
130
+ if (!this.options)
131
+ throw new Error('SubscriptionClient not initialized - call InitConnection first');
125
132
  if (this.client)
126
133
  return; // already have client
127
134
  var _a = this.options, url = _a.url, connectionParams = _a.connectionParams;
@@ -175,6 +182,8 @@ var SubscriptionClient = /** @class */ (function (_super) {
175
182
  };
176
183
  SubscriptionClient.prototype.scheduleReconnect = function () {
177
184
  var _this = this;
185
+ if (!this.options)
186
+ throw new Error('SubscriptionClient not initialized - call InitConnection first');
178
187
  if (this.reconnecting)
179
188
  return;
180
189
  if (this.connectAttempt >= this.options.maxReconnectAttempts) {
@@ -195,6 +204,8 @@ var SubscriptionClient = /** @class */ (function (_super) {
195
204
  };
196
205
  SubscriptionClient.prototype.subscribe = function (options, observer) {
197
206
  var _a;
207
+ if (!this.options)
208
+ throw new Error('SubscriptionClient not initialized - call InitConnection first');
198
209
  if (!this.client)
199
210
  throw new Error('Client not connected - call connect() first');
200
211
  var payload = {
@@ -1 +1 @@
1
- {"version":3,"file":"SubscriptionClient.js","sourceRoot":"","sources":["../src/SubscriptionClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubscriptionClient.js","sourceRoot":"","sources":["../src/SubscriptionClient.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,7 +5,8 @@ export { SubscriptionClient, MirrorSync, DelegatingObject };
5
5
  export type { ReadonlyMapView };
6
6
  export declare class Connection extends SubscriptionClient {
7
7
  Mirrors: Map<string, MirrorSync>;
8
- constructor(url: string, connectionParams: () => Promise<Record<string, unknown> | Record<string, unknown>>);
8
+ constructor();
9
+ InitConnection(url: string, connectionParams: () => Promise<Record<string, unknown> | Record<string, unknown>>): void;
9
10
  getMirror(name: string, subscription: string, baseVariables: Record<string, unknown>): MirrorSync;
10
11
  createMirror(subscription: string, baseVariables: Record<string, unknown>): MirrorSync;
11
12
  removeMirror(name: string): void;
package/dist/index.js CHANGED
@@ -57,14 +57,17 @@ import SubscriptionClient from "./SubscriptionClient";
57
57
  export { SubscriptionClient, MirrorSync, DelegatingObject };
58
58
  var Connection = /** @class */ (function (_super) {
59
59
  __extends(Connection, _super);
60
- function Connection(url, connectionParams) {
61
- var _this = _super.call(this, {
62
- url: url,
63
- connectionParams: connectionParams
64
- }) || this;
60
+ function Connection() {
61
+ var _this = _super.call(this) || this;
65
62
  _this.Mirrors = new Map();
66
63
  return _this;
67
64
  }
65
+ Connection.prototype.InitConnection = function (url, connectionParams) {
66
+ this.InitClient({
67
+ url: url,
68
+ connectionParams: connectionParams
69
+ });
70
+ };
68
71
  Connection.prototype.getMirror = function (name, subscription, baseVariables) {
69
72
  var _this = this;
70
73
  var entry = this.Mirrors.get(name);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -153,6 +153,7 @@ var MirrorSync = class extends import_eventemitter3.default {
153
153
  this.unsub = null;
154
154
  this.fullSyncPhase = false;
155
155
  this.dmap = new DelegatingMap(() => this.mirror);
156
+ this.backlog = [];
156
157
  this.client = client;
157
158
  this.options = options;
158
159
  this.log = options.log;
@@ -166,27 +167,27 @@ var MirrorSync = class extends import_eventemitter3.default {
166
167
  if (this.log) this.log(msg, meta);
167
168
  }
168
169
  attachClientEvents() {
169
- this.onReconnected = () => {
170
+ this.__onReconnected = () => {
170
171
  this.emit("resubscribe", { fromVersion: this.currentVersion });
171
172
  this.resubscribe();
172
173
  };
173
- this.onConnected = () => {
174
+ this.__onConnected = () => {
174
175
  if ((this.currentVersion === -1 || this.currentOpVersion === null) && !this.unsub) {
175
176
  this.l("initial connected subscribe", { version: this.currentVersion, opVersion: this.currentOpVersion });
176
177
  this.subscribeInternal(this.currentVersion, this.currentOpVersion);
177
178
  }
178
179
  };
179
- this.client.on("reconnected", this.onReconnected);
180
- this.client.on("connected", this.onConnected);
180
+ this.client.on("reconnected", this.__onReconnected);
181
+ this.client.on("connected", this.__onConnected);
181
182
  }
182
183
  detachClientEvents() {
183
- if (this.onReconnected) {
184
- this.client.off("reconnected", this.onReconnected);
185
- this.onReconnected = void 0;
184
+ if (this.__onReconnected) {
185
+ this.client.off("reconnected", this.__onReconnected);
186
+ this.__onReconnected = void 0;
186
187
  }
187
- if (this.onConnected) {
188
- this.client.off("connected", this.onConnected);
189
- this.onConnected = void 0;
188
+ if (this.__onConnected) {
189
+ this.client.off("connected", this.__onConnected);
190
+ this.__onConnected = void 0;
190
191
  }
191
192
  }
192
193
  needsFullSync() {
@@ -278,6 +279,10 @@ var MirrorSync = class extends import_eventemitter3.default {
278
279
  }
279
280
  this.fullSyncPhase = false;
280
281
  const d = { full: wasFull };
282
+ if (wasFull) {
283
+ for (const b of this.backlog) b();
284
+ this.backlog = [];
285
+ }
281
286
  this.emit("done", d);
282
287
  if (this.resolveLoaded) {
283
288
  const r = this.resolveLoaded;
@@ -291,7 +296,8 @@ var MirrorSync = class extends import_eventemitter3.default {
291
296
  this.emit("versionError", ve);
292
297
  this.currentVersion = -1;
293
298
  this.currentOpVersion = null;
294
- this.buffer = null;
299
+ this.buffer = /* @__PURE__ */ new Map();
300
+ this.fullSyncPhase = true;
295
301
  this.resetLoaded();
296
302
  this.subscribeInternal(this.currentVersion, this.currentOpVersion);
297
303
  break;
@@ -314,7 +320,11 @@ var MirrorSync = class extends import_eventemitter3.default {
314
320
  this.targetMap().set(item.id, item);
315
321
  this.advanceNumeric(item.version);
316
322
  this.advanceOp(item.opVersion);
317
- this.emit("updated", item, isFullPhase);
323
+ if (this.fullSyncPhase) {
324
+ this.backlog.push(() => this.emit("updated", item, isFullPhase));
325
+ } else {
326
+ this.emit("updated", item, isFullPhase);
327
+ }
318
328
  }
319
329
  }
320
330
  }
@@ -332,7 +342,11 @@ var MirrorSync = class extends import_eventemitter3.default {
332
342
  this.advanceOp(deleteOpVersion);
333
343
  const del = { id, version: deleteVersion };
334
344
  if (deleteOpVersion) del.opVersion = deleteOpVersion;
335
- this.emit("deleted", del);
345
+ if (this.fullSyncPhase) {
346
+ this.backlog.push(() => this.emit("deleted", del));
347
+ } else {
348
+ this.emit("deleted", del);
349
+ }
336
350
  }
337
351
  get(id) {
338
352
  return this.mirror.get(id);
@@ -1059,16 +1073,18 @@ function isWebSocket(val) {
1059
1073
  // src/SubscriptionClient.ts
1060
1074
  var import_eventemitter32 = __toESM(require("eventemitter3"));
1061
1075
  var SubscriptionClient = class extends import_eventemitter32.default {
1062
- constructor(opts) {
1063
- var _a, _b, _c, _d, _e;
1076
+ constructor() {
1064
1077
  super();
1065
1078
  this.client = null;
1066
1079
  this.connectAttempt = 0;
1067
1080
  this.closedExplicitly = false;
1068
1081
  this.reconnecting = false;
1069
1082
  this.hasEverConnected = false;
1083
+ }
1084
+ InitClient(opts) {
1085
+ var _a, _b, _c, _d, _e;
1070
1086
  this.options = {
1071
- url: opts.url.replace(/^http/, "ws").replace(/^https/, "wss") + "/ws",
1087
+ url: opts.url,
1072
1088
  connectionParams: opts.connectionParams,
1073
1089
  maxReconnectAttempts: (_a = opts.maxReconnectAttempts) != null ? _a : Infinity,
1074
1090
  retryDelayMs: (_b = opts.retryDelayMs) != null ? _b : 500,
@@ -1079,6 +1095,7 @@ var SubscriptionClient = class extends import_eventemitter32.default {
1079
1095
  };
1080
1096
  }
1081
1097
  resolveWebSocketImpl() {
1098
+ if (!this.options) throw new Error("SubscriptionClient not initialized - call InitConnection first");
1082
1099
  if (this.options.webSocketImpl) return this.options.webSocketImpl;
1083
1100
  if (true) {
1084
1101
  const g = globalThis;
@@ -1107,9 +1124,11 @@ var SubscriptionClient = class extends import_eventemitter32.default {
1107
1124
  return !!this.client;
1108
1125
  }
1109
1126
  log(msg, meta) {
1110
- if (this.options.log) this.options.log(msg, meta);
1127
+ var _a;
1128
+ if ((_a = this.options) == null ? void 0 : _a.log) this.options.log(msg, meta);
1111
1129
  }
1112
1130
  createClientIfNeeded(isReconnect) {
1131
+ if (!this.options) throw new Error("SubscriptionClient not initialized - call InitConnection first");
1113
1132
  if (this.client) return;
1114
1133
  const { url, connectionParams } = this.options;
1115
1134
  const webSocketImpl = this.resolveWebSocketImpl();
@@ -1158,6 +1177,7 @@ var SubscriptionClient = class extends import_eventemitter32.default {
1158
1177
  this.createClientIfNeeded(false);
1159
1178
  }
1160
1179
  scheduleReconnect() {
1180
+ if (!this.options) throw new Error("SubscriptionClient not initialized - call InitConnection first");
1161
1181
  if (this.reconnecting) return;
1162
1182
  if (this.connectAttempt >= this.options.maxReconnectAttempts) {
1163
1183
  this.log("max reconnect attempts reached");
@@ -1180,6 +1200,7 @@ var SubscriptionClient = class extends import_eventemitter32.default {
1180
1200
  }
1181
1201
  subscribe(options, observer) {
1182
1202
  var _a;
1203
+ if (!this.options) throw new Error("SubscriptionClient not initialized - call InitConnection first");
1183
1204
  if (!this.client) throw new Error("Client not connected - call connect() first");
1184
1205
  const payload = {
1185
1206
  query: options.query,
@@ -1255,12 +1276,15 @@ var SubscriptionClient_default = SubscriptionClient;
1255
1276
 
1256
1277
  // src/index.ts
1257
1278
  var Connection = class extends SubscriptionClient_default {
1258
- constructor(url, connectionParams) {
1259
- super({
1279
+ constructor() {
1280
+ super();
1281
+ this.Mirrors = /* @__PURE__ */ new Map();
1282
+ }
1283
+ InitConnection(url, connectionParams) {
1284
+ this.InitClient({
1260
1285
  url,
1261
1286
  connectionParams
1262
1287
  });
1263
- this.Mirrors = /* @__PURE__ */ new Map();
1264
1288
  }
1265
1289
  getMirror(name, subscription, baseVariables) {
1266
1290
  let entry = this.Mirrors.get(name);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/DelegateMap.ts","../src/MirrorSync.ts","../node_modules/graphql-ws/dist/common-CGW11Fyb.js","../node_modules/graphql-ws/dist/client.js","../src/SubscriptionClient.ts"],"sourcesContent":["import { MirrorSync } from \"./MirrorSync\";\r\nimport { ReadonlyMapView, DelegatingObject, DelegatingMap } from \"./DelegateMap\";\r\nimport SubscriptionClient from \"./SubscriptionClient\";\r\nimport { symlink } from \"fs\";\r\nimport { create } from \"domain\";\r\n\r\nexport { SubscriptionClient, MirrorSync, DelegatingObject };\r\nexport type { ReadonlyMapView };\r\n\r\nexport class Connection extends SubscriptionClient {\r\n public Mirrors: Map<string, MirrorSync> = new Map();\r\n constructor(url: string, connectionParams: () => Promise<Record<string, unknown> | Record<string, unknown>>) {\r\n super({\r\n url: url,\r\n connectionParams: connectionParams\r\n });\r\n }\r\n\r\n getMirror(name: string, subscription: string, baseVariables: Record<string, unknown>): MirrorSync {\r\n let entry = this.Mirrors.get(name);\r\n if (!entry) {\r\n const sync = this.createMirror(subscription, baseVariables);\r\n const forward = (event: string, payload: any) => {\r\n this.emit(`mirror:${event}`, { mirrorName: name, ...payload });\r\n };\r\n const handlers: Array<[string, (...args: any[]) => void]> = [\r\n ['start', (p) => forward('start', p)],\r\n ['updated', (item, fullPhase) => forward('updated', { item, fullPhase })],\r\n ['deleted', (p) => forward('deleted', p)],\r\n ['done', (p) => forward('done', p)],\r\n ['versionError', (p) => forward('versionError', p)],\r\n ['resubscribe', (p) => forward('resubscribe', p)],\r\n ['error', (p) => forward('error', p)],\r\n ];\r\n handlers.forEach(([e, h]) => sync.on(e as any, h)); \r\n this.Mirrors.set(name, sync);\r\n entry = sync;\r\n }\r\n return entry;\r\n }\r\n createMirror(subscription: string, baseVariables: Record<string, unknown>): MirrorSync {\r\n return new MirrorSync(this, { subscription, baseVariables });\r\n }\r\n\r\n removeMirror(name: string) {\r\n const entry = this.Mirrors.get(name);\r\n if (!entry) return;\r\n entry.removeAllListeners();\r\n entry.stop();\r\n this.Mirrors.delete(name);\r\n this.emit('mirror:removed', { mirrorName: name });\r\n }\r\n\r\n clearMirrors() {\r\n for (const name of Array.from(this.Mirrors.keys())) {\r\n this.removeMirror(name);\r\n }\r\n this.emit('mirror:cleared');\r\n }\r\n}\r\n","// Restored specialized read-only view interface (runtime enforced via absence of mutators)\r\nexport interface ReadonlyMapView<K, V> extends Iterable<[K, V]> {\r\n readonly size: number;\r\n get(key: K): V | undefined;\r\n has(key: K): boolean;\r\n entries(): IterableIterator<[K, V]>;\r\n keys(): IterableIterator<K>;\r\n values(): IterableIterator<V>;\r\n forEach(callbackfn: (value: V, key: K, map: ReadonlyMapView<K, V>) => void, thisArg?: any): void;\r\n [Symbol.iterator](): IterableIterator<[K, V]>;\r\n}\r\n\r\nexport class DelegatingMap<K, V> implements ReadonlyMapView<K, V> {\r\n constructor(private readonly resolver: () => Map<K, V>) { }\r\n private t(): Map<K, V> { return this.resolver(); }\r\n get size(): number { return this.t().size; }\r\n get(key: K): V | undefined { return this.t().get(key); }\r\n has(key: K): boolean { return this.t().has(key); }\r\n entries(): IterableIterator<[K, V]> { return this.t().entries(); }\r\n keys(): IterableIterator<K> { return this.t().keys(); }\r\n values(): IterableIterator<V> { return this.t().values(); }\r\n forEach(callbackfn: (value: V, key: K, map: ReadonlyMapView<K, V>) => void, thisArg?: any): void {\r\n this.t().forEach(((v: V, k: K) => callbackfn(v, k, this)) as any, thisArg);\r\n }\r\n [Symbol.iterator](): IterableIterator<[K, V]> { return this.t()[Symbol.iterator](); }\r\n}\r\n\r\n/**\r\n * Presents a ReadonlyMapView<K,V> as an immutable plain object via Proxy.\r\n * Optionally maps values through a mapper function on access.\r\n */\r\nexport class DelegatingObject<K extends string, V, R = V> {\r\n private readonly proxy: Record<K, R>;\r\n constructor(private readonly source: ReadonlyMapView<K, V>, private readonly mapFn?: (value: V, key: K) => R) {\r\n const mapper = (v: V, k: K): R => (this.mapFn ? this.mapFn(v, k) : (v as unknown as R));\r\n const handler: ProxyHandler<any> = {\r\n get: (_target, prop: PropertyKey, receiver) => {\r\n if (prop === Symbol.toStringTag) return 'Object';\r\n if (typeof prop !== 'string') return Reflect.get(Object.prototype, prop, receiver);\r\n const key = prop as K;\r\n const v = this.source.get(key);\r\n return v === undefined ? undefined : mapper(v, key);\r\n },\r\n set: () => false, // immutable\r\n has: (_target, prop: PropertyKey) => typeof prop === 'string' && this.source.has(prop as K),\r\n deleteProperty: () => false, // immutable\r\n ownKeys: () => Array.from(this.source.keys() as unknown as IterableIterator<string>),\r\n getOwnPropertyDescriptor: (_target, prop: PropertyKey) => {\r\n if (typeof prop === 'string' && this.source.has(prop as K)) {\r\n const key = prop as K;\r\n const v = this.source.get(key)!;\r\n return { configurable: true, enumerable: true, value: mapper(v, key) };\r\n }\r\n return undefined;\r\n },\r\n defineProperty: () => false, // immutable\r\n };\r\n this.proxy = new Proxy(Object.create(null), handler);\r\n }\r\n asObject(): Record<K, R> { return this.proxy; }\r\n}\r\n","import { DelegatingMap, ReadonlyMapView } from './DelegateMap';\r\nimport { SubscriptionClient } from './SubscriptionClient';\r\nimport EventEmitter from 'eventemitter3';\r\n\r\n// SyncType enum as described\r\nexport enum SyncType {\r\n DELETED = 'DELETED',\r\n UPDATED = 'UPDATED',\r\n START = 'START',\r\n DONE = 'DONE',\r\n VERSION_ERROR = 'VERSION_ERROR',\r\n}\r\n\r\n// Shape of the subscription payload (generic)\r\nexport interface CacheSyncResult {\r\n type: SyncType;\r\n total?: number | null;\r\n deleteId?: string; // ObjectId as string\r\n data?: any;\r\n deleteVersion?: number;\r\n // Optional operation-based versioning (string) for hybrid mode\r\n deleteOpVersion?: string;\r\n opVersion?: string; // May appear on items inside data\r\n}\r\n\r\nexport interface MirrorSyncOptions {\r\n /** Subscription document (query string) */\r\n subscription: string;\r\n /** Optional logger */\r\n /** Custom variables base (besides version) */\r\n baseVariables?: Record<string, unknown>;\r\n}\r\n\r\nexport interface MirrorStats {\r\n version: number; // numeric version cursor\r\n opVersion?: string | null; // operation (ObjectId) cursor\r\n size: number;\r\n fullSyncInProgress: boolean;\r\n totalHint?: number | null;\r\n}\r\n\r\nexport interface MirrorSyncEvents {\r\n start: (info: { full: boolean }) => void;\r\n updated: (item: MirrorItem, isFullPhase: boolean) => void;\r\n deleted: (info: { id: string; version: number | undefined }) => void;\r\n done: (info: { full: boolean }) => void;\r\n versionError: (info: { currentVersion: number }) => void;\r\n resubscribe: (info: { fromVersion: number }) => void;\r\n error?: (errors: any) => void;\r\n}\r\n\r\n\r\nexport interface MirrorItem { id: string; version?: number; opVersion?: string;[k: string]: any }\r\n\r\n/**\r\n * MirrorSync maintains an in-memory mirror of server state based on CacheSyncResult messages.\r\n * Generic TBase is the item shape (must include id & version).\r\n */\r\nexport class MirrorSync extends EventEmitter {\r\n private client: SubscriptionClient;\r\n private options: MirrorSyncOptions;\r\n private mirror = new Map<string, MirrorItem>();\r\n private buffer: Map<string, MirrorItem> | null = null; // used during full/resubscription phase\r\n private currentVersion = -1; // numeric cursor (-1 => full sync needed)\r\n private currentOpVersion: string | null = null; // op cursor (null => full sync needed)\r\n private unsub: (() => void) | null = null;\r\n private fullSyncPhase = false; // only true during START..DONE when initiating from version -1\r\n private log?: (msg: string, meta?: any) => void;\r\n private dmap = new DelegatingMap<string, any>(() => this.mirror);\r\n /** Deferred promise resolved on first DONE after a (re)start full sync cycle. Reset on constructor, start(), and VERSION_ERROR re-init. */\r\n public loaded!: Promise<ReadonlyMapView<string, any>>; // set via resetLoaded()\r\n private resolveLoaded?: (ref: ReadonlyMapView<string, any>) => void;\r\n // Stored client event handlers to allow proper detachment\r\n private onReconnected?: () => void;\r\n private onConnected?: () => void;\r\n\r\n get Storage(): ReadonlyMapView<string, any> { return this.mirror; }\r\n\r\n constructor(client: SubscriptionClient, options: MirrorSyncOptions & { log?: (msg: string, meta?: any) => void }) {\r\n super();\r\n this.client = client;\r\n this.options = options;\r\n this.log = options.log;\r\n this.attachClientEvents();\r\n this.resetLoaded();\r\n }\r\n\r\n private l(msg: string, meta?: any) { if (this.log) this.log(msg, meta); }\r\n\r\n private attachClientEvents() {\r\n this.onReconnected = () => {\r\n this.emit('resubscribe', { fromVersion: this.currentVersion });\r\n this.resubscribe();\r\n };\r\n this.onConnected = () => {\r\n if ((this.currentVersion === -1 || this.currentOpVersion === null) && !this.unsub) {\r\n this.l('initial connected subscribe', { version: this.currentVersion, opVersion: this.currentOpVersion });\r\n this.subscribeInternal(this.currentVersion, this.currentOpVersion);\r\n }\r\n };\r\n this.client.on('reconnected', this.onReconnected);\r\n this.client.on('connected', this.onConnected);\r\n }\r\n\r\n private detachClientEvents() {\r\n if (this.onReconnected) {\r\n this.client.off('reconnected', this.onReconnected);\r\n this.onReconnected = undefined;\r\n }\r\n if (this.onConnected) {\r\n this.client.off('connected', this.onConnected);\r\n this.onConnected = undefined;\r\n }\r\n }\r\n\r\n private needsFullSync(): boolean { return this.currentVersion === -1 || this.currentOpVersion === null; }\r\n private targetMap(): Map<string, MirrorItem> { return (this.fullSyncPhase && this.buffer) ? this.buffer! : this.mirror; }\r\n private advanceNumeric(v?: number) { if (typeof v === 'number' && v > this.currentVersion) this.currentVersion = v; }\r\n private advanceOp(v?: string) { if (v && (!this.currentOpVersion || v > this.currentOpVersion)) this.currentOpVersion = v; }\r\n\r\n private subscribeInternal(version: number, opVersion: string | null) {\r\n if (!this.client) throw new Error('SubscriptionClient missing');\r\n if (this.unsub) { this.unsub(); this.unsub = null; }\r\n const variables = { version, opVersion, ...(this.options.baseVariables || {}) };\r\n this.l('subscribe', { version, opVersion });\r\n this.unsub = this.client.subscribe<{ [k: string]: CacheSyncResult }>(\r\n { query: this.options.subscription, variables },\r\n {\r\n next: (envelope: { data?: { [k: string]: CacheSyncResult }; errors?: any }) => {\r\n if (envelope.errors) {\r\n this.l('graphql errors', envelope.errors);\r\n this.emit('error', envelope.errors);\r\n }\r\n const payload = envelope.data as { [k: string]: CacheSyncResult } | undefined;\r\n if (payload) this.handlePayload(payload);\r\n },\r\n error: (err: unknown) => this.l('subscription error', err),\r\n complete: () => this.l('subscription complete'),\r\n }\r\n );\r\n }\r\n\r\n private resubscribe() {\r\n // Resubscribe starting from current cursors\r\n this.subscribeInternal(this.currentVersion, this.currentOpVersion);\r\n }\r\n\r\n private start() {\r\n if (!this.client.isConnected()) { this.l('start deferred (not connected)'); return; }\r\n this.subscribeInternal(this.currentVersion, this.currentOpVersion);\r\n }\r\n\r\n load(): Promise<ReadonlyMapView<string, any>> {\r\n if (!this.unsub) this.start();\r\n return this.loaded;\r\n }\r\n async subscribe(): Promise<void> {\r\n if (!this.unsub) this.start();\r\n await this.loaded;\r\n }\r\n\r\n private resetLoaded() {\r\n this.loaded = new Promise<ReadonlyMapView<string, any>>(resolve => {\r\n this.resolveLoaded = resolve;\r\n });\r\n }\r\n\r\n private handlePayload(raw: { [k: string]: CacheSyncResult } | undefined) {\r\n if (!raw) return;\r\n // Always pick the first field in the payload object regardless of configured rootField\r\n const firstKey = Object.keys(raw)[0];\r\n if (!firstKey) return;\r\n const msg = raw[firstKey];\r\n if (!msg) return;\r\n const { type } = msg;\r\n switch (type) {\r\n case SyncType.START: {\r\n const isFull = this.needsFullSync();\r\n this.fullSyncPhase = isFull;\r\n // Only allocate a new buffer for a true full sync; for delta/resubscribe we append directly\r\n this.buffer = isFull ? new Map() : null;\r\n const payload = { full: isFull };\r\n this.emit('start', payload);\r\n break;\r\n }\r\n case SyncType.UPDATED:\r\n this.applyUpdated(msg.data, this.fullSyncPhase);\r\n break;\r\n case SyncType.DELETED:\r\n this.applyDeleted(msg.deleteId, msg.deleteVersion, msg.deleteOpVersion);\r\n break;\r\n case SyncType.DONE: {\r\n const wasFull = this.fullSyncPhase;\r\n if (wasFull && this.buffer) {\r\n this.mirror = this.buffer;\r\n this.buffer = null;\r\n }\r\n this.fullSyncPhase = false;\r\n const d = { full: wasFull };\r\n this.emit('done', d);\r\n // Resolve deferred if pending\r\n if (this.resolveLoaded) {\r\n const r = this.resolveLoaded; this.resolveLoaded = undefined; r(this.dmap);\r\n }\r\n break;\r\n }\r\n case SyncType.VERSION_ERROR:\r\n const ve = { currentVersion: this.currentVersion };\r\n this.emit('versionError', ve);\r\n // restart as full sync\r\n this.currentVersion = -1;\r\n this.currentOpVersion = null;\r\n this.buffer = null;\r\n this.resetLoaded();\r\n this.subscribeInternal(this.currentVersion, this.currentOpVersion);\r\n break;\r\n }\r\n }\r\n\r\n private normalizeItems(data: any): MirrorItem[] {\r\n if (!data) return [];\r\n return Array.isArray(data) ? data : [data];\r\n }\r\n\r\n private applyUpdated(data: any, isFullPhase: boolean) {\r\n for (const item of this.normalizeItems(data)) {\r\n if (!item || typeof item.id !== 'string') continue;\r\n const hasNumeric = typeof item.version === 'number';\r\n const hasOp = typeof item.opVersion === 'string';\r\n if (!hasNumeric && !hasOp) continue;\r\n const existing = this.targetMap().get(item.id);\r\n const newerNumeric = hasNumeric && (!existing?.version || item.version! >= existing.version);\r\n const newerOp = hasOp && (!existing?.opVersion || item.opVersion! >= existing.opVersion);\r\n if (!existing || newerNumeric || newerOp) {\r\n this.targetMap().set(item.id, item);\r\n this.advanceNumeric(item.version);\r\n this.advanceOp(item.opVersion);\r\n this.emit('updated', item, isFullPhase);\r\n }\r\n }\r\n }\r\n private applyDeleted(id?: string, deleteVersion?: number, deleteOpVersion?: string) {\r\n if (!id) return;\r\n const numericStale = !this.fullSyncPhase && typeof deleteVersion === 'number' && this.currentVersion >= 0 && deleteVersion < this.currentVersion;\r\n const opStale = !this.fullSyncPhase && deleteOpVersion && this.currentOpVersion && deleteOpVersion < this.currentOpVersion;\r\n if (numericStale && opStale) {\r\n this.l?.('skip stale delete', { id, deleteVersion, deleteOpVersion });\r\n return;\r\n }\r\n this.targetMap().delete(id);\r\n this.advanceNumeric(deleteVersion);\r\n this.advanceOp(deleteOpVersion);\r\n const del: any = { id, version: deleteVersion };\r\n if (deleteOpVersion) del.opVersion = deleteOpVersion;\r\n this.emit('deleted', del);\r\n }\r\n\r\n get(id: string): any | undefined { return this.mirror.get(id); }\r\n values(): any[] { return Array.from(this.mirror.values()); }\r\n stats(): MirrorStats { return { version: this.currentVersion, opVersion: this.currentOpVersion, size: this.mirror.size, fullSyncInProgress: this.fullSyncPhase }; }\r\n\r\n stop() {\r\n if (this.unsub) { this.unsub(); this.unsub = null; }\r\n this.detachClientEvents();\r\n this.currentVersion = -1;\r\n this.currentOpVersion = null;\r\n this.buffer = null;\r\n if (this.resolveLoaded) {\r\n const r = this.resolveLoaded; this.resolveLoaded = undefined; r(this.dmap);\r\n }\r\n this.resetLoaded();\r\n }\r\n}\r\n","function extendedTypeof(val) {\n if (val === null) {\n return \"null\";\n }\n if (Array.isArray(val)) {\n return \"array\";\n }\n return typeof val;\n}\nfunction isObject(val) {\n return extendedTypeof(val) === \"object\";\n}\nfunction isAsyncIterable(val) {\n return typeof Object(val)[Symbol.asyncIterator] === \"function\";\n}\nfunction isAsyncGenerator(val) {\n return isObject(val) && typeof Object(val)[Symbol.asyncIterator] === \"function\" && typeof val.return === \"function\";\n}\nfunction areGraphQLFormattedErrors(obj) {\n return Array.isArray(obj) && // must be at least one error\n obj.length > 0 && // error has at least a message\n obj.every((ob) => \"message\" in ob);\n}\nfunction limitCloseReason(reason, whenTooLong) {\n return reason.length < 124 ? reason : whenTooLong;\n}\n\nconst GRAPHQL_TRANSPORT_WS_PROTOCOL = \"graphql-transport-ws\";\nconst DEPRECATED_GRAPHQL_WS_PROTOCOL = \"graphql-ws\";\nvar CloseCode = /* @__PURE__ */ ((CloseCode2) => {\n CloseCode2[CloseCode2[\"InternalServerError\"] = 4500] = \"InternalServerError\";\n CloseCode2[CloseCode2[\"InternalClientError\"] = 4005] = \"InternalClientError\";\n CloseCode2[CloseCode2[\"BadRequest\"] = 4400] = \"BadRequest\";\n CloseCode2[CloseCode2[\"BadResponse\"] = 4004] = \"BadResponse\";\n CloseCode2[CloseCode2[\"Unauthorized\"] = 4401] = \"Unauthorized\";\n CloseCode2[CloseCode2[\"Forbidden\"] = 4403] = \"Forbidden\";\n CloseCode2[CloseCode2[\"SubprotocolNotAcceptable\"] = 4406] = \"SubprotocolNotAcceptable\";\n CloseCode2[CloseCode2[\"ConnectionInitialisationTimeout\"] = 4408] = \"ConnectionInitialisationTimeout\";\n CloseCode2[CloseCode2[\"ConnectionAcknowledgementTimeout\"] = 4504] = \"ConnectionAcknowledgementTimeout\";\n CloseCode2[CloseCode2[\"SubscriberAlreadyExists\"] = 4409] = \"SubscriberAlreadyExists\";\n CloseCode2[CloseCode2[\"TooManyInitialisationRequests\"] = 4429] = \"TooManyInitialisationRequests\";\n return CloseCode2;\n})(CloseCode || {});\nvar MessageType = /* @__PURE__ */ ((MessageType2) => {\n MessageType2[\"ConnectionInit\"] = \"connection_init\";\n MessageType2[\"ConnectionAck\"] = \"connection_ack\";\n MessageType2[\"Ping\"] = \"ping\";\n MessageType2[\"Pong\"] = \"pong\";\n MessageType2[\"Subscribe\"] = \"subscribe\";\n MessageType2[\"Next\"] = \"next\";\n MessageType2[\"Error\"] = \"error\";\n MessageType2[\"Complete\"] = \"complete\";\n return MessageType2;\n})(MessageType || {});\nfunction validateMessage(val) {\n if (!isObject(val)) {\n throw new Error(\n `Message is expected to be an object, but got ${extendedTypeof(val)}`\n );\n }\n if (!val.type) {\n throw new Error(`Message is missing the 'type' property`);\n }\n if (typeof val.type !== \"string\") {\n throw new Error(\n `Message is expects the 'type' property to be a string, but got ${extendedTypeof(\n val.type\n )}`\n );\n }\n switch (val.type) {\n case \"connection_init\" /* ConnectionInit */:\n case \"connection_ack\" /* ConnectionAck */:\n case \"ping\" /* Ping */:\n case \"pong\" /* Pong */: {\n if (val.payload != null && !isObject(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an object or nullish or missing, but got \"${val.payload}\"`\n );\n }\n break;\n }\n case \"subscribe\" /* Subscribe */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n if (!isObject(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an object, but got ${extendedTypeof(\n val.payload\n )}`\n );\n }\n if (typeof val.payload.query !== \"string\") {\n throw new Error(\n `\"${val.type}\" message payload expects the 'query' property to be a string, but got ${extendedTypeof(\n val.payload.query\n )}`\n );\n }\n if (val.payload.variables != null && !isObject(val.payload.variables)) {\n throw new Error(\n `\"${val.type}\" message payload expects the 'variables' property to be a an object or nullish or missing, but got ${extendedTypeof(\n val.payload.variables\n )}`\n );\n }\n if (val.payload.operationName != null && extendedTypeof(val.payload.operationName) !== \"string\") {\n throw new Error(\n `\"${val.type}\" message payload expects the 'operationName' property to be a string or nullish or missing, but got ${extendedTypeof(\n val.payload.operationName\n )}`\n );\n }\n if (val.payload.extensions != null && !isObject(val.payload.extensions)) {\n throw new Error(\n `\"${val.type}\" message payload expects the 'extensions' property to be a an object or nullish or missing, but got ${extendedTypeof(\n val.payload.extensions\n )}`\n );\n }\n break;\n }\n case \"next\" /* Next */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n if (!isObject(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an object, but got ${extendedTypeof(\n val.payload\n )}`\n );\n }\n break;\n }\n case \"error\" /* Error */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n if (!areGraphQLFormattedErrors(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an array of GraphQL errors, but got ${JSON.stringify(\n val.payload\n )}`\n );\n }\n break;\n }\n case \"complete\" /* Complete */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n break;\n }\n default:\n throw new Error(`Invalid message 'type' property \"${val.type}\"`);\n }\n return val;\n}\nfunction parseMessage(data, reviver) {\n return validateMessage(\n typeof data === \"string\" ? JSON.parse(data, reviver) : data\n );\n}\nfunction stringifyMessage(msg, replacer) {\n validateMessage(msg);\n return JSON.stringify(msg, replacer);\n}\n\nexport { CloseCode as C, DEPRECATED_GRAPHQL_WS_PROTOCOL as D, GRAPHQL_TRANSPORT_WS_PROTOCOL as G, MessageType as M, isAsyncGenerator as a, isAsyncIterable as b, isObject as i, limitCloseReason as l, parseMessage as p, stringifyMessage as s, validateMessage as v };\n","import { i as isObject, G as GRAPHQL_TRANSPORT_WS_PROTOCOL, s as stringifyMessage, M as MessageType, C as CloseCode, l as limitCloseReason, p as parseMessage } from './common-CGW11Fyb.js';\nexport { D as DEPRECATED_GRAPHQL_WS_PROTOCOL, v as validateMessage } from './common-CGW11Fyb.js';\n\nfunction createClient(options) {\n const {\n url,\n connectionParams,\n lazy = true,\n onNonLazyError = console.error,\n lazyCloseTimeout: lazyCloseTimeoutMs = 0,\n keepAlive = 0,\n disablePong,\n connectionAckWaitTimeout = 0,\n retryAttempts = 5,\n retryWait = async function randomisedExponentialBackoff(retries2) {\n const retryDelaySeconds = Math.pow(2, retries2);\n await new Promise(\n (resolve) => setTimeout(\n resolve,\n retryDelaySeconds * 1e3 + // add random timeout from 300ms to 3s\n Math.floor(Math.random() * (3e3 - 300) + 300)\n )\n );\n },\n shouldRetry = isLikeCloseEvent,\n on,\n webSocketImpl,\n /**\n * Generates a v4 UUID to be used as the ID using `Math`\n * as the random number generator. Supply your own generator\n * in case you need more uniqueness.\n *\n * Reference: https://gist.github.com/jed/982883\n */\n generateID = function generateUUID() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0, v = c == \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n },\n jsonMessageReplacer: replacer,\n jsonMessageReviver: reviver\n } = options;\n let ws;\n if (webSocketImpl) {\n if (!isWebSocket(webSocketImpl)) {\n throw new Error(\"Invalid WebSocket implementation provided\");\n }\n ws = webSocketImpl;\n } else if (typeof WebSocket !== \"undefined\") {\n ws = WebSocket;\n } else if (typeof global !== \"undefined\") {\n ws = global.WebSocket || // @ts-expect-error: Support more browsers\n global.MozWebSocket;\n } else if (typeof window !== \"undefined\") {\n ws = window.WebSocket || // @ts-expect-error: Support more browsers\n window.MozWebSocket;\n }\n if (!ws)\n throw new Error(\n \"WebSocket implementation missing; on Node you can `import WebSocket from 'ws';` and pass `webSocketImpl: WebSocket` to `createClient`\"\n );\n const WebSocketImpl = ws;\n const emitter = (() => {\n const message = /* @__PURE__ */ (() => {\n const listeners2 = {};\n return {\n on(id, listener) {\n listeners2[id] = listener;\n return () => {\n delete listeners2[id];\n };\n },\n emit(message2) {\n if (\"id\" in message2) listeners2[message2.id]?.(message2);\n }\n };\n })();\n const listeners = {\n connecting: on?.connecting ? [on.connecting] : [],\n opened: on?.opened ? [on.opened] : [],\n connected: on?.connected ? [on.connected] : [],\n ping: on?.ping ? [on.ping] : [],\n pong: on?.pong ? [on.pong] : [],\n message: on?.message ? [message.emit, on.message] : [message.emit],\n closed: on?.closed ? [on.closed] : [],\n error: on?.error ? [on.error] : []\n };\n return {\n onMessage: message.on,\n on(event, listener) {\n const l = listeners[event];\n l.push(listener);\n return () => {\n l.splice(l.indexOf(listener), 1);\n };\n },\n emit(event, ...args) {\n for (const listener of [...listeners[event]]) {\n listener(...args);\n }\n }\n };\n })();\n function errorOrClosed(cb) {\n const listening = [\n // errors are fatal and more critical than close events, throw them first\n emitter.on(\"error\", (err) => {\n listening.forEach((unlisten) => unlisten());\n cb(err);\n }),\n // closes can be graceful and not fatal, throw them second (if error didnt throw)\n emitter.on(\"closed\", (event) => {\n listening.forEach((unlisten) => unlisten());\n cb(event);\n })\n ];\n }\n let connecting, locks = 0, lazyCloseTimeout, retrying = false, retries = 0, disposed = false;\n async function connect() {\n clearTimeout(lazyCloseTimeout);\n const [socket, throwOnClose] = await (connecting ?? (connecting = new Promise(\n (connected, denied) => (async () => {\n if (retrying) {\n await retryWait(retries);\n if (!locks) {\n connecting = void 0;\n return denied({ code: 1e3, reason: \"All Subscriptions Gone\" });\n }\n retries++;\n }\n emitter.emit(\"connecting\", retrying);\n const socket2 = new WebSocketImpl(\n typeof url === \"function\" ? await url() : url,\n GRAPHQL_TRANSPORT_WS_PROTOCOL\n );\n let connectionAckTimeout, queuedPing;\n function enqueuePing() {\n if (isFinite(keepAlive) && keepAlive > 0) {\n clearTimeout(queuedPing);\n queuedPing = setTimeout(() => {\n if (socket2.readyState === WebSocketImpl.OPEN) {\n socket2.send(stringifyMessage({ type: MessageType.Ping }));\n emitter.emit(\"ping\", false, void 0);\n }\n }, keepAlive);\n }\n }\n errorOrClosed((errOrEvent) => {\n connecting = void 0;\n clearTimeout(connectionAckTimeout);\n clearTimeout(queuedPing);\n denied(errOrEvent);\n if (errOrEvent instanceof TerminatedCloseEvent) {\n socket2.close(4499, \"Terminated\");\n socket2.onerror = null;\n socket2.onclose = null;\n }\n });\n socket2.onerror = (err) => emitter.emit(\"error\", err);\n socket2.onclose = (event) => emitter.emit(\"closed\", event);\n socket2.onopen = async () => {\n try {\n emitter.emit(\"opened\", socket2);\n const payload = typeof connectionParams === \"function\" ? await connectionParams() : connectionParams;\n if (socket2.readyState !== WebSocketImpl.OPEN) return;\n socket2.send(\n stringifyMessage(\n payload ? {\n type: MessageType.ConnectionInit,\n payload\n } : {\n type: MessageType.ConnectionInit\n // payload is completely absent if not provided\n },\n replacer\n )\n );\n if (isFinite(connectionAckWaitTimeout) && connectionAckWaitTimeout > 0) {\n connectionAckTimeout = setTimeout(() => {\n socket2.close(\n CloseCode.ConnectionAcknowledgementTimeout,\n \"Connection acknowledgement timeout\"\n );\n }, connectionAckWaitTimeout);\n }\n enqueuePing();\n } catch (err) {\n emitter.emit(\"error\", err);\n socket2.close(\n CloseCode.InternalClientError,\n limitCloseReason(\n err instanceof Error ? err.message : String(err),\n \"Internal client error\"\n )\n );\n }\n };\n let acknowledged = false;\n socket2.onmessage = ({ data }) => {\n try {\n const message = parseMessage(data, reviver);\n emitter.emit(\"message\", message);\n if (message.type === \"ping\" || message.type === \"pong\") {\n emitter.emit(message.type, true, message.payload);\n if (message.type === \"pong\") {\n enqueuePing();\n } else if (!disablePong) {\n socket2.send(\n stringifyMessage(\n message.payload ? {\n type: MessageType.Pong,\n payload: message.payload\n } : {\n type: MessageType.Pong\n // payload is completely absent if not provided\n }\n )\n );\n emitter.emit(\"pong\", false, message.payload);\n }\n return;\n }\n if (acknowledged) return;\n if (message.type !== MessageType.ConnectionAck)\n throw new Error(\n `First message cannot be of type ${message.type}`\n );\n clearTimeout(connectionAckTimeout);\n acknowledged = true;\n emitter.emit(\"connected\", socket2, message.payload, retrying);\n retrying = false;\n retries = 0;\n connected([\n socket2,\n new Promise((_, reject) => errorOrClosed(reject))\n ]);\n } catch (err) {\n socket2.onmessage = null;\n emitter.emit(\"error\", err);\n socket2.close(\n CloseCode.BadResponse,\n limitCloseReason(\n err instanceof Error ? err.message : String(err),\n \"Bad response\"\n )\n );\n }\n };\n })()\n )));\n if (socket.readyState === WebSocketImpl.CLOSING) await throwOnClose;\n let release = () => {\n };\n const released = new Promise((resolve) => release = resolve);\n return [\n socket,\n release,\n Promise.race([\n // wait for\n released.then(() => {\n if (!locks) {\n const complete = () => socket.close(1e3, \"Normal Closure\");\n if (isFinite(lazyCloseTimeoutMs) && lazyCloseTimeoutMs > 0) {\n lazyCloseTimeout = setTimeout(() => {\n if (socket.readyState === WebSocketImpl.OPEN) complete();\n }, lazyCloseTimeoutMs);\n } else {\n complete();\n }\n }\n }),\n // or\n throwOnClose\n ])\n ];\n }\n function shouldRetryConnectOrThrow(errOrCloseEvent) {\n if (isLikeCloseEvent(errOrCloseEvent) && (isFatalInternalCloseCode(errOrCloseEvent.code) || [\n CloseCode.InternalServerError,\n CloseCode.InternalClientError,\n CloseCode.BadRequest,\n CloseCode.BadResponse,\n CloseCode.Unauthorized,\n // CloseCode.Forbidden, might grant access out after retry\n CloseCode.SubprotocolNotAcceptable,\n // CloseCode.ConnectionInitialisationTimeout, might not time out after retry\n // CloseCode.ConnectionAcknowledgementTimeout, might not time out after retry\n CloseCode.SubscriberAlreadyExists,\n CloseCode.TooManyInitialisationRequests\n // 4499, // Terminated, probably because the socket froze, we want to retry\n ].includes(errOrCloseEvent.code)))\n throw errOrCloseEvent;\n if (disposed) return false;\n if (isLikeCloseEvent(errOrCloseEvent) && errOrCloseEvent.code === 1e3)\n return locks > 0;\n if (!retryAttempts || retries >= retryAttempts) throw errOrCloseEvent;\n if (!shouldRetry(errOrCloseEvent)) throw errOrCloseEvent;\n return retrying = true;\n }\n if (!lazy) {\n (async () => {\n locks++;\n for (; ; ) {\n try {\n const [, , throwOnClose] = await connect();\n await throwOnClose;\n } catch (errOrCloseEvent) {\n try {\n if (!shouldRetryConnectOrThrow(errOrCloseEvent)) return;\n } catch (errOrCloseEvent2) {\n return onNonLazyError?.(errOrCloseEvent2);\n }\n }\n }\n })();\n }\n function subscribe(payload, sink) {\n const id = generateID(payload);\n let done = false, errored = false, releaser = () => {\n locks--;\n done = true;\n };\n (async () => {\n locks++;\n for (; ; ) {\n try {\n const [socket, release, waitForReleaseOrThrowOnClose] = await connect();\n if (done) return release();\n const unlisten = emitter.onMessage(id, (message) => {\n switch (message.type) {\n case MessageType.Next: {\n sink.next(message.payload);\n return;\n }\n case MessageType.Error: {\n errored = true, done = true;\n sink.error(message.payload);\n releaser();\n return;\n }\n case MessageType.Complete: {\n done = true;\n releaser();\n return;\n }\n }\n });\n socket.send(\n stringifyMessage(\n {\n id,\n type: MessageType.Subscribe,\n payload\n },\n replacer\n )\n );\n releaser = () => {\n if (!done && socket.readyState === WebSocketImpl.OPEN)\n socket.send(\n stringifyMessage(\n {\n id,\n type: MessageType.Complete\n },\n replacer\n )\n );\n locks--;\n done = true;\n release();\n };\n await waitForReleaseOrThrowOnClose.finally(unlisten);\n return;\n } catch (errOrCloseEvent) {\n if (!shouldRetryConnectOrThrow(errOrCloseEvent)) return;\n }\n }\n })().then(() => {\n if (!errored) sink.complete();\n }).catch((err) => {\n sink.error(err);\n });\n return () => {\n if (!done) releaser();\n };\n }\n return {\n on: emitter.on,\n subscribe,\n iterate(request) {\n const pending = [];\n const deferred = {\n done: false,\n error: null,\n resolve: () => {\n }\n };\n const dispose = subscribe(request, {\n next(val) {\n pending.push(val);\n deferred.resolve();\n },\n error(err) {\n deferred.done = true;\n deferred.error = err;\n deferred.resolve();\n },\n complete() {\n deferred.done = true;\n deferred.resolve();\n }\n });\n const iterator = async function* iterator2() {\n for (; ; ) {\n if (!pending.length) {\n await new Promise((resolve) => deferred.resolve = resolve);\n }\n while (pending.length) {\n yield pending.shift();\n }\n if (deferred.error) {\n throw deferred.error;\n }\n if (deferred.done) {\n return;\n }\n }\n }();\n iterator.throw = async (err) => {\n if (!deferred.done) {\n deferred.done = true;\n deferred.error = err;\n deferred.resolve();\n }\n return { done: true, value: void 0 };\n };\n iterator.return = async () => {\n dispose();\n return { done: true, value: void 0 };\n };\n return iterator;\n },\n async dispose() {\n disposed = true;\n if (connecting) {\n const [socket] = await connecting;\n socket.close(1e3, \"Normal Closure\");\n }\n },\n terminate() {\n if (connecting) {\n emitter.emit(\"closed\", new TerminatedCloseEvent());\n }\n }\n };\n}\nclass TerminatedCloseEvent extends Error {\n name = \"TerminatedCloseEvent\";\n message = \"4499: Terminated\";\n code = 4499;\n reason = \"Terminated\";\n wasClean = false;\n}\nfunction isLikeCloseEvent(val) {\n return isObject(val) && \"code\" in val && \"reason\" in val;\n}\nfunction isFatalInternalCloseCode(code) {\n if ([\n 1e3,\n // Normal Closure is not an erroneous close code\n 1001,\n // Going Away\n 1006,\n // Abnormal Closure\n 1005,\n // No Status Received\n 1012,\n // Service Restart\n 1013,\n // Try Again Later\n 1014\n // Bad Gateway\n ].includes(code))\n return false;\n return code >= 1e3 && code <= 1999;\n}\nfunction isWebSocket(val) {\n return typeof val === \"function\" && \"constructor\" in val && \"CLOSED\" in val && \"CLOSING\" in val && \"CONNECTING\" in val && \"OPEN\" in val;\n}\n\nexport { CloseCode, GRAPHQL_TRANSPORT_WS_PROTOCOL, MessageType, TerminatedCloseEvent, createClient, parseMessage, stringifyMessage };\n","import { createClient, Client, ClientOptions, SubscribePayload } from 'graphql-ws';\r\n// Removed direct 'ws' import for browser compatibility; will resolve at runtime if needed.\r\nimport EventEmitter from 'eventemitter3';\r\n\r\n/** Events emitted by SubscriptionClient\r\n * connecting - before opening a socket (initial or reconnect attempt)\r\n * connected - first successful connection\r\n * reconnected - a subsequent successful connection after a disconnect\r\n * disconnected - socket closed ( { code, reason, wasClean } )\r\n * error - protocol or network error (Error)\r\n * retry - about to attempt reconnect ( { attempt } )\r\n */\r\nexport interface SubscriptionClientEvents {\r\n connecting: () => void;\r\n connected: () => void;\r\n reconnected: () => void;\r\n disconnected: (info: { code: number; reason: string; wasClean: boolean }) => void;\r\n error: (err: unknown) => void;\r\n retry: (info: { attempt: number }) => void;\r\n}\r\n\r\nexport interface SubscriptionClientOptions {\r\n url: string;\r\n /** optional async or sync connection params */\r\n connectionParams?: ClientOptions['connectionParams'];\r\n /** number of reconnect attempts, default Infinity */\r\n maxReconnectAttempts?: number;\r\n /** initial delay ms before first retry (exponential backoff) */\r\n retryDelayMs?: number;\r\n /** max backoff cap */\r\n maxRetryDelayMs?: number;\r\n /** idle timeout for operations (optional) */\r\n operationTimeoutMs?: number;\r\n /** optional custom WebSocket implementation */\r\n webSocketImpl?: any; // generic to avoid pulling node 'ws' types into browser bundle\r\n /** optional logger */\r\n log?: (msg: string, meta?: any) => void;\r\n}\r\n\r\nexport interface SubscribeOptions<TData = any, TVars = Record<string, unknown>> {\r\n query: string;\r\n variables?: TVars;\r\n /** optional per-subscription timeout override */\r\n timeoutMs?: number;\r\n operationName?: string;\r\n extensions?: Record<string, any>;\r\n}\r\n\r\nexport interface Observer<T> {\r\n next?: (data: T) => void;\r\n error?: (err: unknown) => void;\r\n complete?: () => void;\r\n}\r\n\r\nexport class SubscriptionClient extends EventEmitter {\r\n private options: Required<Omit<SubscriptionClientOptions, 'connectionParams' | 'log' | 'webSocketImpl'>> & Pick<SubscriptionClientOptions, 'connectionParams' | 'log' | 'webSocketImpl'>;\r\n private client: Client | null = null;\r\n private connectAttempt = 0;\r\n private closedExplicitly = false;\r\n private reconnecting = false;\r\n private hasEverConnected = false;\r\n\r\n constructor(opts: SubscriptionClientOptions) {\r\n super();\r\n this.options = {\r\n url: opts.url.replace(/^http/, \"ws\").replace(/^https/, \"wss\") + '/ws',\r\n connectionParams: opts.connectionParams,\r\n maxReconnectAttempts: opts.maxReconnectAttempts ?? Infinity,\r\n retryDelayMs: opts.retryDelayMs ?? 500,\r\n maxRetryDelayMs: opts.maxRetryDelayMs ?? 10_000,\r\n operationTimeoutMs: opts.operationTimeoutMs ?? 0,\r\n webSocketImpl: opts.webSocketImpl ?? undefined,\r\n log: opts.log,\r\n } as any;\r\n }\r\n\r\n private resolveWebSocketImpl(): any {\r\n // Proxy-aware priority:\r\n // 1. Explicit user-supplied impl\r\n // 2. Browser bundle: never load 'ws' — use global WebSocket\r\n // 3. If proxy env detected (Node) -> prefer 'ws'\r\n // 4. Global WebSocket (browser / Node >= 18 native)\r\n // 5. Fallback to require('ws') (Node)\r\n if (this.options.webSocketImpl) return this.options.webSocketImpl;\r\n\r\n if (process.env.BUILD_TARGET === 'browser') {\r\n const g: any = (globalThis as any);\r\n if (typeof g.WebSocket === 'function') return g.WebSocket;\r\n throw new Error('No WebSocket implementation found in browser. Provide webSocketImpl.');\r\n } else {\r\n const proxyEnv = process.env.ALL_PROXY || process.env.HTTPS_PROXY || process.env.HTTP_PROXY || process.env.GLOBAL_AGENT_HTTP_PROXY;\r\n if (proxyEnv) {\r\n try {\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n return require('ws');\r\n } catch (e) {\r\n this.log('Proxy detected but failed to load ws package', e);\r\n }\r\n }\r\n const g: any = (globalThis as any);\r\n if (typeof g.WebSocket === 'function') return g.WebSocket;\r\n try {\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n return require('ws');\r\n } catch {\r\n throw new Error('No WebSocket implementation found. Provide webSocketImpl in SubscriptionClientOptions.');\r\n }\r\n }\r\n }\r\n\r\n /** Returns true if an underlying websocket client exists (connected or in-flight). */\r\n isConnected(): boolean {\r\n return !!this.client; // createClientIfNeeded only after socket open attempt\r\n }\r\n\r\n private log(msg: string, meta?: any) {\r\n if (this.options.log) this.options.log(msg, meta);\r\n }\r\n\r\n private createClientIfNeeded(isReconnect: boolean) {\r\n if (this.client) return; // already have client\r\n const { url, connectionParams } = this.options;\r\n const webSocketImpl = this.resolveWebSocketImpl();\r\n this.client = createClient({\r\n url,\r\n connectionParams,\r\n webSocketImpl: webSocketImpl as any,\r\n lazy: false,\r\n keepAlive: 12000,\r\n retryAttempts: 0,\r\n shouldRetry: () => false,\r\n on: {\r\n connected: () => {\r\n const wasReconnect = isReconnect && this.connectAttempt > 0;\r\n this.connectAttempt = 0;\r\n if (wasReconnect && this.hasEverConnected) {\r\n this.emit('reconnected');\r\n this.log('reconnected');\r\n } else {\r\n this.emit('connected');\r\n this.log('connected');\r\n }\r\n this.hasEverConnected = true;\r\n },\r\n error: (err) => {\r\n this.emit('error', err);\r\n this.log('socket error', err);\r\n },\r\n closed: (ev) => {\r\n const e = ev as CloseEvent | { code: number; reason: string; wasClean: boolean };\r\n this.log('closed', e);\r\n this.emit('disconnected', { code: (e as any).code, reason: (e as any).reason?.toString?.() ?? '', wasClean: (e as any).wasClean ?? false });\r\n this.client = null; // allow recreate\r\n if (!this.closedExplicitly) this.scheduleReconnect();\r\n },\r\n },\r\n });\r\n }\r\n\r\n // assureConnected removed per revert request\r\n\r\n /** Establish the WebSocket connection if not already created. Idempotent. */\r\n connect(): void {\r\n if (this.client) return; // already created\r\n this.emit('connecting');\r\n this.log('connecting');\r\n this.createClientIfNeeded(false);\r\n }\r\n\r\n private scheduleReconnect() {\r\n if (this.reconnecting) return;\r\n if (this.connectAttempt >= this.options.maxReconnectAttempts) {\r\n this.log('max reconnect attempts reached');\r\n return;\r\n }\r\n this.reconnecting = true;\r\n const delay = Math.min(\r\n this.options.retryDelayMs * Math.pow(2, this.connectAttempt),\r\n this.options.maxRetryDelayMs,\r\n );\r\n this.emit('retry', { attempt: this.connectAttempt });\r\n this.log('reconnect scheduled', { attempt: this.connectAttempt, delay });\r\n setTimeout(() => {\r\n this.reconnecting = false;\r\n this.connectAttempt++;\r\n this.emit('connecting');\r\n this.log('connecting');\r\n this.createClientIfNeeded(true);\r\n }, delay);\r\n }\r\n\r\n subscribe<TData = any, TVars extends Record<string, unknown> = Record<string, unknown>>(options: SubscribeOptions<TData, TVars>, observer: Observer<{ data?: TData; errors?: any }>): () => void {\r\n if (!this.client) throw new Error('Client not connected - call connect() first');\r\n const payload: SubscribePayload = {\r\n query: options.query,\r\n variables: options.variables as any,\r\n operationName: options.operationName,\r\n extensions: options.extensions,\r\n };\r\n let finished = false;\r\n const timeoutMs = options.timeoutMs ?? this.options.operationTimeoutMs;\r\n let timeout: NodeJS.Timeout | undefined;\r\n if (timeoutMs > 0) {\r\n timeout = setTimeout(() => {\r\n if (finished) return;\r\n finished = true;\r\n observer.error?.(new Error('Operation timed out'));\r\n dispose();\r\n }, timeoutMs);\r\n }\r\n const dispose = this.client.subscribe(payload, {\r\n next: (data) => observer.next?.(data as any),\r\n error: (err) => {\r\n if (finished) return;\r\n finished = true;\r\n if (timeout) clearTimeout(timeout);\r\n observer.error?.(err);\r\n },\r\n complete: () => {\r\n if (finished) return;\r\n finished = true;\r\n if (timeout) clearTimeout(timeout);\r\n observer.complete?.();\r\n },\r\n });\r\n return () => {\r\n if (finished) return;\r\n finished = true;\r\n if (timeout) clearTimeout(timeout);\r\n dispose();\r\n };\r\n }\r\n\r\n /** Async iterator variant (convenience wrapper around underlying client.iterate). */\r\n iterate<TData = any, TVars extends Record<string, unknown> = Record<string, unknown>>(options: SubscribeOptions<TData, TVars>): AsyncIterable<{ data?: TData; errors?: any }> {\r\n if (!this.client) throw new Error('Client not connected - call connect() first');\r\n const payload: SubscribePayload = {\r\n query: options.query,\r\n variables: options.variables as any,\r\n operationName: options.operationName,\r\n extensions: options.extensions,\r\n };\r\n // graphql-ws client.iterate returns AsyncIterableExecutionResult\r\n // We forward it directly (user can for-await over it).\r\n return (this.client as any).iterate(payload);\r\n }\r\n\r\n async close(code = 1000, reason = 'Normal Closure') {\r\n this.closedExplicitly = true;\r\n this.log('closing client');\r\n const c = this.client as any;\r\n if (c) { try { c.dispose(); } catch { } }\r\n this.client = null;\r\n this.removeAllListeners();\r\n }\r\n}\r\n\r\nexport default SubscriptionClient;\r\n"],"mappings":"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","names":["EventEmitter","import_eventemitter3","EventEmitter","_a"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/DelegateMap.ts","../src/MirrorSync.ts","../node_modules/graphql-ws/dist/common-CGW11Fyb.js","../node_modules/graphql-ws/dist/client.js","../src/SubscriptionClient.ts"],"sourcesContent":["import { MirrorSync } from \"./MirrorSync\";\r\nimport { ReadonlyMapView, DelegatingObject, DelegatingMap } from \"./DelegateMap\";\r\nimport SubscriptionClient from \"./SubscriptionClient\";\r\nimport { symlink } from \"fs\";\r\nimport { create } from \"domain\";\r\n\r\nexport { SubscriptionClient, MirrorSync, DelegatingObject };\r\nexport type { ReadonlyMapView };\r\n\r\nexport class Connection extends SubscriptionClient {\r\n public Mirrors: Map<string, MirrorSync> = new Map();\r\n constructor() {\r\n super();\r\n }\r\n InitConnection(url: string, connectionParams: () => Promise<Record<string, unknown> | Record<string, unknown>>) {\r\n this.InitClient({\r\n url: url,\r\n connectionParams: connectionParams\r\n });\r\n }\r\n\r\n getMirror(name: string, subscription: string, baseVariables: Record<string, unknown>): MirrorSync {\r\n let entry = this.Mirrors.get(name);\r\n if (!entry) {\r\n const sync = this.createMirror(subscription, baseVariables);\r\n const forward = (event: string, payload: any) => {\r\n this.emit(`mirror:${event}`, { mirrorName: name, ...payload });\r\n };\r\n const handlers: Array<[string, (...args: any[]) => void]> = [\r\n ['start', (p) => forward('start', p)],\r\n ['updated', (item, fullPhase) => forward('updated', { item, fullPhase })],\r\n ['deleted', (p) => forward('deleted', p)],\r\n ['done', (p) => forward('done', p)],\r\n ['versionError', (p) => forward('versionError', p)],\r\n ['resubscribe', (p) => forward('resubscribe', p)],\r\n ['error', (p) => forward('error', p)],\r\n ];\r\n handlers.forEach(([e, h]) => sync.on(e as any, h)); \r\n this.Mirrors.set(name, sync);\r\n entry = sync;\r\n }\r\n return entry;\r\n }\r\n createMirror(subscription: string, baseVariables: Record<string, unknown>): MirrorSync {\r\n return new MirrorSync(this, { subscription, baseVariables });\r\n }\r\n\r\n removeMirror(name: string) {\r\n const entry = this.Mirrors.get(name);\r\n if (!entry) return;\r\n entry.removeAllListeners();\r\n entry.stop();\r\n this.Mirrors.delete(name);\r\n this.emit('mirror:removed', { mirrorName: name });\r\n }\r\n\r\n clearMirrors() {\r\n for (const name of Array.from(this.Mirrors.keys())) {\r\n this.removeMirror(name);\r\n }\r\n this.emit('mirror:cleared');\r\n }\r\n}\r\n","// Restored specialized read-only view interface (runtime enforced via absence of mutators)\r\nexport interface ReadonlyMapView<K, V> extends Iterable<[K, V]> {\r\n readonly size: number;\r\n get(key: K): V | undefined;\r\n has(key: K): boolean;\r\n entries(): IterableIterator<[K, V]>;\r\n keys(): IterableIterator<K>;\r\n values(): IterableIterator<V>;\r\n forEach(callbackfn: (value: V, key: K, map: ReadonlyMapView<K, V>) => void, thisArg?: any): void;\r\n [Symbol.iterator](): IterableIterator<[K, V]>;\r\n}\r\n\r\nexport class DelegatingMap<K, V> implements ReadonlyMapView<K, V> {\r\n constructor(private readonly resolver: () => Map<K, V>) { }\r\n private t(): Map<K, V> { return this.resolver(); }\r\n get size(): number { return this.t().size; }\r\n get(key: K): V | undefined { return this.t().get(key); }\r\n has(key: K): boolean { return this.t().has(key); }\r\n entries(): IterableIterator<[K, V]> { return this.t().entries(); }\r\n keys(): IterableIterator<K> { return this.t().keys(); }\r\n values(): IterableIterator<V> { return this.t().values(); }\r\n forEach(callbackfn: (value: V, key: K, map: ReadonlyMapView<K, V>) => void, thisArg?: any): void {\r\n this.t().forEach(((v: V, k: K) => callbackfn(v, k, this)) as any, thisArg);\r\n }\r\n [Symbol.iterator](): IterableIterator<[K, V]> { return this.t()[Symbol.iterator](); }\r\n}\r\n\r\n/**\r\n * Presents a ReadonlyMapView<K,V> as an immutable plain object via Proxy.\r\n * Optionally maps values through a mapper function on access.\r\n */\r\nexport class DelegatingObject<K extends string, V, R = V> {\r\n private readonly proxy: Record<K, R>;\r\n constructor(private readonly source: ReadonlyMapView<K, V>, private readonly mapFn?: (value: V, key: K) => R) {\r\n const mapper = (v: V, k: K): R => (this.mapFn ? this.mapFn(v, k) : (v as unknown as R));\r\n const handler: ProxyHandler<any> = {\r\n get: (_target, prop: PropertyKey, receiver) => {\r\n if (prop === Symbol.toStringTag) return 'Object';\r\n if (typeof prop !== 'string') return Reflect.get(Object.prototype, prop, receiver);\r\n const key = prop as K;\r\n const v = this.source.get(key);\r\n return v === undefined ? undefined : mapper(v, key);\r\n },\r\n set: () => false, // immutable\r\n has: (_target, prop: PropertyKey) => typeof prop === 'string' && this.source.has(prop as K),\r\n deleteProperty: () => false, // immutable\r\n ownKeys: () => Array.from(this.source.keys() as unknown as IterableIterator<string>),\r\n getOwnPropertyDescriptor: (_target, prop: PropertyKey) => {\r\n if (typeof prop === 'string' && this.source.has(prop as K)) {\r\n const key = prop as K;\r\n const v = this.source.get(key)!;\r\n return { configurable: true, enumerable: true, value: mapper(v, key) };\r\n }\r\n return undefined;\r\n },\r\n defineProperty: () => false, // immutable\r\n };\r\n this.proxy = new Proxy(Object.create(null), handler);\r\n }\r\n asObject(): Record<K, R> { return this.proxy; }\r\n}\r\n","import { DelegatingMap, ReadonlyMapView } from './DelegateMap';\r\nimport { SubscriptionClient } from './SubscriptionClient';\r\nimport EventEmitter from 'eventemitter3';\r\n\r\n// SyncType enum as described\r\nexport enum SyncType {\r\n DELETED = 'DELETED',\r\n UPDATED = 'UPDATED',\r\n START = 'START',\r\n DONE = 'DONE',\r\n VERSION_ERROR = 'VERSION_ERROR',\r\n}\r\n\r\n// Shape of the subscription payload (generic)\r\nexport interface CacheSyncResult {\r\n type: SyncType;\r\n total?: number | null;\r\n deleteId?: string; // ObjectId as string\r\n data?: any;\r\n deleteVersion?: number;\r\n // Optional operation-based versioning (string) for hybrid mode\r\n deleteOpVersion?: string;\r\n opVersion?: string; // May appear on items inside data\r\n}\r\n\r\nexport interface MirrorSyncOptions {\r\n /** Subscription document (query string) */\r\n subscription: string;\r\n /** Optional logger */\r\n /** Custom variables base (besides version) */\r\n baseVariables?: Record<string, unknown>;\r\n}\r\n\r\nexport interface MirrorStats {\r\n version: number; // numeric version cursor\r\n opVersion?: string | null; // operation (ObjectId) cursor\r\n size: number;\r\n fullSyncInProgress: boolean;\r\n totalHint?: number | null;\r\n}\r\n\r\nexport interface MirrorSyncEvents {\r\n start: (info: { full: boolean }) => void;\r\n updated: (item: MirrorItem, isFullPhase: boolean) => void;\r\n deleted: (info: { id: string; version: number | undefined }) => void;\r\n done: (info: { full: boolean }) => void;\r\n versionError: (info: { currentVersion: number }) => void;\r\n resubscribe: (info: { fromVersion: number }) => void;\r\n error?: (errors: any) => void;\r\n}\r\n\r\n\r\nexport interface MirrorItem { id: string; version?: number; opVersion?: string;[k: string]: any }\r\n\r\n/**\r\n * MirrorSync maintains an in-memory mirror of server state based on CacheSyncResult messages.\r\n * Generic TBase is the item shape (must include id & version).\r\n */\r\nexport class MirrorSync extends EventEmitter {\r\n private client: SubscriptionClient;\r\n private options: MirrorSyncOptions;\r\n private mirror = new Map<string, MirrorItem>();\r\n private buffer: Map<string, MirrorItem> | null = null; // used during full/resubscription phase\r\n private currentVersion = -1; // numeric cursor (-1 => full sync needed)\r\n private currentOpVersion: string | null = null; // op cursor (null => full sync needed)\r\n private unsub: (() => void) | null = null;\r\n private fullSyncPhase = false; // only true during START..DONE when initiating from version -1\r\n private log?: (msg: string, meta?: any) => void;\r\n private dmap = new DelegatingMap<string, any>(() => this.mirror);\r\n /** Deferred promise resolved on first DONE after a (re)start full sync cycle. Reset on constructor, start(), and VERSION_ERROR re-init. */\r\n public loaded!: Promise<ReadonlyMapView<string, any>>; // set via resetLoaded()\r\n private resolveLoaded?: (ref: ReadonlyMapView<string, any>) => void;\r\n // Stored client event handlers to allow proper detachment\r\n private __onReconnected?: () => void;\r\n private __onConnected?: () => void;\r\n private backlog: (() => void)[] = [];\r\n\r\n get Storage(): ReadonlyMapView<string, any> { return this.mirror; }\r\n\r\n constructor(client: SubscriptionClient, options: MirrorSyncOptions & { log?: (msg: string, meta?: any) => void }) {\r\n super();\r\n this.client = client;\r\n this.options = options;\r\n this.log = options.log;\r\n this.attachClientEvents();\r\n this.resetLoaded();\r\n }\r\n\r\n private l(msg: string, meta?: any) { if (this.log) this.log(msg, meta); }\r\n\r\n private attachClientEvents() {\r\n this.__onReconnected = () => {\r\n this.emit('resubscribe', { fromVersion: this.currentVersion });\r\n this.resubscribe();\r\n };\r\n this.__onConnected = () => {\r\n if ((this.currentVersion === -1 || this.currentOpVersion === null) && !this.unsub) {\r\n this.l('initial connected subscribe', { version: this.currentVersion, opVersion: this.currentOpVersion });\r\n this.subscribeInternal(this.currentVersion, this.currentOpVersion);\r\n }\r\n };\r\n this.client.on('reconnected', this.__onReconnected);\r\n this.client.on('connected', this.__onConnected);\r\n }\r\n\r\n private detachClientEvents() {\r\n if (this.__onReconnected) {\r\n this.client.off('reconnected', this.__onReconnected);\r\n this.__onReconnected = undefined;\r\n }\r\n if (this.__onConnected) {\r\n this.client.off('connected', this.__onConnected);\r\n this.__onConnected = undefined;\r\n }\r\n }\r\n\r\n private needsFullSync(): boolean { return this.currentVersion === -1 || this.currentOpVersion === null; }\r\n private targetMap(): Map<string, MirrorItem> { return (this.fullSyncPhase && this.buffer) ? this.buffer! : this.mirror; }\r\n private advanceNumeric(v?: number) { if (typeof v === 'number' && v > this.currentVersion) this.currentVersion = v; }\r\n private advanceOp(v?: string) { if (v && (!this.currentOpVersion || v > this.currentOpVersion)) this.currentOpVersion = v; }\r\n\r\n private subscribeInternal(version: number, opVersion: string | null) {\r\n if (!this.client) throw new Error('SubscriptionClient missing');\r\n if (this.unsub) { this.unsub(); this.unsub = null; }\r\n const variables = { version, opVersion, ...(this.options.baseVariables || {}) };\r\n this.l('subscribe', { version, opVersion });\r\n this.unsub = this.client.subscribe<{ [k: string]: CacheSyncResult }>(\r\n { query: this.options.subscription, variables },\r\n {\r\n next: (envelope: { data?: { [k: string]: CacheSyncResult }; errors?: any }) => {\r\n if (envelope.errors) {\r\n this.l('graphql errors', envelope.errors);\r\n this.emit('error', envelope.errors);\r\n }\r\n const payload = envelope.data as { [k: string]: CacheSyncResult } | undefined;\r\n if (payload) this.handlePayload(payload);\r\n },\r\n error: (err: unknown) => this.l('subscription error', err),\r\n complete: () => this.l('subscription complete'),\r\n }\r\n );\r\n }\r\n\r\n private resubscribe() {\r\n // Resubscribe starting from current cursors\r\n this.subscribeInternal(this.currentVersion, this.currentOpVersion);\r\n }\r\n\r\n private start() {\r\n if (!this.client.isConnected()) { this.l('start deferred (not connected)'); return; }\r\n this.subscribeInternal(this.currentVersion, this.currentOpVersion);\r\n }\r\n\r\n load(): Promise<ReadonlyMapView<string, any>> {\r\n if (!this.unsub) this.start();\r\n return this.loaded;\r\n }\r\n async subscribe(): Promise<void> {\r\n if (!this.unsub) this.start();\r\n await this.loaded;\r\n }\r\n\r\n private resetLoaded() {\r\n this.loaded = new Promise<ReadonlyMapView<string, any>>(resolve => {\r\n this.resolveLoaded = resolve;\r\n });\r\n }\r\n\r\n private handlePayload(raw: { [k: string]: CacheSyncResult } | undefined) {\r\n if (!raw) return;\r\n // Always pick the first field in the payload object regardless of configured rootField\r\n const firstKey = Object.keys(raw)[0];\r\n if (!firstKey) return;\r\n const msg = raw[firstKey];\r\n if (!msg) return;\r\n const { type } = msg;\r\n switch (type) {\r\n case SyncType.START: {\r\n const isFull = this.needsFullSync();\r\n this.fullSyncPhase = isFull;\r\n // Only allocate a new buffer for a true full sync; for delta/resubscribe we append directly\r\n this.buffer = isFull ? new Map() : null;\r\n const payload = { full: isFull };\r\n this.emit('start', payload);\r\n break;\r\n }\r\n case SyncType.UPDATED:\r\n this.applyUpdated(msg.data, this.fullSyncPhase);\r\n break;\r\n case SyncType.DELETED:\r\n this.applyDeleted(msg.deleteId, msg.deleteVersion, msg.deleteOpVersion);\r\n break;\r\n case SyncType.DONE: {\r\n const wasFull = this.fullSyncPhase;\r\n if (wasFull && this.buffer) {\r\n this.mirror = this.buffer;\r\n this.buffer = null;\r\n }\r\n this.fullSyncPhase = false;\r\n const d = { full: wasFull };\r\n if (wasFull) {\r\n for (const b of this.backlog) b();\r\n this.backlog = [];\r\n }\r\n this.emit('done', d);\r\n // Resolve deferred if pending\r\n if (this.resolveLoaded) {\r\n const r = this.resolveLoaded; this.resolveLoaded = undefined; r(this.dmap);\r\n }\r\n break;\r\n }\r\n case SyncType.VERSION_ERROR:\r\n const ve = { currentVersion: this.currentVersion };\r\n this.emit('versionError', ve);\r\n // restart as full sync\r\n this.currentVersion = -1;\r\n this.currentOpVersion = null;\r\n this.buffer = new Map();\r\n this.fullSyncPhase = true;\r\n this.resetLoaded();\r\n this.subscribeInternal(this.currentVersion, this.currentOpVersion);\r\n break;\r\n }\r\n }\r\n\r\n private normalizeItems(data: any): MirrorItem[] {\r\n if (!data) return [];\r\n return Array.isArray(data) ? data : [data];\r\n }\r\n\r\n private applyUpdated(data: any, isFullPhase: boolean) {\r\n for (const item of this.normalizeItems(data)) {\r\n if (!item || typeof item.id !== 'string') continue;\r\n const hasNumeric = typeof item.version === 'number';\r\n const hasOp = typeof item.opVersion === 'string';\r\n if (!hasNumeric && !hasOp) continue;\r\n const existing = this.targetMap().get(item.id);\r\n const newerNumeric = hasNumeric && (!existing?.version || item.version! >= existing.version);\r\n const newerOp = hasOp && (!existing?.opVersion || item.opVersion! >= existing.opVersion);\r\n if (!existing || newerNumeric || newerOp) {\r\n this.targetMap().set(item.id, item);\r\n this.advanceNumeric(item.version);\r\n this.advanceOp(item.opVersion);\r\n if (this.fullSyncPhase) {\r\n this.backlog.push(() => this.emit('updated', item, isFullPhase));\r\n } else {\r\n this.emit('updated', item, isFullPhase);\r\n }\r\n }\r\n }\r\n }\r\n private applyDeleted(id?: string, deleteVersion?: number, deleteOpVersion?: string) {\r\n if (!id) return;\r\n const numericStale = !this.fullSyncPhase && typeof deleteVersion === 'number' && this.currentVersion >= 0 && deleteVersion < this.currentVersion;\r\n const opStale = !this.fullSyncPhase && deleteOpVersion && this.currentOpVersion && deleteOpVersion < this.currentOpVersion;\r\n if (numericStale && opStale) {\r\n this.l?.('skip stale delete', { id, deleteVersion, deleteOpVersion });\r\n return;\r\n }\r\n this.targetMap().delete(id);\r\n this.advanceNumeric(deleteVersion);\r\n this.advanceOp(deleteOpVersion);\r\n const del: any = { id, version: deleteVersion };\r\n if (deleteOpVersion) del.opVersion = deleteOpVersion;\r\n if (this.fullSyncPhase) {\r\n this.backlog.push(() => this.emit('deleted', del));\r\n } else {\r\n this.emit('deleted', del);\r\n }\r\n }\r\n\r\n get(id: string): any | undefined { return this.mirror.get(id); }\r\n values(): any[] { return Array.from(this.mirror.values()); }\r\n stats(): MirrorStats { return { version: this.currentVersion, opVersion: this.currentOpVersion, size: this.mirror.size, fullSyncInProgress: this.fullSyncPhase }; }\r\n\r\n stop() {\r\n if (this.unsub) { this.unsub(); this.unsub = null; }\r\n this.detachClientEvents();\r\n this.currentVersion = -1;\r\n this.currentOpVersion = null;\r\n this.buffer = null;\r\n if (this.resolveLoaded) {\r\n const r = this.resolveLoaded; this.resolveLoaded = undefined; r(this.dmap);\r\n }\r\n this.resetLoaded();\r\n }\r\n}\r\n","function extendedTypeof(val) {\n if (val === null) {\n return \"null\";\n }\n if (Array.isArray(val)) {\n return \"array\";\n }\n return typeof val;\n}\nfunction isObject(val) {\n return extendedTypeof(val) === \"object\";\n}\nfunction isAsyncIterable(val) {\n return typeof Object(val)[Symbol.asyncIterator] === \"function\";\n}\nfunction isAsyncGenerator(val) {\n return isObject(val) && typeof Object(val)[Symbol.asyncIterator] === \"function\" && typeof val.return === \"function\";\n}\nfunction areGraphQLFormattedErrors(obj) {\n return Array.isArray(obj) && // must be at least one error\n obj.length > 0 && // error has at least a message\n obj.every((ob) => \"message\" in ob);\n}\nfunction limitCloseReason(reason, whenTooLong) {\n return reason.length < 124 ? reason : whenTooLong;\n}\n\nconst GRAPHQL_TRANSPORT_WS_PROTOCOL = \"graphql-transport-ws\";\nconst DEPRECATED_GRAPHQL_WS_PROTOCOL = \"graphql-ws\";\nvar CloseCode = /* @__PURE__ */ ((CloseCode2) => {\n CloseCode2[CloseCode2[\"InternalServerError\"] = 4500] = \"InternalServerError\";\n CloseCode2[CloseCode2[\"InternalClientError\"] = 4005] = \"InternalClientError\";\n CloseCode2[CloseCode2[\"BadRequest\"] = 4400] = \"BadRequest\";\n CloseCode2[CloseCode2[\"BadResponse\"] = 4004] = \"BadResponse\";\n CloseCode2[CloseCode2[\"Unauthorized\"] = 4401] = \"Unauthorized\";\n CloseCode2[CloseCode2[\"Forbidden\"] = 4403] = \"Forbidden\";\n CloseCode2[CloseCode2[\"SubprotocolNotAcceptable\"] = 4406] = \"SubprotocolNotAcceptable\";\n CloseCode2[CloseCode2[\"ConnectionInitialisationTimeout\"] = 4408] = \"ConnectionInitialisationTimeout\";\n CloseCode2[CloseCode2[\"ConnectionAcknowledgementTimeout\"] = 4504] = \"ConnectionAcknowledgementTimeout\";\n CloseCode2[CloseCode2[\"SubscriberAlreadyExists\"] = 4409] = \"SubscriberAlreadyExists\";\n CloseCode2[CloseCode2[\"TooManyInitialisationRequests\"] = 4429] = \"TooManyInitialisationRequests\";\n return CloseCode2;\n})(CloseCode || {});\nvar MessageType = /* @__PURE__ */ ((MessageType2) => {\n MessageType2[\"ConnectionInit\"] = \"connection_init\";\n MessageType2[\"ConnectionAck\"] = \"connection_ack\";\n MessageType2[\"Ping\"] = \"ping\";\n MessageType2[\"Pong\"] = \"pong\";\n MessageType2[\"Subscribe\"] = \"subscribe\";\n MessageType2[\"Next\"] = \"next\";\n MessageType2[\"Error\"] = \"error\";\n MessageType2[\"Complete\"] = \"complete\";\n return MessageType2;\n})(MessageType || {});\nfunction validateMessage(val) {\n if (!isObject(val)) {\n throw new Error(\n `Message is expected to be an object, but got ${extendedTypeof(val)}`\n );\n }\n if (!val.type) {\n throw new Error(`Message is missing the 'type' property`);\n }\n if (typeof val.type !== \"string\") {\n throw new Error(\n `Message is expects the 'type' property to be a string, but got ${extendedTypeof(\n val.type\n )}`\n );\n }\n switch (val.type) {\n case \"connection_init\" /* ConnectionInit */:\n case \"connection_ack\" /* ConnectionAck */:\n case \"ping\" /* Ping */:\n case \"pong\" /* Pong */: {\n if (val.payload != null && !isObject(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an object or nullish or missing, but got \"${val.payload}\"`\n );\n }\n break;\n }\n case \"subscribe\" /* Subscribe */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n if (!isObject(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an object, but got ${extendedTypeof(\n val.payload\n )}`\n );\n }\n if (typeof val.payload.query !== \"string\") {\n throw new Error(\n `\"${val.type}\" message payload expects the 'query' property to be a string, but got ${extendedTypeof(\n val.payload.query\n )}`\n );\n }\n if (val.payload.variables != null && !isObject(val.payload.variables)) {\n throw new Error(\n `\"${val.type}\" message payload expects the 'variables' property to be a an object or nullish or missing, but got ${extendedTypeof(\n val.payload.variables\n )}`\n );\n }\n if (val.payload.operationName != null && extendedTypeof(val.payload.operationName) !== \"string\") {\n throw new Error(\n `\"${val.type}\" message payload expects the 'operationName' property to be a string or nullish or missing, but got ${extendedTypeof(\n val.payload.operationName\n )}`\n );\n }\n if (val.payload.extensions != null && !isObject(val.payload.extensions)) {\n throw new Error(\n `\"${val.type}\" message payload expects the 'extensions' property to be a an object or nullish or missing, but got ${extendedTypeof(\n val.payload.extensions\n )}`\n );\n }\n break;\n }\n case \"next\" /* Next */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n if (!isObject(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an object, but got ${extendedTypeof(\n val.payload\n )}`\n );\n }\n break;\n }\n case \"error\" /* Error */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n if (!areGraphQLFormattedErrors(val.payload)) {\n throw new Error(\n `\"${val.type}\" message expects the 'payload' property to be an array of GraphQL errors, but got ${JSON.stringify(\n val.payload\n )}`\n );\n }\n break;\n }\n case \"complete\" /* Complete */: {\n if (typeof val.id !== \"string\") {\n throw new Error(\n `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n val.id\n )}`\n );\n }\n if (!val.id) {\n throw new Error(\n `\"${val.type}\" message requires a non-empty 'id' property`\n );\n }\n break;\n }\n default:\n throw new Error(`Invalid message 'type' property \"${val.type}\"`);\n }\n return val;\n}\nfunction parseMessage(data, reviver) {\n return validateMessage(\n typeof data === \"string\" ? JSON.parse(data, reviver) : data\n );\n}\nfunction stringifyMessage(msg, replacer) {\n validateMessage(msg);\n return JSON.stringify(msg, replacer);\n}\n\nexport { CloseCode as C, DEPRECATED_GRAPHQL_WS_PROTOCOL as D, GRAPHQL_TRANSPORT_WS_PROTOCOL as G, MessageType as M, isAsyncGenerator as a, isAsyncIterable as b, isObject as i, limitCloseReason as l, parseMessage as p, stringifyMessage as s, validateMessage as v };\n","import { i as isObject, G as GRAPHQL_TRANSPORT_WS_PROTOCOL, s as stringifyMessage, M as MessageType, C as CloseCode, l as limitCloseReason, p as parseMessage } from './common-CGW11Fyb.js';\nexport { D as DEPRECATED_GRAPHQL_WS_PROTOCOL, v as validateMessage } from './common-CGW11Fyb.js';\n\nfunction createClient(options) {\n const {\n url,\n connectionParams,\n lazy = true,\n onNonLazyError = console.error,\n lazyCloseTimeout: lazyCloseTimeoutMs = 0,\n keepAlive = 0,\n disablePong,\n connectionAckWaitTimeout = 0,\n retryAttempts = 5,\n retryWait = async function randomisedExponentialBackoff(retries2) {\n const retryDelaySeconds = Math.pow(2, retries2);\n await new Promise(\n (resolve) => setTimeout(\n resolve,\n retryDelaySeconds * 1e3 + // add random timeout from 300ms to 3s\n Math.floor(Math.random() * (3e3 - 300) + 300)\n )\n );\n },\n shouldRetry = isLikeCloseEvent,\n on,\n webSocketImpl,\n /**\n * Generates a v4 UUID to be used as the ID using `Math`\n * as the random number generator. Supply your own generator\n * in case you need more uniqueness.\n *\n * Reference: https://gist.github.com/jed/982883\n */\n generateID = function generateUUID() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0, v = c == \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n },\n jsonMessageReplacer: replacer,\n jsonMessageReviver: reviver\n } = options;\n let ws;\n if (webSocketImpl) {\n if (!isWebSocket(webSocketImpl)) {\n throw new Error(\"Invalid WebSocket implementation provided\");\n }\n ws = webSocketImpl;\n } else if (typeof WebSocket !== \"undefined\") {\n ws = WebSocket;\n } else if (typeof global !== \"undefined\") {\n ws = global.WebSocket || // @ts-expect-error: Support more browsers\n global.MozWebSocket;\n } else if (typeof window !== \"undefined\") {\n ws = window.WebSocket || // @ts-expect-error: Support more browsers\n window.MozWebSocket;\n }\n if (!ws)\n throw new Error(\n \"WebSocket implementation missing; on Node you can `import WebSocket from 'ws';` and pass `webSocketImpl: WebSocket` to `createClient`\"\n );\n const WebSocketImpl = ws;\n const emitter = (() => {\n const message = /* @__PURE__ */ (() => {\n const listeners2 = {};\n return {\n on(id, listener) {\n listeners2[id] = listener;\n return () => {\n delete listeners2[id];\n };\n },\n emit(message2) {\n if (\"id\" in message2) listeners2[message2.id]?.(message2);\n }\n };\n })();\n const listeners = {\n connecting: on?.connecting ? [on.connecting] : [],\n opened: on?.opened ? [on.opened] : [],\n connected: on?.connected ? [on.connected] : [],\n ping: on?.ping ? [on.ping] : [],\n pong: on?.pong ? [on.pong] : [],\n message: on?.message ? [message.emit, on.message] : [message.emit],\n closed: on?.closed ? [on.closed] : [],\n error: on?.error ? [on.error] : []\n };\n return {\n onMessage: message.on,\n on(event, listener) {\n const l = listeners[event];\n l.push(listener);\n return () => {\n l.splice(l.indexOf(listener), 1);\n };\n },\n emit(event, ...args) {\n for (const listener of [...listeners[event]]) {\n listener(...args);\n }\n }\n };\n })();\n function errorOrClosed(cb) {\n const listening = [\n // errors are fatal and more critical than close events, throw them first\n emitter.on(\"error\", (err) => {\n listening.forEach((unlisten) => unlisten());\n cb(err);\n }),\n // closes can be graceful and not fatal, throw them second (if error didnt throw)\n emitter.on(\"closed\", (event) => {\n listening.forEach((unlisten) => unlisten());\n cb(event);\n })\n ];\n }\n let connecting, locks = 0, lazyCloseTimeout, retrying = false, retries = 0, disposed = false;\n async function connect() {\n clearTimeout(lazyCloseTimeout);\n const [socket, throwOnClose] = await (connecting ?? (connecting = new Promise(\n (connected, denied) => (async () => {\n if (retrying) {\n await retryWait(retries);\n if (!locks) {\n connecting = void 0;\n return denied({ code: 1e3, reason: \"All Subscriptions Gone\" });\n }\n retries++;\n }\n emitter.emit(\"connecting\", retrying);\n const socket2 = new WebSocketImpl(\n typeof url === \"function\" ? await url() : url,\n GRAPHQL_TRANSPORT_WS_PROTOCOL\n );\n let connectionAckTimeout, queuedPing;\n function enqueuePing() {\n if (isFinite(keepAlive) && keepAlive > 0) {\n clearTimeout(queuedPing);\n queuedPing = setTimeout(() => {\n if (socket2.readyState === WebSocketImpl.OPEN) {\n socket2.send(stringifyMessage({ type: MessageType.Ping }));\n emitter.emit(\"ping\", false, void 0);\n }\n }, keepAlive);\n }\n }\n errorOrClosed((errOrEvent) => {\n connecting = void 0;\n clearTimeout(connectionAckTimeout);\n clearTimeout(queuedPing);\n denied(errOrEvent);\n if (errOrEvent instanceof TerminatedCloseEvent) {\n socket2.close(4499, \"Terminated\");\n socket2.onerror = null;\n socket2.onclose = null;\n }\n });\n socket2.onerror = (err) => emitter.emit(\"error\", err);\n socket2.onclose = (event) => emitter.emit(\"closed\", event);\n socket2.onopen = async () => {\n try {\n emitter.emit(\"opened\", socket2);\n const payload = typeof connectionParams === \"function\" ? await connectionParams() : connectionParams;\n if (socket2.readyState !== WebSocketImpl.OPEN) return;\n socket2.send(\n stringifyMessage(\n payload ? {\n type: MessageType.ConnectionInit,\n payload\n } : {\n type: MessageType.ConnectionInit\n // payload is completely absent if not provided\n },\n replacer\n )\n );\n if (isFinite(connectionAckWaitTimeout) && connectionAckWaitTimeout > 0) {\n connectionAckTimeout = setTimeout(() => {\n socket2.close(\n CloseCode.ConnectionAcknowledgementTimeout,\n \"Connection acknowledgement timeout\"\n );\n }, connectionAckWaitTimeout);\n }\n enqueuePing();\n } catch (err) {\n emitter.emit(\"error\", err);\n socket2.close(\n CloseCode.InternalClientError,\n limitCloseReason(\n err instanceof Error ? err.message : String(err),\n \"Internal client error\"\n )\n );\n }\n };\n let acknowledged = false;\n socket2.onmessage = ({ data }) => {\n try {\n const message = parseMessage(data, reviver);\n emitter.emit(\"message\", message);\n if (message.type === \"ping\" || message.type === \"pong\") {\n emitter.emit(message.type, true, message.payload);\n if (message.type === \"pong\") {\n enqueuePing();\n } else if (!disablePong) {\n socket2.send(\n stringifyMessage(\n message.payload ? {\n type: MessageType.Pong,\n payload: message.payload\n } : {\n type: MessageType.Pong\n // payload is completely absent if not provided\n }\n )\n );\n emitter.emit(\"pong\", false, message.payload);\n }\n return;\n }\n if (acknowledged) return;\n if (message.type !== MessageType.ConnectionAck)\n throw new Error(\n `First message cannot be of type ${message.type}`\n );\n clearTimeout(connectionAckTimeout);\n acknowledged = true;\n emitter.emit(\"connected\", socket2, message.payload, retrying);\n retrying = false;\n retries = 0;\n connected([\n socket2,\n new Promise((_, reject) => errorOrClosed(reject))\n ]);\n } catch (err) {\n socket2.onmessage = null;\n emitter.emit(\"error\", err);\n socket2.close(\n CloseCode.BadResponse,\n limitCloseReason(\n err instanceof Error ? err.message : String(err),\n \"Bad response\"\n )\n );\n }\n };\n })()\n )));\n if (socket.readyState === WebSocketImpl.CLOSING) await throwOnClose;\n let release = () => {\n };\n const released = new Promise((resolve) => release = resolve);\n return [\n socket,\n release,\n Promise.race([\n // wait for\n released.then(() => {\n if (!locks) {\n const complete = () => socket.close(1e3, \"Normal Closure\");\n if (isFinite(lazyCloseTimeoutMs) && lazyCloseTimeoutMs > 0) {\n lazyCloseTimeout = setTimeout(() => {\n if (socket.readyState === WebSocketImpl.OPEN) complete();\n }, lazyCloseTimeoutMs);\n } else {\n complete();\n }\n }\n }),\n // or\n throwOnClose\n ])\n ];\n }\n function shouldRetryConnectOrThrow(errOrCloseEvent) {\n if (isLikeCloseEvent(errOrCloseEvent) && (isFatalInternalCloseCode(errOrCloseEvent.code) || [\n CloseCode.InternalServerError,\n CloseCode.InternalClientError,\n CloseCode.BadRequest,\n CloseCode.BadResponse,\n CloseCode.Unauthorized,\n // CloseCode.Forbidden, might grant access out after retry\n CloseCode.SubprotocolNotAcceptable,\n // CloseCode.ConnectionInitialisationTimeout, might not time out after retry\n // CloseCode.ConnectionAcknowledgementTimeout, might not time out after retry\n CloseCode.SubscriberAlreadyExists,\n CloseCode.TooManyInitialisationRequests\n // 4499, // Terminated, probably because the socket froze, we want to retry\n ].includes(errOrCloseEvent.code)))\n throw errOrCloseEvent;\n if (disposed) return false;\n if (isLikeCloseEvent(errOrCloseEvent) && errOrCloseEvent.code === 1e3)\n return locks > 0;\n if (!retryAttempts || retries >= retryAttempts) throw errOrCloseEvent;\n if (!shouldRetry(errOrCloseEvent)) throw errOrCloseEvent;\n return retrying = true;\n }\n if (!lazy) {\n (async () => {\n locks++;\n for (; ; ) {\n try {\n const [, , throwOnClose] = await connect();\n await throwOnClose;\n } catch (errOrCloseEvent) {\n try {\n if (!shouldRetryConnectOrThrow(errOrCloseEvent)) return;\n } catch (errOrCloseEvent2) {\n return onNonLazyError?.(errOrCloseEvent2);\n }\n }\n }\n })();\n }\n function subscribe(payload, sink) {\n const id = generateID(payload);\n let done = false, errored = false, releaser = () => {\n locks--;\n done = true;\n };\n (async () => {\n locks++;\n for (; ; ) {\n try {\n const [socket, release, waitForReleaseOrThrowOnClose] = await connect();\n if (done) return release();\n const unlisten = emitter.onMessage(id, (message) => {\n switch (message.type) {\n case MessageType.Next: {\n sink.next(message.payload);\n return;\n }\n case MessageType.Error: {\n errored = true, done = true;\n sink.error(message.payload);\n releaser();\n return;\n }\n case MessageType.Complete: {\n done = true;\n releaser();\n return;\n }\n }\n });\n socket.send(\n stringifyMessage(\n {\n id,\n type: MessageType.Subscribe,\n payload\n },\n replacer\n )\n );\n releaser = () => {\n if (!done && socket.readyState === WebSocketImpl.OPEN)\n socket.send(\n stringifyMessage(\n {\n id,\n type: MessageType.Complete\n },\n replacer\n )\n );\n locks--;\n done = true;\n release();\n };\n await waitForReleaseOrThrowOnClose.finally(unlisten);\n return;\n } catch (errOrCloseEvent) {\n if (!shouldRetryConnectOrThrow(errOrCloseEvent)) return;\n }\n }\n })().then(() => {\n if (!errored) sink.complete();\n }).catch((err) => {\n sink.error(err);\n });\n return () => {\n if (!done) releaser();\n };\n }\n return {\n on: emitter.on,\n subscribe,\n iterate(request) {\n const pending = [];\n const deferred = {\n done: false,\n error: null,\n resolve: () => {\n }\n };\n const dispose = subscribe(request, {\n next(val) {\n pending.push(val);\n deferred.resolve();\n },\n error(err) {\n deferred.done = true;\n deferred.error = err;\n deferred.resolve();\n },\n complete() {\n deferred.done = true;\n deferred.resolve();\n }\n });\n const iterator = async function* iterator2() {\n for (; ; ) {\n if (!pending.length) {\n await new Promise((resolve) => deferred.resolve = resolve);\n }\n while (pending.length) {\n yield pending.shift();\n }\n if (deferred.error) {\n throw deferred.error;\n }\n if (deferred.done) {\n return;\n }\n }\n }();\n iterator.throw = async (err) => {\n if (!deferred.done) {\n deferred.done = true;\n deferred.error = err;\n deferred.resolve();\n }\n return { done: true, value: void 0 };\n };\n iterator.return = async () => {\n dispose();\n return { done: true, value: void 0 };\n };\n return iterator;\n },\n async dispose() {\n disposed = true;\n if (connecting) {\n const [socket] = await connecting;\n socket.close(1e3, \"Normal Closure\");\n }\n },\n terminate() {\n if (connecting) {\n emitter.emit(\"closed\", new TerminatedCloseEvent());\n }\n }\n };\n}\nclass TerminatedCloseEvent extends Error {\n name = \"TerminatedCloseEvent\";\n message = \"4499: Terminated\";\n code = 4499;\n reason = \"Terminated\";\n wasClean = false;\n}\nfunction isLikeCloseEvent(val) {\n return isObject(val) && \"code\" in val && \"reason\" in val;\n}\nfunction isFatalInternalCloseCode(code) {\n if ([\n 1e3,\n // Normal Closure is not an erroneous close code\n 1001,\n // Going Away\n 1006,\n // Abnormal Closure\n 1005,\n // No Status Received\n 1012,\n // Service Restart\n 1013,\n // Try Again Later\n 1014\n // Bad Gateway\n ].includes(code))\n return false;\n return code >= 1e3 && code <= 1999;\n}\nfunction isWebSocket(val) {\n return typeof val === \"function\" && \"constructor\" in val && \"CLOSED\" in val && \"CLOSING\" in val && \"CONNECTING\" in val && \"OPEN\" in val;\n}\n\nexport { CloseCode, GRAPHQL_TRANSPORT_WS_PROTOCOL, MessageType, TerminatedCloseEvent, createClient, parseMessage, stringifyMessage };\n","import { createClient, Client, ClientOptions, SubscribePayload } from 'graphql-ws';\r\n// Removed direct 'ws' import for browser compatibility; will resolve at runtime if needed.\r\nimport EventEmitter from 'eventemitter3';\r\n\r\n/** Events emitted by SubscriptionClient\r\n * connecting - before opening a socket (initial or reconnect attempt)\r\n * connected - first successful connection\r\n * reconnected - a subsequent successful connection after a disconnect\r\n * disconnected - socket closed ( { code, reason, wasClean } )\r\n * error - protocol or network error (Error)\r\n * retry - about to attempt reconnect ( { attempt } )\r\n */\r\nexport interface SubscriptionClientEvents {\r\n connecting: () => void;\r\n connected: () => void;\r\n reconnected: () => void;\r\n disconnected: (info: { code: number; reason: string; wasClean: boolean }) => void;\r\n error: (err: unknown) => void;\r\n retry: (info: { attempt: number }) => void;\r\n}\r\n\r\nexport interface SubscriptionClientOptions {\r\n url: string;\r\n /** optional async or sync connection params */\r\n connectionParams?: ClientOptions['connectionParams'];\r\n /** number of reconnect attempts, default Infinity */\r\n maxReconnectAttempts?: number;\r\n /** initial delay ms before first retry (exponential backoff) */\r\n retryDelayMs?: number;\r\n /** max backoff cap */\r\n maxRetryDelayMs?: number;\r\n /** idle timeout for operations (optional) */\r\n operationTimeoutMs?: number;\r\n /** optional custom WebSocket implementation */\r\n webSocketImpl?: any; // generic to avoid pulling node 'ws' types into browser bundle\r\n /** optional logger */\r\n log?: (msg: string, meta?: any) => void;\r\n}\r\n\r\nexport interface SubscribeOptions<TData = any, TVars = Record<string, unknown>> {\r\n query: string;\r\n variables?: TVars;\r\n /** optional per-subscription timeout override */\r\n timeoutMs?: number;\r\n operationName?: string;\r\n extensions?: Record<string, any>;\r\n}\r\n\r\nexport interface Observer<T> {\r\n next?: (data: T) => void;\r\n error?: (err: unknown) => void;\r\n complete?: () => void;\r\n}\r\n\r\nexport class SubscriptionClient extends EventEmitter {\r\n private options?: Required<Omit<SubscriptionClientOptions, 'connectionParams' | 'log' | 'webSocketImpl'>> & Pick<SubscriptionClientOptions, 'connectionParams' | 'log' | 'webSocketImpl'>;\r\n private client: Client | null = null;\r\n private connectAttempt = 0;\r\n private closedExplicitly = false;\r\n private reconnecting = false;\r\n private hasEverConnected = false;\r\n\r\n constructor() {\r\n super();\r\n }\r\n InitClient(opts: SubscriptionClientOptions) {\r\n this.options = {\r\n url: opts.url,\r\n connectionParams: opts.connectionParams,\r\n maxReconnectAttempts: opts.maxReconnectAttempts ?? Infinity,\r\n retryDelayMs: opts.retryDelayMs ?? 500,\r\n maxRetryDelayMs: opts.maxRetryDelayMs ?? 10_000,\r\n operationTimeoutMs: opts.operationTimeoutMs ?? 0,\r\n webSocketImpl: opts.webSocketImpl ?? undefined,\r\n log: opts.log,\r\n } as any;\r\n }\r\n\r\n private resolveWebSocketImpl(): any {\r\n if (!this.options) throw new Error('SubscriptionClient not initialized - call InitConnection first');\r\n // Proxy-aware priority:\r\n // 1. Explicit user-supplied impl\r\n // 2. Browser bundle: never load 'ws' — use global WebSocket\r\n // 3. If proxy env detected (Node) -> prefer 'ws'\r\n // 4. Global WebSocket (browser / Node >= 18 native)\r\n // 5. Fallback to require('ws') (Node)\r\n if (this.options.webSocketImpl) return this.options.webSocketImpl;\r\n\r\n if (process.env.BUILD_TARGET === 'browser') {\r\n const g: any = (globalThis as any);\r\n if (typeof g.WebSocket === 'function') return g.WebSocket;\r\n throw new Error('No WebSocket implementation found in browser. Provide webSocketImpl.');\r\n } else {\r\n const proxyEnv = process.env.ALL_PROXY || process.env.HTTPS_PROXY || process.env.HTTP_PROXY || process.env.GLOBAL_AGENT_HTTP_PROXY;\r\n if (proxyEnv) {\r\n try {\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n return require('ws');\r\n } catch (e) {\r\n this.log('Proxy detected but failed to load ws package', e);\r\n }\r\n }\r\n const g: any = (globalThis as any);\r\n if (typeof g.WebSocket === 'function') return g.WebSocket;\r\n try {\r\n // eslint-disable-next-line @typescript-eslint/no-var-requires\r\n return require('ws');\r\n } catch {\r\n throw new Error('No WebSocket implementation found. Provide webSocketImpl in SubscriptionClientOptions.');\r\n }\r\n }\r\n }\r\n\r\n /** Returns true if an underlying websocket client exists (connected or in-flight). */\r\n isConnected(): boolean {\r\n return !!this.client; // createClientIfNeeded only after socket open attempt\r\n }\r\n\r\n private log(msg: string, meta?: any) {\r\n if (this.options?.log) this.options.log(msg, meta);\r\n }\r\n\r\n private createClientIfNeeded(isReconnect: boolean) {\r\n if (!this.options) throw new Error('SubscriptionClient not initialized - call InitConnection first');\r\n if (this.client) return; // already have client\r\n const { url, connectionParams } = this.options;\r\n const webSocketImpl = this.resolveWebSocketImpl();\r\n this.client = createClient({\r\n url,\r\n connectionParams,\r\n webSocketImpl: webSocketImpl as any,\r\n lazy: false,\r\n keepAlive: 12000,\r\n retryAttempts: 0,\r\n shouldRetry: () => false,\r\n on: {\r\n connected: () => {\r\n const wasReconnect = isReconnect && this.connectAttempt > 0;\r\n this.connectAttempt = 0;\r\n if (wasReconnect && this.hasEverConnected) {\r\n this.emit('reconnected');\r\n this.log('reconnected');\r\n } else {\r\n this.emit('connected');\r\n this.log('connected');\r\n }\r\n this.hasEverConnected = true;\r\n },\r\n error: (err) => {\r\n this.emit('error', err);\r\n this.log('socket error', err);\r\n },\r\n closed: (ev) => {\r\n const e = ev as CloseEvent | { code: number; reason: string; wasClean: boolean };\r\n this.log('closed', e);\r\n this.emit('disconnected', { code: (e as any).code, reason: (e as any).reason?.toString?.() ?? '', wasClean: (e as any).wasClean ?? false });\r\n this.client = null; // allow recreate\r\n if (!this.closedExplicitly) this.scheduleReconnect();\r\n },\r\n },\r\n });\r\n }\r\n\r\n // assureConnected removed per revert request\r\n\r\n /** Establish the WebSocket connection if not already created. Idempotent. */\r\n connect(): void {\r\n if (this.client) return; // already created\r\n this.emit('connecting');\r\n this.log('connecting');\r\n this.createClientIfNeeded(false);\r\n }\r\n\r\n private scheduleReconnect() {\r\n if (!this.options) throw new Error('SubscriptionClient not initialized - call InitConnection first');\r\n if (this.reconnecting) return;\r\n if (this.connectAttempt >= this.options.maxReconnectAttempts) {\r\n this.log('max reconnect attempts reached');\r\n return;\r\n }\r\n this.reconnecting = true;\r\n const delay = Math.min(\r\n this.options.retryDelayMs * Math.pow(2, this.connectAttempt),\r\n this.options.maxRetryDelayMs,\r\n );\r\n this.emit('retry', { attempt: this.connectAttempt });\r\n this.log('reconnect scheduled', { attempt: this.connectAttempt, delay });\r\n setTimeout(() => {\r\n this.reconnecting = false;\r\n this.connectAttempt++;\r\n this.emit('connecting');\r\n this.log('connecting');\r\n this.createClientIfNeeded(true);\r\n }, delay);\r\n }\r\n\r\n subscribe<TData = any, TVars extends Record<string, unknown> = Record<string, unknown>>(options: SubscribeOptions<TData, TVars>, observer: Observer<{ data?: TData; errors?: any }>): () => void {\r\n if (!this.options) throw new Error('SubscriptionClient not initialized - call InitConnection first');\r\n if (!this.client) throw new Error('Client not connected - call connect() first');\r\n const payload: SubscribePayload = {\r\n query: options.query,\r\n variables: options.variables as any,\r\n operationName: options.operationName,\r\n extensions: options.extensions,\r\n };\r\n let finished = false;\r\n const timeoutMs = options.timeoutMs ?? this.options.operationTimeoutMs;\r\n let timeout: NodeJS.Timeout | undefined;\r\n if (timeoutMs > 0) {\r\n timeout = setTimeout(() => {\r\n if (finished) return;\r\n finished = true;\r\n observer.error?.(new Error('Operation timed out'));\r\n dispose();\r\n }, timeoutMs);\r\n }\r\n const dispose = this.client.subscribe(payload, {\r\n next: (data) => observer.next?.(data as any),\r\n error: (err) => {\r\n if (finished) return;\r\n finished = true;\r\n if (timeout) clearTimeout(timeout);\r\n observer.error?.(err);\r\n },\r\n complete: () => {\r\n if (finished) return;\r\n finished = true;\r\n if (timeout) clearTimeout(timeout);\r\n observer.complete?.();\r\n },\r\n });\r\n return () => {\r\n if (finished) return;\r\n finished = true;\r\n if (timeout) clearTimeout(timeout);\r\n dispose();\r\n };\r\n }\r\n\r\n /** Async iterator variant (convenience wrapper around underlying client.iterate). */\r\n iterate<TData = any, TVars extends Record<string, unknown> = Record<string, unknown>>(options: SubscribeOptions<TData, TVars>): AsyncIterable<{ data?: TData; errors?: any }> {\r\n if (!this.client) throw new Error('Client not connected - call connect() first');\r\n const payload: SubscribePayload = {\r\n query: options.query,\r\n variables: options.variables as any,\r\n operationName: options.operationName,\r\n extensions: options.extensions,\r\n };\r\n // graphql-ws client.iterate returns AsyncIterableExecutionResult\r\n // We forward it directly (user can for-await over it).\r\n return (this.client as any).iterate(payload);\r\n }\r\n\r\n async close(code = 1000, reason = 'Normal Closure') {\r\n this.closedExplicitly = true;\r\n this.log('closing client');\r\n const c = this.client as any;\r\n if (c) { try { c.dispose(); } catch { } }\r\n this.client = null;\r\n this.removeAllListeners();\r\n }\r\n}\r\n\r\nexport default SubscriptionClient;\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACYO,IAAM,gBAAN,MAA2D;AAAA,EAChE,YAA6B,UAA2B;AAA3B;AAAA,EAA6B;AAAA,EAClD,IAAe;AAAE,WAAO,KAAK,SAAS;AAAA,EAAG;AAAA,EACjD,IAAI,OAAe;AAAE,WAAO,KAAK,EAAE,EAAE;AAAA,EAAM;AAAA,EAC3C,IAAI,KAAuB;AAAE,WAAO,KAAK,EAAE,EAAE,IAAI,GAAG;AAAA,EAAG;AAAA,EACvD,IAAI,KAAiB;AAAE,WAAO,KAAK,EAAE,EAAE,IAAI,GAAG;AAAA,EAAG;AAAA,EACjD,UAAoC;AAAE,WAAO,KAAK,EAAE,EAAE,QAAQ;AAAA,EAAG;AAAA,EACjE,OAA4B;AAAE,WAAO,KAAK,EAAE,EAAE,KAAK;AAAA,EAAG;AAAA,EACtD,SAA8B;AAAE,WAAO,KAAK,EAAE,EAAE,OAAO;AAAA,EAAG;AAAA,EAC1D,QAAQ,YAAoE,SAAqB;AAC/F,SAAK,EAAE,EAAE,SAAS,CAAC,GAAM,MAAS,WAAW,GAAG,GAAG,IAAI,IAAW,OAAO;AAAA,EAC3E;AAAA,EACA,CAAC,OAAO,QAAQ,IAA8B;AAAE,WAAO,KAAK,EAAE,EAAE,OAAO,QAAQ,EAAE;AAAA,EAAG;AACtF;AAMO,IAAM,mBAAN,MAAmD;AAAA,EAExD,YAA6B,QAAgD,OAAiC;AAAjF;AAAgD;AAC3E,UAAM,SAAS,CAAC,GAAM,MAAa,KAAK,QAAQ,KAAK,MAAM,GAAG,CAAC,IAAK;AACpE,UAAM,UAA6B;AAAA,MACjC,KAAK,CAAC,SAAS,MAAmB,aAAa;AAC7C,YAAI,SAAS,OAAO,YAAa,QAAO;AACxC,YAAI,OAAO,SAAS,SAAU,QAAO,QAAQ,IAAI,OAAO,WAAW,MAAM,QAAQ;AACjF,cAAM,MAAM;AACZ,cAAM,IAAI,KAAK,OAAO,IAAI,GAAG;AAC7B,eAAO,MAAM,SAAY,SAAY,OAAO,GAAG,GAAG;AAAA,MACpD;AAAA,MACA,KAAK,MAAM;AAAA;AAAA,MACX,KAAK,CAAC,SAAS,SAAsB,OAAO,SAAS,YAAY,KAAK,OAAO,IAAI,IAAS;AAAA,MAC1F,gBAAgB,MAAM;AAAA;AAAA,MACtB,SAAS,MAAM,MAAM,KAAK,KAAK,OAAO,KAAK,CAAwC;AAAA,MACnF,0BAA0B,CAAC,SAAS,SAAsB;AACxD,YAAI,OAAO,SAAS,YAAY,KAAK,OAAO,IAAI,IAAS,GAAG;AAC1D,gBAAM,MAAM;AACZ,gBAAM,IAAI,KAAK,OAAO,IAAI,GAAG;AAC7B,iBAAO,EAAE,cAAc,MAAM,YAAY,MAAM,OAAO,OAAO,GAAG,GAAG,EAAE;AAAA,QACvE;AACA,eAAO;AAAA,MACT;AAAA,MACA,gBAAgB,MAAM;AAAA;AAAA,IACxB;AACA,SAAK,QAAQ,IAAI,MAAM,uBAAO,OAAO,IAAI,GAAG,OAAO;AAAA,EACrD;AAAA,EACA,WAAyB;AAAE,WAAO,KAAK;AAAA,EAAO;AAChD;;;AC1DA,2BAAyB;AAwDlB,IAAM,aAAN,cAAyB,qBAAAA,QAAa;AAAA,EAqBzC,YAAY,QAA4B,SAA0E;AAC9G,UAAM;AAnBV,SAAQ,SAAS,oBAAI,IAAwB;AAC7C,SAAQ,SAAyC;AACjD;AAAA,SAAQ,iBAAiB;AACzB;AAAA,SAAQ,mBAAkC;AAC1C;AAAA,SAAQ,QAA6B;AACrC,SAAQ,gBAAgB;AAExB,SAAQ,OAAO,IAAI,cAA2B,MAAM,KAAK,MAAM;AAO/D,SAAQ,UAA0B,CAAC;AAM/B,SAAK,SAAS;AACd,SAAK,UAAU;AACf,SAAK,MAAM,QAAQ;AACnB,SAAK,mBAAmB;AACxB,SAAK,YAAY;AAAA,EACrB;AAAA,EATA,IAAI,UAAwC;AAAE,WAAO,KAAK;AAAA,EAAQ;AAAA,EAW1D,EAAE,KAAa,MAAY;AAAE,QAAI,KAAK,IAAK,MAAK,IAAI,KAAK,IAAI;AAAA,EAAG;AAAA,EAEhE,qBAAqB;AACzB,SAAK,kBAAkB,MAAM;AACzB,WAAK,KAAK,eAAe,EAAE,aAAa,KAAK,eAAe,CAAC;AAC7D,WAAK,YAAY;AAAA,IACrB;AACA,SAAK,gBAAgB,MAAM;AACvB,WAAK,KAAK,mBAAmB,MAAM,KAAK,qBAAqB,SAAS,CAAC,KAAK,OAAO;AAC/E,aAAK,EAAE,+BAA+B,EAAE,SAAS,KAAK,gBAAgB,WAAW,KAAK,iBAAiB,CAAC;AACxG,aAAK,kBAAkB,KAAK,gBAAgB,KAAK,gBAAgB;AAAA,MACrE;AAAA,IACJ;AACA,SAAK,OAAO,GAAG,eAAe,KAAK,eAAe;AAClD,SAAK,OAAO,GAAG,aAAa,KAAK,aAAa;AAAA,EAClD;AAAA,EAEQ,qBAAqB;AACzB,QAAI,KAAK,iBAAiB;AACtB,WAAK,OAAO,IAAI,eAAe,KAAK,eAAe;AACnD,WAAK,kBAAkB;AAAA,IAC3B;AACA,QAAI,KAAK,eAAe;AACpB,WAAK,OAAO,IAAI,aAAa,KAAK,aAAa;AAC/C,WAAK,gBAAgB;AAAA,IACzB;AAAA,EACJ;AAAA,EAEQ,gBAAyB;AAAE,WAAO,KAAK,mBAAmB,MAAM,KAAK,qBAAqB;AAAA,EAAM;AAAA,EAChG,YAAqC;AAAE,WAAQ,KAAK,iBAAiB,KAAK,SAAU,KAAK,SAAU,KAAK;AAAA,EAAQ;AAAA,EAChH,eAAe,GAAY;AAAE,QAAI,OAAO,MAAM,YAAY,IAAI,KAAK,eAAgB,MAAK,iBAAiB;AAAA,EAAG;AAAA,EAC5G,UAAU,GAAY;AAAE,QAAI,MAAM,CAAC,KAAK,oBAAoB,IAAI,KAAK,kBAAmB,MAAK,mBAAmB;AAAA,EAAG;AAAA,EAEnH,kBAAkB,SAAiB,WAA0B;AACjE,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,4BAA4B;AAC9D,QAAI,KAAK,OAAO;AAAE,WAAK,MAAM;AAAG,WAAK,QAAQ;AAAA,IAAM;AACnD,UAAM,YAAY,iBAAE,SAAS,aAAe,KAAK,QAAQ,iBAAiB,CAAC;AAC3E,SAAK,EAAE,aAAa,EAAE,SAAS,UAAU,CAAC;AAC1C,SAAK,QAAQ,KAAK,OAAO;AAAA,MACrB,EAAE,OAAO,KAAK,QAAQ,cAAc,UAAU;AAAA,MAC9C;AAAA,QACI,MAAM,CAAC,aAAwE;AAC3E,cAAI,SAAS,QAAQ;AACjB,iBAAK,EAAE,kBAAkB,SAAS,MAAM;AACxC,iBAAK,KAAK,SAAS,SAAS,MAAM;AAAA,UACtC;AACA,gBAAM,UAAU,SAAS;AACzB,cAAI,QAAS,MAAK,cAAc,OAAO;AAAA,QAC3C;AAAA,QACA,OAAO,CAAC,QAAiB,KAAK,EAAE,sBAAsB,GAAG;AAAA,QACzD,UAAU,MAAM,KAAK,EAAE,uBAAuB;AAAA,MAClD;AAAA,IACJ;AAAA,EACJ;AAAA,EAEQ,cAAc;AAElB,SAAK,kBAAkB,KAAK,gBAAgB,KAAK,gBAAgB;AAAA,EACrE;AAAA,EAEQ,QAAQ;AACZ,QAAI,CAAC,KAAK,OAAO,YAAY,GAAG;AAAE,WAAK,EAAE,gCAAgC;AAAG;AAAA,IAAQ;AACpF,SAAK,kBAAkB,KAAK,gBAAgB,KAAK,gBAAgB;AAAA,EACrE;AAAA,EAEA,OAA8C;AAC1C,QAAI,CAAC,KAAK,MAAO,MAAK,MAAM;AAC5B,WAAO,KAAK;AAAA,EAChB;AAAA,EACA,MAAM,YAA2B;AAC7B,QAAI,CAAC,KAAK,MAAO,MAAK,MAAM;AAC5B,UAAM,KAAK;AAAA,EACf;AAAA,EAEQ,cAAc;AAClB,SAAK,SAAS,IAAI,QAAsC,aAAW;AAC/D,WAAK,gBAAgB;AAAA,IACzB,CAAC;AAAA,EACL;AAAA,EAEQ,cAAc,KAAmD;AACrE,QAAI,CAAC,IAAK;AAEV,UAAM,WAAW,OAAO,KAAK,GAAG,EAAE,CAAC;AACnC,QAAI,CAAC,SAAU;AACf,UAAM,MAAM,IAAI,QAAQ;AACxB,QAAI,CAAC,IAAK;AACV,UAAM,EAAE,KAAK,IAAI;AACjB,YAAQ,MAAM;AAAA,MACV,KAAK,qBAAgB;AACjB,cAAM,SAAS,KAAK,cAAc;AAClC,aAAK,gBAAgB;AAErB,aAAK,SAAS,SAAS,oBAAI,IAAI,IAAI;AACnC,cAAM,UAAU,EAAE,MAAM,OAAO;AAC/B,aAAK,KAAK,SAAS,OAAO;AAC1B;AAAA,MACJ;AAAA,MACA,KAAK;AACD,aAAK,aAAa,IAAI,MAAM,KAAK,aAAa;AAC9C;AAAA,MACJ,KAAK;AACD,aAAK,aAAa,IAAI,UAAU,IAAI,eAAe,IAAI,eAAe;AACtE;AAAA,MACJ,KAAK,mBAAe;AAChB,cAAM,UAAU,KAAK;AACrB,YAAI,WAAW,KAAK,QAAQ;AACxB,eAAK,SAAS,KAAK;AACnB,eAAK,SAAS;AAAA,QAClB;AACA,aAAK,gBAAgB;AACrB,cAAM,IAAI,EAAE,MAAM,QAAQ;AAC1B,YAAI,SAAS;AACT,qBAAW,KAAK,KAAK,QAAS,GAAE;AAChC,eAAK,UAAU,CAAC;AAAA,QACpB;AACA,aAAK,KAAK,QAAQ,CAAC;AAEnB,YAAI,KAAK,eAAe;AACpB,gBAAM,IAAI,KAAK;AAAe,eAAK,gBAAgB;AAAW,YAAE,KAAK,IAAI;AAAA,QAC7E;AACA;AAAA,MACJ;AAAA,MACA,KAAK;AACD,cAAM,KAAK,EAAE,gBAAgB,KAAK,eAAe;AACjD,aAAK,KAAK,gBAAgB,EAAE;AAE5B,aAAK,iBAAiB;AACtB,aAAK,mBAAmB;AACxB,aAAK,SAAS,oBAAI,IAAI;AACtB,aAAK,gBAAgB;AACrB,aAAK,YAAY;AACjB,aAAK,kBAAkB,KAAK,gBAAgB,KAAK,gBAAgB;AACjE;AAAA,IACR;AAAA,EACJ;AAAA,EAEQ,eAAe,MAAyB;AAC5C,QAAI,CAAC,KAAM,QAAO,CAAC;AACnB,WAAO,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI;AAAA,EAC7C;AAAA,EAEQ,aAAa,MAAW,aAAsB;AAClD,eAAW,QAAQ,KAAK,eAAe,IAAI,GAAG;AAC1C,UAAI,CAAC,QAAQ,OAAO,KAAK,OAAO,SAAU;AAC1C,YAAM,aAAa,OAAO,KAAK,YAAY;AAC3C,YAAM,QAAQ,OAAO,KAAK,cAAc;AACxC,UAAI,CAAC,cAAc,CAAC,MAAO;AAC3B,YAAM,WAAW,KAAK,UAAU,EAAE,IAAI,KAAK,EAAE;AAC7C,YAAM,eAAe,eAAe,EAAC,qCAAU,YAAW,KAAK,WAAY,SAAS;AACpF,YAAM,UAAU,UAAU,EAAC,qCAAU,cAAa,KAAK,aAAc,SAAS;AAC9E,UAAI,CAAC,YAAY,gBAAgB,SAAS;AACtC,aAAK,UAAU,EAAE,IAAI,KAAK,IAAI,IAAI;AAClC,aAAK,eAAe,KAAK,OAAO;AAChC,aAAK,UAAU,KAAK,SAAS;AAC7B,YAAI,KAAK,eAAe;AACpB,eAAK,QAAQ,KAAK,MAAM,KAAK,KAAK,WAAW,MAAM,WAAW,CAAC;AAAA,QACnE,OAAO;AACH,eAAK,KAAK,WAAW,MAAM,WAAW;AAAA,QAC1C;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EACQ,aAAa,IAAa,eAAwB,iBAA0B;AA3PxF;AA4PQ,QAAI,CAAC,GAAI;AACT,UAAM,eAAe,CAAC,KAAK,iBAAiB,OAAO,kBAAkB,YAAY,KAAK,kBAAkB,KAAK,gBAAgB,KAAK;AAClI,UAAM,UAAU,CAAC,KAAK,iBAAiB,mBAAmB,KAAK,oBAAoB,kBAAkB,KAAK;AAC1G,QAAI,gBAAgB,SAAS;AACzB,iBAAK,MAAL,8BAAS,qBAAqB,EAAE,IAAI,eAAe,gBAAgB;AACnE;AAAA,IACJ;AACA,SAAK,UAAU,EAAE,OAAO,EAAE;AAC1B,SAAK,eAAe,aAAa;AACjC,SAAK,UAAU,eAAe;AAC9B,UAAM,MAAW,EAAE,IAAI,SAAS,cAAc;AAC9C,QAAI,gBAAiB,KAAI,YAAY;AACrC,QAAI,KAAK,eAAe;AACpB,WAAK,QAAQ,KAAK,MAAM,KAAK,KAAK,WAAW,GAAG,CAAC;AAAA,IACrD,OAAO;AACH,WAAK,KAAK,WAAW,GAAG;AAAA,IAC5B;AAAA,EACJ;AAAA,EAEA,IAAI,IAA6B;AAAE,WAAO,KAAK,OAAO,IAAI,EAAE;AAAA,EAAG;AAAA,EAC/D,SAAgB;AAAE,WAAO,MAAM,KAAK,KAAK,OAAO,OAAO,CAAC;AAAA,EAAG;AAAA,EAC3D,QAAqB;AAAE,WAAO,EAAE,SAAS,KAAK,gBAAgB,WAAW,KAAK,kBAAkB,MAAM,KAAK,OAAO,MAAM,oBAAoB,KAAK,cAAc;AAAA,EAAG;AAAA,EAElK,OAAO;AACH,QAAI,KAAK,OAAO;AAAE,WAAK,MAAM;AAAG,WAAK,QAAQ;AAAA,IAAM;AACnD,SAAK,mBAAmB;AACxB,SAAK,iBAAiB;AACtB,SAAK,mBAAmB;AACxB,SAAK,SAAS;AACd,QAAI,KAAK,eAAe;AACpB,YAAM,IAAI,KAAK;AAAe,WAAK,gBAAgB;AAAW,QAAE,KAAK,IAAI;AAAA,IAC7E;AACA,SAAK,YAAY;AAAA,EACrB;AACJ;;;AC9RA,SAAS,eAAe,KAAK;AAC3B,MAAI,QAAQ,MAAM;AAChB,WAAO;AAAA,EACT;AACA,MAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,WAAO;AAAA,EACT;AACA,SAAO,OAAO;AAChB;AACA,SAAS,SAAS,KAAK;AACrB,SAAO,eAAe,GAAG,MAAM;AACjC;AAOA,SAAS,0BAA0B,KAAK;AACtC,SAAO,MAAM,QAAQ,GAAG;AAAA,EACxB,IAAI,SAAS;AAAA,EACb,IAAI,MAAM,CAAC,OAAO,aAAa,EAAE;AACnC;AACA,SAAS,iBAAiB,QAAQ,aAAa;AAC7C,SAAO,OAAO,SAAS,MAAM,SAAS;AACxC;AAEA,IAAM,gCAAgC;AAEtC,IAAI,YAA6B,kBAAC,eAAe;AAC/C,aAAW,WAAW,qBAAqB,IAAI,IAAI,IAAI;AACvD,aAAW,WAAW,qBAAqB,IAAI,IAAI,IAAI;AACvD,aAAW,WAAW,YAAY,IAAI,IAAI,IAAI;AAC9C,aAAW,WAAW,aAAa,IAAI,IAAI,IAAI;AAC/C,aAAW,WAAW,cAAc,IAAI,IAAI,IAAI;AAChD,aAAW,WAAW,WAAW,IAAI,IAAI,IAAI;AAC7C,aAAW,WAAW,0BAA0B,IAAI,IAAI,IAAI;AAC5D,aAAW,WAAW,iCAAiC,IAAI,IAAI,IAAI;AACnE,aAAW,WAAW,kCAAkC,IAAI,IAAI,IAAI;AACpE,aAAW,WAAW,yBAAyB,IAAI,IAAI,IAAI;AAC3D,aAAW,WAAW,+BAA+B,IAAI,IAAI,IAAI;AACjE,SAAO;AACT,GAAG,aAAa,CAAC,CAAC;AAClB,IAAI,cAA+B,kBAAC,iBAAiB;AACnD,eAAa,gBAAgB,IAAI;AACjC,eAAa,eAAe,IAAI;AAChC,eAAa,MAAM,IAAI;AACvB,eAAa,MAAM,IAAI;AACvB,eAAa,WAAW,IAAI;AAC5B,eAAa,MAAM,IAAI;AACvB,eAAa,OAAO,IAAI;AACxB,eAAa,UAAU,IAAI;AAC3B,SAAO;AACT,GAAG,eAAe,CAAC,CAAC;AACpB,SAAS,gBAAgB,KAAK;AAC5B,MAAI,CAAC,SAAS,GAAG,GAAG;AAClB,UAAM,IAAI;AAAA,MACR,gDAAgD,eAAe,GAAG,CAAC;AAAA,IACrE;AAAA,EACF;AACA,MAAI,CAAC,IAAI,MAAM;AACb,UAAM,IAAI,MAAM,wCAAwC;AAAA,EAC1D;AACA,MAAI,OAAO,IAAI,SAAS,UAAU;AAChC,UAAM,IAAI;AAAA,MACR,kEAAkE;AAAA,QAChE,IAAI;AAAA,MACN,CAAC;AAAA,IACH;AAAA,EACF;AACA,UAAQ,IAAI,MAAM;AAAA,IAChB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,QAAmB;AACtB,UAAI,IAAI,WAAW,QAAQ,CAAC,SAAS,IAAI,OAAO,GAAG;AACjD,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI,4FAA4F,IAAI,OAAO;AAAA,QACrH;AAAA,MACF;AACA;AAAA,IACF;AAAA,IACA,KAAK,aAA6B;AAChC,UAAI,OAAO,IAAI,OAAO,UAAU;AAC9B,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI,+DAA+D;AAAA,YACzE,IAAI;AAAA,UACN,CAAC;AAAA,QACH;AAAA,MACF;AACA,UAAI,CAAC,IAAI,IAAI;AACX,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI;AAAA,QACd;AAAA,MACF;AACA,UAAI,CAAC,SAAS,IAAI,OAAO,GAAG;AAC1B,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI,qEAAqE;AAAA,YAC/E,IAAI;AAAA,UACN,CAAC;AAAA,QACH;AAAA,MACF;AACA,UAAI,OAAO,IAAI,QAAQ,UAAU,UAAU;AACzC,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI,0EAA0E;AAAA,YACpF,IAAI,QAAQ;AAAA,UACd,CAAC;AAAA,QACH;AAAA,MACF;AACA,UAAI,IAAI,QAAQ,aAAa,QAAQ,CAAC,SAAS,IAAI,QAAQ,SAAS,GAAG;AACrE,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI,uGAAuG;AAAA,YACjH,IAAI,QAAQ;AAAA,UACd,CAAC;AAAA,QACH;AAAA,MACF;AACA,UAAI,IAAI,QAAQ,iBAAiB,QAAQ,eAAe,IAAI,QAAQ,aAAa,MAAM,UAAU;AAC/F,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI,wGAAwG;AAAA,YAClH,IAAI,QAAQ;AAAA,UACd,CAAC;AAAA,QACH;AAAA,MACF;AACA,UAAI,IAAI,QAAQ,cAAc,QAAQ,CAAC,SAAS,IAAI,QAAQ,UAAU,GAAG;AACvE,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI,wGAAwG;AAAA,YAClH,IAAI,QAAQ;AAAA,UACd,CAAC;AAAA,QACH;AAAA,MACF;AACA;AAAA,IACF;AAAA,IACA,KAAK,QAAmB;AACtB,UAAI,OAAO,IAAI,OAAO,UAAU;AAC9B,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI,+DAA+D;AAAA,YACzE,IAAI;AAAA,UACN,CAAC;AAAA,QACH;AAAA,MACF;AACA,UAAI,CAAC,IAAI,IAAI;AACX,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI;AAAA,QACd;AAAA,MACF;AACA,UAAI,CAAC,SAAS,IAAI,OAAO,GAAG;AAC1B,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI,qEAAqE;AAAA,YAC/E,IAAI;AAAA,UACN,CAAC;AAAA,QACH;AAAA,MACF;AACA;AAAA,IACF;AAAA,IACA,KAAK,SAAqB;AACxB,UAAI,OAAO,IAAI,OAAO,UAAU;AAC9B,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI,+DAA+D;AAAA,YACzE,IAAI;AAAA,UACN,CAAC;AAAA,QACH;AAAA,MACF;AACA,UAAI,CAAC,IAAI,IAAI;AACX,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI;AAAA,QACd;AAAA,MACF;AACA,UAAI,CAAC,0BAA0B,IAAI,OAAO,GAAG;AAC3C,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI,sFAAsF,KAAK;AAAA,YACrG,IAAI;AAAA,UACN,CAAC;AAAA,QACH;AAAA,MACF;AACA;AAAA,IACF;AAAA,IACA,KAAK,YAA2B;AAC9B,UAAI,OAAO,IAAI,OAAO,UAAU;AAC9B,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI,+DAA+D;AAAA,YACzE,IAAI;AAAA,UACN,CAAC;AAAA,QACH;AAAA,MACF;AACA,UAAI,CAAC,IAAI,IAAI;AACX,cAAM,IAAI;AAAA,UACR,IAAI,IAAI,IAAI;AAAA,QACd;AAAA,MACF;AACA;AAAA,IACF;AAAA,IACA;AACE,YAAM,IAAI,MAAM,oCAAoC,IAAI,IAAI,GAAG;AAAA,EACnE;AACA,SAAO;AACT;AACA,SAAS,aAAa,MAAM,SAAS;AACnC,SAAO;AAAA,IACL,OAAO,SAAS,WAAW,KAAK,MAAM,MAAM,OAAO,IAAI;AAAA,EACzD;AACF;AACA,SAAS,iBAAiB,KAAK,UAAU;AACvC,kBAAgB,GAAG;AACnB,SAAO,KAAK,UAAU,KAAK,QAAQ;AACrC;;;ACzMA,SAAS,aAAa,SAAS;AAC7B,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,OAAO;AAAA,IACP,iBAAiB,QAAQ;AAAA,IACzB,kBAAkB,qBAAqB;AAAA,IACvC,YAAY;AAAA,IACZ;AAAA,IACA,2BAA2B;AAAA,IAC3B,gBAAgB;AAAA,IAChB,YAAY,eAAe,6BAA6B,UAAU;AAChE,YAAM,oBAAoB,KAAK,IAAI,GAAG,QAAQ;AAC9C,YAAM,IAAI;AAAA,QACR,CAAC,YAAY;AAAA,UACX;AAAA,UACA,oBAAoB;AAAA,UACpB,KAAK,MAAM,KAAK,OAAO,KAAK,MAAM,OAAO,GAAG;AAAA,QAC9C;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA,aAAa,SAAS,eAAe;AACnC,aAAO,uCAAuC,QAAQ,SAAS,CAAC,MAAM;AACpE,cAAM,IAAI,KAAK,OAAO,IAAI,KAAK,GAAG,IAAI,KAAK,MAAM,IAAI,IAAI,IAAI;AAC7D,eAAO,EAAE,SAAS,EAAE;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,IACA,qBAAqB;AAAA,IACrB,oBAAoB;AAAA,EACtB,IAAI;AACJ,MAAI;AACJ,MAAI,eAAe;AACjB,QAAI,CAAC,YAAY,aAAa,GAAG;AAC/B,YAAM,IAAI,MAAM,2CAA2C;AAAA,IAC7D;AACA,SAAK;AAAA,EACP,WAAW,OAAO,cAAc,aAAa;AAC3C,SAAK;AAAA,EACP,WAAW,OAAO,WAAW,aAAa;AACxC,SAAK,OAAO;AAAA,IACZ,OAAO;AAAA,EACT,WAAW,OAAO,WAAW,aAAa;AACxC,SAAK,OAAO;AAAA,IACZ,OAAO;AAAA,EACT;AACA,MAAI,CAAC;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AACF,QAAM,gBAAgB;AACtB,QAAM,WAAW,MAAM;AACrB,UAAM,UAA2B,uBAAM;AACrC,YAAM,aAAa,CAAC;AACpB,aAAO;AAAA,QACL,GAAG,IAAI,UAAU;AACf,qBAAW,EAAE,IAAI;AACjB,iBAAO,MAAM;AACX,mBAAO,WAAW,EAAE;AAAA,UACtB;AAAA,QACF;AAAA,QACA,KAAK,UAAU;AAzEvB;AA0EU,cAAI,QAAQ,SAAU,kBAAW,SAAS,QAApB,oCAA0B;AAAA,QAClD;AAAA,MACF;AAAA,IACF,GAAG;AACH,UAAM,YAAY;AAAA,MAChB,aAAY,yBAAI,cAAa,CAAC,GAAG,UAAU,IAAI,CAAC;AAAA,MAChD,SAAQ,yBAAI,UAAS,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,MACpC,YAAW,yBAAI,aAAY,CAAC,GAAG,SAAS,IAAI,CAAC;AAAA,MAC7C,OAAM,yBAAI,QAAO,CAAC,GAAG,IAAI,IAAI,CAAC;AAAA,MAC9B,OAAM,yBAAI,QAAO,CAAC,GAAG,IAAI,IAAI,CAAC;AAAA,MAC9B,UAAS,yBAAI,WAAU,CAAC,QAAQ,MAAM,GAAG,OAAO,IAAI,CAAC,QAAQ,IAAI;AAAA,MACjE,SAAQ,yBAAI,UAAS,CAAC,GAAG,MAAM,IAAI,CAAC;AAAA,MACpC,QAAO,yBAAI,SAAQ,CAAC,GAAG,KAAK,IAAI,CAAC;AAAA,IACnC;AACA,WAAO;AAAA,MACL,WAAW,QAAQ;AAAA,MACnB,GAAG,OAAO,UAAU;AAClB,cAAM,IAAI,UAAU,KAAK;AACzB,UAAE,KAAK,QAAQ;AACf,eAAO,MAAM;AACX,YAAE,OAAO,EAAE,QAAQ,QAAQ,GAAG,CAAC;AAAA,QACjC;AAAA,MACF;AAAA,MACA,KAAK,UAAU,MAAM;AACnB,mBAAW,YAAY,CAAC,GAAG,UAAU,KAAK,CAAC,GAAG;AAC5C,mBAAS,GAAG,IAAI;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,EACF,GAAG;AACH,WAAS,cAAc,IAAI;AACzB,UAAM,YAAY;AAAA;AAAA,MAEhB,QAAQ,GAAG,SAAS,CAAC,QAAQ;AAC3B,kBAAU,QAAQ,CAAC,aAAa,SAAS,CAAC;AAC1C,WAAG,GAAG;AAAA,MACR,CAAC;AAAA;AAAA,MAED,QAAQ,GAAG,UAAU,CAAC,UAAU;AAC9B,kBAAU,QAAQ,CAAC,aAAa,SAAS,CAAC;AAC1C,WAAG,KAAK;AAAA,MACV,CAAC;AAAA,IACH;AAAA,EACF;AACA,MAAI,YAAY,QAAQ,GAAG,kBAAkB,WAAW,OAAO,UAAU,GAAG,WAAW;AACvF,iBAAe,UAAU;AACvB,iBAAa,gBAAgB;AAC7B,UAAM,CAAC,QAAQ,YAAY,IAAI,OAAO,kCAAe,aAAa,IAAI;AAAA,MACpE,CAAC,WAAW,YAAY,YAAY;AAClC,YAAI,UAAU;AACZ,gBAAM,UAAU,OAAO;AACvB,cAAI,CAAC,OAAO;AACV,yBAAa;AACb,mBAAO,OAAO,EAAE,MAAM,KAAK,QAAQ,yBAAyB,CAAC;AAAA,UAC/D;AACA;AAAA,QACF;AACA,gBAAQ,KAAK,cAAc,QAAQ;AACnC,cAAM,UAAU,IAAI;AAAA,UAClB,OAAO,QAAQ,aAAa,MAAM,IAAI,IAAI;AAAA,UAC1C;AAAA,QACF;AACA,YAAI,sBAAsB;AAC1B,iBAAS,cAAc;AACrB,cAAI,SAAS,SAAS,KAAK,YAAY,GAAG;AACxC,yBAAa,UAAU;AACvB,yBAAa,WAAW,MAAM;AAC5B,kBAAI,QAAQ,eAAe,cAAc,MAAM;AAC7C,wBAAQ,KAAK,iBAAiB,EAAE,MAAM,YAAY,KAAK,CAAC,CAAC;AACzD,wBAAQ,KAAK,QAAQ,OAAO,MAAM;AAAA,cACpC;AAAA,YACF,GAAG,SAAS;AAAA,UACd;AAAA,QACF;AACA,sBAAc,CAAC,eAAe;AAC5B,uBAAa;AACb,uBAAa,oBAAoB;AACjC,uBAAa,UAAU;AACvB,iBAAO,UAAU;AACjB,cAAI,sBAAsB,sBAAsB;AAC9C,oBAAQ,MAAM,MAAM,YAAY;AAChC,oBAAQ,UAAU;AAClB,oBAAQ,UAAU;AAAA,UACpB;AAAA,QACF,CAAC;AACD,gBAAQ,UAAU,CAAC,QAAQ,QAAQ,KAAK,SAAS,GAAG;AACpD,gBAAQ,UAAU,CAAC,UAAU,QAAQ,KAAK,UAAU,KAAK;AACzD,gBAAQ,SAAS,YAAY;AAC3B,cAAI;AACF,oBAAQ,KAAK,UAAU,OAAO;AAC9B,kBAAM,UAAU,OAAO,qBAAqB,aAAa,MAAM,iBAAiB,IAAI;AACpF,gBAAI,QAAQ,eAAe,cAAc,KAAM;AAC/C,oBAAQ;AAAA,cACN;AAAA,gBACE,UAAU;AAAA,kBACR,MAAM,YAAY;AAAA,kBAClB;AAAA,gBACF,IAAI;AAAA,kBACF,MAAM,YAAY;AAAA;AAAA,gBAEpB;AAAA,gBACA;AAAA,cACF;AAAA,YACF;AACA,gBAAI,SAAS,wBAAwB,KAAK,2BAA2B,GAAG;AACtE,qCAAuB,WAAW,MAAM;AACtC,wBAAQ;AAAA,kBACN,UAAU;AAAA,kBACV;AAAA,gBACF;AAAA,cACF,GAAG,wBAAwB;AAAA,YAC7B;AACA,wBAAY;AAAA,UACd,SAAS,KAAK;AACZ,oBAAQ,KAAK,SAAS,GAAG;AACzB,oBAAQ;AAAA,cACN,UAAU;AAAA,cACV;AAAA,gBACE,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,gBAC/C;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,YAAI,eAAe;AACnB,gBAAQ,YAAY,CAAC,EAAE,KAAK,MAAM;AAChC,cAAI;AACF,kBAAM,UAAU,aAAa,MAAM,OAAO;AAC1C,oBAAQ,KAAK,WAAW,OAAO;AAC/B,gBAAI,QAAQ,SAAS,UAAU,QAAQ,SAAS,QAAQ;AACtD,sBAAQ,KAAK,QAAQ,MAAM,MAAM,QAAQ,OAAO;AAChD,kBAAI,QAAQ,SAAS,QAAQ;AAC3B,4BAAY;AAAA,cACd,WAAW,CAAC,aAAa;AACvB,wBAAQ;AAAA,kBACN;AAAA,oBACE,QAAQ,UAAU;AAAA,sBAChB,MAAM,YAAY;AAAA,sBAClB,SAAS,QAAQ;AAAA,oBACnB,IAAI;AAAA,sBACF,MAAM,YAAY;AAAA;AAAA,oBAEpB;AAAA,kBACF;AAAA,gBACF;AACA,wBAAQ,KAAK,QAAQ,OAAO,QAAQ,OAAO;AAAA,cAC7C;AACA;AAAA,YACF;AACA,gBAAI,aAAc;AAClB,gBAAI,QAAQ,SAAS,YAAY;AAC/B,oBAAM,IAAI;AAAA,gBACR,mCAAmC,QAAQ,IAAI;AAAA,cACjD;AACF,yBAAa,oBAAoB;AACjC,2BAAe;AACf,oBAAQ,KAAK,aAAa,SAAS,QAAQ,SAAS,QAAQ;AAC5D,uBAAW;AACX,sBAAU;AACV,sBAAU;AAAA,cACR;AAAA,cACA,IAAI,QAAQ,CAAC,GAAG,WAAW,cAAc,MAAM,CAAC;AAAA,YAClD,CAAC;AAAA,UACH,SAAS,KAAK;AACZ,oBAAQ,YAAY;AACpB,oBAAQ,KAAK,SAAS,GAAG;AACzB,oBAAQ;AAAA,cACN,UAAU;AAAA,cACV;AAAA,gBACE,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,gBAC/C;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,GAAG;AAAA,IACL;AACA,QAAI,OAAO,eAAe,cAAc,QAAS,OAAM;AACvD,QAAI,UAAU,MAAM;AAAA,IACpB;AACA,UAAM,WAAW,IAAI,QAAQ,CAAC,YAAY,UAAU,OAAO;AAC3D,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,QAAQ,KAAK;AAAA;AAAA,QAEX,SAAS,KAAK,MAAM;AAClB,cAAI,CAAC,OAAO;AACV,kBAAM,WAAW,MAAM,OAAO,MAAM,KAAK,gBAAgB;AACzD,gBAAI,SAAS,kBAAkB,KAAK,qBAAqB,GAAG;AAC1D,iCAAmB,WAAW,MAAM;AAClC,oBAAI,OAAO,eAAe,cAAc,KAAM,UAAS;AAAA,cACzD,GAAG,kBAAkB;AAAA,YACvB,OAAO;AACL,uBAAS;AAAA,YACX;AAAA,UACF;AAAA,QACF,CAAC;AAAA;AAAA,QAED;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACA,WAAS,0BAA0B,iBAAiB;AAClD,QAAI,iBAAiB,eAAe,MAAM,yBAAyB,gBAAgB,IAAI,KAAK;AAAA,MAC1F,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU;AAAA;AAAA,MAEV,UAAU;AAAA;AAAA;AAAA,MAGV,UAAU;AAAA,MACV,UAAU;AAAA;AAAA,IAEZ,EAAE,SAAS,gBAAgB,IAAI;AAC7B,YAAM;AACR,QAAI,SAAU,QAAO;AACrB,QAAI,iBAAiB,eAAe,KAAK,gBAAgB,SAAS;AAChE,aAAO,QAAQ;AACjB,QAAI,CAAC,iBAAiB,WAAW,cAAe,OAAM;AACtD,QAAI,CAAC,YAAY,eAAe,EAAG,OAAM;AACzC,WAAO,WAAW;AAAA,EACpB;AACA,MAAI,CAAC,MAAM;AACT,KAAC,YAAY;AACX;AACA,iBAAW;AACT,YAAI;AACF,gBAAM,CAAC,EAAE,EAAE,YAAY,IAAI,MAAM,QAAQ;AACzC,gBAAM;AAAA,QACR,SAAS,iBAAiB;AACxB,cAAI;AACF,gBAAI,CAAC,0BAA0B,eAAe,EAAG;AAAA,UACnD,SAAS,kBAAkB;AACzB,mBAAO,iDAAiB;AAAA,UAC1B;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG;AAAA,EACL;AACA,WAAS,UAAU,SAAS,MAAM;AAChC,UAAM,KAAK,WAAW,OAAO;AAC7B,QAAI,OAAO,OAAO,UAAU,OAAO,WAAW,MAAM;AAClD;AACA,aAAO;AAAA,IACT;AACA,KAAC,YAAY;AACX;AACA,iBAAW;AACT,YAAI;AACF,gBAAM,CAAC,QAAQ,SAAS,4BAA4B,IAAI,MAAM,QAAQ;AACtE,cAAI,KAAM,QAAO,QAAQ;AACzB,gBAAM,WAAW,QAAQ,UAAU,IAAI,CAAC,YAAY;AAClD,oBAAQ,QAAQ,MAAM;AAAA,cACpB,KAAK,YAAY,MAAM;AACrB,qBAAK,KAAK,QAAQ,OAAO;AACzB;AAAA,cACF;AAAA,cACA,KAAK,YAAY,OAAO;AACtB,0BAAU,MAAM,OAAO;AACvB,qBAAK,MAAM,QAAQ,OAAO;AAC1B,yBAAS;AACT;AAAA,cACF;AAAA,cACA,KAAK,YAAY,UAAU;AACzB,uBAAO;AACP,yBAAS;AACT;AAAA,cACF;AAAA,YACF;AAAA,UACF,CAAC;AACD,iBAAO;AAAA,YACL;AAAA,cACE;AAAA,gBACE;AAAA,gBACA,MAAM,YAAY;AAAA,gBAClB;AAAA,cACF;AAAA,cACA;AAAA,YACF;AAAA,UACF;AACA,qBAAW,MAAM;AACf,gBAAI,CAAC,QAAQ,OAAO,eAAe,cAAc;AAC/C,qBAAO;AAAA,gBACL;AAAA,kBACE;AAAA,oBACE;AAAA,oBACA,MAAM,YAAY;AAAA,kBACpB;AAAA,kBACA;AAAA,gBACF;AAAA,cACF;AACF;AACA,mBAAO;AACP,oBAAQ;AAAA,UACV;AACA,gBAAM,6BAA6B,QAAQ,QAAQ;AACnD;AAAA,QACF,SAAS,iBAAiB;AACxB,cAAI,CAAC,0BAA0B,eAAe,EAAG;AAAA,QACnD;AAAA,MACF;AAAA,IACF,GAAG,EAAE,KAAK,MAAM;AACd,UAAI,CAAC,QAAS,MAAK,SAAS;AAAA,IAC9B,CAAC,EAAE,MAAM,CAAC,QAAQ;AAChB,WAAK,MAAM,GAAG;AAAA,IAChB,CAAC;AACD,WAAO,MAAM;AACX,UAAI,CAAC,KAAM,UAAS;AAAA,IACtB;AAAA,EACF;AACA,SAAO;AAAA,IACL,IAAI,QAAQ;AAAA,IACZ;AAAA,IACA,QAAQ,SAAS;AACf,YAAM,UAAU,CAAC;AACjB,YAAM,WAAW;AAAA,QACf,MAAM;AAAA,QACN,OAAO;AAAA,QACP,SAAS,MAAM;AAAA,QACf;AAAA,MACF;AACA,YAAM,UAAU,UAAU,SAAS;AAAA,QACjC,KAAK,KAAK;AACR,kBAAQ,KAAK,GAAG;AAChB,mBAAS,QAAQ;AAAA,QACnB;AAAA,QACA,MAAM,KAAK;AACT,mBAAS,OAAO;AAChB,mBAAS,QAAQ;AACjB,mBAAS,QAAQ;AAAA,QACnB;AAAA,QACA,WAAW;AACT,mBAAS,OAAO;AAChB,mBAAS,QAAQ;AAAA,QACnB;AAAA,MACF,CAAC;AACD,YAAM,YAAW,SAAgB,YAAY;AAAA;AAC3C,qBAAW;AACT,gBAAI,CAAC,QAAQ,QAAQ;AACnB,gCAAM,IAAI,QAAQ,CAAC,YAAY,SAAS,UAAU,OAAO;AAAA,YAC3D;AACA,mBAAO,QAAQ,QAAQ;AACrB,oBAAM,QAAQ,MAAM;AAAA,YACtB;AACA,gBAAI,SAAS,OAAO;AAClB,oBAAM,SAAS;AAAA,YACjB;AACA,gBAAI,SAAS,MAAM;AACjB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,SAAE;AACF,eAAS,QAAQ,OAAO,QAAQ;AAC9B,YAAI,CAAC,SAAS,MAAM;AAClB,mBAAS,OAAO;AAChB,mBAAS,QAAQ;AACjB,mBAAS,QAAQ;AAAA,QACnB;AACA,eAAO,EAAE,MAAM,MAAM,OAAO,OAAO;AAAA,MACrC;AACA,eAAS,SAAS,YAAY;AAC5B,gBAAQ;AACR,eAAO,EAAE,MAAM,MAAM,OAAO,OAAO;AAAA,MACrC;AACA,aAAO;AAAA,IACT;AAAA,IACA,MAAM,UAAU;AACd,iBAAW;AACX,UAAI,YAAY;AACd,cAAM,CAAC,MAAM,IAAI,MAAM;AACvB,eAAO,MAAM,KAAK,gBAAgB;AAAA,MACpC;AAAA,IACF;AAAA,IACA,YAAY;AACV,UAAI,YAAY;AACd,gBAAQ,KAAK,UAAU,IAAI,qBAAqB,CAAC;AAAA,MACnD;AAAA,IACF;AAAA,EACF;AACF;AACA,IAAM,uBAAN,cAAmC,MAAM;AAAA,EAAzC;AAAA;AACE,gCAAO;AACP,mCAAU;AACV,gCAAO;AACP,kCAAS;AACT,oCAAW;AAAA;AACb;AACA,SAAS,iBAAiB,KAAK;AAC7B,SAAO,SAAS,GAAG,KAAK,UAAU,OAAO,YAAY;AACvD;AACA,SAAS,yBAAyB,MAAM;AACtC,MAAI;AAAA,IACF;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,EAEF,EAAE,SAAS,IAAI;AACb,WAAO;AACT,SAAO,QAAQ,OAAO,QAAQ;AAChC;AACA,SAAS,YAAY,KAAK;AACxB,SAAO,OAAO,QAAQ,cAAc,iBAAiB,OAAO,YAAY,OAAO,aAAa,OAAO,gBAAgB,OAAO,UAAU;AACtI;;;ACxeA,IAAAC,wBAAyB;AAoDlB,IAAM,qBAAN,cAAiC,sBAAAC,QAAa;AAAA,EAQjD,cAAc;AACV,UAAM;AAPV,SAAQ,SAAwB;AAChC,SAAQ,iBAAiB;AACzB,SAAQ,mBAAmB;AAC3B,SAAQ,eAAe;AACvB,SAAQ,mBAAmB;AAAA,EAI3B;AAAA,EACA,WAAW,MAAiC;AAjEhD;AAkEQ,SAAK,UAAU;AAAA,MACX,KAAK,KAAK;AAAA,MACV,kBAAkB,KAAK;AAAA,MACvB,uBAAsB,UAAK,yBAAL,YAA6B;AAAA,MACnD,eAAc,UAAK,iBAAL,YAAqB;AAAA,MACnC,kBAAiB,UAAK,oBAAL,YAAwB;AAAA,MACzC,qBAAoB,UAAK,uBAAL,YAA2B;AAAA,MAC/C,gBAAe,UAAK,kBAAL,YAAsB;AAAA,MACrC,KAAK,KAAK;AAAA,IACd;AAAA,EACJ;AAAA,EAEQ,uBAA4B;AAChC,QAAI,CAAC,KAAK,QAAS,OAAM,IAAI,MAAM,gEAAgE;AAOnG,QAAI,KAAK,QAAQ,cAAe,QAAO,KAAK,QAAQ;AAEpD,QAAI,MAAwC;AACxC,YAAM,IAAU;AAChB,UAAI,OAAO,EAAE,cAAc,WAAY,QAAO,EAAE;AAChD,YAAM,IAAI,MAAM,sEAAsE;AAAA,IAC1F,OAAO;AACH,YAAM,WAAW,QAAQ,IAAI,aAAa,QAAQ,IAAI,eAAe,QAAQ,IAAI,cAAc,QAAQ,IAAI;AAC3G,UAAI,UAAU;AACV,YAAI;AAEA,iBAAO;AAAA,QACX,SAAS,GAAG;AACR,eAAK,IAAI,gDAAgD,CAAC;AAAA,QAC9D;AAAA,MACJ;AACA,YAAM,IAAU;AAChB,UAAI,OAAO,EAAE,cAAc,WAAY,QAAO,EAAE;AAChD,UAAI;AAEA,eAAO;AAAA,MACX,SAAQ;AACJ,cAAM,IAAI,MAAM,wFAAwF;AAAA,MAC5G;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA,EAGA,cAAuB;AACnB,WAAO,CAAC,CAAC,KAAK;AAAA,EAClB;AAAA,EAEQ,IAAI,KAAa,MAAY;AAtHzC;AAuHQ,SAAI,UAAK,YAAL,mBAAc,IAAK,MAAK,QAAQ,IAAI,KAAK,IAAI;AAAA,EACrD;AAAA,EAEQ,qBAAqB,aAAsB;AAC/C,QAAI,CAAC,KAAK,QAAS,OAAM,IAAI,MAAM,gEAAgE;AACnG,QAAI,KAAK,OAAQ;AACjB,UAAM,EAAE,KAAK,iBAAiB,IAAI,KAAK;AACvC,UAAM,gBAAgB,KAAK,qBAAqB;AAChD,SAAK,SAAS,aAAa;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN,WAAW;AAAA,MACX,eAAe;AAAA,MACf,aAAa,MAAM;AAAA,MACnB,IAAI;AAAA,QACA,WAAW,MAAM;AACb,gBAAM,eAAe,eAAe,KAAK,iBAAiB;AAC1D,eAAK,iBAAiB;AACtB,cAAI,gBAAgB,KAAK,kBAAkB;AACvC,iBAAK,KAAK,aAAa;AACvB,iBAAK,IAAI,aAAa;AAAA,UAC1B,OAAO;AACH,iBAAK,KAAK,WAAW;AACrB,iBAAK,IAAI,WAAW;AAAA,UACxB;AACA,eAAK,mBAAmB;AAAA,QAC5B;AAAA,QACA,OAAO,CAAC,QAAQ;AACZ,eAAK,KAAK,SAAS,GAAG;AACtB,eAAK,IAAI,gBAAgB,GAAG;AAAA,QAChC;AAAA,QACA,QAAQ,CAAC,OAAO;AAxJhC;AAyJoB,gBAAM,IAAI;AACV,eAAK,IAAI,UAAU,CAAC;AACpB,eAAK,KAAK,gBAAgB,EAAE,MAAO,EAAU,MAAM,SAAS,mBAAU,WAAV,mBAAkB,aAAlB,4CAAkC,IAAI,WAAW,OAAU,aAAV,YAAsB,MAAM,CAAC;AAC1I,eAAK,SAAS;AACd,cAAI,CAAC,KAAK,iBAAkB,MAAK,kBAAkB;AAAA,QACvD;AAAA,MACJ;AAAA,IACJ,CAAC;AAAA,EACL;AAAA;AAAA;AAAA,EAKA,UAAgB;AACZ,QAAI,KAAK,OAAQ;AACjB,SAAK,KAAK,YAAY;AACtB,SAAK,IAAI,YAAY;AACrB,SAAK,qBAAqB,KAAK;AAAA,EACnC;AAAA,EAEQ,oBAAoB;AACxB,QAAI,CAAC,KAAK,QAAS,OAAM,IAAI,MAAM,gEAAgE;AACnG,QAAI,KAAK,aAAc;AACvB,QAAI,KAAK,kBAAkB,KAAK,QAAQ,sBAAsB;AAC1D,WAAK,IAAI,gCAAgC;AACzC;AAAA,IACJ;AACA,SAAK,eAAe;AACpB,UAAM,QAAQ,KAAK;AAAA,MACf,KAAK,QAAQ,eAAe,KAAK,IAAI,GAAG,KAAK,cAAc;AAAA,MAC3D,KAAK,QAAQ;AAAA,IACjB;AACA,SAAK,KAAK,SAAS,EAAE,SAAS,KAAK,eAAe,CAAC;AACnD,SAAK,IAAI,uBAAuB,EAAE,SAAS,KAAK,gBAAgB,MAAM,CAAC;AACvE,eAAW,MAAM;AACb,WAAK,eAAe;AACpB,WAAK;AACL,WAAK,KAAK,YAAY;AACtB,WAAK,IAAI,YAAY;AACrB,WAAK,qBAAqB,IAAI;AAAA,IAClC,GAAG,KAAK;AAAA,EACZ;AAAA,EAEA,UAAwF,SAAyC,UAAgE;AApMrM;AAqMQ,QAAI,CAAC,KAAK,QAAS,OAAM,IAAI,MAAM,gEAAgE;AACnG,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,6CAA6C;AAC/E,UAAM,UAA4B;AAAA,MAC9B,OAAO,QAAQ;AAAA,MACf,WAAW,QAAQ;AAAA,MACnB,eAAe,QAAQ;AAAA,MACvB,YAAY,QAAQ;AAAA,IACxB;AACA,QAAI,WAAW;AACf,UAAM,aAAY,aAAQ,cAAR,YAAqB,KAAK,QAAQ;AACpD,QAAI;AACJ,QAAI,YAAY,GAAG;AACf,gBAAU,WAAW,MAAM;AAjNvC,YAAAC;AAkNgB,YAAI,SAAU;AACd,mBAAW;AACX,SAAAA,MAAA,SAAS,UAAT,gBAAAA,IAAA,eAAiB,IAAI,MAAM,qBAAqB;AAChD,gBAAQ;AAAA,MACZ,GAAG,SAAS;AAAA,IAChB;AACA,UAAM,UAAU,KAAK,OAAO,UAAU,SAAS;AAAA,MAC3C,MAAM,CAAC,SAAM;AAzNzB,YAAAA;AAyN4B,gBAAAA,MAAA,SAAS,SAAT,gBAAAA,IAAA,eAAgB;AAAA;AAAA,MAChC,OAAO,CAAC,QAAQ;AA1N5B,YAAAA;AA2NgB,YAAI,SAAU;AACd,mBAAW;AACX,YAAI,QAAS,cAAa,OAAO;AACjC,SAAAA,MAAA,SAAS,UAAT,gBAAAA,IAAA,eAAiB;AAAA,MACrB;AAAA,MACA,UAAU,MAAM;AAhO5B,YAAAA;AAiOgB,YAAI,SAAU;AACd,mBAAW;AACX,YAAI,QAAS,cAAa,OAAO;AACjC,SAAAA,MAAA,SAAS,aAAT,gBAAAA,IAAA;AAAA,MACJ;AAAA,IACJ,CAAC;AACD,WAAO,MAAM;AACT,UAAI,SAAU;AACd,iBAAW;AACX,UAAI,QAAS,cAAa,OAAO;AACjC,cAAQ;AAAA,IACZ;AAAA,EACJ;AAAA;AAAA,EAGA,QAAsF,SAAwF;AAC1K,QAAI,CAAC,KAAK,OAAQ,OAAM,IAAI,MAAM,6CAA6C;AAC/E,UAAM,UAA4B;AAAA,MAC9B,OAAO,QAAQ;AAAA,MACf,WAAW,QAAQ;AAAA,MACnB,eAAe,QAAQ;AAAA,MACvB,YAAY,QAAQ;AAAA,IACxB;AAGA,WAAQ,KAAK,OAAe,QAAQ,OAAO;AAAA,EAC/C;AAAA,EAEA,MAAM,MAAM,OAAO,KAAM,SAAS,kBAAkB;AAChD,SAAK,mBAAmB;AACxB,SAAK,IAAI,gBAAgB;AACzB,UAAM,IAAI,KAAK;AACf,QAAI,GAAG;AAAE,UAAI;AAAE,UAAE,QAAQ;AAAA,MAAG,SAAQ;AAAA,MAAE;AAAA,IAAE;AACxC,SAAK,SAAS;AACd,SAAK,mBAAmB;AAAA,EAC5B;AACJ;AAEA,IAAO,6BAAQ;;;AL9PR,IAAM,aAAN,cAAyB,2BAAmB;AAAA,EAE/C,cAAc;AACV,UAAM;AAFV,SAAO,UAAmC,oBAAI,IAAI;AAAA,EAGlD;AAAA,EACA,eAAe,KAAa,kBAAoF;AAC5G,SAAK,WAAW;AAAA,MACZ;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,UAAU,MAAc,cAAsB,eAAoD;AAC9F,QAAI,QAAQ,KAAK,QAAQ,IAAI,IAAI;AACjC,QAAI,CAAC,OAAO;AACR,YAAM,OAAO,KAAK,aAAa,cAAc,aAAa;AAC1D,YAAM,UAAU,CAAC,OAAe,YAAiB;AAC7C,aAAK,KAAK,UAAU,KAAK,IAAI,iBAAE,YAAY,QAAS,QAAS;AAAA,MACjE;AACA,YAAM,WAAsD;AAAA,QACxD,CAAC,SAAS,CAAC,MAAM,QAAQ,SAAS,CAAC,CAAC;AAAA,QACpC,CAAC,WAAW,CAAC,MAAM,cAAc,QAAQ,WAAW,EAAE,MAAM,UAAU,CAAC,CAAC;AAAA,QACxE,CAAC,WAAW,CAAC,MAAM,QAAQ,WAAW,CAAC,CAAC;AAAA,QACxC,CAAC,QAAQ,CAAC,MAAM,QAAQ,QAAQ,CAAC,CAAC;AAAA,QAClC,CAAC,gBAAgB,CAAC,MAAM,QAAQ,gBAAgB,CAAC,CAAC;AAAA,QAClD,CAAC,eAAe,CAAC,MAAM,QAAQ,eAAe,CAAC,CAAC;AAAA,QAChD,CAAC,SAAS,CAAC,MAAM,QAAQ,SAAS,CAAC,CAAC;AAAA,MACxC;AACA,eAAS,QAAQ,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,GAAU,CAAC,CAAC;AACjD,WAAK,QAAQ,IAAI,MAAM,IAAI;AAC3B,cAAQ;AAAA,IACZ;AACA,WAAO;AAAA,EACX;AAAA,EACA,aAAa,cAAsB,eAAoD;AACnF,WAAO,IAAI,WAAW,MAAM,EAAE,cAAc,cAAc,CAAC;AAAA,EAC/D;AAAA,EAEA,aAAa,MAAc;AACvB,UAAM,QAAQ,KAAK,QAAQ,IAAI,IAAI;AACnC,QAAI,CAAC,MAAO;AACZ,UAAM,mBAAmB;AACzB,UAAM,KAAK;AACX,SAAK,QAAQ,OAAO,IAAI;AACxB,SAAK,KAAK,kBAAkB,EAAE,YAAY,KAAK,CAAC;AAAA,EACpD;AAAA,EAEA,eAAe;AACX,eAAW,QAAQ,MAAM,KAAK,KAAK,QAAQ,KAAK,CAAC,GAAG;AAChD,WAAK,aAAa,IAAI;AAAA,IAC1B;AACA,SAAK,KAAK,gBAAgB;AAAA,EAC9B;AACJ;","names":["EventEmitter","import_eventemitter3","EventEmitter","_a"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nanolink/mirrors",
3
- "version": "1.0.15",
3
+ "version": "1.0.17",
4
4
  "description": "GraphQL subscription client + mirror synchronization utilities.",
5
5
  "license": "MIT",
6
6
  "author": "Nanolink ApS, Mogens Bak Nielsen",