@metamask/snaps-simulation 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/LICENSE +15 -0
  3. package/README.md +14 -0
  4. package/dist/constants.cjs +21 -0
  5. package/dist/constants.cjs.map +1 -0
  6. package/dist/constants.d.cts +18 -0
  7. package/dist/constants.d.cts.map +1 -0
  8. package/dist/constants.d.mts +18 -0
  9. package/dist/constants.d.mts.map +1 -0
  10. package/dist/constants.mjs +18 -0
  11. package/dist/constants.mjs.map +1 -0
  12. package/dist/controllers.cjs +101 -0
  13. package/dist/controllers.cjs.map +1 -0
  14. package/dist/controllers.d.cts +41 -0
  15. package/dist/controllers.d.cts.map +1 -0
  16. package/dist/controllers.d.mts +41 -0
  17. package/dist/controllers.d.mts.map +1 -0
  18. package/dist/controllers.mjs +96 -0
  19. package/dist/controllers.mjs.map +1 -0
  20. package/dist/files.cjs +94 -0
  21. package/dist/files.cjs.map +1 -0
  22. package/dist/files.d.cts +49 -0
  23. package/dist/files.d.cts.map +1 -0
  24. package/dist/files.d.mts +49 -0
  25. package/dist/files.d.mts.map +1 -0
  26. package/dist/files.mjs +91 -0
  27. package/dist/files.mjs.map +1 -0
  28. package/dist/index.cjs +27 -0
  29. package/dist/index.cjs.map +1 -0
  30. package/dist/index.d.cts +11 -0
  31. package/dist/index.d.cts.map +1 -0
  32. package/dist/index.d.mts +11 -0
  33. package/dist/index.d.mts.map +1 -0
  34. package/dist/index.mjs +11 -0
  35. package/dist/index.mjs.map +1 -0
  36. package/dist/interface.cjs +569 -0
  37. package/dist/interface.cjs.map +1 -0
  38. package/dist/interface.d.cts +163 -0
  39. package/dist/interface.d.cts.map +1 -0
  40. package/dist/interface.d.mts +163 -0
  41. package/dist/interface.d.mts.map +1 -0
  42. package/dist/interface.mjs +554 -0
  43. package/dist/interface.mjs.map +1 -0
  44. package/dist/methods/constants.cjs +72 -0
  45. package/dist/methods/constants.cjs.map +1 -0
  46. package/dist/methods/constants.d.cts +11 -0
  47. package/dist/methods/constants.d.cts.map +1 -0
  48. package/dist/methods/constants.d.mts +11 -0
  49. package/dist/methods/constants.d.mts.map +1 -0
  50. package/dist/methods/constants.mjs +69 -0
  51. package/dist/methods/constants.mjs.map +1 -0
  52. package/dist/methods/hooks/get-preferences.cjs +18 -0
  53. package/dist/methods/hooks/get-preferences.cjs.map +1 -0
  54. package/dist/methods/hooks/get-preferences.d.cts +14 -0
  55. package/dist/methods/hooks/get-preferences.d.cts.map +1 -0
  56. package/dist/methods/hooks/get-preferences.d.mts +14 -0
  57. package/dist/methods/hooks/get-preferences.d.mts.map +1 -0
  58. package/dist/methods/hooks/get-preferences.mjs +14 -0
  59. package/dist/methods/hooks/get-preferences.mjs.map +1 -0
  60. package/dist/methods/hooks/index.cjs +22 -0
  61. package/dist/methods/hooks/index.cjs.map +1 -0
  62. package/dist/methods/hooks/index.d.cts +6 -0
  63. package/dist/methods/hooks/index.d.cts.map +1 -0
  64. package/dist/methods/hooks/index.d.mts +6 -0
  65. package/dist/methods/hooks/index.d.mts.map +1 -0
  66. package/dist/methods/hooks/index.mjs +6 -0
  67. package/dist/methods/hooks/index.mjs.map +1 -0
  68. package/dist/methods/hooks/interface.cjs +24 -0
  69. package/dist/methods/hooks/interface.cjs.map +1 -0
  70. package/dist/methods/hooks/interface.d.cts +17 -0
  71. package/dist/methods/hooks/interface.d.cts.map +1 -0
  72. package/dist/methods/hooks/interface.d.mts +17 -0
  73. package/dist/methods/hooks/interface.d.mts.map +1 -0
  74. package/dist/methods/hooks/interface.mjs +19 -0
  75. package/dist/methods/hooks/interface.mjs.map +1 -0
  76. package/dist/methods/hooks/notifications.cjs +58 -0
  77. package/dist/methods/hooks/notifications.cjs.map +1 -0
  78. package/dist/methods/hooks/notifications.d.cts +17 -0
  79. package/dist/methods/hooks/notifications.d.cts.map +1 -0
  80. package/dist/methods/hooks/notifications.d.mts +17 -0
  81. package/dist/methods/hooks/notifications.d.mts.map +1 -0
  82. package/dist/methods/hooks/notifications.mjs +55 -0
  83. package/dist/methods/hooks/notifications.mjs.map +1 -0
  84. package/dist/methods/hooks/request-user-approval.cjs +38 -0
  85. package/dist/methods/hooks/request-user-approval.cjs.map +1 -0
  86. package/dist/methods/hooks/request-user-approval.d.cts +16 -0
  87. package/dist/methods/hooks/request-user-approval.d.cts.map +1 -0
  88. package/dist/methods/hooks/request-user-approval.d.mts +16 -0
  89. package/dist/methods/hooks/request-user-approval.d.mts.map +1 -0
  90. package/dist/methods/hooks/request-user-approval.mjs +35 -0
  91. package/dist/methods/hooks/request-user-approval.mjs.map +1 -0
  92. package/dist/methods/hooks/state.cjs +84 -0
  93. package/dist/methods/hooks/state.cjs.map +1 -0
  94. package/dist/methods/hooks/state.d.cts +24 -0
  95. package/dist/methods/hooks/state.d.cts.map +1 -0
  96. package/dist/methods/hooks/state.d.mts +24 -0
  97. package/dist/methods/hooks/state.d.mts.map +1 -0
  98. package/dist/methods/hooks/state.mjs +79 -0
  99. package/dist/methods/hooks/state.mjs.map +1 -0
  100. package/dist/methods/index.cjs +18 -0
  101. package/dist/methods/index.cjs.map +1 -0
  102. package/dist/methods/index.d.cts +2 -0
  103. package/dist/methods/index.d.cts.map +1 -0
  104. package/dist/methods/index.d.mts +2 -0
  105. package/dist/methods/index.d.mts.map +1 -0
  106. package/dist/methods/index.mjs +2 -0
  107. package/dist/methods/index.mjs.map +1 -0
  108. package/dist/methods/specifications.cjs +85 -0
  109. package/dist/methods/specifications.cjs.map +1 -0
  110. package/dist/methods/specifications.d.cts +57 -0
  111. package/dist/methods/specifications.d.cts.map +1 -0
  112. package/dist/methods/specifications.d.mts +57 -0
  113. package/dist/methods/specifications.d.mts.map +1 -0
  114. package/dist/methods/specifications.mjs +78 -0
  115. package/dist/methods/specifications.mjs.map +1 -0
  116. package/dist/middleware/engine.cjs +37 -0
  117. package/dist/middleware/engine.cjs.map +1 -0
  118. package/dist/middleware/engine.d.cts +27 -0
  119. package/dist/middleware/engine.d.cts.map +1 -0
  120. package/dist/middleware/engine.d.mts +27 -0
  121. package/dist/middleware/engine.d.mts.map +1 -0
  122. package/dist/middleware/engine.mjs +34 -0
  123. package/dist/middleware/engine.mjs.map +1 -0
  124. package/dist/middleware/index.cjs +18 -0
  125. package/dist/middleware/index.cjs.map +1 -0
  126. package/dist/middleware/index.d.cts +2 -0
  127. package/dist/middleware/index.d.cts.map +1 -0
  128. package/dist/middleware/index.d.mts +2 -0
  129. package/dist/middleware/index.d.mts.map +1 -0
  130. package/dist/middleware/index.mjs +2 -0
  131. package/dist/middleware/index.mjs.map +1 -0
  132. package/dist/middleware/internal-methods/accounts.cjs +34 -0
  133. package/dist/middleware/internal-methods/accounts.cjs.map +1 -0
  134. package/dist/middleware/internal-methods/accounts.d.cts +20 -0
  135. package/dist/middleware/internal-methods/accounts.d.cts.map +1 -0
  136. package/dist/middleware/internal-methods/accounts.d.mts +20 -0
  137. package/dist/middleware/internal-methods/accounts.d.mts.map +1 -0
  138. package/dist/middleware/internal-methods/accounts.mjs +30 -0
  139. package/dist/middleware/internal-methods/accounts.mjs.map +1 -0
  140. package/dist/middleware/internal-methods/index.cjs +18 -0
  141. package/dist/middleware/internal-methods/index.cjs.map +1 -0
  142. package/dist/middleware/internal-methods/index.d.cts +2 -0
  143. package/dist/middleware/internal-methods/index.d.cts.map +1 -0
  144. package/dist/middleware/internal-methods/index.d.mts +2 -0
  145. package/dist/middleware/internal-methods/index.d.mts.map +1 -0
  146. package/dist/middleware/internal-methods/index.mjs +2 -0
  147. package/dist/middleware/internal-methods/index.mjs.map +1 -0
  148. package/dist/middleware/internal-methods/middleware.cjs +44 -0
  149. package/dist/middleware/internal-methods/middleware.cjs.map +1 -0
  150. package/dist/middleware/internal-methods/middleware.d.cts +23 -0
  151. package/dist/middleware/internal-methods/middleware.d.cts.map +1 -0
  152. package/dist/middleware/internal-methods/middleware.d.mts +23 -0
  153. package/dist/middleware/internal-methods/middleware.d.mts.map +1 -0
  154. package/dist/middleware/internal-methods/middleware.mjs +40 -0
  155. package/dist/middleware/internal-methods/middleware.mjs.map +1 -0
  156. package/dist/middleware/internal-methods/provider-state.cjs +28 -0
  157. package/dist/middleware/internal-methods/provider-state.cjs.map +1 -0
  158. package/dist/middleware/internal-methods/provider-state.d.cts +16 -0
  159. package/dist/middleware/internal-methods/provider-state.d.cts.map +1 -0
  160. package/dist/middleware/internal-methods/provider-state.d.mts +16 -0
  161. package/dist/middleware/internal-methods/provider-state.d.mts.map +1 -0
  162. package/dist/middleware/internal-methods/provider-state.mjs +24 -0
  163. package/dist/middleware/internal-methods/provider-state.mjs.map +1 -0
  164. package/dist/middleware/mock.cjs +22 -0
  165. package/dist/middleware/mock.cjs.map +1 -0
  166. package/dist/middleware/mock.d.cts +11 -0
  167. package/dist/middleware/mock.d.cts.map +1 -0
  168. package/dist/middleware/mock.d.mts +11 -0
  169. package/dist/middleware/mock.d.mts.map +1 -0
  170. package/dist/middleware/mock.mjs +18 -0
  171. package/dist/middleware/mock.mjs.map +1 -0
  172. package/dist/options.cjs +25 -0
  173. package/dist/options.cjs.map +1 -0
  174. package/dist/options.d.cts +40 -0
  175. package/dist/options.d.cts.map +1 -0
  176. package/dist/options.d.mts +40 -0
  177. package/dist/options.d.mts.map +1 -0
  178. package/dist/options.mjs +21 -0
  179. package/dist/options.mjs.map +1 -0
  180. package/dist/request.cjs +144 -0
  181. package/dist/request.cjs.map +1 -0
  182. package/dist/request.d.cts +56 -0
  183. package/dist/request.d.cts.map +1 -0
  184. package/dist/request.d.mts +56 -0
  185. package/dist/request.d.mts.map +1 -0
  186. package/dist/request.mjs +139 -0
  187. package/dist/request.mjs.map +1 -0
  188. package/dist/simulation.cjs +155 -0
  189. package/dist/simulation.cjs.map +1 -0
  190. package/dist/simulation.d.cts +103 -0
  191. package/dist/simulation.d.cts.map +1 -0
  192. package/dist/simulation.d.mts +103 -0
  193. package/dist/simulation.d.mts.map +1 -0
  194. package/dist/simulation.mjs +150 -0
  195. package/dist/simulation.mjs.map +1 -0
  196. package/dist/store/index.cjs +22 -0
  197. package/dist/store/index.cjs.map +1 -0
  198. package/dist/store/index.d.cts +6 -0
  199. package/dist/store/index.d.cts.map +1 -0
  200. package/dist/store/index.d.mts +6 -0
  201. package/dist/store/index.d.mts.map +1 -0
  202. package/dist/store/index.mjs +6 -0
  203. package/dist/store/index.mjs.map +1 -0
  204. package/dist/store/mocks.cjs +39 -0
  205. package/dist/store/mocks.cjs.map +1 -0
  206. package/dist/store/mocks.d.cts +36 -0
  207. package/dist/store/mocks.d.cts.map +1 -0
  208. package/dist/store/mocks.d.mts +36 -0
  209. package/dist/store/mocks.d.mts.map +1 -0
  210. package/dist/store/mocks.mjs +35 -0
  211. package/dist/store/mocks.mjs.map +1 -0
  212. package/dist/store/notifications.cjs +35 -0
  213. package/dist/store/notifications.cjs.map +1 -0
  214. package/dist/store/notifications.d.cts +45 -0
  215. package/dist/store/notifications.d.cts.map +1 -0
  216. package/dist/store/notifications.d.mts +45 -0
  217. package/dist/store/notifications.d.mts.map +1 -0
  218. package/dist/store/notifications.mjs +32 -0
  219. package/dist/store/notifications.mjs.map +1 -0
  220. package/dist/store/state.cjs +54 -0
  221. package/dist/store/state.cjs.map +1 -0
  222. package/dist/store/state.d.cts +56 -0
  223. package/dist/store/state.d.cts.map +1 -0
  224. package/dist/store/state.d.mts +56 -0
  225. package/dist/store/state.d.mts.map +1 -0
  226. package/dist/store/state.mjs +50 -0
  227. package/dist/store/state.mjs.map +1 -0
  228. package/dist/store/store.cjs +51 -0
  229. package/dist/store/store.cjs.map +1 -0
  230. package/dist/store/store.d.cts +22 -0
  231. package/dist/store/store.d.cts.map +1 -0
  232. package/dist/store/store.d.mts +22 -0
  233. package/dist/store/store.d.mts.map +1 -0
  234. package/dist/store/store.mjs +45 -0
  235. package/dist/store/store.mjs.map +1 -0
  236. package/dist/store/ui.cjs +24 -0
  237. package/dist/store/ui.cjs.map +1 -0
  238. package/dist/store/ui.d.cts +27 -0
  239. package/dist/store/ui.d.cts.map +1 -0
  240. package/dist/store/ui.d.mts +27 -0
  241. package/dist/store/ui.d.mts.map +1 -0
  242. package/dist/store/ui.mjs +21 -0
  243. package/dist/store/ui.mjs.map +1 -0
  244. package/dist/structs.cjs +157 -0
  245. package/dist/structs.cjs.map +1 -0
  246. package/dist/structs.d.cts +205 -0
  247. package/dist/structs.d.cts.map +1 -0
  248. package/dist/structs.d.mts +205 -0
  249. package/dist/structs.d.mts.map +1 -0
  250. package/dist/structs.mjs +154 -0
  251. package/dist/structs.mjs.map +1 -0
  252. package/dist/types.cjs +3 -0
  253. package/dist/types.cjs.map +1 -0
  254. package/dist/types.d.cts +393 -0
  255. package/dist/types.d.cts.map +1 -0
  256. package/dist/types.d.mts +393 -0
  257. package/dist/types.d.mts.map +1 -0
  258. package/dist/types.mjs +2 -0
  259. package/dist/types.mjs.map +1 -0
  260. package/dist/validation.cjs +74 -0
  261. package/dist/validation.cjs.map +1 -0
  262. package/dist/validation.d.cts +44 -0
  263. package/dist/validation.d.cts.map +1 -0
  264. package/dist/validation.d.mts +44 -0
  265. package/dist/validation.d.mts.map +1 -0
  266. package/dist/validation.mjs +64 -0
  267. package/dist/validation.mjs.map +1 -0
  268. package/package.json +101 -0
@@ -0,0 +1,64 @@
1
+ import { DialogType } from "@metamask/snaps-sdk";
2
+ import { getJsxChildren } from "@metamask/snaps-utils";
3
+ import { assert, hasProperty } from "@metamask/utils";
4
+ import { getElementByType } from "./interface.mjs";
5
+ /**
6
+ * Ensure that the actual interface is an alert dialog.
7
+ *
8
+ * @param ui - The interface to verify.
9
+ */
10
+ export function assertIsAlertDialog(ui) {
11
+ assert(hasProperty(ui, 'type') && ui.type === DialogType.Alert);
12
+ }
13
+ /**
14
+ * Ensure that the actual interface is a confirmation dialog.
15
+ *
16
+ * @param ui - The interface to verify.
17
+ */
18
+ export function assertIsConfirmationDialog(ui) {
19
+ assert(hasProperty(ui, 'type') && ui.type === DialogType.Confirmation);
20
+ }
21
+ /**
22
+ * Ensure that the actual interface is a Prompt dialog.
23
+ *
24
+ * @param ui - The interface to verify.
25
+ */
26
+ export function assertIsPromptDialog(ui) {
27
+ assert(hasProperty(ui, 'type') && ui.type === DialogType.Prompt);
28
+ }
29
+ /**
30
+ * Ensure that the actual interface is a custom dialog.
31
+ *
32
+ * @param ui - The interface to verify.
33
+ */
34
+ export function assertIsCustomDialog(ui) {
35
+ assert(!hasProperty(ui, 'type'));
36
+ }
37
+ /**
38
+ * Ensure that the actual interface is a custom dialog with a complete footer.
39
+ *
40
+ * @param ui - The interface to verify.
41
+ */
42
+ export function assertCustomDialogHasFooter(ui) {
43
+ const footer = getElementByType(ui.content, 'Footer');
44
+ assert(footer && getJsxChildren(footer).length === 2);
45
+ }
46
+ /**
47
+ * Ensure that the actual interface is a custom dialog with a partial footer.
48
+ *
49
+ * @param ui - The interface to verify.
50
+ */
51
+ export function assertCustomDialogHasPartialFooter(ui) {
52
+ const footer = getElementByType(ui.content, 'Footer');
53
+ assert(footer && getJsxChildren(footer).length === 1);
54
+ }
55
+ /**
56
+ * Ensure that the actual interface is a custom dialog without a footer.
57
+ *
58
+ * @param ui - The interface to verify.
59
+ */
60
+ export function assertCustomDialogHasNoFooter(ui) {
61
+ const footer = getElementByType(ui.content, 'Footer');
62
+ assert(!footer);
63
+ }
64
+ //# sourceMappingURL=validation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.mjs","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,4BAA4B;AAEjD,OAAO,EAAE,cAAc,EAAE,8BAA8B;AACvD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,wBAAwB;AAEtD,OAAO,EAAE,gBAAgB,EAAE,wBAAoB;AAa/C;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAAiB;IAEjB,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,EAAiB;IAEjB,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC,YAAY,CAAC,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,EAAiB;IAEjB,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,EAAiB;IAEjB,MAAM,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CACzC,EAA+C;IAE/C,MAAM,MAAM,GAAG,gBAAgB,CAAgB,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAErE,MAAM,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kCAAkC,CAChD,EAA+C;IAE/C,MAAM,MAAM,GAAG,gBAAgB,CAAgB,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAErE,MAAM,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAC3C,EAA+C;IAE/C,MAAM,MAAM,GAAG,gBAAgB,CAAgB,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAErE,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC","sourcesContent":["import { DialogType } from '@metamask/snaps-sdk';\nimport type { FooterElement } from '@metamask/snaps-sdk/jsx';\nimport { getJsxChildren } from '@metamask/snaps-utils';\nimport { assert, hasProperty } from '@metamask/utils';\n\nimport { getElementByType } from './interface';\nimport type {\n DefaultSnapInterface,\n DefaultSnapInterfaceWithFooter,\n DefaultSnapInterfaceWithoutFooter,\n DefaultSnapInterfaceWithPartialFooter,\n SnapAlertInterface,\n SnapConfirmationInterface,\n SnapInterface,\n SnapInterfaceActions,\n SnapPromptInterface,\n} from './types';\n\n/**\n * Ensure that the actual interface is an alert dialog.\n *\n * @param ui - The interface to verify.\n */\nexport function assertIsAlertDialog(\n ui: SnapInterface,\n): asserts ui is SnapAlertInterface & SnapInterfaceActions {\n assert(hasProperty(ui, 'type') && ui.type === DialogType.Alert);\n}\n\n/**\n * Ensure that the actual interface is a confirmation dialog.\n *\n * @param ui - The interface to verify.\n */\nexport function assertIsConfirmationDialog(\n ui: SnapInterface,\n): asserts ui is SnapConfirmationInterface & SnapInterfaceActions {\n assert(hasProperty(ui, 'type') && ui.type === DialogType.Confirmation);\n}\n\n/**\n * Ensure that the actual interface is a Prompt dialog.\n *\n * @param ui - The interface to verify.\n */\nexport function assertIsPromptDialog(\n ui: SnapInterface,\n): asserts ui is SnapPromptInterface & SnapInterfaceActions {\n assert(hasProperty(ui, 'type') && ui.type === DialogType.Prompt);\n}\n\n/**\n * Ensure that the actual interface is a custom dialog.\n *\n * @param ui - The interface to verify.\n */\nexport function assertIsCustomDialog(\n ui: SnapInterface,\n): asserts ui is DefaultSnapInterface & SnapInterfaceActions {\n assert(!hasProperty(ui, 'type'));\n}\n\n/**\n * Ensure that the actual interface is a custom dialog with a complete footer.\n *\n * @param ui - The interface to verify.\n */\nexport function assertCustomDialogHasFooter(\n ui: DefaultSnapInterface & SnapInterfaceActions,\n): asserts ui is DefaultSnapInterfaceWithFooter & SnapInterfaceActions {\n const footer = getElementByType<FooterElement>(ui.content, 'Footer');\n\n assert(footer && getJsxChildren(footer).length === 2);\n}\n\n/**\n * Ensure that the actual interface is a custom dialog with a partial footer.\n *\n * @param ui - The interface to verify.\n */\nexport function assertCustomDialogHasPartialFooter(\n ui: DefaultSnapInterface & SnapInterfaceActions,\n): asserts ui is DefaultSnapInterfaceWithPartialFooter & SnapInterfaceActions {\n const footer = getElementByType<FooterElement>(ui.content, 'Footer');\n\n assert(footer && getJsxChildren(footer).length === 1);\n}\n\n/**\n * Ensure that the actual interface is a custom dialog without a footer.\n *\n * @param ui - The interface to verify.\n */\nexport function assertCustomDialogHasNoFooter(\n ui: DefaultSnapInterface & SnapInterfaceActions,\n): asserts ui is DefaultSnapInterfaceWithoutFooter & SnapInterfaceActions {\n const footer = getElementByType<FooterElement>(ui.content, 'Footer');\n\n assert(!footer);\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,101 @@
1
+ {
2
+ "name": "@metamask/snaps-simulation",
3
+ "version": "1.0.0",
4
+ "description": "A simulation framework for MetaMask Snaps, enabling headless testing of Snaps in a controlled environment",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/MetaMask/snaps.git"
8
+ },
9
+ "sideEffects": false,
10
+ "exports": {
11
+ ".": {
12
+ "import": {
13
+ "types": "./dist/index.d.mts",
14
+ "default": "./dist/index.mjs"
15
+ },
16
+ "require": {
17
+ "default": "./dist/index.cjs",
18
+ "types": "./dist/index.d.cts"
19
+ }
20
+ },
21
+ "./package.json": "./package.json"
22
+ },
23
+ "main": "./dist/index.cjs",
24
+ "module": "./dist/index.mjs",
25
+ "types": "./dist/index.d.cts",
26
+ "files": [
27
+ "dist"
28
+ ],
29
+ "scripts": {
30
+ "test": "jest && yarn posttest",
31
+ "posttest": "jest-it-up --margin 0.25",
32
+ "test:ci": "yarn test",
33
+ "lint:eslint": "eslint . --cache --ext js,ts,jsx,tsx",
34
+ "lint:misc": "prettier --no-error-on-unmatched-pattern --loglevel warn \"**/*.json\" \"**/*.md\" \"**/*.html\" \"!CHANGELOG.md\" --ignore-path ../../.gitignore",
35
+ "lint": "yarn lint:eslint && yarn lint:misc --check && yarn lint:changelog && yarn lint:dependencies",
36
+ "lint:fix": "yarn lint:eslint --fix && yarn lint:misc --write",
37
+ "lint:changelog": "../../scripts/validate-changelog.sh @metamask/snaps-simulation",
38
+ "build": "ts-bridge --project tsconfig.build.json --verbose --no-references",
39
+ "publish:preview": "yarn npm publish --tag preview",
40
+ "lint:ci": "yarn lint",
41
+ "lint:dependencies": "depcheck"
42
+ },
43
+ "dependencies": {
44
+ "@metamask/base-controller": "^6.0.2",
45
+ "@metamask/eth-json-rpc-middleware": "^14.0.0",
46
+ "@metamask/json-rpc-engine": "^9.0.2",
47
+ "@metamask/json-rpc-middleware-stream": "^8.0.2",
48
+ "@metamask/key-tree": "^9.1.2",
49
+ "@metamask/permission-controller": "^11.0.0",
50
+ "@metamask/phishing-controller": "^12.0.2",
51
+ "@metamask/snaps-controllers": "^9.7.0",
52
+ "@metamask/snaps-rpc-methods": "^11.1.1",
53
+ "@metamask/snaps-sdk": "^6.5.0",
54
+ "@metamask/snaps-utils": "^8.1.1",
55
+ "@metamask/superstruct": "^3.1.0",
56
+ "@metamask/utils": "^9.2.1",
57
+ "@reduxjs/toolkit": "^1.9.5",
58
+ "mime": "^3.0.0",
59
+ "readable-stream": "^3.6.2",
60
+ "redux-saga": "^1.2.3"
61
+ },
62
+ "devDependencies": {
63
+ "@lavamoat/allow-scripts": "^3.0.4",
64
+ "@metamask/auto-changelog": "^3.4.4",
65
+ "@metamask/eslint-config": "^12.1.0",
66
+ "@metamask/eslint-config-jest": "^12.1.0",
67
+ "@metamask/eslint-config-nodejs": "^12.1.0",
68
+ "@metamask/eslint-config-typescript": "^12.1.0",
69
+ "@ts-bridge/cli": "^0.5.1",
70
+ "@types/express": "^4.17.17",
71
+ "@types/jest": "^27.5.1",
72
+ "@types/mime": "^3.0.0",
73
+ "@types/readable-stream": "^4.0.15",
74
+ "@typescript-eslint/eslint-plugin": "^5.42.1",
75
+ "@typescript-eslint/parser": "^6.21.0",
76
+ "deepmerge": "^4.2.2",
77
+ "depcheck": "^1.4.7",
78
+ "eslint": "^8.27.0",
79
+ "eslint-config-prettier": "^8.5.0",
80
+ "eslint-plugin-import": "^2.26.0",
81
+ "eslint-plugin-jest": "^27.1.5",
82
+ "eslint-plugin-jsdoc": "^41.1.2",
83
+ "eslint-plugin-n": "^15.7.0",
84
+ "eslint-plugin-prettier": "^4.2.1",
85
+ "eslint-plugin-promise": "^6.1.1",
86
+ "express": "^4.18.2",
87
+ "jest": "^29.0.2",
88
+ "jest-it-up": "^2.0.0",
89
+ "prettier": "^2.7.1",
90
+ "prettier-plugin-packagejson": "^2.2.11",
91
+ "ts-jest": "^29.1.1",
92
+ "typescript": "~5.3.3"
93
+ },
94
+ "engines": {
95
+ "node": "^18.16 || >=20"
96
+ },
97
+ "publishConfig": {
98
+ "access": "public",
99
+ "registry": "https://registry.npmjs.org/"
100
+ }
101
+ }