@metamask/snaps-jest 8.1.3 → 8.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/CHANGELOG.md +19 -1
  2. package/README.md +2 -2
  3. package/dist/chunk-24CGIQLL.mjs +30 -0
  4. package/dist/chunk-24CGIQLL.mjs.map +1 -0
  5. package/dist/{chunk-T2PHS5FY.js → chunk-2RJYSYUB.js} +2 -2
  6. package/dist/chunk-2RJYSYUB.js.map +1 -0
  7. package/dist/{chunk-KNJNL723.mjs → chunk-3J2IBWXV.mjs} +2 -2
  8. package/dist/{chunk-EDFQDZNY.js → chunk-3NP6BDGK.js} +50 -17
  9. package/dist/chunk-3NP6BDGK.js.map +1 -0
  10. package/dist/{chunk-AFA4KKWW.mjs → chunk-6JPBXAHM.mjs} +250 -47
  11. package/dist/chunk-6JPBXAHM.mjs.map +1 -0
  12. package/dist/{chunk-VXPCUDBI.js → chunk-6V6MFT67.js} +8 -6
  13. package/dist/chunk-6V6MFT67.js.map +1 -0
  14. package/dist/{chunk-6V5GEUDO.mjs → chunk-7PCHIR6O.mjs} +7 -37
  15. package/dist/chunk-7PCHIR6O.mjs.map +1 -0
  16. package/dist/{chunk-2OHD2VKS.js → chunk-AMAL4SJH.js} +11 -37
  17. package/dist/chunk-AMAL4SJH.js.map +1 -0
  18. package/dist/{chunk-HOI6FPLR.mjs → chunk-C26TYXXD.mjs} +9 -9
  19. package/dist/chunk-C26TYXXD.mjs.map +1 -0
  20. package/dist/{chunk-K55LIE3W.mjs → chunk-CACRY3TX.mjs} +3 -3
  21. package/dist/{chunk-PZDTZGSI.js → chunk-D653LBAY.js} +1 -1
  22. package/dist/chunk-D653LBAY.js.map +1 -0
  23. package/dist/chunk-DUVKGPX5.js +509 -0
  24. package/dist/chunk-DUVKGPX5.js.map +1 -0
  25. package/dist/{chunk-IH7UNS5A.mjs → chunk-G333FBBL.mjs} +6 -4
  26. package/dist/chunk-G333FBBL.mjs.map +1 -0
  27. package/dist/{chunk-YNUVT3HC.js → chunk-GLPGOEVE.js} +4 -4
  28. package/dist/chunk-GLPGOEVE.js.map +1 -0
  29. package/dist/chunk-IWJ4HKDR.mjs +50 -0
  30. package/dist/chunk-IWJ4HKDR.mjs.map +1 -0
  31. package/dist/{chunk-WMLSD6B5.js → chunk-K7MK6LQU.js} +3 -3
  32. package/dist/{chunk-B73P64TE.mjs → chunk-KOPPL55J.mjs} +2 -2
  33. package/dist/chunk-KOPPL55J.mjs.map +1 -0
  34. package/dist/{chunk-XKJHFUHE.js → chunk-KPRLFCKD.js} +4 -2
  35. package/dist/chunk-KPRLFCKD.js.map +1 -0
  36. package/dist/{chunk-3FDEYMQU.js → chunk-LPMHPAZK.js} +54 -14
  37. package/dist/chunk-LPMHPAZK.js.map +1 -0
  38. package/dist/{chunk-GG2BCPQH.mjs → chunk-LSKT2AUS.mjs} +5 -3
  39. package/dist/chunk-LSKT2AUS.mjs.map +1 -0
  40. package/dist/{chunk-6KXCBUNZ.mjs → chunk-LVNNGMJ2.mjs} +3 -1
  41. package/dist/{chunk-6KXCBUNZ.mjs.map → chunk-LVNNGMJ2.mjs.map} +1 -1
  42. package/dist/{chunk-TMAWGVZP.mjs → chunk-OHRFO2BL.mjs} +7 -7
  43. package/dist/chunk-OHRFO2BL.mjs.map +1 -0
  44. package/dist/{chunk-JXAJWUVZ.js → chunk-OO6IVUCV.js} +5 -5
  45. package/dist/{chunk-3M4GRUMH.mjs → chunk-ORR7AE5X.mjs} +2 -2
  46. package/dist/{chunk-UPR3PTSA.mjs → chunk-PDOVVC74.mjs} +10 -36
  47. package/dist/chunk-PDOVVC74.mjs.map +1 -0
  48. package/dist/{chunk-E2BYTLOT.mjs → chunk-Q3I6P2ZF.mjs} +43 -10
  49. package/dist/chunk-Q3I6P2ZF.mjs.map +1 -0
  50. package/dist/chunk-QRVFWATH.mjs +14 -0
  51. package/dist/chunk-QRVFWATH.mjs.map +1 -0
  52. package/dist/{chunk-MBQHVBLA.js → chunk-QYHQ2WWX.js} +5 -5
  53. package/dist/chunk-QYHQ2WWX.js.map +1 -0
  54. package/dist/{chunk-XWGECIXI.js → chunk-RJNNNCZJ.js} +3 -3
  55. package/dist/{chunk-U3DVRTS2.mjs → chunk-ROCGQYSK.mjs} +46 -6
  56. package/dist/chunk-ROCGQYSK.mjs.map +1 -0
  57. package/dist/chunk-SNXRXX2O.js +30 -0
  58. package/dist/chunk-SNXRXX2O.js.map +1 -0
  59. package/dist/chunk-SW65QYFV.js +50 -0
  60. package/dist/chunk-SW65QYFV.js.map +1 -0
  61. package/dist/{chunk-44ARQBXS.js → chunk-WZ57PU2K.js} +6 -4
  62. package/dist/chunk-WZ57PU2K.js.map +1 -0
  63. package/dist/chunk-XP4YGQJA.js +14 -0
  64. package/dist/chunk-XP4YGQJA.js.map +1 -0
  65. package/dist/{chunk-KQBJQLZG.js → chunk-Y2U3ZPCK.js} +15 -45
  66. package/dist/chunk-Y2U3ZPCK.js.map +1 -0
  67. package/dist/{chunk-74TIKA2T.mjs → chunk-ZJQSGRNK.mjs} +1 -1
  68. package/dist/chunk-ZJQSGRNK.mjs.map +1 -0
  69. package/dist/environment.js +17 -17
  70. package/dist/environment.mjs +16 -16
  71. package/dist/helpers.js +30 -16
  72. package/dist/helpers.mjs +29 -15
  73. package/dist/index.js +32 -18
  74. package/dist/index.mjs +31 -17
  75. package/dist/internals/index.js +33 -21
  76. package/dist/internals/index.mjs +35 -23
  77. package/dist/internals/request.js +15 -15
  78. package/dist/internals/request.mjs +14 -14
  79. package/dist/internals/simulation/constants.js +4 -2
  80. package/dist/internals/simulation/constants.mjs +3 -1
  81. package/dist/internals/simulation/controllers.js +7 -7
  82. package/dist/internals/simulation/controllers.mjs +6 -6
  83. package/dist/internals/simulation/files.js +8 -2
  84. package/dist/internals/simulation/files.mjs +7 -1
  85. package/dist/internals/simulation/index.js +31 -19
  86. package/dist/internals/simulation/index.mjs +33 -21
  87. package/dist/internals/simulation/interface.js +15 -4
  88. package/dist/internals/simulation/interface.mjs +16 -5
  89. package/dist/internals/simulation/methods/hooks/get-preferences.js +8 -0
  90. package/dist/internals/simulation/methods/hooks/get-preferences.mjs +8 -0
  91. package/dist/internals/simulation/methods/hooks/index.js +5 -5
  92. package/dist/internals/simulation/methods/hooks/index.mjs +8 -8
  93. package/dist/internals/simulation/methods/hooks/notifications.js +2 -2
  94. package/dist/internals/simulation/methods/hooks/notifications.mjs +2 -2
  95. package/dist/internals/simulation/methods/hooks/request-user-approval.js +14 -0
  96. package/dist/internals/simulation/methods/hooks/request-user-approval.mjs +14 -0
  97. package/dist/internals/simulation/methods/hooks/state.js +2 -2
  98. package/dist/internals/simulation/methods/hooks/state.mjs +2 -2
  99. package/dist/internals/simulation/methods/index.js +6 -6
  100. package/dist/internals/simulation/methods/index.mjs +5 -5
  101. package/dist/internals/simulation/methods/specifications.js +6 -6
  102. package/dist/internals/simulation/methods/specifications.mjs +5 -5
  103. package/dist/internals/simulation/middleware/engine.js +3 -3
  104. package/dist/internals/simulation/middleware/engine.mjs +2 -2
  105. package/dist/internals/simulation/middleware/index.js +3 -3
  106. package/dist/internals/simulation/middleware/index.mjs +2 -2
  107. package/dist/internals/simulation/options.js +3 -3
  108. package/dist/internals/simulation/options.mjs +2 -2
  109. package/dist/internals/simulation/simulation.js +13 -12
  110. package/dist/internals/simulation/simulation.mjs +12 -11
  111. package/dist/internals/simulation/store/index.js +3 -3
  112. package/dist/internals/simulation/store/index.mjs +2 -2
  113. package/dist/internals/simulation/store/store.js +3 -3
  114. package/dist/internals/simulation/store/store.mjs +2 -2
  115. package/dist/internals/simulation/store/ui.js +2 -2
  116. package/dist/internals/simulation/store/ui.mjs +1 -1
  117. package/dist/internals/structs.js +2 -2
  118. package/dist/internals/structs.mjs +1 -1
  119. package/dist/matchers.js +16 -18
  120. package/dist/matchers.mjs +15 -17
  121. package/dist/options.js +2 -2
  122. package/dist/options.mjs +1 -1
  123. package/dist/setup.js +15 -15
  124. package/dist/setup.mjs +15 -15
  125. package/dist/tsconfig.build.tsbuildinfo +1 -1
  126. package/dist/types/helpers.d.ts +43 -1
  127. package/dist/types/internals/request.d.ts +3 -2
  128. package/dist/types/internals/server.d.ts +1 -1
  129. package/dist/types/internals/simulation/constants.d.ts +4 -0
  130. package/dist/types/internals/simulation/controllers.d.ts +4 -4
  131. package/dist/types/internals/simulation/files.d.ts +36 -0
  132. package/dist/types/internals/simulation/interface.d.ts +70 -8
  133. package/dist/types/internals/simulation/methods/hooks/get-preferences.d.ts +13 -0
  134. package/dist/types/internals/simulation/methods/hooks/index.d.ts +2 -2
  135. package/dist/types/internals/simulation/methods/hooks/request-user-approval.d.ts +15 -0
  136. package/dist/types/internals/simulation/methods/specifications.d.ts +2 -2
  137. package/dist/types/internals/simulation/middleware/engine.d.ts +1 -1
  138. package/dist/types/internals/simulation/middleware/internal-methods/accounts.d.ts +1 -1
  139. package/dist/types/internals/simulation/middleware/internal-methods/middleware.d.ts +1 -1
  140. package/dist/types/internals/simulation/options.d.ts +10 -8
  141. package/dist/types/internals/simulation/simulation.d.ts +8 -5
  142. package/dist/types/internals/simulation/store/mocks.d.ts +2 -2
  143. package/dist/types/internals/simulation/store/notifications.d.ts +2 -2
  144. package/dist/types/internals/simulation/store/state.d.ts +1 -1
  145. package/dist/types/internals/simulation/store/store.d.ts +4 -4
  146. package/dist/types/internals/simulation/store/ui.d.ts +4 -3
  147. package/dist/types/internals/structs.d.ts +41 -41
  148. package/dist/types/matchers.d.ts +0 -10
  149. package/dist/types/options.d.ts +7 -7
  150. package/dist/types/types.d.ts +91 -20
  151. package/package.json +18 -16
  152. package/dist/chunk-265BMFM5.js +0 -13
  153. package/dist/chunk-265BMFM5.js.map +0 -1
  154. package/dist/chunk-2OHD2VKS.js.map +0 -1
  155. package/dist/chunk-3FDEYMQU.js.map +0 -1
  156. package/dist/chunk-44ARQBXS.js.map +0 -1
  157. package/dist/chunk-6V5GEUDO.mjs.map +0 -1
  158. package/dist/chunk-74TIKA2T.mjs.map +0 -1
  159. package/dist/chunk-AFA4KKWW.mjs.map +0 -1
  160. package/dist/chunk-B73P64TE.mjs.map +0 -1
  161. package/dist/chunk-E2BYTLOT.mjs.map +0 -1
  162. package/dist/chunk-EDFQDZNY.js.map +0 -1
  163. package/dist/chunk-GG2BCPQH.mjs.map +0 -1
  164. package/dist/chunk-HOI6FPLR.mjs.map +0 -1
  165. package/dist/chunk-IH7UNS5A.mjs.map +0 -1
  166. package/dist/chunk-KQBJQLZG.js.map +0 -1
  167. package/dist/chunk-KSIBNOB2.mjs +0 -13
  168. package/dist/chunk-KSIBNOB2.mjs.map +0 -1
  169. package/dist/chunk-MBQHVBLA.js.map +0 -1
  170. package/dist/chunk-ORO3T6BU.mjs +0 -24
  171. package/dist/chunk-ORO3T6BU.mjs.map +0 -1
  172. package/dist/chunk-PZDTZGSI.js.map +0 -1
  173. package/dist/chunk-R55KAAM4.js +0 -306
  174. package/dist/chunk-R55KAAM4.js.map +0 -1
  175. package/dist/chunk-RAMAN5RM.js +0 -24
  176. package/dist/chunk-RAMAN5RM.js.map +0 -1
  177. package/dist/chunk-T2PHS5FY.js.map +0 -1
  178. package/dist/chunk-TBDYQSRT.mjs +0 -16
  179. package/dist/chunk-TBDYQSRT.mjs.map +0 -1
  180. package/dist/chunk-TMAWGVZP.mjs.map +0 -1
  181. package/dist/chunk-TVD4SWH7.js +0 -16
  182. package/dist/chunk-TVD4SWH7.js.map +0 -1
  183. package/dist/chunk-U3DVRTS2.mjs.map +0 -1
  184. package/dist/chunk-UPR3PTSA.mjs.map +0 -1
  185. package/dist/chunk-VXPCUDBI.js.map +0 -1
  186. package/dist/chunk-XKJHFUHE.js.map +0 -1
  187. package/dist/chunk-YNUVT3HC.js.map +0 -1
  188. package/dist/internals/simulation/methods/hooks/get-locale.js +0 -8
  189. package/dist/internals/simulation/methods/hooks/get-locale.mjs +0 -8
  190. package/dist/internals/simulation/methods/hooks/show-dialog.js +0 -14
  191. package/dist/internals/simulation/methods/hooks/show-dialog.mjs +0 -14
  192. package/dist/types/internals/simulation/methods/hooks/get-locale.d.ts +0 -9
  193. package/dist/types/internals/simulation/methods/hooks/show-dialog.d.ts +0 -9
  194. /package/dist/{chunk-KNJNL723.mjs.map → chunk-3J2IBWXV.mjs.map} +0 -0
  195. /package/dist/{chunk-K55LIE3W.mjs.map → chunk-CACRY3TX.mjs.map} +0 -0
  196. /package/dist/{chunk-WMLSD6B5.js.map → chunk-K7MK6LQU.js.map} +0 -0
  197. /package/dist/{chunk-JXAJWUVZ.js.map → chunk-OO6IVUCV.js.map} +0 -0
  198. /package/dist/{chunk-3M4GRUMH.mjs.map → chunk-ORR7AE5X.mjs.map} +0 -0
  199. /package/dist/{chunk-XWGECIXI.js.map → chunk-RJNNNCZJ.js.map} +0 -0
  200. /package/dist/internals/simulation/methods/hooks/{get-locale.js.map → get-preferences.js.map} +0 -0
  201. /package/dist/internals/simulation/methods/hooks/{get-locale.mjs.map → get-preferences.mjs.map} +0 -0
  202. /package/dist/internals/simulation/methods/hooks/{show-dialog.js.map → request-user-approval.js.map} +0 -0
  203. /package/dist/internals/simulation/methods/hooks/{show-dialog.mjs.map → request-user-approval.mjs.map} +0 -0
@@ -1,12 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
+ var _chunkDUVKGPX5js = require('./chunk-DUVKGPX5.js');
4
5
 
5
6
 
6
- var _chunkR55KAAM4js = require('./chunk-R55KAAM4.js');
7
-
8
-
9
- var _chunkYNUVT3HCjs = require('./chunk-YNUVT3HC.js');
7
+ var _chunkGLPGOEVEjs = require('./chunk-GLPGOEVE.js');
10
8
 
11
9
 
12
10
 
@@ -17,6 +15,7 @@ var _chunk2YE2P5BZjs = require('./chunk-2YE2P5BZ.js');
17
15
 
18
16
  var _snapssdk = require('@metamask/snaps-sdk');
19
17
  var _snapsutils = require('@metamask/snaps-utils');
18
+ var _superstruct = require('@metamask/superstruct');
20
19
 
21
20
 
22
21
 
@@ -24,7 +23,6 @@ var _snapsutils = require('@metamask/snaps-utils');
24
23
 
25
24
  var _utils = require('@metamask/utils');
26
25
  var _toolkit = require('@reduxjs/toolkit');
27
- var _superstruct = require('superstruct');
28
26
  function handleRequest({
29
27
  snapId,
30
28
  store,
@@ -88,13 +86,13 @@ function handleRequest({
88
86
  });
89
87
  promise.getInterface = async () => {
90
88
  const sagaPromise = runSaga(
91
- _chunkR55KAAM4js.getInterface,
89
+ _chunkDUVKGPX5js.getInterface,
92
90
  runSaga,
93
91
  snapId,
94
92
  controllerMessenger
95
93
  ).toPromise();
96
94
  const result = await Promise.race([promise, sagaPromise]);
97
- if (_superstruct.is.call(void 0, result, _chunkYNUVT3HCjs.SnapResponseStruct) && _utils.hasProperty.call(void 0, result.response, "error")) {
95
+ if (_superstruct.is.call(void 0, result, _chunkGLPGOEVEjs.SnapResponseStruct) && _utils.hasProperty.call(void 0, result.response, "error")) {
98
96
  throw new Error(
99
97
  `Unable to get the interface from the Snap: The returned interface may be invalid. The error message received was: ${result.response.error.message}`
100
98
  );
@@ -134,37 +132,13 @@ async function getInterfaceApi(result, snapId, controllerMessenger) {
134
132
  snapId,
135
133
  interfaceId
136
134
  );
135
+ const actions = _chunkDUVKGPX5js.getInterfaceActions.call(void 0, snapId, controllerMessenger, {
136
+ id: interfaceId,
137
+ content
138
+ });
137
139
  return {
138
140
  content,
139
- clickElement: async (name) => {
140
- await _chunkR55KAAM4js.clickElement.call(void 0,
141
- controllerMessenger,
142
- interfaceId,
143
- content,
144
- snapId,
145
- name
146
- );
147
- },
148
- typeInField: async (name, value) => {
149
- await _chunkR55KAAM4js.typeInField.call(void 0,
150
- controllerMessenger,
151
- interfaceId,
152
- content,
153
- snapId,
154
- name,
155
- value
156
- );
157
- },
158
- selectInDropdown: async (name, value) => {
159
- await _chunkR55KAAM4js.selectInDropdown.call(void 0,
160
- controllerMessenger,
161
- interfaceId,
162
- content,
163
- snapId,
164
- name,
165
- value
166
- );
167
- }
141
+ ...actions
168
142
  };
169
143
  };
170
144
  }
@@ -176,4 +150,4 @@ async function getInterfaceApi(result, snapId, controllerMessenger) {
176
150
 
177
151
 
178
152
  exports.handleRequest = handleRequest; exports.getInterfaceFromResult = getInterfaceFromResult; exports.getInterfaceApi = getInterfaceApi;
179
- //# sourceMappingURL=chunk-2OHD2VKS.js.map
153
+ //# sourceMappingURL=chunk-AMAL4SJH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals/request.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AbstractExecutionService } from '@metamask/snaps-controllers';\nimport {\n type ComponentOrElement,\n ComponentOrElementStruct,\n type JsonRpcError,\n type SnapId,\n} from '@metamask/snaps-sdk';\nimport type { HandlerType } from '@metamask/snaps-utils';\nimport { unwrapError } from '@metamask/snaps-utils';\nimport { is } from '@metamask/superstruct';\nimport {\n assert,\n getSafeJson,\n hasProperty,\n isPlainObject,\n} from '@metamask/utils';\nimport { nanoid } from '@reduxjs/toolkit';\n\nimport type {\n RequestOptions,\n SnapHandlerInterface,\n SnapRequest,\n} from '../types';\nimport type { RunSagaFunction, Store } from './simulation';\nimport {\n clearNotifications,\n getInterface,\n getInterfaceActions,\n getNotifications,\n} from './simulation';\nimport type { RootControllerMessenger } from './simulation/controllers';\nimport { SnapResponseStruct } from './structs';\n\nexport type HandleRequestOptions = {\n snapId: SnapId;\n store: Store;\n executionService: AbstractExecutionService<unknown>;\n handler: HandlerType;\n controllerMessenger: RootControllerMessenger;\n runSaga: RunSagaFunction;\n request: RequestOptions;\n};\n\n/**\n * Send a JSON-RPC request to the Snap, and wrap the response in a\n * {@link SnapResponse} object.\n *\n * @param options - The request options.\n * @param options.snapId - The ID of the Snap to send the request to.\n * @param options.store - The Redux store.\n * @param options.executionService - The execution service to use to send the\n * request.\n * @param options.handler - The handler to use to send the request.\n * @param options.controllerMessenger - The controller messenger used to call actions.\n * @param options.runSaga - A function to run a saga outside the usual Redux\n * flow.\n * @param options.request - The request to send.\n * @param options.request.id - The ID of the request. If not provided, a random\n * ID will be generated.\n * @param options.request.origin - The origin of the request. Defaults to\n * `https://metamask.io`.\n * @returns The response, wrapped in a {@link SnapResponse} object.\n */\nexport function handleRequest({\n snapId,\n store,\n executionService,\n handler,\n controllerMessenger,\n runSaga,\n request: { id = nanoid(), origin = 'https://metamask.io', ...options },\n}: HandleRequestOptions): SnapRequest {\n const getInterfaceError = () => {\n throw new Error(\n 'Unable to get the interface from the Snap: The request to the Snap failed.',\n );\n };\n\n const promise = executionService\n .handleRpcRequest(snapId, {\n origin,\n handler,\n request: {\n jsonrpc: '2.0',\n id: 1,\n ...options,\n },\n })\n .then(async (result) => {\n const notifications = getNotifications(store.getState());\n store.dispatch(clearNotifications());\n\n try {\n const getInterfaceFn = await getInterfaceApi(\n result,\n snapId,\n controllerMessenger,\n );\n\n return {\n id: String(id),\n response: {\n result: getSafeJson(result),\n },\n notifications,\n ...(getInterfaceFn ? { getInterface: getInterfaceFn } : {}),\n };\n } catch (error) {\n const [unwrappedError] = unwrapError(error);\n return {\n id: String(id),\n response: {\n error: unwrappedError.serialize(),\n },\n notifications: [],\n getInterface: getInterfaceError,\n };\n }\n })\n .catch((error) => {\n const [unwrappedError] = unwrapError(error);\n\n return {\n id: String(id),\n response: {\n error: unwrappedError.serialize(),\n },\n notifications: [],\n getInterface: getInterfaceError,\n };\n }) as unknown as SnapRequest;\n\n promise.getInterface = async () => {\n const sagaPromise = runSaga(\n getInterface,\n runSaga,\n snapId,\n controllerMessenger,\n ).toPromise();\n const result = await Promise.race([promise, sagaPromise]);\n\n // If the request promise has resolved to an error, we should throw\n // instead of waiting for an interface that likely will never be displayed\n if (\n is(result, SnapResponseStruct) &&\n hasProperty(result.response, 'error')\n ) {\n throw new Error(\n `Unable to get the interface from the Snap: The returned interface may be invalid. The error message received was: ${\n (result.response.error as JsonRpcError).message\n }`,\n );\n }\n\n return await sagaPromise;\n };\n\n return promise;\n}\n\n/**\n * Get the interface ID from the result if it's available or create a new interface if the result contains static components.\n *\n * @param result - The handler result object.\n * @param snapId - The Snap ID.\n * @param controllerMessenger - The controller messenger.\n * @returns The interface ID or undefined if the result doesn't include content.\n */\nexport async function getInterfaceFromResult(\n result: unknown,\n snapId: SnapId,\n controllerMessenger: RootControllerMessenger,\n) {\n if (isPlainObject(result) && hasProperty(result, 'id')) {\n return result.id as string;\n }\n\n if (isPlainObject(result) && hasProperty(result, 'content')) {\n assert(\n is(result.content, ComponentOrElementStruct),\n 'The Snap returned an invalid interface.',\n );\n const id = await controllerMessenger.call(\n 'SnapInterfaceController:createInterface',\n snapId,\n result.content as ComponentOrElement,\n );\n\n return id;\n }\n\n return undefined;\n}\n\n/**\n * Get the response content from the `SnapInterfaceController` and include the\n * interaction methods.\n *\n * @param result - The handler result object.\n * @param snapId - The Snap ID.\n * @param controllerMessenger - The controller messenger.\n * @returns The content components if any.\n */\nexport async function getInterfaceApi(\n result: unknown,\n snapId: SnapId,\n controllerMessenger: RootControllerMessenger,\n): Promise<(() => SnapHandlerInterface) | undefined> {\n const interfaceId = await getInterfaceFromResult(\n result,\n snapId,\n controllerMessenger,\n );\n\n if (interfaceId) {\n return () => {\n const { content } = controllerMessenger.call(\n 'SnapInterfaceController:getInterface',\n snapId,\n interfaceId,\n );\n\n const actions = getInterfaceActions(snapId, controllerMessenger, {\n id: interfaceId,\n content,\n });\n\n return {\n content,\n ...actions,\n };\n };\n }\n\n return undefined;\n}\n"]}
@@ -1,13 +1,6 @@
1
1
  // src/internals/structs.ts
2
2
  import { NotificationType, enumValue } from "@metamask/snaps-sdk";
3
3
  import { JSXElementStruct } from "@metamask/snaps-sdk/jsx";
4
- import {
5
- bytesToHex,
6
- JsonStruct,
7
- StrictHexStruct,
8
- valueToBytes
9
- } from "@metamask/utils";
10
- import { randomBytes } from "crypto";
11
4
  import {
12
5
  array,
13
6
  assign,
@@ -25,7 +18,14 @@ import {
25
18
  any,
26
19
  func,
27
20
  type
28
- } from "superstruct";
21
+ } from "@metamask/superstruct";
22
+ import {
23
+ bytesToHex,
24
+ JsonStruct,
25
+ StrictHexStruct,
26
+ valueToBytes
27
+ } from "@metamask/utils";
28
+ import { randomBytes } from "crypto";
29
29
  var BytesLikeStruct = union([
30
30
  bigint(),
31
31
  number(),
@@ -237,4 +237,4 @@ export {
237
237
  SnapResponseWithInterfaceStruct,
238
238
  SnapResponseStruct
239
239
  };
240
- //# sourceMappingURL=chunk-HOI6FPLR.mjs.map
240
+ //# sourceMappingURL=chunk-C26TYXXD.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals/structs.ts"],"sourcesContent":["import { NotificationType, enumValue } from '@metamask/snaps-sdk';\nimport { JSXElementStruct } from '@metamask/snaps-sdk/jsx';\nimport {\n array,\n assign,\n bigint,\n coerce,\n defaulted,\n instance,\n literal,\n number,\n object,\n optional,\n string,\n union,\n record,\n any,\n func,\n type,\n} from '@metamask/superstruct';\nimport {\n bytesToHex,\n JsonStruct,\n StrictHexStruct,\n valueToBytes,\n} from '@metamask/utils';\nimport { randomBytes } from 'crypto';\n\n// TODO: Export this from `@metamask/utils` instead.\nconst BytesLikeStruct = union([\n bigint(),\n number(),\n string(),\n instance(Uint8Array),\n]);\n\nexport const TransactionOptionsStruct = object({\n /**\n * The CAIP-2 chain ID to send the transaction on. Defaults to `eip155:1`.\n */\n chainId: defaulted(string(), 'eip155:1'),\n\n /**\n * The origin to send the transaction from. Defaults to `metamask.io`.\n */\n origin: defaulted(string(), 'metamask.io'),\n\n /**\n * The address to send the transaction from. Defaults to a randomly generated\n * address.\n */\n // TODO: Move this coercer to `@metamask/utils`.\n from: coerce(StrictHexStruct, optional(BytesLikeStruct), (value) => {\n if (value) {\n return bytesToHex(valueToBytes(value));\n }\n\n return bytesToHex(randomBytes(20));\n }),\n\n /**\n * The address to send the transaction to. Defaults to a randomly generated\n * address.\n */\n // TODO: Move this coercer to `@metamask/utils`.\n to: coerce(StrictHexStruct, optional(BytesLikeStruct), (value) => {\n if (value) {\n return bytesToHex(valueToBytes(value));\n }\n\n return bytesToHex(randomBytes(20));\n }),\n\n /**\n * The value to send with the transaction. The value may be specified as a\n * `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `0`.\n */\n value: defaulted(\n coerce(StrictHexStruct, BytesLikeStruct, (value) =>\n bytesToHex(valueToBytes(value)),\n ),\n '0x0',\n ),\n\n /**\n * The gas limit to use for the transaction. The gas limit may be specified\n * as a `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `21_000`.\n */\n gasLimit: defaulted(\n coerce(StrictHexStruct, BytesLikeStruct, (value) =>\n bytesToHex(valueToBytes(value)),\n ),\n valueToBytes(21_000),\n ),\n\n /**\n * The max fee per gas (in Wei) to use for the transaction. The max fee per\n * gas may be specified as a `number`, `bigint`, `string`, or `Uint8Array`.\n * Defaults to `1`.\n */\n maxFeePerGas: defaulted(\n coerce(StrictHexStruct, BytesLikeStruct, (value) =>\n bytesToHex(valueToBytes(value)),\n ),\n valueToBytes(1),\n ),\n\n /**\n * The max priority fee per gas (in Wei) to use for the transaction. The max\n * priority fee per gas may be specified as a `number`, `bigint`, `string`,\n * or `Uint8Array`. Defaults to `1`.\n */\n maxPriorityFeePerGas: defaulted(\n coerce(StrictHexStruct, BytesLikeStruct, (value) =>\n bytesToHex(valueToBytes(value)),\n ),\n valueToBytes(1),\n ),\n\n /**\n * The nonce to use for the transaction. The nonce may be specified as a\n * `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `0`.\n */\n nonce: defaulted(\n coerce(StrictHexStruct, BytesLikeStruct, (value) =>\n bytesToHex(valueToBytes(value)),\n ),\n valueToBytes(0),\n ),\n\n /**\n * The data to send with the transaction. The data may be specified as a\n * `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `0x`.\n */\n data: defaulted(\n coerce(union([StrictHexStruct, literal('0x')]), BytesLikeStruct, (value) =>\n bytesToHex(valueToBytes(value)),\n ),\n '0x',\n ),\n});\n\nexport const SignatureOptionsStruct = object({\n /**\n * The origin making the signature request.\n */\n origin: defaulted(string(), 'metamask.io'),\n\n /**\n * The address signing the signature request. Defaults to a randomly generated\n * address.\n */\n from: coerce(StrictHexStruct, optional(BytesLikeStruct), (value) => {\n if (value) {\n return bytesToHex(valueToBytes(value));\n }\n\n return bytesToHex(randomBytes(20));\n }),\n\n /**\n * The data to send with the transaction. The data may be specified as a\n * `string`, an object, or an array of objects. This covers the data types\n * for the supported signature methods. Defaults to `0x`.\n */\n data: defaulted(\n union([\n StrictHexStruct,\n literal('0x'),\n record(string(), any()),\n array(record(string(), any())),\n ]),\n '0x',\n ),\n\n /**\n * The signature method being used.\n */\n signatureMethod: defaulted(\n union([\n literal('eth_sign'),\n literal('personal_sign'),\n literal('eth_signTypedData'),\n literal('eth_signTypedData_v3'),\n literal('eth_signTypedData_v4'),\n ]),\n 'personal_sign',\n ),\n});\n\nexport const SnapOptionsStruct = object({\n /**\n * The timeout in milliseconds to use for requests to the snap. Defaults to\n * `1000`.\n */\n timeout: defaulted(optional(number()), 1000),\n});\n\nexport const JsonRpcMockOptionsStruct = object({\n method: string(),\n result: JsonStruct,\n});\n\nexport const InterfaceStruct = type({\n content: optional(JSXElementStruct),\n});\n\nexport const SnapResponseWithoutInterfaceStruct = object({\n id: string(),\n\n response: union([\n object({\n result: JsonStruct,\n }),\n object({\n error: JsonStruct,\n }),\n ]),\n\n notifications: array(\n object({\n id: string(),\n message: string(),\n type: union([\n enumValue(NotificationType.InApp),\n enumValue(NotificationType.Native),\n ]),\n }),\n ),\n});\n\nexport const SnapResponseWithInterfaceStruct = assign(\n SnapResponseWithoutInterfaceStruct,\n object({\n getInterface: func(),\n }),\n);\n\nexport const SnapResponseStruct = union([\n SnapResponseWithoutInterfaceStruct,\n SnapResponseWithInterfaceStruct,\n]);\n"],"mappings":"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","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  getOptions
3
- } from "./chunk-B73P64TE.mjs";
3
+ } from "./chunk-KOPPL55J.mjs";
4
4
  import {
5
5
  handleInstallSnap
6
- } from "./chunk-E2BYTLOT.mjs";
6
+ } from "./chunk-Q3I6P2ZF.mjs";
7
7
  import {
8
8
  startServer
9
9
  } from "./chunk-SLU4FNKX.mjs";
@@ -101,4 +101,4 @@ export {
101
101
  SnapsEnvironment,
102
102
  environment_default
103
103
  };
104
- //# sourceMappingURL=chunk-K55LIE3W.mjs.map
104
+ //# sourceMappingURL=chunk-CACRY3TX.mjs.map
@@ -31,4 +31,4 @@ var getCurrentInterface = _toolkit.createSelector.call(void 0,
31
31
 
32
32
 
33
33
  exports.uiSlice = uiSlice; exports.resolveInterface = resolveInterface; exports.setInterface = setInterface; exports.closeInterface = closeInterface; exports.getCurrentInterface = getCurrentInterface;
34
- //# sourceMappingURL=chunk-PZDTZGSI.js.map
34
+ //# sourceMappingURL=chunk-D653LBAY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals/simulation/store/ui.ts"],"names":[],"mappings":";AAGA,SAAS,cAAc,gBAAgB,mBAAmB;AAa1D,IAAM,gBAAyB;AAAA,EAC7B,SAAS;AACX;AAEO,IAAM,UAAU,YAAY;AAAA,EACjC,MAAM;AAAA,EACN,cAAc;AAAA,EACd,UAAU;AAAA,IACR,aAAa,OAAO,QAAkC;AACpD,YAAM,UAAU,OAAO;AAAA,IACzB;AAAA,IACA,eAAe,OAAO;AACpB,YAAM,UAAU;AAAA,IAClB;AAAA,EACF;AACF,CAAC;AAEM,IAAM,mBAAmB;AAAA,EAC9B,GAAG,QAAQ,IAAI;AACjB;AAEO,IAAM,EAAE,cAAc,eAAe,IAAI,QAAQ;AAEjD,IAAM,sBAAsB;AAAA,EACjC,CAAC,UAA4B,MAAM;AAAA,EACnC,CAAC,OAAO,GAAG;AACb","sourcesContent":["import type { DialogApprovalTypes } from '@metamask/snaps-rpc-methods';\nimport type { DialogType } from '@metamask/snaps-sdk';\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport { createAction, createSelector, createSlice } from '@reduxjs/toolkit';\n\nimport type { ApplicationState } from './store';\n\nexport type Interface = {\n type: DialogApprovalTypes[DialogType | 'default'];\n id: string;\n};\n\nexport type UiState = {\n current?: Interface | null;\n};\n\nconst INITIAL_STATE: UiState = {\n current: null,\n};\n\nexport const uiSlice = createSlice({\n name: 'ui',\n initialState: INITIAL_STATE,\n reducers: {\n setInterface(state, action: PayloadAction<Interface>) {\n state.current = action.payload;\n },\n closeInterface(state) {\n state.current = null;\n },\n },\n});\n\nexport const resolveInterface = createAction<unknown>(\n `${uiSlice.name}/resolveInterface`,\n);\n\nexport const { setInterface, closeInterface } = uiSlice.actions;\n\nexport const getCurrentInterface = createSelector(\n (state: ApplicationState) => state.ui,\n (ui) => ui.current,\n);\n"]}