@roster-lock/match-agent 0.1.0 → 0.2.0

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.
Files changed (107) hide show
  1. package/client/dist/assets/index-DeYshswm.js +125 -0
  2. package/client/dist/assets/index-gxAuIfGQ.css +1 -0
  3. package/client/dist/index.html +13 -0
  4. package/client/index.html +12 -0
  5. package/client/node_modules/.bin/terser +17 -0
  6. package/client/node_modules/.bin/tsc +17 -0
  7. package/client/node_modules/.bin/vite +17 -0
  8. package/client/node_modules/.vite/deps/@rjsf_core.js +6609 -0
  9. package/client/node_modules/.vite/deps/@rjsf_core.js.map +7 -0
  10. package/client/node_modules/.vite/deps/@rjsf_validator-ajv8.js +13 -0
  11. package/client/node_modules/.vite/deps/@rjsf_validator-ajv8.js.map +7 -0
  12. package/client/node_modules/.vite/deps/@roster-lock_ts-client.js +419 -0
  13. package/client/node_modules/.vite/deps/@roster-lock_ts-client.js.map +7 -0
  14. package/client/node_modules/.vite/deps/@roster-lock_types.js +5 -0
  15. package/client/node_modules/.vite/deps/@roster-lock_types.js.map +7 -0
  16. package/client/node_modules/.vite/deps/@roster-lock_utils.js +5 -0
  17. package/client/node_modules/.vite/deps/@roster-lock_utils.js.map +7 -0
  18. package/client/node_modules/.vite/deps/_metadata.json +97 -0
  19. package/client/node_modules/.vite/deps/chunk-4D2L7OBZ.js +16039 -0
  20. package/client/node_modules/.vite/deps/chunk-4D2L7OBZ.js.map +7 -0
  21. package/client/node_modules/.vite/deps/chunk-5KLROPUR.js +292 -0
  22. package/client/node_modules/.vite/deps/chunk-5KLROPUR.js.map +7 -0
  23. package/client/node_modules/.vite/deps/chunk-77TXW5ZT.js +280 -0
  24. package/client/node_modules/.vite/deps/chunk-77TXW5ZT.js.map +7 -0
  25. package/client/node_modules/.vite/deps/chunk-I55GDNGV.js +1004 -0
  26. package/client/node_modules/.vite/deps/chunk-I55GDNGV.js.map +7 -0
  27. package/client/node_modules/.vite/deps/chunk-IIDO6PKU.js +2337 -0
  28. package/client/node_modules/.vite/deps/chunk-IIDO6PKU.js.map +7 -0
  29. package/client/node_modules/.vite/deps/chunk-NE7PXY4V.js +466 -0
  30. package/client/node_modules/.vite/deps/chunk-NE7PXY4V.js.map +7 -0
  31. package/client/node_modules/.vite/deps/chunk-WMTNK64S.js +52 -0
  32. package/client/node_modules/.vite/deps/chunk-WMTNK64S.js.map +7 -0
  33. package/client/node_modules/.vite/deps/package.json +3 -0
  34. package/client/node_modules/.vite/deps/react-dom.js +6 -0
  35. package/client/node_modules/.vite/deps/react-dom.js.map +7 -0
  36. package/client/node_modules/.vite/deps/react-dom_client.js +20217 -0
  37. package/client/node_modules/.vite/deps/react-dom_client.js.map +7 -0
  38. package/client/node_modules/.vite/deps/react-router-dom.js +14702 -0
  39. package/client/node_modules/.vite/deps/react-router-dom.js.map +7 -0
  40. package/client/node_modules/.vite/deps/react.js +5 -0
  41. package/client/node_modules/.vite/deps/react.js.map +7 -0
  42. package/client/node_modules/.vite/deps/react_jsx-dev-runtime.js +278 -0
  43. package/client/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +7 -0
  44. package/client/node_modules/.vite/deps/react_jsx-runtime.js +6 -0
  45. package/client/node_modules/.vite/deps/react_jsx-runtime.js.map +7 -0
  46. package/client/node_modules/.vite/deps_temp_ab51ebe9/package.json +3 -0
  47. package/client/package.json +30 -0
  48. package/client/src/App.tsx +56 -0
  49. package/client/src/NavBar.tsx +13 -0
  50. package/client/src/api/matchAgent.ts +159 -0
  51. package/client/src/bridge/hostBridge.ts +149 -0
  52. package/client/src/components/GameLauncherSettingsForm.tsx +140 -0
  53. package/client/src/components/InstallGameLauncherLightbox.tsx +31 -0
  54. package/client/src/components/Lightbox.tsx +15 -0
  55. package/client/src/components/RequireConnection.tsx +9 -0
  56. package/client/src/components/Selection/PieceCard.tsx +36 -0
  57. package/client/src/components/Selection/PieceTypeSection.tsx +112 -0
  58. package/client/src/components/Selection/PieceTypeTabs.tsx +31 -0
  59. package/client/src/components/Selection/PlayerSelectionPanel.tsx +40 -0
  60. package/client/src/components/Selection/index.tsx +147 -0
  61. package/client/src/components/Selection/selectionPlan.ts +75 -0
  62. package/client/src/context/DownloadSessionContext.tsx +48 -0
  63. package/client/src/context/IdentityContext.tsx +53 -0
  64. package/client/src/context/JoinSettingsContext.tsx +83 -0
  65. package/client/src/context/MatchAgentContext.tsx +85 -0
  66. package/client/src/hooks/useCursorInput.ts +55 -0
  67. package/client/src/hooks/useGamepads.ts +31 -0
  68. package/client/src/main.tsx +10 -0
  69. package/client/src/pages/Connect/index.tsx +46 -0
  70. package/client/src/pages/Download/index.tsx +175 -0
  71. package/client/src/pages/Game/index.tsx +65 -0
  72. package/client/src/pages/GameLauncher/Detail.tsx +12 -0
  73. package/client/src/pages/GameLauncher/index.tsx +32 -0
  74. package/client/src/pages/JoinSettings/index.tsx +58 -0
  75. package/client/src/pages/MatchMaking/index.tsx +190 -0
  76. package/client/src/styles/global.css +355 -0
  77. package/client/tsconfig.json +17 -0
  78. package/client/tsconfig.tsbuildinfo +1 -0
  79. package/client/vite.config.ts +33 -0
  80. package/dist/config/manage.js.map +1 -1
  81. package/dist/handle-room/version-1/game-launcher.js +181 -0
  82. package/dist/handle-room/version-1/game-launcher.js.map +1 -0
  83. package/dist/handle-room/version-1/index.js +15 -2
  84. package/dist/handle-room/version-1/index.js.map +1 -1
  85. package/dist/handle-room/version-1/piece-sort.js +1 -0
  86. package/dist/handle-room/version-1/piece-sort.js.map +1 -1
  87. package/dist/index.js +7 -4
  88. package/dist/index.js.map +1 -1
  89. package/dist/serve-client.js +88 -0
  90. package/dist/serve-client.js.map +1 -0
  91. package/dist/server.js +1 -1
  92. package/dist/server.js.map +1 -1
  93. package/package.json +12 -6
  94. package/src/config/manage.ts +5 -1
  95. package/src/handle-room/version-1/game-launcher.ts +263 -0
  96. package/src/handle-room/version-1/globals/types.ts +24 -0
  97. package/src/handle-room/version-1/index.ts +23 -3
  98. package/src/handle-room/version-1/piece-sort.ts +1 -1
  99. package/src/index.ts +25 -5
  100. package/src/serve-client.ts +100 -0
  101. package/src/server.ts +1 -1
  102. package/tests/integration/game-launcher-list.test.ts +77 -0
  103. package/tests/integration/game-launcher-settings.test.ts +138 -0
  104. package/tests/integration/game-launcher-start.test.ts +81 -0
  105. package/tests/integration/helpers/fakePluginRuntime.ts +26 -1
  106. package/tests/integration/helpers/server.ts +8 -2
  107. package/src/index.old.ts +0 -71
@@ -0,0 +1,2337 @@
1
+ import {
2
+ __commonJS,
3
+ __privateAdd,
4
+ __privateMethod,
5
+ __publicField
6
+ } from "./chunk-WMTNK64S.js";
7
+
8
+ // ../utils/dist/array/LinkedList.js
9
+ var require_LinkedList = __commonJS({
10
+ "../utils/dist/array/LinkedList.js"(exports) {
11
+ "use strict";
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.LinkedList = void 0;
14
+ var ListNode = class {
15
+ constructor(value, next = null, prev = null) {
16
+ __publicField(this, "value");
17
+ __publicField(this, "next");
18
+ __publicField(this, "prev");
19
+ this.value = value;
20
+ this.next = next;
21
+ this.prev = prev;
22
+ }
23
+ };
24
+ var LinkedList = class {
25
+ constructor() {
26
+ __publicField(this, "head", null);
27
+ __publicField(this, "tail", null);
28
+ __publicField(this, "_length", 0);
29
+ }
30
+ push(value) {
31
+ const node = new ListNode(value);
32
+ if (!this.tail) {
33
+ this.head = this.tail = node;
34
+ } else {
35
+ this.tail.next = node;
36
+ node.prev = this.tail;
37
+ this.tail = node;
38
+ }
39
+ this._length++;
40
+ }
41
+ pop() {
42
+ if (!this.tail)
43
+ return void 0;
44
+ const value = this.tail.value;
45
+ this._length--;
46
+ if (!this.tail.prev) {
47
+ this.head = null;
48
+ this.tail = null;
49
+ } else {
50
+ this.tail = this.tail.prev;
51
+ this.tail.next = null;
52
+ }
53
+ return value;
54
+ }
55
+ shift() {
56
+ if (!this.head)
57
+ return void 0;
58
+ const value = this.head.value;
59
+ this._length--;
60
+ if (!this.head.next) {
61
+ this.head = null;
62
+ this.tail = null;
63
+ } else {
64
+ this.head = this.head.next;
65
+ this.head.prev = null;
66
+ }
67
+ return value;
68
+ }
69
+ unshift(value) {
70
+ const node = new ListNode(value);
71
+ if (!this.head) {
72
+ this.head = this.tail = node;
73
+ } else {
74
+ this.head.prev = node;
75
+ node.next = this.head;
76
+ this.head = node;
77
+ }
78
+ this._length++;
79
+ }
80
+ peekStart() {
81
+ var _a;
82
+ return (_a = this.head) == null ? void 0 : _a.value;
83
+ }
84
+ peekEnd() {
85
+ var _a;
86
+ return (_a = this.tail) == null ? void 0 : _a.value;
87
+ }
88
+ isEmpty() {
89
+ return this._length === 0;
90
+ }
91
+ get length() {
92
+ return this._length;
93
+ }
94
+ [Symbol.iterator]() {
95
+ let current = this.head;
96
+ return {
97
+ next: () => {
98
+ if (!current)
99
+ return { done: true, value: void 0 };
100
+ const value = current.value;
101
+ current = current.next;
102
+ return { done: false, value };
103
+ }
104
+ };
105
+ }
106
+ clear() {
107
+ this.head = this.tail = null;
108
+ this._length = 0;
109
+ }
110
+ };
111
+ exports.LinkedList = LinkedList;
112
+ }
113
+ });
114
+
115
+ // ../utils/dist/array/duplicate-iterable.js
116
+ var require_duplicate_iterable = __commonJS({
117
+ "../utils/dist/array/duplicate-iterable.js"(exports) {
118
+ "use strict";
119
+ Object.defineProperty(exports, "__esModule", { value: true });
120
+ exports.BackPressureStream = void 0;
121
+ exports.duplicateIterable = duplicateIterable;
122
+ var LinkedList_1 = require_LinkedList();
123
+ function duplicateIterable(iterable, numberOfTimes) {
124
+ if (numberOfTimes === 0)
125
+ throw new Error("Number of Iterables should be at least 1");
126
+ const streams = [];
127
+ for (let i = 0; i < numberOfTimes; i++) {
128
+ streams.push(new BackPressureStream());
129
+ }
130
+ return {
131
+ streams,
132
+ start: async () => {
133
+ try {
134
+ for await (const item of iterable) {
135
+ for (const stream of streams) {
136
+ stream.push(item);
137
+ }
138
+ }
139
+ for (const stream of streams) {
140
+ stream.end();
141
+ }
142
+ } catch (e) {
143
+ for (const stream of streams) {
144
+ stream.fail(e);
145
+ }
146
+ }
147
+ }
148
+ };
149
+ }
150
+ var _BackPressureStream_instances, restartLoop_fn;
151
+ var BackPressureStream = class {
152
+ constructor() {
153
+ __privateAdd(this, _BackPressureStream_instances);
154
+ __publicField(this, "buffer", new LinkedList_1.LinkedList());
155
+ __publicField(this, "finished", null);
156
+ __publicField(this, "waiting", null);
157
+ }
158
+ push(newItem) {
159
+ if (this.finished)
160
+ throw new Error("Already Closed");
161
+ this.buffer.push(newItem);
162
+ __privateMethod(this, _BackPressureStream_instances, restartLoop_fn).call(this);
163
+ }
164
+ end() {
165
+ if (this.finished)
166
+ throw new Error("Already Closed");
167
+ this.finished = { success: true };
168
+ __privateMethod(this, _BackPressureStream_instances, restartLoop_fn).call(this);
169
+ }
170
+ fail(error) {
171
+ if (this.finished)
172
+ throw new Error("Already Closed");
173
+ this.finished = { success: false, error };
174
+ __privateMethod(this, _BackPressureStream_instances, restartLoop_fn).call(this);
175
+ }
176
+ async *[Symbol.asyncIterator]() {
177
+ while (!this.finished || this.buffer.length) {
178
+ while (this.buffer.length) {
179
+ yield this.buffer.shift();
180
+ }
181
+ if (this.finished)
182
+ break;
183
+ await new Promise((res) => {
184
+ this.waiting = res;
185
+ });
186
+ }
187
+ if (!this.finished.success) {
188
+ throw this.finished.error;
189
+ }
190
+ }
191
+ };
192
+ _BackPressureStream_instances = new WeakSet();
193
+ restartLoop_fn = function() {
194
+ if (!this.waiting)
195
+ return;
196
+ const waiting = this.waiting;
197
+ this.waiting = null;
198
+ waiting();
199
+ };
200
+ exports.BackPressureStream = BackPressureStream;
201
+ }
202
+ });
203
+
204
+ // ../utils/dist/array/index.js
205
+ var require_array = __commonJS({
206
+ "../utils/dist/array/index.js"(exports) {
207
+ "use strict";
208
+ var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
209
+ if (k2 === void 0) k2 = k;
210
+ var desc = Object.getOwnPropertyDescriptor(m, k);
211
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
212
+ desc = { enumerable: true, get: function() {
213
+ return m[k];
214
+ } };
215
+ }
216
+ Object.defineProperty(o, k2, desc);
217
+ }) : (function(o, m, k, k2) {
218
+ if (k2 === void 0) k2 = k;
219
+ o[k2] = m[k];
220
+ }));
221
+ var __exportStar = exports && exports.__exportStar || function(m, exports2) {
222
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p);
223
+ };
224
+ Object.defineProperty(exports, "__esModule", { value: true });
225
+ __exportStar(require_duplicate_iterable(), exports);
226
+ __exportStar(require_LinkedList(), exports);
227
+ }
228
+ });
229
+
230
+ // ../utils/dist/buffer.js
231
+ var require_buffer = __commonJS({
232
+ "../utils/dist/buffer.js"(exports) {
233
+ "use strict";
234
+ Object.defineProperty(exports, "__esModule", { value: true });
235
+ exports.mergeBuffers = mergeBuffers;
236
+ function mergeBuffers(parts) {
237
+ const out = new Uint8Array(parts.reduce((n, p) => n + p.length, 0));
238
+ let i = 0;
239
+ for (const p of parts) {
240
+ out.set(p, i);
241
+ i += p.length;
242
+ }
243
+ return out;
244
+ }
245
+ }
246
+ });
247
+
248
+ // ../utils/dist/string.js
249
+ var require_string = __commonJS({
250
+ "../utils/dist/string.js"(exports) {
251
+ "use strict";
252
+ Object.defineProperty(exports, "__esModule", { value: true });
253
+ exports.uniqueId = uniqueId;
254
+ exports.padString = padString;
255
+ exports.strToBuffer = strToBuffer;
256
+ exports.bufferToStr = bufferToStr;
257
+ exports.uint8ArrayToHex = uint8ArrayToHex;
258
+ exports.hexToUint8Array = hexToUint8Array;
259
+ exports.fileExtension = fileExtension;
260
+ var ID_COUNTER = 0;
261
+ function uniqueId() {
262
+ return [
263
+ padString(Date.now().toString(32), 8),
264
+ padString((ID_COUNTER++).toString(32), 8),
265
+ padString(Math.random().toString(32).substring(2, 10), 8)
266
+ ].join("-");
267
+ }
268
+ function padString(str, length, padChar = "0") {
269
+ if (str.length >= length)
270
+ return str.slice(0, length);
271
+ return padChar.repeat(length - str.length) + str;
272
+ }
273
+ function strToBuffer(str) {
274
+ return new TextEncoder().encode(str);
275
+ }
276
+ function bufferToStr(buffer) {
277
+ return new TextDecoder().decode(buffer);
278
+ }
279
+ function uint8ArrayToHex(array) {
280
+ return Array.from(array).map((byte) => byte.toString(16).padStart(2, "0")).join("");
281
+ }
282
+ function hexToUint8Array(hexStr) {
283
+ return Uint8Array.from(hexStr.match(/.{2}/g), (b) => parseInt(b, 16));
284
+ }
285
+ function fileExtension(filepath) {
286
+ const normalized = filepath.replaceAll("\\", "/");
287
+ const fileName = normalized.split("/").pop();
288
+ if (!fileName)
289
+ return;
290
+ const lastDot = fileName.lastIndexOf(".");
291
+ if (lastDot === -1)
292
+ return;
293
+ if (lastDot === 0)
294
+ return;
295
+ return fileName.slice(lastDot);
296
+ }
297
+ }
298
+ });
299
+
300
+ // ../utils/dist/JSON.js
301
+ var require_JSON = __commonJS({
302
+ "../utils/dist/JSON.js"(exports) {
303
+ "use strict";
304
+ Object.defineProperty(exports, "__esModule", { value: true });
305
+ exports.cloneJSON = cloneJSON;
306
+ exports.compareJSON = compareJSON;
307
+ exports.canonicalJSONStringify = canonicalJSONStringify;
308
+ exports.isJSONObject = isJSONObject;
309
+ function cloneJSON(value) {
310
+ return JSON.parse(JSON.stringify(value));
311
+ }
312
+ function compareJSON(a, b) {
313
+ return canonicalJSONStringify(a) === canonicalJSONStringify(b);
314
+ }
315
+ function canonicalJSONStringify(value) {
316
+ if (typeof value !== "object")
317
+ return JSON.stringify(value);
318
+ if (value === null)
319
+ return JSON.stringify(value);
320
+ if (Array.isArray(value)) {
321
+ const elems = value.map((v) => canonicalJSONStringify(v)).join(",");
322
+ return `[${elems}]`;
323
+ }
324
+ const keys = Object.keys(value).sort();
325
+ const props = keys.map((key) => {
326
+ const k = JSON.stringify(key);
327
+ const v = canonicalJSONStringify(value[key]);
328
+ return `${k}:${v}`;
329
+ }).join(",");
330
+ return `{${props}}`;
331
+ }
332
+ function isJSONObject(value) {
333
+ return typeof value === "object" && value !== null && !Array.isArray(value);
334
+ }
335
+ }
336
+ });
337
+
338
+ // ../utils/dist/crypto/encryption/symmetric.js
339
+ var require_symmetric = __commonJS({
340
+ "../utils/dist/crypto/encryption/symmetric.js"(exports) {
341
+ "use strict";
342
+ Object.defineProperty(exports, "__esModule", { value: true });
343
+ exports.ENCRYPT_SYMMETRIC = void 0;
344
+ exports.generateSymmetricEncryptionKey = generateSymmetricEncryptionKey;
345
+ exports.encryptValue = encryptValue;
346
+ exports.decryptValue = decryptValue;
347
+ var string_1 = require_string();
348
+ var JSON_1 = require_JSON();
349
+ exports.ENCRYPT_SYMMETRIC = {
350
+ generateKey: generateSymmetricEncryptionKey,
351
+ encryptValue,
352
+ decryptValue
353
+ };
354
+ function generateSymmetricEncryptionKey(length = 32) {
355
+ const bytes = crypto.getRandomValues(new Uint8Array(length));
356
+ return (0, string_1.uint8ArrayToHex)(bytes);
357
+ }
358
+ async function encryptValue(masterKey, value) {
359
+ const valueString = (0, JSON_1.canonicalJSONStringify)(value);
360
+ const keyData = (0, string_1.hexToUint8Array)(masterKey);
361
+ const iv = crypto.getRandomValues(new Uint8Array(12));
362
+ const cryptoKey = await crypto.subtle.importKey("raw", keyData, { name: "AES-GCM" }, false, ["encrypt"]);
363
+ const encryptedBuffer = await crypto.subtle.encrypt({ name: "AES-GCM", iv }, cryptoKey, (0, string_1.strToBuffer)(valueString));
364
+ return `${(0, string_1.uint8ArrayToHex)(iv)}:${(0, string_1.uint8ArrayToHex)(new Uint8Array(encryptedBuffer))}`;
365
+ }
366
+ async function decryptValue(masterKey, encryptedData) {
367
+ const [ivHex, encryptedHex] = encryptedData.split(":");
368
+ const keyData = (0, string_1.hexToUint8Array)(masterKey);
369
+ const iv = (0, string_1.hexToUint8Array)(ivHex);
370
+ const encrypted = (0, string_1.hexToUint8Array)(encryptedHex);
371
+ const cryptoKey = await crypto.subtle.importKey("raw", keyData, { name: "AES-GCM" }, false, ["decrypt"]);
372
+ const decryptedBuffer = await crypto.subtle.decrypt({ name: "AES-GCM", iv }, cryptoKey, encrypted);
373
+ const decoder = new TextDecoder();
374
+ const valueString = decoder.decode(decryptedBuffer);
375
+ return JSON.parse(valueString);
376
+ }
377
+ }
378
+ });
379
+
380
+ // ../utils/dist/crypto/encryption/index.js
381
+ var require_encryption = __commonJS({
382
+ "../utils/dist/crypto/encryption/index.js"(exports) {
383
+ "use strict";
384
+ var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
385
+ if (k2 === void 0) k2 = k;
386
+ var desc = Object.getOwnPropertyDescriptor(m, k);
387
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
388
+ desc = { enumerable: true, get: function() {
389
+ return m[k];
390
+ } };
391
+ }
392
+ Object.defineProperty(o, k2, desc);
393
+ }) : (function(o, m, k, k2) {
394
+ if (k2 === void 0) k2 = k;
395
+ o[k2] = m[k];
396
+ }));
397
+ var __exportStar = exports && exports.__exportStar || function(m, exports2) {
398
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p);
399
+ };
400
+ Object.defineProperty(exports, "__esModule", { value: true });
401
+ exports.ENCRYPTION = void 0;
402
+ var symmetric_1 = require_symmetric();
403
+ __exportStar(require_symmetric(), exports);
404
+ exports.ENCRYPTION = {
405
+ SYMMETRIC: symmetric_1.ENCRYPT_SYMMETRIC
406
+ };
407
+ }
408
+ });
409
+
410
+ // ../utils/dist/crypto/signature/asymmetric.js
411
+ var require_asymmetric = __commonJS({
412
+ "../utils/dist/crypto/signature/asymmetric.js"(exports) {
413
+ "use strict";
414
+ Object.defineProperty(exports, "__esModule", { value: true });
415
+ exports.SIGNATURE_ASYMMETRIC = void 0;
416
+ exports.generateAsymmetricSignatureKeyPair = generateAsymmetricSignatureKeyPair;
417
+ exports.createAsymmetricMessageSignature = createAsymmetricMessageSignature;
418
+ exports.verifyAsymmetricMessageSignature = verifyAsymmetricMessageSignature;
419
+ var JSON_1 = require_JSON();
420
+ var string_1 = require_string();
421
+ var buffer_1 = require_buffer();
422
+ exports.SIGNATURE_ASYMMETRIC = {
423
+ generateKeyPair: generateAsymmetricSignatureKeyPair,
424
+ createSignature: createAsymmetricMessageSignature,
425
+ verifySignature: verifyAsymmetricMessageSignature
426
+ };
427
+ var PKCS8_HEADER = new Uint8Array([
428
+ 48,
429
+ 46,
430
+ 2,
431
+ 1,
432
+ 0,
433
+ 48,
434
+ 5,
435
+ 6,
436
+ 3,
437
+ 43,
438
+ 101,
439
+ 112,
440
+ 4,
441
+ 34,
442
+ 4,
443
+ 32
444
+ ]);
445
+ var SPKI_HEADER = new Uint8Array([
446
+ 48,
447
+ 42,
448
+ 48,
449
+ 5,
450
+ 6,
451
+ 3,
452
+ 43,
453
+ 101,
454
+ 112,
455
+ 3,
456
+ 33,
457
+ 0
458
+ ]);
459
+ var ED25519 = { name: "Ed25519" };
460
+ function base64urlToBytes(b64url) {
461
+ const b64 = b64url.replace(/-/g, "+").replace(/_/g, "/");
462
+ return Uint8Array.from(atob(b64), (c) => c.charCodeAt(0));
463
+ }
464
+ async function importPrivKey(raw) {
465
+ return crypto.subtle.importKey("pkcs8", (0, buffer_1.mergeBuffers)([PKCS8_HEADER, raw]), ED25519, false, ["sign"]);
466
+ }
467
+ async function importPubKey(raw) {
468
+ return crypto.subtle.importKey("spki", (0, buffer_1.mergeBuffers)([SPKI_HEADER, raw]), ED25519, false, ["verify"]);
469
+ }
470
+ async function generateAsymmetricSignatureKeyPair() {
471
+ const keyPair = await crypto.subtle.generateKey(ED25519, true, ["sign", "verify"]);
472
+ if (!("privateKey" in keyPair))
473
+ throw new Error("Ed25519 generateKey did not return a key pair");
474
+ const privJwk = await crypto.subtle.exportKey("jwk", keyPair.privateKey);
475
+ const pubJwk = await crypto.subtle.exportKey("jwk", keyPair.publicKey);
476
+ return {
477
+ privateSigningKey: (0, string_1.uint8ArrayToHex)(base64urlToBytes(privJwk.d)),
478
+ publicVerificationKey: (0, string_1.uint8ArrayToHex)(base64urlToBytes(pubJwk.x))
479
+ };
480
+ }
481
+ async function createAsymmetricMessageSignature(privateSigningKey, message) {
482
+ const privKey = await importPrivKey((0, string_1.hexToUint8Array)(privateSigningKey));
483
+ const messageBytes = (0, string_1.strToBuffer)((0, JSON_1.canonicalJSONStringify)(message));
484
+ const signature = await crypto.subtle.sign(ED25519, privKey, messageBytes);
485
+ return (0, string_1.uint8ArrayToHex)(new Uint8Array(signature));
486
+ }
487
+ async function verifyAsymmetricMessageSignature(publicVerificationKey, signature, message) {
488
+ try {
489
+ const pubKey = await importPubKey((0, string_1.hexToUint8Array)(publicVerificationKey));
490
+ const messageBytes = (0, string_1.strToBuffer)((0, JSON_1.canonicalJSONStringify)(message));
491
+ return await crypto.subtle.verify(ED25519, pubKey, (0, string_1.hexToUint8Array)(signature), messageBytes);
492
+ } catch (e) {
493
+ return false;
494
+ }
495
+ }
496
+ }
497
+ });
498
+
499
+ // ../utils/dist/crypto/signature/symmetric.js
500
+ var require_symmetric2 = __commonJS({
501
+ "../utils/dist/crypto/signature/symmetric.js"(exports) {
502
+ "use strict";
503
+ Object.defineProperty(exports, "__esModule", { value: true });
504
+ exports.SIGNATURE_SYMMETRIC = void 0;
505
+ exports.generateSymmetricSignatureKey = generateSymmetricSignatureKey;
506
+ exports.createSymmetricMessageSignature = createSymmetricMessageSignature;
507
+ exports.verifySymmetricMessageSignature = verifySymmetricMessageSignature;
508
+ var string_1 = require_string();
509
+ exports.SIGNATURE_SYMMETRIC = {
510
+ generateKey: generateSymmetricSignatureKey,
511
+ createSignature: createSymmetricMessageSignature,
512
+ verifySignature: verifySymmetricMessageSignature
513
+ };
514
+ function generateSymmetricSignatureKey() {
515
+ const bytes = crypto.getRandomValues(new Uint8Array(32));
516
+ return (0, string_1.uint8ArrayToHex)(bytes);
517
+ }
518
+ async function createSymmetricMessageSignature(key, message) {
519
+ const keyData = (0, string_1.hexToUint8Array)(key);
520
+ const messageData = (0, string_1.strToBuffer)(message);
521
+ const cryptoKey = await crypto.subtle.importKey("raw", keyData, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
522
+ const signatureBuffer = await crypto.subtle.sign("HMAC", cryptoKey, messageData);
523
+ return (0, string_1.uint8ArrayToHex)(new Uint8Array(signatureBuffer));
524
+ }
525
+ async function verifySymmetricMessageSignature(key, message, signature) {
526
+ const expectedSignature = await createSymmetricMessageSignature(key, message);
527
+ if (signature.length !== expectedSignature.length) {
528
+ return false;
529
+ }
530
+ let result = 0;
531
+ for (let i = 0; i < signature.length; i++) {
532
+ result |= signature.charCodeAt(i) ^ expectedSignature.charCodeAt(i);
533
+ }
534
+ return result === 0;
535
+ }
536
+ }
537
+ });
538
+
539
+ // ../utils/dist/crypto/signature/index.js
540
+ var require_signature = __commonJS({
541
+ "../utils/dist/crypto/signature/index.js"(exports) {
542
+ "use strict";
543
+ var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
544
+ if (k2 === void 0) k2 = k;
545
+ var desc = Object.getOwnPropertyDescriptor(m, k);
546
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
547
+ desc = { enumerable: true, get: function() {
548
+ return m[k];
549
+ } };
550
+ }
551
+ Object.defineProperty(o, k2, desc);
552
+ }) : (function(o, m, k, k2) {
553
+ if (k2 === void 0) k2 = k;
554
+ o[k2] = m[k];
555
+ }));
556
+ var __exportStar = exports && exports.__exportStar || function(m, exports2) {
557
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p);
558
+ };
559
+ Object.defineProperty(exports, "__esModule", { value: true });
560
+ exports.SIGNATURE = void 0;
561
+ var asymmetric_1 = require_asymmetric();
562
+ var symmetric_1 = require_symmetric2();
563
+ __exportStar(require_asymmetric(), exports);
564
+ __exportStar(require_symmetric2(), exports);
565
+ exports.SIGNATURE = {
566
+ ASYMMETRIC: asymmetric_1.SIGNATURE_ASYMMETRIC,
567
+ SYMMETRIC: symmetric_1.SIGNATURE_SYMMETRIC
568
+ };
569
+ }
570
+ });
571
+
572
+ // ../utils/dist/crypto/sha.js
573
+ var require_sha = __commonJS({
574
+ "../utils/dist/crypto/sha.js"(exports) {
575
+ "use strict";
576
+ Object.defineProperty(exports, "__esModule", { value: true });
577
+ exports.createShaFromJSON = createShaFromJSON;
578
+ exports.createShaFromString = createShaFromString;
579
+ exports.createShaFromBuffer = createShaFromBuffer;
580
+ exports.createShaFromTextStream = createShaFromTextStream;
581
+ exports.createShaFromUintStream = createShaFromUintStream;
582
+ var string_1 = require_string();
583
+ var JSON_1 = require_JSON();
584
+ var buffer_1 = require_buffer();
585
+ function createShaFromJSON(value) {
586
+ return createShaFromString((0, JSON_1.canonicalJSONStringify)(value));
587
+ }
588
+ async function createShaFromString(value) {
589
+ return createShaFromBuffer((0, string_1.strToBuffer)(value));
590
+ }
591
+ async function createShaFromBuffer(value) {
592
+ const hashBuffer = await crypto.subtle.digest("SHA-256", value);
593
+ return (0, string_1.uint8ArrayToHex)(new Uint8Array(hashBuffer));
594
+ }
595
+ async function createShaFromTextStream(value) {
596
+ const parts = [];
597
+ for await (const chunk of value)
598
+ parts.push((0, string_1.strToBuffer)(chunk));
599
+ return createShaFromBuffer((0, buffer_1.mergeBuffers)(parts));
600
+ }
601
+ async function createShaFromUintStream(value) {
602
+ const parts = [];
603
+ for await (const chunk of value)
604
+ parts.push(chunk);
605
+ return createShaFromBuffer((0, buffer_1.mergeBuffers)(parts));
606
+ }
607
+ }
608
+ });
609
+
610
+ // ../utils/dist/crypto/index.js
611
+ var require_crypto = __commonJS({
612
+ "../utils/dist/crypto/index.js"(exports) {
613
+ "use strict";
614
+ var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
615
+ if (k2 === void 0) k2 = k;
616
+ var desc = Object.getOwnPropertyDescriptor(m, k);
617
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
618
+ desc = { enumerable: true, get: function() {
619
+ return m[k];
620
+ } };
621
+ }
622
+ Object.defineProperty(o, k2, desc);
623
+ }) : (function(o, m, k, k2) {
624
+ if (k2 === void 0) k2 = k;
625
+ o[k2] = m[k];
626
+ }));
627
+ var __exportStar = exports && exports.__exportStar || function(m, exports2) {
628
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p);
629
+ };
630
+ Object.defineProperty(exports, "__esModule", { value: true });
631
+ __exportStar(require_encryption(), exports);
632
+ __exportStar(require_signature(), exports);
633
+ __exportStar(require_sha(), exports);
634
+ }
635
+ });
636
+
637
+ // ../utils/dist/MessageBridge/types.js
638
+ var require_types = __commonJS({
639
+ "../utils/dist/MessageBridge/types.js"(exports) {
640
+ "use strict";
641
+ Object.defineProperty(exports, "__esModule", { value: true });
642
+ exports.castMessage = castMessage;
643
+ function castMessage(message) {
644
+ if (typeof message !== "object") {
645
+ throw new Error("expecting a complex type");
646
+ }
647
+ if (Array.isArray(message)) {
648
+ throw new Error("expecting a complex type");
649
+ }
650
+ if (message === null) {
651
+ throw new Error("expecting a complex type");
652
+ }
653
+ if (typeof message.messageType !== "string") {
654
+ throw new Error("expecting a message type");
655
+ }
656
+ if (message.messageType === "event") {
657
+ if (typeof message.path !== "string") {
658
+ throw new Error("expecting a path");
659
+ }
660
+ if (typeof message.value === "undefined") {
661
+ throw new Error("expecting a value");
662
+ }
663
+ return { messageType: "event", path: message.path, value: message.value };
664
+ }
665
+ if (message.messageType === "request") {
666
+ if (typeof message.id !== "string") {
667
+ throw new Error("expecting an id");
668
+ }
669
+ if (typeof message.path !== "string") {
670
+ throw new Error("expecting a path");
671
+ }
672
+ if (typeof message.value === "undefined") {
673
+ throw new Error("expecting a value");
674
+ }
675
+ return { id: message.id, messageType: "request", path: message.path, value: message.value };
676
+ }
677
+ if (message.messageType === "response") {
678
+ if (typeof message.id !== "string") {
679
+ throw new Error("expecting an id");
680
+ }
681
+ if (typeof message.valueType !== "string") {
682
+ throw new Error("expecting a value type");
683
+ }
684
+ if (message.valueType !== "result" && message.valueType !== "error") {
685
+ throw new Error("invalid value type");
686
+ }
687
+ if (typeof message.value === "undefined") {
688
+ throw new Error("expecting a value");
689
+ }
690
+ return { id: message.id, messageType: "response", valueType: message.valueType, value: message.value };
691
+ }
692
+ if (message.messageType === "stream-attempt") {
693
+ if (typeof message.id !== "string") {
694
+ throw new Error("expecting an id");
695
+ }
696
+ if (typeof message.path !== "string") {
697
+ throw new Error("expecting a path");
698
+ }
699
+ return { id: message.id, messageType: "stream-attempt", path: message.path };
700
+ }
701
+ if (message.messageType === "stream-response") {
702
+ if (typeof message.id !== "string") {
703
+ throw new Error("expecting an id");
704
+ }
705
+ if (!["start", "error"].includes(message.value)) {
706
+ throw new Error('expecting a value as "start" or "error"');
707
+ }
708
+ return { id: message.id, messageType: "stream-response", value: message.value };
709
+ }
710
+ if (message.messageType === "stream-data") {
711
+ if (typeof message.id !== "string") {
712
+ throw new Error("expecting an id");
713
+ }
714
+ if (typeof message.value === "undefined") {
715
+ throw new Error("expecting a value");
716
+ }
717
+ return { id: message.id, messageType: "stream-data", value: message.value };
718
+ }
719
+ if (message.messageType === "stream-end") {
720
+ if (typeof message.id !== "string") {
721
+ throw new Error("expecting an id");
722
+ }
723
+ return { id: message.id, messageType: "stream-end" };
724
+ }
725
+ throw new Error("invalid message type");
726
+ }
727
+ }
728
+ });
729
+
730
+ // ../utils/dist/MessageBridge/event.js
731
+ var require_event = __commonJS({
732
+ "../utils/dist/MessageBridge/event.js"(exports) {
733
+ "use strict";
734
+ Object.defineProperty(exports, "__esModule", { value: true });
735
+ exports.EventHandler = void 0;
736
+ var EventHandler = class {
737
+ constructor(sendMessage, debug) {
738
+ __publicField(this, "sendMessage");
739
+ __publicField(this, "debug");
740
+ __publicField(this, "listeners", {});
741
+ this.sendMessage = sendMessage;
742
+ this.debug = debug;
743
+ }
744
+ handleMessage(message) {
745
+ switch (message.messageType) {
746
+ case "event": {
747
+ try {
748
+ const handlers = this.listeners[message.path];
749
+ if (!handlers)
750
+ throw new Error(`no event listener at ${message.path}`);
751
+ Promise.resolve().then(async () => {
752
+ for (const handler of handlers) {
753
+ await handler(message.value);
754
+ }
755
+ });
756
+ } catch (e) {
757
+ this.debug && console.error("error handling message", e);
758
+ }
759
+ return true;
760
+ }
761
+ }
762
+ return false;
763
+ }
764
+ sendEvent(path, body) {
765
+ this.sendMessage({
766
+ path,
767
+ messageType: "event",
768
+ value: body
769
+ });
770
+ }
771
+ onEvent(path, handler) {
772
+ const listeners = this.listeners[path] || [];
773
+ listeners.push(handler);
774
+ this.listeners[path] = listeners;
775
+ return () => {
776
+ this.listeners[path] = (this.listeners[path] || []).filter((l) => l !== handler);
777
+ };
778
+ }
779
+ };
780
+ exports.EventHandler = EventHandler;
781
+ }
782
+ });
783
+
784
+ // ../utils/dist/MessageBridge/request.js
785
+ var require_request = __commonJS({
786
+ "../utils/dist/MessageBridge/request.js"(exports) {
787
+ "use strict";
788
+ Object.defineProperty(exports, "__esModule", { value: true });
789
+ exports.RequestHandler = void 0;
790
+ var string_1 = require_string();
791
+ var RequestHandler = class {
792
+ constructor(sendMessage, debug) {
793
+ __publicField(this, "sendMessage");
794
+ __publicField(this, "debug");
795
+ __publicField(this, "listeners", {});
796
+ __publicField(this, "pending", {});
797
+ this.sendMessage = sendMessage;
798
+ this.debug = debug;
799
+ }
800
+ handleMessage(message) {
801
+ switch (message.messageType) {
802
+ case "request": {
803
+ try {
804
+ const handler = this.listeners[message.path];
805
+ if (!handler)
806
+ throw new Error(`no request listener at ${message.path}`);
807
+ Promise.resolve().then(async () => {
808
+ try {
809
+ const result = await handler(message.value);
810
+ this.sendMessage({
811
+ id: message.id,
812
+ messageType: "response",
813
+ valueType: "result",
814
+ value: result
815
+ });
816
+ } catch (e) {
817
+ this.sendMessage({
818
+ id: message.id,
819
+ messageType: "response",
820
+ valueType: "error",
821
+ value: typeof e === "string" ? e : e instanceof Error ? e.message : "Unknown Error"
822
+ });
823
+ }
824
+ });
825
+ } catch (e) {
826
+ this.sendMessage({
827
+ id: message.id,
828
+ messageType: "response",
829
+ valueType: "error",
830
+ value: typeof e === "string" ? e : e instanceof Error ? e.message : "Unknown Error"
831
+ });
832
+ }
833
+ return true;
834
+ }
835
+ case "response": {
836
+ try {
837
+ const pending = this.pending[message.id];
838
+ if (!pending)
839
+ throw new Error(`no pending request for ${message.id}`);
840
+ delete this.pending[message.id];
841
+ if (message.valueType === "error") {
842
+ pending.reject(message.value);
843
+ } else {
844
+ pending.resolve(message.value);
845
+ }
846
+ } catch (e) {
847
+ this.debug && console.error("error handling message", e);
848
+ }
849
+ return true;
850
+ }
851
+ }
852
+ return false;
853
+ }
854
+ sendRequest(path, body) {
855
+ return new Promise((resolve, reject) => {
856
+ const id = (0, string_1.uniqueId)();
857
+ this.pending[id] = { resolve, reject };
858
+ this.sendMessage({
859
+ id,
860
+ path,
861
+ messageType: "request",
862
+ value: body
863
+ });
864
+ });
865
+ }
866
+ onRequest(path, handler) {
867
+ if (path in this.listeners) {
868
+ throw new Error(`Duplicate Path: ${path}`);
869
+ }
870
+ this.listeners[path] = handler;
871
+ return () => {
872
+ if (this.listeners[path] === handler)
873
+ delete this.listeners[path];
874
+ };
875
+ }
876
+ };
877
+ exports.RequestHandler = RequestHandler;
878
+ }
879
+ });
880
+
881
+ // ../utils/dist/SimpleEvent.js
882
+ var require_SimpleEvent = __commonJS({
883
+ "../utils/dist/SimpleEvent.js"(exports) {
884
+ "use strict";
885
+ Object.defineProperty(exports, "__esModule", { value: true });
886
+ exports.createSimpleEmitter = createSimpleEmitter;
887
+ function createSimpleEmitter(config = {
888
+ allowDuplicateCallback: false,
889
+ maximumListeners: Number.POSITIVE_INFINITY,
890
+ suppressErrors: true
891
+ }) {
892
+ if (config.maximumListeners <= 0) {
893
+ throw new Error("maximumListeners can't be less than or equal to 0");
894
+ }
895
+ const context = {
896
+ config,
897
+ listeners: []
898
+ };
899
+ const emitter = SimpleEmitter.bind(context);
900
+ emitter.onReturnOff = emitter;
901
+ emitter.on = addListener.bind(context);
902
+ emitter.off = removeListener.bind(context);
903
+ emitter.emit = emitEvent.bind(context);
904
+ emitter.filter = filterEvent.bind(context);
905
+ context.on = emitter.on;
906
+ context.off = emitter.off;
907
+ return emitter;
908
+ }
909
+ function SimpleEmitter(cb) {
910
+ this.on(cb);
911
+ return () => this.off(cb);
912
+ }
913
+ function addListener(cb) {
914
+ if (this.config.maximumListeners === this.listeners.length) {
915
+ throw new Error("Hit Maximum Listeners");
916
+ }
917
+ if (!this.config.allowDuplicateCallback) {
918
+ for (const listener of this.listeners) {
919
+ if (listener === cb) {
920
+ throw new Error("Can't add listener multiple times");
921
+ }
922
+ }
923
+ }
924
+ this.listeners.push(cb);
925
+ }
926
+ function removeListener(cb) {
927
+ const offset = this.listeners.indexOf(cb);
928
+ if (offset === -1) {
929
+ return false;
930
+ }
931
+ this.listeners.splice(offset, 1);
932
+ return true;
933
+ }
934
+ function emitEvent(...args) {
935
+ for (const listener of this.listeners) {
936
+ try {
937
+ listener(...args);
938
+ } catch (e) {
939
+ if (!this.config.suppressErrors)
940
+ throw e;
941
+ }
942
+ }
943
+ }
944
+ function filterEvent(filter) {
945
+ const newEmitter = createSimpleEmitter(this.config);
946
+ const weakRef = new WeakRef(newEmitter);
947
+ const listener = (...args) => {
948
+ const newEmitter2 = weakRef.deref();
949
+ if (!newEmitter2)
950
+ return this.off(listener);
951
+ if (filter(...args))
952
+ newEmitter2.emit(...args);
953
+ };
954
+ this.on(listener);
955
+ return newEmitter;
956
+ }
957
+ }
958
+ });
959
+
960
+ // ../utils/dist/MessageBridge/stream.js
961
+ var require_stream = __commonJS({
962
+ "../utils/dist/MessageBridge/stream.js"(exports) {
963
+ "use strict";
964
+ Object.defineProperty(exports, "__esModule", { value: true });
965
+ exports.StreamHandler = exports.StreamRequest = exports.SimpleStream = void 0;
966
+ var SimpleEvent_1 = require_SimpleEvent();
967
+ var string_1 = require_string();
968
+ var SimpleStream = class {
969
+ constructor(_sendData, _sendEnd) {
970
+ __publicField(this, "_sendData");
971
+ __publicField(this, "_sendEnd");
972
+ __publicField(this, "state", "setup");
973
+ __publicField(this, "onData", (0, SimpleEvent_1.createSimpleEmitter)());
974
+ __publicField(this, "onEnd", (0, SimpleEvent_1.createSimpleEmitter)());
975
+ this._sendData = _sendData;
976
+ this._sendEnd = _sendEnd;
977
+ this.onEnd(() => {
978
+ if (this.state === "active") {
979
+ this.state = "closed";
980
+ }
981
+ });
982
+ }
983
+ sendData(data) {
984
+ if (this.state === "setup")
985
+ throw new Error("Cannot send on stream during setup. Defer with Promise.resolve().then(() => stream.sendData(...))");
986
+ if (this.state === "failed")
987
+ throw new Error("Cannot send on stream after failed to connect.");
988
+ if (this.state === "closed")
989
+ throw new Error("Cannot send on stream after closed.");
990
+ this._sendData(data);
991
+ }
992
+ sendEnd() {
993
+ if (this.state === "setup")
994
+ throw new Error("Cannot send on stream during setup. Defer with Promise.resolve().then(() => stream.sendEnd())");
995
+ if (this.state === "failed")
996
+ throw new Error("Cannot end on stream after failed to connect.");
997
+ if (this.state === "closed")
998
+ throw new Error("Cannot end on stream after closed.");
999
+ this._sendEnd();
1000
+ this.onEnd.emit();
1001
+ }
1002
+ };
1003
+ exports.SimpleStream = SimpleStream;
1004
+ var StreamRequest = class extends SimpleStream {
1005
+ constructor(sendData, sendEnd) {
1006
+ super(sendData, sendEnd);
1007
+ __publicField(this, "waitForOpen");
1008
+ __publicField(this, "_resolveOpen");
1009
+ __publicField(this, "_rejectOpen");
1010
+ this.waitForOpen = new Promise((resolve, reject) => {
1011
+ this._resolveOpen = resolve;
1012
+ this._rejectOpen = reject;
1013
+ });
1014
+ }
1015
+ };
1016
+ exports.StreamRequest = StreamRequest;
1017
+ var StreamHandler = class {
1018
+ constructor(sendMessage, debug) {
1019
+ __publicField(this, "sendMessage");
1020
+ __publicField(this, "debug");
1021
+ __publicField(this, "listeners", {});
1022
+ __publicField(this, "pending", {});
1023
+ __publicField(this, "active", {});
1024
+ this.sendMessage = sendMessage;
1025
+ this.debug = debug;
1026
+ }
1027
+ handleMessage(message) {
1028
+ switch (message.messageType) {
1029
+ case "stream-attempt": {
1030
+ try {
1031
+ if (this.active[message.id])
1032
+ throw new Error("Duplicate Stream Id");
1033
+ const handler = this.listeners[message.path];
1034
+ if (!handler)
1035
+ throw new Error(`no request listener at ${message.path}`);
1036
+ const stream = this.createStream(message.id);
1037
+ const result = handler(stream);
1038
+ stream.state = "active";
1039
+ this.active[message.id] = stream;
1040
+ this.sendMessage({
1041
+ id: message.id,
1042
+ messageType: "stream-response",
1043
+ value: "start"
1044
+ });
1045
+ Promise.resolve(result).catch((e) => {
1046
+ this.debug && console.warn("stream error handling suppressed", e);
1047
+ });
1048
+ } catch (e) {
1049
+ this.sendMessage({
1050
+ id: message.id,
1051
+ messageType: "stream-response",
1052
+ value: "error"
1053
+ });
1054
+ }
1055
+ return true;
1056
+ }
1057
+ case "stream-response": {
1058
+ const pending = this.pending[message.id];
1059
+ if (!pending)
1060
+ throw new Error(`no pending stream for ${message.id}`);
1061
+ if (this.active[message.id])
1062
+ throw new Error("Duplicate Stream Id");
1063
+ delete this.pending[message.id];
1064
+ if (message.value === "error") {
1065
+ pending.reject("Failed to establish stream");
1066
+ return true;
1067
+ }
1068
+ this.active[message.id] = pending.stream;
1069
+ pending.resolve(pending.stream);
1070
+ return true;
1071
+ }
1072
+ case "stream-data": {
1073
+ const active = this.active[message.id];
1074
+ if (!active)
1075
+ throw new Error(`no active stream for ${message.id}`);
1076
+ active.onData.emit(message.value);
1077
+ return true;
1078
+ }
1079
+ case "stream-end": {
1080
+ const active = this.active[message.id];
1081
+ if (!active)
1082
+ throw new Error(`no active stream for ${message.id}`);
1083
+ delete this.active[message.id];
1084
+ active.onEnd.emit();
1085
+ return true;
1086
+ }
1087
+ }
1088
+ return false;
1089
+ }
1090
+ createStreamRequest(streamId) {
1091
+ const stream = new StreamRequest((data) => {
1092
+ if (!(streamId in this.active)) {
1093
+ throw new Error("Stream isn't active");
1094
+ }
1095
+ this.sendMessage({
1096
+ id: streamId,
1097
+ messageType: "stream-data",
1098
+ value: data
1099
+ });
1100
+ }, () => {
1101
+ if (!(streamId in this.active)) {
1102
+ throw new Error("Stream isn't active");
1103
+ }
1104
+ delete this.active[streamId];
1105
+ this.sendMessage({
1106
+ id: streamId,
1107
+ messageType: "stream-end"
1108
+ });
1109
+ });
1110
+ return stream;
1111
+ }
1112
+ createStream(streamId) {
1113
+ const stream = new SimpleStream((data) => {
1114
+ if (!(streamId in this.active)) {
1115
+ throw new Error("Stream isn't active");
1116
+ }
1117
+ this.sendMessage({
1118
+ id: streamId,
1119
+ messageType: "stream-data",
1120
+ value: data
1121
+ });
1122
+ }, () => {
1123
+ if (!(streamId in this.active)) {
1124
+ throw new Error("Stream isn't active");
1125
+ }
1126
+ delete this.active[streamId];
1127
+ this.sendMessage({
1128
+ id: streamId,
1129
+ messageType: "stream-end"
1130
+ });
1131
+ });
1132
+ return stream;
1133
+ }
1134
+ sendStream(path) {
1135
+ const id = (0, string_1.uniqueId)();
1136
+ const stream = this.createStreamRequest(id);
1137
+ stream.state = "setup";
1138
+ this.pending[id] = {
1139
+ stream,
1140
+ resolve: () => {
1141
+ stream.state = "active";
1142
+ stream._resolveOpen();
1143
+ },
1144
+ reject: (reason) => {
1145
+ stream.state = "failed";
1146
+ stream._rejectOpen(reason);
1147
+ }
1148
+ };
1149
+ Promise.resolve().then(() => this.sendMessage({ id, path, messageType: "stream-attempt" }));
1150
+ return stream;
1151
+ }
1152
+ onStream(path, handler) {
1153
+ if (path in this.listeners) {
1154
+ throw new Error(`Duplicate Path: ${path}`);
1155
+ }
1156
+ this.listeners[path] = handler;
1157
+ return () => {
1158
+ if (this.listeners[path] === handler)
1159
+ delete this.listeners[path];
1160
+ };
1161
+ }
1162
+ };
1163
+ exports.StreamHandler = StreamHandler;
1164
+ }
1165
+ });
1166
+
1167
+ // ../utils/dist/MessageBridge/index.js
1168
+ var require_MessageBridge = __commonJS({
1169
+ "../utils/dist/MessageBridge/index.js"(exports) {
1170
+ "use strict";
1171
+ Object.defineProperty(exports, "__esModule", { value: true });
1172
+ exports.BridgeRequest = exports.BridgedSession = exports.MessageBridge = void 0;
1173
+ var types_1 = require_types();
1174
+ var event_1 = require_event();
1175
+ var request_1 = require_request();
1176
+ var stream_1 = require_stream();
1177
+ var MessageBridge = class {
1178
+ constructor(sendMessage, debug = false) {
1179
+ __publicField(this, "sendMessage");
1180
+ __publicField(this, "debug");
1181
+ __publicField(this, "_destroyed", false);
1182
+ __publicField(this, "eventHandler");
1183
+ __publicField(this, "requestHandler");
1184
+ __publicField(this, "streamHandler");
1185
+ this.sendMessage = sendMessage;
1186
+ this.debug = debug;
1187
+ this.eventHandler = new event_1.EventHandler(sendMessage, debug);
1188
+ this.requestHandler = new request_1.RequestHandler(sendMessage, debug);
1189
+ this.streamHandler = new stream_1.StreamHandler(sendMessage, debug);
1190
+ }
1191
+ async handleMessage(messageRaw) {
1192
+ const message = (0, types_1.castMessage)(messageRaw);
1193
+ if (this.eventHandler.handleMessage(message))
1194
+ return;
1195
+ if (this.requestHandler.handleMessage(message))
1196
+ return;
1197
+ if (this.streamHandler.handleMessage(message))
1198
+ return;
1199
+ }
1200
+ destroy() {
1201
+ if (this._destroyed)
1202
+ return;
1203
+ this._destroyed = true;
1204
+ const error = new Error("Bridge destroyed");
1205
+ for (const pending of Object.values(this.requestHandler.pending)) {
1206
+ pending.reject(error);
1207
+ }
1208
+ this.requestHandler.pending = {};
1209
+ for (const pending of Object.values(this.streamHandler.pending)) {
1210
+ pending.reject(error);
1211
+ }
1212
+ this.streamHandler.pending = {};
1213
+ for (const stream of Object.values(this.streamHandler.active)) {
1214
+ stream.onEnd.emit();
1215
+ }
1216
+ this.streamHandler.active = {};
1217
+ }
1218
+ sendBridge(path) {
1219
+ if (this._destroyed)
1220
+ throw new Error("Bridge destroyed");
1221
+ return new BridgeRequest(this.sendStream(path), this.debug);
1222
+ }
1223
+ onBridge(path, handler) {
1224
+ if (this._destroyed)
1225
+ throw new Error("Bridge destroyed");
1226
+ return this.onStream(path, (stream) => {
1227
+ const session = new BridgedSession(stream, this.debug);
1228
+ return handler(session);
1229
+ });
1230
+ }
1231
+ sendStream(path) {
1232
+ if (this._destroyed)
1233
+ throw new Error("Bridge destroyed");
1234
+ return this.streamHandler.sendStream(path);
1235
+ }
1236
+ onStream(path, handler) {
1237
+ if (this._destroyed)
1238
+ throw new Error("Bridge destroyed");
1239
+ return this.streamHandler.onStream(path, handler);
1240
+ }
1241
+ sendRequest(path, body) {
1242
+ if (this._destroyed)
1243
+ throw new Error("Bridge destroyed");
1244
+ return this.requestHandler.sendRequest(path, body);
1245
+ }
1246
+ onRequest(path, handler) {
1247
+ if (this._destroyed)
1248
+ throw new Error("Bridge destroyed");
1249
+ return this.requestHandler.onRequest(path, handler);
1250
+ }
1251
+ sendEvent(path, body) {
1252
+ if (this._destroyed)
1253
+ throw new Error("Bridge destroyed");
1254
+ return this.eventHandler.sendEvent(path, body);
1255
+ }
1256
+ onEvent(path, handler) {
1257
+ if (this._destroyed)
1258
+ throw new Error("Bridge destroyed");
1259
+ return this.eventHandler.onEvent(path, handler);
1260
+ }
1261
+ };
1262
+ exports.MessageBridge = MessageBridge;
1263
+ var BridgedSession = class extends MessageBridge {
1264
+ constructor(stream, debug) {
1265
+ super((msg) => stream.sendData(msg), debug);
1266
+ __publicField(this, "_stream");
1267
+ this._stream = stream;
1268
+ stream.onData((data) => this.handleMessage(data));
1269
+ stream.onEnd(() => this.destroy());
1270
+ }
1271
+ get onEnd() {
1272
+ return this._stream.onEnd;
1273
+ }
1274
+ sendEnd() {
1275
+ this._stream.sendEnd();
1276
+ }
1277
+ };
1278
+ exports.BridgedSession = BridgedSession;
1279
+ var BridgeRequest = class extends BridgedSession {
1280
+ constructor(stream, debug) {
1281
+ super(stream, debug);
1282
+ __publicField(this, "_request");
1283
+ this._request = stream;
1284
+ stream.waitForOpen.catch(() => {
1285
+ this.destroy();
1286
+ });
1287
+ }
1288
+ get waitForOpen() {
1289
+ return this._request.waitForOpen;
1290
+ }
1291
+ };
1292
+ exports.BridgeRequest = BridgeRequest;
1293
+ }
1294
+ });
1295
+
1296
+ // ../utils/dist/Promise/withResolvers.js
1297
+ var require_withResolvers = __commonJS({
1298
+ "../utils/dist/Promise/withResolvers.js"(exports) {
1299
+ "use strict";
1300
+ Object.defineProperty(exports, "__esModule", { value: true });
1301
+ exports.promiseWithResolvers = promiseWithResolvers;
1302
+ function promiseWithResolvers() {
1303
+ let resolve;
1304
+ let reject;
1305
+ const promise = new Promise((res, rej) => {
1306
+ resolve = res;
1307
+ reject = rej;
1308
+ });
1309
+ return { promise, resolve, reject };
1310
+ }
1311
+ }
1312
+ });
1313
+
1314
+ // ../utils/dist/Promise/SimpleEvent.js
1315
+ var require_SimpleEvent2 = __commonJS({
1316
+ "../utils/dist/Promise/SimpleEvent.js"(exports) {
1317
+ "use strict";
1318
+ Object.defineProperty(exports, "__esModule", { value: true });
1319
+ exports.waitForEvent = waitForEvent;
1320
+ exports.waitForEventTimeout = waitForEventTimeout;
1321
+ var withResolvers_1 = require_withResolvers();
1322
+ function waitForEvent(event, abortSignal) {
1323
+ if (abortSignal == null ? void 0 : abortSignal.aborted) {
1324
+ return Promise.reject(new Error("Aborted"));
1325
+ }
1326
+ const { promise, resolve, reject } = (0, withResolvers_1.promiseWithResolvers)();
1327
+ const off = event(((...args) => {
1328
+ resolve(args);
1329
+ }));
1330
+ promise.finally(() => {
1331
+ off();
1332
+ });
1333
+ if (abortSignal) {
1334
+ abortSignal.addEventListener("abort", () => reject(new Error("Aborted")));
1335
+ }
1336
+ return promise;
1337
+ }
1338
+ function waitForEventTimeout(event, timeout, abortSignal) {
1339
+ if (abortSignal == null ? void 0 : abortSignal.aborted) {
1340
+ return Promise.reject(new Error("Aborted"));
1341
+ }
1342
+ const { promise, resolve, reject } = (0, withResolvers_1.promiseWithResolvers)();
1343
+ const eventTimedOut = () => resolve();
1344
+ let to = setTimeout(eventTimedOut, timeout);
1345
+ const off = event(((...args) => {
1346
+ clearTimeout(to);
1347
+ to = setTimeout(eventTimedOut, timeout);
1348
+ }));
1349
+ promise.finally(() => {
1350
+ off();
1351
+ clearTimeout(to);
1352
+ });
1353
+ if (abortSignal) {
1354
+ abortSignal.addEventListener("abort", () => reject(new Error("Aborted")));
1355
+ }
1356
+ return promise;
1357
+ }
1358
+ }
1359
+ });
1360
+
1361
+ // ../utils/dist/Promise/waitForBridgeEvent.js
1362
+ var require_waitForBridgeEvent = __commonJS({
1363
+ "../utils/dist/Promise/waitForBridgeEvent.js"(exports) {
1364
+ "use strict";
1365
+ Object.defineProperty(exports, "__esModule", { value: true });
1366
+ exports.waitForBridgeEvent = waitForBridgeEvent;
1367
+ var withResolvers_1 = require_withResolvers();
1368
+ function waitForBridgeEvent(bridge, event, timeout) {
1369
+ const { resolve, reject, promise } = (0, withResolvers_1.promiseWithResolvers)();
1370
+ const to = setTimeout(() => {
1371
+ reject(new Error("Timeout"));
1372
+ }, timeout);
1373
+ bridge.onEvent(event, (data) => {
1374
+ resolve(data);
1375
+ });
1376
+ promise.finally(() => {
1377
+ clearTimeout(to);
1378
+ }).catch(() => {
1379
+ });
1380
+ return promise;
1381
+ }
1382
+ }
1383
+ });
1384
+
1385
+ // ../utils/dist/Promise/index.js
1386
+ var require_Promise = __commonJS({
1387
+ "../utils/dist/Promise/index.js"(exports) {
1388
+ "use strict";
1389
+ var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
1390
+ if (k2 === void 0) k2 = k;
1391
+ var desc = Object.getOwnPropertyDescriptor(m, k);
1392
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
1393
+ desc = { enumerable: true, get: function() {
1394
+ return m[k];
1395
+ } };
1396
+ }
1397
+ Object.defineProperty(o, k2, desc);
1398
+ }) : (function(o, m, k, k2) {
1399
+ if (k2 === void 0) k2 = k;
1400
+ o[k2] = m[k];
1401
+ }));
1402
+ var __exportStar = exports && exports.__exportStar || function(m, exports2) {
1403
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p);
1404
+ };
1405
+ Object.defineProperty(exports, "__esModule", { value: true });
1406
+ exports.delay = delay;
1407
+ __exportStar(require_SimpleEvent2(), exports);
1408
+ __exportStar(require_waitForBridgeEvent(), exports);
1409
+ __exportStar(require_withResolvers(), exports);
1410
+ function delay(ms) {
1411
+ return new Promise((resolve) => setTimeout(resolve, ms));
1412
+ }
1413
+ }
1414
+ });
1415
+
1416
+ // ../../node_modules/.pnpm/path-to-regexp@8.4.2/node_modules/path-to-regexp/dist/index.js
1417
+ var require_dist = __commonJS({
1418
+ "../../node_modules/.pnpm/path-to-regexp@8.4.2/node_modules/path-to-regexp/dist/index.js"(exports) {
1419
+ "use strict";
1420
+ Object.defineProperty(exports, "__esModule", { value: true });
1421
+ exports.PathError = exports.TokenData = void 0;
1422
+ exports.parse = parse;
1423
+ exports.compile = compile;
1424
+ exports.match = match;
1425
+ exports.pathToRegexp = pathToRegexp;
1426
+ exports.stringify = stringify;
1427
+ var DEFAULT_DELIMITER = "/";
1428
+ var NOOP_VALUE = (value) => value;
1429
+ var ID_START = /^[$_\p{ID_Start}]$/u;
1430
+ var ID_CONTINUE = /^[$\u200c\u200d\p{ID_Continue}]$/u;
1431
+ var ID = /^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u;
1432
+ function escapeText(str) {
1433
+ return str.replace(/[{}()\[\]+?!:*\\]/g, "\\$&");
1434
+ }
1435
+ function escape(str) {
1436
+ return str.replace(/[.+*?^${}()[\]|/\\]/g, "\\$&");
1437
+ }
1438
+ var TokenData = class {
1439
+ constructor(tokens, originalPath) {
1440
+ this.tokens = tokens;
1441
+ this.originalPath = originalPath;
1442
+ }
1443
+ };
1444
+ exports.TokenData = TokenData;
1445
+ var PathError = class extends TypeError {
1446
+ constructor(message, originalPath) {
1447
+ let text = message;
1448
+ if (originalPath)
1449
+ text += `: ${originalPath}`;
1450
+ text += `; visit https://git.new/pathToRegexpError for info`;
1451
+ super(text);
1452
+ this.originalPath = originalPath;
1453
+ }
1454
+ };
1455
+ exports.PathError = PathError;
1456
+ function parse(str, options = {}) {
1457
+ const { encodePath = NOOP_VALUE } = options;
1458
+ const chars = [...str];
1459
+ let index = 0;
1460
+ function consumeUntil(end) {
1461
+ const output = [];
1462
+ let path = "";
1463
+ function writePath() {
1464
+ if (!path)
1465
+ return;
1466
+ output.push({
1467
+ type: "text",
1468
+ value: encodePath(path)
1469
+ });
1470
+ path = "";
1471
+ }
1472
+ while (index < chars.length) {
1473
+ const value = chars[index++];
1474
+ if (value === end) {
1475
+ writePath();
1476
+ return output;
1477
+ }
1478
+ if (value === "\\") {
1479
+ if (index === chars.length) {
1480
+ throw new PathError(`Unexpected end after \\ at index ${index}`, str);
1481
+ }
1482
+ path += chars[index++];
1483
+ continue;
1484
+ }
1485
+ if (value === ":" || value === "*") {
1486
+ const type = value === ":" ? "param" : "wildcard";
1487
+ let name = "";
1488
+ if (ID_START.test(chars[index])) {
1489
+ do {
1490
+ name += chars[index++];
1491
+ } while (ID_CONTINUE.test(chars[index]));
1492
+ } else if (chars[index] === '"') {
1493
+ let quoteStart = index;
1494
+ while (index < chars.length) {
1495
+ if (chars[++index] === '"') {
1496
+ index++;
1497
+ quoteStart = 0;
1498
+ break;
1499
+ }
1500
+ if (chars[index] === "\\")
1501
+ index++;
1502
+ name += chars[index];
1503
+ }
1504
+ if (quoteStart) {
1505
+ throw new PathError(`Unterminated quote at index ${quoteStart}`, str);
1506
+ }
1507
+ }
1508
+ if (!name) {
1509
+ throw new PathError(`Missing parameter name at index ${index}`, str);
1510
+ }
1511
+ writePath();
1512
+ output.push({ type, name });
1513
+ continue;
1514
+ }
1515
+ if (value === "{") {
1516
+ writePath();
1517
+ output.push({
1518
+ type: "group",
1519
+ tokens: consumeUntil("}")
1520
+ });
1521
+ continue;
1522
+ }
1523
+ if (value === "}" || value === "(" || value === ")" || value === "[" || value === "]" || value === "+" || value === "?" || value === "!") {
1524
+ throw new PathError(`Unexpected ${value} at index ${index - 1}`, str);
1525
+ }
1526
+ path += value;
1527
+ }
1528
+ if (end) {
1529
+ throw new PathError(`Unexpected end at index ${index}, expected ${end}`, str);
1530
+ }
1531
+ writePath();
1532
+ return output;
1533
+ }
1534
+ return new TokenData(consumeUntil(""), str);
1535
+ }
1536
+ function compile(path, options = {}) {
1537
+ const { encode = encodeURIComponent, delimiter = DEFAULT_DELIMITER } = options;
1538
+ const data = typeof path === "object" ? path : parse(path, options);
1539
+ const fn = tokensToFunction(data.tokens, delimiter, encode);
1540
+ return function path2(params = {}) {
1541
+ const missing = [];
1542
+ const path3 = fn(params, missing);
1543
+ if (missing.length) {
1544
+ throw new TypeError(`Missing parameters: ${missing.join(", ")}`);
1545
+ }
1546
+ return path3;
1547
+ };
1548
+ }
1549
+ function tokensToFunction(tokens, delimiter, encode) {
1550
+ const encoders = tokens.map((token) => tokenToFunction(token, delimiter, encode));
1551
+ return (data, missing) => {
1552
+ let result = "";
1553
+ for (const encoder of encoders) {
1554
+ result += encoder(data, missing);
1555
+ }
1556
+ return result;
1557
+ };
1558
+ }
1559
+ function tokenToFunction(token, delimiter, encode) {
1560
+ if (token.type === "text")
1561
+ return () => token.value;
1562
+ if (token.type === "group") {
1563
+ const fn = tokensToFunction(token.tokens, delimiter, encode);
1564
+ return (data, missing) => {
1565
+ const len = missing.length;
1566
+ const value = fn(data, missing);
1567
+ if (missing.length === len)
1568
+ return value;
1569
+ missing.length = len;
1570
+ return "";
1571
+ };
1572
+ }
1573
+ const encodeValue = encode || NOOP_VALUE;
1574
+ if (token.type === "wildcard" && encode !== false) {
1575
+ return (data, missing) => {
1576
+ const value = data[token.name];
1577
+ if (value == null) {
1578
+ missing.push(token.name);
1579
+ return "";
1580
+ }
1581
+ if (!Array.isArray(value) || value.length === 0) {
1582
+ throw new TypeError(`Expected "${token.name}" to be a non-empty array`);
1583
+ }
1584
+ let result = "";
1585
+ for (let i = 0; i < value.length; i++) {
1586
+ if (typeof value[i] !== "string") {
1587
+ throw new TypeError(`Expected "${token.name}/${i}" to be a string`);
1588
+ }
1589
+ if (i > 0)
1590
+ result += delimiter;
1591
+ result += encodeValue(value[i]);
1592
+ }
1593
+ return result;
1594
+ };
1595
+ }
1596
+ return (data, missing) => {
1597
+ const value = data[token.name];
1598
+ if (value == null) {
1599
+ missing.push(token.name);
1600
+ return "";
1601
+ }
1602
+ if (typeof value !== "string") {
1603
+ throw new TypeError(`Expected "${token.name}" to be a string`);
1604
+ }
1605
+ return encodeValue(value);
1606
+ };
1607
+ }
1608
+ function match(path, options = {}) {
1609
+ const { decode = decodeURIComponent, delimiter = DEFAULT_DELIMITER } = options;
1610
+ const { regexp, keys } = pathToRegexp(path, options);
1611
+ const decoders = keys.map((key) => {
1612
+ if (decode === false)
1613
+ return NOOP_VALUE;
1614
+ if (key.type === "param")
1615
+ return decode;
1616
+ return (value) => value.split(delimiter).map(decode);
1617
+ });
1618
+ return function match2(input) {
1619
+ const m = regexp.exec(input);
1620
+ if (!m)
1621
+ return false;
1622
+ const path2 = m[0];
1623
+ const params = /* @__PURE__ */ Object.create(null);
1624
+ for (let i = 1; i < m.length; i++) {
1625
+ if (m[i] === void 0)
1626
+ continue;
1627
+ const key = keys[i - 1];
1628
+ const decoder = decoders[i - 1];
1629
+ params[key.name] = decoder(m[i]);
1630
+ }
1631
+ return { path: path2, params };
1632
+ };
1633
+ }
1634
+ function pathToRegexp(path, options = {}) {
1635
+ const { delimiter = DEFAULT_DELIMITER, end = true, sensitive = false, trailing = true } = options;
1636
+ const keys = [];
1637
+ let source = "";
1638
+ let combinations = 0;
1639
+ function process(path2) {
1640
+ if (Array.isArray(path2)) {
1641
+ for (const p of path2)
1642
+ process(p);
1643
+ return;
1644
+ }
1645
+ const data = typeof path2 === "object" ? path2 : parse(path2, options);
1646
+ flatten(data.tokens, 0, [], (tokens) => {
1647
+ if (combinations >= 256) {
1648
+ throw new PathError("Too many path combinations", data.originalPath);
1649
+ }
1650
+ if (combinations > 0)
1651
+ source += "|";
1652
+ source += toRegExpSource(tokens, delimiter, keys, data.originalPath);
1653
+ combinations++;
1654
+ });
1655
+ }
1656
+ process(path);
1657
+ let pattern = `^(?:${source})`;
1658
+ if (trailing)
1659
+ pattern += "(?:" + escape(delimiter) + "$)?";
1660
+ pattern += end ? "$" : "(?=" + escape(delimiter) + "|$)";
1661
+ return { regexp: new RegExp(pattern, sensitive ? "" : "i"), keys };
1662
+ }
1663
+ function flatten(tokens, index, result, callback) {
1664
+ while (index < tokens.length) {
1665
+ const token = tokens[index++];
1666
+ if (token.type === "group") {
1667
+ const len = result.length;
1668
+ flatten(token.tokens, 0, result, (seq) => flatten(tokens, index, seq, callback));
1669
+ result.length = len;
1670
+ continue;
1671
+ }
1672
+ result.push(token);
1673
+ }
1674
+ callback(result);
1675
+ }
1676
+ function toRegExpSource(tokens, delimiter, keys, originalPath) {
1677
+ let result = "";
1678
+ let backtrack = "";
1679
+ let wildcardBacktrack = "";
1680
+ let prevCaptureType = 0;
1681
+ let hasSegmentCapture = 0;
1682
+ let index = 0;
1683
+ function hasInSegment(index2, type) {
1684
+ while (index2 < tokens.length) {
1685
+ const token = tokens[index2++];
1686
+ if (token.type === type)
1687
+ return true;
1688
+ if (token.type === "text") {
1689
+ if (token.value.includes(delimiter))
1690
+ break;
1691
+ }
1692
+ }
1693
+ return false;
1694
+ }
1695
+ function peekText(index2) {
1696
+ let result2 = "";
1697
+ while (index2 < tokens.length) {
1698
+ const token = tokens[index2++];
1699
+ if (token.type !== "text")
1700
+ break;
1701
+ result2 += token.value;
1702
+ }
1703
+ return result2;
1704
+ }
1705
+ while (index < tokens.length) {
1706
+ const token = tokens[index++];
1707
+ if (token.type === "text") {
1708
+ result += escape(token.value);
1709
+ backtrack += token.value;
1710
+ if (prevCaptureType === 2)
1711
+ wildcardBacktrack += token.value;
1712
+ if (token.value.includes(delimiter))
1713
+ hasSegmentCapture = 0;
1714
+ continue;
1715
+ }
1716
+ if (token.type === "param" || token.type === "wildcard") {
1717
+ if (prevCaptureType && !backtrack) {
1718
+ throw new PathError(`Missing text before "${token.name}" ${token.type}`, originalPath);
1719
+ }
1720
+ if (token.type === "param") {
1721
+ result += hasSegmentCapture & 2 ? `(${negate(delimiter, backtrack)}+)` : hasInSegment(index, "wildcard") ? `(${negate(delimiter, peekText(index))}+)` : hasSegmentCapture & 1 ? `(${negate(delimiter, backtrack)}+|${escape(backtrack)})` : `(${negate(delimiter, "")}+)`;
1722
+ hasSegmentCapture |= prevCaptureType = 1;
1723
+ } else {
1724
+ result += hasSegmentCapture & 2 ? `(${negate(backtrack, "")}+)` : wildcardBacktrack ? `(${negate(wildcardBacktrack, "")}+|${negate(delimiter, "")}+)` : `([^]+)`;
1725
+ wildcardBacktrack = "";
1726
+ hasSegmentCapture |= prevCaptureType = 2;
1727
+ }
1728
+ keys.push(token);
1729
+ backtrack = "";
1730
+ continue;
1731
+ }
1732
+ throw new TypeError(`Unknown token type: ${token.type}`);
1733
+ }
1734
+ return result;
1735
+ }
1736
+ function negate(a, b) {
1737
+ if (b.length > a.length)
1738
+ return negate(b, a);
1739
+ if (a === b)
1740
+ b = "";
1741
+ if (b.length > 1)
1742
+ return `(?:(?!${escape(a)}|${escape(b)})[^])`;
1743
+ if (a.length > 1)
1744
+ return `(?:(?!${escape(a)})[^${escape(b)}])`;
1745
+ return `[^${escape(a + b)}]`;
1746
+ }
1747
+ function stringifyTokens(tokens, index) {
1748
+ let value = "";
1749
+ while (index < tokens.length) {
1750
+ const token = tokens[index++];
1751
+ if (token.type === "text") {
1752
+ value += escapeText(token.value);
1753
+ continue;
1754
+ }
1755
+ if (token.type === "group") {
1756
+ value += "{" + stringifyTokens(token.tokens, 0) + "}";
1757
+ continue;
1758
+ }
1759
+ if (token.type === "param") {
1760
+ value += ":" + stringifyName(token.name, tokens[index]);
1761
+ continue;
1762
+ }
1763
+ if (token.type === "wildcard") {
1764
+ value += "*" + stringifyName(token.name, tokens[index]);
1765
+ continue;
1766
+ }
1767
+ throw new TypeError(`Unknown token type: ${token.type}`);
1768
+ }
1769
+ return value;
1770
+ }
1771
+ function stringify(data) {
1772
+ return stringifyTokens(data.tokens, 0);
1773
+ }
1774
+ function stringifyName(name, next) {
1775
+ if (!ID.test(name))
1776
+ return JSON.stringify(name);
1777
+ if ((next === null || next === void 0 ? void 0 : next.type) === "text" && ID_CONTINUE.test(next.value[0])) {
1778
+ return JSON.stringify(name);
1779
+ }
1780
+ return name;
1781
+ }
1782
+ }
1783
+ });
1784
+
1785
+ // ../utils/dist/async.js
1786
+ var require_async = __commonJS({
1787
+ "../utils/dist/async.js"(exports) {
1788
+ "use strict";
1789
+ Object.defineProperty(exports, "__esModule", { value: true });
1790
+ exports.eachSeries = eachSeries;
1791
+ function eachSeries(values, iterator, finishedCB) {
1792
+ let index = 0;
1793
+ function next(err) {
1794
+ if (err)
1795
+ return finishedCB(err);
1796
+ if (index >= values.length)
1797
+ return finishedCB();
1798
+ iterator(values[index++], next);
1799
+ }
1800
+ next();
1801
+ }
1802
+ }
1803
+ });
1804
+
1805
+ // ../utils/dist/Router/Generic.js
1806
+ var require_Generic = __commonJS({
1807
+ "../utils/dist/Router/Generic.js"(exports) {
1808
+ "use strict";
1809
+ Object.defineProperty(exports, "__esModule", { value: true });
1810
+ exports.GenericRouter = void 0;
1811
+ var path_to_regexp_1 = require_dist();
1812
+ var async_1 = require_async();
1813
+ var GenericRouter = class _GenericRouter {
1814
+ constructor(getRequestURL, getRequestMethod, config = {}) {
1815
+ __publicField(this, "getRequestURL");
1816
+ __publicField(this, "getRequestMethod");
1817
+ __publicField(this, "config");
1818
+ __publicField(this, "handlers", []);
1819
+ this.getRequestURL = getRequestURL;
1820
+ this.getRequestMethod = getRequestMethod;
1821
+ this.config = config;
1822
+ }
1823
+ use(path, ...callbacks) {
1824
+ return this.addHandler("*", path, true, ...callbacks);
1825
+ }
1826
+ all(path, ...callbacks) {
1827
+ return this.addHandler("*", path, false, ...callbacks);
1828
+ }
1829
+ addHandler(method, path, isPrefix, ...callbacks) {
1830
+ const matcher = (0, path_to_regexp_1.match)(path, { end: !isPrefix, decode: decodeURIComponent });
1831
+ const realCallbacks = callbacks.map((callback) => callback instanceof _GenericRouter ? (request, params, cb) => callback.handleRequest(request, cb, params) : callback);
1832
+ this.handlers.push({
1833
+ method,
1834
+ path,
1835
+ matcher,
1836
+ callbacks: realCallbacks,
1837
+ isPrefix
1838
+ });
1839
+ return this;
1840
+ }
1841
+ handleRequest(request, callback, parentRoute) {
1842
+ if (!parentRoute) {
1843
+ parentRoute = {
1844
+ url: new URL(this.getRequestURL(request).href, "ws://localhost:80"),
1845
+ params: {}
1846
+ };
1847
+ } else {
1848
+ parentRoute = {
1849
+ url: new URL(parentRoute.url.href),
1850
+ params: !this.config.mergeParams ? {} : { ...parentRoute.params }
1851
+ };
1852
+ }
1853
+ const pathname = parentRoute.url.pathname;
1854
+ if (pathname === null) {
1855
+ Promise.resolve(new Error("no pathname in request")).then(callback);
1856
+ return;
1857
+ }
1858
+ const method = this.getRequestMethod(request);
1859
+ (0, async_1.eachSeries)(this.handlers, (handler, nextHandler) => {
1860
+ if (handler.method !== method && handler.method !== "*")
1861
+ return nextHandler();
1862
+ const matchResult = handler.matcher(pathname);
1863
+ if (matchResult === false)
1864
+ return nextHandler();
1865
+ const { params, path: matchedPath } = matchResult;
1866
+ const nextInfo = {
1867
+ url: new URL(parentRoute.url.toString()),
1868
+ params: { ...parentRoute.params, ...params }
1869
+ };
1870
+ if (handler.isPrefix) {
1871
+ nextInfo.url.pathname = nextInfo.url.pathname.slice(matchedPath.length) || "/";
1872
+ }
1873
+ (0, async_1.eachSeries)(handler.callbacks, async (fn, nextFn) => {
1874
+ let callbacks = 0;
1875
+ let failed = false;
1876
+ try {
1877
+ await fn(request, nextInfo, (err) => {
1878
+ callbacks++;
1879
+ if (callbacks > 1) {
1880
+ console.error("Callback called multiple times", callbacks);
1881
+ console.trace();
1882
+ return;
1883
+ }
1884
+ if (failed) {
1885
+ console.error("Callback called after error", callbacks);
1886
+ console.trace();
1887
+ return;
1888
+ }
1889
+ nextFn(err);
1890
+ });
1891
+ } catch (e) {
1892
+ if (callbacks > 0) {
1893
+ console.error("Error occured after callback called");
1894
+ console.trace();
1895
+ return;
1896
+ }
1897
+ failed = true;
1898
+ nextFn(e);
1899
+ }
1900
+ }, nextHandler);
1901
+ }, callback);
1902
+ }
1903
+ };
1904
+ exports.GenericRouter = GenericRouter;
1905
+ }
1906
+ });
1907
+
1908
+ // ../utils/dist/Router/index.js
1909
+ var require_Router = __commonJS({
1910
+ "../utils/dist/Router/index.js"(exports) {
1911
+ "use strict";
1912
+ var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
1913
+ if (k2 === void 0) k2 = k;
1914
+ var desc = Object.getOwnPropertyDescriptor(m, k);
1915
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
1916
+ desc = { enumerable: true, get: function() {
1917
+ return m[k];
1918
+ } };
1919
+ }
1920
+ Object.defineProperty(o, k2, desc);
1921
+ }) : (function(o, m, k, k2) {
1922
+ if (k2 === void 0) k2 = k;
1923
+ o[k2] = m[k];
1924
+ }));
1925
+ var __exportStar = exports && exports.__exportStar || function(m, exports2) {
1926
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p);
1927
+ };
1928
+ Object.defineProperty(exports, "__esModule", { value: true });
1929
+ __exportStar(require_Generic(), exports);
1930
+ }
1931
+ });
1932
+
1933
+ // ../utils/dist/SimpleMessenger/types.js
1934
+ var require_types2 = __commonJS({
1935
+ "../utils/dist/SimpleMessenger/types.js"(exports) {
1936
+ "use strict";
1937
+ Object.defineProperty(exports, "__esModule", { value: true });
1938
+ }
1939
+ });
1940
+
1941
+ // ../utils/dist/SimpleMessenger/request.js
1942
+ var require_request2 = __commonJS({
1943
+ "../utils/dist/SimpleMessenger/request.js"(exports) {
1944
+ "use strict";
1945
+ Object.defineProperty(exports, "__esModule", { value: true });
1946
+ exports.handleRequest = handleRequest;
1947
+ exports.makeRequest = makeRequest;
1948
+ var string_1 = require_string();
1949
+ var withResolvers_1 = require_withResolvers();
1950
+ function castRequest(message) {
1951
+ if (typeof message !== "object")
1952
+ return false;
1953
+ if (Array.isArray(message) || message === null)
1954
+ return false;
1955
+ if (!("type" in message) || message.type !== "request")
1956
+ return false;
1957
+ if (!("path" in message) || typeof message.path !== "string")
1958
+ return false;
1959
+ if (!("id" in message) || typeof message.id !== "string")
1960
+ return false;
1961
+ if (!("data" in message))
1962
+ return false;
1963
+ return true;
1964
+ }
1965
+ function handleRequest(messager, path, handler) {
1966
+ messager.onMessage(async (message) => {
1967
+ if (!castRequest(message)) {
1968
+ return console.log("Ignoring Message, Invalid Request Message", message);
1969
+ }
1970
+ const { path: messagePath, id: messageId, data } = message;
1971
+ if (messagePath !== path) {
1972
+ return console.warn("Ignoring Message, different path");
1973
+ }
1974
+ ;
1975
+ try {
1976
+ const result = await handler(data);
1977
+ messager.sendMessage({
1978
+ type: "response",
1979
+ path,
1980
+ id: messageId,
1981
+ responseType: "result",
1982
+ data: result
1983
+ });
1984
+ } catch (e) {
1985
+ if (!(e instanceof Error)) {
1986
+ e = new Error("Unkown Error");
1987
+ }
1988
+ messager.sendMessage({
1989
+ type: "response",
1990
+ path,
1991
+ id: messageId,
1992
+ responseType: "error",
1993
+ data: { message: e.message }
1994
+ });
1995
+ }
1996
+ });
1997
+ }
1998
+ function castResponse(message) {
1999
+ if (typeof message !== "object")
2000
+ return false;
2001
+ if (Array.isArray(message) || message === null)
2002
+ return false;
2003
+ if (!("type" in message) || message.type !== "response")
2004
+ return false;
2005
+ if (!("path" in message) || typeof message.path !== "string")
2006
+ return false;
2007
+ if (!("id" in message) || typeof message.id !== "string")
2008
+ return false;
2009
+ if (!("responseType" in message) || typeof message.responseType !== "string" || ["result", "error"].includes(message.responseType))
2010
+ return false;
2011
+ if (!("data" in message))
2012
+ return false;
2013
+ return true;
2014
+ }
2015
+ function makeRequest(messager, path, data) {
2016
+ const originalId = (0, string_1.uniqueId)();
2017
+ const { resolve, reject, promise } = (0, withResolvers_1.promiseWithResolvers)();
2018
+ const off = messager.onMessage(async (message) => {
2019
+ try {
2020
+ if (!castResponse(message)) {
2021
+ return console.log("Ignoring Message, Invalid Response Message", message);
2022
+ }
2023
+ const { path: messagePath, id: messageId, responseType, data: dataUncasted } = message;
2024
+ if (messagePath !== path) {
2025
+ return console.warn("Ignoring Message, different path");
2026
+ }
2027
+ ;
2028
+ if (originalId !== messageId) {
2029
+ return console.warn("Ignoring Message, different ids");
2030
+ }
2031
+ const data2 = dataUncasted;
2032
+ if (responseType === "error") {
2033
+ throw new ResponseError("Response Failed", data2);
2034
+ }
2035
+ off();
2036
+ resolve(data2);
2037
+ } catch (e) {
2038
+ off();
2039
+ reject(e);
2040
+ }
2041
+ });
2042
+ messager.sendMessage({ type: "request", path, id: originalId, ...data ? { data } : {} });
2043
+ return promise;
2044
+ }
2045
+ var ResponseError = class extends Error {
2046
+ constructor(message, data) {
2047
+ super(message);
2048
+ __publicField(this, "data");
2049
+ this.data = data;
2050
+ }
2051
+ };
2052
+ }
2053
+ });
2054
+
2055
+ // ../utils/dist/SimpleMessenger/trigger.js
2056
+ var require_trigger = __commonJS({
2057
+ "../utils/dist/SimpleMessenger/trigger.js"(exports) {
2058
+ "use strict";
2059
+ Object.defineProperty(exports, "__esModule", { value: true });
2060
+ exports.handleTrigger = handleTrigger;
2061
+ exports.makeTrigger = makeTrigger;
2062
+ function castTrigger(message) {
2063
+ if (typeof message !== "object")
2064
+ return false;
2065
+ if (Array.isArray(message) || message === null)
2066
+ return false;
2067
+ if (!("type" in message) || message.type !== "trigger")
2068
+ return false;
2069
+ if (!("path" in message) || typeof message.path !== "string")
2070
+ return false;
2071
+ if (!("data" in message))
2072
+ return false;
2073
+ return true;
2074
+ }
2075
+ function handleTrigger(messager, path, handler) {
2076
+ messager.onMessage(async (message) => {
2077
+ if (!castTrigger(message)) {
2078
+ return console.log("Ignoring Message, Invalid Trigger Message", message);
2079
+ }
2080
+ const { path: messagePath, data } = message;
2081
+ if (messagePath !== path) {
2082
+ return console.warn("Ignoring Message, different path");
2083
+ }
2084
+ ;
2085
+ handler(data);
2086
+ });
2087
+ }
2088
+ function makeTrigger(messager, path, data) {
2089
+ return messager.sendMessage({
2090
+ type: "trigger",
2091
+ path,
2092
+ ...data ? { data } : {}
2093
+ });
2094
+ }
2095
+ }
2096
+ });
2097
+
2098
+ // ../utils/dist/SimpleMessenger/index.js
2099
+ var require_SimpleMessenger = __commonJS({
2100
+ "../utils/dist/SimpleMessenger/index.js"(exports) {
2101
+ "use strict";
2102
+ var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
2103
+ if (k2 === void 0) k2 = k;
2104
+ var desc = Object.getOwnPropertyDescriptor(m, k);
2105
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
2106
+ desc = { enumerable: true, get: function() {
2107
+ return m[k];
2108
+ } };
2109
+ }
2110
+ Object.defineProperty(o, k2, desc);
2111
+ }) : (function(o, m, k, k2) {
2112
+ if (k2 === void 0) k2 = k;
2113
+ o[k2] = m[k];
2114
+ }));
2115
+ var __exportStar = exports && exports.__exportStar || function(m, exports2) {
2116
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p);
2117
+ };
2118
+ Object.defineProperty(exports, "__esModule", { value: true });
2119
+ __exportStar(require_types2(), exports);
2120
+ __exportStar(require_request2(), exports);
2121
+ __exportStar(require_trigger(), exports);
2122
+ }
2123
+ });
2124
+
2125
+ // ../utils/dist/tree/index.js
2126
+ var require_tree = __commonJS({
2127
+ "../utils/dist/tree/index.js"(exports) {
2128
+ "use strict";
2129
+ Object.defineProperty(exports, "__esModule", { value: true });
2130
+ exports.treeHasCycle = treeHasCycle;
2131
+ exports.findAllCycles = findAllCycles;
2132
+ exports.getCyclesUsingKey = getCyclesUsingKey;
2133
+ var State;
2134
+ (function(State2) {
2135
+ State2[State2["Unchecked"] = 0] = "Unchecked";
2136
+ State2[State2["Checking"] = 1] = "Checking";
2137
+ State2[State2["NoProblems"] = 2] = "NoProblems";
2138
+ })(State || (State = {}));
2139
+ function treeHasCycle(keys, getRequires) {
2140
+ const checkState = /* @__PURE__ */ new Map();
2141
+ let activeError = null;
2142
+ for (const name of keys) {
2143
+ checkState.set(name, State.Unchecked);
2144
+ }
2145
+ function checkDependencies(name, depChain) {
2146
+ checkState.set(name, State.Checking);
2147
+ depChain.push(name);
2148
+ const requireList = getRequires(name);
2149
+ for (const required of requireList) {
2150
+ if (!checkState.has(required)) {
2151
+ activeError = `Missing required ${required} for ${name}`;
2152
+ return null;
2153
+ }
2154
+ const requiredState = checkState.get(required);
2155
+ if (requiredState === State.NoProblems)
2156
+ continue;
2157
+ if (requiredState === State.Checking) {
2158
+ depChain.push(required);
2159
+ return depChain;
2160
+ }
2161
+ const descendantChain = checkDependencies(required, depChain);
2162
+ if (descendantChain)
2163
+ return descendantChain;
2164
+ }
2165
+ checkState.set(name, State.NoProblems);
2166
+ depChain.pop();
2167
+ return null;
2168
+ }
2169
+ for (const name of keys) {
2170
+ if (checkState.get(name) === State.Unchecked) {
2171
+ const chain = checkDependencies(name, []);
2172
+ if (chain)
2173
+ return chain;
2174
+ }
2175
+ if (activeError)
2176
+ break;
2177
+ }
2178
+ if (activeError)
2179
+ throw new Error(activeError);
2180
+ return null;
2181
+ }
2182
+ var FindAllState;
2183
+ (function(FindAllState2) {
2184
+ FindAllState2[FindAllState2["Unchecked"] = 0] = "Unchecked";
2185
+ FindAllState2[FindAllState2["Checking"] = 1] = "Checking";
2186
+ FindAllState2[FindAllState2["Finished"] = 2] = "Finished";
2187
+ })(FindAllState || (FindAllState = {}));
2188
+ function findAllCycles(keys, getRequires) {
2189
+ const checkState = /* @__PURE__ */ new Map();
2190
+ const cycles = [];
2191
+ let activeError = null;
2192
+ for (const name of keys) {
2193
+ checkState.set(name, FindAllState.Unchecked);
2194
+ }
2195
+ function checkDependencies(name, depChain) {
2196
+ checkState.set(name, FindAllState.Checking);
2197
+ depChain.push(name);
2198
+ const requireList = getRequires(name);
2199
+ for (const required of requireList) {
2200
+ if (!checkState.has(required)) {
2201
+ activeError = `Missing required ${required} for ${name}`;
2202
+ return;
2203
+ }
2204
+ const requiredState = checkState.get(required);
2205
+ if (requiredState === FindAllState.Finished)
2206
+ continue;
2207
+ if (requiredState === FindAllState.Checking) {
2208
+ const newCycle = [...depChain, required];
2209
+ while (newCycle[0] !== newCycle.at(-1))
2210
+ newCycle.shift();
2211
+ cycles.push(newCycle);
2212
+ continue;
2213
+ }
2214
+ checkDependencies(required, depChain);
2215
+ if (activeError)
2216
+ return;
2217
+ }
2218
+ checkState.set(name, FindAllState.Finished);
2219
+ depChain.pop();
2220
+ return;
2221
+ }
2222
+ for (const name of keys) {
2223
+ if (checkState.get(name) === FindAllState.Unchecked) {
2224
+ checkDependencies(name, []);
2225
+ }
2226
+ if (activeError)
2227
+ break;
2228
+ }
2229
+ if (activeError)
2230
+ throw new Error(activeError);
2231
+ return cycles;
2232
+ }
2233
+ function getCyclesUsingKey(key, allCycles) {
2234
+ const pieceCycles = [];
2235
+ for (const cycleMutable of allCycles) {
2236
+ if (!cycleMutable.includes(key))
2237
+ continue;
2238
+ const cycle = [...cycleMutable];
2239
+ if (cycle[0] === key) {
2240
+ pieceCycles.push(cycle);
2241
+ continue;
2242
+ }
2243
+ cycle.shift();
2244
+ while (cycle[0] !== key) {
2245
+ const first = cycle.shift();
2246
+ if (!first)
2247
+ throw new Error("Empty cycle, shouldn't happen");
2248
+ cycle.push(first);
2249
+ }
2250
+ cycle.push(key);
2251
+ pieceCycles.push(cycle);
2252
+ }
2253
+ return pieceCycles;
2254
+ }
2255
+ }
2256
+ });
2257
+
2258
+ // ../utils/dist/fetch.js
2259
+ var require_fetch = __commonJS({
2260
+ "../utils/dist/fetch.js"(exports) {
2261
+ "use strict";
2262
+ Object.defineProperty(exports, "__esModule", { value: true });
2263
+ exports.fetchBody = fetchBody;
2264
+ exports.handleFetch = handleFetch;
2265
+ function fetchBody(method, body) {
2266
+ return {
2267
+ method,
2268
+ body: JSON.stringify(body),
2269
+ headers: {
2270
+ "Content-Type": "application/json"
2271
+ }
2272
+ };
2273
+ }
2274
+ async function handleFetch(fetched) {
2275
+ const response = await fetched;
2276
+ const json = await response.json();
2277
+ if (!response.ok) {
2278
+ throw new FetchError("Fetch Failed", response, json);
2279
+ }
2280
+ return json;
2281
+ }
2282
+ var FetchError = class extends Error {
2283
+ constructor(message, response, body) {
2284
+ super(message);
2285
+ __publicField(this, "response");
2286
+ __publicField(this, "body");
2287
+ __publicField(this, "url");
2288
+ __publicField(this, "statusCode");
2289
+ this.response = response;
2290
+ this.body = body;
2291
+ this.url = response.url;
2292
+ this.statusCode = response.status;
2293
+ }
2294
+ };
2295
+ }
2296
+ });
2297
+
2298
+ // ../utils/dist/index.js
2299
+ var require_dist2 = __commonJS({
2300
+ "../utils/dist/index.js"(exports) {
2301
+ var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
2302
+ if (k2 === void 0) k2 = k;
2303
+ var desc = Object.getOwnPropertyDescriptor(m, k);
2304
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
2305
+ desc = { enumerable: true, get: function() {
2306
+ return m[k];
2307
+ } };
2308
+ }
2309
+ Object.defineProperty(o, k2, desc);
2310
+ }) : (function(o, m, k, k2) {
2311
+ if (k2 === void 0) k2 = k;
2312
+ o[k2] = m[k];
2313
+ }));
2314
+ var __exportStar = exports && exports.__exportStar || function(m, exports2) {
2315
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports2, p)) __createBinding(exports2, m, p);
2316
+ };
2317
+ Object.defineProperty(exports, "__esModule", { value: true });
2318
+ __exportStar(require_array(), exports);
2319
+ __exportStar(require_buffer(), exports);
2320
+ __exportStar(require_crypto(), exports);
2321
+ __exportStar(require_MessageBridge(), exports);
2322
+ __exportStar(require_Promise(), exports);
2323
+ __exportStar(require_Router(), exports);
2324
+ __exportStar(require_SimpleMessenger(), exports);
2325
+ __exportStar(require_tree(), exports);
2326
+ __exportStar(require_async(), exports);
2327
+ __exportStar(require_fetch(), exports);
2328
+ __exportStar(require_JSON(), exports);
2329
+ __exportStar(require_SimpleEvent(), exports);
2330
+ __exportStar(require_string(), exports);
2331
+ }
2332
+ });
2333
+
2334
+ export {
2335
+ require_dist2 as require_dist
2336
+ };
2337
+ //# sourceMappingURL=chunk-IIDO6PKU.js.map