ox 1.0.0-beta.7 → 1.0.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/Abi.d.ts +6 -2
- package/dist/core/Abi.d.ts.map +1 -1
- package/dist/core/Abi.js +6 -3
- package/dist/core/Abi.js.map +1 -1
- package/dist/core/AbiConstructor.d.ts +2 -1
- package/dist/core/AbiConstructor.d.ts.map +1 -1
- package/dist/core/AbiConstructor.js +2 -2
- package/dist/core/AbiConstructor.js.map +1 -1
- package/dist/core/AbiError.d.ts +3 -1
- package/dist/core/AbiError.d.ts.map +1 -1
- package/dist/core/AbiError.js +2 -2
- package/dist/core/AbiError.js.map +1 -1
- package/dist/core/AbiEvent.d.ts +3 -1
- package/dist/core/AbiEvent.d.ts.map +1 -1
- package/dist/core/AbiEvent.js +2 -2
- package/dist/core/AbiEvent.js.map +1 -1
- package/dist/core/AbiFunction.d.ts +3 -1
- package/dist/core/AbiFunction.d.ts.map +1 -1
- package/dist/core/AbiFunction.js +2 -2
- package/dist/core/AbiFunction.js.map +1 -1
- package/dist/core/AbiItem.d.ts +6 -3
- package/dist/core/AbiItem.d.ts.map +1 -1
- package/dist/core/AbiItem.js +9 -7
- package/dist/core/AbiItem.js.map +1 -1
- package/dist/core/AbiParameter.d.ts +88 -0
- package/dist/core/AbiParameter.d.ts.map +1 -0
- package/dist/core/AbiParameter.js +82 -0
- package/dist/core/AbiParameter.js.map +1 -0
- package/dist/core/AbiParameters.d.ts +58 -2
- package/dist/core/AbiParameters.d.ts.map +1 -1
- package/dist/core/AbiParameters.js +56 -5
- package/dist/core/AbiParameters.js.map +1 -1
- package/dist/core/Log.d.ts +1 -1
- package/dist/core/Log.d.ts.map +1 -1
- package/dist/core/RpcSchema.d.ts +1 -1
- package/dist/core/internal/human-readable/errors.d.ts +103 -0
- package/dist/core/internal/human-readable/errors.d.ts.map +1 -0
- package/dist/core/internal/human-readable/errors.js +142 -0
- package/dist/core/internal/human-readable/errors.js.map +1 -0
- package/dist/core/internal/human-readable/formatAbi.d.ts +19 -0
- package/dist/core/internal/human-readable/formatAbi.d.ts.map +1 -0
- package/dist/core/internal/human-readable/formatAbi.js +18 -0
- package/dist/core/internal/human-readable/formatAbi.js.map +1 -0
- package/dist/core/internal/human-readable/formatAbiItem.d.ts +23 -0
- package/dist/core/internal/human-readable/formatAbiItem.d.ts.map +1 -0
- package/dist/core/internal/human-readable/formatAbiItem.js +25 -0
- package/dist/core/internal/human-readable/formatAbiItem.js.map +1 -0
- package/dist/core/internal/human-readable/formatAbiParameter.d.ts +41 -0
- package/dist/core/internal/human-readable/formatAbiParameter.d.ts.map +1 -0
- package/dist/core/internal/human-readable/formatAbiParameter.js +36 -0
- package/dist/core/internal/human-readable/formatAbiParameter.js.map +1 -0
- package/dist/core/internal/human-readable/formatAbiParameters.d.ts +26 -0
- package/dist/core/internal/human-readable/formatAbiParameters.d.ts.map +1 -0
- package/dist/core/internal/human-readable/formatAbiParameters.js +19 -0
- package/dist/core/internal/human-readable/formatAbiParameters.js.map +1 -0
- package/dist/core/internal/human-readable/parseAbi.d.ts +22 -0
- package/dist/core/internal/human-readable/parseAbi.d.ts.map +1 -0
- package/dist/core/internal/human-readable/parseAbi.js +22 -0
- package/dist/core/internal/human-readable/parseAbi.js.map +1 -0
- package/dist/core/internal/human-readable/parseAbiItem.d.ts +23 -0
- package/dist/core/internal/human-readable/parseAbiItem.d.ts.map +1 -0
- package/dist/core/internal/human-readable/parseAbiItem.js +30 -0
- package/dist/core/internal/human-readable/parseAbiItem.js.map +1 -0
- package/dist/core/internal/human-readable/parseAbiParameter.d.ts +28 -0
- package/dist/core/internal/human-readable/parseAbiParameter.d.ts.map +1 -0
- package/dist/core/internal/human-readable/parseAbiParameter.js +32 -0
- package/dist/core/internal/human-readable/parseAbiParameter.js.map +1 -0
- package/dist/core/internal/human-readable/parseAbiParameters.d.ts +38 -0
- package/dist/core/internal/human-readable/parseAbiParameters.d.ts.map +1 -0
- package/dist/core/internal/human-readable/parseAbiParameters.js +39 -0
- package/dist/core/internal/human-readable/parseAbiParameters.js.map +1 -0
- package/dist/core/internal/human-readable/regex.d.ts +9 -0
- package/dist/core/internal/human-readable/regex.d.ts.map +1 -0
- package/dist/core/internal/human-readable/regex.js +12 -0
- package/dist/core/internal/human-readable/regex.js.map +1 -0
- package/dist/core/internal/human-readable/runtime/cache.d.ts +22 -0
- package/dist/core/internal/human-readable/runtime/cache.d.ts.map +1 -0
- package/dist/core/internal/human-readable/runtime/cache.js +86 -0
- package/dist/core/internal/human-readable/runtime/cache.js.map +1 -0
- package/dist/core/internal/human-readable/runtime/signatures.d.ts +39 -0
- package/dist/core/internal/human-readable/runtime/signatures.d.ts.map +1 -0
- package/dist/core/internal/human-readable/runtime/signatures.js +67 -0
- package/dist/core/internal/human-readable/runtime/signatures.js.map +1 -0
- package/dist/core/internal/human-readable/runtime/structs.d.ts +3 -0
- package/dist/core/internal/human-readable/runtime/structs.d.ts.map +1 -0
- package/dist/core/internal/human-readable/runtime/structs.js +79 -0
- package/dist/core/internal/human-readable/runtime/structs.js.map +1 -0
- package/dist/core/internal/human-readable/runtime/utils.d.ts +205 -0
- package/dist/core/internal/human-readable/runtime/utils.d.ts.map +1 -0
- package/dist/core/internal/human-readable/runtime/utils.js +232 -0
- package/dist/core/internal/human-readable/runtime/utils.js.map +1 -0
- package/dist/core/internal/human-readable/types/signatures.d.ts +38 -0
- package/dist/core/internal/human-readable/types/signatures.d.ts.map +1 -0
- package/dist/core/internal/human-readable/types/signatures.js +2 -0
- package/dist/core/internal/human-readable/types/signatures.js.map +1 -0
- package/dist/core/internal/human-readable/types/structs.d.ts +48 -0
- package/dist/core/internal/human-readable/types/structs.d.ts.map +1 -0
- package/dist/core/internal/human-readable/types/structs.js +2 -0
- package/dist/core/internal/human-readable/types/structs.js.map +1 -0
- package/dist/core/internal/human-readable/types/utils.d.ts +163 -0
- package/dist/core/internal/human-readable/types/utils.d.ts.map +1 -0
- package/dist/core/internal/human-readable/types/utils.js +2 -0
- package/dist/core/internal/human-readable/types/utils.js.map +1 -0
- package/dist/core/internal/human-readable/types.d.ts +29 -0
- package/dist/core/internal/human-readable/types.d.ts.map +1 -0
- package/dist/core/internal/human-readable/types.js +2 -0
- package/dist/core/internal/human-readable/types.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -1
- package/dist/zod/Log.d.ts +3 -3
- package/dist/zod/Log.js +1 -1
- package/dist/zod/Log.js.map +1 -1
- package/dist/zod/RpcSchema.d.ts +11 -11
- package/dist/zod/RpcSchema.d.ts.map +1 -1
- package/dist/zod/TransactionReceipt.d.ts +2 -2
- package/dist/zod/internal/rpcSchemas/Eth.d.ts +6 -6
- package/dist/zod/internal/rpcSchemas/Wallet.d.ts +1 -1
- package/dist/zod/tempo/RpcSchemaTempo.d.ts +2 -2
- package/dist/zod/tempo/TransactionReceipt.d.ts +2 -2
- package/package.json +6 -1
- package/src/core/Abi.bench.ts +30 -0
- package/src/core/Abi.ts +13 -4
- package/src/core/AbiConstructor.ts +3 -2
- package/src/core/AbiError.ts +6 -2
- package/src/core/AbiEvent.ts +6 -2
- package/src/core/AbiFunction.ts +6 -2
- package/src/core/AbiItem.bench.ts +19 -0
- package/src/core/AbiItem.ts +20 -10
- package/src/core/AbiParameter.bench.ts +35 -0
- package/src/core/AbiParameter.ts +126 -0
- package/src/core/AbiParameters.bench.ts +22 -0
- package/src/core/AbiParameters.ts +74 -7
- package/src/core/Log.ts +1 -1
- package/src/core/RpcSchema.ts +1 -1
- package/src/core/_test/Abi.test.ts +4 -0
- package/src/core/_test/AbiItem.test.ts +3 -0
- package/src/core/_test/AbiParameter.test-d.ts +41 -0
- package/src/core/_test/AbiParameter.test.ts +84 -0
- package/src/core/_test/AbiParameters.test.ts +7 -0
- package/src/core/_test/index.test.ts +1 -0
- package/src/core/internal/human-readable/_snap/formatAbi.test.ts.snap +74 -0
- package/src/core/internal/human-readable/_snap/parseAbi.test.ts.snap +2353 -0
- package/src/core/internal/human-readable/errors.test.ts +258 -0
- package/src/core/internal/human-readable/errors.ts +205 -0
- package/src/core/internal/human-readable/formatAbi.test-d.ts +144 -0
- package/src/core/internal/human-readable/formatAbi.test.ts +23 -0
- package/src/core/internal/human-readable/formatAbi.ts +37 -0
- package/src/core/internal/human-readable/formatAbiItem.test-d.ts +115 -0
- package/src/core/internal/human-readable/formatAbiItem.test.ts +102 -0
- package/src/core/internal/human-readable/formatAbiItem.ts +136 -0
- package/src/core/internal/human-readable/formatAbiParameter.test-d.ts +125 -0
- package/src/core/internal/human-readable/formatAbiParameter.test.ts +126 -0
- package/src/core/internal/human-readable/formatAbiParameter.ts +86 -0
- package/src/core/internal/human-readable/formatAbiParameters.test-d.ts +92 -0
- package/src/core/internal/human-readable/formatAbiParameters.test.ts +32 -0
- package/src/core/internal/human-readable/formatAbiParameters.ts +46 -0
- package/src/core/internal/human-readable/human-readable.bench-d.ts +58 -0
- package/src/core/internal/human-readable/integration.test.ts +68 -0
- package/src/core/internal/human-readable/parseAbi.test-d.ts +188 -0
- package/src/core/internal/human-readable/parseAbi.test.ts +82 -0
- package/src/core/internal/human-readable/parseAbi.ts +59 -0
- package/src/core/internal/human-readable/parseAbiItem.test-d.ts +183 -0
- package/src/core/internal/human-readable/parseAbiItem.test.ts +264 -0
- package/src/core/internal/human-readable/parseAbiItem.ts +91 -0
- package/src/core/internal/human-readable/parseAbiParameter.test-d.ts +68 -0
- package/src/core/internal/human-readable/parseAbiParameter.test.ts +207 -0
- package/src/core/internal/human-readable/parseAbiParameter.ts +95 -0
- package/src/core/internal/human-readable/parseAbiParameters.test-d.ts +160 -0
- package/src/core/internal/human-readable/parseAbiParameters.test.ts +80 -0
- package/src/core/internal/human-readable/parseAbiParameters.ts +123 -0
- package/src/core/internal/human-readable/regex.ts +15 -0
- package/src/core/internal/human-readable/runtime/cache.ts +96 -0
- package/src/core/internal/human-readable/runtime/signatures.test.ts +236 -0
- package/src/core/internal/human-readable/runtime/signatures.ts +106 -0
- package/src/core/internal/human-readable/runtime/structs.test.ts +210 -0
- package/src/core/internal/human-readable/runtime/structs.ts +97 -0
- package/src/core/internal/human-readable/runtime/utils.test.ts +717 -0
- package/src/core/internal/human-readable/runtime/utils.ts +344 -0
- package/src/core/internal/human-readable/types/signatures.test-d.ts +255 -0
- package/src/core/internal/human-readable/types/signatures.ts +369 -0
- package/src/core/internal/human-readable/types/structs.test-d.ts +221 -0
- package/src/core/internal/human-readable/types/structs.ts +88 -0
- package/src/core/internal/human-readable/types/utils.test-d.ts +1029 -0
- package/src/core/internal/human-readable/types/utils.ts +392 -0
- package/src/core/internal/human-readable/types.ts +69 -0
- package/src/index.ts +38 -0
- package/src/version.ts +1 -1
- package/src/zod/Log.ts +1 -1
- package/src/zod/RpcSchema.ts +5 -5
- package/src/zod/_test/Log.test.ts +16 -0
- package/src/zod/_test/TransactionReceipt.test.ts +1 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { InvalidAbiItemError } from './errors.js';
|
|
2
|
+
import { isStructSignature } from './runtime/signatures.js';
|
|
3
|
+
import { parseStructs } from './runtime/structs.js';
|
|
4
|
+
import { parseSignature } from './runtime/utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* Parses human-readable ABI item (e.g. error, event, function) into `Abi` item.
|
|
7
|
+
*
|
|
8
|
+
* @param signature - Human-readable ABI item
|
|
9
|
+
* @returns Parsed `Abi` item.
|
|
10
|
+
*/
|
|
11
|
+
export function parseAbiItem(signature) {
|
|
12
|
+
let abiItem;
|
|
13
|
+
if (typeof signature === 'string')
|
|
14
|
+
abiItem = parseSignature(signature);
|
|
15
|
+
else {
|
|
16
|
+
const structs = parseStructs(signature);
|
|
17
|
+
const length = signature.length;
|
|
18
|
+
for (let i = 0; i < length; i++) {
|
|
19
|
+
const signature_ = signature[i];
|
|
20
|
+
if (isStructSignature(signature_))
|
|
21
|
+
continue;
|
|
22
|
+
abiItem = parseSignature(signature_, structs);
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (!abiItem)
|
|
27
|
+
throw new InvalidAbiItemError({ signature });
|
|
28
|
+
return abiItem;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=parseAbiItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseAbiItem.js","sourceRoot":"","sources":["../../../../src/core/internal/human-readable/parseAbiItem.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AA2CnD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAG1B,SAcG;IAEH,IAAI,OAA4C,CAAA;IAChD,IAAI,OAAO,SAAS,KAAK,QAAQ;QAC/B,OAAO,GAAG,cAAc,CAAC,SAAS,CAA4B,CAAA;SAC3D,CAAC;QACJ,MAAM,OAAO,GAAG,YAAY,CAAC,SAA8B,CAAC,CAAA;QAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,MAAgB,CAAA;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,UAAU,GAAI,SAA+B,CAAC,CAAC,CAAE,CAAA;YACvD,IAAI,iBAAiB,CAAC,UAAU,CAAC;gBAAE,SAAQ;YAC3C,OAAO,GAAG,cAAc,CAAC,UAAU,EAAE,OAAO,CAA4B,CAAA;YACxE,MAAK;QACP,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,mBAAmB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;IAC1D,OAAO,OAAkC,CAAA;AAC3C,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { AbiParameter } from 'abitype';
|
|
2
|
+
import type { Narrow } from 'abitype';
|
|
3
|
+
import type { Error, Filter } from './types.js';
|
|
4
|
+
import type { IsStructSignature, Modifier } from './types/signatures.js';
|
|
5
|
+
import type { ParseStructs } from './types/structs.js';
|
|
6
|
+
import type { ParseAbiParameter as ParseAbiParameter_ } from './types/utils.js';
|
|
7
|
+
/**
|
|
8
|
+
* Parses human-readable ABI parameter into `AbiParameter`.
|
|
9
|
+
*
|
|
10
|
+
* @param param - Human-readable ABI parameter
|
|
11
|
+
* @returns Parsed `AbiParameter`.
|
|
12
|
+
*/
|
|
13
|
+
export type ParseAbiParameter<param extends string | readonly string[] | readonly unknown[]> = (param extends string ? param extends '' ? never : string extends param ? AbiParameter : ParseAbiParameter_<param, {
|
|
14
|
+
modifier: Modifier;
|
|
15
|
+
}> : never) | (param extends readonly string[] ? string[] extends param ? AbiParameter : ParseStructs<param> extends infer structs ? {
|
|
16
|
+
[key in keyof param]: param[key] extends string ? IsStructSignature<param[key]> extends true ? never : ParseAbiParameter_<param[key], {
|
|
17
|
+
modifier: Modifier;
|
|
18
|
+
structs: structs;
|
|
19
|
+
}> : never;
|
|
20
|
+
} extends infer mapped extends readonly unknown[] ? Filter<mapped, never>[0] extends infer result ? result extends undefined ? never : result : never : never : never : never);
|
|
21
|
+
/**
|
|
22
|
+
* Parses human-readable ABI parameter into `AbiParameter`.
|
|
23
|
+
*
|
|
24
|
+
* @param param - Human-readable ABI parameter
|
|
25
|
+
* @returns Parsed `AbiParameter`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function parseAbiParameter<param extends string | readonly string[] | readonly unknown[]>(param: Narrow<param> & ((param extends string ? param extends '' ? Error<'Empty string is not allowed.'> : unknown : never) | (param extends readonly string[] ? param extends readonly [] ? Error<'At least one parameter required.'> : string[] extends param ? unknown : unknown : never))): ParseAbiParameter<param>;
|
|
28
|
+
//# sourceMappingURL=parseAbiParameter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseAbiParameter.d.ts","sourceRoot":"","sources":["../../../../src/core/internal/human-readable/parseAbiParameter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAK/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAE/E;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,CAC3B,KAAK,SAAS,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,OAAO,EAAE,IAE3D,CAAC,KAAK,SAAS,MAAM,GACjB,KAAK,SAAS,EAAE,GACd,KAAK,GACL,MAAM,SAAS,KAAK,GAClB,YAAY,GACZ,kBAAkB,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC,GACrD,KAAK,CAAC,GACV,CAAC,KAAK,SAAS,SAAS,MAAM,EAAE,GAC5B,MAAM,EAAE,SAAS,KAAK,GACpB,YAAY,GACZ,YAAY,CAAC,KAAK,CAAC,SAAS,MAAM,OAAO,GACvC;KACG,GAAG,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,MAAM,GAC3C,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,GACxC,KAAK,GACL,kBAAkB,CAChB,KAAK,CAAC,GAAG,CAAC,EACV;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CACzC,GACH,KAAK;CACV,SAAS,MAAM,MAAM,SAAS,SAAS,OAAO,EAAE,GAC/C,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,MAAM,GAC3C,MAAM,SAAS,SAAS,GACtB,KAAK,GACL,MAAM,GACR,KAAK,GACP,KAAK,GACP,KAAK,GACT,KAAK,CAAC,CAAA;AAEd;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,SAAS,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,OAAO,EAAE,EAE7D,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAClB,CACI,CAAC,KAAK,SAAS,MAAM,GACjB,KAAK,SAAS,EAAE,GACd,KAAK,CAAC,8BAA8B,CAAC,GACrC,OAAO,GACT,KAAK,CAAC,GACV,CAAC,KAAK,SAAS,SAAS,MAAM,EAAE,GAC5B,KAAK,SAAS,SAAS,EAAE,GACvB,KAAK,CAAC,kCAAkC,CAAC,GACzC,MAAM,EAAE,SAAS,KAAK,GACpB,OAAO,GACP,OAAO,GACX,KAAK,CAAC,CACb,GACF,iBAAiB,CAAC,KAAK,CAAC,CAoB1B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { InvalidAbiParameterError } from './errors.js';
|
|
2
|
+
import { isStructSignature, modifiers } from './runtime/signatures.js';
|
|
3
|
+
import { parseStructs } from './runtime/structs.js';
|
|
4
|
+
import { parseAbiParameter as parseAbiParameter_ } from './runtime/utils.js';
|
|
5
|
+
/**
|
|
6
|
+
* Parses human-readable ABI parameter into `AbiParameter`.
|
|
7
|
+
*
|
|
8
|
+
* @param param - Human-readable ABI parameter
|
|
9
|
+
* @returns Parsed `AbiParameter`.
|
|
10
|
+
*/
|
|
11
|
+
export function parseAbiParameter(param) {
|
|
12
|
+
let abiParameter;
|
|
13
|
+
if (typeof param === 'string')
|
|
14
|
+
abiParameter = parseAbiParameter_(param, {
|
|
15
|
+
modifiers,
|
|
16
|
+
});
|
|
17
|
+
else {
|
|
18
|
+
const structs = parseStructs(param);
|
|
19
|
+
const length = param.length;
|
|
20
|
+
for (let i = 0; i < length; i++) {
|
|
21
|
+
const signature = param[i];
|
|
22
|
+
if (isStructSignature(signature))
|
|
23
|
+
continue;
|
|
24
|
+
abiParameter = parseAbiParameter_(signature, { modifiers, structs });
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (!abiParameter)
|
|
29
|
+
throw new InvalidAbiParameterError({ param });
|
|
30
|
+
return abiParameter;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=parseAbiParameter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseAbiParameter.js","sourceRoot":"","sources":["../../../../src/core/internal/human-readable/parseAbiParameter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AA4C5E;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAG/B,KAcG;IAEH,IAAI,YAAsC,CAAA;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3B,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE;YACvC,SAAS;SACV,CAA6B,CAAA;SAC3B,CAAC;QACJ,MAAM,OAAO,GAAG,YAAY,CAAC,KAA0B,CAAC,CAAA;QACxD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAgB,CAAA;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,SAAS,GAAI,KAA2B,CAAC,CAAC,CAAE,CAAA;YAClD,IAAI,iBAAiB,CAAC,SAAS,CAAC;gBAAE,SAAQ;YAC1C,YAAY,GAAG,kBAAkB,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;YACpE,MAAK;QACP,CAAC;IACH,CAAC;IAED,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,wBAAwB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IAEhE,OAAO,YAAwC,CAAA;AACjD,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { AbiParameter } from 'abitype';
|
|
2
|
+
import type { Narrow } from 'abitype';
|
|
3
|
+
import type { Error, Filter } from './types.js';
|
|
4
|
+
import type { IsStructSignature, Modifier } from './types/signatures.js';
|
|
5
|
+
import type { ParseStructs } from './types/structs.js';
|
|
6
|
+
import type { SplitParameters } from './types/utils.js';
|
|
7
|
+
import type { ParseAbiParameters as ParseAbiParameters_ } from './types/utils.js';
|
|
8
|
+
/**
|
|
9
|
+
* Parses human-readable ABI parameters into `AbiParameter`s.
|
|
10
|
+
*
|
|
11
|
+
* @param params - Human-readable ABI parameters
|
|
12
|
+
* @returns Parsed `AbiParameter`s.
|
|
13
|
+
*/
|
|
14
|
+
export type ParseAbiParameters<params extends string | readonly string[] | readonly unknown[]> = (params extends string ? params extends '' ? never : string extends params ? readonly AbiParameter[] : ParseAbiParameters_<SplitParameters<params>, {
|
|
15
|
+
modifier: Modifier;
|
|
16
|
+
}> : never) | (params extends readonly string[] ? string[] extends params ? AbiParameter : ParseStructs<params> extends infer structs ? {
|
|
17
|
+
[key in keyof params]: params[key] extends string ? IsStructSignature<params[key]> extends true ? never : ParseAbiParameters_<SplitParameters<params[key]>, {
|
|
18
|
+
modifier: Modifier;
|
|
19
|
+
structs: structs;
|
|
20
|
+
}> : never;
|
|
21
|
+
} extends infer mapped extends readonly unknown[] ? Filter<mapped, never> extends readonly [...infer content] ? content['length'] extends 0 ? never : DeepFlatten<content> : never : never : never : never);
|
|
22
|
+
/**
|
|
23
|
+
* Flatten all members of `T`.
|
|
24
|
+
*
|
|
25
|
+
* @param T - List of items to flatten
|
|
26
|
+
* @param Acc - The accumulator used while recursing
|
|
27
|
+
* @returns The flattened array
|
|
28
|
+
*/
|
|
29
|
+
type DeepFlatten<T extends readonly unknown[], Acc extends readonly unknown[] = readonly []> = T extends readonly [infer head, ...infer tail] ? tail extends undefined ? never : head extends readonly unknown[] ? DeepFlatten<tail, readonly [...Acc, ...DeepFlatten<head>]> : DeepFlatten<tail, readonly [...Acc, head]> : Acc;
|
|
30
|
+
/**
|
|
31
|
+
* Parses human-readable ABI parameters into `AbiParameter`s.
|
|
32
|
+
*
|
|
33
|
+
* @param params - Human-readable ABI parameters
|
|
34
|
+
* @returns Parsed `AbiParameter`s.
|
|
35
|
+
*/
|
|
36
|
+
export declare function parseAbiParameters<params extends string | readonly string[] | readonly unknown[]>(params: Narrow<params> & ((params extends string ? params extends '' ? Error<'Empty string is not allowed.'> : unknown : never) | (params extends readonly string[] ? params extends readonly [] ? Error<'At least one parameter required.'> : string[] extends params ? unknown : unknown : never))): ParseAbiParameters<params>;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=parseAbiParameters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseAbiParameters.d.ts","sourceRoot":"","sources":["../../../../src/core/internal/human-readable/parseAbiParameters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AACrC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAM/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEjF;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,CAC5B,MAAM,SAAS,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,OAAO,EAAE,IAE5D,CAAC,MAAM,SAAS,MAAM,GAClB,MAAM,SAAS,EAAE,GACf,KAAK,GACL,MAAM,SAAS,MAAM,GACnB,SAAS,YAAY,EAAE,GACvB,mBAAmB,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC,GACxE,KAAK,CAAC,GACV,CAAC,MAAM,SAAS,SAAS,MAAM,EAAE,GAC7B,MAAM,EAAE,SAAS,MAAM,GACrB,YAAY,GACZ,YAAY,CAAC,MAAM,CAAC,SAAS,MAAM,OAAO,GACxC;KACG,GAAG,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,MAAM,GAC7C,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,IAAI,GACzC,KAAK,GACL,mBAAmB,CACjB,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAC5B;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CACzC,GACH,KAAK;CACV,SAAS,MAAM,MAAM,SAAS,SAAS,OAAO,EAAE,GAC/C,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GACzB,KAAK,GACL,WAAW,CAAC,OAAO,CAAC,GACtB,KAAK,GACP,KAAK,GACP,KAAK,GACT,KAAK,CAAC,CAAA;AAEd;;;;;;GAMG;AACH,KAAK,WAAW,CACd,CAAC,SAAS,SAAS,OAAO,EAAE,EAC5B,GAAG,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,EAAE,IAC1C,CAAC,SAAS,SAAS,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAC9C,IAAI,SAAS,SAAS,GACpB,KAAK,GACL,IAAI,SAAS,SAAS,OAAO,EAAE,GAC7B,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,GAAG,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,GAC1D,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,GAC9C,GAAG,CAAA;AAEP;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,SAAS,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,OAAO,EAAE,EAE9D,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GACpB,CACI,CAAC,MAAM,SAAS,MAAM,GAClB,MAAM,SAAS,EAAE,GACf,KAAK,CAAC,8BAA8B,CAAC,GACrC,OAAO,GACT,KAAK,CAAC,GACV,CAAC,MAAM,SAAS,SAAS,MAAM,EAAE,GAC7B,MAAM,SAAS,SAAS,EAAE,GACxB,KAAK,CAAC,kCAAkC,CAAC,GACzC,MAAM,EAAE,SAAS,MAAM,GACrB,OAAO,GACP,OAAO,GACX,KAAK,CAAC,CACb,GACF,kBAAkB,CAAC,MAAM,CAAC,CA4B5B"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { InvalidAbiParametersError } from './errors.js';
|
|
2
|
+
import { isStructSignature, modifiers } from './runtime/signatures.js';
|
|
3
|
+
import { parseStructs } from './runtime/structs.js';
|
|
4
|
+
import { splitParameters } from './runtime/utils.js';
|
|
5
|
+
import { parseAbiParameter as parseAbiParameter_ } from './runtime/utils.js';
|
|
6
|
+
/**
|
|
7
|
+
* Parses human-readable ABI parameters into `AbiParameter`s.
|
|
8
|
+
*
|
|
9
|
+
* @param params - Human-readable ABI parameters
|
|
10
|
+
* @returns Parsed `AbiParameter`s.
|
|
11
|
+
*/
|
|
12
|
+
export function parseAbiParameters(params) {
|
|
13
|
+
const abiParameters = [];
|
|
14
|
+
if (typeof params === 'string') {
|
|
15
|
+
const parameters = splitParameters(params);
|
|
16
|
+
const length = parameters.length;
|
|
17
|
+
for (let i = 0; i < length; i++) {
|
|
18
|
+
abiParameters.push(parseAbiParameter_(parameters[i], { modifiers }));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
const structs = parseStructs(params);
|
|
23
|
+
const length = params.length;
|
|
24
|
+
for (let i = 0; i < length; i++) {
|
|
25
|
+
const signature = params[i];
|
|
26
|
+
if (isStructSignature(signature))
|
|
27
|
+
continue;
|
|
28
|
+
const parameters = splitParameters(signature);
|
|
29
|
+
const length = parameters.length;
|
|
30
|
+
for (let k = 0; k < length; k++) {
|
|
31
|
+
abiParameters.push(parseAbiParameter_(parameters[k], { modifiers, structs }));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (abiParameters.length === 0)
|
|
36
|
+
throw new InvalidAbiParametersError({ params });
|
|
37
|
+
return abiParameters;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=parseAbiParameters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseAbiParameters.js","sourceRoot":"","sources":["../../../../src/core/internal/human-readable/parseAbiParameters.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AA+D5E;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAGhC,MAcG;IAEH,MAAM,aAAa,GAAmB,EAAE,CAAA;IACxC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;QAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,YAAY,CAAC,MAA2B,CAAC,CAAA;QACzD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAgB,CAAA;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,MAAM,SAAS,GAAI,MAA4B,CAAC,CAAC,CAAE,CAAA;YACnD,IAAI,iBAAiB,CAAC,SAAS,CAAC;gBAAE,SAAQ;YAC1C,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;YAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,aAAa,CAAC,IAAI,CAChB,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAC3D,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAC5B,MAAM,IAAI,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IAEjD,OAAO,aAA2C,CAAA;AACpD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** @internal */
|
|
2
|
+
export declare function execTyped<type>(regex: RegExp, string: string): type | undefined;
|
|
3
|
+
/** @internal */
|
|
4
|
+
export declare const bytesRegex: RegExp;
|
|
5
|
+
/** @internal */
|
|
6
|
+
export declare const integerRegex: RegExp;
|
|
7
|
+
/** @internal */
|
|
8
|
+
export declare const isTupleRegex: RegExp;
|
|
9
|
+
//# sourceMappingURL=regex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex.d.ts","sourceRoot":"","sources":["../../../../src/core/internal/human-readable/regex.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,wBAAgB,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAEnC,IAAI,GAAG,SAAS,CACzC;AAED,gBAAgB;AAChB,eAAO,MAAM,UAAU,QAAyC,CAAA;AAEhE,gBAAgB;AAChB,eAAO,MAAM,YAAY,QACuG,CAAA;AAEhI,gBAAgB;AAChB,eAAO,MAAM,YAAY,QAAiB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** @internal */
|
|
2
|
+
export function execTyped(regex, string) {
|
|
3
|
+
const match = regex.exec(string);
|
|
4
|
+
return match?.groups;
|
|
5
|
+
}
|
|
6
|
+
/** @internal */
|
|
7
|
+
export const bytesRegex = /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/;
|
|
8
|
+
/** @internal */
|
|
9
|
+
export const integerRegex = /^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;
|
|
10
|
+
/** @internal */
|
|
11
|
+
export const isTupleRegex = /^\(.+?\).*?$/;
|
|
12
|
+
//# sourceMappingURL=regex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regex.js","sourceRoot":"","sources":["../../../../src/core/internal/human-readable/regex.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,MAAM,UAAU,SAAS,CAAO,KAAa,EAAE,MAAc;IAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAChC,OAAO,KAAK,EAAE,MAA0B,CAAA;AAC1C,CAAC;AAED,gBAAgB;AAChB,MAAM,CAAC,MAAM,UAAU,GAAG,sCAAsC,CAAA;AAEhE,gBAAgB;AAChB,MAAM,CAAC,MAAM,YAAY,GACvB,8HAA8H,CAAA;AAEhI,gBAAgB;AAChB,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AbiItemType, AbiParameter } from 'abitype';
|
|
2
|
+
import type { StructLookup } from '../types/structs.js';
|
|
3
|
+
/**
|
|
4
|
+
* Gets the parameter cache key namespaced by `type` and `structs`. This prevents
|
|
5
|
+
* parameters from being accessible to types that don't allow them (e.g.
|
|
6
|
+
* `string indexed foo` not allowed outside of `type: 'event'`) and ensures
|
|
7
|
+
* different struct definitions with the same name are cached separately.
|
|
8
|
+
* @param param ABI parameter string
|
|
9
|
+
* @param type ABI parameter type
|
|
10
|
+
* @param structs Struct definitions to include in cache key
|
|
11
|
+
* @returns Cache key for `parameterCache`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function getParameterCacheKey(param: string, type?: AbiItemType | 'struct', structs?: StructLookup): string;
|
|
14
|
+
/**
|
|
15
|
+
* Basic cache seeded with common ABI parameter strings.
|
|
16
|
+
*
|
|
17
|
+
* **Note: When seeding more parameters, make sure you benchmark performance. The current number is the ideal balance between performance and having an already existing cache.**
|
|
18
|
+
*/
|
|
19
|
+
export declare const parameterCache: Map<string, AbiParameter & {
|
|
20
|
+
indexed?: boolean;
|
|
21
|
+
}>;
|
|
22
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../../src/core/internal/human-readable/runtime/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,WAAW,GAAG,QAAQ,EAC7B,OAAO,CAAC,EAAE,YAAY,UAcvB;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc;cAEE,OAAO;EAwDlC,CAAA"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gets the parameter cache key namespaced by `type` and `structs`. This prevents
|
|
3
|
+
* parameters from being accessible to types that don't allow them (e.g.
|
|
4
|
+
* `string indexed foo` not allowed outside of `type: 'event'`) and ensures
|
|
5
|
+
* different struct definitions with the same name are cached separately.
|
|
6
|
+
* @param param ABI parameter string
|
|
7
|
+
* @param type ABI parameter type
|
|
8
|
+
* @param structs Struct definitions to include in cache key
|
|
9
|
+
* @returns Cache key for `parameterCache`.
|
|
10
|
+
*/
|
|
11
|
+
export function getParameterCacheKey(param, type, structs) {
|
|
12
|
+
let structKey = '';
|
|
13
|
+
if (structs)
|
|
14
|
+
for (const struct of Object.entries(structs)) {
|
|
15
|
+
if (!struct)
|
|
16
|
+
continue;
|
|
17
|
+
let propertyKey = '';
|
|
18
|
+
for (const property of struct[1]) {
|
|
19
|
+
propertyKey += `[${property.type}${property.name ? `:${property.name}` : ''}]`;
|
|
20
|
+
}
|
|
21
|
+
structKey += `(${struct[0]}{${propertyKey}})`;
|
|
22
|
+
}
|
|
23
|
+
if (type)
|
|
24
|
+
return `${type}:${param}${structKey}`;
|
|
25
|
+
return `${param}${structKey}`;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Basic cache seeded with common ABI parameter strings.
|
|
29
|
+
*
|
|
30
|
+
* **Note: When seeding more parameters, make sure you benchmark performance. The current number is the ideal balance between performance and having an already existing cache.**
|
|
31
|
+
*/
|
|
32
|
+
export const parameterCache = new Map([
|
|
33
|
+
// Unnamed
|
|
34
|
+
['address', { type: 'address' }],
|
|
35
|
+
['bool', { type: 'bool' }],
|
|
36
|
+
['bytes', { type: 'bytes' }],
|
|
37
|
+
['bytes32', { type: 'bytes32' }],
|
|
38
|
+
['int', { type: 'int256' }],
|
|
39
|
+
['int256', { type: 'int256' }],
|
|
40
|
+
['string', { type: 'string' }],
|
|
41
|
+
['uint', { type: 'uint256' }],
|
|
42
|
+
['uint8', { type: 'uint8' }],
|
|
43
|
+
['uint16', { type: 'uint16' }],
|
|
44
|
+
['uint24', { type: 'uint24' }],
|
|
45
|
+
['uint32', { type: 'uint32' }],
|
|
46
|
+
['uint64', { type: 'uint64' }],
|
|
47
|
+
['uint96', { type: 'uint96' }],
|
|
48
|
+
['uint112', { type: 'uint112' }],
|
|
49
|
+
['uint160', { type: 'uint160' }],
|
|
50
|
+
['uint192', { type: 'uint192' }],
|
|
51
|
+
['uint256', { type: 'uint256' }],
|
|
52
|
+
// Named
|
|
53
|
+
['address owner', { type: 'address', name: 'owner' }],
|
|
54
|
+
['address to', { type: 'address', name: 'to' }],
|
|
55
|
+
['bool approved', { type: 'bool', name: 'approved' }],
|
|
56
|
+
['bytes _data', { type: 'bytes', name: '_data' }],
|
|
57
|
+
['bytes data', { type: 'bytes', name: 'data' }],
|
|
58
|
+
['bytes signature', { type: 'bytes', name: 'signature' }],
|
|
59
|
+
['bytes32 hash', { type: 'bytes32', name: 'hash' }],
|
|
60
|
+
['bytes32 r', { type: 'bytes32', name: 'r' }],
|
|
61
|
+
['bytes32 root', { type: 'bytes32', name: 'root' }],
|
|
62
|
+
['bytes32 s', { type: 'bytes32', name: 's' }],
|
|
63
|
+
['string name', { type: 'string', name: 'name' }],
|
|
64
|
+
['string symbol', { type: 'string', name: 'symbol' }],
|
|
65
|
+
['string tokenURI', { type: 'string', name: 'tokenURI' }],
|
|
66
|
+
['uint tokenId', { type: 'uint256', name: 'tokenId' }],
|
|
67
|
+
['uint8 v', { type: 'uint8', name: 'v' }],
|
|
68
|
+
['uint256 balance', { type: 'uint256', name: 'balance' }],
|
|
69
|
+
['uint256 tokenId', { type: 'uint256', name: 'tokenId' }],
|
|
70
|
+
['uint256 value', { type: 'uint256', name: 'value' }],
|
|
71
|
+
// Indexed
|
|
72
|
+
[
|
|
73
|
+
'event:address indexed from',
|
|
74
|
+
{ type: 'address', name: 'from', indexed: true },
|
|
75
|
+
],
|
|
76
|
+
['event:address indexed to', { type: 'address', name: 'to', indexed: true }],
|
|
77
|
+
[
|
|
78
|
+
'event:uint indexed tokenId',
|
|
79
|
+
{ type: 'uint256', name: 'tokenId', indexed: true },
|
|
80
|
+
],
|
|
81
|
+
[
|
|
82
|
+
'event:uint256 indexed tokenId',
|
|
83
|
+
{ type: 'uint256', name: 'tokenId', indexed: true },
|
|
84
|
+
],
|
|
85
|
+
]);
|
|
86
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../../../src/core/internal/human-readable/runtime/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { AbiStateMutability } from 'abitype';
|
|
2
|
+
import type { FunctionModifier, Modifier } from '../types/signatures.js';
|
|
3
|
+
export declare function isErrorSignature(signature: string): boolean;
|
|
4
|
+
export declare function execErrorSignature(signature: string): {
|
|
5
|
+
name: string;
|
|
6
|
+
parameters: string;
|
|
7
|
+
} | undefined;
|
|
8
|
+
export declare function isEventSignature(signature: string): boolean;
|
|
9
|
+
export declare function execEventSignature(signature: string): {
|
|
10
|
+
name: string;
|
|
11
|
+
parameters: string;
|
|
12
|
+
} | undefined;
|
|
13
|
+
export declare function isFunctionSignature(signature: string): boolean;
|
|
14
|
+
export declare function execFunctionSignature(signature: string): {
|
|
15
|
+
name: string;
|
|
16
|
+
parameters: string;
|
|
17
|
+
stateMutability?: AbiStateMutability;
|
|
18
|
+
returns?: string;
|
|
19
|
+
} | undefined;
|
|
20
|
+
export declare function isStructSignature(signature: string): boolean;
|
|
21
|
+
export declare function execStructSignature(signature: string): {
|
|
22
|
+
name: string;
|
|
23
|
+
properties: string;
|
|
24
|
+
} | undefined;
|
|
25
|
+
export declare function isConstructorSignature(signature: string): boolean;
|
|
26
|
+
export declare function execConstructorSignature(signature: string): {
|
|
27
|
+
parameters: string;
|
|
28
|
+
stateMutability?: Extract<AbiStateMutability, "payable">;
|
|
29
|
+
} | undefined;
|
|
30
|
+
export declare function isFallbackSignature(signature: string): boolean;
|
|
31
|
+
export declare function execFallbackSignature(signature: string): {
|
|
32
|
+
parameters: string;
|
|
33
|
+
stateMutability?: Extract<AbiStateMutability, "payable">;
|
|
34
|
+
} | undefined;
|
|
35
|
+
export declare function isReceiveSignature(signature: string): boolean;
|
|
36
|
+
export declare const modifiers: Set<Modifier>;
|
|
37
|
+
export declare const eventModifiers: Set<"indexed">;
|
|
38
|
+
export declare const functionModifiers: Set<FunctionModifier>;
|
|
39
|
+
//# sourceMappingURL=signatures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signatures.d.ts","sourceRoot":"","sources":["../../../../../src/core/internal/human-readable/runtime/signatures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEjD,OAAO,KAAK,EAEV,gBAAgB,EAChB,QAAQ,EACT,MAAM,wBAAwB,CAAA;AAK/B,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,WAEjD;AACD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM;UACzB,MAAM;gBAAc,MAAM;cAIpD;AAKD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,WAEjD;AACD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM;UACzB,MAAM;gBAAc,MAAM;cAIpD;AAKD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,WAEpD;AACD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM;UAE7C,MAAM;gBACA,MAAM;sBACA,kBAAkB;cAC1B,MAAM;cAEnB;AAKD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,WAElD;AACD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM;UAC1B,MAAM;gBAAc,MAAM;cAIpD;AAKD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,WAEvD;AACD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM;gBAE1C,MAAM;sBACA,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC;cAE3D;AAKD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,WAEpD;AACD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM;gBAEvC,MAAM;sBACA,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC;cAE3D;AAID,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,WAEnD;AAED,eAAO,MAAM,SAAS,eAKpB,CAAA;AACF,eAAO,MAAM,cAAc,gBAAsC,CAAA;AACjE,eAAO,MAAM,iBAAiB,uBAI5B,CAAA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { execTyped } from '../regex.js';
|
|
2
|
+
// https://regexr.com/7gmok
|
|
3
|
+
const errorSignatureRegex = /^error (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)$/;
|
|
4
|
+
export function isErrorSignature(signature) {
|
|
5
|
+
return errorSignatureRegex.test(signature);
|
|
6
|
+
}
|
|
7
|
+
export function execErrorSignature(signature) {
|
|
8
|
+
return execTyped(errorSignatureRegex, signature);
|
|
9
|
+
}
|
|
10
|
+
// https://regexr.com/7gmoq
|
|
11
|
+
const eventSignatureRegex = /^event (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)$/;
|
|
12
|
+
export function isEventSignature(signature) {
|
|
13
|
+
return eventSignatureRegex.test(signature);
|
|
14
|
+
}
|
|
15
|
+
export function execEventSignature(signature) {
|
|
16
|
+
return execTyped(eventSignatureRegex, signature);
|
|
17
|
+
}
|
|
18
|
+
// https://regexr.com/7gmot
|
|
19
|
+
const functionSignatureRegex = /^function (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*)\((?<parameters>.*?)\)(?: (?<scope>external|public{1}))?(?: (?<stateMutability>pure|view|nonpayable|payable{1}))?(?: returns\s?\((?<returns>.*?)\))?$/;
|
|
20
|
+
export function isFunctionSignature(signature) {
|
|
21
|
+
return functionSignatureRegex.test(signature);
|
|
22
|
+
}
|
|
23
|
+
export function execFunctionSignature(signature) {
|
|
24
|
+
return execTyped(functionSignatureRegex, signature);
|
|
25
|
+
}
|
|
26
|
+
// https://regexr.com/7gmp3
|
|
27
|
+
const structSignatureRegex = /^struct (?<name>[a-zA-Z$_][a-zA-Z0-9$_]*) \{(?<properties>.*?)\}$/;
|
|
28
|
+
export function isStructSignature(signature) {
|
|
29
|
+
return structSignatureRegex.test(signature);
|
|
30
|
+
}
|
|
31
|
+
export function execStructSignature(signature) {
|
|
32
|
+
return execTyped(structSignatureRegex, signature);
|
|
33
|
+
}
|
|
34
|
+
// https://regexr.com/78u01
|
|
35
|
+
const constructorSignatureRegex = /^constructor\((?<parameters>.*?)\)(?:\s(?<stateMutability>payable{1}))?$/;
|
|
36
|
+
export function isConstructorSignature(signature) {
|
|
37
|
+
return constructorSignatureRegex.test(signature);
|
|
38
|
+
}
|
|
39
|
+
export function execConstructorSignature(signature) {
|
|
40
|
+
return execTyped(constructorSignatureRegex, signature);
|
|
41
|
+
}
|
|
42
|
+
// https://regexr.com/7srtn
|
|
43
|
+
const fallbackSignatureRegex = /^fallback\(\) external(?:\s(?<stateMutability>payable{1}))?$/;
|
|
44
|
+
export function isFallbackSignature(signature) {
|
|
45
|
+
return fallbackSignatureRegex.test(signature);
|
|
46
|
+
}
|
|
47
|
+
export function execFallbackSignature(signature) {
|
|
48
|
+
return execTyped(fallbackSignatureRegex, signature);
|
|
49
|
+
}
|
|
50
|
+
// https://regexr.com/78u1k
|
|
51
|
+
const receiveSignatureRegex = /^receive\(\) external payable$/;
|
|
52
|
+
export function isReceiveSignature(signature) {
|
|
53
|
+
return receiveSignatureRegex.test(signature);
|
|
54
|
+
}
|
|
55
|
+
export const modifiers = new Set([
|
|
56
|
+
'memory',
|
|
57
|
+
'indexed',
|
|
58
|
+
'storage',
|
|
59
|
+
'calldata',
|
|
60
|
+
]);
|
|
61
|
+
export const eventModifiers = new Set(['indexed']);
|
|
62
|
+
export const functionModifiers = new Set([
|
|
63
|
+
'calldata',
|
|
64
|
+
'memory',
|
|
65
|
+
'storage',
|
|
66
|
+
]);
|
|
67
|
+
//# sourceMappingURL=signatures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signatures.js","sourceRoot":"","sources":["../../../../../src/core/internal/human-readable/runtime/signatures.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAOvC,2BAA2B;AAC3B,MAAM,mBAAmB,GACvB,iEAAiE,CAAA;AACnE,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC5C,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,OAAO,SAAS,CACd,mBAAmB,EACnB,SAAS,CACV,CAAA;AACH,CAAC;AAED,2BAA2B;AAC3B,MAAM,mBAAmB,GACvB,iEAAiE,CAAA;AACnE,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC5C,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,OAAO,SAAS,CACd,mBAAmB,EACnB,SAAS,CACV,CAAA;AACH,CAAC;AAED,2BAA2B;AAC3B,MAAM,sBAAsB,GAC1B,kMAAkM,CAAA;AACpM,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC/C,CAAC;AACD,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,OAAO,SAAS,CAKb,sBAAsB,EAAE,SAAS,CAAC,CAAA;AACvC,CAAC;AAED,2BAA2B;AAC3B,MAAM,oBAAoB,GACxB,mEAAmE,CAAA;AACrE,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,OAAO,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC7C,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO,SAAS,CACd,oBAAoB,EACpB,SAAS,CACV,CAAA;AACH,CAAC;AAED,2BAA2B;AAC3B,MAAM,yBAAyB,GAC7B,0EAA0E,CAAA;AAC5E,MAAM,UAAU,sBAAsB,CAAC,SAAiB;IACtD,OAAO,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAClD,CAAC;AACD,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,OAAO,SAAS,CAGb,yBAAyB,EAAE,SAAS,CAAC,CAAA;AAC1C,CAAC;AAED,2BAA2B;AAC3B,MAAM,sBAAsB,GAC1B,8DAA8D,CAAA;AAChE,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC/C,CAAC;AACD,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,OAAO,SAAS,CAGb,sBAAsB,EAAE,SAAS,CAAC,CAAA;AACvC,CAAC;AAED,2BAA2B;AAC3B,MAAM,qBAAqB,GAAG,gCAAgC,CAAA;AAC9D,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,OAAO,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAW;IACzC,QAAQ;IACR,SAAS;IACT,SAAS;IACT,UAAU;CACX,CAAC,CAAA;AACF,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAgB,CAAC,SAAS,CAAC,CAAC,CAAA;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAmB;IACzD,UAAU;IACV,QAAQ;IACR,SAAS;CACV,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structs.d.ts","sourceRoot":"","sources":["../../../../../src/core/internal/human-readable/runtime/structs.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIvD,wBAAgB,YAAY,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,gBAuCzD"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { execTyped, isTupleRegex } from '../regex.js';
|
|
2
|
+
import { UnknownTypeError } from '../errors.js';
|
|
3
|
+
import { InvalidAbiTypeParameterError } from '../errors.js';
|
|
4
|
+
import { InvalidSignatureError, InvalidStructSignatureError, } from '../errors.js';
|
|
5
|
+
import { CircularReferenceError } from '../errors.js';
|
|
6
|
+
import { execStructSignature, isStructSignature } from './signatures.js';
|
|
7
|
+
import { isSolidityType, parseAbiParameter } from './utils.js';
|
|
8
|
+
export function parseStructs(signatures) {
|
|
9
|
+
// Create "shallow" version of each struct (and filter out non-structs or invalid structs)
|
|
10
|
+
const shallowStructs = {};
|
|
11
|
+
const signaturesLength = signatures.length;
|
|
12
|
+
for (let i = 0; i < signaturesLength; i++) {
|
|
13
|
+
const signature = signatures[i];
|
|
14
|
+
if (!isStructSignature(signature))
|
|
15
|
+
continue;
|
|
16
|
+
const match = execStructSignature(signature);
|
|
17
|
+
if (!match)
|
|
18
|
+
throw new InvalidSignatureError({ signature, type: 'struct' });
|
|
19
|
+
const properties = match.properties.split(';');
|
|
20
|
+
const components = [];
|
|
21
|
+
const propertiesLength = properties.length;
|
|
22
|
+
for (let k = 0; k < propertiesLength; k++) {
|
|
23
|
+
const property = properties[k];
|
|
24
|
+
const trimmed = property.trim();
|
|
25
|
+
if (!trimmed)
|
|
26
|
+
continue;
|
|
27
|
+
const abiParameter = parseAbiParameter(trimmed, {
|
|
28
|
+
type: 'struct',
|
|
29
|
+
});
|
|
30
|
+
components.push(abiParameter);
|
|
31
|
+
}
|
|
32
|
+
if (!components.length)
|
|
33
|
+
throw new InvalidStructSignatureError({ signature });
|
|
34
|
+
shallowStructs[match.name] = components;
|
|
35
|
+
}
|
|
36
|
+
// Resolve nested structs inside each parameter
|
|
37
|
+
const resolvedStructs = {};
|
|
38
|
+
const entries = Object.entries(shallowStructs);
|
|
39
|
+
const entriesLength = entries.length;
|
|
40
|
+
for (let i = 0; i < entriesLength; i++) {
|
|
41
|
+
const [name, parameters] = entries[i];
|
|
42
|
+
resolvedStructs[name] = resolveStructs(parameters, shallowStructs);
|
|
43
|
+
}
|
|
44
|
+
return resolvedStructs;
|
|
45
|
+
}
|
|
46
|
+
const typeWithoutTupleRegex = /^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*)(?<array>(?:\[\d*?\])+?)?$/;
|
|
47
|
+
function resolveStructs(abiParameters = [], structs = {}, ancestors = new Set()) {
|
|
48
|
+
const components = [];
|
|
49
|
+
const length = abiParameters.length;
|
|
50
|
+
for (let i = 0; i < length; i++) {
|
|
51
|
+
const abiParameter = abiParameters[i];
|
|
52
|
+
const isTuple = isTupleRegex.test(abiParameter.type);
|
|
53
|
+
if (isTuple)
|
|
54
|
+
components.push(abiParameter);
|
|
55
|
+
else {
|
|
56
|
+
const match = execTyped(typeWithoutTupleRegex, abiParameter.type);
|
|
57
|
+
if (!match?.type)
|
|
58
|
+
throw new InvalidAbiTypeParameterError({ abiParameter });
|
|
59
|
+
const { array, type } = match;
|
|
60
|
+
if (type in structs) {
|
|
61
|
+
if (ancestors.has(type))
|
|
62
|
+
throw new CircularReferenceError({ type });
|
|
63
|
+
components.push({
|
|
64
|
+
...abiParameter,
|
|
65
|
+
type: `tuple${array ?? ''}`,
|
|
66
|
+
components: resolveStructs(structs[type], structs, new Set([...ancestors, type])),
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
if (isSolidityType(type))
|
|
71
|
+
components.push(abiParameter);
|
|
72
|
+
else
|
|
73
|
+
throw new UnknownTypeError({ type });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return components;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=structs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structs.js","sourceRoot":"","sources":["../../../../../src/core/internal/human-readable/runtime/structs.ts"],"names":[],"mappings":"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"}
|