viem 2.55.15 → 2.55.16

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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # viem
2
2
 
3
+ ## 2.55.16
4
+
5
+ ### Patch Changes
6
+
7
+ - [#4997](https://github.com/wevm/viem/pull/4997) [`0c4f19a354255ec5e7e159228df36f9c8714ce0a`](https://github.com/wevm/viem/commit/0c4f19a354255ec5e7e159228df36f9c8714ce0a) Thanks [@Ghadi8](https://github.com/Ghadi8)! - Fixed `simulateCalls` asset discovery across reverting, state-dependent, malformed, and newly deployed tokens while pinning stable block tags and isolating balance probes.
8
+
9
+ - [#4990](https://github.com/wevm/viem/pull/4990) [`cd1d2d51849f78e20f09e4a26f4c0a20afa84bb4`](https://github.com/wevm/viem/commit/cd1d2d51849f78e20f09e4a26f4c0a20afa84bb4) Thanks [@SashaMIT](https://github.com/SashaMIT)! - Required EIP-4361 / RFC 3339 date-time strings and rejected invalid `time`.
10
+
3
11
  ## 2.55.15
4
12
 
5
13
  ### Patch Changes
@@ -2,16 +2,29 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.simulateCalls = simulateCalls;
4
4
  const AbiConstructor = require("ox/AbiConstructor");
5
+ const AbiEvent = require("ox/AbiEvent");
5
6
  const AbiFunction = require("ox/AbiFunction");
6
7
  const parseAccount_js_1 = require("../../accounts/utils/parseAccount.js");
7
8
  const address_js_1 = require("../../constants/address.js");
8
9
  const contracts_js_1 = require("../../constants/contracts.js");
9
10
  const base_js_1 = require("../../errors/base.js");
10
- const encodeFunctionData_js_1 = require("../../utils/abi/encodeFunctionData.js");
11
- const index_js_1 = require("../../utils/index.js");
12
- const createAccessList_js_1 = require("./createAccessList.js");
11
+ const contract_js_1 = require("../../errors/contract.js");
12
+ const node_js_1 = require("../../errors/node.js");
13
+ const pad_js_1 = require("../../utils/data/pad.js");
14
+ const fromHex_js_1 = require("../../utils/encoding/fromHex.js");
15
+ const call_js_1 = require("./call.js");
16
+ const getBlock_js_1 = require("./getBlock.js");
17
+ const getBlockNumber_js_1 = require("./getBlockNumber.js");
13
18
  const simulateBlocks_js_1 = require("./simulateBlocks.js");
14
19
  const getBalanceCode = '0x6080604052348015600e575f80fd5b5061016d8061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c8063f8b2cb4f1461002d575b5f80fd5b610047600480360381019061004291906100db565b61005d565b604051610054919061011e565b60405180910390f35b5f8173ffffffffffffffffffffffffffffffffffffffff16319050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6100aa82610081565b9050919050565b6100ba816100a0565b81146100c4575f80fd5b50565b5f813590506100d5816100b1565b92915050565b5f602082840312156100f0576100ef61007d565b5b5f6100fd848285016100c7565b91505092915050565b5f819050919050565b61011881610106565b82525050565b5f6020820190506101315f83018461010f565b9291505056fea26469706673582212203b9fe929fe995c7cf9887f0bdba8a36dd78e8b73f149b17d2d9ad7cd09d2dc6264736f6c634300081a0033';
20
+ const staticCallCode = '0x608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063fd00430c1461002d575b5f5ffd5b6100476004803603810190610042919061012b565b610049565b005b80825f375f5f825f865afa610060573d5f5f3e3d5ffd5b3d5f5f3e3d5ff35b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61009982610070565b9050919050565b6100a98161008f565b81146100b3575f5ffd5b50565b5f813590506100c4816100a0565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126100eb576100ea6100ca565b5b8235905067ffffffffffffffff811115610108576101076100ce565b5b602083019150836001820283011115610124576101236100d2565b5b9250929050565b5f5f5f6040848603121561014257610141610068565b5b5f61014f868287016100b6565b935050602084013567ffffffffffffffff8111156101705761016f61006c565b5b61017c868287016100d6565b9250925050925092509256fea2646970667358221220635ed99185cacf3f2acba6921f23687c969cec2bbaf5f9ad599f507e6e105e6964736f6c63430008230033';
21
+ const staticCallAddressBase = 0x00000000000000000000000000000000deadbeefn;
22
+ const transferEventSelector = AbiEvent.getSelector(AbiEvent.from('event Transfer(address indexed from, address indexed to, uint256 value)'));
23
+ const balanceOfFunction = AbiFunction.from('function balanceOf(address) returns (uint256)');
24
+ const decimalsFunction = AbiFunction.from('function decimals() returns (uint256)');
25
+ const tokenUriFunction = AbiFunction.from('function tokenURI(uint256) returns (string)');
26
+ const symbolFunction = AbiFunction.from('function symbol() returns (string)');
27
+ const staticCallFunction = AbiFunction.from('function query(address target, bytes data)');
15
28
  async function simulateCalls(client, parameters) {
16
29
  const { blockNumber, blockTag, calls, stateOverrides, traceAssetChanges, traceTransfers, validation, } = parameters;
17
30
  const account = parameters.account
@@ -28,150 +41,150 @@ async function simulateCalls(client, parameters) {
28
41
  ],
29
42
  })
30
43
  : undefined;
31
- const assetAddresses = traceAssetChanges
32
- ? await Promise.all(parameters.calls.map(async (call) => {
33
- if (!call.data && !call.abi)
34
- return;
35
- const { accessList } = await (0, createAccessList_js_1.createAccessList)(client, {
36
- account: account.address,
37
- ...call,
38
- data: call.abi ? (0, encodeFunctionData_js_1.encodeFunctionData)(call) : call.data,
39
- });
40
- return accessList.map(({ address, storageKeys }) => storageKeys.length > 0 ? address : null);
41
- })).then((x) => x.flat().filter(Boolean))
44
+ const blockTag_ = blockTag ?? client.experimental_blockTag ?? 'latest';
45
+ let baseBlockNumber = blockNumber;
46
+ if (traceAssetChanges &&
47
+ typeof baseBlockNumber !== 'bigint' &&
48
+ blockTag_ !== 'earliest' &&
49
+ blockTag_ !== 'pending') {
50
+ if (blockTag_ === 'latest')
51
+ baseBlockNumber = await (0, getBlockNumber_js_1.getBlockNumber)(client, { cacheTime: 0 });
52
+ else {
53
+ const block = await (0, getBlock_js_1.getBlock)(client, { blockTag: blockTag_ });
54
+ if (typeof block.number !== 'bigint')
55
+ throw new base_js_1.BaseError(`Block tag \`${blockTag_}\` did not resolve to a number.`);
56
+ baseBlockNumber = block.number;
57
+ }
58
+ }
59
+ const block_ = typeof baseBlockNumber === 'bigint'
60
+ ? { blockNumber: baseBlockNumber }
61
+ : { blockTag: blockTag_ };
62
+ const discovery = traceAssetChanges
63
+ ? await (0, simulateBlocks_js_1.simulateBlocks)(client, {
64
+ ...block_,
65
+ blocks: [
66
+ {
67
+ calls: calls.map((call) => ({
68
+ ...call,
69
+ from: account.address,
70
+ })),
71
+ stateOverrides,
72
+ },
73
+ ],
74
+ traceTransfers,
75
+ validation,
76
+ })
77
+ : undefined;
78
+ const assetAddresses = discovery
79
+ ? [
80
+ ...new Set([
81
+ ...tokensFromLogs(discovery[0].calls.flatMap((call) => call.logs ?? []), account.address),
82
+ ...parameters.calls.map((call) => call.to?.toLowerCase()),
83
+ ]),
84
+ ].filter((address) => Boolean(address) && address !== address_js_1.ethAddress && address !== address_js_1.zeroAddress)
42
85
  : [];
43
- const blocks = await (0, simulateBlocks_js_1.simulateBlocks)(client, {
44
- blockNumber,
45
- blockTag: blockTag,
46
- blocks: [
47
- ...(traceAssetChanges
48
- ? [
49
- {
50
- calls: [{ data: getBalanceData }],
51
- stateOverrides,
52
- },
53
- {
54
- calls: assetAddresses.map((address, i) => ({
55
- abi: [
56
- AbiFunction.from('function balanceOf(address) returns (uint256)'),
57
- ],
58
- functionName: 'balanceOf',
59
- args: [account.address],
60
- to: address,
61
- from: address_js_1.zeroAddress,
62
- nonce: i,
63
- })),
64
- stateOverrides: [
65
- {
66
- address: address_js_1.zeroAddress,
67
- nonce: 0,
68
- },
69
- ],
70
- },
71
- ]
72
- : []),
73
- {
74
- calls: [...calls, { to: address_js_1.zeroAddress }].map((call) => ({
75
- ...call,
76
- from: account?.address,
86
+ const staticCallAddress = getStaticCallAddress([
87
+ ...(account ? [account.address] : []),
88
+ ...assetAddresses,
89
+ ...(stateOverrides?.map(({ address }) => address) ?? []),
90
+ ]);
91
+ const staticCallStateOverrides = [
92
+ { address: staticCallAddress, code: staticCallCode },
93
+ ];
94
+ const [balanceCallsPre, blocks] = await Promise.all([
95
+ traceAssetChanges
96
+ ? Promise.all([
97
+ readBalance(client, {
98
+ account: account.address,
99
+ ...block_,
100
+ data: getBalanceData,
101
+ stateOverride: stateOverrides,
102
+ }),
103
+ ...assetAddresses.map((address) => readBalance(client, {
104
+ account: account.address,
105
+ address,
106
+ ...block_,
107
+ data: AbiFunction.encodeData(balanceOfFunction, [
108
+ account.address,
109
+ ]),
110
+ staticCallAddress,
111
+ stateOverride: stateOverrides,
77
112
  })),
78
- stateOverrides,
79
- },
80
- ...(traceAssetChanges
81
- ? [
82
- {
83
- calls: [{ data: getBalanceData }],
84
- },
85
- {
86
- calls: assetAddresses.map((address, i) => ({
87
- abi: [
88
- AbiFunction.from('function balanceOf(address) returns (uint256)'),
89
- ],
90
- functionName: 'balanceOf',
91
- args: [account.address],
92
- to: address,
93
- from: address_js_1.zeroAddress,
94
- nonce: i,
95
- })),
96
- stateOverrides: [
97
- {
98
- address: address_js_1.zeroAddress,
99
- nonce: 0,
100
- },
101
- ],
102
- },
103
- {
104
- calls: assetAddresses.map((address, i) => ({
105
- to: address,
106
- abi: [
107
- AbiFunction.from('function decimals() returns (uint256)'),
108
- ],
109
- functionName: 'decimals',
110
- from: address_js_1.zeroAddress,
111
- nonce: i,
112
- })),
113
- stateOverrides: [
114
- {
115
- address: address_js_1.zeroAddress,
116
- nonce: 0,
117
- },
118
- ],
119
- },
120
- {
121
- calls: assetAddresses.map((address, i) => ({
122
- to: address,
123
- abi: [
124
- AbiFunction.from('function tokenURI(uint256) returns (string)'),
125
- ],
126
- functionName: 'tokenURI',
127
- args: [0n],
128
- from: address_js_1.zeroAddress,
129
- nonce: i,
130
- })),
131
- stateOverrides: [
132
- {
133
- address: address_js_1.zeroAddress,
134
- nonce: 0,
135
- },
136
- ],
137
- },
138
- {
139
- calls: assetAddresses.map((address, i) => ({
140
- to: address,
141
- abi: [AbiFunction.from('function symbol() returns (string)')],
142
- functionName: 'symbol',
143
- from: address_js_1.zeroAddress,
144
- nonce: i,
145
- })),
146
- stateOverrides: [
147
- {
148
- address: address_js_1.zeroAddress,
149
- nonce: 0,
150
- },
151
- ],
152
- },
153
- ]
154
- : []),
155
- ],
156
- traceTransfers,
157
- validation,
158
- });
159
- const block_results = traceAssetChanges ? blocks[2] : blocks[0];
160
- const [block_ethPre, block_assetsPre, , block_ethPost, block_assetsPost, block_decimals, block_tokenURI, block_symbols,] = traceAssetChanges ? blocks : [];
113
+ ])
114
+ : [],
115
+ (0, simulateBlocks_js_1.simulateBlocks)(client, {
116
+ ...block_,
117
+ blocks: [
118
+ {
119
+ calls: [...calls, { to: address_js_1.zeroAddress }].map((call) => ({
120
+ ...call,
121
+ from: account?.address,
122
+ })),
123
+ stateOverrides,
124
+ },
125
+ ...(traceAssetChanges
126
+ ? [
127
+ {
128
+ calls: [{ data: getBalanceData }],
129
+ },
130
+ {
131
+ calls: assetAddresses.map((address) => ({
132
+ to: staticCallAddress,
133
+ data: encodeStaticCall(address, AbiFunction.encodeData(balanceOfFunction, [
134
+ account.address,
135
+ ])),
136
+ })),
137
+ stateOverrides: staticCallStateOverrides,
138
+ },
139
+ {
140
+ calls: assetAddresses.map((address) => ({
141
+ to: staticCallAddress,
142
+ data: encodeStaticCall(address, AbiFunction.encodeData(decimalsFunction)),
143
+ })),
144
+ stateOverrides: staticCallStateOverrides,
145
+ },
146
+ {
147
+ calls: assetAddresses.map((address) => ({
148
+ to: staticCallAddress,
149
+ data: encodeStaticCall(address, AbiFunction.encodeData(tokenUriFunction, [0n])),
150
+ })),
151
+ stateOverrides: staticCallStateOverrides,
152
+ },
153
+ {
154
+ calls: assetAddresses.map((address) => ({
155
+ to: staticCallAddress,
156
+ data: encodeStaticCall(address, AbiFunction.encodeData(symbolFunction)),
157
+ })),
158
+ stateOverrides: staticCallStateOverrides,
159
+ },
160
+ ]
161
+ : []),
162
+ ],
163
+ traceTransfers,
164
+ validation,
165
+ }),
166
+ ]);
167
+ const block_results = blocks[0];
168
+ const [block_ethPost, block_assetsPost, block_decimals, block_tokenURI, block_symbols,] = traceAssetChanges ? blocks.slice(1) : [];
161
169
  const { calls: block_calls, ...block } = block_results;
162
- const results = block_calls.slice(0, -1) ?? [];
163
- const ethPre = block_ethPre?.calls ?? [];
164
- const assetsPre = block_assetsPre?.calls ?? [];
165
- const balancesPre = [...ethPre, ...assetsPre].map((call) => call.status === 'success' ? (0, index_js_1.hexToBigInt)(call.data) : null);
170
+ const results = block_calls.slice(0, -1);
171
+ const balancesPre = balanceCallsPre.map((call) => isBalance(call) ? (0, fromHex_js_1.hexToBigInt)(call.data) : null);
166
172
  const ethPost = block_ethPost?.calls ?? [];
167
173
  const assetsPost = block_assetsPost?.calls ?? [];
168
- const balancesPost = [...ethPost, ...assetsPost].map((call) => call.status === 'success' ? (0, index_js_1.hexToBigInt)(call.data) : null);
169
- const decimals = (block_decimals?.calls ?? []).map((x) => x.status === 'success' ? x.result : null);
170
- const symbols = (block_symbols?.calls ?? []).map((x) => x.status === 'success' ? x.result : null);
171
- const tokenURI = (block_tokenURI?.calls ?? []).map((x) => x.status === 'success' ? x.result : null);
174
+ const balanceCallsPost = [...ethPost, ...assetsPost];
175
+ const balancesPost = balanceCallsPost.map((call) => isBalance(call) ? (0, fromHex_js_1.hexToBigInt)(call.data) : null);
176
+ const decimals = (block_decimals?.calls ?? []).map((call) => decodeAssetResult(call, decimalsFunction));
177
+ const symbols = (block_symbols?.calls ?? []).map((call) => decodeAssetResult(call, symbolFunction));
178
+ const tokenURI = (block_tokenURI?.calls ?? []).map((call) => decodeAssetResult(call, tokenUriFunction));
172
179
  const changes = [];
173
180
  for (const [i, balancePost] of balancesPost.entries()) {
174
- const balancePre = balancesPre[i];
181
+ const balancePre_ = balancesPre[i];
182
+ const preCall = balanceCallsPre[i];
183
+ const balancePre = typeof balancePre_ === 'bigint'
184
+ ? balancePre_
185
+ : i > 0 && preCall?.status === 'success' && preCall.data === '0x'
186
+ ? 0n
187
+ : null;
175
188
  if (typeof balancePost !== 'bigint')
176
189
  continue;
177
190
  if (typeof balancePre !== 'bigint')
@@ -192,8 +205,6 @@ async function simulateCalls(client, parameters) {
192
205
  symbol: symbol_ ?? undefined,
193
206
  };
194
207
  })();
195
- if (changes.some((change) => change.token.address === token.address))
196
- continue;
197
208
  changes.push({
198
209
  token,
199
210
  value: {
@@ -209,4 +220,64 @@ async function simulateCalls(client, parameters) {
209
220
  results,
210
221
  };
211
222
  }
223
+ function encodeStaticCall(address, data) {
224
+ return AbiFunction.encodeData(staticCallFunction, [address, data]);
225
+ }
226
+ function tokensFromLogs(logs, account) {
227
+ const account_ = (0, pad_js_1.pad)(account.toLowerCase(), { size: 32 });
228
+ return logs
229
+ .filter((log) => {
230
+ if (log.topics[0]?.toLowerCase() !== transferEventSelector)
231
+ return false;
232
+ if (log.address.toLowerCase() === address_js_1.ethAddress)
233
+ return false;
234
+ return (log.topics[1]?.toLowerCase() === account_ ||
235
+ log.topics[2]?.toLowerCase() === account_);
236
+ })
237
+ .map((log) => log.address.toLowerCase());
238
+ }
239
+ function isBalance(call) {
240
+ return call.status === 'success' && /^0x[\da-f]{64}$/i.test(call.data);
241
+ }
242
+ function decodeAssetResult(call, abiFunction) {
243
+ if (call.status === 'failure' || call.data === '0x')
244
+ return null;
245
+ try {
246
+ return AbiFunction.decodeResult(abiFunction, call.data);
247
+ }
248
+ catch {
249
+ return null;
250
+ }
251
+ }
252
+ async function readBalance(client, parameters) {
253
+ const { account, address, blockNumber, blockTag, data, staticCallAddress, stateOverride, } = parameters;
254
+ try {
255
+ const result = await (0, call_js_1.call)({ ...client, ccipRead: false }, {
256
+ account: address ? address_js_1.zeroAddress : account,
257
+ data: address ? encodeStaticCall(address, data) : data,
258
+ stateOverride: address && staticCallAddress
259
+ ? [
260
+ ...(stateOverride ?? []),
261
+ { address: staticCallAddress, code: staticCallCode },
262
+ ]
263
+ : stateOverride,
264
+ ...(address ? { to: staticCallAddress } : {}),
265
+ ...(typeof blockNumber === 'bigint' ? { blockNumber } : { blockTag }),
266
+ });
267
+ return { data: result.data ?? '0x', status: 'success' };
268
+ }
269
+ catch (error) {
270
+ if (!(error instanceof contract_js_1.CallExecutionError) ||
271
+ !(error.cause instanceof node_js_1.ExecutionRevertedError))
272
+ throw error;
273
+ return { data: '0x', status: 'failure' };
274
+ }
275
+ }
276
+ function getStaticCallAddress(addresses) {
277
+ const occupied = new Set(addresses.map((address) => address.toLowerCase()));
278
+ let value = staticCallAddressBase;
279
+ while (occupied.has(`0x${value.toString(16).padStart(40, '0')}`))
280
+ value++;
281
+ return `0x${value.toString(16).padStart(40, '0')}`;
282
+ }
212
283
  //# sourceMappingURL=simulateCalls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simulateCalls.js","sourceRoot":"","sources":["../../../actions/public/simulateCalls.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simulateCalls.js","sourceRoot":"","sources":["../../../actions/public/simulateCalls.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.version = void 0;
4
- exports.version = '2.55.15';
4
+ exports.version = '2.55.16';
5
5
  //# sourceMappingURL=version.js.map
@@ -1,6 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseSiweMessage = parseSiweMessage;
4
+ const siweDateTimeRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})$/;
5
+ function isValidSiweDateTime(value) {
6
+ if (!siweDateTimeRegex.test(value))
7
+ return false;
8
+ return !Number.isNaN(new Date(value).getTime());
9
+ }
10
+ function parseSiweDateTime(value) {
11
+ if (!isValidSiweDateTime(value))
12
+ return new Date(Number.NaN);
13
+ return new Date(value);
14
+ }
4
15
  function parseSiweMessage(message) {
5
16
  const { scheme, statement, ...prefix } = (message.match(prefixRegex)
6
17
  ?.groups ?? {});
@@ -10,9 +21,11 @@ function parseSiweMessage(message) {
10
21
  ...prefix,
11
22
  ...suffix,
12
23
  ...(chainId ? { chainId: Number(chainId) } : {}),
13
- ...(expirationTime ? { expirationTime: new Date(expirationTime) } : {}),
14
- ...(issuedAt ? { issuedAt: new Date(issuedAt) } : {}),
15
- ...(notBefore ? { notBefore: new Date(notBefore) } : {}),
24
+ ...(expirationTime
25
+ ? { expirationTime: parseSiweDateTime(expirationTime) }
26
+ : {}),
27
+ ...(issuedAt ? { issuedAt: parseSiweDateTime(issuedAt) } : {}),
28
+ ...(notBefore ? { notBefore: parseSiweDateTime(notBefore) } : {}),
16
29
  ...(requestId ? { requestId } : {}),
17
30
  ...(resources ? { resources } : {}),
18
31
  ...(scheme ? { scheme } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"parseSiweMessage.js","sourceRoot":"","sources":["../../../utils/siwe/parseSiweMessage.ts"],"names":[],"mappings":";;AAYA,4CAkCC;AAlCD,SAAgB,gBAAgB,CAC9B,OAAe;IAEf,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;QAClE,EAAE,MAAM,IAAI,EAAE,CAKf,CAAA;IACD,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,GAC1E,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,EAAE,CASxC,CAAA;IACH,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACxE,OAAO;QACL,GAAG,MAAM;QACT,GAAG,MAAM;QACT,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpC,CAAA;AACH,CAAC;AAGD,MAAM,WAAW,GACf,0MAA0M,CAAA;AAG5M,MAAM,WAAW,GACf,uQAAuQ,CAAA"}
1
+ {"version":3,"file":"parseSiweMessage.js","sourceRoot":"","sources":["../../../utils/siwe/parseSiweMessage.ts"],"names":[],"mappings":";;AA2BA,4CAoCC;AA1DD,MAAM,iBAAiB,GACrB,kEAAkE,CAAA;AAEpE,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAChD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IAGtC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC5D,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;AACxB,CAAC;AASD,SAAgB,gBAAgB,CAC9B,OAAe;IAEf,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC;QAClE,EAAE,MAAM,IAAI,EAAE,CAKf,CAAA;IACD,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,GAC1E,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,EAAE,CASxC,CAAA;IACH,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACxE,OAAO;QACL,GAAG,MAAM;QACT,GAAG,MAAM;QACT,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,cAAc;YAChB,CAAC,CAAC,EAAE,cAAc,EAAE,iBAAiB,CAAC,cAAc,CAAC,EAAE;YACvD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpC,CAAA;AACH,CAAC;AAGD,MAAM,WAAW,GACf,0MAA0M,CAAA;AAG5M,MAAM,WAAW,GACf,uQAAuQ,CAAA"}
@@ -11,10 +11,20 @@ function validateSiweMessage(parameters) {
11
11
  return false;
12
12
  if (scheme && message.scheme !== scheme)
13
13
  return false;
14
- if (message.expirationTime && time >= message.expirationTime)
15
- return false;
16
- if (message.notBefore && time < message.notBefore)
14
+ if (Number.isNaN(time.getTime()))
17
15
  return false;
16
+ if (message.expirationTime) {
17
+ if (Number.isNaN(message.expirationTime.getTime()))
18
+ return false;
19
+ if (time >= message.expirationTime)
20
+ return false;
21
+ }
22
+ if (message.notBefore) {
23
+ if (Number.isNaN(message.notBefore.getTime()))
24
+ return false;
25
+ if (time < message.notBefore)
26
+ return false;
27
+ }
18
28
  try {
19
29
  if (!message.address)
20
30
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"validateSiweMessage.js","sourceRoot":"","sources":["../../../utils/siwe/validateSiweMessage.ts"],"names":[],"mappings":";;AA2CA,kDA4BC;AApED,0DAAmD;AACnD,oEAA6D;AAuC7D,SAAgB,mBAAmB,CACjC,UAAyC;IAEzC,MAAM,EACJ,OAAO,EACP,MAAM,EACN,OAAO,EACP,KAAK,EACL,MAAM,EACN,IAAI,GAAG,IAAI,IAAI,EAAE,GAClB,GAAG,UAAU,CAAA;IAEd,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAA;IACrD,IAAI,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IAClD,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAA;IAErD,IAAI,OAAO,CAAC,cAAc,IAAI,IAAI,IAAI,OAAO,CAAC,cAAc;QAAE,OAAO,KAAK,CAAA;IAC1E,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,GAAG,OAAO,CAAC,SAAS;QAAE,OAAO,KAAK,CAAA;IAE/D,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,KAAK,CAAA;QAClC,IAAI,CAAC,IAAA,wBAAS,EAAC,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAAE,OAAO,KAAK,CAAA;QAChE,IAAI,OAAO,IAAI,CAAC,IAAA,kCAAc,EAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;YAAE,OAAO,KAAK,CAAA;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"validateSiweMessage.js","sourceRoot":"","sources":["../../../utils/siwe/validateSiweMessage.ts"],"names":[],"mappings":";;AA2CA,kDAuCC;AA/ED,0DAAmD;AACnD,oEAA6D;AAuC7D,SAAgB,mBAAmB,CACjC,UAAyC;IAEzC,MAAM,EACJ,OAAO,EACP,MAAM,EACN,OAAO,EACP,KAAK,EACL,MAAM,EACN,IAAI,GAAG,IAAI,IAAI,EAAE,GAClB,GAAG,UAAU,CAAA;IAEd,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAA;IACrD,IAAI,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IAClD,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAA;IAGrD,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,KAAK,CAAA;IAI9C,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,KAAK,CAAA;QAChE,IAAI,IAAI,IAAI,OAAO,CAAC,cAAc;YAAE,OAAO,KAAK,CAAA;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,KAAK,CAAA;QAC3D,IAAI,IAAI,GAAG,OAAO,CAAC,SAAS;YAAE,OAAO,KAAK,CAAA;IAC5C,CAAC;IAED,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,KAAK,CAAA;QAClC,IAAI,CAAC,IAAA,wBAAS,EAAC,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAAE,OAAO,KAAK,CAAA;QAChE,IAAI,OAAO,IAAI,CAAC,IAAA,kCAAc,EAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;YAAE,OAAO,KAAK,CAAA;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}