@sereel/sdk 0.1.4 → 0.1.6
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/README.md +33 -24
- package/dist/index.cjs +536 -45
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +25 -11
- package/dist/index.d.ts +25 -11
- package/dist/index.js +533 -45
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -21,10 +21,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
var index_exports = {};
|
|
22
22
|
__export(index_exports, {
|
|
23
23
|
ENVIRONMENT_BASE_URLS: () => ENVIRONMENT_BASE_URLS,
|
|
24
|
+
ForbiddenError: () => ForbiddenError,
|
|
24
25
|
HttpError: () => HttpError,
|
|
25
26
|
InvalidConfigurationError: () => InvalidConfigurationError,
|
|
26
27
|
MalformedResponseError: () => MalformedResponseError,
|
|
28
|
+
NetworkError: () => NetworkError,
|
|
27
29
|
NotFoundError: () => NotFoundError,
|
|
30
|
+
RateLimitError: () => RateLimitError,
|
|
28
31
|
SereelSdkError: () => SereelSdkError,
|
|
29
32
|
ServerError: () => ServerError,
|
|
30
33
|
TimeoutError: () => TimeoutError,
|
|
@@ -49,12 +52,18 @@ var SereelSdkError = class extends Error {
|
|
|
49
52
|
};
|
|
50
53
|
var InvalidConfigurationError = class extends SereelSdkError {
|
|
51
54
|
};
|
|
55
|
+
var NetworkError = class extends SereelSdkError {
|
|
56
|
+
};
|
|
52
57
|
var HttpError = class extends SereelSdkError {
|
|
53
58
|
};
|
|
54
59
|
var UnauthorizedError = class extends HttpError {
|
|
55
60
|
};
|
|
61
|
+
var ForbiddenError = class extends HttpError {
|
|
62
|
+
};
|
|
56
63
|
var NotFoundError = class extends HttpError {
|
|
57
64
|
};
|
|
65
|
+
var RateLimitError = class extends HttpError {
|
|
66
|
+
};
|
|
58
67
|
var ServerError = class extends HttpError {
|
|
59
68
|
};
|
|
60
69
|
var TimeoutError = class extends SereelSdkError {
|
|
@@ -159,14 +168,30 @@ function toHttpError(status, body) {
|
|
|
159
168
|
if (status === 401) {
|
|
160
169
|
return new UnauthorizedError(message, options);
|
|
161
170
|
}
|
|
171
|
+
if (status === 403) {
|
|
172
|
+
return new ForbiddenError(message, options);
|
|
173
|
+
}
|
|
162
174
|
if (status === 404) {
|
|
163
175
|
return new NotFoundError(message, options);
|
|
164
176
|
}
|
|
177
|
+
if (status === 429) {
|
|
178
|
+
return new RateLimitError(message, options);
|
|
179
|
+
}
|
|
165
180
|
if (status >= 500) {
|
|
166
181
|
return new ServerError(message, options);
|
|
167
182
|
}
|
|
168
183
|
return new HttpError(message, options);
|
|
169
184
|
}
|
|
185
|
+
function isAbortError(error) {
|
|
186
|
+
return error instanceof Error && (error.name === "AbortError" || error.constructor.name === "AbortError");
|
|
187
|
+
}
|
|
188
|
+
function wrapNetworkError(error) {
|
|
189
|
+
if (error instanceof NetworkError) {
|
|
190
|
+
return error;
|
|
191
|
+
}
|
|
192
|
+
const message = error instanceof Error ? error.message : typeof error === "string" ? error : "Network request failed.";
|
|
193
|
+
return new NetworkError(message, { cause: error });
|
|
194
|
+
}
|
|
170
195
|
async function requestJson(config, path, validate) {
|
|
171
196
|
const { signal, cleanup } = createTimeoutSignal(config.timeoutMs);
|
|
172
197
|
try {
|
|
@@ -184,16 +209,16 @@ async function requestJson(config, path, validate) {
|
|
|
184
209
|
}
|
|
185
210
|
return validate(body);
|
|
186
211
|
} catch (error) {
|
|
187
|
-
if (error instanceof HttpError || error instanceof MalformedResponseError) {
|
|
212
|
+
if (error instanceof HttpError || error instanceof MalformedResponseError || error instanceof NetworkError) {
|
|
188
213
|
throw error;
|
|
189
214
|
}
|
|
190
|
-
if (error
|
|
215
|
+
if (isAbortError(error)) {
|
|
191
216
|
throw new TimeoutError(
|
|
192
217
|
`Request timed out after ${config.timeoutMs}ms.`,
|
|
193
218
|
{ cause: error }
|
|
194
219
|
);
|
|
195
220
|
}
|
|
196
|
-
throw error;
|
|
221
|
+
throw wrapNetworkError(error);
|
|
197
222
|
} finally {
|
|
198
223
|
cleanup();
|
|
199
224
|
}
|
|
@@ -209,75 +234,538 @@ function isString(value) {
|
|
|
209
234
|
function isNullableString(value) {
|
|
210
235
|
return typeof value === "string" || value === null;
|
|
211
236
|
}
|
|
237
|
+
function isOptionalNullableString(value) {
|
|
238
|
+
return typeof value === "string" || value === null || value === void 0;
|
|
239
|
+
}
|
|
212
240
|
function isFiniteNumber(value) {
|
|
213
241
|
return typeof value === "number" && Number.isFinite(value);
|
|
214
242
|
}
|
|
215
243
|
function isBoolean(value) {
|
|
216
244
|
return typeof value === "boolean";
|
|
217
245
|
}
|
|
218
|
-
|
|
219
|
-
|
|
246
|
+
var ValidationContext = class {
|
|
247
|
+
failures = [];
|
|
248
|
+
check(condition, path, expected, received) {
|
|
249
|
+
if (!condition) {
|
|
250
|
+
this.failures.push({ path, expected, received });
|
|
251
|
+
}
|
|
252
|
+
return condition;
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
function asRecord(value) {
|
|
256
|
+
return isRecord(value) ? value : void 0;
|
|
220
257
|
}
|
|
221
|
-
function
|
|
222
|
-
|
|
258
|
+
function isProspectus(value, ctx, path) {
|
|
259
|
+
const v = asRecord(value);
|
|
260
|
+
if (!ctx.check(v !== void 0, path, "object", value)) return false;
|
|
261
|
+
ctx.check(isString(v.name), `${path}.name`, "string", v.name);
|
|
262
|
+
ctx.check(isString(v.url), `${path}.url`, "string", v.url);
|
|
263
|
+
return true;
|
|
223
264
|
}
|
|
224
|
-
function
|
|
225
|
-
|
|
265
|
+
function isTokenPartner(value, ctx, path) {
|
|
266
|
+
const v = asRecord(value);
|
|
267
|
+
if (!ctx.check(v !== void 0, path, "object", value)) return false;
|
|
268
|
+
ctx.check(
|
|
269
|
+
isString(v.partner_name),
|
|
270
|
+
`${path}.partner_name`,
|
|
271
|
+
"string",
|
|
272
|
+
v.partner_name
|
|
273
|
+
);
|
|
274
|
+
ctx.check(
|
|
275
|
+
isString(v.partner_logo),
|
|
276
|
+
`${path}.partner_logo`,
|
|
277
|
+
"string",
|
|
278
|
+
v.partner_logo
|
|
279
|
+
);
|
|
280
|
+
ctx.check(
|
|
281
|
+
isString(v.partner_role),
|
|
282
|
+
`${path}.partner_role`,
|
|
283
|
+
"string",
|
|
284
|
+
v.partner_role
|
|
285
|
+
);
|
|
286
|
+
return true;
|
|
226
287
|
}
|
|
227
|
-
function
|
|
228
|
-
|
|
288
|
+
function isRuleSummary(value, ctx, path) {
|
|
289
|
+
const v = asRecord(value);
|
|
290
|
+
if (!ctx.check(v !== void 0, path, "object", value)) return false;
|
|
291
|
+
ctx.check(
|
|
292
|
+
isString(v.rule_address),
|
|
293
|
+
`${path}.rule_address`,
|
|
294
|
+
"string",
|
|
295
|
+
v.rule_address
|
|
296
|
+
);
|
|
297
|
+
ctx.check(
|
|
298
|
+
isString(v.rule_type),
|
|
299
|
+
`${path}.rule_type`,
|
|
300
|
+
"string",
|
|
301
|
+
v.rule_type
|
|
302
|
+
);
|
|
303
|
+
return true;
|
|
229
304
|
}
|
|
230
|
-
function
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
305
|
+
function isRuleEngineSummary(value, ctx, path) {
|
|
306
|
+
const v = asRecord(value);
|
|
307
|
+
if (!ctx.check(v !== void 0, path, "object", value)) return false;
|
|
308
|
+
ctx.check(isString(v.name), `${path}.name`, "string", v.name);
|
|
309
|
+
ctx.check(
|
|
310
|
+
isString(v.rule_engine_address),
|
|
311
|
+
`${path}.rule_engine_address`,
|
|
312
|
+
"string",
|
|
313
|
+
v.rule_engine_address
|
|
314
|
+
);
|
|
315
|
+
const rulesOk = ctx.check(
|
|
316
|
+
Array.isArray(v.rules),
|
|
317
|
+
`${path}.rules`,
|
|
318
|
+
"array",
|
|
319
|
+
v.rules
|
|
320
|
+
);
|
|
321
|
+
if (rulesOk) {
|
|
322
|
+
v.rules.forEach(
|
|
323
|
+
(rule, i) => isRuleSummary(rule, ctx, `${path}.rules[${i}]`)
|
|
324
|
+
);
|
|
238
325
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
326
|
+
return true;
|
|
327
|
+
}
|
|
328
|
+
function isSecurityDetails(value, ctx, path) {
|
|
329
|
+
const v = asRecord(value);
|
|
330
|
+
if (!ctx.check(v !== void 0, path, "object", value)) return false;
|
|
331
|
+
ctx.check(
|
|
332
|
+
isString(v.token_address),
|
|
333
|
+
`${path}.token_address`,
|
|
334
|
+
"string",
|
|
335
|
+
v.token_address
|
|
336
|
+
);
|
|
337
|
+
ctx.check(
|
|
338
|
+
isString(v.token_name),
|
|
339
|
+
`${path}.token_name`,
|
|
340
|
+
"string",
|
|
341
|
+
v.token_name
|
|
342
|
+
);
|
|
343
|
+
ctx.check(
|
|
344
|
+
isString(v.token_symbol),
|
|
345
|
+
`${path}.token_symbol`,
|
|
346
|
+
"string",
|
|
347
|
+
v.token_symbol
|
|
348
|
+
);
|
|
349
|
+
ctx.check(
|
|
350
|
+
isString(v.token_decimal),
|
|
351
|
+
`${path}.token_decimal`,
|
|
352
|
+
"string",
|
|
353
|
+
v.token_decimal
|
|
354
|
+
);
|
|
355
|
+
ctx.check(
|
|
356
|
+
isString(v.network_id),
|
|
357
|
+
`${path}.network_id`,
|
|
358
|
+
"string",
|
|
359
|
+
v.network_id
|
|
360
|
+
);
|
|
361
|
+
ctx.check(
|
|
362
|
+
isString(v.token_type),
|
|
363
|
+
`${path}.token_type`,
|
|
364
|
+
"string",
|
|
365
|
+
v.token_type
|
|
366
|
+
);
|
|
367
|
+
ctx.check(isString(v.admin), `${path}.admin`, "string", v.admin);
|
|
368
|
+
ctx.check(
|
|
369
|
+
isNullableString(v.icon_url),
|
|
370
|
+
`${path}.icon_url`,
|
|
371
|
+
"string | null",
|
|
372
|
+
v.icon_url
|
|
373
|
+
);
|
|
374
|
+
ctx.check(
|
|
375
|
+
isNullableString(v.created_at),
|
|
376
|
+
`${path}.created_at`,
|
|
377
|
+
"string | null",
|
|
378
|
+
v.created_at
|
|
379
|
+
);
|
|
380
|
+
if (v.prospectus !== null && v.prospectus !== void 0) {
|
|
381
|
+
isProspectus(v.prospectus, ctx, `${path}.prospectus`);
|
|
382
|
+
}
|
|
383
|
+
if (v.partners !== null && v.partners !== void 0) {
|
|
384
|
+
const partnersOk = ctx.check(
|
|
385
|
+
Array.isArray(v.partners),
|
|
386
|
+
`${path}.partners`,
|
|
387
|
+
"array",
|
|
388
|
+
v.partners
|
|
389
|
+
);
|
|
390
|
+
if (partnersOk) {
|
|
391
|
+
v.partners.forEach(
|
|
392
|
+
(partner, i) => isTokenPartner(partner, ctx, `${path}.partners[${i}]`)
|
|
393
|
+
);
|
|
394
|
+
}
|
|
242
395
|
}
|
|
243
|
-
if (
|
|
244
|
-
|
|
396
|
+
if (v.rule_engine !== null && v.rule_engine !== void 0) {
|
|
397
|
+
isRuleEngineSummary(v.rule_engine, ctx, `${path}.rule_engine`);
|
|
245
398
|
}
|
|
246
399
|
return true;
|
|
247
400
|
}
|
|
248
|
-
function isIssuerSummary(value) {
|
|
249
|
-
|
|
401
|
+
function isIssuerSummary(value, ctx, path) {
|
|
402
|
+
const v = asRecord(value);
|
|
403
|
+
if (!ctx.check(v !== void 0, path, "object", value)) return false;
|
|
404
|
+
ctx.check(isString(v.id), `${path}.id`, "string", v.id);
|
|
405
|
+
ctx.check(
|
|
406
|
+
isString(v.legal_name),
|
|
407
|
+
`${path}.legal_name`,
|
|
408
|
+
"string",
|
|
409
|
+
v.legal_name
|
|
410
|
+
);
|
|
411
|
+
ctx.check(
|
|
412
|
+
isNullableString(v.display_name),
|
|
413
|
+
`${path}.display_name`,
|
|
414
|
+
"string | null",
|
|
415
|
+
v.display_name
|
|
416
|
+
);
|
|
417
|
+
ctx.check(
|
|
418
|
+
isString(v.jurisdiction),
|
|
419
|
+
`${path}.jurisdiction`,
|
|
420
|
+
"string",
|
|
421
|
+
v.jurisdiction
|
|
422
|
+
);
|
|
423
|
+
ctx.check(
|
|
424
|
+
isNullableString(v.website),
|
|
425
|
+
`${path}.website`,
|
|
426
|
+
"string | null",
|
|
427
|
+
v.website
|
|
428
|
+
);
|
|
429
|
+
ctx.check(
|
|
430
|
+
isNullableString(v.logo_url),
|
|
431
|
+
`${path}.logo_url`,
|
|
432
|
+
"string | null",
|
|
433
|
+
v.logo_url
|
|
434
|
+
);
|
|
435
|
+
return true;
|
|
436
|
+
}
|
|
437
|
+
function isNativeCurrency(value, ctx, path) {
|
|
438
|
+
const v = asRecord(value);
|
|
439
|
+
if (!ctx.check(v !== void 0, path, "object", value)) return false;
|
|
440
|
+
ctx.check(isString(v.symbol), `${path}.symbol`, "string", v.symbol);
|
|
441
|
+
ctx.check(isString(v.name), `${path}.name`, "string", v.name);
|
|
442
|
+
ctx.check(
|
|
443
|
+
isFiniteNumber(v.decimals),
|
|
444
|
+
`${path}.decimals`,
|
|
445
|
+
"finite number",
|
|
446
|
+
v.decimals
|
|
447
|
+
);
|
|
448
|
+
return true;
|
|
449
|
+
}
|
|
450
|
+
function isNetworkDetails(value, ctx, path) {
|
|
451
|
+
const v = asRecord(value);
|
|
452
|
+
if (!ctx.check(v !== void 0, path, "object", value)) return false;
|
|
453
|
+
ctx.check(
|
|
454
|
+
isString(v.network_id),
|
|
455
|
+
`${path}.network_id`,
|
|
456
|
+
"string",
|
|
457
|
+
v.network_id
|
|
458
|
+
);
|
|
459
|
+
ctx.check(isString(v.name), `${path}.name`, "string", v.name);
|
|
460
|
+
ctx.check(isString(v.family), `${path}.family`, "string", v.family);
|
|
461
|
+
ctx.check(
|
|
462
|
+
isFiniteNumber(v.chain_id) || v.chain_id === null,
|
|
463
|
+
`${path}.chain_id`,
|
|
464
|
+
"number | null",
|
|
465
|
+
v.chain_id
|
|
466
|
+
);
|
|
467
|
+
isNativeCurrency(v.native_currency, ctx, `${path}.native_currency`);
|
|
468
|
+
ctx.check(
|
|
469
|
+
isString(v.rpc_endpoint),
|
|
470
|
+
`${path}.rpc_endpoint`,
|
|
471
|
+
"string",
|
|
472
|
+
v.rpc_endpoint
|
|
473
|
+
);
|
|
474
|
+
const explorerOk = ctx.check(
|
|
475
|
+
Array.isArray(v.explorer_urls),
|
|
476
|
+
`${path}.explorer_urls`,
|
|
477
|
+
"string[]",
|
|
478
|
+
v.explorer_urls
|
|
479
|
+
);
|
|
480
|
+
if (explorerOk) {
|
|
481
|
+
v.explorer_urls.forEach(
|
|
482
|
+
(url, i) => ctx.check(
|
|
483
|
+
isString(url),
|
|
484
|
+
`${path}.explorer_urls[${i}]`,
|
|
485
|
+
"string",
|
|
486
|
+
url
|
|
487
|
+
)
|
|
488
|
+
);
|
|
489
|
+
}
|
|
490
|
+
ctx.check(
|
|
491
|
+
isBoolean(v.can_deploy_cmtat_token),
|
|
492
|
+
`${path}.can_deploy_cmtat_token`,
|
|
493
|
+
"boolean",
|
|
494
|
+
v.can_deploy_cmtat_token
|
|
495
|
+
);
|
|
496
|
+
ctx.check(
|
|
497
|
+
isBoolean(v.can_deploy_trex_token),
|
|
498
|
+
`${path}.can_deploy_trex_token`,
|
|
499
|
+
"boolean",
|
|
500
|
+
v.can_deploy_trex_token
|
|
501
|
+
);
|
|
502
|
+
ctx.check(
|
|
503
|
+
isBoolean(v.is_testnet),
|
|
504
|
+
`${path}.is_testnet`,
|
|
505
|
+
"boolean",
|
|
506
|
+
v.is_testnet
|
|
507
|
+
);
|
|
508
|
+
ctx.check(
|
|
509
|
+
isBoolean(v.is_supported),
|
|
510
|
+
`${path}.is_supported`,
|
|
511
|
+
"boolean",
|
|
512
|
+
v.is_supported
|
|
513
|
+
);
|
|
514
|
+
return true;
|
|
250
515
|
}
|
|
251
|
-
function
|
|
252
|
-
|
|
516
|
+
function isFundConfig(value, ctx, path) {
|
|
517
|
+
const v = asRecord(value);
|
|
518
|
+
if (!ctx.check(v !== void 0, path, "object", value)) return false;
|
|
519
|
+
ctx.check(
|
|
520
|
+
isString(v.nav_staleness_threshold),
|
|
521
|
+
`${path}.nav_staleness_threshold`,
|
|
522
|
+
"string",
|
|
523
|
+
v.nav_staleness_threshold
|
|
524
|
+
);
|
|
525
|
+
ctx.check(
|
|
526
|
+
isString(v.min_subscription),
|
|
527
|
+
`${path}.min_subscription`,
|
|
528
|
+
"string",
|
|
529
|
+
v.min_subscription
|
|
530
|
+
);
|
|
531
|
+
ctx.check(
|
|
532
|
+
isString(v.min_redemption),
|
|
533
|
+
`${path}.min_redemption`,
|
|
534
|
+
"string",
|
|
535
|
+
v.min_redemption
|
|
536
|
+
);
|
|
537
|
+
ctx.check(
|
|
538
|
+
isString(v.entry_fee_bps),
|
|
539
|
+
`${path}.entry_fee_bps`,
|
|
540
|
+
"string",
|
|
541
|
+
v.entry_fee_bps
|
|
542
|
+
);
|
|
543
|
+
ctx.check(
|
|
544
|
+
isString(v.exit_fee_bps),
|
|
545
|
+
`${path}.exit_fee_bps`,
|
|
546
|
+
"string",
|
|
547
|
+
v.exit_fee_bps
|
|
548
|
+
);
|
|
549
|
+
ctx.check(
|
|
550
|
+
isFiniteNumber(v.dealing_mode),
|
|
551
|
+
`${path}.dealing_mode`,
|
|
552
|
+
"finite number",
|
|
553
|
+
v.dealing_mode
|
|
554
|
+
);
|
|
555
|
+
ctx.check(
|
|
556
|
+
isString(v.redemption_gate_bps),
|
|
557
|
+
`${path}.redemption_gate_bps`,
|
|
558
|
+
"string",
|
|
559
|
+
v.redemption_gate_bps
|
|
560
|
+
);
|
|
561
|
+
ctx.check(
|
|
562
|
+
isOptionalNullableString(v.protocol_subscription_fee_bps),
|
|
563
|
+
`${path}.protocol_subscription_fee_bps`,
|
|
564
|
+
"string | null | undefined",
|
|
565
|
+
v.protocol_subscription_fee_bps
|
|
566
|
+
);
|
|
567
|
+
ctx.check(
|
|
568
|
+
isOptionalNullableString(v.protocol_fee_recipient),
|
|
569
|
+
`${path}.protocol_fee_recipient`,
|
|
570
|
+
"string | null | undefined",
|
|
571
|
+
v.protocol_fee_recipient
|
|
572
|
+
);
|
|
573
|
+
ctx.check(
|
|
574
|
+
isString(v.management_fee_bps_per_annum),
|
|
575
|
+
`${path}.management_fee_bps_per_annum`,
|
|
576
|
+
"string",
|
|
577
|
+
v.management_fee_bps_per_annum
|
|
578
|
+
);
|
|
579
|
+
return true;
|
|
253
580
|
}
|
|
254
|
-
|
|
255
|
-
|
|
581
|
+
var ISSUANCE_STATUSES = /* @__PURE__ */ new Set([
|
|
582
|
+
"OPEN",
|
|
583
|
+
"CLOSED",
|
|
584
|
+
"FINALIZED",
|
|
585
|
+
"SETTLED",
|
|
586
|
+
"CANCELLED"
|
|
587
|
+
]);
|
|
588
|
+
function isIssuanceStatus(value, ctx, path) {
|
|
589
|
+
return ctx.check(
|
|
590
|
+
isString(value) && ISSUANCE_STATUSES.has(value),
|
|
591
|
+
path,
|
|
592
|
+
`one of ${[...ISSUANCE_STATUSES].join(", ")}`,
|
|
593
|
+
value
|
|
594
|
+
);
|
|
256
595
|
}
|
|
257
|
-
function
|
|
258
|
-
|
|
596
|
+
function isBookSummary(value, ctx, path) {
|
|
597
|
+
const v = asRecord(value);
|
|
598
|
+
if (!ctx.check(v !== void 0, path, "object", value)) return false;
|
|
599
|
+
ctx.check(
|
|
600
|
+
isString(v.id) || v.id === null,
|
|
601
|
+
`${path}.id`,
|
|
602
|
+
"string | null",
|
|
603
|
+
v.id
|
|
604
|
+
);
|
|
605
|
+
ctx.check(
|
|
606
|
+
isString(v.organization_id),
|
|
607
|
+
`${path}.organization_id`,
|
|
608
|
+
"string",
|
|
609
|
+
v.organization_id
|
|
610
|
+
);
|
|
611
|
+
ctx.check(
|
|
612
|
+
isNullableString(v.name),
|
|
613
|
+
`${path}.name`,
|
|
614
|
+
"string | null",
|
|
615
|
+
v.name
|
|
616
|
+
);
|
|
617
|
+
ctx.check(
|
|
618
|
+
isNullableString(v.book_type),
|
|
619
|
+
`${path}.book_type`,
|
|
620
|
+
"string | null",
|
|
621
|
+
v.book_type
|
|
622
|
+
);
|
|
623
|
+
ctx.check(
|
|
624
|
+
isString(v.token_address),
|
|
625
|
+
`${path}.token_address`,
|
|
626
|
+
"string",
|
|
627
|
+
v.token_address
|
|
628
|
+
);
|
|
629
|
+
ctx.check(
|
|
630
|
+
isString(v.fund_token),
|
|
631
|
+
`${path}.fund_token`,
|
|
632
|
+
"string",
|
|
633
|
+
v.fund_token
|
|
634
|
+
);
|
|
635
|
+
ctx.check(
|
|
636
|
+
isString(v.network_id),
|
|
637
|
+
`${path}.network_id`,
|
|
638
|
+
"string",
|
|
639
|
+
v.network_id
|
|
640
|
+
);
|
|
641
|
+
ctx.check(
|
|
642
|
+
isOptionalNullableString(v.admin_wallet),
|
|
643
|
+
`${path}.admin_wallet`,
|
|
644
|
+
"string | null | undefined",
|
|
645
|
+
v.admin_wallet
|
|
646
|
+
);
|
|
647
|
+
ctx.check(
|
|
648
|
+
isOptionalNullableString(v.manager_wallet),
|
|
649
|
+
`${path}.manager_wallet`,
|
|
650
|
+
"string | null | undefined",
|
|
651
|
+
v.manager_wallet
|
|
652
|
+
);
|
|
653
|
+
ctx.check(
|
|
654
|
+
isString(v.settlement_token),
|
|
655
|
+
`${path}.settlement_token`,
|
|
656
|
+
"string",
|
|
657
|
+
v.settlement_token
|
|
658
|
+
);
|
|
659
|
+
ctx.check(
|
|
660
|
+
isNullableString(v.factory_address),
|
|
661
|
+
`${path}.factory_address`,
|
|
662
|
+
"string | null",
|
|
663
|
+
v.factory_address
|
|
664
|
+
);
|
|
665
|
+
ctx.check(
|
|
666
|
+
isNullableString(v.deployment_txn_hash),
|
|
667
|
+
`${path}.deployment_txn_hash`,
|
|
668
|
+
"string | null",
|
|
669
|
+
v.deployment_txn_hash
|
|
670
|
+
);
|
|
671
|
+
ctx.check(
|
|
672
|
+
isString(v.order_book_address),
|
|
673
|
+
`${path}.order_book_address`,
|
|
674
|
+
"string",
|
|
675
|
+
v.order_book_address
|
|
676
|
+
);
|
|
677
|
+
ctx.check(
|
|
678
|
+
isString(v.fund_address),
|
|
679
|
+
`${path}.fund_address`,
|
|
680
|
+
"string",
|
|
681
|
+
v.fund_address
|
|
682
|
+
);
|
|
683
|
+
ctx.check(
|
|
684
|
+
isString(v.fund_id),
|
|
685
|
+
`${path}.fund_id`,
|
|
686
|
+
"string",
|
|
687
|
+
v.fund_id
|
|
688
|
+
);
|
|
689
|
+
ctx.check(
|
|
690
|
+
isString(v.initial_nav),
|
|
691
|
+
`${path}.initial_nav`,
|
|
692
|
+
"string",
|
|
693
|
+
v.initial_nav
|
|
694
|
+
);
|
|
695
|
+
isFundConfig(v.fund_config, ctx, `${path}.fund_config`);
|
|
696
|
+
isIssuanceStatus(v.status, ctx, `${path}.status`);
|
|
697
|
+
ctx.check(
|
|
698
|
+
isNullableString(v.created_at),
|
|
699
|
+
`${path}.created_at`,
|
|
700
|
+
"string | null",
|
|
701
|
+
v.created_at
|
|
702
|
+
);
|
|
703
|
+
ctx.check(
|
|
704
|
+
isNullableString(v.updated_at),
|
|
705
|
+
`${path}.updated_at`,
|
|
706
|
+
"string | null",
|
|
707
|
+
v.updated_at
|
|
708
|
+
);
|
|
709
|
+
return true;
|
|
259
710
|
}
|
|
260
|
-
function
|
|
261
|
-
|
|
711
|
+
function isAssetRecord(value, ctx, path) {
|
|
712
|
+
const v = asRecord(value);
|
|
713
|
+
if (!ctx.check(v !== void 0, path, "object", value)) return false;
|
|
714
|
+
isSecurityDetails(v.security, ctx, `${path}.security`);
|
|
715
|
+
isIssuerSummary(v.issuer, ctx, `${path}.issuer`);
|
|
716
|
+
const booksOk = ctx.check(
|
|
717
|
+
Array.isArray(v.books),
|
|
718
|
+
`${path}.books`,
|
|
719
|
+
"array",
|
|
720
|
+
v.books
|
|
721
|
+
);
|
|
722
|
+
if (booksOk) {
|
|
723
|
+
v.books.forEach(
|
|
724
|
+
(book, i) => isBookSummary(book, ctx, `${path}.books[${i}]`)
|
|
725
|
+
);
|
|
726
|
+
}
|
|
727
|
+
isNetworkDetails(v.network, ctx, `${path}.network`);
|
|
728
|
+
return true;
|
|
262
729
|
}
|
|
263
|
-
function
|
|
264
|
-
|
|
730
|
+
function buildValidationError(value, failures) {
|
|
731
|
+
const summary = failures.slice(0, 5).map(
|
|
732
|
+
(f) => `${f.path}: expected ${f.expected}, got ${JSON.stringify(f.received)}`
|
|
733
|
+
).join("; ");
|
|
734
|
+
const message = failures.length > 5 ? `Received an invalid SDK response shape (${failures.length} issues). First 5: ${summary}` : `Received an invalid SDK response shape. ${summary}`;
|
|
735
|
+
return new MalformedResponseError(message, {
|
|
736
|
+
details: { failures: failures.slice(0, 20), value }
|
|
737
|
+
});
|
|
265
738
|
}
|
|
266
739
|
function validateSdkAssetsResponse(value) {
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
740
|
+
const ctx = new ValidationContext();
|
|
741
|
+
ctx.check(isRecord(value), "<root>", "object", value);
|
|
742
|
+
if (isRecord(value)) {
|
|
743
|
+
ctx.check(Array.isArray(value.data), "<root>.data", "array", value.data);
|
|
744
|
+
ctx.check(
|
|
745
|
+
isFiniteNumber(value.count),
|
|
746
|
+
"<root>.count",
|
|
747
|
+
"finite number",
|
|
748
|
+
value.count
|
|
271
749
|
);
|
|
750
|
+
if (Array.isArray(value.data)) {
|
|
751
|
+
value.data.forEach(
|
|
752
|
+
(item, i) => isAssetRecord(item, ctx, `<root>.data[${i}]`)
|
|
753
|
+
);
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
if (ctx.failures.length > 0) {
|
|
757
|
+
throw buildValidationError(value, ctx.failures);
|
|
272
758
|
}
|
|
273
759
|
return value;
|
|
274
760
|
}
|
|
275
761
|
function validateSdkAssetResponse(value) {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
762
|
+
const ctx = new ValidationContext();
|
|
763
|
+
ctx.check(isRecord(value), "<root>", "object", value);
|
|
764
|
+
if (isRecord(value)) {
|
|
765
|
+
isAssetRecord(value.data, ctx, "<root>.data");
|
|
766
|
+
}
|
|
767
|
+
if (ctx.failures.length > 0) {
|
|
768
|
+
throw buildValidationError(value, ctx.failures);
|
|
281
769
|
}
|
|
282
770
|
return value;
|
|
283
771
|
}
|
|
@@ -318,10 +806,13 @@ function createClient(config) {
|
|
|
318
806
|
// Annotate the CommonJS export names for ESM import in node:
|
|
319
807
|
0 && (module.exports = {
|
|
320
808
|
ENVIRONMENT_BASE_URLS,
|
|
809
|
+
ForbiddenError,
|
|
321
810
|
HttpError,
|
|
322
811
|
InvalidConfigurationError,
|
|
323
812
|
MalformedResponseError,
|
|
813
|
+
NetworkError,
|
|
324
814
|
NotFoundError,
|
|
815
|
+
RateLimitError,
|
|
325
816
|
SereelSdkError,
|
|
326
817
|
ServerError,
|
|
327
818
|
TimeoutError,
|