@hyperlane-xyz/sdk 44.0.2 → 45.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/dist/consts/multisigIsm.d.ts.map +1 -1
  2. package/dist/consts/multisigIsm.js +114 -718
  3. package/dist/consts/multisigIsm.js.map +1 -1
  4. package/dist/consts/testChains.d.ts.map +1 -1
  5. package/dist/consts/testChains.js +11 -6
  6. package/dist/consts/testChains.js.map +1 -1
  7. package/dist/core/adapters/SealevelCoreAdapter.d.ts +6 -0
  8. package/dist/core/adapters/SealevelCoreAdapter.d.ts.map +1 -1
  9. package/dist/core/adapters/SealevelCoreAdapter.js +20 -0
  10. package/dist/core/adapters/SealevelCoreAdapter.js.map +1 -1
  11. package/dist/core/adapters/SealevelCoreAdapter.test.js +17 -0
  12. package/dist/core/adapters/SealevelCoreAdapter.test.js.map +1 -1
  13. package/dist/core/types.d.ts.map +1 -1
  14. package/dist/core/types.js +14 -1
  15. package/dist/core/types.js.map +1 -1
  16. package/dist/core/types.test.js +98 -1
  17. package/dist/core/types.test.js.map +1 -1
  18. package/dist/deploy/proxy.d.ts +1 -0
  19. package/dist/deploy/proxy.d.ts.map +1 -1
  20. package/dist/deploy/proxy.js +6 -0
  21. package/dist/deploy/proxy.js.map +1 -1
  22. package/dist/deploy/warp.d.ts.map +1 -1
  23. package/dist/deploy/warp.js +26 -41
  24. package/dist/deploy/warp.js.map +1 -1
  25. package/dist/gas/adapters/SealevelIgpAdapter.d.ts +3 -2
  26. package/dist/gas/adapters/SealevelIgpAdapter.d.ts.map +1 -1
  27. package/dist/gas/adapters/SealevelIgpAdapter.js +3 -2
  28. package/dist/gas/adapters/SealevelIgpAdapter.js.map +1 -1
  29. package/dist/index.d.ts +2 -2
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +2 -2
  32. package/dist/index.js.map +1 -1
  33. package/dist/ism/EvmIsmModule.d.ts.map +1 -1
  34. package/dist/ism/EvmIsmModule.js +5 -1
  35. package/dist/ism/EvmIsmModule.js.map +1 -1
  36. package/dist/ism/EvmIsmModule.test.js +109 -0
  37. package/dist/ism/EvmIsmModule.test.js.map +1 -1
  38. package/dist/ism/HyperlaneIsmFactory.d.ts +26 -6
  39. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  40. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +60 -0
  41. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
  42. package/dist/ism/HyperlaneIsmFactory.js +165 -34
  43. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  44. package/dist/ism/HyperlaneIsmFactory.test.js +33 -6
  45. package/dist/ism/HyperlaneIsmFactory.test.js.map +1 -1
  46. package/dist/ism/types.d.ts +18 -2
  47. package/dist/ism/types.d.ts.map +1 -1
  48. package/dist/ism/types.js +43 -3
  49. package/dist/ism/types.js.map +1 -1
  50. package/dist/ism/types.test.js +232 -56
  51. package/dist/ism/types.test.js.map +1 -1
  52. package/dist/ism/utils.d.ts.map +1 -1
  53. package/dist/ism/utils.js +13 -0
  54. package/dist/ism/utils.js.map +1 -1
  55. package/dist/ism/utils.test.js +43 -1
  56. package/dist/ism/utils.test.js.map +1 -1
  57. package/dist/metadata/ChainMetadataManager.d.ts +1 -0
  58. package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
  59. package/dist/metadata/ChainMetadataManager.js +1 -0
  60. package/dist/metadata/ChainMetadataManager.js.map +1 -1
  61. package/dist/metadata/ChainMetadataManager.test.js +14 -1
  62. package/dist/metadata/ChainMetadataManager.test.js.map +1 -1
  63. package/dist/metadata/ChainMetadataResolver.d.ts +1 -0
  64. package/dist/metadata/ChainMetadataResolver.d.ts.map +1 -1
  65. package/dist/metadata/ChainMetadataResolver.js +1 -0
  66. package/dist/metadata/ChainMetadataResolver.js.map +1 -1
  67. package/dist/metadata/ChainMetadataResolver.test.js +4 -0
  68. package/dist/metadata/ChainMetadataResolver.test.js.map +1 -1
  69. package/dist/metadata/agentConfig.d.ts +209 -93
  70. package/dist/metadata/agentConfig.d.ts.map +1 -1
  71. package/dist/metadata/agentConfig.js +106 -13
  72. package/dist/metadata/agentConfig.js.map +1 -1
  73. package/dist/metadata/agentConfig.test.js +277 -25
  74. package/dist/metadata/agentConfig.test.js.map +1 -1
  75. package/dist/metadata/chainMetadata.test.js +25 -0
  76. package/dist/metadata/chainMetadata.test.js.map +1 -1
  77. package/dist/metadata/chainMetadataTypes.d.ts +36 -0
  78. package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
  79. package/dist/metadata/chainMetadataTypes.js +26 -0
  80. package/dist/metadata/chainMetadataTypes.js.map +1 -1
  81. package/dist/providers/SeismicSigner.d.ts +4 -12
  82. package/dist/providers/SeismicSigner.d.ts.map +1 -1
  83. package/dist/providers/SeismicSigner.js +84 -35
  84. package/dist/providers/SeismicSigner.js.map +1 -1
  85. package/dist/providers/SeismicSigner.test.d.ts +2 -0
  86. package/dist/providers/SeismicSigner.test.d.ts.map +1 -0
  87. package/dist/providers/SeismicSigner.test.js +160 -0
  88. package/dist/providers/SeismicSigner.test.js.map +1 -0
  89. package/dist/providers/SmartProvider/SmartProvider.d.ts +0 -4
  90. package/dist/providers/SmartProvider/SmartProvider.d.ts.map +1 -1
  91. package/dist/providers/SmartProvider/SmartProvider.emptyResponse.test.d.ts +2 -0
  92. package/dist/providers/SmartProvider/SmartProvider.emptyResponse.test.d.ts.map +1 -0
  93. package/dist/providers/SmartProvider/SmartProvider.emptyResponse.test.js +164 -0
  94. package/dist/providers/SmartProvider/SmartProvider.emptyResponse.test.js.map +1 -0
  95. package/dist/providers/SmartProvider/SmartProvider.js +20 -61
  96. package/dist/providers/SmartProvider/SmartProvider.js.map +1 -1
  97. package/dist/providers/SmartProvider/SmartProvider.test.js +159 -0
  98. package/dist/providers/SmartProvider/SmartProvider.test.js.map +1 -1
  99. package/dist/providers/SmartProvider/jsonRpcError.d.ts +7 -0
  100. package/dist/providers/SmartProvider/jsonRpcError.d.ts.map +1 -0
  101. package/dist/providers/SmartProvider/jsonRpcError.js +67 -0
  102. package/dist/providers/SmartProvider/jsonRpcError.js.map +1 -0
  103. package/dist/providers/SmartProvider/types.d.ts +1 -0
  104. package/dist/providers/SmartProvider/types.d.ts.map +1 -1
  105. package/dist/providers/builders/ethersV5.d.ts +0 -1
  106. package/dist/providers/builders/ethersV5.d.ts.map +1 -1
  107. package/dist/providers/builders/ethersV5.js +19 -5
  108. package/dist/providers/builders/ethersV5.js.map +1 -1
  109. package/dist/providers/builders/ethersV5.test.d.ts +2 -0
  110. package/dist/providers/builders/ethersV5.test.d.ts.map +1 -0
  111. package/dist/providers/builders/ethersV5.test.js +77 -0
  112. package/dist/providers/builders/ethersV5.test.js.map +1 -0
  113. package/dist/providers/builders/radix.browser.d.ts +1 -0
  114. package/dist/providers/builders/radix.browser.d.ts.map +1 -1
  115. package/dist/providers/builders/radix.browser.js +1 -0
  116. package/dist/providers/builders/radix.browser.js.map +1 -1
  117. package/dist/providers/builders/radix.d.ts.map +1 -1
  118. package/dist/providers/builders/radix.gateway.test.d.ts +2 -0
  119. package/dist/providers/builders/radix.gateway.test.d.ts.map +1 -0
  120. package/dist/providers/builders/radix.gateway.test.js +39 -0
  121. package/dist/providers/builders/radix.gateway.test.js.map +1 -0
  122. package/dist/providers/builders/radix.js +1 -0
  123. package/dist/providers/builders/radix.js.map +1 -1
  124. package/dist/providers/builders/radix.test.js +1 -0
  125. package/dist/providers/builders/radix.test.js.map +1 -1
  126. package/dist/providers/providerBuilders.d.ts +1 -1
  127. package/dist/providers/providerBuilders.d.ts.map +1 -1
  128. package/dist/providers/providerBuilders.js +1 -1
  129. package/dist/providers/providerBuilders.js.map +1 -1
  130. package/dist/rpc/evm/EvmEventLogsReader.hardhat-test.js +60 -8
  131. package/dist/rpc/evm/EvmEventLogsReader.hardhat-test.js.map +1 -1
  132. package/dist/test/errors.d.ts +21 -0
  133. package/dist/test/errors.d.ts.map +1 -1
  134. package/dist/test/errors.js +25 -0
  135. package/dist/test/errors.js.map +1 -1
  136. package/dist/timelock/evm/EvmTimelockReader.hardhat-test.js +92 -7
  137. package/dist/timelock/evm/EvmTimelockReader.hardhat-test.js.map +1 -1
  138. package/dist/timelock/evm/errors.js +1 -1
  139. package/dist/timelock/evm/errors.js.map +1 -1
  140. package/dist/token/EvmWarpRouteReader.d.ts +26 -0
  141. package/dist/token/EvmWarpRouteReader.d.ts.map +1 -1
  142. package/dist/token/EvmWarpRouteReader.hardhat-test.js +28 -3
  143. package/dist/token/EvmWarpRouteReader.hardhat-test.js.map +1 -1
  144. package/dist/token/EvmWarpRouteReader.js +137 -41
  145. package/dist/token/EvmWarpRouteReader.js.map +1 -1
  146. package/dist/token/EvmWarpRouteReader.test.js +381 -3
  147. package/dist/token/EvmWarpRouteReader.test.js.map +1 -1
  148. package/dist/token/types.d.ts +1 -1
  149. package/dist/token/warpCheck.d.ts +1 -0
  150. package/dist/token/warpCheck.d.ts.map +1 -1
  151. package/dist/token/warpCheck.js +25 -2
  152. package/dist/token/warpCheck.js.map +1 -1
  153. package/dist/token/warpCheck.test.js +119 -0
  154. package/dist/token/warpCheck.test.js.map +1 -1
  155. package/dist/utils/contract.d.ts +32 -0
  156. package/dist/utils/contract.d.ts.map +1 -1
  157. package/dist/utils/contract.js +90 -3
  158. package/dist/utils/contract.js.map +1 -1
  159. package/dist/utils/contract.test.js +402 -2
  160. package/dist/utils/contract.test.js.map +1 -1
  161. package/dist/utils/contract.transport.test.d.ts +2 -0
  162. package/dist/utils/contract.transport.test.d.ts.map +1 -0
  163. package/dist/utils/contract.transport.test.js +145 -0
  164. package/dist/utils/contract.transport.test.js.map +1 -0
  165. package/dist/utils/ism.d.ts +12 -6
  166. package/dist/utils/ism.d.ts.map +1 -1
  167. package/dist/utils/ism.js +92 -41
  168. package/dist/utils/ism.js.map +1 -1
  169. package/dist/utils/ism.test.js +75 -2
  170. package/dist/utils/ism.test.js.map +1 -1
  171. package/package.json +29 -15
@@ -1,6 +1,12 @@
1
1
  import { compareVersions } from 'compare-versions';
2
2
  import { PackageVersioned__factory } from '@hyperlane-xyz/core';
3
3
  import { chunk, isNullish, rootLogger, strip0x, } from '@hyperlane-xyz/utils';
4
+ import { getNestedJsonRpcError } from '../providers/SmartProvider/jsonRpcError.js';
5
+ // Diamond fallbacks can use this custom error instead of empty revert data
6
+ // when no facet implements the requested selector. The value is the selector of
7
+ // FacetNotFound() (first 4 bytes of keccak256("FacetNotFound()")), which takes no
8
+ // arguments, so the revert data is exactly the selector.
9
+ const FACET_NOT_FOUND_REVERT_DATA = '0x800ab12c';
4
10
  /**
5
11
  * Returns true when the deployed contract version is already at or above the
6
12
  * target version.
@@ -47,6 +53,50 @@ export function isMissingSelectorCallException(error) {
47
53
  return true;
48
54
  return isMissingSelectorRevert(error);
49
55
  }
56
+ // EIP-1474 execution error
57
+ const EXECUTION_REVERTED_JSON_RPC_CODE = 3;
58
+ // Nethermind (before it adopted code 3) reports every VM failure as -32015
59
+ // "VM execution error." and names the failure in the string `data`
60
+ // ("revert", "err: revert (supplied gas N)", "err: OutOfGas ...").
61
+ const NETHERMIND_VM_EXECUTION_ERROR_JSON_RPC_CODE = -32015;
62
+ const NODE_REVERT_MESSAGE_PATTERN = /\brevert(ed)?\b/i;
63
+ /**
64
+ * True for EVM call return/revert data with no payload ('0x' or ''). Not
65
+ * isStorageEmpty, which also accepts '0x0' as an empty storage slot.
66
+ */
67
+ export function isReturnDataEmpty(data) {
68
+ return data === '0x' || data === '';
69
+ }
70
+ function nestedErrorReportsRevert(callException) {
71
+ const { code, message, data } = getNestedJsonRpcError(callException);
72
+ return (code === EXECUTION_REVERTED_JSON_RPC_CODE ||
73
+ (typeof message === 'string' &&
74
+ NODE_REVERT_MESSAGE_PATTERN.test(message)) ||
75
+ (code === NETHERMIND_VM_EXECUTION_ERROR_JSON_RPC_CODE &&
76
+ typeof data === 'string' &&
77
+ NODE_REVERT_MESSAGE_PATTERN.test(data)));
78
+ }
79
+ /**
80
+ * True for an ethers CALL_EXCEPTION produced by a call that executed and
81
+ * returned nothing: either ethers failed to decode an empty return (no nested
82
+ * error) or the node reported an execution revert without data.
83
+ *
84
+ * ethers wraps every eth_call failure without revert data as a CALL_EXCEPTION
85
+ * with data "0x", including transport failures (HTTP status errors, dropped
86
+ * connections, JSON-RPC errors such as "header not found"). Those carry the
87
+ * original error nested and must not be read as a missing selector. The
88
+ * formatted message also contains data="0x" for those wrapped failures, so
89
+ * the message fallback (for ethers/provider combinations that only expose
90
+ * empty return data there) applies only when there is no nested error. With a
91
+ * nested error, the call counts as a missing selector when the nested error
92
+ * reports a revert (JSON-RPC code 3, a revert message, or Nethermind's -32015
93
+ * with revert data), or when it reports empty data ("0x" or "") and carries
94
+ * neither a code nor a message. A nested error that pairs empty data with any
95
+ * other code (SERVER_ERROR, 429, -32000 "header not found") or with a
96
+ * non-revert message ("socket hang up", "timeout") is a transport failure.
97
+ * Failures that are not reverts (out of gas, invalid opcode) are not missing
98
+ * selectors.
99
+ */
50
100
  export function isMissingSelectorRevert(error) {
51
101
  const callException = findCallException(error);
52
102
  if (!callException)
@@ -57,12 +107,49 @@ export function isMissingSelectorRevert(error) {
57
107
  const data = typeof callException.data === 'string'
58
108
  ? callException.data
59
109
  : nestedError?.data;
60
- if (data === '0x')
110
+ // A diamond miss is a known "no such function" revert, so unlike empty data
111
+ // it needs no transport gating.
112
+ if (typeof data === 'string' &&
113
+ data.toLowerCase() === FACET_NOT_FOUND_REVERT_DATA) {
61
114
  return true;
115
+ }
116
+ const { code: nestedCode, message: nestedMessage, data: nestedData, } = getNestedJsonRpcError(callException);
117
+ if (isReturnDataEmpty(nestedData)) {
118
+ return (nestedErrorReportsRevert(callException) ||
119
+ (isNullish(nestedCode) && isNullish(nestedMessage)));
120
+ }
62
121
  // Some ethers/provider combinations only expose empty return data in the
63
122
  // formatted message.
64
- return (typeof callException.message === 'string' &&
65
- callException.message.includes('data="0x"'));
123
+ const hasEmptyData = isReturnDataEmpty(data) ||
124
+ (typeof callException.message === 'string' &&
125
+ callException.message.includes('data="0x"'));
126
+ if (!hasEmptyData)
127
+ return false;
128
+ if (isNullish(callException.error))
129
+ return true;
130
+ return nestedErrorReportsRevert(callException);
131
+ }
132
+ const REVERT_DATA_PATTERN = /^0x[0-9a-fA-F]+$/;
133
+ // Panic(uint256)
134
+ const PANIC_SELECTOR = '0x4e487b71';
135
+ /**
136
+ * True for a CALL_EXCEPTION whose revert data is a Panic(uint256). Unlike
137
+ * isMissingSelectorRevert, it treats the reverting probe as an answer rather
138
+ * than a failure to reach the contract.
139
+ */
140
+ export function isPanicRevert(error) {
141
+ const callException = findCallException(error);
142
+ if (!callException)
143
+ return false;
144
+ const nestedError = isRecord(callException.error)
145
+ ? callException.error
146
+ : undefined;
147
+ const data = typeof callException.data === 'string'
148
+ ? callException.data
149
+ : nestedError?.data;
150
+ return (typeof data === 'string' &&
151
+ REVERT_DATA_PATTERN.test(data) &&
152
+ data.toLowerCase().startsWith(PANIC_SELECTOR));
66
153
  }
67
154
  export function throwIfNotMissingSelector(error) {
68
155
  if (!isMissingSelectorCallException(error))
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/utils/contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/utils/contract.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,15 @@ import sinon from 'sinon';
3
3
  import { TestChainName } from '../consts/testChains.js';
4
4
  import { MultiProvider } from '../providers/MultiProvider.js';
5
5
  import { stubPackageVersion } from '../test/contractStubs.js';
6
- import { missingSelectorError, networkError, wrappedError, } from '../test/errors.js';
6
+ import { errorStringRevertError, ethersCallExceptionWithNestedError, lsp17NoExtensionError, missingSelectorError, networkError, panicRevertError, wrappedError, } from '../test/errors.js';
7
7
  import { randomAddress } from '../test/testUtils.js';
8
- import { LEGACY_PACKAGE_VERSION, fetchPackageVersion, isMissingSelectorCallException, isMissingSelectorRevert, } from './contract.js';
8
+ import { LEGACY_PACKAGE_VERSION, fetchPackageVersion, isMissingSelectorCallException, isMissingSelectorRevert, isPanicRevert, isReturnDataEmpty, } from './contract.js';
9
+ function facetNotFoundError() {
10
+ return Object.assign(new Error('call reverted with FacetNotFound()'), {
11
+ code: 'CALL_EXCEPTION',
12
+ data: '0x800ab12c',
13
+ });
14
+ }
9
15
  describe('contract utils', () => {
10
16
  describe('isMissingSelectorCallException', () => {
11
17
  it('matches empty call exceptions', () => {
@@ -17,6 +23,20 @@ describe('contract utils', () => {
17
23
  it('matches deeply wrapped empty call exceptions', () => {
18
24
  expect(isMissingSelectorCallException(wrappedError(wrappedError(missingSelectorError())))).to.equal(true);
19
25
  });
26
+ it('matches direct and wrapped diamond FacetNotFound reverts', () => {
27
+ expect(isMissingSelectorCallException(facetNotFoundError())).to.equal(true);
28
+ expect(isMissingSelectorCallException(wrappedError(facetNotFoundError()))).to.equal(true);
29
+ });
30
+ it('matches FacetNotFound revert data nested in the underlying error but not with trailing bytes', () => {
31
+ expect(isMissingSelectorCallException(Object.assign(new Error('call revert exception'), {
32
+ code: 'CALL_EXCEPTION',
33
+ error: { data: '0x800ab12c' },
34
+ }))).to.equal(true);
35
+ expect(isMissingSelectorCallException(Object.assign(new Error('call revert exception'), {
36
+ code: 'CALL_EXCEPTION',
37
+ data: `0x800ab12c${'00'.repeat(32)}`,
38
+ }))).to.equal(false);
39
+ });
20
40
  it('matches HyperlaneJsonRpcProvider empty responses', () => {
21
41
  expect(isMissingSelectorCallException(new Error('Invalid response from provider'))).to.equal(true);
22
42
  expect(isMissingSelectorRevert(new Error('Invalid response from provider'))).to.equal(false);
@@ -28,6 +48,386 @@ describe('contract utils', () => {
28
48
  expect(isMissingSelectorCallException(new Error('request failed with data="0x"'))).to.equal(false);
29
49
  });
30
50
  });
51
+ describe('isMissingSelectorCallException with nested ethers errors', () => {
52
+ const cases = [
53
+ {
54
+ name: 'JSON-RPC code 3 revert without data',
55
+ nested: Object.assign(new Error('execution reverted'), {
56
+ code: 3,
57
+ data: '0x',
58
+ }),
59
+ expected: true,
60
+ },
61
+ {
62
+ name: 'JSON-RPC -32000 execution reverted',
63
+ nested: Object.assign(new Error('execution reverted'), {
64
+ code: -32000,
65
+ }),
66
+ expected: true,
67
+ },
68
+ {
69
+ name: 'hardhat VM exception revert',
70
+ nested: Object.assign(new Error("VM Exception while processing transaction: reverted with reason string ''"), { code: -32603 }),
71
+ expected: true,
72
+ },
73
+ {
74
+ name: 'revert JSON body inside an HTTP error response (transient, like SmartProvider)',
75
+ nested: {
76
+ code: 'SERVER_ERROR',
77
+ message: 'processing response error',
78
+ body: '{"jsonrpc":"2.0","id":1,"error":{"code":3,"message":"x"}}',
79
+ },
80
+ expected: false,
81
+ },
82
+ {
83
+ name: 'HTTP 500 server error',
84
+ nested: {
85
+ code: 'SERVER_ERROR',
86
+ message: 'processing response error (body="Internal Server Error", responseText="Internal Server Error", requestBody="{}", requestMethod="POST", url="http://x", code=SERVER_ERROR, version=web/5.8.0)',
87
+ body: 'Internal Server Error',
88
+ status: 500,
89
+ },
90
+ expected: false,
91
+ },
92
+ {
93
+ name: 'JSON-RPC -32000 header not found',
94
+ nested: Object.assign(new Error('header not found'), { code: -32000 }),
95
+ expected: false,
96
+ },
97
+ {
98
+ name: 'connection reset (missing response)',
99
+ nested: {
100
+ code: 'SERVER_ERROR',
101
+ message: 'missing response (requestBody="{}", requestMethod="POST", serverError={"code":"ECONNRESET"}, url="http://x", code=SERVER_ERROR, version=web/5.8.0)',
102
+ },
103
+ expected: false,
104
+ },
105
+ {
106
+ name: 'request timeout',
107
+ nested: {
108
+ code: 'TIMEOUT',
109
+ message: 'timeout (requestBody="{}", timeout=120000)',
110
+ },
111
+ expected: false,
112
+ },
113
+ {
114
+ name: 'HTTP 429 rate limit',
115
+ nested: {
116
+ code: 'SERVER_ERROR',
117
+ message: 'bad response (status=429, headers={}, body="Too Many Requests")',
118
+ status: 429,
119
+ },
120
+ expected: false,
121
+ },
122
+ {
123
+ name: 'JSON-RPC rate limit error',
124
+ nested: Object.assign(new Error('rate limit exceeded'), {
125
+ code: -32005,
126
+ }),
127
+ expected: false,
128
+ },
129
+ {
130
+ name: 'nested data 0x with header not found',
131
+ nested: Object.assign(new Error('header not found'), {
132
+ code: -32000,
133
+ data: '0x',
134
+ }),
135
+ expected: false,
136
+ },
137
+ {
138
+ name: 'nested empty-string data with HTTP 429',
139
+ nested: {
140
+ code: 'SERVER_ERROR',
141
+ message: 'bad response (status=429, headers={}, body="Too Many Requests")',
142
+ status: 429,
143
+ data: '',
144
+ },
145
+ expected: false,
146
+ },
147
+ {
148
+ name: 'nested data 0x with an HTTP 500 body',
149
+ nested: {
150
+ code: 'SERVER_ERROR',
151
+ message: 'processing response error',
152
+ body: 'Internal Server Error',
153
+ status: 500,
154
+ data: '0x',
155
+ },
156
+ expected: false,
157
+ },
158
+ {
159
+ name: 'nested data 0x with JSON-RPC code 3',
160
+ nested: Object.assign(new Error('execution reverted'), {
161
+ code: 3,
162
+ data: '0x',
163
+ }),
164
+ expected: true,
165
+ },
166
+ // Captured from https://rpc.fuse.io (Nethermind 1.29.0) for an unknown
167
+ // selector sent to a deployed Mailbox.
168
+ {
169
+ name: 'Nethermind -32015 revert with a supplied-gas data string',
170
+ nested: {
171
+ error: {
172
+ code: -32015,
173
+ message: 'VM execution error.',
174
+ data: 'err: revert (supplied gas 20000000)',
175
+ },
176
+ },
177
+ expected: true,
178
+ },
179
+ // Captured from https://fuse.liquify.com (Nethermind 1.29.0).
180
+ {
181
+ name: 'Nethermind -32015 revert with a bare revert data string',
182
+ nested: {
183
+ error: {
184
+ code: -32015,
185
+ message: 'VM execution error.',
186
+ data: 'revert',
187
+ },
188
+ },
189
+ expected: true,
190
+ },
191
+ // Captured from https://rpc.fuse.io and https://fuse.liquify.com.
192
+ {
193
+ name: 'Nethermind -32015 out of gas',
194
+ nested: {
195
+ error: {
196
+ code: -32015,
197
+ message: 'VM execution error.',
198
+ data: 'err: OutOfGas (supplied gas 30000)',
199
+ },
200
+ },
201
+ expected: false,
202
+ },
203
+ // Captured from https://fuse.liquify.com for eth_call against code 0xfe.
204
+ {
205
+ name: 'Nethermind -32015 invalid instruction',
206
+ nested: {
207
+ error: {
208
+ code: -32015,
209
+ message: 'VM execution error.',
210
+ data: 'err: BadInstruction (supplied gas 20000000)',
211
+ },
212
+ },
213
+ expected: false,
214
+ },
215
+ {
216
+ name: 'revert data string under a non-Nethermind code',
217
+ nested: {
218
+ error: { code: -32005, message: 'rate limit', data: 'revert' },
219
+ },
220
+ expected: false,
221
+ },
222
+ // Captured from https://ethereum.publicnode.com (Geth 1.17.1) for eth_call
223
+ // against code 0xfe and against an infinite loop with a 30000 gas cap.
224
+ {
225
+ name: 'Geth invalid opcode',
226
+ nested: Object.assign(new Error('invalid opcode: INVALID'), {
227
+ code: -32000,
228
+ }),
229
+ expected: false,
230
+ },
231
+ {
232
+ name: 'Geth out of gas',
233
+ nested: Object.assign(new Error('out of gas'), { code: -32000 }),
234
+ expected: false,
235
+ },
236
+ ];
237
+ for (const c of cases) {
238
+ it(`returns ${c.expected} for ${c.name}`, () => {
239
+ const error = ethersCallExceptionWithNestedError(c.nested);
240
+ expect(isMissingSelectorCallException(error)).to.equal(c.expected);
241
+ expect(isMissingSelectorRevert(error)).to.equal(c.expected);
242
+ expect(isMissingSelectorCallException(wrappedError(error))).to.equal(c.expected);
243
+ });
244
+ }
245
+ });
246
+ describe('isMissingSelectorRevert empty-data signals', () => {
247
+ const cases = [
248
+ {
249
+ name: 'nested error reporting data 0x without top-level data',
250
+ error: () => ({ code: 'CALL_EXCEPTION', error: { data: '0x' } }),
251
+ expected: true,
252
+ },
253
+ {
254
+ name: 'nested error data 0x alongside a non-revert message and no code',
255
+ error: () => ethersCallExceptionWithNestedError(Object.assign(new Error('boom'), { data: '0x' })),
256
+ expected: false,
257
+ },
258
+ {
259
+ name: 'nested transport message ECONNRESET with data 0x',
260
+ error: () => ({
261
+ code: 'CALL_EXCEPTION',
262
+ error: { message: 'ECONNRESET', data: '0x' },
263
+ }),
264
+ expected: false,
265
+ },
266
+ {
267
+ name: 'nested transport message socket hang up with empty-string data',
268
+ error: () => ({
269
+ code: 'CALL_EXCEPTION',
270
+ error: { message: 'socket hang up', data: '' },
271
+ }),
272
+ expected: false,
273
+ },
274
+ {
275
+ name: 'nested error reporting empty-string data',
276
+ error: () => ({ code: 'CALL_EXCEPTION', error: { data: '' } }),
277
+ expected: true,
278
+ },
279
+ {
280
+ name: 'nested error data 0x with SERVER_ERROR and no message',
281
+ error: () => ({
282
+ code: 'CALL_EXCEPTION',
283
+ error: { code: 'SERVER_ERROR', data: '0x' },
284
+ }),
285
+ expected: false,
286
+ },
287
+ {
288
+ name: 'nested error data "" with HTTP 429 status',
289
+ error: () => ({
290
+ code: 'CALL_EXCEPTION',
291
+ error: { code: 'SERVER_ERROR', status: 429, data: '' },
292
+ }),
293
+ expected: false,
294
+ },
295
+ {
296
+ name: 'top-level empty-string data without nested error',
297
+ error: () => ({ code: 'CALL_EXCEPTION', data: '' }),
298
+ expected: true,
299
+ },
300
+ {
301
+ name: 'top-level empty-string data with nested transport error',
302
+ error: () => ({
303
+ code: 'CALL_EXCEPTION',
304
+ data: '',
305
+ error: { code: 'SERVER_ERROR', status: 500 },
306
+ }),
307
+ expected: false,
308
+ },
309
+ {
310
+ name: 'message-only data="0x" without nested error',
311
+ error: () => ({
312
+ code: 'CALL_EXCEPTION',
313
+ message: 'call reverted with data="0x"',
314
+ }),
315
+ expected: true,
316
+ },
317
+ {
318
+ name: 'message data="0x" with nested transport error',
319
+ error: () => ethersCallExceptionWithNestedError(Object.assign(new Error('header not found'), { code: -32000 })),
320
+ expected: false,
321
+ },
322
+ {
323
+ name: 'message data="0x" with nested HTTP 500 and no top-level data',
324
+ error: () => ({
325
+ code: 'CALL_EXCEPTION',
326
+ message: 'call reverted with data="0x"',
327
+ error: { code: 'SERVER_ERROR', status: 500 },
328
+ }),
329
+ expected: false,
330
+ },
331
+ {
332
+ name: 'non-empty revert data',
333
+ error: () => ({ code: 'CALL_EXCEPTION', data: '0x08c379a0abcd' }),
334
+ expected: false,
335
+ },
336
+ ];
337
+ for (const c of cases) {
338
+ it(`returns ${c.expected} for ${c.name}`, () => {
339
+ expect(isMissingSelectorRevert(c.error())).to.equal(c.expected);
340
+ expect(isMissingSelectorCallException(c.error())).to.equal(c.expected);
341
+ });
342
+ }
343
+ });
344
+ describe('isReturnDataEmpty', () => {
345
+ const cases = [
346
+ { name: '0x', data: '0x', expected: true },
347
+ { name: 'empty string', data: '', expected: true },
348
+ { name: '0x0', data: '0x0', expected: false },
349
+ { name: 'undefined', data: undefined, expected: false },
350
+ { name: 'null', data: null, expected: false },
351
+ { name: 'a number', data: 0, expected: false },
352
+ { name: 'non-empty hex', data: '0x08c379a0', expected: false },
353
+ ];
354
+ for (const c of cases) {
355
+ it(`returns ${c.expected} for ${c.name}`, () => {
356
+ expect(isReturnDataEmpty(c.data)).to.equal(c.expected);
357
+ });
358
+ }
359
+ });
360
+ describe('isPanicRevert', () => {
361
+ const cases = [
362
+ { name: 'panic revert', error: panicRevertError, expected: true },
363
+ {
364
+ name: 'wrapped panic revert',
365
+ error: () => wrappedError(panicRevertError()),
366
+ expected: true,
367
+ },
368
+ {
369
+ name: 'panic data on nested error.data',
370
+ error: () => Object.assign(new Error('call revert exception'), {
371
+ code: 'CALL_EXCEPTION',
372
+ error: { data: `0x4e487b71${'0'.repeat(62)}11` },
373
+ }),
374
+ expected: true,
375
+ },
376
+ {
377
+ name: 'Error(string) revert',
378
+ error: errorStringRevertError,
379
+ expected: false,
380
+ },
381
+ {
382
+ name: 'LSP17 no-extension revert',
383
+ error: lsp17NoExtensionError,
384
+ expected: false,
385
+ },
386
+ {
387
+ name: 'empty data (missing selector)',
388
+ error: missingSelectorError,
389
+ expected: false,
390
+ },
391
+ { name: 'network error', error: networkError, expected: false },
392
+ {
393
+ name: 'empty provider response',
394
+ error: () => new Error('Invalid response from provider'),
395
+ expected: false,
396
+ },
397
+ {
398
+ name: 'data shorter than the Panic selector',
399
+ error: () => Object.assign(new Error('call revert exception'), {
400
+ code: 'CALL_EXCEPTION',
401
+ data: '0x4e487b',
402
+ }),
403
+ expected: false,
404
+ },
405
+ {
406
+ name: 'non-hex data',
407
+ error: () => Object.assign(new Error('call revert exception'), {
408
+ code: 'CALL_EXCEPTION',
409
+ data: '0x4e487b71zz',
410
+ }),
411
+ expected: false,
412
+ },
413
+ {
414
+ name: 'call exception without data',
415
+ error: () => Object.assign(new Error('call revert exception'), {
416
+ code: 'CALL_EXCEPTION',
417
+ }),
418
+ expected: false,
419
+ },
420
+ ];
421
+ for (const c of cases) {
422
+ it(`returns ${c.expected} for ${c.name}`, () => {
423
+ expect(isPanicRevert(c.error())).to.equal(c.expected);
424
+ });
425
+ }
426
+ it('is not a missing selector for data-carrying reverts', () => {
427
+ expect(isMissingSelectorRevert(panicRevertError())).to.equal(false);
428
+ expect(isMissingSelectorCallException(panicRevertError())).to.equal(false);
429
+ });
430
+ });
31
431
  describe('fetchPackageVersion', () => {
32
432
  let sandbox;
33
433
  beforeEach(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"contract.test.js","sourceRoot":"","sources":["../../src/utils/contract.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract.test.js","sourceRoot":"","sources":["../../src/utils/contract.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=contract.transport.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.transport.test.d.ts","sourceRoot":"","sources":["../../src/utils/contract.transport.test.ts"],"names":[],"mappings":""}