@hashgraphonline/standards-sdk 0.0.67 → 0.0.68
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/es/hcs-10/base-client.d.ts +20 -5
- package/dist/es/hcs-10/base-client.d.ts.map +1 -1
- package/dist/es/hcs-10/sdk.d.ts +12 -2
- package/dist/es/hcs-10/sdk.d.ts.map +1 -1
- package/dist/es/standards-sdk.es100.js +3 -3
- package/dist/es/standards-sdk.es100.js.map +1 -1
- package/dist/es/standards-sdk.es101.js +15 -3
- package/dist/es/standards-sdk.es101.js.map +1 -1
- package/dist/es/standards-sdk.es102.js +4 -15
- package/dist/es/standards-sdk.es102.js.map +1 -1
- package/dist/es/standards-sdk.es103.js +39 -5
- package/dist/es/standards-sdk.es103.js.map +1 -1
- package/dist/es/standards-sdk.es104.js +39 -38
- package/dist/es/standards-sdk.es104.js.map +1 -1
- package/dist/es/standards-sdk.es105.js +34 -37
- package/dist/es/standards-sdk.es105.js.map +1 -1
- package/dist/es/standards-sdk.es106.js +75 -34
- package/dist/es/standards-sdk.es106.js.map +1 -1
- package/dist/es/standards-sdk.es107.js +2281 -77
- package/dist/es/standards-sdk.es107.js.map +1 -1
- package/dist/es/standards-sdk.es108.js +1 -1
- package/dist/es/standards-sdk.es113.js +1 -1
- package/dist/es/standards-sdk.es114.js +2 -2
- package/dist/es/standards-sdk.es12.js +3 -3
- package/dist/es/standards-sdk.es14.js +1 -1
- package/dist/es/standards-sdk.es17.js +1 -1
- package/dist/es/standards-sdk.es18.js +1 -1
- package/dist/es/standards-sdk.es20.js +1692 -966
- package/dist/es/standards-sdk.es20.js.map +1 -1
- package/dist/es/standards-sdk.es21.js +3 -1767
- package/dist/es/standards-sdk.es21.js.map +1 -1
- package/dist/es/standards-sdk.es22.js +4167 -3
- package/dist/es/standards-sdk.es22.js.map +1 -1
- package/dist/es/standards-sdk.es23.js +5 -4167
- package/dist/es/standards-sdk.es23.js.map +1 -1
- package/dist/es/standards-sdk.es25.js +17 -17
- package/dist/es/standards-sdk.es26.js +3 -3
- package/dist/es/standards-sdk.es28.js +1041 -5
- package/dist/es/standards-sdk.es28.js.map +1 -1
- package/dist/es/standards-sdk.es29.js +419 -3
- package/dist/es/standards-sdk.es29.js.map +1 -1
- package/dist/es/standards-sdk.es30.js +1 -163
- package/dist/es/standards-sdk.es30.js.map +1 -1
- package/dist/es/standards-sdk.es31.js +112 -93
- package/dist/es/standards-sdk.es31.js.map +1 -1
- package/dist/es/standards-sdk.es32.js +4 -2
- package/dist/es/standards-sdk.es32.js.map +1 -1
- package/dist/es/standards-sdk.es33.js +2 -16
- package/dist/es/standards-sdk.es33.js.map +1 -1
- package/dist/es/standards-sdk.es34.js +3 -409
- package/dist/es/standards-sdk.es34.js.map +1 -1
- package/dist/es/standards-sdk.es35.js +144 -399
- package/dist/es/standards-sdk.es35.js.map +1 -1
- package/dist/es/standards-sdk.es36.js +364 -2
- package/dist/es/standards-sdk.es36.js.map +1 -1
- package/dist/es/standards-sdk.es37.js +5 -119
- package/dist/es/standards-sdk.es37.js.map +1 -1
- package/dist/es/standards-sdk.es38.js +179 -2282
- package/dist/es/standards-sdk.es38.js.map +1 -1
- package/dist/es/standards-sdk.es39.js +80 -3
- package/dist/es/standards-sdk.es39.js.map +1 -1
- package/dist/es/standards-sdk.es4.js +1 -1
- package/dist/es/standards-sdk.es40.js +114 -2
- package/dist/es/standards-sdk.es40.js.map +1 -1
- package/dist/es/standards-sdk.es41.js +46 -78
- package/dist/es/standards-sdk.es41.js.map +1 -1
- package/dist/es/standards-sdk.es42.js +9 -22
- package/dist/es/standards-sdk.es42.js.map +1 -1
- package/dist/es/standards-sdk.es43.js +83 -134
- package/dist/es/standards-sdk.es43.js.map +1 -1
- package/dist/es/standards-sdk.es44.js +3 -90
- package/dist/es/standards-sdk.es44.js.map +1 -1
- package/dist/es/standards-sdk.es45.js +2 -174
- package/dist/es/standards-sdk.es45.js.map +1 -1
- package/dist/es/standards-sdk.es46.js +112 -5
- package/dist/es/standards-sdk.es46.js.map +1 -1
- package/dist/es/standards-sdk.es47.js +69 -138
- package/dist/es/standards-sdk.es47.js.map +1 -1
- package/dist/es/standards-sdk.es48.js +4 -193
- package/dist/es/standards-sdk.es48.js.map +1 -1
- package/dist/es/standards-sdk.es49.js +4 -437
- package/dist/es/standards-sdk.es49.js.map +1 -1
- package/dist/es/standards-sdk.es5.js +66 -17
- package/dist/es/standards-sdk.es5.js.map +1 -1
- package/dist/es/standards-sdk.es50.js +215 -19
- package/dist/es/standards-sdk.es50.js.map +1 -1
- package/dist/es/standards-sdk.es51.js +54 -135
- package/dist/es/standards-sdk.es51.js.map +1 -1
- package/dist/es/standards-sdk.es52.js +69 -18
- package/dist/es/standards-sdk.es52.js.map +1 -1
- package/dist/es/standards-sdk.es53.js +21 -27
- package/dist/es/standards-sdk.es53.js.map +1 -1
- package/dist/es/standards-sdk.es54.js +170 -25
- package/dist/es/standards-sdk.es54.js.map +1 -1
- package/dist/es/standards-sdk.es55.js +87 -17
- package/dist/es/standards-sdk.es55.js.map +1 -1
- package/dist/es/standards-sdk.es56.js +5 -43
- package/dist/es/standards-sdk.es56.js.map +1 -1
- package/dist/es/standards-sdk.es57.js +138 -13
- package/dist/es/standards-sdk.es57.js.map +1 -1
- package/dist/es/standards-sdk.es58.js +190 -56
- package/dist/es/standards-sdk.es58.js.map +1 -1
- package/dist/es/standards-sdk.es59.js +356 -1207
- package/dist/es/standards-sdk.es59.js.map +1 -1
- package/dist/es/standards-sdk.es60.js +21 -28
- package/dist/es/standards-sdk.es60.js.map +1 -1
- package/dist/es/standards-sdk.es61.js +122 -142
- package/dist/es/standards-sdk.es61.js.map +1 -1
- package/dist/es/standards-sdk.es62.js +13 -788
- package/dist/es/standards-sdk.es62.js.map +1 -1
- package/dist/es/standards-sdk.es63.js +26 -24
- package/dist/es/standards-sdk.es63.js.map +1 -1
- package/dist/es/standards-sdk.es64.js +27 -24
- package/dist/es/standards-sdk.es64.js.map +1 -1
- package/dist/es/standards-sdk.es65.js +19 -36
- package/dist/es/standards-sdk.es65.js.map +1 -1
- package/dist/es/standards-sdk.es66.js +34 -11
- package/dist/es/standards-sdk.es66.js.map +1 -1
- package/dist/es/standards-sdk.es67.js +13 -359
- package/dist/es/standards-sdk.es67.js.map +1 -1
- package/dist/es/standards-sdk.es68.js +60 -5
- package/dist/es/standards-sdk.es68.js.map +1 -1
- package/dist/es/standards-sdk.es69.js +1270 -160
- package/dist/es/standards-sdk.es69.js.map +1 -1
- package/dist/es/standards-sdk.es7.js +52 -7
- package/dist/es/standards-sdk.es7.js.map +1 -1
- package/dist/es/standards-sdk.es70.js +137 -70
- package/dist/es/standards-sdk.es70.js.map +1 -1
- package/dist/es/standards-sdk.es71.js +78 -108
- package/dist/es/standards-sdk.es71.js.map +1 -1
- package/dist/es/standards-sdk.es72.js +27 -47
- package/dist/es/standards-sdk.es72.js.map +1 -1
- package/dist/es/standards-sdk.es73.js +159 -10
- package/dist/es/standards-sdk.es73.js.map +1 -1
- package/dist/es/standards-sdk.es74.js +777 -81
- package/dist/es/standards-sdk.es74.js.map +1 -1
- package/dist/es/standards-sdk.es75.js +31 -3
- package/dist/es/standards-sdk.es75.js.map +1 -1
- package/dist/es/standards-sdk.es76.js +63 -2
- package/dist/es/standards-sdk.es76.js.map +1 -1
- package/dist/es/standards-sdk.es77.js +43 -106
- package/dist/es/standards-sdk.es77.js.map +1 -1
- package/dist/es/standards-sdk.es78.js +8 -72
- package/dist/es/standards-sdk.es78.js.map +1 -1
- package/dist/es/standards-sdk.es79.js +63 -4
- package/dist/es/standards-sdk.es79.js.map +1 -1
- package/dist/es/standards-sdk.es8.js +3 -3
- package/dist/es/standards-sdk.es8.js.map +1 -1
- package/dist/es/standards-sdk.es80.js +6 -5
- package/dist/es/standards-sdk.es80.js.map +1 -1
- package/dist/es/standards-sdk.es81.js +14 -220
- package/dist/es/standards-sdk.es81.js.map +1 -1
- package/dist/es/standards-sdk.es82.js +6 -57
- package/dist/es/standards-sdk.es82.js.map +1 -1
- package/dist/es/standards-sdk.es83.js +44 -68
- package/dist/es/standards-sdk.es83.js.map +1 -1
- package/dist/es/standards-sdk.es84.js +2 -32
- package/dist/es/standards-sdk.es84.js.map +1 -1
- package/dist/es/standards-sdk.es85.js +133 -60
- package/dist/es/standards-sdk.es85.js.map +1 -1
- package/dist/es/standards-sdk.es86.js +169 -47
- package/dist/es/standards-sdk.es86.js.map +1 -1
- package/dist/es/standards-sdk.es87.js +25 -8
- package/dist/es/standards-sdk.es87.js.map +1 -1
- package/dist/es/standards-sdk.es88.js +24 -63
- package/dist/es/standards-sdk.es88.js.map +1 -1
- package/dist/es/standards-sdk.es89.js +38 -6
- package/dist/es/standards-sdk.es89.js.map +1 -1
- package/dist/es/standards-sdk.es90.js +97 -11
- package/dist/es/standards-sdk.es90.js.map +1 -1
- package/dist/es/standards-sdk.es91.js +2 -7
- package/dist/es/standards-sdk.es91.js.map +1 -1
- package/dist/es/standards-sdk.es92.js +16 -45
- package/dist/es/standards-sdk.es92.js.map +1 -1
- package/dist/es/standards-sdk.es93.js +409 -2
- package/dist/es/standards-sdk.es93.js.map +1 -1
- package/dist/es/standards-sdk.es94.js +21 -136
- package/dist/es/standards-sdk.es94.js.map +1 -1
- package/dist/es/standards-sdk.es95.js +12 -171
- package/dist/es/standards-sdk.es95.js.map +1 -1
- package/dist/es/standards-sdk.es96.js +13 -13
- package/dist/es/standards-sdk.es96.js.map +1 -1
- package/dist/es/standards-sdk.es97.js +32 -13
- package/dist/es/standards-sdk.es97.js.map +1 -1
- package/dist/es/standards-sdk.es98.js +13 -30
- package/dist/es/standards-sdk.es98.js.map +1 -1
- package/dist/es/standards-sdk.es99.js +3 -14
- package/dist/es/standards-sdk.es99.js.map +1 -1
- package/dist/umd/hcs-10/base-client.d.ts +20 -5
- package/dist/umd/hcs-10/base-client.d.ts.map +1 -1
- package/dist/umd/hcs-10/sdk.d.ts +12 -2
- package/dist/umd/hcs-10/sdk.d.ts.map +1 -1
- package/dist/umd/standards-sdk.umd.js +1 -1
- package/dist/umd/standards-sdk.umd.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,1284 +9,433 @@ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read fr
|
|
|
9
9
|
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
10
10
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
11
11
|
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
import { getNumber, getBigInt } from "./standards-sdk.es61.js";
|
|
25
|
-
function setify(items) {
|
|
26
|
-
const result = /* @__PURE__ */ new Set();
|
|
27
|
-
items.forEach((k) => result.add(k));
|
|
28
|
-
return Object.freeze(result);
|
|
29
|
-
}
|
|
30
|
-
const _kwVisibDeploy = "external public payable override";
|
|
31
|
-
const KwVisibDeploy = setify(_kwVisibDeploy.split(" "));
|
|
32
|
-
const _kwVisib = "constant external internal payable private public pure view override";
|
|
33
|
-
const KwVisib = setify(_kwVisib.split(" "));
|
|
34
|
-
const _kwTypes = "constructor error event fallback function receive struct";
|
|
35
|
-
const KwTypes = setify(_kwTypes.split(" "));
|
|
36
|
-
const _kwModifiers = "calldata memory storage payable indexed";
|
|
37
|
-
const KwModifiers = setify(_kwModifiers.split(" "));
|
|
38
|
-
const _kwOther = "tuple returns";
|
|
39
|
-
const _keywords = [_kwTypes, _kwModifiers, _kwOther, _kwVisib].join(" ");
|
|
40
|
-
const Keywords = setify(_keywords.split(" "));
|
|
41
|
-
const SimpleTokens = {
|
|
42
|
-
"(": "OPEN_PAREN",
|
|
43
|
-
")": "CLOSE_PAREN",
|
|
44
|
-
"[": "OPEN_BRACKET",
|
|
45
|
-
"]": "CLOSE_BRACKET",
|
|
46
|
-
",": "COMMA",
|
|
47
|
-
"@": "AT"
|
|
48
|
-
};
|
|
49
|
-
const regexWhitespacePrefix = new RegExp("^(\\s*)");
|
|
50
|
-
const regexNumberPrefix = new RegExp("^([0-9]+)");
|
|
51
|
-
const regexIdPrefix = new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)");
|
|
52
|
-
const regexId = new RegExp("^([a-zA-Z$_][a-zA-Z0-9$_]*)$");
|
|
53
|
-
const regexType = new RegExp("^(address|bool|bytes([0-9]*)|string|u?int([0-9]*))$");
|
|
54
|
-
const _TokenString = class _TokenString {
|
|
55
|
-
constructor(tokens) {
|
|
56
|
-
__privateAdd(this, _TokenString_instances);
|
|
57
|
-
__privateAdd(this, _offset);
|
|
58
|
-
__privateAdd(this, _tokens);
|
|
59
|
-
__privateSet(this, _offset, 0);
|
|
60
|
-
__privateSet(this, _tokens, tokens.slice());
|
|
61
|
-
}
|
|
62
|
-
get offset() {
|
|
63
|
-
return __privateGet(this, _offset);
|
|
64
|
-
}
|
|
65
|
-
get length() {
|
|
66
|
-
return __privateGet(this, _tokens).length - __privateGet(this, _offset);
|
|
67
|
-
}
|
|
68
|
-
clone() {
|
|
69
|
-
return new _TokenString(__privateGet(this, _tokens));
|
|
70
|
-
}
|
|
71
|
-
reset() {
|
|
72
|
-
__privateSet(this, _offset, 0);
|
|
73
|
-
}
|
|
74
|
-
// Pops and returns the value of the next token, if it is a keyword in allowed; throws if out of tokens
|
|
75
|
-
popKeyword(allowed) {
|
|
76
|
-
const top = this.peek();
|
|
77
|
-
if (top.type !== "KEYWORD" || !allowed.has(top.text)) {
|
|
78
|
-
throw new Error(`expected keyword ${top.text}`);
|
|
79
|
-
}
|
|
80
|
-
return this.pop().text;
|
|
81
|
-
}
|
|
82
|
-
// Pops and returns the value of the next token if it is `type`; throws if out of tokens
|
|
83
|
-
popType(type) {
|
|
84
|
-
if (this.peek().type !== type) {
|
|
85
|
-
const top = this.peek();
|
|
86
|
-
throw new Error(`expected ${type}; got ${top.type} ${JSON.stringify(top.text)}`);
|
|
87
|
-
}
|
|
88
|
-
return this.pop().text;
|
|
89
|
-
}
|
|
90
|
-
// Pops and returns a "(" TOKENS ")"
|
|
91
|
-
popParen() {
|
|
92
|
-
const top = this.peek();
|
|
93
|
-
if (top.type !== "OPEN_PAREN") {
|
|
94
|
-
throw new Error("bad start");
|
|
95
|
-
}
|
|
96
|
-
const result = __privateMethod(this, _TokenString_instances, subTokenString_fn).call(this, __privateGet(this, _offset) + 1, top.match + 1);
|
|
97
|
-
__privateSet(this, _offset, top.match + 1);
|
|
98
|
-
return result;
|
|
99
|
-
}
|
|
100
|
-
// Pops and returns the items within "(" ITEM1 "," ITEM2 "," ... ")"
|
|
101
|
-
popParams() {
|
|
102
|
-
const top = this.peek();
|
|
103
|
-
if (top.type !== "OPEN_PAREN") {
|
|
104
|
-
throw new Error("bad start");
|
|
105
|
-
}
|
|
106
|
-
const result = [];
|
|
107
|
-
while (__privateGet(this, _offset) < top.match - 1) {
|
|
108
|
-
const link = this.peek().linkNext;
|
|
109
|
-
result.push(__privateMethod(this, _TokenString_instances, subTokenString_fn).call(this, __privateGet(this, _offset) + 1, link));
|
|
110
|
-
__privateSet(this, _offset, link);
|
|
111
|
-
}
|
|
112
|
-
__privateSet(this, _offset, top.match + 1);
|
|
113
|
-
return result;
|
|
114
|
-
}
|
|
115
|
-
// Returns the top Token, throwing if out of tokens
|
|
116
|
-
peek() {
|
|
117
|
-
if (__privateGet(this, _offset) >= __privateGet(this, _tokens).length) {
|
|
118
|
-
throw new Error("out-of-bounds");
|
|
119
|
-
}
|
|
120
|
-
return __privateGet(this, _tokens)[__privateGet(this, _offset)];
|
|
121
|
-
}
|
|
122
|
-
// Returns the next value, if it is a keyword in `allowed`
|
|
123
|
-
peekKeyword(allowed) {
|
|
124
|
-
const top = this.peekType("KEYWORD");
|
|
125
|
-
return top != null && allowed.has(top) ? top : null;
|
|
126
|
-
}
|
|
127
|
-
// Returns the value of the next token if it is `type`
|
|
128
|
-
peekType(type) {
|
|
129
|
-
if (this.length === 0) {
|
|
130
|
-
return null;
|
|
131
|
-
}
|
|
132
|
-
const top = this.peek();
|
|
133
|
-
return top.type === type ? top.text : null;
|
|
134
|
-
}
|
|
135
|
-
// Returns the next token; throws if out of tokens
|
|
136
|
-
pop() {
|
|
137
|
-
const result = this.peek();
|
|
138
|
-
__privateWrapper(this, _offset)._++;
|
|
139
|
-
return result;
|
|
140
|
-
}
|
|
141
|
-
toString() {
|
|
142
|
-
const tokens = [];
|
|
143
|
-
for (let i = __privateGet(this, _offset); i < __privateGet(this, _tokens).length; i++) {
|
|
144
|
-
const token = __privateGet(this, _tokens)[i];
|
|
145
|
-
tokens.push(`${token.type}:${token.text}`);
|
|
146
|
-
}
|
|
147
|
-
return `<TokenString ${tokens.join(" ")}>`;
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
|
-
_offset = new WeakMap();
|
|
151
|
-
_tokens = new WeakMap();
|
|
152
|
-
_TokenString_instances = new WeakSet();
|
|
153
|
-
subTokenString_fn = function(from = 0, to = 0) {
|
|
154
|
-
return new _TokenString(__privateGet(this, _tokens).slice(from, to).map((t) => {
|
|
155
|
-
return Object.freeze(Object.assign({}, t, {
|
|
156
|
-
match: t.match - from,
|
|
157
|
-
linkBack: t.linkBack - from,
|
|
158
|
-
linkNext: t.linkNext - from
|
|
159
|
-
}));
|
|
160
|
-
}));
|
|
161
|
-
};
|
|
162
|
-
let TokenString = _TokenString;
|
|
163
|
-
function lex(text) {
|
|
164
|
-
const tokens = [];
|
|
165
|
-
const throwError = (message) => {
|
|
166
|
-
const token = offset < text.length ? JSON.stringify(text[offset]) : "$EOI";
|
|
167
|
-
throw new Error(`invalid token ${token} at ${offset}: ${message}`);
|
|
168
|
-
};
|
|
169
|
-
let brackets = [];
|
|
170
|
-
let commas = [];
|
|
171
|
-
let offset = 0;
|
|
172
|
-
while (offset < text.length) {
|
|
173
|
-
let cur = text.substring(offset);
|
|
174
|
-
let match = cur.match(regexWhitespacePrefix);
|
|
175
|
-
if (match) {
|
|
176
|
-
offset += match[1].length;
|
|
177
|
-
cur = text.substring(offset);
|
|
178
|
-
}
|
|
179
|
-
const token = { depth: brackets.length, linkBack: -1, linkNext: -1, match: -1, type: "", text: "", offset, value: -1 };
|
|
180
|
-
tokens.push(token);
|
|
181
|
-
let type = SimpleTokens[cur[0]] || "";
|
|
182
|
-
if (type) {
|
|
183
|
-
token.type = type;
|
|
184
|
-
token.text = cur[0];
|
|
185
|
-
offset++;
|
|
186
|
-
if (type === "OPEN_PAREN") {
|
|
187
|
-
brackets.push(tokens.length - 1);
|
|
188
|
-
commas.push(tokens.length - 1);
|
|
189
|
-
} else if (type == "CLOSE_PAREN") {
|
|
190
|
-
if (brackets.length === 0) {
|
|
191
|
-
throwError("no matching open bracket");
|
|
192
|
-
}
|
|
193
|
-
token.match = brackets.pop();
|
|
194
|
-
tokens[token.match].match = tokens.length - 1;
|
|
195
|
-
token.depth--;
|
|
196
|
-
token.linkBack = commas.pop();
|
|
197
|
-
tokens[token.linkBack].linkNext = tokens.length - 1;
|
|
198
|
-
} else if (type === "COMMA") {
|
|
199
|
-
token.linkBack = commas.pop();
|
|
200
|
-
tokens[token.linkBack].linkNext = tokens.length - 1;
|
|
201
|
-
commas.push(tokens.length - 1);
|
|
202
|
-
} else if (type === "OPEN_BRACKET") {
|
|
203
|
-
token.type = "BRACKET";
|
|
204
|
-
} else if (type === "CLOSE_BRACKET") {
|
|
205
|
-
let suffix = tokens.pop().text;
|
|
206
|
-
if (tokens.length > 0 && tokens[tokens.length - 1].type === "NUMBER") {
|
|
207
|
-
const value = tokens.pop().text;
|
|
208
|
-
suffix = value + suffix;
|
|
209
|
-
tokens[tokens.length - 1].value = getNumber(value);
|
|
210
|
-
}
|
|
211
|
-
if (tokens.length === 0 || tokens[tokens.length - 1].type !== "BRACKET") {
|
|
212
|
-
throw new Error("missing opening bracket");
|
|
213
|
-
}
|
|
214
|
-
tokens[tokens.length - 1].text += suffix;
|
|
215
|
-
}
|
|
216
|
-
continue;
|
|
217
|
-
}
|
|
218
|
-
match = cur.match(regexIdPrefix);
|
|
219
|
-
if (match) {
|
|
220
|
-
token.text = match[1];
|
|
221
|
-
offset += token.text.length;
|
|
222
|
-
if (Keywords.has(token.text)) {
|
|
223
|
-
token.type = "KEYWORD";
|
|
224
|
-
continue;
|
|
225
|
-
}
|
|
226
|
-
if (token.text.match(regexType)) {
|
|
227
|
-
token.type = "TYPE";
|
|
228
|
-
continue;
|
|
229
|
-
}
|
|
230
|
-
token.type = "ID";
|
|
231
|
-
continue;
|
|
232
|
-
}
|
|
233
|
-
match = cur.match(regexNumberPrefix);
|
|
234
|
-
if (match) {
|
|
235
|
-
token.text = match[1];
|
|
236
|
-
token.type = "NUMBER";
|
|
237
|
-
offset += token.text.length;
|
|
238
|
-
continue;
|
|
239
|
-
}
|
|
240
|
-
throw new Error(`unexpected token ${JSON.stringify(cur[0])} at position ${offset}`);
|
|
241
|
-
}
|
|
242
|
-
return new TokenString(tokens.map((t) => Object.freeze(t)));
|
|
243
|
-
}
|
|
244
|
-
function allowSingle(set, allowed) {
|
|
245
|
-
let included = [];
|
|
246
|
-
for (const key in allowed.keys()) {
|
|
247
|
-
if (set.has(key)) {
|
|
248
|
-
included.push(key);
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
if (included.length > 1) {
|
|
252
|
-
throw new Error(`conflicting types: ${included.join(", ")}`);
|
|
253
|
-
}
|
|
12
|
+
var _names, _data, _dataLength, _Writer_instances, writeData_fn, _data2, _offset, _bytesRead, _parent, _maxInflation, _Reader_instances, incrementBytesRead_fn, peekBytes_fn;
|
|
13
|
+
import { getNumber, toBigInt, toNumber, toBeArray } from "./standards-sdk.es73.js";
|
|
14
|
+
import { assert, assertArgument } from "./standards-sdk.es70.js";
|
|
15
|
+
import { concat, getBytesCopy, hexlify } from "./standards-sdk.es55.js";
|
|
16
|
+
import { defineProperties } from "./standards-sdk.es72.js";
|
|
17
|
+
const WordSize = 32;
|
|
18
|
+
const Padding = new Uint8Array(WordSize);
|
|
19
|
+
const passProperties = ["then"];
|
|
20
|
+
const _guard = {};
|
|
21
|
+
const resultNames = /* @__PURE__ */ new WeakMap();
|
|
22
|
+
function getNames(result) {
|
|
23
|
+
return resultNames.get(result);
|
|
254
24
|
}
|
|
255
|
-
function
|
|
256
|
-
|
|
257
|
-
const keyword = tokens.pop().text;
|
|
258
|
-
if (keyword !== type) {
|
|
259
|
-
throw new Error(`expected ${type}, got ${keyword}`);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
return tokens.popType("ID");
|
|
25
|
+
function setNames(result, names) {
|
|
26
|
+
resultNames.set(result, names);
|
|
263
27
|
}
|
|
264
|
-
function
|
|
265
|
-
const
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
if (keyword == null || allowed && !allowed.has(keyword)) {
|
|
269
|
-
break;
|
|
270
|
-
}
|
|
271
|
-
tokens.pop();
|
|
272
|
-
if (keywords.has(keyword)) {
|
|
273
|
-
throw new Error(`duplicate keywords: ${JSON.stringify(keyword)}`);
|
|
274
|
-
}
|
|
275
|
-
keywords.add(keyword);
|
|
276
|
-
}
|
|
277
|
-
return Object.freeze(keywords);
|
|
28
|
+
function throwError(name, error) {
|
|
29
|
+
const wrapped = new Error(`deferred error during ABI decoding triggered accessing ${name}`);
|
|
30
|
+
wrapped.error = error;
|
|
31
|
+
throw wrapped;
|
|
278
32
|
}
|
|
279
|
-
function
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
return "pure";
|
|
288
|
-
}
|
|
289
|
-
if (modifiers.has("payable")) {
|
|
290
|
-
return "payable";
|
|
291
|
-
}
|
|
292
|
-
if (modifiers.has("nonpayable")) {
|
|
293
|
-
return "nonpayable";
|
|
294
|
-
}
|
|
295
|
-
if (modifiers.has("constant")) {
|
|
296
|
-
return "view";
|
|
33
|
+
function toObject(names, items, deep) {
|
|
34
|
+
if (names.indexOf(null) >= 0) {
|
|
35
|
+
return items.map((item, index) => {
|
|
36
|
+
if (item instanceof Result) {
|
|
37
|
+
return toObject(getNames(item), item, deep);
|
|
38
|
+
}
|
|
39
|
+
return item;
|
|
40
|
+
});
|
|
297
41
|
}
|
|
298
|
-
return
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
tokens.pop();
|
|
306
|
-
if (tokens.peekType("NUMBER")) {
|
|
307
|
-
return getBigInt(tokens.pop().text);
|
|
42
|
+
return names.reduce((accum, name, index) => {
|
|
43
|
+
let item = items.getValue(name);
|
|
44
|
+
if (!(name in accum)) {
|
|
45
|
+
if (deep && item instanceof Result) {
|
|
46
|
+
item = toObject(getNames(item), item, deep);
|
|
47
|
+
}
|
|
48
|
+
accum[name] = item;
|
|
308
49
|
}
|
|
309
|
-
|
|
310
|
-
}
|
|
311
|
-
return null;
|
|
312
|
-
}
|
|
313
|
-
function consumeEoi(tokens) {
|
|
314
|
-
if (tokens.length) {
|
|
315
|
-
throw new Error(`unexpected tokens at offset ${tokens.offset}: ${tokens.toString()}`);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
const regexArrayType = new RegExp(/^(.*)\[([0-9]*)\]$/);
|
|
319
|
-
function verifyBasicType(type) {
|
|
320
|
-
const match = type.match(regexType);
|
|
321
|
-
assertArgument(match, "invalid type", "type", type);
|
|
322
|
-
if (type === "uint") {
|
|
323
|
-
return "uint256";
|
|
324
|
-
}
|
|
325
|
-
if (type === "int") {
|
|
326
|
-
return "int256";
|
|
327
|
-
}
|
|
328
|
-
if (match[2]) {
|
|
329
|
-
const length = parseInt(match[2]);
|
|
330
|
-
assertArgument(length !== 0 && length <= 32, "invalid bytes length", "type", type);
|
|
331
|
-
} else if (match[3]) {
|
|
332
|
-
const size = parseInt(match[3]);
|
|
333
|
-
assertArgument(size !== 0 && size <= 256 && size % 8 === 0, "invalid numeric width", "type", type);
|
|
334
|
-
}
|
|
335
|
-
return type;
|
|
50
|
+
return accum;
|
|
51
|
+
}, {});
|
|
336
52
|
}
|
|
337
|
-
const
|
|
338
|
-
const internal = Symbol.for("_ethers_internal");
|
|
339
|
-
const ParamTypeInternal = "_ParamTypeInternal";
|
|
340
|
-
const ErrorFragmentInternal = "_ErrorInternal";
|
|
341
|
-
const EventFragmentInternal = "_EventInternal";
|
|
342
|
-
const ConstructorFragmentInternal = "_ConstructorInternal";
|
|
343
|
-
const FallbackFragmentInternal = "_FallbackInternal";
|
|
344
|
-
const FunctionFragmentInternal = "_FunctionInternal";
|
|
345
|
-
const StructFragmentInternal = "_StructInternal";
|
|
346
|
-
const _ParamType = class _ParamType {
|
|
53
|
+
const _Result = class _Result extends Array {
|
|
347
54
|
/**
|
|
348
55
|
* @private
|
|
349
56
|
*/
|
|
350
|
-
constructor(
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
/**
|
|
372
|
-
* The components for the tuple.
|
|
373
|
-
*
|
|
374
|
-
* For non-tuple types this is ``null``.
|
|
375
|
-
*/
|
|
376
|
-
__publicField(this, "components");
|
|
377
|
-
/**
|
|
378
|
-
* The array length, or ``-1`` for dynamic-lengthed arrays.
|
|
379
|
-
*
|
|
380
|
-
* For non-array types this is ``null``.
|
|
381
|
-
*/
|
|
382
|
-
__publicField(this, "arrayLength");
|
|
383
|
-
/**
|
|
384
|
-
* The type of each child in the array.
|
|
385
|
-
*
|
|
386
|
-
* For non-array types this is ``null``.
|
|
387
|
-
*/
|
|
388
|
-
__publicField(this, "arrayChildren");
|
|
389
|
-
assertPrivate(guard, _guard, "ParamType");
|
|
390
|
-
Object.defineProperty(this, internal, { value: ParamTypeInternal });
|
|
391
|
-
if (components) {
|
|
392
|
-
components = Object.freeze(components.slice());
|
|
393
|
-
}
|
|
394
|
-
if (baseType === "array") {
|
|
395
|
-
if (arrayLength == null || arrayChildren == null) {
|
|
396
|
-
throw new Error("");
|
|
57
|
+
constructor(...args) {
|
|
58
|
+
const guard = args[0];
|
|
59
|
+
let items = args[1];
|
|
60
|
+
let names = (args[2] || []).slice();
|
|
61
|
+
let wrap = true;
|
|
62
|
+
if (guard !== _guard) {
|
|
63
|
+
items = args;
|
|
64
|
+
names = [];
|
|
65
|
+
wrap = false;
|
|
66
|
+
}
|
|
67
|
+
super(items.length);
|
|
68
|
+
// No longer used; but cannot be removed as it will remove the
|
|
69
|
+
// #private field from the .d.ts which may break backwards
|
|
70
|
+
// compatibility
|
|
71
|
+
__privateAdd(this, _names);
|
|
72
|
+
items.forEach((item, index) => {
|
|
73
|
+
this[index] = item;
|
|
74
|
+
});
|
|
75
|
+
const nameCounts = names.reduce((accum, name) => {
|
|
76
|
+
if (typeof name === "string") {
|
|
77
|
+
accum.set(name, (accum.get(name) || 0) + 1);
|
|
397
78
|
}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
if (
|
|
403
|
-
|
|
79
|
+
return accum;
|
|
80
|
+
}, /* @__PURE__ */ new Map());
|
|
81
|
+
setNames(this, Object.freeze(items.map((item, index) => {
|
|
82
|
+
const name = names[index];
|
|
83
|
+
if (name != null && nameCounts.get(name) === 1) {
|
|
84
|
+
return name;
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
})));
|
|
88
|
+
__privateSet(this, _names, []);
|
|
89
|
+
if (__privateGet(this, _names) == null) {
|
|
90
|
+
void __privateGet(this, _names);
|
|
91
|
+
}
|
|
92
|
+
if (!wrap) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
Object.freeze(this);
|
|
96
|
+
const proxy = new Proxy(this, {
|
|
97
|
+
get: (target, prop, receiver) => {
|
|
98
|
+
if (typeof prop === "string") {
|
|
99
|
+
if (prop.match(/^[0-9]+$/)) {
|
|
100
|
+
const index = getNumber(prop, "%index");
|
|
101
|
+
if (index < 0 || index >= this.length) {
|
|
102
|
+
throw new RangeError("out of result range");
|
|
103
|
+
}
|
|
104
|
+
const item = target[index];
|
|
105
|
+
if (item instanceof Error) {
|
|
106
|
+
throwError(`index ${index}`, item);
|
|
107
|
+
}
|
|
108
|
+
return item;
|
|
109
|
+
}
|
|
110
|
+
if (passProperties.indexOf(prop) >= 0) {
|
|
111
|
+
return Reflect.get(target, prop, receiver);
|
|
112
|
+
}
|
|
113
|
+
const value = target[prop];
|
|
114
|
+
if (value instanceof Function) {
|
|
115
|
+
return function(...args2) {
|
|
116
|
+
return value.apply(this === receiver ? target : this, args2);
|
|
117
|
+
};
|
|
118
|
+
} else if (!(prop in target)) {
|
|
119
|
+
return target.getValue.apply(this === receiver ? target : this, [prop]);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return Reflect.get(target, prop, receiver);
|
|
404
123
|
}
|
|
405
|
-
} else if (components != null) {
|
|
406
|
-
throw new Error("");
|
|
407
|
-
}
|
|
408
|
-
defineProperties(this, {
|
|
409
|
-
name,
|
|
410
|
-
type,
|
|
411
|
-
baseType,
|
|
412
|
-
indexed,
|
|
413
|
-
components,
|
|
414
|
-
arrayLength,
|
|
415
|
-
arrayChildren
|
|
416
124
|
});
|
|
125
|
+
setNames(proxy, getNames(this));
|
|
126
|
+
return proxy;
|
|
417
127
|
}
|
|
418
128
|
/**
|
|
419
|
-
*
|
|
420
|
-
*
|
|
421
|
-
* For example,
|
|
422
|
-
*
|
|
423
|
-
* ``sighash" => "(uint256,address)"``
|
|
129
|
+
* Returns the Result as a normal Array. If %%deep%%, any children
|
|
130
|
+
* which are Result objects are also converted to a normal Array.
|
|
424
131
|
*
|
|
425
|
-
*
|
|
426
|
-
*
|
|
427
|
-
* ``"full" => "tuple(uint256 foo, address bar) indexed baz"``
|
|
132
|
+
* This will throw if there are any outstanding deferred
|
|
133
|
+
* errors.
|
|
428
134
|
*/
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
const name = this.name || "";
|
|
435
|
-
if (this.isArray()) {
|
|
436
|
-
const result3 = JSON.parse(this.arrayChildren.format("json"));
|
|
437
|
-
result3.name = name;
|
|
438
|
-
result3.type += `[${this.arrayLength < 0 ? "" : String(this.arrayLength)}]`;
|
|
439
|
-
return JSON.stringify(result3);
|
|
440
|
-
}
|
|
441
|
-
const result2 = {
|
|
442
|
-
type: this.baseType === "tuple" ? "tuple" : this.type,
|
|
443
|
-
name
|
|
444
|
-
};
|
|
445
|
-
if (typeof this.indexed === "boolean") {
|
|
446
|
-
result2.indexed = this.indexed;
|
|
447
|
-
}
|
|
448
|
-
if (this.isTuple()) {
|
|
449
|
-
result2.components = this.components.map((c) => JSON.parse(c.format(format)));
|
|
450
|
-
}
|
|
451
|
-
return JSON.stringify(result2);
|
|
452
|
-
}
|
|
453
|
-
let result = "";
|
|
454
|
-
if (this.isArray()) {
|
|
455
|
-
result += this.arrayChildren.format(format);
|
|
456
|
-
result += `[${this.arrayLength < 0 ? "" : String(this.arrayLength)}]`;
|
|
457
|
-
} else {
|
|
458
|
-
if (this.isTuple()) {
|
|
459
|
-
result += "(" + this.components.map((comp) => comp.format(format)).join(format === "full" ? ", " : ",") + ")";
|
|
460
|
-
} else {
|
|
461
|
-
result += this.type;
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
if (format !== "sighash") {
|
|
465
|
-
if (this.indexed === true) {
|
|
466
|
-
result += " indexed";
|
|
135
|
+
toArray(deep) {
|
|
136
|
+
const result = [];
|
|
137
|
+
this.forEach((item, index) => {
|
|
138
|
+
if (item instanceof Error) {
|
|
139
|
+
throwError(`index ${index}`, item);
|
|
467
140
|
}
|
|
468
|
-
if (
|
|
469
|
-
|
|
141
|
+
if (deep && item instanceof _Result) {
|
|
142
|
+
item = item.toArray(deep);
|
|
470
143
|
}
|
|
471
|
-
|
|
144
|
+
result.push(item);
|
|
145
|
+
});
|
|
472
146
|
return result;
|
|
473
147
|
}
|
|
474
148
|
/**
|
|
475
|
-
* Returns
|
|
476
|
-
*
|
|
477
|
-
*
|
|
478
|
-
* and [[arrayLength]] are non-null.
|
|
479
|
-
*/
|
|
480
|
-
isArray() {
|
|
481
|
-
return this.baseType === "array";
|
|
482
|
-
}
|
|
483
|
-
/**
|
|
484
|
-
* Returns true if %%this%% is a Tuple type.
|
|
485
|
-
*
|
|
486
|
-
* This provides a type gaurd ensuring that [[components]]
|
|
487
|
-
* is non-null.
|
|
488
|
-
*/
|
|
489
|
-
isTuple() {
|
|
490
|
-
return this.baseType === "tuple";
|
|
491
|
-
}
|
|
492
|
-
/**
|
|
493
|
-
* Returns true if %%this%% is an Indexable type.
|
|
149
|
+
* Returns the Result as an Object with each name-value pair. If
|
|
150
|
+
* %%deep%%, any children which are Result objects are also
|
|
151
|
+
* converted to an Object.
|
|
494
152
|
*
|
|
495
|
-
* This
|
|
496
|
-
*
|
|
497
|
-
*/
|
|
498
|
-
|
|
499
|
-
|
|
153
|
+
* This will throw if any value is unnamed, or if there are
|
|
154
|
+
* any outstanding deferred errors.
|
|
155
|
+
*/
|
|
156
|
+
toObject(deep) {
|
|
157
|
+
const names = getNames(this);
|
|
158
|
+
return names.reduce((accum, name, index) => {
|
|
159
|
+
assert(name != null, `value at index ${index} unnamed`, "UNSUPPORTED_OPERATION", {
|
|
160
|
+
operation: "toObject()"
|
|
161
|
+
});
|
|
162
|
+
return toObject(names, this, deep);
|
|
163
|
+
}, {});
|
|
500
164
|
}
|
|
501
165
|
/**
|
|
502
|
-
*
|
|
503
|
-
* on each type, destructing the %%value%% recursively.
|
|
166
|
+
* @_ignore
|
|
504
167
|
*/
|
|
505
|
-
|
|
506
|
-
if (
|
|
507
|
-
|
|
508
|
-
throw new Error("invalid array value");
|
|
509
|
-
}
|
|
510
|
-
if (this.arrayLength !== -1 && value.length !== this.arrayLength) {
|
|
511
|
-
throw new Error("array is wrong length");
|
|
512
|
-
}
|
|
513
|
-
const _this = this;
|
|
514
|
-
return value.map((v) => _this.arrayChildren.walk(v, process));
|
|
168
|
+
slice(start, end) {
|
|
169
|
+
if (start == null) {
|
|
170
|
+
start = 0;
|
|
515
171
|
}
|
|
516
|
-
if (
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
if (value.length !== this.components.length) {
|
|
521
|
-
throw new Error("array is wrong length");
|
|
172
|
+
if (start < 0) {
|
|
173
|
+
start += this.length;
|
|
174
|
+
if (start < 0) {
|
|
175
|
+
start = 0;
|
|
522
176
|
}
|
|
523
|
-
const _this = this;
|
|
524
|
-
return value.map((v, i) => _this.components[i].walk(v, process));
|
|
525
177
|
}
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
/**
|
|
529
|
-
* Walks the **ParamType** with %%value%%, asynchronously calling
|
|
530
|
-
* %%process%% on each type, destructing the %%value%% recursively.
|
|
531
|
-
*
|
|
532
|
-
* This can be used to resolve ENS names by walking and resolving each
|
|
533
|
-
* ``"address"`` type.
|
|
534
|
-
*/
|
|
535
|
-
async walkAsync(value, process) {
|
|
536
|
-
const promises = [];
|
|
537
|
-
const result = [value];
|
|
538
|
-
__privateMethod(this, _ParamType_instances, walkAsync_fn).call(this, promises, value, process, (value2) => {
|
|
539
|
-
result[0] = value2;
|
|
540
|
-
});
|
|
541
|
-
if (promises.length) {
|
|
542
|
-
await Promise.all(promises);
|
|
178
|
+
if (end == null) {
|
|
179
|
+
end = this.length;
|
|
543
180
|
}
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
*
|
|
549
|
-
* If %%allowIndexed%% then the ``indexed`` keyword is permitted,
|
|
550
|
-
* otherwise the ``indexed`` keyword will throw an error.
|
|
551
|
-
*/
|
|
552
|
-
static from(obj, allowIndexed) {
|
|
553
|
-
if (_ParamType.isParamType(obj)) {
|
|
554
|
-
return obj;
|
|
555
|
-
}
|
|
556
|
-
if (typeof obj === "string") {
|
|
557
|
-
try {
|
|
558
|
-
return _ParamType.from(lex(obj), allowIndexed);
|
|
559
|
-
} catch (error) {
|
|
560
|
-
assertArgument(false, "invalid param type", "obj", obj);
|
|
561
|
-
}
|
|
562
|
-
} else if (obj instanceof TokenString) {
|
|
563
|
-
let type2 = "", baseType = "";
|
|
564
|
-
let comps = null;
|
|
565
|
-
if (consumeKeywords(obj, setify(["tuple"])).has("tuple") || obj.peekType("OPEN_PAREN")) {
|
|
566
|
-
baseType = "tuple";
|
|
567
|
-
comps = obj.popParams().map((t) => _ParamType.from(t));
|
|
568
|
-
type2 = `tuple(${comps.map((c) => c.format()).join(",")})`;
|
|
569
|
-
} else {
|
|
570
|
-
type2 = verifyBasicType(obj.popType("TYPE"));
|
|
571
|
-
baseType = type2;
|
|
572
|
-
}
|
|
573
|
-
let arrayChildren = null;
|
|
574
|
-
let arrayLength = null;
|
|
575
|
-
while (obj.length && obj.peekType("BRACKET")) {
|
|
576
|
-
const bracket = obj.pop();
|
|
577
|
-
arrayChildren = new _ParamType(_guard, "", type2, baseType, null, comps, arrayLength, arrayChildren);
|
|
578
|
-
arrayLength = bracket.value;
|
|
579
|
-
type2 += bracket.text;
|
|
580
|
-
baseType = "array";
|
|
581
|
-
comps = null;
|
|
582
|
-
}
|
|
583
|
-
let indexed2 = null;
|
|
584
|
-
const keywords = consumeKeywords(obj, KwModifiers);
|
|
585
|
-
if (keywords.has("indexed")) {
|
|
586
|
-
if (!allowIndexed) {
|
|
587
|
-
throw new Error("");
|
|
588
|
-
}
|
|
589
|
-
indexed2 = true;
|
|
590
|
-
}
|
|
591
|
-
const name2 = obj.peekType("ID") ? obj.pop().text : "";
|
|
592
|
-
if (obj.length) {
|
|
593
|
-
throw new Error("leftover tokens");
|
|
181
|
+
if (end < 0) {
|
|
182
|
+
end += this.length;
|
|
183
|
+
if (end < 0) {
|
|
184
|
+
end = 0;
|
|
594
185
|
}
|
|
595
|
-
return new _ParamType(_guard, name2, type2, baseType, indexed2, comps, arrayLength, arrayChildren);
|
|
596
186
|
}
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
let indexed = obj.indexed;
|
|
600
|
-
if (indexed != null) {
|
|
601
|
-
assertArgument(allowIndexed, "parameter cannot be indexed", "obj.indexed", obj.indexed);
|
|
602
|
-
indexed = !!indexed;
|
|
187
|
+
if (end > this.length) {
|
|
188
|
+
end = this.length;
|
|
603
189
|
}
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
type: arrayMatch[1],
|
|
610
|
-
components: obj.components
|
|
611
|
-
});
|
|
612
|
-
return new _ParamType(_guard, name || "", type, "array", indexed, null, arrayLength, arrayChildren);
|
|
613
|
-
}
|
|
614
|
-
if (type === "tuple" || type.startsWith(
|
|
615
|
-
"tuple("
|
|
616
|
-
/* fix: ) */
|
|
617
|
-
) || type.startsWith(
|
|
618
|
-
"("
|
|
619
|
-
/* fix: ) */
|
|
620
|
-
)) {
|
|
621
|
-
const comps = obj.components != null ? obj.components.map((c) => _ParamType.from(c)) : null;
|
|
622
|
-
const tuple = new _ParamType(_guard, name || "", type, "tuple", indexed, comps, null, null);
|
|
623
|
-
return tuple;
|
|
190
|
+
const _names2 = getNames(this);
|
|
191
|
+
const result = [], names = [];
|
|
192
|
+
for (let i = start; i < end; i++) {
|
|
193
|
+
result.push(this[i]);
|
|
194
|
+
names.push(_names2[i]);
|
|
624
195
|
}
|
|
625
|
-
|
|
626
|
-
return new _ParamType(_guard, name || "", type, type, indexed, null, null, null);
|
|
196
|
+
return new _Result(_guard, result, names);
|
|
627
197
|
}
|
|
628
198
|
/**
|
|
629
|
-
*
|
|
199
|
+
* @_ignore
|
|
630
200
|
*/
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
if (!Array.isArray(value)) {
|
|
639
|
-
throw new Error("invalid array value");
|
|
640
|
-
}
|
|
641
|
-
if (this.arrayLength !== -1 && value.length !== this.arrayLength) {
|
|
642
|
-
throw new Error("array is wrong length");
|
|
643
|
-
}
|
|
644
|
-
const childType = this.arrayChildren;
|
|
645
|
-
const result2 = value.slice();
|
|
646
|
-
result2.forEach((value2, index) => {
|
|
647
|
-
var _a;
|
|
648
|
-
__privateMethod(_a = childType, _ParamType_instances, walkAsync_fn).call(_a, promises, value2, process, (value3) => {
|
|
649
|
-
result2[index] = value3;
|
|
650
|
-
});
|
|
651
|
-
});
|
|
652
|
-
setValue(result2);
|
|
653
|
-
return;
|
|
654
|
-
}
|
|
655
|
-
if (this.isTuple()) {
|
|
656
|
-
const components = this.components;
|
|
657
|
-
let result2;
|
|
658
|
-
if (Array.isArray(value)) {
|
|
659
|
-
result2 = value.slice();
|
|
660
|
-
} else {
|
|
661
|
-
if (value == null || typeof value !== "object") {
|
|
662
|
-
throw new Error("invalid tuple value");
|
|
663
|
-
}
|
|
664
|
-
result2 = components.map((param) => {
|
|
665
|
-
if (!param.name) {
|
|
666
|
-
throw new Error("cannot use object value with unnamed components");
|
|
667
|
-
}
|
|
668
|
-
if (!(param.name in value)) {
|
|
669
|
-
throw new Error(`missing value for component ${param.name}`);
|
|
670
|
-
}
|
|
671
|
-
return value[param.name];
|
|
672
|
-
});
|
|
673
|
-
}
|
|
674
|
-
if (result2.length !== this.components.length) {
|
|
675
|
-
throw new Error("array is wrong length");
|
|
676
|
-
}
|
|
677
|
-
result2.forEach((value2, index) => {
|
|
678
|
-
var _a;
|
|
679
|
-
__privateMethod(_a = components[index], _ParamType_instances, walkAsync_fn).call(_a, promises, value2, process, (value3) => {
|
|
680
|
-
result2[index] = value3;
|
|
681
|
-
});
|
|
682
|
-
});
|
|
683
|
-
setValue(result2);
|
|
684
|
-
return;
|
|
685
|
-
}
|
|
686
|
-
const result = process(this.type, value);
|
|
687
|
-
if (result.then) {
|
|
688
|
-
promises.push(async function() {
|
|
689
|
-
setValue(await result);
|
|
690
|
-
}());
|
|
691
|
-
} else {
|
|
692
|
-
setValue(result);
|
|
693
|
-
}
|
|
694
|
-
};
|
|
695
|
-
let ParamType = _ParamType;
|
|
696
|
-
class Fragment {
|
|
697
|
-
/**
|
|
698
|
-
* @private
|
|
699
|
-
*/
|
|
700
|
-
constructor(guard, type, inputs) {
|
|
701
|
-
/**
|
|
702
|
-
* The type of the fragment.
|
|
703
|
-
*/
|
|
704
|
-
__publicField(this, "type");
|
|
705
|
-
/**
|
|
706
|
-
* The inputs for the fragment.
|
|
707
|
-
*/
|
|
708
|
-
__publicField(this, "inputs");
|
|
709
|
-
assertPrivate(guard, _guard, "Fragment");
|
|
710
|
-
inputs = Object.freeze(inputs.slice());
|
|
711
|
-
defineProperties(this, { type, inputs });
|
|
712
|
-
}
|
|
713
|
-
/**
|
|
714
|
-
* Creates a new **Fragment** for %%obj%%, wich can be any supported
|
|
715
|
-
* ABI frgament type.
|
|
716
|
-
*/
|
|
717
|
-
static from(obj) {
|
|
718
|
-
if (typeof obj === "string") {
|
|
719
|
-
try {
|
|
720
|
-
Fragment.from(JSON.parse(obj));
|
|
721
|
-
} catch (e) {
|
|
722
|
-
}
|
|
723
|
-
return Fragment.from(lex(obj));
|
|
724
|
-
}
|
|
725
|
-
if (obj instanceof TokenString) {
|
|
726
|
-
const type = obj.peekKeyword(KwTypes);
|
|
727
|
-
switch (type) {
|
|
728
|
-
case "constructor":
|
|
729
|
-
return ConstructorFragment.from(obj);
|
|
730
|
-
case "error":
|
|
731
|
-
return ErrorFragment.from(obj);
|
|
732
|
-
case "event":
|
|
733
|
-
return EventFragment.from(obj);
|
|
734
|
-
case "fallback":
|
|
735
|
-
case "receive":
|
|
736
|
-
return FallbackFragment.from(obj);
|
|
737
|
-
case "function":
|
|
738
|
-
return FunctionFragment.from(obj);
|
|
739
|
-
case "struct":
|
|
740
|
-
return StructFragment.from(obj);
|
|
201
|
+
filter(callback, thisArg) {
|
|
202
|
+
const _names2 = getNames(this);
|
|
203
|
+
const result = [], names = [];
|
|
204
|
+
for (let i = 0; i < this.length; i++) {
|
|
205
|
+
const item = this[i];
|
|
206
|
+
if (item instanceof Error) {
|
|
207
|
+
throwError(`index ${i}`, item);
|
|
741
208
|
}
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
return ConstructorFragment.from(obj);
|
|
746
|
-
case "error":
|
|
747
|
-
return ErrorFragment.from(obj);
|
|
748
|
-
case "event":
|
|
749
|
-
return EventFragment.from(obj);
|
|
750
|
-
case "fallback":
|
|
751
|
-
case "receive":
|
|
752
|
-
return FallbackFragment.from(obj);
|
|
753
|
-
case "function":
|
|
754
|
-
return FunctionFragment.from(obj);
|
|
755
|
-
case "struct":
|
|
756
|
-
return StructFragment.from(obj);
|
|
209
|
+
if (callback.call(thisArg, item, i, this)) {
|
|
210
|
+
result.push(item);
|
|
211
|
+
names.push(_names2[i]);
|
|
757
212
|
}
|
|
758
|
-
assert(false, `unsupported type: ${obj.type}`, "UNSUPPORTED_OPERATION", {
|
|
759
|
-
operation: "Fragment.from"
|
|
760
|
-
});
|
|
761
213
|
}
|
|
762
|
-
|
|
763
|
-
}
|
|
764
|
-
/**
|
|
765
|
-
* Returns true if %%value%% is a [[ConstructorFragment]].
|
|
766
|
-
*/
|
|
767
|
-
static isConstructor(value) {
|
|
768
|
-
return ConstructorFragment.isFragment(value);
|
|
769
|
-
}
|
|
770
|
-
/**
|
|
771
|
-
* Returns true if %%value%% is an [[ErrorFragment]].
|
|
772
|
-
*/
|
|
773
|
-
static isError(value) {
|
|
774
|
-
return ErrorFragment.isFragment(value);
|
|
775
|
-
}
|
|
776
|
-
/**
|
|
777
|
-
* Returns true if %%value%% is an [[EventFragment]].
|
|
778
|
-
*/
|
|
779
|
-
static isEvent(value) {
|
|
780
|
-
return EventFragment.isFragment(value);
|
|
781
|
-
}
|
|
782
|
-
/**
|
|
783
|
-
* Returns true if %%value%% is a [[FunctionFragment]].
|
|
784
|
-
*/
|
|
785
|
-
static isFunction(value) {
|
|
786
|
-
return FunctionFragment.isFragment(value);
|
|
787
|
-
}
|
|
788
|
-
/**
|
|
789
|
-
* Returns true if %%value%% is a [[StructFragment]].
|
|
790
|
-
*/
|
|
791
|
-
static isStruct(value) {
|
|
792
|
-
return StructFragment.isFragment(value);
|
|
793
|
-
}
|
|
794
|
-
}
|
|
795
|
-
class NamedFragment extends Fragment {
|
|
796
|
-
/**
|
|
797
|
-
* @private
|
|
798
|
-
*/
|
|
799
|
-
constructor(guard, type, name, inputs) {
|
|
800
|
-
super(guard, type, inputs);
|
|
801
|
-
/**
|
|
802
|
-
* The name of the fragment.
|
|
803
|
-
*/
|
|
804
|
-
__publicField(this, "name");
|
|
805
|
-
assertArgument(typeof name === "string" && name.match(regexId), "invalid identifier", "name", name);
|
|
806
|
-
inputs = Object.freeze(inputs.slice());
|
|
807
|
-
defineProperties(this, { name });
|
|
808
|
-
}
|
|
809
|
-
}
|
|
810
|
-
function joinParams(format, params) {
|
|
811
|
-
return "(" + params.map((p) => p.format(format)).join(format === "full" ? ", " : ",") + ")";
|
|
812
|
-
}
|
|
813
|
-
class ErrorFragment extends NamedFragment {
|
|
814
|
-
/**
|
|
815
|
-
* @private
|
|
816
|
-
*/
|
|
817
|
-
constructor(guard, name, inputs) {
|
|
818
|
-
super(guard, "error", name, inputs);
|
|
819
|
-
Object.defineProperty(this, internal, { value: ErrorFragmentInternal });
|
|
820
|
-
}
|
|
821
|
-
/**
|
|
822
|
-
* The Custom Error selector.
|
|
823
|
-
*/
|
|
824
|
-
get selector() {
|
|
825
|
-
return id(this.format("sighash")).substring(0, 10);
|
|
214
|
+
return new _Result(_guard, result, names);
|
|
826
215
|
}
|
|
827
216
|
/**
|
|
828
|
-
*
|
|
217
|
+
* @_ignore
|
|
829
218
|
*/
|
|
830
|
-
|
|
831
|
-
if (format == null) {
|
|
832
|
-
format = "sighash";
|
|
833
|
-
}
|
|
834
|
-
if (format === "json") {
|
|
835
|
-
return JSON.stringify({
|
|
836
|
-
type: "error",
|
|
837
|
-
name: this.name,
|
|
838
|
-
inputs: this.inputs.map((input) => JSON.parse(input.format(format)))
|
|
839
|
-
});
|
|
840
|
-
}
|
|
219
|
+
map(callback, thisArg) {
|
|
841
220
|
const result = [];
|
|
842
|
-
|
|
843
|
-
|
|
221
|
+
for (let i = 0; i < this.length; i++) {
|
|
222
|
+
const item = this[i];
|
|
223
|
+
if (item instanceof Error) {
|
|
224
|
+
throwError(`index ${i}`, item);
|
|
225
|
+
}
|
|
226
|
+
result.push(callback.call(thisArg, item, i, this));
|
|
844
227
|
}
|
|
845
|
-
result
|
|
846
|
-
return result.join(" ");
|
|
228
|
+
return result;
|
|
847
229
|
}
|
|
848
230
|
/**
|
|
849
|
-
* Returns
|
|
231
|
+
* Returns the value for %%name%%.
|
|
232
|
+
*
|
|
233
|
+
* Since it is possible to have a key whose name conflicts with
|
|
234
|
+
* a method on a [[Result]] or its superclass Array, or any
|
|
235
|
+
* JavaScript keyword, this ensures all named values are still
|
|
236
|
+
* accessible by name.
|
|
850
237
|
*/
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
238
|
+
getValue(name) {
|
|
239
|
+
const index = getNames(this).indexOf(name);
|
|
240
|
+
if (index === -1) {
|
|
241
|
+
return void 0;
|
|
854
242
|
}
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
const name = consumeName("error", obj);
|
|
859
|
-
const inputs = consumeParams(obj);
|
|
860
|
-
consumeEoi(obj);
|
|
861
|
-
return new ErrorFragment(_guard, name, inputs);
|
|
243
|
+
const value = this[index];
|
|
244
|
+
if (value instanceof Error) {
|
|
245
|
+
throwError(`property ${JSON.stringify(name)}`, value.error);
|
|
862
246
|
}
|
|
863
|
-
return
|
|
247
|
+
return value;
|
|
864
248
|
}
|
|
865
249
|
/**
|
|
866
|
-
*
|
|
867
|
-
*
|
|
250
|
+
* Creates a new [[Result]] for %%items%% with each entry
|
|
251
|
+
* also accessible by its corresponding name in %%keys%%.
|
|
868
252
|
*/
|
|
869
|
-
static
|
|
870
|
-
return
|
|
253
|
+
static fromItems(items, keys) {
|
|
254
|
+
return new _Result(_guard, items, keys);
|
|
871
255
|
}
|
|
256
|
+
};
|
|
257
|
+
_names = new WeakMap();
|
|
258
|
+
let Result = _Result;
|
|
259
|
+
function getValue(value) {
|
|
260
|
+
let bytes = toBeArray(value);
|
|
261
|
+
assert(bytes.length <= WordSize, "value out-of-bounds", "BUFFER_OVERRUN", { buffer: bytes, length: WordSize, offset: bytes.length });
|
|
262
|
+
if (bytes.length !== WordSize) {
|
|
263
|
+
bytes = getBytesCopy(concat([Padding.slice(bytes.length % WordSize), bytes]));
|
|
264
|
+
}
|
|
265
|
+
return bytes;
|
|
872
266
|
}
|
|
873
|
-
class
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
*/
|
|
895
|
-
format(format) {
|
|
896
|
-
if (format == null) {
|
|
897
|
-
format = "sighash";
|
|
898
|
-
}
|
|
899
|
-
if (format === "json") {
|
|
900
|
-
return JSON.stringify({
|
|
901
|
-
type: "event",
|
|
902
|
-
anonymous: this.anonymous,
|
|
903
|
-
name: this.name,
|
|
904
|
-
inputs: this.inputs.map((i) => JSON.parse(i.format(format)))
|
|
905
|
-
});
|
|
906
|
-
}
|
|
907
|
-
const result = [];
|
|
908
|
-
if (format !== "sighash") {
|
|
909
|
-
result.push("event");
|
|
910
|
-
}
|
|
911
|
-
result.push(this.name + joinParams(format, this.inputs));
|
|
912
|
-
if (format !== "sighash" && this.anonymous) {
|
|
913
|
-
result.push("anonymous");
|
|
914
|
-
}
|
|
915
|
-
return result.join(" ");
|
|
916
|
-
}
|
|
917
|
-
/**
|
|
918
|
-
* Return the topic hash for an event with %%name%% and %%params%%.
|
|
919
|
-
*/
|
|
920
|
-
static getTopicHash(name, params) {
|
|
921
|
-
params = (params || []).map((p) => ParamType.from(p));
|
|
922
|
-
const fragment = new EventFragment(_guard, name, params, false);
|
|
923
|
-
return fragment.topicHash;
|
|
924
|
-
}
|
|
925
|
-
/**
|
|
926
|
-
* Returns a new **EventFragment** for %%obj%%.
|
|
927
|
-
*/
|
|
928
|
-
static from(obj) {
|
|
929
|
-
if (EventFragment.isFragment(obj)) {
|
|
930
|
-
return obj;
|
|
931
|
-
}
|
|
932
|
-
if (typeof obj === "string") {
|
|
933
|
-
try {
|
|
934
|
-
return EventFragment.from(lex(obj));
|
|
935
|
-
} catch (error) {
|
|
936
|
-
assertArgument(false, "invalid event fragment", "obj", obj);
|
|
937
|
-
}
|
|
938
|
-
} else if (obj instanceof TokenString) {
|
|
939
|
-
const name = consumeName("event", obj);
|
|
940
|
-
const inputs = consumeParams(obj, true);
|
|
941
|
-
const anonymous = !!consumeKeywords(obj, setify(["anonymous"])).has("anonymous");
|
|
942
|
-
consumeEoi(obj);
|
|
943
|
-
return new EventFragment(_guard, name, inputs, anonymous);
|
|
944
|
-
}
|
|
945
|
-
return new EventFragment(_guard, obj.name, obj.inputs ? obj.inputs.map((p) => ParamType.from(p, true)) : [], !!obj.anonymous);
|
|
267
|
+
class Coder {
|
|
268
|
+
constructor(name, type, localName, dynamic) {
|
|
269
|
+
// The coder name:
|
|
270
|
+
// - address, uint256, tuple, array, etc.
|
|
271
|
+
__publicField(this, "name");
|
|
272
|
+
// The fully expanded type, including composite types:
|
|
273
|
+
// - address, uint256, tuple(address,bytes), uint256[3][4][], etc.
|
|
274
|
+
__publicField(this, "type");
|
|
275
|
+
// The localName bound in the signature, in this example it is "baz":
|
|
276
|
+
// - tuple(address foo, uint bar) baz
|
|
277
|
+
__publicField(this, "localName");
|
|
278
|
+
// Whether this type is dynamic:
|
|
279
|
+
// - Dynamic: bytes, string, address[], tuple(boolean[]), etc.
|
|
280
|
+
// - Not Dynamic: address, uint256, boolean[3], tuple(address, uint8)
|
|
281
|
+
__publicField(this, "dynamic");
|
|
282
|
+
defineProperties(this, { name, type, localName, dynamic }, {
|
|
283
|
+
name: "string",
|
|
284
|
+
type: "string",
|
|
285
|
+
localName: "string",
|
|
286
|
+
dynamic: "boolean"
|
|
287
|
+
});
|
|
946
288
|
}
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
* **EventFragment**.
|
|
950
|
-
*/
|
|
951
|
-
static isFragment(value) {
|
|
952
|
-
return value && value[internal] === EventFragmentInternal;
|
|
289
|
+
_throwError(message, value) {
|
|
290
|
+
assertArgument(false, message, this.localName, value);
|
|
953
291
|
}
|
|
954
292
|
}
|
|
955
|
-
class
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
* The recommended gas limit for deployment or ``null``.
|
|
967
|
-
*/
|
|
968
|
-
__publicField(this, "gas");
|
|
969
|
-
Object.defineProperty(this, internal, { value: ConstructorFragmentInternal });
|
|
970
|
-
defineProperties(this, { payable, gas });
|
|
971
|
-
}
|
|
972
|
-
/**
|
|
973
|
-
* Returns a string representation of this constructor as %%format%%.
|
|
974
|
-
*/
|
|
975
|
-
format(format) {
|
|
976
|
-
assert(format != null && format !== "sighash", "cannot format a constructor for sighash", "UNSUPPORTED_OPERATION", { operation: "format(sighash)" });
|
|
977
|
-
if (format === "json") {
|
|
978
|
-
return JSON.stringify({
|
|
979
|
-
type: "constructor",
|
|
980
|
-
stateMutability: this.payable ? "payable" : "undefined",
|
|
981
|
-
payable: this.payable,
|
|
982
|
-
gas: this.gas != null ? this.gas : void 0,
|
|
983
|
-
inputs: this.inputs.map((i) => JSON.parse(i.format(format)))
|
|
984
|
-
});
|
|
985
|
-
}
|
|
986
|
-
const result = [`constructor${joinParams(format, this.inputs)}`];
|
|
987
|
-
if (this.payable) {
|
|
988
|
-
result.push("payable");
|
|
989
|
-
}
|
|
990
|
-
if (this.gas != null) {
|
|
991
|
-
result.push(`@${this.gas.toString()}`);
|
|
992
|
-
}
|
|
993
|
-
return result.join(" ");
|
|
293
|
+
class Writer {
|
|
294
|
+
constructor() {
|
|
295
|
+
__privateAdd(this, _Writer_instances);
|
|
296
|
+
// An array of WordSize lengthed objects to concatenation
|
|
297
|
+
__privateAdd(this, _data);
|
|
298
|
+
__privateAdd(this, _dataLength);
|
|
299
|
+
__privateSet(this, _data, []);
|
|
300
|
+
__privateSet(this, _dataLength, 0);
|
|
301
|
+
}
|
|
302
|
+
get data() {
|
|
303
|
+
return concat(__privateGet(this, _data));
|
|
994
304
|
}
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
return value && value[internal] === ConstructorFragmentInternal;
|
|
305
|
+
get length() {
|
|
306
|
+
return __privateGet(this, _dataLength);
|
|
307
|
+
}
|
|
308
|
+
appendWriter(writer) {
|
|
309
|
+
return __privateMethod(this, _Writer_instances, writeData_fn).call(this, getBytesCopy(writer.data));
|
|
310
|
+
}
|
|
311
|
+
// Arrayish item; pad on the right to *nearest* WordSize
|
|
312
|
+
writeBytes(value) {
|
|
313
|
+
let bytes = getBytesCopy(value);
|
|
314
|
+
const paddingOffset = bytes.length % WordSize;
|
|
315
|
+
if (paddingOffset) {
|
|
316
|
+
bytes = getBytesCopy(concat([bytes, Padding.slice(paddingOffset)]));
|
|
317
|
+
}
|
|
318
|
+
return __privateMethod(this, _Writer_instances, writeData_fn).call(this, bytes);
|
|
319
|
+
}
|
|
320
|
+
// Numeric item; pad on the left *to* WordSize
|
|
321
|
+
writeValue(value) {
|
|
322
|
+
return __privateMethod(this, _Writer_instances, writeData_fn).call(this, getValue(value));
|
|
323
|
+
}
|
|
324
|
+
// Inserts a numeric place-holder, returning a callback that can
|
|
325
|
+
// be used to asjust the value later
|
|
326
|
+
writeUpdatableValue() {
|
|
327
|
+
const offset = __privateGet(this, _data).length;
|
|
328
|
+
__privateGet(this, _data).push(Padding);
|
|
329
|
+
__privateSet(this, _dataLength, __privateGet(this, _dataLength) + WordSize);
|
|
330
|
+
return (value) => {
|
|
331
|
+
__privateGet(this, _data)[offset] = getValue(value);
|
|
332
|
+
};
|
|
1024
333
|
}
|
|
1025
334
|
}
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
}
|
|
1054
|
-
if (typeof obj === "string") {
|
|
1055
|
-
try {
|
|
1056
|
-
return FallbackFragment.from(lex(obj));
|
|
1057
|
-
} catch (error) {
|
|
1058
|
-
assertArgument(false, "invalid fallback fragment", "obj", obj);
|
|
1059
|
-
}
|
|
1060
|
-
} else if (obj instanceof TokenString) {
|
|
1061
|
-
const errorObj = obj.toString();
|
|
1062
|
-
const topIsValid = obj.peekKeyword(setify(["fallback", "receive"]));
|
|
1063
|
-
assertArgument(topIsValid, "type must be fallback or receive", "obj", errorObj);
|
|
1064
|
-
const type = obj.popKeyword(setify(["fallback", "receive"]));
|
|
1065
|
-
if (type === "receive") {
|
|
1066
|
-
const inputs2 = consumeParams(obj);
|
|
1067
|
-
assertArgument(inputs2.length === 0, `receive cannot have arguments`, "obj.inputs", inputs2);
|
|
1068
|
-
consumeKeywords(obj, setify(["payable"]));
|
|
1069
|
-
consumeEoi(obj);
|
|
1070
|
-
return new FallbackFragment(_guard, [], true);
|
|
1071
|
-
}
|
|
1072
|
-
let inputs = consumeParams(obj);
|
|
1073
|
-
if (inputs.length) {
|
|
1074
|
-
assertArgument(inputs.length === 1 && inputs[0].type === "bytes", "invalid fallback inputs", "obj.inputs", inputs.map((i) => i.format("minimal")).join(", "));
|
|
1075
|
-
} else {
|
|
1076
|
-
inputs = [ParamType.from("bytes")];
|
|
1077
|
-
}
|
|
1078
|
-
const mutability = consumeMutability(obj);
|
|
1079
|
-
assertArgument(mutability === "nonpayable" || mutability === "payable", "fallback cannot be constants", "obj.stateMutability", mutability);
|
|
1080
|
-
if (consumeKeywords(obj, setify(["returns"])).has("returns")) {
|
|
1081
|
-
const outputs = consumeParams(obj);
|
|
1082
|
-
assertArgument(outputs.length === 1 && outputs[0].type === "bytes", "invalid fallback outputs", "obj.outputs", outputs.map((i) => i.format("minimal")).join(", "));
|
|
1083
|
-
}
|
|
1084
|
-
consumeEoi(obj);
|
|
1085
|
-
return new FallbackFragment(_guard, inputs, mutability === "payable");
|
|
1086
|
-
}
|
|
1087
|
-
if (obj.type === "receive") {
|
|
1088
|
-
return new FallbackFragment(_guard, [], true);
|
|
1089
|
-
}
|
|
1090
|
-
if (obj.type === "fallback") {
|
|
1091
|
-
const inputs = [ParamType.from("bytes")];
|
|
1092
|
-
const payable = obj.stateMutability === "payable";
|
|
1093
|
-
return new FallbackFragment(_guard, inputs, payable);
|
|
1094
|
-
}
|
|
1095
|
-
assertArgument(false, "invalid fallback description", "obj", obj);
|
|
1096
|
-
}
|
|
1097
|
-
/**
|
|
1098
|
-
* Returns ``true`` and provides a type guard if %%value%% is a
|
|
1099
|
-
* **FallbackFragment**.
|
|
1100
|
-
*/
|
|
1101
|
-
static isFragment(value) {
|
|
1102
|
-
return value && value[internal] === FallbackFragmentInternal;
|
|
335
|
+
_data = new WeakMap();
|
|
336
|
+
_dataLength = new WeakMap();
|
|
337
|
+
_Writer_instances = new WeakSet();
|
|
338
|
+
writeData_fn = function(data) {
|
|
339
|
+
__privateGet(this, _data).push(data);
|
|
340
|
+
__privateSet(this, _dataLength, __privateGet(this, _dataLength) + data.length);
|
|
341
|
+
return data.length;
|
|
342
|
+
};
|
|
343
|
+
const _Reader = class _Reader {
|
|
344
|
+
constructor(data, allowLoose, maxInflation) {
|
|
345
|
+
__privateAdd(this, _Reader_instances);
|
|
346
|
+
// Allows incomplete unpadded data to be read; otherwise an error
|
|
347
|
+
// is raised if attempting to overrun the buffer. This is required
|
|
348
|
+
// to deal with an old Solidity bug, in which event data for
|
|
349
|
+
// external (not public thoguh) was tightly packed.
|
|
350
|
+
__publicField(this, "allowLoose");
|
|
351
|
+
__privateAdd(this, _data2);
|
|
352
|
+
__privateAdd(this, _offset);
|
|
353
|
+
__privateAdd(this, _bytesRead);
|
|
354
|
+
__privateAdd(this, _parent);
|
|
355
|
+
__privateAdd(this, _maxInflation);
|
|
356
|
+
defineProperties(this, { allowLoose: !!allowLoose });
|
|
357
|
+
__privateSet(this, _data2, getBytesCopy(data));
|
|
358
|
+
__privateSet(this, _bytesRead, 0);
|
|
359
|
+
__privateSet(this, _parent, null);
|
|
360
|
+
__privateSet(this, _maxInflation, maxInflation != null ? maxInflation : 1024);
|
|
361
|
+
__privateSet(this, _offset, 0);
|
|
1103
362
|
}
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
/**
|
|
1107
|
-
* @private
|
|
1108
|
-
*/
|
|
1109
|
-
constructor(guard, name, stateMutability, inputs, outputs, gas) {
|
|
1110
|
-
super(guard, "function", name, inputs);
|
|
1111
|
-
/**
|
|
1112
|
-
* If the function is constant (e.g. ``pure`` or ``view`` functions).
|
|
1113
|
-
*/
|
|
1114
|
-
__publicField(this, "constant");
|
|
1115
|
-
/**
|
|
1116
|
-
* The returned types for the result of calling this function.
|
|
1117
|
-
*/
|
|
1118
|
-
__publicField(this, "outputs");
|
|
1119
|
-
/**
|
|
1120
|
-
* The state mutability (e.g. ``payable``, ``nonpayable``, ``view``
|
|
1121
|
-
* or ``pure``)
|
|
1122
|
-
*/
|
|
1123
|
-
__publicField(this, "stateMutability");
|
|
1124
|
-
/**
|
|
1125
|
-
* If the function can be sent value during invocation.
|
|
1126
|
-
*/
|
|
1127
|
-
__publicField(this, "payable");
|
|
1128
|
-
/**
|
|
1129
|
-
* The recommended gas limit to send when calling this function.
|
|
1130
|
-
*/
|
|
1131
|
-
__publicField(this, "gas");
|
|
1132
|
-
Object.defineProperty(this, internal, { value: FunctionFragmentInternal });
|
|
1133
|
-
outputs = Object.freeze(outputs.slice());
|
|
1134
|
-
const constant = stateMutability === "view" || stateMutability === "pure";
|
|
1135
|
-
const payable = stateMutability === "payable";
|
|
1136
|
-
defineProperties(this, { constant, gas, outputs, payable, stateMutability });
|
|
363
|
+
get data() {
|
|
364
|
+
return hexlify(__privateGet(this, _data2));
|
|
1137
365
|
}
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
*/
|
|
1141
|
-
get selector() {
|
|
1142
|
-
return id(this.format("sighash")).substring(0, 10);
|
|
366
|
+
get dataLength() {
|
|
367
|
+
return __privateGet(this, _data2).length;
|
|
1143
368
|
}
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
*/
|
|
1147
|
-
format(format) {
|
|
1148
|
-
if (format == null) {
|
|
1149
|
-
format = "sighash";
|
|
1150
|
-
}
|
|
1151
|
-
if (format === "json") {
|
|
1152
|
-
return JSON.stringify({
|
|
1153
|
-
type: "function",
|
|
1154
|
-
name: this.name,
|
|
1155
|
-
constant: this.constant,
|
|
1156
|
-
stateMutability: this.stateMutability !== "nonpayable" ? this.stateMutability : void 0,
|
|
1157
|
-
payable: this.payable,
|
|
1158
|
-
gas: this.gas != null ? this.gas : void 0,
|
|
1159
|
-
inputs: this.inputs.map((i) => JSON.parse(i.format(format))),
|
|
1160
|
-
outputs: this.outputs.map((o) => JSON.parse(o.format(format)))
|
|
1161
|
-
});
|
|
1162
|
-
}
|
|
1163
|
-
const result = [];
|
|
1164
|
-
if (format !== "sighash") {
|
|
1165
|
-
result.push("function");
|
|
1166
|
-
}
|
|
1167
|
-
result.push(this.name + joinParams(format, this.inputs));
|
|
1168
|
-
if (format !== "sighash") {
|
|
1169
|
-
if (this.stateMutability !== "nonpayable") {
|
|
1170
|
-
result.push(this.stateMutability);
|
|
1171
|
-
}
|
|
1172
|
-
if (this.outputs && this.outputs.length) {
|
|
1173
|
-
result.push("returns");
|
|
1174
|
-
result.push(joinParams(format, this.outputs));
|
|
1175
|
-
}
|
|
1176
|
-
if (this.gas != null) {
|
|
1177
|
-
result.push(`@${this.gas.toString()}`);
|
|
1178
|
-
}
|
|
1179
|
-
}
|
|
1180
|
-
return result.join(" ");
|
|
369
|
+
get consumed() {
|
|
370
|
+
return __privateGet(this, _offset);
|
|
1181
371
|
}
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
*/
|
|
1185
|
-
static getSelector(name, params) {
|
|
1186
|
-
params = (params || []).map((p) => ParamType.from(p));
|
|
1187
|
-
const fragment = new FunctionFragment(_guard, name, "view", params, [], null);
|
|
1188
|
-
return fragment.selector;
|
|
372
|
+
get bytes() {
|
|
373
|
+
return new Uint8Array(__privateGet(this, _data2));
|
|
1189
374
|
}
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
return obj;
|
|
1196
|
-
}
|
|
1197
|
-
if (typeof obj === "string") {
|
|
1198
|
-
try {
|
|
1199
|
-
return FunctionFragment.from(lex(obj));
|
|
1200
|
-
} catch (error) {
|
|
1201
|
-
assertArgument(false, "invalid function fragment", "obj", obj);
|
|
1202
|
-
}
|
|
1203
|
-
} else if (obj instanceof TokenString) {
|
|
1204
|
-
const name = consumeName("function", obj);
|
|
1205
|
-
const inputs = consumeParams(obj);
|
|
1206
|
-
const mutability = consumeMutability(obj);
|
|
1207
|
-
let outputs = [];
|
|
1208
|
-
if (consumeKeywords(obj, setify(["returns"])).has("returns")) {
|
|
1209
|
-
outputs = consumeParams(obj);
|
|
1210
|
-
}
|
|
1211
|
-
const gas = consumeGas(obj);
|
|
1212
|
-
consumeEoi(obj);
|
|
1213
|
-
return new FunctionFragment(_guard, name, mutability, inputs, outputs, gas);
|
|
1214
|
-
}
|
|
1215
|
-
let stateMutability = obj.stateMutability;
|
|
1216
|
-
if (stateMutability == null) {
|
|
1217
|
-
stateMutability = "payable";
|
|
1218
|
-
if (typeof obj.constant === "boolean") {
|
|
1219
|
-
stateMutability = "view";
|
|
1220
|
-
if (!obj.constant) {
|
|
1221
|
-
stateMutability = "payable";
|
|
1222
|
-
if (typeof obj.payable === "boolean" && !obj.payable) {
|
|
1223
|
-
stateMutability = "nonpayable";
|
|
1224
|
-
}
|
|
1225
|
-
}
|
|
1226
|
-
} else if (typeof obj.payable === "boolean" && !obj.payable) {
|
|
1227
|
-
stateMutability = "nonpayable";
|
|
1228
|
-
}
|
|
1229
|
-
}
|
|
1230
|
-
return new FunctionFragment(_guard, obj.name, stateMutability, obj.inputs ? obj.inputs.map(ParamType.from) : [], obj.outputs ? obj.outputs.map(ParamType.from) : [], obj.gas != null ? obj.gas : null);
|
|
375
|
+
// Create a sub-reader with the same underlying data, but offset
|
|
376
|
+
subReader(offset) {
|
|
377
|
+
const reader = new _Reader(__privateGet(this, _data2).slice(__privateGet(this, _offset) + offset), this.allowLoose, __privateGet(this, _maxInflation));
|
|
378
|
+
__privateSet(reader, _parent, this);
|
|
379
|
+
return reader;
|
|
1231
380
|
}
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
return
|
|
381
|
+
// Read bytes
|
|
382
|
+
readBytes(length, loose) {
|
|
383
|
+
let bytes = __privateMethod(this, _Reader_instances, peekBytes_fn).call(this, 0, length, !!loose);
|
|
384
|
+
__privateMethod(this, _Reader_instances, incrementBytesRead_fn).call(this, length);
|
|
385
|
+
__privateSet(this, _offset, __privateGet(this, _offset) + bytes.length);
|
|
386
|
+
return bytes.slice(0, length);
|
|
1238
387
|
}
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
* @private
|
|
1243
|
-
*/
|
|
1244
|
-
constructor(guard, name, inputs) {
|
|
1245
|
-
super(guard, "struct", name, inputs);
|
|
1246
|
-
Object.defineProperty(this, internal, { value: StructFragmentInternal });
|
|
388
|
+
// Read a numeric values
|
|
389
|
+
readValue() {
|
|
390
|
+
return toBigInt(this.readBytes(WordSize));
|
|
1247
391
|
}
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
*/
|
|
1251
|
-
format() {
|
|
1252
|
-
throw new Error("@TODO");
|
|
392
|
+
readIndex() {
|
|
393
|
+
return toNumber(this.readBytes(WordSize));
|
|
1253
394
|
}
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
395
|
+
};
|
|
396
|
+
_data2 = new WeakMap();
|
|
397
|
+
_offset = new WeakMap();
|
|
398
|
+
_bytesRead = new WeakMap();
|
|
399
|
+
_parent = new WeakMap();
|
|
400
|
+
_maxInflation = new WeakMap();
|
|
401
|
+
_Reader_instances = new WeakSet();
|
|
402
|
+
incrementBytesRead_fn = function(count) {
|
|
403
|
+
var _a;
|
|
404
|
+
if (__privateGet(this, _parent)) {
|
|
405
|
+
return __privateMethod(_a = __privateGet(this, _parent), _Reader_instances, incrementBytesRead_fn).call(_a, count);
|
|
406
|
+
}
|
|
407
|
+
__privateSet(this, _bytesRead, __privateGet(this, _bytesRead) + count);
|
|
408
|
+
assert(__privateGet(this, _maxInflation) < 1 || __privateGet(this, _bytesRead) <= __privateGet(this, _maxInflation) * this.dataLength, `compressed ABI data exceeds inflation ratio of ${__privateGet(this, _maxInflation)} ( see: https://github.com/ethers-io/ethers.js/issues/4537 )`, "BUFFER_OVERRUN", {
|
|
409
|
+
buffer: getBytesCopy(__privateGet(this, _data2)),
|
|
410
|
+
offset: __privateGet(this, _offset),
|
|
411
|
+
length: count,
|
|
412
|
+
info: {
|
|
413
|
+
bytesRead: __privateGet(this, _bytesRead),
|
|
414
|
+
dataLength: this.dataLength
|
|
415
|
+
}
|
|
416
|
+
});
|
|
417
|
+
};
|
|
418
|
+
peekBytes_fn = function(offset, length, loose) {
|
|
419
|
+
let alignedLength = Math.ceil(length / WordSize) * WordSize;
|
|
420
|
+
if (__privateGet(this, _offset) + alignedLength > __privateGet(this, _data2).length) {
|
|
421
|
+
if (this.allowLoose && loose && __privateGet(this, _offset) + length <= __privateGet(this, _data2).length) {
|
|
422
|
+
alignedLength = length;
|
|
423
|
+
} else {
|
|
424
|
+
assert(false, "data out-of-bounds", "BUFFER_OVERRUN", {
|
|
425
|
+
buffer: getBytesCopy(__privateGet(this, _data2)),
|
|
426
|
+
length: __privateGet(this, _data2).length,
|
|
427
|
+
offset: __privateGet(this, _offset) + alignedLength
|
|
428
|
+
});
|
|
1269
429
|
}
|
|
1270
|
-
return new StructFragment(_guard, obj.name, obj.inputs ? obj.inputs.map(ParamType.from) : []);
|
|
1271
430
|
}
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
* **StructFragment**.
|
|
1276
|
-
*/
|
|
1277
|
-
static isFragment(value) {
|
|
1278
|
-
return value && value[internal] === StructFragmentInternal;
|
|
1279
|
-
}
|
|
1280
|
-
}
|
|
431
|
+
return __privateGet(this, _data2).slice(__privateGet(this, _offset), __privateGet(this, _offset) + alignedLength);
|
|
432
|
+
};
|
|
433
|
+
let Reader = _Reader;
|
|
1281
434
|
export {
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
FunctionFragment,
|
|
1288
|
-
NamedFragment,
|
|
1289
|
-
ParamType,
|
|
1290
|
-
StructFragment
|
|
435
|
+
Coder,
|
|
436
|
+
Reader,
|
|
437
|
+
Result,
|
|
438
|
+
WordSize,
|
|
439
|
+
Writer
|
|
1291
440
|
};
|
|
1292
441
|
//# sourceMappingURL=standards-sdk.es59.js.map
|