@sig-net/midnight-serde 0.19.0 → 0.21.0-rc.1

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.
@@ -1,4 +1,5 @@
1
- import type { CompactType, CompactValueOf } from './types.ts';
1
+ import type { CompactType, CompactValueOf } from "./types.ts";
2
+ /** Options controlling how strictly {@link compactDeserialize} reads a value. */
2
3
  export interface CompactDeserializeOptions {
3
4
  /** Skip the all-zero check on bytes after the packed value (circuit behaviour). */
4
5
  ignorePadding?: boolean;
@@ -13,6 +14,13 @@ export interface CompactDeserializeOptions {
13
14
  *
14
15
  * The return type is derived from the descriptor (see `CompactValueOf`), so a
15
16
  * literal descriptor yields a fully typed value with no cast at the call site.
17
+ *
18
+ * @param type - The descriptor describing the packed layout.
19
+ * @param bytes - Buffer whose prefix holds the packed value.
20
+ * @param options - Decode options; see {@link CompactDeserializeOptions}.
21
+ * @returns The decoded value, shaped by the descriptor.
22
+ * @throws {Error} If the descriptor is malformed, the buffer is too short, or a
23
+ * decoded value falls outside its declared range.
16
24
  */
17
25
  export declare function compactDeserialize<const T extends CompactType>(type: T, bytes: Uint8Array, options?: CompactDeserializeOptions): CompactValueOf<T>;
18
26
  //# sourceMappingURL=deserialize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deserialize.d.ts","sourceRoot":"","sources":["../src/deserialize.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,WAAW,EAAgB,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5E,MAAM,WAAW,yBAAyB;IACxC,mFAAmF;IACnF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAcD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,CAAC,SAAS,WAAW,EAC5D,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,yBAA8B,GACtC,cAAc,CAAC,CAAC,CAAC,CA2BnB"}
1
+ {"version":3,"file":"deserialize.d.ts","sourceRoot":"","sources":["../src/deserialize.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,WAAW,EAAgB,cAAc,EAAE,MAAM,YAAY,CAAC;AAI5E,iFAAiF;AACjF,MAAM,WAAW,yBAAyB;IACxC,mFAAmF;IACnF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAcD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,CAAC,SAAS,WAAW,EAC5D,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,yBAA8B,GACtC,cAAc,CAAC,CAAC,CAAC,CA2BnB"}
@@ -19,8 +19,8 @@
19
19
  // descriptor is fully validated (src/validate.ts) and the input buffer
20
20
  // type-checked before any decoding, and out-of-range Uint, enum and Field
21
21
  // encodings all throw exactly where the circuit throws (pinned by tests).
22
- import { FIELD_MODULUS } from "./types.js";
23
22
  import { packedSize, uintBound, uintName } from "./serialize.js";
23
+ import { FIELD_MODULUS } from "./types.js";
24
24
  import { assertCompactType, assertUnreachable, isUint8Array } from "./validate.js";
25
25
  // Zero-width elements (empty structs/tuples, `Uint<0..1>`, single-variant
26
26
  // enums, `Bytes<0>`) consume no input, so a vector of them decodes purely
@@ -33,27 +33,34 @@ const MAX_ZERO_WIDTH_ELEMENTS = 65536;
33
33
  *
34
34
  * The return type is derived from the descriptor (see `CompactValueOf`), so a
35
35
  * literal descriptor yields a fully typed value with no cast at the call site.
36
+ *
37
+ * @param type - The descriptor describing the packed layout.
38
+ * @param bytes - Buffer whose prefix holds the packed value.
39
+ * @param options - Decode options; see {@link CompactDeserializeOptions}.
40
+ * @returns The decoded value, shaped by the descriptor.
41
+ * @throws {Error} If the descriptor is malformed, the buffer is too short, or a
42
+ * decoded value falls outside its declared range.
36
43
  */
37
44
  export function compactDeserialize(type, bytes, options = {}) {
38
45
  assertCompactType(type);
39
46
  if (!isUint8Array(bytes)) {
40
- throw new Error('bytes must be a Uint8Array');
47
+ throw new Error("bytes must be a Uint8Array");
41
48
  }
42
49
  // One size check up front covers every read below: fields and elements
43
50
  // tile the packed prefix exactly, so no per-node re-check is needed.
44
51
  const need = packedSize(type);
45
52
  if (need > bytes.length) {
46
- throw new Error(`value: needs ${need} bytes, buffer has ${bytes.length}`);
53
+ throw new Error(`value: needs ${String(need)} bytes, buffer has ${String(bytes.length)}`);
47
54
  }
48
55
  const context = {
49
56
  lenientBooleans: options.lenientBooleans === true,
50
57
  zeroWidthElements: 0,
51
58
  };
52
- const [value, consumed] = decodeFrom(bytes, 0, type, 'value', context);
59
+ const [value, consumed] = decodeFrom(bytes, 0, type, "value", context);
53
60
  if (!options.ignorePadding) {
54
- for (let i = consumed; i < bytes.length; i++) {
55
- if (bytes[i] !== 0) {
56
- throw new Error(`non-zero padding byte 0x${bytes[i].toString(16)} at offset ${i} ` +
61
+ for (const [i, padding] of bytes.subarray(consumed).entries()) {
62
+ if (padding !== 0) {
63
+ throw new Error(`non-zero padding byte 0x${padding.toString(16)} at offset ${String(consumed + i)} ` +
57
64
  `(pass ignorePadding to mirror the circuit, which reads only the packed prefix)`);
58
65
  }
59
66
  }
@@ -62,8 +69,11 @@ export function compactDeserialize(type, bytes, options = {}) {
62
69
  }
63
70
  function decodeFrom(bytes, offset, type, label, context) {
64
71
  switch (type.kind) {
65
- case 'boolean': {
72
+ case "boolean": {
66
73
  const b = bytes[offset];
74
+ if (b === undefined) {
75
+ throw new Error(`${label}: buffer ends before the boolean byte at ${String(offset)}`);
76
+ }
67
77
  // Strict by default; the circuit decodes any byte != 0x01 as false
68
78
  // (see the header comment).
69
79
  if (b > 1 && !context.lenientBooleans) {
@@ -71,7 +81,7 @@ function decodeFrom(bytes, offset, type, label, context) {
71
81
  }
72
82
  return [b === 1, offset + 1];
73
83
  }
74
- case 'uint': {
84
+ case "uint": {
75
85
  const bound = uintBound(type);
76
86
  const size = packedSize(type);
77
87
  const value = readUintLE(bytes, offset, size);
@@ -80,64 +90,61 @@ function decodeFrom(bytes, offset, type, label, context) {
80
90
  // for any bounded uint whose max is not all-ones, and for sized uints
81
91
  // only when the width is not byte-aligned.
82
92
  if (value >= bound) {
83
- throw new Error(`${label}: encoding ${value} exceeds ${uintName(type)}`);
93
+ throw new Error(`${label}: encoding ${String(value)} exceeds ${uintName(type)}`);
84
94
  }
85
95
  return [value, offset + size];
86
96
  }
87
- case 'field': {
97
+ case "field": {
88
98
  const value = readUintLE(bytes, offset, 32);
89
99
  // The circuit rejects out-of-range Field encodings at runtime too
90
100
  // (pinned by tests): mirror it.
91
101
  if (value >= FIELD_MODULUS) {
92
- throw new Error(`${label}: encoding ${value} is not below the Field modulus`);
102
+ throw new Error(`${label}: encoding ${String(value)} is not below the Field modulus`);
93
103
  }
94
104
  return [value, offset + 32];
95
105
  }
96
- case 'bytes':
106
+ case "bytes":
97
107
  // A copy into a PLAIN Uint8Array, never `bytes.slice(...)`: subclasses
98
108
  // may override slice with a non-copying view (Buffer does), and a
99
109
  // decoded value must not alias caller memory the caller may reuse.
100
- return [
101
- new Uint8Array(bytes.subarray(offset, offset + type.length)),
102
- offset + type.length,
103
- ];
104
- case 'enum': {
110
+ return [new Uint8Array(bytes.subarray(offset, offset + type.length)), offset + type.length];
111
+ case "enum": {
105
112
  const size = packedSize(type);
106
113
  const value = readUintLE(bytes, offset, size);
107
114
  // Mirrors the circuit's variant-index range check (pinned by tests).
108
115
  if (value >= BigInt(type.variants)) {
109
- throw new Error(`${label}: encoding ${value} exceeds the last variant index ${type.variants - 1}`);
116
+ throw new Error(`${label}: encoding ${String(value)} exceeds the last variant index ${String(type.variants - 1)}`);
110
117
  }
111
118
  return [Number(value), offset + size];
112
119
  }
113
- case 'vector': {
120
+ case "vector": {
114
121
  if (packedSize(type.element) === 0) {
115
122
  context.zeroWidthElements += type.length;
116
123
  if (context.zeroWidthElements > MAX_ZERO_WIDTH_ELEMENTS) {
117
- throw new Error(`${label}: refusing to materialise over ${MAX_ZERO_WIDTH_ELEMENTS} ` +
124
+ throw new Error(`${label}: refusing to materialise over ${String(MAX_ZERO_WIDTH_ELEMENTS)} ` +
118
125
  `zero-width vector elements (the descriptor decodes them from no input at all)`);
119
126
  }
120
127
  }
121
128
  const elements = [];
122
129
  let cursor = offset;
123
130
  for (let i = 0; i < type.length; i++) {
124
- const [element, next] = decodeFrom(bytes, cursor, type.element, `${label}[${i}]`, context);
131
+ const [element, next] = decodeFrom(bytes, cursor, type.element, `${label}[${String(i)}]`, context);
125
132
  elements.push(element);
126
133
  cursor = next;
127
134
  }
128
135
  return [elements, cursor];
129
136
  }
130
- case 'tuple': {
137
+ case "tuple": {
131
138
  const elements = [];
132
139
  let cursor = offset;
133
140
  type.elements.forEach((element, i) => {
134
- const [decoded, next] = decodeFrom(bytes, cursor, element, `${label}[${i}]`, context);
141
+ const [decoded, next] = decodeFrom(bytes, cursor, element, `${label}[${String(i)}]`, context);
135
142
  elements.push(decoded);
136
143
  cursor = next;
137
144
  });
138
145
  return [elements, cursor];
139
146
  }
140
- case 'struct': {
147
+ case "struct": {
141
148
  const value = {};
142
149
  let cursor = offset;
143
150
  for (const field of type.fields) {
@@ -161,8 +168,10 @@ function decodeFrom(bytes, offset, type, label, context) {
161
168
  }
162
169
  function readUintLE(bytes, offset, size) {
163
170
  let v = 0n;
164
- for (let i = size - 1; i >= 0; i--) {
165
- v = (v << 8n) | BigInt(bytes[offset + i]);
171
+ let shift = 0n;
172
+ for (const byte of bytes.subarray(offset, offset + size)) {
173
+ v |= BigInt(byte) << shift;
174
+ shift += 8n;
166
175
  }
167
176
  return v;
168
177
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../src/deserialize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deserialize.js","sourceRoot":"","sources":["../src/deserialize.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { FIELD_MODULUS, MAX_UINT_BITS, MAX_UINT_BOUND, type CompactBooleanType, type CompactUintType, type CompactSizedUintType, type CompactBoundedUintType, type CompactFieldType, type CompactBytesType, type CompactEnumType, type CompactVectorType, type CompactTupleType, type CompactStructType, type CompactType, type CompactValue, type CompactValueOf, } from './types.ts';
2
- export { compactSerialize, compactSerializedSize } from './serialize.ts';
3
- export { assertCompactType, isCompactType } from './validate.ts';
4
- export { compactDeserialize, type CompactDeserializeOptions, } from './deserialize.ts';
1
+ export { compactDeserialize, type CompactDeserializeOptions } from "./deserialize.ts";
2
+ export { compactSerialize, compactSerializedSize } from "./serialize.ts";
3
+ export { type CompactBooleanType, type CompactBoundedUintType, type CompactBytesType, type CompactEnumType, type CompactFieldType, type CompactSizedUintType, type CompactStructType, type CompactTupleType, type CompactType, type CompactUintType, type CompactValue, type CompactValueOf, type CompactVectorType, FIELD_MODULUS, MAX_UINT_BITS, MAX_UINT_BOUND, } from "./types.ts";
4
+ export { assertCompactType, isCompactType } from "./validate.ts";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,aAAa,EACb,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- export { FIELD_MODULUS, MAX_UINT_BITS, MAX_UINT_BOUND, } from "./types.js";
1
+ export { compactDeserialize } from "./deserialize.js";
2
2
  export { compactSerialize, compactSerializedSize } from "./serialize.js";
3
+ export { FIELD_MODULUS, MAX_UINT_BITS, MAX_UINT_BOUND, } from "./types.js";
3
4
  export { assertCompactType, isCompactType } from "./validate.js";
4
- export { compactDeserialize, } from "./deserialize.js";
5
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,GAcf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EACL,kBAAkB,GAEnB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAkC,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAcL,aAAa,EACb,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
@@ -1,12 +1,26 @@
1
- import type { CompactType, CompactUintType, CompactValueOf } from './types.ts';
2
- /** The EXCLUSIVE upper bound of a uint descriptor, whichever form it uses. */
1
+ import type { CompactType, CompactUintType, CompactValueOf } from "./types.ts";
2
+ /**
3
+ * The EXCLUSIVE upper bound of a uint descriptor, whichever form it uses.
4
+ *
5
+ * @param type - The uint descriptor to read.
6
+ * @returns One past the largest value the descriptor admits.
7
+ */
3
8
  export declare function uintBound(type: CompactUintType): bigint;
4
9
  /**
5
10
  * Packed byte size of an ALREADY-VALIDATED descriptor. Package-internal: the
6
11
  * public {@link compactSerializedSize} validates first.
12
+ *
13
+ * @param type - A descriptor that has already passed validation.
14
+ * @returns The packed byte size.
7
15
  */
8
16
  export declare function packedSize(type: CompactType): number;
9
- /** Packed byte size of a type, before `serialize<T, N>`'s right zero-padding. */
17
+ /**
18
+ * Packed byte size of a type, before `serialize<T, N>`'s right zero-padding.
19
+ *
20
+ * @param type - The descriptor to size.
21
+ * @returns The packed byte size.
22
+ * @throws {Error} If the descriptor is not a well-formed Compact type.
23
+ */
10
24
  export declare function compactSerializedSize(type: CompactType): number;
11
25
  /**
12
26
  * Byte-exact twin of `serialize<T, padTo>(value)`. With `padTo` omitted the
@@ -15,8 +29,20 @@ export declare function compactSerializedSize(type: CompactType): number;
15
29
  * The value parameter is typed from the descriptor (see `CompactValueOf`), so
16
30
  * a literal descriptor gets compile-time checking of the value shape, and the
17
31
  * same shape is enforced again at runtime.
32
+ *
33
+ * @param type - The descriptor the value conforms to.
34
+ * @param value - The value to pack, shaped by the descriptor.
35
+ * @param padTo - Total output length; omit to return the value unpadded.
36
+ * @returns The packed bytes.
37
+ * @throws {Error} If the descriptor or the value fails validation, or `padTo` is
38
+ * smaller than the packed size.
18
39
  */
19
40
  export declare function compactSerialize<const T extends CompactType>(type: T, value: CompactValueOf<T>, padTo?: number): Uint8Array;
20
- /** Display name of a uint descriptor in its own declaration form. */
41
+ /**
42
+ * Display name of a uint descriptor in its own declaration form.
43
+ *
44
+ * @param type - The uint descriptor to name.
45
+ * @returns `Uint<bits>` for the sized form, `Uint<0..bound>` for the bounded one.
46
+ */
21
47
  export declare function uintName(type: CompactUintType): string;
22
48
  //# sourceMappingURL=serialize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAgB,cAAc,EAAE,MAAM,YAAY,CAAC;AAwB7F,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAKvD;AAcD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CA2BpD;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAG/D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,CAAC,SAAS,WAAW,EAC1D,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EACxB,KAAK,CAAC,EAAE,MAAM,GACb,UAAU,CAeZ;AAuHD,qEAAqE;AACrE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAKtD"}
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAgB,cAAc,EAAE,MAAM,YAAY,CAAC;AA+B7F;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAKvD;AAmBD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CA2BpD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAG/D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,CAAC,CAAC,SAAS,WAAW,EAC1D,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,EACxB,KAAK,CAAC,EAAE,MAAM,GACb,UAAU,CAeZ;AA0ID;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAKtD"}
package/dist/serialize.js CHANGED
@@ -18,7 +18,12 @@
18
18
  // type system.
19
19
  import { FIELD_MODULUS } from "./types.js";
20
20
  import { assertCompactType, assertUnreachable, isUint8Array } from "./validate.js";
21
- /** Byte length of the largest legal value, given the EXCLUSIVE bound. 0 for a bound of 1. */
21
+ /**
22
+ * Byte length of the largest legal value, given the EXCLUSIVE bound. 0 for a bound of 1.
23
+ *
24
+ * @param bound - Exclusive upper bound of the value range.
25
+ * @returns The byte width needed to hold any value below the bound.
26
+ */
22
27
  function widthOfBound(bound) {
23
28
  let max = bound - 1n;
24
29
  let width = 0;
@@ -31,13 +36,19 @@ function widthOfBound(bound) {
31
36
  /**
32
37
  * The sized-form bit width of a uint descriptor, or undefined for the bounded
33
38
  * form. Own-property read: `'bits' in type` would walk the prototype chain.
39
+ *
40
+ * @param type - The uint descriptor to inspect.
41
+ * @returns The declared bit width, or undefined when the descriptor is bounded.
34
42
  */
35
43
  function sizedBits(type) {
36
- return Object.hasOwn(type, 'bits')
37
- ? type.bits
38
- : undefined;
44
+ return Object.hasOwn(type, "bits") ? type.bits : undefined;
39
45
  }
40
- /** The EXCLUSIVE upper bound of a uint descriptor, whichever form it uses. */
46
+ /**
47
+ * The EXCLUSIVE upper bound of a uint descriptor, whichever form it uses.
48
+ *
49
+ * @param type - The uint descriptor to read.
50
+ * @returns One past the largest value the descriptor admits.
51
+ */
41
52
  export function uintBound(type) {
42
53
  const bits = sizedBits(type);
43
54
  return bits !== undefined
@@ -48,6 +59,11 @@ export function uintBound(type) {
48
59
  * Guard for the Number arithmetic below: element counts and widths are
49
60
  * individually safe integers (validated), but their products and sums can
50
61
  * still leave the safe range and silently round. Never produce a wrong size.
62
+ *
63
+ * @param size - The computed packed size to check.
64
+ * @param label - Descriptor kind, used in the error message.
65
+ * @returns The size unchanged, once proven safe.
66
+ * @throws {Error} If the size is not a safe integer.
51
67
  */
52
68
  function assertSafeSize(size, label) {
53
69
  if (!Number.isSafeInteger(size)) {
@@ -58,30 +74,39 @@ function assertSafeSize(size, label) {
58
74
  /**
59
75
  * Packed byte size of an ALREADY-VALIDATED descriptor. Package-internal: the
60
76
  * public {@link compactSerializedSize} validates first.
77
+ *
78
+ * @param type - A descriptor that has already passed validation.
79
+ * @returns The packed byte size.
61
80
  */
62
81
  export function packedSize(type) {
63
82
  switch (type.kind) {
64
- case 'boolean':
83
+ case "boolean":
65
84
  return 1;
66
- case 'uint':
85
+ case "uint":
67
86
  return widthOfBound(uintBound(type));
68
- case 'field':
87
+ case "field":
69
88
  return 32;
70
- case 'bytes':
89
+ case "bytes":
71
90
  return type.length;
72
- case 'enum':
91
+ case "enum":
73
92
  return widthOfBound(BigInt(type.variants));
74
- case 'vector':
75
- return assertSafeSize(type.length * packedSize(type.element), 'vector');
76
- case 'tuple':
77
- return assertSafeSize(type.elements.reduce((sum, e) => sum + packedSize(e), 0), 'tuple');
78
- case 'struct':
79
- return assertSafeSize(type.fields.reduce((sum, f) => sum + packedSize(f.type), 0), 'struct');
93
+ case "vector":
94
+ return assertSafeSize(type.length * packedSize(type.element), "vector");
95
+ case "tuple":
96
+ return assertSafeSize(type.elements.reduce((sum, e) => sum + packedSize(e), 0), "tuple");
97
+ case "struct":
98
+ return assertSafeSize(type.fields.reduce((sum, f) => sum + packedSize(f.type), 0), "struct");
80
99
  default:
81
- return assertUnreachable(type, 'packedSize');
100
+ return assertUnreachable(type, "packedSize");
82
101
  }
83
102
  }
84
- /** Packed byte size of a type, before `serialize<T, N>`'s right zero-padding. */
103
+ /**
104
+ * Packed byte size of a type, before `serialize<T, N>`'s right zero-padding.
105
+ *
106
+ * @param type - The descriptor to size.
107
+ * @returns The packed byte size.
108
+ * @throws {Error} If the descriptor is not a well-formed Compact type.
109
+ */
85
110
  export function compactSerializedSize(type) {
86
111
  assertCompactType(type);
87
112
  return packedSize(type);
@@ -93,6 +118,13 @@ export function compactSerializedSize(type) {
93
118
  * The value parameter is typed from the descriptor (see `CompactValueOf`), so
94
119
  * a literal descriptor gets compile-time checking of the value shape, and the
95
120
  * same shape is enforced again at runtime.
121
+ *
122
+ * @param type - The descriptor the value conforms to.
123
+ * @param value - The value to pack, shaped by the descriptor.
124
+ * @param padTo - Total output length; omit to return the value unpadded.
125
+ * @returns The packed bytes.
126
+ * @throws {Error} If the descriptor or the value fails validation, or `padTo` is
127
+ * smaller than the packed size.
96
128
  */
97
129
  export function compactSerialize(type, value, padTo) {
98
130
  assertCompactType(type);
@@ -102,90 +134,103 @@ export function compactSerialize(type, value, padTo) {
102
134
  const size = packedSize(type);
103
135
  const total = padTo ?? size;
104
136
  if (total < size) {
105
- throw new Error(`padTo ${total} is below the packed size ${size} (a compile error in Compact too)`);
137
+ throw new Error(`padTo ${String(total)} is below the packed size ${String(size)} (a compile error in Compact too)`);
106
138
  }
107
139
  const out = new Uint8Array(total);
108
- encodeInto(out, 0, type, value, 'value');
140
+ encodeInto(out, 0, type, value, "value");
109
141
  return out;
110
142
  }
143
+ /**
144
+ * Whether a value is a plain object usable as a struct: not null, not an
145
+ * array, not a Uint8Array. Takes `unknown` so each check is load-bearing
146
+ * rather than narrowed away by the declared parameter type.
147
+ *
148
+ * @param value - The candidate struct value.
149
+ * @returns Whether the value can carry named fields.
150
+ */
151
+ function isStructValue(value) {
152
+ return (typeof value === "object" && value !== null && !Array.isArray(value) && !isUint8Array(value));
153
+ }
111
154
  function encodeInto(out, offset, type, value, label) {
112
155
  switch (type.kind) {
113
- case 'boolean': {
114
- if (typeof value !== 'boolean')
156
+ case "boolean": {
157
+ if (typeof value !== "boolean")
115
158
  throw new Error(`${label}: expected boolean`);
116
159
  out[offset] = value ? 1 : 0;
117
160
  return offset + 1;
118
161
  }
119
- case 'uint': {
120
- if (typeof value !== 'bigint')
162
+ case "uint": {
163
+ if (typeof value !== "bigint")
121
164
  throw new Error(`${label}: expected bigint`);
122
165
  const bound = uintBound(type);
123
166
  const size = widthOfBound(bound);
124
167
  if (value >= bound) {
125
- throw new Error(`${label}: value ${value} exceeds ${uintName(type)}`);
168
+ throw new Error(`${label}: value ${String(value)} exceeds ${uintName(type)}`);
126
169
  }
127
170
  writeUintLE(out, offset, value, size, label);
128
171
  return offset + size;
129
172
  }
130
- case 'field': {
131
- if (typeof value !== 'bigint')
173
+ case "field": {
174
+ if (typeof value !== "bigint")
132
175
  throw new Error(`${label}: expected bigint`);
133
176
  if (value >= FIELD_MODULUS) {
134
- throw new Error(`${label}: value ${value} is not below the Field modulus`);
177
+ throw new Error(`${label}: value ${String(value)} is not below the Field modulus`);
135
178
  }
136
179
  writeUintLE(out, offset, value, 32, label);
137
180
  return offset + 32;
138
181
  }
139
- case 'bytes': {
182
+ case "bytes": {
140
183
  if (!isUint8Array(value))
141
184
  throw new Error(`${label}: expected Uint8Array`);
142
185
  if (value.length !== type.length) {
143
- throw new Error(`${label}: expected exactly ${type.length} bytes, got ${value.length}`);
186
+ throw new Error(`${label}: expected exactly ${String(type.length)} bytes, got ${String(value.length)}`);
144
187
  }
145
188
  out.set(value, offset);
146
189
  return offset + type.length;
147
190
  }
148
- case 'enum': {
191
+ case "enum": {
149
192
  // Matches the generated bindings: enum values are numbers (the index).
150
- if (typeof value !== 'number' || !Number.isInteger(value)) {
193
+ if (typeof value !== "number" || !Number.isInteger(value)) {
151
194
  throw new Error(`${label}: expected an integer number (enum variant index)`);
152
195
  }
153
196
  const size = widthOfBound(BigInt(type.variants));
154
197
  if (value < 0 || value >= type.variants) {
155
- throw new Error(`${label}: variant index ${value} is outside 0..${type.variants - 1}`);
198
+ throw new Error(`${label}: variant index ${String(value)} is outside 0..${String(type.variants - 1)}`);
156
199
  }
157
200
  writeUintLE(out, offset, BigInt(value), size, label);
158
201
  return offset + size;
159
202
  }
160
- case 'vector': {
203
+ case "vector": {
161
204
  if (!Array.isArray(value))
162
205
  throw new Error(`${label}: expected array`);
163
206
  if (value.length !== type.length) {
164
- throw new Error(`${label}: expected exactly ${type.length} elements, got ${value.length}`);
207
+ throw new Error(`${label}: expected exactly ${String(type.length)} elements, got ${String(value.length)}`);
165
208
  }
166
209
  let cursor = offset;
167
210
  value.forEach((element, i) => {
168
- cursor = encodeInto(out, cursor, type.element, element, `${label}[${i}]`);
211
+ cursor = encodeInto(out, cursor, type.element, element, `${label}[${String(i)}]`);
169
212
  });
170
213
  return cursor;
171
214
  }
172
- case 'tuple': {
215
+ case "tuple": {
173
216
  if (!Array.isArray(value))
174
217
  throw new Error(`${label}: expected array (tuple)`);
175
218
  if (value.length !== type.elements.length) {
176
- throw new Error(`${label}: expected exactly ${type.elements.length} elements, got ${value.length}`);
219
+ throw new Error(`${label}: expected exactly ${String(type.elements.length)} elements, got ${String(value.length)}`);
177
220
  }
178
221
  let cursor = offset;
179
- type.elements.forEach((element, i) => {
180
- cursor = encodeInto(out, cursor, element, value[i], `${label}[${i}]`);
181
- });
222
+ for (const [i, element] of type.elements.entries()) {
223
+ const item = value[i];
224
+ // The length check above proves this, but the index signature does not.
225
+ if (item === undefined) {
226
+ throw new Error(`${label}[${String(i)}]: missing element`);
227
+ }
228
+ cursor = encodeInto(out, cursor, element, item, `${label}[${String(i)}]`);
229
+ }
182
230
  return cursor;
183
231
  }
184
- case 'struct': {
185
- if (typeof value !== 'object' ||
186
- value === null ||
187
- Array.isArray(value) ||
188
- isUint8Array(value)) {
232
+ case "struct": {
233
+ if (!isStructValue(value)) {
189
234
  throw new Error(`${label}: expected an object`);
190
235
  }
191
236
  // Reject unknown keys, mirroring the strictness on descriptors: a
@@ -206,6 +251,11 @@ function encodeInto(out, offset, type, value, label) {
206
251
  throw new Error(`${label}: missing field '${field.name}'`);
207
252
  }
208
253
  const fieldValue = value[field.name];
254
+ // hasOwn above proves the KEY exists; an explicit undefined VALUE is a
255
+ // separate case, and neither is serializable.
256
+ if (fieldValue === undefined) {
257
+ throw new Error(`${label}: missing field '${field.name}'`);
258
+ }
209
259
  cursor = encodeInto(out, cursor, field.type, fieldValue, `${label}.${field.name}`);
210
260
  }
211
261
  return cursor;
@@ -214,19 +264,24 @@ function encodeInto(out, offset, type, value, label) {
214
264
  return assertUnreachable(type, label);
215
265
  }
216
266
  }
217
- /** Display name of a uint descriptor in its own declaration form. */
267
+ /**
268
+ * Display name of a uint descriptor in its own declaration form.
269
+ *
270
+ * @param type - The uint descriptor to name.
271
+ * @returns `Uint<bits>` for the sized form, `Uint<0..bound>` for the bounded one.
272
+ */
218
273
  export function uintName(type) {
219
274
  const bits = sizedBits(type);
220
275
  return bits !== undefined
221
- ? `Uint<${bits}>`
222
- : `Uint<0..${type.bound}>`;
276
+ ? `Uint<${String(bits)}>`
277
+ : `Uint<0..${String(type.bound)}>`;
223
278
  }
224
279
  function writeUintLE(out, offset, value, size, label) {
225
280
  if (value < 0n) {
226
- throw new Error(`${label}: negative values cannot be Compact-serialized (got ${value})`);
281
+ throw new Error(`${label}: negative values cannot be Compact-serialized (got ${String(value)})`);
227
282
  }
228
283
  if (value >> BigInt(size * 8) !== 0n) {
229
- throw new Error(`${label}: value ${value} does not fit in ${size} bytes`);
284
+ throw new Error(`${label}: value ${String(value)} does not fit in ${String(size)} bytes`);
230
285
  }
231
286
  let v = value;
232
287
  for (let i = 0; i < size; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * The BLS12-381 scalar field modulus. A Compact `Field` value must be below
3
- * it. Matches `maxField + 1n` exported by @midnight-ntwrk/compact-runtime.
3
+ * it. Matches `maxField + 1n` exported by `@midnight-ntwrk/compact-runtime`.
4
4
  */
5
5
  export declare const FIELD_MODULUS = 52435875175126190479447740508185965837690552500527637822603658699938581184513n;
6
6
  /** Maximum `Uint` width accepted by compactc 0.33 (bits). */
@@ -12,11 +12,11 @@ export declare const MAX_UINT_BITS = 248;
12
12
  export declare const MAX_UINT_BOUND: bigint;
13
13
  /** Compact `Boolean`: 1 byte, 0x00 or 0x01. */
14
14
  export interface CompactBooleanType {
15
- readonly kind: 'boolean';
15
+ readonly kind: "boolean";
16
16
  }
17
17
  /** Compact `Uint<bits>` (sized): ceil(bits / 8) bytes little-endian, bits 1..248. */
18
18
  export interface CompactSizedUintType {
19
- readonly kind: 'uint';
19
+ readonly kind: "uint";
20
20
  readonly bits: number;
21
21
  }
22
22
  /**
@@ -27,7 +27,7 @@ export interface CompactSizedUintType {
27
27
  * bigint beyond 2^53.
28
28
  */
29
29
  export interface CompactBoundedUintType {
30
- readonly kind: 'uint';
30
+ readonly kind: "uint";
31
31
  readonly bound: number | bigint;
32
32
  }
33
33
  /**
@@ -38,11 +38,11 @@ export interface CompactBoundedUintType {
38
38
  export type CompactUintType = CompactSizedUintType | CompactBoundedUintType;
39
39
  /** Compact `Field`: 32 bytes little-endian, value below {@link FIELD_MODULUS}. */
40
40
  export interface CompactFieldType {
41
- readonly kind: 'field';
41
+ readonly kind: "field";
42
42
  }
43
43
  /** Compact `Bytes<length>`: raw bytes, copied verbatim. `Bytes<0>` is legal. */
44
44
  export interface CompactBytesType {
45
- readonly kind: 'bytes';
45
+ readonly kind: "bytes";
46
46
  readonly length: number;
47
47
  }
48
48
  /**
@@ -52,7 +52,7 @@ export interface CompactBytesType {
52
52
  * Values are numbers, matching the generated contract bindings.
53
53
  */
54
54
  export interface CompactEnumType {
55
- readonly kind: 'enum';
55
+ readonly kind: "enum";
56
56
  readonly variants: number;
57
57
  }
58
58
  /**
@@ -60,7 +60,7 @@ export interface CompactEnumType {
60
60
  * prefix. `Vector<0, T>` is legal and zero bytes wide.
61
61
  */
62
62
  export interface CompactVectorType {
63
- readonly kind: 'vector';
63
+ readonly kind: "vector";
64
64
  readonly length: number;
65
65
  readonly element: CompactType;
66
66
  }
@@ -72,7 +72,7 @@ export interface CompactVectorType {
72
72
  * bytes wide.
73
73
  */
74
74
  export interface CompactTupleType {
75
- readonly kind: 'tuple';
75
+ readonly kind: "tuple";
76
76
  readonly elements: readonly CompactType[];
77
77
  }
78
78
  /**
@@ -80,12 +80,13 @@ export interface CompactTupleType {
80
80
  * A struct with no fields is legal and zero bytes wide.
81
81
  */
82
82
  export interface CompactStructType {
83
- readonly kind: 'struct';
83
+ readonly kind: "struct";
84
84
  readonly fields: readonly {
85
85
  readonly name: string;
86
86
  readonly type: CompactType;
87
87
  }[];
88
88
  }
89
+ /** Any Compact type descriptor: the union of every supported kind. */
89
90
  export type CompactType = CompactBooleanType | CompactUintType | CompactFieldType | CompactBytesType | CompactEnumType | CompactVectorType | CompactTupleType | CompactStructType;
90
91
  /**
91
92
  * The TypeScript value shapes descriptors map to, matching the generated
@@ -122,11 +123,12 @@ export type CompactValue = boolean | bigint | number | Uint8Array | CompactValue
122
123
  * alias with its own type parameter so the mapped type is homomorphic (an
123
124
  * inline `keyof T['elements']` would map method keys too, not just indices).
124
125
  */
125
- type CompactTupleValueOf<E extends readonly CompactType[]> = number extends E['length'] ? CompactValue[] : {
126
+ type CompactTupleValueOf<E extends readonly CompactType[]> = number extends E["length"] ? CompactValue[] : {
126
127
  -readonly [I in keyof E]: CompactValueOf<E[I]>;
127
128
  };
128
- export type CompactValueOf<T extends CompactType> = T extends CompactBooleanType ? boolean : T extends CompactUintType | CompactFieldType ? bigint : T extends CompactEnumType ? number : T extends CompactBytesType ? Uint8Array : T extends CompactVectorType ? CompactValueOf<T['element']>[] : T extends CompactTupleType ? CompactTupleValueOf<T['elements']> : T extends CompactStructType ? {
129
- -readonly [F in T['fields'][number] as F['name']]: CompactValueOf<F['type']>;
129
+ /** The TypeScript value type a given Compact descriptor serializes. */
130
+ export type CompactValueOf<T extends CompactType> = T extends CompactBooleanType ? boolean : T extends CompactUintType | CompactFieldType ? bigint : T extends CompactEnumType ? number : T extends CompactBytesType ? Uint8Array : T extends CompactVectorType ? CompactValueOf<T["element"]>[] : T extends CompactTupleType ? CompactTupleValueOf<T["elements"]> : T extends CompactStructType ? {
131
+ -readonly [F in T["fields"][number] as F["name"]]: CompactValueOf<F["type"]>;
130
132
  } : never;
131
133
  export {};
132
134
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -9,7 +9,7 @@
9
9
  // "Opaque<...> is not a serializable type".
10
10
  /**
11
11
  * The BLS12-381 scalar field modulus. A Compact `Field` value must be below
12
- * it. Matches `maxField + 1n` exported by @midnight-ntwrk/compact-runtime.
12
+ * it. Matches `maxField + 1n` exported by `@midnight-ntwrk/compact-runtime`.
13
13
  */
14
14
  export const FIELD_MODULUS = 0x73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001n;
15
15
  /** Maximum `Uint` width accepted by compactc 0.33 (bits). */
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,4EAA4E;AAC5E,2EAA2E;AAC3E,2EAA2E;AAC3E,mBAAmB;AACnB,EAAE;AACF,4EAA4E;AAC5E,iEAAiE;AACjE,4CAA4C;AAE5C;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GACxB,mEAAmE,CAAC;AAEtE,6DAA6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,IAAI,IAAI,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,4EAA4E;AAC5E,2EAA2E;AAC3E,2EAA2E;AAC3E,mBAAmB;AACnB,EAAE;AACF,4EAA4E;AAC5E,iEAAiE;AACjE,4CAA4C;AAE5C;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,mEAAmE,CAAC;AAEjG,6DAA6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,IAAI,IAAI,CAAC"}
@@ -1,8 +1,11 @@
1
- import type { CompactType } from './types.ts';
1
+ import type { CompactType } from "./types.ts";
2
2
  /**
3
3
  * Cross-realm-safe Uint8Array check. `instanceof` fails for buffers created
4
4
  * in another realm (node:vm context, iframe), which are otherwise perfectly
5
5
  * valid inputs, so fall back to the brand check.
6
+ *
7
+ * @param value - The value to test.
8
+ * @returns Whether the value is a Uint8Array from any realm.
6
9
  */
7
10
  export declare function isUint8Array(value: unknown): value is Uint8Array;
8
11
  /**
@@ -10,14 +13,27 @@ export declare function isUint8Array(value: unknown): value is Uint8Array;
10
13
  * Rejects unknown kinds, unexpected extra keys (typo protection), out-of-range
11
14
  * widths and lengths, empty or duplicate struct field names, and any
12
15
  * non-object node. Error messages carry the path to the offending node.
16
+ *
17
+ * @param type - The candidate descriptor.
18
+ * @param label - Path prefix for error messages.
19
+ * @throws {Error} If the descriptor is malformed at any depth.
13
20
  */
14
21
  export declare function assertCompactType(type: unknown, label?: string): asserts type is CompactType;
15
- /** Boolean form of {@link assertCompactType}. */
22
+ /**
23
+ * Boolean form of {@link assertCompactType}.
24
+ *
25
+ * @param type - The candidate descriptor.
26
+ * @returns Whether the descriptor is structurally valid.
27
+ */
16
28
  export declare function isCompactType(type: unknown): type is CompactType;
17
29
  /**
18
30
  * Exhaustiveness backstop for descriptor switches. Statically `value` is
19
31
  * `never` (every kind handled); at runtime it still throws on anything that
20
32
  * slipped past validation instead of falling through to undefined behaviour.
33
+ *
34
+ * @param value - The descriptor every branch was meant to have handled.
35
+ * @param label - Caller name, used in the error message.
36
+ * @throws {Error} Always, naming the unhandled kind.
21
37
  */
22
38
  export declare function assertUnreachable(value: never, label: string): never;
23
39
  //# sourceMappingURL=validate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAuB9C;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAKhE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,EACb,KAAK,SAAS,GACb,OAAO,CAAC,IAAI,IAAI,WAAW,CAiI7B;AAED,iDAAiD;AACjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,WAAW,CAOhE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAGpE"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAuB9C;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAIhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,SAAS,GAAG,OAAO,CAAC,IAAI,IAAI,WAAW,CAkI5F;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,WAAW,CAOhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,CAGpE"}
package/dist/validate.js CHANGED
@@ -7,19 +7,19 @@
7
7
  import { MAX_UINT_BITS, MAX_UINT_BOUND } from "./types.js";
8
8
  /** The exact keys allowed on each descriptor kind: extra keys are rejected. */
9
9
  const KIND_KEYS = {
10
- boolean: ['kind'],
11
- uint: ['kind', 'bits', 'bound'],
12
- field: ['kind'],
13
- bytes: ['kind', 'length'],
14
- enum: ['kind', 'variants'],
15
- vector: ['kind', 'length', 'element'],
16
- tuple: ['kind', 'elements'],
17
- struct: ['kind', 'fields'],
10
+ boolean: ["kind"],
11
+ uint: ["kind", "bits", "bound"],
12
+ field: ["kind"],
13
+ bytes: ["kind", "length"],
14
+ enum: ["kind", "variants"],
15
+ vector: ["kind", "length", "element"],
16
+ tuple: ["kind", "elements"],
17
+ struct: ["kind", "fields"],
18
18
  };
19
19
  function assertNonNegativeInteger(value, label) {
20
20
  // isSafeInteger, not isInteger: a length like 2^60 passes isInteger but
21
21
  // breaks the Number arithmetic packed sizes are computed with.
22
- if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) {
22
+ if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 0) {
23
23
  throw new Error(`${label} must be a non-negative safe integer, got ${String(value)}`);
24
24
  }
25
25
  }
@@ -27,44 +27,51 @@ function assertNonNegativeInteger(value, label) {
27
27
  * Cross-realm-safe Uint8Array check. `instanceof` fails for buffers created
28
28
  * in another realm (node:vm context, iframe), which are otherwise perfectly
29
29
  * valid inputs, so fall back to the brand check.
30
+ *
31
+ * @param value - The value to test.
32
+ * @returns Whether the value is a Uint8Array from any realm.
30
33
  */
31
34
  export function isUint8Array(value) {
32
- return (value instanceof Uint8Array ||
33
- Object.prototype.toString.call(value) === '[object Uint8Array]');
35
+ return (value instanceof Uint8Array || Object.prototype.toString.call(value) === "[object Uint8Array]");
34
36
  }
35
37
  /**
36
38
  * Assert that `type` is a structurally valid {@link CompactType}, recursively.
37
39
  * Rejects unknown kinds, unexpected extra keys (typo protection), out-of-range
38
40
  * widths and lengths, empty or duplicate struct field names, and any
39
41
  * non-object node. Error messages carry the path to the offending node.
42
+ *
43
+ * @param type - The candidate descriptor.
44
+ * @param label - Path prefix for error messages.
45
+ * @throws {Error} If the descriptor is malformed at any depth.
40
46
  */
41
- export function assertCompactType(type, label = 'type') {
42
- if (typeof type !== 'object' || type === null || Array.isArray(type)) {
47
+ export function assertCompactType(type, label = "type") {
48
+ if (typeof type !== "object" || type === null || Array.isArray(type)) {
43
49
  throw new Error(`${label}: descriptor must be a plain object`);
44
50
  }
45
51
  const record = type;
46
52
  const kind = record.kind;
47
53
  // Object.hasOwn, not `in`: `in` walks the prototype chain, so kinds like
48
54
  // 'toString' would slip past and die later with a confusing TypeError.
49
- if (typeof kind !== 'string' || !Object.hasOwn(KIND_KEYS, kind)) {
55
+ const allowedKeys = typeof kind === "string" ? KIND_KEYS[kind] : undefined;
56
+ if (typeof kind !== "string" || !Object.hasOwn(KIND_KEYS, kind) || allowedKeys === undefined) {
50
57
  throw new Error(`${label}: unknown descriptor kind ${JSON.stringify(kind)} ` +
51
58
  `(expected 'boolean' | 'uint' | 'field' | 'bytes' | 'enum' | 'vector' | 'tuple' | 'struct')`);
52
59
  }
53
60
  for (const key of Object.keys(record)) {
54
- if (!KIND_KEYS[kind].includes(key)) {
61
+ if (!allowedKeys.includes(key)) {
55
62
  throw new Error(`${label}: unexpected key '${key}' on a '${kind}' descriptor`);
56
63
  }
57
64
  }
58
65
  switch (kind) {
59
- case 'boolean':
60
- case 'field':
66
+ case "boolean":
67
+ case "field":
61
68
  return;
62
- case 'uint': {
69
+ case "uint": {
63
70
  // Own-property reads: a plain `record.bits` would resolve through the
64
71
  // prototype chain, letting `{ __proto__: { bits: 8 }, kind: 'uint' }`
65
72
  // slip past even though Object.keys sees no such key.
66
- const bits = Object.hasOwn(record, 'bits') ? record.bits : undefined;
67
- const bound = Object.hasOwn(record, 'bound') ? record.bound : undefined;
73
+ const bits = Object.hasOwn(record, "bits") ? record.bits : undefined;
74
+ const bound = Object.hasOwn(record, "bound") ? record.bound : undefined;
68
75
  const hasBits = bits !== undefined;
69
76
  const hasBound = bound !== undefined;
70
77
  if (hasBits === hasBound) {
@@ -72,19 +79,19 @@ export function assertCompactType(type, label = 'type') {
72
79
  `or 'bound' (bounded Uint<0..n>)`);
73
80
  }
74
81
  if (hasBits) {
75
- if (typeof bits !== 'number' ||
82
+ if (typeof bits !== "number" ||
76
83
  !Number.isInteger(bits) ||
77
84
  bits < 1 ||
78
85
  bits > MAX_UINT_BITS) {
79
- throw new Error(`${label}: uint bits must be an integer in 1..${MAX_UINT_BITS}, got ${String(bits)}`);
86
+ throw new Error(`${label}: uint bits must be an integer in 1..${String(MAX_UINT_BITS)}, got ${JSON.stringify(bits)}`);
80
87
  }
81
88
  return;
82
89
  }
83
- if (typeof bound === 'number' && !Number.isSafeInteger(bound)) {
90
+ if (typeof bound === "number" && !Number.isSafeInteger(bound)) {
84
91
  throw new Error(`${label}: a number uint bound must be a safe integer (use a bigint ` +
85
92
  `beyond 2^53), got ${String(bound)}`);
86
93
  }
87
- if (typeof bound !== 'number' && typeof bound !== 'bigint') {
94
+ if (typeof bound !== "number" && typeof bound !== "bigint") {
88
95
  throw new Error(`${label}: uint bound must be a number or bigint, got ${String(bound)}`);
89
96
  }
90
97
  if (BigInt(bound) < 1n || BigInt(bound) > MAX_UINT_BOUND) {
@@ -93,48 +100,48 @@ export function assertCompactType(type, label = 'type') {
93
100
  }
94
101
  return;
95
102
  }
96
- case 'bytes':
103
+ case "bytes":
97
104
  assertNonNegativeInteger(record.length, `${label}: bytes length`);
98
105
  return;
99
- case 'enum': {
106
+ case "enum": {
100
107
  const variants = record.variants;
101
- if (typeof variants !== 'number' || !Number.isSafeInteger(variants) || variants < 1) {
108
+ if (typeof variants !== "number" || !Number.isSafeInteger(variants) || variants < 1) {
102
109
  throw new Error(`${label}: enum variants must be a positive integer, got ${String(variants)}`);
103
110
  }
104
111
  return;
105
112
  }
106
- case 'vector':
113
+ case "vector":
107
114
  assertNonNegativeInteger(record.length, `${label}: vector length`);
108
115
  assertCompactType(record.element, `${label}.element`);
109
116
  return;
110
- case 'tuple': {
117
+ case "tuple": {
111
118
  const elements = record.elements;
112
119
  if (!Array.isArray(elements)) {
113
120
  throw new Error(`${label}: tuple elements must be an array`);
114
121
  }
115
122
  elements.forEach((element, i) => {
116
- assertCompactType(element, `${label}.elements[${i}]`);
123
+ assertCompactType(element, `${label}.elements[${String(i)}]`);
117
124
  });
118
125
  return;
119
126
  }
120
- case 'struct': {
127
+ case "struct": {
121
128
  const fields = record.fields;
122
129
  if (!Array.isArray(fields)) {
123
130
  throw new Error(`${label}: struct fields must be an array`);
124
131
  }
125
132
  const seen = new Set();
126
133
  fields.forEach((field, i) => {
127
- const fieldLabel = `${label}.fields[${i}]`;
128
- if (typeof field !== 'object' || field === null || Array.isArray(field)) {
134
+ const fieldLabel = `${label}.fields[${String(i)}]`;
135
+ if (typeof field !== "object" || field === null || Array.isArray(field)) {
129
136
  throw new Error(`${fieldLabel}: field must be a plain object`);
130
137
  }
131
138
  const fieldRecord = field;
132
139
  for (const key of Object.keys(fieldRecord)) {
133
- if (key !== 'name' && key !== 'type') {
140
+ if (key !== "name" && key !== "type") {
134
141
  throw new Error(`${fieldLabel}: unexpected key '${key}' on a struct field`);
135
142
  }
136
143
  }
137
- if (typeof fieldRecord.name !== 'string' || fieldRecord.name.length === 0) {
144
+ if (typeof fieldRecord.name !== "string" || fieldRecord.name.length === 0) {
138
145
  throw new Error(`${fieldLabel}: field name must be a non-empty string`);
139
146
  }
140
147
  if (seen.has(fieldRecord.name)) {
@@ -147,7 +154,12 @@ export function assertCompactType(type, label = 'type') {
147
154
  }
148
155
  }
149
156
  }
150
- /** Boolean form of {@link assertCompactType}. */
157
+ /**
158
+ * Boolean form of {@link assertCompactType}.
159
+ *
160
+ * @param type - The candidate descriptor.
161
+ * @returns Whether the descriptor is structurally valid.
162
+ */
151
163
  export function isCompactType(type) {
152
164
  try {
153
165
  assertCompactType(type);
@@ -161,6 +173,10 @@ export function isCompactType(type) {
161
173
  * Exhaustiveness backstop for descriptor switches. Statically `value` is
162
174
  * `never` (every kind handled); at runtime it still throws on anything that
163
175
  * slipped past validation instead of falling through to undefined behaviour.
176
+ *
177
+ * @param value - The descriptor every branch was meant to have handled.
178
+ * @param label - Caller name, used in the error message.
179
+ * @throws {Error} Always, naming the unhandled kind.
164
180
  */
165
181
  export function assertUnreachable(value, label) {
166
182
  const kind = value?.kind;
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sig-net/midnight-serde",
3
- "version": "0.19.0",
3
+ "version": "0.21.0-rc.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/sig-net/midnight-integration",
@@ -38,7 +38,8 @@
38
38
  "devDependencies": {
39
39
  "@midnight-ntwrk/compact-runtime": "0.18.0-rc.1",
40
40
  "@types/node": "^26.1.0",
41
- "typescript": "^6.0.3",
41
+ "@vitest/coverage-v8": "^4.1.10",
42
+ "typescript": "^7.0.2",
42
43
  "vitest": "^4.1.9"
43
44
  },
44
45
  "main": "./dist/index.js",