@stackone/transport 1.8.1 → 1.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +445 -91
- package/dist/index.d.ts +445 -91
- package/dist/index.js +212 -791
- package/dist/index.mjs +212 -753
- package/package.json +12 -11
package/dist/index.js
CHANGED
|
@@ -1,793 +1,214 @@
|
|
|
1
|
-
//#region rolldown:runtime
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
507: "Insufficient Storage",
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
*/
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
}
|
|
205
|
-
async get({ headers, url, queryParams, maxRedirects, cacheTTL, context }) {
|
|
206
|
-
return this.request({
|
|
207
|
-
url,
|
|
208
|
-
method: "get",
|
|
209
|
-
queryParams,
|
|
210
|
-
headers,
|
|
211
|
-
maxRedirects,
|
|
212
|
-
cacheTTL,
|
|
213
|
-
context
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
async post({ headers, url, maxRedirects, cacheTTL, context, payload }) {
|
|
217
|
-
return this.request({
|
|
218
|
-
url,
|
|
219
|
-
method: "post",
|
|
220
|
-
headers,
|
|
221
|
-
maxRedirects,
|
|
222
|
-
cacheTTL,
|
|
223
|
-
context,
|
|
224
|
-
payload
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
#normalizeHeaders(requestHeaders) {
|
|
228
|
-
if (!requestHeaders) return {};
|
|
229
|
-
const headers = {};
|
|
230
|
-
Object.keys(requestHeaders).forEach((key) => {
|
|
231
|
-
headers[key.toLowerCase()] = requestHeaders[key] || "";
|
|
232
|
-
});
|
|
233
|
-
return headers;
|
|
234
|
-
}
|
|
235
|
-
#extractAxiosHeaders(axiosHeaders) {
|
|
236
|
-
if (!axiosHeaders) return {};
|
|
237
|
-
const headers = {};
|
|
238
|
-
Object.keys(axiosHeaders).forEach((key) => {
|
|
239
|
-
headers[key] = axiosHeaders[key] || "";
|
|
240
|
-
});
|
|
241
|
-
return headers;
|
|
242
|
-
}
|
|
243
|
-
#isFormUrlEncoded(headers) {
|
|
244
|
-
return headers["content-type"] === "application/x-www-form-urlencoded";
|
|
245
|
-
}
|
|
246
|
-
#getSafePayload(payload, headers) {
|
|
247
|
-
if (!payload) return void 0;
|
|
248
|
-
if (this.#isFormUrlEncoded(headers)) return qs.default.stringify(payload);
|
|
249
|
-
return payload;
|
|
250
|
-
}
|
|
251
|
-
};
|
|
252
|
-
|
|
253
|
-
//#endregion
|
|
254
|
-
//#region src/httpClient/httpClientManager.ts
|
|
255
|
-
const buildHttpClientInstance = () => {
|
|
256
|
-
return new HttpClient();
|
|
257
|
-
};
|
|
258
|
-
var HttpClientManager = class {
|
|
259
|
-
static httpClientInstance = null;
|
|
260
|
-
static async getInstance({ getHttpClient = buildHttpClientInstance } = {}) {
|
|
261
|
-
this.httpClientInstance ??= getHttpClient();
|
|
262
|
-
return this.httpClientInstance;
|
|
263
|
-
}
|
|
264
|
-
static resetInstance() {
|
|
265
|
-
this.httpClientInstance = null;
|
|
266
|
-
}
|
|
267
|
-
};
|
|
268
|
-
|
|
269
|
-
//#endregion
|
|
270
|
-
//#region src/httpClient/types.ts
|
|
271
|
-
const HttpMethods = [
|
|
272
|
-
"get",
|
|
273
|
-
"post",
|
|
274
|
-
"put",
|
|
275
|
-
"delete",
|
|
276
|
-
"patch"
|
|
277
|
-
];
|
|
278
|
-
|
|
279
|
-
//#endregion
|
|
280
|
-
//#region src/lockManager/index.ts
|
|
281
|
-
/**
|
|
282
|
-
* Manages asynchronous locks based on string keys.
|
|
283
|
-
* Useful for ensuring sequential execution of async operations that share a resource.
|
|
284
|
-
*/
|
|
285
|
-
var LockManager = class {
|
|
286
|
-
locks;
|
|
287
|
-
constructor() {
|
|
288
|
-
this.locks = /* @__PURE__ */ new Map();
|
|
289
|
-
}
|
|
290
|
-
/**
|
|
291
|
-
* Acquires a lock for the given key and runs the provided asynchronous operation.
|
|
292
|
-
* Ensures the operation executes only after previous locks on the same key are released.
|
|
293
|
-
*
|
|
294
|
-
* @param key - A unique string representing the lock.
|
|
295
|
-
* @param operation - An async function to run while the lock is held.
|
|
296
|
-
* @returns The result of the operation.
|
|
297
|
-
*/
|
|
298
|
-
async withLock(key, operation) {
|
|
299
|
-
await this.lock(key);
|
|
300
|
-
try {
|
|
301
|
-
return operation();
|
|
302
|
-
} finally {
|
|
303
|
-
this.unlock(key);
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
/**
|
|
307
|
-
* Queues a lock for the given key. If the key is already locked,
|
|
308
|
-
* waits until the previous lock is released.
|
|
309
|
-
*
|
|
310
|
-
* @param key - A unique string representing the lock.
|
|
311
|
-
*/
|
|
312
|
-
async lock(key) {
|
|
313
|
-
let unlock;
|
|
314
|
-
const promise = new Promise((resolve) => unlock = resolve);
|
|
315
|
-
const hasLock = this.locks.has(key);
|
|
316
|
-
const currentLocks = this.locks.get(key);
|
|
317
|
-
if (hasLock && currentLocks) {
|
|
318
|
-
currentLocks.push({
|
|
319
|
-
lock: promise,
|
|
320
|
-
unlock
|
|
321
|
-
});
|
|
322
|
-
const previousLockIndex = currentLocks.length - 2;
|
|
323
|
-
await currentLocks[previousLockIndex].lock;
|
|
324
|
-
} else this.locks.set(key, [{
|
|
325
|
-
lock: promise,
|
|
326
|
-
unlock
|
|
327
|
-
}]);
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* Releases the lock for the given key. If more locks are queued, allows the next one to proceed.
|
|
331
|
-
*
|
|
332
|
-
* @param key - A unique string representing the lock.
|
|
333
|
-
*/
|
|
334
|
-
unlock(key) {
|
|
335
|
-
const hasLock = this.locks.has(key);
|
|
336
|
-
const currentLocks = this.locks.get(key);
|
|
337
|
-
if (hasLock && currentLocks && currentLocks.length > 0) {
|
|
338
|
-
const nextUnlock = currentLocks.shift()?.unlock;
|
|
339
|
-
nextUnlock?.();
|
|
340
|
-
}
|
|
341
|
-
if (this.queueLength(key) === 0) this.locks.delete(key);
|
|
342
|
-
}
|
|
343
|
-
/**
|
|
344
|
-
* Returns the number of queued locks for a given key.
|
|
345
|
-
*
|
|
346
|
-
* @param key - The lock key to check.
|
|
347
|
-
* @returns Number of locks in the queue, or undefined if none exist.
|
|
348
|
-
*/
|
|
349
|
-
queueLength(key) {
|
|
350
|
-
return this.locks.get(key)?.length;
|
|
351
|
-
}
|
|
352
|
-
/**
|
|
353
|
-
* Clears all locks and queued operations.
|
|
354
|
-
*/
|
|
355
|
-
close() {
|
|
356
|
-
this.locks.clear();
|
|
357
|
-
}
|
|
358
|
-
};
|
|
359
|
-
|
|
360
|
-
//#endregion
|
|
361
|
-
//#region src/memoryStore/constants.ts
|
|
362
|
-
const ONE_THOUSAND = 1e3;
|
|
363
|
-
const ONE_HUNDRED = 100;
|
|
364
|
-
const ONE_MINUTE_IN_SECONDS = 60;
|
|
365
|
-
const ONE_MINUTE_IN_MS = 6e4;
|
|
366
|
-
const DEFAULT_CACHE_TTL = ONE_MINUTE_IN_SECONDS;
|
|
367
|
-
const DEFAULT_EVICTION_FREQUENCY = ONE_MINUTE_IN_MS;
|
|
368
|
-
const DEFAULT_STALE_DATA_THRESHOLD = ONE_MINUTE_IN_MS * 10;
|
|
369
|
-
const DEFAULT_TRUNCATION_THRESHOLD = ONE_HUNDRED;
|
|
370
|
-
const DEFAULT_TRUNCATION_PERCENTAGE = 10;
|
|
371
|
-
let MemoryStoreErrorCodes = /* @__PURE__ */ function(MemoryStoreErrorCodes$1) {
|
|
372
|
-
MemoryStoreErrorCodes$1["MemoryStorePruneError"] = "MemoryStorePruneError";
|
|
373
|
-
return MemoryStoreErrorCodes$1;
|
|
374
|
-
}({});
|
|
375
|
-
|
|
376
|
-
//#endregion
|
|
377
|
-
//#region src/memoryStore/index.ts
|
|
378
|
-
var MemoryStore = class {
|
|
379
|
-
config;
|
|
380
|
-
instantiator;
|
|
381
|
-
dataStore;
|
|
382
|
-
lockManager;
|
|
383
|
-
expiryMap;
|
|
384
|
-
evictionFrequency;
|
|
385
|
-
staleDataThreshold;
|
|
386
|
-
truncateThreshold;
|
|
387
|
-
truncationPercentage;
|
|
388
|
-
logger;
|
|
389
|
-
typeGuard;
|
|
390
|
-
dispose;
|
|
391
|
-
evictionInterval;
|
|
392
|
-
lastAccessedAt = Date.now();
|
|
393
|
-
/**
|
|
394
|
-
* Constructs a new MemoryStore instance with optional configuration.
|
|
395
|
-
* @param config Configuration options for the store.
|
|
396
|
-
*/
|
|
397
|
-
constructor(config = {}) {
|
|
398
|
-
this.config = config;
|
|
399
|
-
this.initialize(config);
|
|
400
|
-
}
|
|
401
|
-
initialize(config = this.config) {
|
|
402
|
-
this.instantiator = config?.instantiator ?? "Unknown";
|
|
403
|
-
this.logger = config?.logger;
|
|
404
|
-
this.dataStore = config?.dataStore ?? /* @__PURE__ */ new Map();
|
|
405
|
-
this.lockManager = config?.lockManager ?? new LockManager();
|
|
406
|
-
this.expiryMap = config?.expiryMap ?? /* @__PURE__ */ new Map();
|
|
407
|
-
this.evictionFrequency = config?.evictionFrequency ?? DEFAULT_EVICTION_FREQUENCY;
|
|
408
|
-
this.staleDataThreshold = config?.staleDataThreshold ?? DEFAULT_STALE_DATA_THRESHOLD;
|
|
409
|
-
this.truncateThreshold = config?.truncateThreshold ?? DEFAULT_TRUNCATION_THRESHOLD;
|
|
410
|
-
this.truncationPercentage = config?.truncationPercentage ?? DEFAULT_TRUNCATION_PERCENTAGE;
|
|
411
|
-
this.typeGuard = config?.typeGuard;
|
|
412
|
-
this.dispose = config?.dispose;
|
|
413
|
-
this.startEvictionTask();
|
|
414
|
-
}
|
|
415
|
-
/**
|
|
416
|
-
* Retrieves data for a given key.
|
|
417
|
-
* @param key Cache key.
|
|
418
|
-
* @returns The cached data or `null` if not found.
|
|
419
|
-
*/
|
|
420
|
-
async getData(key) {
|
|
421
|
-
if (!this.isReady()) this.initialize();
|
|
422
|
-
this.updateLastAccessedAt();
|
|
423
|
-
return this.lockManager.withLock(key, async () => this.dataStore.get(key) ?? null);
|
|
424
|
-
}
|
|
425
|
-
/**
|
|
426
|
-
* Stores data in the cache.
|
|
427
|
-
* @param key The key to store the data under.
|
|
428
|
-
* @param value The value to store.
|
|
429
|
-
* @param cacheTTL Time-to-live in seconds (default: 60s).
|
|
430
|
-
* @returns `true` if data was stored, `false` if rejected by type guard.
|
|
431
|
-
*/
|
|
432
|
-
async setData({ key, value, cacheTTL = DEFAULT_CACHE_TTL }) {
|
|
433
|
-
if (!this.isReady()) this.initialize();
|
|
434
|
-
this.updateLastAccessedAt();
|
|
435
|
-
if ((0, __stackone_utils.notMissing)(this.typeGuard) && !this.typeGuard(value)) return false;
|
|
436
|
-
const cacheTTLInMs = cacheTTL * ONE_THOUSAND;
|
|
437
|
-
const expiryTime = Date.now() + cacheTTLInMs;
|
|
438
|
-
await this.lockManager.withLock(key, async () => {
|
|
439
|
-
if ((0, __stackone_utils.notMissing)(this.typeGuard) && this.typeGuard(value) || (0, __stackone_utils.isMissing)(this.typeGuard) && this.typeGuardBypass(value)) this.dataStore.set(key, value);
|
|
440
|
-
this.expiryMap.set(key, expiryTime);
|
|
441
|
-
});
|
|
442
|
-
return true;
|
|
443
|
-
}
|
|
444
|
-
typeGuardBypass(data) {
|
|
445
|
-
this.logger?.debug({
|
|
446
|
-
category: "MemoryStore",
|
|
447
|
-
message: `${this.instantiator} MemoryStore setting data without type guard - you should probably configure one`
|
|
448
|
-
});
|
|
449
|
-
return true;
|
|
450
|
-
}
|
|
451
|
-
/**
|
|
452
|
-
* Deletes a key from the cache.
|
|
453
|
-
* Calls the dispose callback if defined.
|
|
454
|
-
* @param key Cache key to delete.
|
|
455
|
-
* @returns `true` if deleted, `false` otherwise.
|
|
456
|
-
*/
|
|
457
|
-
async delete(key) {
|
|
458
|
-
if (!this.isReady()) this.initialize();
|
|
459
|
-
this.updateLastAccessedAt();
|
|
460
|
-
return this.lockManager.withLock(key, async () => {
|
|
461
|
-
if (this.dispose) {
|
|
462
|
-
const value = this.dataStore.get(key);
|
|
463
|
-
await this.dispose(key, value);
|
|
464
|
-
}
|
|
465
|
-
return this.dataStore.delete(key);
|
|
466
|
-
});
|
|
467
|
-
}
|
|
468
|
-
/**
|
|
469
|
-
* Prunes expired or stale keys from the cache.
|
|
470
|
-
* Also triggers truncation if store exceeds threshold.
|
|
471
|
-
* @returns Stats on pruning if any keys were removed.
|
|
472
|
-
*/
|
|
473
|
-
async pruneExpiredKeys() {
|
|
474
|
-
const dataStoreSize = this.dataStore.size;
|
|
475
|
-
const shouldTruncate = dataStoreSize >= this.truncateThreshold;
|
|
476
|
-
if (dataStoreSize <= 0) return;
|
|
477
|
-
const asyncDeletions = [];
|
|
478
|
-
let index = 0;
|
|
479
|
-
this.dataStore.forEach(async (value, key) => {
|
|
480
|
-
const currentTime = Date.now();
|
|
481
|
-
const expiresAt = this.expiryMap.get(key) ?? 0;
|
|
482
|
-
const truncateLimit = this.truncateThreshold * this.truncationPercentage / ONE_HUNDRED;
|
|
483
|
-
if (expiresAt <= currentTime || shouldTruncate && index >= 0 && index <= truncateLimit) asyncDeletions.push(this.lockManager.withLock(key, async () => {
|
|
484
|
-
if (this.dispose) await this.dispose(key, value);
|
|
485
|
-
return this.dataStore.delete(key);
|
|
486
|
-
}));
|
|
487
|
-
index++;
|
|
488
|
-
});
|
|
489
|
-
await Promise.all(asyncDeletions);
|
|
490
|
-
const prunedDataStoreSize = this.dataStore.size;
|
|
491
|
-
return {
|
|
492
|
-
dataStoreSize,
|
|
493
|
-
prunedDataStoreSize
|
|
494
|
-
};
|
|
495
|
-
}
|
|
496
|
-
startEvictionTask() {
|
|
497
|
-
if ((0, __stackone_utils.notMissing)(this.evictionInterval)) return;
|
|
498
|
-
const executePrune = async () => {
|
|
499
|
-
let result;
|
|
500
|
-
try {
|
|
501
|
-
const instanceDataExpiry = this.lastAccessedAt + this.staleDataThreshold;
|
|
502
|
-
const now = Date.now();
|
|
503
|
-
if (instanceDataExpiry < now) {
|
|
504
|
-
this.logger?.warning({
|
|
505
|
-
message: `Closing the ${this.instantiator}'s MemoryStore instance - received no requests for a while.`,
|
|
506
|
-
category: "MemoryStore"
|
|
507
|
-
});
|
|
508
|
-
this.close();
|
|
509
|
-
return;
|
|
510
|
-
}
|
|
511
|
-
result = await this.pruneExpiredKeys();
|
|
512
|
-
this.evictionInterval = setTimeout(executePrune, this.evictionFrequency);
|
|
513
|
-
} catch (error) {
|
|
514
|
-
if (error instanceof Error) this.logger?.error({
|
|
515
|
-
message: "Error during pruning expired keys:",
|
|
516
|
-
category: "MemoryStore",
|
|
517
|
-
error,
|
|
518
|
-
code: MemoryStoreErrorCodes.MemoryStorePruneError
|
|
519
|
-
});
|
|
520
|
-
this.evictionInterval = setTimeout(executePrune, this.evictionFrequency);
|
|
521
|
-
} finally {
|
|
522
|
-
if ((0, __stackone_utils.notMissing)(result?.dataStoreSize) && (0, __stackone_utils.notMissing)(result?.prunedDataStoreSize)) {
|
|
523
|
-
const { dataStoreSize, prunedDataStoreSize } = result;
|
|
524
|
-
const prunedKeysTotal = dataStoreSize - prunedDataStoreSize;
|
|
525
|
-
this.logger?.debug({
|
|
526
|
-
message: `Pruned ${prunedKeysTotal} expired keys, ${prunedDataStoreSize} remain, scheduling next prune.`,
|
|
527
|
-
category: "MemoryStore",
|
|
528
|
-
context: { instantiator: this.instantiator }
|
|
529
|
-
});
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
};
|
|
533
|
-
this.evictionInterval = setTimeout(executePrune, this.evictionFrequency);
|
|
534
|
-
}
|
|
535
|
-
stopEvictionTask() {
|
|
536
|
-
if (this.evictionInterval) {
|
|
537
|
-
clearTimeout(this.evictionInterval);
|
|
538
|
-
this.evictionInterval = void 0;
|
|
539
|
-
}
|
|
540
|
-
}
|
|
541
|
-
updateLastAccessedAt() {
|
|
542
|
-
this.lastAccessedAt = Date.now();
|
|
543
|
-
}
|
|
544
|
-
/**
|
|
545
|
-
* Checks if the store is initialized and ready for use.
|
|
546
|
-
* @returns `true` if ready, `false` otherwise.
|
|
547
|
-
*/
|
|
548
|
-
isReady() {
|
|
549
|
-
return (0, __stackone_utils.notMissing)(this.evictionInterval) && (0, __stackone_utils.notMissing)(this.dataStore) && (0, __stackone_utils.notMissing)(this.expiryMap) && (0, __stackone_utils.notMissing)(this.lockManager);
|
|
550
|
-
}
|
|
551
|
-
/**
|
|
552
|
-
* Stops eviction and clears all data.
|
|
553
|
-
*/
|
|
554
|
-
close() {
|
|
555
|
-
this.stopEvictionTask();
|
|
556
|
-
this.dataStore.clear();
|
|
557
|
-
this.expiryMap.clear();
|
|
558
|
-
this.lockManager.close();
|
|
559
|
-
}
|
|
560
|
-
/**
|
|
561
|
-
* Lists keys and their data, with pagination.
|
|
562
|
-
* @param partialKey Match keys containing this string.
|
|
563
|
-
* @param cursor Optional offset for pagination.
|
|
564
|
-
* @param limit Max number of items to return.
|
|
565
|
-
* @returns Matching items and next cursor (if any).
|
|
566
|
-
*/
|
|
567
|
-
async listData({ partialKey, cursor, limit }) {
|
|
568
|
-
const mapKeys = Array.from(this.dataStore.keys());
|
|
569
|
-
const matchingKeys = mapKeys.filter((key) => key.includes(partialKey));
|
|
570
|
-
const matches = [];
|
|
571
|
-
const parsedCursor = cursor ? parseInt(cursor, 10) : 0;
|
|
572
|
-
for (let i = parsedCursor; i < limit + parsedCursor; i++) {
|
|
573
|
-
const key = matchingKeys[i];
|
|
574
|
-
if (!key) break;
|
|
575
|
-
const data = await this.getData(key);
|
|
576
|
-
if (data) matches.push(data);
|
|
577
|
-
if (matches.length >= limit) break;
|
|
578
|
-
}
|
|
579
|
-
return {
|
|
580
|
-
items: matches,
|
|
581
|
-
cursor: matches.length < limit ? void 0 : (parsedCursor + limit).toString()
|
|
582
|
-
};
|
|
583
|
-
}
|
|
584
|
-
};
|
|
585
|
-
|
|
586
|
-
//#endregion
|
|
587
|
-
//#region src/instanceManager/constants.ts
|
|
588
|
-
const DEFAULT_INSTANCE_TTL = 300;
|
|
589
|
-
|
|
590
|
-
//#endregion
|
|
591
|
-
//#region src/instanceManager/index.ts
|
|
592
|
-
/**
|
|
593
|
-
* Singleton cache manager that wraps a `MemoryStore` and ensures only one instance is used across the app.
|
|
594
|
-
* Primarily used for simple key-value caching with TTL and optional logger support.
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,a)=>(a=n==null?{}:e(i(n)),s(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const l=c(require(`@stackone/utils`)),u=c(require(`redis`)),d=c(require(`axios`)),f=c(require(`node:http`)),p=c(require(`crypto`)),m=c(require(`node:timers`)),h=c(require(`jsonpath`)),g=c(require(`qs`)),_=c(require(`@stackone/expressions`)),v=e=>{switch(e.type){case`basic`:return y(e);case`bearer`:return b(e);default:throw Error(`Invalid authentication type`)}},y=({username:e=``,password:t=``,encoding:n=`base64`})=>{let r=n,i=Buffer.from(`${e}:${t}`).toString(r);return{authorization:`Basic ${i}`}},b=({token:e,includeBearer:t=!0})=>({authorization:`${t?`Bearer `:``}${e}`});var x=class{locks;constructor(){this.locks=new Map}async withLock(e,t){await this.lock(e);try{return t()}finally{this.unlock(e)}}async lock(e){let t,n=new Promise(e=>t=e),r=this.locks.has(e),i=this.locks.get(e);if(r&&i){i.push({lock:n,unlock:t});let e=i.length-2;await i[e].lock}else this.locks.set(e,[{lock:n,unlock:t}])}unlock(e){let t=this.locks.has(e),n=this.locks.get(e);if(t&&n&&n.length>0){let e=n.shift()?.unlock;e?.()}this.queueLength(e)===0&&this.locks.delete(e)}queueLength(e){return this.locks.get(e)?.length}close(){this.locks.clear()}};const S=1e3,ee=100,te=60,ne=6e4,C=te,w=ne,re=ne*10,ie=ee,ae=10;let T=function(e){return e.MemoryStorePruneError=`MemoryStorePruneError`,e}({});var E=class{config;instantiator;dataStore;lockManager;expiryMap;evictionFrequency;staleDataThreshold;truncateThreshold;truncationPercentage;logger;typeGuard;dispose;evictionInterval;lastAccessedAt=Date.now();constructor(e={}){this.config=e,this.initialize(e)}initialize(e=this.config){this.instantiator=e?.instantiator??`Unknown`,this.logger=e?.logger,this.dataStore=e?.dataStore??new Map,this.lockManager=e?.lockManager??new x,this.expiryMap=e?.expiryMap??new Map,this.evictionFrequency=e?.evictionFrequency??w,this.staleDataThreshold=e?.staleDataThreshold??re,this.truncateThreshold=e?.truncateThreshold??ie,this.truncationPercentage=e?.truncationPercentage??ae,this.typeGuard=e?.typeGuard,this.dispose=e?.dispose,this.startEvictionTask()}async getData(e){return this.isReady()||this.initialize(),this.updateLastAccessedAt(),this.lockManager.withLock(e,async()=>this.dataStore.get(e)??null)}async setData({key:e,value:t,cacheTTL:n=C}){if(this.isReady()||this.initialize(),this.updateLastAccessedAt(),(0,l.notMissing)(this.typeGuard)&&!this.typeGuard(t))return!1;let r=n*S,i=Date.now()+r;return await this.lockManager.withLock(e,async()=>{((0,l.notMissing)(this.typeGuard)&&this.typeGuard(t)||(0,l.isMissing)(this.typeGuard)&&this.typeGuardBypass(t))&&this.dataStore.set(e,t),this.expiryMap.set(e,i)}),!0}typeGuardBypass(e){return this.logger?.debug({category:`MemoryStore`,message:`${this.instantiator} MemoryStore setting data without type guard - you should probably configure one`}),!0}async delete(e){return this.isReady()||this.initialize(),this.updateLastAccessedAt(),this.lockManager.withLock(e,async()=>{if(this.dispose){let t=this.dataStore.get(e);await this.dispose(e,t)}return this.dataStore.delete(e)})}async pruneExpiredKeys(){let e=this.dataStore.size,t=e>=this.truncateThreshold;if(e<=0)return;let n=[],r=0;this.dataStore.forEach(async(e,i)=>{let a=Date.now(),o=this.expiryMap.get(i)??0,s=this.truncateThreshold*this.truncationPercentage/ee;(o<=a||t&&r>=0&&r<=s)&&n.push(this.lockManager.withLock(i,async()=>(this.dispose&&await this.dispose(i,e),this.dataStore.delete(i)))),r++}),await Promise.all(n);let i=this.dataStore.size;return{dataStoreSize:e,prunedDataStoreSize:i}}startEvictionTask(){if((0,l.notMissing)(this.evictionInterval))return;let e=async()=>{let t;try{let n=this.lastAccessedAt+this.staleDataThreshold,r=Date.now();if(n<r){this.logger?.warning({message:`Closing the ${this.instantiator}'s MemoryStore instance - received no requests for a while.`,category:`MemoryStore`}),this.close();return}t=await this.pruneExpiredKeys(),this.evictionInterval=setTimeout(e,this.evictionFrequency)}catch(t){t instanceof Error&&this.logger?.error({message:`Error during pruning expired keys:`,category:`MemoryStore`,error:t,code:T.MemoryStorePruneError}),this.evictionInterval=setTimeout(e,this.evictionFrequency)}finally{if((0,l.notMissing)(t?.dataStoreSize)&&(0,l.notMissing)(t?.prunedDataStoreSize)){let{dataStoreSize:e,prunedDataStoreSize:n}=t,r=e-n;this.logger?.debug({message:`Pruned ${r} expired keys, ${n} remain, scheduling next prune.`,category:`MemoryStore`,context:{instantiator:this.instantiator}})}}};this.evictionInterval=setTimeout(e,this.evictionFrequency)}stopEvictionTask(){this.evictionInterval&&(clearTimeout(this.evictionInterval),this.evictionInterval=void 0)}updateLastAccessedAt(){this.lastAccessedAt=Date.now()}isReady(){return(0,l.notMissing)(this.evictionInterval)&&(0,l.notMissing)(this.dataStore)&&(0,l.notMissing)(this.expiryMap)&&(0,l.notMissing)(this.lockManager)}close(){this.stopEvictionTask(),this.dataStore.clear(),this.expiryMap.clear(),this.lockManager.close()}async listData({partialKey:e,cursor:t,limit:n}){let r=Array.from(this.dataStore.keys()),i=r.filter(t=>t.includes(e)),a=[],o=t?parseInt(t,10):0;for(let e=o;e<n+o;e++){let t=i[e];if(!t)break;let r=await this.getData(t);if(r&&a.push(r),a.length>=n)break}return{items:a,cursor:a.length<n?void 0:(o+n).toString()}}};const oe=1e3,se=6e4;let ce=function(e){return e.EventClientResolveError=`EventClientResolveError`,e}({});var le=class{executorMethodStore=null;promiseStore=null;logger;eventClientConfig=null;executorMethodStoreConfig=null;pendingPromiseStoreConfig=null;constructor(e,t,n){this.eventClientConfig=e,this.executorMethodStoreConfig=t,this.pendingPromiseStoreConfig=n;let r=e?.instantiator?`${e?.instantiator}(${this.constructor.name})`:this.constructor.name,i={logger:this.logger,dispose:this.defaultExecutorMethodDispose,typeGuard:this.defaultExecutorMethodTypeGuard,...this.executorMethodStoreConfig??{},instantiator:r},a={logger:this.logger,dispose:this.defaultPendingPromiseDispose,typeGuard:this.defaultPendingPromiseTypeGuard,...this.pendingPromiseStoreConfig??{},instantiator:r};this.executorMethodStore=new E(i),this.promiseStore=new E(a)}async setPendingEvent(e,t){let n={resolve:void 0,reject:void 0},r=new Promise((e,t)=>{n.resolve=e,n.reject=t}),i=t/oe;await this.executorMethodStore?.setData({key:e,value:n,cacheTTL:i}),await this.promiseStore?.setData({key:e,value:r,cacheTTL:i})}async waitForEvent(e,t){let n=await this.promiseStore?.getData(e);return(0,l.notMissing)(n)?n:(await this.setPendingEvent(e,t),this.getPendingEvent(e))}async getPendingEvent(e){return this.promiseStore?.getData(e)??null}async deleteEvent(e){return(await Promise.all([this.promiseStore?.delete(e),this.executorMethodStore?.delete(e)])).every(Boolean)}async resolveEvent(e,t){try{let n=await this.executorMethodStore?.getData(e);(0,l.isMissing)(n)&&(await this.setPendingEvent(e,this.eventClientConfig?.defaultTimeoutMS??se),n=await this.executorMethodStore?.getData(e)),n?.resolve?.(t)}catch(t){t instanceof Error&&this.logger.error({message:`Error handling event for key ${e}: ${t.message}`,category:this.constructor.name,context:{eventKey:e},error:t,code:ce.EventClientResolveError})}}async defaultExecutorMethodDispose(e,t){(0,l.notMissing)(t?.resolve)?t.resolve(this.eventClientConfig?.timeoutResolveValue):(0,l.notMissing)(t?.reject)&&t.reject(Error(`Event key: ${e} was not resolved or the event was disposed`))}defaultExecutorMethodTypeGuard(e){return(0,l.isObject)(e)&&e.hasOwnProperty(`resolve`)&&e.hasOwnProperty(`reject`)}async defaultPendingPromiseDispose(e,t){t instanceof Promise&&t?.finally(()=>{})}defaultPendingPromiseTypeGuard(e){return e instanceof Promise}};let D=function(e){return e.RedisClientError=`RedisClientError`,e.RedisClientCommandError=`RedisClientCommandError`,e.RedisClientDeleteError=`RedisClientDeleteError`,e.RedisClientInvalidTTL=`RedisClientInvalidTTL`,e.RedisClientListError=`RedisClientListError`,e.RedisClientNotInitialized=`RedisClientNotInitialized`,e.RedisClientPublishError=`RedisClientPublishError`,e.RedisClientReadError=`RedisClientReadError`,e.RedisClientRedisNotReady=`RedisClientRedisNotReady`,e.RedisClientScriptError=`RedisClientScriptError`,e.RedisClientScriptExecuteError=`RedisClientScriptExecuteError`,e.RedisClientScriptLoadError=`RedisClientScriptLoadError`,e.RedisClientSubscribeError=`RedisClientSubscribeError`,e.RedisClientUnsubscribeError=`RedisClientUnsubscribeError`,e.RedisClientWriteError=`RedisClientWriteError`,e}({});const ue=async(e,t)=>{try{let n=await de.build(e,t);return n??void 0}catch(e){let n=e;t?.error({message:`Error building Cache Manager`,error:n,code:D.RedisClientError,category:`buildRedisClientInstance`});return}};var de=class e{#redisClient;#logger;static async build({getRedisClient:t=u.createClient,host:n,port:r,tls:i,reconnect:a=!0,database:o},s){let c=new e;c.#logger=s;try{c.#redisClient=t({socket:{reconnectStrategy:a?e=>Math.min(e*20,5e3):!1,host:n,port:r,tls:i},database:o,disableOfflineQueue:!0});let s=pe(e.name,c.#logger);return fe(c.#redisClient,s),await c.#redisClient.connect(),c}catch(t){let n=t;return c.#logger?.error({message:`Error building Cache Manager.`,error:n,code:D.RedisClientError,category:e.name}),null}}#parseData(e){try{return JSON.parse(e)}catch{return e}}async getData(t){if(!this.#isRedisClientAvailable())return null;try{let e=await this.#redisClient.get(t);if(!e)return null;let n=this.#parseData(e);return(0,l.isString)(n)?e:n}catch(t){let n=t;return this.#logger?.error({message:`Error getting data`,error:n,code:D.RedisClientReadError,category:e.name}),null}}async setData({key:t,value:n,cacheTTL:r,groupKey:i}){if(!this.#isRedisClientAvailable())return!1;try{let e=(0,l.isString)(n)?n:JSON.stringify(n);return await this.#redisClient.set(t,e,{EX:r}),(0,l.notMissing)(i)&&await this.#redisClient.sAdd(i,[t]),!0}catch(t){let n=t;return this.#logger?.error({message:`Error setting data`,error:n,code:D.RedisClientWriteError,category:e.name}),!1}}async executeScript({sha1:t,keys:n,args:r}){if(!this.#isRedisClientAvailable())return null;try{return await this.#redisClient.evalSha(t,{keys:n,arguments:r})}catch(t){let n=t;return this.#logger?.error({message:`Error executing script`,error:n,code:D.RedisClientScriptExecuteError,category:e.name}),null}}async loadScript(t){if(!this.#isRedisClientAvailable())return null;try{return await this.#redisClient.scriptLoad(t)}catch(t){let n=t;return this.#logger?.error({message:`Error loading script`,error:n,code:D.RedisClientScriptLoadError,category:e.name}),null}}async#executeCounterCommand(t,n,r){if(!this.#isRedisClientAvailable())return null;if(!Number.isFinite(r)||r<=0)return this.#logger?.error({message:`Invalid cacheTTL parameter`,category:e.name,code:D.RedisClientInvalidTTL}),null;try{let e=[{args:[t,n]},{args:[`expire`,n,r.toString()]}],i=await this.#redisClient.multiExecutor(e),a=i?.[0];return typeof a==`number`?a:null}catch(n){let r=n;return this.#logger?.error({message:`Error executing ${t} operation`,error:r,code:D.RedisClientCommandError,category:e.name}),null}}async increment(e,t){return this.#executeCounterCommand(`incr`,e,t)}async decrement(e,t){return this.#executeCounterCommand(`decr`,e,t)}async subscribe(t,n){if(!this.#isRedisClientAvailable())return!1;try{return await this.#redisClient.pSubscribe(t,n),!0}catch(n){let r=n;return this.#logger?.error({message:`Error subscribing to ${t}`,error:r,code:D.RedisClientSubscribeError,category:e.name}),!1}}async unsubscribe(t){if(!this.#isRedisClientAvailable())return!1;try{return await this.#redisClient.pUnsubscribe(t),!0}catch(n){let r=n;return this.#logger?.error({message:`Error unsubscribing from ${t}`,error:r,code:D.RedisClientUnsubscribeError,category:e.name}),!1}}async publish(t,n){if(!this.#isRedisClientAvailable())return null;try{let r=await this.#redisClient.publish(t,n);return r===0&&this.#logger?.debug({message:`No subscribers found for channel ${t}`,category:e.name}),r}catch(n){let r=n;return this.#logger?.error({message:`Error publishing to ${t}`,error:r,code:D.RedisClientPublishError,category:e.name}),null}}getClient(){return this.#isRedisClientAvailable()?this.#redisClient:null}#isRedisClientAvailable(){let t=this.#redisClient.isReady&&this.#redisClient.isOpen;return t||this.#logger?.error({message:`Redis Client is not ready.`,category:e.name,code:D.RedisClientRedisNotReady}),t}async listData({partialKey:t,limit:n,cursor:r}){try{let e=r?parseInt(r,10):0,i=await this.#redisClient.sScan(t,e,{COUNT:n}),a=[];for(let e of i.members){let t=await this.getData(e);(0,l.notMissing)(t)&&a.push(t)}return{items:a,cursor:i.cursor>0?i.cursor.toString():void 0}}catch(t){let n=t;return this.#logger?.error({message:`Error listing data`,error:n,code:D.RedisClientListError,category:e.name}),{items:null}}}async deleteData(t){try{if(!this.#isRedisClientAvailable())return!1;let n=await this.#redisClient.del(t);return n===0&&this.#logger?.debug({message:`No keys deleted for ${t}`,category:e.name}),n>0}catch(t){let n=t;return this.#logger?.error({message:`Error deleting data`,error:n,code:D.RedisClientDeleteError,category:e.name}),!1}}};const fe=(e,t)=>{t.forEach(({eventName:t,listener:n})=>{e.on(t,n)})},pe=(e=`RedisClient`,t)=>[{eventName:`error`,listener:n=>{t?.error({message:`Redis client error ${n.message}`,error:n,code:D.RedisClientError,category:e})}},{eventName:`ready`,listener:()=>{t?.info({message:`Redis client ready`,category:e})}},{eventName:`connect`,listener:()=>{t?.info({message:`Redis client connected`,category:e})}},{eventName:`reconnecting`,listener:()=>{t?.info({message:`Redis client reconnecting`,category:e})}},{eventName:`end`,listener:()=>{t?.info({message:`Redis client disconnected`,category:e})}}];let me=function(e){return e.ScriptManagerExecutionError=`ScriptManagerExecutionError`,e.ScriptManagerLoadingError=`ScriptManagerLoadingError`,e}({});var he=class{cacheClient=null;scriptMap=new Map;logger;scripts;redisClientConfig;constructor(e){this.scripts=e}async initialize({redisClientConfig:e,logger:t,scriptMap:n},...r){this.redisClientConfig=e,this.logger=t,this.cacheClient=await ue(this.redisClientConfig,this.logger)??null,await this.loadScripts(this.scripts,n),await this.additionalInitialization(...r)}async additionalInitialization(...e){}async loadScripts(e,t){(0,l.notMissing)(t)&&(this.scriptMap=t);for(let[t,n]of Object.entries(e)){let e=await this.cacheClient?.loadScript?.(n);(0,l.notMissing)(e)?this.scriptMap?.set(t,e):this.logger?.error({message:`Error loading script ${t}`,category:this.constructor.name,code:me.ScriptManagerLoadingError})}}async executeScript(e,t,n){try{await this.isReady()||await this.initialize({redisClientConfig:this.redisClientConfig,logger:this.logger,scriptMap:this.scriptMap});let r=this.scriptMap?.get(e);if((0,l.isMissing)(r))throw Error(`Script for ${e} not found`);return await this.cacheClient?.executeScript?.({sha1:r,keys:t,args:n})??null}catch(r){throw r instanceof Error&&this.logger?.error({message:`Error executing script ${e}: ${r.message}`,category:this.constructor.name,context:{keys:t,args:n},error:r,code:me.ScriptManagerExecutionError}),r}}async isReady(){return(0,l.notMissing)(this.cacheClient)}},ge=class e{options={getCacheClient:ue};subscriptionMap=null;subscriptionClient=null;logger;constructor(e){this.options={...this.options,...e}}async initialize(t=this.options){let{config:n,getCacheClient:r,logger:i}=t;if(this.logger=i,this.subscriptionMap=new E({instantiator:`${t?.instantiator}(${this.constructor.name})`,evictionFrequency:t?.subscriptionTTL,staleDataThreshold:t?.staleSubscriptionsThreshold,truncateThreshold:t?.truncateThreshold,truncationPercentage:t?.truncationPercentage,typeGuard:e=>typeof e==`string`,dispose:async e=>{await this.subscriptionClient?.unsubscribe?.(e)}}),(0,l.notMissing)(n))this.subscriptionClient=await r?.(n,this.logger)??null,this.logger?.info({message:`${e.name} initialized for ${t.instantiator}.`,category:e.name});else throw Error(`SubscriptionManager requires a Redis client configuration.`)}async subscribe(e,t){this.isReady()||await this.initialize(this.options);let n=await this.subscriptionMap?.getData(e),r=(0,l.getContentHash)(t.toString());return await this.subscriptionMap?.setData({key:e,value:r}),n===r?!0:await this.subscriptionClient?.subscribe?.(e,t)??!1}async unsubscribe(e){return this.isReady()||await this.initialize(this.options),this.subscriptionClient?.unsubscribe?.(e)??!1}isReady(){return(0,l.notMissing)(this.subscriptionClient)&&(0,l.notMissing)(this.subscriptionMap)}close(){this.subscriptionMap?.close(),this.subscriptionMap=null,this.subscriptionClient=null}};const _e=6e4,ve=15e3,ye=!1,be=6e4,xe=15e3,Se=1e4,Ce=1;let we=function(e){return e.QueueManagerInitializationError=`QueueManagerInitializationError`,e.QueueManagerJoinAndWaitTurnError=`QueueManagerJoinAndWaitTurnError`,e.QueueManagerLengthError=`QueueManagerLengthError`,e.QueueManagerPopError=`QueueManagerPopError`,e}({}),Te=function(e){return e.rPush=`rPush`,e.lPush=`lPush`,e.lPop=`lPop`,e.llen=`llen`,e}({});const Ee={[Te.rPush]:`
|
|
2
|
+
local queueLength = redis.call('RPUSH', KEYS[1], ARGV[1])
|
|
3
|
+
|
|
4
|
+
redis.call('PEXPIRE', KEYS[1], ARGV[2])
|
|
5
|
+
|
|
6
|
+
return queueLength
|
|
7
|
+
`,[Te.lPush]:`
|
|
8
|
+
local queueLength = redis.call('LPUSH', KEYS[1], ARGV[1])
|
|
9
|
+
|
|
10
|
+
redis.call('PEXPIRE', KEYS[1], ARGV[2])
|
|
11
|
+
|
|
12
|
+
return queueLength
|
|
13
|
+
`,[Te.lPop]:`
|
|
14
|
+
local queueKey = KEYS[1]
|
|
15
|
+
|
|
16
|
+
return redis.call("lpop", queueKey)
|
|
17
|
+
`,[Te.llen]:`return redis.call("llen", KEYS[1])`};var De=class e extends he{static instance=null;static asyncInstanceInit=null;static logger;static config;logger=void 0;subscriptionManager=null;eventClient=null;static async getInstance(t,n,r){if((0,l.notMissing)(e.instance))return e.instance;e.config=(0,l.notMissing)(t)?t:e.config;let i=e.config;if((0,l.isMissing)(i))throw Error(`Redis client configuration is required to initialize QueueManager.`);return(0,l.isMissing)(e.asyncInstanceInit)&&(e.asyncInstanceInit=(async()=>{try{let t=new e(Ee);return t.logger=n??e.logger,await t.initialize({redisClientConfig:i,logger:n,scriptMap:r}),e.instance=t,t}catch(t){throw e.logger?.error({message:`Error initializing QueueManager: ${t}`,category:e.name,code:we.QueueManagerInitializationError}),t}finally{e.asyncInstanceInit=null}})()),e.asyncInstanceInit}async additionalInitialization(){let t=this.logger??e.logger,n=e.config;if((0,l.isMissing)(n))throw Error(`Redis client configuration is required to initialize QueueManager.`);this.cacheClient=await ue(n,t)??null,this.subscriptionManager=new ge({config:n,instantiator:e.name,subscriptionTTL:be,truncateThreshold:Se,truncationPercentage:Ce}),await this.subscriptionManager?.initialize(),this.eventClient=new le({instantiator:e.name,timeoutResolveValue:ye},{instantiator:e.name,evictionFrequency:xe,truncateThreshold:Se,truncationPercentage:Ce},{instantiator:e.name,evictionFrequency:xe,truncateThreshold:Se,truncationPercentage:Ce}),this.logger?.info({category:e.name,message:`QueueManager initialized.`})}async joinAndWaitTurn(t,n,r,i,a=!0){await this.readyCheck();try{let e=`${t}:${n}`;await this.subscriptionManager?.subscribe(e,async(r,i)=>{if(i.includes(e)&&i.includes(n)){let e=`${t}:${r}`;return this.eventClient?.resolveEvent(e,!0)}});let o=await this.executeScript(r?Te.lPush:Te.rPush,[t],[n,_e.toString()]),s=o===1,c=a?!s:!0;return c&&await this.eventClient?.waitForEvent(e,ve),await this.eventClient?.deleteEvent(e),await i(t,n)}catch(r){throw r instanceof Error&&this.logger?.error({message:`Error in joinAndWaitTurn`,category:e.name,error:r,code:we.QueueManagerJoinAndWaitTurnError,context:{queueName:t,value:n}}),r}}async pop(t){await this.readyCheck();try{return await this.executeScript(Te.lPop,[t],[])}catch(n){throw n instanceof Error&&this.logger?.error({message:`Error in pop`,category:e.name,error:n,code:we.QueueManagerPopError,context:{queueName:t}}),n}}async length(t){await this.readyCheck();try{return await this.executeScript(Te.llen,[t],[])}catch(n){throw n instanceof Error&&this.logger?.error({message:`Error in length`,category:e.name,error:n,code:we.QueueManagerLengthError,context:{queueName:t}}),n}}async readyCheck(){if(!await this.isReady()){let t=e.config;if((0,l.isMissing)(t))throw Error(`Redis client configuration is required to initialize QueueManager.`);await this.initialize({redisClientConfig:t,logger:e.logger,scriptMap:this.scriptMap})}}async isReady(){return(0,l.notMissing)(e.asyncInstanceInit)&&await e.asyncInstanceInit,(0,l.notMissing)(this.subscriptionManager)&&(0,l.notMissing)(this.cacheClient)&&(0,l.notMissing)(this.scriptMap)&&this.scriptMap.size>0}close(){this.subscriptionManager?.close(),this.cacheClient=null,this.scriptMap?.clear(),e.instance=null}};const Oe=5,ke=12e4,Ae=1e4,je=1,Me=60,Ne=90,Pe=`__keyevent@0__:`,Fe=`${Pe}set`,Ie=`${Pe}expire`,Le=`${Pe}expired`,Re=`${Pe}srem`,ze=`config_check_test_key`,Be=[Fe,Ie,Le],Ve=1,He=2500,Ue={mainMaxConcurrency:30};let We=function(e){return e.ConcurrencyManagerInitializationError=`ConcurrencyManagerInitializationError`,e.ConcurrencyManagerRedisEventsEmitError=`ConcurrencyManagerRedisEventsEmitError`,e.ConcurrencyManagerRegistrationFailed=`ConcurrencyManagerRegistrationFailed`,e}({}),Ge=function(e){return e.tryConcurrency=`tryConcurrency`,e.removeFromSet=`removeFromSet`,e.publishNextItem=`publishNextItem`,e}({});const Ke={[Ge.tryConcurrency]:`
|
|
18
|
+
local requestId = KEYS[1]
|
|
19
|
+
local targetKey = KEYS[2]
|
|
20
|
+
local queueKey = KEYS[3]
|
|
21
|
+
local defaultLeaseExpiry = tonumber(ARGV[1])
|
|
22
|
+
local concurrencyLimit = tonumber(ARGV[2])
|
|
23
|
+
local defaultSetExpiry = tonumber(ARGV[3])
|
|
24
|
+
|
|
25
|
+
local shouldWait = false
|
|
26
|
+
local success = false
|
|
27
|
+
local removed = false
|
|
28
|
+
local totalConcurrency = 0
|
|
29
|
+
local failureReason = ""
|
|
30
|
+
|
|
31
|
+
-- Check each key from KEYS[3] onward
|
|
32
|
+
for i = 4, #KEYS do
|
|
33
|
+
local key = KEYS[i]
|
|
34
|
+
local maxConcurrency = tonumber(ARGV[i])
|
|
35
|
+
|
|
36
|
+
local cardinality = redis.call('SCARD', key)
|
|
37
|
+
totalConcurrency = totalConcurrency + cardinality
|
|
38
|
+
|
|
39
|
+
-- If the maxConcurrency is met for the target key then we should wait
|
|
40
|
+
if key == targetKey and cardinality >= maxConcurrency then
|
|
41
|
+
shouldWait = true
|
|
42
|
+
failureReason = "Max concurrency for subpool, Card: " .. cardinality .. ", Max: " .. maxConcurrency
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
-- If the total concurrency is met, we should wait
|
|
47
|
+
if totalConcurrency >= concurrencyLimit then
|
|
48
|
+
shouldWait = true
|
|
49
|
+
failureReason = "Total concurrency limit reached, Card: " .. totalConcurrency .. ", Max: " .. concurrencyLimit
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
-- If we should NOT wait, add the requestId to the targetKey set and create the lease
|
|
53
|
+
if not shouldWait then
|
|
54
|
+
-- Try to add requestId to the set associated with targetKey
|
|
55
|
+
local addedToSet = redis.call('SADD', targetKey, requestId)
|
|
56
|
+
|
|
57
|
+
if addedToSet > 0 then
|
|
58
|
+
success = true
|
|
59
|
+
|
|
60
|
+
-- Set expiry for the targetKey set
|
|
61
|
+
redis.call('EXPIRE', targetKey, defaultSetExpiry)
|
|
62
|
+
|
|
63
|
+
local leaseKey = 'lease:' .. targetKey .. ':' .. requestId
|
|
64
|
+
local leaseValue = targetKey .. ':' .. requestId
|
|
65
|
+
|
|
66
|
+
-- Try to set the lease key
|
|
67
|
+
local leaseSet = redis.call('SETEX', leaseKey, defaultLeaseExpiry, leaseValue)
|
|
68
|
+
|
|
69
|
+
if not leaseSet then
|
|
70
|
+
-- If lease creation fails, remove requestId from the set
|
|
71
|
+
redis.call('SREM', targetKey, requestId)
|
|
72
|
+
|
|
73
|
+
success = false
|
|
74
|
+
failureReason = "Failed to create lease key."
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
-- Remove the requestId from the queue
|
|
78
|
+
local removed = redis.call('LREM', queueKey, 0, requestId)
|
|
79
|
+
|
|
80
|
+
if not removed then
|
|
81
|
+
-- If queue removal fails, clean up by removing the requestId from the set and lease
|
|
82
|
+
redis.call('SREM', targetKey, requestId)
|
|
83
|
+
redis.call('DEL', leaseKey)
|
|
84
|
+
|
|
85
|
+
success = false
|
|
86
|
+
failureReason = "Failed to remove request from queue."
|
|
87
|
+
end
|
|
88
|
+
else
|
|
89
|
+
-- Failed to add requestId to set, returning failure
|
|
90
|
+
redis.call('LREM', queueKey, 0, requestId)
|
|
91
|
+
|
|
92
|
+
success = false
|
|
93
|
+
failureReason = "Failed to add requestId to target key set."
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
return {success, failureReason}
|
|
98
|
+
`,[Ge.removeFromSet]:`
|
|
99
|
+
local requestId = ARGV[1]
|
|
100
|
+
local targetKey = KEYS[1]
|
|
101
|
+
|
|
102
|
+
-- Remove the lease key for the requestId
|
|
103
|
+
redis.call('DEL', 'lease:' .. targetKey .. ':' .. requestId)
|
|
104
|
+
|
|
105
|
+
-- Remove the requestId from the targetKey set
|
|
106
|
+
return redis.call('SREM', targetKey, requestId)
|
|
107
|
+
`,[Ge.publishNextItem]:`
|
|
108
|
+
local queueKey = KEYS[1]
|
|
109
|
+
|
|
110
|
+
local nextItem = redis.call('lindex', queueKey, 0)
|
|
111
|
+
|
|
112
|
+
if nextItem then
|
|
113
|
+
local nextItemKey = queueKey .. ':' .. nextItem
|
|
114
|
+
|
|
115
|
+
redis.call('publish', nextItemKey, nextItem)
|
|
116
|
+
end
|
|
117
|
+
`};var qe=class e extends he{static instance=null;static asyncInstanceInit=null;static hasValidRedisConfig=!1;static lastInitFailure=null;static RETRY_WINDOW_MS=1e4;static logger;static initConfig=null;subscriptionManager=null;queueManager=null;generateUUID;static async getInstance(t,n,r,i){if((0,l.notMissing)(e.instance))return e.instance;let a=Date.now();if(e.lastInitFailure&&a-e.lastInitFailure<e.RETRY_WINDOW_MS)throw Error(`ConcurrencyManager initialization failed recently — retrying too soon.`);return(0,l.isMissing)(e.asyncInstanceInit)&&((0,l.isMissing)(e.initConfig)?e.initConfig={config:t,logger:n,scriptMap:r,generateUUID:i??l.generateRequestId}:(t??=e.initConfig.config,n??=e.initConfig.logger,r??=e.initConfig.scriptMap,i??=e.initConfig.generateUUID),this.logger=n??e.logger,e.asyncInstanceInit=(async()=>{try{let a=new e(Ke);if((0,l.isMissing)(t))throw Error(`Redis client configuration is required to initialize ConcurrencyManager.`);if(await a.initialize({redisClientConfig:t,logger:n,scriptMap:r},i),e.hasValidRedisConfig)this.logger?.info({category:e.name,message:`ConcurrencyManager initialized.`});else throw e.lastInitFailure=Date.now(),e.asyncInstanceInit=null,Error(`Redis is not configured correctly or was too slow to respond.`);return e.instance=a,e.lastInitFailure=null,a}catch(t){throw e.logger?.error({message:`Error initializing ConcurrencyManager: ${t}`,category:e.name,error:t,code:We.ConcurrencyManagerInitializationError}),t}})()),e.asyncInstanceInit}async additionalInitialization(t){this.generateUUID=t??l.generateRequestId;let n=e.initConfig?.config;if((0,l.isMissing)(n))throw Error(`Redis client configuration is required to initialize ConcurrencyManager.`);this.subscriptionManager=new ge({config:n,logger:e.logger,instantiator:e.name,subscriptionTTL:ke,truncateThreshold:Ae,truncationPercentage:je}),await this.subscriptionManager?.initialize(),e.hasValidRedisConfig=await this.checkRedisEventsEmit(),this.cacheClient=await ue(n,e.logger)??null,this.queueManager=await De.getInstance(n,e.logger)}async addTestSubscription(t,n,r,i){return(0,l.isMissing)(this.subscriptionManager)?!1:this.subscriptionManager.subscribe(t,async(a,o)=>{o===t&&a.includes(n)&&(r.push(o),r.includes(Fe)&&r.includes(Ie)&&r.includes(Le)&&(i(),this.logger?.info({category:e.name,message:`Redis events are being emitted.`,context:{receivedEventCount:r.length}}),r.length=0))})}async checkRedisEventsEmit(){let t=[],n=async(e,n)=>{let r=()=>e(!0),i=this.generateUUID(),a=`${ze}:${i}`,o=(await Promise.all(Be.map(async e=>this.addTestSubscription(e,a,t,r)))).every(Boolean);if(!o)return n(Error(`Failed to subscribe to event channels.`));await this.cacheClient?.setData({key:a,value:`test`,cacheTTL:Ve}),setTimeout(()=>{n(Error(`Timeout waiting for Redis events to emit.`))},He)};try{return await new Promise(n)}catch(n){return this.logger?.error({category:e.name,message:`Redis events failed to emit.`,context:{receivedEventCount:t.length,reason:n?.message},error:n,code:We.ConcurrencyManagerRedisEventsEmitError}),!1}}async isRedisConfigured(){return await this.readyCheck(),e.hasValidRedisConfig}async subscribeToLeaseExpiry(e,t){await this.readyCheck();let n=await this.subscriptionManager?.subscribe(Le,async(n,r)=>{r===Le&&n.includes(t)&&n.includes(e)&&await this.releaseRequest(e,t)});return n??!1}async subscribeToSetRemoval(e,t){await this.readyCheck();let n=await this.subscriptionManager?.subscribe(Re,async(n,r)=>{r===Re&&n.includes(e)&&await this.executeScript(Ge.publishNextItem,[t],[])});return n??!1}async registerRequest(t,n,r,i){await this.readyCheck();let a=`concurrency:${t}`,o=`queue:${t}`,s=n.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(i??``):i?.includes(e.urlPattern))?.subPoolKey,c=(0,l.notMissing)(s)?`${a}-${s}`:a,{mainMaxConcurrency:u,subPools:d}=n,f=[{key:a,maxConcurrency:u},...d?.map(e=>{let{subPoolKey:t,maxConcurrency:n}=e;return{key:`${a}-${t}`,maxConcurrency:n}})??[]],p=f.map(e=>e.key),m=f.map(e=>e.maxConcurrency),[h,g]=await Promise.all([this.subscribeToLeaseExpiry(r,c),this.subscribeToSetRemoval(c,o)]),_={requestId:r,targetConcurrencyKey:c,leaseSubscription:h,setRemovalSubscription:g,queueKey:o},[v,y]=await this.executeScript(Ge.tryConcurrency,[r,c,o,...p],[Me.toString(),u.toString(),Ne.toString(),...m.map(String)])??[];if(v)return{..._,joinCondition:`optimistic`,failureReason:y};let b=0,x=[];for(;b<Oe;){let t=b>1,[n,i]=await this.queueManager?.joinAndWaitTurn(o,r,t,async(e,t)=>await this.executeScript(Ge.tryConcurrency,[r,c,o,...p],[Me.toString(),u.toString(),Ne.toString(),...m.map(String)]),!1)??[!1,``];if((0,l.notMissing)(i)&&i!==``&&x.push(i),b++,n)return b>1&&this.logger?.warning({category:e.name,message:`Register request succeeded after ${b} attempts.`,context:{..._,registerAttempts:b,joinCondition:`attempts`,failureMessages:x}}),{..._,joinCondition:`attempts`};let a=(0,l.exponentialBackoffInMS)(b,100);await(0,l.delay)(a)}return this.logger?.error({category:e.name,message:`Failed to register request after ${b} attempts.`,context:{..._,registerAttempts:b,joinCondition:`failed`,failureMessages:x},code:We.ConcurrencyManagerRegistrationFailed}),{..._,joinCondition:`failed`}}async releaseRequest(e,t){return await this.readyCheck(),(0,l.isString)(t)&&(0,l.isString)(e)?!!await this.executeScript(Ge.removeFromSet,[t],[e]):!1}async readyCheck(){await e.getInstance()}static async isReady(){try{let t=await e.getInstance();return t.subscriptionManager!==null&&t.cacheClient!==null&&t.scriptMap!==null&&t.scriptMap.size>0&&e.hasValidRedisConfig}catch{return!1}}static close(){let t=e.instance;(0,l.notMissing)(t)&&(t.subscriptionManager?.close(),t.queueManager?.close(),t.cacheClient=null,t.scriptMap?.clear()),e.asyncInstanceInit=null,e.hasValidRedisConfig=!1,e.lastInitFailure=null,e.instance=null,e.initConfig=null}};const Je=Object.freeze({status:`aborted`});function O(e,t,n){function r(n,r){var i;for(let a in Object.defineProperty(n,`_zod`,{value:n._zod??{},enumerable:!1}),(i=n._zod).traits??(i.traits=new Set),n._zod.traits.add(e),t(n,r),o.prototype)a in n||Object.defineProperty(n,a,{value:o.prototype[a].bind(n)});n._zod.constr=o,n._zod.def=r}let i=n?.Parent??Object;class a extends i{}Object.defineProperty(a,`name`,{value:e});function o(e){var t;let i=n?.Parent?new a:this;r(i,e),(t=i._zod).deferred??(t.deferred=[]);for(let e of i._zod.deferred)e();return i}return Object.defineProperty(o,`init`,{value:r}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>n?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,`name`,{value:e}),o}const Ye=Symbol(`zod_brand`);var Xe=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}};const Ze={};function Qe(e){return e&&Object.assign(Ze,e),Ze}function $e(e){let t=Object.values(e).filter(e=>typeof e==`number`),n=Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t);return n}function et(e,t){return typeof t==`bigint`?t.toString():t}function tt(e){let t=!1;return{get value(){{let t=e();return Object.defineProperty(this,`value`,{value:t}),t}}}}function nt(e){return e==null}function rt(e){let t=e.startsWith(`^`)?1:0,n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function it(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r,a=Number.parseInt(e.toFixed(i).replace(`.`,``)),o=Number.parseInt(t.toFixed(i).replace(`.`,``));return a%o/10**i}function k(e,t,n){let r=!1;Object.defineProperty(e,t,{get(){{let r=n();return e[t]=r,r}},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function at(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function ot(e){return JSON.stringify(e)}const st=Error.captureStackTrace?Error.captureStackTrace:(...e)=>{};function ct(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const lt=tt(()=>{if(typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{let e=Function;return new e(``),!0}catch{return!1}});function ut(e){if(ct(e)===!1)return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(ct(n)===!1||Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)===!1)}const dt=new Set([`string`,`number`,`symbol`]);function ft(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function pt(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function A(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function mt(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}const ht={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function gt(e,t){let n={},r=e._zod.def;for(let e in t){if(!(e in r.shape))throw Error(`Unrecognized key: "${e}"`);if(!t[e])continue;n[e]=r.shape[e]}return pt(e,{...e._zod.def,shape:n,checks:[]})}function _t(e,t){let n={...e._zod.def.shape},r=e._zod.def;for(let e in t){if(!(e in r.shape))throw Error(`Unrecognized key: "${e}"`);if(!t[e])continue;delete n[e]}return pt(e,{...e._zod.def,shape:n,checks:[]})}function vt(e,t){if(!ut(t))throw Error(`Invalid input to extend: expected a plain object`);let n={...e._zod.def,get shape(){let n={...e._zod.def.shape,...t};return at(this,`shape`,n),n},checks:[]};return pt(e,n)}function yt(e,t){return pt(e,{...e._zod.def,get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return at(this,`shape`,n),n},catchall:t._zod.def.catchall,checks:[]})}function bt(e,t,n){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);if(!n[t])continue;i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t]}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return pt(t,{...t._zod.def,shape:i,checks:[]})}function xt(e,t,n){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);if(!n[t])continue;i[t]=new e({type:`nonoptional`,innerType:r[t]})}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return pt(t,{...t._zod.def,shape:i,checks:[]})}function St(e,t=0){for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function Ct(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function wt(e){return typeof e==`string`?e:e?.message}function Tt(e,t,n){let r={...e,path:e.path??[]};if(!e.message){let i=wt(e.inst?._zod.def?.error?.(e))??wt(t?.error?.(e))??wt(n.customError?.(e))??wt(n.localeError?.(e))??`Invalid input`;r.message=i}return delete r.inst,delete r.continue,t?.reportInput||delete r.input,r}function Et(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function Dt(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}const Ot=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,`_zod`,{value:e._zod,enumerable:!1}),Object.defineProperty(e,`issues`,{value:t,enumerable:!1}),Object.defineProperty(e,`message`,{get(){return JSON.stringify(t,et,2)},enumerable:!0})},kt=O(`$ZodError`,Ot),At=O(`$ZodError`,Ot,{Parent:Error});function jt(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Mt(e,t){let n=t||function(e){return e.message},r={_errors:[]},i=e=>{for(let t of e.issues)if(t.code===`invalid_union`&&t.errors.length)t.errors.map(e=>i({issues:e}));else if(t.code===`invalid_key`)i({issues:t.issues});else if(t.code===`invalid_element`)i({issues:t.issues});else if(t.path.length===0)r._errors.push(n(t));else{let e=r,i=0;for(;i<t.path.length;){let r=t.path[i],a=i===t.path.length-1;a?(e[r]=e[r]||{_errors:[]},e[r]._errors.push(n(t))):e[r]=e[r]||{_errors:[]},e=e[r],i++}}};return i(e),r}const Nt=e=>(t,n,r,i)=>{let a=r?Object.assign(r,{async:!1}):{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new Xe;if(o.issues.length){let t=new(i?.Err??e)(o.issues.map(e=>Tt(e,a,Qe())));throw st(t,i?.callee),t}return o.value},Pt=Nt(At),Ft=e=>async(t,n,r,i)=>{let a=r?Object.assign(r,{async:!0}):{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new(i?.Err??e)(o.issues.map(e=>Tt(e,a,Qe())));throw st(t,i?.callee),t}return o.value},It=Ft(At),Lt=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new Xe;return a.issues.length?{success:!1,error:new(e??kt)(a.issues.map(e=>Tt(e,i,Qe())))}:{success:!0,data:a.value}},Rt=Lt(At),zt=e=>async(t,n,r)=>{let i=r?Object.assign(r,{async:!0}):{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>Tt(e,i,Qe())))}:{success:!0,data:a.value}},Bt=zt(At),Vt=/^[cC][^\s-]{8,}$/,Ht=/^[0-9a-z]+$/,Ut=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Wt=/^[0-9a-vA-V]{20}$/,Gt=/^[A-Za-z0-9]{27}$/,Kt=/^[a-zA-Z0-9_-]{21}$/,qt=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Jt=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,Yt=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/,Xt=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Zt=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function Qt(){return new RegExp(Zt,`u`)}const $t=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,en=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/,tn=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,nn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,rn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,an=/^[A-Za-z0-9_-]*$/,on=/^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/,sn=/^\+(?:[0-9]){6,14}[0-9]$/,cn=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,ln=RegExp(`^${cn}$`);function un(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`,n=typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`;return n}function dn(e){return RegExp(`^${un(e)}$`)}function fn(e){let t=un({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-]\\d{2}:\\d{2})`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${cn}T(?:${r})$`)}const pn=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},mn=/^\d+$/,hn=/^-?\d+(?:\.\d+)?/i,gn=/^[^A-Z]*$/,_n=/^[^a-z]*$/,j=O(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),vn={number:`number`,bigint:`bigint`,object:`date`},yn=O(`$ZodCheckLessThan`,(e,t)=>{j.init(e,t);let n=vn[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value<r&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:n,code:`too_big`,maximum:t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),bn=O(`$ZodCheckGreaterThan`,(e,t)=>{j.init(e,t);let n=vn[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),xn=O(`$ZodCheckMultipleOf`,(e,t)=>{j.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);let r=typeof n.value==`bigint`?n.value%t.value===BigInt(0):it(n.value,t.value)===0;r||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Sn=O(`$ZodCheckNumberFormat`,(e,t)=>{j.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=ht[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=mn)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,continue:!t.abort});return}}s<i&&o.issues.push({origin:`number`,input:s,code:`too_small`,minimum:i,inclusive:!0,inst:e,continue:!t.abort}),s>a&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inst:e})}}),Cn=O(`$ZodCheckMaxLength`,(e,t)=>{j.init(e,t),e._zod.when=e=>{let t=e.value;return!nt(t)&&t.length!==void 0},e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let r=n.value,i=r.length;if(i<=t.maximum)return;let a=Et(r);n.issues.push({origin:a,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),wn=O(`$ZodCheckMinLength`,(e,t)=>{j.init(e,t),e._zod.when=e=>{let t=e.value;return!nt(t)&&t.length!==void 0},e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value,i=r.length;if(i>=t.minimum)return;let a=Et(r);n.issues.push({origin:a,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Tn=O(`$ZodCheckLengthEquals`,(e,t)=>{j.init(e,t),e._zod.when=e=>{let t=e.value;return!nt(t)&&t.length!==void 0},e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=Et(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),En=O(`$ZodCheckStringFormat`,(e,t)=>{var n,r;j.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),Dn=O(`$ZodCheckRegex`,(e,t)=>{En.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),On=O(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=gn,En.init(e,t)}),kn=O(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=_n,En.init(e,t)}),An=O(`$ZodCheckIncludes`,(e,t)=>{j.init(e,t);let n=ft(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),jn=O(`$ZodCheckStartsWith`,(e,t)=>{j.init(e,t);let n=RegExp(`^${ft(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Mn=O(`$ZodCheckEndsWith`,(e,t)=>{j.init(e,t);let n=RegExp(`.*${ft(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Nn=O(`$ZodCheckOverwrite`,(e,t)=>{j.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}});var Pn=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e,n=t.split(`
|
|
118
|
+
`).filter(e=>e),r=Math.min(...n.map(e=>e.length-e.trimStart().length)),i=n.map(e=>e.slice(r)).map(e=>` `.repeat(this.indent*2)+e);for(let e of i)this.content.push(e)}compile(){let e=Function,t=this?.args,n=this?.content??[``],r=[...n.map(e=>` ${e}`)];return new e(...t,r.join(`
|
|
119
|
+
`))}};const Fn={major:4,minor:0,patch:0},M=O(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Fn;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=St(e),i;for(let a of t){if(a._zod.when){let t=a._zod.when(e);if(!t)continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new Xe;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o;let n=e.issues.length;n!==t&&(r||=St(e,t))});else{let n=e.issues.length;if(n===t)continue;r||=St(e,t)}}return i?i.then(()=>e):e};e._zod.run=(n,i)=>{let a=e._zod.parse(n,i);if(a instanceof Promise){if(i.async===!1)throw new Xe;return a.then(e=>t(e,r,i))}return t(a,r,i)}}e[`~standard`]={validate:t=>{try{let n=Rt(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return Bt(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}}),In=O(`$ZodString`,(e,t)=>{M.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??pn(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),N=O(`$ZodStringFormat`,(e,t)=>{En.init(e,t),In.init(e,t)}),Ln=O(`$ZodGUID`,(e,t)=>{t.pattern??=Jt,N.init(e,t)}),Rn=O(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8},n=e[t.version];if(n===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=Yt(n)}else t.pattern??=Yt();N.init(e,t)}),zn=O(`$ZodEmail`,(e,t)=>{t.pattern??=Xt,N.init(e,t)}),Bn=O(`$ZodURL`,(e,t)=>{N.init(e,t),e._zod.check=n=>{try{let r=n.value,i=new URL(r),a=i.href;t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(i.hostname)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:on.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(i.protocol.endsWith(`:`)?i.protocol.slice(0,-1):i.protocol)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),!r.endsWith(`/`)&&a.endsWith(`/`)?n.value=a.slice(0,-1):n.value=a;return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),Vn=O(`$ZodEmoji`,(e,t)=>{t.pattern??=Qt(),N.init(e,t)}),Hn=O(`$ZodNanoID`,(e,t)=>{t.pattern??=Kt,N.init(e,t)}),Un=O(`$ZodCUID`,(e,t)=>{t.pattern??=Vt,N.init(e,t)}),Wn=O(`$ZodCUID2`,(e,t)=>{t.pattern??=Ht,N.init(e,t)}),Gn=O(`$ZodULID`,(e,t)=>{t.pattern??=Ut,N.init(e,t)}),Kn=O(`$ZodXID`,(e,t)=>{t.pattern??=Wt,N.init(e,t)}),qn=O(`$ZodKSUID`,(e,t)=>{t.pattern??=Gt,N.init(e,t)}),Jn=O(`$ZodISODateTime`,(e,t)=>{t.pattern??=fn(t),N.init(e,t)}),Yn=O(`$ZodISODate`,(e,t)=>{t.pattern??=ln,N.init(e,t)}),Xn=O(`$ZodISOTime`,(e,t)=>{t.pattern??=dn(t),N.init(e,t)}),Zn=O(`$ZodISODuration`,(e,t)=>{t.pattern??=qt,N.init(e,t)}),Qn=O(`$ZodIPv4`,(e,t)=>{t.pattern??=$t,N.init(e,t),e._zod.onattach.push(e=>{let t=e._zod.bag;t.format=`ipv4`})}),$n=O(`$ZodIPv6`,(e,t)=>{t.pattern??=en,N.init(e,t),e._zod.onattach.push(e=>{let t=e._zod.bag;t.format=`ipv6`}),e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}}),er=O(`$ZodCIDRv4`,(e,t)=>{t.pattern??=tn,N.init(e,t)}),tr=O(`$ZodCIDRv6`,(e,t)=>{t.pattern??=nn,N.init(e,t),e._zod.check=n=>{let[r,i]=n.value.split(`/`);try{if(!i)throw Error();let e=Number(i);if(`${e}`!==i||e<0||e>128)throw Error();new URL(`http://[${r}]`)}catch{n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}}});function nr(e){if(e===``)return!0;if(e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}const rr=O(`$ZodBase64`,(e,t)=>{t.pattern??=rn,N.init(e,t),e._zod.onattach.push(e=>{e._zod.bag.contentEncoding=`base64`}),e._zod.check=n=>{nr(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function ir(e){if(!an.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`),n=t.padEnd(Math.ceil(t.length/4)*4,`=`);return nr(n)}const ar=O(`$ZodBase64URL`,(e,t)=>{t.pattern??=an,N.init(e,t),e._zod.onattach.push(e=>{e._zod.bag.contentEncoding=`base64url`}),e._zod.check=n=>{ir(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),or=O(`$ZodE164`,(e,t)=>{t.pattern??=sn,N.init(e,t)});function sr(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}const cr=O(`$ZodJWT`,(e,t)=>{N.init(e,t),e._zod.check=n=>{sr(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),lr=O(`$ZodNumber`,(e,t)=>{M.init(e,t),e._zod.pattern=e._zod.bag.pattern??hn,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:`Infinity`:void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),ur=O(`$ZodNumber`,(e,t)=>{Sn.init(e,t),lr.init(e,t)}),dr=O(`$ZodUnknown`,(e,t)=>{M.init(e,t),e._zod.parse=e=>e}),fr=O(`$ZodNever`,(e,t)=>{M.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function pr(e,t,n){e.issues.length&&t.issues.push(...Ct(n,e.issues)),t.value[n]=e.value}const mr=O(`$ZodArray`,(e,t)=>{M.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;e<i.length;e++){let o=i[e],s=t.element._zod.run({value:o,issues:[]},r);s instanceof Promise?a.push(s.then(t=>pr(t,n,e))):pr(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function hr(e,t,n){e.issues.length&&t.issues.push(...Ct(n,e.issues)),t.value[n]=e.value}function gr(e,t,n,r){e.issues.length?r[n]===void 0?n in r?t.value[n]=void 0:t.value[n]=e.value:t.issues.push(...Ct(n,e.issues)):e.value===void 0?n in r&&(t.value[n]=void 0):t.value[n]=e.value}const _r=O(`$ZodObject`,(e,t)=>{M.init(e,t);let n=tt(()=>{let e=Object.keys(t.shape);for(let n of e)if(!(t.shape[n]instanceof M))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=mt(t.shape);return{shape:t.shape,keys:e,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(n)}});k(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=e=>{let t=new Pn([`shape`,`payload`,`ctx`]),r=n.value,i=e=>{let t=ot(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of r.keys)a[e]=`key_${o++}`;t.write(`const newResult = {}`);for(let e of r.keys)if(r.optionalKeys.has(e)){let n=a[e];t.write(`const ${n} = ${i(e)};`);let r=ot(e);t.write(`
|
|
120
|
+
if (${n}.issues.length) {
|
|
121
|
+
if (input[${r}] === undefined) {
|
|
122
|
+
if (${r} in input) {
|
|
123
|
+
newResult[${r}] = undefined;
|
|
124
|
+
}
|
|
125
|
+
} else {
|
|
126
|
+
payload.issues = payload.issues.concat(
|
|
127
|
+
${n}.issues.map((iss) => ({
|
|
128
|
+
...iss,
|
|
129
|
+
path: iss.path ? [${r}, ...iss.path] : [${r}],
|
|
130
|
+
}))
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
} else if (${n}.value === undefined) {
|
|
134
|
+
if (${r} in input) newResult[${r}] = undefined;
|
|
135
|
+
} else {
|
|
136
|
+
newResult[${r}] = ${n}.value;
|
|
137
|
+
}
|
|
138
|
+
`)}else{let n=a[e];t.write(`const ${n} = ${i(e)};`),t.write(`
|
|
139
|
+
if (${n}.issues.length) payload.issues = payload.issues.concat(${n}.issues.map(iss => ({
|
|
140
|
+
...iss,
|
|
141
|
+
path: iss.path ? [${ot(e)}, ...iss.path] : [${ot(e)}]
|
|
142
|
+
})));`),t.write(`newResult[${ot(e)}] = ${n}.value`)}t.write(`payload.value = newResult;`),t.write(`return payload;`);let s=t.compile();return(t,n)=>s(e,t,n)},i,a=ct,o=!Ze.jitless,s=lt,c=o&&s.value,l=t.catchall,u;e._zod.parse=(s,d)=>{u??=n.value;let f=s.value;if(!a(f))return s.issues.push({expected:`object`,code:`invalid_type`,input:f,inst:e}),s;let p=[];if(o&&c&&d?.async===!1&&d.jitless!==!0)i||=r(t.shape),s=i(s,d);else{s.value={};let e=u.shape;for(let t of u.keys){let n=e[t],r=n._zod.run({value:f[t],issues:[]},d),i=n._zod.optin===`optional`&&n._zod.optout===`optional`;r instanceof Promise?p.push(r.then(e=>i?gr(e,s,t,f):hr(e,s,t))):i?gr(r,s,t,f):hr(r,s,t)}}if(!l)return p.length?Promise.all(p).then(()=>s):s;let m=[],h=u.keySet,g=l._zod,_=g.def.type;for(let e of Object.keys(f)){if(h.has(e))continue;if(_===`never`){m.push(e);continue}let t=g.run({value:f[e],issues:[]},d);t instanceof Promise?p.push(t.then(t=>hr(t,s,e))):hr(t,s,e)}return m.length&&s.issues.push({code:`unrecognized_keys`,keys:m,input:f,inst:e}),p.length?Promise.all(p).then(()=>s):s}});function vr(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;return t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>Tt(e,r,Qe())))}),t}const yr=O(`$ZodUnion`,(e,t)=>{M.init(e,t),k(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),k(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),k(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),k(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>rt(e.source)).join(`|`)})$`)}}),e._zod.parse=(n,r)=>{let i=!1,a=[];for(let e of t.options){let t=e._zod.run({value:n.value,issues:[]},r);if(t instanceof Promise)a.push(t),i=!0;else{if(t.issues.length===0)return t;a.push(t)}}return i?Promise.all(a).then(t=>vr(t,n,e,r)):vr(a,n,e,r)}}),br=O(`$ZodIntersection`,(e,t)=>{M.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n),o=i instanceof Promise||a instanceof Promise;return o?Promise.all([i,a]).then(([t,n])=>Sr(e,t,n)):Sr(e,i,a)}});function xr(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(ut(e)&&ut(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=xr(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=xr(i,a);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function Sr(e,t,n){if(t.issues.length&&e.issues.push(...t.issues),n.issues.length&&e.issues.push(...n.issues),St(e))return e;let r=xr(t.value,n.value);if(!r.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(r.mergeErrorPath)}`);return e.value=r.data,e}const Cr=O(`$ZodEnum`,(e,t)=>{M.init(e,t);let n=$e(t.entries);e._zod.values=new Set(n),e._zod.pattern=RegExp(`^(${n.filter(e=>dt.has(typeof e)).map(e=>typeof e==`string`?ft(e):e.toString()).join(`|`)})$`),e._zod.parse=(t,r)=>{let i=t.value;return e._zod.values.has(i)||t.issues.push({code:`invalid_value`,values:n,input:i,inst:e}),t}}),wr=O(`$ZodTransform`,(e,t)=>{M.init(e,t),e._zod.parse=(e,n)=>{let r=t.transform(e.value,e);if(n.async){let t=r instanceof Promise?r:Promise.resolve(r);return t.then(t=>(e.value=t,e))}if(r instanceof Promise)throw new Xe;return e.value=r,e}}),Tr=O(`$ZodOptional`,(e,t)=>{M.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,k(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),k(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${rt(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>t.innerType._zod.optin===`optional`?t.innerType._zod.run(e,n):e.value===void 0?e:t.innerType._zod.run(e,n)}),Er=O(`$ZodNullable`,(e,t)=>{M.init(e,t),k(e._zod,`optin`,()=>t.innerType._zod.optin),k(e._zod,`optout`,()=>t.innerType._zod.optout),k(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${rt(e.source)}|null)$`):void 0}),k(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),Dr=O(`$ZodDefault`,(e,t)=>{M.init(e,t),e._zod.optin=`optional`,k(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>Or(e,t)):Or(r,t)}});function Or(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}const kr=O(`$ZodPrefault`,(e,t)=>{M.init(e,t),e._zod.optin=`optional`,k(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>(e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),Ar=O(`$ZodNonOptional`,(e,t)=>{M.init(e,t),k(e._zod,`values`,()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>jr(t,e)):jr(i,e)}});function jr(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}const Mr=O(`$ZodCatch`,(e,t)=>{M.init(e,t),e._zod.optin=`optional`,k(e._zod,`optout`,()=>t.innerType._zod.optout),k(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>Tt(e,n,Qe()))},input:e.value}),e.issues=[]),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>Tt(e,n,Qe()))},input:e.value}),e.issues=[]),e)}}),Nr=O(`$ZodPipe`,(e,t)=>{M.init(e,t),k(e._zod,`values`,()=>t.in._zod.values),k(e._zod,`optin`,()=>t.in._zod.optin),k(e._zod,`optout`,()=>t.out._zod.optout),e._zod.parse=(e,n)=>{let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>Pr(e,t,n)):Pr(r,t,n)}});function Pr(e,t,n){return St(e)?e:t.out._zod.run({value:e.value,issues:e.issues},n)}const Fr=O(`$ZodReadonly`,(e,t)=>{M.init(e,t),k(e._zod,`propValues`,()=>t.innerType._zod.propValues),k(e._zod,`values`,()=>t.innerType._zod.values),k(e._zod,`optin`,()=>t.innerType._zod.optin),k(e._zod,`optout`,()=>t.innerType._zod.optout),e._zod.parse=(e,n)=>{let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Ir):Ir(r)}});function Ir(e){return e.value=Object.freeze(e.value),e}const Lr=O(`$ZodCustom`,(e,t)=>{j.init(e,t),M.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>Rr(t,n,r,e));Rr(i,n,r,e)}});function Rr(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(Dt(e))}}const zr=Symbol(`ZodOutput`),Br=Symbol(`ZodInput`);var Vr=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];if(this._map.set(e,n),n&&typeof n==`object`&&`id`in n){if(this._idmap.has(n.id))throw Error(`ID ${n.id} already exists in the registry`);this._idmap.set(n.id,e)}return this}remove(e){return this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};return delete n.id,{...n,...this._map.get(e)}}return this._map.get(e)}has(e){return this._map.has(e)}};function Hr(){return new Vr}const Ur=Hr();function Wr(e,t){return new e({type:`string`,...A(t)})}function Gr(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...A(t)})}function Kr(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...A(t)})}function qr(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...A(t)})}function Jr(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...A(t)})}function Yr(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...A(t)})}function Xr(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...A(t)})}function Zr(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...A(t)})}function Qr(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...A(t)})}function $r(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...A(t)})}function ei(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...A(t)})}function ti(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...A(t)})}function ni(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...A(t)})}function ri(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...A(t)})}function ii(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...A(t)})}function ai(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...A(t)})}function oi(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...A(t)})}function si(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...A(t)})}function ci(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...A(t)})}function li(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...A(t)})}function ui(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...A(t)})}function di(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...A(t)})}function fi(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...A(t)})}function pi(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...A(t)})}function mi(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...A(t)})}function hi(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...A(t)})}function gi(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...A(t)})}function _i(e,t){return new e({type:`number`,checks:[],...A(t)})}function vi(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...A(t)})}function yi(e){return new e({type:`unknown`})}function bi(e,t){return new e({type:`never`,...A(t)})}function xi(e,t){return new yn({check:`less_than`,...A(t),value:e,inclusive:!1})}function Si(e,t){return new yn({check:`less_than`,...A(t),value:e,inclusive:!0})}function Ci(e,t){return new bn({check:`greater_than`,...A(t),value:e,inclusive:!1})}function wi(e,t){return new bn({check:`greater_than`,...A(t),value:e,inclusive:!0})}function Ti(e,t){return new xn({check:`multiple_of`,...A(t),value:e})}function Ei(e,t){let n=new Cn({check:`max_length`,...A(t),maximum:e});return n}function Di(e,t){return new wn({check:`min_length`,...A(t),minimum:e})}function Oi(e,t){return new Tn({check:`length_equals`,...A(t),length:e})}function ki(e,t){return new Dn({check:`string_format`,format:`regex`,...A(t),pattern:e})}function Ai(e){return new On({check:`string_format`,format:`lowercase`,...A(e)})}function ji(e){return new kn({check:`string_format`,format:`uppercase`,...A(e)})}function Mi(e,t){return new An({check:`string_format`,format:`includes`,...A(t),includes:e})}function Ni(e,t){return new jn({check:`string_format`,format:`starts_with`,...A(t),prefix:e})}function Pi(e,t){return new Mn({check:`string_format`,format:`ends_with`,...A(t),suffix:e})}function Fi(e){return new Nn({check:`overwrite`,tx:e})}function Ii(e){return Fi(t=>t.normalize(e))}function Li(){return Fi(e=>e.trim())}function Ri(){return Fi(e=>e.toLowerCase())}function zi(){return Fi(e=>e.toUpperCase())}function Bi(e,t,n){return new e({type:`array`,element:t,...A(n)})}function Vi(e,t,n){let r=new e({type:`custom`,check:`custom`,fn:t,...A(n)});return r}const Hi=O(`ZodISODateTime`,(e,t)=>{Jn.init(e,t),F.init(e,t)});function Ui(e){return pi(Hi,e)}const Wi=O(`ZodISODate`,(e,t)=>{Yn.init(e,t),F.init(e,t)});function Gi(e){return mi(Wi,e)}const Ki=O(`ZodISOTime`,(e,t)=>{Xn.init(e,t),F.init(e,t)});function qi(e){return hi(Ki,e)}const Ji=O(`ZodISODuration`,(e,t)=>{Zn.init(e,t),F.init(e,t)});function Yi(e){return gi(Ji,e)}const Xi=(e,t)=>{kt.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>Mt(e,t)},flatten:{value:t=>jt(e,t)},addIssue:{value:t=>e.issues.push(t)},addIssues:{value:t=>e.issues.push(...t)},isEmpty:{get(){return e.issues.length===0}}})},Zi=O(`ZodError`,Xi),Qi=O(`ZodError`,Xi,{Parent:Error}),$i=Nt(Qi),ea=Ft(Qi),ta=Lt(Qi),na=zt(Qi),P=O(`ZodType`,(e,t)=>(M.init(e,t),e.def=t,Object.defineProperty(e,`_def`,{value:t}),e.check=(...n)=>e.clone({...t,checks:[...t.checks??[],...n.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),e.clone=(t,n)=>pt(e,t,n),e.brand=()=>e,e.register=(t,n)=>(t.add(e,n),e),e.parse=(t,n)=>$i(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>ta(e,t,n),e.parseAsync=async(t,n)=>ea(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>na(e,t,n),e.spa=e.safeParseAsync,e.refine=(t,n)=>e.check(lo(t,n)),e.superRefine=t=>e.check(uo(t)),e.overwrite=t=>e.check(Fi(t)),e.optional=()=>Ka(e),e.nullable=()=>Ja(e),e.nullish=()=>Ka(Ja(e)),e.nonoptional=t=>eo(e,t),e.array=()=>Pa(e),e.or=t=>Ra([e,t]),e.and=t=>Ba(e,t),e.transform=t=>io(e,Wa(t)),e.default=t=>Xa(e,t),e.prefault=t=>Qa(e,t),e.catch=t=>no(e,t),e.pipe=t=>io(e,t),e.readonly=()=>oo(e),e.describe=t=>{let n=e.clone();return Ur.add(n,{description:t}),n},Object.defineProperty(e,`description`,{get(){return Ur.get(e)?.description},configurable:!0}),e.meta=(...t)=>{if(t.length===0)return Ur.get(e);let n=e.clone();return Ur.add(n,t[0]),n},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e)),ra=O(`_ZodString`,(e,t)=>{In.init(e,t),P.init(e,t);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,e.regex=(...t)=>e.check(ki(...t)),e.includes=(...t)=>e.check(Mi(...t)),e.startsWith=(...t)=>e.check(Ni(...t)),e.endsWith=(...t)=>e.check(Pi(...t)),e.min=(...t)=>e.check(Di(...t)),e.max=(...t)=>e.check(Ei(...t)),e.length=(...t)=>e.check(Oi(...t)),e.nonempty=(...t)=>e.check(Di(1,...t)),e.lowercase=t=>e.check(Ai(t)),e.uppercase=t=>e.check(ji(t)),e.trim=()=>e.check(Li()),e.normalize=(...t)=>e.check(Ii(...t)),e.toLowerCase=()=>e.check(Ri()),e.toUpperCase=()=>e.check(zi())}),ia=O(`ZodString`,(e,t)=>{In.init(e,t),ra.init(e,t),e.email=t=>e.check(Gr(oa,t)),e.url=t=>e.check(Zr(la,t)),e.jwt=t=>e.check(fi(wa,t)),e.emoji=t=>e.check(Qr(ua,t)),e.guid=t=>e.check(Kr(sa,t)),e.uuid=t=>e.check(qr(ca,t)),e.uuidv4=t=>e.check(Jr(ca,t)),e.uuidv6=t=>e.check(Yr(ca,t)),e.uuidv7=t=>e.check(Xr(ca,t)),e.nanoid=t=>e.check($r(da,t)),e.guid=t=>e.check(Kr(sa,t)),e.cuid=t=>e.check(ei(fa,t)),e.cuid2=t=>e.check(ti(pa,t)),e.ulid=t=>e.check(ni(ma,t)),e.base64=t=>e.check(li(xa,t)),e.base64url=t=>e.check(ui(Sa,t)),e.xid=t=>e.check(ri(ha,t)),e.ksuid=t=>e.check(ii(ga,t)),e.ipv4=t=>e.check(ai(_a,t)),e.ipv6=t=>e.check(oi(va,t)),e.cidrv4=t=>e.check(si(ya,t)),e.cidrv6=t=>e.check(ci(ba,t)),e.e164=t=>e.check(di(Ca,t)),e.datetime=t=>e.check(Ui(t)),e.date=t=>e.check(Gi(t)),e.time=t=>e.check(qi(t)),e.duration=t=>e.check(Yi(t))});function aa(e){return Wr(ia,e)}const F=O(`ZodStringFormat`,(e,t)=>{N.init(e,t),ra.init(e,t)}),oa=O(`ZodEmail`,(e,t)=>{zn.init(e,t),F.init(e,t)}),sa=O(`ZodGUID`,(e,t)=>{Ln.init(e,t),F.init(e,t)}),ca=O(`ZodUUID`,(e,t)=>{Rn.init(e,t),F.init(e,t)}),la=O(`ZodURL`,(e,t)=>{Bn.init(e,t),F.init(e,t)}),ua=O(`ZodEmoji`,(e,t)=>{Vn.init(e,t),F.init(e,t)}),da=O(`ZodNanoID`,(e,t)=>{Hn.init(e,t),F.init(e,t)}),fa=O(`ZodCUID`,(e,t)=>{Un.init(e,t),F.init(e,t)}),pa=O(`ZodCUID2`,(e,t)=>{Wn.init(e,t),F.init(e,t)}),ma=O(`ZodULID`,(e,t)=>{Gn.init(e,t),F.init(e,t)}),ha=O(`ZodXID`,(e,t)=>{Kn.init(e,t),F.init(e,t)}),ga=O(`ZodKSUID`,(e,t)=>{qn.init(e,t),F.init(e,t)}),_a=O(`ZodIPv4`,(e,t)=>{Qn.init(e,t),F.init(e,t)}),va=O(`ZodIPv6`,(e,t)=>{$n.init(e,t),F.init(e,t)}),ya=O(`ZodCIDRv4`,(e,t)=>{er.init(e,t),F.init(e,t)}),ba=O(`ZodCIDRv6`,(e,t)=>{tr.init(e,t),F.init(e,t)}),xa=O(`ZodBase64`,(e,t)=>{rr.init(e,t),F.init(e,t)}),Sa=O(`ZodBase64URL`,(e,t)=>{ar.init(e,t),F.init(e,t)}),Ca=O(`ZodE164`,(e,t)=>{or.init(e,t),F.init(e,t)}),wa=O(`ZodJWT`,(e,t)=>{cr.init(e,t),F.init(e,t)}),Ta=O(`ZodNumber`,(e,t)=>{lr.init(e,t),P.init(e,t),e.gt=(t,n)=>e.check(Ci(t,n)),e.gte=(t,n)=>e.check(wi(t,n)),e.min=(t,n)=>e.check(wi(t,n)),e.lt=(t,n)=>e.check(xi(t,n)),e.lte=(t,n)=>e.check(Si(t,n)),e.max=(t,n)=>e.check(Si(t,n)),e.int=t=>e.check(Oa(t)),e.safe=t=>e.check(Oa(t)),e.positive=t=>e.check(Ci(0,t)),e.nonnegative=t=>e.check(wi(0,t)),e.negative=t=>e.check(xi(0,t)),e.nonpositive=t=>e.check(Si(0,t)),e.multipleOf=(t,n)=>e.check(Ti(t,n)),e.step=(t,n)=>e.check(Ti(t,n)),e.finite=()=>e;let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null});function Ea(e){return _i(Ta,e)}const Da=O(`ZodNumberFormat`,(e,t)=>{ur.init(e,t),Ta.init(e,t)});function Oa(e){return vi(Da,e)}const ka=O(`ZodUnknown`,(e,t)=>{dr.init(e,t),P.init(e,t)});function Aa(){return yi(ka)}const ja=O(`ZodNever`,(e,t)=>{fr.init(e,t),P.init(e,t)});function Ma(e){return bi(ja,e)}const Na=O(`ZodArray`,(e,t)=>{mr.init(e,t),P.init(e,t),e.element=t.element,e.min=(t,n)=>e.check(Di(t,n)),e.nonempty=t=>e.check(Di(1,t)),e.max=(t,n)=>e.check(Ei(t,n)),e.length=(t,n)=>e.check(Oi(t,n)),e.unwrap=()=>e.element});function Pa(e,t){return Bi(Na,e,t)}const Fa=O(`ZodObject`,(e,t)=>{_r.init(e,t),P.init(e,t),k(e,`shape`,()=>t.shape),e.keyof=()=>Ha(Object.keys(e._zod.def.shape)),e.catchall=t=>e.clone({...e._zod.def,catchall:t}),e.passthrough=()=>e.clone({...e._zod.def,catchall:Aa()}),e.loose=()=>e.clone({...e._zod.def,catchall:Aa()}),e.strict=()=>e.clone({...e._zod.def,catchall:Ma()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=t=>vt(e,t),e.merge=t=>yt(e,t),e.pick=t=>gt(e,t),e.omit=t=>_t(e,t),e.partial=(...t)=>bt(Ga,e,t[0]),e.required=(...t)=>xt($a,e,t[0])});function Ia(e,t){let n={type:`object`,get shape(){return at(this,`shape`,{...e}),this.shape},...A(t)};return new Fa(n)}const La=O(`ZodUnion`,(e,t)=>{yr.init(e,t),P.init(e,t),e.options=t.options});function Ra(e,t){return new La({type:`union`,options:e,...A(t)})}const za=O(`ZodIntersection`,(e,t)=>{br.init(e,t),P.init(e,t)});function Ba(e,t){return new za({type:`intersection`,left:e,right:t})}const Va=O(`ZodEnum`,(e,t)=>{Cr.init(e,t),P.init(e,t),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new Va({...t,checks:[],...A(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new Va({...t,checks:[],...A(r),entries:i})}});function Ha(e,t){let n=Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e;return new Va({type:`enum`,entries:n,...A(t)})}const Ua=O(`ZodTransform`,(e,t)=>{wr.init(e,t),P.init(e,t),e._zod.parse=(n,r)=>{n.addIssue=r=>{if(typeof r==`string`)n.issues.push(Dt(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=n.value,t.inst??=e,t.continue??=!0,n.issues.push(Dt(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n)):(n.value=i,n)}});function Wa(e){return new Ua({type:`transform`,transform:e})}const Ga=O(`ZodOptional`,(e,t)=>{Tr.init(e,t),P.init(e,t),e.unwrap=()=>e._zod.def.innerType});function Ka(e){return new Ga({type:`optional`,innerType:e})}const qa=O(`ZodNullable`,(e,t)=>{Er.init(e,t),P.init(e,t),e.unwrap=()=>e._zod.def.innerType});function Ja(e){return new qa({type:`nullable`,innerType:e})}const Ya=O(`ZodDefault`,(e,t)=>{Dr.init(e,t),P.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function Xa(e,t){return new Ya({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():t}})}const Za=O(`ZodPrefault`,(e,t)=>{kr.init(e,t),P.init(e,t),e.unwrap=()=>e._zod.def.innerType});function Qa(e,t){return new Za({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():t}})}const $a=O(`ZodNonOptional`,(e,t)=>{Ar.init(e,t),P.init(e,t),e.unwrap=()=>e._zod.def.innerType});function eo(e,t){return new $a({type:`nonoptional`,innerType:e,...A(t)})}const to=O(`ZodCatch`,(e,t)=>{Mr.init(e,t),P.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function no(e,t){return new to({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}const ro=O(`ZodPipe`,(e,t)=>{Nr.init(e,t),P.init(e,t),e.in=t.in,e.out=t.out});function io(e,t){return new ro({type:`pipe`,in:e,out:t})}const ao=O(`ZodReadonly`,(e,t)=>{Fr.init(e,t),P.init(e,t)});function oo(e){return new ao({type:`readonly`,innerType:e})}const so=O(`ZodCustom`,(e,t)=>{Lr.init(e,t),P.init(e,t)});function co(e,t){let n=new j({check:`custom`,...A(t)});return n._zod.check=e,n}function lo(e,t={}){return Vi(so,e,t)}function uo(e,t){let n=co(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(Dt(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,r.input??=t.value,r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(Dt(r))}},e(t.value,t)),t);return n}const fo=Ia({receivedStatus:Ea(),targetStatus:Ea(),message:aa().optional(),condition:aa().optional()}),po={100:`Continue`,101:`Switching Protocols`,102:`Processing`,200:`OK`,201:`Created`,202:`Accepted`,203:`Non-Authoritative Information`,204:`No Content`,205:`Reset Content`,206:`Partial Content`,207:`Multi-Status`,208:`Already Reported`,226:`IM Used`,300:`Multiple Choices`,301:`Moved Permanently`,302:`Found`,303:`See Other`,304:`Not Modified`,305:`Use Proxy`,307:`Temporary Redirect`,308:`Permanent Redirect`,400:`Bad request`,401:`Unauthorized`,402:`Payment Required`,403:`Forbidden`,404:`Not Found`,405:`Method Not Allowed`,406:`Not Acceptable`,407:`Proxy Authentication Required`,408:`Request Timeout`,409:`Conflict`,410:`Gone`,411:`Length Required`,412:`Precondition Failed`,413:`Payload Too Large`,414:`URI Too Long`,415:`Unsupported Media Type`,416:`Range Not Satisfiable`,417:`Expectation Failed`,418:`I'm a teapot`,421:`Misdirected Request`,422:`Unprocessable Entity`,423:`Locked`,424:`Failed Dependency`,425:`Too Early`,426:`Upgrade Required`,428:`Precondition Required`,429:`Too many Requests`,431:`Request Header Fields Too Large`,451:`Unavailable For Legal Reasons`,499:`Client Closed Request`,500:`Internal server error`,501:`Not Implemented`,502:`Bad Gateway`,503:`Unavailable`,504:`Gateway Timeout`,505:`HTTP Version Not Supported`,506:`Variant Also Negotiates`,507:`Insufficient Storage`,508:`Loop Detected`,510:`Not Extended`,511:`Network Authentication Required`};var mo=class e extends Error{response;constructor(t,n){super(n),this.name=`HttpResponseError`,this.response=t,this.message=n??`HTTP error: ${t.status}`,Error.captureStackTrace&&Error.captureStackTrace(this,e)}toString(){let e=this.message?`: ${this.message}`:``;return`${this.name} [${this.response.status}]${e}`}},ho=class{static createInstance({interceptors:e,instanceConfig:t,httpAgentConfig:n,logger:r,context:i}){let a=new f.default.Agent(n),o=d.default.create({...t,httpAgent:a});if(e){let t={axiosInstance:o,logger:r,context:i};this.applyInterceptors(o,e,t)}return o}static applyInterceptors(e,t,n){let{requestConfigs:r=[],responseConfigs:i=[]}=t,a=[{type:`request`,configs:r},{type:`response`,configs:i}];a.forEach(t=>{let{configs:r,type:i}=t;r.forEach(t=>{let{onFulfilled:r,onRejected:a,options:o}=t;if(i===`request`){let t=[this.resolveInterceptorInstance(r,n),this.resolveInterceptorInstance(a,n),o];e.interceptors.request.use(...t)}if(i===`response`){let t=[this.resolveInterceptorInstance(r,n),this.resolveInterceptorInstance(a,n)];e.interceptors.response.use(...t)}})})}static resolveInterceptorInstance(e,t){return(0,l.notMissing)(e)&&(0,l.isFunction)(e)&&typeof e(t)==`function`?e(t):e??null}};const go=300;var _o=class e{static instance=null;static logger=null;dataStore=null;constructor(e){this.initialize(e)}static getInstance(t){return(0,l.isMissing)(e.instance)&&(e.instance=new e(t)),e.instance}initialize(t){this.dataStore=new E({instantiator:e.name,logger:t,typeGuard:e=>(0,l.notMissing)(e)}),e.logger=t??null,e.logger?.info({category:e.name,message:`InstanceManager initialized.`})}async get(t){return this.ensureReady(),await e.getInstance().dataStore?.getData(t)??null}async set(t,n,r){return this.ensureReady(),await e.getInstance().dataStore?.setData({key:t,value:n,cacheTTL:(0,l.notMissing)(r)?r:go})??!1}ensureReady(){this.isReady()||this.initialize()}isReady(){return(0,l.notMissing)(this?.dataStore)}close(){e.instance=null,this.dataStore=null}};const vo=_o.getInstance(),yo=()=>{let e=e=>{let{response:t}=e;return e?.code===`ERR_CANCELED`&&(e.response={...t,status:499,statusText:`Request aborted`}),Promise.reject(e)};return e};let bo=function(e){return e.RateLimitManagerInitializationError=`RateLimitManagerInitializationError`,e}({});const xo=7.5,So={mainRatelimit:25};let Co=function(e){return e.incr=`incr`,e}({});const wo={[Co.incr]:`
|
|
143
|
+
local targetKey = KEYS[1]
|
|
144
|
+
local totalLimit = tonumber(ARGV[1])
|
|
145
|
+
|
|
146
|
+
local shouldWait = false
|
|
147
|
+
local totalCount = 0
|
|
148
|
+
local now = redis.call('TIME')[1]
|
|
149
|
+
|
|
150
|
+
-- Check each key from KEYS[2] onward
|
|
151
|
+
for i = 2, #KEYS do
|
|
152
|
+
local key = KEYS[i]
|
|
153
|
+
local limit = tonumber(ARGV[i])
|
|
154
|
+
|
|
155
|
+
local count = tonumber(redis.call('GET', key)) or 0
|
|
156
|
+
totalCount = totalCount + count
|
|
157
|
+
|
|
158
|
+
-- If the limit is met for the target key then we should wait
|
|
159
|
+
if count >= limit and key == targetKey then
|
|
160
|
+
shouldWait = true
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
-- If the total limit is met, we should wait
|
|
165
|
+
if totalCount >= totalLimit then
|
|
166
|
+
shouldWait = true
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
-- If any rate limit is exceeded, return the next expiration time
|
|
170
|
+
if shouldWait then
|
|
171
|
+
return now + 1
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
-- No limits exceeded, increment the target key and set expiration for 1 second
|
|
175
|
+
local exists = redis.call('EXISTS', targetKey)
|
|
176
|
+
|
|
177
|
+
redis.call('INCR', targetKey)
|
|
178
|
+
|
|
179
|
+
if exists == 0 then
|
|
180
|
+
redis.call('EXPIRE', targetKey, 1)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
return nil
|
|
184
|
+
`},To=1,Eo=1e3,Do=0,Oo=59,ko=.8,Ao=500;var jo=class e extends he{static instance=null;static asyncInstanceInit=null;static logger;static initConfig=null;static async getInstance(t,n,r){return(0,l.notMissing)(e.instance)?e.instance:((0,l.isMissing)(e.asyncInstanceInit)&&((0,l.isMissing)(e.initConfig)?e.initConfig={config:t,logger:n,scriptMap:r}:(t=e.initConfig.config,n=e.initConfig.logger,r=e.initConfig.scriptMap),this.logger=n??e.logger,e.asyncInstanceInit=(async()=>{try{let i=new e(wo);if((0,l.isMissing)(t))throw Error(`Redis client configuration is required to initialize RateLimitManager.`);return await i.initialize({redisClientConfig:t,logger:n,scriptMap:r}),e.instance=i,i}catch(t){throw e.logger?.error({message:`Error initializing RateLimitManager: ${t}`,category:e.name,code:bo.RateLimitManagerInitializationError}),t}finally{e.asyncInstanceInit=null}})()),e.asyncInstanceInit)}async getDynamicMaxWaitTime(e,t,n,r=Oo,i=ko,a=Ao){await this.readyCheck();let o=e.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(n??``):n?.includes(e.urlPattern))?.rateLimit??e.mainRatelimit;if(o<=Do)throw Error(`Requests per second (rps) must be greater than 0.`);let s=t.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(n??``):n?.includes(e.urlPattern))?.maxConcurrency??t.mainMaxConcurrency;if(s<=Do)throw Error(`Concurrency must be greater than 0.`);let c=r*i,l=Math.min(o,s/(a/Eo)),u=To/l,d=Math.max(xo,c*u);return Math.min(c,d)}async getWaitTime(e,t,n){await this.readyCheck();let r=`rateLimit:${e}`,i=t.subPools?.find(e=>e.urlPattern instanceof RegExp?e.urlPattern.test(n??``):n?.includes(e.urlPattern))?.subPoolKey,a=(0,l.notMissing)(i)?`${r}-${i}`:r,{mainRatelimit:o,subPools:s}=t,c=[{key:r,rateLimit:o},...s?.map(e=>{let{subPoolKey:t,rateLimit:n}=e;return{key:`${r}-${t}`,rateLimit:n}})??[]],u=c.map(e=>e.key),d=c.map(e=>e.rateLimit);return await this.executeScript(Co.incr,[a,...u],[o.toString(),...d.map(String)])??0}async readyCheck(){await e.getInstance()}static async isReady(){try{let t=await e.getInstance();return(0,l.notMissing)(t.cacheClient)&&(0,l.notMissing)(t.scriptMap)}catch{return!1}}static close(){let t=e.instance;(0,l.notMissing)(t)&&(t.cacheClient=null,t.scriptMap?.clear()),e.asyncInstanceInit=null,e.instance=null,e.initConfig=null}};const Mo=(e,t,n,r)=>{let i=Error(e);return i.config={...t,headers:{}},i.code=n,i.response=r,i.isAxiosError=!0,i},No=(e,t,n)=>{let r=t.signal;return r?r.aborted?Promise.reject(Mo(`Request aborted`,t,`ERR_CANCELED`,n)):new Promise((i,a)=>{let o=!1,s,c=Mo(`Request aborted`,t,`ERR_CANCELED`,n),l=()=>{if(!o){o=!0,s&&(0,m.clearTimeout)(s);try{r.removeEventListener?.(`abort`,u)}catch{}}},u=()=>{l(),a(c)},d=()=>{l(),i()};try{r.addEventListener?.(`abort`,u,{once:!0})}catch{s=setTimeout(()=>{i()},e);return}if(r.aborted){l(),a(c);return}s=setTimeout(d,e)}):new Promise(t=>setTimeout(t,e))},Po=`checkConcurrencyInterceptor`,Fo=({logger:e,context:t,requestConfig:n})=>{let r=async r=>{if(r.signal?.aborted)return Promise.reject(Mo(`Request aborted`,r,`ERR_CANCELED`));if((0,l.isMissing)(t))e?.warning({category:`HttpClient`,message:`No context for this request - that doesn't seem right.`,context:{interceptor:Po,...r,headers:void 0}});else if((0,l.notMissing)(t.provider)&&(0,l.notMissing)(t.accountSecureId)){let i=(0,p.randomUUID)(),{provider:a,accountSecureId:o}=t,s=n?.rateLimits??So,c=n?.concurrency??Ue,l=await jo.getInstance(),u=await qe.getInstance(),d=await l.getDynamicMaxWaitTime(s,c,r.url),f=async()=>u.registerRequest(`${o}-${a}`,c,i,r.url),m,h=0;for(;h<=d;){let n=Math.floor(Date.now()/1e3),i=await l.getWaitTime(`${o}-${a}`,s,r.url)??0,c=Math.max(i-n,0);if(i===0){m=await f();break}if(await No(c*1e3,r),h+=c,h>=d){m=await f(),e?.warning({category:`HttpClient`,message:`Max Wait Time Exceeded for ${a} - Account: ${o}`,context:{...t,interceptor:Po,...r,headers:void 0,dynamicMaxWaitTime:d}});break}}return{...r,requestMetadata:m}}return r};return r},Io=1,Lo=10,Ro=5,zo=3250368e4,Bo=1e3,Vo=/^\d+(\.\d+)?$/,Ho=1e3,Uo=e=>e<zo?e*Bo:e;var Wo=o((exports,t)=>{function n(){return t.exports=n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},t.exports.__esModule=!0,t.exports.default=t.exports,n.apply(null,arguments)}t.exports=n,t.exports.__esModule=!0,t.exports.default=t.exports}),Go={epsilon:1e-12,matrix:`Matrix`,number:`number`,precision:64,predictable:!1,randomSeed:null};function I(e){return typeof e==`number`}function Ko(e){return!e||typeof e!=`object`||typeof e.constructor!=`function`?!1:e.isBigNumber===!0&&typeof e.constructor.prototype==`object`&&e.constructor.prototype.isBigNumber===!0||typeof e.constructor.isDecimal==`function`&&e.constructor.isDecimal(e)===!0}function qo(e){return e&&typeof e==`object`&&Object.getPrototypeOf(e).isComplex===!0||!1}function Jo(e){return e&&typeof e==`object`&&Object.getPrototypeOf(e).isFraction===!0||!1}function Yo(e){return e&&e.constructor.prototype.isUnit===!0||!1}function Xo(e){return typeof e==`string`}var L=Array.isArray;function Zo(e){return e&&e.constructor.prototype.isMatrix===!0||!1}function Qo(e){return Array.isArray(e)||Zo(e)}function $o(e){return e&&e.isDenseMatrix&&e.constructor.prototype.isMatrix===!0||!1}function es(e){return e&&e.isSparseMatrix&&e.constructor.prototype.isMatrix===!0||!1}function ts(e){return e&&e.constructor.prototype.isRange===!0||!1}function ns(e){return e&&e.constructor.prototype.isIndex===!0||!1}function rs(e){return typeof e==`boolean`}function os(e){return e&&e.constructor.prototype.isResultSet===!0||!1}function ss(e){return e&&e.constructor.prototype.isHelp===!0||!1}function cs(e){return typeof e==`function`}function ls(e){return e instanceof Date}function us(e){return e instanceof RegExp}function ds(e){return!!(e&&typeof e==`object`&&e.constructor===Object&&!qo(e)&&!Jo(e))}function fs(e){return e===null}function ps(e){return e===void 0}function ms(e){return e&&e.isAccessorNode===!0&&e.constructor.prototype.isNode===!0||!1}function hs(e){return e&&e.isArrayNode===!0&&e.constructor.prototype.isNode===!0||!1}function gs(e){return e&&e.isAssignmentNode===!0&&e.constructor.prototype.isNode===!0||!1}function _s(e){return e&&e.isBlockNode===!0&&e.constructor.prototype.isNode===!0||!1}function vs(e){return e&&e.isConditionalNode===!0&&e.constructor.prototype.isNode===!0||!1}function ys(e){return e&&e.isConstantNode===!0&&e.constructor.prototype.isNode===!0||!1}function bs(e){return e&&e.isFunctionAssignmentNode===!0&&e.constructor.prototype.isNode===!0||!1}function xs(e){return e&&e.isFunctionNode===!0&&e.constructor.prototype.isNode===!0||!1}function Ss(e){return e&&e.isIndexNode===!0&&e.constructor.prototype.isNode===!0||!1}function Cs(e){return e&&e.isNode===!0&&e.constructor.prototype.isNode===!0||!1}function ws(e){return e&&e.isObjectNode===!0&&e.constructor.prototype.isNode===!0||!1}function Ts(e){return e&&e.isOperatorNode===!0&&e.constructor.prototype.isNode===!0||!1}function Es(e){return e&&e.isParenthesisNode===!0&&e.constructor.prototype.isNode===!0||!1}function Ds(e){return e&&e.isRangeNode===!0&&e.constructor.prototype.isNode===!0||!1}function Os(e){return e&&e.isRelationalNode===!0&&e.constructor.prototype.isNode===!0||!1}function ks(e){return e&&e.isSymbolNode===!0&&e.constructor.prototype.isNode===!0||!1}function As(e){return e&&e.constructor.prototype.isChain===!0||!1}function js(e){var t=typeof e;return t===`object`?e===null?`null`:Ko(e)?`BigNumber`:e.constructor&&e.constructor.name?e.constructor.name:`Object`:t}function Ms(e){var t=typeof e;if(t===`number`||t===`string`||t===`boolean`||e==null)return e;if(typeof e.clone==`function`)return e.clone();if(Array.isArray(e))return e.map(function(e){return Ms(e)});if(e instanceof Date)return new Date(e.valueOf());if(Ko(e))return e;if(ds(e))return Ns(e,Ms);throw TypeError(`Cannot clone: unknown type of value (value: ${e})`)}function Ns(e,t){var n={};for(var r in e)Fs(e,r)&&(n[r]=t(e[r]));return n}function Ps(e,t){var n,r,i;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(r=0,i=e.length;r<i;r++)if(!Ps(e[r],t[r]))return!1;return!0}else if(typeof e==`function`)return e===t;else if(e instanceof Object){if(Array.isArray(t)||!(t instanceof Object))return!1;for(n in e)if(!(n in t)||!Ps(e[n],t[n]))return!1;for(n in t)if(!(n in e))return!1;return!0}else return e===t}function Fs(e,t){return e&&Object.hasOwnProperty.call(e,t)}function Is(e,t){for(var n={},r=0;r<t.length;r++){var i=t[r],a=e[i];a!==void 0&&(n[i]=a)}return n}var Ls=[`Matrix`,`Array`],Rs=[`number`,`BigNumber`,`Fraction`],zs=c(Wo(),1),Bs=function(e){if(e)throw Error(`The global config is readonly.
|
|
185
|
+
Please create a mathjs instance if you want to change the default configuration.
|
|
186
|
+
Example:
|
|
187
|
+
|
|
188
|
+
import { create, all } from 'mathjs';
|
|
189
|
+
const mathjs = create(all);
|
|
190
|
+
mathjs.config({ number: 'BigNumber' });
|
|
191
|
+
`);return Object.freeze(Go)};(0,zs.default)(Bs,Go,{MATRIX_OPTIONS:Ls,NUMBER_OPTIONS:Rs});var Vs=o((exports,t)=>{(function(n,r){typeof exports==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n=typeof globalThis<`u`?globalThis:n||self,n[`'typed'`]=r())})(void 0,function(){"use strict";function e(){return!0}function t(){return!1}function n(){}let r=`Argument is not a typed-function.`;function i(){function a(e){return typeof e==`object`&&!!e&&e.constructor===Object}let o=[{name:`number`,test:function(e){return typeof e==`number`}},{name:`string`,test:function(e){return typeof e==`string`}},{name:`boolean`,test:function(e){return typeof e==`boolean`}},{name:`Function`,test:function(e){return typeof e==`function`}},{name:`Array`,test:Array.isArray},{name:`Date`,test:function(e){return e instanceof Date}},{name:`RegExp`,test:function(e){return e instanceof RegExp}},{name:`Object`,test:a},{name:`null`,test:function(e){return e===null}},{name:`undefined`,test:function(e){return e===void 0}}],s={name:`any`,test:e,isAny:!0},c,l,u=0,d={createCount:0};function f(e){let t=c.get(e);if(t)return t;let n=`Unknown type "`+e+`"`,r=e.toLowerCase(),i;for(i of l)if(i.toLowerCase()===r){n+=`. Did you mean "`+i+`" ?`;break}throw TypeError(n)}function p(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`any`,n=t?f(t).index:l.length,r=[];for(let t=0;t<e.length;++t){if(!e[t]||typeof e[t].name!=`string`||typeof e[t].test!=`function`)throw TypeError(`Object with properties {name: string, test: function} expected`);let i=e[t].name;if(c.has(i))throw TypeError(`Duplicate type name "`+i+`"`);r.push(i),c.set(i,{name:i,test:e[t].test,isAny:e[t].isAny,index:n+t,conversionsTo:[]})}let i=l.slice(n);l=l.slice(0,n).concat(r).concat(i);for(let e=n+r.length;e<l.length;++e)c.get(l[e]).index=e}function m(){c=new Map,l=[],u=0,p([s],!1)}m(),p(o);function h(){let e;for(e of l)c.get(e).conversionsTo=[];u=0}function g(e){let t=l.filter(t=>{let n=c.get(t);return!n.isAny&&n.test(e)});return t.length?t:[`any`]}function _(e){return e&&typeof e==`function`&&`_typedFunctionData`in e}function v(e,t,n){if(!_(e))throw TypeError(r);let i=n&&n.exact,a=Array.isArray(t)?t.join(`,`):t,o=ne(a),s=x(o);if(!i||s in e.signatures){let t=e._typedFunctionData.signatureMap.get(s);if(t)return t}let c=o.length,l;if(i){l=[];let t;for(t in e.signatures)l.push(e._typedFunctionData.signatureMap.get(t))}else l=e._typedFunctionData.signatures;for(let e=0;e<c;++e){let t=o[e],n=[],r;for(r of l){let i=ie(r.params,e);if(!i||t.restParam&&!i.restParam)continue;if(!i.hasAny){let e=te(i);if(t.types.some(t=>!e.has(t.name)))continue}n.push(r)}if(l=n,l.length===0)break}let u;for(u of l)if(u.params.length<=c)return u;throw TypeError(`Signature not found (signature: `+(e.name||`unnamed`)+`(`+x(o,`, `)+`))`)}function y(e,t,n){return v(e,t,n).implementation}function b(e,t){let n=f(t);if(n.test(e))return e;let r=n.conversionsTo;if(r.length===0)throw Error(`There are no conversions to `+t+` defined.`);for(let t=0;t<r.length;t++){let n=f(r[t].from);if(n.test(e))return r[t].convert(e)}throw Error(`Cannot convert `+e+` to `+t)}function x(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`,`;return e.map(e=>e.name).join(t)}function S(e){let t=e.indexOf(`...`)===0,n=t?e.length>3?e.slice(3):`any`:e,r=n.split(`|`).map(e=>f(e.trim())),i=!1,a=t?`...`:``,o=r.map(function(e){return i=e.isAny||i,a+=e.name+`|`,{name:e.name,typeIndex:e.index,test:e.test,isAny:e.isAny,conversion:null,conversionIndex:-1}});return{types:o,name:a.slice(0,-1),hasAny:i,hasConversion:!1,restParam:t}}function ee(e){let t=e.types.map(e=>e.name),n=ue(t),r=e.hasAny,i=e.name,a=n.map(function(e){let t=f(e.from);return r=t.isAny||r,i+=`|`+e.from,{name:e.from,typeIndex:t.index,test:t.test,isAny:t.isAny,conversion:e,conversionIndex:e.index}});return{types:e.types.concat(a),name:i,hasAny:r,hasConversion:a.length>0,restParam:e.restParam}}function te(e){return e.typeSet||(e.typeSet=new Set,e.types.forEach(t=>e.typeSet.add(t.name))),e.typeSet}function ne(e){let t=[];if(typeof e!=`string`)throw TypeError(`Signatures must be strings`);let n=e.trim();if(n===``)return t;let r=n.split(`,`);for(let e=0;e<r.length;++e){let n=S(r[e].trim());if(n.restParam&&e!==r.length-1)throw SyntaxError(`Unexpected rest parameter "`+r[e]+`": only allowed for the last parameter`);if(n.types.length===0)return null;t.push(n)}return t}function C(e){let t=Se(e);return t?t.restParam:!1}function w(t){if(!t||t.types.length===0)return e;if(t.types.length===1)return f(t.types[0].name).test;if(t.types.length===2){let e=f(t.types[0].name).test,n=f(t.types[1].name).test;return function(t){return e(t)||n(t)}}else{let e=t.types.map(function(e){return f(e.name).test});return function(t){for(let n=0;n<e.length;n++)if(e[n](t))return!0;return!1}}}function re(e){let t,n,r;if(C(e)){t=xe(e).map(w);let n=t.length,r=w(Se(e)),i=function(e){for(let t=n;t<e.length;t++)if(!r(e[t]))return!1;return!0};return function(e){for(let n=0;n<t.length;n++)if(!t[n](e[n]))return!1;return i(e)&&e.length>=n+1}}else if(e.length===0)return function(e){return e.length===0};else if(e.length===1)return n=w(e[0]),function(e){return n(e[0])&&e.length===1};else if(e.length===2)return n=w(e[0]),r=w(e[1]),function(e){return n(e[0])&&r(e[1])&&e.length===2};else return t=e.map(w),function(e){for(let n=0;n<t.length;n++)if(!t[n](e[n]))return!1;return e.length===t.length}}function ie(e,t){return t<e.length?e[t]:C(e)?Se(e):null}function ae(e,t){let n=ie(e,t);return n?te(n):new Set}function T(e){return e.conversion===null||e.conversion===void 0}function E(e,t){let n=new Set;return e.forEach(e=>{let r=ae(e.params,t),i;for(i of r)n.add(i)}),n.has(`any`)?[`any`]:Array.from(n)}function oe(e,t,n){let r,i,a=e||`unnamed`,o=n,s;for(s=0;s<t.length;s++){let e=[];if(o.forEach(n=>{let r=ie(n.params,s),i=w(r);(s<n.params.length||C(n.params))&&i(t[s])&&e.push(n)}),e.length===0){if(i=E(o,s),i.length>0){let e=g(t[s]);return r=TypeError(`Unexpected type of argument in function `+a+` (expected: `+i.join(` or `)+`, actual: `+e.join(` | `)+`, index: `+s+`)`),r.data={category:`wrongType`,fn:a,index:s,actual:e,expected:i},r}}else o=e}let c=o.map(function(e){return C(e.params)?1/0:e.params.length});if(t.length<Math.min.apply(null,c))return i=E(o,s),r=TypeError(`Too few arguments in function `+a+` (expected: `+i.join(` or `)+`, index: `+t.length+`)`),r.data={category:`tooFewArgs`,fn:a,index:t.length,expected:i},r;let l=Math.max.apply(null,c);if(t.length>l)return r=TypeError(`Too many arguments in function `+a+` (expected: `+l+`, actual: `+t.length+`)`),r.data={category:`tooManyArgs`,fn:a,index:t.length,expectedLength:l},r;let u=[];for(let e=0;e<t.length;++e)u.push(g(t[e]).join(`|`));return r=TypeError(`Arguments of type "`+u.join(`, `)+`" do not match any of the defined signatures of function `+a+`.`),r.data={category:`mismatch`,actual:u},r}function se(e){let t=l.length+1;for(let n=0;n<e.types.length;n++)T(e.types[n])&&(t=Math.min(t,e.types[n].typeIndex));return t}function ce(e){let t=u+1;for(let n=0;n<e.types.length;n++)T(e.types[n])||(t=Math.min(t,e.types[n].conversionIndex));return t}function le(e,t){if(e.hasAny){if(!t.hasAny)return 1}else if(t.hasAny)return-1;if(e.restParam){if(!t.restParam)return 1}else if(t.restParam)return-1;if(e.hasConversion){if(!t.hasConversion)return 1}else if(t.hasConversion)return-1;let n=se(e)-se(t);if(n<0)return-1;if(n>0)return 1;let r=ce(e)-ce(t);return r<0?-1:r>0?1:0}function D(e,t){let n=e.params,r=t.params,i=Se(n),a=Se(r),o=C(n),s=C(r);if(o&&i.hasAny){if(!s||!a.hasAny)return 1}else if(s&&a.hasAny)return-1;let c=0,l=0,u;for(u of n)u.hasAny&&++c,u.hasConversion&&++l;let d=0,f=0;for(u of r)u.hasAny&&++d,u.hasConversion&&++f;if(c!==d)return c-d;if(o&&i.hasConversion){if(!s||!a.hasConversion)return 1}else if(s&&a.hasConversion)return-1;if(l!==f)return l-f;if(o){if(!s)return 1}else if(s)return-1;let p=(n.length-r.length)*(o?-1:1);if(p!==0)return p;let m=[],h=0;for(let e=0;e<n.length;++e){let t=le(n[e],r[e]);m.push(t),h+=t}if(h!==0)return h;let g;for(g of m)if(g!==0)return g;return 0}function ue(e){if(e.length===0)return[];let t=e.map(f);e.length>1&&t.sort((e,t)=>e.index-t.index);let n=t[0].conversionsTo;if(e.length===1)return n;n=n.concat([]);let r=new Set(e);for(let e=1;e<t.length;++e){let i;for(i of t[e].conversionsTo)r.has(i.from)||(n.push(i),r.add(i.from))}return n}function de(e,t){let n=t;if(e.some(e=>e.hasConversion)){let r=C(e),i=e.map(fe);n=function(){let e=[],n=r?arguments.length-1:arguments.length;for(let t=0;t<n;t++)e[t]=i[t](arguments[t]);return r&&(e[n]=arguments[n].map(i[n])),t.apply(this,e)}}let r=n;if(C(e)){let t=e.length-1;r=function(){return n.apply(this,Ce(arguments,0,t).concat([Ce(arguments,t)]))}}return r}function fe(e){let t,n,r,i,a=[],o=[];switch(e.types.forEach(function(e){e.conversion&&(a.push(f(e.conversion.from).test),o.push(e.conversion.convert))}),o.length){case 0:return function(e){return e};case 1:return t=a[0],r=o[0],function(e){return t(e)?r(e):e};case 2:return t=a[0],n=a[1],r=o[0],i=o[1],function(e){return t(e)?r(e):n(e)?i(e):e};default:return function(e){for(let t=0;t<o.length;t++)if(a[t](e))return o[t](e);return e}}}function pe(e){function t(e,n,r){if(n<e.length){let i=e[n],a=[];if(i.restParam){let e=i.types.filter(T);e.length<i.types.length&&a.push({types:e,name:`...`+e.map(e=>e.name).join(`|`),hasAny:e.some(e=>e.isAny),hasConversion:!1,restParam:!0}),a.push(i)}else a=i.types.map(function(e){return{types:[e],name:e.name,hasAny:e.isAny,hasConversion:e.conversion,restParam:!1}});return Te(a,function(i){return t(e,n+1,r.concat([i]))})}else return[r]}return t(e,0,[])}function me(e,t){let n=Math.max(e.length,t.length);for(let r=0;r<n;r++){let n=ae(e,r),i=ae(t,r),a=!1,o;for(o of i)if(n.has(o)){a=!0;break}if(!a)return!1}let r=e.length,i=t.length,a=C(e),o=C(t);return a?o?r===i:i>=r:o?r>=i:r===i}function he(e){return e.map(e=>Ae(e)?Oe(e.referToSelf.callback):ke(e)?De(e.referTo.references,e.referTo.callback):e)}function ge(e,t,n){let r=[],i;for(i of e){let e=n[i];if(typeof e!=`number`)throw TypeError(`No definition for referenced signature "`+i+`"`);if(e=t[e],typeof e!=`function`)return!1;r.push(e)}return r}function _e(e,t,n){let r=he(e),i=Array(r.length).fill(!1),a=!0;for(;a;){a=!1;let e=!0;for(let o=0;o<r.length;++o){if(i[o])continue;let s=r[o];if(Ae(s))r[o]=s.referToSelf.callback(n),r[o].referToSelf=s.referToSelf,i[o]=!0,e=!1;else if(ke(s)){let n=ge(s.referTo.references,r,t);n?(r[o]=s.referTo.callback.apply(this,n),r[o].referTo=s.referTo,i[o]=!0,e=!1):a=!0}}if(e&&a)throw SyntaxError(`Circular reference detected in resolving typed.referTo`)}return r}function ve(e){let t=/\bthis(\(|\.signatures\b)/;Object.keys(e).forEach(n=>{let r=e[n];if(t.test(r.toString()))throw SyntaxError("Using `this` to self-reference a function is deprecated since typed-function@3. Use typed.referTo and typed.referToSelf instead.")})}function ye(e,r){if(d.createCount++,Object.keys(r).length===0)throw SyntaxError(`No signatures provided`);d.warnAgainstDeprecatedThis&&ve(r);let i=[],a=[],o={},s=[],c;for(c in r){if(!Object.prototype.hasOwnProperty.call(r,c))continue;let e=ne(c);if(!e)continue;i.forEach(function(t){if(me(t,e))throw TypeError(`Conflicting signatures "`+x(t)+`" and "`+x(e)+`".`)}),i.push(e);let t=a.length;a.push(r[c]);let n=e.map(ee),l;for(l of pe(n)){let e=x(l);s.push({params:l,name:e,fn:t}),l.every(e=>!e.hasConversion)&&(o[e]=t)}}s.sort(D);let l=_e(a,o,Pe),u;for(u in o)Object.prototype.hasOwnProperty.call(o,u)&&(o[u]=l[o[u]]);let f=[],p=new Map;for(u of s)p.has(u.name)||(u.fn=l[u.fn],f.push(u),p.set(u.name,u));let m=f[0]&&f[0].params.length<=2&&!C(f[0].params),h=f[1]&&f[1].params.length<=2&&!C(f[1].params),g=f[2]&&f[2].params.length<=2&&!C(f[2].params),_=f[3]&&f[3].params.length<=2&&!C(f[3].params),v=f[4]&&f[4].params.length<=2&&!C(f[4].params),y=f[5]&&f[5].params.length<=2&&!C(f[5].params),b=m&&h&&g&&_&&v&&y;for(let e=0;e<f.length;++e)f[e].test=re(f[e].params);let S=m?w(f[0].params[0]):t,te=h?w(f[1].params[0]):t,ie=g?w(f[2].params[0]):t,ae=_?w(f[3].params[0]):t,T=v?w(f[4].params[0]):t,E=y?w(f[5].params[0]):t,oe=m?w(f[0].params[1]):t,se=h?w(f[1].params[1]):t,ce=g?w(f[2].params[1]):t,le=_?w(f[3].params[1]):t,ue=v?w(f[4].params[1]):t,fe=y?w(f[5].params[1]):t;for(let e=0;e<f.length;++e)f[e].implementation=de(f[e].params,f[e].fn);let he=m?f[0].implementation:n,ge=h?f[1].implementation:n,ye=g?f[2].implementation:n,be=_?f[3].implementation:n,xe=v?f[4].implementation:n,Se=y?f[5].implementation:n,Ce=m?f[0].params.length:-1,we=h?f[1].params.length:-1,Te=g?f[2].params.length:-1,Ee=_?f[3].params.length:-1,De=v?f[4].params.length:-1,Oe=y?f[5].params.length:-1,ke=b?6:0,Ae=f.length,je=f.map(e=>e.test),Me=f.map(e=>e.implementation),Ne=function(){for(let e=ke;e<Ae;e++)if(je[e](arguments))return Me[e].apply(this,arguments);return d.onMismatch(e,arguments,f)};function Pe(e,t){return arguments.length===Ce&&S(e)&&oe(t)?he.apply(this,arguments):arguments.length===we&&te(e)&&se(t)?ge.apply(this,arguments):arguments.length===Te&&ie(e)&&ce(t)?ye.apply(this,arguments):arguments.length===Ee&&ae(e)&&le(t)?be.apply(this,arguments):arguments.length===De&&T(e)&&ue(t)?xe.apply(this,arguments):arguments.length===Oe&&E(e)&&fe(t)?Se.apply(this,arguments):Ne.apply(this,arguments)}try{Object.defineProperty(Pe,`name`,{value:e})}catch{}return Pe.signatures=o,Pe._typedFunctionData={signatures:f,signatureMap:p},Pe}function be(e,t,n){throw oe(e,t,n)}function xe(e){return Ce(e,0,e.length-1)}function Se(e){return e[e.length-1]}function Ce(e,t,n){return Array.prototype.slice.call(e,t,n)}function we(e,t){for(let n=0;n<e.length;n++)if(t(e[n]))return e[n]}function Te(e,t){return Array.prototype.concat.apply([],e.map(t))}function Ee(){let e=xe(arguments).map(e=>x(ne(e))),t=Se(arguments);if(typeof t!=`function`)throw TypeError(`Callback function expected as last argument`);return De(e,t)}function De(e,t){return{referTo:{references:e,callback:t}}}function Oe(e){if(typeof e!=`function`)throw TypeError(`Callback function expected as first argument`);return{referToSelf:{callback:e}}}function ke(e){return e&&typeof e.referTo==`object`&&Array.isArray(e.referTo.references)&&typeof e.referTo.callback==`function`}function Ae(e){return e&&typeof e.referToSelf==`object`&&typeof e.referToSelf.callback==`function`}function je(e,t){if(!e)return t;if(t&&t!==e){let n=Error(`Function names do not match (expected: `+e+`, actual: `+t+`)`);throw n.data={actual:t,expected:e},n}return e}function Me(e){let t;for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&(_(e[n])||typeof e[n].signature==`string`)&&(t=je(t,e[n].name));return t}function Ne(e,t){let n;for(n in t)if(Object.prototype.hasOwnProperty.call(t,n)){if(n in e&&t[n]!==e[n]){let r=Error(`Signature "`+n+`" is defined twice`);throw r.data={signature:n,sourceFunction:t[n],destFunction:e[n]},r}e[n]=t[n]}}let Pe=d;d=function(e){let t=typeof e==`string`,n=t?1:0,r=t?e:``,i={};for(let e=n;e<arguments.length;++e){let n=arguments[e],o={},s;if(typeof n==`function`?(s=n.name,typeof n.signature==`string`?o[n.signature]=n:_(n)&&(o=n.signatures)):a(n)&&(o=n,t||(s=Me(n))),Object.keys(o).length===0){let t=TypeError(`Argument to 'typed' at index `+e+` is not a (typed) function, nor an object with signatures as keys and functions as values.`);throw t.data={index:e,argument:n},t}t||(r=je(r,s)),Ne(i,o)}return ye(r||``,i)},d.create=i,d.createCount=Pe.createCount,d.onMismatch=be,d.throwMismatchError=be,d.createError=oe,d.clear=m,d.clearConversions=h,d.addTypes=p,d._findType=f,d.referTo=Ee,d.referToSelf=Oe,d.convert=b,d.findSignature=v,d.find=y,d.isTypedFunction=_,d.warnAgainstDeprecatedThis=!0,d.addType=function(e,t){let n=`any`;t!==!1&&c.has(`Object`)&&(n=`Object`),d.addTypes([e],n)};function Fe(e){if(!e||typeof e.from!=`string`||typeof e.to!=`string`||typeof e.convert!=`function`)throw TypeError(`Object with properties {from: string, to: string, convert: function} expected`);if(e.to===e.from)throw SyntaxError(`Illegal to define conversion from "`+e.from+`" to itself.`)}return d.addConversion=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{override:!1};Fe(e);let n=f(e.to),r=n.conversionsTo.find(t=>t.from===e.from);if(r)if(t&&t.override)d.removeConversion({from:r.from,to:e.to,convert:r.convert});else throw Error(`There is already a conversion from "`+e.from+`" to "`+n.name+`"`);n.conversionsTo.push({from:e.from,convert:e.convert,index:u++})},d.addConversions=function(e,t){e.forEach(e=>d.addConversion(e,t))},d.removeConversion=function(e){Fe(e);let t=f(e.to),n=we(t.conversionsTo,t=>t.from===e.from);if(!n)throw Error(`Attempt to remove nonexistent conversion from `+e.from+` to `+e.to);if(n.convert!==e.convert)throw Error(`Conversion to remove does not match existing conversion`);let r=t.conversionsTo.indexOf(n);t.conversionsTo.splice(r,1)},d.resolve=function(e,t){if(!_(e))throw TypeError(r);let n=e._typedFunctionData.signatures;for(let e=0;e<n.length;++e)if(n[e].test(t))return n[e];return null},d}var a=i();return a})});function R(e){return typeof e==`boolean`?!0:isFinite(e)?e===Math.round(e):!1}function Hs(e,t,n){var r={2:`0b`,8:`0o`,16:`0x`},i=r[t],a=``;if(n){if(n<1)throw Error(`size must be in greater than 0`);if(!R(n))throw Error(`size must be an integer`);if(e>2**(n-1)-1||e<-(2**(n-1)))throw Error(`Value must be in range [-2^${n-1}, 2^${n-1}-1]`);if(!R(e))throw Error(`Value must be an integer`);e<0&&(e+=2**n),a=`i${n}`}var o=``;return e<0&&(e=-e,o=`-`),`${o}${i}${e.toString(t)}${a}`}function Us(e,t){if(typeof t==`function`)return t(e);if(e===1/0)return`Infinity`;if(e===-1/0)return`-Infinity`;if(isNaN(e))return`NaN`;var n=`auto`,r,i;if(t&&(t.notation&&(n=t.notation),I(t)?r=t:I(t.precision)&&(r=t.precision),t.wordSize&&(i=t.wordSize,typeof i!=`number`)))throw Error(`Option "wordSize" must be a number`);switch(n){case`fixed`:return Ks(e,r);case`exponential`:return qs(e,r);case`engineering`:return Gs(e,r);case`bin`:return Hs(e,2,i);case`oct`:return Hs(e,8,i);case`hex`:return Hs(e,16,i);case`auto`:return Js(e,r,t&&t).replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return e===`.`?t:e+t});default:throw Error(`Unknown notation "`+n+`". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.`)}}function Ws(e){var t=String(e).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/);if(!t)throw SyntaxError(`Invalid number `+e);var n=t[1],r=t[2],i=parseFloat(t[4]||`0`),a=r.indexOf(`.`);i+=a===-1?r.length-1:a-1;var o=r.replace(`.`,``).replace(/^0*/,function(e){return i-=e.length,``}).replace(/0*$/,``).split(``).map(function(e){return parseInt(e)});return o.length===0&&(o.push(0),i++),{sign:n,coefficients:o,exponent:i}}function Gs(e,t){if(isNaN(e)||!isFinite(e))return String(e);var n=Ws(e),r=Ys(n,t),i=r.exponent,a=r.coefficients,o=i%3==0?i:i<0?i-3-i%3:i-i%3;if(I(t))for(;t>a.length||i-o+1>a.length;)a.push(0);else for(var s=Math.abs(i-o)-(a.length-1),c=0;c<s;c++)a.push(0);for(var l=Math.abs(i-o),u=1;l>0;)u++,l--;var d=a.slice(u).join(``),f=I(t)&&d.length||d.match(/[1-9]/)?`.`+d:``,p=a.slice(0,u).join(``)+f+`e`+(i>=0?`+`:``)+o.toString();return r.sign+p}function Ks(e,t){if(isNaN(e)||!isFinite(e))return String(e);var n=Ws(e),r=typeof t==`number`?Ys(n,n.exponent+1+t):n,i=r.coefficients,a=r.exponent+1,o=a+(t||0);return i.length<o&&(i=i.concat(Xs(o-i.length))),a<0&&(i=Xs(-a+1).concat(i),a=1),a<i.length&&i.splice(a,0,a===0?`0.`:`.`),r.sign+i.join(``)}function qs(e,t){if(isNaN(e)||!isFinite(e))return String(e);var n=Ws(e),r=t?Ys(n,t):n,i=r.coefficients,a=r.exponent;i.length<t&&(i=i.concat(Xs(t-i.length)));var o=i.shift();return r.sign+o+(i.length>0?`.`+i.join(``):``)+`e`+(a>=0?`+`:``)+a}function Js(e,t,n){if(isNaN(e)||!isFinite(e))return String(e);var r=n&&n.lowerExp!==void 0?n.lowerExp:-3,i=n&&n.upperExp!==void 0?n.upperExp:5,a=Ws(e),o=t?Ys(a,t):a;if(o.exponent<r||o.exponent>=i)return qs(e,t);var s=o.coefficients,c=o.exponent;s.length<t&&(s=s.concat(Xs(t-s.length))),s=s.concat(Xs(c-s.length+1+(s.length<t?t-s.length:0))),s=Xs(-c).concat(s);var l=c>0?c:0;return l<s.length-1&&s.splice(l+1,0,`.`),o.sign+s.join(``)}function Ys(e,t){for(var n={sign:e.sign,coefficients:e.coefficients,exponent:e.exponent},r=n.coefficients;t<=0;)r.unshift(0),n.exponent++,t++;if(r.length>t){var i=r.splice(t,r.length-t);if(i[0]>=5){var a=t-1;for(r[a]++;r[a]===10;)r.pop(),a===0&&(r.unshift(0),n.exponent++,a++),a--,r[a]++}}return n}function Xs(e){for(var t=[],n=0;n<e;n++)t.push(0);return t}function Zs(e){return e.toExponential().replace(/e.*$/,``).replace(/^0\.?0*|\./,``).length}var Qs=2**-52||2220446049250313e-31;function $s(e,t,n){var r=e.constructor,i=new r(2),a=``;if(n){if(n<1)throw Error(`size must be in greater than 0`);if(!R(n))throw Error(`size must be an integer`);if(e.greaterThan(i.pow(n-1).sub(1))||e.lessThan(i.pow(n-1).mul(-1)))throw Error(`Value must be in range [-2^${n-1}, 2^${n-1}-1]`);if(!e.isInteger())throw Error(`Value must be an integer`);e.lessThan(0)&&(e=e.add(i.pow(n))),a=`i${n}`}switch(t){case 2:return`${e.toBinary()}${a}`;case 8:return`${e.toOctal()}${a}`;case 16:return`${e.toHexadecimal()}${a}`;default:throw Error(`Base ${t} not supported `)}}function ec(e,t){if(typeof t==`function`)return t(e);if(!e.isFinite())return e.isNaN()?`NaN`:e.gt(0)?`Infinity`:`-Infinity`;var n=`auto`,r,i;if(t!==void 0&&(t.notation&&(n=t.notation),typeof t==`number`?r=t:t.precision!==void 0&&(r=t.precision),t.wordSize&&(i=t.wordSize,typeof i!=`number`)))throw Error(`Option "wordSize" must be a number`);switch(n){case`fixed`:return rc(e,r);case`exponential`:return nc(e,r);case`engineering`:return tc(e,r);case`bin`:return $s(e,2,i);case`oct`:return $s(e,8,i);case`hex`:return $s(e,16,i);case`auto`:var a=t&&t.lowerExp!==void 0?t.lowerExp:-3,o=t&&t.upperExp!==void 0?t.upperExp:5;if(e.isZero())return`0`;var s,c=e.toSignificantDigits(r),l=c.e;return s=l>=a&&l<o?c.toFixed():nc(e,r),s.replace(/((\.\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return e===`.`?t:e+t});default:throw Error(`Unknown notation "`+n+`". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.`)}}function tc(e,t){var n=e.e,r=n%3==0?n:n<0?n-3-n%3:n-n%3,i=e.mul(10**-r),a=i.toPrecision(t);if(a.indexOf(`e`)!==-1){var o=e.constructor;a=new o(a).toFixed()}return a+`e`+(n>=0?`+`:``)+r.toString()}function nc(e,t){return t===void 0?e.toExponential():e.toExponential(t-1)}function rc(e,t){return e.toFixed(t)}function ic(e,t){var n=ac(e,t);return t&&typeof t==`object`&&`truncate`in t&&n.length>t.truncate?n.substring(0,t.truncate-3)+`...`:n}function ac(e,t){if(typeof e==`number`)return Us(e,t);if(Ko(e))return ec(e,t);if(lc(e))return!t||t.fraction!==`decimal`?e.s*e.n+`/`+e.d:e.toString();if(Array.isArray(e))return cc(e,t);if(Xo(e))return oc(e);if(typeof e==`function`)return e.syntax?String(e.syntax):`function`;if(e&&typeof e==`object`){if(typeof e.format==`function`)return e.format(t);if(e&&e.toString(t)!=={}.toString())return e.toString(t);var n=Object.keys(e).map(n=>oc(n)+`: `+ic(e[n],t));return`{`+n.join(`, `)+`}`}return String(e)}function oc(e){for(var t=String(e),n=``,r=0;r<t.length;){var i=t.charAt(r);n+=i in sc?sc[i]:i,r++}return`"`+n+`"`}var sc={'"':`\\"`,"\\":`\\\\`,"\b":`\\b`,"\f":`\\f`,"\n":`\\n`,"\r":`\\r`," ":`\\t`};function cc(e,t){if(Array.isArray(e)){for(var n=`[`,r=e.length,i=0;i<r;i++)i!==0&&(n+=`, `),n+=cc(e[i],t);return n+=`]`,n}else return ic(e,t)}function lc(e){return e&&typeof e==`object`&&typeof e.s==`number`&&typeof e.n==`number`&&typeof e.d==`number`||!1}function z(e,t,n){if(!(this instanceof z))throw SyntaxError(`Constructor must be called with the new operator`);this.actual=e,this.expected=t,this.relation=n,this.message=`Dimension mismatch (`+(Array.isArray(e)?`[`+e.join(`, `)+`]`:e)+` `+(this.relation||`!=`)+` `+(Array.isArray(t)?`[`+t.join(`, `)+`]`:t)+`)`,this.stack=Error().stack}z.prototype=RangeError(),z.prototype.constructor=RangeError,z.prototype.name=`DimensionError`,z.prototype.isDimensionError=!0;function uc(e,t,n){if(!(this instanceof uc))throw SyntaxError(`Constructor must be called with the new operator`);this.index=e,arguments.length<3?(this.min=0,this.max=t):(this.min=t,this.max=n),this.min!==void 0&&this.index<this.min?this.message=`Index out of range (`+this.index+` < `+this.min+`)`:this.max!==void 0&&this.index>=this.max?this.message=`Index out of range (`+this.index+` > `+(this.max-1)+`)`:this.message=`Index out of range (`+this.index+`)`,this.stack=Error().stack}uc.prototype=RangeError(),uc.prototype.constructor=RangeError,uc.prototype.name=`IndexError`,uc.prototype.isIndexError=!0;var dc=c(Wo(),1);function fc(e){for(var t=[];Array.isArray(e);)t.push(e.length),e=e[0];return t}function pc(e,t,n){var r,i=e.length;if(i!==t[n])throw new z(i,t[n]);if(n<t.length-1){var a=n+1;for(r=0;r<i;r++){var o=e[r];if(!Array.isArray(o))throw new z(t.length-1,t.length,`<`);pc(e[r],t,a)}}else for(r=0;r<i;r++)if(Array.isArray(e[r]))throw new z(t.length+1,t.length,`>`)}function mc(e,t){var n=t.length===0;if(n){if(Array.isArray(e))throw new z(e.length,0)}else pc(e,t,0)}function B(e,t){if(e!==void 0){if(!I(e)||!R(e))throw TypeError(`Index must be an integer (value: `+e+`)`);if(e<0||typeof t==`number`&&e>=t)throw new uc(e,t)}}function hc(e,t,n){if(!Array.isArray(t))throw TypeError(`Array expected`);if(t.length===0)throw Error(`Resizing to scalar is not supported`);t.forEach(function(e){if(!I(e)||!R(e)||e<0)throw TypeError(`Invalid size, must contain positive integers (size: `+ic(t)+`)`)}),(I(e)||Ko(e))&&(e=[e]);var r=n===void 0?0:n;return gc(e,t,0,r),e}function gc(e,t,n,r){var i,a,o=e.length,s=t[n],c=Math.min(o,s);if(e.length=s,n<t.length-1){var l=n+1;for(i=0;i<c;i++)a=e[i],Array.isArray(a)||(a=[a],e[i]=a),gc(a,t,l,r);for(i=c;i<s;i++)a=[],e[i]=a,gc(a,t,l,r)}else{for(i=0;i<c;i++)for(;Array.isArray(e[i]);)e[i]=e[i][0];for(i=c;i<s;i++)e[i]=r}}function _c(e,t){var n=Cc(e),r=n.length;if(!Array.isArray(e)||!Array.isArray(t))throw TypeError(`Array expected`);if(t.length===0)throw new z(0,r,`!=`);t=vc(t,r);var i=yc(t);if(r!==i)throw new z(i,r,`!=`);try{return bc(n,t)}catch(e){throw e instanceof z?new z(i,r,`!=`):e}}function vc(e,t){var n=yc(e),r=e.slice(),i=-1,a=e.indexOf(i),o=e.indexOf(i,a+1)>=0;if(o)throw Error(`More than one wildcard in sizes`);var s=a>=0,c=t%n===0;if(s)if(c)r[a]=-t/n;else throw Error(`Could not replace wildcard, since `+t+` is no multiple of `+-n);return r}function yc(e){return e.reduce((e,t)=>e*t,1)}function bc(e,t){for(var n=e,r,i=t.length-1;i>0;i--){var a=t[i];r=[];for(var o=n.length/a,s=0;s<o;s++)r.push(n.slice(s*a,(s+1)*a));n=r}return n}function xc(e,t,n,r){var i=r||fc(e);if(n)for(var a=0;a<n;a++)e=[e],i.unshift(1);for(e=Sc(e,t,0);i.length<t;)i.push(1);return e}function Sc(e,t,n){var r,i;if(Array.isArray(e)){var a=n+1;for(r=0,i=e.length;r<i;r++)e[r]=Sc(e[r],t,a)}else for(var o=n;o<t;o++)e=[e];return e}function Cc(e){if(!Array.isArray(e))return e;var t=[];return e.forEach(function e(n){Array.isArray(n)?n.forEach(e):t.push(n)}),t}function wc(e,t){for(var n,r=0,i=0;i<e.length;i++){var a=e[i],o=Array.isArray(a);if(i===0&&o&&(r=a.length),o&&a.length!==r)return;var s=o?wc(a,t):t(a);if(n===void 0)n=s;else if(n!==s)return`mixed`}return n}function Tc(e,t,n,r){if(r<n){if(e.length!==t.length)throw new z(e.length,t.length);for(var i=[],a=0;a<e.length;a++)i[a]=Tc(e[a],t[a],n,r+1);return i}else return e.concat(t)}function Ec(){var e=Array.prototype.slice.call(arguments,0,-1),t=Array.prototype.slice.call(arguments,-1);if(e.length===1)return e[0];if(e.length>1)return e.slice(1).reduce(function(e,n){return Tc(e,n,t,0)},e[0]);throw Error(`Wrong number of arguments in function concat`)}function Dc(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var r=t.map(e=>e.length),i=Math.max(...r),a=Array(i).fill(null),o=0;o<t.length;o++)for(var s=t[o],c=r[o],l=0;l<c;l++){var u=i-c+l;s[l]>a[u]&&(a[u]=s[l])}for(var d=0;d<t.length;d++)Oc(t[d],a);return a}function Oc(e,t){for(var n=t.length,r=e.length,i=0;i<r;i++){var a=n-r+i;if(e[i]<t[a]&&e[i]>1||e[i]>t[a])throw Error(`shape missmatch: missmatch is found in arg with shape (${e}) not possible to broadcast dimension ${r} with size ${e[i]} to size ${t[a]}`)}}function kc(e,t){var n=fc(e);if(Ps(n,t))return e;Oc(n,t);var r=Dc(n,t),i=r.length,a=[...Array(i-n.length).fill(1),...n],o=jc(e);n.length<i&&(o=_c(o,a),n=fc(o));for(var s=0;s<i;s++)n[s]<r[s]&&(o=Ac(o,r[s],s),n=fc(o));return o}function Ac(e,t,n){return Ec(...Array(t).fill(e),n)}function jc(e){return(0,dc.default)([],e)}function Mc(e,t,n,r){function i(r){var i=Is(r,t.map(Fc));return Nc(e,t,r),n(i)}return i.isFactory=!0,i.fn=e,i.dependencies=t.slice().sort(),r&&(i.meta=r),i}function Nc(e,t,n){var r=t.filter(e=>!Pc(e)).every(e=>n[e]!==void 0);if(!r){var i=t.filter(e=>n[e]===void 0);throw Error(`Cannot create function "${e}", some dependencies are missing: ${i.map(e=>`"${e}"`).join(`, `)}.`)}}function Pc(e){return e&&e[0]===`?`}function Fc(e){return e&&e[0]===`?`?e.slice(1):e}function Ic(e,t){if(Vc(e)&&zc(e,t))return e[t];throw typeof e[t]==`function`&&Bc(e,t)?Error(`Cannot access method "`+t+`" as a property`):Error(`No access to property "`+t+`"`)}function Lc(e,t,n){if(Vc(e)&&zc(e,t))return e[t]=n,n;throw Error(`No access to property "`+t+`"`)}function Rc(e,t){return t in e}function zc(e,t){return!e||typeof e!=`object`?!1:Fs(Hc,t)?!0:!(t in Object.prototype||t in Function.prototype)}function Bc(e,t){return e==null||typeof e[t]!=`function`||Fs(e,t)&&Object.getPrototypeOf&&t in Object.getPrototypeOf(e)?!1:Fs(Uc,t)?!0:!(t in Object.prototype||t in Function.prototype)}function Vc(e){return typeof e==`object`&&e&&e.constructor===Object}var Hc={length:!0,name:!0},Uc={toString:!0,valueOf:!0,toLocaleString:!0},Wc=class{constructor(e){this.wrappedObject=e}keys(){return Object.keys(this.wrappedObject)}get(e){return Ic(this.wrappedObject,e)}set(e,t){return Lc(this.wrappedObject,e,t),this}has(e){return Rc(this.wrappedObject,e)}};function Gc(e){return e?e instanceof Map||e instanceof Wc||typeof e.set==`function`&&typeof e.get==`function`&&typeof e.keys==`function`&&typeof e.has==`function`:!1}var Kc=c(Vs(),1),qc=function(){return qc=Kc.default.create,Kc.default},Jc=[`?BigNumber`,`?Complex`,`?DenseMatrix`,`?Fraction`],Yc=Mc(`typed`,Jc,function(e){var{BigNumber:t,Complex:n,DenseMatrix:r,Fraction:i}=e,a=qc();return a.clear(),a.addTypes([{name:`number`,test:I},{name:`Complex`,test:qo},{name:`BigNumber`,test:Ko},{name:`Fraction`,test:Jo},{name:`Unit`,test:Yo},{name:`identifier`,test:e=>Xo&&/^(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])*$/.test(e)},{name:`string`,test:Xo},{name:`Chain`,test:As},{name:`Array`,test:L},{name:`Matrix`,test:Zo},{name:`DenseMatrix`,test:$o},{name:`SparseMatrix`,test:es},{name:`Range`,test:ts},{name:`Index`,test:ns},{name:`boolean`,test:rs},{name:`ResultSet`,test:os},{name:`Help`,test:ss},{name:`function`,test:cs},{name:`Date`,test:ls},{name:`RegExp`,test:us},{name:`null`,test:fs},{name:`undefined`,test:ps},{name:`AccessorNode`,test:ms},{name:`ArrayNode`,test:hs},{name:`AssignmentNode`,test:gs},{name:`BlockNode`,test:_s},{name:`ConditionalNode`,test:vs},{name:`ConstantNode`,test:ys},{name:`FunctionNode`,test:xs},{name:`FunctionAssignmentNode`,test:bs},{name:`IndexNode`,test:Ss},{name:`Node`,test:Cs},{name:`ObjectNode`,test:ws},{name:`OperatorNode`,test:Ts},{name:`ParenthesisNode`,test:Es},{name:`RangeNode`,test:Ds},{name:`RelationalNode`,test:Os},{name:`SymbolNode`,test:ks},{name:`Map`,test:Gc},{name:`Object`,test:ds}]),a.addConversions([{from:`number`,to:`BigNumber`,convert:function(e){if(t||Xc(e),Zs(e)>15)throw TypeError(`Cannot implicitly convert a number with >15 significant digits to BigNumber (value: `+e+`). Use function bignumber(x) to convert to BigNumber.`);return new t(e)}},{from:`number`,to:`Complex`,convert:function(e){return n||Zc(e),new n(e,0)}},{from:`BigNumber`,to:`Complex`,convert:function(e){return n||Zc(e),new n(e.toNumber(),0)}},{from:`Fraction`,to:`BigNumber`,convert:function(e){throw TypeError(`Cannot implicitly convert a Fraction to BigNumber or vice versa. Use function bignumber(x) to convert to BigNumber or fraction(x) to convert to Fraction.`)}},{from:`Fraction`,to:`Complex`,convert:function(e){return n||Zc(e),new n(e.valueOf(),0)}},{from:`number`,to:`Fraction`,convert:function(e){i||$c(e);var t=new i(e);if(t.valueOf()!==e)throw TypeError(`Cannot implicitly convert a number to a Fraction when there will be a loss of precision (value: `+e+`). Use function fraction(x) to convert to Fraction.`);return t}},{from:`string`,to:`number`,convert:function(e){var t=Number(e);if(isNaN(t))throw Error(`Cannot convert "`+e+`" to a number`);return t}},{from:`string`,to:`BigNumber`,convert:function(e){t||Xc(e);try{return new t(e)}catch{throw Error(`Cannot convert "`+e+`" to BigNumber`)}}},{from:`string`,to:`Fraction`,convert:function(e){i||$c(e);try{return new i(e)}catch{throw Error(`Cannot convert "`+e+`" to Fraction`)}}},{from:`string`,to:`Complex`,convert:function(e){n||Zc(e);try{return new n(e)}catch{throw Error(`Cannot convert "`+e+`" to Complex`)}}},{from:`boolean`,to:`number`,convert:function(e){return+e}},{from:`boolean`,to:`BigNumber`,convert:function(e){return t||Xc(e),new t(+e)}},{from:`boolean`,to:`Fraction`,convert:function(e){return i||$c(e),new i(+e)}},{from:`boolean`,to:`string`,convert:function(e){return String(e)}},{from:`Array`,to:`Matrix`,convert:function(e){return r||Qc(),new r(e)}},{from:`Matrix`,to:`Array`,convert:function(e){return e.valueOf()}}]),a.onMismatch=(e,t,n)=>{var r=a.createError(e,t,n);if([`wrongType`,`mismatch`].includes(r.data.category)&&t.length===1&&Qo(t[0])&&n.some(e=>!e.params.includes(`,`))){var i=TypeError(`Function '${e}' doesn't apply to matrices. To call it elementwise on a matrix 'M', try 'map(M, ${e})'.`);throw i.data=r.data,i}throw r},a.onMismatch=(e,t,n)=>{var r=a.createError(e,t,n);if([`wrongType`,`mismatch`].includes(r.data.category)&&t.length===1&&Qo(t[0])&&n.some(e=>!e.params.includes(`,`))){var i=TypeError(`Function '${e}' doesn't apply to matrices. To call it elementwise on a matrix 'M', try 'map(M, ${e})'.`);throw i.data=r.data,i}throw r},a});function Xc(e){throw Error(`Cannot convert value ${e} into a BigNumber: no class 'BigNumber' provided`)}function Zc(e){throw Error(`Cannot convert value ${e} into a Complex number: no class 'Complex' provided`)}function Qc(){throw Error(`Cannot convert array into a Matrix: no class 'DenseMatrix' provided`)}function $c(e){throw Error(`Cannot convert value ${e} into a Fraction, no class 'Fraction' provided.`)}
|
|
192
|
+
/*!
|
|
193
|
+
|
|
194
|
+
* decimal.js v10.5.0
|
|
195
|
+
|
|
196
|
+
* An arbitrary-precision Decimal type for JavaScript.
|
|
197
|
+
|
|
198
|
+
* https://github.com/MikeMcl/decimal.js
|
|
199
|
+
|
|
200
|
+
* Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>
|
|
201
|
+
|
|
202
|
+
* MIT Licence
|
|
203
|
+
|
|
595
204
|
*/
|
|
596
|
-
var InstanceManager = class InstanceManager {
|
|
597
|
-
|
|
598
|
-
static logger = null;
|
|
599
|
-
dataStore = null;
|
|
600
|
-
constructor(logger) {
|
|
601
|
-
this.initialize(logger);
|
|
602
|
-
}
|
|
603
|
-
/**
|
|
604
|
-
* Returns the singleton instance of the InstanceManager.
|
|
605
|
-
* If it hasn't been created yet, it initializes it with optional logger.
|
|
606
|
-
*
|
|
607
|
-
* @param logger Optional logger instance.
|
|
608
|
-
* @returns The shared InstanceManager instance.
|
|
609
|
-
*/
|
|
610
|
-
static getInstance(logger) {
|
|
611
|
-
if ((0, __stackone_utils.isMissing)(InstanceManager.instance)) InstanceManager.instance = new InstanceManager(logger);
|
|
612
|
-
return InstanceManager.instance;
|
|
613
|
-
}
|
|
614
|
-
/**
|
|
615
|
-
* Initializes the internal MemoryStore with optional logger.
|
|
616
|
-
*
|
|
617
|
-
* @param logger Optional logger for debug/info messages.
|
|
618
|
-
*/
|
|
619
|
-
initialize(logger) {
|
|
620
|
-
this.dataStore = new MemoryStore({
|
|
621
|
-
instantiator: InstanceManager.name,
|
|
622
|
-
logger,
|
|
623
|
-
typeGuard: (data) => (0, __stackone_utils.notMissing)(data)
|
|
624
|
-
});
|
|
625
|
-
InstanceManager.logger = logger ?? null;
|
|
626
|
-
InstanceManager.logger?.info({
|
|
627
|
-
category: InstanceManager.name,
|
|
628
|
-
message: "InstanceManager initialized."
|
|
629
|
-
});
|
|
630
|
-
}
|
|
631
|
-
/**
|
|
632
|
-
* Retrieves a value from the cache.
|
|
633
|
-
*
|
|
634
|
-
* @param key The key to fetch.
|
|
635
|
-
* @returns The cached value, or `null` if not found.
|
|
636
|
-
*/
|
|
637
|
-
async get(key) {
|
|
638
|
-
this.ensureReady();
|
|
639
|
-
return await InstanceManager.getInstance().dataStore?.getData(key) ?? null;
|
|
640
|
-
}
|
|
641
|
-
/**
|
|
642
|
-
* Stores a value in the cache with optional TTL.
|
|
643
|
-
*
|
|
644
|
-
* @param key The key to associate with the value.
|
|
645
|
-
* @param value The value to store.
|
|
646
|
-
* @param cacheTTL Optional TTL in seconds (defaults to `DEFAULT_INSTANCE_TTL`).
|
|
647
|
-
* @returns `true` if successfully stored, `false` otherwise.
|
|
648
|
-
*/
|
|
649
|
-
async set(key, value, cacheTTL) {
|
|
650
|
-
this.ensureReady();
|
|
651
|
-
return await InstanceManager.getInstance().dataStore?.setData({
|
|
652
|
-
key,
|
|
653
|
-
value,
|
|
654
|
-
cacheTTL: (0, __stackone_utils.notMissing)(cacheTTL) ? cacheTTL : DEFAULT_INSTANCE_TTL
|
|
655
|
-
}) ?? false;
|
|
656
|
-
}
|
|
657
|
-
/**
|
|
658
|
-
* Ensures the store is initialized. If not, reinitializes it.
|
|
659
|
-
*/
|
|
660
|
-
ensureReady() {
|
|
661
|
-
if (!this.isReady()) this.initialize();
|
|
662
|
-
}
|
|
663
|
-
/**
|
|
664
|
-
* Checks if the cache is initialized and ready.
|
|
665
|
-
*
|
|
666
|
-
* @returns `true` if ready, `false` otherwise.
|
|
667
|
-
*/
|
|
668
|
-
isReady() {
|
|
669
|
-
return (0, __stackone_utils.notMissing)(this?.dataStore);
|
|
670
|
-
}
|
|
671
|
-
/**
|
|
672
|
-
* Clears the current instance and internal store.
|
|
673
|
-
*/
|
|
674
|
-
close() {
|
|
675
|
-
InstanceManager.instance = null;
|
|
676
|
-
this.dataStore = null;
|
|
677
|
-
}
|
|
678
|
-
};
|
|
205
|
+
var el=9e15,tl=1e9,nl=`0123456789abcdef`,rl=`2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058`,il=`3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789`,al={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-el,maxE:el,crypto:!1},ol,sl,V=!0,cl=`[DecimalError] `,ll=cl+`Invalid argument: `,ul=cl+`Precision limit exceeded`,dl=cl+`crypto unavailable`,fl=`[object Decimal]`,H=Math.floor,U=Math.pow,pl=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,ml=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,hl=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,gl=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,W=1e7,G=7,_l=9007199254740991,vl=rl.length-1,yl=il.length-1,K={toStringTag:fl};K.absoluteValue=K.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),X(e)},K.ceil=function(){return X(new this.constructor(this),this.e+1,2)},K.clampedTo=K.clamp=function(e,t){var n,r=this,i=r.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(ll+t);return n=r.cmp(e),n<0?e:r.cmp(t)>0?t:new i(r)},K.comparedTo=K.cmp=function(e){var t,n,r,i,a=this,o=a.d,s=(e=new a.constructor(e)).d,c=a.s,l=e.s;if(!o||!s)return!c||!l?NaN:c===l?o===s?0:!o^c<0?1:-1:c;if(!o[0]||!s[0])return o[0]?c:s[0]?-l:0;if(c!==l)return c;if(a.e!==e.e)return a.e>e.e^c<0?1:-1;for(r=o.length,i=s.length,t=0,n=r<i?r:i;t<n;++t)if(o[t]!==s[t])return o[t]>s[t]^c<0?1:-1;return r===i?0:r>i^c<0?1:-1},K.cosine=K.cos=function(){var e,t,n=this,r=n.constructor;return n.d?n.d[0]?(e=r.precision,t=r.rounding,r.precision=e+Math.max(n.e,n.sd())+G,r.rounding=1,n=Sl(r,Bl(r,n)),r.precision=e,r.rounding=t,X(sl==2||sl==3?n.neg():n,e,t,!0)):new r(1):new r(NaN)},K.cubeRoot=K.cbrt=function(){var e,t,n,r,i,a,o,s,c,l,u=this,d=u.constructor;if(!u.isFinite()||u.isZero())return new d(u);for(V=!1,a=u.s*U(u.s*u,1/3),!a||Math.abs(a)==1/0?(n=q(u.d),e=u.e,(a=(e-n.length+1)%3)&&(n+=a==1||a==-2?`0`:`00`),a=U(n,1/3),e=H((e+1)/3)-(e%3==(e<0?-1:2)),a==1/0?n=`5e`+e:(n=a.toExponential(),n=n.slice(0,n.indexOf(`e`)+1)+e),r=new d(n),r.s=u.s):r=new d(a.toString()),o=(e=d.precision)+3;;)if(s=r,c=s.times(s).times(s),l=c.plus(u),r=Y(l.plus(u).times(s),l.plus(c),o+2,1),q(s.d).slice(0,o)===(n=q(r.d)).slice(0,o))if(n=n.slice(o-3,o+1),n==`9999`||!i&&n==`4999`){if(!i&&(X(s,e+1,0),s.times(s).times(s).eq(u))){r=s;break}o+=4,i=1}else{(!+n||!+n.slice(1)&&n.charAt(0)==`5`)&&(X(r,e+1,1),t=!r.times(r).times(r).eq(u));break}return V=!0,X(r,e,d.rounding,t)},K.decimalPlaces=K.dp=function(){var e,t=this.d,n=NaN;if(t){if(e=t.length-1,n=(e-H(this.e/G))*G,e=t[e],e)for(;e%10==0;e/=10)n--;n<0&&(n=0)}return n},K.dividedBy=K.div=function(e){return Y(this,new this.constructor(e))},K.dividedToIntegerBy=K.divToInt=function(e){var t=this,n=t.constructor;return X(Y(t,new n(e),0,1,1),n.precision,n.rounding)},K.equals=K.eq=function(e){return this.cmp(e)===0},K.floor=function(){return X(new this.constructor(this),this.e+1,3)},K.greaterThan=K.gt=function(e){return this.cmp(e)>0},K.greaterThanOrEqualTo=K.gte=function(e){var t=this.cmp(e);return t==1||t===0},K.hyperbolicCosine=K.cosh=function(){var e,t,n,r,i,a=this,o=a.constructor,s=new o(1);if(!a.isFinite())return new o(a.s?1/0:NaN);if(a.isZero())return s;n=o.precision,r=o.rounding,o.precision=n+Math.max(a.e,a.sd())+4,o.rounding=1,i=a.d.length,i<32?(e=Math.ceil(i/3),t=(1/zl(4,e)).toString()):(e=16,t=`2.3283064365386962890625e-10`),a=Rl(o,1,a.times(t),new o(1),!0);for(var c,l=e,u=new o(8);l--;)c=a.times(a),a=s.minus(c.times(u.minus(c.times(u))));return X(a,o.precision=n,o.rounding=r,!0)},K.hyperbolicSine=K.sinh=function(){var e,t,n,r,i=this,a=i.constructor;if(!i.isFinite()||i.isZero())return new a(i);if(t=a.precision,n=a.rounding,a.precision=t+Math.max(i.e,i.sd())+4,a.rounding=1,r=i.d.length,r<3)i=Rl(a,2,i,i,!0);else{e=1.4*Math.sqrt(r),e=e>16?16:e|0,i=i.times(1/zl(5,e)),i=Rl(a,2,i,i,!0);for(var o,s=new a(5),c=new a(16),l=new a(20);e--;)o=i.times(i),i=i.times(s.plus(o.times(c.times(o).plus(l))))}return a.precision=t,a.rounding=n,X(i,t,n,!0)},K.hyperbolicTangent=K.tanh=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+7,r.rounding=1,Y(n.sinh(),n.cosh(),r.precision=e,r.rounding=t)):new r(n.s)},K.inverseCosine=K.acos=function(){var e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,i=t.rounding;return n===-1?e.isZero()?El(t,r+4,i).times(.5):(t.precision=r+6,t.rounding=1,e=new t(1).minus(e).div(e.plus(1)).sqrt().atan(),t.precision=r,t.rounding=i,e.times(2)):n===0?e.isNeg()?El(t,r,i):new t(0):new t(NaN)},K.inverseHyperbolicCosine=K.acosh=function(){var e,t,n=this,r=n.constructor;return n.lte(1)?new r(n.eq(1)?0:NaN):n.isFinite()?(e=r.precision,t=r.rounding,r.precision=e+Math.max(Math.abs(n.e),n.sd())+4,r.rounding=1,V=!1,n=n.times(n).minus(1).sqrt().plus(n),V=!0,r.precision=e,r.rounding=t,n.ln()):new r(n)},K.inverseHyperbolicSine=K.asinh=function(){var e,t,n=this,r=n.constructor;return!n.isFinite()||n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+2*Math.max(Math.abs(n.e),n.sd())+6,r.rounding=1,V=!1,n=n.times(n).plus(1).sqrt().plus(n),V=!0,r.precision=e,r.rounding=t,n.ln())},K.inverseHyperbolicTangent=K.atanh=function(){var e,t,n,r,i=this,a=i.constructor;return i.isFinite()?i.e>=0?new a(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(e=a.precision,t=a.rounding,r=i.sd(),Math.max(r,e)<2*-i.e-1?X(new a(i),e,t,!0):(a.precision=n=r-i.e,i=Y(i.plus(1),new a(1).minus(i),n+e,1),a.precision=e+4,a.rounding=1,i=i.ln(),a.precision=e,a.rounding=t,i.times(.5))):new a(NaN)},K.inverseSine=K.asin=function(){var e,t,n,r,i=this,a=i.constructor;return i.isZero()?new a(i):(t=i.abs().cmp(1),n=a.precision,r=a.rounding,t===-1?(a.precision=n+6,a.rounding=1,i=i.div(new a(1).minus(i.times(i)).sqrt().plus(1)).atan(),a.precision=n,a.rounding=r,i.times(2)):t===0?(e=El(a,n+4,r).times(.5),e.s=i.s,e):new a(NaN))},K.inverseTangent=K.atan=function(){var e,t,n,r,i,a,o,s,c,l=this,u=l.constructor,d=u.precision,f=u.rounding;if(l.isFinite()){if(l.isZero())return new u(l);if(l.abs().eq(1)&&d+4<=yl)return o=El(u,d+4,f).times(.25),o.s=l.s,o}else{if(!l.s)return new u(NaN);if(d+4<=yl)return o=El(u,d+4,f).times(.5),o.s=l.s,o}for(u.precision=s=d+10,u.rounding=1,n=Math.min(28,s/G+2|0),e=n;e;--e)l=l.div(l.times(l).plus(1).sqrt().plus(1));for(V=!1,t=Math.ceil(s/G),r=1,c=l.times(l),o=new u(l),i=l;e!==-1;)if(i=i.times(c),a=o.minus(i.div(r+=2)),i=i.times(c),o=a.plus(i.div(r+=2)),o.d[t]!==void 0)for(e=t;o.d[e]===a.d[e]&&e--;);return n&&(o=o.times(2<<n-1)),V=!0,X(o,u.precision=d,u.rounding=f,!0)},K.isFinite=function(){return!!this.d},K.isInteger=K.isInt=function(){return!!this.d&&H(this.e/G)>this.d.length-2},K.isNaN=function(){return!this.s},K.isNegative=K.isNeg=function(){return this.s<0},K.isPositive=K.isPos=function(){return this.s>0},K.isZero=function(){return!!this.d&&this.d[0]===0},K.lessThan=K.lt=function(e){return this.cmp(e)<0},K.lessThanOrEqualTo=K.lte=function(e){return this.cmp(e)<1},K.logarithm=K.log=function(e){var t,n,r,i,a,o,s,c,l=this,u=l.constructor,d=u.precision,f=u.rounding,p=5;if(e==null)e=new u(10),t=!0;else{if(e=new u(e),n=e.d,e.s<0||!n||!n[0]||e.eq(1))return new u(NaN);t=e.eq(10)}if(n=l.d,l.s<0||!n||!n[0]||l.eq(1))return new u(n&&!n[0]?-1/0:l.s==1?n?0:1/0:NaN);if(t)if(n.length>1)a=!0;else{for(i=n[0];i%10==0;)i/=10;a=i!==1}if(V=!1,s=d+p,o=Nl(l,s),r=t?Tl(u,s+10):Nl(e,s),c=Y(o,r,s,1),bl(c.d,i=d,f))do if(s+=10,o=Nl(l,s),r=t?Tl(u,s+10):Nl(e,s),c=Y(o,r,s,1),!a){+q(c.d).slice(i+1,i+15)+1==1e14&&(c=X(c,d+1,0));break}while(bl(c.d,i+=10,f));return V=!0,X(c,d,f)},K.minus=K.sub=function(e){var t,n,r,i,a,o,s,c,l,u,d,f,p=this,m=p.constructor;if(e=new m(e),!p.d||!e.d)return!p.s||!e.s?e=new m(NaN):p.d?e.s=-e.s:e=new m(e.d||p.s!==e.s?p:NaN),e;if(p.s!=e.s)return e.s=-e.s,p.plus(e);if(l=p.d,f=e.d,s=m.precision,c=m.rounding,!l[0]||!f[0]){if(f[0])e.s=-e.s;else if(l[0])e=new m(p);else return new m(c===3?-0:0);return V?X(e,s,c):e}if(n=H(e.e/G),u=H(p.e/G),l=l.slice(),a=u-n,a){for(d=a<0,d?(t=l,a=-a,o=f.length):(t=f,n=u,o=l.length),r=Math.max(Math.ceil(s/G),o)+2,a>r&&(a=r,t.length=1),t.reverse(),r=a;r--;)t.push(0);t.reverse()}else{for(r=l.length,o=f.length,d=r<o,d&&(o=r),r=0;r<o;r++)if(l[r]!=f[r]){d=l[r]<f[r];break}a=0}for(d&&(t=l,l=f,f=t,e.s=-e.s),o=l.length,r=f.length-o;r>0;--r)l[o++]=0;for(r=f.length;r>a;){if(l[--r]<f[r]){for(i=r;i&&l[--i]===0;)l[i]=W-1;--l[i],l[r]+=W}l[r]-=f[r]}for(;l[--o]===0;)l.pop();for(;l[0]===0;l.shift())--n;return l[0]?(e.d=l,e.e=wl(l,n),V?X(e,s,c):e):new m(c===3?-0:0)},K.modulo=K.mod=function(e){var t,n=this,r=n.constructor;return e=new r(e),!n.d||!e.s||e.d&&!e.d[0]?new r(NaN):!e.d||n.d&&!n.d[0]?X(new r(n),r.precision,r.rounding):(V=!1,r.modulo==9?(t=Y(n,e.abs(),0,3,1),t.s*=e.s):t=Y(n,e,0,r.modulo,1),t=t.times(e),V=!0,n.minus(t))},K.naturalExponential=K.exp=function(){return Ml(this)},K.naturalLogarithm=K.ln=function(){return Nl(this)},K.negated=K.neg=function(){var e=new this.constructor(this);return e.s=-e.s,X(e)},K.plus=K.add=function(e){var t,n,r,i,a,o,s,c,l,u,d=this,f=d.constructor;if(e=new f(e),!d.d||!e.d)return!d.s||!e.s?e=new f(NaN):d.d||(e=new f(e.d||d.s===e.s?d:NaN)),e;if(d.s!=e.s)return e.s=-e.s,d.minus(e);if(l=d.d,u=e.d,s=f.precision,c=f.rounding,!l[0]||!u[0])return u[0]||(e=new f(d)),V?X(e,s,c):e;if(a=H(d.e/G),r=H(e.e/G),l=l.slice(),i=a-r,i){for(i<0?(n=l,i=-i,o=u.length):(n=u,r=a,o=l.length),a=Math.ceil(s/G),o=a>o?a+1:o+1,i>o&&(i=o,n.length=1),n.reverse();i--;)n.push(0);n.reverse()}for(o=l.length,i=u.length,o-i<0&&(i=o,n=u,u=l,l=n),t=0;i;)t=(l[--i]=l[i]+u[i]+t)/W|0,l[i]%=W;for(t&&(l.unshift(t),++r),o=l.length;l[--o]==0;)l.pop();return e.d=l,e.e=wl(l,r),V?X(e,s,c):e},K.precision=K.sd=function(e){var t,n=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(ll+e);return n.d?(t=Dl(n.d),e&&n.e+1>t&&(t=n.e+1)):t=NaN,t},K.round=function(){var e=this,t=e.constructor;return X(new t(e),e.e+1,t.rounding)},K.sine=K.sin=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+Math.max(n.e,n.sd())+G,r.rounding=1,n=Ll(r,Bl(r,n)),r.precision=e,r.rounding=t,X(sl>2?n.neg():n,e,t,!0)):new r(NaN)},K.squareRoot=K.sqrt=function(){var e,t,n,r,i,a,o=this,s=o.d,c=o.e,l=o.s,u=o.constructor;if(l!==1||!s||!s[0])return new u(!l||l<0&&(!s||s[0])?NaN:s?o:1/0);for(V=!1,l=Math.sqrt(+o),l==0||l==1/0?(t=q(s),(t.length+c)%2==0&&(t+=`0`),l=Math.sqrt(t),c=H((c+1)/2)-(c<0||c%2),l==1/0?t=`5e`+c:(t=l.toExponential(),t=t.slice(0,t.indexOf(`e`)+1)+c),r=new u(t)):r=new u(l.toString()),n=(c=u.precision)+3;;)if(a=r,r=a.plus(Y(o,a,n+2,1)).times(.5),q(a.d).slice(0,n)===(t=q(r.d)).slice(0,n))if(t=t.slice(n-3,n+1),t==`9999`||!i&&t==`4999`){if(!i&&(X(a,c+1,0),a.times(a).eq(o))){r=a;break}n+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)==`5`)&&(X(r,c+1,1),e=!r.times(r).eq(o));break}return V=!0,X(r,c,u.rounding,e)},K.tangent=K.tan=function(){var e,t,n=this,r=n.constructor;return n.isFinite()?n.isZero()?new r(n):(e=r.precision,t=r.rounding,r.precision=e+10,r.rounding=1,n=n.sin(),n.s=1,n=Y(n,new r(1).minus(n.times(n)).sqrt(),e+10,0),r.precision=e,r.rounding=t,X(sl==2||sl==4?n.neg():n,e,t,!0)):new r(NaN)},K.times=K.mul=function(e){var t,n,r,i,a,o,s,c,l,u=this,d=u.constructor,f=u.d,p=(e=new d(e)).d;if(e.s*=u.s,!f||!f[0]||!p||!p[0])return new d(!e.s||f&&!f[0]&&!p||p&&!p[0]&&!f?NaN:!f||!p?e.s/0:e.s*0);for(n=H(u.e/G)+H(e.e/G),c=f.length,l=p.length,c<l&&(a=f,f=p,p=a,o=c,c=l,l=o),a=[],o=c+l,r=o;r--;)a.push(0);for(r=l;--r>=0;){for(t=0,i=c+r;i>r;)s=a[i]+p[r]*f[i-r-1]+t,a[i--]=s%W|0,t=s/W|0;a[i]=(a[i]+t)%W|0}for(;!a[--o];)a.pop();return t?++n:a.shift(),e.d=a,e.e=wl(a,n),V?X(e,d.precision,d.rounding):e},K.toBinary=function(e,t){return Vl(this,2,e,t)},K.toDecimalPlaces=K.toDP=function(e,t){var n=this,r=n.constructor;return n=new r(n),e===void 0?n:(J(e,0,tl),t===void 0?t=r.rounding:J(t,0,8),X(n,e+n.e+1,t))},K.toExponential=function(e,t){var n,r=this,i=r.constructor;return e===void 0?n=Cl(r,!0):(J(e,0,tl),t===void 0?t=i.rounding:J(t,0,8),r=X(new i(r),e+1,t),n=Cl(r,!0,e+1)),r.isNeg()&&!r.isZero()?`-`+n:n},K.toFixed=function(e,t){var n,r,i=this,a=i.constructor;return e===void 0?n=Cl(i):(J(e,0,tl),t===void 0?t=a.rounding:J(t,0,8),r=X(new a(i),e+i.e+1,t),n=Cl(r,!1,e+r.e+1)),i.isNeg()&&!i.isZero()?`-`+n:n},K.toFraction=function(e){var t,n,r,i,a,o,s,c,l,u,d,f,p=this,m=p.d,h=p.constructor;if(!m)return new h(p);if(l=n=new h(1),r=c=new h(0),t=new h(r),a=t.e=Dl(m)-p.e-1,o=a%G,t.d[0]=U(10,o<0?G+o:o),e==null)e=a>0?t:l;else{if(s=new h(e),!s.isInt()||s.lt(l))throw Error(ll+s);e=s.gt(t)?a>0?t:l:s}for(V=!1,s=new h(q(m)),u=h.precision,h.precision=a=m.length*G*2;d=Y(s,t,0,1,1),i=n.plus(d.times(r)),i.cmp(e)!=1;)n=r,r=i,i=l,l=c.plus(d.times(i)),c=i,i=t,t=s.minus(d.times(i)),s=i;return i=Y(e.minus(n),r,0,1,1),c=c.plus(i.times(l)),n=n.plus(i.times(r)),c.s=l.s=p.s,f=Y(l,r,a,1).minus(p).abs().cmp(Y(c,n,a,1).minus(p).abs())<1?[l,r]:[c,n],h.precision=u,V=!0,f},K.toHexadecimal=K.toHex=function(e,t){return Vl(this,16,e,t)},K.toNearest=function(e,t){var n=this,r=n.constructor;if(n=new r(n),e==null){if(!n.d)return n;e=new r(1),t=r.rounding}else{if(e=new r(e),t===void 0?t=r.rounding:J(t,0,8),!n.d)return e.s?n:e;if(!e.d)return e.s&&=n.s,e}return e.d[0]?(V=!1,n=Y(n,e,0,t,1).times(e),V=!0,X(n)):(e.s=n.s,n=e),n},K.toNumber=function(){return+this},K.toOctal=function(e,t){return Vl(this,8,e,t)},K.toPower=K.pow=function(e){var t,n,r,i,a,o,s=this,c=s.constructor,l=+(e=new c(e));if(!s.d||!e.d||!s.d[0]||!e.d[0])return new c(U(+s,l));if(s=new c(s),s.eq(1))return s;if(r=c.precision,a=c.rounding,e.eq(1))return X(s,r,a);if(t=H(e.e/G),t>=e.d.length-1&&(n=l<0?-l:l)<=_l)return i=kl(c,s,n,r),e.s<0?new c(1).div(i):X(i,r,a);if(o=s.s,o<0){if(t<e.d.length-1)return new c(NaN);if(e.d[t]&1||(o=1),s.e==0&&s.d[0]==1&&s.d.length==1)return s.s=o,s}return n=U(+s,l),t=n==0||!isFinite(n)?H(l*(Math.log(`0.`+q(s.d))/Math.LN10+s.e+1)):new c(n+``).e,t>c.maxE+1||t<c.minE-1?new c(t>0?o/0:0):(V=!1,c.rounding=s.s=1,n=Math.min(12,(t+``).length),i=Ml(e.times(Nl(s,r+n)),r),i.d&&(i=X(i,r+5,1),bl(i.d,r,a)&&(t=r+10,i=X(Ml(e.times(Nl(s,t+n)),t),t+5,1),+q(i.d).slice(r+1,r+15)+1==1e14&&(i=X(i,r+1,0)))),i.s=o,V=!0,c.rounding=a,X(i,r,a))},K.toPrecision=function(e,t){var n,r=this,i=r.constructor;return e===void 0?n=Cl(r,r.e<=i.toExpNeg||r.e>=i.toExpPos):(J(e,1,tl),t===void 0?t=i.rounding:J(t,0,8),r=X(new i(r),e,t),n=Cl(r,e<=r.e||r.e<=i.toExpNeg,e)),r.isNeg()&&!r.isZero()?`-`+n:n},K.toSignificantDigits=K.toSD=function(e,t){var n=this,r=n.constructor;return e===void 0?(e=r.precision,t=r.rounding):(J(e,1,tl),t===void 0?t=r.rounding:J(t,0,8)),X(new r(n),e,t)},K.toString=function(){var e=this,t=e.constructor,n=Cl(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?`-`+n:n},K.truncated=K.trunc=function(){return X(new this.constructor(this),this.e+1,1)},K.valueOf=K.toJSON=function(){var e=this,t=e.constructor,n=Cl(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?`-`+n:n};function q(e){var t,n,r,i=e.length-1,a=``,o=e[0];if(i>0){for(a+=o,t=1;t<i;t++)r=e[t]+``,n=G-r.length,n&&(a+=Ol(n)),a+=r;o=e[t],r=o+``,n=G-r.length,n&&(a+=Ol(n))}else if(o===0)return`0`;for(;o%10==0;)o/=10;return a+o}function J(e,t,n){if(e!==~~e||e<t||e>n)throw Error(ll+e)}function bl(e,t,n,r){var i,a,o,s;for(a=e[0];a>=10;a/=10)--t;return--t<0?(t+=G,i=0):(i=Math.ceil((t+1)/G),t%=G),a=U(10,G-t),s=e[i]%a|0,r==null?t<3?(t==0?s=s/100|0:t==1&&(s=s/10|0),o=n<4&&s==99999||n>3&&s==49999||s==5e4||s==0):o=(n<4&&s+1==a||n>3&&s+1==a/2)&&(e[i+1]/a/100|0)==U(10,t-2)-1||(s==a/2||s==0)&&(e[i+1]/a/100|0)==0:t<4?(t==0?s=s/1e3|0:t==1?s=s/100|0:t==2&&(s=s/10|0),o=(r||n<4)&&s==9999||!r&&n>3&&s==4999):o=((r||n<4)&&s+1==a||!r&&n>3&&s+1==a/2)&&(e[i+1]/a/1e3|0)==U(10,t-3)-1,o}function xl(e,t,n){for(var r,i=[0],a,o=0,s=e.length;o<s;){for(a=i.length;a--;)i[a]*=t;for(i[0]+=nl.indexOf(e.charAt(o++)),r=0;r<i.length;r++)i[r]>n-1&&(i[r+1]===void 0&&(i[r+1]=0),i[r+1]+=i[r]/n|0,i[r]%=n)}return i.reverse()}function Sl(e,t){var n,r,i;if(t.isZero())return t;r=t.d.length,r<32?(n=Math.ceil(r/3),i=(1/zl(4,n)).toString()):(n=16,i=`2.3283064365386962890625e-10`),e.precision+=n,t=Rl(e,1,t.times(i),new e(1));for(var a=n;a--;){var o=t.times(t);t=o.times(o).minus(o).times(8).plus(1)}return e.precision-=n,t}var Y=function(){function e(e,t,n){var r,i=0,a=e.length;for(e=e.slice();a--;)r=e[a]*t+i,e[a]=r%n|0,i=r/n|0;return i&&e.unshift(i),e}function t(e,t,n,r){var i,a;if(n!=r)a=n>r?1:-1;else for(i=a=0;i<n;i++)if(e[i]!=t[i]){a=e[i]>t[i]?1:-1;break}return a}function n(e,t,n,r){for(var i=0;n--;)e[n]-=i,i=e[n]<t[n]?1:0,e[n]=i*r+e[n]-t[n];for(;!e[0]&&e.length>1;)e.shift()}return function(r,i,a,o,s,c){var l,u,d,f,p,m,h,g,_,v,y,b,x,S,ee,te,ne,C,w,re,ie=r.constructor,ae=r.s==i.s?1:-1,T=r.d,E=i.d;if(!T||!T[0]||!E||!E[0])return new ie(!r.s||!i.s||(T?E&&T[0]==E[0]:!E)?NaN:T&&T[0]==0||!E?ae*0:ae/0);for(c?(p=1,u=r.e-i.e):(c=W,p=G,u=H(r.e/p)-H(i.e/p)),w=E.length,ne=T.length,_=new ie(ae),v=_.d=[],d=0;E[d]==(T[d]||0);d++);if(E[d]>(T[d]||0)&&u--,a==null?(S=a=ie.precision,o=ie.rounding):S=s?a+(r.e-i.e)+1:a,S<0)v.push(1),m=!0;else{if(S=S/p+2|0,d=0,w==1){for(f=0,E=E[0],S++;(d<ne||f)&&S--;d++)ee=f*c+(T[d]||0),v[d]=ee/E|0,f=ee%E|0;m=f||d<ne}else{for(f=c/(E[0]+1)|0,f>1&&(E=e(E,f,c),T=e(T,f,c),w=E.length,ne=T.length),te=w,y=T.slice(0,w),b=y.length;b<w;)y[b++]=0;re=E.slice(),re.unshift(0),C=E[0],E[1]>=c/2&&++C;do f=0,l=t(E,y,w,b),l<0?(x=y[0],w!=b&&(x=x*c+(y[1]||0)),f=x/C|0,f>1?(f>=c&&(f=c-1),h=e(E,f,c),g=h.length,b=y.length,l=t(h,y,g,b),l==1&&(f--,n(h,w<g?re:E,g,c))):(f==0&&(l=f=1),h=E.slice()),g=h.length,g<b&&h.unshift(0),n(y,h,b,c),l==-1&&(b=y.length,l=t(E,y,w,b),l<1&&(f++,n(y,w<b?re:E,b,c))),b=y.length):l===0&&(f++,y=[0]),v[d++]=f,l&&y[0]?y[b++]=T[te]||0:(y=[T[te]],b=1);while((te++<ne||y[0]!==void 0)&&S--);m=y[0]!==void 0}v[0]||v.shift()}if(p==1)_.e=u,ol=m;else{for(d=1,f=v[0];f>=10;f/=10)d++;_.e=d+u*p-1,X(_,s?a+_.e+1:a,o,m)}return _}}();function X(e,t,n,r){var i,a,o,s,c,l,u,d,f,p=e.constructor;out:if(t!=null){if(d=e.d,!d)return e;for(i=1,s=d[0];s>=10;s/=10)i++;if(a=t-i,a<0)a+=G,o=t,u=d[f=0],c=u/U(10,i-o-1)%10|0;else if(f=Math.ceil((a+1)/G),s=d.length,f>=s)if(r){for(;s++<=f;)d.push(0);u=c=0,i=1,a%=G,o=a-G+1}else break out;else{for(u=s=d[f],i=1;s>=10;s/=10)i++;a%=G,o=a-G+i,c=o<0?0:u/U(10,i-o-1)%10|0}if(r=r||t<0||d[f+1]!==void 0||(o<0?u:u%U(10,i-o-1)),l=n<4?(c||r)&&(n==0||n==(e.s<0?3:2)):c>5||c==5&&(n==4||r||n==6&&(a>0?o>0?u/U(10,i-o):0:d[f-1])%10&1||n==(e.s<0?8:7)),t<1||!d[0])return d.length=0,l?(t-=e.e+1,d[0]=U(10,(G-t%G)%G),e.e=-t||0):d[0]=e.e=0,e;if(a==0?(d.length=f,s=1,f--):(d.length=f+1,s=U(10,G-a),d[f]=o>0?(u/U(10,i-o)%U(10,o)|0)*s:0),l)for(;;)if(f==0){for(a=1,o=d[0];o>=10;o/=10)a++;for(o=d[0]+=s,s=1;o>=10;o/=10)s++;a!=s&&(e.e++,d[0]==W&&(d[0]=1));break}else{if(d[f]+=s,d[f]!=W)break;d[f--]=0,s=1}for(a=d.length;d[--a]===0;)d.pop()}return V&&(e.e>p.maxE?(e.d=null,e.e=NaN):e.e<p.minE&&(e.e=0,e.d=[0])),e}function Cl(e,t,n){if(!e.isFinite())return Pl(e);var r,i=e.e,a=q(e.d),o=a.length;return t?(n&&(r=n-o)>0?a=a.charAt(0)+`.`+a.slice(1)+Ol(r):o>1&&(a=a.charAt(0)+`.`+a.slice(1)),a=a+(e.e<0?`e`:`e+`)+e.e):i<0?(a=`0.`+Ol(-i-1)+a,n&&(r=n-o)>0&&(a+=Ol(r))):i>=o?(a+=Ol(i+1-o),n&&(r=n-i-1)>0&&(a=a+`.`+Ol(r))):((r=i+1)<o&&(a=a.slice(0,r)+`.`+a.slice(r)),n&&(r=n-o)>0&&(i+1===o&&(a+=`.`),a+=Ol(r))),a}function wl(e,t){var n=e[0];for(t*=G;n>=10;n/=10)t++;return t}function Tl(e,t,n){if(t>vl)throw V=!0,n&&(e.precision=n),Error(ul);return X(new e(rl),t,1,!0)}function El(e,t,n){if(t>yl)throw Error(ul);return X(new e(il),t,n,!0)}function Dl(e){var t=e.length-1,n=t*G+1;if(t=e[t],t){for(;t%10==0;t/=10)n--;for(t=e[0];t>=10;t/=10)n++}return n}function Ol(e){for(var t=``;e--;)t+=`0`;return t}function kl(e,t,n,r){var i,a=new e(1),o=Math.ceil(r/G+4);for(V=!1;;){if(n%2&&(a=a.times(t),Hl(a.d,o)&&(i=!0)),n=H(n/2),n===0){n=a.d.length-1,i&&a.d[n]===0&&++a.d[n];break}t=t.times(t),Hl(t.d,o)}return V=!0,a}function Al(e){return e.d[e.d.length-1]&1}function jl(e,t,n){for(var r,i,a=new e(t[0]),o=0;++o<t.length;){if(i=new e(t[o]),!i.s){a=i;break}r=a.cmp(i),(r===n||r===0&&a.s===n)&&(a=i)}return a}function Ml(e,t){var n,r,i,a,o,s,c,l=0,u=0,d=0,f=e.constructor,p=f.rounding,m=f.precision;if(!e.d||!e.d[0]||e.e>17)return new f(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(t==null?(V=!1,c=m):c=t,s=new f(.03125);e.e>-2;)e=e.times(s),d+=5;for(r=Math.log(U(2,d))/Math.LN10*2+5|0,c+=r,n=a=o=new f(1),f.precision=c;;){if(a=X(a.times(e),c,1),n=n.times(++u),s=o.plus(Y(a,n,c,1)),q(s.d).slice(0,c)===q(o.d).slice(0,c)){for(i=d;i--;)o=X(o.times(o),c,1);if(t==null)if(l<3&&bl(o.d,c-r,p,l))f.precision=c+=10,n=a=s=new f(1),u=0,l++;else return X(o,f.precision=m,p,V=!0);else return f.precision=m,o}o=s}}function Nl(e,t){var n,r,i,a,o,s,c,l,u,d,f,p=1,m=10,h=e,g=h.d,_=h.constructor,v=_.rounding,y=_.precision;if(h.s<0||!g||!g[0]||!h.e&&g[0]==1&&g.length==1)return new _(g&&!g[0]?-1/0:h.s==1?g?0:h:NaN);if(t==null?(V=!1,u=y):u=t,_.precision=u+=m,n=q(g),r=n.charAt(0),Math.abs(a=h.e)<15e14){for(;r<7&&r!=1||r==1&&n.charAt(1)>3;)h=h.times(e),n=q(h.d),r=n.charAt(0),p++;a=h.e,r>1?(h=new _(`0.`+n),a++):h=new _(r+`.`+n.slice(1))}else return l=Tl(_,u+2,y).times(a+``),h=Nl(new _(r+`.`+n.slice(1)),u-m).plus(l),_.precision=y,t==null?X(h,y,v,V=!0):h;for(d=h,c=o=h=Y(h.minus(1),h.plus(1),u,1),f=X(h.times(h),u,1),i=3;;){if(o=X(o.times(f),u,1),l=c.plus(Y(o,new _(i),u,1)),q(l.d).slice(0,u)===q(c.d).slice(0,u))if(c=c.times(2),a!==0&&(c=c.plus(Tl(_,u+2,y).times(a+``))),c=Y(c,new _(p),u,1),t==null)if(bl(c.d,u-m,v,s))_.precision=u+=m,l=o=h=Y(d.minus(1),d.plus(1),u,1),f=X(h.times(h),u,1),i=s=1;else return X(c,_.precision=y,v,V=!0);else return _.precision=y,c;c=l,i+=2}}function Pl(e){return String(e.s*e.s/0)}function Fl(e,t){var n,r,i;for((n=t.indexOf(`.`))>-1&&(t=t.replace(`.`,``)),(r=t.search(/e/i))>0?(n<0&&(n=r),n+=+t.slice(r+1),t=t.substring(0,r)):n<0&&(n=t.length),r=0;t.charCodeAt(r)===48;r++);for(i=t.length;t.charCodeAt(i-1)===48;--i);if(t=t.slice(r,i),t){if(i-=r,e.e=n=n-r-1,e.d=[],r=(n+1)%G,n<0&&(r+=G),r<i){for(r&&e.d.push(+t.slice(0,r)),i-=G;r<i;)e.d.push(+t.slice(r,r+=G));t=t.slice(r),r=G-t.length}else r-=i;for(;r--;)t+=`0`;e.d.push(+t),V&&(e.e>e.constructor.maxE?(e.d=null,e.e=NaN):e.e<e.constructor.minE&&(e.e=0,e.d=[0]))}else e.e=0,e.d=[0];return e}function Il(e,t){var n,r,i,a,o,s,c,l,u;if(t.indexOf(`_`)>-1){if(t=t.replace(/(\d)_(?=\d)/g,`$1`),gl.test(t))return Fl(e,t)}else if(t===`Infinity`||t===`NaN`)return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(ml.test(t))n=16,t=t.toLowerCase();else if(pl.test(t))n=2;else if(hl.test(t))n=8;else throw Error(ll+t);for(a=t.search(/p/i),a>0?(c=+t.slice(a+1),t=t.substring(2,a)):t=t.slice(2),a=t.indexOf(`.`),o=a>=0,r=e.constructor,o&&(t=t.replace(`.`,``),s=t.length,a=s-a,i=kl(r,new r(n),a,a*2)),l=xl(t,n,W),u=l.length-1,a=u;l[a]===0;--a)l.pop();return a<0?new r(e.s*0):(e.e=wl(l,u),e.d=l,V=!1,o&&(e=Y(e,i,s*4)),c&&(e=e.times(Math.abs(c)<54?U(2,c):Au.pow(2,c))),V=!0,e)}function Ll(e,t){var n,r=t.d.length;if(r<3)return t.isZero()?t:Rl(e,2,t,t);n=1.4*Math.sqrt(r),n=n>16?16:n|0,t=t.times(1/zl(5,n)),t=Rl(e,2,t,t);for(var i,a=new e(5),o=new e(16),s=new e(20);n--;)i=t.times(t),t=t.times(a.plus(i.times(o.times(i).minus(s))));return t}function Rl(e,t,n,r,i){var a,o,s,c,l=1,u=e.precision,d=Math.ceil(u/G);for(V=!1,c=n.times(n),s=new e(r);;){if(o=Y(s.times(c),new e(t++*t++),u,1),s=i?r.plus(o):r.minus(o),r=Y(o.times(c),new e(t++*t++),u,1),o=s.plus(r),o.d[d]!==void 0){for(a=d;o.d[a]===s.d[a]&&a--;);if(a==-1)break}a=s,s=r,r=o,o=a,l++}return V=!0,o.d.length=d+1,o}function zl(e,t){for(var n=e;--t;)n*=e;return n}function Bl(e,t){var n,r=t.s<0,i=El(e,e.precision,1),a=i.times(.5);if(t=t.abs(),t.lte(a))return sl=r?4:1,t;if(n=t.divToInt(i),n.isZero())sl=r?3:2;else{if(t=t.minus(n.times(i)),t.lte(a))return sl=Al(n)?r?2:3:r?4:1,t;sl=Al(n)?r?1:4:r?3:2}return t.minus(i).abs()}function Vl(e,t,n,r){var i,a,o,s,c,l,u,d,f,p=e.constructor,m=n!==void 0;if(m?(J(n,1,tl),r===void 0?r=p.rounding:J(r,0,8)):(n=p.precision,r=p.rounding),!e.isFinite())u=Pl(e);else{for(u=Cl(e),o=u.indexOf(`.`),m?(i=2,t==16?n=n*4-3:t==8&&(n=n*3-2)):i=t,o>=0&&(u=u.replace(`.`,``),f=new p(1),f.e=u.length-o,f.d=xl(Cl(f),10,i),f.e=f.d.length),d=xl(u,10,i),a=c=d.length;d[--c]==0;)d.pop();if(!d[0])u=m?`0p+0`:`0`;else{if(o<0?a--:(e=new p(e),e.d=d,e.e=a,e=Y(e,f,n,r,0,i),d=e.d,a=e.e,l=ol),o=d[n],s=i/2,l||=d[n+1]!==void 0,l=r<4?(o!==void 0||l)&&(r===0||r===(e.s<0?3:2)):o>s||o===s&&(r===4||l||r===6&&d[n-1]&1||r===(e.s<0?8:7)),d.length=n,l)for(;++d[--n]>i-1;)d[n]=0,n||(++a,d.unshift(1));for(c=d.length;!d[c-1];--c);for(o=0,u=``;o<c;o++)u+=nl.charAt(d[o]);if(m){if(c>1)if(t==16||t==8){for(o=t==16?4:3,--c;c%o;c++)u+=`0`;for(d=xl(u,i,t),c=d.length;!d[c-1];--c);for(o=1,u=`1.`;o<c;o++)u+=nl.charAt(d[o])}else u=u.charAt(0)+`.`+u.slice(1);u=u+(a<0?`p`:`p+`)+a}else if(a<0){for(;++a;)u=`0`+u;u=`0.`+u}else if(++a>c)for(a-=c;a--;)u+=`0`;else a<c&&(u=u.slice(0,a)+`.`+u.slice(a))}u=(t==16?`0x`:t==2?`0b`:t==8?`0o`:``)+u}return e.s<0?`-`+u:u}function Hl(e,t){if(e.length>t)return e.length=t,!0}function Ul(e){return new this(e).abs()}function Wl(e){return new this(e).acos()}function Gl(e){return new this(e).acosh()}function Kl(e,t){return new this(e).plus(t)}function ql(e){return new this(e).asin()}function Jl(e){return new this(e).asinh()}function Yl(e){return new this(e).atan()}function Xl(e){return new this(e).atanh()}function Zl(e,t){e=new this(e),t=new this(t);var n,r=this.precision,i=this.rounding,a=r+4;return!e.s||!t.s?n=new this(NaN):!e.d&&!t.d?(n=El(this,a,1).times(t.s>0?.25:.75),n.s=e.s):!t.d||e.isZero()?(n=t.s<0?El(this,r,i):new this(0),n.s=e.s):!e.d||t.isZero()?(n=El(this,a,1).times(.5),n.s=e.s):t.s<0?(this.precision=a,this.rounding=1,n=this.atan(Y(e,t,a,1)),t=El(this,a,1),this.precision=r,this.rounding=i,n=e.s<0?n.minus(t):n.plus(t)):n=this.atan(Y(e,t,a,1)),n}function Ql(e){return new this(e).cbrt()}function $l(e){return X(e=new this(e),e.e+1,2)}function eu(e,t,n){return new this(e).clamp(t,n)}function tu(e){if(!e||typeof e!=`object`)throw Error(cl+`Object expected`);var t,n,r,i=e.defaults===!0,a=[`precision`,1,tl,`rounding`,0,8,`toExpNeg`,-el,0,`toExpPos`,0,el,`maxE`,0,el,`minE`,-el,0,`modulo`,0,9];for(t=0;t<a.length;t+=3)if(n=a[t],i&&(this[n]=al[n]),(r=e[n])!==void 0)if(H(r)===r&&r>=a[t+1]&&r<=a[t+2])this[n]=r;else throw Error(ll+n+`: `+r);if(n=`crypto`,i&&(this[n]=al[n]),(r=e[n])!==void 0)if(r===!0||r===!1||r===0||r===1)if(r)if(p!==void 0&&p&&(p.getRandomValues||p.randomBytes))this[n]=!0;else throw Error(dl);else this[n]=!1;else throw Error(ll+n+`: `+r);return this}function nu(e){return new this(e).cos()}function ru(e){return new this(e).cosh()}function iu(e){var t,n,r;function i(e){var t,n,r,a=this;if(!(a instanceof i))return new i(e);if(a.constructor=i,lu(e)){a.s=e.s,V?!e.d||e.e>i.maxE?(a.e=NaN,a.d=null):e.e<i.minE?(a.e=0,a.d=[0]):(a.e=e.e,a.d=e.d.slice()):(a.e=e.e,a.d=e.d?e.d.slice():e.d);return}if(r=typeof e,r===`number`){if(e===0){a.s=1/e<0?-1:1,a.e=0,a.d=[0];return}if(e<0?(e=-e,a.s=-1):a.s=1,e===~~e&&e<1e7){for(t=0,n=e;n>=10;n/=10)t++;V?t>i.maxE?(a.e=NaN,a.d=null):t<i.minE?(a.e=0,a.d=[0]):(a.e=t,a.d=[e]):(a.e=t,a.d=[e]);return}if(e*0!=0){e||(a.s=NaN),a.e=NaN,a.d=null;return}return Fl(a,e.toString())}if(r===`string`)return(n=e.charCodeAt(0))===45?(e=e.slice(1),a.s=-1):(n===43&&(e=e.slice(1)),a.s=1),gl.test(e)?Fl(a,e):Il(a,e);if(r===`bigint`)return e<0?(e=-e,a.s=-1):a.s=1,Fl(a,e.toString());throw Error(ll+e)}if(i.prototype=K,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=tu,i.clone=iu,i.isDecimal=lu,i.abs=Ul,i.acos=Wl,i.acosh=Gl,i.add=Kl,i.asin=ql,i.asinh=Jl,i.atan=Yl,i.atanh=Xl,i.atan2=Zl,i.cbrt=Ql,i.ceil=$l,i.clamp=eu,i.cos=nu,i.cosh=ru,i.div=au,i.exp=ou,i.floor=su,i.hypot=cu,i.ln=uu,i.log=du,i.log10=pu,i.log2=fu,i.max=mu,i.min=hu,i.mod=gu,i.mul=_u,i.pow=vu,i.random=yu,i.round=bu,i.sign=xu,i.sin=Su,i.sinh=Cu,i.sqrt=wu,i.sub=Tu,i.sum=Eu,i.tan=Du,i.tanh=Ou,i.trunc=ku,e===void 0&&(e={}),e&&e.defaults!==!0)for(r=[`precision`,`rounding`,`toExpNeg`,`toExpPos`,`maxE`,`minE`,`modulo`,`crypto`],t=0;t<r.length;)e.hasOwnProperty(n=r[t++])||(e[n]=this[n]);return i.config(e),i}function au(e,t){return new this(e).div(t)}function ou(e){return new this(e).exp()}function su(e){return X(e=new this(e),e.e+1,3)}function cu(){var e,t,n=new this(0);for(V=!1,e=0;e<arguments.length;)if(t=new this(arguments[e++]),t.d)n.d&&(n=n.plus(t.times(t)));else{if(t.s)return V=!0,new this(1/0);n=t}return V=!0,n.sqrt()}function lu(e){return e instanceof Au||e&&e.toStringTag===fl||!1}function uu(e){return new this(e).ln()}function du(e,t){return new this(e).log(t)}function fu(e){return new this(e).log(2)}function pu(e){return new this(e).log(10)}function mu(){return jl(this,arguments,-1)}function hu(){return jl(this,arguments,1)}function gu(e,t){return new this(e).mod(t)}function _u(e,t){return new this(e).mul(t)}function vu(e,t){return new this(e).pow(t)}function yu(e){var t,n,r,i,a=0,o=new this(1),s=[];if(e===void 0?e=this.precision:J(e,1,tl),r=Math.ceil(e/G),this.crypto)if(p.getRandomValues)for(t=p.getRandomValues(new Uint32Array(r));a<r;)i=t[a],i>=429e7?t[a]=p.getRandomValues(new Uint32Array(1))[0]:s[a++]=i%1e7;else if(p.randomBytes){for(t=p.randomBytes(r*=4);a<r;)i=t[a]+(t[a+1]<<8)+(t[a+2]<<16)+((t[a+3]&127)<<24),i>=214e7?p.randomBytes(4).copy(t,a):(s.push(i%1e7),a+=4);a=r/4}else throw Error(dl);else for(;a<r;)s[a++]=Math.random()*1e7|0;for(r=s[--a],e%=G,r&&e&&(i=U(10,G-e),s[a]=(r/i|0)*i);s[a]===0;a--)s.pop();if(a<0)n=0,s=[0];else{for(n=-1;s[0]===0;n-=G)s.shift();for(r=1,i=s[0];i>=10;i/=10)r++;r<G&&(n-=G-r)}return o.e=n,o.d=s,o}function bu(e){return X(e=new this(e),e.e+1,this.rounding)}function xu(e){return e=new this(e),e.d?e.d[0]?e.s:0*e.s:e.s||NaN}function Su(e){return new this(e).sin()}function Cu(e){return new this(e).sinh()}function wu(e){return new this(e).sqrt()}function Tu(e,t){return new this(e).sub(t)}function Eu(){var e=0,t=arguments,n=new this(t[e]);for(V=!1;n.s&&++e<t.length;)n=n.plus(t[e]);return V=!0,X(n,this.precision,this.rounding)}function Du(e){return new this(e).tan()}function Ou(e){return new this(e).tanh()}function ku(e){return X(e=new this(e),e.e+1,1)}K[Symbol.for(`nodejs.util.inspect.custom`)]=K.toString,K[Symbol.toStringTag]=`Decimal`;var Au=K.constructor=iu(al);rl=new Au(rl),il=new Au(il);var ju=Au,Mu=`BigNumber`,Nu=[`?on`,`config`],Pu=Mc(Mu,Nu,e=>{var{on:t,config:n}=e,r=ju.clone({precision:n.precision,modulo:ju.EUCLID});return r.prototype=Object.create(r.prototype),r.prototype.type=`BigNumber`,r.prototype.isBigNumber=!0,r.prototype.toJSON=function(){return{mathjs:`BigNumber`,value:this.toString()}},r.fromJSON=function(e){return new r(e.value)},t&&t(`config`,function(e,t){e.precision!==t.precision&&r.config({precision:e.precision})}),r},{isClass:!0});const Z=Math.cosh||function(e){return Math.abs(e)<1e-9?1-e:(Math.exp(e)+Math.exp(-e))*.5},Q=Math.sinh||function(e){return Math.abs(e)<1e-9?e:(Math.exp(e)-Math.exp(-e))*.5},Fu=function(e){let t=Math.PI/4;if(-t>e||e>t)return Math.cos(e)-1;let n=e*e;return n*(n*(n*(n*(n*(n*(n*(n/20922789888e3-1/87178291200)+1/479001600)-1/3628800)+1/40320)-1/720)+1/24)-1/2)},Iu=function(e,t){return e=Math.abs(e),t=Math.abs(t),e<t&&([e,t]=[t,e]),e<1e8?Math.sqrt(e*e+t*t):(t/=e,e*Math.sqrt(1+t*t))},Lu=function(){throw SyntaxError(`Invalid Param`)};function Ru(e,t){let n=Math.abs(e),r=Math.abs(t);return e===0?Math.log(r):t===0?Math.log(n):n<3e3&&r<3e3?Math.log(e*e+t*t)*.5:(e*=.5,t*=.5,.5*Math.log(e*e+t*t)+Math.LN2)}const zu={re:0,im:0},Bu=function(e,t){let n=zu;if(e==null)n.re=n.im=0;else if(t!==void 0)n.re=e,n.im=t;else switch(typeof e){case`object`:if(`im`in e&&`re`in e)n.re=e.re,n.im=e.im;else if(`abs`in e&&`arg`in e){if(!isFinite(e.abs)&&isFinite(e.arg))return $.INFINITY;n.re=e.abs*Math.cos(e.arg),n.im=e.abs*Math.sin(e.arg)}else if(`r`in e&&`phi`in e){if(!isFinite(e.r)&&isFinite(e.phi))return $.INFINITY;n.re=e.r*Math.cos(e.phi),n.im=e.r*Math.sin(e.phi)}else e.length===2?(n.re=e[0],n.im=e[1]):Lu();break;case`string`:n.im=n.re=0;let t=e.replace(/_/g,``).match(/\d+\.?\d*e[+-]?\d+|\d+\.?\d*|\.\d+|./g),r=1,i=0;t===null&&Lu();for(let e=0;e<t.length;e++){let a=t[e];a===` `||a===` `||a===`
|
|
206
|
+
`||(a===`+`?r++:a===`-`?i++:a===`i`||a===`I`?(r+i===0&&Lu(),t[e+1]!==` `&&!isNaN(t[e+1])?(n.im+=parseFloat((i%2?`-`:``)+t[e+1]),e++):n.im+=parseFloat((i%2?`-`:``)+`1`),r=i=0):((r+i===0||isNaN(a))&&Lu(),t[e+1]===`i`||t[e+1]===`I`?(n.im+=parseFloat((i%2?`-`:``)+a),e++):n.re+=parseFloat((i%2?`-`:``)+a),r=i=0))}r+i>0&&Lu();break;case`number`:n.im=0,n.re=e;break;default:Lu()}return isNaN(n.re)||isNaN(n.im),n};function $(e,t){if(!(this instanceof $))return new $(e,t);let n=Bu(e,t);this.re=n.re,this.im=n.im}$.prototype={re:0,im:0,sign:function(){let e=Iu(this.re,this.im);return new $(this.re/e,this.im/e)},add:function(e,t){let n=Bu(e,t),r=this.isInfinite(),i=!(isFinite(n.re)&&isFinite(n.im));return r||i?r&&i?$.NAN:$.INFINITY:new $(this.re+n.re,this.im+n.im)},sub:function(e,t){let n=Bu(e,t),r=this.isInfinite(),i=!(isFinite(n.re)&&isFinite(n.im));return r||i?r&&i?$.NAN:$.INFINITY:new $(this.re-n.re,this.im-n.im)},mul:function(e,t){let n=Bu(e,t),r=this.isInfinite(),i=!(isFinite(n.re)&&isFinite(n.im)),a=this.re===0&&this.im===0,o=n.re===0&&n.im===0;return r&&o||i&&a?$.NAN:r||i?$.INFINITY:n.im===0&&this.im===0?new $(this.re*n.re,0):new $(this.re*n.re-this.im*n.im,this.re*n.im+this.im*n.re)},div:function(e,t){let n=Bu(e,t),r=this.isInfinite(),i=!(isFinite(n.re)&&isFinite(n.im)),a=this.re===0&&this.im===0,o=n.re===0&&n.im===0;if(a&&o||r&&i)return $.NAN;if(o||r)return $.INFINITY;if(a||i)return $.ZERO;if(n.im===0)return new $(this.re/n.re,this.im/n.re);if(Math.abs(n.re)<Math.abs(n.im)){let e=n.re/n.im,t=n.re*e+n.im;return new $((this.re*e+this.im)/t,(this.im*e-this.re)/t)}else{let e=n.im/n.re,t=n.im*e+n.re;return new $((this.re+this.im*e)/t,(this.im-this.re*e)/t)}},pow:function(e,t){let n=Bu(e,t),r=this.re===0&&this.im===0,i=n.re===0&&n.im===0;if(i)return $.ONE;if(n.im===0){if(this.im===0&&this.re>0)return new $(this.re**+n.re,0);if(this.re===0)switch((n.re%4+4)%4){case 0:return new $(this.im**+n.re,0);case 1:return new $(0,this.im**+n.re);case 2:return new $(-(this.im**+n.re),0);case 3:return new $(0,-(this.im**+n.re))}}if(r&&n.re>0)return $.ZERO;let a=Math.atan2(this.im,this.re),o=Ru(this.re,this.im),s=Math.exp(n.re*o-n.im*a),c=n.im*o+n.re*a;return new $(s*Math.cos(c),s*Math.sin(c))},sqrt:function(){let e=this.re,t=this.im;if(t===0)return e>=0?new $(Math.sqrt(e),0):new $(0,Math.sqrt(-e));let n=Iu(e,t),r=Math.sqrt(.5*(n+Math.abs(e))),i=Math.abs(t)/(2*r);return e>=0?new $(r,t<0?-i:i):new $(i,t<0?-r:r)},exp:function(){let e=Math.exp(this.re);return this.im===0?new $(e,0):new $(e*Math.cos(this.im),e*Math.sin(this.im))},expm1:function(){let e=this.re,t=this.im;return new $(Math.expm1(e)*Math.cos(t)+Fu(t),Math.exp(e)*Math.sin(t))},log:function(){let e=this.re,t=this.im;return t===0&&e>0?new $(Math.log(e),0):new $(Ru(e,t),Math.atan2(t,e))},abs:function(){return Iu(this.re,this.im)},arg:function(){return Math.atan2(this.im,this.re)},sin:function(){let e=this.re,t=this.im;return new $(Math.sin(e)*Z(t),Math.cos(e)*Q(t))},cos:function(){let e=this.re,t=this.im;return new $(Math.cos(e)*Z(t),-Math.sin(e)*Q(t))},tan:function(){let e=2*this.re,t=2*this.im,n=Math.cos(e)+Z(t);return new $(Math.sin(e)/n,Q(t)/n)},cot:function(){let e=2*this.re,t=2*this.im,n=Math.cos(e)-Z(t);return new $(-Math.sin(e)/n,Q(t)/n)},sec:function(){let e=this.re,t=this.im,n=.5*Z(2*t)+.5*Math.cos(2*e);return new $(Math.cos(e)*Z(t)/n,Math.sin(e)*Q(t)/n)},csc:function(){let e=this.re,t=this.im,n=.5*Z(2*t)-.5*Math.cos(2*e);return new $(Math.sin(e)*Z(t)/n,-Math.cos(e)*Q(t)/n)},asin:function(){let e=this.re,t=this.im,n=new $(t*t-e*e+1,-2*e*t).sqrt(),r=new $(n.re-t,n.im+e).log();return new $(r.im,-r.re)},acos:function(){let e=this.re,t=this.im,n=new $(t*t-e*e+1,-2*e*t).sqrt(),r=new $(n.re-t,n.im+e).log();return new $(Math.PI/2-r.im,r.re)},atan:function(){let e=this.re,t=this.im;if(e===0){if(t===1)return new $(0,1/0);if(t===-1)return new $(0,-1/0)}let n=e*e+(1-t)*(1-t),r=new $((1-t*t-e*e)/n,-2*e/n).log();return new $(-.5*r.im,.5*r.re)},acot:function(){let e=this.re,t=this.im;if(t===0)return new $(Math.atan2(1,e),0);let n=e*e+t*t;return n===0?new $(e===0?0:e/0,t===0?0:-t/0).atan():new $(e/n,-t/n).atan()},asec:function(){let e=this.re,t=this.im;if(e===0&&t===0)return new $(0,1/0);let n=e*e+t*t;return n===0?new $(e===0?0:e/0,t===0?0:-t/0).acos():new $(e/n,-t/n).acos()},acsc:function(){let e=this.re,t=this.im;if(e===0&&t===0)return new $(Math.PI/2,1/0);let n=e*e+t*t;return n===0?new $(e===0?0:e/0,t===0?0:-t/0).asin():new $(e/n,-t/n).asin()},sinh:function(){let e=this.re,t=this.im;return new $(Q(e)*Math.cos(t),Z(e)*Math.sin(t))},cosh:function(){let e=this.re,t=this.im;return new $(Z(e)*Math.cos(t),Q(e)*Math.sin(t))},tanh:function(){let e=2*this.re,t=2*this.im,n=Z(e)+Math.cos(t);return new $(Q(e)/n,Math.sin(t)/n)},coth:function(){let e=2*this.re,t=2*this.im,n=Z(e)-Math.cos(t);return new $(Q(e)/n,-Math.sin(t)/n)},csch:function(){let e=this.re,t=this.im,n=Math.cos(2*t)-Z(2*e);return new $(-2*Q(e)*Math.cos(t)/n,2*Z(e)*Math.sin(t)/n)},sech:function(){let e=this.re,t=this.im,n=Math.cos(2*t)+Z(2*e);return new $(2*Z(e)*Math.cos(t)/n,-2*Q(e)*Math.sin(t)/n)},asinh:function(){let e=this.im;this.im=-this.re,this.re=e;let t=this.asin();return this.re=-this.im,this.im=e,e=t.re,t.re=-t.im,t.im=e,t},acosh:function(){let e=this.acos();if(e.im<=0){let t=e.re;e.re=-e.im,e.im=t}else{let t=e.im;e.im=-e.re,e.re=t}return e},atanh:function(){let e=this.re,t=this.im,n=e>1&&t===0,r=1-e,i=1+e,a=r*r+t*t,o=a===0?new $(e===-1?0:e/0,t===0?0:t/0):new $((i*r-t*t)/a,(t*r+i*t)/a),s=o.re;return o.re=Ru(o.re,o.im)/2,o.im=Math.atan2(o.im,s)/2,n&&(o.im=-o.im),o},acoth:function(){let e=this.re,t=this.im;if(e===0&&t===0)return new $(0,Math.PI/2);let n=e*e+t*t;return n===0?new $(e===0?0:e/0,t===0?0:-t/0).atanh():new $(e/n,-t/n).atanh()},acsch:function(){let e=this.re,t=this.im;if(t===0)return new $(e===0?1/0:Math.log(e+Math.sqrt(e*e+1)),0);let n=e*e+t*t;return n===0?new $(e===0?0:e/0,t===0?0:-t/0).asinh():new $(e/n,-t/n).asinh()},asech:function(){let e=this.re,t=this.im;if(this.isZero())return $.INFINITY;let n=e*e+t*t;return n===0?new $(e===0?0:e/0,t===0?0:-t/0).acosh():new $(e/n,-t/n).acosh()},inverse:function(){if(this.isZero())return $.INFINITY;if(this.isInfinite())return $.ZERO;let e=this.re,t=this.im,n=e*e+t*t;return new $(e/n,-t/n)},conjugate:function(){return new $(this.re,-this.im)},neg:function(){return new $(-this.re,-this.im)},ceil:function(e){return e=10**(e||0),new $(Math.ceil(this.re*e)/e,Math.ceil(this.im*e)/e)},floor:function(e){return e=10**(e||0),new $(Math.floor(this.re*e)/e,Math.floor(this.im*e)/e)},round:function(e){return e=10**(e||0),new $(Math.round(this.re*e)/e,Math.round(this.im*e)/e)},equals:function(e,t){let n=Bu(e,t);return Math.abs(n.re-this.re)<=$.EPSILON&&Math.abs(n.im-this.im)<=$.EPSILON},clone:function(){return new $(this.re,this.im)},toString:function(){let e=this.re,t=this.im,n=``;return this.isNaN()?`NaN`:this.isInfinite()?`Infinity`:(Math.abs(e)<$.EPSILON&&(e=0),Math.abs(t)<$.EPSILON&&(t=0),t===0?n+e:(e===0?t<0&&(t=-t,n+=`-`):(n+=e,n+=` `,t<0?(t=-t,n+=`-`):n+=`+`,n+=` `),t!==1&&(n+=t),n+`i`))},toVector:function(){return[this.re,this.im]},valueOf:function(){return this.im===0?this.re:null},isNaN:function(){return isNaN(this.re)||isNaN(this.im)},isZero:function(){return this.im===0&&this.re===0},isFinite:function(){return isFinite(this.re)&&isFinite(this.im)},isInfinite:function(){return!this.isFinite()}},$.ZERO=new $(0,0),$.ONE=new $(1,0),$.I=new $(0,1),$.PI=new $(Math.PI,0),$.E=new $(Math.E,0),$.INFINITY=new $(1/0,1/0),$.NAN=new $(NaN,NaN),$.EPSILON=1e-15;var Vu=`Complex`,Hu=[],Uu=Mc(Vu,Hu,()=>(Object.defineProperty($,`name`,{value:`Complex`}),$.prototype.constructor=$,$.prototype.type=`Complex`,$.prototype.isComplex=!0,$.prototype.toJSON=function(){return{mathjs:`Complex`,re:this.re,im:this.im}},$.prototype.toPolar=function(){return{r:this.abs(),phi:this.arg()}},$.prototype.format=function(e){var t=``,n=this.im,r=this.re,i=Us(this.re,e),a=Us(this.im,e),o=I(e)?e:e?e.precision:null;if(o!==null){var s=10**-o;Math.abs(r/n)<s&&(r=0),Math.abs(n/r)<s&&(n=0)}return t=n===0?i:r===0?n===1?`i`:n===-1?`-i`:a+`i`:n<0?n===-1?i+` - i`:i+` - `+a.substring(1)+`i`:n===1?i+` + i`:i+` + `+a+`i`,t},$.fromPolar=function(e){switch(arguments.length){case 1:var t=arguments[0];if(typeof t==`object`)return $(t);throw TypeError(`Input has to be an object with r and phi keys.`);case 2:var n=arguments[0],r=arguments[1];if(I(n)){if(Yo(r)&&r.hasBase(`ANGLE`)&&(r=r.toNumber(`rad`)),I(r))return new $({r:n,phi:r});throw TypeError(`Phi is not a number nor an angle unit.`)}else throw TypeError(`Radius r is not a number.`);default:throw SyntaxError(`Wrong number of arguments in function fromPolar`)}},$.prototype.valueOf=$.prototype.toString,$.fromJSON=function(e){return new $(e)},$.compare=function(e,t){return e.re>t.re?1:e.re<t.re?-1:e.im>t.im?1:e.im<t.im?-1:0},$),{isClass:!0}),Wu=o((exports,t)=>{
|
|
679
207
|
/**
|
|
680
|
-
*
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
const parseRequestParameters = (parameters) => {
|
|
687
|
-
return parameters.reduce((acc, param) => {
|
|
688
|
-
if (Array.isArray(acc[param.in][param.name])) acc[param.in][param.name] = acc[param.in][param.name].concat(param.value);
|
|
689
|
-
else if (typeof acc[param.in][param.name] === "object" && typeof param.value === "object") acc[param.in][param.name] = {
|
|
690
|
-
...acc[param.in][param.name],
|
|
691
|
-
...param.value
|
|
692
|
-
};
|
|
693
|
-
else acc[param.in][param.name] = param.in === "body" ? param.value : String(param.value);
|
|
694
|
-
return acc;
|
|
695
|
-
}, {
|
|
696
|
-
query: {},
|
|
697
|
-
body: {},
|
|
698
|
-
headers: {}
|
|
699
|
-
});
|
|
700
|
-
};
|
|
701
|
-
|
|
702
|
-
//#endregion
|
|
703
|
-
//#region src/parsers/types.ts
|
|
704
|
-
const RequestParameterLocations = [
|
|
705
|
-
"query",
|
|
706
|
-
"body",
|
|
707
|
-
"headers"
|
|
708
|
-
];
|
|
709
|
-
|
|
710
|
-
//#endregion
|
|
711
|
-
//#region src/customErrors/index.ts
|
|
712
|
-
const translateCustomError = (response, configs) => {
|
|
713
|
-
if ((0, __stackone_utils.isMissing)(configs) || configs?.length === 0 || (0, __stackone_utils.isMissing)(response)) return {
|
|
714
|
-
data: response.data,
|
|
715
|
-
status: response.status,
|
|
716
|
-
headers: response.headers,
|
|
717
|
-
requestUrl: response.requestUrl,
|
|
718
|
-
responseType: response.responseType,
|
|
719
|
-
responseTime: response.responseTime,
|
|
720
|
-
message: response.message
|
|
721
|
-
};
|
|
722
|
-
const customErrors = configs?.filter((errorConfig) => errorConfig.receivedStatus === response.status);
|
|
723
|
-
if (customErrors?.length) for (const customError of customErrors) {
|
|
724
|
-
const conditionExpression = customError.condition;
|
|
725
|
-
const isConditionMet = (0, __stackone_expressions.safeEvaluate)(conditionExpression, response) === true;
|
|
726
|
-
if ((0, __stackone_utils.isMissing)(conditionExpression) || isConditionMet) return {
|
|
727
|
-
data: response.data,
|
|
728
|
-
headers: response.headers,
|
|
729
|
-
requestUrl: response.requestUrl,
|
|
730
|
-
responseType: response.responseType,
|
|
731
|
-
responseTime: response.responseTime,
|
|
732
|
-
status: customError.targetStatus,
|
|
733
|
-
message: customError?.message ?? HttpErrorMessages[customError.targetStatus] ?? "Unknown error"
|
|
734
|
-
};
|
|
735
|
-
}
|
|
736
|
-
return response;
|
|
737
|
-
};
|
|
738
|
-
|
|
739
|
-
//#endregion
|
|
740
|
-
//#region src/validators/statusCodes.ts
|
|
741
|
-
const isSuccessStatusCode = (status) => (0, __stackone_utils.notMissing)(status) && status >= 200 && status <= 299;
|
|
742
|
-
const isFailedStatusCode = (status) => (0, __stackone_utils.notMissing)(status) && status >= 400 && status <= 599;
|
|
743
|
-
const isInfoStatusCode = (status) => (0, __stackone_utils.notMissing)(status) && status >= 100 && status <= 199;
|
|
744
|
-
|
|
745
|
-
//#endregion
|
|
746
|
-
//#region src/requestClient/restClient.ts
|
|
747
|
-
var RestClient = class {
|
|
748
|
-
async performRequest({ httpClient, url, method, headers, body, customErrorConfigs }) {
|
|
749
|
-
let response;
|
|
750
|
-
try {
|
|
751
|
-
response = await httpClient?.request({
|
|
752
|
-
method,
|
|
753
|
-
url,
|
|
754
|
-
headers,
|
|
755
|
-
maxRedirects: 0,
|
|
756
|
-
payload: body
|
|
757
|
-
});
|
|
758
|
-
} catch (error) {
|
|
759
|
-
if ((0, __stackone_utils.isMissing)(error?.response)) throw error;
|
|
760
|
-
else response = error.response;
|
|
761
|
-
}
|
|
762
|
-
const translatedResponse = translateCustomError(response, customErrorConfigs);
|
|
763
|
-
if (isFailedStatusCode(translatedResponse?.status)) throw new HttpResponseError(translatedResponse, translatedResponse.message);
|
|
764
|
-
else return translatedResponse;
|
|
765
|
-
}
|
|
766
|
-
};
|
|
767
|
-
|
|
768
|
-
//#endregion
|
|
769
|
-
//#region src/requestClient/requestClientFactory.ts
|
|
770
|
-
var RequestClientFactory = class {
|
|
771
|
-
static build(type = "rest") {
|
|
772
|
-
if (type === "rest") return new RestClient();
|
|
773
|
-
else throw new Error(`Unknown request client type: ${type}`);
|
|
774
|
-
}
|
|
775
|
-
};
|
|
776
|
-
|
|
777
|
-
//#endregion
|
|
778
|
-
exports.CUSTOM_ERROR_CONFIG_SCHEMA = CUSTOM_ERROR_CONFIG_SCHEMA;
|
|
779
|
-
exports.HttpClient = HttpClient;
|
|
780
|
-
exports.HttpClientManager = HttpClientManager;
|
|
781
|
-
exports.HttpErrorMessages = HttpErrorMessages;
|
|
782
|
-
exports.HttpMethods = HttpMethods;
|
|
783
|
-
exports.HttpResponseError = HttpResponseError;
|
|
784
|
-
exports.InstanceManager = InstanceManager;
|
|
785
|
-
exports.LockManager = LockManager;
|
|
786
|
-
exports.MemoryStore = MemoryStore;
|
|
787
|
-
exports.RequestClientFactory = RequestClientFactory;
|
|
788
|
-
exports.RequestParameterLocations = RequestParameterLocations;
|
|
789
|
-
exports.createAuthorizationHeaders = createAuthorizationHeaders;
|
|
790
|
-
exports.isFailedStatusCode = isFailedStatusCode;
|
|
791
|
-
exports.isInfoStatusCode = isInfoStatusCode;
|
|
792
|
-
exports.isSuccessStatusCode = isSuccessStatusCode;
|
|
793
|
-
exports.parseRequestParameters = parseRequestParameters;
|
|
208
|
+
* @license Fraction.js v4.3.0 20/08/2023
|
|
209
|
+
* https://www.xarg.org/2014/03/rational-numbers-in-javascript/
|
|
210
|
+
*
|
|
211
|
+
* Copyright (c) 2023, Robert Eisele (robert@raw.org)
|
|
212
|
+
* Dual licensed under the MIT or GPL Version 2 licenses.
|
|
213
|
+
**/
|
|
214
|
+
(function(n){"use strict";var r=2e3,i={s:1,n:0,d:1};function a(e,t){if(isNaN(e=parseInt(e,10)))throw h();return e*t}function o(e,t){if(t===0)throw m();var n=Object.create(p.prototype);n.s=e<0?-1:1,e=e<0?-e:e;var r=f(e,t);return n.n=e/r,n.d=t/r,n}function s(e){for(var t={},n=e,r=2,i=4;i<=n;){for(;n%r===0;)n/=r,t[r]=(t[r]||0)+1;i+=1+2*r++}return n===e?t[e]=(t[e]||0)+1:n>1&&(t[n]=(t[n]||0)+1),t}var c=function(e,t){var n=0,r=1,o=1,s=0,c=0,l=0,u=1,d=1,f=0,p=1,_=1,v=1,y=1e7,b;if(e!=null)if(t!==void 0){if(n=e,r=t,o=n*r,n%1!=0||r%1!=0)throw g()}else switch(typeof e){case`object`:if(`d`in e&&`n`in e)n=e.n,r=e.d,`s`in e&&(n*=e.s);else if(0 in e)n=e[0],1 in e&&(r=e[1]);else throw h();o=n*r;break;case`number`:if(e<0&&(o=e,e=-e),e%1==0)n=e;else if(e>0){for(e>=1&&(d=10**Math.floor(1+Math.log(e)/Math.LN10),e/=d);p<=y&&v<=y;)if(b=(f+_)/(p+v),e===b){p+v<=y?(n=f+_,r=p+v):v>p?(n=_,r=v):(n=f,r=p);break}else e>b?(f+=_,p+=v):(_+=f,v+=p),p>y?(n=_,r=v):(n=f,r=p);n*=d}else (isNaN(e)||isNaN(t))&&(r=n=NaN);break;case`string`:if(p=e.match(/\d+|./g),p===null)throw h();if(p[f]===`-`?(o=-1,f++):p[f]===`+`&&f++,p.length===f+1?c=a(p[f++],o):p[f+1]===`.`||p[f]===`.`?(p[f]!==`.`&&(s=a(p[f++],o)),f++,(f+1===p.length||p[f+1]===`(`&&p[f+3]===`)`||p[f+1]===`'`&&p[f+3]===`'`)&&(c=a(p[f],o),u=10**p[f].length,f++),(p[f]===`(`&&p[f+2]===`)`||p[f]===`'`&&p[f+2]===`'`)&&(l=a(p[f+1],o),d=10**p[f+1].length-1,f+=3)):p[f+1]===`/`||p[f+1]===`:`?(c=a(p[f],o),u=a(p[f+2],1),f+=3):p[f+3]===`/`&&p[f+1]===` `&&(s=a(p[f],o),c=a(p[f+2],o),u=a(p[f+4],1),f+=5),p.length<=f){r=u*d,o=n=l+r*s+d*c;break}default:throw h()}if(r===0)throw m();i.s=o<0?-1:1,i.n=Math.abs(n),i.d=Math.abs(r)};function l(e,t,n){for(var r=1;t>0;e=e*e%n,t>>=1)t&1&&(r=r*e%n);return r}function u(e,t){for(;t%2==0;t/=2);for(;t%5==0;t/=5);if(t===1)return 0;for(var n=10%t,i=1;n!==1;i++)if(n=n*10%t,i>r)return 0;return i}function d(e,t,n){for(var r=1,i=l(10,n,t),a=0;a<300;a++){if(r===i)return a;r=r*10%t,i=i*10%t}return 0}function f(e,t){if(!e)return t;if(!t)return e;for(;;){if(e%=t,!e)return t;if(t%=e,!t)return e}}function p(e,t){if(c(e,t),this instanceof p)e=f(i.d,i.n),this.s=i.s,this.n=i.n/e,this.d=i.d/e;else return o(i.s*i.n,i.d)}var m=function(){return Error(`Division by Zero`)},h=function(){return Error(`Invalid argument`)},g=function(){return Error(`Parameters must be integer`)};p.prototype={s:1,n:0,d:1,abs:function(){return o(this.n,this.d)},neg:function(){return o(-this.s*this.n,this.d)},add:function(e,t){return c(e,t),o(this.s*this.n*i.d+i.s*this.d*i.n,this.d*i.d)},sub:function(e,t){return c(e,t),o(this.s*this.n*i.d-i.s*this.d*i.n,this.d*i.d)},mul:function(e,t){return c(e,t),o(this.s*i.s*this.n*i.n,this.d*i.d)},div:function(e,t){return c(e,t),o(this.s*i.s*this.n*i.d,this.d*i.n)},clone:function(){return o(this.s*this.n,this.d)},mod:function(e,t){if(isNaN(this.n)||isNaN(this.d))return new p(NaN);if(e===void 0)return o(this.s*this.n%this.d,1);if(c(e,t),i.n===0&&this.d===0)throw m();return o(this.s*(i.d*this.n)%(i.n*this.d),i.d*this.d)},gcd:function(e,t){return c(e,t),o(f(i.n,this.n)*f(i.d,this.d),i.d*this.d)},lcm:function(e,t){return c(e,t),i.n===0&&this.n===0?o(0,1):o(i.n*this.n,f(i.n,this.n)*f(i.d,this.d))},ceil:function(e){return e=10**(e||0),isNaN(this.n)||isNaN(this.d)?new p(NaN):o(Math.ceil(e*this.s*this.n/this.d),e)},floor:function(e){return e=10**(e||0),isNaN(this.n)||isNaN(this.d)?new p(NaN):o(Math.floor(e*this.s*this.n/this.d),e)},round:function(e){return e=10**(e||0),isNaN(this.n)||isNaN(this.d)?new p(NaN):o(Math.round(e*this.s*this.n/this.d),e)},inverse:function(){return o(this.s*this.d,this.n)},pow:function(e,t){if(c(e,t),i.d===1)return i.s<0?o((this.s*this.d)**+i.n,this.n**+i.n):o((this.s*this.n)**+i.n,this.d**+i.n);if(this.s<0)return null;var n=s(this.n),r=s(this.d),a=1,l=1;for(var u in n){if(u===`1`)continue;if(u===`0`){a=0;break}if(n[u]*=i.n,n[u]%i.d===0)n[u]/=i.d;else return null;a*=u**+n[u]}for(var u in r){if(u===`1`)continue;if(r[u]*=i.n,r[u]%i.d===0)r[u]/=i.d;else return null;l*=u**+r[u]}return i.s<0?o(l,a):o(a,l)},equals:function(e,t){return c(e,t),this.s*this.n*i.d===i.s*i.n*this.d},compare:function(e,t){c(e,t);var n=this.s*this.n*i.d-i.s*i.n*this.d;return(0<n)-(n<0)},simplify:function(e){if(isNaN(this.n)||isNaN(this.d))return this;e||=.001;for(var t=this.abs(),n=t.toContinued(),r=1;r<n.length;r++){for(var i=o(n[r-1],1),a=r-2;a>=0;a--)i=i.inverse().add(n[a]);if(Math.abs(i.sub(t).valueOf())<e)return i.mul(this.s)}return this},divisible:function(e,t){return c(e,t),!(!(i.n*this.d)||this.n*i.d%(i.n*this.d))},valueOf:function(){return this.s*this.n/this.d},toFraction:function(e){var t,n=``,r=this.n,i=this.d;return this.s<0&&(n+=`-`),i===1?n+=r:(e&&(t=Math.floor(r/i))>0&&(n+=t,n+=` `,r%=i),n+=r,n+=`/`,n+=i),n},toLatex:function(e){var t,n=``,r=this.n,i=this.d;return this.s<0&&(n+=`-`),i===1?n+=r:(e&&(t=Math.floor(r/i))>0&&(n+=t,r%=i),n+=`\\frac{`,n+=r,n+=`}{`,n+=i,n+=`}`),n},toContinued:function(){var e,t=this.n,n=this.d,r=[];if(isNaN(t)||isNaN(n))return r;do r.push(Math.floor(t/n)),e=t%n,t=n,n=e;while(t!==1);return r},toString:function(e){var t=this.n,n=this.d;if(isNaN(t)||isNaN(n))return`NaN`;e||=15;var r=u(t,n),i=d(t,n,r),a=this.s<0?`-`:``;if(a+=t/n|0,t%=n,t*=10,t&&(a+=`.`),r){for(var o=i;o--;)a+=t/n|0,t%=n,t*=10;a+=`(`;for(var o=r;o--;)a+=t/n|0,t%=n,t*=10;a+=`)`}else for(var o=e;t&&o--;)a+=t/n|0,t%=n,t*=10;return a}},typeof exports==`object`?(Object.defineProperty(p,`__esModule`,{value:!0}),p.default=p,p.Fraction=p,t.exports=p):n.Fraction=p})(void 0)}),Gu=c(Wu(),1),Ku=`Fraction`,qu=[],Ju=Mc(Ku,qu,()=>(Object.defineProperty(Gu.default,`name`,{value:`Fraction`}),Gu.default.prototype.constructor=Gu.default,Gu.default.prototype.type=`Fraction`,Gu.default.prototype.isFraction=!0,Gu.default.prototype.toJSON=function(){return{mathjs:`Fraction`,n:this.s*this.n,d:this.d}},Gu.default.fromJSON=function(e){return new Gu.default(e)},Gu.default),{isClass:!0}),Yu=`Matrix`,Xu=[],Zu=Mc(Yu,Xu,()=>{function e(){if(!(this instanceof e))throw SyntaxError(`Constructor must be called with the new operator`)}return e.prototype.type=`Matrix`,e.prototype.isMatrix=!0,e.prototype.storage=function(){throw Error(`Cannot invoke storage on a Matrix interface`)},e.prototype.datatype=function(){throw Error(`Cannot invoke datatype on a Matrix interface`)},e.prototype.create=function(e,t){throw Error(`Cannot invoke create on a Matrix interface`)},e.prototype.subset=function(e,t,n){throw Error(`Cannot invoke subset on a Matrix interface`)},e.prototype.get=function(e){throw Error(`Cannot invoke get on a Matrix interface`)},e.prototype.set=function(e,t,n){throw Error(`Cannot invoke set on a Matrix interface`)},e.prototype.resize=function(e,t){throw Error(`Cannot invoke resize on a Matrix interface`)},e.prototype.reshape=function(e,t){throw Error(`Cannot invoke reshape on a Matrix interface`)},e.prototype.clone=function(){throw Error(`Cannot invoke clone on a Matrix interface`)},e.prototype.size=function(){throw Error(`Cannot invoke size on a Matrix interface`)},e.prototype.map=function(e,t){throw Error(`Cannot invoke map on a Matrix interface`)},e.prototype.forEach=function(e){throw Error(`Cannot invoke forEach on a Matrix interface`)},e.prototype[Symbol.iterator]=function(){throw Error(`Cannot iterate a Matrix interface`)},e.prototype.toArray=function(){throw Error(`Cannot invoke toArray on a Matrix interface`)},e.prototype.valueOf=function(){throw Error(`Cannot invoke valueOf on a Matrix interface`)},e.prototype.format=function(e){throw Error(`Cannot invoke format on a Matrix interface`)},e.prototype.toString=function(){throw Error(`Cannot invoke toString on a Matrix interface`)},e},{isClass:!0});function Qu(e){return Object.keys(e.signatures||{}).reduce(function(e,t){var n=(t.match(/,/g)||[]).length+1;return Math.max(e,n)},-1)}var $u=`DenseMatrix`,ed=[`Matrix`],td=Mc($u,ed,e=>{var{Matrix:t}=e;function n(e,t){if(!(this instanceof n))throw SyntaxError(`Constructor must be called with the new operator`);if(t&&!Xo(t))throw Error(`Invalid datatype: `+t);if(Zo(e))e.type===`DenseMatrix`?(this._data=Ms(e._data),this._size=Ms(e._size),this._datatype=t||e._datatype):(this._data=e.toArray(),this._size=e.size(),this._datatype=t||e._datatype);else if(e&&L(e.data)&&L(e.size))this._data=e.data,this._size=e.size,mc(this._data,this._size),this._datatype=t||e.datatype;else if(L(e))this._data=l(e),this._size=fc(this._data),mc(this._data,this._size),this._datatype=t;else if(e)throw TypeError(`Unsupported type of data (`+js(e)+`)`);else this._data=[],this._size=[0],this._datatype=t}n.prototype=new t,n.prototype.createDenseMatrix=function(e,t){return new n(e,t)},Object.defineProperty(n,`name`,{value:`DenseMatrix`}),n.prototype.constructor=n,n.prototype.type=`DenseMatrix`,n.prototype.isDenseMatrix=!0,n.prototype.getDataType=function(){return wc(this._data,js)},n.prototype.storage=function(){return`dense`},n.prototype.datatype=function(){return this._datatype},n.prototype.create=function(e,t){return new n(e,t)},n.prototype.subset=function(e,t,n){switch(arguments.length){case 1:return r(this,e);case 2:case 3:return a(this,e,t,n);default:throw SyntaxError(`Wrong number of arguments`)}},n.prototype.get=function(e){if(!L(e))throw TypeError(`Array expected`);if(e.length!==this._size.length)throw new z(e.length,this._size.length);for(var t=0;t<e.length;t++)B(e[t],this._size[t]);for(var n=this._data,r=0,i=e.length;r<i;r++){var a=e[r];B(a,n.length),n=n[a]}return n},n.prototype.set=function(e,t,n){if(!L(e))throw TypeError(`Array expected`);if(e.length<this._size.length)throw new z(e.length,this._size.length,`<`);var r,i,a,o=e.map(function(e){return e+1});c(this,o,n);var s=this._data;for(r=0,i=e.length-1;r<i;r++)a=e[r],B(a,s.length),s=s[a];return a=e[e.length-1],B(a,s.length),s[a]=t,this};function r(e,t){if(!ns(t))throw TypeError(`Invalid index`);var r=t.isScalar();if(r)return e.get(t.min());var a=t.size();if(a.length!==e._size.length)throw new z(a.length,e._size.length);for(var o=t.min(),s=t.max(),c=0,l=e._size.length;c<l;c++)B(o[c],e._size[c]),B(s[c],e._size[c]);return new n(i(e._data,t,a.length,0),e._datatype)}function i(e,t,n,r){var a=r===n-1,o=t.dimension(r);return a?o.map(function(t){return B(t,e.length),e[t]}).valueOf():o.map(function(a){B(a,e.length);var o=e[a];return i(o,t,n,r+1)}).valueOf()}function a(e,t,n,r){if(!t||t.isIndex!==!0)throw TypeError(`Invalid index`);var i=t.size(),a=t.isScalar(),s;if(Zo(n)?(s=n.size(),n=n.valueOf()):s=fc(n),a){if(s.length!==0)throw TypeError(`Scalar expected`);e.set(t.min(),n,r)}else{if(!Ps(s,i))try{n=s.length===0?kc([n],i):kc(n,i),s=fc(n)}catch{}if(i.length<e._size.length)throw new z(i.length,e._size.length,`<`);if(s.length<i.length){for(var l=0,u=0;i[l]===1&&s[l]===1;)l++;for(;i[l]===1;)u++,l++;n=xc(n,i.length,u,s)}if(!Ps(i,s))throw new z(i,s,`>`);var d=t.max().map(function(e){return e+1});c(e,d,r);var f=i.length,p=0;o(e._data,t,n,f,p)}return e}function o(e,t,n,r,i){var a=i===r-1,s=t.dimension(i);a?s.forEach(function(t,r){B(t),e[t]=n[r[0]]}):s.forEach(function(a,s){B(a),o(e[a],t,n[s[0]],r,i+1)})}n.prototype.resize=function(e,t,n){if(!Qo(e))throw TypeError(`Array or Matrix expected`);var r=e.valueOf().map(e=>Array.isArray(e)&&e.length===1?e[0]:e),i=n?this.clone():this;return s(i,r,t)};function s(e,t,n){if(t.length===0){for(var r=e._data;L(r);)r=r[0];return r}return e._size=t.slice(0),e._data=hc(e._data,e._size,n),e}n.prototype.reshape=function(e,t){var n=t?this.clone():this;n._data=_c(n._data,e);var r=n._size.reduce((e,t)=>e*t);return n._size=vc(e,r),n};function c(e,t,n){for(var r=e._size.slice(0),i=!1;r.length<t.length;)r.push(0),i=!0;for(var a=0,o=t.length;a<o;a++)t[a]>r[a]&&(r[a]=t[a],i=!0);i&&s(e,r,n)}n.prototype.clone=function(){var e=new n({data:Ms(this._data),size:Ms(this._size),datatype:this._datatype});return e},n.prototype.size=function(){return this._size.slice(0)},n.prototype.map=function(e){var t=this,r=Qu(e),i=function n(i,a){return L(i)?i.map(function(e,t){return n(e,a.concat(t))}):r===1?e(i):r===2?e(i,a):e(i,a,t)},a=i(this._data,[]),o=this._datatype===void 0?void 0:wc(a,js);return new n(a,o)},n.prototype.forEach=function(e){var t=this,n=function n(r,i){L(r)?r.forEach(function(e,t){n(e,i.concat(t))}):e(r,i,t)};n(this._data,[])},n.prototype[Symbol.iterator]=function*(){var e=function*e(t,n){if(L(t))for(var r=0;r<t.length;r++)yield*e(t[r],n.concat(r));else yield{value:t,index:n}};yield*e(this._data,[])},n.prototype.rows=function(){var e=[],t=this.size();if(t.length!==2)throw TypeError(`Rows can only be returned for a 2D matrix.`);var r=this._data;for(var i of r)e.push(new n([i],this._datatype));return e},n.prototype.columns=function(){var e=this,t=[],r=this.size();if(r.length!==2)throw TypeError(`Rows can only be returned for a 2D matrix.`);for(var i=this._data,a=function(r){var a=i.map(e=>[e[r]]);t.push(new n(a,e._datatype))},o=0;o<r[1];o++)a(o);return t},n.prototype.toArray=function(){return Ms(this._data)},n.prototype.valueOf=function(){return this._data},n.prototype.format=function(e){return ic(this._data,e)},n.prototype.toString=function(){return ic(this._data)},n.prototype.toJSON=function(){return{mathjs:`DenseMatrix`,data:this._data,size:this._size,datatype:this._datatype}},n.prototype.diagonal=function(e){if(e){if(Ko(e)&&(e=e.toNumber()),!I(e)||!R(e))throw TypeError(`The parameter k must be an integer number`)}else e=0;for(var t=e>0?e:0,r=e<0?-e:0,i=this._size[0],a=this._size[1],o=Math.min(i-r,a-t),s=[],c=0;c<o;c++)s[c]=this._data[c+r][c+t];return new n({data:s,size:[o],datatype:this._datatype})},n.diagonal=function(e,t,r,i){if(!L(e))throw TypeError(`Array expected, size parameter`);if(e.length!==2)throw Error(`Only two dimensions matrix are supported`);if(e=e.map(function(e){if(Ko(e)&&(e=e.toNumber()),!I(e)||!R(e)||e<1)throw Error(`Size values must be positive integers`);return e}),r){if(Ko(r)&&(r=r.toNumber()),!I(r)||!R(r))throw TypeError(`The parameter k must be an integer number`)}else r=0;var a=r>0?r:0,o=r<0?-r:0,s=e[0],c=e[1],l=Math.min(s-o,c-a),u;if(L(t)){if(t.length!==l)throw Error(`Invalid value array length`);u=function(e){return t[e]}}else if(Zo(t)){var d=t.size();if(d.length!==1||d[0]!==l)throw Error(`Invalid matrix length`);u=function(e){return t.get([e])}}else u=function(){return t};i||=Ko(u(0))?u(0).mul(0):0;var f=[];if(e.length>0){f=hc(f,e,i);for(var p=0;p<l;p++)f[p+o][p+a]=u(p)}return new n({data:f,size:[s,c]})},n.fromJSON=function(e){return new n(e)},n.prototype.swapRows=function(e,t){if(!I(e)||!R(e)||!I(t)||!R(t))throw Error(`Row index must be positive integers`);if(this._size.length!==2)throw Error(`Only two dimensional matrix is supported`);return B(e,this._size[0]),B(t,this._size[0]),n._swapRows(e,t,this._data),this},n._swapRows=function(e,t,n){var r=n[e];n[e]=n[t],n[t]=r};function l(e){return Zo(e)?l(e.valueOf()):L(e)?e.map(l):e}return n},{isClass:!0});function nd(e,t,n){return e&&typeof e.map==`function`?e.map(function(e){return nd(e,t,n)}):t(e)}var rd=`isNumeric`,id=[`typed`],ad=Mc(rd,id,e=>{var{typed:t}=e;return t(rd,{"number | BigNumber | Fraction | boolean":()=>!0,"Complex | Unit | string | null | undefined | Node":()=>!1,"Array | Matrix":t.referToSelf(e=>t=>nd(t,e))})}),od=`hasNumericValue`,sd=[`typed`,`isNumeric`],cd=Mc(od,sd,e=>{var{typed:t,isNumeric:n}=e;return t(od,{boolean:()=>!0,string:function(e){return e.trim().length>0&&!isNaN(Number(e))},any:function(e){return n(e)}})}),ld=Pu({config:Bs}),ud=Uu({}),dd=Ju({}),fd=Zu({}),pd=td({Matrix:fd}),md=Yc({BigNumber:ld,Complex:ud,DenseMatrix:pd,Fraction:dd}),hd=ad({typed:md}),gd=cd({isNumeric:hd,typed:md});const _d=e=>{let t=Number(e);return Number.isNaN(t)?!1:t>=120&&t<=36e4},vd=e=>{let t=Number(e),n=Date.now();if(Number.isNaN(t))return n+Ho;if(!_d(t)&&(0,l.isFutureUnixTimestamp)(t))return Uo(t);if(_d(t))return n+t;{let e=t*Bo;return n+e}},yd=`ratelimitlimit`,bd=`ratelimitremaining`,xd=`ratelimitreset`,Sd=`ratelimitconcurrencylimit`,Cd=`ratelimitconcurrencyremaining`,wd=`ratelimitconcurrencyreset`,Td=e=>{let t={};for(let[n,r]of Object.entries(e)){let e=n.toLowerCase().replace(/^x-/,``).replace(/concurren.+-/g,`concurrency-`).replace(/-/g,``),i=gd(r)?Number(r):null;t[e]=i}return t},Ed=e=>{let t=Td(e);return{rateLimitLimit:t[yd],rateLimitRemaining:t[bd],rateLimitReset:vd(t[xd]),concurrencyLimit:t[Sd],concurrencyRemaining:t[Cd],concurrencyReset:vd(t[wd])}},Dd=e=>{let{accountSecureId:t,service:n,resource:r,subResource:i,childResource:a,action:o,behaviours:s}=e??{};return[t,n,r,o].some(l.isMissing)?null:[t,n,r,i,a,o,...s??[]].filter(Boolean).join(`-`)},Od=(e,t=Lo,n=Io)=>{let r=Date.now();return(0,l.isFutureUnixTimestamp)(e)||(0,l.isNumber)(e)?kd(Number(e),r,t,n):Xo(e)&&e!==``?Ad(e,r,t,n):n},kd=(e,t,n=Lo,r=Io)=>{if(e<n)return e;let i=Uo(e);if(i>t){let e=Math.floor((i-t)/Bo);return e>0&&e<n?e:r}return r},Ad=(e,t,n=Lo,r=Io)=>{if(Vo.test(e)){let t=parseFloat(e);return t>0&&t<n?t:r}let i=new Date(e);if(Number.isNaN(i.getTime()))return r;let a=i.getTime();if(a>t){let e=Math.floor((a-t)/Bo);return e>0&&e<n?e:r}return r};let jd=function(e){return e.RateLimiterReleaseRequestFailed=`RateLimiterReleaseRequestFailed`,e}({});const Md=({axiosInstance:e,logger:t,requestConfig:n,context:r})=>{let i=async i=>{let{response:a,config:o}=i,s=o?.signal;if(s?.aborted)return Promise.reject(Mo(`Request aborted`,o,`ERR_CANCELED`,a));let{status:c,retryAfter:u}=Nd(a,r,n,t);if(c===429&&(0,l.notMissing)(o)){let n=Od(u);if(o._retryCount>=Ro)return t?.warning({category:`http-transport`,message:`Max retries exceeded for ${o?.url}. Aborting.`,context:{...r??{},retryAfterHeader:u,retryAfterAsNumber:n}}),Promise.reject(i);let s=o._retryCount??0,c={...o,_retryCount:s+1},d=u?n*Bo:(0,l.exponentialBackoffInMS)(c._retryCount);return t?.debug({category:`http-transport`,message:`Received 429 error from ${o?.url}`,context:{...r??{},retryAfterHeader:u,calculatedRetryAfter:d}}),await No(d*1e3,o,a),e?.request(c)}return Promise.reject(i)};return i},Nd=(e,t,n,r)=>{let{provider:i}=t??{},{status:a,headers:o,data:s}=e??{},{retryafter:c}=Td(o??{});if((0,l.isMissing)(i)||(0,l.isMissing)(e))return r?.warning({category:`http-transport`,message:`Invalid parameters for convertError`,context:{...t,responseIsMissing:(0,l.isMissing)(e),providerIsMissing:(0,l.isMissing)(i),status:e?.status??`undefined`,statusText:e?.statusText??`undefined`,retryafter:c??`undefined`}}),{status:a,retryAfter:c};let u=n?.rateLimits?.mappedRateLimitErrors;if((0,l.notMissing)(u)&&(0,l.notMissing)(s))for(let e of u){let{errorStatus:t,errorMessagePath:n,errorMessage:r,retryAfterPath:i,retryAfterUnit:u,retryAfterValue:d}=e;if(t!==a)continue;let f=n??`message`,p=(0,l.isObject)(s)?h.default.query(s,f)[0]:s,m=Pd(p,r);if(t===a&&m){let e=d??Fd(o,i),t=Id(e,u);return{status:429,retryAfter:c??t}}}return{status:a,retryAfter:c}},Pd=(e,t)=>t instanceof RegExp?t.test(e??``):e?.includes(t)??!1,Fd=(e,t)=>(0,l.notMissing)(t)&&(0,l.notMissing)(e)?h.default.query(e,t)[0]:null,Id=(e,t=`seconds`)=>(0,l.notMissing)(e)?Ld(e,t):null,Ld=(e,t)=>{if(t===`seconds`)return typeof e==`string`?parseFloat(e):e;if(t===`milliseconds`){let t=typeof e==`string`?parseFloat(e):e;return t/Bo}if(t===`date`){let t=typeof e==`string`&&!isNaN(Number(e))?parseFloat(e):e,n=new Date(t);if(isNaN(n.getTime()))throw Error(`Invalid date value`);return n.getTime()}throw Error(`Invalid type`)},Rd=`rateLimitErrorInterceptor`,zd=({axiosInstance:e,logger:t,requestConfig:n,context:r})=>{let i=async i=>{let{response:a,config:o}=i,s=o?.signal;if((0,l.isMissing)(r)||(0,l.isMissing)(o))return t?.warning({category:`HttpClient`,message:`No context or config for this response - that doesn't seem right.`,context:{interceptor:Rd,...o,headers:void 0}}),Promise.reject(i);let{requestId:c,targetConcurrencyKey:u,leaseSubscription:d,setRemovalSubscription:f}=o?.requestMetadata??{},p=await qe.getInstance(),m=(0,l.notMissing)(c)&&(0,l.notMissing)(u)?await p.releaseRequest(c,u):!1;if(!m&&(0,l.notMissing)(o?.requestMetadata)&&t?.error({category:`HttpClient`,message:`Failed to release request from concurrency manager`,context:{...r,interceptor:Rd,requestId:c,targetConcurrencyKey:u,leaseSubscription:d,setRemovalSubscription:f},code:jd.RateLimiterReleaseRequestFailed}),s?.aborted)return Promise.reject(Mo(`Request aborted`,o,`ERR_CANCELED`,a));let{status:h,retryAfter:g}=Nd(a,r,n,t);if(h===429&&(0,l.notMissing)(o)){let n=Od(g);if(o._retryCount>=Ro)return t?.warning({category:`HttpClient`,message:`Max retries exceeded for ${o.url}. Aborting.`,context:{...r??{},...o.requestMetadata??{},retryAfterHeader:g,retryAfterAsNumber:n}}),Promise.reject(i);let s=o?._retryCount??0,c={...o,_retryCount:s+1},u=g?n*Bo:(0,l.exponentialBackoffInMS)(c._retryCount);return t?.debug({category:`HttpClient`,message:`Received 429 error from ${o.url}`,context:{...r,retryAfterHeader:g,calculatedRetryAfter:u}}),await No(u*1e3,o,a),e?.request(c)}return Promise.reject(i)};return i},Bd=`rateLimitResponseInterceptor`,Vd=({logger:e,context:t})=>{let n=async n=>{let r=n?.config,i=r?.signal;if((0,l.isMissing)(t))e?.warning({category:`HttpClient`,message:`No context for this response - that doesn't seem right.`,context:{...r,interceptor:Bd,headers:void 0}});else{let t=n?.headers;if((0,l.notMissing)(t)){let n=Ed(t);e?.debug({category:`HttpClient`,message:`Rate limit headers extracted`,context:{interceptor:Bd,rateLimitHeaders:n}})}let{requestId:a,targetConcurrencyKey:o,leaseSubscription:s,setRemovalSubscription:c}=r?.requestMetadata??{},u=await qe.getInstance(),d=await u.releaseRequest(a,o);if(d||e?.error({category:`HttpClient`,message:`Failed to release request from concurrency manager`,context:{interceptor:Bd,requestId:a,targetConcurrencyKey:o,leaseSubscription:s,setRemovalSubscription:c},code:jd.RateLimiterReleaseRequestFailed}),i?.aborted)return Promise.reject(Mo(`Request aborted`,r,`ERR_CANCELED`,n))}return n};return n},Hd=e=>(e.validateStatus??=e=>e>=200&&e<300,e),Ud=[{onFulfilled:Hd,onRejected:null,options:void 0}],Wd=[{onFulfilled:null,onRejected:Md},{onFulfilled:null,onRejected:yo}],Gd=[{onFulfilled:Hd,onRejected:null,options:void 0},{onFulfilled:Fo,onRejected:null,options:void 0}],Kd=[{onFulfilled:Vd,onRejected:zd},{onFulfilled:null,onRejected:yo}];let qd=function(e){return e.HttpTransportInstanceCreateError=`HttpTransportInstanceCreateError`,e}({});const Jd=async(e,t)=>{let n,{NODE_ENV:r}=process.env,i=t?.behaviours??[`CONCURRENCY`,`RETRY`];try{if(n=i.includes(`RETRY`)?Xd(e,t):Yd(e,t),(0,l.isMissing)(t?.service)||(0,l.isMissing)(t?.organizationId)||r===`test`)return n;let a=await qe.getInstance(),o=await a.isRedisConfigured(),s=[],c=[];if(i.includes(`CONCURRENCY`)){if(!o)throw Error(`Concurrency Manager cannot connect to Redis. Cannot create advanced transport instance.`);s.push(...Gd),c.push(...Kd)}let u=Dd(t);if((0,l.isMissing)(u))return e.warning({category:`http-transport`,message:`Unable to create a key for transport instance - Invalid state. Using base default instance.`,context:{...t,defaultInstanceInitialized:(0,l.notMissing)(n)}}),n;let d=await vo.get(u);if((0,l.notMissing)(d))return d;let f={interceptors:{requestConfigs:s,responseConfigs:c},instanceConfig:{maxBodyLength:1/0},logger:e,context:t},p=ho.createInstance(f);return e.debug({category:`http-transport`,message:`Creating new Axios instance and caching it for key: [${u}]`,context:{...t}}),await vo.set(u,p),p}catch(r){return e.error({category:`http-transport`,message:`Failed to create advanced transport instance. Using default instance.`,context:{...t,usingDefaultInstance:(0,l.notMissing)(n)},error:r,code:qd.HttpTransportInstanceCreateError}),(0,l.notMissing)(n)?n:Zd()}},Yd=(e,t)=>{let n={instanceConfig:{maxBodyLength:1/0},logger:e,context:t};return ho.createInstance(n)??Zd()},Xd=(e,t)=>{let n={interceptors:{requestConfigs:Ud,responseConfigs:Wd},instanceConfig:{maxBodyLength:1/0},logger:e,context:t};return ho.createInstance(n)??Zd()},Zd=()=>{let e=d.default.create({maxBodyLength:1/0});return e},Qd=()=>d.default.create({maxBodyLength:1/0});var $d=class{#transportInstance;constructor({transportInstance:e=Qd()}={}){this.#transportInstance=e}async request({headers:e={},url:t,method:n=`get`,queryParams:r,maxRedirects:i=0,responseType:a,cacheTTL:o,context:s,payload:c,httpsAgent:l}){try{let o=new URLSearchParams(r).toString(),s=this.#normalizeHeaders(e),u=await this.#transportInstance.request({headers:s,url:o?`${t}?${o}`:t,method:n,maxRedirects:i,responseType:a,data:this.#getSafePayload(c,s),httpsAgent:l}),d={data:u.data,status:u.status,headers:this.#extractAxiosHeaders(u.headers),requestUrl:t,responseType:u?.config?.responseType,responseTime:new Date};return d}catch(e){throw e}}async get({headers:e,url:t,queryParams:n,maxRedirects:r,cacheTTL:i,context:a}){return this.request({url:t,method:`get`,queryParams:n,headers:e,maxRedirects:r,cacheTTL:i,context:a})}async post({headers:e,url:t,maxRedirects:n,cacheTTL:r,context:i,payload:a}){return this.request({url:t,method:`post`,headers:e,maxRedirects:n,cacheTTL:r,context:i,payload:a})}#normalizeHeaders(e){if(!e)return{};let t={};return Object.keys(e).forEach(n=>{t[n.toLowerCase()]=e[n]||``}),t}#extractAxiosHeaders(e){if(!e)return{};let t={};return Object.keys(e).forEach(n=>{t[n]=e[n]||``}),t}#isFormUrlEncoded(e){return e[`content-type`]===`application/x-www-form-urlencoded`}#getSafePayload(e,t){if(e)return this.#isFormUrlEncoded(t)?g.default.stringify(e):e}};const ef=()=>new $d;var tf=class{static httpClientInstance=null;static async getInstance({getHttpClient:e=ef}={}){return this.httpClientInstance??=e(),this.httpClientInstance}static resetInstance(){this.httpClientInstance=null}};const nf=[`get`,`post`,`put`,`delete`,`patch`],rf=e=>e.reduce((e,t)=>(Array.isArray(e[t.in][t.name])?e[t.in][t.name]=e[t.in][t.name].concat(t.value):typeof e[t.in][t.name]==`object`&&typeof t.value==`object`?e[t.in][t.name]={...e[t.in][t.name],...t.value}:e[t.in][t.name]=t.in===`body`?t.value:String(t.value),e),{query:{},body:{},headers:{}}),af=[`query`,`body`,`headers`],sf=(e,t)=>{if((0,l.isMissing)(t)||t?.length===0||(0,l.isMissing)(e))return{data:e.data,status:e.status,headers:e.headers,requestUrl:e.requestUrl,responseType:e.responseType,responseTime:e.responseTime,message:e.message};let n=t?.filter(t=>t.receivedStatus===e.status);if(n?.length)for(let t of n){let n=t.condition,r=(0,_.safeEvaluate)(n,e)===!0;if((0,l.isMissing)(n)||r)return{data:e.data,headers:e.headers,requestUrl:e.requestUrl,responseType:e.responseType,responseTime:e.responseTime,status:t.targetStatus,message:t?.message??po[t.targetStatus]??`Unknown error`}}return e},cf=e=>(0,l.notMissing)(e)&&e>=200&&e<=299,lf=e=>(0,l.notMissing)(e)&&e>=400&&e<=599,uf=e=>(0,l.notMissing)(e)&&e>=100&&e<=199;var df=class{async performRequest({httpClient:e,url:t,method:n,headers:r,body:i,customErrorConfigs:a}){let o;try{o=await e?.request({method:n,url:t,headers:r,maxRedirects:0,payload:i})}catch(e){if((0,l.isMissing)(e?.response))throw e;o=e.response}let s=sf(o,a);if(lf(s?.status))throw new mo(s,s.message);return s}},ff=class{static build(e=`rest`){if(e===`rest`)return new df;throw Error(`Unknown request client type: ${e}`)}};exports.CUSTOM_ERROR_CONFIG_SCHEMA=fo,exports.ConcurrencyManager=qe,exports.EventClient=le,exports.HttpClient=$d,exports.HttpClientManager=tf,exports.HttpErrorMessages=po,exports.HttpMethods=nf,exports.HttpResponseError=mo,exports.HttpTransportFactory=ho,exports.InstanceManager=_o,exports.LockManager=x,exports.MemoryStore=E,exports.QueueManager=De,exports.RateLimitManager=jo,exports.RedisClient=de,exports.RequestClientFactory=ff,exports.RequestParameterLocations=af,exports.ScriptManager=he,exports.SubscriptionManager=ge,exports.createAuthorizationHeaders=v,exports.getTransportInstance=Jd,exports.isFailedStatusCode=lf,exports.isInfoStatusCode=uf,exports.isSuccessStatusCode=cf,exports.parseRequestParameters=rf;
|