@metamask-previews/eth-json-rpc-middleware 21.0.0-preview-1f85e85a → 21.0.0-preview-536ed51

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 (112) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/dist/block-cache.cjs +41 -32
  3. package/dist/block-cache.cjs.map +1 -1
  4. package/dist/block-cache.d.cts +12 -3
  5. package/dist/block-cache.d.cts.map +1 -1
  6. package/dist/block-cache.d.mts +12 -3
  7. package/dist/block-cache.d.mts.map +1 -1
  8. package/dist/block-cache.mjs +41 -32
  9. package/dist/block-cache.mjs.map +1 -1
  10. package/dist/block-ref-rewrite.cjs +12 -8
  11. package/dist/block-ref-rewrite.cjs.map +1 -1
  12. package/dist/block-ref-rewrite.d.cts +3 -3
  13. package/dist/block-ref-rewrite.d.cts.map +1 -1
  14. package/dist/block-ref-rewrite.d.mts +3 -3
  15. package/dist/block-ref-rewrite.d.mts.map +1 -1
  16. package/dist/block-ref-rewrite.mjs +12 -8
  17. package/dist/block-ref-rewrite.mjs.map +1 -1
  18. package/dist/block-ref.cjs +17 -10
  19. package/dist/block-ref.cjs.map +1 -1
  20. package/dist/block-ref.d.cts +12 -3
  21. package/dist/block-ref.d.cts.map +1 -1
  22. package/dist/block-ref.d.mts +12 -3
  23. package/dist/block-ref.d.mts.map +1 -1
  24. package/dist/block-ref.mjs +17 -10
  25. package/dist/block-ref.mjs.map +1 -1
  26. package/dist/block-tracker-inspector.cjs +28 -25
  27. package/dist/block-tracker-inspector.cjs.map +1 -1
  28. package/dist/block-tracker-inspector.d.cts +3 -3
  29. package/dist/block-tracker-inspector.d.cts.map +1 -1
  30. package/dist/block-tracker-inspector.d.mts +3 -3
  31. package/dist/block-tracker-inspector.d.mts.map +1 -1
  32. package/dist/block-tracker-inspector.mjs +28 -25
  33. package/dist/block-tracker-inspector.mjs.map +1 -1
  34. package/dist/fetch.cjs +8 -12
  35. package/dist/fetch.cjs.map +1 -1
  36. package/dist/fetch.d.cts +5 -3
  37. package/dist/fetch.d.cts.map +1 -1
  38. package/dist/fetch.d.mts +5 -3
  39. package/dist/fetch.d.mts.map +1 -1
  40. package/dist/fetch.mjs +8 -12
  41. package/dist/fetch.mjs.map +1 -1
  42. package/dist/inflight-cache.cjs +61 -45
  43. package/dist/inflight-cache.cjs.map +1 -1
  44. package/dist/inflight-cache.d.cts +12 -3
  45. package/dist/inflight-cache.d.cts.map +1 -1
  46. package/dist/inflight-cache.d.mts +12 -3
  47. package/dist/inflight-cache.d.mts.map +1 -1
  48. package/dist/inflight-cache.mjs +61 -45
  49. package/dist/inflight-cache.mjs.map +1 -1
  50. package/dist/methods/wallet-request-execution-permissions.cjs +20 -9
  51. package/dist/methods/wallet-request-execution-permissions.cjs.map +1 -1
  52. package/dist/methods/wallet-request-execution-permissions.d.cts +14 -3
  53. package/dist/methods/wallet-request-execution-permissions.d.cts.map +1 -1
  54. package/dist/methods/wallet-request-execution-permissions.d.mts +14 -3
  55. package/dist/methods/wallet-request-execution-permissions.d.mts.map +1 -1
  56. package/dist/methods/wallet-request-execution-permissions.mjs +18 -7
  57. package/dist/methods/wallet-request-execution-permissions.mjs.map +1 -1
  58. package/dist/methods/wallet-revoke-execution-permission.cjs +23 -11
  59. package/dist/methods/wallet-revoke-execution-permission.cjs.map +1 -1
  60. package/dist/methods/wallet-revoke-execution-permission.d.cts +19 -5
  61. package/dist/methods/wallet-revoke-execution-permission.d.cts.map +1 -1
  62. package/dist/methods/wallet-revoke-execution-permission.d.mts +19 -5
  63. package/dist/methods/wallet-revoke-execution-permission.d.mts.map +1 -1
  64. package/dist/methods/wallet-revoke-execution-permission.mjs +20 -8
  65. package/dist/methods/wallet-revoke-execution-permission.mjs.map +1 -1
  66. package/dist/providerAsMiddleware.cjs +18 -1
  67. package/dist/providerAsMiddleware.cjs.map +1 -1
  68. package/dist/providerAsMiddleware.d.cts +18 -3
  69. package/dist/providerAsMiddleware.d.cts.map +1 -1
  70. package/dist/providerAsMiddleware.d.mts +18 -3
  71. package/dist/providerAsMiddleware.d.mts.map +1 -1
  72. package/dist/providerAsMiddleware.mjs +16 -0
  73. package/dist/providerAsMiddleware.mjs.map +1 -1
  74. package/dist/retryOnEmpty.cjs +8 -11
  75. package/dist/retryOnEmpty.cjs.map +1 -1
  76. package/dist/retryOnEmpty.d.cts +3 -3
  77. package/dist/retryOnEmpty.d.cts.map +1 -1
  78. package/dist/retryOnEmpty.d.mts +3 -3
  79. package/dist/retryOnEmpty.d.mts.map +1 -1
  80. package/dist/retryOnEmpty.mjs +8 -11
  81. package/dist/retryOnEmpty.mjs.map +1 -1
  82. package/dist/types.cjs.map +1 -1
  83. package/dist/types.d.cts +0 -5
  84. package/dist/types.d.cts.map +1 -1
  85. package/dist/types.d.mts +0 -5
  86. package/dist/types.d.mts.map +1 -1
  87. package/dist/types.mjs.map +1 -1
  88. package/dist/utils/error.cjs +7 -0
  89. package/dist/utils/error.cjs.map +1 -1
  90. package/dist/utils/error.d.cts +7 -0
  91. package/dist/utils/error.d.cts.map +1 -1
  92. package/dist/utils/error.d.mts +7 -0
  93. package/dist/utils/error.d.mts.map +1 -1
  94. package/dist/utils/error.mjs +7 -0
  95. package/dist/utils/error.mjs.map +1 -1
  96. package/dist/utils/validation.cjs +34 -2
  97. package/dist/utils/validation.cjs.map +1 -1
  98. package/dist/utils/validation.d.cts +29 -3
  99. package/dist/utils/validation.d.cts.map +1 -1
  100. package/dist/utils/validation.d.mts +29 -3
  101. package/dist/utils/validation.d.mts.map +1 -1
  102. package/dist/utils/validation.mjs +34 -2
  103. package/dist/utils/validation.mjs.map +1 -1
  104. package/dist/wallet.cjs +199 -92
  105. package/dist/wallet.cjs.map +1 -1
  106. package/dist/wallet.d.cts +35 -8
  107. package/dist/wallet.d.cts.map +1 -1
  108. package/dist/wallet.d.mts +35 -8
  109. package/dist/wallet.d.mts.map +1 -1
  110. package/dist/wallet.mjs +200 -93
  111. package/dist/wallet.mjs.map +1 -1
  112. package/package.json +2 -1
@@ -1,5 +1,7 @@
1
+ import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine/v2";
1
2
  import type { Infer } from "@metamask/superstruct";
2
- import { type Hex, type Json, type JsonRpcRequest, type PendingJsonRpcResponse } from "@metamask/utils";
3
+ import { type Hex, type Json, type JsonRpcRequest } from "@metamask/utils";
4
+ import type { WalletMiddlewareContext } from "../wallet.mjs";
3
5
  declare const PermissionRequestStruct: import("@metamask/superstruct").Struct<{
4
6
  chainId: `0x${string}`;
5
7
  signer: {
@@ -124,8 +126,17 @@ export type RequestExecutionPermissionsResult = Json & (Infer<typeof PermissionR
124
126
  context: Hex;
125
127
  })[];
126
128
  export type ProcessRequestExecutionPermissionsHook = (request: RequestExecutionPermissionsRequestParams, req: JsonRpcRequest) => Promise<RequestExecutionPermissionsResult>;
127
- export declare function walletRequestExecutionPermissions(req: JsonRpcRequest, res: PendingJsonRpcResponse, { processRequestExecutionPermissions, }: {
129
+ /**
130
+ * Creates a handler for the `wallet_requestExecutionPermissions` JSON-RPC method.
131
+ *
132
+ * @param options - The options for the handler.
133
+ * @param options.processRequestExecutionPermissions - The function to process the
134
+ * request execution permissions request.
135
+ * @returns A JSON-RPC middleware function that handles the
136
+ * `wallet_requestExecutionPermissions` JSON-RPC method.
137
+ */
138
+ export declare function createWalletRequestExecutionPermissionsHandler({ processRequestExecutionPermissions, }: {
128
139
  processRequestExecutionPermissions?: ProcessRequestExecutionPermissionsHook;
129
- }): Promise<void>;
140
+ }): JsonRpcMiddleware<JsonRpcRequest, Json, WalletMiddlewareContext>;
130
141
  export {};
131
142
  //# sourceMappingURL=wallet-request-execution-permissions.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-request-execution-permissions.d.mts","sourceRoot":"","sources":["../../src/methods/wallet-request-execution-permissions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,8BAA8B;AAYnD,OAAO,EAEL,KAAK,GAAG,EACR,KAAK,IAAI,EACT,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAE5B,wBAAwB;AAuBzB,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM3B,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAiC,CAAC;AAGhF,MAAM,MAAM,wCAAwC,GAAG,KAAK,CAC1D,OAAO,iCAAiC,CACzC,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG,IAAI,GAClD,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,GAAG;IACvC,OAAO,EAAE,GAAG,CAAC;CACd,CAAC,EAAE,CAAC;AAEP,MAAM,MAAM,sCAAsC,GAAG,CACnD,OAAO,EAAE,wCAAwC,EACjD,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAEhD,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,sBAAsB,EAC3B,EACE,kCAAkC,GACnC,EAAE;IACD,kCAAkC,CAAC,EAAE,sCAAsC,CAAC;CAC7E,GACA,OAAO,CAAC,IAAI,CAAC,CAYf"}
1
+ {"version":3,"file":"wallet-request-execution-permissions.d.mts","sourceRoot":"","sources":["../../src/methods/wallet-request-execution-permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qCAAqC;AAEtE,OAAO,KAAK,EAAE,KAAK,EAAE,8BAA8B;AAYnD,OAAO,EAEL,KAAK,GAAG,EACR,KAAK,IAAI,EACT,KAAK,cAAc,EAEpB,wBAAwB;AAGzB,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAkB;AAqBzD,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM3B,CAAC;AAEH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAiC,CAAC;AAGhF,MAAM,MAAM,wCAAwC,GAAG,KAAK,CAC1D,OAAO,iCAAiC,CACzC,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG,IAAI,GAClD,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,GAAG;IACvC,OAAO,EAAE,GAAG,CAAC;CACd,CAAC,EAAE,CAAC;AAEP,MAAM,MAAM,sCAAsC,GAAG,CACnD,OAAO,EAAE,wCAAwC,EACjD,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,8CAA8C,CAAC,EAC7D,kCAAkC,GACnC,EAAE;IACD,kCAAkC,CAAC,EAAE,sCAAsC,CAAC;CAC7E,GAAG,iBAAiB,CAAC,cAAc,EAAE,IAAI,EAAE,uBAAuB,CAAC,CAcnE"}
@@ -26,12 +26,23 @@ const PermissionRequestStruct = object({
26
26
  rules: optional(union([array(RuleStruct), literal(null)])),
27
27
  });
28
28
  export const RequestExecutionPermissionsStruct = array(PermissionRequestStruct);
29
- export async function walletRequestExecutionPermissions(req, res, { processRequestExecutionPermissions, }) {
30
- if (!processRequestExecutionPermissions) {
31
- throw rpcErrors.methodNotSupported('wallet_requestExecutionPermissions - no middleware configured');
32
- }
33
- const { params } = req;
34
- validateParams(params, RequestExecutionPermissionsStruct);
35
- res.result = await processRequestExecutionPermissions(params, req);
29
+ /**
30
+ * Creates a handler for the `wallet_requestExecutionPermissions` JSON-RPC method.
31
+ *
32
+ * @param options - The options for the handler.
33
+ * @param options.processRequestExecutionPermissions - The function to process the
34
+ * request execution permissions request.
35
+ * @returns A JSON-RPC middleware function that handles the
36
+ * `wallet_requestExecutionPermissions` JSON-RPC method.
37
+ */
38
+ export function createWalletRequestExecutionPermissionsHandler({ processRequestExecutionPermissions, }) {
39
+ return async ({ request }) => {
40
+ if (!processRequestExecutionPermissions) {
41
+ throw rpcErrors.methodNotSupported('wallet_requestExecutionPermissions - no middleware configured');
42
+ }
43
+ const { params } = request;
44
+ validateParams(params, RequestExecutionPermissionsStruct);
45
+ return await processRequestExecutionPermissions(params, request);
46
+ };
36
47
  }
37
48
  //# sourceMappingURL=wallet-request-execution-permissions.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-request-execution-permissions.mjs","sourceRoot":"","sources":["../../src/methods/wallet-request-execution-permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAEjD,OAAO,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,EACR,8BAA8B;AAC/B,OAAO,EACL,wBAAwB,EAKxB,eAAe,EAChB,wBAAwB;AAEzB,OAAO,EAAE,cAAc,EAAE,gCAA4B;AAErD,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,MAAM,UAAU,GAAG,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,EAAE;IACd,mBAAmB,EAAE,OAAO,EAAE;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,MAAM,CAAC;IACjC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,wBAAwB;KAClC,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,MAAM,CAAC;IACrC,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,QAAQ,CAAC,wBAAwB,CAAC;IAC3C,MAAM,EAAE,mBAAmB;IAC3B,UAAU,EAAE,gBAAgB;IAC5B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC3D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iCAAiC,GAAG,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAiBhF,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,GAAmB,EACnB,GAA2B,EAC3B,EACE,kCAAkC,GAGnC;IAED,IAAI,CAAC,kCAAkC,EAAE;QACvC,MAAM,SAAS,CAAC,kBAAkB,CAChC,+DAA+D,CAChE,CAAC;KACH;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,cAAc,CAAC,MAAM,EAAE,iCAAiC,CAAC,CAAC;IAE1D,GAAG,CAAC,MAAM,GAAG,MAAM,kCAAkC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACrE,CAAC","sourcesContent":["import { rpcErrors } from '@metamask/rpc-errors';\nimport type { Infer } from '@metamask/superstruct';\nimport {\n array,\n boolean,\n literal,\n object,\n optional,\n record,\n string,\n union,\n unknown,\n} from '@metamask/superstruct';\nimport {\n HexChecksumAddressStruct,\n type Hex,\n type Json,\n type JsonRpcRequest,\n type PendingJsonRpcResponse,\n StrictHexStruct,\n} from '@metamask/utils';\n\nimport { validateParams } from '../utils/validation';\n\nconst PermissionStruct = object({\n type: string(),\n isAdjustmentAllowed: boolean(),\n data: record(string(), unknown()),\n});\n\nconst RuleStruct = object({\n type: string(),\n isAdjustmentAllowed: boolean(),\n data: record(string(), unknown()),\n});\n\nconst AccountSignerStruct = object({\n type: literal('account'),\n data: object({\n address: HexChecksumAddressStruct,\n }),\n});\n\nconst PermissionRequestStruct = object({\n chainId: StrictHexStruct,\n address: optional(HexChecksumAddressStruct),\n signer: AccountSignerStruct,\n permission: PermissionStruct,\n rules: optional(union([array(RuleStruct), literal(null)])),\n});\n\nexport const RequestExecutionPermissionsStruct = array(PermissionRequestStruct);\n\n// RequestExecutionPermissions API types\nexport type RequestExecutionPermissionsRequestParams = Infer<\n typeof RequestExecutionPermissionsStruct\n>;\n\nexport type RequestExecutionPermissionsResult = Json &\n (Infer<typeof PermissionRequestStruct> & {\n context: Hex;\n })[];\n\nexport type ProcessRequestExecutionPermissionsHook = (\n request: RequestExecutionPermissionsRequestParams,\n req: JsonRpcRequest,\n) => Promise<RequestExecutionPermissionsResult>;\n\nexport async function walletRequestExecutionPermissions(\n req: JsonRpcRequest,\n res: PendingJsonRpcResponse,\n {\n processRequestExecutionPermissions,\n }: {\n processRequestExecutionPermissions?: ProcessRequestExecutionPermissionsHook;\n },\n): Promise<void> {\n if (!processRequestExecutionPermissions) {\n throw rpcErrors.methodNotSupported(\n 'wallet_requestExecutionPermissions - no middleware configured',\n );\n }\n\n const { params } = req;\n\n validateParams(params, RequestExecutionPermissionsStruct);\n\n res.result = await processRequestExecutionPermissions(params, req);\n}\n"]}
1
+ {"version":3,"file":"wallet-request-execution-permissions.mjs","sourceRoot":"","sources":["../../src/methods/wallet-request-execution-permissions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAEjD,OAAO,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,EACR,8BAA8B;AAC/B,OAAO,EACL,wBAAwB,EAIxB,eAAe,EAChB,wBAAwB;AAEzB,OAAO,EAAE,cAAc,EAAE,gCAA4B;AAGrD,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,MAAM,UAAU,GAAG,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,EAAE;IACd,mBAAmB,EAAE,OAAO,EAAE;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,MAAM,CAAC;IACjC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,wBAAwB;KAClC,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,MAAM,CAAC;IACrC,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,QAAQ,CAAC,wBAAwB,CAAC;IAC3C,MAAM,EAAE,mBAAmB;IAC3B,UAAU,EAAE,gBAAgB;IAC5B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;CAC3D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iCAAiC,GAAG,KAAK,CAAC,uBAAuB,CAAC,CAAC;AAiBhF;;;;;;;;GAQG;AACH,MAAM,UAAU,8CAA8C,CAAC,EAC7D,kCAAkC,GAGnC;IACC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3B,IAAI,CAAC,kCAAkC,EAAE;YACvC,MAAM,SAAS,CAAC,kBAAkB,CAChC,+DAA+D,CAChE,CAAC;SACH;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAE3B,cAAc,CAAC,MAAM,EAAE,iCAAiC,CAAC,CAAC;QAE1D,OAAO,MAAM,kCAAkC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnE,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 literal,\n object,\n optional,\n record,\n string,\n union,\n unknown,\n} from '@metamask/superstruct';\nimport {\n HexChecksumAddressStruct,\n type Hex,\n type Json,\n type JsonRpcRequest,\n StrictHexStruct,\n} from '@metamask/utils';\n\nimport { validateParams } from '../utils/validation';\nimport type { WalletMiddlewareContext } from '../wallet';\n\nconst PermissionStruct = object({\n type: string(),\n isAdjustmentAllowed: boolean(),\n data: record(string(), unknown()),\n});\n\nconst RuleStruct = object({\n type: string(),\n isAdjustmentAllowed: boolean(),\n data: record(string(), unknown()),\n});\n\nconst AccountSignerStruct = object({\n type: literal('account'),\n data: object({\n address: HexChecksumAddressStruct,\n }),\n});\n\nconst PermissionRequestStruct = object({\n chainId: StrictHexStruct,\n address: optional(HexChecksumAddressStruct),\n signer: AccountSignerStruct,\n permission: PermissionStruct,\n rules: optional(union([array(RuleStruct), literal(null)])),\n});\n\nexport const RequestExecutionPermissionsStruct = array(PermissionRequestStruct);\n\n// RequestExecutionPermissions API types\nexport type RequestExecutionPermissionsRequestParams = Infer<\n typeof RequestExecutionPermissionsStruct\n>;\n\nexport type RequestExecutionPermissionsResult = Json &\n (Infer<typeof PermissionRequestStruct> & {\n context: Hex;\n })[];\n\nexport type ProcessRequestExecutionPermissionsHook = (\n request: RequestExecutionPermissionsRequestParams,\n req: JsonRpcRequest,\n) => Promise<RequestExecutionPermissionsResult>;\n\n/**\n * Creates a handler for the `wallet_requestExecutionPermissions` JSON-RPC method.\n *\n * @param options - The options for the handler.\n * @param options.processRequestExecutionPermissions - The function to process the\n * request execution permissions request.\n * @returns A JSON-RPC middleware function that handles the\n * `wallet_requestExecutionPermissions` JSON-RPC method.\n */\nexport function createWalletRequestExecutionPermissionsHandler({\n processRequestExecutionPermissions,\n}: {\n processRequestExecutionPermissions?: ProcessRequestExecutionPermissionsHook;\n}): JsonRpcMiddleware<JsonRpcRequest, Json, WalletMiddlewareContext> {\n return async ({ request }) => {\n if (!processRequestExecutionPermissions) {\n throw rpcErrors.methodNotSupported(\n 'wallet_requestExecutionPermissions - no middleware configured',\n );\n }\n\n const { params } = request;\n\n validateParams(params, RequestExecutionPermissionsStruct);\n\n return await processRequestExecutionPermissions(params, request);\n };\n}\n"]}
@@ -1,20 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.walletRevokeExecutionPermission = exports.RevokeExecutionPermissionRequestParamsStruct = exports.RevokeExecutionPermissionResultStruct = void 0;
3
+ exports.createWalletRevokeExecutionPermissionHandler = exports.RevokeExecutionPermissionRequestParamsStruct = exports.RevokeExecutionPermissionResultStruct = void 0;
4
4
  const rpc_errors_1 = require("@metamask/rpc-errors");
5
+ const superstruct_1 = require("@metamask/superstruct");
5
6
  const utils_1 = require("@metamask/utils");
6
7
  const validation_1 = require("../utils/validation.cjs");
7
- exports.RevokeExecutionPermissionResultStruct = (0, utils_1.object)({});
8
- exports.RevokeExecutionPermissionRequestParamsStruct = (0, utils_1.object)({
8
+ exports.RevokeExecutionPermissionResultStruct = (0, superstruct_1.object)({});
9
+ exports.RevokeExecutionPermissionRequestParamsStruct = (0, superstruct_1.object)({
9
10
  permissionContext: utils_1.StrictHexStruct,
10
11
  });
11
- async function walletRevokeExecutionPermission(req, res, { processRevokeExecutionPermission, }) {
12
- if (!processRevokeExecutionPermission) {
13
- throw rpc_errors_1.rpcErrors.methodNotSupported('wallet_revokeExecutionPermission - no middleware configured');
14
- }
15
- const { params } = req;
16
- (0, validation_1.validateParams)(params, exports.RevokeExecutionPermissionRequestParamsStruct);
17
- res.result = await processRevokeExecutionPermission(params, req);
12
+ /**
13
+ * Creates a handler for the `wallet_revokeExecutionPermission` JSON-RPC method.
14
+ *
15
+ * @param options - The options for the handler.
16
+ * @param options.processRevokeExecutionPermission - The function to process the
17
+ * revoke execution permission request.
18
+ * @returns A JSON-RPC middleware function that handles the
19
+ * `wallet_revokeExecutionPermission` JSON-RPC method.
20
+ */
21
+ function createWalletRevokeExecutionPermissionHandler({ processRevokeExecutionPermission, }) {
22
+ return async ({ request }) => {
23
+ if (!processRevokeExecutionPermission) {
24
+ throw rpc_errors_1.rpcErrors.methodNotSupported('wallet_revokeExecutionPermission - no middleware configured');
25
+ }
26
+ const { params } = request;
27
+ (0, validation_1.validateParams)(params, exports.RevokeExecutionPermissionRequestParamsStruct);
28
+ return await processRevokeExecutionPermission(params, request);
29
+ };
18
30
  }
19
- exports.walletRevokeExecutionPermission = walletRevokeExecutionPermission;
31
+ exports.createWalletRevokeExecutionPermissionHandler = createWalletRevokeExecutionPermissionHandler;
20
32
  //# sourceMappingURL=wallet-revoke-execution-permission.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-revoke-execution-permission.cjs","sourceRoot":"","sources":["../../src/methods/wallet-revoke-execution-permission.ts"],"names":[],"mappings":";;;AAAA,qDAAiD;AAEjD,2CAKyB;AAEzB,wDAAqD;AAExC,QAAA,qCAAqC,GAAG,IAAA,cAAM,EAAC,EAAE,CAAC,CAAC;AAMnD,QAAA,4CAA4C,GAAG,IAAA,cAAM,EAAC;IACjE,iBAAiB,EAAE,uBAAe;CACnC,CAAC,CAAC;AAWI,KAAK,UAAU,+BAA+B,CACnD,GAAmB,EACnB,GAA2B,EAC3B,EACE,gCAAgC,GAGjC;IAED,IAAI,CAAC,gCAAgC,EAAE;QACrC,MAAM,sBAAS,CAAC,kBAAkB,CAChC,6DAA6D,CAC9D,CAAC;KACH;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IAAA,2BAAc,EAAC,MAAM,EAAE,oDAA4C,CAAC,CAAC;IAErE,GAAG,CAAC,MAAM,GAAG,MAAM,gCAAgC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACnE,CAAC;AApBD,0EAoBC","sourcesContent":["import { rpcErrors } from '@metamask/rpc-errors';\nimport type { Infer } from '@metamask/superstruct';\nimport {\n type JsonRpcRequest,\n object,\n type PendingJsonRpcResponse,\n StrictHexStruct,\n} from '@metamask/utils';\n\nimport { validateParams } from '../utils/validation';\n\nexport const RevokeExecutionPermissionResultStruct = object({});\n\nexport type RevokeExecutionPermissionResult = Infer<\n typeof RevokeExecutionPermissionResultStruct\n>;\n\nexport const RevokeExecutionPermissionRequestParamsStruct = object({\n permissionContext: StrictHexStruct,\n});\n\nexport type RevokeExecutionPermissionRequestParams = Infer<\n typeof RevokeExecutionPermissionRequestParamsStruct\n>;\n\nexport type ProcessRevokeExecutionPermissionHook = (\n request: RevokeExecutionPermissionRequestParams,\n req: JsonRpcRequest,\n) => Promise<RevokeExecutionPermissionResult>;\n\nexport async function walletRevokeExecutionPermission(\n req: JsonRpcRequest,\n res: PendingJsonRpcResponse,\n {\n processRevokeExecutionPermission,\n }: {\n processRevokeExecutionPermission?: ProcessRevokeExecutionPermissionHook;\n },\n): Promise<void> {\n if (!processRevokeExecutionPermission) {\n throw rpcErrors.methodNotSupported(\n 'wallet_revokeExecutionPermission - no middleware configured',\n );\n }\n\n const { params } = req;\n\n validateParams(params, RevokeExecutionPermissionRequestParamsStruct);\n\n res.result = await processRevokeExecutionPermission(params, req);\n}\n"]}
1
+ {"version":3,"file":"wallet-revoke-execution-permission.cjs","sourceRoot":"","sources":["../../src/methods/wallet-revoke-execution-permission.ts"],"names":[],"mappings":";;;AACA,qDAAiD;AAEjD,uDAA+C;AAE/C,2CAAuE;AAEvE,wDAAqD;AAGxC,QAAA,qCAAqC,GAAG,IAAA,oBAAM,EAAC,EAAE,CAAC,CAAC;AAMnD,QAAA,4CAA4C,GAAG,IAAA,oBAAM,EAAC;IACjE,iBAAiB,EAAE,uBAAe;CACnC,CAAC,CAAC;AAWH;;;;;;;;GAQG;AACH,SAAgB,4CAA4C,CAAC,EAC3D,gCAAgC,GAGjC;IACC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3B,IAAI,CAAC,gCAAgC,EAAE;YACrC,MAAM,sBAAS,CAAC,kBAAkB,CAChC,6DAA6D,CAC9D,CAAC;SACH;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAE3B,IAAA,2BAAc,EAAC,MAAM,EAAE,oDAA4C,CAAC,CAAC;QAErE,OAAO,MAAM,gCAAgC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC,CAAC;AACJ,CAAC;AAlBD,oGAkBC","sourcesContent":["import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { Infer } from '@metamask/superstruct';\nimport { object } from '@metamask/superstruct';\nimport type { Json } from '@metamask/utils';\nimport { type JsonRpcRequest, StrictHexStruct } from '@metamask/utils';\n\nimport { validateParams } from '../utils/validation';\nimport type { WalletMiddlewareContext } from '../wallet';\n\nexport const RevokeExecutionPermissionResultStruct = object({});\n\nexport type RevokeExecutionPermissionResult = Infer<\n typeof RevokeExecutionPermissionResultStruct\n>;\n\nexport const RevokeExecutionPermissionRequestParamsStruct = object({\n permissionContext: StrictHexStruct,\n});\n\nexport type RevokeExecutionPermissionRequestParams = Infer<\n typeof RevokeExecutionPermissionRequestParamsStruct\n>;\n\nexport type ProcessRevokeExecutionPermissionHook = (\n request: RevokeExecutionPermissionRequestParams,\n req: JsonRpcRequest,\n) => Promise<RevokeExecutionPermissionResult>;\n\n/**\n * Creates a handler for the `wallet_revokeExecutionPermission` JSON-RPC method.\n *\n * @param options - The options for the handler.\n * @param options.processRevokeExecutionPermission - The function to process the\n * revoke execution permission request.\n * @returns A JSON-RPC middleware function that handles the\n * `wallet_revokeExecutionPermission` JSON-RPC method.\n */\nexport function createWalletRevokeExecutionPermissionHandler({\n processRevokeExecutionPermission,\n}: {\n processRevokeExecutionPermission?: ProcessRevokeExecutionPermissionHook;\n}): JsonRpcMiddleware<JsonRpcRequest, Json, WalletMiddlewareContext> {\n return async ({ request }) => {\n if (!processRevokeExecutionPermission) {\n throw rpcErrors.methodNotSupported(\n 'wallet_revokeExecutionPermission - no middleware configured',\n );\n }\n\n const { params } = request;\n\n validateParams(params, RevokeExecutionPermissionRequestParamsStruct);\n\n return await processRevokeExecutionPermission(params, request);\n };\n}\n"]}
@@ -1,13 +1,27 @@
1
+ import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine/v2";
1
2
  import type { Infer } from "@metamask/superstruct";
2
- import { type JsonRpcRequest, type PendingJsonRpcResponse } from "@metamask/utils";
3
- export declare const RevokeExecutionPermissionResultStruct: import("@metamask/superstruct").Struct<{}, unknown>;
3
+ import type { Json } from "@metamask/utils";
4
+ import { type JsonRpcRequest } from "@metamask/utils";
5
+ import type { WalletMiddlewareContext } from "../wallet.cjs";
6
+ export declare const RevokeExecutionPermissionResultStruct: import("@metamask/superstruct").Struct<{}, {}>;
4
7
  export type RevokeExecutionPermissionResult = Infer<typeof RevokeExecutionPermissionResultStruct>;
5
8
  export declare const RevokeExecutionPermissionRequestParamsStruct: import("@metamask/superstruct").Struct<{
6
9
  permissionContext: `0x${string}`;
7
- }, unknown>;
10
+ }, {
11
+ permissionContext: import("@metamask/superstruct").Struct<`0x${string}`, null>;
12
+ }>;
8
13
  export type RevokeExecutionPermissionRequestParams = Infer<typeof RevokeExecutionPermissionRequestParamsStruct>;
9
14
  export type ProcessRevokeExecutionPermissionHook = (request: RevokeExecutionPermissionRequestParams, req: JsonRpcRequest) => Promise<RevokeExecutionPermissionResult>;
10
- export declare function walletRevokeExecutionPermission(req: JsonRpcRequest, res: PendingJsonRpcResponse, { processRevokeExecutionPermission, }: {
15
+ /**
16
+ * Creates a handler for the `wallet_revokeExecutionPermission` JSON-RPC method.
17
+ *
18
+ * @param options - The options for the handler.
19
+ * @param options.processRevokeExecutionPermission - The function to process the
20
+ * revoke execution permission request.
21
+ * @returns A JSON-RPC middleware function that handles the
22
+ * `wallet_revokeExecutionPermission` JSON-RPC method.
23
+ */
24
+ export declare function createWalletRevokeExecutionPermissionHandler({ processRevokeExecutionPermission, }: {
11
25
  processRevokeExecutionPermission?: ProcessRevokeExecutionPermissionHook;
12
- }): Promise<void>;
26
+ }): JsonRpcMiddleware<JsonRpcRequest, Json, WalletMiddlewareContext>;
13
27
  //# sourceMappingURL=wallet-revoke-execution-permission.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-revoke-execution-permission.d.cts","sourceRoot":"","sources":["../../src/methods/wallet-revoke-execution-permission.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,8BAA8B;AACnD,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,sBAAsB,EAE5B,wBAAwB;AAIzB,eAAO,MAAM,qCAAqC,qDAAa,CAAC;AAEhE,MAAM,MAAM,+BAA+B,GAAG,KAAK,CACjD,OAAO,qCAAqC,CAC7C,CAAC;AAEF,eAAO,MAAM,4CAA4C;;WAEvD,CAAC;AAEH,MAAM,MAAM,sCAAsC,GAAG,KAAK,CACxD,OAAO,4CAA4C,CACpD,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG,CACjD,OAAO,EAAE,sCAAsC,EAC/C,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAE9C,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,sBAAsB,EAC3B,EACE,gCAAgC,GACjC,EAAE;IACD,gCAAgC,CAAC,EAAE,oCAAoC,CAAC;CACzE,GACA,OAAO,CAAC,IAAI,CAAC,CAYf"}
1
+ {"version":3,"file":"wallet-revoke-execution-permission.d.cts","sourceRoot":"","sources":["../../src/methods/wallet-revoke-execution-permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qCAAqC;AAEtE,OAAO,KAAK,EAAE,KAAK,EAAE,8BAA8B;AAEnD,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAC5C,OAAO,EAAE,KAAK,cAAc,EAAmB,wBAAwB;AAGvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAkB;AAEzD,eAAO,MAAM,qCAAqC,gDAAa,CAAC;AAEhE,MAAM,MAAM,+BAA+B,GAAG,KAAK,CACjD,OAAO,qCAAqC,CAC7C,CAAC;AAEF,eAAO,MAAM,4CAA4C;;;;EAEvD,CAAC;AAEH,MAAM,MAAM,sCAAsC,GAAG,KAAK,CACxD,OAAO,4CAA4C,CACpD,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG,CACjD,OAAO,EAAE,sCAAsC,EAC/C,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAE9C;;;;;;;;GAQG;AACH,wBAAgB,4CAA4C,CAAC,EAC3D,gCAAgC,GACjC,EAAE;IACD,gCAAgC,CAAC,EAAE,oCAAoC,CAAC;CACzE,GAAG,iBAAiB,CAAC,cAAc,EAAE,IAAI,EAAE,uBAAuB,CAAC,CAcnE"}
@@ -1,13 +1,27 @@
1
+ import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine/v2";
1
2
  import type { Infer } from "@metamask/superstruct";
2
- import { type JsonRpcRequest, type PendingJsonRpcResponse } from "@metamask/utils";
3
- export declare const RevokeExecutionPermissionResultStruct: import("@metamask/superstruct").Struct<{}, unknown>;
3
+ import type { Json } from "@metamask/utils";
4
+ import { type JsonRpcRequest } from "@metamask/utils";
5
+ import type { WalletMiddlewareContext } from "../wallet.mjs";
6
+ export declare const RevokeExecutionPermissionResultStruct: import("@metamask/superstruct").Struct<{}, {}>;
4
7
  export type RevokeExecutionPermissionResult = Infer<typeof RevokeExecutionPermissionResultStruct>;
5
8
  export declare const RevokeExecutionPermissionRequestParamsStruct: import("@metamask/superstruct").Struct<{
6
9
  permissionContext: `0x${string}`;
7
- }, unknown>;
10
+ }, {
11
+ permissionContext: import("@metamask/superstruct").Struct<`0x${string}`, null>;
12
+ }>;
8
13
  export type RevokeExecutionPermissionRequestParams = Infer<typeof RevokeExecutionPermissionRequestParamsStruct>;
9
14
  export type ProcessRevokeExecutionPermissionHook = (request: RevokeExecutionPermissionRequestParams, req: JsonRpcRequest) => Promise<RevokeExecutionPermissionResult>;
10
- export declare function walletRevokeExecutionPermission(req: JsonRpcRequest, res: PendingJsonRpcResponse, { processRevokeExecutionPermission, }: {
15
+ /**
16
+ * Creates a handler for the `wallet_revokeExecutionPermission` JSON-RPC method.
17
+ *
18
+ * @param options - The options for the handler.
19
+ * @param options.processRevokeExecutionPermission - The function to process the
20
+ * revoke execution permission request.
21
+ * @returns A JSON-RPC middleware function that handles the
22
+ * `wallet_revokeExecutionPermission` JSON-RPC method.
23
+ */
24
+ export declare function createWalletRevokeExecutionPermissionHandler({ processRevokeExecutionPermission, }: {
11
25
  processRevokeExecutionPermission?: ProcessRevokeExecutionPermissionHook;
12
- }): Promise<void>;
26
+ }): JsonRpcMiddleware<JsonRpcRequest, Json, WalletMiddlewareContext>;
13
27
  //# sourceMappingURL=wallet-revoke-execution-permission.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-revoke-execution-permission.d.mts","sourceRoot":"","sources":["../../src/methods/wallet-revoke-execution-permission.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,8BAA8B;AACnD,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,sBAAsB,EAE5B,wBAAwB;AAIzB,eAAO,MAAM,qCAAqC,qDAAa,CAAC;AAEhE,MAAM,MAAM,+BAA+B,GAAG,KAAK,CACjD,OAAO,qCAAqC,CAC7C,CAAC;AAEF,eAAO,MAAM,4CAA4C;;WAEvD,CAAC;AAEH,MAAM,MAAM,sCAAsC,GAAG,KAAK,CACxD,OAAO,4CAA4C,CACpD,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG,CACjD,OAAO,EAAE,sCAAsC,EAC/C,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAE9C,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,sBAAsB,EAC3B,EACE,gCAAgC,GACjC,EAAE;IACD,gCAAgC,CAAC,EAAE,oCAAoC,CAAC;CACzE,GACA,OAAO,CAAC,IAAI,CAAC,CAYf"}
1
+ {"version":3,"file":"wallet-revoke-execution-permission.d.mts","sourceRoot":"","sources":["../../src/methods/wallet-revoke-execution-permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qCAAqC;AAEtE,OAAO,KAAK,EAAE,KAAK,EAAE,8BAA8B;AAEnD,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAC5C,OAAO,EAAE,KAAK,cAAc,EAAmB,wBAAwB;AAGvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAkB;AAEzD,eAAO,MAAM,qCAAqC,gDAAa,CAAC;AAEhE,MAAM,MAAM,+BAA+B,GAAG,KAAK,CACjD,OAAO,qCAAqC,CAC7C,CAAC;AAEF,eAAO,MAAM,4CAA4C;;;;EAEvD,CAAC;AAEH,MAAM,MAAM,sCAAsC,GAAG,KAAK,CACxD,OAAO,4CAA4C,CACpD,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG,CACjD,OAAO,EAAE,sCAAsC,EAC/C,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAE9C;;;;;;;;GAQG;AACH,wBAAgB,4CAA4C,CAAC,EAC3D,gCAAgC,GACjC,EAAE;IACD,gCAAgC,CAAC,EAAE,oCAAoC,CAAC;CACzE,GAAG,iBAAiB,CAAC,cAAc,EAAE,IAAI,EAAE,uBAAuB,CAAC,CAcnE"}
@@ -1,16 +1,28 @@
1
1
  import { rpcErrors } from "@metamask/rpc-errors";
2
- import { object, StrictHexStruct } from "@metamask/utils";
2
+ import { object } from "@metamask/superstruct";
3
+ import { StrictHexStruct } from "@metamask/utils";
3
4
  import { validateParams } from "../utils/validation.mjs";
4
5
  export const RevokeExecutionPermissionResultStruct = object({});
5
6
  export const RevokeExecutionPermissionRequestParamsStruct = object({
6
7
  permissionContext: StrictHexStruct,
7
8
  });
8
- export async function walletRevokeExecutionPermission(req, res, { processRevokeExecutionPermission, }) {
9
- if (!processRevokeExecutionPermission) {
10
- throw rpcErrors.methodNotSupported('wallet_revokeExecutionPermission - no middleware configured');
11
- }
12
- const { params } = req;
13
- validateParams(params, RevokeExecutionPermissionRequestParamsStruct);
14
- res.result = await processRevokeExecutionPermission(params, req);
9
+ /**
10
+ * Creates a handler for the `wallet_revokeExecutionPermission` JSON-RPC method.
11
+ *
12
+ * @param options - The options for the handler.
13
+ * @param options.processRevokeExecutionPermission - The function to process the
14
+ * revoke execution permission request.
15
+ * @returns A JSON-RPC middleware function that handles the
16
+ * `wallet_revokeExecutionPermission` JSON-RPC method.
17
+ */
18
+ export function createWalletRevokeExecutionPermissionHandler({ processRevokeExecutionPermission, }) {
19
+ return async ({ request }) => {
20
+ if (!processRevokeExecutionPermission) {
21
+ throw rpcErrors.methodNotSupported('wallet_revokeExecutionPermission - no middleware configured');
22
+ }
23
+ const { params } = request;
24
+ validateParams(params, RevokeExecutionPermissionRequestParamsStruct);
25
+ return await processRevokeExecutionPermission(params, request);
26
+ };
15
27
  }
16
28
  //# sourceMappingURL=wallet-revoke-execution-permission.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-revoke-execution-permission.mjs","sourceRoot":"","sources":["../../src/methods/wallet-revoke-execution-permission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAEjD,OAAO,EAEL,MAAM,EAEN,eAAe,EAChB,wBAAwB;AAEzB,OAAO,EAAE,cAAc,EAAE,gCAA4B;AAErD,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAMhE,MAAM,CAAC,MAAM,4CAA4C,GAAG,MAAM,CAAC;IACjE,iBAAiB,EAAE,eAAe;CACnC,CAAC,CAAC;AAWH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,GAAmB,EACnB,GAA2B,EAC3B,EACE,gCAAgC,GAGjC;IAED,IAAI,CAAC,gCAAgC,EAAE;QACrC,MAAM,SAAS,CAAC,kBAAkB,CAChC,6DAA6D,CAC9D,CAAC;KACH;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,cAAc,CAAC,MAAM,EAAE,4CAA4C,CAAC,CAAC;IAErE,GAAG,CAAC,MAAM,GAAG,MAAM,gCAAgC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACnE,CAAC","sourcesContent":["import { rpcErrors } from '@metamask/rpc-errors';\nimport type { Infer } from '@metamask/superstruct';\nimport {\n type JsonRpcRequest,\n object,\n type PendingJsonRpcResponse,\n StrictHexStruct,\n} from '@metamask/utils';\n\nimport { validateParams } from '../utils/validation';\n\nexport const RevokeExecutionPermissionResultStruct = object({});\n\nexport type RevokeExecutionPermissionResult = Infer<\n typeof RevokeExecutionPermissionResultStruct\n>;\n\nexport const RevokeExecutionPermissionRequestParamsStruct = object({\n permissionContext: StrictHexStruct,\n});\n\nexport type RevokeExecutionPermissionRequestParams = Infer<\n typeof RevokeExecutionPermissionRequestParamsStruct\n>;\n\nexport type ProcessRevokeExecutionPermissionHook = (\n request: RevokeExecutionPermissionRequestParams,\n req: JsonRpcRequest,\n) => Promise<RevokeExecutionPermissionResult>;\n\nexport async function walletRevokeExecutionPermission(\n req: JsonRpcRequest,\n res: PendingJsonRpcResponse,\n {\n processRevokeExecutionPermission,\n }: {\n processRevokeExecutionPermission?: ProcessRevokeExecutionPermissionHook;\n },\n): Promise<void> {\n if (!processRevokeExecutionPermission) {\n throw rpcErrors.methodNotSupported(\n 'wallet_revokeExecutionPermission - no middleware configured',\n );\n }\n\n const { params } = req;\n\n validateParams(params, RevokeExecutionPermissionRequestParamsStruct);\n\n res.result = await processRevokeExecutionPermission(params, req);\n}\n"]}
1
+ {"version":3,"file":"wallet-revoke-execution-permission.mjs","sourceRoot":"","sources":["../../src/methods/wallet-revoke-execution-permission.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,6BAA6B;AAEjD,OAAO,EAAE,MAAM,EAAE,8BAA8B;AAE/C,OAAO,EAAuB,eAAe,EAAE,wBAAwB;AAEvE,OAAO,EAAE,cAAc,EAAE,gCAA4B;AAGrD,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAMhE,MAAM,CAAC,MAAM,4CAA4C,GAAG,MAAM,CAAC;IACjE,iBAAiB,EAAE,eAAe;CACnC,CAAC,CAAC;AAWH;;;;;;;;GAQG;AACH,MAAM,UAAU,4CAA4C,CAAC,EAC3D,gCAAgC,GAGjC;IACC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3B,IAAI,CAAC,gCAAgC,EAAE;YACrC,MAAM,SAAS,CAAC,kBAAkB,CAChC,6DAA6D,CAC9D,CAAC;SACH;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAE3B,cAAc,CAAC,MAAM,EAAE,4CAA4C,CAAC,CAAC;QAErE,OAAO,MAAM,gCAAgC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjE,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 { object } from '@metamask/superstruct';\nimport type { Json } from '@metamask/utils';\nimport { type JsonRpcRequest, StrictHexStruct } from '@metamask/utils';\n\nimport { validateParams } from '../utils/validation';\nimport type { WalletMiddlewareContext } from '../wallet';\n\nexport const RevokeExecutionPermissionResultStruct = object({});\n\nexport type RevokeExecutionPermissionResult = Infer<\n typeof RevokeExecutionPermissionResultStruct\n>;\n\nexport const RevokeExecutionPermissionRequestParamsStruct = object({\n permissionContext: StrictHexStruct,\n});\n\nexport type RevokeExecutionPermissionRequestParams = Infer<\n typeof RevokeExecutionPermissionRequestParamsStruct\n>;\n\nexport type ProcessRevokeExecutionPermissionHook = (\n request: RevokeExecutionPermissionRequestParams,\n req: JsonRpcRequest,\n) => Promise<RevokeExecutionPermissionResult>;\n\n/**\n * Creates a handler for the `wallet_revokeExecutionPermission` JSON-RPC method.\n *\n * @param options - The options for the handler.\n * @param options.processRevokeExecutionPermission - The function to process the\n * revoke execution permission request.\n * @returns A JSON-RPC middleware function that handles the\n * `wallet_revokeExecutionPermission` JSON-RPC method.\n */\nexport function createWalletRevokeExecutionPermissionHandler({\n processRevokeExecutionPermission,\n}: {\n processRevokeExecutionPermission?: ProcessRevokeExecutionPermissionHook;\n}): JsonRpcMiddleware<JsonRpcRequest, Json, WalletMiddlewareContext> {\n return async ({ request }) => {\n if (!processRevokeExecutionPermission) {\n throw rpcErrors.methodNotSupported(\n 'wallet_revokeExecutionPermission - no middleware configured',\n );\n }\n\n const { params } = request;\n\n validateParams(params, RevokeExecutionPermissionRequestParamsStruct);\n\n return await processRevokeExecutionPermission(params, request);\n };\n}\n"]}
@@ -1,11 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.providerAsMiddleware = void 0;
3
+ exports.providerAsMiddlewareV2 = exports.providerAsMiddleware = void 0;
4
4
  const json_rpc_engine_1 = require("@metamask/json-rpc-engine");
5
+ /**
6
+ * Creates a legacy JSON-RPC middleware that forwards requests to a provider.
7
+ *
8
+ * @param provider - The provider to forward requests to.
9
+ * @returns A legacy JSON-RPC middleware that forwards requests to the provider.
10
+ * @deprecated Use {@link providerAsMiddlewareV2} instead.
11
+ */
5
12
  function providerAsMiddleware(provider) {
6
13
  return (0, json_rpc_engine_1.createAsyncMiddleware)(async (req, res) => {
7
14
  res.result = await provider.request(req);
8
15
  });
9
16
  }
10
17
  exports.providerAsMiddleware = providerAsMiddleware;
18
+ /**
19
+ * Creates a V2 JSON-RPC middleware that forwards requests to a provider.
20
+ *
21
+ * @param provider - The provider to forward requests to.
22
+ * @returns A V2 JSON-RPC middleware that forwards requests to the provider.
23
+ */
24
+ function providerAsMiddlewareV2(provider) {
25
+ return async ({ request }) => provider.request(request);
26
+ }
27
+ exports.providerAsMiddlewareV2 = providerAsMiddlewareV2;
11
28
  //# sourceMappingURL=providerAsMiddleware.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"providerAsMiddleware.cjs","sourceRoot":"","sources":["../src/providerAsMiddleware.ts"],"names":[],"mappings":";;;AACA,+DAGmC;AAGnC,SAAgB,oBAAoB,CAClC,QAA0B;IAE1B,OAAO,IAAA,uCAAqB,EAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9C,GAAG,CAAC,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC;AAND,oDAMC","sourcesContent":["import type { InternalProvider } from '@metamask/eth-json-rpc-provider';\nimport {\n createAsyncMiddleware,\n type JsonRpcMiddleware,\n} from '@metamask/json-rpc-engine';\nimport type { Json, JsonRpcParams } from '@metamask/utils';\n\nexport function providerAsMiddleware(\n provider: InternalProvider,\n): JsonRpcMiddleware<JsonRpcParams, Json> {\n return createAsyncMiddleware(async (req, res) => {\n res.result = await provider.request(req);\n });\n}\n"]}
1
+ {"version":3,"file":"providerAsMiddleware.cjs","sourceRoot":"","sources":["../src/providerAsMiddleware.ts"],"names":[],"mappings":";;;AACA,+DAGmC;AAInC;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAClC,QAA0B;IAE1B,OAAO,IAAA,uCAAqB,EAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9C,GAAG,CAAC,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC;AAND,oDAMC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB,CACpC,QAA0B;IAE1B,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1D,CAAC;AAJD,wDAIC","sourcesContent":["import type { InternalProvider } from '@metamask/eth-json-rpc-provider';\nimport {\n createAsyncMiddleware,\n type JsonRpcMiddleware as LegacyJsonRpcMiddleware,\n} from '@metamask/json-rpc-engine';\nimport type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2';\nimport type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils';\n\n/**\n * Creates a legacy JSON-RPC middleware that forwards requests to a provider.\n *\n * @param provider - The provider to forward requests to.\n * @returns A legacy JSON-RPC middleware that forwards requests to the provider.\n * @deprecated Use {@link providerAsMiddlewareV2} instead.\n */\nexport function providerAsMiddleware(\n provider: InternalProvider,\n): LegacyJsonRpcMiddleware<JsonRpcParams, Json> {\n return createAsyncMiddleware(async (req, res) => {\n res.result = await provider.request(req);\n });\n}\n\n/**\n * Creates a V2 JSON-RPC middleware that forwards requests to a provider.\n *\n * @param provider - The provider to forward requests to.\n * @returns A V2 JSON-RPC middleware that forwards requests to the provider.\n */\nexport function providerAsMiddlewareV2(\n provider: InternalProvider,\n): JsonRpcMiddleware<JsonRpcRequest, Json> {\n return async ({ request }) => provider.request(request);\n}\n"]}
@@ -1,5 +1,20 @@
1
1
  import type { InternalProvider } from "@metamask/eth-json-rpc-provider";
2
- import { type JsonRpcMiddleware } from "@metamask/json-rpc-engine";
3
- import type { Json, JsonRpcParams } from "@metamask/utils";
4
- export declare function providerAsMiddleware(provider: InternalProvider): JsonRpcMiddleware<JsonRpcParams, Json>;
2
+ import { type JsonRpcMiddleware as LegacyJsonRpcMiddleware } from "@metamask/json-rpc-engine";
3
+ import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine/v2";
4
+ import type { Json, JsonRpcParams, JsonRpcRequest } from "@metamask/utils";
5
+ /**
6
+ * Creates a legacy JSON-RPC middleware that forwards requests to a provider.
7
+ *
8
+ * @param provider - The provider to forward requests to.
9
+ * @returns A legacy JSON-RPC middleware that forwards requests to the provider.
10
+ * @deprecated Use {@link providerAsMiddlewareV2} instead.
11
+ */
12
+ export declare function providerAsMiddleware(provider: InternalProvider): LegacyJsonRpcMiddleware<JsonRpcParams, Json>;
13
+ /**
14
+ * Creates a V2 JSON-RPC middleware that forwards requests to a provider.
15
+ *
16
+ * @param provider - The provider to forward requests to.
17
+ * @returns A V2 JSON-RPC middleware that forwards requests to the provider.
18
+ */
19
+ export declare function providerAsMiddlewareV2(provider: InternalProvider): JsonRpcMiddleware<JsonRpcRequest, Json>;
5
20
  //# sourceMappingURL=providerAsMiddleware.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"providerAsMiddleware.d.cts","sourceRoot":"","sources":["../src/providerAsMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,wCAAwC;AACxE,OAAO,EAEL,KAAK,iBAAiB,EACvB,kCAAkC;AACnC,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAE3D,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,gBAAgB,GACzB,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CAIxC"}
1
+ {"version":3,"file":"providerAsMiddleware.d.cts","sourceRoot":"","sources":["../src/providerAsMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,wCAAwC;AACxE,OAAO,EAEL,KAAK,iBAAiB,IAAI,uBAAuB,EAClD,kCAAkC;AACnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,qCAAqC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,wBAAwB;AAE3E;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,gBAAgB,GACzB,uBAAuB,CAAC,aAAa,EAAE,IAAI,CAAC,CAI9C;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,gBAAgB,GACzB,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,CAEzC"}
@@ -1,5 +1,20 @@
1
1
  import type { InternalProvider } from "@metamask/eth-json-rpc-provider";
2
- import { type JsonRpcMiddleware } from "@metamask/json-rpc-engine";
3
- import type { Json, JsonRpcParams } from "@metamask/utils";
4
- export declare function providerAsMiddleware(provider: InternalProvider): JsonRpcMiddleware<JsonRpcParams, Json>;
2
+ import { type JsonRpcMiddleware as LegacyJsonRpcMiddleware } from "@metamask/json-rpc-engine";
3
+ import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine/v2";
4
+ import type { Json, JsonRpcParams, JsonRpcRequest } from "@metamask/utils";
5
+ /**
6
+ * Creates a legacy JSON-RPC middleware that forwards requests to a provider.
7
+ *
8
+ * @param provider - The provider to forward requests to.
9
+ * @returns A legacy JSON-RPC middleware that forwards requests to the provider.
10
+ * @deprecated Use {@link providerAsMiddlewareV2} instead.
11
+ */
12
+ export declare function providerAsMiddleware(provider: InternalProvider): LegacyJsonRpcMiddleware<JsonRpcParams, Json>;
13
+ /**
14
+ * Creates a V2 JSON-RPC middleware that forwards requests to a provider.
15
+ *
16
+ * @param provider - The provider to forward requests to.
17
+ * @returns A V2 JSON-RPC middleware that forwards requests to the provider.
18
+ */
19
+ export declare function providerAsMiddlewareV2(provider: InternalProvider): JsonRpcMiddleware<JsonRpcRequest, Json>;
5
20
  //# sourceMappingURL=providerAsMiddleware.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"providerAsMiddleware.d.mts","sourceRoot":"","sources":["../src/providerAsMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,wCAAwC;AACxE,OAAO,EAEL,KAAK,iBAAiB,EACvB,kCAAkC;AACnC,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAE3D,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,gBAAgB,GACzB,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CAIxC"}
1
+ {"version":3,"file":"providerAsMiddleware.d.mts","sourceRoot":"","sources":["../src/providerAsMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,wCAAwC;AACxE,OAAO,EAEL,KAAK,iBAAiB,IAAI,uBAAuB,EAClD,kCAAkC;AACnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,qCAAqC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,cAAc,EAAE,wBAAwB;AAE3E;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,gBAAgB,GACzB,uBAAuB,CAAC,aAAa,EAAE,IAAI,CAAC,CAI9C;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,gBAAgB,GACzB,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,CAEzC"}
@@ -1,7 +1,23 @@
1
1
  import { createAsyncMiddleware } from "@metamask/json-rpc-engine";
2
+ /**
3
+ * Creates a legacy JSON-RPC middleware that forwards requests to a provider.
4
+ *
5
+ * @param provider - The provider to forward requests to.
6
+ * @returns A legacy JSON-RPC middleware that forwards requests to the provider.
7
+ * @deprecated Use {@link providerAsMiddlewareV2} instead.
8
+ */
2
9
  export function providerAsMiddleware(provider) {
3
10
  return createAsyncMiddleware(async (req, res) => {
4
11
  res.result = await provider.request(req);
5
12
  });
6
13
  }
14
+ /**
15
+ * Creates a V2 JSON-RPC middleware that forwards requests to a provider.
16
+ *
17
+ * @param provider - The provider to forward requests to.
18
+ * @returns A V2 JSON-RPC middleware that forwards requests to the provider.
19
+ */
20
+ export function providerAsMiddlewareV2(provider) {
21
+ return async ({ request }) => provider.request(request);
22
+ }
7
23
  //# sourceMappingURL=providerAsMiddleware.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"providerAsMiddleware.mjs","sourceRoot":"","sources":["../src/providerAsMiddleware.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EAEtB,kCAAkC;AAGnC,MAAM,UAAU,oBAAoB,CAClC,QAA0B;IAE1B,OAAO,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9C,GAAG,CAAC,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { InternalProvider } from '@metamask/eth-json-rpc-provider';\nimport {\n createAsyncMiddleware,\n type JsonRpcMiddleware,\n} from '@metamask/json-rpc-engine';\nimport type { Json, JsonRpcParams } from '@metamask/utils';\n\nexport function providerAsMiddleware(\n provider: InternalProvider,\n): JsonRpcMiddleware<JsonRpcParams, Json> {\n return createAsyncMiddleware(async (req, res) => {\n res.result = await provider.request(req);\n });\n}\n"]}
1
+ {"version":3,"file":"providerAsMiddleware.mjs","sourceRoot":"","sources":["../src/providerAsMiddleware.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EAEtB,kCAAkC;AAInC;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAA0B;IAE1B,OAAO,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9C,GAAG,CAAC,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAA0B;IAE1B,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC1D,CAAC","sourcesContent":["import type { InternalProvider } from '@metamask/eth-json-rpc-provider';\nimport {\n createAsyncMiddleware,\n type JsonRpcMiddleware as LegacyJsonRpcMiddleware,\n} from '@metamask/json-rpc-engine';\nimport type { JsonRpcMiddleware } from '@metamask/json-rpc-engine/v2';\nimport type { Json, JsonRpcParams, JsonRpcRequest } from '@metamask/utils';\n\n/**\n * Creates a legacy JSON-RPC middleware that forwards requests to a provider.\n *\n * @param provider - The provider to forward requests to.\n * @returns A legacy JSON-RPC middleware that forwards requests to the provider.\n * @deprecated Use {@link providerAsMiddlewareV2} instead.\n */\nexport function providerAsMiddleware(\n provider: InternalProvider,\n): LegacyJsonRpcMiddleware<JsonRpcParams, Json> {\n return createAsyncMiddleware(async (req, res) => {\n res.result = await provider.request(req);\n });\n}\n\n/**\n * Creates a V2 JSON-RPC middleware that forwards requests to a provider.\n *\n * @param provider - The provider to forward requests to.\n * @returns A V2 JSON-RPC middleware that forwards requests to the provider.\n */\nexport function providerAsMiddlewareV2(\n provider: InternalProvider,\n): JsonRpcMiddleware<JsonRpcRequest, Json> {\n return async ({ request }) => provider.request(request);\n}\n"]}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createRetryOnEmptyMiddleware = void 0;
4
- const json_rpc_engine_1 = require("@metamask/json-rpc-engine");
5
- const full_1 = require("klona/full");
4
+ const klona_1 = require("klona");
6
5
  const logging_utils_1 = require("./logging-utils.cjs");
7
6
  const cache_1 = require("./utils/cache.cjs");
8
7
  const error_1 = require("./utils/error.cjs");
@@ -32,15 +31,15 @@ function createRetryOnEmptyMiddleware({ provider, blockTracker, } = {}) {
32
31
  if (!blockTracker) {
33
32
  throw Error('RetryOnEmptyMiddleware - mandatory "blockTracker" option is missing.');
34
33
  }
35
- return (0, json_rpc_engine_1.createAsyncMiddleware)(async (req, res, next) => {
36
- const blockRefIndex = (0, cache_1.blockTagParamIndex)(req.method);
34
+ return async ({ request, next }) => {
35
+ const blockRefIndex = (0, cache_1.blockTagParamIndex)(request.method);
37
36
  // skip if method does not include blockRef
38
37
  if (blockRefIndex === undefined) {
39
38
  return next();
40
39
  }
41
40
  // skip if not exact block references
42
- let blockRef = Array.isArray(req.params) && req.params[blockRefIndex]
43
- ? req.params[blockRefIndex]
41
+ let blockRef = Array.isArray(request.params) && request.params[blockRefIndex]
42
+ ? request.params[blockRefIndex]
44
43
  : undefined;
45
44
  // omitted blockRef implies "latest"
46
45
  if (blockRef === undefined) {
@@ -65,7 +64,7 @@ function createRetryOnEmptyMiddleware({ provider, blockTracker, } = {}) {
65
64
  }
66
65
  log('Requested block number %o is not higher than latest block number %o, trying request until non-empty response is received', blockRefNumber, latestBlockNumber);
67
66
  // create child request with specific block-ref
68
- const childRequest = (0, full_1.klona)(req);
67
+ const childRequest = (0, klona_1.klona)(request);
69
68
  // attempt child request until non-empty response is received
70
69
  const childResult = await retry(10, async () => {
71
70
  log('Performing request %o', childRequest);
@@ -79,10 +78,8 @@ function createRetryOnEmptyMiddleware({ provider, blockTracker, } = {}) {
79
78
  return attemptResult;
80
79
  });
81
80
  log('Copying result %o', childResult);
82
- // copy child result onto original response
83
- res.result = childResult;
84
- return undefined;
85
- });
81
+ return childResult;
82
+ };
86
83
  }
87
84
  exports.createRetryOnEmptyMiddleware = createRetryOnEmptyMiddleware;
88
85
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"retryOnEmpty.cjs","sourceRoot":"","sources":["../src/retryOnEmpty.ts"],"names":[],"mappings":"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","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';\nimport { createAsyncMiddleware } from '@metamask/json-rpc-engine';\nimport type { Json, JsonRpcParams } from '@metamask/utils';\nimport { klona } from 'klona/full';\n\nimport { projectLogger, createModuleLogger } from './logging-utils';\nimport type { Block } from './types';\nimport { blockTagParamIndex } from './utils/cache';\nimport { isExecutionRevertedError } from './utils/error';\nimport { timeout } from './utils/timeout';\n\n//\n// RetryOnEmptyMiddleware will retry any request with an empty response that has\n// a numbered block reference at or lower than the blockTracker's latest block.\n// Its useful for dealing with load-balanced ethereum JSON RPC\n// nodes that are not always in sync with each other.\n//\n\nconst log = createModuleLogger(projectLogger, 'retry-on-empty');\n// empty values used to determine if a request should be retried\n// `<nil>` comes from https://github.com/ethereum/go-ethereum/issues/16925\nconst emptyValues = [null, '\\u003cnil\\u003e'];\n\n/**\n * Creates a middleware that retries requests with empty responses.\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 createRetryOnEmptyMiddleware({\n provider,\n blockTracker,\n}: {\n provider?: InternalProvider;\n blockTracker?: PollingBlockTracker;\n} = {}): JsonRpcMiddleware<JsonRpcParams, Json> {\n if (!provider) {\n throw Error(\n 'RetryOnEmptyMiddleware - mandatory \"provider\" option is missing.',\n );\n }\n\n if (!blockTracker) {\n throw Error(\n 'RetryOnEmptyMiddleware - mandatory \"blockTracker\" option is missing.',\n );\n }\n\n return createAsyncMiddleware(async (req, res, next) => {\n const blockRefIndex: number | undefined = blockTagParamIndex(req.method);\n // skip if method does not include blockRef\n if (blockRefIndex === undefined) {\n return next();\n }\n // skip if not exact block references\n let blockRef: string | undefined =\n Array.isArray(req.params) && req.params[blockRefIndex]\n ? (req.params[blockRefIndex] as string)\n : undefined;\n // omitted blockRef implies \"latest\"\n if (blockRef === undefined) {\n blockRef = 'latest';\n }\n\n // skip if non-number block reference\n if (['latest', 'pending'].includes(blockRef)) {\n return next();\n }\n // skip if block refernce is not a valid number\n const blockRefNumber: number = Number.parseInt(blockRef.slice(2), 16);\n if (Number.isNaN(blockRefNumber)) {\n return next();\n }\n // lookup latest block\n const latestBlockNumberHex: string = await blockTracker.getLatestBlock();\n const latestBlockNumber: number = Number.parseInt(\n latestBlockNumberHex.slice(2),\n 16,\n );\n // skip if request block number is higher than current\n if (blockRefNumber > latestBlockNumber) {\n log(\n 'Requested block number %o is higher than latest block number %o, falling through to original request',\n blockRefNumber,\n latestBlockNumber,\n );\n return next();\n }\n\n log(\n 'Requested block number %o is not higher than latest block number %o, trying request until non-empty response is received',\n blockRefNumber,\n latestBlockNumber,\n );\n\n // create child request with specific block-ref\n const childRequest = klona(req);\n // attempt child request until non-empty response is received\n const childResult = await retry(10, async () => {\n log('Performing request %o', childRequest);\n const attemptResult = await provider.request<JsonRpcParams, Block>(\n childRequest,\n );\n log('Result is %o', attemptResult);\n // verify result\n const allEmptyValues: unknown[] = emptyValues;\n if (allEmptyValues.includes(attemptResult)) {\n throw new Error(\n `RetryOnEmptyMiddleware - empty result \"${JSON.stringify(\n attemptResult,\n )}\" for request \"${JSON.stringify(childRequest)}\"`,\n );\n }\n return attemptResult;\n });\n log('Copying result %o', childResult);\n // copy child result onto original response\n res.result = childResult;\n return undefined;\n });\n}\n\n/**\n * Retries an asynchronous function up to a maximum number of times.\n *\n * @param maxRetries - The maximum number of retries.\n * @param asyncFn - The asynchronous function to retry.\n * @returns The result of the asynchronous function.\n */\nasync function retry<Result>(\n maxRetries: number,\n asyncFn: () => Promise<Result>,\n): Promise<Result> {\n for (let index = 0; index < maxRetries; index++) {\n try {\n return await asyncFn();\n } catch (err: unknown) {\n if (isExecutionRevertedError(err)) {\n throw err as unknown;\n }\n log('(call %i) Request failed, waiting 1s to retry again...', index + 1);\n await timeout(1000);\n }\n }\n log('Retries exhausted');\n throw new Error('RetryOnEmptyMiddleware - retries exhausted');\n}\n"]}
1
+ {"version":3,"file":"retryOnEmpty.cjs","sourceRoot":"","sources":["../src/retryOnEmpty.ts"],"names":[],"mappings":"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","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';\nimport type { Block } from './types';\nimport { blockTagParamIndex } from './utils/cache';\nimport { isExecutionRevertedError } from './utils/error';\nimport { timeout } from './utils/timeout';\n\n//\n// RetryOnEmptyMiddleware will retry any request with an empty response that has\n// a numbered block reference at or lower than the blockTracker's latest block.\n// Its useful for dealing with load-balanced ethereum JSON RPC\n// nodes that are not always in sync with each other.\n//\n\nconst log = createModuleLogger(projectLogger, 'retry-on-empty');\n// empty values used to determine if a request should be retried\n// `<nil>` comes from https://github.com/ethereum/go-ethereum/issues/16925\nconst emptyValues = [null, '\\u003cnil\\u003e'];\n\n/**\n * Creates a middleware that retries requests with empty responses.\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 createRetryOnEmptyMiddleware({\n provider,\n blockTracker,\n}: {\n provider?: InternalProvider;\n blockTracker?: PollingBlockTracker;\n} = {}): JsonRpcMiddleware<JsonRpcRequest, Json> {\n if (!provider) {\n throw Error(\n 'RetryOnEmptyMiddleware - mandatory \"provider\" option is missing.',\n );\n }\n\n if (!blockTracker) {\n throw Error(\n 'RetryOnEmptyMiddleware - mandatory \"blockTracker\" option is missing.',\n );\n }\n\n return async ({ request, next }) => {\n const blockRefIndex: number | undefined = blockTagParamIndex(\n request.method,\n );\n // skip if method does not include blockRef\n if (blockRefIndex === undefined) {\n return next();\n }\n // skip if not exact block references\n let blockRef: string | undefined =\n Array.isArray(request.params) && request.params[blockRefIndex]\n ? (request.params[blockRefIndex] as string)\n : undefined;\n // omitted blockRef implies \"latest\"\n if (blockRef === undefined) {\n blockRef = 'latest';\n }\n\n // skip if non-number block reference\n if (['latest', 'pending'].includes(blockRef)) {\n return next();\n }\n // skip if block refernce is not a valid number\n const blockRefNumber: number = Number.parseInt(blockRef.slice(2), 16);\n if (Number.isNaN(blockRefNumber)) {\n return next();\n }\n // lookup latest block\n const latestBlockNumberHex: string = await blockTracker.getLatestBlock();\n const latestBlockNumber: number = Number.parseInt(\n latestBlockNumberHex.slice(2),\n 16,\n );\n // skip if request block number is higher than current\n if (blockRefNumber > latestBlockNumber) {\n log(\n 'Requested block number %o is higher than latest block number %o, falling through to original request',\n blockRefNumber,\n latestBlockNumber,\n );\n return next();\n }\n\n log(\n 'Requested block number %o is not higher than latest block number %o, trying request until non-empty response is received',\n blockRefNumber,\n latestBlockNumber,\n );\n\n // create child request with specific block-ref\n const childRequest = klona(request);\n // attempt child request until non-empty response is received\n const childResult = await retry(10, async () => {\n log('Performing request %o', childRequest);\n const attemptResult = await provider.request<JsonRpcParams, Block>(\n childRequest,\n );\n log('Result is %o', attemptResult);\n // verify result\n const allEmptyValues: unknown[] = emptyValues;\n if (allEmptyValues.includes(attemptResult)) {\n throw new Error(\n `RetryOnEmptyMiddleware - empty result \"${JSON.stringify(\n attemptResult,\n )}\" for request \"${JSON.stringify(childRequest)}\"`,\n );\n }\n return attemptResult;\n });\n log('Copying result %o', childResult);\n return childResult;\n };\n}\n\n/**\n * Retries an asynchronous function up to a maximum number of times.\n *\n * @param maxRetries - The maximum number of retries.\n * @param asyncFn - The asynchronous function to retry.\n * @returns The result of the asynchronous function.\n */\nasync function retry<Result>(\n maxRetries: number,\n asyncFn: () => Promise<Result>,\n): Promise<Result> {\n for (let index = 0; index < maxRetries; index++) {\n try {\n return await asyncFn();\n } catch (err: unknown) {\n if (isExecutionRevertedError(err)) {\n throw err as unknown;\n }\n log('(call %i) Request failed, waiting 1s to retry again...', index + 1);\n await timeout(1000);\n }\n }\n log('Retries exhausted');\n throw new Error('RetryOnEmptyMiddleware - retries exhausted');\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { PollingBlockTracker } from "@metamask/eth-block-tracker";
2
2
  import type { InternalProvider } from "@metamask/eth-json-rpc-provider";
3
- import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine";
4
- import type { Json, JsonRpcParams } from "@metamask/utils";
3
+ import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine/v2";
4
+ import type { Json, JsonRpcRequest } from "@metamask/utils";
5
5
  /**
6
6
  * Creates a middleware that retries requests with empty responses.
7
7
  *
@@ -13,5 +13,5 @@ import type { Json, JsonRpcParams } from "@metamask/utils";
13
13
  export declare function createRetryOnEmptyMiddleware({ provider, blockTracker, }?: {
14
14
  provider?: InternalProvider;
15
15
  blockTracker?: PollingBlockTracker;
16
- }): JsonRpcMiddleware<JsonRpcParams, Json>;
16
+ }): JsonRpcMiddleware<JsonRpcRequest, Json>;
17
17
  //# sourceMappingURL=retryOnEmpty.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retryOnEmpty.d.cts","sourceRoot":"","sources":["../src/retryOnEmpty.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oCAAoC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,wCAAwC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,kCAAkC;AAEnE,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAqB3D;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,QAAQ,EACR,YAAY,GACb,GAAE;IACD,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,YAAY,CAAC,EAAE,mBAAmB,CAAC;CAC/B,GAAG,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CAqF9C"}
1
+ {"version":3,"file":"retryOnEmpty.d.cts","sourceRoot":"","sources":["../src/retryOnEmpty.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oCAAoC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,wCAAwC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,qCAAqC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAiB,cAAc,EAAE,wBAAwB;AAqB3E;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,QAAQ,EACR,YAAY,GACb,GAAE;IACD,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,YAAY,CAAC,EAAE,mBAAmB,CAAC;CAC/B,GAAG,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,CAqF/C"}
@@ -1,7 +1,7 @@
1
1
  import type { PollingBlockTracker } from "@metamask/eth-block-tracker";
2
2
  import type { InternalProvider } from "@metamask/eth-json-rpc-provider";
3
- import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine";
4
- import type { Json, JsonRpcParams } from "@metamask/utils";
3
+ import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine/v2";
4
+ import type { Json, JsonRpcRequest } from "@metamask/utils";
5
5
  /**
6
6
  * Creates a middleware that retries requests with empty responses.
7
7
  *
@@ -13,5 +13,5 @@ import type { Json, JsonRpcParams } from "@metamask/utils";
13
13
  export declare function createRetryOnEmptyMiddleware({ provider, blockTracker, }?: {
14
14
  provider?: InternalProvider;
15
15
  blockTracker?: PollingBlockTracker;
16
- }): JsonRpcMiddleware<JsonRpcParams, Json>;
16
+ }): JsonRpcMiddleware<JsonRpcRequest, Json>;
17
17
  //# sourceMappingURL=retryOnEmpty.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retryOnEmpty.d.mts","sourceRoot":"","sources":["../src/retryOnEmpty.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oCAAoC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,wCAAwC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,kCAAkC;AAEnE,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,wBAAwB;AAqB3D;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,QAAQ,EACR,YAAY,GACb,GAAE;IACD,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,YAAY,CAAC,EAAE,mBAAmB,CAAC;CAC/B,GAAG,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,CAqF9C"}
1
+ {"version":3,"file":"retryOnEmpty.d.mts","sourceRoot":"","sources":["../src/retryOnEmpty.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oCAAoC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,wCAAwC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,qCAAqC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAiB,cAAc,EAAE,wBAAwB;AAqB3E;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,QAAQ,EACR,YAAY,GACb,GAAE;IACD,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,YAAY,CAAC,EAAE,mBAAmB,CAAC;CAC/B,GAAG,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,CAqF/C"}