@peerbit/trusted-network 6.0.112 → 6.0.113

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.
@@ -0,0 +1,27 @@
1
+ import { NetworkDescriptorV2 } from "./v2.js";
2
+ /** Internal limits selected by a concrete TrustedNetwork v2 record profile. */
3
+ export type AuthorityEntryV0LimitsV2 = {
4
+ maximumEntryBytes: number;
5
+ maximumDirectParents: number;
6
+ exactPayloadBytes?: number;
7
+ };
8
+ export type AuthenticatedAuthorityEntryV0V2 = {
9
+ descriptor: NetworkDescriptorV2;
10
+ entryBytes: Uint8Array;
11
+ entryCid: string;
12
+ entryDigest: Uint8Array;
13
+ gid: string;
14
+ metaData?: Uint8Array;
15
+ directParents: Array<{
16
+ cid: string;
17
+ digest: Uint8Array;
18
+ }>;
19
+ payloadBytes: Uint8Array;
20
+ };
21
+ /**
22
+ * Authenticate one bounded raw EntryV0 authority envelope. This establishes
23
+ * canonical bytes, authority signature, and structural facts only. It does not
24
+ * establish policy acceptance, causal ancestry, freshness, or durability.
25
+ */
26
+ export declare const authenticateAuthorityEntryV0V2: (entryBytes: Uint8Array, descriptor: NetworkDescriptorV2, limits: AuthorityEntryV0LimitsV2) => Promise<AuthenticatedAuthorityEntryV0V2>;
27
+ //# sourceMappingURL=v2-authority-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2-authority-entry.d.ts","sourceRoot":"","sources":["../../src/v2-authority-entry.ts"],"names":[],"mappings":"AAWA,OAAO,EACN,mBAAmB,EAKnB,MAAM,SAAS,CAAC;AAEjB,+EAA+E;AAC/E,MAAM,MAAM,wBAAwB,GAAG;IACtC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC7C,UAAU,EAAE,mBAAmB,CAAC;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,UAAU,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,aAAa,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;IAC1D,YAAY,EAAE,UAAU,CAAC;CACzB,CAAC;AAwRF;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,GAC1C,YAAY,UAAU,EACtB,YAAY,mBAAmB,EAC/B,QAAQ,wBAAwB,KAC9B,OAAO,CAAC,+BAA+B,CAyGzC,CAAC"}
@@ -0,0 +1,304 @@
1
+ import { deserialize, serialize } from "@dao-xyz/borsh";
2
+ import { calculateRawCid, cidifyString, codecMap, defaultHasher, stringifyCid, } from "@peerbit/blocks-interface";
3
+ import { DecryptedThing, verify } from "@peerbit/crypto";
4
+ import { Entry, EntryType, EntryV0, NO_ENCODING } from "@peerbit/log";
5
+ import { equals } from "uint8arrays";
6
+ import { NetworkDescriptorV2, assertNetworkDescriptorV2, copyUint8ArrayV2, copyUint8ArrayWithLengthV2, exactUint8ArrayByteLengthV2, } from "./v2.js";
7
+ class BoundsReaderV2 {
8
+ bytes;
9
+ offset = 0;
10
+ view;
11
+ constructor(bytes) {
12
+ this.bytes = bytes;
13
+ this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
14
+ }
15
+ get position() {
16
+ return this.offset;
17
+ }
18
+ readU8(label) {
19
+ return this.readExact(1, label)[0];
20
+ }
21
+ readU32(label) {
22
+ this.requireRemaining(4, label);
23
+ const value = this.view.getUint32(this.offset, true);
24
+ this.offset += 4;
25
+ return value;
26
+ }
27
+ readBytes(label) {
28
+ return this.readExact(this.readU32(`${label} length`), label);
29
+ }
30
+ readExact(byteLength, label) {
31
+ this.requireRemaining(byteLength, label);
32
+ const start = this.offset;
33
+ this.offset += byteLength;
34
+ return this.bytes.subarray(start, this.offset);
35
+ }
36
+ expectU8(expected, label) {
37
+ if (this.readU8(label) !== expected) {
38
+ throw new Error(`Authority EntryV0 has invalid ${label}`);
39
+ }
40
+ }
41
+ expectDone(label) {
42
+ if (this.offset !== this.bytes.byteLength) {
43
+ throw new Error(`Authority EntryV0 has trailing ${label} bytes`);
44
+ }
45
+ }
46
+ requireRemaining(byteLength, label) {
47
+ if (!Number.isSafeInteger(byteLength) ||
48
+ byteLength < 0 ||
49
+ byteLength > this.bytes.byteLength - this.offset) {
50
+ throw new Error(`Authority EntryV0 has truncated ${label}`);
51
+ }
52
+ }
53
+ }
54
+ const readPublicWrapperV2 = (reader, label) => {
55
+ reader.expectU8(0, `${label} MaybeEncrypted variant`);
56
+ reader.expectU8(0, `${label} DecryptedThing variant`);
57
+ return reader.readBytes(label);
58
+ };
59
+ const scanMetaV2 = (metaBytes, authorityBytes, maximumDirectParents) => {
60
+ const reader = new BoundsReaderV2(metaBytes);
61
+ reader.expectU8(0, "metadata variant");
62
+ reader.expectU8(0, "clock variant");
63
+ if (!equals(reader.readBytes("clock id"), authorityBytes)) {
64
+ throw new Error("Authority EntryV0 clock id is not the policy authority");
65
+ }
66
+ reader.expectU8(0, "timestamp variant");
67
+ reader.readExact(8, "timestamp wall time");
68
+ reader.readExact(4, "timestamp logical time");
69
+ reader.readBytes("gid");
70
+ const directParentCount = reader.readU32("direct-parent count");
71
+ if (directParentCount > maximumDirectParents) {
72
+ throw new Error(`Authority EntryV0 may contain at most ${maximumDirectParents} direct parents`);
73
+ }
74
+ for (let i = 0; i < directParentCount; i++) {
75
+ reader.readBytes("direct parent");
76
+ }
77
+ if (reader.readU8("entry type") !== EntryType.APPEND) {
78
+ throw new Error("Authority EntryV0 must be an APPEND entry");
79
+ }
80
+ const metaDataOption = reader.readU8("metadata data option");
81
+ if (metaDataOption === 1) {
82
+ reader.readBytes("metadata data");
83
+ }
84
+ else if (metaDataOption !== 0) {
85
+ throw new Error("Authority EntryV0 has invalid metadata data option");
86
+ }
87
+ reader.expectDone("metadata");
88
+ };
89
+ const scanPayloadV2 = (payloadBytes, exactPayloadBytes) => {
90
+ const reader = new BoundsReaderV2(payloadBytes);
91
+ reader.expectU8(0, "payload variant");
92
+ const data = reader.readBytes("payload data");
93
+ if (exactPayloadBytes !== undefined &&
94
+ data.byteLength !== exactPayloadBytes) {
95
+ throw new Error(`Authority EntryV0 payload must contain exactly ${exactPayloadBytes} bytes`);
96
+ }
97
+ reader.expectDone("payload");
98
+ };
99
+ const SECP256K1_SIGNATURE_TEXT_BYTES = 132;
100
+ const SECP256K1_LOW_S_MAX_HEX = "7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0";
101
+ const isLowerHexByteV2 = (value) => (value >= 0x30 && value <= 0x39) || (value >= 0x61 && value <= 0x66);
102
+ const assertCanonicalSecp256k1SignatureV2 = (signature) => {
103
+ if (signature.byteLength !== SECP256K1_SIGNATURE_TEXT_BYTES ||
104
+ signature[0] !== 0x30 ||
105
+ signature[1] !== 0x78) {
106
+ throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
107
+ }
108
+ for (let i = 2; i < signature.byteLength; i++) {
109
+ if (!isLowerHexByteV2(signature[i])) {
110
+ throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
111
+ }
112
+ }
113
+ if (signature[130] !== 0x31 ||
114
+ (signature[131] !== 0x62 && signature[131] !== 0x63)) {
115
+ throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
116
+ }
117
+ for (let i = 0; i < SECP256K1_LOW_S_MAX_HEX.length; i++) {
118
+ const actual = signature[66 + i];
119
+ const maximum = SECP256K1_LOW_S_MAX_HEX.charCodeAt(i);
120
+ if (actual < maximum)
121
+ break;
122
+ if (actual > maximum) {
123
+ throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
124
+ }
125
+ }
126
+ };
127
+ const scanSignatureV2 = (signatureBytes, authorityBytes) => {
128
+ const reader = new BoundsReaderV2(signatureBytes);
129
+ reader.expectU8(0, "signature variant");
130
+ const signature = reader.readBytes("signature data");
131
+ const publicKeyVariant = reader.readU8("signature public-key variant");
132
+ const publicKeyLength = publicKeyVariant === 0 ? 32 : publicKeyVariant === 1 ? 33 : undefined;
133
+ if (publicKeyLength === undefined) {
134
+ throw new Error("Authority EntryV0 uses an unsupported signing key");
135
+ }
136
+ const publicKey = reader.readExact(publicKeyLength, "signature public key");
137
+ const serializedPublicKey = new Uint8Array(publicKeyLength + 1);
138
+ serializedPublicKey[0] = publicKeyVariant;
139
+ serializedPublicKey.set(publicKey, 1);
140
+ if (!equals(serializedPublicKey, authorityBytes)) {
141
+ throw new Error("Authority EntryV0 signer is not the policy authority");
142
+ }
143
+ if (publicKeyVariant === 1) {
144
+ assertCanonicalSecp256k1SignatureV2(signature);
145
+ }
146
+ reader.readU8("signature prehash");
147
+ reader.expectDone("signature");
148
+ };
149
+ const scanAuthorityEntryV0 = (entryBytes, authorityBytes, limits) => {
150
+ const reader = new BoundsReaderV2(entryBytes);
151
+ reader.expectU8(0, "entry variant");
152
+ const metaBytes = readPublicWrapperV2(reader, "metadata");
153
+ const payloadBytes = readPublicWrapperV2(reader, "payload");
154
+ const reserved = reader.readExact(4, "reserved bytes");
155
+ if (reserved[0] !== 0 ||
156
+ reserved[1] !== 0 ||
157
+ reserved[2] !== 0 ||
158
+ reserved[3] !== 0) {
159
+ throw new Error("Authority EntryV0 reserved bytes must be zero");
160
+ }
161
+ const signablePrefixLength = reader.position;
162
+ reader.expectU8(1, "signatures option");
163
+ reader.expectU8(0, "signatures variant");
164
+ if (reader.readU32("signature count") !== 1) {
165
+ throw new Error("Authority EntryV0 must contain exactly one signature");
166
+ }
167
+ const signatureBytes = readPublicWrapperV2(reader, "signature");
168
+ reader.expectU8(0, "hash option");
169
+ reader.expectDone("storage");
170
+ scanMetaV2(metaBytes, authorityBytes, limits.maximumDirectParents);
171
+ scanPayloadV2(payloadBytes, limits.exactPayloadBytes);
172
+ scanSignatureV2(signatureBytes, authorityBytes);
173
+ const signableBytes = new Uint8Array(signablePrefixLength + 2);
174
+ signableBytes.set(entryBytes.subarray(0, signablePrefixLength));
175
+ return { metaBytes, payloadBytes, signatureBytes, signableBytes };
176
+ };
177
+ const validateLimitsV2 = (limits) => {
178
+ if (!Number.isSafeInteger(limits.maximumEntryBytes) ||
179
+ limits.maximumEntryBytes < 1 ||
180
+ !Number.isSafeInteger(limits.maximumDirectParents) ||
181
+ limits.maximumDirectParents < 0 ||
182
+ (limits.exactPayloadBytes !== undefined &&
183
+ (!Number.isSafeInteger(limits.exactPayloadBytes) ||
184
+ limits.exactPayloadBytes < 0))) {
185
+ throw new Error("Invalid internal authority EntryV0 limits");
186
+ }
187
+ };
188
+ const canonicalDirectParentsV2 = (parents) => {
189
+ const seen = new Set();
190
+ return parents.map((cid) => {
191
+ let parsed;
192
+ try {
193
+ parsed = cidifyString(cid);
194
+ }
195
+ catch {
196
+ throw new Error("Authority EntryV0 direct parents must use canonical CIDv1/raw/sha2-256");
197
+ }
198
+ if (!cid ||
199
+ parsed.version !== 1 ||
200
+ parsed.code !== codecMap.raw.code ||
201
+ parsed.multihash.code !== defaultHasher.code ||
202
+ parsed.multihash.digest.byteLength !== 32 ||
203
+ stringifyCid(parsed) !== cid) {
204
+ throw new Error("Authority EntryV0 direct parents must use canonical CIDv1/raw/sha2-256");
205
+ }
206
+ if (seen.has(cid)) {
207
+ throw new Error("Authority EntryV0 direct parents must be unique");
208
+ }
209
+ seen.add(cid);
210
+ return {
211
+ cid,
212
+ digest: copyUint8ArrayV2(parsed.multihash.digest),
213
+ };
214
+ });
215
+ };
216
+ /**
217
+ * Authenticate one bounded raw EntryV0 authority envelope. This establishes
218
+ * canonical bytes, authority signature, and structural facts only. It does not
219
+ * establish policy acceptance, causal ancestry, freshness, or durability.
220
+ */
221
+ export const authenticateAuthorityEntryV0V2 = async (entryBytes, descriptor, limits) => {
222
+ validateLimitsV2(limits);
223
+ let byteLength;
224
+ try {
225
+ byteLength = exactUint8ArrayByteLengthV2(entryBytes);
226
+ }
227
+ catch {
228
+ throw new Error("Authority entry must use canonical EntryV0 bytes");
229
+ }
230
+ if (byteLength < 1 || byteLength > limits.maximumEntryBytes) {
231
+ throw new Error(`Authority EntryV0 must contain 1-${limits.maximumEntryBytes} bytes`);
232
+ }
233
+ const capturedEntryBytes = copyUint8ArrayWithLengthV2(entryBytes, byteLength);
234
+ assertNetworkDescriptorV2(descriptor);
235
+ const authorityBytes = serialize(descriptor.policyAuthority);
236
+ const scanned = scanAuthorityEntryV0(capturedEntryBytes, authorityBytes, limits);
237
+ const capturedDescriptor = deserialize(serialize(descriptor), NetworkDescriptorV2);
238
+ assertNetworkDescriptorV2(capturedDescriptor);
239
+ if (!equals(serialize(capturedDescriptor.policyAuthority), authorityBytes)) {
240
+ throw new Error("Network descriptor changed during capture");
241
+ }
242
+ const entry = deserialize(capturedEntryBytes, Entry);
243
+ if (!(entry instanceof EntryV0)) {
244
+ throw new Error("Authority entry must use EntryV0");
245
+ }
246
+ if (!equals(capturedEntryBytes, serialize(entry))) {
247
+ throw new Error("Authority EntryV0 storage is not canonical");
248
+ }
249
+ if (!(entry._meta instanceof DecryptedThing)) {
250
+ throw new Error("Authority EntryV0 metadata must be public");
251
+ }
252
+ if (!(entry._payload instanceof DecryptedThing)) {
253
+ throw new Error("Authority EntryV0 payload must be public");
254
+ }
255
+ if (entry._signatures === undefined ||
256
+ entry._signatures.signatures.length !== 1 ||
257
+ !(entry._signatures.signatures[0] instanceof DecryptedThing)) {
258
+ throw new Error("Authority EntryV0 must contain one public signature");
259
+ }
260
+ entry.init({ encoding: NO_ENCODING });
261
+ const meta = entry.meta;
262
+ const payload = entry.payload;
263
+ const signatures = entry.signatures;
264
+ if (!equals(scanned.metaBytes, serialize(meta)) ||
265
+ !equals(scanned.payloadBytes, serialize(payload)) ||
266
+ !equals(scanned.signatureBytes, serialize(signatures[0]))) {
267
+ throw new Error("Authority EntryV0 nested encoding is not canonical");
268
+ }
269
+ if (meta.type !== EntryType.APPEND ||
270
+ meta.next.length > limits.maximumDirectParents ||
271
+ !equals(meta.clock.id, authorityBytes)) {
272
+ throw new Error("Authority EntryV0 metadata does not match its profile");
273
+ }
274
+ if (signatures.length !== 1 ||
275
+ !equals(serialize(signatures[0].publicKey), authorityBytes)) {
276
+ throw new Error("Authority EntryV0 signer is not the policy authority");
277
+ }
278
+ if (limits.exactPayloadBytes !== undefined &&
279
+ payload.data.byteLength !== limits.exactPayloadBytes) {
280
+ throw new Error(`Authority EntryV0 payload must contain exactly ${limits.exactPayloadBytes} bytes`);
281
+ }
282
+ let signatureIsValid = false;
283
+ try {
284
+ signatureIsValid = await verify(signatures[0], scanned.signableBytes);
285
+ }
286
+ catch {
287
+ // Unsupported prehashes and malformed signatures fail closed.
288
+ }
289
+ if (!signatureIsValid) {
290
+ throw new Error("Authority EntryV0 signature is invalid");
291
+ }
292
+ const prepared = await calculateRawCid(capturedEntryBytes);
293
+ return {
294
+ descriptor: capturedDescriptor,
295
+ entryBytes: capturedEntryBytes,
296
+ entryCid: prepared.cid,
297
+ entryDigest: copyUint8ArrayV2(prepared.block.cid.multihash.digest),
298
+ gid: meta.gid,
299
+ metaData: meta.data === undefined ? undefined : copyUint8ArrayV2(meta.data),
300
+ directParents: canonicalDirectParentsV2(meta.next),
301
+ payloadBytes: copyUint8ArrayV2(payload.data),
302
+ };
303
+ };
304
+ //# sourceMappingURL=v2-authority-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2-authority-entry.js","sourceRoot":"","sources":["../../src/v2-authority-entry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { NetworkDescriptorV2, ResourceFenceV2 } from "./v2.js";
2
+ export type AuthenticatedResourceFenceEntryV2 = Readonly<{
3
+ entryBytes: Uint8Array;
4
+ entryCid: string;
5
+ digest: Uint8Array;
6
+ body: ResourceFenceV2;
7
+ gid: string;
8
+ metaData?: Uint8Array;
9
+ directParents: ReadonlyArray<Readonly<{
10
+ cid: string;
11
+ digest: Uint8Array;
12
+ }>>;
13
+ }>;
14
+ export type AuthenticateResourceFenceEntryV2Properties = Readonly<{
15
+ entryBytes: Uint8Array;
16
+ descriptor: NetworkDescriptorV2;
17
+ expectedResourceId: Uint8Array;
18
+ expectedGid: string;
19
+ }>;
20
+ /**
21
+ * Authenticate a raw resource-fence EntryV0 against immutable resource
22
+ * context. The returned token does not prove policy acceptance, causal
23
+ * ancestry, fork freedom, freshness, or durability.
24
+ */
25
+ export declare const authenticateResourceFenceEntryV2: ({ entryBytes, descriptor, expectedResourceId, expectedGid, }: AuthenticateResourceFenceEntryV2Properties) => Promise<AuthenticatedResourceFenceEntryV2>;
26
+ //# sourceMappingURL=v2-resource-fence-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2-resource-fence-entry.d.ts","sourceRoot":"","sources":["../../src/v2-resource-fence-entry.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,mBAAmB,EACnB,eAAe,EAOf,MAAM,SAAS,CAAC;AAQjB,MAAM,MAAM,iCAAiC,GAAG,QAAQ,CAAC;IACxD,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,eAAe,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC,CAAC;CAC5E,CAAC,CAAC;AAEH,MAAM,MAAM,0CAA0C,GAAG,QAAQ,CAAC;IACjE,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,mBAAmB,CAAC;IAChC,kBAAkB,EAAE,UAAU,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AA4BH;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,GAAU,8DAKpD,0CAA0C,KAAG,OAAO,CAAC,iCAAiC,CAqBxF,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { equals } from "uint8arrays";
2
+ import { authenticateAuthorityEntryV0V2, } from "./v2-authority-entry.js";
3
+ import { NetworkDescriptorV2, ResourceFenceV2, TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_DIRECT_PARENTS, TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_ENTRY_BYTES, TRUSTED_NETWORK_V2_RESOURCE_FENCE_BODY_BYTES, copyUint8ArrayWithLengthV2, decodeResourceFenceV2, exactUint8ArrayByteLengthV2, } from "./v2.js";
4
+ const RESOURCE_FENCE_AUTHORITY_LIMITS_V2 = Object.freeze({
5
+ maximumEntryBytes: TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_ENTRY_BYTES,
6
+ maximumDirectParents: TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_DIRECT_PARENTS,
7
+ exactPayloadBytes: TRUSTED_NETWORK_V2_RESOURCE_FENCE_BODY_BYTES,
8
+ });
9
+ const captureResourceIdV2 = (resourceId) => {
10
+ let byteLength;
11
+ try {
12
+ byteLength = exactUint8ArrayByteLengthV2(resourceId);
13
+ }
14
+ catch {
15
+ throw new Error("Expected resource id must contain exactly 32 bytes");
16
+ }
17
+ if (byteLength !== 32) {
18
+ throw new Error("Expected resource id must contain exactly 32 bytes");
19
+ }
20
+ return copyUint8ArrayWithLengthV2(resourceId, byteLength);
21
+ };
22
+ const toResourceFenceTokenV2 = (authenticated, body) => ({
23
+ entryBytes: authenticated.entryBytes,
24
+ entryCid: authenticated.entryCid,
25
+ digest: authenticated.entryDigest,
26
+ body,
27
+ gid: authenticated.gid,
28
+ metaData: authenticated.metaData,
29
+ directParents: authenticated.directParents,
30
+ });
31
+ /**
32
+ * Authenticate a raw resource-fence EntryV0 against immutable resource
33
+ * context. The returned token does not prove policy acceptance, causal
34
+ * ancestry, fork freedom, freshness, or durability.
35
+ */
36
+ export const authenticateResourceFenceEntryV2 = async ({ entryBytes, descriptor, expectedResourceId, expectedGid, }) => {
37
+ if (typeof expectedGid !== "string") {
38
+ throw new Error("Expected resource gid must be a string");
39
+ }
40
+ const capturedResourceId = captureResourceIdV2(expectedResourceId);
41
+ const authenticated = await authenticateAuthorityEntryV0V2(entryBytes, descriptor, RESOURCE_FENCE_AUTHORITY_LIMITS_V2);
42
+ if (authenticated.gid !== expectedGid) {
43
+ throw new Error("Resource fence belongs to another resource log");
44
+ }
45
+ const body = decodeResourceFenceV2(authenticated.payloadBytes, authenticated.descriptor);
46
+ if (!equals(body.resourceId, capturedResourceId)) {
47
+ throw new Error("Resource fence belongs to another resource");
48
+ }
49
+ return toResourceFenceTokenV2(authenticated, body);
50
+ };
51
+ //# sourceMappingURL=v2-resource-fence-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v2-resource-fence-entry.js","sourceRoot":"","sources":["../../src/v2-resource-fence-entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAEN,8BAA8B,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACN,mBAAmB,EACnB,eAAe,EACf,oDAAoD,EACpD,iDAAiD,EACjD,4CAA4C,EAC5C,0BAA0B,EAC1B,qBAAqB,EACrB,2BAA2B,GAC3B,MAAM,SAAS,CAAC;AAEjB,MAAM,kCAAkC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,iBAAiB,EAAE,iDAAiD;IACpE,oBAAoB,EAAE,oDAAoD;IAC1E,iBAAiB,EAAE,4CAA4C;CAC/D,CAAC,CAAC;AAmBH,MAAM,mBAAmB,GAAG,CAAC,UAAsB,EAAc,EAAE;IAClE,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACJ,UAAU,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,0BAA0B,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAC9B,aAA8C,EAC9C,IAAqB,EACe,EAAE,CAAC,CAAC;IACxC,UAAU,EAAE,aAAa,CAAC,UAAU;IACpC,QAAQ,EAAE,aAAa,CAAC,QAAQ;IAChC,MAAM,EAAE,aAAa,CAAC,WAAW;IACjC,IAAI;IACJ,GAAG,EAAE,aAAa,CAAC,GAAG;IACtB,QAAQ,EAAE,aAAa,CAAC,QAAQ;IAChC,aAAa,EAAE,aAAa,CAAC,aAAa;CAC1C,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,EAAE,EACtD,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,WAAW,GACiC,EAA8C,EAAE;IAC5F,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,MAAM,8BAA8B,CACzD,UAAU,EACV,UAAU,EACV,kCAAkC,CAClC,CAAC;IACF,IAAI,aAAa,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACnE,CAAC;IACD,MAAM,IAAI,GAAG,qBAAqB,CACjC,aAAa,CAAC,YAAY,EAC1B,aAAa,CAAC,UAAU,CACxB,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,sBAAsB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC,CAAC"}
package/dist/src/v2.d.ts CHANGED
@@ -23,6 +23,12 @@ export declare const TRUSTED_NETWORK_V2_ENTRY_V0_AUTHORITY_ONLY_SIGNATURE_PROFIL
23
23
  * it is part of signature profile 1 rather than a replica-local resource knob.
24
24
  */
25
25
  export declare const TRUSTED_NETWORK_V2_MAX_POLICY_ENTRY_BYTES: number;
26
+ /**
27
+ * Consensus bounds for a canonical signed resource-fence EntryV0. These are
28
+ * protocol constants, not resource-adapter configuration.
29
+ */
30
+ export declare const TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_ENTRY_BYTES: number;
31
+ export declare const TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_DIRECT_PARENTS = 64;
26
32
  export declare const TRUSTED_NETWORK_V2_NETWORK_ID_DOMAIN = "peerbit/trusted-network/v2/network-id/v1";
27
33
  export declare const TRUSTED_NETWORK_V2_POLICY_DIGEST_DOMAIN = "peerbit/trusted-network/v2/policy-body/v1";
28
34
  /** Fixed first-profile record lengths. Changing either requires a new variant. */
@@ -35,6 +41,9 @@ export declare const TrustedNetworkRole: Readonly<{
35
41
  readonly REPLICATOR: 8;
36
42
  }>;
37
43
  export declare const TRUSTED_NETWORK_V2_KNOWN_ROLE_BITS: number;
44
+ export declare const exactUint8ArrayByteLengthV2: (value: unknown) => number;
45
+ export declare const copyUint8ArrayWithLengthV2: (value: Uint8Array, byteLength: number) => Uint8Array;
46
+ export declare const copyUint8ArrayV2: (value: Uint8Array) => Uint8Array;
38
47
  export declare class NetworkDescriptorV2 {
39
48
  protocolVersion: number;
40
49
  networkNonce: Uint8Array;
@@ -1 +1 @@
1
- {"version":3,"file":"v2.d.ts","sourceRoot":"","sources":["../../src/v2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"v2.d.ts","sourceRoot":"","sources":["../../src/v2.ts"],"names":[],"mappings":"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"}
package/dist/src/v2.js CHANGED
@@ -59,6 +59,12 @@ export const TRUSTED_NETWORK_V2_ENTRY_V0_AUTHORITY_ONLY_SIGNATURE_PROFILE = 1;
59
59
  * it is part of signature profile 1 rather than a replica-local resource knob.
60
60
  */
61
61
  export const TRUSTED_NETWORK_V2_MAX_POLICY_ENTRY_BYTES = 128 * 1024;
62
+ /**
63
+ * Consensus bounds for a canonical signed resource-fence EntryV0. These are
64
+ * protocol constants, not resource-adapter configuration.
65
+ */
66
+ export const TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_ENTRY_BYTES = 8 * 1024;
67
+ export const TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_DIRECT_PARENTS = 64;
62
68
  export const TRUSTED_NETWORK_V2_NETWORK_ID_DOMAIN = "peerbit/trusted-network/v2/network-id/v1";
63
69
  export const TRUSTED_NETWORK_V2_POLICY_DIGEST_DOMAIN = "peerbit/trusted-network/v2/policy-body/v1";
64
70
  /** Fixed first-profile record lengths. Changing either requires a new variant. */
@@ -79,7 +85,7 @@ const textEncoder = new TextEncoder();
79
85
  const TYPED_ARRAY_PROTOTYPE = Object.getPrototypeOf(Uint8Array.prototype);
80
86
  const TYPED_ARRAY_BYTE_LENGTH = Object.getOwnPropertyDescriptor(TYPED_ARRAY_PROTOTYPE, "byteLength").get;
81
87
  const TYPED_ARRAY_TAG = Object.getOwnPropertyDescriptor(TYPED_ARRAY_PROTOTYPE, Symbol.toStringTag).get;
82
- const exactUint8ArrayByteLength = (value) => {
88
+ export const exactUint8ArrayByteLengthV2 = (value) => {
83
89
  if (!ArrayBuffer.isView(value) ||
84
90
  TYPED_ARRAY_TAG.call(value) !== "Uint8Array") {
85
91
  throw new TypeError("Expected a genuine Uint8Array");
@@ -90,6 +96,15 @@ const exactUint8ArrayByteLength = (value) => {
90
96
  }
91
97
  return byteLength;
92
98
  };
99
+ export const copyUint8ArrayWithLengthV2 = (value, byteLength) => {
100
+ const copy = new Uint8Array(byteLength);
101
+ Uint8Array.prototype.set.call(copy, value);
102
+ return copy;
103
+ };
104
+ export const copyUint8ArrayV2 = (value) => {
105
+ const byteLength = exactUint8ArrayByteLengthV2(value);
106
+ return copyUint8ArrayWithLengthV2(value, byteLength);
107
+ };
93
108
  const assertByte = (value, label) => {
94
109
  if (!Number.isInteger(value) || value < 0 || value > 0xff) {
95
110
  throw new Error(`${label} must be a u8`);
@@ -108,7 +123,7 @@ const assertU64 = (value, label) => {
108
123
  const assertBytes32 = (value, label) => {
109
124
  let byteLength;
110
125
  try {
111
- byteLength = exactUint8ArrayByteLength(value);
126
+ byteLength = exactUint8ArrayByteLengthV2(value);
112
127
  }
113
128
  catch {
114
129
  throw new Error(`${label} must contain exactly 32 bytes`);
@@ -607,7 +622,7 @@ export const assertOperationPolicyProofV2 = (proof, descriptor) => {
607
622
  const decodeExactCanonicalV2 = (bytes, exactLength, type) => {
608
623
  let byteLength;
609
624
  try {
610
- byteLength = exactUint8ArrayByteLength(bytes);
625
+ byteLength = exactUint8ArrayByteLengthV2(bytes);
611
626
  }
612
627
  catch {
613
628
  throw new Error(`TrustedNetwork v2 record must contain ${exactLength} bytes`);
@@ -615,8 +630,7 @@ const decodeExactCanonicalV2 = (bytes, exactLength, type) => {
615
630
  if (byteLength !== exactLength) {
616
631
  throw new Error(`TrustedNetwork v2 record must contain ${exactLength} bytes`);
617
632
  }
618
- const captured = new Uint8Array(byteLength);
619
- Uint8Array.prototype.set.call(captured, bytes);
633
+ const captured = copyUint8ArrayWithLengthV2(bytes, byteLength);
620
634
  const value = deserialize(captured, type);
621
635
  assertCanonicalEncoding(captured, value);
622
636
  return value;
@@ -1 +1 @@
1
- {"version":3,"file":"v2.js","sourceRoot":"","sources":["../../src/v2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"v2.js","sourceRoot":"","sources":["../../src/v2.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EACN,WAAW,EACX,KAAK,EACL,UAAU,EACV,MAAM,EACN,SAAS,EACT,OAAO,EACP,GAAG,GACH,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EACN,OAAO,GAGP,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEtD;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4DAA4D,GAAG,CAAC,CAAC;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,yCAAyC,GAAG,GAAG,GAAG,IAAI,CAAC;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG,CAAC,GAAG,IAAI,CAAC;AAC1E,MAAM,CAAC,MAAM,oDAAoD,GAAG,EAAE,CAAC;AAEvE,MAAM,CAAC,MAAM,oCAAoC,GAChD,0CAA0C,CAAC;AAC5C,MAAM,CAAC,MAAM,uCAAuC,GACnD,2CAA2C,CAAC;AAE7C,kFAAkF;AAClF,MAAM,CAAC,MAAM,4CAA4C,GAAG,GAAG,CAAC;AAChE,MAAM,CAAC,MAAM,+CAA+C,GAAG,GAAG,CAAC;AAEnE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,IAAI;CACP,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,kCAAkC,GAC9C,kBAAkB,CAAC,KAAK;IACxB,kBAAkB,CAAC,MAAM;IACzB,kBAAkB,CAAC,MAAM;IACzB,kBAAkB,CAAC,UAAU,CAAC;AAE/B,MAAM,WAAW,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AACvC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,MAAM,qBAAqB,GAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC1E,MAAM,uBAAuB,GAAG,MAAM,CAAC,wBAAwB,CAC9D,qBAAqB,EACrB,YAAY,CACX,CAAC,GAAI,CAAC;AACR,MAAM,eAAe,GAAG,MAAM,CAAC,wBAAwB,CACtD,qBAAqB,EACrB,MAAM,CAAC,WAAW,CACjB,CAAC,GAAI,CAAC;AAER,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,KAAc,EAAU,EAAE;IACrE,IACC,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1B,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,YAAY,EAC3C,CAAC;QACF,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAW,CAAC;IACjE,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACtB,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,KAAmB,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACzC,KAAiB,EACjB,UAAkB,EACL,EAAE;IACf,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;IACxC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAiB,EAAc,EAAE;IACjE,MAAM,UAAU,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACtD,OAAO,0BAA0B,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,KAAa,EAAQ,EAAE;IACzD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,eAAe,CAAC,CAAC;IAC1C,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,KAAa,EAAQ,EAAE;IACxD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAC;IAC3C,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,KAAa,EAAQ,EAAE;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,mBAAmB,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAC;IAC3C,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAiB,EAAE,KAAa,EAAQ,EAAE;IAChE,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACJ,UAAU,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,gCAAgC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,gCAAgC,CAAC,CAAC;IAC3D,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAiB,EAAc,EAAE;IACtD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAa,EAAc,EAAE;IAC/C,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,KAAiB,EAAE,KAAc,EAAQ,EAAE;IAC3E,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;AACF,CAAC,CAAC;IAGW,mBAAmB;4BAD/B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;2CAEd,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;wCAGtB,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;2CAGrC,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;+CAG9B,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;6CAGrC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;iDAGrB,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAdtB,+LAAA,eAAe,6BAAf,eAAe,yGAAS;YAGxB,sLAAA,YAAY,6BAAZ,YAAY,mGAAa;YAGzB,+LAAA,eAAe,6BAAf,eAAe,yGAAgB;YAG/B,2MAAA,mBAAmB,6BAAnB,mBAAmB,iHAAa;YAGhC,qMAAA,iBAAiB,6BAAjB,iBAAiB,6GAAS;YAG1B,iNAAA,qBAAqB,6BAArB,qBAAqB,qHAAS;YAjB/B,6KA6BC;;;YA7BY,uDAAmB;;QAE/B,eAAe,kEAAS;QAGxB,YAAY,8HAAa;QAGzB,eAAe,8HAAgB;QAG/B,mBAAmB,qIAAa;QAGhC,iBAAiB,uIAAS;QAG1B,qBAAqB,yIAAS;QAE9B,YAAY,UAOX;;YACA,IAAI,UAAU;gBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SAChD;;;;SA5BW,mBAAmB;IA+BnB,yBAAyB;;;;;;;iBAAzB,yBAAyB;;;mCACpC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;kCAGrB,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;YAFtC,uKAAA,OAAO,6BAAP,OAAO,yFAAS;YAGhB,oKAAA,MAAM,6BAAN,MAAM,uFAAa;;;QAHnB,OAAO,0DAAS;QAGhB,MAAM,gHAAa;QAEnB,YAAY,UAAoD;;YAC/D,IAAI,UAAU;gBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SAChD;;;SATW,yBAAyB;IAYzB,sBAAsB;;;;;;;;;;iBAAtB,sBAAsB;;;sCACjC,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;iCAG9B,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;mDAGrB,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,yBAAyB,CAAC,EAAE,CAAC;YALnD,gLAAA,UAAU,6BAAV,UAAU,+FAAgB;YAG1B,iKAAA,KAAK,6BAAL,KAAK,qFAAS;YAGd,uNAAA,uBAAuB,6BAAvB,uBAAuB,yHAA6B;;;QANpD,UAAU,6DAAgB;QAG1B,KAAK,kHAAS;QAGd,uBAAuB,+HAA6B;QAEpD,YAAY,UAIX;;YACA,IAAI,UAAU;gBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SAChD;;;SAhBW,sBAAsB;IAoBtB,oBAAoB;4BADhC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;qCAEd,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;oCAGrC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;gDAGtB,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;oCAGrC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAR7C,6KAAA,SAAS,6BAAT,SAAS,6FAAa;YAGtB,0KAAA,QAAQ,6BAAR,QAAQ,2FAAS;YAGjB,8MAAA,oBAAoB,6BAApB,oBAAoB,mHAAa;YAGjC,0KAAA,QAAQ,6BAAR,QAAQ,2FAA2B;YAXpC,6KAqBC;;;YArBY,uDAAoB;;QAEhC,SAAS,4DAAa;QAGtB,QAAQ,oHAAS;QAGjB,oBAAoB,+HAAa;QAGjC,QAAQ,+HAA2B;QAEnC,YAAY,UAKX;;YACA,IAAI,UAAU;gBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SAChD;;;;SApBW,oBAAoB;AAuBjC,+EAA+E;IAElE,eAAe;4BAD3B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAEd,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;sCAGrC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;yCAGrC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;+CAGtB,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;0CAGrC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;wCAGtB,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;wCAGrC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;+CAGtB,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;YApBtC,6KAAA,SAAS,6BAAT,SAAS,6FAAa;YAGtB,gLAAA,UAAU,6BAAV,UAAU,+FAAa;YAGvB,yLAAA,aAAa,6BAAb,aAAa,qGAAS;YAGtB,2MAAA,mBAAmB,6BAAnB,mBAAmB,iHAAa;YAGhC,4LAAA,cAAc,6BAAd,cAAc,uGAAS;YAGvB,sLAAA,YAAY,6BAAZ,YAAY,mGAAa;YAGzB,sLAAA,YAAY,6BAAZ,YAAY,mGAAS;YAGrB,2MAAA,mBAAmB,6BAAnB,mBAAmB,iHAAa;YAvBjC,6KAqCC;;;YArCY,uDAAe;;QAE3B,SAAS,4DAAa;QAGtB,UAAU,sHAAa;QAGvB,aAAa,0HAAS;QAGtB,mBAAmB,mIAAa;QAGhC,cAAc,oIAAS;QAGvB,YAAY,6HAAa;QAGzB,YAAY,2HAAS;QAGrB,mBAAmB,kIAAa;QAEhC,YAAY,UASX;;YACA,IAAI,UAAU;gBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SAChD;;;;SApCW,eAAe;AAuC5B,gFAAgF;IAEnE,sBAAsB;4BADlC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;qCAEd,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;sCAGrC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;0CAGrC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;wCAGtB,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;uCAGrC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;wCAGrC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAdvB,6KAAA,SAAS,6BAAT,SAAS,6FAAa;YAGtB,gLAAA,UAAU,6BAAV,UAAU,+FAAa;YAGvB,4LAAA,cAAc,6BAAd,cAAc,uGAAS;YAGvB,sLAAA,YAAY,6BAAZ,YAAY,mGAAa;YAGzB,mLAAA,WAAW,6BAAX,WAAW,iGAAa;YAGxB,sLAAA,YAAY,6BAAZ,YAAY,mGAAS;YAjBtB,6KA6BC;;;YA7BY,uDAAsB;;QAElC,SAAS,4DAAa;QAGtB,UAAU,sHAAa;QAGvB,cAAc,2HAAS;QAGvB,YAAY,6HAAa;QAGzB,WAAW,0HAAa;QAGxB,YAAY,0HAAS;QAErB,YAAY,UAOX;;YACA,IAAI,UAAU;gBAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SAChD;;;;SA5BW,sBAAsB;IAgCtB,gBAAgB;4BAD5B,OAAO,CAAC,oBAAoB,CAAC;;;;sBACQ,OAAO;;;;gCAAf,SAAQ,WAAc;;;;sCAClD,KAAK,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;YACrC,gLAAA,UAAU,6BAAV,UAAU,+FAAsB;YAFjC,6KAuBC;;;YAvBY,uDAAgB;;QAE5B,UAAU,6DAAsB;QAEhC,YAAY,UAAgD;YAC3D,KAAK,EAAE,CAAC;;YACR,IAAI,UAAU;gBAAE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;SACxD;QAEQ,KAAK,CAAC,UAAU,CACxB,KAAoB,EACpB,QAAoD;YAEpD,MAAM,IAAI,KAAK,CACd,kEAAkE,CAClE,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,KAAa;YACvB,MAAM,IAAI,KAAK,CACd,kEAAkE,CAClE,CAAC;QACH,CAAC;;;;SAtBW,gBAAgB;AAyB7B,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACxC,UAA+B,EACxB,EAAE;IACT,SAAS,CAAC,UAAU,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IACzD,IAAI,UAAU,CAAC,eAAe,KAAK,mCAAmC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IACD,aAAa,CAAC,UAAU,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,UAAU,CAAC,eAAe,YAAY,aAAa,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACjE,CAAC;IACD,aAAa,CAAC,UAAU,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;IACrE,UAAU,CAAC,UAAU,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IAC9D,IAAI,UAAU,CAAC,iBAAiB,KAAK,qCAAqC,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACnE,CAAC;IACD,UAAU,CAAC,UAAU,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;IACtE,IACC,UAAU,CAAC,qBAAqB;QAChC,4DAA4D,EAC3D,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACvE,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,UAA+B,EAClB,EAAE;IACf,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACtC,OAAO,UAAU,CAChB,MAAM,CAAC;QACN,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;QACtE,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC;QACrC,UAAU,CAAC,YAAY;QACvB,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;KACnD,CAAC,CACF,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACzC,IAA0B,EACb,EAAE;IACf,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,UAAU,CAChB,MAAM,CAAC;QACN,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC;QACzE,YAAY,CAAC,KAAK,CAAC;KACnB,CAAC,CACF,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACzC,IAA0B,EAC1B,UAA+B,EACxB,EAAE;IACT,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACtC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC/D,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACrC,aAAa,CAAC,IAAI,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACrE,CAAC;IACF,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,WAAW,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,gBAAwC,CAAC;IAC7C,IAAI,gBAAoD,CAAC;IACzD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,YAAY,aAAa,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAChE,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC/C,IACC,gBAAgB,KAAK,SAAS;YAC9B,OAAO,CAAC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,EACvC,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC9D,CAAC;QACD,gBAAgB,GAAG,QAAQ,CAAC;QAE5B,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,kCAAkC,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,OAAO,CAAC,uBAAuB,KAAK,SAAS,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CACd,gEAAgE,CAChE,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAC3D,gBAAgB,GAAG,OAAO,CAAC;QAC5B,CAAC;aAAM,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC7D,CAAC;IACF,CAAC;IACD,IACC,gBAAgB,KAAK,SAAS;QAC9B,CAAC,gBAAgB,CAAC,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,EACxD,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACrD,CAAC;IACD,IACC,IAAI,CAAC,QAAQ,KAAK,EAAE;QACpB,CAAC,MAAM,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,mBAAmB,CAAC,EACxE,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACxE,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAiB,EAAoB,EAAE;IAC7E,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACrD,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxC,yBAAyB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACzC,KAAiB,EACjB,UAA+B,EACR,EAAE;IACzB,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;IACtD,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,0BAA0B,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACpC,KAAsB,EACtB,UAA+B,EACxB,EAAE;IACT,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACtC,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC9D,CAAC;IACD,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC9C,SAAS,CAAC,KAAK,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IAChD,aAAa,CAAC,KAAK,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,aAAa,KAAK,EAAE,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACd,0DAA0D,CAC1D,CAAC;QACH,CAAC;IACF,CAAC;SAAM,IAAI,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC3E,CAAC;IACD,SAAS,CAAC,KAAK,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAClD,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAClD,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAC9C,aAAa,CAAC,KAAK,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC3C,KAA6B,EAC7B,UAA+B,EACxB,EAAE;IACT,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACtC,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACtE,CAAC;IACD,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC9C,SAAS,CAAC,KAAK,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAClD,aAAa,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAClD,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAChD,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAC9B,KAAiB,EACjB,WAAmB,EACnB,IAAiB,EACb,EAAE;IACN,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACJ,UAAU,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CACd,yCAAyC,WAAW,QAAQ,CAC5D,CAAC;IACH,CAAC;IACD,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACd,yCAAyC,WAAW,QAAQ,CAC5D,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC1C,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACpC,KAAiB,EACjB,UAA+B,EACb,EAAE;IACpB,MAAM,KAAK,GAAG,sBAAsB,CACnC,KAAK,EACL,4CAA4C,EAC5C,eAAe,CACf,CAAC;IACF,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC3C,KAAiB,EACjB,UAA+B,EACN,EAAE;IAC3B,MAAM,KAAK,GAAG,sBAAsB,CACnC,KAAK,EACL,+CAA+C,EAC/C,sBAAsB,CACtB,CAAC;IACF,4BAA4B,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/trusted-network",
3
- "version": "6.0.112",
3
+ "version": "6.0.113",
4
4
  "description": "Access controller that operates on a DB",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -55,18 +55,19 @@
55
55
  "@dao-xyz/borsh": "^6.0.0",
56
56
  "@libp2p/interface": "^3.2.5",
57
57
  "uint8arrays": "^5.1.0",
58
- "@peerbit/any-store": "2.2.17",
59
58
  "@peerbit/any-store-interface": "1.1.4",
59
+ "@peerbit/any-store": "2.2.17",
60
+ "@peerbit/blocks-interface": "2.1.7",
60
61
  "@peerbit/crypto": "3.1.6",
61
62
  "@peerbit/document": "15.0.18",
62
63
  "@peerbit/log": "6.2.27",
63
- "@peerbit/program": "6.0.57",
64
- "@peerbit/shared-log": "16.0.17"
64
+ "@peerbit/shared-log": "16.0.17",
65
+ "@peerbit/program": "6.0.57"
65
66
  },
66
67
  "devDependencies": {
67
68
  "ethers": "^6.17.0",
68
- "@peerbit/time": "3.0.1",
69
- "@peerbit/test-utils": "3.1.36"
69
+ "@peerbit/test-utils": "3.1.36",
70
+ "@peerbit/time": "3.0.1"
70
71
  },
71
72
  "repository": {
72
73
  "type": "git",
@@ -0,0 +1,430 @@
1
+ import { deserialize, serialize } from "@dao-xyz/borsh";
2
+ import {
3
+ calculateRawCid,
4
+ cidifyString,
5
+ codecMap,
6
+ defaultHasher,
7
+ stringifyCid,
8
+ } from "@peerbit/blocks-interface";
9
+ import { DecryptedThing, verify } from "@peerbit/crypto";
10
+ import { Entry, EntryType, EntryV0, NO_ENCODING } from "@peerbit/log";
11
+ import { equals } from "uint8arrays";
12
+ import {
13
+ NetworkDescriptorV2,
14
+ assertNetworkDescriptorV2,
15
+ copyUint8ArrayV2,
16
+ copyUint8ArrayWithLengthV2,
17
+ exactUint8ArrayByteLengthV2,
18
+ } from "./v2.js";
19
+
20
+ /** Internal limits selected by a concrete TrustedNetwork v2 record profile. */
21
+ export type AuthorityEntryV0LimitsV2 = {
22
+ maximumEntryBytes: number;
23
+ maximumDirectParents: number;
24
+ exactPayloadBytes?: number;
25
+ };
26
+
27
+ export type AuthenticatedAuthorityEntryV0V2 = {
28
+ descriptor: NetworkDescriptorV2;
29
+ entryBytes: Uint8Array;
30
+ entryCid: string;
31
+ entryDigest: Uint8Array;
32
+ gid: string;
33
+ metaData?: Uint8Array;
34
+ directParents: Array<{ cid: string; digest: Uint8Array }>;
35
+ payloadBytes: Uint8Array;
36
+ };
37
+
38
+ type ScannedAuthorityEntryV0 = {
39
+ metaBytes: Uint8Array;
40
+ payloadBytes: Uint8Array;
41
+ signatureBytes: Uint8Array;
42
+ signableBytes: Uint8Array;
43
+ };
44
+
45
+ class BoundsReaderV2 {
46
+ private offset = 0;
47
+ private readonly view: DataView;
48
+
49
+ constructor(private readonly bytes: Uint8Array) {
50
+ this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
51
+ }
52
+
53
+ get position(): number {
54
+ return this.offset;
55
+ }
56
+
57
+ readU8(label: string): number {
58
+ return this.readExact(1, label)[0]!;
59
+ }
60
+
61
+ readU32(label: string): number {
62
+ this.requireRemaining(4, label);
63
+ const value = this.view.getUint32(this.offset, true);
64
+ this.offset += 4;
65
+ return value;
66
+ }
67
+
68
+ readBytes(label: string): Uint8Array {
69
+ return this.readExact(this.readU32(`${label} length`), label);
70
+ }
71
+
72
+ readExact(byteLength: number, label: string): Uint8Array {
73
+ this.requireRemaining(byteLength, label);
74
+ const start = this.offset;
75
+ this.offset += byteLength;
76
+ return this.bytes.subarray(start, this.offset);
77
+ }
78
+
79
+ expectU8(expected: number, label: string): void {
80
+ if (this.readU8(label) !== expected) {
81
+ throw new Error(`Authority EntryV0 has invalid ${label}`);
82
+ }
83
+ }
84
+
85
+ expectDone(label: string): void {
86
+ if (this.offset !== this.bytes.byteLength) {
87
+ throw new Error(`Authority EntryV0 has trailing ${label} bytes`);
88
+ }
89
+ }
90
+
91
+ private requireRemaining(byteLength: number, label: string): void {
92
+ if (
93
+ !Number.isSafeInteger(byteLength) ||
94
+ byteLength < 0 ||
95
+ byteLength > this.bytes.byteLength - this.offset
96
+ ) {
97
+ throw new Error(`Authority EntryV0 has truncated ${label}`);
98
+ }
99
+ }
100
+ }
101
+
102
+ const readPublicWrapperV2 = (
103
+ reader: BoundsReaderV2,
104
+ label: string,
105
+ ): Uint8Array => {
106
+ reader.expectU8(0, `${label} MaybeEncrypted variant`);
107
+ reader.expectU8(0, `${label} DecryptedThing variant`);
108
+ return reader.readBytes(label);
109
+ };
110
+
111
+ const scanMetaV2 = (
112
+ metaBytes: Uint8Array,
113
+ authorityBytes: Uint8Array,
114
+ maximumDirectParents: number,
115
+ ): void => {
116
+ const reader = new BoundsReaderV2(metaBytes);
117
+ reader.expectU8(0, "metadata variant");
118
+ reader.expectU8(0, "clock variant");
119
+ if (!equals(reader.readBytes("clock id"), authorityBytes)) {
120
+ throw new Error("Authority EntryV0 clock id is not the policy authority");
121
+ }
122
+ reader.expectU8(0, "timestamp variant");
123
+ reader.readExact(8, "timestamp wall time");
124
+ reader.readExact(4, "timestamp logical time");
125
+ reader.readBytes("gid");
126
+
127
+ const directParentCount = reader.readU32("direct-parent count");
128
+ if (directParentCount > maximumDirectParents) {
129
+ throw new Error(
130
+ `Authority EntryV0 may contain at most ${maximumDirectParents} direct parents`,
131
+ );
132
+ }
133
+ for (let i = 0; i < directParentCount; i++) {
134
+ reader.readBytes("direct parent");
135
+ }
136
+
137
+ if (reader.readU8("entry type") !== EntryType.APPEND) {
138
+ throw new Error("Authority EntryV0 must be an APPEND entry");
139
+ }
140
+ const metaDataOption = reader.readU8("metadata data option");
141
+ if (metaDataOption === 1) {
142
+ reader.readBytes("metadata data");
143
+ } else if (metaDataOption !== 0) {
144
+ throw new Error("Authority EntryV0 has invalid metadata data option");
145
+ }
146
+ reader.expectDone("metadata");
147
+ };
148
+
149
+ const scanPayloadV2 = (
150
+ payloadBytes: Uint8Array,
151
+ exactPayloadBytes?: number,
152
+ ): void => {
153
+ const reader = new BoundsReaderV2(payloadBytes);
154
+ reader.expectU8(0, "payload variant");
155
+ const data = reader.readBytes("payload data");
156
+ if (
157
+ exactPayloadBytes !== undefined &&
158
+ data.byteLength !== exactPayloadBytes
159
+ ) {
160
+ throw new Error(
161
+ `Authority EntryV0 payload must contain exactly ${exactPayloadBytes} bytes`,
162
+ );
163
+ }
164
+ reader.expectDone("payload");
165
+ };
166
+
167
+ const SECP256K1_SIGNATURE_TEXT_BYTES = 132;
168
+ const SECP256K1_LOW_S_MAX_HEX =
169
+ "7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0";
170
+
171
+ const isLowerHexByteV2 = (value: number): boolean =>
172
+ (value >= 0x30 && value <= 0x39) || (value >= 0x61 && value <= 0x66);
173
+
174
+ const assertCanonicalSecp256k1SignatureV2 = (signature: Uint8Array): void => {
175
+ if (
176
+ signature.byteLength !== SECP256K1_SIGNATURE_TEXT_BYTES ||
177
+ signature[0] !== 0x30 ||
178
+ signature[1] !== 0x78
179
+ ) {
180
+ throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
181
+ }
182
+ for (let i = 2; i < signature.byteLength; i++) {
183
+ if (!isLowerHexByteV2(signature[i]!)) {
184
+ throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
185
+ }
186
+ }
187
+ if (
188
+ signature[130] !== 0x31 ||
189
+ (signature[131] !== 0x62 && signature[131] !== 0x63)
190
+ ) {
191
+ throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
192
+ }
193
+ for (let i = 0; i < SECP256K1_LOW_S_MAX_HEX.length; i++) {
194
+ const actual = signature[66 + i]!;
195
+ const maximum = SECP256K1_LOW_S_MAX_HEX.charCodeAt(i);
196
+ if (actual < maximum) break;
197
+ if (actual > maximum) {
198
+ throw new Error("Authority EntryV0 secp256k1 signature is not canonical");
199
+ }
200
+ }
201
+ };
202
+
203
+ const scanSignatureV2 = (
204
+ signatureBytes: Uint8Array,
205
+ authorityBytes: Uint8Array,
206
+ ): void => {
207
+ const reader = new BoundsReaderV2(signatureBytes);
208
+ reader.expectU8(0, "signature variant");
209
+ const signature = reader.readBytes("signature data");
210
+ const publicKeyVariant = reader.readU8("signature public-key variant");
211
+ const publicKeyLength =
212
+ publicKeyVariant === 0 ? 32 : publicKeyVariant === 1 ? 33 : undefined;
213
+ if (publicKeyLength === undefined) {
214
+ throw new Error("Authority EntryV0 uses an unsupported signing key");
215
+ }
216
+ const publicKey = reader.readExact(publicKeyLength, "signature public key");
217
+ const serializedPublicKey = new Uint8Array(publicKeyLength + 1);
218
+ serializedPublicKey[0] = publicKeyVariant;
219
+ serializedPublicKey.set(publicKey, 1);
220
+ if (!equals(serializedPublicKey, authorityBytes)) {
221
+ throw new Error("Authority EntryV0 signer is not the policy authority");
222
+ }
223
+ if (publicKeyVariant === 1) {
224
+ assertCanonicalSecp256k1SignatureV2(signature);
225
+ }
226
+ reader.readU8("signature prehash");
227
+ reader.expectDone("signature");
228
+ };
229
+
230
+ const scanAuthorityEntryV0 = (
231
+ entryBytes: Uint8Array,
232
+ authorityBytes: Uint8Array,
233
+ limits: AuthorityEntryV0LimitsV2,
234
+ ): ScannedAuthorityEntryV0 => {
235
+ const reader = new BoundsReaderV2(entryBytes);
236
+ reader.expectU8(0, "entry variant");
237
+ const metaBytes = readPublicWrapperV2(reader, "metadata");
238
+ const payloadBytes = readPublicWrapperV2(reader, "payload");
239
+ const reserved = reader.readExact(4, "reserved bytes");
240
+ if (
241
+ reserved[0] !== 0 ||
242
+ reserved[1] !== 0 ||
243
+ reserved[2] !== 0 ||
244
+ reserved[3] !== 0
245
+ ) {
246
+ throw new Error("Authority EntryV0 reserved bytes must be zero");
247
+ }
248
+ const signablePrefixLength = reader.position;
249
+ reader.expectU8(1, "signatures option");
250
+ reader.expectU8(0, "signatures variant");
251
+ if (reader.readU32("signature count") !== 1) {
252
+ throw new Error("Authority EntryV0 must contain exactly one signature");
253
+ }
254
+ const signatureBytes = readPublicWrapperV2(reader, "signature");
255
+ reader.expectU8(0, "hash option");
256
+ reader.expectDone("storage");
257
+
258
+ scanMetaV2(metaBytes, authorityBytes, limits.maximumDirectParents);
259
+ scanPayloadV2(payloadBytes, limits.exactPayloadBytes);
260
+ scanSignatureV2(signatureBytes, authorityBytes);
261
+ const signableBytes = new Uint8Array(signablePrefixLength + 2);
262
+ signableBytes.set(entryBytes.subarray(0, signablePrefixLength));
263
+ return { metaBytes, payloadBytes, signatureBytes, signableBytes };
264
+ };
265
+
266
+ const validateLimitsV2 = (limits: AuthorityEntryV0LimitsV2): void => {
267
+ if (
268
+ !Number.isSafeInteger(limits.maximumEntryBytes) ||
269
+ limits.maximumEntryBytes < 1 ||
270
+ !Number.isSafeInteger(limits.maximumDirectParents) ||
271
+ limits.maximumDirectParents < 0 ||
272
+ (limits.exactPayloadBytes !== undefined &&
273
+ (!Number.isSafeInteger(limits.exactPayloadBytes) ||
274
+ limits.exactPayloadBytes < 0))
275
+ ) {
276
+ throw new Error("Invalid internal authority EntryV0 limits");
277
+ }
278
+ };
279
+
280
+ const canonicalDirectParentsV2 = (
281
+ parents: string[],
282
+ ): Array<{ cid: string; digest: Uint8Array }> => {
283
+ const seen = new Set<string>();
284
+ return parents.map((cid) => {
285
+ let parsed: ReturnType<typeof cidifyString>;
286
+ try {
287
+ parsed = cidifyString(cid);
288
+ } catch {
289
+ throw new Error(
290
+ "Authority EntryV0 direct parents must use canonical CIDv1/raw/sha2-256",
291
+ );
292
+ }
293
+ if (
294
+ !cid ||
295
+ parsed.version !== 1 ||
296
+ parsed.code !== codecMap.raw.code ||
297
+ parsed.multihash.code !== defaultHasher.code ||
298
+ parsed.multihash.digest.byteLength !== 32 ||
299
+ stringifyCid(parsed) !== cid
300
+ ) {
301
+ throw new Error(
302
+ "Authority EntryV0 direct parents must use canonical CIDv1/raw/sha2-256",
303
+ );
304
+ }
305
+ if (seen.has(cid)) {
306
+ throw new Error("Authority EntryV0 direct parents must be unique");
307
+ }
308
+ seen.add(cid);
309
+ return {
310
+ cid,
311
+ digest: copyUint8ArrayV2(parsed.multihash.digest),
312
+ };
313
+ });
314
+ };
315
+
316
+ /**
317
+ * Authenticate one bounded raw EntryV0 authority envelope. This establishes
318
+ * canonical bytes, authority signature, and structural facts only. It does not
319
+ * establish policy acceptance, causal ancestry, freshness, or durability.
320
+ */
321
+ export const authenticateAuthorityEntryV0V2 = async (
322
+ entryBytes: Uint8Array,
323
+ descriptor: NetworkDescriptorV2,
324
+ limits: AuthorityEntryV0LimitsV2,
325
+ ): Promise<AuthenticatedAuthorityEntryV0V2> => {
326
+ validateLimitsV2(limits);
327
+ let byteLength: number;
328
+ try {
329
+ byteLength = exactUint8ArrayByteLengthV2(entryBytes);
330
+ } catch {
331
+ throw new Error("Authority entry must use canonical EntryV0 bytes");
332
+ }
333
+ if (byteLength < 1 || byteLength > limits.maximumEntryBytes) {
334
+ throw new Error(
335
+ `Authority EntryV0 must contain 1-${limits.maximumEntryBytes} bytes`,
336
+ );
337
+ }
338
+ const capturedEntryBytes = copyUint8ArrayWithLengthV2(entryBytes, byteLength);
339
+
340
+ assertNetworkDescriptorV2(descriptor);
341
+ const authorityBytes = serialize(descriptor.policyAuthority);
342
+ const scanned = scanAuthorityEntryV0(
343
+ capturedEntryBytes,
344
+ authorityBytes,
345
+ limits,
346
+ );
347
+ const capturedDescriptor = deserialize(
348
+ serialize(descriptor),
349
+ NetworkDescriptorV2,
350
+ );
351
+ assertNetworkDescriptorV2(capturedDescriptor);
352
+ if (!equals(serialize(capturedDescriptor.policyAuthority), authorityBytes)) {
353
+ throw new Error("Network descriptor changed during capture");
354
+ }
355
+ const entry = deserialize(capturedEntryBytes, Entry);
356
+ if (!(entry instanceof EntryV0)) {
357
+ throw new Error("Authority entry must use EntryV0");
358
+ }
359
+ if (!equals(capturedEntryBytes, serialize(entry))) {
360
+ throw new Error("Authority EntryV0 storage is not canonical");
361
+ }
362
+ if (!(entry._meta instanceof DecryptedThing)) {
363
+ throw new Error("Authority EntryV0 metadata must be public");
364
+ }
365
+ if (!(entry._payload instanceof DecryptedThing)) {
366
+ throw new Error("Authority EntryV0 payload must be public");
367
+ }
368
+ if (
369
+ entry._signatures === undefined ||
370
+ entry._signatures.signatures.length !== 1 ||
371
+ !(entry._signatures.signatures[0] instanceof DecryptedThing)
372
+ ) {
373
+ throw new Error("Authority EntryV0 must contain one public signature");
374
+ }
375
+
376
+ entry.init({ encoding: NO_ENCODING });
377
+ const meta = entry.meta;
378
+ const payload = entry.payload;
379
+ const signatures = entry.signatures;
380
+ if (
381
+ !equals(scanned.metaBytes, serialize(meta)) ||
382
+ !equals(scanned.payloadBytes, serialize(payload)) ||
383
+ !equals(scanned.signatureBytes, serialize(signatures[0]!))
384
+ ) {
385
+ throw new Error("Authority EntryV0 nested encoding is not canonical");
386
+ }
387
+ if (
388
+ meta.type !== EntryType.APPEND ||
389
+ meta.next.length > limits.maximumDirectParents ||
390
+ !equals(meta.clock.id, authorityBytes)
391
+ ) {
392
+ throw new Error("Authority EntryV0 metadata does not match its profile");
393
+ }
394
+ if (
395
+ signatures.length !== 1 ||
396
+ !equals(serialize(signatures[0]!.publicKey), authorityBytes)
397
+ ) {
398
+ throw new Error("Authority EntryV0 signer is not the policy authority");
399
+ }
400
+ if (
401
+ limits.exactPayloadBytes !== undefined &&
402
+ payload.data.byteLength !== limits.exactPayloadBytes
403
+ ) {
404
+ throw new Error(
405
+ `Authority EntryV0 payload must contain exactly ${limits.exactPayloadBytes} bytes`,
406
+ );
407
+ }
408
+
409
+ let signatureIsValid = false;
410
+ try {
411
+ signatureIsValid = await verify(signatures[0]!, scanned.signableBytes);
412
+ } catch {
413
+ // Unsupported prehashes and malformed signatures fail closed.
414
+ }
415
+ if (!signatureIsValid) {
416
+ throw new Error("Authority EntryV0 signature is invalid");
417
+ }
418
+
419
+ const prepared = await calculateRawCid(capturedEntryBytes);
420
+ return {
421
+ descriptor: capturedDescriptor,
422
+ entryBytes: capturedEntryBytes,
423
+ entryCid: prepared.cid,
424
+ entryDigest: copyUint8ArrayV2(prepared.block.cid.multihash.digest),
425
+ gid: meta.gid,
426
+ metaData: meta.data === undefined ? undefined : copyUint8ArrayV2(meta.data),
427
+ directParents: canonicalDirectParentsV2(meta.next),
428
+ payloadBytes: copyUint8ArrayV2(payload.data),
429
+ };
430
+ };
@@ -0,0 +1,97 @@
1
+ import { equals } from "uint8arrays";
2
+ import {
3
+ type AuthenticatedAuthorityEntryV0V2,
4
+ authenticateAuthorityEntryV0V2,
5
+ } from "./v2-authority-entry.js";
6
+ import {
7
+ NetworkDescriptorV2,
8
+ ResourceFenceV2,
9
+ TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_DIRECT_PARENTS,
10
+ TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_ENTRY_BYTES,
11
+ TRUSTED_NETWORK_V2_RESOURCE_FENCE_BODY_BYTES,
12
+ copyUint8ArrayWithLengthV2,
13
+ decodeResourceFenceV2,
14
+ exactUint8ArrayByteLengthV2,
15
+ } from "./v2.js";
16
+
17
+ const RESOURCE_FENCE_AUTHORITY_LIMITS_V2 = Object.freeze({
18
+ maximumEntryBytes: TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_ENTRY_BYTES,
19
+ maximumDirectParents: TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_DIRECT_PARENTS,
20
+ exactPayloadBytes: TRUSTED_NETWORK_V2_RESOURCE_FENCE_BODY_BYTES,
21
+ });
22
+
23
+ export type AuthenticatedResourceFenceEntryV2 = Readonly<{
24
+ entryBytes: Uint8Array;
25
+ entryCid: string;
26
+ digest: Uint8Array;
27
+ body: ResourceFenceV2;
28
+ gid: string;
29
+ metaData?: Uint8Array;
30
+ directParents: ReadonlyArray<Readonly<{ cid: string; digest: Uint8Array }>>;
31
+ }>;
32
+
33
+ export type AuthenticateResourceFenceEntryV2Properties = Readonly<{
34
+ entryBytes: Uint8Array;
35
+ descriptor: NetworkDescriptorV2;
36
+ expectedResourceId: Uint8Array;
37
+ expectedGid: string;
38
+ }>;
39
+
40
+ const captureResourceIdV2 = (resourceId: Uint8Array): Uint8Array => {
41
+ let byteLength: number;
42
+ try {
43
+ byteLength = exactUint8ArrayByteLengthV2(resourceId);
44
+ } catch {
45
+ throw new Error("Expected resource id must contain exactly 32 bytes");
46
+ }
47
+ if (byteLength !== 32) {
48
+ throw new Error("Expected resource id must contain exactly 32 bytes");
49
+ }
50
+ return copyUint8ArrayWithLengthV2(resourceId, byteLength);
51
+ };
52
+
53
+ const toResourceFenceTokenV2 = (
54
+ authenticated: AuthenticatedAuthorityEntryV0V2,
55
+ body: ResourceFenceV2,
56
+ ): AuthenticatedResourceFenceEntryV2 => ({
57
+ entryBytes: authenticated.entryBytes,
58
+ entryCid: authenticated.entryCid,
59
+ digest: authenticated.entryDigest,
60
+ body,
61
+ gid: authenticated.gid,
62
+ metaData: authenticated.metaData,
63
+ directParents: authenticated.directParents,
64
+ });
65
+
66
+ /**
67
+ * Authenticate a raw resource-fence EntryV0 against immutable resource
68
+ * context. The returned token does not prove policy acceptance, causal
69
+ * ancestry, fork freedom, freshness, or durability.
70
+ */
71
+ export const authenticateResourceFenceEntryV2 = async ({
72
+ entryBytes,
73
+ descriptor,
74
+ expectedResourceId,
75
+ expectedGid,
76
+ }: AuthenticateResourceFenceEntryV2Properties): Promise<AuthenticatedResourceFenceEntryV2> => {
77
+ if (typeof expectedGid !== "string") {
78
+ throw new Error("Expected resource gid must be a string");
79
+ }
80
+ const capturedResourceId = captureResourceIdV2(expectedResourceId);
81
+ const authenticated = await authenticateAuthorityEntryV0V2(
82
+ entryBytes,
83
+ descriptor,
84
+ RESOURCE_FENCE_AUTHORITY_LIMITS_V2,
85
+ );
86
+ if (authenticated.gid !== expectedGid) {
87
+ throw new Error("Resource fence belongs to another resource log");
88
+ }
89
+ const body = decodeResourceFenceV2(
90
+ authenticated.payloadBytes,
91
+ authenticated.descriptor,
92
+ );
93
+ if (!equals(body.resourceId, capturedResourceId)) {
94
+ throw new Error("Resource fence belongs to another resource");
95
+ }
96
+ return toResourceFenceTokenV2(authenticated, body);
97
+ };
package/src/v2.ts CHANGED
@@ -42,6 +42,13 @@ export const TRUSTED_NETWORK_V2_ENTRY_V0_AUTHORITY_ONLY_SIGNATURE_PROFILE = 1;
42
42
  */
43
43
  export const TRUSTED_NETWORK_V2_MAX_POLICY_ENTRY_BYTES = 128 * 1024;
44
44
 
45
+ /**
46
+ * Consensus bounds for a canonical signed resource-fence EntryV0. These are
47
+ * protocol constants, not resource-adapter configuration.
48
+ */
49
+ export const TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_ENTRY_BYTES = 8 * 1024;
50
+ export const TRUSTED_NETWORK_V2_MAX_RESOURCE_FENCE_DIRECT_PARENTS = 64;
51
+
45
52
  export const TRUSTED_NETWORK_V2_NETWORK_ID_DOMAIN =
46
53
  "peerbit/trusted-network/v2/network-id/v1";
47
54
  export const TRUSTED_NETWORK_V2_POLICY_DIGEST_DOMAIN =
@@ -76,7 +83,7 @@ const TYPED_ARRAY_TAG = Object.getOwnPropertyDescriptor(
76
83
  Symbol.toStringTag,
77
84
  )!.get!;
78
85
 
79
- const exactUint8ArrayByteLength = (value: unknown): number => {
86
+ export const exactUint8ArrayByteLengthV2 = (value: unknown): number => {
80
87
  if (
81
88
  !ArrayBuffer.isView(value) ||
82
89
  TYPED_ARRAY_TAG.call(value) !== "Uint8Array"
@@ -90,6 +97,20 @@ const exactUint8ArrayByteLength = (value: unknown): number => {
90
97
  return byteLength;
91
98
  };
92
99
 
100
+ export const copyUint8ArrayWithLengthV2 = (
101
+ value: Uint8Array,
102
+ byteLength: number,
103
+ ): Uint8Array => {
104
+ const copy = new Uint8Array(byteLength);
105
+ Uint8Array.prototype.set.call(copy, value);
106
+ return copy;
107
+ };
108
+
109
+ export const copyUint8ArrayV2 = (value: Uint8Array): Uint8Array => {
110
+ const byteLength = exactUint8ArrayByteLengthV2(value);
111
+ return copyUint8ArrayWithLengthV2(value, byteLength);
112
+ };
113
+
93
114
  const assertByte = (value: number, label: string): void => {
94
115
  if (!Number.isInteger(value) || value < 0 || value > 0xff) {
95
116
  throw new Error(`${label} must be a u8`);
@@ -111,7 +132,7 @@ const assertU64 = (value: bigint, label: string): void => {
111
132
  const assertBytes32 = (value: Uint8Array, label: string): void => {
112
133
  let byteLength: number;
113
134
  try {
114
- byteLength = exactUint8ArrayByteLength(value);
135
+ byteLength = exactUint8ArrayByteLengthV2(value);
115
136
  } catch {
116
137
  throw new Error(`${label} must contain exactly 32 bytes`);
117
138
  }
@@ -513,7 +534,7 @@ const decodeExactCanonicalV2 = <T>(
513
534
  ): T => {
514
535
  let byteLength: number;
515
536
  try {
516
- byteLength = exactUint8ArrayByteLength(bytes);
537
+ byteLength = exactUint8ArrayByteLengthV2(bytes);
517
538
  } catch {
518
539
  throw new Error(
519
540
  `TrustedNetwork v2 record must contain ${exactLength} bytes`,
@@ -524,8 +545,7 @@ const decodeExactCanonicalV2 = <T>(
524
545
  `TrustedNetwork v2 record must contain ${exactLength} bytes`,
525
546
  );
526
547
  }
527
- const captured = new Uint8Array(byteLength);
528
- Uint8Array.prototype.set.call(captured, bytes);
548
+ const captured = copyUint8ArrayWithLengthV2(bytes, byteLength);
529
549
  const value = deserialize(captured, type);
530
550
  assertCanonicalEncoding(captured, value);
531
551
  return value;