@aztec/foundation 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dest/abi/decoder.d.ts.map +1 -1
- package/dest/abi/decoder.js +12 -3
- package/dest/abi/encoder.d.ts.map +1 -1
- package/dest/abi/encoder.js +9 -2
- package/dest/abi/index.d.ts +1 -1
- package/dest/abi/index.d.ts.map +1 -1
- package/dest/abi/index.js +2 -2
- package/dest/abi/selector.d.ts +128 -0
- package/dest/abi/selector.d.ts.map +1 -0
- package/dest/abi/selector.js +179 -0
- package/dest/array/array.d.ts +54 -0
- package/dest/array/array.d.ts.map +1 -0
- package/dest/array/array.js +59 -0
- package/dest/array/index.d.ts +2 -0
- package/dest/array/index.d.ts.map +1 -0
- package/dest/array/index.js +2 -0
- package/dest/bigint-buffer/index.d.ts +6 -0
- package/dest/bigint-buffer/index.d.ts.map +1 -1
- package/dest/bigint-buffer/index.js +13 -1
- package/dest/fifo/memory_fifo.d.ts +2 -1
- package/dest/fifo/memory_fifo.d.ts.map +1 -1
- package/dest/fifo/memory_fifo.js +6 -2
- package/dest/fifo/serial_queue.d.ts +1 -1
- package/dest/fifo/serial_queue.d.ts.map +1 -1
- package/dest/fifo/serial_queue.js +6 -3
- package/dest/json-rpc/server/index.d.ts +1 -1
- package/dest/json-rpc/server/index.d.ts.map +1 -1
- package/dest/json-rpc/server/index.js +2 -2
- package/dest/json-rpc/server/json_rpc_server.d.ts +10 -0
- package/dest/json-rpc/server/json_rpc_server.d.ts.map +1 -1
- package/dest/json-rpc/server/json_rpc_server.js +15 -1
- package/dest/serialize/free_funcs.d.ts +7 -119
- package/dest/serialize/free_funcs.d.ts.map +1 -1
- package/dest/serialize/free_funcs.js +17 -127
- package/dest/serialize/index.d.ts +1 -0
- package/dest/serialize/index.d.ts.map +1 -1
- package/dest/serialize/index.js +2 -1
- package/dest/serialize/serialize.d.ts +167 -0
- package/dest/serialize/serialize.d.ts.map +1 -0
- package/dest/serialize/serialize.js +212 -0
- package/package.json +4 -3
- package/dest/abi/function_selector.d.ts +0 -83
- package/dest/abi/function_selector.d.ts.map +0 -1
- package/dest/abi/function_selector.js +0 -124
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/abi/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAA6B,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/abi/decoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAA6B,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAA;CAAE,CAAC;AAgFlG;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,EAAE,YAAY,EAAE,EAAE,EAAE,iBAE3E;AAED;;GAEG;AACH,qBAAa,wBAAwB;IAEvB,OAAO,CAAC,IAAI;IAAU,OAAO,CAAC,UAAU;IAAkB,OAAO,CAAC,YAAY;IAD1F,OAAO,CAAC,SAAS,CAAS;gBACN,IAAI,EAAE,MAAM,EAAU,UAAU,EAAE,YAAY,EAAE,EAAU,YAAY,UAAQ;IAIlG;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAsBxB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAKvB;;;OAGG;IACI,MAAM,IAAI,MAAM;CAGxB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAE/E;AAED;;;;;GAKG;AACH,wBAAgB,yCAAyC,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAEjG"}
|
package/dest/abi/decoder.js
CHANGED
|
@@ -37,8 +37,15 @@ class ReturnValuesDecoder {
|
|
|
37
37
|
}
|
|
38
38
|
return struct;
|
|
39
39
|
}
|
|
40
|
+
case 'string': {
|
|
41
|
+
const array = [];
|
|
42
|
+
for (let i = 0; i < abiType.length; i += 1) {
|
|
43
|
+
array.push(this.getNextField().toBigInt());
|
|
44
|
+
}
|
|
45
|
+
return array;
|
|
46
|
+
}
|
|
40
47
|
default:
|
|
41
|
-
throw new Error(`Unsupported type: ${abiType
|
|
48
|
+
throw new Error(`Unsupported type: ${abiType}`);
|
|
42
49
|
}
|
|
43
50
|
}
|
|
44
51
|
/**
|
|
@@ -105,10 +112,12 @@ export class FunctionSignatureDecoder {
|
|
|
105
112
|
return 'bool';
|
|
106
113
|
case 'array':
|
|
107
114
|
return `[${this.getParameterType(param.type)};${param.length}]`;
|
|
115
|
+
case 'string':
|
|
116
|
+
return `str<${param.length}>`;
|
|
108
117
|
case 'struct':
|
|
109
118
|
return `(${param.fields.map(field => `${this.decodeParameter(field)}`).join(this.separator)})`;
|
|
110
119
|
default:
|
|
111
|
-
throw new Error(`Unsupported type: ${param
|
|
120
|
+
throw new Error(`Unsupported type: ${param}`);
|
|
112
121
|
}
|
|
113
122
|
}
|
|
114
123
|
/**
|
|
@@ -146,4 +155,4 @@ export function decodeFunctionSignature(name, parameters) {
|
|
|
146
155
|
export function decodeFunctionSignatureWithParameterNames(name, parameters) {
|
|
147
156
|
return new FunctionSignatureDecoder(name, parameters, true).decode();
|
|
148
157
|
}
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hYmkvZGVjb2Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQTs7O0dBR0c7QUFDSCxNQUFNLG1CQUFtQjtJQUN2QixZQUFvQixRQUEwQixFQUFVLFNBQWU7UUFBbkQsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFNO0lBQUcsQ0FBQztJQUUzRTs7OztPQUlHO0lBQ0ssWUFBWSxDQUFDLE9BQWdCO1FBQ25DLFFBQVEsT0FBTyxDQUFDLElBQUksRUFBRTtZQUNwQixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEMsS0FBSyxTQUFTO2dCQUNaLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7b0JBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztpQkFDckQ7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEMsS0FBSyxTQUFTO2dCQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkMsS0FBSyxPQUFPLENBQUMsQ0FBQztnQkFDWixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztpQkFDN0M7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUNELEtBQUssUUFBUSxDQUFDLENBQUM7Z0JBQ2IsTUFBTSxNQUFNLEdBQXFDLEVBQUUs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../src/abi/encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAW,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../src/abi/encoder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAW,WAAW,EAAE,MAAM,UAAU,CAAC;AA2HhD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,QAE5D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,UAElD"}
|
package/dest/abi/encoder.js
CHANGED
|
@@ -72,6 +72,13 @@ class ArgumentEncoder {
|
|
|
72
72
|
this.encodeArgument(abiType.type, arg[i], `${name}[${i}]`);
|
|
73
73
|
}
|
|
74
74
|
break;
|
|
75
|
+
case 'string':
|
|
76
|
+
for (let i = 0; i < abiType.length; i += 1) {
|
|
77
|
+
// If the string is shorter than the defined length, pad it with 0s.
|
|
78
|
+
const toInsert = i < arg.length ? BigInt(arg.charCodeAt(i)) : 0n;
|
|
79
|
+
this.flattened.push(new Fr(toInsert));
|
|
80
|
+
}
|
|
81
|
+
break;
|
|
75
82
|
case 'struct': {
|
|
76
83
|
// If the abi expects a struct like { address: Field } and the supplied arg does not have
|
|
77
84
|
// an address field in it, we try to encode it as if it were a field directly.
|
|
@@ -103,7 +110,7 @@ class ArgumentEncoder {
|
|
|
103
110
|
this.flattened.push(new Fr(arg));
|
|
104
111
|
break;
|
|
105
112
|
default:
|
|
106
|
-
throw new Error(`Unsupported type: ${abiType
|
|
113
|
+
throw new Error(`Unsupported type: ${abiType}`);
|
|
107
114
|
}
|
|
108
115
|
}
|
|
109
116
|
/**
|
|
@@ -135,4 +142,4 @@ export function encodeArguments(abi, args) {
|
|
|
135
142
|
export function countArgumentsSize(abi) {
|
|
136
143
|
return abi.parameters.reduce((acc, parameter) => acc + ArgumentEncoder.typeSize(parameter.type), 0);
|
|
137
144
|
}
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
145
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hYmkvZW5jb2Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV2RTs7O0dBR0c7QUFDSCxNQUFNLGVBQWU7SUFHbkIsWUFBb0IsR0FBZ0IsRUFBVSxJQUFXO1FBQXJDLFFBQUcsR0FBSCxHQUFHLENBQWE7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFPO1FBRmpELGNBQVMsR0FBUyxFQUFFLENBQUM7SUFFK0IsQ0FBQztJQUU3RCxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQWdCO1FBQzlCLFFBQVEsT0FBTyxDQUFDLElBQUksRUFBRTtZQUNwQixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssU0FBUyxDQUFDO1lBQ2YsS0FBSyxTQUFTO2dCQUNaLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsS0FBSyxRQUFRO2dCQUNYLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUN4QixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxPQUFPLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pFLEtBQUssUUFBUTtnQkFDWCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlGLE9BQU8sQ0FBQyxDQUFDO2dCQUNQLE1BQU0sZUFBZSxHQUFVLE9BQU8sQ0FBQztnQkFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsZUFBZSxFQUFFLENBQUMsQ0FBQzthQUMz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
|
package/dest/abi/index.d.ts
CHANGED
package/dest/abi/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/abi/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/abi/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC"}
|
package/dest/abi/index.js
CHANGED
|
@@ -2,6 +2,6 @@ export * from './abi.js';
|
|
|
2
2
|
export * from './abi_coder.js';
|
|
3
3
|
export * from './encoder.js';
|
|
4
4
|
export * from './decoder.js';
|
|
5
|
-
export * from './
|
|
5
|
+
export * from './selector.js';
|
|
6
6
|
export * from './utils.js';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxZQUFZLENBQUMifQ==
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { BufferReader } from '@aztec/foundation/serialize';
|
|
3
|
+
import { Fr } from '../fields/index.js';
|
|
4
|
+
import { ABIParameter } from './abi.js';
|
|
5
|
+
/** A selector is the first 4 bytes of the hash of a signature. */
|
|
6
|
+
declare abstract class Selector {
|
|
7
|
+
value: number;
|
|
8
|
+
/** The size of the selector in bytes. */
|
|
9
|
+
static SIZE: number;
|
|
10
|
+
constructor(/** Value of the selector */ value: number);
|
|
11
|
+
/**
|
|
12
|
+
* Checks if the selector is empty (all bytes are 0).
|
|
13
|
+
* @returns True if the selector is empty (all bytes are 0).
|
|
14
|
+
*/
|
|
15
|
+
isEmpty(): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Serialize as a buffer.
|
|
18
|
+
* @param bufferSize - The buffer size.
|
|
19
|
+
* @returns The buffer.
|
|
20
|
+
*/
|
|
21
|
+
toBuffer(bufferSize?: number): Buffer;
|
|
22
|
+
/**
|
|
23
|
+
* Serialize as a hex string.
|
|
24
|
+
* @returns The string.
|
|
25
|
+
*/
|
|
26
|
+
toString(): string;
|
|
27
|
+
/**
|
|
28
|
+
* Checks if this selector is equal to another.
|
|
29
|
+
* @param other - The other selector.
|
|
30
|
+
* @returns True if the selectors are equal.
|
|
31
|
+
*/
|
|
32
|
+
equals(other: Selector): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Returns a new field with the same contents as this EthAddress.
|
|
35
|
+
*
|
|
36
|
+
* @returns An Fr instance.
|
|
37
|
+
*/
|
|
38
|
+
toField(): Fr;
|
|
39
|
+
}
|
|
40
|
+
/** Function selector branding */
|
|
41
|
+
export interface FunctionSelector {
|
|
42
|
+
/** Brand. */
|
|
43
|
+
_branding: 'FunctionSelector';
|
|
44
|
+
}
|
|
45
|
+
/** A function selector is the first 4 bytes of the hash of a function signature. */
|
|
46
|
+
export declare class FunctionSelector extends Selector {
|
|
47
|
+
/**
|
|
48
|
+
* Deserializes from a buffer or reader, corresponding to a write in cpp.
|
|
49
|
+
* @param buffer - Buffer or BufferReader to read from.
|
|
50
|
+
* @returns The Selector.
|
|
51
|
+
*/
|
|
52
|
+
static fromBuffer(buffer: Buffer | BufferReader): FunctionSelector;
|
|
53
|
+
/**
|
|
54
|
+
* Converts a field to selector.
|
|
55
|
+
* @param fr - The field to convert.
|
|
56
|
+
* @returns The selector.
|
|
57
|
+
*/
|
|
58
|
+
static fromField(fr: Fr): FunctionSelector;
|
|
59
|
+
/**
|
|
60
|
+
* Creates a selector from a signature.
|
|
61
|
+
* @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
|
|
62
|
+
* @returns selector.
|
|
63
|
+
*/
|
|
64
|
+
static fromSignature(signature: string): FunctionSelector;
|
|
65
|
+
/**
|
|
66
|
+
* Create a Selector instance from a hex-encoded string.
|
|
67
|
+
* The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
|
|
68
|
+
* Throws an error if the input length is invalid or address value is out of range.
|
|
69
|
+
*
|
|
70
|
+
* @param selector - The hex-encoded string representing the Selector.
|
|
71
|
+
* @returns An Selector instance.
|
|
72
|
+
*/
|
|
73
|
+
static fromString(selector: string): FunctionSelector;
|
|
74
|
+
/**
|
|
75
|
+
* Creates an empty selector.
|
|
76
|
+
* @returns An empty selector.
|
|
77
|
+
*/
|
|
78
|
+
static empty(): FunctionSelector;
|
|
79
|
+
/**
|
|
80
|
+
* Creates a function selector for a given function name and parameters.
|
|
81
|
+
* @param name - The name of the function.
|
|
82
|
+
* @param parameters - An array of ABIParameter objects, each containing the type information of a function parameter.
|
|
83
|
+
* @returns A Buffer containing the 4-byte selector.
|
|
84
|
+
*/
|
|
85
|
+
static fromNameAndParameters(name: string, parameters: ABIParameter[]): FunctionSelector;
|
|
86
|
+
}
|
|
87
|
+
/** Event selector branding */
|
|
88
|
+
export interface EventSelector {
|
|
89
|
+
/** Brand. */
|
|
90
|
+
_branding: 'EventSelector';
|
|
91
|
+
}
|
|
92
|
+
/** An event selector is the first 4 bytes of the hash of an event signature. */
|
|
93
|
+
export declare class EventSelector extends Selector {
|
|
94
|
+
/**
|
|
95
|
+
* Deserializes from a buffer or reader, corresponding to a write in cpp.
|
|
96
|
+
* @param buffer - Buffer or BufferReader to read from.
|
|
97
|
+
* @returns The Selector.
|
|
98
|
+
*/
|
|
99
|
+
static fromBuffer(buffer: Buffer | BufferReader): EventSelector;
|
|
100
|
+
/**
|
|
101
|
+
* Converts a field to selector.
|
|
102
|
+
* @param fr - The field to convert.
|
|
103
|
+
* @returns The selector.
|
|
104
|
+
*/
|
|
105
|
+
static fromField(fr: Fr): EventSelector;
|
|
106
|
+
/**
|
|
107
|
+
* Creates a selector from a signature.
|
|
108
|
+
* @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
|
|
109
|
+
* @returns selector.
|
|
110
|
+
*/
|
|
111
|
+
static fromSignature(signature: string): EventSelector;
|
|
112
|
+
/**
|
|
113
|
+
* Create a Selector instance from a hex-encoded string.
|
|
114
|
+
* The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
|
|
115
|
+
* Throws an error if the input length is invalid or address value is out of range.
|
|
116
|
+
*
|
|
117
|
+
* @param selector - The hex-encoded string representing the Selector.
|
|
118
|
+
* @returns An Selector instance.
|
|
119
|
+
*/
|
|
120
|
+
static fromString(selector: string): EventSelector;
|
|
121
|
+
/**
|
|
122
|
+
* Creates an empty selector.
|
|
123
|
+
* @returns An empty selector.
|
|
124
|
+
*/
|
|
125
|
+
static empty(): EventSelector;
|
|
126
|
+
}
|
|
127
|
+
export {};
|
|
128
|
+
//# sourceMappingURL=selector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../src/abi/selector.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAKxC,kEAAkE;AAClE,uBAAe,QAAQ;IAI2B,KAAK,EAAE,MAAM;IAH7D,yCAAyC;IACzC,OAAc,IAAI,SAAK;gBAEX,4BAA4B,CAAQ,KAAK,EAAE,MAAM;IAM7D;;;OAGG;IACI,OAAO,IAAI,OAAO;IAIzB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,SAAgB,GAAG,MAAM;IAI5C;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAIlB;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIhC;;;;OAIG;IACI,OAAO;CAGf;AAED,iCAAiC;AACjC,MAAM,WAAW,gBAAgB;IAC/B,aAAa;IACb,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED,oFAAoF;AACpF,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAM/C;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE;IAIvB;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM;IAQtC;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM;IAQlC;;;OAGG;IACH,MAAM,CAAC,KAAK;IAIZ;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE;CAOtE;AAED,8BAA8B;AAC9B,MAAM,WAAW,aAAa;IAC5B,aAAa;IACb,SAAS,EAAE,eAAe,CAAC;CAC5B;AAED,gFAAgF;AAChF,qBAAa,aAAc,SAAQ,QAAQ;IACzC;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY;IAM/C;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE;IAIvB;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM;IAQtC;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM;IAQlC;;;OAGG;IACH,MAAM,CAAC,KAAK;CAGb"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { fromHex, toBigIntBE, toBufferBE } from '@aztec/foundation/bigint-buffer';
|
|
2
|
+
import { BufferReader } from '@aztec/foundation/serialize';
|
|
3
|
+
import { keccak } from '../crypto/keccak/index.js';
|
|
4
|
+
import { Fr } from '../fields/index.js';
|
|
5
|
+
import { decodeFunctionSignature } from './decoder.js';
|
|
6
|
+
/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */
|
|
7
|
+
/** A selector is the first 4 bytes of the hash of a signature. */
|
|
8
|
+
class Selector {
|
|
9
|
+
constructor(/** Value of the selector */ value) {
|
|
10
|
+
this.value = value;
|
|
11
|
+
if (value > 2 ** (Selector.SIZE * 8) - 1) {
|
|
12
|
+
throw new Error(`selector must fit in ${Selector.SIZE} bytes.`);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Checks if the selector is empty (all bytes are 0).
|
|
17
|
+
* @returns True if the selector is empty (all bytes are 0).
|
|
18
|
+
*/
|
|
19
|
+
isEmpty() {
|
|
20
|
+
return this.value === 0;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Serialize as a buffer.
|
|
24
|
+
* @param bufferSize - The buffer size.
|
|
25
|
+
* @returns The buffer.
|
|
26
|
+
*/
|
|
27
|
+
toBuffer(bufferSize = Selector.SIZE) {
|
|
28
|
+
return toBufferBE(BigInt(this.value), bufferSize);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Serialize as a hex string.
|
|
32
|
+
* @returns The string.
|
|
33
|
+
*/
|
|
34
|
+
toString() {
|
|
35
|
+
return this.toBuffer().toString('hex');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Checks if this selector is equal to another.
|
|
39
|
+
* @param other - The other selector.
|
|
40
|
+
* @returns True if the selectors are equal.
|
|
41
|
+
*/
|
|
42
|
+
equals(other) {
|
|
43
|
+
return this.value === other.value;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Returns a new field with the same contents as this EthAddress.
|
|
47
|
+
*
|
|
48
|
+
* @returns An Fr instance.
|
|
49
|
+
*/
|
|
50
|
+
toField() {
|
|
51
|
+
return new Fr(BigInt(this.value));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** The size of the selector in bytes. */
|
|
55
|
+
Selector.SIZE = 4;
|
|
56
|
+
/** A function selector is the first 4 bytes of the hash of a function signature. */
|
|
57
|
+
export class FunctionSelector extends Selector {
|
|
58
|
+
/**
|
|
59
|
+
* Deserializes from a buffer or reader, corresponding to a write in cpp.
|
|
60
|
+
* @param buffer - Buffer or BufferReader to read from.
|
|
61
|
+
* @returns The Selector.
|
|
62
|
+
*/
|
|
63
|
+
static fromBuffer(buffer) {
|
|
64
|
+
const reader = BufferReader.asReader(buffer);
|
|
65
|
+
const value = Number(toBigIntBE(reader.readBytes(Selector.SIZE)));
|
|
66
|
+
return new FunctionSelector(value);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Converts a field to selector.
|
|
70
|
+
* @param fr - The field to convert.
|
|
71
|
+
* @returns The selector.
|
|
72
|
+
*/
|
|
73
|
+
static fromField(fr) {
|
|
74
|
+
return new FunctionSelector(Number(fr.toBigInt()));
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Creates a selector from a signature.
|
|
78
|
+
* @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
|
|
79
|
+
* @returns selector.
|
|
80
|
+
*/
|
|
81
|
+
static fromSignature(signature) {
|
|
82
|
+
// throw if signature contains whitespace
|
|
83
|
+
if (/\s/.test(signature)) {
|
|
84
|
+
throw new Error('Signature cannot contain whitespace');
|
|
85
|
+
}
|
|
86
|
+
return FunctionSelector.fromBuffer(keccak(Buffer.from(signature)).subarray(0, Selector.SIZE));
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Create a Selector instance from a hex-encoded string.
|
|
90
|
+
* The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
|
|
91
|
+
* Throws an error if the input length is invalid or address value is out of range.
|
|
92
|
+
*
|
|
93
|
+
* @param selector - The hex-encoded string representing the Selector.
|
|
94
|
+
* @returns An Selector instance.
|
|
95
|
+
*/
|
|
96
|
+
static fromString(selector) {
|
|
97
|
+
const buf = fromHex(selector);
|
|
98
|
+
if (buf.length !== Selector.SIZE) {
|
|
99
|
+
throw new Error(`Invalid Selector length ${buf.length} (expected ${Selector.SIZE}).`);
|
|
100
|
+
}
|
|
101
|
+
return FunctionSelector.fromBuffer(buf);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Creates an empty selector.
|
|
105
|
+
* @returns An empty selector.
|
|
106
|
+
*/
|
|
107
|
+
static empty() {
|
|
108
|
+
return new FunctionSelector(0);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Creates a function selector for a given function name and parameters.
|
|
112
|
+
* @param name - The name of the function.
|
|
113
|
+
* @param parameters - An array of ABIParameter objects, each containing the type information of a function parameter.
|
|
114
|
+
* @returns A Buffer containing the 4-byte selector.
|
|
115
|
+
*/
|
|
116
|
+
static fromNameAndParameters(name, parameters) {
|
|
117
|
+
const signature = decodeFunctionSignature(name, parameters);
|
|
118
|
+
const selector = this.fromSignature(signature);
|
|
119
|
+
// If using the debug logger here it kill the typing in the `server_world_state_synchronizer` and jest tests.
|
|
120
|
+
// console.log(`selector for ${signature} is ${selector}`);
|
|
121
|
+
return selector;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/** An event selector is the first 4 bytes of the hash of an event signature. */
|
|
125
|
+
export class EventSelector extends Selector {
|
|
126
|
+
/**
|
|
127
|
+
* Deserializes from a buffer or reader, corresponding to a write in cpp.
|
|
128
|
+
* @param buffer - Buffer or BufferReader to read from.
|
|
129
|
+
* @returns The Selector.
|
|
130
|
+
*/
|
|
131
|
+
static fromBuffer(buffer) {
|
|
132
|
+
const reader = BufferReader.asReader(buffer);
|
|
133
|
+
const value = Number(toBigIntBE(reader.readBytes(Selector.SIZE)));
|
|
134
|
+
return new EventSelector(value);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Converts a field to selector.
|
|
138
|
+
* @param fr - The field to convert.
|
|
139
|
+
* @returns The selector.
|
|
140
|
+
*/
|
|
141
|
+
static fromField(fr) {
|
|
142
|
+
return new EventSelector(Number(fr.toBigInt()));
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Creates a selector from a signature.
|
|
146
|
+
* @param signature - Signature to generate the selector for (e.g. "transfer(field,field)").
|
|
147
|
+
* @returns selector.
|
|
148
|
+
*/
|
|
149
|
+
static fromSignature(signature) {
|
|
150
|
+
// throw if signature contains whitespace
|
|
151
|
+
if (/\s/.test(signature)) {
|
|
152
|
+
throw new Error('Signature cannot contain whitespace');
|
|
153
|
+
}
|
|
154
|
+
return EventSelector.fromBuffer(keccak(Buffer.from(signature)).subarray(0, Selector.SIZE));
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Create a Selector instance from a hex-encoded string.
|
|
158
|
+
* The input 'address' should be prefixed with '0x' or not, and have exactly 64 hex characters.
|
|
159
|
+
* Throws an error if the input length is invalid or address value is out of range.
|
|
160
|
+
*
|
|
161
|
+
* @param selector - The hex-encoded string representing the Selector.
|
|
162
|
+
* @returns An Selector instance.
|
|
163
|
+
*/
|
|
164
|
+
static fromString(selector) {
|
|
165
|
+
const buf = fromHex(selector);
|
|
166
|
+
if (buf.length !== Selector.SIZE) {
|
|
167
|
+
throw new Error(`Invalid Selector length ${buf.length} (expected ${Selector.SIZE}).`);
|
|
168
|
+
}
|
|
169
|
+
return EventSelector.fromBuffer(buf);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Creates an empty selector.
|
|
173
|
+
* @returns An empty selector.
|
|
174
|
+
*/
|
|
175
|
+
static empty() {
|
|
176
|
+
return new EventSelector(0);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWJpL3NlbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV2RCxxRUFBcUU7QUFFckUsa0VBQWtFO0FBQ2xFLE1BQWUsUUFBUTtJQUlyQixZQUFZLDRCQUE0QixDQUFRLEtBQWE7UUFBYixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQzNELElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLFFBQVEsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSTtRQUNqQyxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENB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
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Tuple } from '@aztec/foundation/serialize';
|
|
2
|
+
export type { FieldsOf } from '@aztec/foundation/types';
|
|
3
|
+
/**
|
|
4
|
+
* Create an array over an integer range.
|
|
5
|
+
* @param n - The number of integers.
|
|
6
|
+
* @param offset - The starting number.
|
|
7
|
+
* @returns The array of numbers.
|
|
8
|
+
*/
|
|
9
|
+
export declare function range(n: number, offset?: number): number[];
|
|
10
|
+
/**
|
|
11
|
+
* Create an array over an integer range, filled with a function 'fn'.
|
|
12
|
+
* This is used over e.g. lodash because it resolved to a tuple type, needed for our fixed array type safety.
|
|
13
|
+
* @param n - The number of integers.
|
|
14
|
+
* @param fn - The generator function.
|
|
15
|
+
* @returns The array of numbers.
|
|
16
|
+
*/
|
|
17
|
+
export declare function makeTuple<T, N extends number>(length: N, fn: (i: number) => T, offset?: number): Tuple<T, N>;
|
|
18
|
+
/**
|
|
19
|
+
* Create an array over an integer range, filled with a function 'fn'. However, the latter half of the array are set to zeros.
|
|
20
|
+
* see `makeTuple` above.
|
|
21
|
+
* @param n - The number of integers.
|
|
22
|
+
* @param fn - The generator function.
|
|
23
|
+
* @returns The array of numbers.
|
|
24
|
+
*/
|
|
25
|
+
export declare function makeHalfFullTuple<T, N extends number>(length: N, fn: (i: number) => T, offset?: number): Tuple<T, N>;
|
|
26
|
+
/**
|
|
27
|
+
* Assert a member of an object is a certain length.
|
|
28
|
+
* @param obj - An object.
|
|
29
|
+
* @param member - A member string.
|
|
30
|
+
* @param length - The length.
|
|
31
|
+
*/
|
|
32
|
+
export declare function assertMemberLength<F extends string, T extends {
|
|
33
|
+
[f in F]: {
|
|
34
|
+
/**
|
|
35
|
+
* A property which the tested member of the object T has to have.
|
|
36
|
+
*/
|
|
37
|
+
length: number;
|
|
38
|
+
};
|
|
39
|
+
}>(obj: T, member: F, length: number): void;
|
|
40
|
+
/**
|
|
41
|
+
* Assert all subarrays in a member of an object are a certain length.
|
|
42
|
+
* @param obj - An object.
|
|
43
|
+
* @param member - A member string.
|
|
44
|
+
* @param length - The expected length for each subarray.
|
|
45
|
+
*/
|
|
46
|
+
export declare function assertItemsLength<F extends string, T extends {
|
|
47
|
+
[f in F]: {
|
|
48
|
+
/**
|
|
49
|
+
* A property which the tested member of the object T has to have.
|
|
50
|
+
*/
|
|
51
|
+
length: number;
|
|
52
|
+
}[];
|
|
53
|
+
}>(obj: T, member: F, length: number): void;
|
|
54
|
+
//# sourceMappingURL=array.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/array/array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpD,YAAY,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,SAAI,YAM1C;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,EAAE,MAAM,SAAI,eAEzF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,EAAE,MAAM,SAAI,eAEjG;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS;KACP,CAAC,IAAI,CAAC,GAAG;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KAChB;CACF,EACD,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,QAIlC;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS;KACP,CAAC,IAAI,CAAC,GAAG;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE;CACJ,EACD,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,QAOlC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create an array over an integer range.
|
|
3
|
+
* @param n - The number of integers.
|
|
4
|
+
* @param offset - The starting number.
|
|
5
|
+
* @returns The array of numbers.
|
|
6
|
+
*/
|
|
7
|
+
export function range(n, offset = 0) {
|
|
8
|
+
const ret = [];
|
|
9
|
+
for (let i = 0; i < n; i++) {
|
|
10
|
+
ret.push(offset + i);
|
|
11
|
+
}
|
|
12
|
+
return ret;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Create an array over an integer range, filled with a function 'fn'.
|
|
16
|
+
* This is used over e.g. lodash because it resolved to a tuple type, needed for our fixed array type safety.
|
|
17
|
+
* @param n - The number of integers.
|
|
18
|
+
* @param fn - The generator function.
|
|
19
|
+
* @returns The array of numbers.
|
|
20
|
+
*/
|
|
21
|
+
export function makeTuple(length, fn, offset = 0) {
|
|
22
|
+
return Array.from({ length }, (v, i) => fn(i + offset));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Create an array over an integer range, filled with a function 'fn'. However, the latter half of the array are set to zeros.
|
|
26
|
+
* see `makeTuple` above.
|
|
27
|
+
* @param n - The number of integers.
|
|
28
|
+
* @param fn - The generator function.
|
|
29
|
+
* @returns The array of numbers.
|
|
30
|
+
*/
|
|
31
|
+
export function makeHalfFullTuple(length, fn, offset = 0) {
|
|
32
|
+
return Array.from({ length }, (v, i) => (i < length / 2 ? fn(i + offset) : fn(0)));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Assert a member of an object is a certain length.
|
|
36
|
+
* @param obj - An object.
|
|
37
|
+
* @param member - A member string.
|
|
38
|
+
* @param length - The length.
|
|
39
|
+
*/
|
|
40
|
+
export function assertMemberLength(obj, member, length) {
|
|
41
|
+
if (obj[member].length !== length) {
|
|
42
|
+
throw new Error(`Expected ${member} to have length ${length} but was ${obj[member].length}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Assert all subarrays in a member of an object are a certain length.
|
|
47
|
+
* @param obj - An object.
|
|
48
|
+
* @param member - A member string.
|
|
49
|
+
* @param length - The expected length for each subarray.
|
|
50
|
+
*/
|
|
51
|
+
export function assertItemsLength(obj, member, length) {
|
|
52
|
+
const arrays = obj[member];
|
|
53
|
+
for (let i = 0; i < arrays.length; i++) {
|
|
54
|
+
if (arrays[i].length !== length) {
|
|
55
|
+
throw new Error(`Expected ${member}[${i}] to have length ${length} but was ${arrays[i].length}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXJyYXkvYXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFDLENBQVMsRUFBRSxNQUFNLEdBQUcsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBYSxFQUFFLENBQUM7SUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMxQixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztLQUN0QjtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQXNCLE1BQVMsRUFBRSxFQUFvQixFQUFFLE1BQU0sR0FBRyxDQUFDO0lBQ3hGLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBTSxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBZ0IsQ0FBQztBQUN0RixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFzQixNQUFTLEVBQUUsRUFBb0IsRUFBRSxNQUFNLEdBQUcsQ0FBQztJQUNoRyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQU0sRUFBRSxDQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFnQixDQUFDO0FBQ2pILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FVaEMsR0FBTSxFQUFFLE1BQVMsRUFBRSxNQUFjO0lBQ2pDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUU7UUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLE1BQU0sbUJBQW1CLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUM5RjtBQUNILENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FVL0IsR0FBTSxFQUFFLE1BQVMsRUFBRSxNQUFjO0lBQ2pDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUN0QyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxNQUFNLElBQUksQ0FBQyxvQkFBb0IsTUFBTSxZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ2xHO0tBQ0Y7QUFDSCxDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/array/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}
|
|
@@ -32,4 +32,10 @@ export declare function toBufferBE(num: bigint, width: number): Buffer;
|
|
|
32
32
|
* @returns An even-length 0x-prefixed string.
|
|
33
33
|
*/
|
|
34
34
|
export declare function toHex(num: bigint, padTo32?: boolean): `0x${string}`;
|
|
35
|
+
/**
|
|
36
|
+
* Converts a hex string to a buffer. Throws if input is not a valid hex string.
|
|
37
|
+
* @param value - The hex string to convert. May be 0x prefixed or not.
|
|
38
|
+
* @returns A buffer.
|
|
39
|
+
*/
|
|
40
|
+
export declare function fromHex(value: string): Buffer;
|
|
35
41
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bigint-buffer/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ9C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAU7D;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,KAAK,MAAM,EAAE,CAKjE"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bigint-buffer/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ9C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9C;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ7D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAU7D;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,KAAK,MAAM,EAAE,CAKjE;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAM7C"}
|