@aztec/cli 0.7.2 → 0.7.4
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/.tsbuildinfo +1 -0
- package/README.md +1 -1
- package/dest/bin/index.d.ts +3 -0
- package/dest/bin/index.d.ts.map +1 -0
- package/dest/bin/index.js +17 -0
- package/dest/client.d.ts +23 -0
- package/dest/client.d.ts.map +1 -0
- package/dest/client.js +72 -0
- package/dest/client.test.d.ts +2 -0
- package/dest/client.test.d.ts.map +1 -0
- package/dest/client.test.js +23 -0
- package/dest/encoding.d.ts +15 -0
- package/dest/encoding.d.ts.map +1 -0
- package/dest/encoding.js +107 -0
- package/dest/index.d.ts +10 -0
- package/dest/index.d.ts.map +1 -0
- package/dest/index.js +408 -0
- package/dest/test/mocks.d.ts +3 -0
- package/dest/test/mocks.d.ts.map +1 -0
- package/dest/test/mocks.js +63 -0
- package/dest/test/utils.test.d.ts +2 -0
- package/dest/test/utils.test.d.ts.map +1 -0
- package/dest/test/utils.test.js +104 -0
- package/dest/unbox.d.ts +14 -0
- package/dest/unbox.d.ts.map +1 -0
- package/dest/unbox.js +247 -0
- package/dest/utils.d.ts +59 -0
- package/dest/utils.d.ts.map +1 -0
- package/dest/utils.js +117 -0
- package/package.json +7 -7
- package/src/index.ts +2 -2
- package/src/test/utils.test.ts +4 -4
- package/src/utils.ts +1 -1
- package/Dockerfile +0 -15
package/dest/client.js
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { createAztecRpcClient } from '@aztec/aztec.js';
|
|
2
|
+
import { makeFetch } from '@aztec/foundation/json-rpc/client';
|
|
3
|
+
import { fileURLToPath } from '@aztec/foundation/url';
|
|
4
|
+
import { readFileSync } from 'fs';
|
|
5
|
+
import { dirname, resolve } from 'path';
|
|
6
|
+
import { gtr, ltr, satisfies, valid } from 'semver';
|
|
7
|
+
const retries = [1, 1, 2];
|
|
8
|
+
/**
|
|
9
|
+
* Creates an Aztec RPC client with a given set of retries on non-server errors.
|
|
10
|
+
* @param rpcUrl - URL of the RPC server.
|
|
11
|
+
* @returns An RPC client.
|
|
12
|
+
*/
|
|
13
|
+
export function createClient(rpcUrl) {
|
|
14
|
+
const fetch = makeFetch(retries, true);
|
|
15
|
+
return createAztecRpcClient(rpcUrl, fetch);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Creates an Aztec RPC client with a given set of retries on non-server errors.
|
|
19
|
+
* Checks that the RPC server matches the expected version, and warns if not.
|
|
20
|
+
* @param rpcUrl - URL of the RPC server.
|
|
21
|
+
* @param logger - Debug logger to warn version incompatibilities.
|
|
22
|
+
* @returns An RPC client.
|
|
23
|
+
*/
|
|
24
|
+
export async function createCompatibleClient(rpcUrl, logger) {
|
|
25
|
+
const client = createClient(rpcUrl);
|
|
26
|
+
const packageJsonPath = resolve(dirname(fileURLToPath(import.meta.url)), '../package.json');
|
|
27
|
+
const packageJsonContents = JSON.parse(readFileSync(packageJsonPath).toString());
|
|
28
|
+
const expectedVersionRange = packageJsonContents.version; // During sandbox, we'll expect exact matches
|
|
29
|
+
try {
|
|
30
|
+
await checkServerVersion(client, expectedVersionRange);
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
if (err instanceof VersionMismatchError) {
|
|
34
|
+
logger.debug(err.message);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
throw err;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return client;
|
|
41
|
+
}
|
|
42
|
+
/** Mismatch between server and client versions. */
|
|
43
|
+
class VersionMismatchError extends Error {
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Checks that the RPC server version matches the expected one by this CLI. Throws if not.
|
|
47
|
+
* @param rpc - RPC server connection.
|
|
48
|
+
* @param expectedVersionRange - Expected version by CLI.
|
|
49
|
+
*/
|
|
50
|
+
export async function checkServerVersion(rpc, expectedVersionRange) {
|
|
51
|
+
const serverName = 'Aztec Sandbox';
|
|
52
|
+
const { client } = await rpc.getNodeInfo();
|
|
53
|
+
if (!client) {
|
|
54
|
+
throw new VersionMismatchError(`Couldn't determine ${serverName} version. You may run into issues.`);
|
|
55
|
+
}
|
|
56
|
+
const version = client.split('@')[1];
|
|
57
|
+
if (!version || !valid(version)) {
|
|
58
|
+
throw new VersionMismatchError(`Missing or invalid version identifier for ${serverName} (${version ?? 'empty'}).`);
|
|
59
|
+
}
|
|
60
|
+
else if (!satisfies(version, expectedVersionRange)) {
|
|
61
|
+
if (gtr(version, expectedVersionRange)) {
|
|
62
|
+
throw new VersionMismatchError(`${serverName} is running version ${version} which is newer than the expected by this CLI (${expectedVersionRange}). Consider upgrading your CLI to a newer version.`);
|
|
63
|
+
}
|
|
64
|
+
else if (ltr(version, expectedVersionRange)) {
|
|
65
|
+
throw new VersionMismatchError(`${serverName} is running version ${version} which is older than the expected by this CLI (${expectedVersionRange}). Consider upgrading your ${serverName} to a newer version.`);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
throw new VersionMismatchError(`${serverName} is running version ${version} which does not match the expected by this CLI (${expectedVersionRange}).`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVksb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXRELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVwRCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFMUI7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBYztJQUN6QyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sb0JBQW9CLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLHNCQUFzQixDQUFDLE1BQWMsRUFBRSxNQUFtQjtJQUM5RSxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDNUYsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sb0JBQW9CLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsNkNBQTZDO0lBRXZHLElBQUk7UUFDRixNQUFNLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0tBQ3hEO0lBQUMsT0FBTyxHQUFHLEVBQUU7UUFDWixJQUFJLEdBQUcsWUFBWSxvQkFBb0IsRUFBRTtZQUN2QyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzQjthQUFNO1lBQ0wsTUFBTSxHQUFHLENBQUM7U0FDWDtLQUNGO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELG1EQUFtRDtBQUNuRCxNQUFNLG9CQUFxQixTQUFRLEtBQUs7Q0FBRztBQUUzQzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxHQUFhLEVBQUUsb0JBQTRCO0lBQ2xGLE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQztJQUNuQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDM0MsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUNYLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxzQkFBc0IsVUFBVSxvQ0FBb0MsQ0FBQyxDQUFDO0tBQ3RHO0lBQ0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQy9CLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyw2Q0FBNkMsVUFBVSxLQUFLLE9BQU8sSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDO0tBQ3BIO1NBQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtRQUNwRCxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtZQUN0QyxNQUFNLElBQUksb0JBQW9CLENBQzVCLEdBQUcsVUFBVSx1QkFBdUIsT0FBTyxrREFBa0Qsb0JBQW9CLG9EQUFvRCxDQUN0SyxDQUFDO1NBQ0g7YUFBTSxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtZQUM3QyxNQUFNLElBQUksb0JBQW9CLENBQzVCLEdBQUcsVUFBVSx1QkFBdUIsT0FBTyxrREFBa0Qsb0JBQW9CLDhCQUE4QixVQUFVLHNCQUFzQixDQUNoTCxDQUFDO1NBQ0g7YUFBTTtZQUNMLE1BQU0sSUFBSSxvQkFBb0IsQ0FDNUIsR0FBRyxVQUFVLHVCQUF1QixPQUFPLG1EQUFtRCxvQkFBb0IsSUFBSSxDQUN2SCxDQUFDO1NBQ0g7S0FDRjtBQUNILENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../src/client.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { mock } from 'jest-mock-extended';
|
|
2
|
+
import { checkServerVersion } from './client.js';
|
|
3
|
+
describe('client', () => {
|
|
4
|
+
describe('checkServerVersion', () => {
|
|
5
|
+
let rpc;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
rpc = mock();
|
|
8
|
+
});
|
|
9
|
+
it('checks versions match', async () => {
|
|
10
|
+
rpc.getNodeInfo.mockResolvedValue({ client: 'rpc@0.1.0-alpha47' });
|
|
11
|
+
await checkServerVersion(rpc, '0.1.0-alpha47');
|
|
12
|
+
});
|
|
13
|
+
it('reports mismatch on older rpc version', async () => {
|
|
14
|
+
rpc.getNodeInfo.mockResolvedValue({ client: 'rpc@0.1.0-alpha47' });
|
|
15
|
+
await expect(checkServerVersion(rpc, '0.1.0-alpha48')).rejects.toThrowError(/is older than the expected by this CLI/);
|
|
16
|
+
});
|
|
17
|
+
it('reports mismatch on newer rpc version', async () => {
|
|
18
|
+
rpc.getNodeInfo.mockResolvedValue({ client: 'rpc@0.1.0-alpha48' });
|
|
19
|
+
await expect(checkServerVersion(rpc, '0.1.0-alpha47')).rejects.toThrowError(/is newer than the expected by this CLI/);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2xpZW50LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFhLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXJELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVqRCxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtJQUN0QixRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO1FBQ2xDLElBQUksR0FBd0IsQ0FBQztRQUU3QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsR0FBRyxHQUFHLElBQUksRUFBWSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHVCQUF1QixFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3JDLEdBQUcsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQWMsQ0FBQyxDQUFDO1lBQy9FLE1BQU0sa0JBQWtCLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3JELEdBQUcsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQWMsQ0FBQyxDQUFDO1lBQy9FLE1BQU0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQ3pFLHdDQUF3QyxDQUN6QyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDckQsR0FBRyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBYyxDQUFDLENBQUM7WUFDL0UsTUFBTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FDekUsd0NBQXdDLENBQ3pDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ABIParameter, StructType } from '@aztec/foundation/abi';
|
|
2
|
+
/**
|
|
3
|
+
* Parses a hex string into an ABI struct type.
|
|
4
|
+
* @param str - The encoded hex string.
|
|
5
|
+
* @param abiType - The ABI Struct type.
|
|
6
|
+
* @returns An object in the ABI struct type's format.
|
|
7
|
+
*/
|
|
8
|
+
export declare function parseStructString(str: string, abiType: StructType): any;
|
|
9
|
+
/**
|
|
10
|
+
* Tries to encode function args to their equivalent TS type.
|
|
11
|
+
* @param args - An array of function's / constructor's args.
|
|
12
|
+
* @returns The encoded array.
|
|
13
|
+
*/
|
|
14
|
+
export declare function encodeArgs(args: any[], params: ABIParameter[]): any[];
|
|
15
|
+
//# sourceMappingURL=encoding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAW,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAE1E;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,OAcjE;AA8DD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,SAY7D"}
|
package/dest/encoding.js
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Fr } from '@aztec/aztec.js';
|
|
2
|
+
/**
|
|
3
|
+
* Parses a hex string into an ABI struct type.
|
|
4
|
+
* @param str - The encoded hex string.
|
|
5
|
+
* @param abiType - The ABI Struct type.
|
|
6
|
+
* @returns An object in the ABI struct type's format.
|
|
7
|
+
*/
|
|
8
|
+
export function parseStructString(str, abiType) {
|
|
9
|
+
// Assing string bytes to struct fields.
|
|
10
|
+
const buf = Buffer.from(str.replace(/^0x/i, ''), 'hex');
|
|
11
|
+
const struct = {};
|
|
12
|
+
let byteIndex = 0;
|
|
13
|
+
let argIndex = 0;
|
|
14
|
+
while (byteIndex < buf.length) {
|
|
15
|
+
const { name } = abiType.fields[argIndex];
|
|
16
|
+
struct[name] = Fr.fromBuffer(buf.subarray(byteIndex, byteIndex + 32));
|
|
17
|
+
byteIndex += 32;
|
|
18
|
+
argIndex += 1;
|
|
19
|
+
}
|
|
20
|
+
return struct;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Helper function to encode CLI string args to an appropriate JS type.
|
|
24
|
+
* @param arg - The CLI argument.
|
|
25
|
+
* @param abiType - The type as described by the contract's ABI.
|
|
26
|
+
* @returns The encoded argument.
|
|
27
|
+
*/
|
|
28
|
+
function encodeArg(arg, abiType, name) {
|
|
29
|
+
const { kind } = abiType;
|
|
30
|
+
if (kind === 'field' || kind === 'integer') {
|
|
31
|
+
let res;
|
|
32
|
+
try {
|
|
33
|
+
res = BigInt(arg);
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
throw new Error(`Invalid value passed for ${name}. Could not parse ${arg} as a${kind === 'integer' ? 'n' : ''} ${kind}.`);
|
|
37
|
+
}
|
|
38
|
+
return res;
|
|
39
|
+
}
|
|
40
|
+
else if (kind === 'boolean') {
|
|
41
|
+
if (arg === 'true')
|
|
42
|
+
return true;
|
|
43
|
+
if (arg === 'false')
|
|
44
|
+
return false;
|
|
45
|
+
else
|
|
46
|
+
throw Error(`Invalid boolean value passed for ${name}: ${arg}.`);
|
|
47
|
+
}
|
|
48
|
+
else if (kind === 'array') {
|
|
49
|
+
let arr;
|
|
50
|
+
const res = [];
|
|
51
|
+
try {
|
|
52
|
+
arr = JSON.parse(arg);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
throw new Error(`Unable to parse arg ${arg} as array for ${name} parameter`);
|
|
56
|
+
}
|
|
57
|
+
if (!Array.isArray(arr))
|
|
58
|
+
throw Error(`Invalid argument ${arg} passed for array parameter ${name}.`);
|
|
59
|
+
if (arr.length !== abiType.length)
|
|
60
|
+
throw Error(`Invalid array length passed for ${name}. Expected ${abiType.length}, received ${arr.length}.`);
|
|
61
|
+
for (let i = 0; i < abiType.length; i += 1) {
|
|
62
|
+
res.push(encodeArg(arr[i], abiType.type, name));
|
|
63
|
+
}
|
|
64
|
+
return res;
|
|
65
|
+
}
|
|
66
|
+
else if (kind === 'struct') {
|
|
67
|
+
// check if input is encoded long string
|
|
68
|
+
if (arg.startsWith('0x')) {
|
|
69
|
+
return parseStructString(arg, abiType);
|
|
70
|
+
}
|
|
71
|
+
let obj;
|
|
72
|
+
try {
|
|
73
|
+
obj = JSON.parse(arg);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
throw new Error(`Unable to parse arg ${arg} as struct`);
|
|
77
|
+
}
|
|
78
|
+
if (Array.isArray(obj))
|
|
79
|
+
throw Error(`Array passed for arg ${name}. Expected a struct.`);
|
|
80
|
+
const res = [];
|
|
81
|
+
for (const field of abiType.fields) {
|
|
82
|
+
// Remove field name from list as it's present
|
|
83
|
+
const arg = obj[field.name];
|
|
84
|
+
if (!arg)
|
|
85
|
+
throw Error(`Expected field ${field.name} not found in struct ${name}.`);
|
|
86
|
+
res.push(encodeArg(obj[field.name], field.type, field.name));
|
|
87
|
+
}
|
|
88
|
+
return res;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Tries to encode function args to their equivalent TS type.
|
|
93
|
+
* @param args - An array of function's / constructor's args.
|
|
94
|
+
* @returns The encoded array.
|
|
95
|
+
*/
|
|
96
|
+
export function encodeArgs(args, params) {
|
|
97
|
+
if (args.length !== params.length) {
|
|
98
|
+
throw new Error(`Invalid number of args provided. Expected: ${params.length}, received: ${args.length}\nReceived args: ${args}`);
|
|
99
|
+
}
|
|
100
|
+
return args
|
|
101
|
+
.map((arg, index) => {
|
|
102
|
+
const { type, name } = params[index];
|
|
103
|
+
return encodeArg(arg, type, name);
|
|
104
|
+
})
|
|
105
|
+
.flat();
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZW5jb2RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3JDOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEdBQVcsRUFBRSxPQUFtQjtJQUNoRSx3Q0FBd0M7SUFDeEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4RCxNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7SUFDdkIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNqQixPQUFPLFNBQVMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFO1FBQzdCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLFNBQVMsSUFBSSxFQUFFLENBQUM7UUFDaEIsUUFBUSxJQUFJLENBQUMsQ0FBQztLQUNmO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxTQUFTLENBQUMsR0FBVyxFQUFFLE9BQWdCLEVBQUUsSUFBWTtJQUM1RCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLElBQUksSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1FBQzFDLElBQUksR0FBVyxDQUFDO1FBQ2hCLElB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
|
package/dest/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DebugLogger, LogFn } from '@aztec/foundation/log';
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
/**
|
|
4
|
+
* Returns commander program that defines the CLI.
|
|
5
|
+
* @param log - Console logger.
|
|
6
|
+
* @param debugLogger - Debug logger.
|
|
7
|
+
* @returns The CLI.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getProgram(log: LogFn, debugLogger: DebugLogger): Command;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAK3D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAydxE"}
|