solc-typed-ast 19.1.0 → 19.2.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.
@@ -0,0 +1,15 @@
1
+ import { ASTContext, EnumDefinition } from "../ast";
2
+ import { TypeIdentifier, IntTypeId } from "./ast";
3
+ /**
4
+ * Return the int typeIdentifier corresponding to a given Enum
5
+ * @param decl
6
+ * @returns
7
+ */
8
+ export declare function enumToIntTypeId(decl: EnumDefinition): IntTypeId;
9
+ /**
10
+ * Given an function argument's `TypeIdentifier` `from`, return the
11
+ * `TypeIdentifier` that this argument would be encoded as in calldata.
12
+ * @param from
13
+ */
14
+ export declare function toABIType(from: TypeIdentifier, ctx: ASTContext): TypeIdentifier;
15
+ //# sourceMappingURL=abi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abi.d.ts","sourceRoot":"","sources":["../../src/typeIdentifiers/abi.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EAGV,cAAc,EAEjB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACH,cAAc,EAMd,SAAS,EAUZ,MAAM,OAAO,CAAC;AAIf;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,CAoB/D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,UAAU,GAAG,cAAc,CA8E/E"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toABIType = exports.enumToIntTypeId = void 0;
4
+ const ast_1 = require("../ast");
5
+ const misc_1 = require("../misc");
6
+ const ast_2 = require("./ast");
7
+ const constants_1 = require("./constants");
8
+ const utils_1 = require("./utils");
9
+ /**
10
+ * Return the int typeIdentifier corresponding to a given Enum
11
+ * @param decl
12
+ * @returns
13
+ */
14
+ function enumToIntTypeId(decl) {
15
+ const length = decl.children.length;
16
+ let size;
17
+ for (let n = 8; n <= 32; n += 8) {
18
+ if (length <= 2 ** n) {
19
+ size = n;
20
+ break;
21
+ }
22
+ }
23
+ (0, misc_1.assert)(size !== undefined, "Unable to detect enum type size - member count exceeds 2 ** 32", decl);
24
+ return new ast_2.IntTypeId(size, false);
25
+ }
26
+ exports.enumToIntTypeId = enumToIntTypeId;
27
+ /**
28
+ * Given an function argument's `TypeIdentifier` `from`, return the
29
+ * `TypeIdentifier` that this argument would be encoded as in calldata.
30
+ * @param from
31
+ */
32
+ function toABIType(from, ctx) {
33
+ if (from instanceof ast_2.AddressTypeId) {
34
+ // normalize payable -> address
35
+ return constants_1.addressT;
36
+ }
37
+ // Simple case - these are passed unchanged
38
+ if (from instanceof ast_2.BoolTypeId ||
39
+ from instanceof ast_2.BytesTypeId ||
40
+ from instanceof ast_2.StringTypeId ||
41
+ from instanceof ast_2.FixedBytesTypeId ||
42
+ from instanceof ast_2.IntTypeId) {
43
+ return from;
44
+ }
45
+ if ((0, utils_1.isTypeInStorage)(from)) {
46
+ return constants_1.uint256T;
47
+ }
48
+ if (from instanceof ast_2.PointerTypeId) {
49
+ (0, misc_1.assert)(from.location !== ast_1.DataLocation.Storage, `Unexpected pointer {0}`, from);
50
+ return toABIType(from.toType, ctx);
51
+ }
52
+ // Size arrays are passed as tuples, unsized arrays as arrays
53
+ if (from instanceof ast_2.ArrayTypeId) {
54
+ const elT = toABIType(from.elT, ctx);
55
+ return from.size === undefined
56
+ ? new ast_2.ArrayTypeId(elT, from.size)
57
+ : new ast_2.TupleTypeId((0, misc_1.repeat)(elT, Number(from.size)));
58
+ }
59
+ if (from instanceof ast_2.UserDefinedValueTypeId) {
60
+ const def = ctx.requireType(from.id, ast_1.UserDefinedValueTypeDefinition);
61
+ const innerT = (0, utils_1.typeOf)(def.underlyingType);
62
+ return toABIType(innerT, ctx);
63
+ }
64
+ // Contracts are passed as addresses
65
+ if (from instanceof ast_2.ContractTypeId) {
66
+ return constants_1.addressT;
67
+ }
68
+ // Enums are passed as the smallest number that fits
69
+ if (from instanceof ast_2.EnumTypeId) {
70
+ const def = ctx.requireType(from.id, ast_1.EnumDefinition);
71
+ return enumToIntTypeId(def);
72
+ }
73
+ // Structs are passed as tuples
74
+ if (from instanceof ast_2.StructTypeId) {
75
+ const def = ctx.requireType(from.id, ast_1.StructDefinition);
76
+ let fieldTs = def.vMembers.map((decl) => (0, utils_1.typeOf)(decl));
77
+ // Remove any mappings
78
+ fieldTs = fieldTs.filter((fieldT) => !(fieldT instanceof ast_2.MappingTypeId));
79
+ // Convert the fields to ABI types and filter out any empty tuples.
80
+ // Empty tuples can result if a field is a struct contains only mappings.
81
+ // Also note that struct fields have "storage" as a default location.
82
+ // Convert to Memory to avoid treating them as storage pointers.
83
+ const abiFieldTs = fieldTs
84
+ .map((fieldT) => toABIType((0, utils_1.changeLocationTo)(fieldT, ast_1.DataLocation.Memory), ctx))
85
+ .filter((abiFieldT) => !(abiFieldT instanceof ast_2.TupleTypeId && abiFieldT.components.length === 0));
86
+ return new ast_2.TupleTypeId(abiFieldTs);
87
+ }
88
+ if (from instanceof ast_2.FunctionTypeId && from.kind === "external") {
89
+ return constants_1.bytes24T;
90
+ }
91
+ (0, misc_1.assert)(false, `Cannot abi encode type ${from.pp()}`);
92
+ }
93
+ exports.toABIType = toABIType;
94
+ //# sourceMappingURL=abi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abi.js","sourceRoot":"","sources":["../../src/typeIdentifiers/abi.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export * from "./utils";
2
2
  export * from "./ast";
3
+ export * from "./abi";
4
+ export * from "./signature";
3
5
  export { parseTypeIdentifier } from "./typeIdentifier_parser_gen";
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/typeIdentifiers/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/typeIdentifiers/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -17,6 +17,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.parseTypeIdentifier = void 0;
18
18
  __exportStar(require("./utils"), exports);
19
19
  __exportStar(require("./ast"), exports);
20
+ __exportStar(require("./abi"), exports);
21
+ __exportStar(require("./signature"), exports);
20
22
  var typeIdentifier_parser_gen_1 = require("./typeIdentifier_parser_gen");
21
23
  Object.defineProperty(exports, "parseTypeIdentifier", { enumerable: true, get: function () { return typeIdentifier_parser_gen_1.parseTypeIdentifier; } });
22
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/typeIdentifiers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,wCAAsB;AACtB,yEAAkE;AAAzD,gIAAA,mBAAmB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/typeIdentifiers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,wCAAsB;AACtB,wCAAsB;AACtB,8CAA4B;AAC5B,yEAAkE;AAAzD,gIAAA,mBAAmB,OAAA"}
@@ -0,0 +1,4 @@
1
+ import { FunctionDefinition, VariableDeclaration, EventDefinition, ErrorDefinition } from "../ast";
2
+ export declare function signature(nd: FunctionDefinition | VariableDeclaration | EventDefinition | ErrorDefinition): string;
3
+ export declare function signatureHash(nd: FunctionDefinition | VariableDeclaration | EventDefinition | ErrorDefinition): Uint8Array;
4
+ //# sourceMappingURL=signature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../src/typeIdentifiers/signature.ts"],"names":[],"mappings":"AACA,OAAO,EAOH,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,eAAe,EAElB,MAAM,QAAQ,CAAC;AAuLhB,wBAAgB,SAAS,CACrB,EAAE,EAAE,kBAAkB,GAAG,mBAAmB,GAAG,eAAe,GAAG,eAAe,GACjF,MAAM,CA8BR;AAED,wBAAgB,aAAa,CACzB,EAAE,EAAE,kBAAkB,GAAG,mBAAmB,GAAG,eAAe,GAAG,eAAe,GACjF,UAAU,CAIZ"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signatureHash = exports.signature = void 0;
4
+ const utils_1 = require("ethereum-cryptography/utils");
5
+ const ast_1 = require("../ast");
6
+ const misc_1 = require("../misc");
7
+ const ast_2 = require("./ast");
8
+ const constants_1 = require("./constants");
9
+ const utils_2 = require("./utils");
10
+ const keccak_1 = require("ethereum-cryptography/keccak");
11
+ const abi_1 = require("./abi");
12
+ /**
13
+ * Given a function argument `TypeIdentifier` `from`, return the
14
+ * `TypeIdentifier` as it should appear in the function signature.
15
+ *
16
+ * This differs from `toAbiType` in how it treats:
17
+ * - storage pointers
18
+ * - structs
19
+ * - functions types
20
+ *
21
+ * @param from
22
+ */
23
+ function toSignatureType(from, ctx, isLibrary) {
24
+ if (from instanceof ast_2.AddressTypeId) {
25
+ // normalize payable -> address
26
+ return constants_1.addressT;
27
+ }
28
+ // Simple case - these are passed unchanged
29
+ if (from instanceof ast_2.BoolTypeId ||
30
+ from instanceof ast_2.BytesTypeId ||
31
+ from instanceof ast_2.StringTypeId ||
32
+ from instanceof ast_2.FixedBytesTypeId ||
33
+ from instanceof ast_2.IntTypeId) {
34
+ return from;
35
+ }
36
+ if (from instanceof ast_2.PointerTypeId) {
37
+ return toSignatureType(from.toType, ctx, isLibrary);
38
+ }
39
+ // Arrays appear just as arrays in signatures
40
+ if (from instanceof ast_2.ArrayTypeId) {
41
+ const elT = toSignatureType(from.elT, ctx, isLibrary);
42
+ return new ast_2.ArrayTypeId(elT, from.size);
43
+ }
44
+ if (from instanceof ast_2.UserDefinedValueTypeId) {
45
+ const def = ctx.requireType(from.id, ast_1.UserDefinedValueTypeDefinition);
46
+ const innerT = (0, utils_2.typeOf)(def.underlyingType);
47
+ return toSignatureType(innerT, ctx, isLibrary);
48
+ }
49
+ // Contracts are passed as addresses for normal contracts, and by name for libraries
50
+ if (from instanceof ast_2.ContractTypeId) {
51
+ return isLibrary ? from : constants_1.addressT;
52
+ }
53
+ if (from instanceof ast_2.EnumTypeId) {
54
+ if (isLibrary) {
55
+ return from;
56
+ }
57
+ const def = ctx.requireType(from.id, ast_1.EnumDefinition);
58
+ return isLibrary ? from : (0, abi_1.enumToIntTypeId)(def);
59
+ }
60
+ // Structs appear by name in library signatures, and as tuples in normal function signatures
61
+ if (from instanceof ast_2.StructTypeId) {
62
+ if (isLibrary) {
63
+ return from;
64
+ }
65
+ const def = ctx.requireType(from.id, ast_1.StructDefinition);
66
+ let fieldTs = def.vMembers.map((decl) => (0, utils_2.typeOf)(decl));
67
+ // Remove any mappings
68
+ fieldTs = fieldTs.filter((fieldT) => !(fieldT instanceof ast_2.MappingTypeId));
69
+ // Convert the fields to ABI signature types and filter out any empty tuples.
70
+ // Empty tuples can result if a field is a struct contains only mappings.
71
+ // Also note that struct fields have "storage" as a default location.
72
+ // Convert to Memory to avoid treating them as storage pointers.
73
+ const abiFieldTs = fieldTs
74
+ .map((fieldT) => toSignatureType((0, utils_2.changeLocationTo)(fieldT, ast_1.DataLocation.Memory), ctx, isLibrary))
75
+ .filter((abiFieldT) => !(abiFieldT instanceof ast_2.TupleTypeId && abiFieldT.components.length === 0));
76
+ return new ast_2.TupleTypeId(abiFieldTs);
77
+ }
78
+ if (from instanceof ast_2.FunctionTypeId && from.kind === "external") {
79
+ return from;
80
+ }
81
+ if (from instanceof ast_2.MappingTypeId) {
82
+ return new ast_2.MappingTypeId(toSignatureType((0, utils_2.changeLocationTo)(from.keyType, ast_1.DataLocation.Memory), ctx, isLibrary), toSignatureType((0, utils_2.changeLocationTo)(from.valueType, ast_1.DataLocation.Memory), ctx, isLibrary));
83
+ }
84
+ (0, misc_1.assert)(false, `Cannot abi encode type ${from.pp()}`);
85
+ }
86
+ function scopedName(n) {
87
+ const scope = n.vScope;
88
+ return scope instanceof ast_1.ContractDefinition ? `${scope.name}.${n.name}` : n.name;
89
+ }
90
+ function abiTypeIdToCanonicalName(t, ctx) {
91
+ if (t instanceof ast_2.IntTypeId ||
92
+ t instanceof ast_2.FixedBytesTypeId ||
93
+ t instanceof ast_2.BoolTypeId ||
94
+ t instanceof ast_2.BytesTypeId ||
95
+ t instanceof ast_2.StringTypeId) {
96
+ // Skip the t_
97
+ return t.pp().slice(2);
98
+ }
99
+ // Payable is ignored in canonical names
100
+ if (t instanceof ast_2.AddressTypeId) {
101
+ return "address";
102
+ }
103
+ if (t instanceof ast_2.ArrayTypeId) {
104
+ return `${abiTypeIdToCanonicalName(t.elT, ctx)}[${t.size ? t.size.toString(10) : ""}]`;
105
+ }
106
+ if (t instanceof ast_2.TupleTypeId) {
107
+ return `(${t.components.map((compT) => abiTypeIdToCanonicalName(compT, ctx)).join(",")})`;
108
+ }
109
+ if (t instanceof ast_2.FunctionTypeId) {
110
+ return "function";
111
+ }
112
+ if (t instanceof ast_2.MappingTypeId) {
113
+ return `mapping(${abiTypeIdToCanonicalName(t.keyType, ctx)} => ${abiTypeIdToCanonicalName(t.valueType, ctx)})`;
114
+ }
115
+ if (t instanceof ast_2.StructTypeId) {
116
+ return scopedName(ctx.requireType(t.id, ast_1.StructDefinition));
117
+ }
118
+ if (t instanceof ast_2.ContractTypeId) {
119
+ return scopedName(ctx.requireType(t.id, ast_1.ContractDefinition));
120
+ }
121
+ if (t instanceof ast_2.EnumTypeId) {
122
+ return scopedName(ctx.requireType(t.id, ast_1.EnumDefinition));
123
+ }
124
+ (0, misc_1.assert)(false, "Unexpected ABI Type: {0}", t);
125
+ }
126
+ function signature(nd) {
127
+ const ctx = nd.requiredContext;
128
+ let argTs;
129
+ if (nd instanceof ast_1.FunctionDefinition ||
130
+ nd instanceof ast_1.EventDefinition ||
131
+ nd instanceof ast_1.ErrorDefinition) {
132
+ argTs = nd.vParameters.vParameters.map(utils_2.typeOf);
133
+ }
134
+ else {
135
+ [argTs] = (0, utils_2.getterArgsAndReturn)(nd);
136
+ }
137
+ const isLibFun = nd instanceof ast_1.FunctionDefinition &&
138
+ nd.vScope instanceof ast_1.ContractDefinition &&
139
+ nd.vScope.kind === ast_1.ContractKind.Library;
140
+ const argSigTs = argTs.map((t) => [
141
+ toSignatureType(t, ctx, isLibFun),
142
+ (0, utils_2.isTypeInStorage)(t)
143
+ ]);
144
+ return `${nd.name}(${argSigTs
145
+ .map(([t, isStorage]) => {
146
+ const tName = abiTypeIdToCanonicalName(t, ctx);
147
+ return isStorage ? `${tName} storage` : tName;
148
+ })
149
+ .join(",")})`;
150
+ }
151
+ exports.signature = signature;
152
+ function signatureHash(nd) {
153
+ const sig = signature(nd);
154
+ return (0, keccak_1.keccak256)((0, utils_1.utf8ToBytes)(sig)).slice(0, 4);
155
+ }
156
+ exports.signatureHash = signatureHash;
157
+ //# sourceMappingURL=signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/typeIdentifiers/signature.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { ASTContext, DataLocation, EnumDefinition, Expression, TypeName, VariableDeclaration } from "../ast";
2
- import { IntTypeId, TypeIdentifier } from "./ast";
1
+ import { DataLocation, Expression, TypeName, VariableDeclaration } from "../ast";
2
+ import { TypeIdentifier } from "./ast";
3
3
  /**
4
4
  * Return the parsed `TypeIdentifier` for the given node.
5
5
  */
@@ -23,19 +23,6 @@ export declare function changeLocationTo(t: TypeIdentifier, loc: DataLocation):
23
23
  * @returns
24
24
  */
25
25
  export declare function getterArgsAndReturn(v: VariableDeclaration): [TypeIdentifier[], TypeIdentifier];
26
- /**
27
- * Return the int typeIdentifier corresponding to a given Enum
28
- * @param decl
29
- * @returns
30
- */
31
- export declare function enumToIntTypeId(decl: EnumDefinition): IntTypeId;
32
- /**
33
- * Given a `TypeIdentifier` `from` return the ABI type that corresponds to
34
- * `from`. Note that there are no pointers in ABI types - instead the 3 dynamic
35
- * types - bytes, strings and unsized arrays appear generalized.
36
- * @param from
37
- */
38
- export declare function toABIType(from: TypeIdentifier, ctx: ASTContext): TypeIdentifier;
39
26
  /**
40
27
  * Given a `TypeIdentifier` `t` return a new generalized `TypeIdentifier` with all pointers removed (i.e. no specifications for locations)
41
28
  * @param t
@@ -52,4 +39,10 @@ export declare function generalize(t: TypeIdentifier): TypeIdentifier;
52
39
  * @returns
53
40
  */
54
41
  export declare function specialize(t: TypeIdentifier, loc: DataLocation): TypeIdentifier;
42
+ /**
43
+ * Return true IFF the `TypeIdentifier` `t` must live in storage.
44
+ * @param t
45
+ * @returns
46
+ */
47
+ export declare function isTypeInStorage(t: TypeIdentifier): boolean;
55
48
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/typeIdentifiers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,UAAU,EACV,YAAY,EACZ,cAAc,EACd,UAAU,EAGV,QAAQ,EAER,mBAAmB,EACtB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAUH,SAAS,EAMT,cAAc,EAEjB,MAAM,OAAO,CAAC;AAMf;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,UAAU,GAAG,mBAAmB,GAAG,QAAQ,GAAG,cAAc,CAgBtF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,YAAY,GAAG,cAAc,CA2BrF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,mBAAmB,GAAG,CAAC,cAAc,EAAE,EAAE,cAAc,CAAC,CAyC9F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,CAoB/D;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,UAAU,GAAG,cAAc,CA6E/E;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,cAAc,GAAG,cAAc,CAkB5D;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,YAAY,GAAG,cAAc,CAkB/E"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/typeIdentifiers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,YAAY,EACZ,UAAU,EAEV,QAAQ,EACR,mBAAmB,EACtB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAQH,cAAc,EACjB,MAAM,OAAO,CAAC;AAMf;;GAEG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,UAAU,GAAG,mBAAmB,GAAG,QAAQ,GAAG,cAAc,CAgBtF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,YAAY,GAAG,cAAc,CA2BrF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,mBAAmB,GAAG,CAAC,cAAc,EAAE,EAAE,cAAc,CAAC,CAyC9F;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,cAAc,GAAG,cAAc,CAkB5D;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,YAAY,GAAG,cAAc,CAkB/E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,cAAc,GAAG,OAAO,CAK1D"}
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.specialize = exports.generalize = exports.toABIType = exports.enumToIntTypeId = exports.getterArgsAndReturn = exports.changeLocationTo = exports.typeOf = void 0;
3
+ exports.isTypeInStorage = exports.specialize = exports.generalize = exports.getterArgsAndReturn = exports.changeLocationTo = exports.typeOf = void 0;
4
4
  const ast_1 = require("../ast");
5
5
  const misc_1 = require("../misc");
6
+ const abi_1 = require("./abi");
6
7
  const ast_2 = require("./ast");
7
8
  const constants_1 = require("./constants");
8
9
  const typeIdentifier_parser_gen_1 = require("./typeIdentifier_parser_gen");
@@ -75,14 +76,14 @@ function getterArgsAndReturn(v) {
75
76
  else if (type instanceof ast_1.Mapping) {
76
77
  // Make sure to change default storage pointer location for string/bytes to Memory as to not
77
78
  // confuse `toABIType`.
78
- argTypes.push(toABIType(changeLocationTo(typeOf(type.vKeyType), ast_1.DataLocation.Memory), ctx));
79
+ argTypes.push((0, abi_1.toABIType)(changeLocationTo(typeOf(type.vKeyType), ast_1.DataLocation.Memory), ctx));
79
80
  type = type.vValueType;
80
81
  }
81
82
  else {
82
83
  break;
83
84
  }
84
85
  }
85
- let retType = toABIType(changeLocationTo(typeOf(type), ast_1.DataLocation.Memory), ctx);
86
+ let retType = (0, abi_1.toABIType)(changeLocationTo(typeOf(type), ast_1.DataLocation.Memory), ctx);
86
87
  // Filter out top-level arrays. Maps are already filtered by toABIType
87
88
  if (retType instanceof ast_2.TupleTypeId) {
88
89
  const filteredComps = retType.components.filter((compT) => !(compT instanceof ast_2.ArrayTypeId));
@@ -92,92 +93,6 @@ function getterArgsAndReturn(v) {
92
93
  return [argTypes, retType];
93
94
  }
94
95
  exports.getterArgsAndReturn = getterArgsAndReturn;
95
- /**
96
- * Return the int typeIdentifier corresponding to a given Enum
97
- * @param decl
98
- * @returns
99
- */
100
- function enumToIntTypeId(decl) {
101
- const length = decl.children.length;
102
- let size;
103
- for (let n = 8; n <= 32; n += 8) {
104
- if (length <= 2 ** n) {
105
- size = n;
106
- break;
107
- }
108
- }
109
- (0, misc_1.assert)(size !== undefined, "Unable to detect enum type size - member count exceeds 2 ** 32", decl);
110
- return new ast_2.IntTypeId(size, false);
111
- }
112
- exports.enumToIntTypeId = enumToIntTypeId;
113
- /**
114
- * Given a `TypeIdentifier` `from` return the ABI type that corresponds to
115
- * `from`. Note that there are no pointers in ABI types - instead the 3 dynamic
116
- * types - bytes, strings and unsized arrays appear generalized.
117
- * @param from
118
- */
119
- function toABIType(from, ctx) {
120
- if (from instanceof ast_2.AddressTypeId) {
121
- // normalize payable -> address
122
- return constants_1.addressT;
123
- }
124
- // Simple case - these are passed unchanged
125
- if (from instanceof ast_2.BoolTypeId ||
126
- from instanceof ast_2.BytesTypeId ||
127
- from instanceof ast_2.StringTypeId ||
128
- from instanceof ast_2.FixedBytesTypeId ||
129
- from instanceof ast_2.IntTypeId) {
130
- return from;
131
- }
132
- if (from instanceof ast_2.PointerTypeId) {
133
- // Storage pointers in delegate calls are passed as numbers
134
- if (from.location === ast_1.DataLocation.Storage) {
135
- return constants_1.uint256T;
136
- }
137
- return toABIType(from.toType, ctx);
138
- }
139
- // Size arrays are passed as tuples, unsized arrays as arrays
140
- if (from instanceof ast_2.ArrayTypeId) {
141
- const elT = toABIType(from.elT, ctx);
142
- return from.size === undefined
143
- ? new ast_2.ArrayTypeId(elT, from.size)
144
- : new ast_2.TupleTypeId((0, misc_1.repeat)(elT, Number(from.size)));
145
- }
146
- if (from instanceof ast_2.UserDefinedValueTypeId) {
147
- const def = ctx.requireType(from.id, ast_1.UserDefinedValueTypeDefinition);
148
- const innerT = typeOf(def.underlyingType);
149
- return toABIType(innerT, ctx);
150
- }
151
- // Contracts are passed as addresses
152
- if (from instanceof ast_2.ContractTypeId) {
153
- return constants_1.addressT;
154
- }
155
- // Enums are passed as the smallest number that fits
156
- if (from instanceof ast_2.EnumTypeId) {
157
- const def = ctx.requireType(from.id, ast_1.EnumDefinition);
158
- return enumToIntTypeId(def);
159
- }
160
- // Structs are passed as tuples
161
- if (from instanceof ast_2.StructTypeId) {
162
- const def = ctx.requireType(from.id, ast_1.StructDefinition);
163
- let fieldTs = def.vMembers.map((decl) => typeOf(decl));
164
- // Remove any mappings
165
- fieldTs = fieldTs.filter((fieldT) => !(fieldT instanceof ast_2.MappingTypeId));
166
- // Convert the fields to ABI types and filter out any empty tuples.
167
- // Empty tuples can result if a field is a struct contains only mappings.
168
- // Also note that struct fields have "storage" as a default location.
169
- // Convert to Memory to avoid treating them as storage pointers.
170
- const abiFieldTs = fieldTs
171
- .map((fieldT) => toABIType(changeLocationTo(fieldT, ast_1.DataLocation.Memory), ctx))
172
- .filter((abiFieldT) => !(abiFieldT instanceof ast_2.TupleTypeId && abiFieldT.components.length === 0));
173
- return new ast_2.TupleTypeId(abiFieldTs);
174
- }
175
- if (from instanceof ast_2.FunctionTypeId && from.kind === "external") {
176
- return constants_1.bytes24T;
177
- }
178
- (0, misc_1.assert)(false, `Cannot abi encode type ${from.pp()}`);
179
- }
180
- exports.toABIType = toABIType;
181
96
  /**
182
97
  * Given a `TypeIdentifier` `t` return a new generalized `TypeIdentifier` with all pointers removed (i.e. no specifications for locations)
183
98
  * @param t
@@ -224,4 +139,14 @@ function specialize(t, loc) {
224
139
  return t;
225
140
  }
226
141
  exports.specialize = specialize;
142
+ /**
143
+ * Return true IFF the `TypeIdentifier` `t` must live in storage.
144
+ * @param t
145
+ * @returns
146
+ */
147
+ function isTypeInStorage(t) {
148
+ return (t instanceof ast_2.MappingTypeId ||
149
+ (t instanceof ast_2.PointerTypeId && t.location === ast_1.DataLocation.Storage));
150
+ }
151
+ exports.isTypeInStorage = isTypeInStorage;
227
152
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/typeIdentifiers/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/typeIdentifiers/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solc-typed-ast",
3
- "version": "19.1.0",
3
+ "version": "19.2.0",
4
4
  "description": "A TypeScript library providing a normalized typed Solidity AST along with the utilities necessary to generate the AST (from Solc) and traverse/manipulate it.",
5
5
  "keywords": [],
6
6
  "files": [
@@ -38,7 +38,9 @@
38
38
  "semver": "^7.6.0",
39
39
  "solc": "0.8.25",
40
40
  "src-location": "^1.1.0",
41
- "web3-eth-abi": "^4.2.0"
41
+ "web3-eth-abi": "^4.2.0",
42
+ "ethereum-cryptography": "3.2.0",
43
+ "@ethereumjs/util": "10.1.0"
42
44
  },
43
45
  "devDependencies": {
44
46
  "@types/fs-extra": "^11.0.4",