@metamask/snaps-jest 4.0.1 → 6.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 (458) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/README.md +66 -179
  3. package/dist/chunk-2KLZ7GOW.js +15 -0
  4. package/dist/chunk-2KLZ7GOW.js.map +1 -0
  5. package/dist/chunk-2M7WQ26F.js +28 -0
  6. package/dist/chunk-2M7WQ26F.js.map +1 -0
  7. package/dist/chunk-34GS3AHA.js +33 -0
  8. package/dist/chunk-34GS3AHA.js.map +1 -0
  9. package/dist/chunk-3CC2NI7R.js +80 -0
  10. package/dist/chunk-3CC2NI7R.js.map +1 -0
  11. package/dist/chunk-3IUQA6YL.mjs +1 -0
  12. package/dist/chunk-3IUQA6YL.mjs.map +1 -0
  13. package/dist/chunk-3KCEPGJA.js +39 -0
  14. package/dist/chunk-3KCEPGJA.js.map +1 -0
  15. package/dist/chunk-3KQYPQZY.js +20 -0
  16. package/dist/chunk-3KQYPQZY.js.map +1 -0
  17. package/dist/chunk-3O5OISLU.js +16 -0
  18. package/dist/chunk-3O5OISLU.js.map +1 -0
  19. package/dist/chunk-3ZW2EE3B.js +1 -0
  20. package/dist/chunk-3ZW2EE3B.js.map +1 -0
  21. package/dist/chunk-4FCRZDOX.js +134 -0
  22. package/dist/chunk-4FCRZDOX.js.map +1 -0
  23. package/dist/chunk-4HY4SM3A.js +1 -0
  24. package/dist/chunk-4HY4SM3A.js.map +1 -0
  25. package/dist/chunk-4JUUFDTC.js +104 -0
  26. package/dist/chunk-4JUUFDTC.js.map +1 -0
  27. package/dist/chunk-4VCE3DRR.mjs +34 -0
  28. package/dist/chunk-4VCE3DRR.mjs.map +1 -0
  29. package/dist/chunk-4WCFXE73.js +48 -0
  30. package/dist/chunk-4WCFXE73.js.map +1 -0
  31. package/dist/chunk-5IUHGC5S.js +153 -0
  32. package/dist/chunk-5IUHGC5S.js.map +1 -0
  33. package/dist/chunk-5O6VBW42.js +42 -0
  34. package/dist/chunk-5O6VBW42.js.map +1 -0
  35. package/dist/chunk-6IMEYERE.js +137 -0
  36. package/dist/chunk-6IMEYERE.js.map +1 -0
  37. package/dist/chunk-6KNT4UMX.mjs +35 -0
  38. package/dist/chunk-6KNT4UMX.mjs.map +1 -0
  39. package/dist/chunk-6RDNSELT.mjs +39 -0
  40. package/dist/chunk-6RDNSELT.mjs.map +1 -0
  41. package/dist/chunk-72YN2D26.mjs +60 -0
  42. package/dist/chunk-72YN2D26.mjs.map +1 -0
  43. package/dist/chunk-7JLVQJK7.js +14 -0
  44. package/dist/chunk-7JLVQJK7.js.map +1 -0
  45. package/dist/chunk-AH7YNG6N.js +22 -0
  46. package/dist/chunk-AH7YNG6N.js.map +1 -0
  47. package/dist/chunk-AIZADBRK.mjs +36 -0
  48. package/dist/chunk-AIZADBRK.mjs.map +1 -0
  49. package/dist/chunk-AKFRQ5EJ.mjs +42 -0
  50. package/dist/chunk-AKFRQ5EJ.mjs.map +1 -0
  51. package/dist/chunk-AUB7XPDH.mjs +28 -0
  52. package/dist/chunk-AUB7XPDH.mjs.map +1 -0
  53. package/dist/chunk-BJMTD7H2.mjs +20 -0
  54. package/dist/chunk-BJMTD7H2.mjs.map +1 -0
  55. package/dist/chunk-BN5VBVT3.mjs +233 -0
  56. package/dist/chunk-BN5VBVT3.mjs.map +1 -0
  57. package/dist/chunk-CKOGTHM4.mjs +22 -0
  58. package/dist/chunk-CKOGTHM4.mjs.map +1 -0
  59. package/dist/chunk-CZQKOZLR.js +11 -0
  60. package/dist/chunk-CZQKOZLR.js.map +1 -0
  61. package/dist/chunk-D36QBJ35.js +24 -0
  62. package/dist/chunk-D36QBJ35.js.map +1 -0
  63. package/dist/chunk-DEFFA5IJ.mjs +24 -0
  64. package/dist/chunk-DEFFA5IJ.mjs.map +1 -0
  65. package/dist/chunk-EFB6AQPB.js +36 -0
  66. package/dist/chunk-EFB6AQPB.js.map +1 -0
  67. package/dist/chunk-EOCDSPT7.mjs +97 -0
  68. package/dist/chunk-EOCDSPT7.mjs.map +1 -0
  69. package/dist/chunk-FPFX5AKR.mjs +36 -0
  70. package/dist/chunk-FPFX5AKR.mjs.map +1 -0
  71. package/dist/chunk-HBT34TJ2.mjs +1 -0
  72. package/dist/chunk-HBT34TJ2.mjs.map +1 -0
  73. package/dist/chunk-HBVDXIVN.mjs +80 -0
  74. package/dist/chunk-HBVDXIVN.mjs.map +1 -0
  75. package/dist/chunk-HMF2CKYT.mjs +39 -0
  76. package/dist/chunk-HMF2CKYT.mjs.map +1 -0
  77. package/dist/chunk-HP56MLQ3.js +1 -0
  78. package/dist/chunk-HP56MLQ3.js.map +1 -0
  79. package/dist/chunk-I5LVU57H.mjs +69 -0
  80. package/dist/chunk-I5LVU57H.mjs.map +1 -0
  81. package/dist/chunk-I7FLOZU7.mjs +1 -0
  82. package/dist/chunk-I7FLOZU7.mjs.map +1 -0
  83. package/dist/chunk-J2ID3DS7.mjs +33 -0
  84. package/dist/chunk-J2ID3DS7.mjs.map +1 -0
  85. package/dist/chunk-JA7RJLI7.js +34 -0
  86. package/dist/chunk-JA7RJLI7.js.map +1 -0
  87. package/dist/chunk-JB2H2XEL.mjs +1 -0
  88. package/dist/chunk-JB2H2XEL.mjs.map +1 -0
  89. package/dist/chunk-JDN3VGMO.js +21 -0
  90. package/dist/chunk-JDN3VGMO.js.map +1 -0
  91. package/dist/chunk-JGQJFYU4.js +57 -0
  92. package/dist/chunk-JGQJFYU4.js.map +1 -0
  93. package/dist/chunk-JJCX335U.mjs +91 -0
  94. package/dist/chunk-JJCX335U.mjs.map +1 -0
  95. package/dist/chunk-JMDSN227.mjs +25 -0
  96. package/dist/chunk-JMDSN227.mjs.map +1 -0
  97. package/dist/chunk-JXOKRTEH.mjs +11 -0
  98. package/dist/chunk-JXOKRTEH.mjs.map +1 -0
  99. package/dist/chunk-JZJWUVD7.mjs +1 -0
  100. package/dist/chunk-JZJWUVD7.mjs.map +1 -0
  101. package/dist/chunk-K2KTKFLP.js +76 -0
  102. package/dist/chunk-K2KTKFLP.js.map +1 -0
  103. package/dist/chunk-KGIWSGTT.js +91 -0
  104. package/dist/chunk-KGIWSGTT.js.map +1 -0
  105. package/dist/chunk-KPXLJ6RH.js +60 -0
  106. package/dist/chunk-KPXLJ6RH.js.map +1 -0
  107. package/dist/chunk-LD5PSHHT.mjs +57 -0
  108. package/dist/chunk-LD5PSHHT.mjs.map +1 -0
  109. package/dist/chunk-LNNKGOHQ.mjs +16 -0
  110. package/dist/chunk-LNNKGOHQ.mjs.map +1 -0
  111. package/dist/chunk-MNDF32ZV.js +8 -0
  112. package/dist/chunk-MNDF32ZV.js.map +1 -0
  113. package/dist/chunk-MSQ7Q2VJ.mjs +13 -0
  114. package/dist/chunk-MSQ7Q2VJ.mjs.map +1 -0
  115. package/dist/chunk-O3VJYBFN.mjs +15 -0
  116. package/dist/chunk-O3VJYBFN.mjs.map +1 -0
  117. package/dist/chunk-O4MJRHZD.js +69 -0
  118. package/dist/chunk-O4MJRHZD.js.map +1 -0
  119. package/dist/chunk-OC64PNDU.mjs +21 -0
  120. package/dist/chunk-OC64PNDU.mjs.map +1 -0
  121. package/dist/chunk-ON6M4WG5.js +36 -0
  122. package/dist/chunk-ON6M4WG5.js.map +1 -0
  123. package/dist/chunk-P7JA42ZC.mjs +153 -0
  124. package/dist/chunk-P7JA42ZC.mjs.map +1 -0
  125. package/dist/chunk-PHUTP7NB.js +25 -0
  126. package/dist/chunk-PHUTP7NB.js.map +1 -0
  127. package/dist/chunk-QFPRGU5L.mjs +104 -0
  128. package/dist/chunk-QFPRGU5L.mjs.map +1 -0
  129. package/dist/chunk-QMHWGASM.js +1 -0
  130. package/dist/chunk-QMHWGASM.js.map +1 -0
  131. package/dist/chunk-QNDLJ2W7.js +1 -0
  132. package/dist/chunk-QNDLJ2W7.js.map +1 -0
  133. package/dist/chunk-QUUILTDY.mjs +137 -0
  134. package/dist/chunk-QUUILTDY.mjs.map +1 -0
  135. package/dist/chunk-R7ORBTUD.js +1 -0
  136. package/dist/chunk-R7ORBTUD.js.map +1 -0
  137. package/dist/chunk-RQBZLDXL.js +233 -0
  138. package/dist/chunk-RQBZLDXL.js.map +1 -0
  139. package/dist/chunk-S3DHQTXB.js +1 -0
  140. package/dist/chunk-S3DHQTXB.js.map +1 -0
  141. package/dist/chunk-SWSSV3LK.js +35 -0
  142. package/dist/chunk-SWSSV3LK.js.map +1 -0
  143. package/dist/chunk-T4TRX3ZR.js +22 -0
  144. package/dist/chunk-T4TRX3ZR.js.map +1 -0
  145. package/dist/chunk-UXHKMILA.mjs +1 -0
  146. package/dist/chunk-UXHKMILA.mjs.map +1 -0
  147. package/dist/chunk-VCXM6FKU.mjs +1 -0
  148. package/dist/chunk-VCXM6FKU.mjs.map +1 -0
  149. package/dist/chunk-VHTVUQWR.mjs +14 -0
  150. package/dist/chunk-VHTVUQWR.mjs.map +1 -0
  151. package/dist/chunk-VNQIROKZ.js +97 -0
  152. package/dist/chunk-VNQIROKZ.js.map +1 -0
  153. package/dist/chunk-VXQOXWRO.mjs +48 -0
  154. package/dist/chunk-VXQOXWRO.mjs.map +1 -0
  155. package/dist/chunk-VYKYQSUI.mjs +22 -0
  156. package/dist/chunk-VYKYQSUI.mjs.map +1 -0
  157. package/dist/chunk-WEI35OIM.mjs +8 -0
  158. package/dist/chunk-WEI35OIM.mjs.map +1 -0
  159. package/dist/chunk-WL2GRM5E.mjs +76 -0
  160. package/dist/chunk-WL2GRM5E.mjs.map +1 -0
  161. package/dist/chunk-XDZPH5WD.js +39 -0
  162. package/dist/chunk-XDZPH5WD.js.map +1 -0
  163. package/dist/chunk-Y5NWZU43.js +13 -0
  164. package/dist/chunk-Y5NWZU43.js.map +1 -0
  165. package/dist/chunk-YZFWCFMG.js +1 -0
  166. package/dist/chunk-YZFWCFMG.js.map +1 -0
  167. package/dist/chunk-ZCE26WZM.mjs +1 -0
  168. package/dist/chunk-ZCE26WZM.mjs.map +1 -0
  169. package/dist/chunk-ZZPKZRJQ.mjs +134 -0
  170. package/dist/chunk-ZZPKZRJQ.mjs.map +1 -0
  171. package/dist/environment.js +47 -0
  172. package/dist/environment.js.map +1 -0
  173. package/dist/environment.mjs +47 -0
  174. package/dist/environment.mjs.map +1 -0
  175. package/dist/helpers.js +44 -0
  176. package/dist/helpers.js.map +1 -0
  177. package/dist/helpers.mjs +44 -0
  178. package/dist/helpers.mjs.map +1 -0
  179. package/dist/index.js +54 -0
  180. package/dist/index.js.map +1 -0
  181. package/dist/index.mjs +54 -0
  182. package/dist/index.mjs.map +1 -0
  183. package/dist/internals/environment.js +8 -0
  184. package/dist/internals/environment.js.map +1 -0
  185. package/dist/internals/environment.mjs +8 -0
  186. package/dist/internals/environment.mjs.map +1 -0
  187. package/dist/internals/index.js +123 -0
  188. package/dist/internals/index.js.map +1 -0
  189. package/dist/internals/index.mjs +123 -0
  190. package/dist/internals/index.mjs.map +1 -0
  191. package/dist/internals/logger.js +8 -0
  192. package/dist/internals/logger.js.map +1 -0
  193. package/dist/internals/logger.mjs +8 -0
  194. package/dist/internals/logger.mjs.map +1 -0
  195. package/dist/internals/request.js +40 -0
  196. package/dist/internals/request.js.map +1 -0
  197. package/dist/internals/request.mjs +40 -0
  198. package/dist/internals/request.mjs.map +1 -0
  199. package/dist/internals/server.js +9 -0
  200. package/dist/internals/server.js.map +1 -0
  201. package/dist/internals/server.mjs +9 -0
  202. package/dist/internals/server.mjs.map +1 -0
  203. package/dist/internals/simulation/constants.js +12 -0
  204. package/dist/internals/simulation/constants.js.map +1 -0
  205. package/dist/internals/simulation/constants.mjs +12 -0
  206. package/dist/internals/simulation/constants.mjs.map +1 -0
  207. package/dist/internals/simulation/controllers.js +26 -0
  208. package/dist/internals/simulation/controllers.js.map +1 -0
  209. package/dist/internals/simulation/controllers.mjs +26 -0
  210. package/dist/internals/simulation/controllers.mjs.map +1 -0
  211. package/dist/internals/simulation/files.js +8 -0
  212. package/dist/internals/simulation/files.js.map +1 -0
  213. package/dist/internals/simulation/files.mjs +8 -0
  214. package/dist/internals/simulation/files.mjs.map +1 -0
  215. package/dist/internals/simulation/index.js +90 -0
  216. package/dist/internals/simulation/index.js.map +1 -0
  217. package/dist/internals/simulation/index.mjs +90 -0
  218. package/dist/internals/simulation/index.mjs.map +1 -0
  219. package/dist/internals/simulation/interface.js +16 -0
  220. package/dist/internals/simulation/interface.js.map +1 -0
  221. package/dist/internals/simulation/interface.mjs +16 -0
  222. package/dist/internals/simulation/interface.mjs.map +1 -0
  223. package/dist/internals/simulation/methods/constants.js +12 -0
  224. package/dist/internals/simulation/methods/constants.js.map +1 -0
  225. package/dist/internals/simulation/methods/constants.mjs +12 -0
  226. package/dist/internals/simulation/methods/constants.mjs.map +1 -0
  227. package/dist/internals/simulation/methods/hooks/encryption.js +10 -0
  228. package/dist/internals/simulation/methods/hooks/encryption.js.map +1 -0
  229. package/dist/internals/simulation/methods/hooks/encryption.mjs +10 -0
  230. package/dist/internals/simulation/methods/hooks/encryption.mjs.map +1 -0
  231. package/dist/internals/simulation/methods/hooks/get-locale.js +8 -0
  232. package/dist/internals/simulation/methods/hooks/get-locale.js.map +1 -0
  233. package/dist/internals/simulation/methods/hooks/get-locale.mjs +8 -0
  234. package/dist/internals/simulation/methods/hooks/get-locale.mjs.map +1 -0
  235. package/dist/internals/simulation/methods/hooks/index.js +45 -0
  236. package/dist/internals/simulation/methods/hooks/index.js.map +1 -0
  237. package/dist/internals/simulation/methods/hooks/index.mjs +45 -0
  238. package/dist/internals/simulation/methods/hooks/index.mjs.map +1 -0
  239. package/dist/internals/simulation/methods/hooks/interface.js +10 -0
  240. package/dist/internals/simulation/methods/hooks/interface.js.map +1 -0
  241. package/dist/internals/simulation/methods/hooks/interface.mjs +10 -0
  242. package/dist/internals/simulation/methods/hooks/interface.mjs.map +1 -0
  243. package/dist/internals/simulation/methods/hooks/notifications.js +16 -0
  244. package/dist/internals/simulation/methods/hooks/notifications.js.map +1 -0
  245. package/dist/internals/simulation/methods/hooks/notifications.mjs +16 -0
  246. package/dist/internals/simulation/methods/hooks/notifications.mjs.map +1 -0
  247. package/dist/internals/simulation/methods/hooks/show-dialog.js +14 -0
  248. package/dist/internals/simulation/methods/hooks/show-dialog.js.map +1 -0
  249. package/dist/internals/simulation/methods/hooks/show-dialog.mjs +14 -0
  250. package/dist/internals/simulation/methods/hooks/show-dialog.mjs.map +1 -0
  251. package/dist/internals/simulation/methods/hooks/state.js +18 -0
  252. package/dist/internals/simulation/methods/hooks/state.js.map +1 -0
  253. package/dist/internals/simulation/methods/hooks/state.mjs +18 -0
  254. package/dist/internals/simulation/methods/hooks/state.mjs.map +1 -0
  255. package/dist/internals/simulation/methods/index.js +29 -0
  256. package/dist/internals/simulation/methods/index.js.map +1 -0
  257. package/dist/internals/simulation/methods/index.mjs +29 -0
  258. package/dist/internals/simulation/methods/index.mjs.map +1 -0
  259. package/dist/internals/simulation/methods/specifications.js +28 -0
  260. package/dist/internals/simulation/methods/specifications.js.map +1 -0
  261. package/dist/internals/simulation/methods/specifications.mjs +28 -0
  262. package/dist/internals/simulation/methods/specifications.mjs.map +1 -0
  263. package/dist/internals/simulation/middleware/engine.js +15 -0
  264. package/dist/internals/simulation/middleware/engine.js.map +1 -0
  265. package/dist/internals/simulation/middleware/engine.mjs +15 -0
  266. package/dist/internals/simulation/middleware/engine.mjs.map +1 -0
  267. package/dist/internals/simulation/middleware/index.js +16 -0
  268. package/dist/internals/simulation/middleware/index.js.map +1 -0
  269. package/dist/internals/simulation/middleware/index.mjs +16 -0
  270. package/dist/internals/simulation/middleware/index.mjs.map +1 -0
  271. package/dist/internals/simulation/middleware/internal-methods/accounts.js +8 -0
  272. package/dist/internals/simulation/middleware/internal-methods/accounts.js.map +1 -0
  273. package/dist/internals/simulation/middleware/internal-methods/accounts.mjs +8 -0
  274. package/dist/internals/simulation/middleware/internal-methods/accounts.mjs.map +1 -0
  275. package/dist/internals/simulation/middleware/internal-methods/index.js +11 -0
  276. package/dist/internals/simulation/middleware/internal-methods/index.js.map +1 -0
  277. package/dist/internals/simulation/middleware/internal-methods/index.mjs +11 -0
  278. package/dist/internals/simulation/middleware/internal-methods/index.mjs.map +1 -0
  279. package/dist/internals/simulation/middleware/internal-methods/middleware.js +10 -0
  280. package/dist/internals/simulation/middleware/internal-methods/middleware.js.map +1 -0
  281. package/dist/internals/simulation/middleware/internal-methods/middleware.mjs +10 -0
  282. package/dist/internals/simulation/middleware/internal-methods/middleware.mjs.map +1 -0
  283. package/dist/internals/simulation/middleware/internal-methods/provider-state.js +8 -0
  284. package/dist/internals/simulation/middleware/internal-methods/provider-state.js.map +1 -0
  285. package/dist/internals/simulation/middleware/internal-methods/provider-state.mjs +8 -0
  286. package/dist/internals/simulation/middleware/internal-methods/provider-state.mjs.map +1 -0
  287. package/dist/internals/simulation/middleware/mock.js +9 -0
  288. package/dist/internals/simulation/middleware/mock.js.map +1 -0
  289. package/dist/internals/simulation/middleware/mock.mjs +9 -0
  290. package/dist/internals/simulation/middleware/mock.mjs.map +1 -0
  291. package/dist/internals/simulation/options.js +9 -0
  292. package/dist/internals/simulation/options.js.map +1 -0
  293. package/dist/internals/simulation/options.mjs +9 -0
  294. package/dist/internals/simulation/options.mjs.map +1 -0
  295. package/dist/internals/simulation/simulation.js +39 -0
  296. package/dist/internals/simulation/simulation.js.map +1 -0
  297. package/dist/internals/simulation/simulation.mjs +39 -0
  298. package/dist/internals/simulation/simulation.mjs.map +1 -0
  299. package/dist/internals/simulation/store/index.js +44 -0
  300. package/dist/internals/simulation/store/index.js.map +1 -0
  301. package/dist/internals/simulation/store/index.mjs +44 -0
  302. package/dist/internals/simulation/store/index.mjs.map +1 -0
  303. package/dist/internals/simulation/store/mocks.js +16 -0
  304. package/dist/internals/simulation/store/mocks.js.map +1 -0
  305. package/dist/internals/simulation/store/mocks.mjs +16 -0
  306. package/dist/internals/simulation/store/mocks.mjs.map +1 -0
  307. package/dist/internals/simulation/store/notifications.js +16 -0
  308. package/dist/internals/simulation/store/notifications.js.map +1 -0
  309. package/dist/internals/simulation/store/notifications.mjs +16 -0
  310. package/dist/internals/simulation/store/notifications.mjs.map +1 -0
  311. package/dist/internals/simulation/store/state.js +14 -0
  312. package/dist/internals/simulation/store/state.js.map +1 -0
  313. package/dist/internals/simulation/store/state.mjs +14 -0
  314. package/dist/internals/simulation/store/state.mjs.map +1 -0
  315. package/dist/internals/simulation/store/store.js +12 -0
  316. package/dist/internals/simulation/store/store.js.map +1 -0
  317. package/dist/internals/simulation/store/store.mjs +12 -0
  318. package/dist/internals/simulation/store/store.mjs.map +1 -0
  319. package/dist/internals/simulation/store/ui.js +16 -0
  320. package/dist/internals/simulation/store/ui.js.map +1 -0
  321. package/dist/internals/simulation/store/ui.mjs +16 -0
  322. package/dist/internals/simulation/store/ui.mjs.map +1 -0
  323. package/dist/internals/structs.js +18 -0
  324. package/dist/internals/structs.js.map +1 -0
  325. package/dist/internals/structs.mjs +18 -0
  326. package/dist/internals/structs.mjs.map +1 -0
  327. package/dist/matchers.js +50 -0
  328. package/dist/matchers.js.map +1 -0
  329. package/dist/matchers.mjs +50 -0
  330. package/dist/matchers.mjs.map +1 -0
  331. package/dist/options.js +8 -0
  332. package/dist/options.js.map +1 -0
  333. package/dist/options.mjs +8 -0
  334. package/dist/options.mjs.map +1 -0
  335. package/dist/setup.js +39 -0
  336. package/dist/setup.js.map +1 -0
  337. package/dist/setup.mjs +39 -0
  338. package/dist/setup.mjs.map +1 -0
  339. package/dist/tsconfig.build.tsbuildinfo +1 -0
  340. package/dist/types/environment.d.ts +14 -15
  341. package/dist/types/helpers.d.ts +64 -3
  342. package/dist/types/internals/index.d.ts +1 -4
  343. package/dist/types/internals/request.d.ts +38 -74
  344. package/dist/types/internals/simulation/constants.d.ts +13 -0
  345. package/dist/types/internals/simulation/controllers.d.ts +40 -0
  346. package/dist/types/internals/simulation/files.d.ts +11 -0
  347. package/dist/types/internals/simulation/index.d.ts +5 -0
  348. package/dist/types/internals/simulation/interface.d.ts +25 -0
  349. package/dist/types/internals/simulation/methods/constants.d.ts +10 -0
  350. package/dist/types/internals/simulation/methods/hooks/encryption.d.ts +29 -0
  351. package/dist/types/internals/simulation/methods/hooks/get-locale.d.ts +9 -0
  352. package/dist/types/internals/simulation/methods/hooks/index.d.ts +6 -0
  353. package/dist/types/internals/simulation/methods/hooks/interface.d.ts +16 -0
  354. package/dist/types/internals/simulation/methods/hooks/notifications.d.ts +16 -0
  355. package/dist/types/internals/simulation/methods/hooks/show-dialog.d.ts +9 -0
  356. package/dist/types/internals/simulation/methods/hooks/state.d.ts +22 -0
  357. package/dist/types/internals/simulation/methods/index.d.ts +1 -0
  358. package/dist/types/internals/simulation/methods/specifications.d.ts +56 -0
  359. package/dist/types/internals/simulation/middleware/engine.d.ts +26 -0
  360. package/dist/types/internals/simulation/middleware/index.d.ts +1 -0
  361. package/dist/types/internals/simulation/middleware/internal-methods/accounts.d.ts +18 -0
  362. package/dist/types/internals/simulation/middleware/internal-methods/index.d.ts +1 -0
  363. package/dist/types/internals/simulation/middleware/internal-methods/middleware.d.ts +22 -0
  364. package/dist/types/internals/simulation/middleware/internal-methods/provider-state.d.ts +14 -0
  365. package/dist/types/internals/simulation/middleware/mock.d.ts +10 -0
  366. package/dist/types/internals/simulation/options.d.ts +37 -0
  367. package/dist/types/internals/simulation/simulation.d.ts +98 -0
  368. package/dist/types/internals/simulation/store/index.d.ts +4 -0
  369. package/dist/types/internals/simulation/store/mocks.d.ts +35 -0
  370. package/dist/types/internals/simulation/store/notifications.d.ts +44 -0
  371. package/dist/types/internals/simulation/store/state.d.ts +55 -0
  372. package/dist/types/internals/simulation/store/store.d.ts +22 -0
  373. package/dist/types/internals/simulation/store/ui.d.ts +25 -0
  374. package/dist/types/internals/structs.d.ts +153 -0
  375. package/dist/types/options.d.ts +3 -35
  376. package/dist/types/types.d.ts +88 -41
  377. package/dist/types/vendor/readable-stream.d.js +1 -0
  378. package/dist/types/vendor/readable-stream.d.js.map +1 -0
  379. package/dist/types/vendor/readable-stream.d.mjs +1 -0
  380. package/dist/types/vendor/readable-stream.d.mjs.map +1 -0
  381. package/dist/types.js +2 -0
  382. package/dist/types.js.map +1 -0
  383. package/dist/types.mjs +2 -0
  384. package/dist/types.mjs.map +1 -0
  385. package/jest-preset.js +1 -1
  386. package/package.json +37 -24
  387. package/dist/cjs/environment.js +0 -205
  388. package/dist/cjs/environment.js.map +0 -1
  389. package/dist/cjs/helpers.js +0 -67
  390. package/dist/cjs/helpers.js.map +0 -1
  391. package/dist/cjs/index.js +0 -42
  392. package/dist/cjs/index.js.map +0 -1
  393. package/dist/cjs/internals/environment.js +0 -19
  394. package/dist/cjs/internals/environment.js.map +0 -1
  395. package/dist/cjs/internals/index.js +0 -28
  396. package/dist/cjs/internals/index.js.map +0 -1
  397. package/dist/cjs/internals/interface.js +0 -103
  398. package/dist/cjs/internals/interface.js.map +0 -1
  399. package/dist/cjs/internals/logger.js +0 -14
  400. package/dist/cjs/internals/logger.js.map +0 -1
  401. package/dist/cjs/internals/network.js +0 -148
  402. package/dist/cjs/internals/network.js.map +0 -1
  403. package/dist/cjs/internals/request.js +0 -121
  404. package/dist/cjs/internals/request.js.map +0 -1
  405. package/dist/cjs/internals/server.js +0 -75
  406. package/dist/cjs/internals/server.js.map +0 -1
  407. package/dist/cjs/internals/structs.js +0 -122
  408. package/dist/cjs/internals/structs.js.map +0 -1
  409. package/dist/cjs/internals/types.js +0 -6
  410. package/dist/cjs/internals/types.js.map +0 -1
  411. package/dist/cjs/internals/wait-for.js +0 -63
  412. package/dist/cjs/internals/wait-for.js.map +0 -1
  413. package/dist/cjs/matchers.js +0 -117
  414. package/dist/cjs/matchers.js.map +0 -1
  415. package/dist/cjs/options.js +0 -29
  416. package/dist/cjs/options.js.map +0 -1
  417. package/dist/cjs/setup.js +0 -10
  418. package/dist/cjs/setup.js.map +0 -1
  419. package/dist/cjs/types.js +0 -6
  420. package/dist/cjs/types.js.map +0 -1
  421. package/dist/esm/environment.js +0 -182
  422. package/dist/esm/environment.js.map +0 -1
  423. package/dist/esm/helpers.js +0 -82
  424. package/dist/esm/helpers.js.map +0 -1
  425. package/dist/esm/index.js +0 -6
  426. package/dist/esm/index.js.map +0 -1
  427. package/dist/esm/internals/environment.js +0 -14
  428. package/dist/esm/internals/environment.js.map +0 -1
  429. package/dist/esm/internals/index.js +0 -12
  430. package/dist/esm/internals/index.js.map +0 -1
  431. package/dist/esm/internals/interface.js +0 -100
  432. package/dist/esm/internals/interface.js.map +0 -1
  433. package/dist/esm/internals/logger.js +0 -4
  434. package/dist/esm/internals/logger.js.map +0 -1
  435. package/dist/esm/internals/network.js +0 -143
  436. package/dist/esm/internals/network.js.map +0 -1
  437. package/dist/esm/internals/request.js +0 -120
  438. package/dist/esm/internals/request.js.map +0 -1
  439. package/dist/esm/internals/server.js +0 -68
  440. package/dist/esm/internals/server.js.map +0 -1
  441. package/dist/esm/internals/structs.js +0 -98
  442. package/dist/esm/internals/structs.js.map +0 -1
  443. package/dist/esm/internals/types.js +0 -3
  444. package/dist/esm/internals/types.js.map +0 -1
  445. package/dist/esm/internals/wait-for.js +0 -63
  446. package/dist/esm/internals/wait-for.js.map +0 -1
  447. package/dist/esm/matchers.js +0 -108
  448. package/dist/esm/matchers.js.map +0 -1
  449. package/dist/esm/options.js +0 -26
  450. package/dist/esm/options.js.map +0 -1
  451. package/dist/esm/setup.js +0 -6
  452. package/dist/esm/setup.js.map +0 -1
  453. package/dist/esm/types.js +0 -3
  454. package/dist/esm/types.js.map +0 -1
  455. package/dist/types/internals/interface.d.ts +0 -25
  456. package/dist/types/internals/network.d.ts +0 -87
  457. package/dist/types/internals/types.d.ts +0 -18
  458. package/dist/types/internals/wait-for.d.ts +0 -38
@@ -0,0 +1,16 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/internals/simulation/files.ts
2
+ var _snapssdk = require('@metamask/snaps-sdk');
3
+ var _snapsutils = require('@metamask/snaps-utils');
4
+ async function getSnapFile(files, path, encoding = _snapssdk.AuxiliaryFileEncoding.Base64) {
5
+ const normalizedPath = _snapsutils.normalizeRelative.call(void 0, path);
6
+ const base64 = _optionalChain([files, 'access', _ => _.find, 'call', _2 => _2((file) => file.path === normalizedPath), 'optionalAccess', _3 => _3.toString, 'call', _4 => _4("base64")]);
7
+ if (!base64) {
8
+ return null;
9
+ }
10
+ return await _snapsutils.encodeAuxiliaryFile.call(void 0, base64, encoding);
11
+ }
12
+
13
+
14
+
15
+ exports.getSnapFile = getSnapFile;
16
+ //# sourceMappingURL=chunk-3O5OISLU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals/simulation/files.ts"],"names":[],"mappings":";AAAA,SAAS,6BAA6B;AAEtC,SAAS,qBAAqB,yBAAyB;AAUvD,eAAsB,YACpB,OACA,MACA,WAAkC,sBAAsB,QACxD;AACA,QAAM,iBAAiB,kBAAkB,IAAI;AAC7C,QAAM,SAAS,MACZ,KAAK,CAAC,SAAS,KAAK,SAAS,cAAc,GAC1C,SAAS,QAAQ;AAErB,MAAI,CAAC,QAAQ;AACX,WAAO;AAAA,EACT;AAEA,SAAO,MAAM,oBAAoB,QAAQ,QAAQ;AACnD","sourcesContent":["import { AuxiliaryFileEncoding } from '@metamask/snaps-sdk';\nimport type { VirtualFile } from '@metamask/snaps-utils';\nimport { encodeAuxiliaryFile, normalizeRelative } from '@metamask/snaps-utils';\n\n/**\n * Get a statically defined Snap file from an array of files.\n *\n * @param files - The Snap files.\n * @param path - The file path.\n * @param encoding - The requested file encoding.\n * @returns The file in the requested encoding if found, otherwise null.\n */\nexport async function getSnapFile(\n files: VirtualFile[],\n path: string,\n encoding: AuxiliaryFileEncoding = AuxiliaryFileEncoding.Base64,\n) {\n const normalizedPath = normalizeRelative(path);\n const base64 = files\n .find((file) => file.path === normalizedPath)\n ?.toString('base64');\n\n if (!base64) {\n return null;\n }\n\n return await encodeAuxiliaryFile(base64, encoding);\n}\n"]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-3ZW2EE3B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,134 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkRQBZLDXLjs = require('./chunk-RQBZLDXL.js');
5
+
6
+ // src/matchers.ts
7
+ var _globals = require('@jest/globals');
8
+ var _utils = require('@metamask/utils');
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+ var _jestmatcherutils = require('jest-matcher-utils');
17
+ var _superstruct = require('superstruct');
18
+ function assertActualIsSnapResponse(actual, matcherName, options) {
19
+ if (!_superstruct.is.call(void 0, actual, _chunkRQBZLDXLjs.SnapResponseStruct)) {
20
+ throw new Error(
21
+ _jestmatcherutils.matcherErrorMessage.call(void 0,
22
+ _jestmatcherutils.matcherHint.call(void 0, matcherName, void 0, void 0, options),
23
+ `${_jestmatcherutils.RECEIVED_COLOR.call(void 0,
24
+ "received"
25
+ )} value must be a response from the \`request\` function`,
26
+ _jestmatcherutils.printWithType.call(void 0, "Received", actual, _jestmatcherutils.printReceived)
27
+ )
28
+ );
29
+ }
30
+ }
31
+ function assertHasInterface(actual, matcherName, options) {
32
+ if (!_superstruct.is.call(void 0, actual, _chunkRQBZLDXLjs.InterfaceStruct) || !actual.content) {
33
+ throw new Error(
34
+ _jestmatcherutils.matcherErrorMessage.call(void 0,
35
+ _jestmatcherutils.matcherHint.call(void 0, matcherName, void 0, void 0, options),
36
+ `${_jestmatcherutils.RECEIVED_COLOR.call(void 0, "received")} value must have a \`content\` property`,
37
+ _jestmatcherutils.printWithType.call(void 0, "Received", actual, _jestmatcherutils.printReceived)
38
+ )
39
+ );
40
+ }
41
+ }
42
+ var toRespondWith = function(actual, expected) {
43
+ assertActualIsSnapResponse(actual, "toRespondWith");
44
+ const { response } = actual;
45
+ if (_utils.hasProperty.call(void 0, response, "error")) {
46
+ const message2 = () => `${this.utils.matcherHint(".toRespondWith")}
47
+
48
+ Expected response: ${this.utils.printExpected(expected)}
49
+ Received error: ${this.utils.printReceived(response.error)}`;
50
+ return { message: message2, pass: false };
51
+ }
52
+ const pass = this.equals(response.result, expected);
53
+ const message = pass ? () => `${this.utils.matcherHint(".not.toRespondWith")}
54
+
55
+ Expected: ${this.utils.printExpected(expected)}
56
+ Received: ${this.utils.printReceived(response.result)}` : () => `${this.utils.matcherHint(".toRespondWith")}
57
+
58
+ Expected: ${this.utils.printExpected(expected)}
59
+ Received: ${this.utils.printReceived(response.result)}`;
60
+ return { message, pass };
61
+ };
62
+ var toRespondWithError = function(actual, expected) {
63
+ assertActualIsSnapResponse(actual, "toRespondWithError");
64
+ const { response } = actual;
65
+ if (_utils.hasProperty.call(void 0, response, "result")) {
66
+ const message2 = () => `${this.utils.matcherHint(".toRespondWithError")}
67
+
68
+ Expected error: ${this.utils.printExpected(expected)}
69
+ Received result: ${this.utils.printReceived(response.result)}`;
70
+ return { message: message2, pass: false };
71
+ }
72
+ const pass = this.equals(response.error, expected);
73
+ const message = pass ? () => `${this.utils.matcherHint(".not.toRespondWithError")}
74
+
75
+ Expected: ${this.utils.printExpected(expected)}
76
+ Received: ${this.utils.printReceived(response.error)}` : () => `${this.utils.matcherHint(".toRespondWithError")}
77
+
78
+ Expected: ${this.utils.printExpected(expected)}
79
+ Received: ${this.utils.printReceived(response.error)}`;
80
+ return { message, pass };
81
+ };
82
+ var toSendNotification = function(actual, expected, type) {
83
+ assertActualIsSnapResponse(actual, "toSendNotification");
84
+ const { notifications } = actual;
85
+ const pass = notifications.some(
86
+ (notification) => this.equals(notification.message, expected) && (type === void 0 || notification.type === type)
87
+ );
88
+ const message = pass ? () => `${this.utils.matcherHint(".not.toSendNotification")}
89
+
90
+ Expected: ${this.utils.printExpected(expected)}
91
+ Expected type: ${this.utils.printExpected(type)}
92
+ Received: ${this.utils.printReceived(notifications)}` : () => `${this.utils.matcherHint(".toSendNotification")}
93
+
94
+ Expected: ${this.utils.printExpected(expected)}
95
+ Expected type: ${this.utils.printExpected(type)}
96
+ Received: ${this.utils.printReceived(notifications)}`;
97
+ return { message, pass };
98
+ };
99
+ var toRender = function(actual, expected) {
100
+ assertHasInterface(actual, "toRender");
101
+ const { content } = actual;
102
+ const pass = this.equals(content, expected);
103
+ const difference = _jestmatcherutils.diff.call(void 0, expected, content);
104
+ const message = pass ? () => `${this.utils.matcherHint(".not.toRender")}
105
+
106
+ Expected: ${this.utils.printExpected(expected)}
107
+ Received: ${this.utils.printReceived(content)}
108
+
109
+ Difference:
110
+
111
+ ${difference}` : () => `${this.utils.matcherHint(".toRender")}
112
+
113
+ Expected: ${this.utils.printExpected(expected)}
114
+ Received: ${this.utils.printReceived(content)}
115
+
116
+ Difference:
117
+
118
+ ${difference}`;
119
+ return { message, pass };
120
+ };
121
+ _globals.expect.extend({
122
+ toRespondWith,
123
+ toRespondWithError,
124
+ toSendNotification,
125
+ toRender
126
+ });
127
+
128
+
129
+
130
+
131
+
132
+
133
+ exports.toRespondWith = toRespondWith; exports.toRespondWithError = toRespondWithError; exports.toSendNotification = toSendNotification; exports.toRender = toRender;
134
+ //# sourceMappingURL=chunk-4FCRZDOX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/matchers.ts"],"names":["message"],"mappings":"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","sourcesContent":["/* eslint-disable no-invalid-this */\n\n// Note: Because this file imports from `@jest/globals`, it can only be used in\n// a Jest environment. This is why it's not exported from the index file.\n\nimport type { MatcherFunction } from '@jest/expect';\nimport { expect } from '@jest/globals';\nimport type {\n NotificationType,\n EnumToUnion,\n Component,\n} from '@metamask/snaps-sdk';\nimport type { Json } from '@metamask/utils';\nimport { hasProperty } from '@metamask/utils';\nimport type { MatcherHintOptions } from 'jest-matcher-utils';\nimport {\n diff,\n matcherErrorMessage,\n matcherHint,\n printReceived,\n printWithType,\n RECEIVED_COLOR,\n} from 'jest-matcher-utils';\nimport { is } from 'superstruct';\n\nimport { InterfaceStruct, SnapResponseStruct } from './internals';\nimport type { SnapResponse } from './types';\n\n/**\n * Ensure that the actual value is a response from the `request` function.\n *\n * @param actual - The actual value.\n * @param matcherName - The name of the matcher.\n * @param options - The matcher options.\n */\nfunction assertActualIsSnapResponse(\n actual: unknown,\n matcherName: string,\n options?: MatcherHintOptions,\n): asserts actual is SnapResponse {\n if (!is(actual, SnapResponseStruct)) {\n throw new Error(\n matcherErrorMessage(\n matcherHint(matcherName, undefined, undefined, options),\n `${RECEIVED_COLOR(\n 'received',\n )} value must be a response from the \\`request\\` function`,\n printWithType('Received', actual, printReceived),\n ),\n );\n }\n}\n\n/**\n * Ensure that the actual value is a response from the `request` function, and\n * that it has a `ui` property.\n *\n * @param actual - The actual value.\n * @param matcherName - The name of the matcher.\n * @param options - The matcher options.\n */\nfunction assertHasInterface(\n actual: unknown,\n matcherName: string,\n options?: MatcherHintOptions,\n): asserts actual is { content: Component } {\n if (!is(actual, InterfaceStruct) || !actual.content) {\n throw new Error(\n matcherErrorMessage(\n matcherHint(matcherName, undefined, undefined, options),\n `${RECEIVED_COLOR('received')} value must have a \\`content\\` property`,\n printWithType('Received', actual, printReceived),\n ),\n );\n }\n}\n\n/**\n * Check if a JSON-RPC response matches the expected value. This matcher is\n * intended to be used with the `expect` global.\n *\n * @param actual - The actual response.\n * @param expected - The expected response.\n * @returns The status and message.\n */\nexport const toRespondWith: MatcherFunction<[expected: Json]> = function (\n actual,\n expected,\n) {\n assertActualIsSnapResponse(actual, 'toRespondWith');\n\n const { response } = actual;\n if (hasProperty(response, 'error')) {\n const message = () =>\n `${this.utils.matcherHint('.toRespondWith')}\\n\\n` +\n `Expected response: ${this.utils.printExpected(expected)}\\n` +\n `Received error: ${this.utils.printReceived(response.error)}`;\n\n return { message, pass: false };\n }\n\n const pass = this.equals(response.result, expected);\n const message = pass\n ? () =>\n `${this.utils.matcherHint('.not.toRespondWith')}\\n\\n` +\n `Expected: ${this.utils.printExpected(expected)}\\n` +\n `Received: ${this.utils.printReceived(response.result)}`\n : () =>\n `${this.utils.matcherHint('.toRespondWith')}\\n\\n` +\n `Expected: ${this.utils.printExpected(expected)}\\n` +\n `Received: ${this.utils.printReceived(response.result)}`;\n\n return { message, pass };\n};\n\nexport const toRespondWithError: MatcherFunction<[expected: Json]> = function (\n actual,\n expected,\n) {\n assertActualIsSnapResponse(actual, 'toRespondWithError');\n\n const { response } = actual;\n if (hasProperty(response, 'result')) {\n const message = () =>\n `${this.utils.matcherHint('.toRespondWithError')}\\n\\n` +\n `Expected error: ${this.utils.printExpected(expected)}\\n` +\n `Received result: ${this.utils.printReceived(response.result)}`;\n\n return { message, pass: false };\n }\n\n const pass = this.equals(response.error, expected);\n const message = pass\n ? () =>\n `${this.utils.matcherHint('.not.toRespondWithError')}\\n\\n` +\n `Expected: ${this.utils.printExpected(expected)}\\n` +\n `Received: ${this.utils.printReceived(response.error)}`\n : () =>\n `${this.utils.matcherHint('.toRespondWithError')}\\n\\n` +\n `Expected: ${this.utils.printExpected(expected)}\\n` +\n `Received: ${this.utils.printReceived(response.error)}`;\n\n return { message, pass };\n};\n\n/**\n * Check if the snap sent a notification with the expected message. This matcher\n * is intended to be used with the `expect` global.\n *\n * @param actual - The actual response.\n * @param expected - The expected notification message.\n * @param type - The expected notification type.\n * @returns The status and message.\n */\nexport const toSendNotification: MatcherFunction<\n [expected: string, type?: EnumToUnion<NotificationType> | undefined]\n> = function (actual, expected, type) {\n assertActualIsSnapResponse(actual, 'toSendNotification');\n\n const { notifications } = actual;\n const pass = notifications.some(\n (notification) =>\n this.equals(notification.message, expected) &&\n (type === undefined || notification.type === type),\n );\n\n const message = pass\n ? () =>\n `${this.utils.matcherHint('.not.toSendNotification')}\\n\\n` +\n `Expected: ${this.utils.printExpected(expected)}\\n` +\n `Expected type: ${this.utils.printExpected(type)}\\n` +\n `Received: ${this.utils.printReceived(notifications)}`\n : () =>\n `${this.utils.matcherHint('.toSendNotification')}\\n\\n` +\n `Expected: ${this.utils.printExpected(expected)}\\n` +\n `Expected type: ${this.utils.printExpected(type)}\\n` +\n `Received: ${this.utils.printReceived(notifications)}`;\n\n return { message, pass };\n};\n\nexport const toRender: MatcherFunction<[expected: Component]> = function (\n actual,\n expected,\n) {\n assertHasInterface(actual, 'toRender');\n\n const { content } = actual;\n const pass = this.equals(content, expected);\n\n // This is typed as `string | null`, but in practice it's always a string. The\n // function only returns `null` if both the expected and actual values are\n // numbers, bigints, or booleans, which is never the case here.\n const difference = diff(expected, content);\n\n const message = pass\n ? () =>\n `${this.utils.matcherHint('.not.toRender')}\\n\\n` +\n `Expected: ${this.utils.printExpected(expected)}\\n` +\n `Received: ${this.utils.printReceived(content)}` +\n `\\n\\nDifference:\\n\\n${difference as string}`\n : () =>\n `${this.utils.matcherHint('.toRender')}\\n\\n` +\n `Expected: ${this.utils.printExpected(expected)}\\n` +\n `Received: ${this.utils.printReceived(content)}` +\n `\\n\\nDifference:\\n\\n${difference as string}`;\n\n return { message, pass };\n};\n\nexpect.extend({\n toRespondWith,\n toRespondWithError,\n toSendNotification,\n toRender,\n});\n"]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-4HY4SM3A.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,104 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunk2M7WQ26Fjs = require('./chunk-2M7WQ26F.js');
4
+
5
+
6
+ var _chunk6IMEYEREjs = require('./chunk-6IMEYERE.js');
7
+
8
+
9
+ var _chunkKPXLJ6RHjs = require('./chunk-KPXLJ6RH.js');
10
+
11
+
12
+ var _chunkMNDF32ZVjs = require('./chunk-MNDF32ZV.js');
13
+
14
+
15
+
16
+
17
+ var _chunkPHUTP7NBjs = require('./chunk-PHUTP7NB.js');
18
+
19
+ // src/environment.ts
20
+ var _utils = require('@metamask/utils');
21
+ var _jestenvironmentnode = require('jest-environment-node'); var _jestenvironmentnode2 = _interopRequireDefault(_jestenvironmentnode);
22
+ var log = _utils.createModuleLogger.call(void 0, _chunkMNDF32ZVjs.rootLogger, "environment");
23
+ var _options, _server, _instance;
24
+ var SnapsEnvironment = class extends _jestenvironmentnode2.default {
25
+ /**
26
+ * Constructor.
27
+ *
28
+ * @param options - The environment options.
29
+ * @param context - The environment context.
30
+ */
31
+ constructor(options, context) {
32
+ super(options, context);
33
+ _chunkPHUTP7NBjs.__privateAdd.call(void 0, this, _options, void 0);
34
+ _chunkPHUTP7NBjs.__privateAdd.call(void 0, this, _server, void 0);
35
+ _chunkPHUTP7NBjs.__privateAdd.call(void 0, this, _instance, void 0);
36
+ _chunkPHUTP7NBjs.__privateSet.call(void 0, this, _options, _chunk2M7WQ26Fjs.getOptions.call(void 0, options.projectConfig.testEnvironmentOptions));
37
+ }
38
+ /**
39
+ * Set up the environment. This starts the built-in HTTP server, and creates a
40
+ * new browser instance.
41
+ */
42
+ async setup() {
43
+ await super.setup();
44
+ if (_chunkPHUTP7NBjs.__privateGet.call(void 0, this, _options).server.enabled) {
45
+ log("Starting server.");
46
+ _chunkPHUTP7NBjs.__privateSet.call(void 0, this, _server, await _chunkKPXLJ6RHjs.startServer.call(void 0, _chunkPHUTP7NBjs.__privateGet.call(void 0, this, _options).server));
47
+ }
48
+ this.global.snapsEnvironment = this;
49
+ }
50
+ /**
51
+ * Tear down the environment. This closes the browser, and stops the built-in
52
+ * HTTP server.
53
+ */
54
+ async teardown() {
55
+ await _optionalChain([_chunkPHUTP7NBjs.__privateGet.call(void 0, this, _instance), 'optionalAccess', _ => _.executionService, 'access', _2 => _2.terminateAllSnaps, 'call', _3 => _3()]);
56
+ _optionalChain([_chunkPHUTP7NBjs.__privateGet.call(void 0, this, _server), 'optionalAccess', _4 => _4.close, 'call', _5 => _5()]);
57
+ await super.teardown();
58
+ }
59
+ /**
60
+ * Install a Snap in the environment. This will terminate any previously
61
+ * installed Snaps, and run the Snap code in a new execution service.
62
+ *
63
+ * @param snapId - The ID of the Snap to install.
64
+ * @param options - The options to use when installing the Snap.
65
+ * @param options.executionService - The execution service to use.
66
+ * @param options.executionServiceOptions - The options to use when creating the
67
+ * execution service, if any. This should only include options specific to the
68
+ * provided execution service.
69
+ * @param options.options - The simulation options.
70
+ * @template Service - The type of the execution service.
71
+ * @returns The installed Snap.
72
+ */
73
+ async installSnap(snapId = this.snapId, options = {}) {
74
+ await _optionalChain([_chunkPHUTP7NBjs.__privateGet.call(void 0, this, _instance), 'optionalAccess', _6 => _6.executionService, 'access', _7 => _7.terminateAllSnaps, 'call', _8 => _8()]);
75
+ _chunkPHUTP7NBjs.__privateSet.call(void 0, this, _instance, await _chunk6IMEYEREjs.handleInstallSnap.call(void 0, snapId, options));
76
+ return _chunkPHUTP7NBjs.__privateGet.call(void 0, this, _instance);
77
+ }
78
+ /**
79
+ * Get the snap ID for the current environment, which is used if no snap ID is
80
+ * passed to {@link installSnap}. This assumes that the built-in server is
81
+ * running.
82
+ *
83
+ * @returns The snap ID.
84
+ * @throws If the server is not running.
85
+ */
86
+ get snapId() {
87
+ _utils.assert.call(void 0,
88
+ _chunkPHUTP7NBjs.__privateGet.call(void 0, this, _server),
89
+ "You must specify a snap ID, because the built-in server is not running."
90
+ );
91
+ const { port } = _chunkPHUTP7NBjs.__privateGet.call(void 0, this, _server).address();
92
+ return `local:http://localhost:${port}`;
93
+ }
94
+ };
95
+ _options = new WeakMap();
96
+ _server = new WeakMap();
97
+ _instance = new WeakMap();
98
+ var environment_default = SnapsEnvironment;
99
+
100
+
101
+
102
+
103
+ exports.SnapsEnvironment = SnapsEnvironment; exports.environment_default = environment_default;
104
+ //# sourceMappingURL=chunk-4JUUFDTC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/environment.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAMA,SAAS,QAAQ,0BAA0B;AAE3C,OAAO,qBAAqB;AAc5B,IAAM,MAAM,mBAAmB,YAAY,aAAa;AAtBxD;AAwBO,IAAM,mBAAN,cAA+B,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAapD,YAAY,SAAgC,SAA6B;AACvE,UAAM,SAAS,OAAO;AAbxB;AAEA;AAEA;AAUE,uBAAK,UAAW,WAAW,QAAQ,cAAc,sBAAsB;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,QAAQ;AACZ,UAAM,MAAM,MAAM;AAElB,QAAI,mBAAK,UAAS,OAAO,SAAS;AAChC,UAAI,kBAAkB;AACtB,yBAAK,SAAU,MAAM,YAAY,mBAAK,UAAS,MAAM;AAAA,IACvD;AAEA,SAAK,OAAO,mBAAmB;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAW;AACf,UAAM,mBAAK,YAAW,iBAAiB,kBAAkB;AACzD,uBAAK,UAAS,MAAM;AACpB,UAAM,MAAM,SAAS;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAM,YAKJ,SAAiB,KAAK,QACtB,UAAgD,CAAC,GACjD;AACA,UAAM,mBAAK,YAAW,iBAAiB,kBAAkB;AACzD,uBAAK,WAAY,MAAM,kBAAkB,QAAkB,OAAO;AAClE,WAAO,mBAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,IAAI,SAAS;AACX;AAAA,MACE,mBAAK;AAAA,MACL;AAAA,IACF;AAEA,UAAM,EAAE,KAAK,IAAI,mBAAK,SAAQ,QAAQ;AACtC,WAAO,0BAA0B,IAAI;AAAA,EACvC;AACF;AAtFE;AAEA;AAEA;AAoFF,IAAO,sBAAQ","sourcesContent":["import type {\n EnvironmentContext,\n JestEnvironmentConfig,\n} from '@jest/environment';\nimport type { AbstractExecutionService } from '@metamask/snaps-controllers';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport { assert, createModuleLogger } from '@metamask/utils';\nimport type { Server } from 'http';\nimport NodeEnvironment from 'jest-environment-node';\nimport type { AddressInfo } from 'net';\n\nimport type { InstalledSnap, InstallSnapOptions } from './internals';\nimport { handleInstallSnap, rootLogger, startServer } from './internals';\nimport type { SnapsEnvironmentOptions } from './options';\nimport { getOptions } from './options';\n\n/* eslint-disable */\ndeclare global {\n const snapsEnvironment: SnapsEnvironment;\n}\n/* eslint-enable */\n\nconst log = createModuleLogger(rootLogger, 'environment');\n\nexport class SnapsEnvironment extends NodeEnvironment {\n #options: SnapsEnvironmentOptions;\n\n #server: Server | undefined;\n\n #instance: InstalledSnap | undefined;\n\n /**\n * Constructor.\n *\n * @param options - The environment options.\n * @param context - The environment context.\n */\n constructor(options: JestEnvironmentConfig, context: EnvironmentContext) {\n super(options, context);\n this.#options = getOptions(options.projectConfig.testEnvironmentOptions);\n }\n\n /**\n * Set up the environment. This starts the built-in HTTP server, and creates a\n * new browser instance.\n */\n async setup() {\n await super.setup();\n\n if (this.#options.server.enabled) {\n log('Starting server.');\n this.#server = await startServer(this.#options.server);\n }\n\n this.global.snapsEnvironment = this;\n }\n\n /**\n * Tear down the environment. This closes the browser, and stops the built-in\n * HTTP server.\n */\n async teardown() {\n await this.#instance?.executionService.terminateAllSnaps();\n this.#server?.close();\n await super.teardown();\n }\n\n /**\n * Install a Snap in the environment. This will terminate any previously\n * installed Snaps, and run the Snap code in a new execution service.\n *\n * @param snapId - The ID of the Snap to install.\n * @param options - The options to use when installing the Snap.\n * @param options.executionService - The execution service to use.\n * @param options.executionServiceOptions - The options to use when creating the\n * execution service, if any. This should only include options specific to the\n * provided execution service.\n * @param options.options - The simulation options.\n * @template Service - The type of the execution service.\n * @returns The installed Snap.\n */\n async installSnap<\n Service extends new (...args: any[]) => InstanceType<\n typeof AbstractExecutionService\n >,\n >(\n snapId: string = this.snapId,\n options: Partial<InstallSnapOptions<Service>> = {},\n ) {\n await this.#instance?.executionService.terminateAllSnaps();\n this.#instance = await handleInstallSnap(snapId as SnapId, options);\n return this.#instance;\n }\n\n /**\n * Get the snap ID for the current environment, which is used if no snap ID is\n * passed to {@link installSnap}. This assumes that the built-in server is\n * running.\n *\n * @returns The snap ID.\n * @throws If the server is not running.\n */\n get snapId() {\n assert(\n this.#server,\n 'You must specify a snap ID, because the built-in server is not running.',\n );\n\n const { port } = this.#server.address() as AddressInfo;\n return `local:http://localhost:${port}`;\n }\n}\n\nexport default SnapsEnvironment;\n"]}
@@ -0,0 +1,34 @@
1
+ // src/internals/simulation/store/ui.ts
2
+ import { createAction, createSelector, createSlice } from "@reduxjs/toolkit";
3
+ var INITIAL_STATE = {
4
+ current: null
5
+ };
6
+ var uiSlice = createSlice({
7
+ name: "ui",
8
+ initialState: INITIAL_STATE,
9
+ reducers: {
10
+ setInterface(state, action) {
11
+ state.current = action.payload;
12
+ },
13
+ closeInterface(state) {
14
+ state.current = null;
15
+ }
16
+ }
17
+ });
18
+ var resolveInterface = createAction(
19
+ `${uiSlice.name}/resolveInterface`
20
+ );
21
+ var { setInterface, closeInterface } = uiSlice.actions;
22
+ var getCurrentInterface = createSelector(
23
+ (state) => state.ui,
24
+ (ui) => ui.current
25
+ );
26
+
27
+ export {
28
+ uiSlice,
29
+ resolveInterface,
30
+ setInterface,
31
+ closeInterface,
32
+ getCurrentInterface
33
+ };
34
+ //# sourceMappingURL=chunk-4VCE3DRR.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals/simulation/store/ui.ts"],"sourcesContent":["import 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: DialogType;\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"],"mappings":";AAEA,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;","names":[]}
@@ -0,0 +1,48 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/internals/simulation/store/state.ts
2
+ var _toolkit = require('@reduxjs/toolkit');
3
+ var INITIAL_STATE = {
4
+ encrypted: null,
5
+ unencrypted: null
6
+ };
7
+ var stateSlice = _toolkit.createSlice.call(void 0, {
8
+ name: "state",
9
+ initialState: INITIAL_STATE,
10
+ reducers: {
11
+ setState: (state, action) => {
12
+ if (action.payload.encrypted) {
13
+ state.encrypted = action.payload.state;
14
+ return state;
15
+ }
16
+ state.unencrypted = action.payload.state;
17
+ return state;
18
+ },
19
+ clearState: (state, action) => {
20
+ if (action.payload.encrypted) {
21
+ state.encrypted = null;
22
+ return state;
23
+ }
24
+ state.unencrypted = null;
25
+ return state;
26
+ }
27
+ }
28
+ });
29
+ var { setState, clearState } = stateSlice.actions;
30
+ function getState(encrypted) {
31
+ return _toolkit.createSelector.call(void 0,
32
+ (state) => state,
33
+ ({ state }) => {
34
+ if (encrypted) {
35
+ return state.encrypted;
36
+ }
37
+ return state.unencrypted;
38
+ }
39
+ );
40
+ }
41
+
42
+
43
+
44
+
45
+
46
+
47
+ exports.stateSlice = stateSlice; exports.setState = setState; exports.clearState = clearState; exports.getState = getState;
48
+ //# sourceMappingURL=chunk-4WCFXE73.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals/simulation/store/state.ts"],"names":[],"mappings":";AACA,SAAS,gBAAgB,mBAAmB;AAoB5C,IAAM,gBAAuB;AAAA,EAC3B,WAAW;AAAA,EACX,aAAa;AACf;AAKO,IAAM,aAAa,YAAY;AAAA,EACpC,MAAM;AAAA,EACN,cAAc;AAAA,EACd,UAAU;AAAA,IACR,UAAU,CACR,OACA,WACG;AACH,UAAI,OAAO,QAAQ,WAAW;AAC5B,cAAM,YAAY,OAAO,QAAQ;AACjC,eAAO;AAAA,MACT;AAEA,YAAM,cAAc,OAAO,QAAQ;AACnC,aAAO;AAAA,IACT;AAAA,IACA,YAAY,CAAC,OAAO,WAAkD;AACpE,UAAI,OAAO,QAAQ,WAAW;AAC5B,cAAM,YAAY;AAClB,eAAO;AAAA,MACT;AAEA,YAAM,cAAc;AACpB,aAAO;AAAA,IACT;AAAA,EACF;AACF,CAAC;AAEM,IAAM,EAAE,UAAU,WAAW,IAAI,WAAW;AAQ5C,SAAS,SAAS,WAAoB;AAC3C,SAAO;AAAA,IACL,CAAC,UAA4B;AAAA,IAC7B,CAAC,EAAE,MAAM,MAAM;AACb,UAAI,WAAW;AACb,eAAO,MAAM;AAAA,MACf;AAEA,aAAO,MAAM;AAAA,IACf;AAAA,EACF;AACF","sourcesContent":["import type { PayloadAction } from '@reduxjs/toolkit';\nimport { createSelector, createSlice } from '@reduxjs/toolkit';\n\nimport type { ApplicationState } from './store';\n\n/**\n * The Snap state object.\n *\n * @property encrypted - The encrypted state. Can be null if the Snap does not\n * have an encrypted state.\n * @property unencrypted - The unencrypted state. Can be null if the Snap does\n * not have an unencrypted state.\n */\nexport type State = {\n encrypted: string | null;\n unencrypted: string | null;\n};\n\n/**\n * The initial state.\n */\nconst INITIAL_STATE: State = {\n encrypted: null,\n unencrypted: null,\n};\n\n/**\n * The state slice, which stores the state of the Snap.\n */\nexport const stateSlice = createSlice({\n name: 'state',\n initialState: INITIAL_STATE,\n reducers: {\n setState: (\n state,\n action: PayloadAction<{ state: string | null; encrypted: boolean }>,\n ) => {\n if (action.payload.encrypted) {\n state.encrypted = action.payload.state;\n return state;\n }\n\n state.unencrypted = action.payload.state;\n return state;\n },\n clearState: (state, action: PayloadAction<{ encrypted: boolean }>) => {\n if (action.payload.encrypted) {\n state.encrypted = null;\n return state;\n }\n\n state.unencrypted = null;\n return state;\n },\n },\n});\n\nexport const { setState, clearState } = stateSlice.actions;\n\n/**\n * Get the state from the store.\n *\n * @param encrypted - Whether to get the encrypted or unencrypted state.\n * @returns A selector that returns the state.\n */\nexport function getState(encrypted: boolean) {\n return createSelector(\n (state: ApplicationState) => state,\n ({ state }) => {\n if (encrypted) {\n return state.encrypted;\n }\n\n return state.unencrypted;\n },\n );\n}\n"]}
@@ -0,0 +1,153 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk3CC2NI7Rjs = require('./chunk-3CC2NI7R.js');
4
+
5
+
6
+ var _chunkMNDF32ZVjs = require('./chunk-MNDF32ZV.js');
7
+
8
+
9
+
10
+
11
+ var _chunkRQBZLDXLjs = require('./chunk-RQBZLDXL.js');
12
+
13
+
14
+
15
+ var _chunk34GS3AHAjs = require('./chunk-34GS3AHA.js');
16
+
17
+
18
+ var _chunk7JLVQJK7js = require('./chunk-7JLVQJK7.js');
19
+
20
+ // src/helpers.ts
21
+ var _snapsutils = require('@metamask/snaps-utils');
22
+ var _utils = require('@metamask/utils');
23
+ var _superstruct = require('superstruct');
24
+ var log = _utils.createModuleLogger.call(void 0, _chunkMNDF32ZVjs.rootLogger, "helpers");
25
+ function getOptions(snapId, options) {
26
+ if (typeof snapId === "object") {
27
+ return [void 0, snapId];
28
+ }
29
+ return [snapId, options];
30
+ }
31
+ async function installSnap(snapId, options = {}) {
32
+ const resolvedOptions = getOptions(snapId, options);
33
+ const {
34
+ snapId: installedSnapId,
35
+ store,
36
+ executionService,
37
+ runSaga,
38
+ controllerMessenger
39
+ } = await _chunk7JLVQJK7js.getEnvironment.call(void 0, ).installSnap(...resolvedOptions);
40
+ const onTransaction = async (request) => {
41
+ log("Sending transaction %o.", request);
42
+ const {
43
+ origin: transactionOrigin,
44
+ chainId,
45
+ ...transaction
46
+ } = _superstruct.create.call(void 0, request, _chunkRQBZLDXLjs.TransactionOptionsStruct);
47
+ return _chunk3CC2NI7Rjs.handleRequest.call(void 0, {
48
+ snapId: installedSnapId,
49
+ store,
50
+ executionService,
51
+ runSaga,
52
+ controllerMessenger,
53
+ handler: _snapsutils.HandlerType.OnTransaction,
54
+ request: {
55
+ method: "",
56
+ params: {
57
+ chainId,
58
+ transaction,
59
+ transactionOrigin
60
+ }
61
+ }
62
+ });
63
+ };
64
+ const onCronjob = (request) => {
65
+ log("Running cronjob %o.", options);
66
+ return _chunk3CC2NI7Rjs.handleRequest.call(void 0, {
67
+ snapId: installedSnapId,
68
+ store,
69
+ executionService,
70
+ controllerMessenger,
71
+ runSaga,
72
+ handler: _snapsutils.HandlerType.OnCronjob,
73
+ request
74
+ });
75
+ };
76
+ return {
77
+ request: (request) => {
78
+ log("Sending request %o.", request);
79
+ return _chunk3CC2NI7Rjs.handleRequest.call(void 0, {
80
+ snapId: installedSnapId,
81
+ store,
82
+ executionService,
83
+ controllerMessenger,
84
+ runSaga,
85
+ handler: _snapsutils.HandlerType.OnRpcRequest,
86
+ request
87
+ });
88
+ },
89
+ onTransaction,
90
+ sendTransaction: onTransaction,
91
+ onSignature: async (request) => {
92
+ log("Requesting signature %o.", request);
93
+ const { origin: signatureOrigin, ...signature } = _superstruct.create.call(void 0,
94
+ request,
95
+ _chunkRQBZLDXLjs.SignatureOptionsStruct
96
+ );
97
+ return _chunk3CC2NI7Rjs.handleRequest.call(void 0, {
98
+ snapId: installedSnapId,
99
+ store,
100
+ executionService,
101
+ controllerMessenger,
102
+ runSaga,
103
+ handler: _snapsutils.HandlerType.OnSignature,
104
+ request: {
105
+ method: "",
106
+ params: {
107
+ signature,
108
+ signatureOrigin
109
+ }
110
+ }
111
+ });
112
+ },
113
+ onCronjob,
114
+ runCronjob: onCronjob,
115
+ onHomePage: async () => {
116
+ log("Rendering home page.");
117
+ return _chunk3CC2NI7Rjs.handleRequest.call(void 0, {
118
+ snapId: installedSnapId,
119
+ store,
120
+ executionService,
121
+ controllerMessenger,
122
+ runSaga,
123
+ handler: _snapsutils.HandlerType.OnHomePage,
124
+ request: {
125
+ method: ""
126
+ }
127
+ });
128
+ },
129
+ mockJsonRpc(mock) {
130
+ log("Mocking JSON-RPC request %o.", mock);
131
+ const { method, result } = _superstruct.create.call(void 0, mock, _chunkRQBZLDXLjs.JsonRpcMockOptionsStruct);
132
+ store.dispatch(_chunk34GS3AHAjs.addJsonRpcMock.call(void 0, { method, result }));
133
+ return {
134
+ unmock() {
135
+ log("Unmocking JSON-RPC request %o.", mock);
136
+ store.dispatch(_chunk34GS3AHAjs.removeJsonRpcMock.call(void 0, method));
137
+ }
138
+ };
139
+ },
140
+ close: async () => {
141
+ log("Closing execution service.");
142
+ _snapsutils.logInfo.call(void 0,
143
+ "Calling `snap.close()` is deprecated, and will be removed in a future release. Snaps are now automatically closed when the test ends."
144
+ );
145
+ await executionService.terminateAllSnaps();
146
+ }
147
+ };
148
+ }
149
+
150
+
151
+
152
+ exports.installSnap = installSnap;
153
+ //# sourceMappingURL=chunk-5IUHGC5S.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AbstractExecutionService } from '@metamask/snaps-controllers';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport { HandlerType, logInfo } from '@metamask/snaps-utils';\nimport { createModuleLogger } from '@metamask/utils';\nimport { create } from 'superstruct';\n\nimport {\n rootLogger,\n handleRequest,\n TransactionOptionsStruct,\n getEnvironment,\n JsonRpcMockOptionsStruct,\n SignatureOptionsStruct,\n} from './internals';\nimport type { InstallSnapOptions } from './internals';\nimport {\n addJsonRpcMock,\n removeJsonRpcMock,\n} from './internals/simulation/store/mocks';\nimport type {\n CronjobOptions,\n JsonRpcMockOptions,\n Snap,\n SnapResponse,\n TransactionOptions,\n} from './types';\n\nconst log = createModuleLogger(rootLogger, 'helpers');\n\n/**\n * Get the options for {@link installSnap}.\n *\n * @param snapId - The ID of the Snap, or the options.\n * @param options - The options, if any.\n * @returns The options.\n */\nfunction getOptions<\n Service extends new (...args: any[]) => InstanceType<\n typeof AbstractExecutionService\n >,\n>(\n snapId: SnapId | Partial<InstallSnapOptions<Service>> | undefined,\n options: Partial<InstallSnapOptions<Service>>,\n): [SnapId | undefined, Partial<InstallSnapOptions<Service>>] {\n if (typeof snapId === 'object') {\n return [undefined, snapId];\n }\n\n return [snapId, options];\n}\n\n/**\n * Load a snap into the environment. This is the main entry point for testing\n * snaps: It returns a {@link Snap} object that can be used to interact with the\n * snap.\n *\n * @example\n * import { installSnap } from '@metamask/snaps-jest';\n *\n * describe('My Snap', () => {\n * it('should do something', async () => {\n * const { request } = await installSnap('local:my-snap');\n * const response = await request({\n * method: 'foo',\n * params: ['bar'],\n * });\n * expect(response).toRespondWith('bar');\n * });\n * });\n * @returns The snap.\n * @throws If the built-in server is not running, and no snap ID is provided.\n */\nexport async function installSnap(): Promise<Snap>;\n\n/**\n * Load a snap into the environment. This is the main entry point for testing\n * snaps: It returns a {@link Snap} object that can be used to interact with the\n * snap.\n *\n * @example\n * import { installSnap } from '@metamask/snaps-jest';\n *\n * describe('My Snap', () => {\n * it('should do something', async () => {\n * const { request } = await installSnap('local:my-snap');\n * const response = await request({\n * method: 'foo',\n * params: ['bar'],\n * });\n * expect(response).toRespondWith('bar');\n * });\n * });\n * @param options - The options to use.\n * @param options.executionService - The execution service to use. Defaults to\n * {@link NodeThreadExecutionService}. You do not need to provide this unless\n * you are testing a custom execution service.\n * @param options.executionServiceOptions - The options to use when creating the\n * execution service, if any. This should only include options specific to the\n * provided execution service.\n * @param options.options - The simulation options.\n * @returns The snap.\n * @throws If the built-in server is not running, and no snap ID is provided.\n */\nexport async function installSnap<\n Service extends new (...args: any[]) => InstanceType<\n typeof AbstractExecutionService\n >,\n>(options: Partial<InstallSnapOptions<Service>>): Promise<Snap>;\n\n/**\n * Load a snap into the environment. This is the main entry point for testing\n * snaps: It returns a {@link Snap} object that can be used to interact with the\n * snap.\n *\n * @example\n * import { installSnap } from '@metamask/snaps-jest';\n *\n * describe('My Snap', () => {\n * it('should do something', async () => {\n * const { request } = await installSnap('local:my-snap');\n * const response = await request({\n * method: 'foo',\n * params: ['bar'],\n * });\n * expect(response).toRespondWith('bar');\n * });\n * });\n * @param snapId - The ID of the snap, including the prefix (`local:`). Defaults\n * to the URL of the built-in server, if it is running. This supports both\n * local snap IDs and NPM snap IDs.\n * @param options - The options to use.\n * @param options.executionService - The execution service to use. Defaults to\n * {@link NodeThreadExecutionService}. You do not need to provide this unless\n * you are testing a custom execution service.\n * @param options.executionServiceOptions - The options to use when creating the\n * execution service, if any. This should only include options specific to the\n * provided execution service.\n * @param options.options - The simulation options.\n * @returns The snap.\n * @throws If the built-in server is not running, and no snap ID is provided.\n */\nexport async function installSnap<\n Service extends new (...args: any[]) => InstanceType<\n typeof AbstractExecutionService\n >,\n>(\n snapId: SnapId,\n options?: Partial<InstallSnapOptions<Service>>,\n): Promise<Snap>;\n\n/**\n * Load a snap into the environment. This is the main entry point for testing\n * snaps: It returns a {@link Snap} object that can be used to interact with the\n * snap.\n *\n * @example\n * import { installSnap } from '@metamask/snaps-jest';\n *\n * describe('My Snap', () => {\n * it('should do something', async () => {\n * const { request } = await installSnap('local:my-snap');\n * const response = await request({\n * method: 'foo',\n * params: ['bar'],\n * });\n * expect(response).toRespondWith('bar');\n * });\n * });\n * @param snapId - The ID of the snap, including the prefix (`local:`). Defaults\n * to the URL of the built-in server, if it is running. This supports both\n * local snap IDs and NPM snap IDs.\n * @param options - The options to use.\n * @param options.executionService - The execution service to use. Defaults to\n * {@link NodeThreadExecutionService}. You do not need to provide this unless\n * you are testing a custom execution service.\n * @param options.executionServiceOptions - The options to use when creating the\n * execution service, if any. This should only include options specific to the\n * provided execution service.\n * @param options.options - The simulation options.\n * @returns The snap.\n * @throws If the built-in server is not running, and no snap ID is provided.\n */\nexport async function installSnap<\n Service extends new (...args: any[]) => InstanceType<\n typeof AbstractExecutionService\n >,\n>(\n snapId?: SnapId | Partial<InstallSnapOptions<Service>>,\n options: Partial<InstallSnapOptions<Service>> = {},\n): Promise<Snap> {\n const resolvedOptions = getOptions(snapId, options);\n const {\n snapId: installedSnapId,\n store,\n executionService,\n runSaga,\n controllerMessenger,\n } = await getEnvironment().installSnap(...resolvedOptions);\n\n const onTransaction = async (\n request: TransactionOptions,\n ): Promise<SnapResponse> => {\n log('Sending transaction %o.', request);\n\n const {\n origin: transactionOrigin,\n chainId,\n ...transaction\n } = create(request, TransactionOptionsStruct);\n\n return handleRequest({\n snapId: installedSnapId,\n store,\n executionService,\n runSaga,\n controllerMessenger,\n handler: HandlerType.OnTransaction,\n request: {\n method: '',\n params: {\n chainId,\n transaction,\n transactionOrigin,\n },\n },\n });\n };\n\n const onCronjob = (request: CronjobOptions) => {\n log('Running cronjob %o.', options);\n\n return handleRequest({\n snapId: installedSnapId,\n store,\n executionService,\n controllerMessenger,\n runSaga,\n handler: HandlerType.OnCronjob,\n request,\n });\n };\n\n return {\n request: (request) => {\n log('Sending request %o.', request);\n\n return handleRequest({\n snapId: installedSnapId,\n store,\n executionService,\n controllerMessenger,\n runSaga,\n handler: HandlerType.OnRpcRequest,\n request,\n });\n },\n\n onTransaction,\n sendTransaction: onTransaction,\n\n onSignature: async (request: unknown): Promise<SnapResponse> => {\n log('Requesting signature %o.', request);\n\n const { origin: signatureOrigin, ...signature } = create(\n request,\n SignatureOptionsStruct,\n );\n\n return handleRequest({\n snapId: installedSnapId,\n store,\n executionService,\n controllerMessenger,\n runSaga,\n handler: HandlerType.OnSignature,\n request: {\n method: '',\n params: {\n signature,\n signatureOrigin,\n },\n },\n });\n },\n\n onCronjob,\n runCronjob: onCronjob,\n\n onHomePage: async (): Promise<SnapResponse> => {\n log('Rendering home page.');\n\n return handleRequest({\n snapId: installedSnapId,\n store,\n executionService,\n controllerMessenger,\n runSaga,\n handler: HandlerType.OnHomePage,\n request: {\n method: '',\n },\n });\n },\n\n mockJsonRpc(mock: JsonRpcMockOptions) {\n log('Mocking JSON-RPC request %o.', mock);\n\n const { method, result } = create(mock, JsonRpcMockOptionsStruct);\n store.dispatch(addJsonRpcMock({ method, result }));\n\n return {\n unmock() {\n log('Unmocking JSON-RPC request %o.', mock);\n\n store.dispatch(removeJsonRpcMock(method));\n },\n };\n },\n\n close: async () => {\n log('Closing execution service.');\n logInfo(\n 'Calling `snap.close()` is deprecated, and will be removed in a future release. Snaps are now automatically closed when the test ends.',\n );\n\n await executionService.terminateAllSnaps();\n },\n };\n}\n"]}
@@ -0,0 +1,42 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkON6M4WG5js = require('./chunk-ON6M4WG5.js');
4
+
5
+ // src/internals/simulation/methods/hooks/notifications.ts
6
+ var _snapssdk = require('@metamask/snaps-sdk');
7
+ var _toolkit = require('@reduxjs/toolkit');
8
+ var _effects = require('redux-saga/effects');
9
+ function* showNativeNotificationImplementation(_snapId, { message }) {
10
+ yield _effects.put.call(void 0,
11
+ _chunkON6M4WG5js.addNotification.call(void 0, { id: _toolkit.nanoid.call(void 0, ), type: _snapssdk.NotificationType.Native, message })
12
+ );
13
+ return null;
14
+ }
15
+ function getShowNativeNotificationImplementation(runSaga) {
16
+ return async (...args) => {
17
+ return await runSaga(
18
+ showNativeNotificationImplementation,
19
+ ...args
20
+ ).toPromise();
21
+ };
22
+ }
23
+ function* showInAppNotificationImplementation(_snapId, { message }) {
24
+ yield _effects.put.call(void 0,
25
+ _chunkON6M4WG5js.addNotification.call(void 0, { id: _toolkit.nanoid.call(void 0, ), type: _snapssdk.NotificationType.InApp, message })
26
+ );
27
+ return null;
28
+ }
29
+ function getShowInAppNotificationImplementation(runSaga) {
30
+ return async (...args) => {
31
+ return await runSaga(
32
+ showInAppNotificationImplementation,
33
+ ...args
34
+ ).toPromise();
35
+ };
36
+ }
37
+
38
+
39
+
40
+
41
+ exports.getShowNativeNotificationImplementation = getShowNativeNotificationImplementation; exports.getShowInAppNotificationImplementation = getShowInAppNotificationImplementation;
42
+ //# sourceMappingURL=chunk-5O6VBW42.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals/simulation/methods/hooks/notifications.ts"],"names":[],"mappings":";;;;;AACA,SAAS,wBAAwB;AACjC,SAAS,cAAc;AAEvB,SAAS,WAAW;AAcpB,UAAU,qCACR,SACA,EAAE,QAAQ,GACI;AACd,QAAM;AAAA,IACJ,gBAAgB,EAAE,IAAI,OAAO,GAAG,MAAM,iBAAiB,QAAQ,QAAQ,CAAC;AAAA,EAC1E;AAEA,SAAO;AACT;AAQO,SAAS,wCACd,SACA;AACA,SAAO,UACF,SACA;AACH,WAAO,MAAM;AAAA,MACX;AAAA,MACA,GAAG;AAAA,IACL,EAAE,UAAU;AAAA,EACd;AACF;AAWA,UAAU,oCACR,SACA,EAAE,QAAQ,GACU;AACpB,QAAM;AAAA,IACJ,gBAAgB,EAAE,IAAI,OAAO,GAAG,MAAM,iBAAiB,OAAO,QAAQ,CAAC;AAAA,EACzE;AAEA,SAAO;AACT;AAQO,SAAS,uCACd,SACA;AACA,SAAO,UACF,SACA;AACH,WAAO,MAAM;AAAA,MACX;AAAA,MACA,GAAG;AAAA,IACL,EAAE,UAAU;AAAA,EACd;AACF","sourcesContent":["import type { NotifyParams } from '@metamask/snaps-sdk';\nimport { NotificationType } from '@metamask/snaps-sdk';\nimport { nanoid } from '@reduxjs/toolkit';\nimport type { SagaIterator } from 'redux-saga';\nimport { put } from 'redux-saga/effects';\n\nimport type { RunSagaFunction } from '../../store';\nimport { addNotification } from '../../store';\n\n/**\n * Show a native notification to the user.\n *\n * @param _snapId - The ID of the Snap that created the notification.\n * @param options - The notification options.\n * @param options.message - The message to show in the notification.\n * @yields Adds the notification to the store.\n * @returns `null`.\n */\nfunction* showNativeNotificationImplementation(\n _snapId: string,\n { message }: NotifyParams,\n): SagaIterator {\n yield put(\n addNotification({ id: nanoid(), type: NotificationType.Native, message }),\n );\n\n return null;\n}\n\n/**\n * Get a method that can be used to show a native notification.\n *\n * @param runSaga - A function to run a saga outside the usual Redux flow.\n * @returns A method that can be used to show a native notification.\n */\nexport function getShowNativeNotificationImplementation(\n runSaga: RunSagaFunction,\n) {\n return async (\n ...args: Parameters<typeof showNativeNotificationImplementation>\n ) => {\n return await runSaga(\n showNativeNotificationImplementation,\n ...args,\n ).toPromise();\n };\n}\n\n/**\n * Show an in-app notification to the user.\n *\n * @param _snapId - The ID of the Snap that created the notification.\n * @param options - The notification options.\n * @param options.message - The message to show in the notification.\n * @yields Adds the notification to the store.\n * @returns `null`.\n */\nfunction* showInAppNotificationImplementation(\n _snapId: string,\n { message }: NotifyParams,\n): SagaIterator<null> {\n yield put(\n addNotification({ id: nanoid(), type: NotificationType.InApp, message }),\n );\n\n return null;\n}\n\n/**\n * Get a method that can be used to show an in-app notification.\n *\n * @param runSaga - A function to run a saga outside the usual Redux flow.\n * @returns A method that can be used to show an in-app notification.\n */\nexport function getShowInAppNotificationImplementation(\n runSaga: RunSagaFunction,\n) {\n return async (\n ...args: Parameters<typeof showInAppNotificationImplementation>\n ) => {\n return await runSaga(\n showInAppNotificationImplementation,\n ...args,\n ).toPromise();\n };\n}\n"]}