@atproto/xrpc 0.0.3 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +2 -1
- package/dist/index.js +3095 -422
- package/dist/index.js.map +4 -4
- package/dist/util.d.ts +1 -1
- package/package.json +1 -1
- package/src/client.ts +7 -3
- package/src/util.ts +31 -6
- package/tsconfig.build.tsbuildinfo +1 -1
- package/tsconfig.json +1 -0
package/dist/index.js
CHANGED
|
@@ -9,14 +9,14 @@ var __commonJS = (cb, mod2) => function __require() {
|
|
|
9
9
|
return mod2 || (0, cb[__getOwnPropNames(cb)[0]])((mod2 = { exports: {} }).exports, mod2), mod2.exports;
|
|
10
10
|
};
|
|
11
11
|
var __export = (target, all) => {
|
|
12
|
-
for (var
|
|
13
|
-
__defProp(target,
|
|
12
|
+
for (var name2 in all)
|
|
13
|
+
__defProp(target, name2, { get: all[name2], enumerable: true });
|
|
14
14
|
};
|
|
15
|
-
var __copyProps = (to,
|
|
16
|
-
if (
|
|
17
|
-
for (let key of __getOwnPropNames(
|
|
15
|
+
var __copyProps = (to, from3, except, desc) => {
|
|
16
|
+
if (from3 && typeof from3 === "object" || typeof from3 === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from3))
|
|
18
18
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
19
|
-
__defProp(to, key, { get: () =>
|
|
19
|
+
__defProp(to, key, { get: () => from3[key], enumerable: !(desc = __getOwnPropDesc(from3, key)) || desc.enumerable });
|
|
20
20
|
}
|
|
21
21
|
return to;
|
|
22
22
|
};
|
|
@@ -76,8 +76,8 @@ var require_dist = __commonJS({
|
|
|
76
76
|
});
|
|
77
77
|
|
|
78
78
|
// src/index.ts
|
|
79
|
-
var
|
|
80
|
-
__export(
|
|
79
|
+
var src_exports4 = {};
|
|
80
|
+
__export(src_exports4, {
|
|
81
81
|
Client: () => Client,
|
|
82
82
|
ResponseType: () => ResponseType,
|
|
83
83
|
ResponseTypeNames: () => ResponseTypeNames,
|
|
@@ -87,9 +87,10 @@ __export(src_exports, {
|
|
|
87
87
|
XRPCInvalidResponseError: () => XRPCInvalidResponseError,
|
|
88
88
|
XRPCResponse: () => XRPCResponse,
|
|
89
89
|
default: () => src_default,
|
|
90
|
+
defaultFetchHandler: () => defaultFetchHandler,
|
|
90
91
|
errorResponseBody: () => errorResponseBody
|
|
91
92
|
});
|
|
92
|
-
module.exports = __toCommonJS(
|
|
93
|
+
module.exports = __toCommonJS(src_exports4);
|
|
93
94
|
|
|
94
95
|
// ../../node_modules/zod/lib/index.mjs
|
|
95
96
|
var util;
|
|
@@ -556,10 +557,10 @@ function processCreateParams(params2) {
|
|
|
556
557
|
return { errorMap: customMap, description };
|
|
557
558
|
}
|
|
558
559
|
var ZodType = class {
|
|
559
|
-
constructor(
|
|
560
|
+
constructor(def2) {
|
|
560
561
|
this.spa = this.safeParseAsync;
|
|
561
562
|
this.superRefine = this._refinement;
|
|
562
|
-
this._def =
|
|
563
|
+
this._def = def2;
|
|
563
564
|
this.parse = this.parse.bind(this);
|
|
564
565
|
this.safeParse = this.safeParse.bind(this);
|
|
565
566
|
this.parseAsync = this.parseAsync.bind(this);
|
|
@@ -746,8 +747,8 @@ var ZodType = class {
|
|
|
746
747
|
effect: { type: "transform", transform }
|
|
747
748
|
});
|
|
748
749
|
}
|
|
749
|
-
default(
|
|
750
|
-
const defaultValueFunc = typeof
|
|
750
|
+
default(def2) {
|
|
751
|
+
const defaultValueFunc = typeof def2 === "function" ? def2 : () => def2;
|
|
751
752
|
return new ZodDefault({
|
|
752
753
|
innerType: this,
|
|
753
754
|
defaultValue: defaultValueFunc,
|
|
@@ -1459,7 +1460,7 @@ ZodVoid.create = (params2) => {
|
|
|
1459
1460
|
var ZodArray = class extends ZodType {
|
|
1460
1461
|
_parse(input) {
|
|
1461
1462
|
const { ctx, status } = this._processInputParams(input);
|
|
1462
|
-
const
|
|
1463
|
+
const def2 = this._def;
|
|
1463
1464
|
if (ctx.parsedType !== ZodParsedType.array) {
|
|
1464
1465
|
addIssueToContext(ctx, {
|
|
1465
1466
|
code: ZodIssueCode.invalid_type,
|
|
@@ -1468,39 +1469,39 @@ var ZodArray = class extends ZodType {
|
|
|
1468
1469
|
});
|
|
1469
1470
|
return INVALID;
|
|
1470
1471
|
}
|
|
1471
|
-
if (
|
|
1472
|
-
if (ctx.data.length <
|
|
1472
|
+
if (def2.minLength !== null) {
|
|
1473
|
+
if (ctx.data.length < def2.minLength.value) {
|
|
1473
1474
|
addIssueToContext(ctx, {
|
|
1474
1475
|
code: ZodIssueCode.too_small,
|
|
1475
|
-
minimum:
|
|
1476
|
+
minimum: def2.minLength.value,
|
|
1476
1477
|
type: "array",
|
|
1477
1478
|
inclusive: true,
|
|
1478
|
-
message:
|
|
1479
|
+
message: def2.minLength.message
|
|
1479
1480
|
});
|
|
1480
1481
|
status.dirty();
|
|
1481
1482
|
}
|
|
1482
1483
|
}
|
|
1483
|
-
if (
|
|
1484
|
-
if (ctx.data.length >
|
|
1484
|
+
if (def2.maxLength !== null) {
|
|
1485
|
+
if (ctx.data.length > def2.maxLength.value) {
|
|
1485
1486
|
addIssueToContext(ctx, {
|
|
1486
1487
|
code: ZodIssueCode.too_big,
|
|
1487
|
-
maximum:
|
|
1488
|
+
maximum: def2.maxLength.value,
|
|
1488
1489
|
type: "array",
|
|
1489
1490
|
inclusive: true,
|
|
1490
|
-
message:
|
|
1491
|
+
message: def2.maxLength.message
|
|
1491
1492
|
});
|
|
1492
1493
|
status.dirty();
|
|
1493
1494
|
}
|
|
1494
1495
|
}
|
|
1495
1496
|
if (ctx.common.async) {
|
|
1496
1497
|
return Promise.all(ctx.data.map((item, i) => {
|
|
1497
|
-
return
|
|
1498
|
+
return def2.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));
|
|
1498
1499
|
})).then((result2) => {
|
|
1499
1500
|
return ParseStatus.mergeArray(status, result2);
|
|
1500
1501
|
});
|
|
1501
1502
|
}
|
|
1502
1503
|
const result = ctx.data.map((item, i) => {
|
|
1503
|
-
return
|
|
1504
|
+
return def2.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));
|
|
1504
1505
|
});
|
|
1505
1506
|
return ParseStatus.mergeArray(status, result);
|
|
1506
1507
|
}
|
|
@@ -1526,9 +1527,9 @@ var ZodArray = class extends ZodType {
|
|
|
1526
1527
|
return this.min(1, message);
|
|
1527
1528
|
}
|
|
1528
1529
|
};
|
|
1529
|
-
ZodArray.create = (
|
|
1530
|
+
ZodArray.create = (schema2, params2) => {
|
|
1530
1531
|
return new ZodArray({
|
|
1531
|
-
type:
|
|
1532
|
+
type: schema2,
|
|
1532
1533
|
minLength: null,
|
|
1533
1534
|
maxLength: null,
|
|
1534
1535
|
typeName: ZodFirstPartyTypeKind.ZodArray,
|
|
@@ -1544,36 +1545,36 @@ var objectUtil;
|
|
|
1544
1545
|
};
|
|
1545
1546
|
};
|
|
1546
1547
|
})(objectUtil || (objectUtil = {}));
|
|
1547
|
-
var AugmentFactory = (
|
|
1548
|
+
var AugmentFactory = (def2) => (augmentation) => {
|
|
1548
1549
|
return new ZodObject({
|
|
1549
|
-
...
|
|
1550
|
+
...def2,
|
|
1550
1551
|
shape: () => ({
|
|
1551
|
-
...
|
|
1552
|
+
...def2.shape(),
|
|
1552
1553
|
...augmentation
|
|
1553
1554
|
})
|
|
1554
1555
|
});
|
|
1555
1556
|
};
|
|
1556
|
-
function deepPartialify(
|
|
1557
|
-
if (
|
|
1557
|
+
function deepPartialify(schema2) {
|
|
1558
|
+
if (schema2 instanceof ZodObject) {
|
|
1558
1559
|
const newShape = {};
|
|
1559
|
-
for (const key in
|
|
1560
|
-
const fieldSchema =
|
|
1560
|
+
for (const key in schema2.shape) {
|
|
1561
|
+
const fieldSchema = schema2.shape[key];
|
|
1561
1562
|
newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));
|
|
1562
1563
|
}
|
|
1563
1564
|
return new ZodObject({
|
|
1564
|
-
...
|
|
1565
|
+
...schema2._def,
|
|
1565
1566
|
shape: () => newShape
|
|
1566
1567
|
});
|
|
1567
|
-
} else if (
|
|
1568
|
-
return ZodArray.create(deepPartialify(
|
|
1569
|
-
} else if (
|
|
1570
|
-
return ZodOptional.create(deepPartialify(
|
|
1571
|
-
} else if (
|
|
1572
|
-
return ZodNullable.create(deepPartialify(
|
|
1573
|
-
} else if (
|
|
1574
|
-
return ZodTuple.create(
|
|
1568
|
+
} else if (schema2 instanceof ZodArray) {
|
|
1569
|
+
return ZodArray.create(deepPartialify(schema2.element));
|
|
1570
|
+
} else if (schema2 instanceof ZodOptional) {
|
|
1571
|
+
return ZodOptional.create(deepPartialify(schema2.unwrap()));
|
|
1572
|
+
} else if (schema2 instanceof ZodNullable) {
|
|
1573
|
+
return ZodNullable.create(deepPartialify(schema2.unwrap()));
|
|
1574
|
+
} else if (schema2 instanceof ZodTuple) {
|
|
1575
|
+
return ZodTuple.create(schema2.items.map((item) => deepPartialify(item)));
|
|
1575
1576
|
} else {
|
|
1576
|
-
return
|
|
1577
|
+
return schema2;
|
|
1577
1578
|
}
|
|
1578
1579
|
}
|
|
1579
1580
|
var ZodObject = class extends ZodType {
|
|
@@ -1711,8 +1712,8 @@ var ZodObject = class extends ZodType {
|
|
|
1711
1712
|
unknownKeys: "passthrough"
|
|
1712
1713
|
});
|
|
1713
1714
|
}
|
|
1714
|
-
setKey(key,
|
|
1715
|
-
return this.augment({ [key]:
|
|
1715
|
+
setKey(key, schema2) {
|
|
1716
|
+
return this.augment({ [key]: schema2 });
|
|
1716
1717
|
}
|
|
1717
1718
|
merge(merging) {
|
|
1718
1719
|
const merged = new ZodObject({
|
|
@@ -2105,10 +2106,10 @@ var ZodTuple = class extends ZodType {
|
|
|
2105
2106
|
status.dirty();
|
|
2106
2107
|
}
|
|
2107
2108
|
const items = ctx.data.map((item, itemIndex) => {
|
|
2108
|
-
const
|
|
2109
|
-
if (!
|
|
2109
|
+
const schema2 = this._def.items[itemIndex] || this._def.rest;
|
|
2110
|
+
if (!schema2)
|
|
2110
2111
|
return null;
|
|
2111
|
-
return
|
|
2112
|
+
return schema2._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));
|
|
2112
2113
|
}).filter((x) => !!x);
|
|
2113
2114
|
if (ctx.common.async) {
|
|
2114
2115
|
return Promise.all(items).then((results) => {
|
|
@@ -2262,27 +2263,27 @@ var ZodSet = class extends ZodType {
|
|
|
2262
2263
|
});
|
|
2263
2264
|
return INVALID;
|
|
2264
2265
|
}
|
|
2265
|
-
const
|
|
2266
|
-
if (
|
|
2267
|
-
if (ctx.data.size <
|
|
2266
|
+
const def2 = this._def;
|
|
2267
|
+
if (def2.minSize !== null) {
|
|
2268
|
+
if (ctx.data.size < def2.minSize.value) {
|
|
2268
2269
|
addIssueToContext(ctx, {
|
|
2269
2270
|
code: ZodIssueCode.too_small,
|
|
2270
|
-
minimum:
|
|
2271
|
+
minimum: def2.minSize.value,
|
|
2271
2272
|
type: "set",
|
|
2272
2273
|
inclusive: true,
|
|
2273
|
-
message:
|
|
2274
|
+
message: def2.minSize.message
|
|
2274
2275
|
});
|
|
2275
2276
|
status.dirty();
|
|
2276
2277
|
}
|
|
2277
2278
|
}
|
|
2278
|
-
if (
|
|
2279
|
-
if (ctx.data.size >
|
|
2279
|
+
if (def2.maxSize !== null) {
|
|
2280
|
+
if (ctx.data.size > def2.maxSize.value) {
|
|
2280
2281
|
addIssueToContext(ctx, {
|
|
2281
2282
|
code: ZodIssueCode.too_big,
|
|
2282
|
-
maximum:
|
|
2283
|
+
maximum: def2.maxSize.value,
|
|
2283
2284
|
type: "set",
|
|
2284
2285
|
inclusive: true,
|
|
2285
|
-
message:
|
|
2286
|
+
message: def2.maxSize.message
|
|
2286
2287
|
});
|
|
2287
2288
|
status.dirty();
|
|
2288
2289
|
}
|
|
@@ -2599,9 +2600,9 @@ var ZodPromise = class extends ZodType {
|
|
|
2599
2600
|
}));
|
|
2600
2601
|
}
|
|
2601
2602
|
};
|
|
2602
|
-
ZodPromise.create = (
|
|
2603
|
+
ZodPromise.create = (schema2, params2) => {
|
|
2603
2604
|
return new ZodPromise({
|
|
2604
|
-
type:
|
|
2605
|
+
type: schema2,
|
|
2605
2606
|
typeName: ZodFirstPartyTypeKind.ZodPromise,
|
|
2606
2607
|
...processCreateParams(params2)
|
|
2607
2608
|
});
|
|
@@ -2682,40 +2683,40 @@ var ZodEffects = class extends ZodType {
|
|
|
2682
2683
|
}
|
|
2683
2684
|
if (effect.type === "transform") {
|
|
2684
2685
|
if (ctx.common.async === false) {
|
|
2685
|
-
const
|
|
2686
|
+
const base3 = this._def.schema._parseSync({
|
|
2686
2687
|
data: ctx.data,
|
|
2687
2688
|
path: ctx.path,
|
|
2688
2689
|
parent: ctx
|
|
2689
2690
|
});
|
|
2690
|
-
if (!isValid(
|
|
2691
|
-
return
|
|
2692
|
-
const result = effect.transform(
|
|
2691
|
+
if (!isValid(base3))
|
|
2692
|
+
return base3;
|
|
2693
|
+
const result = effect.transform(base3.value, checkCtx);
|
|
2693
2694
|
if (result instanceof Promise) {
|
|
2694
2695
|
throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);
|
|
2695
2696
|
}
|
|
2696
2697
|
return { status: status.value, value: result };
|
|
2697
2698
|
} else {
|
|
2698
|
-
return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((
|
|
2699
|
-
if (!isValid(
|
|
2700
|
-
return
|
|
2701
|
-
return Promise.resolve(effect.transform(
|
|
2699
|
+
return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base3) => {
|
|
2700
|
+
if (!isValid(base3))
|
|
2701
|
+
return base3;
|
|
2702
|
+
return Promise.resolve(effect.transform(base3.value, checkCtx)).then((result) => ({ status: status.value, value: result }));
|
|
2702
2703
|
});
|
|
2703
2704
|
}
|
|
2704
2705
|
}
|
|
2705
2706
|
util.assertNever(effect);
|
|
2706
2707
|
}
|
|
2707
2708
|
};
|
|
2708
|
-
ZodEffects.create = (
|
|
2709
|
+
ZodEffects.create = (schema2, effect, params2) => {
|
|
2709
2710
|
return new ZodEffects({
|
|
2710
|
-
schema,
|
|
2711
|
+
schema: schema2,
|
|
2711
2712
|
typeName: ZodFirstPartyTypeKind.ZodEffects,
|
|
2712
2713
|
effect,
|
|
2713
2714
|
...processCreateParams(params2)
|
|
2714
2715
|
});
|
|
2715
2716
|
};
|
|
2716
|
-
ZodEffects.createWithPreprocess = (preprocess,
|
|
2717
|
+
ZodEffects.createWithPreprocess = (preprocess, schema2, params2) => {
|
|
2717
2718
|
return new ZodEffects({
|
|
2718
|
-
schema,
|
|
2719
|
+
schema: schema2,
|
|
2719
2720
|
effect: { type: "preprocess", transform: preprocess },
|
|
2720
2721
|
typeName: ZodFirstPartyTypeKind.ZodEffects,
|
|
2721
2722
|
...processCreateParams(params2)
|
|
@@ -3097,36 +3098,22 @@ var XRPCInvalidResponseError = class extends XRPCError {
|
|
|
3097
3098
|
};
|
|
3098
3099
|
|
|
3099
3100
|
// ../nsid/src/index.ts
|
|
3100
|
-
var SEGMENT_RE = /^[a-zA-Z]([a-zA-Z0-9-])*$/;
|
|
3101
3101
|
var NSID = class {
|
|
3102
|
-
constructor(
|
|
3102
|
+
constructor(nsid2) {
|
|
3103
3103
|
this.segments = [];
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
throw new Error(`Invalid NSID: ${nsid}`);
|
|
3107
|
-
}
|
|
3108
|
-
for (let i = 0; i < segments.length; i++) {
|
|
3109
|
-
const segment = segments[i];
|
|
3110
|
-
if (SEGMENT_RE.test(segment)) {
|
|
3111
|
-
continue;
|
|
3112
|
-
}
|
|
3113
|
-
if (i === segments.length - 1 && segment === "*") {
|
|
3114
|
-
continue;
|
|
3115
|
-
}
|
|
3116
|
-
throw new Error(`Invalid NSID: invalid character in segment "${segment}"`);
|
|
3117
|
-
}
|
|
3118
|
-
this.segments = segments;
|
|
3104
|
+
ensureValidNsid(nsid2);
|
|
3105
|
+
this.segments = nsid2.split(".");
|
|
3119
3106
|
}
|
|
3120
|
-
static parse(
|
|
3121
|
-
return new NSID(
|
|
3107
|
+
static parse(nsid2) {
|
|
3108
|
+
return new NSID(nsid2);
|
|
3122
3109
|
}
|
|
3123
|
-
static create(authority,
|
|
3124
|
-
const segments = [...authority.split(".").reverse(),
|
|
3110
|
+
static create(authority, name2) {
|
|
3111
|
+
const segments = [...authority.split(".").reverse(), name2].join(".");
|
|
3125
3112
|
return new NSID(segments);
|
|
3126
3113
|
}
|
|
3127
|
-
static isValid(
|
|
3114
|
+
static isValid(nsid2) {
|
|
3128
3115
|
try {
|
|
3129
|
-
NSID.parse(
|
|
3116
|
+
NSID.parse(nsid2);
|
|
3130
3117
|
return true;
|
|
3131
3118
|
} catch (e) {
|
|
3132
3119
|
return false;
|
|
@@ -3142,6 +3129,42 @@ var NSID = class {
|
|
|
3142
3129
|
return this.segments.join(".");
|
|
3143
3130
|
}
|
|
3144
3131
|
};
|
|
3132
|
+
var ensureValidNsid = (nsid2) => {
|
|
3133
|
+
const split = nsid2.split(".");
|
|
3134
|
+
const toCheck = split.at(-1) === "*" ? split.slice(0, -1).join(".") : split.join(".");
|
|
3135
|
+
if (!/^[a-zA-Z0-9.-]*$/.test(toCheck)) {
|
|
3136
|
+
throw new InvalidNsidError(
|
|
3137
|
+
"Disallowed characters in NSID (ASCII letters, digits, dashes, periods only)"
|
|
3138
|
+
);
|
|
3139
|
+
}
|
|
3140
|
+
if (toCheck.length > 253 + 1 + 128) {
|
|
3141
|
+
throw new InvalidNsidError("NSID is too long (382 chars max)");
|
|
3142
|
+
}
|
|
3143
|
+
const labels = toCheck.split(".");
|
|
3144
|
+
if (split.length < 3) {
|
|
3145
|
+
throw new InvalidNsidError("NSID needs at least three parts");
|
|
3146
|
+
}
|
|
3147
|
+
for (let i = 0; i < labels.length; i++) {
|
|
3148
|
+
const l = labels[i];
|
|
3149
|
+
if (l.length < 1) {
|
|
3150
|
+
throw new InvalidNsidError("NSID parts can not be empty");
|
|
3151
|
+
}
|
|
3152
|
+
if (l.length > 63 && i + 1 < labels.length) {
|
|
3153
|
+
throw new InvalidNsidError("NSID domain part too long (max 63 chars)");
|
|
3154
|
+
}
|
|
3155
|
+
if (l.length > 128 && i + 1 == labels.length) {
|
|
3156
|
+
throw new InvalidNsidError("NSID name part too long (max 127 chars)");
|
|
3157
|
+
}
|
|
3158
|
+
if (l.endsWith("-")) {
|
|
3159
|
+
throw new InvalidNsidError("NSID parts can not end with hyphen");
|
|
3160
|
+
}
|
|
3161
|
+
if (!/^[a-zA-Z]/.test(l)) {
|
|
3162
|
+
throw new InvalidNsidError("NSID parts must start with ASCII letter");
|
|
3163
|
+
}
|
|
3164
|
+
}
|
|
3165
|
+
};
|
|
3166
|
+
var InvalidNsidError = class extends Error {
|
|
3167
|
+
};
|
|
3145
3168
|
|
|
3146
3169
|
// ../lexicon/src/types.ts
|
|
3147
3170
|
var lexBoolean = mod.object({
|
|
@@ -3150,8 +3173,8 @@ var lexBoolean = mod.object({
|
|
|
3150
3173
|
default: mod.boolean().optional(),
|
|
3151
3174
|
const: mod.boolean().optional()
|
|
3152
3175
|
});
|
|
3153
|
-
var
|
|
3154
|
-
type: mod.literal("
|
|
3176
|
+
var lexFloat = mod.object({
|
|
3177
|
+
type: mod.literal("float"),
|
|
3155
3178
|
description: mod.string().optional(),
|
|
3156
3179
|
default: mod.number().optional(),
|
|
3157
3180
|
minimum: mod.number().optional(),
|
|
@@ -3168,32 +3191,51 @@ var lexInteger = mod.object({
|
|
|
3168
3191
|
enum: mod.number().int().array().optional(),
|
|
3169
3192
|
const: mod.number().int().optional()
|
|
3170
3193
|
});
|
|
3194
|
+
var lexStringFormat = mod.enum([
|
|
3195
|
+
"datetime",
|
|
3196
|
+
"uri",
|
|
3197
|
+
"at-uri",
|
|
3198
|
+
"did",
|
|
3199
|
+
"handle",
|
|
3200
|
+
"at-identifier",
|
|
3201
|
+
"nsid",
|
|
3202
|
+
"cid"
|
|
3203
|
+
]);
|
|
3171
3204
|
var lexString = mod.object({
|
|
3172
3205
|
type: mod.literal("string"),
|
|
3206
|
+
format: lexStringFormat.optional(),
|
|
3173
3207
|
description: mod.string().optional(),
|
|
3174
3208
|
default: mod.string().optional(),
|
|
3175
3209
|
minLength: mod.number().int().optional(),
|
|
3176
3210
|
maxLength: mod.number().int().optional(),
|
|
3211
|
+
minGraphemes: mod.number().int().optional(),
|
|
3212
|
+
maxGraphemes: mod.number().int().optional(),
|
|
3177
3213
|
enum: mod.string().array().optional(),
|
|
3178
3214
|
const: mod.string().optional(),
|
|
3179
3215
|
knownValues: mod.string().array().optional()
|
|
3180
3216
|
});
|
|
3181
|
-
var lexDatetime = mod.object({
|
|
3182
|
-
type: mod.literal("datetime"),
|
|
3183
|
-
description: mod.string().optional()
|
|
3184
|
-
});
|
|
3185
3217
|
var lexUnknown = mod.object({
|
|
3186
3218
|
type: mod.literal("unknown"),
|
|
3187
3219
|
description: mod.string().optional()
|
|
3188
3220
|
});
|
|
3189
3221
|
var lexPrimitive = mod.union([
|
|
3190
3222
|
lexBoolean,
|
|
3191
|
-
|
|
3223
|
+
lexFloat,
|
|
3192
3224
|
lexInteger,
|
|
3193
3225
|
lexString,
|
|
3194
|
-
lexDatetime,
|
|
3195
3226
|
lexUnknown
|
|
3196
3227
|
]);
|
|
3228
|
+
var lexBytes = mod.object({
|
|
3229
|
+
type: mod.literal("bytes"),
|
|
3230
|
+
description: mod.string().optional(),
|
|
3231
|
+
maxLength: mod.number().optional(),
|
|
3232
|
+
minLength: mod.number().optional()
|
|
3233
|
+
});
|
|
3234
|
+
var lexCidLink = mod.object({
|
|
3235
|
+
type: mod.literal("cid-link"),
|
|
3236
|
+
description: mod.string().optional()
|
|
3237
|
+
});
|
|
3238
|
+
var lexIpldType = mod.union([lexBytes, lexCidLink]);
|
|
3197
3239
|
var lexRef = mod.object({
|
|
3198
3240
|
type: mod.literal("ref"),
|
|
3199
3241
|
description: mod.string().optional(),
|
|
@@ -3212,38 +3254,18 @@ var lexBlob = mod.object({
|
|
|
3212
3254
|
accept: mod.string().array().optional(),
|
|
3213
3255
|
maxSize: mod.number().optional()
|
|
3214
3256
|
});
|
|
3215
|
-
var lexImage = mod.object({
|
|
3216
|
-
type: mod.literal("image"),
|
|
3217
|
-
description: mod.string().optional(),
|
|
3218
|
-
accept: mod.string().array().optional(),
|
|
3219
|
-
maxSize: mod.number().optional(),
|
|
3220
|
-
maxWidth: mod.number().int().optional(),
|
|
3221
|
-
maxHeight: mod.number().int().optional()
|
|
3222
|
-
});
|
|
3223
|
-
var lexVideo = mod.object({
|
|
3224
|
-
type: mod.literal("video"),
|
|
3225
|
-
description: mod.string().optional(),
|
|
3226
|
-
accept: mod.string().array().optional(),
|
|
3227
|
-
maxSize: mod.number().optional(),
|
|
3228
|
-
maxWidth: mod.number().int().optional(),
|
|
3229
|
-
maxHeight: mod.number().int().optional(),
|
|
3230
|
-
maxLength: mod.number().int().optional()
|
|
3231
|
-
});
|
|
3232
|
-
var lexAudio = mod.object({
|
|
3233
|
-
type: mod.literal("audio"),
|
|
3234
|
-
description: mod.string().optional(),
|
|
3235
|
-
accept: mod.string().array().optional(),
|
|
3236
|
-
maxSize: mod.number().optional(),
|
|
3237
|
-
maxLength: mod.number().int().optional()
|
|
3238
|
-
});
|
|
3239
|
-
var lexBlobVariant = mod.union([lexBlob, lexImage, lexVideo, lexAudio]);
|
|
3240
3257
|
var lexArray = mod.object({
|
|
3241
3258
|
type: mod.literal("array"),
|
|
3242
3259
|
description: mod.string().optional(),
|
|
3243
|
-
items: mod.union([lexPrimitive,
|
|
3260
|
+
items: mod.union([lexPrimitive, lexIpldType, lexBlob, lexRefVariant]),
|
|
3244
3261
|
minLength: mod.number().int().optional(),
|
|
3245
3262
|
maxLength: mod.number().int().optional()
|
|
3246
3263
|
});
|
|
3264
|
+
var lexPrimitiveArray = lexArray.merge(
|
|
3265
|
+
mod.object({
|
|
3266
|
+
items: lexPrimitive
|
|
3267
|
+
})
|
|
3268
|
+
);
|
|
3247
3269
|
var lexToken = mod.object({
|
|
3248
3270
|
type: mod.literal("token"),
|
|
3249
3271
|
description: mod.string().optional()
|
|
@@ -3252,19 +3274,26 @@ var lexObject = mod.object({
|
|
|
3252
3274
|
type: mod.literal("object"),
|
|
3253
3275
|
description: mod.string().optional(),
|
|
3254
3276
|
required: mod.string().array().optional(),
|
|
3255
|
-
|
|
3277
|
+
nullable: mod.string().array().optional(),
|
|
3278
|
+
properties: mod.record(
|
|
3279
|
+
mod.union([lexRefVariant, lexIpldType, lexArray, lexBlob, lexPrimitive])
|
|
3280
|
+
).optional()
|
|
3256
3281
|
});
|
|
3257
3282
|
var lexXrpcParameters = mod.object({
|
|
3258
3283
|
type: mod.literal("params"),
|
|
3259
3284
|
description: mod.string().optional(),
|
|
3260
3285
|
required: mod.string().array().optional(),
|
|
3261
|
-
properties: mod.record(lexPrimitive)
|
|
3286
|
+
properties: mod.record(mod.union([lexPrimitive, lexPrimitiveArray]))
|
|
3262
3287
|
});
|
|
3263
3288
|
var lexXrpcBody = mod.object({
|
|
3264
3289
|
description: mod.string().optional(),
|
|
3265
3290
|
encoding: mod.string(),
|
|
3266
3291
|
schema: mod.union([lexRefVariant, lexObject]).optional()
|
|
3267
3292
|
});
|
|
3293
|
+
var lexXrpcSubscriptionMessage = mod.object({
|
|
3294
|
+
description: mod.string().optional(),
|
|
3295
|
+
schema: mod.union([lexRefVariant, lexObject]).optional()
|
|
3296
|
+
});
|
|
3268
3297
|
var lexXrpcError = mod.object({
|
|
3269
3298
|
name: mod.string(),
|
|
3270
3299
|
description: mod.string().optional()
|
|
@@ -3284,6 +3313,14 @@ var lexXrpcProcedure = mod.object({
|
|
|
3284
3313
|
output: lexXrpcBody.optional(),
|
|
3285
3314
|
errors: lexXrpcError.array().optional()
|
|
3286
3315
|
});
|
|
3316
|
+
var lexXrpcSubscription = mod.object({
|
|
3317
|
+
type: mod.literal("subscription"),
|
|
3318
|
+
description: mod.string().optional(),
|
|
3319
|
+
parameters: lexXrpcParameters.optional(),
|
|
3320
|
+
message: lexXrpcSubscriptionMessage.optional(),
|
|
3321
|
+
infos: lexXrpcError.array().optional(),
|
|
3322
|
+
errors: lexXrpcError.array().optional()
|
|
3323
|
+
});
|
|
3287
3324
|
var lexRecord = mod.object({
|
|
3288
3325
|
type: mod.literal("record"),
|
|
3289
3326
|
description: mod.string().optional(),
|
|
@@ -3294,18 +3331,17 @@ var lexUserType = mod.union([
|
|
|
3294
3331
|
lexRecord,
|
|
3295
3332
|
lexXrpcQuery,
|
|
3296
3333
|
lexXrpcProcedure,
|
|
3334
|
+
lexXrpcSubscription,
|
|
3297
3335
|
lexBlob,
|
|
3298
|
-
lexImage,
|
|
3299
|
-
lexVideo,
|
|
3300
|
-
lexAudio,
|
|
3301
3336
|
lexArray,
|
|
3302
3337
|
lexToken,
|
|
3303
3338
|
lexObject,
|
|
3304
3339
|
lexBoolean,
|
|
3305
|
-
|
|
3340
|
+
lexFloat,
|
|
3306
3341
|
lexInteger,
|
|
3307
3342
|
lexString,
|
|
3308
|
-
|
|
3343
|
+
lexBytes,
|
|
3344
|
+
lexCidLink,
|
|
3309
3345
|
lexUnknown
|
|
3310
3346
|
]);
|
|
3311
3347
|
var lexiconDoc = mod.object({
|
|
@@ -3318,70 +3354,2522 @@ var lexiconDoc = mod.object({
|
|
|
3318
3354
|
defs: mod.record(lexUserType)
|
|
3319
3355
|
}).superRefine((doc, ctx) => {
|
|
3320
3356
|
for (const defId in doc.defs) {
|
|
3321
|
-
const
|
|
3322
|
-
if (defId !== "main" && (
|
|
3357
|
+
const def2 = doc.defs[defId];
|
|
3358
|
+
if (defId !== "main" && (def2.type === "record" || def2.type === "procedure" || def2.type === "query" || def2.type === "subscription")) {
|
|
3323
3359
|
ctx.addIssue({
|
|
3324
3360
|
code: mod.ZodIssueCode.custom,
|
|
3325
|
-
message: `Records, procedures, and
|
|
3361
|
+
message: `Records, procedures, queries, and subscriptions must be the main definition.`
|
|
3326
3362
|
});
|
|
3327
3363
|
}
|
|
3328
3364
|
}
|
|
3329
|
-
});
|
|
3330
|
-
function isObj(obj) {
|
|
3331
|
-
return obj !== null && typeof obj === "object";
|
|
3332
|
-
}
|
|
3333
|
-
function hasProp(data, prop) {
|
|
3334
|
-
return prop in data;
|
|
3335
|
-
}
|
|
3336
|
-
var discriminatedObject = mod.object({ $type: mod.string() });
|
|
3337
|
-
function isDiscriminatedObject(value) {
|
|
3338
|
-
return discriminatedObject.safeParse(value).success;
|
|
3339
|
-
}
|
|
3340
|
-
var LexiconDocMalformedError = class extends Error {
|
|
3341
|
-
constructor(message, schemaDef, issues) {
|
|
3342
|
-
super(message);
|
|
3343
|
-
this.schemaDef = schemaDef;
|
|
3344
|
-
this.issues = issues;
|
|
3345
|
-
this.schemaDef = schemaDef;
|
|
3346
|
-
this.issues = issues;
|
|
3365
|
+
});
|
|
3366
|
+
function isObj(obj) {
|
|
3367
|
+
return obj !== null && typeof obj === "object";
|
|
3368
|
+
}
|
|
3369
|
+
function hasProp(data, prop) {
|
|
3370
|
+
return prop in data;
|
|
3371
|
+
}
|
|
3372
|
+
var discriminatedObject = mod.object({ $type: mod.string() });
|
|
3373
|
+
function isDiscriminatedObject(value) {
|
|
3374
|
+
return discriminatedObject.safeParse(value).success;
|
|
3375
|
+
}
|
|
3376
|
+
var LexiconDocMalformedError = class extends Error {
|
|
3377
|
+
constructor(message, schemaDef, issues) {
|
|
3378
|
+
super(message);
|
|
3379
|
+
this.schemaDef = schemaDef;
|
|
3380
|
+
this.issues = issues;
|
|
3381
|
+
this.schemaDef = schemaDef;
|
|
3382
|
+
this.issues = issues;
|
|
3383
|
+
}
|
|
3384
|
+
};
|
|
3385
|
+
var ValidationError = class extends Error {
|
|
3386
|
+
};
|
|
3387
|
+
var InvalidLexiconError = class extends Error {
|
|
3388
|
+
};
|
|
3389
|
+
var LexiconDefNotFoundError = class extends Error {
|
|
3390
|
+
};
|
|
3391
|
+
|
|
3392
|
+
// ../common-web/src/check.ts
|
|
3393
|
+
var check_exports = {};
|
|
3394
|
+
__export(check_exports, {
|
|
3395
|
+
assure: () => assure,
|
|
3396
|
+
is: () => is,
|
|
3397
|
+
isObject: () => isObject
|
|
3398
|
+
});
|
|
3399
|
+
var is = (obj, def2) => {
|
|
3400
|
+
return def2.safeParse(obj).success;
|
|
3401
|
+
};
|
|
3402
|
+
var assure = (def2, obj) => {
|
|
3403
|
+
return def2.parse(obj);
|
|
3404
|
+
};
|
|
3405
|
+
var isObject = (obj) => {
|
|
3406
|
+
return typeof obj === "object" && obj !== null;
|
|
3407
|
+
};
|
|
3408
|
+
|
|
3409
|
+
// ../../node_modules/multiformats/esm/vendor/varint.js
|
|
3410
|
+
var encode_1 = encode;
|
|
3411
|
+
var MSB = 128;
|
|
3412
|
+
var REST = 127;
|
|
3413
|
+
var MSBALL = ~REST;
|
|
3414
|
+
var INT = Math.pow(2, 31);
|
|
3415
|
+
function encode(num, out, offset) {
|
|
3416
|
+
out = out || [];
|
|
3417
|
+
offset = offset || 0;
|
|
3418
|
+
var oldOffset = offset;
|
|
3419
|
+
while (num >= INT) {
|
|
3420
|
+
out[offset++] = num & 255 | MSB;
|
|
3421
|
+
num /= 128;
|
|
3422
|
+
}
|
|
3423
|
+
while (num & MSBALL) {
|
|
3424
|
+
out[offset++] = num & 255 | MSB;
|
|
3425
|
+
num >>>= 7;
|
|
3426
|
+
}
|
|
3427
|
+
out[offset] = num | 0;
|
|
3428
|
+
encode.bytes = offset - oldOffset + 1;
|
|
3429
|
+
return out;
|
|
3430
|
+
}
|
|
3431
|
+
var decode = read;
|
|
3432
|
+
var MSB$1 = 128;
|
|
3433
|
+
var REST$1 = 127;
|
|
3434
|
+
function read(buf, offset) {
|
|
3435
|
+
var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;
|
|
3436
|
+
do {
|
|
3437
|
+
if (counter >= l) {
|
|
3438
|
+
read.bytes = 0;
|
|
3439
|
+
throw new RangeError("Could not decode varint");
|
|
3440
|
+
}
|
|
3441
|
+
b = buf[counter++];
|
|
3442
|
+
res += shift < 28 ? (b & REST$1) << shift : (b & REST$1) * Math.pow(2, shift);
|
|
3443
|
+
shift += 7;
|
|
3444
|
+
} while (b >= MSB$1);
|
|
3445
|
+
read.bytes = counter - offset;
|
|
3446
|
+
return res;
|
|
3447
|
+
}
|
|
3448
|
+
var N1 = Math.pow(2, 7);
|
|
3449
|
+
var N2 = Math.pow(2, 14);
|
|
3450
|
+
var N3 = Math.pow(2, 21);
|
|
3451
|
+
var N4 = Math.pow(2, 28);
|
|
3452
|
+
var N5 = Math.pow(2, 35);
|
|
3453
|
+
var N6 = Math.pow(2, 42);
|
|
3454
|
+
var N7 = Math.pow(2, 49);
|
|
3455
|
+
var N8 = Math.pow(2, 56);
|
|
3456
|
+
var N9 = Math.pow(2, 63);
|
|
3457
|
+
var length = function(value) {
|
|
3458
|
+
return value < N1 ? 1 : value < N2 ? 2 : value < N3 ? 3 : value < N4 ? 4 : value < N5 ? 5 : value < N6 ? 6 : value < N7 ? 7 : value < N8 ? 8 : value < N9 ? 9 : 10;
|
|
3459
|
+
};
|
|
3460
|
+
var varint = {
|
|
3461
|
+
encode: encode_1,
|
|
3462
|
+
decode,
|
|
3463
|
+
encodingLength: length
|
|
3464
|
+
};
|
|
3465
|
+
var _brrp_varint = varint;
|
|
3466
|
+
var varint_default = _brrp_varint;
|
|
3467
|
+
|
|
3468
|
+
// ../../node_modules/multiformats/esm/src/varint.js
|
|
3469
|
+
var decode2 = (data, offset = 0) => {
|
|
3470
|
+
const code2 = varint_default.decode(data, offset);
|
|
3471
|
+
return [
|
|
3472
|
+
code2,
|
|
3473
|
+
varint_default.decode.bytes
|
|
3474
|
+
];
|
|
3475
|
+
};
|
|
3476
|
+
var encodeTo = (int, target, offset = 0) => {
|
|
3477
|
+
varint_default.encode(int, target, offset);
|
|
3478
|
+
return target;
|
|
3479
|
+
};
|
|
3480
|
+
var encodingLength = (int) => {
|
|
3481
|
+
return varint_default.encodingLength(int);
|
|
3482
|
+
};
|
|
3483
|
+
|
|
3484
|
+
// ../../node_modules/multiformats/esm/src/bytes.js
|
|
3485
|
+
var empty = new Uint8Array(0);
|
|
3486
|
+
var equals = (aa, bb) => {
|
|
3487
|
+
if (aa === bb)
|
|
3488
|
+
return true;
|
|
3489
|
+
if (aa.byteLength !== bb.byteLength) {
|
|
3490
|
+
return false;
|
|
3491
|
+
}
|
|
3492
|
+
for (let ii = 0; ii < aa.byteLength; ii++) {
|
|
3493
|
+
if (aa[ii] !== bb[ii]) {
|
|
3494
|
+
return false;
|
|
3495
|
+
}
|
|
3496
|
+
}
|
|
3497
|
+
return true;
|
|
3498
|
+
};
|
|
3499
|
+
var coerce = (o) => {
|
|
3500
|
+
if (o instanceof Uint8Array && o.constructor.name === "Uint8Array")
|
|
3501
|
+
return o;
|
|
3502
|
+
if (o instanceof ArrayBuffer)
|
|
3503
|
+
return new Uint8Array(o);
|
|
3504
|
+
if (ArrayBuffer.isView(o)) {
|
|
3505
|
+
return new Uint8Array(o.buffer, o.byteOffset, o.byteLength);
|
|
3506
|
+
}
|
|
3507
|
+
throw new Error("Unknown type, must be binary type");
|
|
3508
|
+
};
|
|
3509
|
+
var fromString = (str) => new TextEncoder().encode(str);
|
|
3510
|
+
var toString = (b) => new TextDecoder().decode(b);
|
|
3511
|
+
|
|
3512
|
+
// ../../node_modules/multiformats/esm/src/hashes/digest.js
|
|
3513
|
+
var create = (code2, digest2) => {
|
|
3514
|
+
const size = digest2.byteLength;
|
|
3515
|
+
const sizeOffset = encodingLength(code2);
|
|
3516
|
+
const digestOffset = sizeOffset + encodingLength(size);
|
|
3517
|
+
const bytes2 = new Uint8Array(digestOffset + size);
|
|
3518
|
+
encodeTo(code2, bytes2, 0);
|
|
3519
|
+
encodeTo(size, bytes2, sizeOffset);
|
|
3520
|
+
bytes2.set(digest2, digestOffset);
|
|
3521
|
+
return new Digest(code2, size, digest2, bytes2);
|
|
3522
|
+
};
|
|
3523
|
+
var decode3 = (multihash) => {
|
|
3524
|
+
const bytes2 = coerce(multihash);
|
|
3525
|
+
const [code2, sizeOffset] = decode2(bytes2);
|
|
3526
|
+
const [size, digestOffset] = decode2(bytes2.subarray(sizeOffset));
|
|
3527
|
+
const digest2 = bytes2.subarray(sizeOffset + digestOffset);
|
|
3528
|
+
if (digest2.byteLength !== size) {
|
|
3529
|
+
throw new Error("Incorrect length");
|
|
3530
|
+
}
|
|
3531
|
+
return new Digest(code2, size, digest2, bytes2);
|
|
3532
|
+
};
|
|
3533
|
+
var equals2 = (a, b) => {
|
|
3534
|
+
if (a === b) {
|
|
3535
|
+
return true;
|
|
3536
|
+
} else {
|
|
3537
|
+
return a.code === b.code && a.size === b.size && equals(a.bytes, b.bytes);
|
|
3538
|
+
}
|
|
3539
|
+
};
|
|
3540
|
+
var Digest = class {
|
|
3541
|
+
constructor(code2, size, digest2, bytes2) {
|
|
3542
|
+
this.code = code2;
|
|
3543
|
+
this.size = size;
|
|
3544
|
+
this.digest = digest2;
|
|
3545
|
+
this.bytes = bytes2;
|
|
3546
|
+
}
|
|
3547
|
+
};
|
|
3548
|
+
|
|
3549
|
+
// ../../node_modules/multiformats/esm/src/bases/base58.js
|
|
3550
|
+
var base58_exports = {};
|
|
3551
|
+
__export(base58_exports, {
|
|
3552
|
+
base58btc: () => base58btc,
|
|
3553
|
+
base58flickr: () => base58flickr
|
|
3554
|
+
});
|
|
3555
|
+
|
|
3556
|
+
// ../../node_modules/multiformats/esm/vendor/base-x.js
|
|
3557
|
+
function base(ALPHABET, name2) {
|
|
3558
|
+
if (ALPHABET.length >= 255) {
|
|
3559
|
+
throw new TypeError("Alphabet too long");
|
|
3560
|
+
}
|
|
3561
|
+
var BASE_MAP = new Uint8Array(256);
|
|
3562
|
+
for (var j = 0; j < BASE_MAP.length; j++) {
|
|
3563
|
+
BASE_MAP[j] = 255;
|
|
3564
|
+
}
|
|
3565
|
+
for (var i = 0; i < ALPHABET.length; i++) {
|
|
3566
|
+
var x = ALPHABET.charAt(i);
|
|
3567
|
+
var xc = x.charCodeAt(0);
|
|
3568
|
+
if (BASE_MAP[xc] !== 255) {
|
|
3569
|
+
throw new TypeError(x + " is ambiguous");
|
|
3570
|
+
}
|
|
3571
|
+
BASE_MAP[xc] = i;
|
|
3572
|
+
}
|
|
3573
|
+
var BASE = ALPHABET.length;
|
|
3574
|
+
var LEADER = ALPHABET.charAt(0);
|
|
3575
|
+
var FACTOR = Math.log(BASE) / Math.log(256);
|
|
3576
|
+
var iFACTOR = Math.log(256) / Math.log(BASE);
|
|
3577
|
+
function encode5(source) {
|
|
3578
|
+
if (source instanceof Uint8Array)
|
|
3579
|
+
;
|
|
3580
|
+
else if (ArrayBuffer.isView(source)) {
|
|
3581
|
+
source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);
|
|
3582
|
+
} else if (Array.isArray(source)) {
|
|
3583
|
+
source = Uint8Array.from(source);
|
|
3584
|
+
}
|
|
3585
|
+
if (!(source instanceof Uint8Array)) {
|
|
3586
|
+
throw new TypeError("Expected Uint8Array");
|
|
3587
|
+
}
|
|
3588
|
+
if (source.length === 0) {
|
|
3589
|
+
return "";
|
|
3590
|
+
}
|
|
3591
|
+
var zeroes = 0;
|
|
3592
|
+
var length2 = 0;
|
|
3593
|
+
var pbegin = 0;
|
|
3594
|
+
var pend = source.length;
|
|
3595
|
+
while (pbegin !== pend && source[pbegin] === 0) {
|
|
3596
|
+
pbegin++;
|
|
3597
|
+
zeroes++;
|
|
3598
|
+
}
|
|
3599
|
+
var size = (pend - pbegin) * iFACTOR + 1 >>> 0;
|
|
3600
|
+
var b58 = new Uint8Array(size);
|
|
3601
|
+
while (pbegin !== pend) {
|
|
3602
|
+
var carry = source[pbegin];
|
|
3603
|
+
var i2 = 0;
|
|
3604
|
+
for (var it1 = size - 1; (carry !== 0 || i2 < length2) && it1 !== -1; it1--, i2++) {
|
|
3605
|
+
carry += 256 * b58[it1] >>> 0;
|
|
3606
|
+
b58[it1] = carry % BASE >>> 0;
|
|
3607
|
+
carry = carry / BASE >>> 0;
|
|
3608
|
+
}
|
|
3609
|
+
if (carry !== 0) {
|
|
3610
|
+
throw new Error("Non-zero carry");
|
|
3611
|
+
}
|
|
3612
|
+
length2 = i2;
|
|
3613
|
+
pbegin++;
|
|
3614
|
+
}
|
|
3615
|
+
var it2 = size - length2;
|
|
3616
|
+
while (it2 !== size && b58[it2] === 0) {
|
|
3617
|
+
it2++;
|
|
3618
|
+
}
|
|
3619
|
+
var str = LEADER.repeat(zeroes);
|
|
3620
|
+
for (; it2 < size; ++it2) {
|
|
3621
|
+
str += ALPHABET.charAt(b58[it2]);
|
|
3622
|
+
}
|
|
3623
|
+
return str;
|
|
3624
|
+
}
|
|
3625
|
+
function decodeUnsafe(source) {
|
|
3626
|
+
if (typeof source !== "string") {
|
|
3627
|
+
throw new TypeError("Expected String");
|
|
3628
|
+
}
|
|
3629
|
+
if (source.length === 0) {
|
|
3630
|
+
return new Uint8Array();
|
|
3631
|
+
}
|
|
3632
|
+
var psz = 0;
|
|
3633
|
+
if (source[psz] === " ") {
|
|
3634
|
+
return;
|
|
3635
|
+
}
|
|
3636
|
+
var zeroes = 0;
|
|
3637
|
+
var length2 = 0;
|
|
3638
|
+
while (source[psz] === LEADER) {
|
|
3639
|
+
zeroes++;
|
|
3640
|
+
psz++;
|
|
3641
|
+
}
|
|
3642
|
+
var size = (source.length - psz) * FACTOR + 1 >>> 0;
|
|
3643
|
+
var b256 = new Uint8Array(size);
|
|
3644
|
+
while (source[psz]) {
|
|
3645
|
+
var carry = BASE_MAP[source.charCodeAt(psz)];
|
|
3646
|
+
if (carry === 255) {
|
|
3647
|
+
return;
|
|
3648
|
+
}
|
|
3649
|
+
var i2 = 0;
|
|
3650
|
+
for (var it3 = size - 1; (carry !== 0 || i2 < length2) && it3 !== -1; it3--, i2++) {
|
|
3651
|
+
carry += BASE * b256[it3] >>> 0;
|
|
3652
|
+
b256[it3] = carry % 256 >>> 0;
|
|
3653
|
+
carry = carry / 256 >>> 0;
|
|
3654
|
+
}
|
|
3655
|
+
if (carry !== 0) {
|
|
3656
|
+
throw new Error("Non-zero carry");
|
|
3657
|
+
}
|
|
3658
|
+
length2 = i2;
|
|
3659
|
+
psz++;
|
|
3660
|
+
}
|
|
3661
|
+
if (source[psz] === " ") {
|
|
3662
|
+
return;
|
|
3663
|
+
}
|
|
3664
|
+
var it4 = size - length2;
|
|
3665
|
+
while (it4 !== size && b256[it4] === 0) {
|
|
3666
|
+
it4++;
|
|
3667
|
+
}
|
|
3668
|
+
var vch = new Uint8Array(zeroes + (size - it4));
|
|
3669
|
+
var j2 = zeroes;
|
|
3670
|
+
while (it4 !== size) {
|
|
3671
|
+
vch[j2++] = b256[it4++];
|
|
3672
|
+
}
|
|
3673
|
+
return vch;
|
|
3674
|
+
}
|
|
3675
|
+
function decode6(string3) {
|
|
3676
|
+
var buffer = decodeUnsafe(string3);
|
|
3677
|
+
if (buffer) {
|
|
3678
|
+
return buffer;
|
|
3679
|
+
}
|
|
3680
|
+
throw new Error(`Non-${name2} character`);
|
|
3681
|
+
}
|
|
3682
|
+
return {
|
|
3683
|
+
encode: encode5,
|
|
3684
|
+
decodeUnsafe,
|
|
3685
|
+
decode: decode6
|
|
3686
|
+
};
|
|
3687
|
+
}
|
|
3688
|
+
var src = base;
|
|
3689
|
+
var _brrp__multiformats_scope_baseX = src;
|
|
3690
|
+
var base_x_default = _brrp__multiformats_scope_baseX;
|
|
3691
|
+
|
|
3692
|
+
// ../../node_modules/multiformats/esm/src/bases/base.js
|
|
3693
|
+
var Encoder = class {
|
|
3694
|
+
constructor(name2, prefix, baseEncode) {
|
|
3695
|
+
this.name = name2;
|
|
3696
|
+
this.prefix = prefix;
|
|
3697
|
+
this.baseEncode = baseEncode;
|
|
3698
|
+
}
|
|
3699
|
+
encode(bytes2) {
|
|
3700
|
+
if (bytes2 instanceof Uint8Array) {
|
|
3701
|
+
return `${this.prefix}${this.baseEncode(bytes2)}`;
|
|
3702
|
+
} else {
|
|
3703
|
+
throw Error("Unknown type, must be binary type");
|
|
3704
|
+
}
|
|
3705
|
+
}
|
|
3706
|
+
};
|
|
3707
|
+
var Decoder = class {
|
|
3708
|
+
constructor(name2, prefix, baseDecode) {
|
|
3709
|
+
this.name = name2;
|
|
3710
|
+
this.prefix = prefix;
|
|
3711
|
+
if (prefix.codePointAt(0) === void 0) {
|
|
3712
|
+
throw new Error("Invalid prefix character");
|
|
3713
|
+
}
|
|
3714
|
+
this.prefixCodePoint = prefix.codePointAt(0);
|
|
3715
|
+
this.baseDecode = baseDecode;
|
|
3716
|
+
}
|
|
3717
|
+
decode(text) {
|
|
3718
|
+
if (typeof text === "string") {
|
|
3719
|
+
if (text.codePointAt(0) !== this.prefixCodePoint) {
|
|
3720
|
+
throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);
|
|
3721
|
+
}
|
|
3722
|
+
return this.baseDecode(text.slice(this.prefix.length));
|
|
3723
|
+
} else {
|
|
3724
|
+
throw Error("Can only multibase decode strings");
|
|
3725
|
+
}
|
|
3726
|
+
}
|
|
3727
|
+
or(decoder) {
|
|
3728
|
+
return or(this, decoder);
|
|
3729
|
+
}
|
|
3730
|
+
};
|
|
3731
|
+
var ComposedDecoder = class {
|
|
3732
|
+
constructor(decoders) {
|
|
3733
|
+
this.decoders = decoders;
|
|
3734
|
+
}
|
|
3735
|
+
or(decoder) {
|
|
3736
|
+
return or(this, decoder);
|
|
3737
|
+
}
|
|
3738
|
+
decode(input) {
|
|
3739
|
+
const prefix = input[0];
|
|
3740
|
+
const decoder = this.decoders[prefix];
|
|
3741
|
+
if (decoder) {
|
|
3742
|
+
return decoder.decode(input);
|
|
3743
|
+
} else {
|
|
3744
|
+
throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`);
|
|
3745
|
+
}
|
|
3746
|
+
}
|
|
3747
|
+
};
|
|
3748
|
+
var or = (left, right) => new ComposedDecoder({
|
|
3749
|
+
...left.decoders || { [left.prefix]: left },
|
|
3750
|
+
...right.decoders || { [right.prefix]: right }
|
|
3751
|
+
});
|
|
3752
|
+
var Codec = class {
|
|
3753
|
+
constructor(name2, prefix, baseEncode, baseDecode) {
|
|
3754
|
+
this.name = name2;
|
|
3755
|
+
this.prefix = prefix;
|
|
3756
|
+
this.baseEncode = baseEncode;
|
|
3757
|
+
this.baseDecode = baseDecode;
|
|
3758
|
+
this.encoder = new Encoder(name2, prefix, baseEncode);
|
|
3759
|
+
this.decoder = new Decoder(name2, prefix, baseDecode);
|
|
3760
|
+
}
|
|
3761
|
+
encode(input) {
|
|
3762
|
+
return this.encoder.encode(input);
|
|
3763
|
+
}
|
|
3764
|
+
decode(input) {
|
|
3765
|
+
return this.decoder.decode(input);
|
|
3766
|
+
}
|
|
3767
|
+
};
|
|
3768
|
+
var from = ({ name: name2, prefix, encode: encode5, decode: decode6 }) => new Codec(name2, prefix, encode5, decode6);
|
|
3769
|
+
var baseX = ({ prefix, name: name2, alphabet: alphabet2 }) => {
|
|
3770
|
+
const { encode: encode5, decode: decode6 } = base_x_default(alphabet2, name2);
|
|
3771
|
+
return from({
|
|
3772
|
+
prefix,
|
|
3773
|
+
name: name2,
|
|
3774
|
+
encode: encode5,
|
|
3775
|
+
decode: (text) => coerce(decode6(text))
|
|
3776
|
+
});
|
|
3777
|
+
};
|
|
3778
|
+
var decode4 = (string3, alphabet2, bitsPerChar, name2) => {
|
|
3779
|
+
const codes = {};
|
|
3780
|
+
for (let i = 0; i < alphabet2.length; ++i) {
|
|
3781
|
+
codes[alphabet2[i]] = i;
|
|
3782
|
+
}
|
|
3783
|
+
let end = string3.length;
|
|
3784
|
+
while (string3[end - 1] === "=") {
|
|
3785
|
+
--end;
|
|
3786
|
+
}
|
|
3787
|
+
const out = new Uint8Array(end * bitsPerChar / 8 | 0);
|
|
3788
|
+
let bits = 0;
|
|
3789
|
+
let buffer = 0;
|
|
3790
|
+
let written = 0;
|
|
3791
|
+
for (let i = 0; i < end; ++i) {
|
|
3792
|
+
const value = codes[string3[i]];
|
|
3793
|
+
if (value === void 0) {
|
|
3794
|
+
throw new SyntaxError(`Non-${name2} character`);
|
|
3795
|
+
}
|
|
3796
|
+
buffer = buffer << bitsPerChar | value;
|
|
3797
|
+
bits += bitsPerChar;
|
|
3798
|
+
if (bits >= 8) {
|
|
3799
|
+
bits -= 8;
|
|
3800
|
+
out[written++] = 255 & buffer >> bits;
|
|
3801
|
+
}
|
|
3802
|
+
}
|
|
3803
|
+
if (bits >= bitsPerChar || 255 & buffer << 8 - bits) {
|
|
3804
|
+
throw new SyntaxError("Unexpected end of data");
|
|
3805
|
+
}
|
|
3806
|
+
return out;
|
|
3807
|
+
};
|
|
3808
|
+
var encode2 = (data, alphabet2, bitsPerChar) => {
|
|
3809
|
+
const pad = alphabet2[alphabet2.length - 1] === "=";
|
|
3810
|
+
const mask = (1 << bitsPerChar) - 1;
|
|
3811
|
+
let out = "";
|
|
3812
|
+
let bits = 0;
|
|
3813
|
+
let buffer = 0;
|
|
3814
|
+
for (let i = 0; i < data.length; ++i) {
|
|
3815
|
+
buffer = buffer << 8 | data[i];
|
|
3816
|
+
bits += 8;
|
|
3817
|
+
while (bits > bitsPerChar) {
|
|
3818
|
+
bits -= bitsPerChar;
|
|
3819
|
+
out += alphabet2[mask & buffer >> bits];
|
|
3820
|
+
}
|
|
3821
|
+
}
|
|
3822
|
+
if (bits) {
|
|
3823
|
+
out += alphabet2[mask & buffer << bitsPerChar - bits];
|
|
3824
|
+
}
|
|
3825
|
+
if (pad) {
|
|
3826
|
+
while (out.length * bitsPerChar & 7) {
|
|
3827
|
+
out += "=";
|
|
3828
|
+
}
|
|
3829
|
+
}
|
|
3830
|
+
return out;
|
|
3831
|
+
};
|
|
3832
|
+
var rfc4648 = ({ name: name2, prefix, bitsPerChar, alphabet: alphabet2 }) => {
|
|
3833
|
+
return from({
|
|
3834
|
+
prefix,
|
|
3835
|
+
name: name2,
|
|
3836
|
+
encode(input) {
|
|
3837
|
+
return encode2(input, alphabet2, bitsPerChar);
|
|
3838
|
+
},
|
|
3839
|
+
decode(input) {
|
|
3840
|
+
return decode4(input, alphabet2, bitsPerChar, name2);
|
|
3841
|
+
}
|
|
3842
|
+
});
|
|
3843
|
+
};
|
|
3844
|
+
|
|
3845
|
+
// ../../node_modules/multiformats/esm/src/bases/base58.js
|
|
3846
|
+
var base58btc = baseX({
|
|
3847
|
+
name: "base58btc",
|
|
3848
|
+
prefix: "z",
|
|
3849
|
+
alphabet: "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
|
|
3850
|
+
});
|
|
3851
|
+
var base58flickr = baseX({
|
|
3852
|
+
name: "base58flickr",
|
|
3853
|
+
prefix: "Z",
|
|
3854
|
+
alphabet: "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"
|
|
3855
|
+
});
|
|
3856
|
+
|
|
3857
|
+
// ../../node_modules/multiformats/esm/src/bases/base32.js
|
|
3858
|
+
var base32_exports = {};
|
|
3859
|
+
__export(base32_exports, {
|
|
3860
|
+
base32: () => base32,
|
|
3861
|
+
base32hex: () => base32hex,
|
|
3862
|
+
base32hexpad: () => base32hexpad,
|
|
3863
|
+
base32hexpadupper: () => base32hexpadupper,
|
|
3864
|
+
base32hexupper: () => base32hexupper,
|
|
3865
|
+
base32pad: () => base32pad,
|
|
3866
|
+
base32padupper: () => base32padupper,
|
|
3867
|
+
base32upper: () => base32upper,
|
|
3868
|
+
base32z: () => base32z
|
|
3869
|
+
});
|
|
3870
|
+
var base32 = rfc4648({
|
|
3871
|
+
prefix: "b",
|
|
3872
|
+
name: "base32",
|
|
3873
|
+
alphabet: "abcdefghijklmnopqrstuvwxyz234567",
|
|
3874
|
+
bitsPerChar: 5
|
|
3875
|
+
});
|
|
3876
|
+
var base32upper = rfc4648({
|
|
3877
|
+
prefix: "B",
|
|
3878
|
+
name: "base32upper",
|
|
3879
|
+
alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",
|
|
3880
|
+
bitsPerChar: 5
|
|
3881
|
+
});
|
|
3882
|
+
var base32pad = rfc4648({
|
|
3883
|
+
prefix: "c",
|
|
3884
|
+
name: "base32pad",
|
|
3885
|
+
alphabet: "abcdefghijklmnopqrstuvwxyz234567=",
|
|
3886
|
+
bitsPerChar: 5
|
|
3887
|
+
});
|
|
3888
|
+
var base32padupper = rfc4648({
|
|
3889
|
+
prefix: "C",
|
|
3890
|
+
name: "base32padupper",
|
|
3891
|
+
alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",
|
|
3892
|
+
bitsPerChar: 5
|
|
3893
|
+
});
|
|
3894
|
+
var base32hex = rfc4648({
|
|
3895
|
+
prefix: "v",
|
|
3896
|
+
name: "base32hex",
|
|
3897
|
+
alphabet: "0123456789abcdefghijklmnopqrstuv",
|
|
3898
|
+
bitsPerChar: 5
|
|
3899
|
+
});
|
|
3900
|
+
var base32hexupper = rfc4648({
|
|
3901
|
+
prefix: "V",
|
|
3902
|
+
name: "base32hexupper",
|
|
3903
|
+
alphabet: "0123456789ABCDEFGHIJKLMNOPQRSTUV",
|
|
3904
|
+
bitsPerChar: 5
|
|
3905
|
+
});
|
|
3906
|
+
var base32hexpad = rfc4648({
|
|
3907
|
+
prefix: "t",
|
|
3908
|
+
name: "base32hexpad",
|
|
3909
|
+
alphabet: "0123456789abcdefghijklmnopqrstuv=",
|
|
3910
|
+
bitsPerChar: 5
|
|
3911
|
+
});
|
|
3912
|
+
var base32hexpadupper = rfc4648({
|
|
3913
|
+
prefix: "T",
|
|
3914
|
+
name: "base32hexpadupper",
|
|
3915
|
+
alphabet: "0123456789ABCDEFGHIJKLMNOPQRSTUV=",
|
|
3916
|
+
bitsPerChar: 5
|
|
3917
|
+
});
|
|
3918
|
+
var base32z = rfc4648({
|
|
3919
|
+
prefix: "h",
|
|
3920
|
+
name: "base32z",
|
|
3921
|
+
alphabet: "ybndrfg8ejkmcpqxot1uwisza345h769",
|
|
3922
|
+
bitsPerChar: 5
|
|
3923
|
+
});
|
|
3924
|
+
|
|
3925
|
+
// ../../node_modules/multiformats/esm/src/cid.js
|
|
3926
|
+
var CID = class {
|
|
3927
|
+
constructor(version2, code2, multihash, bytes2) {
|
|
3928
|
+
this.code = code2;
|
|
3929
|
+
this.version = version2;
|
|
3930
|
+
this.multihash = multihash;
|
|
3931
|
+
this.bytes = bytes2;
|
|
3932
|
+
this.byteOffset = bytes2.byteOffset;
|
|
3933
|
+
this.byteLength = bytes2.byteLength;
|
|
3934
|
+
this.asCID = this;
|
|
3935
|
+
this._baseCache = /* @__PURE__ */ new Map();
|
|
3936
|
+
Object.defineProperties(this, {
|
|
3937
|
+
byteOffset: hidden,
|
|
3938
|
+
byteLength: hidden,
|
|
3939
|
+
code: readonly,
|
|
3940
|
+
version: readonly,
|
|
3941
|
+
multihash: readonly,
|
|
3942
|
+
bytes: readonly,
|
|
3943
|
+
_baseCache: hidden,
|
|
3944
|
+
asCID: hidden
|
|
3945
|
+
});
|
|
3946
|
+
}
|
|
3947
|
+
toV0() {
|
|
3948
|
+
switch (this.version) {
|
|
3949
|
+
case 0: {
|
|
3950
|
+
return this;
|
|
3951
|
+
}
|
|
3952
|
+
default: {
|
|
3953
|
+
const { code: code2, multihash } = this;
|
|
3954
|
+
if (code2 !== DAG_PB_CODE) {
|
|
3955
|
+
throw new Error("Cannot convert a non dag-pb CID to CIDv0");
|
|
3956
|
+
}
|
|
3957
|
+
if (multihash.code !== SHA_256_CODE) {
|
|
3958
|
+
throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");
|
|
3959
|
+
}
|
|
3960
|
+
return CID.createV0(multihash);
|
|
3961
|
+
}
|
|
3962
|
+
}
|
|
3963
|
+
}
|
|
3964
|
+
toV1() {
|
|
3965
|
+
switch (this.version) {
|
|
3966
|
+
case 0: {
|
|
3967
|
+
const { code: code2, digest: digest2 } = this.multihash;
|
|
3968
|
+
const multihash = create(code2, digest2);
|
|
3969
|
+
return CID.createV1(this.code, multihash);
|
|
3970
|
+
}
|
|
3971
|
+
case 1: {
|
|
3972
|
+
return this;
|
|
3973
|
+
}
|
|
3974
|
+
default: {
|
|
3975
|
+
throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);
|
|
3976
|
+
}
|
|
3977
|
+
}
|
|
3978
|
+
}
|
|
3979
|
+
equals(other) {
|
|
3980
|
+
return other && this.code === other.code && this.version === other.version && equals2(this.multihash, other.multihash);
|
|
3981
|
+
}
|
|
3982
|
+
toString(base3) {
|
|
3983
|
+
const { bytes: bytes2, version: version2, _baseCache } = this;
|
|
3984
|
+
switch (version2) {
|
|
3985
|
+
case 0:
|
|
3986
|
+
return toStringV0(bytes2, _baseCache, base3 || base58btc.encoder);
|
|
3987
|
+
default:
|
|
3988
|
+
return toStringV1(bytes2, _baseCache, base3 || base32.encoder);
|
|
3989
|
+
}
|
|
3990
|
+
}
|
|
3991
|
+
toJSON() {
|
|
3992
|
+
return {
|
|
3993
|
+
code: this.code,
|
|
3994
|
+
version: this.version,
|
|
3995
|
+
hash: this.multihash.bytes
|
|
3996
|
+
};
|
|
3997
|
+
}
|
|
3998
|
+
get [Symbol.toStringTag]() {
|
|
3999
|
+
return "CID";
|
|
4000
|
+
}
|
|
4001
|
+
[Symbol.for("nodejs.util.inspect.custom")]() {
|
|
4002
|
+
return "CID(" + this.toString() + ")";
|
|
4003
|
+
}
|
|
4004
|
+
static isCID(value) {
|
|
4005
|
+
deprecate(/^0\.0/, IS_CID_DEPRECATION);
|
|
4006
|
+
return !!(value && (value[cidSymbol] || value.asCID === value));
|
|
4007
|
+
}
|
|
4008
|
+
get toBaseEncodedString() {
|
|
4009
|
+
throw new Error("Deprecated, use .toString()");
|
|
4010
|
+
}
|
|
4011
|
+
get codec() {
|
|
4012
|
+
throw new Error('"codec" property is deprecated, use integer "code" property instead');
|
|
4013
|
+
}
|
|
4014
|
+
get buffer() {
|
|
4015
|
+
throw new Error("Deprecated .buffer property, use .bytes to get Uint8Array instead");
|
|
4016
|
+
}
|
|
4017
|
+
get multibaseName() {
|
|
4018
|
+
throw new Error('"multibaseName" property is deprecated');
|
|
4019
|
+
}
|
|
4020
|
+
get prefix() {
|
|
4021
|
+
throw new Error('"prefix" property is deprecated');
|
|
4022
|
+
}
|
|
4023
|
+
static asCID(value) {
|
|
4024
|
+
if (value instanceof CID) {
|
|
4025
|
+
return value;
|
|
4026
|
+
} else if (value != null && value.asCID === value) {
|
|
4027
|
+
const { version: version2, code: code2, multihash, bytes: bytes2 } = value;
|
|
4028
|
+
return new CID(version2, code2, multihash, bytes2 || encodeCID(version2, code2, multihash.bytes));
|
|
4029
|
+
} else if (value != null && value[cidSymbol] === true) {
|
|
4030
|
+
const { version: version2, multihash, code: code2 } = value;
|
|
4031
|
+
const digest2 = decode3(multihash);
|
|
4032
|
+
return CID.create(version2, code2, digest2);
|
|
4033
|
+
} else {
|
|
4034
|
+
return null;
|
|
4035
|
+
}
|
|
4036
|
+
}
|
|
4037
|
+
static create(version2, code2, digest2) {
|
|
4038
|
+
if (typeof code2 !== "number") {
|
|
4039
|
+
throw new Error("String codecs are no longer supported");
|
|
4040
|
+
}
|
|
4041
|
+
switch (version2) {
|
|
4042
|
+
case 0: {
|
|
4043
|
+
if (code2 !== DAG_PB_CODE) {
|
|
4044
|
+
throw new Error(`Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`);
|
|
4045
|
+
} else {
|
|
4046
|
+
return new CID(version2, code2, digest2, digest2.bytes);
|
|
4047
|
+
}
|
|
4048
|
+
}
|
|
4049
|
+
case 1: {
|
|
4050
|
+
const bytes2 = encodeCID(version2, code2, digest2.bytes);
|
|
4051
|
+
return new CID(version2, code2, digest2, bytes2);
|
|
4052
|
+
}
|
|
4053
|
+
default: {
|
|
4054
|
+
throw new Error("Invalid version");
|
|
4055
|
+
}
|
|
4056
|
+
}
|
|
4057
|
+
}
|
|
4058
|
+
static createV0(digest2) {
|
|
4059
|
+
return CID.create(0, DAG_PB_CODE, digest2);
|
|
4060
|
+
}
|
|
4061
|
+
static createV1(code2, digest2) {
|
|
4062
|
+
return CID.create(1, code2, digest2);
|
|
4063
|
+
}
|
|
4064
|
+
static decode(bytes2) {
|
|
4065
|
+
const [cid2, remainder] = CID.decodeFirst(bytes2);
|
|
4066
|
+
if (remainder.length) {
|
|
4067
|
+
throw new Error("Incorrect length");
|
|
4068
|
+
}
|
|
4069
|
+
return cid2;
|
|
4070
|
+
}
|
|
4071
|
+
static decodeFirst(bytes2) {
|
|
4072
|
+
const specs = CID.inspectBytes(bytes2);
|
|
4073
|
+
const prefixSize = specs.size - specs.multihashSize;
|
|
4074
|
+
const multihashBytes = coerce(bytes2.subarray(prefixSize, prefixSize + specs.multihashSize));
|
|
4075
|
+
if (multihashBytes.byteLength !== specs.multihashSize) {
|
|
4076
|
+
throw new Error("Incorrect length");
|
|
4077
|
+
}
|
|
4078
|
+
const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);
|
|
4079
|
+
const digest2 = new Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);
|
|
4080
|
+
const cid2 = specs.version === 0 ? CID.createV0(digest2) : CID.createV1(specs.codec, digest2);
|
|
4081
|
+
return [
|
|
4082
|
+
cid2,
|
|
4083
|
+
bytes2.subarray(specs.size)
|
|
4084
|
+
];
|
|
4085
|
+
}
|
|
4086
|
+
static inspectBytes(initialBytes) {
|
|
4087
|
+
let offset = 0;
|
|
4088
|
+
const next = () => {
|
|
4089
|
+
const [i, length2] = decode2(initialBytes.subarray(offset));
|
|
4090
|
+
offset += length2;
|
|
4091
|
+
return i;
|
|
4092
|
+
};
|
|
4093
|
+
let version2 = next();
|
|
4094
|
+
let codec = DAG_PB_CODE;
|
|
4095
|
+
if (version2 === 18) {
|
|
4096
|
+
version2 = 0;
|
|
4097
|
+
offset = 0;
|
|
4098
|
+
} else if (version2 === 1) {
|
|
4099
|
+
codec = next();
|
|
4100
|
+
}
|
|
4101
|
+
if (version2 !== 0 && version2 !== 1) {
|
|
4102
|
+
throw new RangeError(`Invalid CID version ${version2}`);
|
|
4103
|
+
}
|
|
4104
|
+
const prefixSize = offset;
|
|
4105
|
+
const multihashCode = next();
|
|
4106
|
+
const digestSize = next();
|
|
4107
|
+
const size = offset + digestSize;
|
|
4108
|
+
const multihashSize = size - prefixSize;
|
|
4109
|
+
return {
|
|
4110
|
+
version: version2,
|
|
4111
|
+
codec,
|
|
4112
|
+
multihashCode,
|
|
4113
|
+
digestSize,
|
|
4114
|
+
multihashSize,
|
|
4115
|
+
size
|
|
4116
|
+
};
|
|
4117
|
+
}
|
|
4118
|
+
static parse(source, base3) {
|
|
4119
|
+
const [prefix, bytes2] = parseCIDtoBytes(source, base3);
|
|
4120
|
+
const cid2 = CID.decode(bytes2);
|
|
4121
|
+
cid2._baseCache.set(prefix, source);
|
|
4122
|
+
return cid2;
|
|
4123
|
+
}
|
|
4124
|
+
};
|
|
4125
|
+
var parseCIDtoBytes = (source, base3) => {
|
|
4126
|
+
switch (source[0]) {
|
|
4127
|
+
case "Q": {
|
|
4128
|
+
const decoder = base3 || base58btc;
|
|
4129
|
+
return [
|
|
4130
|
+
base58btc.prefix,
|
|
4131
|
+
decoder.decode(`${base58btc.prefix}${source}`)
|
|
4132
|
+
];
|
|
4133
|
+
}
|
|
4134
|
+
case base58btc.prefix: {
|
|
4135
|
+
const decoder = base3 || base58btc;
|
|
4136
|
+
return [
|
|
4137
|
+
base58btc.prefix,
|
|
4138
|
+
decoder.decode(source)
|
|
4139
|
+
];
|
|
4140
|
+
}
|
|
4141
|
+
case base32.prefix: {
|
|
4142
|
+
const decoder = base3 || base32;
|
|
4143
|
+
return [
|
|
4144
|
+
base32.prefix,
|
|
4145
|
+
decoder.decode(source)
|
|
4146
|
+
];
|
|
4147
|
+
}
|
|
4148
|
+
default: {
|
|
4149
|
+
if (base3 == null) {
|
|
4150
|
+
throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");
|
|
4151
|
+
}
|
|
4152
|
+
return [
|
|
4153
|
+
source[0],
|
|
4154
|
+
base3.decode(source)
|
|
4155
|
+
];
|
|
4156
|
+
}
|
|
4157
|
+
}
|
|
4158
|
+
};
|
|
4159
|
+
var toStringV0 = (bytes2, cache, base3) => {
|
|
4160
|
+
const { prefix } = base3;
|
|
4161
|
+
if (prefix !== base58btc.prefix) {
|
|
4162
|
+
throw Error(`Cannot string encode V0 in ${base3.name} encoding`);
|
|
4163
|
+
}
|
|
4164
|
+
const cid2 = cache.get(prefix);
|
|
4165
|
+
if (cid2 == null) {
|
|
4166
|
+
const cid3 = base3.encode(bytes2).slice(1);
|
|
4167
|
+
cache.set(prefix, cid3);
|
|
4168
|
+
return cid3;
|
|
4169
|
+
} else {
|
|
4170
|
+
return cid2;
|
|
4171
|
+
}
|
|
4172
|
+
};
|
|
4173
|
+
var toStringV1 = (bytes2, cache, base3) => {
|
|
4174
|
+
const { prefix } = base3;
|
|
4175
|
+
const cid2 = cache.get(prefix);
|
|
4176
|
+
if (cid2 == null) {
|
|
4177
|
+
const cid3 = base3.encode(bytes2);
|
|
4178
|
+
cache.set(prefix, cid3);
|
|
4179
|
+
return cid3;
|
|
4180
|
+
} else {
|
|
4181
|
+
return cid2;
|
|
4182
|
+
}
|
|
4183
|
+
};
|
|
4184
|
+
var DAG_PB_CODE = 112;
|
|
4185
|
+
var SHA_256_CODE = 18;
|
|
4186
|
+
var encodeCID = (version2, code2, multihash) => {
|
|
4187
|
+
const codeOffset = encodingLength(version2);
|
|
4188
|
+
const hashOffset = codeOffset + encodingLength(code2);
|
|
4189
|
+
const bytes2 = new Uint8Array(hashOffset + multihash.byteLength);
|
|
4190
|
+
encodeTo(version2, bytes2, 0);
|
|
4191
|
+
encodeTo(code2, bytes2, codeOffset);
|
|
4192
|
+
bytes2.set(multihash, hashOffset);
|
|
4193
|
+
return bytes2;
|
|
4194
|
+
};
|
|
4195
|
+
var cidSymbol = Symbol.for("@ipld/js-cid/CID");
|
|
4196
|
+
var readonly = {
|
|
4197
|
+
writable: false,
|
|
4198
|
+
configurable: false,
|
|
4199
|
+
enumerable: true
|
|
4200
|
+
};
|
|
4201
|
+
var hidden = {
|
|
4202
|
+
writable: false,
|
|
4203
|
+
enumerable: false,
|
|
4204
|
+
configurable: false
|
|
4205
|
+
};
|
|
4206
|
+
var version = "0.0.0-dev";
|
|
4207
|
+
var deprecate = (range, message) => {
|
|
4208
|
+
if (range.test(version)) {
|
|
4209
|
+
console.warn(message);
|
|
4210
|
+
} else {
|
|
4211
|
+
throw new Error(message);
|
|
4212
|
+
}
|
|
4213
|
+
};
|
|
4214
|
+
var IS_CID_DEPRECATION = `CID.isCID(v) is deprecated and will be removed in the next major release.
|
|
4215
|
+
Following code pattern:
|
|
4216
|
+
|
|
4217
|
+
if (CID.isCID(value)) {
|
|
4218
|
+
doSomethingWithCID(value)
|
|
4219
|
+
}
|
|
4220
|
+
|
|
4221
|
+
Is replaced with:
|
|
4222
|
+
|
|
4223
|
+
const cid = CID.asCID(value)
|
|
4224
|
+
if (cid) {
|
|
4225
|
+
// Make sure to use cid instead of value
|
|
4226
|
+
doSomethingWithCID(cid)
|
|
4227
|
+
}
|
|
4228
|
+
`;
|
|
4229
|
+
|
|
4230
|
+
// ../../node_modules/multiformats/esm/src/bases/identity.js
|
|
4231
|
+
var identity_exports = {};
|
|
4232
|
+
__export(identity_exports, {
|
|
4233
|
+
identity: () => identity
|
|
4234
|
+
});
|
|
4235
|
+
var identity = from({
|
|
4236
|
+
prefix: "\0",
|
|
4237
|
+
name: "identity",
|
|
4238
|
+
encode: (buf) => toString(buf),
|
|
4239
|
+
decode: (str) => fromString(str)
|
|
4240
|
+
});
|
|
4241
|
+
|
|
4242
|
+
// ../../node_modules/multiformats/esm/src/bases/base2.js
|
|
4243
|
+
var base2_exports = {};
|
|
4244
|
+
__export(base2_exports, {
|
|
4245
|
+
base2: () => base2
|
|
4246
|
+
});
|
|
4247
|
+
var base2 = rfc4648({
|
|
4248
|
+
prefix: "0",
|
|
4249
|
+
name: "base2",
|
|
4250
|
+
alphabet: "01",
|
|
4251
|
+
bitsPerChar: 1
|
|
4252
|
+
});
|
|
4253
|
+
|
|
4254
|
+
// ../../node_modules/multiformats/esm/src/bases/base8.js
|
|
4255
|
+
var base8_exports = {};
|
|
4256
|
+
__export(base8_exports, {
|
|
4257
|
+
base8: () => base8
|
|
4258
|
+
});
|
|
4259
|
+
var base8 = rfc4648({
|
|
4260
|
+
prefix: "7",
|
|
4261
|
+
name: "base8",
|
|
4262
|
+
alphabet: "01234567",
|
|
4263
|
+
bitsPerChar: 3
|
|
4264
|
+
});
|
|
4265
|
+
|
|
4266
|
+
// ../../node_modules/multiformats/esm/src/bases/base10.js
|
|
4267
|
+
var base10_exports = {};
|
|
4268
|
+
__export(base10_exports, {
|
|
4269
|
+
base10: () => base10
|
|
4270
|
+
});
|
|
4271
|
+
var base10 = baseX({
|
|
4272
|
+
prefix: "9",
|
|
4273
|
+
name: "base10",
|
|
4274
|
+
alphabet: "0123456789"
|
|
4275
|
+
});
|
|
4276
|
+
|
|
4277
|
+
// ../../node_modules/multiformats/esm/src/bases/base16.js
|
|
4278
|
+
var base16_exports = {};
|
|
4279
|
+
__export(base16_exports, {
|
|
4280
|
+
base16: () => base16,
|
|
4281
|
+
base16upper: () => base16upper
|
|
4282
|
+
});
|
|
4283
|
+
var base16 = rfc4648({
|
|
4284
|
+
prefix: "f",
|
|
4285
|
+
name: "base16",
|
|
4286
|
+
alphabet: "0123456789abcdef",
|
|
4287
|
+
bitsPerChar: 4
|
|
4288
|
+
});
|
|
4289
|
+
var base16upper = rfc4648({
|
|
4290
|
+
prefix: "F",
|
|
4291
|
+
name: "base16upper",
|
|
4292
|
+
alphabet: "0123456789ABCDEF",
|
|
4293
|
+
bitsPerChar: 4
|
|
4294
|
+
});
|
|
4295
|
+
|
|
4296
|
+
// ../../node_modules/multiformats/esm/src/bases/base36.js
|
|
4297
|
+
var base36_exports = {};
|
|
4298
|
+
__export(base36_exports, {
|
|
4299
|
+
base36: () => base36,
|
|
4300
|
+
base36upper: () => base36upper
|
|
4301
|
+
});
|
|
4302
|
+
var base36 = baseX({
|
|
4303
|
+
prefix: "k",
|
|
4304
|
+
name: "base36",
|
|
4305
|
+
alphabet: "0123456789abcdefghijklmnopqrstuvwxyz"
|
|
4306
|
+
});
|
|
4307
|
+
var base36upper = baseX({
|
|
4308
|
+
prefix: "K",
|
|
4309
|
+
name: "base36upper",
|
|
4310
|
+
alphabet: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
4311
|
+
});
|
|
4312
|
+
|
|
4313
|
+
// ../../node_modules/multiformats/esm/src/bases/base64.js
|
|
4314
|
+
var base64_exports = {};
|
|
4315
|
+
__export(base64_exports, {
|
|
4316
|
+
base64: () => base64,
|
|
4317
|
+
base64pad: () => base64pad,
|
|
4318
|
+
base64url: () => base64url,
|
|
4319
|
+
base64urlpad: () => base64urlpad
|
|
4320
|
+
});
|
|
4321
|
+
var base64 = rfc4648({
|
|
4322
|
+
prefix: "m",
|
|
4323
|
+
name: "base64",
|
|
4324
|
+
alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
|
|
4325
|
+
bitsPerChar: 6
|
|
4326
|
+
});
|
|
4327
|
+
var base64pad = rfc4648({
|
|
4328
|
+
prefix: "M",
|
|
4329
|
+
name: "base64pad",
|
|
4330
|
+
alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
|
|
4331
|
+
bitsPerChar: 6
|
|
4332
|
+
});
|
|
4333
|
+
var base64url = rfc4648({
|
|
4334
|
+
prefix: "u",
|
|
4335
|
+
name: "base64url",
|
|
4336
|
+
alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",
|
|
4337
|
+
bitsPerChar: 6
|
|
4338
|
+
});
|
|
4339
|
+
var base64urlpad = rfc4648({
|
|
4340
|
+
prefix: "U",
|
|
4341
|
+
name: "base64urlpad",
|
|
4342
|
+
alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",
|
|
4343
|
+
bitsPerChar: 6
|
|
4344
|
+
});
|
|
4345
|
+
|
|
4346
|
+
// ../../node_modules/multiformats/esm/src/bases/base256emoji.js
|
|
4347
|
+
var base256emoji_exports = {};
|
|
4348
|
+
__export(base256emoji_exports, {
|
|
4349
|
+
base256emoji: () => base256emoji
|
|
4350
|
+
});
|
|
4351
|
+
var alphabet = Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}");
|
|
4352
|
+
var alphabetBytesToChars = alphabet.reduce((p, c, i) => {
|
|
4353
|
+
p[i] = c;
|
|
4354
|
+
return p;
|
|
4355
|
+
}, []);
|
|
4356
|
+
var alphabetCharsToBytes = alphabet.reduce((p, c, i) => {
|
|
4357
|
+
p[c.codePointAt(0)] = i;
|
|
4358
|
+
return p;
|
|
4359
|
+
}, []);
|
|
4360
|
+
function encode3(data) {
|
|
4361
|
+
return data.reduce((p, c) => {
|
|
4362
|
+
p += alphabetBytesToChars[c];
|
|
4363
|
+
return p;
|
|
4364
|
+
}, "");
|
|
4365
|
+
}
|
|
4366
|
+
function decode5(str) {
|
|
4367
|
+
const byts = [];
|
|
4368
|
+
for (const char of str) {
|
|
4369
|
+
const byt = alphabetCharsToBytes[char.codePointAt(0)];
|
|
4370
|
+
if (byt === void 0) {
|
|
4371
|
+
throw new Error(`Non-base256emoji character: ${char}`);
|
|
4372
|
+
}
|
|
4373
|
+
byts.push(byt);
|
|
4374
|
+
}
|
|
4375
|
+
return new Uint8Array(byts);
|
|
4376
|
+
}
|
|
4377
|
+
var base256emoji = from({
|
|
4378
|
+
prefix: "\u{1F680}",
|
|
4379
|
+
name: "base256emoji",
|
|
4380
|
+
encode: encode3,
|
|
4381
|
+
decode: decode5
|
|
4382
|
+
});
|
|
4383
|
+
|
|
4384
|
+
// ../../node_modules/multiformats/esm/src/hashes/sha2.js
|
|
4385
|
+
var sha2_exports = {};
|
|
4386
|
+
__export(sha2_exports, {
|
|
4387
|
+
sha256: () => sha256,
|
|
4388
|
+
sha512: () => sha512
|
|
4389
|
+
});
|
|
4390
|
+
var import_crypto = __toESM(require("crypto"), 1);
|
|
4391
|
+
|
|
4392
|
+
// ../../node_modules/multiformats/esm/src/hashes/hasher.js
|
|
4393
|
+
var from2 = ({ name: name2, code: code2, encode: encode5 }) => new Hasher(name2, code2, encode5);
|
|
4394
|
+
var Hasher = class {
|
|
4395
|
+
constructor(name2, code2, encode5) {
|
|
4396
|
+
this.name = name2;
|
|
4397
|
+
this.code = code2;
|
|
4398
|
+
this.encode = encode5;
|
|
4399
|
+
}
|
|
4400
|
+
digest(input) {
|
|
4401
|
+
if (input instanceof Uint8Array) {
|
|
4402
|
+
const result = this.encode(input);
|
|
4403
|
+
return result instanceof Uint8Array ? create(this.code, result) : result.then((digest2) => create(this.code, digest2));
|
|
4404
|
+
} else {
|
|
4405
|
+
throw Error("Unknown type, must be binary type");
|
|
4406
|
+
}
|
|
4407
|
+
}
|
|
4408
|
+
};
|
|
4409
|
+
|
|
4410
|
+
// ../../node_modules/multiformats/esm/src/hashes/sha2.js
|
|
4411
|
+
var sha256 = from2({
|
|
4412
|
+
name: "sha2-256",
|
|
4413
|
+
code: 18,
|
|
4414
|
+
encode: (input) => coerce(import_crypto.default.createHash("sha256").update(input).digest())
|
|
4415
|
+
});
|
|
4416
|
+
var sha512 = from2({
|
|
4417
|
+
name: "sha2-512",
|
|
4418
|
+
code: 19,
|
|
4419
|
+
encode: (input) => coerce(import_crypto.default.createHash("sha512").update(input).digest())
|
|
4420
|
+
});
|
|
4421
|
+
|
|
4422
|
+
// ../../node_modules/multiformats/esm/src/hashes/identity.js
|
|
4423
|
+
var identity_exports2 = {};
|
|
4424
|
+
__export(identity_exports2, {
|
|
4425
|
+
identity: () => identity2
|
|
4426
|
+
});
|
|
4427
|
+
var code = 0;
|
|
4428
|
+
var name = "identity";
|
|
4429
|
+
var encode4 = coerce;
|
|
4430
|
+
var digest = (input) => create(code, encode4(input));
|
|
4431
|
+
var identity2 = {
|
|
4432
|
+
code,
|
|
4433
|
+
name,
|
|
4434
|
+
encode: encode4,
|
|
4435
|
+
digest
|
|
4436
|
+
};
|
|
4437
|
+
|
|
4438
|
+
// ../../node_modules/multiformats/esm/src/codecs/json.js
|
|
4439
|
+
var textEncoder = new TextEncoder();
|
|
4440
|
+
var textDecoder = new TextDecoder();
|
|
4441
|
+
|
|
4442
|
+
// ../../node_modules/multiformats/esm/src/basics.js
|
|
4443
|
+
var bases = {
|
|
4444
|
+
...identity_exports,
|
|
4445
|
+
...base2_exports,
|
|
4446
|
+
...base8_exports,
|
|
4447
|
+
...base10_exports,
|
|
4448
|
+
...base16_exports,
|
|
4449
|
+
...base32_exports,
|
|
4450
|
+
...base36_exports,
|
|
4451
|
+
...base58_exports,
|
|
4452
|
+
...base64_exports,
|
|
4453
|
+
...base256emoji_exports
|
|
4454
|
+
};
|
|
4455
|
+
var hashes = {
|
|
4456
|
+
...sha2_exports,
|
|
4457
|
+
...identity_exports2
|
|
4458
|
+
};
|
|
4459
|
+
|
|
4460
|
+
// ../../node_modules/uint8arrays/esm/src/util/bases.js
|
|
4461
|
+
function createCodec(name2, prefix, encode5, decode6) {
|
|
4462
|
+
return {
|
|
4463
|
+
name: name2,
|
|
4464
|
+
prefix,
|
|
4465
|
+
encoder: {
|
|
4466
|
+
name: name2,
|
|
4467
|
+
prefix,
|
|
4468
|
+
encode: encode5
|
|
4469
|
+
},
|
|
4470
|
+
decoder: { decode: decode6 }
|
|
4471
|
+
};
|
|
4472
|
+
}
|
|
4473
|
+
var string = createCodec("utf8", "u", (buf) => {
|
|
4474
|
+
const decoder = new TextDecoder("utf8");
|
|
4475
|
+
return "u" + decoder.decode(buf);
|
|
4476
|
+
}, (str) => {
|
|
4477
|
+
const encoder = new TextEncoder();
|
|
4478
|
+
return encoder.encode(str.substring(1));
|
|
4479
|
+
});
|
|
4480
|
+
var ascii = createCodec("ascii", "a", (buf) => {
|
|
4481
|
+
let string3 = "a";
|
|
4482
|
+
for (let i = 0; i < buf.length; i++) {
|
|
4483
|
+
string3 += String.fromCharCode(buf[i]);
|
|
4484
|
+
}
|
|
4485
|
+
return string3;
|
|
4486
|
+
}, (str) => {
|
|
4487
|
+
str = str.substring(1);
|
|
4488
|
+
const buf = new Uint8Array(str.length);
|
|
4489
|
+
for (let i = 0; i < str.length; i++) {
|
|
4490
|
+
buf[i] = str.charCodeAt(i);
|
|
4491
|
+
}
|
|
4492
|
+
return buf;
|
|
4493
|
+
});
|
|
4494
|
+
var BASES = {
|
|
4495
|
+
utf8: string,
|
|
4496
|
+
"utf-8": string,
|
|
4497
|
+
hex: bases.base16,
|
|
4498
|
+
latin1: ascii,
|
|
4499
|
+
ascii,
|
|
4500
|
+
binary: ascii,
|
|
4501
|
+
...bases
|
|
4502
|
+
};
|
|
4503
|
+
var bases_default = BASES;
|
|
4504
|
+
|
|
4505
|
+
// ../../node_modules/uint8arrays/esm/src/from-string.js
|
|
4506
|
+
function fromString2(string3, encoding = "utf8") {
|
|
4507
|
+
const base3 = bases_default[encoding];
|
|
4508
|
+
if (!base3) {
|
|
4509
|
+
throw new Error(`Unsupported encoding "${encoding}"`);
|
|
4510
|
+
}
|
|
4511
|
+
return base3.decoder.decode(`${base3.prefix}${string3}`);
|
|
4512
|
+
}
|
|
4513
|
+
|
|
4514
|
+
// ../../node_modules/uint8arrays/esm/src/to-string.js
|
|
4515
|
+
function toString2(array2, encoding = "utf8") {
|
|
4516
|
+
const base3 = bases_default[encoding];
|
|
4517
|
+
if (!base3) {
|
|
4518
|
+
throw new Error(`Unsupported encoding "${encoding}"`);
|
|
4519
|
+
}
|
|
4520
|
+
return base3.encoder.encode(array2).substring(1);
|
|
4521
|
+
}
|
|
4522
|
+
|
|
4523
|
+
// ../common-web/src/ipld.ts
|
|
4524
|
+
var jsonToIpld = (val) => {
|
|
4525
|
+
if (Array.isArray(val)) {
|
|
4526
|
+
return val.map((item) => jsonToIpld(item));
|
|
4527
|
+
}
|
|
4528
|
+
if (val && typeof val === "object") {
|
|
4529
|
+
if (typeof val["$link"] === "string" && Object.keys(val).length === 1) {
|
|
4530
|
+
return CID.parse(val["$link"]);
|
|
4531
|
+
}
|
|
4532
|
+
if (typeof val["$bytes"] === "string" && Object.keys(val).length === 1) {
|
|
4533
|
+
return fromString2(val["$bytes"], "base64");
|
|
4534
|
+
}
|
|
4535
|
+
const toReturn = {};
|
|
4536
|
+
for (const key of Object.keys(val)) {
|
|
4537
|
+
toReturn[key] = jsonToIpld(val[key]);
|
|
4538
|
+
}
|
|
4539
|
+
return toReturn;
|
|
4540
|
+
}
|
|
4541
|
+
return val;
|
|
4542
|
+
};
|
|
4543
|
+
var ipldToJson = (val) => {
|
|
4544
|
+
if (Array.isArray(val)) {
|
|
4545
|
+
return val.map((item) => ipldToJson(item));
|
|
4546
|
+
}
|
|
4547
|
+
if (val && typeof val === "object") {
|
|
4548
|
+
if (val instanceof Uint8Array) {
|
|
4549
|
+
return {
|
|
4550
|
+
$bytes: toString2(val, "base64")
|
|
4551
|
+
};
|
|
4552
|
+
}
|
|
4553
|
+
if (CID.asCID(val)) {
|
|
4554
|
+
return {
|
|
4555
|
+
$link: val.toString()
|
|
4556
|
+
};
|
|
4557
|
+
}
|
|
4558
|
+
const toReturn = {};
|
|
4559
|
+
for (const key of Object.keys(val)) {
|
|
4560
|
+
toReturn[key] = ipldToJson(val[key]);
|
|
4561
|
+
}
|
|
4562
|
+
return toReturn;
|
|
4563
|
+
}
|
|
4564
|
+
return val;
|
|
4565
|
+
};
|
|
4566
|
+
|
|
4567
|
+
// ../common-web/src/types.ts
|
|
4568
|
+
var cidSchema = mod.any().refine((obj) => CID.asCID(obj) !== null, {
|
|
4569
|
+
message: "Not a CID"
|
|
4570
|
+
}).transform((obj) => CID.asCID(obj));
|
|
4571
|
+
var schema = {
|
|
4572
|
+
cid: cidSchema,
|
|
4573
|
+
bytes: mod.instanceof(Uint8Array),
|
|
4574
|
+
string: mod.string(),
|
|
4575
|
+
array: mod.array(mod.unknown()),
|
|
4576
|
+
map: mod.record(mod.string(), mod.unknown()),
|
|
4577
|
+
unknown: mod.unknown()
|
|
4578
|
+
};
|
|
4579
|
+
var def = {
|
|
4580
|
+
cid: {
|
|
4581
|
+
name: "cid",
|
|
4582
|
+
schema: schema.cid
|
|
4583
|
+
},
|
|
4584
|
+
bytes: {
|
|
4585
|
+
name: "bytes",
|
|
4586
|
+
schema: schema.bytes
|
|
4587
|
+
},
|
|
4588
|
+
string: {
|
|
4589
|
+
name: "string",
|
|
4590
|
+
schema: schema.string
|
|
4591
|
+
},
|
|
4592
|
+
map: {
|
|
4593
|
+
name: "map",
|
|
4594
|
+
schema: schema.map
|
|
4595
|
+
},
|
|
4596
|
+
unknown: {
|
|
4597
|
+
name: "unknown",
|
|
4598
|
+
schema: schema.unknown
|
|
4599
|
+
}
|
|
4600
|
+
};
|
|
4601
|
+
|
|
4602
|
+
// ../common-web/src/times.ts
|
|
4603
|
+
var SECOND = 1e3;
|
|
4604
|
+
var MINUTE = SECOND * 60;
|
|
4605
|
+
var HOUR = MINUTE * 60;
|
|
4606
|
+
var DAY = HOUR * 24;
|
|
4607
|
+
|
|
4608
|
+
// ../common-web/src/strings.ts
|
|
4609
|
+
var utf8Len = (str) => {
|
|
4610
|
+
return new TextEncoder().encode(str).byteLength;
|
|
4611
|
+
};
|
|
4612
|
+
var graphemeLen = (str) => {
|
|
4613
|
+
return [...new Intl.Segmenter().segment(str)].length;
|
|
4614
|
+
};
|
|
4615
|
+
|
|
4616
|
+
// ../identifier/src/reserved.ts
|
|
4617
|
+
var atpSpecific = [
|
|
4618
|
+
"at",
|
|
4619
|
+
"atp",
|
|
4620
|
+
"plc",
|
|
4621
|
+
"pds",
|
|
4622
|
+
"did",
|
|
4623
|
+
"repo",
|
|
4624
|
+
"tid",
|
|
4625
|
+
"nsid",
|
|
4626
|
+
"xrpc",
|
|
4627
|
+
"lex",
|
|
4628
|
+
"lexicon",
|
|
4629
|
+
"bsky",
|
|
4630
|
+
"bluesky",
|
|
4631
|
+
"handle"
|
|
4632
|
+
];
|
|
4633
|
+
var commonlyReserved = [
|
|
4634
|
+
"about",
|
|
4635
|
+
"abuse",
|
|
4636
|
+
"access",
|
|
4637
|
+
"account",
|
|
4638
|
+
"accounts",
|
|
4639
|
+
"acme",
|
|
4640
|
+
"activate",
|
|
4641
|
+
"activities",
|
|
4642
|
+
"activity",
|
|
4643
|
+
"ad",
|
|
4644
|
+
"add",
|
|
4645
|
+
"address",
|
|
4646
|
+
"adm",
|
|
4647
|
+
"admanager",
|
|
4648
|
+
"admin",
|
|
4649
|
+
"administration",
|
|
4650
|
+
"administrator",
|
|
4651
|
+
"administrators",
|
|
4652
|
+
"admins",
|
|
4653
|
+
"ads",
|
|
4654
|
+
"adsense",
|
|
4655
|
+
"adult",
|
|
4656
|
+
"advertising",
|
|
4657
|
+
"adwords",
|
|
4658
|
+
"affiliate",
|
|
4659
|
+
"affiliatepage",
|
|
4660
|
+
"affiliates",
|
|
4661
|
+
"afp",
|
|
4662
|
+
"ajax",
|
|
4663
|
+
"all",
|
|
4664
|
+
"alpha",
|
|
4665
|
+
"analysis",
|
|
4666
|
+
"analytics",
|
|
4667
|
+
"android",
|
|
4668
|
+
"anon",
|
|
4669
|
+
"anonymous",
|
|
4670
|
+
"answer",
|
|
4671
|
+
"answers",
|
|
4672
|
+
"ap",
|
|
4673
|
+
"api",
|
|
4674
|
+
"apis",
|
|
4675
|
+
"app",
|
|
4676
|
+
"appengine",
|
|
4677
|
+
"appnews",
|
|
4678
|
+
"apps",
|
|
4679
|
+
"archive",
|
|
4680
|
+
"archives",
|
|
4681
|
+
"article",
|
|
4682
|
+
"asdf",
|
|
4683
|
+
"asset",
|
|
4684
|
+
"assets",
|
|
4685
|
+
"auth",
|
|
4686
|
+
"authentication",
|
|
4687
|
+
"avatar",
|
|
4688
|
+
"backup",
|
|
4689
|
+
"bank",
|
|
4690
|
+
"banner",
|
|
4691
|
+
"banners",
|
|
4692
|
+
"base",
|
|
4693
|
+
"beginners",
|
|
4694
|
+
"beta",
|
|
4695
|
+
"billing",
|
|
4696
|
+
"bin",
|
|
4697
|
+
"binaries",
|
|
4698
|
+
"binary",
|
|
4699
|
+
"blackberry",
|
|
4700
|
+
"blog",
|
|
4701
|
+
"blogs",
|
|
4702
|
+
"blogsearch",
|
|
4703
|
+
"board",
|
|
4704
|
+
"book",
|
|
4705
|
+
"bookmark",
|
|
4706
|
+
"bookmarks",
|
|
4707
|
+
"books",
|
|
4708
|
+
"bot",
|
|
4709
|
+
"bots",
|
|
4710
|
+
"bug",
|
|
4711
|
+
"bugs",
|
|
4712
|
+
"business",
|
|
4713
|
+
"buy",
|
|
4714
|
+
"buzz",
|
|
4715
|
+
"cache",
|
|
4716
|
+
"calendar",
|
|
4717
|
+
"call",
|
|
4718
|
+
"campaign",
|
|
4719
|
+
"cancel",
|
|
4720
|
+
"captcha",
|
|
4721
|
+
"career",
|
|
4722
|
+
"careers",
|
|
4723
|
+
"cart",
|
|
4724
|
+
"catalog",
|
|
4725
|
+
"catalogs",
|
|
4726
|
+
"categories",
|
|
4727
|
+
"category",
|
|
4728
|
+
"cdn",
|
|
4729
|
+
"cgi",
|
|
4730
|
+
"cgi-bin",
|
|
4731
|
+
"changelog",
|
|
4732
|
+
"chart",
|
|
4733
|
+
"charts",
|
|
4734
|
+
"chat",
|
|
4735
|
+
"check",
|
|
4736
|
+
"checked",
|
|
4737
|
+
"checking",
|
|
4738
|
+
"checkout",
|
|
4739
|
+
"client",
|
|
4740
|
+
"cliente",
|
|
4741
|
+
"clients",
|
|
4742
|
+
"clients1",
|
|
4743
|
+
"cnarne",
|
|
4744
|
+
"code",
|
|
4745
|
+
"comercial",
|
|
4746
|
+
"comment",
|
|
4747
|
+
"comments",
|
|
4748
|
+
"communities",
|
|
4749
|
+
"community",
|
|
4750
|
+
"company",
|
|
4751
|
+
"compare",
|
|
4752
|
+
"compras",
|
|
4753
|
+
"config",
|
|
4754
|
+
"configuration",
|
|
4755
|
+
"confirm",
|
|
4756
|
+
"confirmation",
|
|
4757
|
+
"connect",
|
|
4758
|
+
"contact",
|
|
4759
|
+
"contacts",
|
|
4760
|
+
"contactus",
|
|
4761
|
+
"contact-us",
|
|
4762
|
+
"contact_us",
|
|
4763
|
+
"content",
|
|
4764
|
+
"contest",
|
|
4765
|
+
"contribute",
|
|
4766
|
+
"contributor",
|
|
4767
|
+
"contributors",
|
|
4768
|
+
"coppa",
|
|
4769
|
+
"copyright",
|
|
4770
|
+
"copyrights",
|
|
4771
|
+
"core",
|
|
4772
|
+
"corp",
|
|
4773
|
+
"countries",
|
|
4774
|
+
"country",
|
|
4775
|
+
"cpanel",
|
|
4776
|
+
"create",
|
|
4777
|
+
"css",
|
|
4778
|
+
"cssproxy",
|
|
4779
|
+
"customise",
|
|
4780
|
+
"customize",
|
|
4781
|
+
"dashboard",
|
|
4782
|
+
"data",
|
|
4783
|
+
"db",
|
|
4784
|
+
"default",
|
|
4785
|
+
"delete",
|
|
4786
|
+
"demo",
|
|
4787
|
+
"design",
|
|
4788
|
+
"designer",
|
|
4789
|
+
"desktop",
|
|
4790
|
+
"destroy",
|
|
4791
|
+
"dev",
|
|
4792
|
+
"devel",
|
|
4793
|
+
"developer",
|
|
4794
|
+
"developers",
|
|
4795
|
+
"devs",
|
|
4796
|
+
"diagram",
|
|
4797
|
+
"diary",
|
|
4798
|
+
"dict",
|
|
4799
|
+
"dictionary",
|
|
4800
|
+
"die",
|
|
4801
|
+
"dir",
|
|
4802
|
+
"directory",
|
|
4803
|
+
"direct_messages",
|
|
4804
|
+
"direct-messages",
|
|
4805
|
+
"dist",
|
|
4806
|
+
"diversity",
|
|
4807
|
+
"dl",
|
|
4808
|
+
"dmca",
|
|
4809
|
+
"doc",
|
|
4810
|
+
"docs",
|
|
4811
|
+
"documentation",
|
|
4812
|
+
"documentations",
|
|
4813
|
+
"documents",
|
|
4814
|
+
"domain",
|
|
4815
|
+
"domains",
|
|
4816
|
+
"donate",
|
|
4817
|
+
"download",
|
|
4818
|
+
"downloads",
|
|
4819
|
+
"e",
|
|
4820
|
+
"e-mail",
|
|
4821
|
+
"earth",
|
|
4822
|
+
"ecommerce",
|
|
4823
|
+
"edit",
|
|
4824
|
+
"edits",
|
|
4825
|
+
"editor",
|
|
4826
|
+
"edu",
|
|
4827
|
+
"education",
|
|
4828
|
+
"email",
|
|
4829
|
+
"embed",
|
|
4830
|
+
"embedded",
|
|
4831
|
+
"employment",
|
|
4832
|
+
"employments",
|
|
4833
|
+
"empty",
|
|
4834
|
+
"enable",
|
|
4835
|
+
"encrypted",
|
|
4836
|
+
"end",
|
|
4837
|
+
"engine",
|
|
4838
|
+
"enterprise",
|
|
4839
|
+
"enterprises",
|
|
4840
|
+
"entries",
|
|
4841
|
+
"entry",
|
|
4842
|
+
"error",
|
|
4843
|
+
"errorlog",
|
|
4844
|
+
"errors",
|
|
4845
|
+
"eval",
|
|
4846
|
+
"event",
|
|
4847
|
+
"example",
|
|
4848
|
+
"examplecommunity",
|
|
4849
|
+
"exampleopenid",
|
|
4850
|
+
"examplesyn",
|
|
4851
|
+
"examplesyndicated",
|
|
4852
|
+
"exampleusername",
|
|
4853
|
+
"exchange",
|
|
4854
|
+
"exit",
|
|
4855
|
+
"explore",
|
|
4856
|
+
"faq",
|
|
4857
|
+
"faqs",
|
|
4858
|
+
"favorite",
|
|
4859
|
+
"favorites",
|
|
4860
|
+
"favourite",
|
|
4861
|
+
"favourites",
|
|
4862
|
+
"feature",
|
|
4863
|
+
"features",
|
|
4864
|
+
"feed",
|
|
4865
|
+
"feedback",
|
|
4866
|
+
"feedburner",
|
|
4867
|
+
"feedproxy",
|
|
4868
|
+
"feeds",
|
|
4869
|
+
"file",
|
|
4870
|
+
"files",
|
|
4871
|
+
"finance",
|
|
4872
|
+
"folder",
|
|
4873
|
+
"folders",
|
|
4874
|
+
"first",
|
|
4875
|
+
"following",
|
|
4876
|
+
"forgot",
|
|
4877
|
+
"form",
|
|
4878
|
+
"forms",
|
|
4879
|
+
"forum",
|
|
4880
|
+
"forums",
|
|
4881
|
+
"founder",
|
|
4882
|
+
"free",
|
|
4883
|
+
"friend",
|
|
4884
|
+
"friends",
|
|
4885
|
+
"ftp",
|
|
4886
|
+
"fuck",
|
|
4887
|
+
"fun",
|
|
4888
|
+
"fusion",
|
|
4889
|
+
"gadget",
|
|
4890
|
+
"gadgets",
|
|
4891
|
+
"game",
|
|
4892
|
+
"games",
|
|
4893
|
+
"gears",
|
|
4894
|
+
"general",
|
|
4895
|
+
"geographic",
|
|
4896
|
+
"get",
|
|
4897
|
+
"gettingstarted",
|
|
4898
|
+
"gift",
|
|
4899
|
+
"gifts",
|
|
4900
|
+
"gist",
|
|
4901
|
+
"git",
|
|
4902
|
+
"github",
|
|
4903
|
+
"gmail",
|
|
4904
|
+
"go",
|
|
4905
|
+
"golang",
|
|
4906
|
+
"goto",
|
|
4907
|
+
"gov",
|
|
4908
|
+
"graph",
|
|
4909
|
+
"graphs",
|
|
4910
|
+
"group",
|
|
4911
|
+
"groups",
|
|
4912
|
+
"guest",
|
|
4913
|
+
"guests",
|
|
4914
|
+
"guide",
|
|
4915
|
+
"guides",
|
|
4916
|
+
"hack",
|
|
4917
|
+
"hacks",
|
|
4918
|
+
"head",
|
|
4919
|
+
"help",
|
|
4920
|
+
"home",
|
|
4921
|
+
"homepage",
|
|
4922
|
+
"host",
|
|
4923
|
+
"hosting",
|
|
4924
|
+
"hostmaster",
|
|
4925
|
+
"hostname",
|
|
4926
|
+
"howto",
|
|
4927
|
+
"how-to",
|
|
4928
|
+
"how_to",
|
|
4929
|
+
"html",
|
|
4930
|
+
"htrnl",
|
|
4931
|
+
"http",
|
|
4932
|
+
"httpd",
|
|
4933
|
+
"https",
|
|
4934
|
+
"i",
|
|
4935
|
+
"iamges",
|
|
4936
|
+
"icon",
|
|
4937
|
+
"icons",
|
|
4938
|
+
"id",
|
|
4939
|
+
"idea",
|
|
4940
|
+
"ideas",
|
|
4941
|
+
"im",
|
|
4942
|
+
"image",
|
|
4943
|
+
"images",
|
|
4944
|
+
"img",
|
|
4945
|
+
"imap",
|
|
4946
|
+
"inbox",
|
|
4947
|
+
"inboxes",
|
|
4948
|
+
"index",
|
|
4949
|
+
"indexes",
|
|
4950
|
+
"info",
|
|
4951
|
+
"information",
|
|
4952
|
+
"inquiry",
|
|
4953
|
+
"intranet",
|
|
4954
|
+
"investor",
|
|
4955
|
+
"investors",
|
|
4956
|
+
"invitation",
|
|
4957
|
+
"invitations",
|
|
4958
|
+
"invite",
|
|
4959
|
+
"invoice",
|
|
4960
|
+
"invoices",
|
|
4961
|
+
"imac",
|
|
4962
|
+
"ios",
|
|
4963
|
+
"ipad",
|
|
4964
|
+
"iphone",
|
|
4965
|
+
"irc",
|
|
4966
|
+
"irnages",
|
|
4967
|
+
"irng",
|
|
4968
|
+
"is",
|
|
4969
|
+
"issue",
|
|
4970
|
+
"issues",
|
|
4971
|
+
"it",
|
|
4972
|
+
"item",
|
|
4973
|
+
"items",
|
|
4974
|
+
"java",
|
|
4975
|
+
"javascript",
|
|
4976
|
+
"job",
|
|
4977
|
+
"jobs",
|
|
4978
|
+
"join",
|
|
4979
|
+
"js",
|
|
4980
|
+
"json",
|
|
4981
|
+
"jump",
|
|
4982
|
+
"kb",
|
|
4983
|
+
"knowledge-base",
|
|
4984
|
+
"knowledgebase",
|
|
4985
|
+
"lab",
|
|
4986
|
+
"labs",
|
|
4987
|
+
"language",
|
|
4988
|
+
"languages",
|
|
4989
|
+
"last",
|
|
4990
|
+
"ldap_status",
|
|
4991
|
+
"ldap-status",
|
|
4992
|
+
"ldapstatus",
|
|
4993
|
+
"legal",
|
|
4994
|
+
"license",
|
|
4995
|
+
"licenses",
|
|
4996
|
+
"link",
|
|
4997
|
+
"links",
|
|
4998
|
+
"linux",
|
|
4999
|
+
"list",
|
|
5000
|
+
"lists",
|
|
5001
|
+
"livejournal",
|
|
5002
|
+
"lj",
|
|
5003
|
+
"local",
|
|
5004
|
+
"locale",
|
|
5005
|
+
"location",
|
|
5006
|
+
"log",
|
|
5007
|
+
"log-in",
|
|
5008
|
+
"log-out",
|
|
5009
|
+
"login",
|
|
5010
|
+
"logout",
|
|
5011
|
+
"logs",
|
|
5012
|
+
"log_in",
|
|
5013
|
+
"log_out",
|
|
5014
|
+
"m",
|
|
5015
|
+
"mac",
|
|
5016
|
+
"macos",
|
|
5017
|
+
"macosx",
|
|
5018
|
+
"mac-os",
|
|
5019
|
+
"mac-os-x",
|
|
5020
|
+
"mac_os_x",
|
|
5021
|
+
"mail",
|
|
5022
|
+
"mailer",
|
|
5023
|
+
"mailing",
|
|
5024
|
+
"main",
|
|
5025
|
+
"maintenance",
|
|
5026
|
+
"manage",
|
|
5027
|
+
"manager",
|
|
5028
|
+
"manual",
|
|
5029
|
+
"map",
|
|
5030
|
+
"maps",
|
|
5031
|
+
"marketing",
|
|
5032
|
+
"master",
|
|
5033
|
+
"me",
|
|
5034
|
+
"media",
|
|
5035
|
+
"member",
|
|
5036
|
+
"members",
|
|
5037
|
+
"memories",
|
|
5038
|
+
"memory",
|
|
5039
|
+
"merchandise",
|
|
5040
|
+
"message",
|
|
5041
|
+
"messages",
|
|
5042
|
+
"messenger",
|
|
5043
|
+
"mg",
|
|
5044
|
+
"microblog",
|
|
5045
|
+
"microblogs",
|
|
5046
|
+
"mine",
|
|
5047
|
+
"mis",
|
|
5048
|
+
"misc",
|
|
5049
|
+
"mms",
|
|
5050
|
+
"mob",
|
|
5051
|
+
"mobile",
|
|
5052
|
+
"model",
|
|
5053
|
+
"models",
|
|
5054
|
+
"money",
|
|
5055
|
+
"movie",
|
|
5056
|
+
"movies",
|
|
5057
|
+
"mp3",
|
|
5058
|
+
"mp4",
|
|
5059
|
+
"msg",
|
|
5060
|
+
"msn",
|
|
5061
|
+
"music",
|
|
5062
|
+
"mx",
|
|
5063
|
+
"my",
|
|
5064
|
+
"mymme",
|
|
5065
|
+
"mysql",
|
|
5066
|
+
"name",
|
|
5067
|
+
"named",
|
|
5068
|
+
"nan",
|
|
5069
|
+
"navi",
|
|
5070
|
+
"navigation",
|
|
5071
|
+
"net",
|
|
5072
|
+
"network",
|
|
5073
|
+
"networks",
|
|
5074
|
+
"new",
|
|
5075
|
+
"news",
|
|
5076
|
+
"newsletter",
|
|
5077
|
+
"nick",
|
|
5078
|
+
"nickname",
|
|
5079
|
+
"nil",
|
|
5080
|
+
"none",
|
|
5081
|
+
"notes",
|
|
5082
|
+
"noticias",
|
|
5083
|
+
"notification",
|
|
5084
|
+
"notifications",
|
|
5085
|
+
"notify",
|
|
5086
|
+
"ns",
|
|
5087
|
+
"ns1",
|
|
5088
|
+
"ns2",
|
|
5089
|
+
"ns3",
|
|
5090
|
+
"ns4",
|
|
5091
|
+
"ns5",
|
|
5092
|
+
"null",
|
|
5093
|
+
"oauth",
|
|
5094
|
+
"oauth-clients",
|
|
5095
|
+
"oauth_clients",
|
|
5096
|
+
"ocsp",
|
|
5097
|
+
"offer",
|
|
5098
|
+
"offers",
|
|
5099
|
+
"official",
|
|
5100
|
+
"old",
|
|
5101
|
+
"online",
|
|
5102
|
+
"openid",
|
|
5103
|
+
"operator",
|
|
5104
|
+
"option",
|
|
5105
|
+
"options",
|
|
5106
|
+
"order",
|
|
5107
|
+
"orders",
|
|
5108
|
+
"org",
|
|
5109
|
+
"organization",
|
|
5110
|
+
"organizations",
|
|
5111
|
+
"other",
|
|
5112
|
+
"overview",
|
|
5113
|
+
"owner",
|
|
5114
|
+
"owners",
|
|
5115
|
+
"p0rn",
|
|
5116
|
+
"pack",
|
|
5117
|
+
"page",
|
|
5118
|
+
"pager",
|
|
5119
|
+
"pages",
|
|
5120
|
+
"paid",
|
|
5121
|
+
"panel",
|
|
5122
|
+
"partner",
|
|
5123
|
+
"partnerpage",
|
|
5124
|
+
"partners",
|
|
5125
|
+
"password",
|
|
5126
|
+
"patch",
|
|
5127
|
+
"pay",
|
|
5128
|
+
"payment",
|
|
5129
|
+
"people",
|
|
5130
|
+
"perl",
|
|
5131
|
+
"person",
|
|
5132
|
+
"phone",
|
|
5133
|
+
"photo",
|
|
5134
|
+
"photoalbum",
|
|
5135
|
+
"photos",
|
|
5136
|
+
"php",
|
|
5137
|
+
"phpmyadmin",
|
|
5138
|
+
"phppgadmin",
|
|
5139
|
+
"phpredisadmin",
|
|
5140
|
+
"pic",
|
|
5141
|
+
"pics",
|
|
5142
|
+
"picture",
|
|
5143
|
+
"pictures",
|
|
5144
|
+
"ping",
|
|
5145
|
+
"pixel",
|
|
5146
|
+
"places",
|
|
5147
|
+
"plan",
|
|
5148
|
+
"plans",
|
|
5149
|
+
"plugin",
|
|
5150
|
+
"plugins",
|
|
5151
|
+
"podcasts",
|
|
5152
|
+
"policies",
|
|
5153
|
+
"policy",
|
|
5154
|
+
"pop",
|
|
5155
|
+
"pop3",
|
|
5156
|
+
"popular",
|
|
5157
|
+
"porn",
|
|
5158
|
+
"portal",
|
|
5159
|
+
"portals",
|
|
5160
|
+
"post",
|
|
5161
|
+
"postfix",
|
|
5162
|
+
"postmaster",
|
|
5163
|
+
"posts",
|
|
5164
|
+
"pr",
|
|
5165
|
+
"pr0n",
|
|
5166
|
+
"premium",
|
|
5167
|
+
"press",
|
|
5168
|
+
"price",
|
|
5169
|
+
"pricing",
|
|
5170
|
+
"principles",
|
|
5171
|
+
"print",
|
|
5172
|
+
"privacy",
|
|
5173
|
+
"privacy-policy",
|
|
5174
|
+
"privacypolicy",
|
|
5175
|
+
"privacy_policy",
|
|
5176
|
+
"private",
|
|
5177
|
+
"prod",
|
|
5178
|
+
"product",
|
|
5179
|
+
"production",
|
|
5180
|
+
"products",
|
|
5181
|
+
"profile",
|
|
5182
|
+
"profiles",
|
|
5183
|
+
"project",
|
|
5184
|
+
"projects",
|
|
5185
|
+
"promo",
|
|
5186
|
+
"promotions",
|
|
5187
|
+
"proxies",
|
|
5188
|
+
"proxy",
|
|
5189
|
+
"pub",
|
|
5190
|
+
"public",
|
|
5191
|
+
"purchase",
|
|
5192
|
+
"purpose",
|
|
5193
|
+
"put",
|
|
5194
|
+
"python",
|
|
5195
|
+
"queries",
|
|
5196
|
+
"query",
|
|
5197
|
+
"radio",
|
|
5198
|
+
"random",
|
|
5199
|
+
"ranking",
|
|
5200
|
+
"read",
|
|
5201
|
+
"reader",
|
|
5202
|
+
"readme",
|
|
5203
|
+
"recent",
|
|
5204
|
+
"recruit",
|
|
5205
|
+
"recruitment",
|
|
5206
|
+
"redirect",
|
|
5207
|
+
"register",
|
|
5208
|
+
"registration",
|
|
5209
|
+
"release",
|
|
5210
|
+
"remove",
|
|
5211
|
+
"replies",
|
|
5212
|
+
"report",
|
|
5213
|
+
"reports",
|
|
5214
|
+
"repositories",
|
|
5215
|
+
"repository",
|
|
5216
|
+
"req",
|
|
5217
|
+
"request",
|
|
5218
|
+
"requests",
|
|
5219
|
+
"research",
|
|
5220
|
+
"reset",
|
|
5221
|
+
"resolve",
|
|
5222
|
+
"resolver",
|
|
5223
|
+
"review",
|
|
5224
|
+
"rnail",
|
|
5225
|
+
"rnicrosoft",
|
|
5226
|
+
"roc",
|
|
5227
|
+
"root",
|
|
5228
|
+
"rss",
|
|
5229
|
+
"ruby",
|
|
5230
|
+
"rule",
|
|
5231
|
+
"sag",
|
|
5232
|
+
"sale",
|
|
5233
|
+
"sales",
|
|
5234
|
+
"sample",
|
|
5235
|
+
"samples",
|
|
5236
|
+
"sandbox",
|
|
5237
|
+
"save",
|
|
5238
|
+
"scholar",
|
|
5239
|
+
"school",
|
|
5240
|
+
"schools",
|
|
5241
|
+
"script",
|
|
5242
|
+
"scripts",
|
|
5243
|
+
"search",
|
|
5244
|
+
"secure",
|
|
5245
|
+
"security",
|
|
5246
|
+
"self",
|
|
5247
|
+
"seminars",
|
|
5248
|
+
"send",
|
|
5249
|
+
"server",
|
|
5250
|
+
"server-info",
|
|
5251
|
+
"server_info",
|
|
5252
|
+
"server-status",
|
|
5253
|
+
"server_status",
|
|
5254
|
+
"servers",
|
|
5255
|
+
"service",
|
|
5256
|
+
"services",
|
|
5257
|
+
"session",
|
|
5258
|
+
"sessions",
|
|
5259
|
+
"setting",
|
|
5260
|
+
"settings",
|
|
5261
|
+
"setup",
|
|
5262
|
+
"share",
|
|
5263
|
+
"shop",
|
|
5264
|
+
"shopping",
|
|
5265
|
+
"shortcut",
|
|
5266
|
+
"shortcuts",
|
|
5267
|
+
"show",
|
|
5268
|
+
"sign-in",
|
|
5269
|
+
"sign-up",
|
|
5270
|
+
"signin",
|
|
5271
|
+
"signout",
|
|
5272
|
+
"signup",
|
|
5273
|
+
"sign_in",
|
|
5274
|
+
"sign_up",
|
|
5275
|
+
"site",
|
|
5276
|
+
"sitemap",
|
|
5277
|
+
"sitemaps",
|
|
5278
|
+
"sitenews",
|
|
5279
|
+
"sites",
|
|
5280
|
+
"sketchup",
|
|
5281
|
+
"sky",
|
|
5282
|
+
"slash",
|
|
5283
|
+
"slashinvoice",
|
|
5284
|
+
"slut",
|
|
5285
|
+
"smartphone",
|
|
5286
|
+
"sms",
|
|
5287
|
+
"smtp",
|
|
5288
|
+
"soap",
|
|
5289
|
+
"software",
|
|
5290
|
+
"sorry",
|
|
5291
|
+
"source",
|
|
5292
|
+
"spec",
|
|
5293
|
+
"special",
|
|
5294
|
+
"spreadsheet",
|
|
5295
|
+
"spreadsheets",
|
|
5296
|
+
"sql",
|
|
5297
|
+
"src",
|
|
5298
|
+
"srntp",
|
|
5299
|
+
"ssh",
|
|
5300
|
+
"ssl",
|
|
5301
|
+
"ssladmin",
|
|
5302
|
+
"ssladministrator",
|
|
5303
|
+
"sslwebmaster",
|
|
5304
|
+
"ssytem",
|
|
5305
|
+
"staff",
|
|
5306
|
+
"stage",
|
|
5307
|
+
"staging",
|
|
5308
|
+
"start",
|
|
5309
|
+
"stat",
|
|
5310
|
+
"state",
|
|
5311
|
+
"static",
|
|
5312
|
+
"statistics",
|
|
5313
|
+
"stats",
|
|
5314
|
+
"status",
|
|
5315
|
+
"store",
|
|
5316
|
+
"stores",
|
|
5317
|
+
"stories",
|
|
5318
|
+
"style",
|
|
5319
|
+
"styleguide",
|
|
5320
|
+
"styles",
|
|
5321
|
+
"stylesheet",
|
|
5322
|
+
"stylesheets",
|
|
5323
|
+
"subdomain",
|
|
5324
|
+
"subscribe",
|
|
5325
|
+
"subscription",
|
|
5326
|
+
"subscriptions",
|
|
5327
|
+
"suggest",
|
|
5328
|
+
"suggestqueries",
|
|
5329
|
+
"support",
|
|
5330
|
+
"survey",
|
|
5331
|
+
"surveys",
|
|
5332
|
+
"surveytool",
|
|
5333
|
+
"svn",
|
|
5334
|
+
"swf",
|
|
5335
|
+
"syn",
|
|
5336
|
+
"sync",
|
|
5337
|
+
"syndicated",
|
|
5338
|
+
"sys",
|
|
5339
|
+
"sysadmin",
|
|
5340
|
+
"sysadministrator",
|
|
5341
|
+
"sysadmins",
|
|
5342
|
+
"system",
|
|
5343
|
+
"tablet",
|
|
5344
|
+
"tablets",
|
|
5345
|
+
"tag",
|
|
5346
|
+
"tags",
|
|
5347
|
+
"talk",
|
|
5348
|
+
"talkgadget",
|
|
5349
|
+
"task",
|
|
5350
|
+
"tasks",
|
|
5351
|
+
"team",
|
|
5352
|
+
"teams",
|
|
5353
|
+
"tech",
|
|
5354
|
+
"telnet",
|
|
5355
|
+
"term",
|
|
5356
|
+
"terms",
|
|
5357
|
+
"terms-of-service",
|
|
5358
|
+
"termsofservice",
|
|
5359
|
+
"terms_of_service",
|
|
5360
|
+
"test",
|
|
5361
|
+
"testing",
|
|
5362
|
+
"tests",
|
|
5363
|
+
"text",
|
|
5364
|
+
"theme",
|
|
5365
|
+
"themes",
|
|
5366
|
+
"thread",
|
|
5367
|
+
"threads",
|
|
5368
|
+
"ticket",
|
|
5369
|
+
"tickets",
|
|
5370
|
+
"tmp",
|
|
5371
|
+
"todo",
|
|
5372
|
+
"to-do",
|
|
5373
|
+
"to_do",
|
|
5374
|
+
"toml",
|
|
5375
|
+
"tool",
|
|
5376
|
+
"toolbar",
|
|
5377
|
+
"toolbars",
|
|
5378
|
+
"tools",
|
|
5379
|
+
"top",
|
|
5380
|
+
"topic",
|
|
5381
|
+
"topics",
|
|
5382
|
+
"tos",
|
|
5383
|
+
"tour",
|
|
5384
|
+
"trac",
|
|
5385
|
+
"translate",
|
|
5386
|
+
"trace",
|
|
5387
|
+
"translation",
|
|
5388
|
+
"translations",
|
|
5389
|
+
"translator",
|
|
5390
|
+
"trends",
|
|
5391
|
+
"tutorial",
|
|
5392
|
+
"tux",
|
|
5393
|
+
"tv",
|
|
5394
|
+
"twitter",
|
|
5395
|
+
"txt",
|
|
5396
|
+
"ul",
|
|
5397
|
+
"undef",
|
|
5398
|
+
"unfollow",
|
|
5399
|
+
"unsubscribe",
|
|
5400
|
+
"update",
|
|
5401
|
+
"updates",
|
|
5402
|
+
"upgrade",
|
|
5403
|
+
"upgrades",
|
|
5404
|
+
"upi",
|
|
5405
|
+
"upload",
|
|
5406
|
+
"uploads",
|
|
5407
|
+
"url",
|
|
5408
|
+
"usage",
|
|
5409
|
+
"user",
|
|
5410
|
+
"username",
|
|
5411
|
+
"usernames",
|
|
5412
|
+
"users",
|
|
5413
|
+
"uuid",
|
|
5414
|
+
"validation",
|
|
5415
|
+
"validations",
|
|
5416
|
+
"ver",
|
|
5417
|
+
"version",
|
|
5418
|
+
"video",
|
|
5419
|
+
"videos",
|
|
5420
|
+
"video-stats",
|
|
5421
|
+
"visitor",
|
|
5422
|
+
"visitors",
|
|
5423
|
+
"voice",
|
|
5424
|
+
"volunteer",
|
|
5425
|
+
"volunteers",
|
|
5426
|
+
"w",
|
|
5427
|
+
"watch",
|
|
5428
|
+
"wave",
|
|
5429
|
+
"weather",
|
|
5430
|
+
"web",
|
|
5431
|
+
"webdisk",
|
|
5432
|
+
"webhook",
|
|
5433
|
+
"webhooks",
|
|
5434
|
+
"webmail",
|
|
5435
|
+
"webmaster",
|
|
5436
|
+
"webmasters",
|
|
5437
|
+
"webrnail",
|
|
5438
|
+
"website",
|
|
5439
|
+
"websites",
|
|
5440
|
+
"welcome",
|
|
5441
|
+
"whm",
|
|
5442
|
+
"whois",
|
|
5443
|
+
"widget",
|
|
5444
|
+
"widgets",
|
|
5445
|
+
"wifi",
|
|
5446
|
+
"wiki",
|
|
5447
|
+
"wikis",
|
|
5448
|
+
"win",
|
|
5449
|
+
"windows",
|
|
5450
|
+
"word",
|
|
5451
|
+
"work",
|
|
5452
|
+
"works",
|
|
5453
|
+
"workshop",
|
|
5454
|
+
"wpad",
|
|
5455
|
+
"ww",
|
|
5456
|
+
"wws",
|
|
5457
|
+
"www",
|
|
5458
|
+
"wwws",
|
|
5459
|
+
"wwww",
|
|
5460
|
+
"xfn",
|
|
5461
|
+
"xhtml",
|
|
5462
|
+
"xhtrnl",
|
|
5463
|
+
"xml",
|
|
5464
|
+
"xmpp",
|
|
5465
|
+
"xpg",
|
|
5466
|
+
"xxx",
|
|
5467
|
+
"yaml",
|
|
5468
|
+
"year",
|
|
5469
|
+
"yml",
|
|
5470
|
+
"you",
|
|
5471
|
+
"yourdomain",
|
|
5472
|
+
"yourname",
|
|
5473
|
+
"yoursite",
|
|
5474
|
+
"yourusername"
|
|
5475
|
+
];
|
|
5476
|
+
var famousAccounts = [
|
|
5477
|
+
"10ronaldinho",
|
|
5478
|
+
"3gerardpique",
|
|
5479
|
+
"adele",
|
|
5480
|
+
"akshaykumar",
|
|
5481
|
+
"aliaa08",
|
|
5482
|
+
"aliciakeys",
|
|
5483
|
+
"amitshah",
|
|
5484
|
+
"andresiniesta8",
|
|
5485
|
+
"anushkasharma",
|
|
5486
|
+
"arianagrande",
|
|
5487
|
+
"arrahman",
|
|
5488
|
+
"arvindkejriwal",
|
|
5489
|
+
"avrillavigne",
|
|
5490
|
+
"barackobama",
|
|
5491
|
+
"bbcbreaking",
|
|
5492
|
+
"bbcworld",
|
|
5493
|
+
"beingsalmankhan",
|
|
5494
|
+
"billgates",
|
|
5495
|
+
"britneyspears",
|
|
5496
|
+
"brunomars",
|
|
5497
|
+
"bts_bighit",
|
|
5498
|
+
"bts_twt",
|
|
5499
|
+
"championsleague",
|
|
5500
|
+
"chrisbrown",
|
|
5501
|
+
"cnnbrk",
|
|
5502
|
+
"coldplay",
|
|
5503
|
+
"conanobrien",
|
|
5504
|
+
"cristiano",
|
|
5505
|
+
"danieltosh",
|
|
5506
|
+
"davidguetta",
|
|
5507
|
+
"ddlovato",
|
|
5508
|
+
"deepikapadukone",
|
|
5509
|
+
"drake",
|
|
5510
|
+
"elisapie",
|
|
5511
|
+
"ellendegeneres",
|
|
5512
|
+
"elonmusk",
|
|
5513
|
+
"eminem",
|
|
5514
|
+
"emmawatson",
|
|
5515
|
+
"fcbarcelona",
|
|
5516
|
+
"foxnews",
|
|
5517
|
+
"harry_styles",
|
|
5518
|
+
"hillaryclinton",
|
|
5519
|
+
"iamsrk",
|
|
5520
|
+
"ihrithik",
|
|
5521
|
+
"imvkohli",
|
|
5522
|
+
"instagram",
|
|
5523
|
+
"jimmyfallon",
|
|
5524
|
+
"jlo",
|
|
5525
|
+
"joebiden",
|
|
5526
|
+
"jtimberlake",
|
|
5527
|
+
"justinbieber",
|
|
5528
|
+
"kaka",
|
|
5529
|
+
"kanyewest",
|
|
5530
|
+
"katyperry",
|
|
5531
|
+
"kendalljenner",
|
|
5532
|
+
"kevinhart4real",
|
|
5533
|
+
"khloekardashian",
|
|
5534
|
+
"kimkardashian",
|
|
5535
|
+
"kingjames",
|
|
5536
|
+
"kourtneykardash",
|
|
5537
|
+
"kyliejenner",
|
|
5538
|
+
"ladygaga",
|
|
5539
|
+
"liampayne",
|
|
5540
|
+
"liltunechi",
|
|
5541
|
+
"manutd",
|
|
5542
|
+
"mariahcarey",
|
|
5543
|
+
"mileycyrus",
|
|
5544
|
+
"mohamadalarefe",
|
|
5545
|
+
"narendramodi",
|
|
5546
|
+
"nasa",
|
|
5547
|
+
"nba",
|
|
5548
|
+
"neymarjr",
|
|
5549
|
+
"nfl",
|
|
5550
|
+
"niallofficial",
|
|
5551
|
+
"nickiminaj",
|
|
5552
|
+
"nytimes",
|
|
5553
|
+
"onedirection",
|
|
5554
|
+
"oprah",
|
|
5555
|
+
"pink",
|
|
5556
|
+
"pitbull",
|
|
5557
|
+
"playstation",
|
|
5558
|
+
"pmoindia",
|
|
5559
|
+
"premierleague",
|
|
5560
|
+
"priyankachopra",
|
|
5561
|
+
"realdonaldtrump",
|
|
5562
|
+
"ricky_martin",
|
|
5563
|
+
"rihanna",
|
|
5564
|
+
"sachin_rt",
|
|
5565
|
+
"selenagomez",
|
|
5566
|
+
"shakira",
|
|
5567
|
+
"shawnmendes",
|
|
5568
|
+
"sportscenter",
|
|
5569
|
+
"srbachchan",
|
|
5570
|
+
"subhisharma100",
|
|
5571
|
+
"taylorswift13",
|
|
5572
|
+
"theeconomist",
|
|
5573
|
+
"twitter",
|
|
5574
|
+
"virendersehwag",
|
|
5575
|
+
"whitehouse45",
|
|
5576
|
+
"wizkhalifa",
|
|
5577
|
+
"youtube",
|
|
5578
|
+
"zaynmalik",
|
|
5579
|
+
"beyonce",
|
|
5580
|
+
"billieeilish",
|
|
5581
|
+
"leomessi",
|
|
5582
|
+
"natgeo",
|
|
5583
|
+
"nike",
|
|
5584
|
+
"snoopdogg",
|
|
5585
|
+
"taylorswift",
|
|
5586
|
+
"therock",
|
|
5587
|
+
"10downingstreet",
|
|
5588
|
+
"aoc",
|
|
5589
|
+
"carterjwm",
|
|
5590
|
+
"dril",
|
|
5591
|
+
"gretathunberg",
|
|
5592
|
+
"kamalaharris",
|
|
5593
|
+
"kremlinrussia_e",
|
|
5594
|
+
"potus",
|
|
5595
|
+
"rondesantisfl",
|
|
5596
|
+
"ukraine",
|
|
5597
|
+
"washingtonpost",
|
|
5598
|
+
"yousuck2020",
|
|
5599
|
+
"zelenskyyua"
|
|
5600
|
+
];
|
|
5601
|
+
var reservedSubdomains = [
|
|
5602
|
+
...atpSpecific,
|
|
5603
|
+
...commonlyReserved,
|
|
5604
|
+
...famousAccounts
|
|
5605
|
+
].reduce((acc, cur) => {
|
|
5606
|
+
return {
|
|
5607
|
+
...acc,
|
|
5608
|
+
[cur]: true
|
|
5609
|
+
};
|
|
5610
|
+
}, {});
|
|
5611
|
+
|
|
5612
|
+
// ../identifier/src/handle.ts
|
|
5613
|
+
var ensureValidHandle = (handle2) => {
|
|
5614
|
+
if (!/^[a-zA-Z0-9.-]*$/.test(handle2)) {
|
|
5615
|
+
throw new InvalidHandleError(
|
|
5616
|
+
"Disallowed characters in handle (ASCII letters, digits, dashes, periods only)"
|
|
5617
|
+
);
|
|
5618
|
+
}
|
|
5619
|
+
if (handle2.length > 253) {
|
|
5620
|
+
throw new InvalidHandleError("Handle is too long (253 chars max)");
|
|
5621
|
+
}
|
|
5622
|
+
const labels = handle2.split(".");
|
|
5623
|
+
if (labels.length < 2) {
|
|
5624
|
+
throw new InvalidHandleError("Handle domain needs at least two parts");
|
|
5625
|
+
}
|
|
5626
|
+
for (let i = 0; i < labels.length; i++) {
|
|
5627
|
+
const l = labels[i];
|
|
5628
|
+
if (l.length < 1) {
|
|
5629
|
+
throw new InvalidHandleError("Handle parts can not be empty");
|
|
5630
|
+
}
|
|
5631
|
+
if (l.length > 63) {
|
|
5632
|
+
throw new InvalidHandleError("Handle part too long (max 63 chars)");
|
|
5633
|
+
}
|
|
5634
|
+
if (l.endsWith("-") || l.startsWith("-")) {
|
|
5635
|
+
throw new InvalidHandleError(
|
|
5636
|
+
"Handle parts can not start or end with hyphens"
|
|
5637
|
+
);
|
|
5638
|
+
}
|
|
5639
|
+
if (i + 1 == labels.length && !/^[a-zA-Z]/.test(l)) {
|
|
5640
|
+
throw new InvalidHandleError(
|
|
5641
|
+
"Handle final component (TLD) must start with ASCII letter"
|
|
5642
|
+
);
|
|
5643
|
+
}
|
|
3347
5644
|
}
|
|
3348
5645
|
};
|
|
3349
|
-
var
|
|
5646
|
+
var InvalidHandleError = class extends Error {
|
|
3350
5647
|
};
|
|
3351
|
-
|
|
5648
|
+
|
|
5649
|
+
// ../identifier/src/did.ts
|
|
5650
|
+
var ensureValidDid = (did2) => {
|
|
5651
|
+
if (!/^[a-zA-Z0-9._:%-]*$/.test(did2)) {
|
|
5652
|
+
throw new InvalidDidError(
|
|
5653
|
+
"Disallowed characters in DID (ASCII letters, digits, and a couple other characters only)"
|
|
5654
|
+
);
|
|
5655
|
+
}
|
|
5656
|
+
const parts = did2.split(":");
|
|
5657
|
+
if (parts.length < 3) {
|
|
5658
|
+
throw new InvalidDidError(
|
|
5659
|
+
"DID requires prefix, method, and method-specific content"
|
|
5660
|
+
);
|
|
5661
|
+
}
|
|
5662
|
+
if (parts[0] != "did") {
|
|
5663
|
+
throw new InvalidDidError('DID requires "did:" prefix');
|
|
5664
|
+
}
|
|
5665
|
+
if (!/^[a-z]+$/.test(parts[1])) {
|
|
5666
|
+
throw new InvalidDidError("DID method must be lower-case letters");
|
|
5667
|
+
}
|
|
5668
|
+
if (did2.endsWith(":") || did2.endsWith("%")) {
|
|
5669
|
+
throw new InvalidDidError('DID can not end with ":" or "%"');
|
|
5670
|
+
}
|
|
5671
|
+
if (did2.length > 8 * 1024) {
|
|
5672
|
+
throw new InvalidDidError("DID is far too long");
|
|
5673
|
+
}
|
|
3352
5674
|
};
|
|
3353
|
-
var
|
|
5675
|
+
var InvalidDidError = class extends Error {
|
|
3354
5676
|
};
|
|
3355
5677
|
|
|
3356
|
-
// ../
|
|
5678
|
+
// ../uri/src/validation.ts
|
|
5679
|
+
var ensureValidAtUri = (uri2) => {
|
|
5680
|
+
const uriParts = uri2.split("#");
|
|
5681
|
+
if (uriParts.length > 2) {
|
|
5682
|
+
throw new Error('ATURI can have at most one "#", separating fragment out');
|
|
5683
|
+
}
|
|
5684
|
+
const fragmentPart = uriParts[1] || null;
|
|
5685
|
+
uri2 = uriParts[0];
|
|
5686
|
+
if (!/^[a-zA-Z0-9._~:@!$&')(*+,;=%/-]*$/.test(uri2)) {
|
|
5687
|
+
throw new Error("Disallowed characters in ATURI (ASCII)");
|
|
5688
|
+
}
|
|
5689
|
+
const parts = uri2.split("/");
|
|
5690
|
+
if (parts.length >= 3 && (parts[0] != "at:" || parts[1].length != 0)) {
|
|
5691
|
+
throw new Error('ATURI must start with "at://"');
|
|
5692
|
+
}
|
|
5693
|
+
if (parts.length < 3) {
|
|
5694
|
+
throw new Error("ATURI requires at least method and authority sections");
|
|
5695
|
+
}
|
|
5696
|
+
try {
|
|
5697
|
+
ensureValidHandle(parts[2]);
|
|
5698
|
+
} catch {
|
|
5699
|
+
try {
|
|
5700
|
+
ensureValidDid(parts[2]);
|
|
5701
|
+
} catch {
|
|
5702
|
+
throw new Error("ATURI authority must be a valid handle or DID");
|
|
5703
|
+
}
|
|
5704
|
+
}
|
|
5705
|
+
if (parts.length >= 4) {
|
|
5706
|
+
if (parts[3].length == 0) {
|
|
5707
|
+
throw new Error(
|
|
5708
|
+
"ATURI can not have a slash after authority without a path segment"
|
|
5709
|
+
);
|
|
5710
|
+
}
|
|
5711
|
+
try {
|
|
5712
|
+
ensureValidNsid(parts[3]);
|
|
5713
|
+
} catch {
|
|
5714
|
+
throw new Error(
|
|
5715
|
+
"ATURI requires first path segment (if supplied) to be valid NSID"
|
|
5716
|
+
);
|
|
5717
|
+
}
|
|
5718
|
+
}
|
|
5719
|
+
if (parts.length >= 5) {
|
|
5720
|
+
if (parts[4].length == 0) {
|
|
5721
|
+
throw new Error(
|
|
5722
|
+
"ATURI can not have a slash after collection, unless record key is provided"
|
|
5723
|
+
);
|
|
5724
|
+
}
|
|
5725
|
+
}
|
|
5726
|
+
if (parts.length >= 6) {
|
|
5727
|
+
throw new Error(
|
|
5728
|
+
"ATURI path can have at most two parts, and no trailing slash"
|
|
5729
|
+
);
|
|
5730
|
+
}
|
|
5731
|
+
if (uriParts.length >= 2 && fragmentPart == null) {
|
|
5732
|
+
throw new Error("ATURI fragment must be non-empty and start with slash");
|
|
5733
|
+
}
|
|
5734
|
+
if (fragmentPart != null) {
|
|
5735
|
+
if (fragmentPart.length == 0 || fragmentPart[0] != "/") {
|
|
5736
|
+
throw new Error("ATURI fragment must be non-empty and start with slash");
|
|
5737
|
+
}
|
|
5738
|
+
if (!/^\/[a-zA-Z0-9._~:@!$&')(*+,;=%[\]/-]*$/.test(fragmentPart)) {
|
|
5739
|
+
throw new Error("Disallowed characters in ATURI fragment (ASCII)");
|
|
5740
|
+
}
|
|
5741
|
+
}
|
|
5742
|
+
if (uri2.length > 8 * 1024) {
|
|
5743
|
+
throw new Error("ATURI is far too long");
|
|
5744
|
+
}
|
|
5745
|
+
};
|
|
5746
|
+
|
|
5747
|
+
// ../lexicon/src/validators/formats.ts
|
|
3357
5748
|
var import_iso_datestring_validator = __toESM(require_dist());
|
|
3358
|
-
function
|
|
3359
|
-
|
|
5749
|
+
function datetime(path, value) {
|
|
5750
|
+
try {
|
|
5751
|
+
if (!(0, import_iso_datestring_validator.isValidISODateString)(value)) {
|
|
5752
|
+
throw new Error();
|
|
5753
|
+
}
|
|
5754
|
+
} catch {
|
|
5755
|
+
return {
|
|
5756
|
+
success: false,
|
|
5757
|
+
error: new ValidationError(
|
|
5758
|
+
`${path} must be an iso8601 formatted datetime`
|
|
5759
|
+
)
|
|
5760
|
+
};
|
|
5761
|
+
}
|
|
5762
|
+
return { success: true, value };
|
|
5763
|
+
}
|
|
5764
|
+
function uri(path, value) {
|
|
5765
|
+
const isUri = value.match(/^\w+:(?:\/\/)?[^\s/][^\s]*$/) !== null;
|
|
5766
|
+
if (!isUri) {
|
|
5767
|
+
return {
|
|
5768
|
+
success: false,
|
|
5769
|
+
error: new ValidationError(`${path} must be a uri`)
|
|
5770
|
+
};
|
|
5771
|
+
}
|
|
5772
|
+
return { success: true, value };
|
|
5773
|
+
}
|
|
5774
|
+
function atUri(path, value) {
|
|
5775
|
+
try {
|
|
5776
|
+
ensureValidAtUri(value);
|
|
5777
|
+
} catch {
|
|
5778
|
+
return {
|
|
5779
|
+
success: false,
|
|
5780
|
+
error: new ValidationError(`${path} must be a valid at-uri`)
|
|
5781
|
+
};
|
|
5782
|
+
}
|
|
5783
|
+
return { success: true, value };
|
|
5784
|
+
}
|
|
5785
|
+
function did(path, value) {
|
|
5786
|
+
try {
|
|
5787
|
+
ensureValidDid(value);
|
|
5788
|
+
} catch {
|
|
5789
|
+
return {
|
|
5790
|
+
success: false,
|
|
5791
|
+
error: new ValidationError(`${path} must be a valid did`)
|
|
5792
|
+
};
|
|
5793
|
+
}
|
|
5794
|
+
return { success: true, value };
|
|
5795
|
+
}
|
|
5796
|
+
function handle(path, value) {
|
|
5797
|
+
try {
|
|
5798
|
+
ensureValidHandle(value);
|
|
5799
|
+
} catch {
|
|
5800
|
+
return {
|
|
5801
|
+
success: false,
|
|
5802
|
+
error: new ValidationError(`${path} must be a valid handle`)
|
|
5803
|
+
};
|
|
5804
|
+
}
|
|
5805
|
+
return { success: true, value };
|
|
5806
|
+
}
|
|
5807
|
+
function atIdentifier(path, value) {
|
|
5808
|
+
const isDid = did(path, value);
|
|
5809
|
+
if (!isDid.success) {
|
|
5810
|
+
const isHandle = handle(path, value);
|
|
5811
|
+
if (!isHandle.success) {
|
|
5812
|
+
return {
|
|
5813
|
+
success: false,
|
|
5814
|
+
error: new ValidationError(`${path} must be a valid did or a handle`)
|
|
5815
|
+
};
|
|
5816
|
+
}
|
|
5817
|
+
}
|
|
5818
|
+
return { success: true, value };
|
|
5819
|
+
}
|
|
5820
|
+
function nsid(path, value) {
|
|
5821
|
+
try {
|
|
5822
|
+
ensureValidNsid(value);
|
|
5823
|
+
} catch {
|
|
5824
|
+
return {
|
|
5825
|
+
success: false,
|
|
5826
|
+
error: new ValidationError(`${path} must be a valid nsid`)
|
|
5827
|
+
};
|
|
5828
|
+
}
|
|
5829
|
+
return { success: true, value };
|
|
5830
|
+
}
|
|
5831
|
+
function cid(path, value) {
|
|
5832
|
+
try {
|
|
5833
|
+
CID.parse(value);
|
|
5834
|
+
} catch {
|
|
5835
|
+
return {
|
|
5836
|
+
success: false,
|
|
5837
|
+
error: new ValidationError(`${path} must be a cid string`)
|
|
5838
|
+
};
|
|
5839
|
+
}
|
|
5840
|
+
return { success: true, value };
|
|
5841
|
+
}
|
|
5842
|
+
|
|
5843
|
+
// ../lexicon/src/validators/primitives.ts
|
|
5844
|
+
function validate(lexicons, path, def2, value) {
|
|
5845
|
+
switch (def2.type) {
|
|
3360
5846
|
case "boolean":
|
|
3361
|
-
return boolean(lexicons, path,
|
|
3362
|
-
case "
|
|
3363
|
-
return
|
|
5847
|
+
return boolean(lexicons, path, def2, value);
|
|
5848
|
+
case "float":
|
|
5849
|
+
return float(lexicons, path, def2, value);
|
|
3364
5850
|
case "integer":
|
|
3365
|
-
return integer(lexicons, path,
|
|
5851
|
+
return integer(lexicons, path, def2, value);
|
|
3366
5852
|
case "string":
|
|
3367
|
-
return
|
|
3368
|
-
case "
|
|
3369
|
-
return
|
|
5853
|
+
return string2(lexicons, path, def2, value);
|
|
5854
|
+
case "bytes":
|
|
5855
|
+
return bytes(lexicons, path, def2, value);
|
|
5856
|
+
case "cid-link":
|
|
5857
|
+
return cidLink(lexicons, path, def2, value);
|
|
3370
5858
|
case "unknown":
|
|
3371
|
-
return unknown(lexicons, path,
|
|
5859
|
+
return unknown(lexicons, path, def2, value);
|
|
3372
5860
|
default:
|
|
3373
5861
|
return {
|
|
3374
5862
|
success: false,
|
|
3375
|
-
error: new ValidationError(`Unexpected lexicon type: ${
|
|
5863
|
+
error: new ValidationError(`Unexpected lexicon type: ${def2.type}`)
|
|
3376
5864
|
};
|
|
3377
5865
|
}
|
|
3378
5866
|
}
|
|
3379
|
-
function boolean(lexicons, path,
|
|
3380
|
-
|
|
5867
|
+
function boolean(lexicons, path, def2, value) {
|
|
5868
|
+
def2 = def2;
|
|
3381
5869
|
const type = typeof value;
|
|
3382
|
-
if (type
|
|
3383
|
-
if (typeof
|
|
3384
|
-
return { success: true };
|
|
5870
|
+
if (type === "undefined") {
|
|
5871
|
+
if (typeof def2.default === "boolean") {
|
|
5872
|
+
return { success: true, value: def2.default };
|
|
3385
5873
|
}
|
|
3386
5874
|
return {
|
|
3387
5875
|
success: false,
|
|
@@ -3393,22 +5881,22 @@ function boolean(lexicons, path, def, value) {
|
|
|
3393
5881
|
error: new ValidationError(`${path} must be a boolean`)
|
|
3394
5882
|
};
|
|
3395
5883
|
}
|
|
3396
|
-
if (typeof
|
|
3397
|
-
if (value !==
|
|
5884
|
+
if (typeof def2.const === "boolean") {
|
|
5885
|
+
if (value !== def2.const) {
|
|
3398
5886
|
return {
|
|
3399
5887
|
success: false,
|
|
3400
|
-
error: new ValidationError(`${path} must be ${
|
|
5888
|
+
error: new ValidationError(`${path} must be ${def2.const}`)
|
|
3401
5889
|
};
|
|
3402
5890
|
}
|
|
3403
5891
|
}
|
|
3404
|
-
return { success: true };
|
|
5892
|
+
return { success: true, value };
|
|
3405
5893
|
}
|
|
3406
|
-
function
|
|
3407
|
-
|
|
5894
|
+
function float(lexicons, path, def2, value) {
|
|
5895
|
+
def2 = def2;
|
|
3408
5896
|
const type = typeof value;
|
|
3409
|
-
if (type
|
|
3410
|
-
if (typeof
|
|
3411
|
-
return { success: true };
|
|
5897
|
+
if (type === "undefined") {
|
|
5898
|
+
if (typeof def2.default === "number") {
|
|
5899
|
+
return { success: true, value: def2.default };
|
|
3412
5900
|
}
|
|
3413
5901
|
return {
|
|
3414
5902
|
success: false,
|
|
@@ -3420,51 +5908,53 @@ function number(lexicons, path, def, value) {
|
|
|
3420
5908
|
error: new ValidationError(`${path} must be a number`)
|
|
3421
5909
|
};
|
|
3422
5910
|
}
|
|
3423
|
-
if (typeof
|
|
3424
|
-
if (value !==
|
|
5911
|
+
if (typeof def2.const === "number") {
|
|
5912
|
+
if (value !== def2.const) {
|
|
3425
5913
|
return {
|
|
3426
5914
|
success: false,
|
|
3427
|
-
error: new ValidationError(`${path} must be ${
|
|
5915
|
+
error: new ValidationError(`${path} must be ${def2.const}`)
|
|
3428
5916
|
};
|
|
3429
5917
|
}
|
|
3430
5918
|
}
|
|
3431
|
-
if (Array.isArray(
|
|
3432
|
-
if (!
|
|
5919
|
+
if (Array.isArray(def2.enum)) {
|
|
5920
|
+
if (!def2.enum.includes(value)) {
|
|
3433
5921
|
return {
|
|
3434
5922
|
success: false,
|
|
3435
5923
|
error: new ValidationError(
|
|
3436
|
-
`${path} must be one of (${
|
|
5924
|
+
`${path} must be one of (${def2.enum.join("|")})`
|
|
3437
5925
|
)
|
|
3438
5926
|
};
|
|
3439
5927
|
}
|
|
3440
5928
|
}
|
|
3441
|
-
if (typeof
|
|
3442
|
-
if (value >
|
|
5929
|
+
if (typeof def2.maximum === "number") {
|
|
5930
|
+
if (value > def2.maximum) {
|
|
3443
5931
|
return {
|
|
3444
5932
|
success: false,
|
|
3445
5933
|
error: new ValidationError(
|
|
3446
|
-
`${path} can not be greater than ${
|
|
5934
|
+
`${path} can not be greater than ${def2.maximum}`
|
|
3447
5935
|
)
|
|
3448
5936
|
};
|
|
3449
5937
|
}
|
|
3450
5938
|
}
|
|
3451
|
-
if (typeof
|
|
3452
|
-
if (value <
|
|
5939
|
+
if (typeof def2.minimum === "number") {
|
|
5940
|
+
if (value < def2.minimum) {
|
|
3453
5941
|
return {
|
|
3454
5942
|
success: false,
|
|
3455
5943
|
error: new ValidationError(
|
|
3456
|
-
`${path} can not be less than ${
|
|
5944
|
+
`${path} can not be less than ${def2.minimum}`
|
|
3457
5945
|
)
|
|
3458
5946
|
};
|
|
3459
5947
|
}
|
|
3460
5948
|
}
|
|
3461
|
-
return { success: true };
|
|
5949
|
+
return { success: true, value };
|
|
3462
5950
|
}
|
|
3463
|
-
function integer(lexicons, path,
|
|
3464
|
-
|
|
3465
|
-
const numRes =
|
|
5951
|
+
function integer(lexicons, path, def2, value) {
|
|
5952
|
+
def2 = def2;
|
|
5953
|
+
const numRes = float(lexicons, path, def2, value);
|
|
3466
5954
|
if (!numRes.success) {
|
|
3467
5955
|
return numRes;
|
|
5956
|
+
} else {
|
|
5957
|
+
value = numRes.value;
|
|
3468
5958
|
}
|
|
3469
5959
|
if (!Number.isInteger(value)) {
|
|
3470
5960
|
return {
|
|
@@ -3472,192 +5962,272 @@ function integer(lexicons, path, def, value) {
|
|
|
3472
5962
|
error: new ValidationError(`${path} must be an integer`)
|
|
3473
5963
|
};
|
|
3474
5964
|
}
|
|
3475
|
-
return { success: true };
|
|
5965
|
+
return { success: true, value };
|
|
3476
5966
|
}
|
|
3477
|
-
function
|
|
3478
|
-
|
|
3479
|
-
|
|
3480
|
-
|
|
3481
|
-
|
|
3482
|
-
return { success: true };
|
|
5967
|
+
function string2(lexicons, path, def2, value) {
|
|
5968
|
+
def2 = def2;
|
|
5969
|
+
if (typeof value === "undefined") {
|
|
5970
|
+
if (typeof def2.default === "string") {
|
|
5971
|
+
return { success: true, value: def2.default };
|
|
3483
5972
|
}
|
|
3484
5973
|
return {
|
|
3485
5974
|
success: false,
|
|
3486
5975
|
error: new ValidationError(`${path} must be a string`)
|
|
3487
5976
|
};
|
|
3488
|
-
} else if (
|
|
5977
|
+
} else if (typeof value !== "string") {
|
|
3489
5978
|
return {
|
|
3490
5979
|
success: false,
|
|
3491
5980
|
error: new ValidationError(`${path} must be a string`)
|
|
3492
5981
|
};
|
|
3493
5982
|
}
|
|
3494
|
-
if (typeof
|
|
3495
|
-
if (value !==
|
|
5983
|
+
if (typeof def2.const === "string") {
|
|
5984
|
+
if (value !== def2.const) {
|
|
5985
|
+
return {
|
|
5986
|
+
success: false,
|
|
5987
|
+
error: new ValidationError(`${path} must be ${def2.const}`)
|
|
5988
|
+
};
|
|
5989
|
+
}
|
|
5990
|
+
}
|
|
5991
|
+
if (Array.isArray(def2.enum)) {
|
|
5992
|
+
if (!def2.enum.includes(value)) {
|
|
5993
|
+
return {
|
|
5994
|
+
success: false,
|
|
5995
|
+
error: new ValidationError(
|
|
5996
|
+
`${path} must be one of (${def2.enum.join("|")})`
|
|
5997
|
+
)
|
|
5998
|
+
};
|
|
5999
|
+
}
|
|
6000
|
+
}
|
|
6001
|
+
if (typeof def2.maxLength === "number") {
|
|
6002
|
+
if (utf8Len(value) > def2.maxLength) {
|
|
3496
6003
|
return {
|
|
3497
6004
|
success: false,
|
|
3498
|
-
error: new ValidationError(
|
|
6005
|
+
error: new ValidationError(
|
|
6006
|
+
`${path} must not be longer than ${def2.maxLength} characters`
|
|
6007
|
+
)
|
|
3499
6008
|
};
|
|
3500
6009
|
}
|
|
3501
6010
|
}
|
|
3502
|
-
if (
|
|
3503
|
-
if (
|
|
6011
|
+
if (typeof def2.minLength === "number") {
|
|
6012
|
+
if (utf8Len(value) < def2.minLength) {
|
|
3504
6013
|
return {
|
|
3505
6014
|
success: false,
|
|
3506
6015
|
error: new ValidationError(
|
|
3507
|
-
`${path} must be
|
|
6016
|
+
`${path} must not be shorter than ${def2.minLength} characters`
|
|
3508
6017
|
)
|
|
3509
6018
|
};
|
|
3510
6019
|
}
|
|
3511
6020
|
}
|
|
3512
|
-
if (typeof
|
|
3513
|
-
if (value
|
|
6021
|
+
if (typeof def2.maxGraphemes === "number") {
|
|
6022
|
+
if (graphemeLen(value) > def2.maxGraphemes) {
|
|
3514
6023
|
return {
|
|
3515
6024
|
success: false,
|
|
3516
6025
|
error: new ValidationError(
|
|
3517
|
-
`${path} must not be longer than ${
|
|
6026
|
+
`${path} must not be longer than ${def2.maxGraphemes} graphemes`
|
|
3518
6027
|
)
|
|
3519
6028
|
};
|
|
3520
6029
|
}
|
|
3521
6030
|
}
|
|
3522
|
-
if (typeof
|
|
3523
|
-
if (value
|
|
6031
|
+
if (typeof def2.minGraphemes === "number") {
|
|
6032
|
+
if (graphemeLen(value) < def2.minGraphemes) {
|
|
3524
6033
|
return {
|
|
3525
6034
|
success: false,
|
|
3526
6035
|
error: new ValidationError(
|
|
3527
|
-
`${path} must not be shorter than ${
|
|
6036
|
+
`${path} must not be shorter than ${def2.minGraphemes} graphemes`
|
|
3528
6037
|
)
|
|
3529
6038
|
};
|
|
3530
6039
|
}
|
|
3531
6040
|
}
|
|
3532
|
-
|
|
6041
|
+
if (typeof def2.format === "string") {
|
|
6042
|
+
switch (def2.format) {
|
|
6043
|
+
case "datetime":
|
|
6044
|
+
return datetime(path, value);
|
|
6045
|
+
case "uri":
|
|
6046
|
+
return uri(path, value);
|
|
6047
|
+
case "at-uri":
|
|
6048
|
+
return atUri(path, value);
|
|
6049
|
+
case "did":
|
|
6050
|
+
return did(path, value);
|
|
6051
|
+
case "handle":
|
|
6052
|
+
return handle(path, value);
|
|
6053
|
+
case "at-identifier":
|
|
6054
|
+
return atIdentifier(path, value);
|
|
6055
|
+
case "nsid":
|
|
6056
|
+
return nsid(path, value);
|
|
6057
|
+
case "cid":
|
|
6058
|
+
return cid(path, value);
|
|
6059
|
+
}
|
|
6060
|
+
}
|
|
6061
|
+
return { success: true, value };
|
|
3533
6062
|
}
|
|
3534
|
-
function
|
|
3535
|
-
|
|
3536
|
-
|
|
3537
|
-
if (type !== "string") {
|
|
6063
|
+
function bytes(lexicons, path, def2, value) {
|
|
6064
|
+
def2 = def2;
|
|
6065
|
+
if (!value || !(value instanceof Uint8Array)) {
|
|
3538
6066
|
return {
|
|
3539
6067
|
success: false,
|
|
3540
|
-
error: new ValidationError(`${path} must be a
|
|
6068
|
+
error: new ValidationError(`${path} must be a byte array`)
|
|
3541
6069
|
};
|
|
3542
6070
|
}
|
|
3543
|
-
{
|
|
3544
|
-
|
|
3545
|
-
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
|
|
3551
|
-
|
|
6071
|
+
if (typeof def2.maxLength === "number") {
|
|
6072
|
+
if (value.byteLength > def2.maxLength) {
|
|
6073
|
+
return {
|
|
6074
|
+
success: false,
|
|
6075
|
+
error: new ValidationError(
|
|
6076
|
+
`${path} must not be larger than ${def2.maxLength} bytes`
|
|
6077
|
+
)
|
|
6078
|
+
};
|
|
6079
|
+
}
|
|
6080
|
+
}
|
|
6081
|
+
if (typeof def2.minLength === "number") {
|
|
6082
|
+
if (value.byteLength < def2.minLength) {
|
|
6083
|
+
return {
|
|
6084
|
+
success: false,
|
|
6085
|
+
error: new ValidationError(
|
|
6086
|
+
`${path} must not be smaller than ${def2.minLength} bytes`
|
|
6087
|
+
)
|
|
6088
|
+
};
|
|
3552
6089
|
}
|
|
3553
6090
|
}
|
|
3554
|
-
return { success: true };
|
|
6091
|
+
return { success: true, value };
|
|
6092
|
+
}
|
|
6093
|
+
function cidLink(lexicons, path, def2, value) {
|
|
6094
|
+
if (CID.asCID(value) === null) {
|
|
6095
|
+
return {
|
|
6096
|
+
success: false,
|
|
6097
|
+
error: new ValidationError(`${path} must be a CID`)
|
|
6098
|
+
};
|
|
6099
|
+
}
|
|
6100
|
+
return { success: true, value };
|
|
3555
6101
|
}
|
|
3556
|
-
function unknown(lexicons, path,
|
|
6102
|
+
function unknown(lexicons, path, def2, value) {
|
|
3557
6103
|
if (!value || typeof value !== "object") {
|
|
3558
6104
|
return {
|
|
3559
6105
|
success: false,
|
|
3560
6106
|
error: new ValidationError(`${path} must be an object`)
|
|
3561
6107
|
};
|
|
3562
6108
|
}
|
|
3563
|
-
return { success: true };
|
|
6109
|
+
return { success: true, value };
|
|
3564
6110
|
}
|
|
3565
6111
|
|
|
3566
|
-
// ../lexicon/src/
|
|
3567
|
-
|
|
3568
|
-
|
|
3569
|
-
|
|
3570
|
-
|
|
3571
|
-
|
|
6112
|
+
// ../lexicon/src/blob-refs.ts
|
|
6113
|
+
var typedJsonBlobRef = mod.object({
|
|
6114
|
+
$type: mod.literal("blob"),
|
|
6115
|
+
ref: schema.cid,
|
|
6116
|
+
mimeType: mod.string(),
|
|
6117
|
+
size: mod.number()
|
|
6118
|
+
}).strict();
|
|
6119
|
+
var untypedJsonBlobRef = mod.object({
|
|
6120
|
+
cid: mod.string(),
|
|
6121
|
+
mimeType: mod.string()
|
|
6122
|
+
}).strict();
|
|
6123
|
+
var jsonBlobRef = mod.union([typedJsonBlobRef, untypedJsonBlobRef]);
|
|
6124
|
+
var BlobRef = class {
|
|
6125
|
+
constructor(ref, mimeType, size, original) {
|
|
6126
|
+
this.ref = ref;
|
|
6127
|
+
this.mimeType = mimeType;
|
|
6128
|
+
this.size = size;
|
|
6129
|
+
this.original = original ?? {
|
|
6130
|
+
$type: "blob",
|
|
6131
|
+
ref,
|
|
6132
|
+
mimeType,
|
|
6133
|
+
size
|
|
3572
6134
|
};
|
|
3573
6135
|
}
|
|
3574
|
-
|
|
6136
|
+
static asBlobRef(obj) {
|
|
6137
|
+
if (check_exports.is(obj, jsonBlobRef)) {
|
|
6138
|
+
return BlobRef.fromJsonRef(obj);
|
|
6139
|
+
}
|
|
6140
|
+
return null;
|
|
6141
|
+
}
|
|
6142
|
+
static fromJsonRef(json) {
|
|
6143
|
+
if (check_exports.is(json, typedJsonBlobRef)) {
|
|
6144
|
+
return new BlobRef(json.ref, json.mimeType, json.size);
|
|
6145
|
+
} else {
|
|
6146
|
+
return new BlobRef(CID.parse(json.cid), json.mimeType, -1, json);
|
|
6147
|
+
}
|
|
6148
|
+
}
|
|
6149
|
+
ipld() {
|
|
3575
6150
|
return {
|
|
3576
|
-
|
|
3577
|
-
|
|
6151
|
+
$type: "blob",
|
|
6152
|
+
ref: this.ref,
|
|
6153
|
+
mimeType: this.mimeType,
|
|
6154
|
+
size: this.size
|
|
3578
6155
|
};
|
|
3579
6156
|
}
|
|
3580
|
-
|
|
6157
|
+
toJSON() {
|
|
6158
|
+
return ipldToJson(this.ipld());
|
|
6159
|
+
}
|
|
6160
|
+
};
|
|
6161
|
+
|
|
6162
|
+
// ../lexicon/src/validators/blob.ts
|
|
6163
|
+
function blob(lexicons, path, def2, value) {
|
|
6164
|
+
if (!value || !(value instanceof BlobRef)) {
|
|
3581
6165
|
return {
|
|
3582
6166
|
success: false,
|
|
3583
|
-
error: new ValidationError(`${path}
|
|
6167
|
+
error: new ValidationError(`${path} should be a blob ref`)
|
|
3584
6168
|
};
|
|
3585
6169
|
}
|
|
3586
|
-
return { success: true };
|
|
3587
|
-
}
|
|
3588
|
-
function image(lexicons, path, def, value) {
|
|
3589
|
-
return blob(lexicons, path, def, value);
|
|
3590
|
-
}
|
|
3591
|
-
function video(lexicons, path, def, value) {
|
|
3592
|
-
return blob(lexicons, path, def, value);
|
|
3593
|
-
}
|
|
3594
|
-
function audio(lexicons, path, def, value) {
|
|
3595
|
-
return blob(lexicons, path, def, value);
|
|
6170
|
+
return { success: true, value };
|
|
3596
6171
|
}
|
|
3597
6172
|
|
|
3598
6173
|
// ../lexicon/src/validators/complex.ts
|
|
3599
|
-
function validate2(lexicons, path,
|
|
3600
|
-
switch (
|
|
6174
|
+
function validate2(lexicons, path, def2, value) {
|
|
6175
|
+
switch (def2.type) {
|
|
3601
6176
|
case "boolean":
|
|
3602
|
-
return boolean(lexicons, path,
|
|
3603
|
-
case "
|
|
3604
|
-
return
|
|
6177
|
+
return boolean(lexicons, path, def2, value);
|
|
6178
|
+
case "float":
|
|
6179
|
+
return float(lexicons, path, def2, value);
|
|
3605
6180
|
case "integer":
|
|
3606
|
-
return integer(lexicons, path,
|
|
6181
|
+
return integer(lexicons, path, def2, value);
|
|
3607
6182
|
case "string":
|
|
3608
|
-
return
|
|
3609
|
-
case "
|
|
3610
|
-
return
|
|
6183
|
+
return string2(lexicons, path, def2, value);
|
|
6184
|
+
case "bytes":
|
|
6185
|
+
return bytes(lexicons, path, def2, value);
|
|
6186
|
+
case "cid-link":
|
|
6187
|
+
return cidLink(lexicons, path, def2, value);
|
|
3611
6188
|
case "unknown":
|
|
3612
|
-
return unknown(lexicons, path,
|
|
6189
|
+
return unknown(lexicons, path, def2, value);
|
|
3613
6190
|
case "object":
|
|
3614
|
-
return object(lexicons, path,
|
|
6191
|
+
return object(lexicons, path, def2, value);
|
|
3615
6192
|
case "array":
|
|
3616
|
-
return array(lexicons, path,
|
|
6193
|
+
return array(lexicons, path, def2, value);
|
|
3617
6194
|
case "blob":
|
|
3618
|
-
return blob(lexicons, path,
|
|
3619
|
-
case "image":
|
|
3620
|
-
return image(lexicons, path, def, value);
|
|
3621
|
-
case "video":
|
|
3622
|
-
return video(lexicons, path, def, value);
|
|
3623
|
-
case "audio":
|
|
3624
|
-
return audio(lexicons, path, def, value);
|
|
6195
|
+
return blob(lexicons, path, def2, value);
|
|
3625
6196
|
default:
|
|
3626
6197
|
return {
|
|
3627
6198
|
success: false,
|
|
3628
|
-
error: new ValidationError(`Unexpected lexicon type: ${
|
|
6199
|
+
error: new ValidationError(`Unexpected lexicon type: ${def2.type}`)
|
|
3629
6200
|
};
|
|
3630
6201
|
}
|
|
3631
6202
|
}
|
|
3632
|
-
function array(lexicons, path,
|
|
3633
|
-
def = def;
|
|
6203
|
+
function array(lexicons, path, def2, value) {
|
|
3634
6204
|
if (!Array.isArray(value)) {
|
|
3635
6205
|
return {
|
|
3636
6206
|
success: false,
|
|
3637
6207
|
error: new ValidationError(`${path} must be an array`)
|
|
3638
6208
|
};
|
|
3639
6209
|
}
|
|
3640
|
-
if (typeof
|
|
3641
|
-
if (value.length >
|
|
6210
|
+
if (typeof def2.maxLength === "number") {
|
|
6211
|
+
if (value.length > def2.maxLength) {
|
|
3642
6212
|
return {
|
|
3643
6213
|
success: false,
|
|
3644
6214
|
error: new ValidationError(
|
|
3645
|
-
`${path} must not have more than ${
|
|
6215
|
+
`${path} must not have more than ${def2.maxLength} elements`
|
|
3646
6216
|
)
|
|
3647
6217
|
};
|
|
3648
6218
|
}
|
|
3649
6219
|
}
|
|
3650
|
-
if (typeof
|
|
3651
|
-
if (value.length <
|
|
6220
|
+
if (typeof def2.minLength === "number") {
|
|
6221
|
+
if (value.length < def2.minLength) {
|
|
3652
6222
|
return {
|
|
3653
6223
|
success: false,
|
|
3654
6224
|
error: new ValidationError(
|
|
3655
|
-
`${path} must not have fewer than ${
|
|
6225
|
+
`${path} must not have fewer than ${def2.minLength} elements`
|
|
3656
6226
|
)
|
|
3657
6227
|
};
|
|
3658
6228
|
}
|
|
3659
6229
|
}
|
|
3660
|
-
const itemsDef =
|
|
6230
|
+
const itemsDef = def2.items;
|
|
3661
6231
|
for (let i = 0; i < value.length; i++) {
|
|
3662
6232
|
const itemValue = value[i];
|
|
3663
6233
|
const itemPath = `${path}/${i}`;
|
|
@@ -3666,41 +6236,46 @@ function array(lexicons, path, def, value) {
|
|
|
3666
6236
|
return res;
|
|
3667
6237
|
}
|
|
3668
6238
|
}
|
|
3669
|
-
return { success: true };
|
|
6239
|
+
return { success: true, value };
|
|
3670
6240
|
}
|
|
3671
|
-
function object(lexicons, path,
|
|
3672
|
-
|
|
6241
|
+
function object(lexicons, path, def2, value) {
|
|
6242
|
+
def2 = def2;
|
|
3673
6243
|
if (!value || typeof value !== "object") {
|
|
3674
6244
|
return {
|
|
3675
6245
|
success: false,
|
|
3676
6246
|
error: new ValidationError(`${path} must be an object`)
|
|
3677
6247
|
};
|
|
3678
6248
|
}
|
|
3679
|
-
|
|
3680
|
-
|
|
3681
|
-
|
|
6249
|
+
const requiredProps = new Set(def2.required);
|
|
6250
|
+
const nullableProps = new Set(def2.nullable);
|
|
6251
|
+
let resultValue = value;
|
|
6252
|
+
if (typeof def2.properties === "object") {
|
|
6253
|
+
for (const key in def2.properties) {
|
|
6254
|
+
if (value[key] === null && nullableProps.has(key)) {
|
|
6255
|
+
continue;
|
|
6256
|
+
}
|
|
6257
|
+
const propDef = def2.properties[key];
|
|
6258
|
+
const propPath = `${path}/${key}`;
|
|
6259
|
+
const validated = validateOneOf(lexicons, propPath, propDef, value[key]);
|
|
6260
|
+
const propValue = validated.success ? validated.value : value[key];
|
|
6261
|
+
const propIsUndefined = typeof propValue === "undefined";
|
|
6262
|
+
if (propIsUndefined && requiredProps.has(key)) {
|
|
3682
6263
|
return {
|
|
3683
6264
|
success: false,
|
|
3684
6265
|
error: new ValidationError(`${path} must have the property "${key}"`)
|
|
3685
6266
|
};
|
|
6267
|
+
} else if (!propIsUndefined && !validated.success) {
|
|
6268
|
+
return validated;
|
|
3686
6269
|
}
|
|
3687
|
-
|
|
3688
|
-
|
|
3689
|
-
|
|
3690
|
-
|
|
3691
|
-
|
|
3692
|
-
if (typeof propValue === "undefined") {
|
|
3693
|
-
continue;
|
|
3694
|
-
}
|
|
3695
|
-
const propDef = def.properties[key];
|
|
3696
|
-
const propPath = `${path}/${key}`;
|
|
3697
|
-
const res = validateOneOf(lexicons, propPath, propDef, propValue);
|
|
3698
|
-
if (!res.success) {
|
|
3699
|
-
return res;
|
|
6270
|
+
if (propValue !== value[key]) {
|
|
6271
|
+
if (resultValue === value) {
|
|
6272
|
+
resultValue = { ...value };
|
|
6273
|
+
}
|
|
6274
|
+
resultValue[key] = propValue;
|
|
3700
6275
|
}
|
|
3701
6276
|
}
|
|
3702
6277
|
}
|
|
3703
|
-
return { success: true };
|
|
6278
|
+
return { success: true, value: resultValue };
|
|
3704
6279
|
}
|
|
3705
6280
|
|
|
3706
6281
|
// ../lexicon/src/util.ts
|
|
@@ -3716,10 +6291,10 @@ function toLexUri(str, baseUri) {
|
|
|
3716
6291
|
}
|
|
3717
6292
|
return `lex:${str}`;
|
|
3718
6293
|
}
|
|
3719
|
-
function validateOneOf(lexicons, path,
|
|
6294
|
+
function validateOneOf(lexicons, path, def2, value, mustBeObj = false) {
|
|
3720
6295
|
let error;
|
|
3721
6296
|
let concreteDefs;
|
|
3722
|
-
if (
|
|
6297
|
+
if (def2.type === "union") {
|
|
3723
6298
|
if (!isDiscriminatedObject(value)) {
|
|
3724
6299
|
return {
|
|
3725
6300
|
success: false,
|
|
@@ -3728,16 +6303,16 @@ function validateOneOf(lexicons, path, def, value, mustBeObj = false) {
|
|
|
3728
6303
|
)
|
|
3729
6304
|
};
|
|
3730
6305
|
}
|
|
3731
|
-
if (!
|
|
3732
|
-
if (
|
|
6306
|
+
if (!def2.refs.includes(toLexUri(value.$type))) {
|
|
6307
|
+
if (def2.closed) {
|
|
3733
6308
|
return {
|
|
3734
6309
|
success: false,
|
|
3735
6310
|
error: new ValidationError(
|
|
3736
|
-
`${path} $type must be one of ${
|
|
6311
|
+
`${path} $type must be one of ${def2.refs.join(", ")}`
|
|
3737
6312
|
)
|
|
3738
6313
|
};
|
|
3739
6314
|
}
|
|
3740
|
-
return { success: true };
|
|
6315
|
+
return { success: true, value };
|
|
3741
6316
|
} else {
|
|
3742
6317
|
concreteDefs = toConcreteTypes(lexicons, {
|
|
3743
6318
|
type: "ref",
|
|
@@ -3745,7 +6320,7 @@ function validateOneOf(lexicons, path, def, value, mustBeObj = false) {
|
|
|
3745
6320
|
});
|
|
3746
6321
|
}
|
|
3747
6322
|
} else {
|
|
3748
|
-
concreteDefs = toConcreteTypes(lexicons,
|
|
6323
|
+
concreteDefs = toConcreteTypes(lexicons, def2);
|
|
3749
6324
|
}
|
|
3750
6325
|
for (const concreteDef of concreteDefs) {
|
|
3751
6326
|
const result = mustBeObj ? object(lexicons, path, concreteDef, value) : validate2(lexicons, path, concreteDef, value);
|
|
@@ -3764,77 +6339,86 @@ function validateOneOf(lexicons, path, def, value, mustBeObj = false) {
|
|
|
3764
6339
|
}
|
|
3765
6340
|
return { success: false, error };
|
|
3766
6341
|
}
|
|
3767
|
-
function assertValidOneOf(lexicons, path,
|
|
3768
|
-
const res = validateOneOf(lexicons, path,
|
|
3769
|
-
if (!res.success)
|
|
6342
|
+
function assertValidOneOf(lexicons, path, def2, value, mustBeObj = false) {
|
|
6343
|
+
const res = validateOneOf(lexicons, path, def2, value, mustBeObj);
|
|
6344
|
+
if (!res.success)
|
|
3770
6345
|
throw res.error;
|
|
3771
|
-
|
|
6346
|
+
return res.value;
|
|
3772
6347
|
}
|
|
3773
|
-
function toConcreteTypes(lexicons,
|
|
3774
|
-
if (
|
|
3775
|
-
return [lexicons.getDefOrThrow(
|
|
3776
|
-
} else if (
|
|
3777
|
-
return
|
|
6348
|
+
function toConcreteTypes(lexicons, def2) {
|
|
6349
|
+
if (def2.type === "ref") {
|
|
6350
|
+
return [lexicons.getDefOrThrow(def2.ref)];
|
|
6351
|
+
} else if (def2.type === "union") {
|
|
6352
|
+
return def2.refs.map((ref) => lexicons.getDefOrThrow(ref)).flat();
|
|
3778
6353
|
} else {
|
|
3779
|
-
return [
|
|
6354
|
+
return [def2];
|
|
3780
6355
|
}
|
|
3781
6356
|
}
|
|
3782
6357
|
|
|
3783
6358
|
// ../lexicon/src/validators/xrpc.ts
|
|
3784
|
-
function params(lexicons, path,
|
|
3785
|
-
|
|
3786
|
-
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
|
|
3790
|
-
|
|
3791
|
-
|
|
6359
|
+
function params(lexicons, path, def2, val) {
|
|
6360
|
+
const value = val && typeof val === "object" ? val : {};
|
|
6361
|
+
const requiredProps = new Set(def2.required ?? []);
|
|
6362
|
+
let resultValue = value;
|
|
6363
|
+
if (typeof def2.properties === "object") {
|
|
6364
|
+
for (const key in def2.properties) {
|
|
6365
|
+
const propDef = def2.properties[key];
|
|
6366
|
+
const validated = propDef.type === "array" ? array(lexicons, key, propDef, value[key]) : validate(lexicons, key, propDef, value[key]);
|
|
6367
|
+
const propValue = validated.success ? validated.value : value[key];
|
|
6368
|
+
const propIsUndefined = typeof propValue === "undefined";
|
|
6369
|
+
if (propIsUndefined && requiredProps.has(key)) {
|
|
3792
6370
|
return {
|
|
3793
6371
|
success: false,
|
|
3794
6372
|
error: new ValidationError(`${path} must have the property "${key}"`)
|
|
3795
6373
|
};
|
|
6374
|
+
} else if (!propIsUndefined && !validated.success) {
|
|
6375
|
+
return validated;
|
|
6376
|
+
}
|
|
6377
|
+
if (propValue !== value[key]) {
|
|
6378
|
+
if (resultValue === value) {
|
|
6379
|
+
resultValue = { ...value };
|
|
6380
|
+
}
|
|
6381
|
+
resultValue[key] = propValue;
|
|
3796
6382
|
}
|
|
3797
6383
|
}
|
|
3798
6384
|
}
|
|
3799
|
-
|
|
3800
|
-
if (typeof value[key] === "undefined") {
|
|
3801
|
-
continue;
|
|
3802
|
-
}
|
|
3803
|
-
const paramDef = def.properties[key];
|
|
3804
|
-
const res = validate(
|
|
3805
|
-
lexicons,
|
|
3806
|
-
key,
|
|
3807
|
-
paramDef,
|
|
3808
|
-
value[key]
|
|
3809
|
-
);
|
|
3810
|
-
if (!res.success) {
|
|
3811
|
-
return res;
|
|
3812
|
-
}
|
|
3813
|
-
}
|
|
3814
|
-
return { success: true };
|
|
6385
|
+
return { success: true, value: resultValue };
|
|
3815
6386
|
}
|
|
3816
6387
|
|
|
3817
6388
|
// ../lexicon/src/validation.ts
|
|
3818
|
-
function assertValidRecord(lexicons,
|
|
3819
|
-
const res = object(lexicons, "Record",
|
|
6389
|
+
function assertValidRecord(lexicons, def2, value) {
|
|
6390
|
+
const res = object(lexicons, "Record", def2.record, value);
|
|
3820
6391
|
if (!res.success)
|
|
3821
6392
|
throw res.error;
|
|
6393
|
+
return res.value;
|
|
3822
6394
|
}
|
|
3823
|
-
function assertValidXrpcParams(lexicons,
|
|
3824
|
-
if (
|
|
3825
|
-
const res = params(lexicons, "Params",
|
|
6395
|
+
function assertValidXrpcParams(lexicons, def2, value) {
|
|
6396
|
+
if (def2.parameters) {
|
|
6397
|
+
const res = params(lexicons, "Params", def2.parameters, value);
|
|
3826
6398
|
if (!res.success)
|
|
3827
6399
|
throw res.error;
|
|
6400
|
+
return res.value;
|
|
6401
|
+
}
|
|
6402
|
+
}
|
|
6403
|
+
function assertValidXrpcInput(lexicons, def2, value) {
|
|
6404
|
+
if (def2.input?.schema) {
|
|
6405
|
+
return assertValidOneOf(lexicons, "Input", def2.input.schema, value, true);
|
|
3828
6406
|
}
|
|
3829
6407
|
}
|
|
3830
|
-
function
|
|
3831
|
-
if (
|
|
3832
|
-
assertValidOneOf(lexicons, "
|
|
6408
|
+
function assertValidXrpcOutput(lexicons, def2, value) {
|
|
6409
|
+
if (def2.output?.schema) {
|
|
6410
|
+
return assertValidOneOf(lexicons, "Output", def2.output.schema, value, true);
|
|
3833
6411
|
}
|
|
3834
6412
|
}
|
|
3835
|
-
function
|
|
3836
|
-
if (
|
|
3837
|
-
assertValidOneOf(
|
|
6413
|
+
function assertValidXrpcMessage(lexicons, def2, value) {
|
|
6414
|
+
if (def2.message?.schema) {
|
|
6415
|
+
return assertValidOneOf(
|
|
6416
|
+
lexicons,
|
|
6417
|
+
"Message",
|
|
6418
|
+
def2.message.schema,
|
|
6419
|
+
value,
|
|
6420
|
+
true
|
|
6421
|
+
);
|
|
3838
6422
|
}
|
|
3839
6423
|
}
|
|
3840
6424
|
|
|
@@ -3864,64 +6448,64 @@ var Lexicons = class {
|
|
|
3864
6448
|
}
|
|
3865
6449
|
}
|
|
3866
6450
|
const validatedDoc = doc;
|
|
3867
|
-
const
|
|
3868
|
-
if (this.docs.has(
|
|
3869
|
-
throw new Error(`${
|
|
6451
|
+
const uri2 = toLexUri(validatedDoc.id);
|
|
6452
|
+
if (this.docs.has(uri2)) {
|
|
6453
|
+
throw new Error(`${uri2} has already been registered`);
|
|
3870
6454
|
}
|
|
3871
|
-
resolveRefUris(validatedDoc,
|
|
3872
|
-
this.docs.set(
|
|
3873
|
-
for (const [defUri,
|
|
3874
|
-
this.defs.set(defUri,
|
|
6455
|
+
resolveRefUris(validatedDoc, uri2);
|
|
6456
|
+
this.docs.set(uri2, validatedDoc);
|
|
6457
|
+
for (const [defUri, def2] of iterDefs(validatedDoc)) {
|
|
6458
|
+
this.defs.set(defUri, def2);
|
|
3875
6459
|
}
|
|
3876
6460
|
}
|
|
3877
|
-
remove(
|
|
3878
|
-
|
|
3879
|
-
const doc = this.docs.get(
|
|
6461
|
+
remove(uri2) {
|
|
6462
|
+
uri2 = toLexUri(uri2);
|
|
6463
|
+
const doc = this.docs.get(uri2);
|
|
3880
6464
|
if (!doc) {
|
|
3881
|
-
throw new Error(`Unable to remove "${
|
|
6465
|
+
throw new Error(`Unable to remove "${uri2}": does not exist`);
|
|
3882
6466
|
}
|
|
3883
6467
|
for (const [defUri, _def] of iterDefs(doc)) {
|
|
3884
6468
|
this.defs.delete(defUri);
|
|
3885
6469
|
}
|
|
3886
|
-
this.docs.delete(
|
|
6470
|
+
this.docs.delete(uri2);
|
|
3887
6471
|
}
|
|
3888
|
-
get(
|
|
3889
|
-
|
|
3890
|
-
return this.docs.get(
|
|
6472
|
+
get(uri2) {
|
|
6473
|
+
uri2 = toLexUri(uri2);
|
|
6474
|
+
return this.docs.get(uri2);
|
|
3891
6475
|
}
|
|
3892
|
-
getDef(
|
|
3893
|
-
|
|
3894
|
-
return this.defs.get(
|
|
6476
|
+
getDef(uri2) {
|
|
6477
|
+
uri2 = toLexUri(uri2);
|
|
6478
|
+
return this.defs.get(uri2);
|
|
3895
6479
|
}
|
|
3896
|
-
getDefOrThrow(
|
|
3897
|
-
const
|
|
3898
|
-
if (!
|
|
3899
|
-
throw new LexiconDefNotFoundError(`Lexicon not found: ${
|
|
6480
|
+
getDefOrThrow(uri2, types) {
|
|
6481
|
+
const def2 = this.getDef(uri2);
|
|
6482
|
+
if (!def2) {
|
|
6483
|
+
throw new LexiconDefNotFoundError(`Lexicon not found: ${uri2}`);
|
|
3900
6484
|
}
|
|
3901
|
-
if (types && !types.includes(
|
|
6485
|
+
if (types && !types.includes(def2.type)) {
|
|
3902
6486
|
throw new InvalidLexiconError(
|
|
3903
|
-
`Not a ${types.join(" or ")} lexicon: ${
|
|
6487
|
+
`Not a ${types.join(" or ")} lexicon: ${uri2}`
|
|
3904
6488
|
);
|
|
3905
6489
|
}
|
|
3906
|
-
return
|
|
6490
|
+
return def2;
|
|
3907
6491
|
}
|
|
3908
6492
|
validate(lexUri, value) {
|
|
3909
6493
|
lexUri = toLexUri(lexUri);
|
|
3910
|
-
const
|
|
6494
|
+
const def2 = this.getDefOrThrow(lexUri, ["record", "object"]);
|
|
3911
6495
|
if (!isObj(value)) {
|
|
3912
6496
|
throw new ValidationError(`Value must be an object`);
|
|
3913
6497
|
}
|
|
3914
|
-
if (
|
|
3915
|
-
return object(this, "Record",
|
|
3916
|
-
} else if (
|
|
3917
|
-
return object(this, "Object",
|
|
6498
|
+
if (def2.type === "record") {
|
|
6499
|
+
return object(this, "Record", def2.record, value);
|
|
6500
|
+
} else if (def2.type === "object") {
|
|
6501
|
+
return object(this, "Object", def2, value);
|
|
3918
6502
|
} else {
|
|
3919
6503
|
throw new InvalidLexiconError("Definition must be a record or object");
|
|
3920
6504
|
}
|
|
3921
6505
|
}
|
|
3922
6506
|
assertValidRecord(lexUri, value) {
|
|
3923
6507
|
lexUri = toLexUri(lexUri);
|
|
3924
|
-
const
|
|
6508
|
+
const def2 = this.getDefOrThrow(lexUri, ["record"]);
|
|
3925
6509
|
if (!isObj(value)) {
|
|
3926
6510
|
throw new ValidationError(`Record must be an object`);
|
|
3927
6511
|
}
|
|
@@ -3934,22 +6518,43 @@ var Lexicons = class {
|
|
|
3934
6518
|
`Invalid $type: must be ${lexUri}, got ${$type}`
|
|
3935
6519
|
);
|
|
3936
6520
|
}
|
|
3937
|
-
assertValidRecord(this,
|
|
6521
|
+
return assertValidRecord(this, def2, value);
|
|
3938
6522
|
}
|
|
3939
6523
|
assertValidXrpcParams(lexUri, value) {
|
|
3940
6524
|
lexUri = toLexUri(lexUri);
|
|
3941
|
-
const
|
|
3942
|
-
|
|
6525
|
+
const def2 = this.getDefOrThrow(lexUri, [
|
|
6526
|
+
"query",
|
|
6527
|
+
"procedure",
|
|
6528
|
+
"subscription"
|
|
6529
|
+
]);
|
|
6530
|
+
return assertValidXrpcParams(
|
|
6531
|
+
this,
|
|
6532
|
+
def2,
|
|
6533
|
+
value
|
|
6534
|
+
);
|
|
3943
6535
|
}
|
|
3944
6536
|
assertValidXrpcInput(lexUri, value) {
|
|
3945
6537
|
lexUri = toLexUri(lexUri);
|
|
3946
|
-
const
|
|
3947
|
-
assertValidXrpcInput(this,
|
|
6538
|
+
const def2 = this.getDefOrThrow(lexUri, ["procedure"]);
|
|
6539
|
+
return assertValidXrpcInput(this, def2, value);
|
|
3948
6540
|
}
|
|
3949
6541
|
assertValidXrpcOutput(lexUri, value) {
|
|
3950
6542
|
lexUri = toLexUri(lexUri);
|
|
3951
|
-
const
|
|
3952
|
-
assertValidXrpcOutput(
|
|
6543
|
+
const def2 = this.getDefOrThrow(lexUri, ["query", "procedure"]);
|
|
6544
|
+
return assertValidXrpcOutput(
|
|
6545
|
+
this,
|
|
6546
|
+
def2,
|
|
6547
|
+
value
|
|
6548
|
+
);
|
|
6549
|
+
}
|
|
6550
|
+
assertValidXrpcMessage(lexUri, value) {
|
|
6551
|
+
lexUri = toLexUri(lexUri);
|
|
6552
|
+
const def2 = this.getDefOrThrow(lexUri, ["subscription"]);
|
|
6553
|
+
return assertValidXrpcMessage(this, def2, value);
|
|
6554
|
+
}
|
|
6555
|
+
resolveLexUri(lexUri, ref) {
|
|
6556
|
+
lexUri = toLexUri(lexUri);
|
|
6557
|
+
return toLexUri(ref, lexUri);
|
|
3953
6558
|
}
|
|
3954
6559
|
};
|
|
3955
6560
|
function* iterDefs(doc) {
|
|
@@ -3982,34 +6587,96 @@ function resolveRefUris(obj, baseUri) {
|
|
|
3982
6587
|
return obj;
|
|
3983
6588
|
}
|
|
3984
6589
|
|
|
6590
|
+
// ../lexicon/src/serialize.ts
|
|
6591
|
+
var lexToIpld = (val) => {
|
|
6592
|
+
if (Array.isArray(val)) {
|
|
6593
|
+
return val.map((item) => lexToIpld(item));
|
|
6594
|
+
}
|
|
6595
|
+
if (val && typeof val === "object") {
|
|
6596
|
+
if (val instanceof BlobRef) {
|
|
6597
|
+
return val.original;
|
|
6598
|
+
}
|
|
6599
|
+
if (CID.asCID(val) || val instanceof Uint8Array) {
|
|
6600
|
+
return val;
|
|
6601
|
+
}
|
|
6602
|
+
const toReturn = {};
|
|
6603
|
+
for (const key of Object.keys(val)) {
|
|
6604
|
+
toReturn[key] = lexToIpld(val[key]);
|
|
6605
|
+
}
|
|
6606
|
+
return toReturn;
|
|
6607
|
+
}
|
|
6608
|
+
return val;
|
|
6609
|
+
};
|
|
6610
|
+
var ipldToLex = (val) => {
|
|
6611
|
+
if (Array.isArray(val)) {
|
|
6612
|
+
return val.map((item) => ipldToLex(item));
|
|
6613
|
+
}
|
|
6614
|
+
if (val && typeof val === "object") {
|
|
6615
|
+
if ((val["$type"] === "blob" || typeof val["cid"] === "string" && typeof val["mimeType"] === "string") && check_exports.is(val, jsonBlobRef)) {
|
|
6616
|
+
return BlobRef.fromJsonRef(val);
|
|
6617
|
+
}
|
|
6618
|
+
if (CID.asCID(val) || val instanceof Uint8Array) {
|
|
6619
|
+
return val;
|
|
6620
|
+
}
|
|
6621
|
+
const toReturn = {};
|
|
6622
|
+
for (const key of Object.keys(val)) {
|
|
6623
|
+
toReturn[key] = ipldToLex(val[key]);
|
|
6624
|
+
}
|
|
6625
|
+
return toReturn;
|
|
6626
|
+
}
|
|
6627
|
+
return val;
|
|
6628
|
+
};
|
|
6629
|
+
var lexToJson = (val) => {
|
|
6630
|
+
return ipldToJson(lexToIpld(val));
|
|
6631
|
+
};
|
|
6632
|
+
var stringifyLex = (val) => {
|
|
6633
|
+
return JSON.stringify(lexToJson(val));
|
|
6634
|
+
};
|
|
6635
|
+
var jsonToLex = (val) => {
|
|
6636
|
+
return ipldToLex(jsonToIpld(val));
|
|
6637
|
+
};
|
|
6638
|
+
var jsonStringToLex = (val) => {
|
|
6639
|
+
return jsonToLex(JSON.parse(val));
|
|
6640
|
+
};
|
|
6641
|
+
|
|
3985
6642
|
// src/util.ts
|
|
3986
|
-
function getMethodSchemaHTTPMethod(
|
|
3987
|
-
if (
|
|
6643
|
+
function getMethodSchemaHTTPMethod(schema2) {
|
|
6644
|
+
if (schema2.type === "procedure") {
|
|
3988
6645
|
return "post";
|
|
3989
6646
|
}
|
|
3990
6647
|
return "get";
|
|
3991
6648
|
}
|
|
3992
|
-
function constructMethodCallUri(
|
|
3993
|
-
const
|
|
3994
|
-
|
|
6649
|
+
function constructMethodCallUri(nsid2, schema2, serviceUri, params2) {
|
|
6650
|
+
const uri2 = new URL(serviceUri);
|
|
6651
|
+
uri2.pathname = `/xrpc/${nsid2}`;
|
|
3995
6652
|
if (params2) {
|
|
3996
6653
|
for (const [key, value] of Object.entries(params2)) {
|
|
3997
|
-
const paramSchema =
|
|
6654
|
+
const paramSchema = schema2.parameters?.properties?.[key];
|
|
3998
6655
|
if (!paramSchema) {
|
|
3999
6656
|
throw new Error(`Invalid query parameter: ${key}`);
|
|
4000
6657
|
}
|
|
4001
6658
|
if (value !== void 0) {
|
|
4002
|
-
|
|
6659
|
+
if (paramSchema.type === "array") {
|
|
6660
|
+
const vals = [];
|
|
6661
|
+
vals.concat(value).forEach((val) => {
|
|
6662
|
+
uri2.searchParams.append(
|
|
6663
|
+
key,
|
|
6664
|
+
encodeQueryParam(paramSchema.items.type, val)
|
|
6665
|
+
);
|
|
6666
|
+
});
|
|
6667
|
+
} else {
|
|
6668
|
+
uri2.searchParams.set(key, encodeQueryParam(paramSchema.type, value));
|
|
6669
|
+
}
|
|
4003
6670
|
}
|
|
4004
6671
|
}
|
|
4005
6672
|
}
|
|
4006
|
-
return
|
|
6673
|
+
return uri2.toString();
|
|
4007
6674
|
}
|
|
4008
6675
|
function encodeQueryParam(type, value) {
|
|
4009
6676
|
if (type === "string" || type === "unknown") {
|
|
4010
6677
|
return String(value);
|
|
4011
6678
|
}
|
|
4012
|
-
if (type === "
|
|
6679
|
+
if (type === "float") {
|
|
4013
6680
|
return String(Number(value));
|
|
4014
6681
|
} else if (type === "integer") {
|
|
4015
6682
|
return String(Number(value) | 0);
|
|
@@ -4023,9 +6690,9 @@ function encodeQueryParam(type, value) {
|
|
|
4023
6690
|
}
|
|
4024
6691
|
throw new Error(`Unsupported query param type: ${type}`);
|
|
4025
6692
|
}
|
|
4026
|
-
function constructMethodCallHeaders(
|
|
6693
|
+
function constructMethodCallHeaders(schema2, data, opts) {
|
|
4027
6694
|
const headers = opts?.headers || {};
|
|
4028
|
-
if (
|
|
6695
|
+
if (schema2.type === "procedure") {
|
|
4029
6696
|
if (opts?.encoding) {
|
|
4030
6697
|
headers["Content-Type"] = opts.encoding;
|
|
4031
6698
|
}
|
|
@@ -4048,7 +6715,7 @@ function encodeMethodCallBody(headers, data) {
|
|
|
4048
6715
|
return new TextEncoder().encode(data.toString());
|
|
4049
6716
|
}
|
|
4050
6717
|
if (headers["Content-Type"].startsWith("application/json")) {
|
|
4051
|
-
return new TextEncoder().encode(
|
|
6718
|
+
return new TextEncoder().encode(stringifyLex(data));
|
|
4052
6719
|
}
|
|
4053
6720
|
return data;
|
|
4054
6721
|
}
|
|
@@ -4074,7 +6741,7 @@ function httpResponseBodyParse(mimeType, data) {
|
|
|
4074
6741
|
if (mimeType.includes("application/json") && data?.byteLength) {
|
|
4075
6742
|
try {
|
|
4076
6743
|
const str = new TextDecoder().decode(data);
|
|
4077
|
-
return
|
|
6744
|
+
return jsonStringToLex(str);
|
|
4078
6745
|
} catch (e) {
|
|
4079
6746
|
throw new XRPCError(
|
|
4080
6747
|
2 /* InvalidResponse */,
|
|
@@ -4093,6 +6760,9 @@ function httpResponseBodyParse(mimeType, data) {
|
|
|
4093
6760
|
}
|
|
4094
6761
|
}
|
|
4095
6762
|
}
|
|
6763
|
+
if (data instanceof ArrayBuffer) {
|
|
6764
|
+
return new Uint8Array(data);
|
|
6765
|
+
}
|
|
4096
6766
|
return data;
|
|
4097
6767
|
}
|
|
4098
6768
|
|
|
@@ -4116,8 +6786,8 @@ var Client = class {
|
|
|
4116
6786
|
this.addLexicon(doc);
|
|
4117
6787
|
}
|
|
4118
6788
|
}
|
|
4119
|
-
removeLexicon(
|
|
4120
|
-
this.lex.remove(
|
|
6789
|
+
removeLexicon(uri2) {
|
|
6790
|
+
this.lex.remove(uri2);
|
|
4121
6791
|
}
|
|
4122
6792
|
};
|
|
4123
6793
|
var ServiceClient = class {
|
|
@@ -4133,15 +6803,15 @@ var ServiceClient = class {
|
|
|
4133
6803
|
delete this.headers[key];
|
|
4134
6804
|
}
|
|
4135
6805
|
async call(methodNsid, params2, data, opts) {
|
|
4136
|
-
const
|
|
4137
|
-
if (!
|
|
6806
|
+
const def2 = this.baseClient.lex.getDefOrThrow(methodNsid);
|
|
6807
|
+
if (!def2 || def2.type !== "query" && def2.type !== "procedure") {
|
|
4138
6808
|
throw new Error(
|
|
4139
6809
|
`Invalid lexicon: ${methodNsid}. Must be a query or procedure.`
|
|
4140
6810
|
);
|
|
4141
6811
|
}
|
|
4142
|
-
const httpMethod = getMethodSchemaHTTPMethod(
|
|
4143
|
-
const httpUri = constructMethodCallUri(methodNsid,
|
|
4144
|
-
const httpHeaders = constructMethodCallHeaders(
|
|
6812
|
+
const httpMethod = getMethodSchemaHTTPMethod(def2);
|
|
6813
|
+
const httpUri = constructMethodCallUri(methodNsid, def2, this.uri, params2);
|
|
6814
|
+
const httpHeaders = constructMethodCallHeaders(def2, data, {
|
|
4145
6815
|
headers: {
|
|
4146
6816
|
...this.headers,
|
|
4147
6817
|
...opts?.headers
|
|
@@ -4177,11 +6847,13 @@ var ServiceClient = class {
|
|
|
4177
6847
|
};
|
|
4178
6848
|
async function defaultFetchHandler(httpUri, httpMethod, httpHeaders, httpReqBody) {
|
|
4179
6849
|
try {
|
|
4180
|
-
const
|
|
6850
|
+
const reqInit = {
|
|
4181
6851
|
method: httpMethod,
|
|
4182
6852
|
headers: httpHeaders,
|
|
4183
|
-
body: encodeMethodCallBody(httpHeaders, httpReqBody)
|
|
4184
|
-
|
|
6853
|
+
body: encodeMethodCallBody(httpHeaders, httpReqBody),
|
|
6854
|
+
duplex: "half"
|
|
6855
|
+
};
|
|
6856
|
+
const res = await fetch(httpUri, reqInit);
|
|
4185
6857
|
const resBody = await res.arrayBuffer();
|
|
4186
6858
|
return {
|
|
4187
6859
|
status: res.status,
|
|
@@ -4209,6 +6881,7 @@ var src_default = defaultInst;
|
|
|
4209
6881
|
XRPCError,
|
|
4210
6882
|
XRPCInvalidResponseError,
|
|
4211
6883
|
XRPCResponse,
|
|
6884
|
+
defaultFetchHandler,
|
|
4212
6885
|
errorResponseBody
|
|
4213
6886
|
});
|
|
4214
6887
|
//# sourceMappingURL=index.js.map
|