@metamask-previews/eth-json-rpc-middleware 21.0.0-preview-70abd50a → 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 +1 @@
1
- {"version":3,"file":"wallet.d.cts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kCAAkC;AAOnE,OAAO,KAAK,EACV,cAAc,EAIf,wBAAwB;AAEzB,OAAO,EACL,KAAK,sCAAsC,EAE5C,2DAAuD;AACxD,OAAO,EACL,KAAK,oCAAoC,EAE1C,yDAAqD;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAgB;AAqBrC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG;IACpE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxD,qBAAqB,CAAC,EAAE,CACtB,SAAS,EAAE,aAAa,EACxB,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,0BAA0B,CAAC,EAAE,CAC3B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,sBAAsB,CAAC,EAAE,CACvB,SAAS,EAAE,aAAa,EACxB,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,kBAAkB,CAAC,EAAE,CACnB,QAAQ,EAAE,iBAAiB,EAC3B,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,sBAAsB,CAAC,EAAE,CACvB,QAAQ,EAAE,iBAAiB,EAC3B,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,mBAAmB,CAAC,EAAE,CACpB,SAAS,EAAE,oBAAoB,EAC/B,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,qBAAqB,CAAC,EAAE,CACtB,SAAS,EAAE,kBAAkB,EAC7B,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,qBAAqB,CAAC,EAAE,CACtB,SAAS,EAAE,kBAAkB,EAC7B,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,kCAAkC,CAAC,EAAE,sCAAsC,CAAC;IAC5E,gCAAgC,CAAC,EAAE,oCAAoC,CAAC;CACzE,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EACrC,WAAW,EACX,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,kCAAkC,EAClC,gCAAgC,GACjC,EACD,uBAAuB,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAoWtD"}
1
+ {"version":3,"file":"wallet.d.cts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
package/dist/wallet.d.mts CHANGED
@@ -1,8 +1,8 @@
1
- import type { JsonRpcMiddleware } from "@metamask/json-rpc-engine";
2
- import type { JsonRpcRequest } from "@metamask/utils";
1
+ import type { JsonRpcMiddleware, MiddlewareContext, MiddlewareParams } from "@metamask/json-rpc-engine/v2";
2
+ import type { MessageRequest } from "@metamask/message-manager";
3
+ import type { JsonRpcRequest, Json } from "@metamask/utils";
3
4
  import { type ProcessRequestExecutionPermissionsHook } from "./methods/wallet-request-execution-permissions.mjs";
4
5
  import { type ProcessRevokeExecutionPermissionHook } from "./methods/wallet-revoke-execution-permission.mjs";
5
- import type { Block } from "./types.mjs";
6
6
  export type TransactionParams = {
7
7
  from: string;
8
8
  };
@@ -17,11 +17,11 @@ export type TypedMessageV1Params = Omit<TypedMessageParams, 'data'> & {
17
17
  data: Record<string, unknown>[];
18
18
  };
19
19
  export type WalletMiddlewareOptions = {
20
- getAccounts: (req: JsonRpcRequest) => Promise<string[]>;
21
- processDecryptMessage?: (msgParams: MessageParams, req: JsonRpcRequest) => Promise<string>;
22
- processEncryptionPublicKey?: (address: string, req: JsonRpcRequest) => Promise<string>;
20
+ getAccounts: (origin: string) => Promise<string[]>;
21
+ processDecryptMessage?: (msgParams: MessageParams, req: MessageRequest) => Promise<string>;
22
+ processEncryptionPublicKey?: (address: string, req: MessageRequest) => Promise<string>;
23
23
  processPersonalMessage?: (msgParams: MessageParams, req: JsonRpcRequest) => Promise<string>;
24
- processTransaction?: (txParams: TransactionParams, req: JsonRpcRequest) => Promise<string>;
24
+ processTransaction?: (txParams: TransactionParams, req: JsonRpcRequest, context: WalletMiddlewareContext) => Promise<string>;
25
25
  processSignTransaction?: (txParams: TransactionParams, req: JsonRpcRequest) => Promise<string>;
26
26
  processTypedMessage?: (msgParams: TypedMessageV1Params, req: JsonRpcRequest, version: string) => Promise<string>;
27
27
  processTypedMessageV3?: (msgParams: TypedMessageParams, req: JsonRpcRequest, version: string) => Promise<string>;
@@ -29,5 +29,32 @@ export type WalletMiddlewareOptions = {
29
29
  processRequestExecutionPermissions?: ProcessRequestExecutionPermissionsHook;
30
30
  processRevokeExecutionPermission?: ProcessRevokeExecutionPermissionHook;
31
31
  };
32
- export declare function createWalletMiddleware({ getAccounts, processDecryptMessage, processEncryptionPublicKey, processPersonalMessage, processTransaction, processSignTransaction, processTypedMessage, processTypedMessageV3, processTypedMessageV4, processRequestExecutionPermissions, processRevokeExecutionPermission, }: WalletMiddlewareOptions): JsonRpcMiddleware<any, Block>;
32
+ export type WalletMiddlewareKeyValues = {
33
+ networkClientId: string;
34
+ origin: string;
35
+ securityAlertResponse?: Record<string, Json>;
36
+ traceContext?: unknown;
37
+ };
38
+ export type WalletMiddlewareContext = MiddlewareContext<WalletMiddlewareKeyValues>;
39
+ export type WalletMiddlewareParams = MiddlewareParams<JsonRpcRequest, WalletMiddlewareContext>;
40
+ /**
41
+ * Creates a JSON-RPC middleware that handles "wallet"-related JSON-RPC methods.
42
+ * "Wallet" may have had a specific meaning at some point in the distant past,
43
+ * but at this point it's just an arbitrary label.
44
+ *
45
+ * @param options - The options for the middleware.
46
+ * @param options.getAccounts - The function to get the accounts for the origin.
47
+ * @param options.processDecryptMessage - The function to process the decrypt message request.
48
+ * @param options.processEncryptionPublicKey - The function to process the encryption public key request.
49
+ * @param options.processPersonalMessage - The function to process the personal message request.
50
+ * @param options.processTransaction - The function to process the transaction request.
51
+ * @param options.processSignTransaction - The function to process the sign transaction request.
52
+ * @param options.processTypedMessage - The function to process the typed message request.
53
+ * @param options.processTypedMessageV3 - The function to process the typed message v3 request.
54
+ * @param options.processTypedMessageV4 - The function to process the typed message v4 request.
55
+ * @param options.processRequestExecutionPermissions - The function to process the request execution permissions request.
56
+ * @param options.processRevokeExecutionPermission - The function to process the revoke execution permission request.
57
+ * @returns A JSON-RPC middleware that handles wallet-related JSON-RPC methods.
58
+ */
59
+ export declare function createWalletMiddleware({ getAccounts, processDecryptMessage, processEncryptionPublicKey, processPersonalMessage, processTransaction, processSignTransaction, processTypedMessage, processTypedMessageV3, processTypedMessageV4, processRequestExecutionPermissions, processRevokeExecutionPermission, }: WalletMiddlewareOptions): JsonRpcMiddleware<JsonRpcRequest, Json, WalletMiddlewareContext>;
33
60
  //# sourceMappingURL=wallet.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.mts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kCAAkC;AAOnE,OAAO,KAAK,EACV,cAAc,EAIf,wBAAwB;AAEzB,OAAO,EACL,KAAK,sCAAsC,EAE5C,2DAAuD;AACxD,OAAO,EACL,KAAK,oCAAoC,EAE1C,yDAAqD;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAgB;AAqBrC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,aAAa,GAAG;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,GAAG;IACpE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxD,qBAAqB,CAAC,EAAE,CACtB,SAAS,EAAE,aAAa,EACxB,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,0BAA0B,CAAC,EAAE,CAC3B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,sBAAsB,CAAC,EAAE,CACvB,SAAS,EAAE,aAAa,EACxB,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,kBAAkB,CAAC,EAAE,CACnB,QAAQ,EAAE,iBAAiB,EAC3B,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,sBAAsB,CAAC,EAAE,CACvB,QAAQ,EAAE,iBAAiB,EAC3B,GAAG,EAAE,cAAc,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,mBAAmB,CAAC,EAAE,CACpB,SAAS,EAAE,oBAAoB,EAC/B,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,qBAAqB,CAAC,EAAE,CACtB,SAAS,EAAE,kBAAkB,EAC7B,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,qBAAqB,CAAC,EAAE,CACtB,SAAS,EAAE,kBAAkB,EAC7B,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,MAAM,KACZ,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,kCAAkC,CAAC,EAAE,sCAAsC,CAAC;IAC5E,gCAAgC,CAAC,EAAE,oCAAoC,CAAC;CACzE,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EACrC,WAAW,EACX,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,kCAAkC,EAClC,gCAAgC,GACjC,EACD,uBAAuB,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAoWtD"}
1
+ {"version":3,"file":"wallet.d.mts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
package/dist/wallet.mjs CHANGED
@@ -1,99 +1,156 @@
1
1
  import * as sigUtil from "@metamask/eth-sig-util";
2
- import { createAsyncMiddleware, createScaffoldMiddleware } from "@metamask/json-rpc-engine";
2
+ import { createScaffoldMiddleware } from "@metamask/json-rpc-engine/v2";
3
3
  import { rpcErrors } from "@metamask/rpc-errors";
4
4
  import { isValidHexAddress } from "@metamask/utils";
5
- import { walletRequestExecutionPermissions } from "./methods/wallet-request-execution-permissions.mjs";
6
- import { walletRevokeExecutionPermission } from "./methods/wallet-revoke-execution-permission.mjs";
5
+ import { createWalletRequestExecutionPermissionsHandler } from "./methods/wallet-request-execution-permissions.mjs";
6
+ import { createWalletRevokeExecutionPermissionHandler } from "./methods/wallet-revoke-execution-permission.mjs";
7
7
  import { stripArrayTypeIfPresent } from "./utils/common.mjs";
8
8
  import { normalizeTypedMessage, parseTypedMessage } from "./utils/normalize.mjs";
9
9
  import { resemblesAddress, validateAndNormalizeKeyholder as validateKeyholder } from "./utils/validation.mjs";
10
+ /**
11
+ * Creates a JSON-RPC middleware that handles "wallet"-related JSON-RPC methods.
12
+ * "Wallet" may have had a specific meaning at some point in the distant past,
13
+ * but at this point it's just an arbitrary label.
14
+ *
15
+ * @param options - The options for the middleware.
16
+ * @param options.getAccounts - The function to get the accounts for the origin.
17
+ * @param options.processDecryptMessage - The function to process the decrypt message request.
18
+ * @param options.processEncryptionPublicKey - The function to process the encryption public key request.
19
+ * @param options.processPersonalMessage - The function to process the personal message request.
20
+ * @param options.processTransaction - The function to process the transaction request.
21
+ * @param options.processSignTransaction - The function to process the sign transaction request.
22
+ * @param options.processTypedMessage - The function to process the typed message request.
23
+ * @param options.processTypedMessageV3 - The function to process the typed message v3 request.
24
+ * @param options.processTypedMessageV4 - The function to process the typed message v4 request.
25
+ * @param options.processRequestExecutionPermissions - The function to process the request execution permissions request.
26
+ * @param options.processRevokeExecutionPermission - The function to process the revoke execution permission request.
27
+ * @returns A JSON-RPC middleware that handles wallet-related JSON-RPC methods.
28
+ */
10
29
  export function createWalletMiddleware({ getAccounts, processDecryptMessage, processEncryptionPublicKey, processPersonalMessage, processTransaction, processSignTransaction, processTypedMessage, processTypedMessageV3, processTypedMessageV4, processRequestExecutionPermissions, processRevokeExecutionPermission, }) {
11
30
  if (!getAccounts) {
12
31
  throw new Error('opts.getAccounts is required');
13
32
  }
14
33
  return createScaffoldMiddleware({
15
34
  // account lookups
16
- eth_accounts: createAsyncMiddleware(lookupAccounts),
17
- eth_coinbase: createAsyncMiddleware(lookupDefaultAccount),
35
+ eth_accounts: lookupAccounts,
36
+ eth_coinbase: lookupDefaultAccount,
18
37
  // tx signatures
19
- eth_sendTransaction: createAsyncMiddleware(sendTransaction),
20
- eth_signTransaction: createAsyncMiddleware(signTransaction),
38
+ eth_sendTransaction: sendTransaction,
39
+ eth_signTransaction: signTransaction,
21
40
  // message signatures
22
- eth_signTypedData: createAsyncMiddleware(signTypedData),
23
- eth_signTypedData_v3: createAsyncMiddleware(signTypedDataV3),
24
- eth_signTypedData_v4: createAsyncMiddleware(signTypedDataV4),
25
- personal_sign: createAsyncMiddleware(personalSign),
26
- eth_getEncryptionPublicKey: createAsyncMiddleware(encryptionPublicKey),
27
- eth_decrypt: createAsyncMiddleware(decryptMessage),
28
- personal_ecRecover: createAsyncMiddleware(personalRecover),
41
+ eth_signTypedData: signTypedData,
42
+ eth_signTypedData_v3: signTypedDataV3,
43
+ eth_signTypedData_v4: signTypedDataV4,
44
+ personal_sign: personalSign,
45
+ eth_getEncryptionPublicKey: encryptionPublicKey,
46
+ eth_decrypt: decryptMessage,
47
+ personal_ecRecover: personalRecover,
29
48
  // EIP-7715
30
- wallet_requestExecutionPermissions: createAsyncMiddleware(async (req, res) => walletRequestExecutionPermissions(req, res, {
49
+ wallet_requestExecutionPermissions: createWalletRequestExecutionPermissionsHandler({
31
50
  processRequestExecutionPermissions,
32
- })),
33
- wallet_revokeExecutionPermission: createAsyncMiddleware(async (req, res) => walletRevokeExecutionPermission(req, res, {
51
+ }),
52
+ wallet_revokeExecutionPermission: createWalletRevokeExecutionPermissionHandler({
34
53
  processRevokeExecutionPermission,
35
- })),
54
+ }),
36
55
  });
37
56
  //
38
57
  // account lookups
39
58
  //
40
- async function lookupAccounts(req, res) {
41
- res.result = await getAccounts(req);
59
+ /**
60
+ * Gets the accounts for the origin.
61
+ *
62
+ * @param options - Options bag.
63
+ * @param options.context - The context of the request.
64
+ * @returns The accounts for the origin.
65
+ */
66
+ async function lookupAccounts({ context, }) {
67
+ return await getAccounts(context.assertGet('origin'));
42
68
  }
43
- async function lookupDefaultAccount(req, res) {
44
- const accounts = await getAccounts(req);
45
- res.result = accounts[0] || null;
69
+ /**
70
+ * Gets the default account (i.e. first in the list) for the origin.
71
+ *
72
+ * @param options - Options bag.
73
+ * @param options.context - The context of the request.
74
+ * @returns The default account for the origin.
75
+ */
76
+ async function lookupDefaultAccount({ context, }) {
77
+ const accounts = await getAccounts(context.assertGet('origin'));
78
+ return accounts[0] || null;
46
79
  }
47
80
  //
48
81
  // transaction signatures
49
82
  //
50
- async function sendTransaction(req, res) {
83
+ /**
84
+ * Sends a transaction.
85
+ *
86
+ * @param options - Options bag.
87
+ * @param options.request - The request.
88
+ * @param options.context - The context of the request.
89
+ * @returns The transaction hash.
90
+ */
91
+ async function sendTransaction({ request, context, }) {
51
92
  if (!processTransaction) {
52
93
  throw rpcErrors.methodNotSupported();
53
94
  }
54
- if (!req.params ||
55
- !Array.isArray(req.params) ||
56
- !(req.params.length >= 1)) {
95
+ if (!request.params ||
96
+ !Array.isArray(request.params) ||
97
+ !(request.params.length >= 1)) {
57
98
  throw rpcErrors.invalidInput();
58
99
  }
59
- const params = req.params[0];
100
+ const params = request.params[0];
60
101
  const txParams = {
61
102
  ...params,
62
- from: await validateAndNormalizeKeyholder(params?.from || '', req),
103
+ from: await validateAndNormalizeKeyholder(params?.from || '', context),
63
104
  };
64
- res.result = await processTransaction(txParams, req);
105
+ return await processTransaction(txParams, request, context);
65
106
  }
66
- async function signTransaction(req, res) {
107
+ /**
108
+ * Signs a transaction.
109
+ *
110
+ * @param options - Options bag.
111
+ * @param options.request - The request.
112
+ * @param options.context - The context of the request.
113
+ * @returns The signed transaction.
114
+ */
115
+ async function signTransaction({ request, context, }) {
67
116
  if (!processSignTransaction) {
68
117
  throw rpcErrors.methodNotSupported();
69
118
  }
70
- if (!req.params ||
71
- !Array.isArray(req.params) ||
72
- !(req.params.length >= 1)) {
119
+ if (!request.params ||
120
+ !Array.isArray(request.params) ||
121
+ !(request.params.length >= 1)) {
73
122
  throw rpcErrors.invalidInput();
74
123
  }
75
- const params = req.params[0];
124
+ const params = request.params[0];
76
125
  const txParams = {
77
126
  ...params,
78
- from: await validateAndNormalizeKeyholder(params?.from || '', req),
127
+ from: await validateAndNormalizeKeyholder(params?.from || '', context),
79
128
  };
80
- res.result = await processSignTransaction(txParams, req);
129
+ return await processSignTransaction(txParams, request);
81
130
  }
82
131
  //
83
132
  // message signatures
84
133
  //
85
- async function signTypedData(req, res) {
134
+ /**
135
+ * Signs a `eth_signTypedData` message.
136
+ *
137
+ * @param options - Options bag.
138
+ * @param options.request - The request.
139
+ * @param options.context - The context of the request.
140
+ * @returns The signed message.
141
+ */
142
+ async function signTypedData({ request, context, }) {
86
143
  if (!processTypedMessage) {
87
144
  throw rpcErrors.methodNotSupported();
88
145
  }
89
- if (!req?.params ||
90
- !Array.isArray(req.params) ||
91
- !(req.params.length >= 2)) {
146
+ if (!request.params ||
147
+ !Array.isArray(request.params) ||
148
+ !(request.params.length >= 2)) {
92
149
  throw rpcErrors.invalidInput();
93
150
  }
94
- const params = req.params;
151
+ const params = request.params;
95
152
  const message = params[0];
96
- const address = await validateAndNormalizeKeyholder(params[1], req);
153
+ const address = await validateAndNormalizeKeyholder(params[1], context);
97
154
  const version = 'V1';
98
155
  const extraParams = params[2] || {};
99
156
  const msgParams = {
@@ -103,19 +160,27 @@ export function createWalletMiddleware({ getAccounts, processDecryptMessage, pro
103
160
  signatureMethod: 'eth_signTypedData',
104
161
  version,
105
162
  };
106
- res.result = await processTypedMessage(msgParams, req, version);
163
+ return await processTypedMessage(msgParams, request, version);
107
164
  }
108
- async function signTypedDataV3(req, res) {
165
+ /**
166
+ * Signs a `eth_signTypedData_v3` message.
167
+ *
168
+ * @param options - Options bag.
169
+ * @param options.request - The request.
170
+ * @param options.context - The context of the request.
171
+ * @returns The signed message.
172
+ */
173
+ async function signTypedDataV3({ request, context, }) {
109
174
  if (!processTypedMessageV3) {
110
175
  throw rpcErrors.methodNotSupported();
111
176
  }
112
- if (!req?.params ||
113
- !Array.isArray(req.params) ||
114
- !(req.params.length >= 2)) {
177
+ if (!request.params ||
178
+ !Array.isArray(request.params) ||
179
+ !(request.params.length >= 2)) {
115
180
  throw rpcErrors.invalidInput();
116
181
  }
117
- const params = req.params;
118
- const address = await validateAndNormalizeKeyholder(params[0], req);
182
+ const params = request.params;
183
+ const address = await validateAndNormalizeKeyholder(params[0], context);
119
184
  const message = normalizeTypedMessage(params[1]);
120
185
  validatePrimaryType(message);
121
186
  validateVerifyingContract(message);
@@ -126,19 +191,27 @@ export function createWalletMiddleware({ getAccounts, processDecryptMessage, pro
126
191
  version,
127
192
  signatureMethod: 'eth_signTypedData_v3',
128
193
  };
129
- res.result = await processTypedMessageV3(msgParams, req, version);
194
+ return await processTypedMessageV3(msgParams, request, version);
130
195
  }
131
- async function signTypedDataV4(req, res) {
196
+ /**
197
+ * Signs a `eth_signTypedData_v4` message.
198
+ *
199
+ * @param options - Options bag.
200
+ * @param options.request - The request.
201
+ * @param options.context - The context of the request.
202
+ * @returns The signed message.
203
+ */
204
+ async function signTypedDataV4({ request, context, }) {
132
205
  if (!processTypedMessageV4) {
133
206
  throw rpcErrors.methodNotSupported();
134
207
  }
135
- if (!req?.params ||
136
- !Array.isArray(req.params) ||
137
- !(req.params.length >= 2)) {
208
+ if (!request.params ||
209
+ !Array.isArray(request.params) ||
210
+ !(request.params.length >= 2)) {
138
211
  throw rpcErrors.invalidInput();
139
212
  }
140
- const params = req.params;
141
- const address = await validateAndNormalizeKeyholder(params[0], req);
213
+ const params = request.params;
214
+ const address = await validateAndNormalizeKeyholder(params[0], context);
142
215
  const message = normalizeTypedMessage(params[1]);
143
216
  validatePrimaryType(message);
144
217
  validateVerifyingContract(message);
@@ -149,18 +222,26 @@ export function createWalletMiddleware({ getAccounts, processDecryptMessage, pro
149
222
  version,
150
223
  signatureMethod: 'eth_signTypedData_v4',
151
224
  };
152
- res.result = await processTypedMessageV4(msgParams, req, version);
225
+ return await processTypedMessageV4(msgParams, request, version);
153
226
  }
154
- async function personalSign(req, res) {
227
+ /**
228
+ * Signs a `personal_sign` message.
229
+ *
230
+ * @param options - Options bag.
231
+ * @param options.request - The request.
232
+ * @param options.context - The context of the request.
233
+ * @returns The signed message.
234
+ */
235
+ async function personalSign({ request, context, }) {
155
236
  if (!processPersonalMessage) {
156
237
  throw rpcErrors.methodNotSupported();
157
238
  }
158
- if (!req?.params ||
159
- !Array.isArray(req.params) ||
160
- !(req.params.length >= 2)) {
239
+ if (!request.params ||
240
+ !Array.isArray(request.params) ||
241
+ !(request.params.length >= 2)) {
161
242
  throw rpcErrors.invalidInput();
162
243
  }
163
- const params = req.params;
244
+ const params = request.params;
164
245
  // process normally
165
246
  const firstParam = params[0];
166
247
  const secondParam = params[1];
@@ -175,11 +256,6 @@ export function createWalletMiddleware({ getAccounts, processDecryptMessage, pro
175
256
  // and the second param is definitely not, but is hex.
176
257
  let address, message;
177
258
  if (resemblesAddress(firstParam) && !resemblesAddress(secondParam)) {
178
- let warning = `The eth_personalSign method requires params ordered `;
179
- warning += `[message, address]. This was previously handled incorrectly, `;
180
- warning += `and has been corrected automatically. `;
181
- warning += `Please switch this param order for smooth behavior in the future.`;
182
- res.warning = warning;
183
259
  address = firstParam;
184
260
  message = secondParam;
185
261
  }
@@ -187,62 +263,93 @@ export function createWalletMiddleware({ getAccounts, processDecryptMessage, pro
187
263
  message = firstParam;
188
264
  address = secondParam;
189
265
  }
190
- address = await validateAndNormalizeKeyholder(address, req);
266
+ address = await validateAndNormalizeKeyholder(address, context);
191
267
  const msgParams = {
192
268
  ...extraParams,
193
269
  from: address,
194
270
  data: message,
195
271
  signatureMethod: 'personal_sign',
196
272
  };
197
- res.result = await processPersonalMessage(msgParams, req);
273
+ return await processPersonalMessage(msgParams, request);
198
274
  }
199
- async function personalRecover(req, res) {
200
- if (!req?.params ||
201
- !Array.isArray(req.params) ||
202
- !(req.params.length >= 2)) {
275
+ /**
276
+ * Recovers the signer address from a `personal_sign` message.
277
+ *
278
+ * @param options - Options bag.
279
+ * @param options.request - The request.
280
+ * @returns The recovered signer address.
281
+ */
282
+ async function personalRecover({ request, }) {
283
+ if (!request.params ||
284
+ !Array.isArray(request.params) ||
285
+ !(request.params.length >= 2)) {
203
286
  throw rpcErrors.invalidInput();
204
287
  }
205
- const params = req.params;
288
+ const params = request.params;
206
289
  const message = params[0];
207
290
  const signature = params[1];
208
291
  const signerAddress = sigUtil.recoverPersonalSignature({
209
292
  data: message,
210
293
  signature,
211
294
  });
212
- res.result = signerAddress;
295
+ return signerAddress;
213
296
  }
214
- async function encryptionPublicKey(req, res) {
297
+ /**
298
+ * Gets the encryption public key for an address.
299
+ *
300
+ * @param options - Options bag.
301
+ * @param options.request - The request.
302
+ * @param options.context - The context of the request.
303
+ * @returns The encryption public key.
304
+ */
305
+ async function encryptionPublicKey({ request, context, }) {
215
306
  if (!processEncryptionPublicKey) {
216
307
  throw rpcErrors.methodNotSupported();
217
308
  }
218
- if (!req?.params ||
219
- !Array.isArray(req.params) ||
220
- !(req.params.length >= 1)) {
309
+ if (!request.params ||
310
+ !Array.isArray(request.params) ||
311
+ !(request.params.length >= 1)) {
221
312
  throw rpcErrors.invalidInput();
222
313
  }
223
- const params = req.params;
224
- const address = await validateAndNormalizeKeyholder(params[0], req);
225
- res.result = await processEncryptionPublicKey(address, req);
314
+ const params = request.params;
315
+ const address = await validateAndNormalizeKeyholder(params[0], context);
316
+ return await processEncryptionPublicKey(address, {
317
+ id: request.id,
318
+ origin: context.assertGet('origin'),
319
+ securityAlertResponse: context.assertGet('securityAlertResponse'),
320
+ });
226
321
  }
227
- async function decryptMessage(req, res) {
322
+ /**
323
+ * Decrypts a message.
324
+ *
325
+ * @param options - Options bag.
326
+ * @param options.request - The request.
327
+ * @param options.context - The context of the request.
328
+ * @returns The decrypted message.
329
+ */
330
+ async function decryptMessage({ request, context, }) {
228
331
  if (!processDecryptMessage) {
229
332
  throw rpcErrors.methodNotSupported();
230
333
  }
231
- if (!req?.params ||
232
- !Array.isArray(req.params) ||
233
- !(req.params.length >= 1)) {
334
+ if (!request.params ||
335
+ !Array.isArray(request.params) ||
336
+ !(request.params.length >= 1)) {
234
337
  throw rpcErrors.invalidInput();
235
338
  }
236
- const params = req.params;
339
+ const params = request.params;
237
340
  const ciphertext = params[0];
238
- const address = await validateAndNormalizeKeyholder(params[1], req);
341
+ const address = await validateAndNormalizeKeyholder(params[1], context);
239
342
  const extraParams = params[2] || {};
240
343
  const msgParams = {
241
344
  ...extraParams,
242
345
  from: address,
243
346
  data: ciphertext,
244
347
  };
245
- res.result = await processDecryptMessage(msgParams, req);
348
+ return await processDecryptMessage(msgParams, {
349
+ id: request.id,
350
+ origin: context.assertGet('origin'),
351
+ securityAlertResponse: context.assertGet('securityAlertResponse'),
352
+ });
246
353
  }
247
354
  //
248
355
  // utility
@@ -252,12 +359,12 @@ export function createWalletMiddleware({ getAccounts, processDecryptMessage, pro
252
359
  * copy of it.
253
360
  *
254
361
  * @param address - The address to validate and normalize.
255
- * @param req - The request object.
362
+ * @param context - The context of the request.
256
363
  * @returns The normalized address, if valid. Otherwise, throws
257
364
  * an error
258
365
  */
259
- async function validateAndNormalizeKeyholder(address, req) {
260
- return validateKeyholder(address, req, { getAccounts });
366
+ async function validateAndNormalizeKeyholder(address, context) {
367
+ return validateKeyholder(address, context, { getAccounts });
261
368
  }
262
369
  }
263
370
  /**