@metamask-previews/eth-json-rpc-middleware 24.0.2-preview-8bfa290fb → 25.0.0-preview-0a30e47

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 (237) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/dist/{block-cache.d.mts → block-cache.d.ts} +4 -4
  3. package/dist/block-cache.d.ts.map +1 -0
  4. package/dist/{block-cache.mjs → block-cache.js} +9 -22
  5. package/dist/block-cache.js.map +1 -0
  6. package/dist/{block-ref-rewrite.d.cts → block-ref-rewrite.d.ts} +4 -4
  7. package/dist/block-ref-rewrite.d.ts.map +1 -0
  8. package/dist/{block-ref-rewrite.mjs → block-ref-rewrite.js} +2 -2
  9. package/dist/block-ref-rewrite.js.map +1 -0
  10. package/dist/{block-ref.d.cts → block-ref.d.ts} +5 -5
  11. package/dist/block-ref.d.ts.map +1 -0
  12. package/dist/{block-ref.mjs → block-ref.js} +4 -4
  13. package/dist/block-ref.js.map +1 -0
  14. package/dist/{block-tracker-inspector.d.cts → block-tracker-inspector.d.ts} +4 -4
  15. package/dist/block-tracker-inspector.d.ts.map +1 -0
  16. package/dist/{block-tracker-inspector.mjs → block-tracker-inspector.js} +3 -3
  17. package/dist/block-tracker-inspector.js.map +1 -0
  18. package/dist/{fetch.d.mts → fetch.d.ts} +4 -4
  19. package/dist/fetch.d.ts.map +1 -0
  20. package/dist/{fetch.mjs → fetch.js} +2 -2
  21. package/dist/fetch.js.map +1 -0
  22. package/dist/index.d.ts +17 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +13 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/{inflight-cache.d.cts → inflight-cache.d.ts} +3 -3
  27. package/dist/inflight-cache.d.ts.map +1 -0
  28. package/dist/{inflight-cache.mjs → inflight-cache.js} +4 -4
  29. package/dist/inflight-cache.js.map +1 -0
  30. package/dist/logging-utils.d.ts +4 -0
  31. package/dist/logging-utils.d.ts.map +1 -0
  32. package/dist/logging-utils.js +4 -0
  33. package/dist/logging-utils.js.map +1 -0
  34. package/dist/methods/{wallet-get-granted-execution-permissions.d.mts → wallet-get-granted-execution-permissions.d.ts} +14 -14
  35. package/dist/methods/wallet-get-granted-execution-permissions.d.ts.map +1 -0
  36. package/dist/methods/{wallet-get-granted-execution-permissions.mjs → wallet-get-granted-execution-permissions.js} +6 -6
  37. package/dist/methods/wallet-get-granted-execution-permissions.js.map +1 -0
  38. package/dist/methods/{wallet-get-supported-execution-permissions.d.cts → wallet-get-supported-execution-permissions.d.ts} +6 -6
  39. package/dist/methods/wallet-get-supported-execution-permissions.d.ts.map +1 -0
  40. package/dist/methods/{wallet-get-supported-execution-permissions.mjs → wallet-get-supported-execution-permissions.js} +6 -6
  41. package/dist/methods/wallet-get-supported-execution-permissions.js.map +1 -0
  42. package/dist/methods/{wallet-request-execution-permissions.d.mts → wallet-request-execution-permissions.d.ts} +18 -18
  43. package/dist/methods/wallet-request-execution-permissions.d.ts.map +1 -0
  44. package/dist/methods/{wallet-request-execution-permissions.mjs → wallet-request-execution-permissions.js} +5 -5
  45. package/dist/methods/wallet-request-execution-permissions.js.map +1 -0
  46. package/dist/methods/{wallet-revoke-execution-permission.d.mts → wallet-revoke-execution-permission.d.ts} +5 -5
  47. package/dist/methods/wallet-revoke-execution-permission.d.ts.map +1 -0
  48. package/dist/methods/{wallet-revoke-execution-permission.mjs → wallet-revoke-execution-permission.js} +5 -5
  49. package/dist/methods/wallet-revoke-execution-permission.js.map +1 -0
  50. package/dist/{providerAsMiddleware.d.cts → providerAsMiddleware.d.ts} +5 -5
  51. package/dist/providerAsMiddleware.d.ts.map +1 -0
  52. package/dist/{providerAsMiddleware.mjs → providerAsMiddleware.js} +2 -2
  53. package/dist/providerAsMiddleware.js.map +1 -0
  54. package/dist/{retryOnEmpty.d.cts → retryOnEmpty.d.ts} +5 -5
  55. package/dist/retryOnEmpty.d.ts.map +1 -0
  56. package/dist/{retryOnEmpty.mjs → retryOnEmpty.js} +7 -7
  57. package/dist/retryOnEmpty.js.map +1 -0
  58. package/dist/{types.d.cts → types.d.ts} +2 -2
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +2 -0
  61. package/dist/types.js.map +1 -0
  62. package/dist/utils/{cache.d.cts → cache.d.ts} +2 -2
  63. package/dist/utils/cache.d.ts.map +1 -0
  64. package/dist/utils/{cache.mjs → cache.js} +2 -2
  65. package/dist/utils/cache.js.map +1 -0
  66. package/dist/utils/{common.d.mts → common.d.ts} +1 -1
  67. package/dist/utils/common.d.ts.map +1 -0
  68. package/dist/utils/{common.mjs → common.js} +1 -1
  69. package/dist/utils/common.js.map +1 -0
  70. package/dist/utils/{error.d.mts → error.d.ts} +2 -2
  71. package/dist/utils/error.d.ts.map +1 -0
  72. package/dist/utils/{error.mjs → error.js} +3 -3
  73. package/dist/utils/error.js.map +1 -0
  74. package/dist/utils/{normalize.d.cts → normalize.d.ts} +2 -2
  75. package/dist/utils/normalize.d.ts.map +1 -0
  76. package/dist/utils/{normalize.mjs → normalize.js} +1 -1
  77. package/dist/utils/normalize.js.map +1 -0
  78. package/dist/utils/{structs.d.cts → structs.d.ts} +2 -2
  79. package/dist/utils/structs.d.ts.map +1 -0
  80. package/dist/utils/{structs.mjs → structs.js} +2 -2
  81. package/dist/utils/structs.js.map +1 -0
  82. package/dist/utils/{timeout.d.mts → timeout.d.ts} +1 -1
  83. package/dist/utils/timeout.d.ts.map +1 -0
  84. package/dist/utils/{timeout.mjs → timeout.js} +1 -1
  85. package/dist/utils/timeout.js.map +1 -0
  86. package/dist/utils/{validation.d.cts → validation.d.ts} +12 -12
  87. package/dist/utils/validation.d.ts.map +1 -0
  88. package/dist/utils/{validation.mjs → validation.js} +5 -5
  89. package/dist/utils/validation.js.map +1 -0
  90. package/dist/{wallet.d.cts → wallet.d.ts} +8 -8
  91. package/dist/wallet.d.ts.map +1 -0
  92. package/dist/{wallet.mjs → wallet.js} +12 -12
  93. package/dist/wallet.js.map +1 -0
  94. package/package.json +17 -21
  95. package/dist/block-cache.cjs +0 -174
  96. package/dist/block-cache.cjs.map +0 -1
  97. package/dist/block-cache.d.cts +0 -18
  98. package/dist/block-cache.d.cts.map +0 -1
  99. package/dist/block-cache.d.mts.map +0 -1
  100. package/dist/block-cache.mjs.map +0 -1
  101. package/dist/block-ref-rewrite.cjs +0 -43
  102. package/dist/block-ref-rewrite.cjs.map +0 -1
  103. package/dist/block-ref-rewrite.d.cts.map +0 -1
  104. package/dist/block-ref-rewrite.d.mts +0 -17
  105. package/dist/block-ref-rewrite.d.mts.map +0 -1
  106. package/dist/block-ref-rewrite.mjs.map +0 -1
  107. package/dist/block-ref.cjs +0 -53
  108. package/dist/block-ref.cjs.map +0 -1
  109. package/dist/block-ref.d.cts.map +0 -1
  110. package/dist/block-ref.d.mts +0 -20
  111. package/dist/block-ref.d.mts.map +0 -1
  112. package/dist/block-ref.mjs.map +0 -1
  113. package/dist/block-tracker-inspector.cjs +0 -59
  114. package/dist/block-tracker-inspector.cjs.map +0 -1
  115. package/dist/block-tracker-inspector.d.cts.map +0 -1
  116. package/dist/block-tracker-inspector.d.mts +0 -15
  117. package/dist/block-tracker-inspector.d.mts.map +0 -1
  118. package/dist/block-tracker-inspector.mjs.map +0 -1
  119. package/dist/fetch.cjs +0 -39
  120. package/dist/fetch.cjs.map +0 -1
  121. package/dist/fetch.d.cts +0 -24
  122. package/dist/fetch.d.cts.map +0 -1
  123. package/dist/fetch.d.mts.map +0 -1
  124. package/dist/fetch.mjs.map +0 -1
  125. package/dist/index.cjs +0 -36
  126. package/dist/index.cjs.map +0 -1
  127. package/dist/index.d.cts +0 -17
  128. package/dist/index.d.cts.map +0 -1
  129. package/dist/index.d.mts +0 -17
  130. package/dist/index.d.mts.map +0 -1
  131. package/dist/index.mjs +0 -13
  132. package/dist/index.mjs.map +0 -1
  133. package/dist/inflight-cache.cjs +0 -90
  134. package/dist/inflight-cache.cjs.map +0 -1
  135. package/dist/inflight-cache.d.cts.map +0 -1
  136. package/dist/inflight-cache.d.mts +0 -13
  137. package/dist/inflight-cache.d.mts.map +0 -1
  138. package/dist/inflight-cache.mjs.map +0 -1
  139. package/dist/logging-utils.cjs +0 -7
  140. package/dist/logging-utils.cjs.map +0 -1
  141. package/dist/logging-utils.d.cts +0 -5
  142. package/dist/logging-utils.d.cts.map +0 -1
  143. package/dist/logging-utils.d.mts +0 -5
  144. package/dist/logging-utils.d.mts.map +0 -1
  145. package/dist/logging-utils.mjs +0 -4
  146. package/dist/logging-utils.mjs.map +0 -1
  147. package/dist/methods/wallet-get-granted-execution-permissions.cjs +0 -61
  148. package/dist/methods/wallet-get-granted-execution-permissions.cjs.map +0 -1
  149. package/dist/methods/wallet-get-granted-execution-permissions.d.cts +0 -140
  150. package/dist/methods/wallet-get-granted-execution-permissions.d.cts.map +0 -1
  151. package/dist/methods/wallet-get-granted-execution-permissions.d.mts.map +0 -1
  152. package/dist/methods/wallet-get-granted-execution-permissions.mjs.map +0 -1
  153. package/dist/methods/wallet-get-supported-execution-permissions.cjs +0 -47
  154. package/dist/methods/wallet-get-supported-execution-permissions.cjs.map +0 -1
  155. package/dist/methods/wallet-get-supported-execution-permissions.d.cts.map +0 -1
  156. package/dist/methods/wallet-get-supported-execution-permissions.d.mts +0 -54
  157. package/dist/methods/wallet-get-supported-execution-permissions.d.mts.map +0 -1
  158. package/dist/methods/wallet-get-supported-execution-permissions.mjs.map +0 -1
  159. package/dist/methods/wallet-request-execution-permissions.cjs +0 -45
  160. package/dist/methods/wallet-request-execution-permissions.cjs.map +0 -1
  161. package/dist/methods/wallet-request-execution-permissions.d.cts +0 -104
  162. package/dist/methods/wallet-request-execution-permissions.d.cts.map +0 -1
  163. package/dist/methods/wallet-request-execution-permissions.d.mts.map +0 -1
  164. package/dist/methods/wallet-request-execution-permissions.mjs.map +0 -1
  165. package/dist/methods/wallet-revoke-execution-permission.cjs +0 -32
  166. package/dist/methods/wallet-revoke-execution-permission.cjs.map +0 -1
  167. package/dist/methods/wallet-revoke-execution-permission.d.cts +0 -26
  168. package/dist/methods/wallet-revoke-execution-permission.d.cts.map +0 -1
  169. package/dist/methods/wallet-revoke-execution-permission.d.mts.map +0 -1
  170. package/dist/methods/wallet-revoke-execution-permission.mjs.map +0 -1
  171. package/dist/providerAsMiddleware.cjs +0 -28
  172. package/dist/providerAsMiddleware.cjs.map +0 -1
  173. package/dist/providerAsMiddleware.d.cts.map +0 -1
  174. package/dist/providerAsMiddleware.d.mts +0 -20
  175. package/dist/providerAsMiddleware.d.mts.map +0 -1
  176. package/dist/providerAsMiddleware.mjs.map +0 -1
  177. package/dist/retryOnEmpty.cjs +0 -106
  178. package/dist/retryOnEmpty.cjs.map +0 -1
  179. package/dist/retryOnEmpty.d.cts.map +0 -1
  180. package/dist/retryOnEmpty.d.mts +0 -17
  181. package/dist/retryOnEmpty.d.mts.map +0 -1
  182. package/dist/retryOnEmpty.mjs.map +0 -1
  183. package/dist/types.cjs +0 -3
  184. package/dist/types.cjs.map +0 -1
  185. package/dist/types.d.cts.map +0 -1
  186. package/dist/types.d.mts +0 -20
  187. package/dist/types.d.mts.map +0 -1
  188. package/dist/types.mjs +0 -2
  189. package/dist/types.mjs.map +0 -1
  190. package/dist/utils/cache.cjs +0 -186
  191. package/dist/utils/cache.cjs.map +0 -1
  192. package/dist/utils/cache.d.cts.map +0 -1
  193. package/dist/utils/cache.d.mts +0 -68
  194. package/dist/utils/cache.d.mts.map +0 -1
  195. package/dist/utils/cache.mjs.map +0 -1
  196. package/dist/utils/common.cjs +0 -17
  197. package/dist/utils/common.cjs.map +0 -1
  198. package/dist/utils/common.d.cts +0 -8
  199. package/dist/utils/common.d.cts.map +0 -1
  200. package/dist/utils/common.d.mts.map +0 -1
  201. package/dist/utils/common.mjs.map +0 -1
  202. package/dist/utils/error.cjs +0 -19
  203. package/dist/utils/error.cjs.map +0 -1
  204. package/dist/utils/error.d.cts +0 -10
  205. package/dist/utils/error.d.cts.map +0 -1
  206. package/dist/utils/error.d.mts.map +0 -1
  207. package/dist/utils/error.mjs.map +0 -1
  208. package/dist/utils/normalize.cjs +0 -57
  209. package/dist/utils/normalize.cjs.map +0 -1
  210. package/dist/utils/normalize.d.cts.map +0 -1
  211. package/dist/utils/normalize.d.mts +0 -26
  212. package/dist/utils/normalize.d.mts.map +0 -1
  213. package/dist/utils/normalize.mjs.map +0 -1
  214. package/dist/utils/structs.cjs +0 -21
  215. package/dist/utils/structs.cjs.map +0 -1
  216. package/dist/utils/structs.d.cts.map +0 -1
  217. package/dist/utils/structs.d.mts +0 -17
  218. package/dist/utils/structs.d.mts.map +0 -1
  219. package/dist/utils/structs.mjs.map +0 -1
  220. package/dist/utils/timeout.cjs +0 -14
  221. package/dist/utils/timeout.cjs.map +0 -1
  222. package/dist/utils/timeout.d.cts +0 -8
  223. package/dist/utils/timeout.d.cts.map +0 -1
  224. package/dist/utils/timeout.d.mts.map +0 -1
  225. package/dist/utils/timeout.mjs.map +0 -1
  226. package/dist/utils/validation.cjs +0 -255
  227. package/dist/utils/validation.cjs.map +0 -1
  228. package/dist/utils/validation.d.cts.map +0 -1
  229. package/dist/utils/validation.d.mts +0 -156
  230. package/dist/utils/validation.d.mts.map +0 -1
  231. package/dist/utils/validation.mjs.map +0 -1
  232. package/dist/wallet.cjs +0 -460
  233. package/dist/wallet.cjs.map +0 -1
  234. package/dist/wallet.d.cts.map +0 -1
  235. package/dist/wallet.d.mts +0 -66
  236. package/dist/wallet.d.mts.map +0 -1
  237. package/dist/wallet.mjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -7,9 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [25.0.0]
11
+
10
12
  ### Changed
11
13
 
14
+ - **BREAKING:** Drop CommonJS support ([#9536](https://github.com/MetaMask/core/pull/9536))
15
+ - This package is now ESM-only, but can still be used in CommonJS projects via `require(esm)` in modern Node.js versions (22+), or dynamic imports in older Node.js versions.
16
+ - **BREAKING:** Bump minimum Node.js version to 22 ([#9976](https://github.com/MetaMask/core/pull/9976))
17
+ - **BREAKING:** Bump TypeScript target to ES2022 ([#10019](https://github.com/MetaMask/core/pull/10019))
18
+ - This package now ships ES2022 code, requiring a compatible modern environment or bundler configuration to consume.
12
19
  - Bump `@metamask/utils` from `^11.11.0` to `^11.12.0` ([#10076](https://github.com/MetaMask/core/pull/10076))
20
+ - Bump `@metamask/eth-block-tracker` from `^15.0.1` to `^16.0.0` ([#10160](https://github.com/MetaMask/core/pull/10160))
21
+ - Bump `@metamask/eth-json-rpc-provider` from `^6.0.1` to `^7.0.0` ([#10160](https://github.com/MetaMask/core/pull/10160))
22
+ - Bump `@metamask/json-rpc-engine` from `^10.5.0` to `^11.0.0` ([#10160](https://github.com/MetaMask/core/pull/10160))
23
+ - Bump `@metamask/message-manager` from `^14.1.2` to `^15.0.0` ([#10160](https://github.com/MetaMask/core/pull/10160))
13
24
 
14
25
  ## [24.0.2]
15
26
 
@@ -133,7 +144,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
133
144
  - See [`MetaMask/eth-json-rpc-middleware`](https://github.com/MetaMask/eth-json-rpc-middleware/blob/main/CHANGELOG.md)
134
145
  for the original changelog.
135
146
 
136
- [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/eth-json-rpc-middleware@24.0.2...HEAD
147
+ [Unreleased]: https://github.com/MetaMask/core/compare/@metamask/eth-json-rpc-middleware@25.0.0...HEAD
148
+ [25.0.0]: https://github.com/MetaMask/core/compare/@metamask/eth-json-rpc-middleware@24.0.2...@metamask/eth-json-rpc-middleware@25.0.0
137
149
  [24.0.2]: https://github.com/MetaMask/core/compare/@metamask/eth-json-rpc-middleware@24.0.1...@metamask/eth-json-rpc-middleware@24.0.2
138
150
  [24.0.1]: https://github.com/MetaMask/core/compare/@metamask/eth-json-rpc-middleware@24.0.0...@metamask/eth-json-rpc-middleware@24.0.1
139
151
  [24.0.0]: https://github.com/MetaMask/core/compare/@metamask/eth-json-rpc-middleware@23.1.3...@metamask/eth-json-rpc-middleware@24.0.0
@@ -1,6 +1,6 @@
1
- import type { PollingBlockTracker } from "@metamask/eth-block-tracker";
2
- import type { JsonRpcMiddleware, MiddlewareContext } from "@metamask/json-rpc-engine/v2";
3
- import type { Json, JsonRpcRequest } from "@metamask/utils";
1
+ import type { PollingBlockTracker } from '@metamask/eth-block-tracker';
2
+ import type { JsonRpcMiddleware, MiddlewareContext } from '@metamask/json-rpc-engine/v2';
3
+ import type { Json, JsonRpcRequest } from '@metamask/utils';
4
4
  type BlockCacheMiddlewareOptions = {
5
5
  blockTracker?: PollingBlockTracker;
6
6
  };
@@ -15,4 +15,4 @@ export declare function createBlockCacheMiddleware({ blockTracker, }?: BlockCach
15
15
  skipCache?: boolean;
16
16
  }>>;
17
17
  export {};
18
- //# sourceMappingURL=block-cache.d.mts.map
18
+ //# sourceMappingURL=block-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-cache.d.ts","sourceRoot":"","sources":["../src/block-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAqB5D,KAAK,2BAA2B,GAAG;IACjC,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC,CAAC;AA2GF;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,YAAY,GACb,GAAE,2BAAgC,GAAG,iBAAiB,CACrD,cAAc,EACd,IAAI,EACJ,iBAAiB,CAAC;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAC3C,CAmFA"}
@@ -1,17 +1,5 @@
1
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
- if (kind === "m") throw new TypeError("Private method is not writable");
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
- };
7
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
8
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
9
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
- };
12
- var _BlockCacheStrategy_cache;
13
- import { projectLogger, createModuleLogger } from "./logging-utils.mjs";
14
- import { cacheIdentifierForRequest, blockTagForRequest, cacheTypeForMethod, canCache, CacheStrategy } from "./utils/cache.mjs";
1
+ import { projectLogger, createModuleLogger } from './logging-utils.js';
2
+ import { cacheIdentifierForRequest, blockTagForRequest, cacheTypeForMethod, canCache, CacheStrategy, } from './utils/cache.js';
15
3
  const log = createModuleLogger(projectLogger, 'block-cache');
16
4
  // `<nil>` comes from https://github.com/ethereum/go-ethereum/issues/16925
17
5
  const emptyValues = [undefined, null, '\u003cnil\u003e'];
@@ -19,17 +7,17 @@ const emptyValues = [undefined, null, '\u003cnil\u003e'];
19
7
  // Cache Strategies
20
8
  //
21
9
  class BlockCacheStrategy {
10
+ #cache;
22
11
  constructor() {
23
- _BlockCacheStrategy_cache.set(this, void 0);
24
- __classPrivateFieldSet(this, _BlockCacheStrategy_cache, {}, "f");
12
+ this.#cache = {};
25
13
  }
26
14
  getBlockCache(blockNumberHex) {
27
15
  const blockNumber = Number.parseInt(blockNumberHex, 16);
28
- let blockCache = __classPrivateFieldGet(this, _BlockCacheStrategy_cache, "f")[blockNumber];
16
+ let blockCache = this.#cache[blockNumber];
29
17
  // create new cache if necesary
30
18
  if (!blockCache) {
31
19
  const newCache = {};
32
- __classPrivateFieldGet(this, _BlockCacheStrategy_cache, "f")[blockNumber] = newCache;
20
+ this.#cache[blockNumber] = newCache;
33
21
  blockCache = newCache;
34
22
  }
35
23
  return blockCache;
@@ -89,13 +77,12 @@ class BlockCacheStrategy {
89
77
  clearBefore(oldBlockHex) {
90
78
  const oldBlockNumber = Number.parseInt(oldBlockHex, 16);
91
79
  // clear old caches
92
- Object.keys(__classPrivateFieldGet(this, _BlockCacheStrategy_cache, "f"))
80
+ Object.keys(this.#cache)
93
81
  .map(Number)
94
82
  .filter((value) => value < oldBlockNumber)
95
- .forEach((value) => delete __classPrivateFieldGet(this, _BlockCacheStrategy_cache, "f")[value]);
83
+ .forEach((value) => delete this.#cache[value]);
96
84
  }
97
85
  }
98
- _BlockCacheStrategy_cache = new WeakMap();
99
86
  /**
100
87
  * Creates a middleware that caches block-related requests.
101
88
  *
@@ -167,4 +154,4 @@ export function createBlockCacheMiddleware({ blockTracker, } = {}) {
167
154
  return cacheResult;
168
155
  };
169
156
  }
170
- //# sourceMappingURL=block-cache.mjs.map
157
+ //# sourceMappingURL=block-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-cache.js","sourceRoot":"","sources":["../src/block-cache.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAOvE,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,kBAAkB,EAClB,QAAQ,EACR,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B,MAAM,GAAG,GAAG,kBAAkB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAC7D,0EAA0E;AAC1E,MAAM,WAAW,GAAc,CAAC,SAAS,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;AAMpE,EAAE;AACF,mBAAmB;AACnB,EAAE;AAEF,MAAM,kBAAkB;IACtB,MAAM,CAAQ;IAEd;QACE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,aAAa,CAAC,cAAsB;QAClC,MAAM,WAAW,GAAW,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAChE,IAAI,UAAU,GAAe,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACtD,+BAA+B;QAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAe,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;YACpC,UAAU,GAAG,QAAQ,CAAC;QACxB,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,GAAG,CACP,OAAuB,EACvB,oBAA4B;QAE5B,qBAAqB;QACrB,MAAM,UAAU,GAAe,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QACxE,gCAAgC;QAChC,MAAM,UAAU,GAAkB,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3E,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,GAAG,CACP,OAAuB,EACvB,oBAA4B,EAC5B,MAAa;QAEb,qCAAqC;QACrC,MAAM,cAAc,GAAY,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,6BAA6B;QAC7B,MAAM,UAAU,GAAkB,yBAAyB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3E,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,MAAM,UAAU,GAAe,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QACxE,UAAU,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;IAClC,CAAC;IAED,eAAe,CAAC,OAAuB;QACrC,uBAAuB;QACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,iBAAiB;QACjB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,gBAAgB;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,cAAc,CAAC,OAAuB,EAAE,MAAa;QACnD,4CAA4C;QAC5C,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,4DAA4D;QAC5D,IACE,OAAO,CAAC,MAAM;YACd,CAAC,0BAA0B,EAAE,2BAA2B,CAAC,CAAC,QAAQ,CAChE,OAAO,CAAC,MAAM,CACf,EACD,CAAC;YACD,IACE,CAAC,MAAM,EAAE,SAAS;gBAClB,MAAM,CAAC,SAAS;oBACd,oEAAoE,EACtE,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,iBAAiB;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sEAAsE;IACtE,WAAW,CAAC,WAAmB;QAC7B,MAAM,cAAc,GAAW,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAChE,mBAAmB;QACnB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;aACrB,GAAG,CAAC,MAAM,CAAC;aACX,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,cAAc,CAAC;aACzC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,EACzC,YAAY,GACb,GAAgC,EAAE;IAKjC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAuB,IAAI,kBAAkB,EAAE,CAAC;IAChE,MAAM,UAAU,GAA0D;QACxE,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,UAAU;QACrC,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,UAAU;QACjC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU;QAChC,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,SAAS;KACjC,CAAC;IAEF,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,QAAQ,GACZ,eAAe,IAAI,OAAO,eAAe,KAAK,QAAQ;YACpD,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,QAAQ,CAAC;QAEf,GAAG,CAAC,yBAAyB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAElD,yBAAyB;QACzB,IAAI,oBAA4B,CAAC;QACjC,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC5B,8CAA8C;YAC9C,oBAAoB,GAAG,MAAM,CAAC;QAChC,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YAC3D,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC;YAE9D,sCAAsC;YACtC,GAAG,CACD,sDAAsD,EACtD,iBAAiB,CAClB,CAAC;YACF,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;YAC1C,oBAAoB,GAAG,iBAAiB,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,uBAAuB;YACvB,oBAAoB,GAAG,QAAQ,CAAC;QAClC,CAAC;QAED,mCAAmC;QACnC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QACtE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,aAAa;YACb,8CAA8C;YAC9C,GAAG,CACD,iEAAiE,EACjE,oBAAoB,CACrB,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;YAE5B,sBAAsB;YACtB,oEAAoE;YACpE,wCAAwC;YACxC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;YACrC,MAAM,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAe,CAAC,CAAC;YACnE,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,GAAG,CACD,8DAA8D,EAC9D,oBAAoB,CACrB,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type { PollingBlockTracker } from '@metamask/eth-block-tracker';\nimport type {\n JsonRpcMiddleware,\n MiddlewareContext,\n} from '@metamask/json-rpc-engine/v2';\nimport type { Json, JsonRpcRequest } from '@metamask/utils';\n\nimport { projectLogger, createModuleLogger } from './logging-utils.js';\nimport type {\n Block,\n BlockCache,\n // eslint-disable-next-line @typescript-eslint/no-shadow\n Cache,\n} from './types.js';\nimport {\n cacheIdentifierForRequest,\n blockTagForRequest,\n cacheTypeForMethod,\n canCache,\n CacheStrategy,\n} from './utils/cache.js';\n\nconst log = createModuleLogger(projectLogger, 'block-cache');\n// `<nil>` comes from https://github.com/ethereum/go-ethereum/issues/16925\nconst emptyValues: unknown[] = [undefined, null, '\\u003cnil\\u003e'];\n\ntype BlockCacheMiddlewareOptions = {\n blockTracker?: PollingBlockTracker;\n};\n\n//\n// Cache Strategies\n//\n\nclass BlockCacheStrategy {\n #cache: Cache;\n\n constructor() {\n this.#cache = {};\n }\n\n getBlockCache(blockNumberHex: string): BlockCache {\n const blockNumber: number = Number.parseInt(blockNumberHex, 16);\n let blockCache: BlockCache = this.#cache[blockNumber];\n // create new cache if necesary\n if (!blockCache) {\n const newCache: BlockCache = {};\n this.#cache[blockNumber] = newCache;\n blockCache = newCache;\n }\n return blockCache;\n }\n\n async get(\n request: JsonRpcRequest,\n requestedBlockNumber: string,\n ): Promise<Block | undefined> {\n // lookup block cache\n const blockCache: BlockCache = this.getBlockCache(requestedBlockNumber);\n // lookup payload in block cache\n const identifier: string | null = cacheIdentifierForRequest(request, true);\n return identifier ? blockCache[identifier] : undefined;\n }\n\n async set(\n request: JsonRpcRequest,\n requestedBlockNumber: string,\n result: Block,\n ): Promise<void> {\n // check if we can cached this result\n const canCacheResult: boolean = this.canCacheResult(request, result);\n if (!canCacheResult) {\n return;\n }\n\n // set the value in the cache\n const identifier: string | null = cacheIdentifierForRequest(request, true);\n if (!identifier) {\n return;\n }\n const blockCache: BlockCache = this.getBlockCache(requestedBlockNumber);\n blockCache[identifier] = result;\n }\n\n canCacheRequest(request: JsonRpcRequest): boolean {\n // check request method\n if (!canCache(request.method)) {\n return false;\n }\n // check blockTag\n const blockTag = blockTagForRequest(request);\n\n if (blockTag === 'pending') {\n return false;\n }\n // can be cached\n return true;\n }\n\n canCacheResult(request: JsonRpcRequest, result: Block): boolean {\n // never cache empty values (e.g. undefined)\n if (emptyValues.includes(result)) {\n return false;\n }\n\n // check if transactions have block reference before caching\n if (\n request.method &&\n ['eth_getTransactionByHash', 'eth_getTransactionReceipt'].includes(\n request.method,\n )\n ) {\n if (\n !result?.blockHash ||\n result.blockHash ===\n '0x0000000000000000000000000000000000000000000000000000000000000000'\n ) {\n return false;\n }\n }\n // otherwise true\n return true;\n }\n\n // removes all block caches with block number lower than `oldBlockHex`\n clearBefore(oldBlockHex: string): void {\n const oldBlockNumber: number = Number.parseInt(oldBlockHex, 16);\n // clear old caches\n Object.keys(this.#cache)\n .map(Number)\n .filter((value) => value < oldBlockNumber)\n .forEach((value) => delete this.#cache[value]);\n }\n}\n\n/**\n * Creates a middleware that caches block-related requests.\n *\n * @param options - The options for the middleware.\n * @param options.blockTracker - The block tracker to use.\n * @returns The block cache middleware.\n */\nexport function createBlockCacheMiddleware({\n blockTracker,\n}: BlockCacheMiddlewareOptions = {}): JsonRpcMiddleware<\n JsonRpcRequest,\n Json,\n MiddlewareContext<{ skipCache?: boolean }>\n> {\n if (!blockTracker) {\n throw new Error(\n 'createBlockCacheMiddleware - No PollingBlockTracker specified',\n );\n }\n\n const blockCache: BlockCacheStrategy = new BlockCacheStrategy();\n const strategies: Record<CacheStrategy, BlockCacheStrategy | undefined> = {\n [CacheStrategy.Permanent]: blockCache,\n [CacheStrategy.Block]: blockCache,\n [CacheStrategy.Fork]: blockCache,\n [CacheStrategy.Never]: undefined,\n };\n\n return async ({ request, next, context }) => {\n if (context.get('skipCache')) {\n return next();\n }\n\n const type = cacheTypeForMethod(request.method);\n const strategy = strategies[type];\n if (!strategy) {\n return next();\n }\n\n if (!strategy.canCacheRequest(request)) {\n return next();\n }\n\n const requestBlockTag = blockTagForRequest(request);\n const blockTag =\n requestBlockTag && typeof requestBlockTag === 'string'\n ? requestBlockTag\n : 'latest';\n\n log('blockTag = %o, req = %o', blockTag, request);\n\n // get exact block number\n let requestedBlockNumber: string;\n if (blockTag === 'earliest') {\n // this just exists for symmetry with \"latest\"\n requestedBlockNumber = '0x00';\n } else if (blockTag === 'latest') {\n log('Fetching latest block number to determine cache key');\n const latestBlockNumber = await blockTracker.getLatestBlock();\n\n // clear all cache before latest block\n log(\n 'Clearing values stored under block numbers before %o',\n latestBlockNumber,\n );\n blockCache.clearBefore(latestBlockNumber);\n requestedBlockNumber = latestBlockNumber;\n } else {\n // we have a hex number\n requestedBlockNumber = blockTag;\n }\n\n // end on a hit, continue on a miss\n const cacheResult = await strategy.get(request, requestedBlockNumber);\n if (cacheResult === undefined) {\n // cache miss\n // wait for other middleware to handle request\n log(\n 'No cache stored under block number %o, carrying request forward',\n requestedBlockNumber,\n );\n const result = await next();\n\n // add result to cache\n // it's safe to cast res.result as Block, due to runtime type checks\n // performed when strategy.set is called\n log('Populating cache with', result);\n await strategy.set(request, requestedBlockNumber, result as Block);\n return result;\n }\n log(\n 'Cache hit, reusing cache result stored under block number %o',\n requestedBlockNumber,\n );\n return cacheResult;\n };\n}\n"]}
@@ -1,6 +1,6 @@
1
- import type { PollingBlockTracker } from "@metamask/eth-block-tracker";
2
- import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine/v2";
3
- import type { Json, JsonRpcRequest } from "@metamask/utils";
1
+ import type { PollingBlockTracker } from '@metamask/eth-block-tracker';
2
+ import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2';
3
+ import type { Json, JsonRpcRequest } from '@metamask/utils';
4
4
  type BlockRefRewriteMiddlewareOptions = {
5
5
  blockTracker?: PollingBlockTracker;
6
6
  };
@@ -14,4 +14,4 @@ type BlockRefRewriteMiddlewareOptions = {
14
14
  */
15
15
  export declare function createBlockRefRewriteMiddleware({ blockTracker, }?: BlockRefRewriteMiddlewareOptions): JsonRpcMiddleware<JsonRpcRequest, Json>;
16
16
  export {};
17
- //# sourceMappingURL=block-ref-rewrite.d.cts.map
17
+ //# sourceMappingURL=block-ref-rewrite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-ref-rewrite.d.ts","sourceRoot":"","sources":["../src/block-ref-rewrite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAI5D,KAAK,gCAAgC,GAAG;IACtC,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAAC,EAC9C,YAAY,GACb,GAAE,gCAAqC,GAAG,iBAAiB,CAC1D,cAAc,EACd,IAAI,CACL,CAqCA"}
@@ -1,4 +1,4 @@
1
- import { blockTagParamIndex } from "./utils/cache.mjs";
1
+ import { blockTagParamIndex } from './utils/cache.js';
2
2
  /**
3
3
  * Creates a middleware that rewrites "latest" block references to the known
4
4
  * latest block number from a block tracker.
@@ -36,4 +36,4 @@ export function createBlockRefRewriteMiddleware({ blockTracker, } = {}) {
36
36
  return next();
37
37
  };
38
38
  }
39
- //# sourceMappingURL=block-ref-rewrite.mjs.map
39
+ //# sourceMappingURL=block-ref-rewrite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-ref-rewrite.js","sourceRoot":"","sources":["../src/block-ref-rewrite.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAMtD;;;;;;;GAOG;AACH,MAAM,UAAU,+BAA+B,CAAC,EAC9C,YAAY,GACb,GAAqC,EAAE;IAItC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,KAAK,CACT,yEAAyE,CAC1E,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACjC,MAAM,aAAa,GAAuB,kBAAkB,CAC1D,OAAO,CAAC,MAAM,CACf,CAAC;QACF,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,QAAQ,GACZ,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;YAC5D,CAAC,CAAE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAY;YAC3C,CAAC,CAAC,oCAAoC;gBACpC,QAAQ,CAAC;QAEf,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,mDAAmD;QACnD,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC;QAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACtC,MAAM,CAAC,aAAa,CAAC,GAAG,iBAAiB,CAAC;YAC1C,OAAO,IAAI,CAAC;gBACV,GAAG,OAAO;gBACV,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type { PollingBlockTracker } from '@metamask/eth-block-tracker';\nimport type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2';\nimport type { Json, JsonRpcRequest } from '@metamask/utils';\n\nimport { blockTagParamIndex } from './utils/cache.js';\n\ntype BlockRefRewriteMiddlewareOptions = {\n blockTracker?: PollingBlockTracker;\n};\n\n/**\n * Creates a middleware that rewrites \"latest\" block references to the known\n * latest block number from a block tracker.\n *\n * @param options - The options for the middleware.\n * @param options.blockTracker - The block tracker to use.\n * @returns The middleware.\n */\nexport function createBlockRefRewriteMiddleware({\n blockTracker,\n}: BlockRefRewriteMiddlewareOptions = {}): JsonRpcMiddleware<\n JsonRpcRequest,\n Json\n> {\n if (!blockTracker) {\n throw Error(\n 'BlockRefRewriteMiddleware - mandatory \"blockTracker\" option is missing.',\n );\n }\n\n return async ({ request, next }) => {\n const blockRefIndex: number | undefined = blockTagParamIndex(\n request.method,\n );\n if (blockRefIndex === undefined) {\n return next();\n }\n\n const blockRef: string | undefined =\n Array.isArray(request.params) && request.params[blockRefIndex]\n ? (request.params[blockRefIndex] as string)\n : // omitted blockRef implies \"latest\"\n 'latest';\n\n if (blockRef !== 'latest') {\n return next();\n }\n\n // rewrite blockRef to block-tracker's block number\n const latestBlockNumber = await blockTracker.getLatestBlock();\n if (Array.isArray(request.params)) {\n const params = request.params.slice();\n params[blockRefIndex] = latestBlockNumber;\n return next({\n ...request,\n params,\n });\n }\n return next();\n };\n}\n"]}
@@ -1,7 +1,7 @@
1
- import type { PollingBlockTracker } from "@metamask/eth-block-tracker";
2
- import type { InternalProvider } from "@metamask/eth-json-rpc-provider";
3
- import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine/v2";
4
- import type { Json, JsonRpcRequest } from "@metamask/utils";
1
+ import type { PollingBlockTracker } from '@metamask/eth-block-tracker';
2
+ import type { InternalProvider } from '@metamask/eth-json-rpc-provider';
3
+ import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2';
4
+ import type { Json, JsonRpcRequest } from '@metamask/utils';
5
5
  type BlockRefMiddlewareOptions = {
6
6
  blockTracker?: PollingBlockTracker;
7
7
  provider?: InternalProvider;
@@ -17,4 +17,4 @@ type BlockRefMiddlewareOptions = {
17
17
  */
18
18
  export declare function createBlockRefMiddleware({ provider, blockTracker, }?: BlockRefMiddlewareOptions): JsonRpcMiddleware<JsonRpcRequest, Json>;
19
19
  export {};
20
- //# sourceMappingURL=block-ref.d.cts.map
20
+ //# sourceMappingURL=block-ref.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-ref.d.ts","sourceRoot":"","sources":["../src/block-ref.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAiB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAO3E,KAAK,yBAAyB,GAAG;IAC/B,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAIF;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,YAAY,GACb,GAAE,yBAA8B,GAAG,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,CA+C1E"}
@@ -1,6 +1,6 @@
1
- import { klona } from "klona";
2
- import { projectLogger, createModuleLogger } from "./logging-utils.mjs";
3
- import { blockTagParamIndex } from "./utils/cache.mjs";
1
+ import { klona } from 'klona';
2
+ import { projectLogger, createModuleLogger } from './logging-utils.js';
3
+ import { blockTagParamIndex } from './utils/cache.js';
4
4
  const log = createModuleLogger(projectLogger, 'block-ref');
5
5
  /**
6
6
  * Creates a middleware that rewrites "latest" block references to the known
@@ -46,4 +46,4 @@ export function createBlockRefMiddleware({ provider, blockTracker, } = {}) {
46
46
  return await provider.request(childRequest);
47
47
  };
48
48
  }
49
- //# sourceMappingURL=block-ref.mjs.map
49
+ //# sourceMappingURL=block-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-ref.js","sourceRoot":"","sources":["../src/block-ref.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAOtD,MAAM,GAAG,GAAG,kBAAkB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CAAC,EACvC,QAAQ,EACR,YAAY,GACb,GAA8B,EAAE;IAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,KAAK,CACT,kEAAkE,CACnE,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACjC,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEzD,2CAA2C;QAC3C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;YAC5C,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,QAAQ,CAAC;YAC7C,CAAC,CAAC,QAAQ,CAAC;QAEb,uBAAuB;QACvB,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,GAAG,CAAC,oDAAoD,CAAC,CAAC;YAC1D,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,sBAAsB;QACtB,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC;QAC9D,GAAG,CACD,uCAAuC,aAAa,oBAAoB,iBAAiB,EAAE,CAC5F,CAAC;QAEF,+CAA+C;QAC/C,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAEpC,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,iBAAiB,CAAC;QACzD,CAAC;QAED,wBAAwB;QACxB,GAAG,CAAC,+BAA+B,EAAE,YAAY,CAAC,CAAC;QACnD,2CAA2C;QAC3C,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAuB,YAAY,CAAC,CAAC;IACpE,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type { PollingBlockTracker } from '@metamask/eth-block-tracker';\nimport type { InternalProvider } from '@metamask/eth-json-rpc-provider';\nimport type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2';\nimport type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils';\nimport { klona } from 'klona';\n\nimport { projectLogger, createModuleLogger } from './logging-utils.js';\nimport type { Block } from './types.js';\nimport { blockTagParamIndex } from './utils/cache.js';\n\ntype BlockRefMiddlewareOptions = {\n blockTracker?: PollingBlockTracker;\n provider?: InternalProvider;\n};\n\nconst log = createModuleLogger(projectLogger, 'block-ref');\n\n/**\n * Creates a middleware that rewrites \"latest\" block references to the known\n * latest block number from a block tracker.\n *\n * @param options - The options for the middleware.\n * @param options.provider - The provider to use.\n * @param options.blockTracker - The block tracker to use.\n * @returns The middleware.\n */\nexport function createBlockRefMiddleware({\n provider,\n blockTracker,\n}: BlockRefMiddlewareOptions = {}): JsonRpcMiddleware<JsonRpcRequest, Json> {\n if (!provider) {\n throw Error('BlockRefMiddleware - mandatory \"provider\" option is missing.');\n }\n\n if (!blockTracker) {\n throw Error(\n 'BlockRefMiddleware - mandatory \"blockTracker\" option is missing.',\n );\n }\n\n return async ({ request, next }) => {\n const blockRefIndex = blockTagParamIndex(request.method);\n\n // skip if method does not include blockRef\n if (blockRefIndex === undefined) {\n return next();\n }\n\n const blockRef = Array.isArray(request.params)\n ? (request.params[blockRefIndex] ?? 'latest')\n : 'latest';\n\n // skip if not \"latest\"\n if (blockRef !== 'latest') {\n log('blockRef is not \"latest\", carrying request forward');\n return next();\n }\n\n // lookup latest block\n const latestBlockNumber = await blockTracker.getLatestBlock();\n log(\n `blockRef is \"latest\", setting param ${blockRefIndex} to latest block ${latestBlockNumber}`,\n );\n\n // create child request with specific block-ref\n const childRequest = klona(request);\n\n if (Array.isArray(childRequest.params)) {\n childRequest.params[blockRefIndex] = latestBlockNumber;\n }\n\n // perform child request\n log('Performing another request %o', childRequest);\n // copy child result onto original response\n return await provider.request<JsonRpcParams, Block>(childRequest);\n };\n}\n"]}
@@ -1,6 +1,6 @@
1
- import type { PollingBlockTracker } from "@metamask/eth-block-tracker";
2
- import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine/v2";
3
- import type { Json, JsonRpcRequest } from "@metamask/utils";
1
+ import type { PollingBlockTracker } from '@metamask/eth-block-tracker';
2
+ import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2';
3
+ import type { Json, JsonRpcRequest } from '@metamask/utils';
4
4
  /**
5
5
  * Creates a middleware that checks whether response block references are higher than the current block.
6
6
  * If the block reference is higher, the middleware will make the block tracker check for a new block.
@@ -12,4 +12,4 @@ import type { Json, JsonRpcRequest } from "@metamask/utils";
12
12
  export declare function createBlockTrackerInspectorMiddleware({ blockTracker, }: {
13
13
  blockTracker: PollingBlockTracker;
14
14
  }): JsonRpcMiddleware<JsonRpcRequest, Json>;
15
- //# sourceMappingURL=block-tracker-inspector.d.cts.map
15
+ //# sourceMappingURL=block-tracker-inspector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-tracker-inspector.d.ts","sourceRoot":"","sources":["../src/block-tracker-inspector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAU5D;;;;;;;GAOG;AACH,wBAAgB,qCAAqC,CAAC,EACpD,YAAY,GACb,EAAE;IACD,YAAY,EAAE,mBAAmB,CAAC;CACnC,GAAG,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,CA4B1C"}
@@ -1,5 +1,5 @@
1
- import { hasProperty } from "@metamask/utils";
2
- import { projectLogger, createModuleLogger } from "./logging-utils.mjs";
1
+ import { hasProperty } from '@metamask/utils';
2
+ import { projectLogger, createModuleLogger } from './logging-utils.js';
3
3
  const log = createModuleLogger(projectLogger, 'block-tracker-inspector');
4
4
  const futureBlockRefRequests = [
5
5
  'eth_getTransactionByHash',
@@ -52,4 +52,4 @@ function getResultBlockNumber(result) {
52
52
  ? result.blockNumber
53
53
  : undefined;
54
54
  }
55
- //# sourceMappingURL=block-tracker-inspector.mjs.map
55
+ //# sourceMappingURL=block-tracker-inspector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-tracker-inspector.js","sourceRoot":"","sources":["../src/block-tracker-inspector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,GAAG,GAAG,kBAAkB,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAC;AACzE,MAAM,sBAAsB,GAAsB;IAChD,0BAA0B;IAC1B,2BAA2B;CAC5B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,qCAAqC,CAAC,EACpD,YAAY,GAGb;IACC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACjC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;QAE5B,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,mBAAmB,EAAE,CAAC;YACxB,GAAG,CAAC,qDAAqD,EAAE,MAAM,CAAC,CAAC;YAEnE,mEAAmE;YACnE,MAAM,WAAW,GAAW,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YACrE,MAAM,kBAAkB,GAAW,MAAM,CAAC,QAAQ;YAChD,4FAA4F;YAC5F,YAAY,CAAC,eAAe,EAAY,EACxC,EAAE,CACH,CAAC;YAEF,IAAI,WAAW,GAAG,kBAAkB,EAAE,CAAC;gBACrC,GAAG,CACD,iGAAiG,CAClG,CAAC;gBACF,MAAM,YAAY,CAAC,mBAAmB,EAAE,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAC3B,MAAkC;IAElC,IACE,CAAC,MAAM;QACP,OAAO,MAAM,KAAK,QAAQ;QAC1B,CAAC,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,EACnC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;QAC3C,CAAC,CAAC,MAAM,CAAC,WAAW;QACpB,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC","sourcesContent":["import type { PollingBlockTracker } from '@metamask/eth-block-tracker';\nimport type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2';\nimport { hasProperty } from '@metamask/utils';\nimport type { Json, JsonRpcRequest } from '@metamask/utils';\n\nimport { projectLogger, createModuleLogger } from './logging-utils.js';\n\nconst log = createModuleLogger(projectLogger, 'block-tracker-inspector');\nconst futureBlockRefRequests: readonly string[] = [\n 'eth_getTransactionByHash',\n 'eth_getTransactionReceipt',\n];\n\n/**\n * Creates a middleware that checks whether response block references are higher than the current block.\n * If the block reference is higher, the middleware will make the block tracker check for a new block.\n *\n * @param options - The options for the middleware.\n * @param options.blockTracker - The block tracker to use.\n * @returns The middleware.\n */\nexport function createBlockTrackerInspectorMiddleware({\n blockTracker,\n}: {\n blockTracker: PollingBlockTracker;\n}): JsonRpcMiddleware<JsonRpcRequest, Json> {\n return async ({ request, next }) => {\n if (!futureBlockRefRequests.includes(request.method)) {\n return next();\n }\n const result = await next();\n\n const responseBlockNumber = getResultBlockNumber(result);\n if (responseBlockNumber) {\n log('res.result.blockNumber exists, proceeding. res = %o', result);\n\n // If number is higher, suggest block-tracker check for a new block\n const blockNumber: number = Number.parseInt(responseBlockNumber, 16);\n const currentBlockNumber: number = Number.parseInt(\n // Typecast: If getCurrentBlock returns null, currentBlockNumber will be NaN, which is fine.\n blockTracker.getCurrentBlock() as string,\n 16,\n );\n\n if (blockNumber > currentBlockNumber) {\n log(\n 'blockNumber from response is greater than current block number, refreshing current block number',\n );\n await blockTracker.checkForLatestBlock();\n }\n }\n return result;\n };\n}\n\n/**\n * Extracts the block number from the result.\n *\n * @param result - The result to extract the block number from.\n * @returns The block number, or undefined if the result is not an object with a\n * `blockNumber` property.\n */\nfunction getResultBlockNumber(\n result: Readonly<Json> | undefined,\n): string | undefined {\n if (\n !result ||\n typeof result !== 'object' ||\n !hasProperty(result, 'blockNumber')\n ) {\n return undefined;\n }\n\n return typeof result.blockNumber === 'string'\n ? result.blockNumber\n : undefined;\n}\n"]}
@@ -1,6 +1,6 @@
1
- import type { JsonRpcMiddleware, MiddlewareContext } from "@metamask/json-rpc-engine/v2";
2
- import type { Json, JsonRpcRequest } from "@metamask/utils";
3
- import type { AbstractRpcServiceLike } from "./types.mjs";
1
+ import type { JsonRpcMiddleware, MiddlewareContext } from '@metamask/json-rpc-engine/v2';
2
+ import type { Json, JsonRpcRequest } from '@metamask/utils';
3
+ import type { AbstractRpcServiceLike } from './types.js';
4
4
  /**
5
5
  * Creates middleware for sending a JSON-RPC request through the given RPC
6
6
  * service.
@@ -21,4 +21,4 @@ export declare function createFetchMiddleware({ rpcService, options, }: {
21
21
  }): JsonRpcMiddleware<JsonRpcRequest, Json, MiddlewareContext<{
22
22
  origin: string;
23
23
  }>>;
24
- //# sourceMappingURL=fetch.d.mts.map
24
+ //# sourceMappingURL=fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,UAAU,EACV,OAAY,GACb,EAAE;IACD,UAAU,EAAE,sBAAsB,CAAC;IACnC,OAAO,CAAC,EAAE;QACR,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;CACH,GAAG,iBAAiB,CACnB,cAAc,EACd,IAAI,EACJ,iBAAiB,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CACtC,CAuBA"}
@@ -1,4 +1,4 @@
1
- import { rpcErrors } from "@metamask/rpc-errors";
1
+ import { rpcErrors } from '@metamask/rpc-errors';
2
2
  /**
3
3
  * Creates middleware for sending a JSON-RPC request through the given RPC
4
4
  * service.
@@ -32,4 +32,4 @@ export function createFetchMiddleware({ rpcService, options = {}, }) {
32
32
  return jsonRpcResponse.result;
33
33
  };
34
34
  }
35
- //# sourceMappingURL=fetch.mjs.map
35
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKjD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAC,EACpC,UAAU,EACV,OAAO,GAAG,EAAE,GAMb;IAKC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,OAAO,GACX,OAAO,CAAC,mBAAmB,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;YAC/D,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE;YACxD,OAAO;SACR,CAAC,CAAC;QAEH,0EAA0E;QAC1E,4CAA4C;QAC5C,sEAAsE;QACtE,uEAAuE;QACvE,IAAI,OAAO,IAAI,eAAe,EAAE,CAAC;YAC/B,MAAM,SAAS,CAAC,QAAQ,CAAC;gBACvB,IAAI,EAAE,eAAe,CAAC,KAAK;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,OAAO,eAAe,CAAC,MAAM,CAAC;IAChC,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type {\n JsonRpcMiddleware,\n MiddlewareContext,\n} from '@metamask/json-rpc-engine/v2';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { Json, JsonRpcRequest } from '@metamask/utils';\n\nimport type { AbstractRpcServiceLike } from './types.js';\n\n/**\n * Creates middleware for sending a JSON-RPC request through the given RPC\n * service.\n *\n * @param args - The arguments to this function.\n * @param args.rpcService - The RPC service to use.\n * @param args.options - Options.\n * @param args.options.originHttpHeaderKey - If provided, the origin field for\n * each JSON-RPC request will be attached to each outgoing fetch request under\n * this header.\n * @returns The fetch middleware.\n */\nexport function createFetchMiddleware({\n rpcService,\n options = {},\n}: {\n rpcService: AbstractRpcServiceLike;\n options?: {\n originHttpHeaderKey?: string;\n };\n}): JsonRpcMiddleware<\n JsonRpcRequest,\n Json,\n MiddlewareContext<{ origin: string }>\n> {\n return async ({ request, context }) => {\n const origin = context.get('origin');\n const headers =\n options.originHttpHeaderKey !== undefined && origin !== undefined\n ? { [options.originHttpHeaderKey]: origin }\n : {};\n\n const jsonRpcResponse = await rpcService.request(request, {\n headers,\n });\n\n // NOTE: We intentionally do not test to see if `jsonRpcResponse.error` is\n // strictly a JSON-RPC error response as per\n // <https://www.jsonrpc.org/specification#error_object> to account for\n // Ganache returning error objects with extra properties such as `name`\n if ('error' in jsonRpcResponse) {\n throw rpcErrors.internal({\n data: jsonRpcResponse.error,\n });\n }\n return jsonRpcResponse.result;\n };\n}\n"]}
@@ -0,0 +1,17 @@
1
+ export * from './block-cache.js';
2
+ export * from './block-ref-rewrite.js';
3
+ export * from './block-ref.js';
4
+ export * from './block-tracker-inspector.js';
5
+ export { createFetchMiddleware } from './fetch.js';
6
+ export * from './inflight-cache.js';
7
+ export type { PermissionDependency, RequestExecutionPermissionsRequestParams, RequestExecutionPermissionsResult, ProcessRequestExecutionPermissionsHook, } from './methods/wallet-request-execution-permissions.js';
8
+ export type { ProcessRevokeExecutionPermissionHook, RevokeExecutionPermissionRequestParams, RevokeExecutionPermissionResult, } from './methods/wallet-revoke-execution-permission.js';
9
+ export type { GrantedExecutionPermission, GetGrantedExecutionPermissionsResult, ProcessGetGrantedExecutionPermissionsHook, } from './methods/wallet-get-granted-execution-permissions.js';
10
+ export { GrantedExecutionPermissionStruct, GetGrantedExecutionPermissionsResultStruct, } from './methods/wallet-get-granted-execution-permissions.js';
11
+ export type { SupportedExecutionPermissionConfig, GetSupportedExecutionPermissionsResult, ProcessGetSupportedExecutionPermissionsHook, } from './methods/wallet-get-supported-execution-permissions.js';
12
+ export { SupportedExecutionPermissionConfigStruct, GetSupportedExecutionPermissionsResultStruct, } from './methods/wallet-get-supported-execution-permissions.js';
13
+ export * from './providerAsMiddleware.js';
14
+ export { validateTransactionParams } from './utils/validation.js';
15
+ export * from './retryOnEmpty.js';
16
+ export * from './wallet.js';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,cAAc,qBAAqB,CAAC;AACpC,YAAY,EACV,oBAAoB,EACpB,wCAAwC,EACxC,iCAAiC,EACjC,sCAAsC,GACvC,MAAM,mDAAmD,CAAC;AAC3D,YAAY,EACV,oCAAoC,EACpC,sCAAsC,EACtC,+BAA+B,GAChC,MAAM,iDAAiD,CAAC;AACzD,YAAY,EACV,0BAA0B,EAC1B,oCAAoC,EACpC,yCAAyC,GAC1C,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EACL,gCAAgC,EAChC,0CAA0C,GAC3C,MAAM,uDAAuD,CAAC;AAC/D,YAAY,EACV,kCAAkC,EAClC,sCAAsC,EACtC,2CAA2C,GAC5C,MAAM,yDAAyD,CAAC;AACjE,OAAO,EACL,wCAAwC,EACxC,4CAA4C,GAC7C,MAAM,yDAAyD,CAAC;AACjE,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ export * from './block-cache.js';
2
+ export * from './block-ref-rewrite.js';
3
+ export * from './block-ref.js';
4
+ export * from './block-tracker-inspector.js';
5
+ export { createFetchMiddleware } from './fetch.js';
6
+ export * from './inflight-cache.js';
7
+ export { GrantedExecutionPermissionStruct, GetGrantedExecutionPermissionsResultStruct, } from './methods/wallet-get-granted-execution-permissions.js';
8
+ export { SupportedExecutionPermissionConfigStruct, GetSupportedExecutionPermissionsResultStruct, } from './methods/wallet-get-supported-execution-permissions.js';
9
+ export * from './providerAsMiddleware.js';
10
+ export { validateTransactionParams } from './utils/validation.js';
11
+ export * from './retryOnEmpty.js';
12
+ export * from './wallet.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,cAAc,qBAAqB,CAAC;AAiBpC,OAAO,EACL,gCAAgC,EAChC,0CAA0C,GAC3C,MAAM,uDAAuD,CAAC;AAM/D,OAAO,EACL,wCAAwC,EACxC,4CAA4C,GAC7C,MAAM,yDAAyD,CAAC;AACjE,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC","sourcesContent":["export * from './block-cache.js';\nexport * from './block-ref-rewrite.js';\nexport * from './block-ref.js';\nexport * from './block-tracker-inspector.js';\nexport { createFetchMiddleware } from './fetch.js';\nexport * from './inflight-cache.js';\nexport type {\n PermissionDependency,\n RequestExecutionPermissionsRequestParams,\n RequestExecutionPermissionsResult,\n ProcessRequestExecutionPermissionsHook,\n} from './methods/wallet-request-execution-permissions.js';\nexport type {\n ProcessRevokeExecutionPermissionHook,\n RevokeExecutionPermissionRequestParams,\n RevokeExecutionPermissionResult,\n} from './methods/wallet-revoke-execution-permission.js';\nexport type {\n GrantedExecutionPermission,\n GetGrantedExecutionPermissionsResult,\n ProcessGetGrantedExecutionPermissionsHook,\n} from './methods/wallet-get-granted-execution-permissions.js';\nexport {\n GrantedExecutionPermissionStruct,\n GetGrantedExecutionPermissionsResultStruct,\n} from './methods/wallet-get-granted-execution-permissions.js';\nexport type {\n SupportedExecutionPermissionConfig,\n GetSupportedExecutionPermissionsResult,\n ProcessGetSupportedExecutionPermissionsHook,\n} from './methods/wallet-get-supported-execution-permissions.js';\nexport {\n SupportedExecutionPermissionConfigStruct,\n GetSupportedExecutionPermissionsResultStruct,\n} from './methods/wallet-get-supported-execution-permissions.js';\nexport * from './providerAsMiddleware.js';\nexport { validateTransactionParams } from './utils/validation.js';\nexport * from './retryOnEmpty.js';\nexport * from './wallet.js';\n"]}
@@ -1,5 +1,5 @@
1
- import type { JsonRpcMiddleware, MiddlewareContext } from "@metamask/json-rpc-engine/v2";
2
- import type { Json, JsonRpcRequest } from "@metamask/utils";
1
+ import type { JsonRpcMiddleware, MiddlewareContext } from '@metamask/json-rpc-engine/v2';
2
+ import type { Json, JsonRpcRequest } from '@metamask/utils';
3
3
  /**
4
4
  * Creates a middleware that caches inflight requests.
5
5
  * If a request is already in flight, the middleware will wait for the request to complete
@@ -10,4 +10,4 @@ import type { Json, JsonRpcRequest } from "@metamask/utils";
10
10
  export declare function createInflightCacheMiddleware(): JsonRpcMiddleware<JsonRpcRequest, Json, MiddlewareContext<{
11
11
  skipCache: boolean;
12
12
  }>>;
13
- //# sourceMappingURL=inflight-cache.d.cts.map
13
+ //# sourceMappingURL=inflight-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inflight-cache.d.ts","sourceRoot":"","sources":["../src/inflight-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAgB5D;;;;;;GAMG;AACH,wBAAgB,6BAA6B,IAAI,iBAAiB,CAChE,cAAc,EACd,IAAI,EACJ,iBAAiB,CAAC;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAC1C,CAsDA"}
@@ -1,6 +1,6 @@
1
- import { createDeferredPromise } from "@metamask/utils";
2
- import { projectLogger, createModuleLogger } from "./logging-utils.mjs";
3
- import { cacheIdentifierForRequest } from "./utils/cache.mjs";
1
+ import { createDeferredPromise } from '@metamask/utils';
2
+ import { projectLogger, createModuleLogger } from './logging-utils.js';
3
+ import { cacheIdentifierForRequest } from './utils/cache.js';
4
4
  const log = createModuleLogger(projectLogger, 'inflight-cache');
5
5
  /**
6
6
  * Creates a middleware that caches inflight requests.
@@ -83,4 +83,4 @@ function runRequestHandlers(resultOrError, activeRequestHandlers) {
83
83
  });
84
84
  });
85
85
  }
86
- //# sourceMappingURL=inflight-cache.mjs.map
86
+ //# sourceMappingURL=inflight-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inflight-cache.js","sourceRoot":"","sources":["../src/inflight-cache.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n JsonRpcMiddleware,\n MiddlewareContext,\n} from '@metamask/json-rpc-engine/v2';\nimport { createDeferredPromise } from '@metamask/utils';\nimport type { Json, JsonRpcRequest } from '@metamask/utils';\n\nimport { projectLogger, createModuleLogger } from './logging-utils.js';\nimport { cacheIdentifierForRequest } from './utils/cache.js';\n\ntype RequestHandler = [\n (result: Readonly<Json>) => void,\n (error: unknown) => void,\n];\n\ntype InflightRequest = {\n [cacheId: string]: RequestHandler[];\n};\n\nconst log = createModuleLogger(projectLogger, 'inflight-cache');\n\n/**\n * Creates a middleware that caches inflight requests.\n * If a request is already in flight, the middleware will wait for the request to complete\n * and then return the result.\n *\n * @returns A middleware that caches inflight requests.\n */\nexport function createInflightCacheMiddleware(): JsonRpcMiddleware<\n JsonRpcRequest,\n Json,\n MiddlewareContext<{ skipCache: boolean }>\n> {\n const inflightRequests: InflightRequest = {};\n\n return async ({ request, context, next }) => {\n if (context.get('skipCache')) {\n return next();\n }\n\n const cacheId: string | null = cacheIdentifierForRequest(request);\n if (!cacheId) {\n log('Request is not cacheable, proceeding. req = %o', request);\n return next();\n }\n\n // check for matching requests\n let activeRequestHandlers: RequestHandler[] = inflightRequests[cacheId];\n // if found, wait for the active request to be handled\n if (activeRequestHandlers) {\n // setup the response listener and wait for it to be called\n // it will handle copying the result and request fields\n log(\n 'Running %i handler(s) for request %o',\n activeRequestHandlers.length,\n request,\n );\n return await createActiveRequestHandler(activeRequestHandlers);\n }\n\n // setup response handler array for subsequent requests\n activeRequestHandlers = [];\n inflightRequests[cacheId] = activeRequestHandlers;\n // allow request to be handled normally\n log('Carrying original request forward %o', request);\n try {\n const result = (await next()) as Readonly<Json>;\n log(\n 'Running %i collected handler(s) for successful request %o',\n activeRequestHandlers.length,\n request,\n );\n runRequestHandlers({ result }, activeRequestHandlers);\n return result;\n } catch (error) {\n log(\n 'Running %i collected handler(s) for failed request %o',\n activeRequestHandlers.length,\n request,\n );\n runRequestHandlers({ error }, activeRequestHandlers);\n throw error;\n } finally {\n delete inflightRequests[cacheId];\n }\n };\n}\n\n/**\n * Creates a new request handler for the active request.\n *\n * @param activeRequestHandlers - The active request handlers.\n * @returns A promise that resolves to the result of the request.\n */\nfunction createActiveRequestHandler(\n activeRequestHandlers: RequestHandler[],\n): Promise<Readonly<Json>> {\n const { resolve, promise, reject } = createDeferredPromise<Readonly<Json>>();\n activeRequestHandlers.push([\n (result: Readonly<Json>): void => resolve(result),\n (error: unknown): void => reject(error),\n ]);\n return promise;\n}\n\n/**\n * Runs the request handlers for the given result or error.\n *\n * @param resultOrError - The result or error of the request.\n * @param activeRequestHandlers - The active request handlers.\n */\nfunction runRequestHandlers(\n resultOrError: { result: Readonly<Json> } | { error: unknown },\n activeRequestHandlers: RequestHandler[],\n): void {\n // use setTimeout so we can handle the original request first\n setTimeout(() => {\n activeRequestHandlers.forEach(([onSuccess, onError]) => {\n if ('result' in resultOrError) {\n onSuccess(resultOrError.result);\n } else {\n onError(resultOrError.error);\n }\n });\n });\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { createModuleLogger } from '@metamask/utils';
2
+ export declare const projectLogger: import("debug").Debugger;
3
+ export { createModuleLogger };
4
+ //# sourceMappingURL=logging-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging-utils.d.ts","sourceRoot":"","sources":["../src/logging-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1E,eAAO,MAAM,aAAa,0BAAiD,CAAC;AAE5E,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { createProjectLogger, createModuleLogger } from '@metamask/utils';
2
+ export const projectLogger = createProjectLogger('eth-json-rpc-middleware');
3
+ export { createModuleLogger };
4
+ //# sourceMappingURL=logging-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging-utils.js","sourceRoot":"","sources":["../src/logging-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1E,MAAM,CAAC,MAAM,aAAa,GAAG,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;AAE5E,OAAO,EAAE,kBAAkB,EAAE,CAAC","sourcesContent":["import { createProjectLogger, createModuleLogger } from '@metamask/utils';\n\nexport const projectLogger = createProjectLogger('eth-json-rpc-middleware');\n\nexport { createModuleLogger };\n"]}
@@ -1,27 +1,27 @@
1
- import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine/v2";
2
- import type { Infer } from "@metamask/superstruct";
3
- import type { Json, JsonRpcRequest } from "@metamask/utils";
4
- import type { WalletMiddlewareContext } from "../wallet.mjs";
1
+ import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2';
2
+ import type { Infer } from '@metamask/superstruct';
3
+ import type { Json, JsonRpcRequest } from '@metamask/utils';
4
+ import type { WalletMiddlewareContext } from '../wallet.js';
5
5
  /**
6
6
  * Superstruct schema for the `wallet_getGrantedExecutionPermissions` request params.
7
7
  *
8
8
  * This method expects no parameters. Different JSON-RPC clients may send "no params"
9
9
  * in different ways (omitted, empty array, or empty object), so we accept all three.
10
10
  */
11
- export declare const GetGrantedExecutionPermissionsParamsStruct: import("@metamask/superstruct").Struct<[] | {} | undefined, null>;
11
+ export declare const GetGrantedExecutionPermissionsParamsStruct: import("@metamask/superstruct").Struct<{} | [] | undefined, null>;
12
12
  /**
13
13
  * Superstruct schema for a single granted execution permission.
14
14
  */
15
15
  export declare const GrantedExecutionPermissionStruct: import("@metamask/superstruct").Struct<{
16
- context: `0x${string}`;
17
16
  chainId: `0x${string}`;
18
17
  from: `0x${string}`;
19
18
  to: `0x${string}`;
20
19
  permission: {
21
- data: Record<string, unknown>;
22
20
  type: string;
23
21
  isAdjustmentAllowed: boolean;
22
+ data: Record<string, unknown>;
24
23
  };
24
+ context: `0x${string}`;
25
25
  dependencies: {
26
26
  factory: `0x${string}`;
27
27
  factoryData: `0x${string}`;
@@ -32,9 +32,9 @@ export declare const GrantedExecutionPermissionStruct: import("@metamask/superst
32
32
  from: import("@metamask/superstruct").Struct<`0x${string}`, null>;
33
33
  to: import("@metamask/superstruct").Struct<`0x${string}`, null>;
34
34
  permission: import("@metamask/superstruct").Struct<{
35
- data: Record<string, unknown>;
36
35
  type: string;
37
36
  isAdjustmentAllowed: boolean;
37
+ data: Record<string, unknown>;
38
38
  }, {
39
39
  type: import("@metamask/superstruct").Struct<string, null>;
40
40
  isAdjustmentAllowed: import("@metamask/superstruct").Struct<boolean, null>;
@@ -61,30 +61,30 @@ export type GrantedExecutionPermission = Infer<typeof GrantedExecutionPermission
61
61
  * Superstruct schema for the `wallet_getGrantedExecutionPermissions` result.
62
62
  */
63
63
  export declare const GetGrantedExecutionPermissionsResultStruct: import("@metamask/superstruct").Struct<{
64
- context: `0x${string}`;
65
64
  chainId: `0x${string}`;
66
65
  from: `0x${string}`;
67
66
  to: `0x${string}`;
68
67
  permission: {
69
- data: Record<string, unknown>;
70
68
  type: string;
71
69
  isAdjustmentAllowed: boolean;
70
+ data: Record<string, unknown>;
72
71
  };
72
+ context: `0x${string}`;
73
73
  dependencies: {
74
74
  factory: `0x${string}`;
75
75
  factoryData: `0x${string}`;
76
76
  }[];
77
77
  delegationManager: `0x${string}`;
78
78
  }[], import("@metamask/superstruct").Struct<{
79
- context: `0x${string}`;
80
79
  chainId: `0x${string}`;
81
80
  from: `0x${string}`;
82
81
  to: `0x${string}`;
83
82
  permission: {
84
- data: Record<string, unknown>;
85
83
  type: string;
86
84
  isAdjustmentAllowed: boolean;
85
+ data: Record<string, unknown>;
87
86
  };
87
+ context: `0x${string}`;
88
88
  dependencies: {
89
89
  factory: `0x${string}`;
90
90
  factoryData: `0x${string}`;
@@ -95,9 +95,9 @@ export declare const GetGrantedExecutionPermissionsResultStruct: import("@metama
95
95
  from: import("@metamask/superstruct").Struct<`0x${string}`, null>;
96
96
  to: import("@metamask/superstruct").Struct<`0x${string}`, null>;
97
97
  permission: import("@metamask/superstruct").Struct<{
98
- data: Record<string, unknown>;
99
98
  type: string;
100
99
  isAdjustmentAllowed: boolean;
100
+ data: Record<string, unknown>;
101
101
  }, {
102
102
  type: import("@metamask/superstruct").Struct<string, null>;
103
103
  isAdjustmentAllowed: import("@metamask/superstruct").Struct<boolean, null>;
@@ -137,4 +137,4 @@ export type ProcessGetGrantedExecutionPermissionsHook = (req: JsonRpcRequest, co
137
137
  export declare function createWalletGetGrantedExecutionPermissionsHandler({ processGetGrantedExecutionPermissions, }: {
138
138
  processGetGrantedExecutionPermissions?: ProcessGetGrantedExecutionPermissionsHook;
139
139
  }): JsonRpcMiddleware<JsonRpcRequest, Json, WalletMiddlewareContext>;
140
- //# sourceMappingURL=wallet-get-granted-execution-permissions.d.mts.map
140
+ //# sourceMappingURL=wallet-get-granted-execution-permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-get-granted-execution-permissions.d.ts","sourceRoot":"","sources":["../../src/methods/wallet-get-granted-execution-permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAUnD,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAI5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D;;;;;GAKG;AACH,eAAO,MAAM,0CAA0C,mEAAiB,CAAC;AAazE;;GAEG;AACH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ3C,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,KAAK,CAC5C,OAAO,gCAAgC,CACxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0CAA0C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEtD,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oCAAoC,GAAG,IAAI,GACrD,KAAK,CAAC,OAAO,0CAA0C,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,yCAAyC,GAAG,CACtD,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,uBAAuB,KAC7B,OAAO,CAAC,oCAAoC,CAAC,CAAC;AAEnD;;;;;;;;GAQG;AACH,wBAAgB,iDAAiD,CAAC,EAChE,qCAAqC,GACtC,EAAE;IACD,qCAAqC,CAAC,EAAE,yCAAyC,CAAC;CACnF,GAAG,iBAAiB,CAAC,cAAc,EAAE,IAAI,EAAE,uBAAuB,CAAC,CAcnE"}
@@ -1,8 +1,8 @@
1
- import { rpcErrors } from "@metamask/rpc-errors";
2
- import { array, boolean, object, record, string, unknown } from "@metamask/superstruct";
3
- import { HexChecksumAddressStruct, StrictHexStruct } from "@metamask/utils";
4
- import { NoParamsStruct } from "../utils/structs.mjs";
5
- import { validateParams } from "../utils/validation.mjs";
1
+ import { rpcErrors } from '@metamask/rpc-errors';
2
+ import { array, boolean, object, record, string, unknown, } from '@metamask/superstruct';
3
+ import { HexChecksumAddressStruct, StrictHexStruct } from '@metamask/utils';
4
+ import { NoParamsStruct } from '../utils/structs.js';
5
+ import { validateParams } from '../utils/validation.js';
6
6
  /**
7
7
  * Superstruct schema for the `wallet_getGrantedExecutionPermissions` request params.
8
8
  *
@@ -54,4 +54,4 @@ export function createWalletGetGrantedExecutionPermissionsHandler({ processGetGr
54
54
  return await processGetGrantedExecutionPermissions(request, context);
55
55
  };
56
56
  }
57
- //# sourceMappingURL=wallet-get-granted-execution-permissions.mjs.map
57
+ //# sourceMappingURL=wallet-get-granted-execution-permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-get-granted-execution-permissions.js","sourceRoot":"","sources":["../../src/methods/wallet-get-granted-execution-permissions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EACL,KAAK,EACL,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,GACR,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAG5E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,cAAc,CAAC;AAEzE,MAAM,gBAAgB,GAAG,MAAM,CAAC;IAC9B,OAAO,EAAE,eAAe;IACxB,WAAW,EAAE,eAAe;CAC7B,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,MAAM,CAAC;IAC9B,IAAI,EAAE,MAAM,EAAE;IACd,mBAAmB,EAAE,OAAO,EAAE;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC;CAClC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;IACrD,OAAO,EAAE,eAAe;IACxB,IAAI,EAAE,wBAAwB;IAC9B,EAAE,EAAE,wBAAwB;IAC5B,UAAU,EAAE,gBAAgB;IAC5B,OAAO,EAAE,eAAe;IACxB,YAAY,EAAE,KAAK,CAAC,gBAAgB,CAAC;IACrC,iBAAiB,EAAE,wBAAwB;CAC5C,CAAC,CAAC;AASH;;GAEG;AACH,MAAM,CAAC,MAAM,0CAA0C,GAAG,KAAK,CAC7D,gCAAgC,CACjC,CAAC;AAiBF;;;;;;;;GAQG;AACH,MAAM,UAAU,iDAAiD,CAAC,EAChE,qCAAqC,GAGtC;IACC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;QACpC,IAAI,CAAC,qCAAqC,EAAE,CAAC;YAC3C,MAAM,SAAS,CAAC,kBAAkB,CAChC,kEAAkE,CACnE,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAE3B,cAAc,CAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;QAEnE,OAAO,MAAM,qCAAqC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { Infer } from '@metamask/superstruct';\nimport {\n array,\n boolean,\n object,\n record,\n string,\n unknown,\n} from '@metamask/superstruct';\nimport { HexChecksumAddressStruct, StrictHexStruct } from '@metamask/utils';\nimport type { Json, JsonRpcRequest } from '@metamask/utils';\n\nimport { NoParamsStruct } from '../utils/structs.js';\nimport { validateParams } from '../utils/validation.js';\nimport type { WalletMiddlewareContext } from '../wallet.js';\n\n/**\n * Superstruct schema for the `wallet_getGrantedExecutionPermissions` request params.\n *\n * This method expects no parameters. Different JSON-RPC clients may send \"no params\"\n * in different ways (omitted, empty array, or empty object), so we accept all three.\n */\nexport const GetGrantedExecutionPermissionsParamsStruct = NoParamsStruct;\n\nconst DependencyStruct = object({\n factory: StrictHexStruct,\n factoryData: StrictHexStruct,\n});\n\nconst PermissionStruct = object({\n type: string(),\n isAdjustmentAllowed: boolean(),\n data: record(string(), unknown()),\n});\n\n/**\n * Superstruct schema for a single granted execution permission.\n */\nexport const GrantedExecutionPermissionStruct = object({\n chainId: StrictHexStruct,\n from: HexChecksumAddressStruct,\n to: HexChecksumAddressStruct,\n permission: PermissionStruct,\n context: StrictHexStruct,\n dependencies: array(DependencyStruct),\n delegationManager: HexChecksumAddressStruct,\n});\n\n/**\n * Represents a single granted execution permission.\n */\nexport type GrantedExecutionPermission = Infer<\n typeof GrantedExecutionPermissionStruct\n>;\n\n/**\n * Superstruct schema for the `wallet_getGrantedExecutionPermissions` result.\n */\nexport const GetGrantedExecutionPermissionsResultStruct = array(\n GrantedExecutionPermissionStruct,\n);\n\n/**\n * Result type for the `wallet_getGrantedExecutionPermissions` JSON-RPC method.\n * Returns an array of all granted permissions that are not yet revoked.\n */\nexport type GetGrantedExecutionPermissionsResult = Json &\n Infer<typeof GetGrantedExecutionPermissionsResultStruct>;\n\n/**\n * Hook type for processing the `wallet_getGrantedExecutionPermissions` request.\n */\nexport type ProcessGetGrantedExecutionPermissionsHook = (\n req: JsonRpcRequest,\n context: WalletMiddlewareContext,\n) => Promise<GetGrantedExecutionPermissionsResult>;\n\n/**\n * Creates a handler for the `wallet_getGrantedExecutionPermissions` JSON-RPC method.\n *\n * @param options - The options for the handler.\n * @param options.processGetGrantedExecutionPermissions - The function to process the\n * get granted execution permissions request.\n * @returns A JSON-RPC middleware function that handles the\n * `wallet_getGrantedExecutionPermissions` JSON-RPC method.\n */\nexport function createWalletGetGrantedExecutionPermissionsHandler({\n processGetGrantedExecutionPermissions,\n}: {\n processGetGrantedExecutionPermissions?: ProcessGetGrantedExecutionPermissionsHook;\n}): JsonRpcMiddleware<JsonRpcRequest, Json, WalletMiddlewareContext> {\n return async ({ request, context }) => {\n if (!processGetGrantedExecutionPermissions) {\n throw rpcErrors.methodNotSupported(\n 'wallet_getGrantedExecutionPermissions - no middleware configured',\n );\n }\n\n const { params } = request;\n\n validateParams(params, GetGrantedExecutionPermissionsParamsStruct);\n\n return await processGetGrantedExecutionPermissions(request, context);\n };\n}\n"]}