@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 @@
1
+ //# sourceMappingURL=chunk-UXHKMILA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-VCXM6FKU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,14 @@
1
+ // src/internals/environment.ts
2
+ import { assert } from "@metamask/utils";
3
+ function getEnvironment() {
4
+ assert(
5
+ typeof snapsEnvironment !== "undefined",
6
+ "Snaps environment not found. Make sure you have configured the environment correctly."
7
+ );
8
+ return snapsEnvironment;
9
+ }
10
+
11
+ export {
12
+ getEnvironment
13
+ };
14
+ //# sourceMappingURL=chunk-VHTVUQWR.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals/environment.ts"],"sourcesContent":["import { assert } from '@metamask/utils';\n\n/**\n * Get the Snaps environment. This asserts that the environment has been\n * configured.\n *\n * @returns The Snaps environment.\n */\nexport function getEnvironment() {\n // `snapsEnvironment` is a global variable that is set by the Jest\n // environment.\n assert(\n typeof snapsEnvironment !== 'undefined',\n 'Snaps environment not found. Make sure you have configured the environment correctly.',\n );\n\n return snapsEnvironment;\n}\n"],"mappings":";AAAA,SAAS,cAAc;AAQhB,SAAS,iBAAiB;AAG/B;AAAA,IACE,OAAO,qBAAqB;AAAA,IAC5B;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
@@ -0,0 +1,97 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkAH7YNG6Njs = require('./chunk-AH7YNG6N.js');
5
+
6
+
7
+ var _chunkY5NWZU43js = require('./chunk-Y5NWZU43.js');
8
+
9
+
10
+
11
+ var _chunkJDN3VGMOjs = require('./chunk-JDN3VGMO.js');
12
+
13
+
14
+
15
+ var _chunk5O6VBW42js = require('./chunk-5O6VBW42.js');
16
+
17
+
18
+ var _chunkD36QBJ35js = require('./chunk-D36QBJ35.js');
19
+
20
+
21
+
22
+
23
+ var _chunk3KCEPGJAjs = require('./chunk-3KCEPGJA.js');
24
+
25
+
26
+
27
+ var _chunkO4MJRHZDjs = require('./chunk-O4MJRHZD.js');
28
+
29
+ // src/internals/simulation/methods/specifications.ts
30
+
31
+
32
+
33
+
34
+ var _snapsrpcmethods = require('@metamask/snaps-rpc-methods');
35
+ var _snapsutils = require('@metamask/snaps-utils');
36
+ function resolve(result) {
37
+ return () => result;
38
+ }
39
+ function asyncResolve(result) {
40
+ return async () => result;
41
+ }
42
+ function getPermissionSpecifications({
43
+ controllerMessenger,
44
+ hooks,
45
+ runSaga,
46
+ options
47
+ }) {
48
+ return {
49
+ ..._snapsrpcmethods.buildSnapEndowmentSpecifications.call(void 0, _chunkO4MJRHZDjs.EXCLUDED_SNAP_ENDOWMENTS),
50
+ ..._snapsrpcmethods.buildSnapRestrictedMethodSpecifications.call(void 0, _chunkO4MJRHZDjs.EXCLUDED_SNAP_PERMISSIONS, {
51
+ // Shared hooks.
52
+ ...hooks,
53
+ // Encryption and decryption hooks.
54
+ // TODO: Swap these out for the real implementations.
55
+ encrypt: _chunkAH7YNG6Njs.encryptImplementation,
56
+ decrypt: _chunkAH7YNG6Njs.decryptImplementation,
57
+ // Snaps-specific hooks.
58
+ clearSnapState: _chunk3KCEPGJAjs.getClearSnapStateMethodImplementation.call(void 0, runSaga),
59
+ getLocale: _chunkY5NWZU43js.getGetLocaleMethodImplementation.call(void 0, options),
60
+ getSnapState: _chunk3KCEPGJAjs.getGetSnapStateMethodImplementation.call(void 0, runSaga),
61
+ getUnlockPromise: asyncResolve(true),
62
+ // TODO: Allow the user to specify the result of this function.
63
+ isOnPhishingList: resolve(false),
64
+ maybeUpdatePhishingList: asyncResolve(),
65
+ showDialog: _chunkD36QBJ35js.getShowDialogImplementation.call(void 0, runSaga),
66
+ showInAppNotification: _chunk5O6VBW42js.getShowInAppNotificationImplementation.call(void 0, runSaga),
67
+ showNativeNotification: _chunk5O6VBW42js.getShowNativeNotificationImplementation.call(void 0, runSaga),
68
+ updateSnapState: _chunk3KCEPGJAjs.getUpdateSnapStateMethodImplementation.call(void 0, runSaga),
69
+ createInterface: _chunkJDN3VGMOjs.getCreateInterfaceImplementation.call(void 0, controllerMessenger),
70
+ getInterface: _chunkJDN3VGMOjs.getGetInterfaceImplementation.call(void 0, controllerMessenger)
71
+ })
72
+ };
73
+ }
74
+ async function getEndowments(permissionController, snapId) {
75
+ const allEndowments = await Object.keys(_snapsrpcmethods.endowmentPermissionBuilders).reduce(async (promise, permissionName) => {
76
+ const accumulator = await promise;
77
+ if (permissionController.hasPermission(snapId, permissionName)) {
78
+ const endowments = await permissionController.getEndowments(
79
+ snapId,
80
+ permissionName
81
+ );
82
+ if (endowments) {
83
+ return accumulator.concat(endowments);
84
+ }
85
+ }
86
+ return accumulator;
87
+ }, Promise.resolve([]));
88
+ return [.../* @__PURE__ */ new Set([..._snapsutils.DEFAULT_ENDOWMENTS, ...allEndowments])];
89
+ }
90
+
91
+
92
+
93
+
94
+
95
+
96
+ exports.resolve = resolve; exports.asyncResolve = asyncResolve; exports.getPermissionSpecifications = getPermissionSpecifications; exports.getEndowments = getEndowments;
97
+ //# sourceMappingURL=chunk-VNQIROKZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals/simulation/methods/specifications.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,0BAA0B;AA6C5B,SAAS,QAAQ,QAAiB;AACvC,SAAO,MAAM;AACf;AASO,SAAS,aAAa,QAAkB;AAC7C,SAAO,YAAY;AACrB;AAaO,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAuC;AACrC,SAAO;AAAA,IACL,GAAG,iCAAiC,wBAAwB;AAAA,IAC5D,GAAG,wCAAwC,2BAA2B;AAAA;AAAA,MAEpE,GAAG;AAAA;AAAA;AAAA,MAIH,SAAS;AAAA,MACT,SAAS;AAAA;AAAA,MAGT,gBAAgB,sCAAsC,OAAO;AAAA,MAC7D,WAAW,iCAAiC,OAAO;AAAA,MACnD,cAAc,oCAAoC,OAAO;AAAA,MACzD,kBAAkB,aAAa,IAAI;AAAA;AAAA,MAGnC,kBAAkB,QAAQ,KAAK;AAAA,MAE/B,yBAAyB,aAAa;AAAA,MACtC,YAAY,4BAA4B,OAAO;AAAA,MAC/C,uBAAuB,uCAAuC,OAAO;AAAA,MACrE,wBAAwB,wCAAwC,OAAO;AAAA,MACvE,iBAAiB,uCAAuC,OAAO;AAAA,MAC/D,iBAAiB,iCAAiC,mBAAmB;AAAA,MACrE,cAAc,8BAA8B,mBAAmB;AAAA,IACjE,CAAC;AAAA,EACH;AACF;AASA,eAAsB,cACpB,sBACA,QACA;AACA,QAAM,gBAAgB,MAAM,OAAO,KAAK,2BAA2B,EAAE,OAEnE,OAAO,SAAS,mBAAmB;AACnC,UAAM,cAAc,MAAM;AAC1B,QAAI,qBAAqB,cAAc,QAAQ,cAAc,GAAG;AAC9D,YAAM,aAAa,MAAM,qBAAqB;AAAA,QAC5C;AAAA,QACA;AAAA,MACF;AAEA,UAAI,YAAY;AACd,eAAO,YAAY,OAAO,UAAsB;AAAA,MAClD;AAAA,IACF;AAEA,WAAO;AAAA,EACT,GAAG,QAAQ,QAAQ,CAAC,CAAC,CAAC;AAEtB,SAAO,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,oBAAoB,GAAG,aAAa,CAAC,CAAC;AAC/D","sourcesContent":["import type { GenericPermissionController } from '@metamask/permission-controller';\nimport {\n endowmentPermissionBuilders,\n buildSnapEndowmentSpecifications,\n buildSnapRestrictedMethodSpecifications,\n} from '@metamask/snaps-rpc-methods';\nimport type { SnapId } from '@metamask/snaps-sdk';\nimport { DEFAULT_ENDOWMENTS } from '@metamask/snaps-utils';\n\nimport type { RootControllerMessenger } from '../controllers';\nimport type { SimulationOptions } from '../options';\nimport type { RunSagaFunction } from '../store';\nimport {\n EXCLUDED_SNAP_ENDOWMENTS,\n EXCLUDED_SNAP_PERMISSIONS,\n} from './constants';\nimport {\n getGetLocaleMethodImplementation,\n getClearSnapStateMethodImplementation,\n getGetSnapStateMethodImplementation,\n getUpdateSnapStateMethodImplementation,\n getShowDialogImplementation,\n getShowInAppNotificationImplementation,\n getShowNativeNotificationImplementation,\n encryptImplementation,\n decryptImplementation,\n getCreateInterfaceImplementation,\n getGetInterfaceImplementation,\n} from './hooks';\n\nexport type PermissionSpecificationsHooks = {\n /**\n * A hook that returns the user's secret recovery phrase.\n *\n * @returns The user's secret recovery phrase.\n */\n getMnemonic: () => Promise<Uint8Array>;\n};\n\nexport type GetPermissionSpecificationsOptions = {\n controllerMessenger: RootControllerMessenger;\n hooks: PermissionSpecificationsHooks;\n runSaga: RunSagaFunction;\n options: SimulationOptions;\n};\n\n/**\n * Get a function which resolves with the specified result.\n *\n * @param result - The result to return.\n * @returns The function implementation.\n */\nexport function resolve(result: unknown) {\n return () => result;\n}\n\n/**\n * Get a function which resolves with the specified result.\n *\n * @param result - The result to return. If not specified, the function will\n * resolve with `undefined`.\n * @returns The function implementation.\n */\nexport function asyncResolve(result?: unknown) {\n return async () => result;\n}\n\n/**\n * Get the permission specifications for the Snap.\n *\n * @param options - The options.\n * @param options.controllerMessenger - The controller messenger.\n * @param options.hooks - The hooks.\n * @param options.runSaga - The function to run a saga outside the usual Redux\n * flow.\n * @param options.options - The simulation options.\n * @returns The permission specifications for the Snap.\n */\nexport function getPermissionSpecifications({\n controllerMessenger,\n hooks,\n runSaga,\n options,\n}: GetPermissionSpecificationsOptions) {\n return {\n ...buildSnapEndowmentSpecifications(EXCLUDED_SNAP_ENDOWMENTS),\n ...buildSnapRestrictedMethodSpecifications(EXCLUDED_SNAP_PERMISSIONS, {\n // Shared hooks.\n ...hooks,\n\n // Encryption and decryption hooks.\n // TODO: Swap these out for the real implementations.\n encrypt: encryptImplementation,\n decrypt: decryptImplementation,\n\n // Snaps-specific hooks.\n clearSnapState: getClearSnapStateMethodImplementation(runSaga),\n getLocale: getGetLocaleMethodImplementation(options),\n getSnapState: getGetSnapStateMethodImplementation(runSaga),\n getUnlockPromise: asyncResolve(true),\n\n // TODO: Allow the user to specify the result of this function.\n isOnPhishingList: resolve(false),\n\n maybeUpdatePhishingList: asyncResolve(),\n showDialog: getShowDialogImplementation(runSaga),\n showInAppNotification: getShowInAppNotificationImplementation(runSaga),\n showNativeNotification: getShowNativeNotificationImplementation(runSaga),\n updateSnapState: getUpdateSnapStateMethodImplementation(runSaga),\n createInterface: getCreateInterfaceImplementation(controllerMessenger),\n getInterface: getGetInterfaceImplementation(controllerMessenger),\n }),\n };\n}\n\n/**\n * Get the endowments for the Snap.\n *\n * @param permissionController - The permission controller.\n * @param snapId - The ID of the Snap.\n * @returns The endowments for the Snap.\n */\nexport async function getEndowments(\n permissionController: GenericPermissionController,\n snapId: SnapId,\n) {\n const allEndowments = await Object.keys(endowmentPermissionBuilders).reduce<\n Promise<string[]>\n >(async (promise, permissionName) => {\n const accumulator = await promise;\n if (permissionController.hasPermission(snapId, permissionName)) {\n const endowments = await permissionController.getEndowments(\n snapId,\n permissionName,\n );\n\n if (endowments) {\n return accumulator.concat(endowments as string[]);\n }\n }\n\n return accumulator;\n }, Promise.resolve([]));\n\n return [...new Set([...DEFAULT_ENDOWMENTS, ...allEndowments])];\n}\n"]}
@@ -0,0 +1,48 @@
1
+ // src/internals/simulation/store/state.ts
2
+ import { createSelector, createSlice } from "@reduxjs/toolkit";
3
+ var INITIAL_STATE = {
4
+ encrypted: null,
5
+ unencrypted: null
6
+ };
7
+ var stateSlice = createSlice({
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 createSelector(
32
+ (state) => state,
33
+ ({ state }) => {
34
+ if (encrypted) {
35
+ return state.encrypted;
36
+ }
37
+ return state.unencrypted;
38
+ }
39
+ );
40
+ }
41
+
42
+ export {
43
+ stateSlice,
44
+ setState,
45
+ clearState,
46
+ getState
47
+ };
48
+ //# sourceMappingURL=chunk-VXQOXWRO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals/simulation/store/state.ts"],"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"],"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;","names":[]}
@@ -0,0 +1,22 @@
1
+ // src/internals/simulation/methods/hooks/encryption.ts
2
+ function encryptImplementation(password, value) {
3
+ return JSON.stringify({
4
+ password,
5
+ value
6
+ });
7
+ }
8
+ function decryptImplementation(password, value) {
9
+ const decryptedValue = JSON.parse(value);
10
+ if (decryptedValue.password !== password) {
11
+ throw new Error(
12
+ "Incorrect password. This is a bug in `@metamask/snaps-jest`, please report it."
13
+ );
14
+ }
15
+ return decryptedValue.value;
16
+ }
17
+
18
+ export {
19
+ encryptImplementation,
20
+ decryptImplementation
21
+ };
22
+ //# sourceMappingURL=chunk-VYKYQSUI.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals/simulation/methods/hooks/encryption.ts"],"sourcesContent":["import type { Json } from '@metamask/utils';\n\n/**\n * Mocks encrypting a value using a password. This is not a real encryption\n * method, but rather is used to simulate encryption in the tests.\n *\n * Ideally we would use a real encryption method, such as\n * `@metamask/browser-passworder`, but it doesn't seem to work with Node.js 18\n * without some mocking. We can switch to a real encryption method once we\n * drop support for Node.js 18.\n *\n * @param password - The password to use.\n * @param value - The value to encrypt.\n * @returns The \"encrypted\" value.\n */\nexport function encryptImplementation(password: string, value: Json) {\n return JSON.stringify({\n password,\n value,\n });\n}\n\n/**\n * Mocks decrypting a value using a password. This is not a real encryption\n * method, but rather is used to simulate encryption in the tests.\n *\n * Ideally we would use a real decryption method, such as\n * `@metamask/browser-passworder`, but it doesn't seem to work with Node.js 18\n * without some mocking. We can switch to a real encryption method once we\n * drop support for Node.js 18.\n *\n * @param password - The password to use.\n * @param value - The value to decrypt.\n * @returns The \"decrypted\" value.\n */\nexport function decryptImplementation(password: string, value: string) {\n const decryptedValue = JSON.parse(value);\n if (decryptedValue.password !== password) {\n throw new Error(\n 'Incorrect password. This is a bug in `@metamask/snaps-jest`, please report it.',\n );\n }\n\n return decryptedValue.value;\n}\n"],"mappings":";AAeO,SAAS,sBAAsB,UAAkB,OAAa;AACnE,SAAO,KAAK,UAAU;AAAA,IACpB;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAeO,SAAS,sBAAsB,UAAkB,OAAe;AACrE,QAAM,iBAAiB,KAAK,MAAM,KAAK;AACvC,MAAI,eAAe,aAAa,UAAU;AACxC,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO,eAAe;AACxB;","names":[]}
@@ -0,0 +1,8 @@
1
+ // src/internals/logger.ts
2
+ import { createProjectLogger } from "@metamask/utils";
3
+ var rootLogger = createProjectLogger("snaps-jest");
4
+
5
+ export {
6
+ rootLogger
7
+ };
8
+ //# sourceMappingURL=chunk-WEI35OIM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals/logger.ts"],"sourcesContent":["import { createProjectLogger } from '@metamask/utils';\n\nexport const rootLogger = createProjectLogger('snaps-jest');\n"],"mappings":";AAAA,SAAS,2BAA2B;AAE7B,IAAM,aAAa,oBAAoB,YAAY;","names":[]}
@@ -0,0 +1,76 @@
1
+ import {
2
+ getCurrentInterface,
3
+ resolveInterface,
4
+ setInterface
5
+ } from "./chunk-4VCE3DRR.mjs";
6
+
7
+ // src/internals/simulation/interface.ts
8
+ import { DialogType } from "@metamask/snaps-sdk";
9
+ import { put, select, take } from "redux-saga/effects";
10
+ function getInterfaceResponse(runSaga, type, content) {
11
+ switch (type) {
12
+ case DialogType.Alert:
13
+ return {
14
+ type,
15
+ content,
16
+ ok: resolveWith(runSaga, null)
17
+ };
18
+ case DialogType.Confirmation:
19
+ return {
20
+ type,
21
+ content,
22
+ ok: resolveWith(runSaga, true),
23
+ cancel: resolveWith(runSaga, false)
24
+ };
25
+ case DialogType.Prompt:
26
+ return {
27
+ type,
28
+ content,
29
+ ok: resolveWithInput(runSaga),
30
+ cancel: resolveWith(runSaga, null)
31
+ };
32
+ default:
33
+ throw new Error(`Unknown or unsupported dialog type: "${String(type)}".`);
34
+ }
35
+ }
36
+ function resolveWith(runSaga, value) {
37
+ function* resolveWithSaga() {
38
+ yield put(resolveInterface(value));
39
+ }
40
+ return async () => {
41
+ await runSaga(resolveWithSaga).toPromise();
42
+ };
43
+ }
44
+ function resolveWithInput(runSaga) {
45
+ function* resolveWithSaga(value) {
46
+ yield put(resolveInterface(value));
47
+ }
48
+ return async (value = "") => {
49
+ await runSaga(resolveWithSaga, value).toPromise();
50
+ };
51
+ }
52
+ function* getInterface(runSaga, snapId, controllerMessenger) {
53
+ const currentInterface = yield select(getCurrentInterface);
54
+ if (currentInterface) {
55
+ const { content: content2 } = controllerMessenger.call(
56
+ "SnapInterfaceController:getInterface",
57
+ snapId,
58
+ currentInterface.id
59
+ );
60
+ return getInterfaceResponse(runSaga, currentInterface.type, content2);
61
+ }
62
+ const { payload } = yield take(setInterface.type);
63
+ const { type, id } = payload;
64
+ const { content } = controllerMessenger.call(
65
+ "SnapInterfaceController:getInterface",
66
+ snapId,
67
+ id
68
+ );
69
+ return getInterfaceResponse(runSaga, type, content);
70
+ }
71
+
72
+ export {
73
+ getInterfaceResponse,
74
+ getInterface
75
+ };
76
+ //# sourceMappingURL=chunk-WL2GRM5E.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals/simulation/interface.ts"],"sourcesContent":["import type { Component, SnapId } from '@metamask/snaps-sdk';\nimport { DialogType } from '@metamask/snaps-sdk';\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport type { SagaIterator } from 'redux-saga';\nimport { put, select, take } from 'redux-saga/effects';\n\nimport type { SnapInterface } from '../../types';\nimport type { RootControllerMessenger } from './controllers';\nimport type { Interface, RunSagaFunction } from './store';\nimport { getCurrentInterface, resolveInterface, setInterface } from './store';\n\n/**\n * Get a user interface object from a type and content object.\n *\n * @param runSaga - A function to run a saga outside the usual Redux flow.\n * @param type - The type of the interface.\n * @param content - The content to show in the interface.\n * @returns The user interface object.\n */\nexport function getInterfaceResponse(\n runSaga: RunSagaFunction,\n type: DialogType,\n content: Component,\n): SnapInterface {\n switch (type) {\n case DialogType.Alert:\n return {\n type,\n content,\n ok: resolveWith(runSaga, null),\n };\n\n case DialogType.Confirmation:\n return {\n type,\n content,\n\n ok: resolveWith(runSaga, true),\n cancel: resolveWith(runSaga, false),\n };\n\n case DialogType.Prompt:\n return {\n type,\n content,\n\n ok: resolveWithInput(runSaga),\n cancel: resolveWith(runSaga, null),\n };\n\n default:\n throw new Error(`Unknown or unsupported dialog type: \"${String(type)}\".`);\n }\n}\n\n/**\n * Resolve the current user interface with the given value. This returns a\n * function that can be used to resolve the user interface.\n *\n * @param runSaga - A function to run a saga outside the usual Redux flow.\n * @param value - The value to resolve the user interface with.\n * @returns A function that can be used to resolve the user interface.\n */\nfunction resolveWith(runSaga: RunSagaFunction, value: unknown) {\n /**\n * Resolve the current user interface with the given value.\n *\n * @yields Puts the resolve user interface action.\n */\n function* resolveWithSaga(): SagaIterator {\n yield put(resolveInterface(value));\n }\n\n return async () => {\n await runSaga(resolveWithSaga).toPromise();\n };\n}\n\n/**\n * Resolve the current user interface with the provided input. This returns a\n * function that can be used to resolve the user interface.\n *\n * @param runSaga - A function to run a saga outside the usual Redux flow.\n * @returns A function that can be used to resolve the user interface.\n */\nfunction resolveWithInput(runSaga: RunSagaFunction) {\n /**\n * Resolve the current user interface with the given value.\n *\n * @param value - The value to resolve the user interface with.\n * @yields Puts the resolve user interface action.\n */\n function* resolveWithSaga(value: string): SagaIterator {\n yield put(resolveInterface(value));\n }\n\n return async (value = '') => {\n await runSaga(resolveWithSaga, value).toPromise();\n };\n}\n\n/**\n * Get a user interface object from a Snap.\n *\n * @param runSaga - A function to run a saga outside the usual Redux flow.\n * @param snapId - The Snap ID.\n * @param controllerMessenger - The controller messenger used to call actions.\n * @yields Takes the set interface action.\n * @returns The user interface object.\n */\nexport function* getInterface(\n runSaga: RunSagaFunction,\n snapId: SnapId,\n controllerMessenger: RootControllerMessenger,\n): SagaIterator<SnapInterface> {\n const currentInterface: Interface | null = yield select(getCurrentInterface);\n if (currentInterface) {\n const { content } = controllerMessenger.call(\n 'SnapInterfaceController:getInterface',\n snapId,\n currentInterface.id,\n );\n return getInterfaceResponse(runSaga, currentInterface.type, content);\n }\n\n const { payload }: PayloadAction<Interface> = yield take(setInterface.type);\n const { type, id } = payload;\n\n const { content } = controllerMessenger.call(\n 'SnapInterfaceController:getInterface',\n snapId,\n id,\n );\n\n return getInterfaceResponse(runSaga, type, content);\n}\n"],"mappings":";;;;;;;AACA,SAAS,kBAAkB;AAG3B,SAAS,KAAK,QAAQ,YAAY;AAe3B,SAAS,qBACd,SACA,MACA,SACe;AACf,UAAQ,MAAM;AAAA,IACZ,KAAK,WAAW;AACd,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,IAAI,YAAY,SAAS,IAAI;AAAA,MAC/B;AAAA,IAEF,KAAK,WAAW;AACd,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QAEA,IAAI,YAAY,SAAS,IAAI;AAAA,QAC7B,QAAQ,YAAY,SAAS,KAAK;AAAA,MACpC;AAAA,IAEF,KAAK,WAAW;AACd,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QAEA,IAAI,iBAAiB,OAAO;AAAA,QAC5B,QAAQ,YAAY,SAAS,IAAI;AAAA,MACnC;AAAA,IAEF;AACE,YAAM,IAAI,MAAM,wCAAwC,OAAO,IAAI,CAAC,IAAI;AAAA,EAC5E;AACF;AAUA,SAAS,YAAY,SAA0B,OAAgB;AAM7D,YAAU,kBAAgC;AACxC,UAAM,IAAI,iBAAiB,KAAK,CAAC;AAAA,EACnC;AAEA,SAAO,YAAY;AACjB,UAAM,QAAQ,eAAe,EAAE,UAAU;AAAA,EAC3C;AACF;AASA,SAAS,iBAAiB,SAA0B;AAOlD,YAAU,gBAAgB,OAA6B;AACrD,UAAM,IAAI,iBAAiB,KAAK,CAAC;AAAA,EACnC;AAEA,SAAO,OAAO,QAAQ,OAAO;AAC3B,UAAM,QAAQ,iBAAiB,KAAK,EAAE,UAAU;AAAA,EAClD;AACF;AAWO,UAAU,aACf,SACA,QACA,qBAC6B;AAC7B,QAAM,mBAAqC,MAAM,OAAO,mBAAmB;AAC3E,MAAI,kBAAkB;AACpB,UAAM,EAAE,SAAAA,SAAQ,IAAI,oBAAoB;AAAA,MACtC;AAAA,MACA;AAAA,MACA,iBAAiB;AAAA,IACnB;AACA,WAAO,qBAAqB,SAAS,iBAAiB,MAAMA,QAAO;AAAA,EACrE;AAEA,QAAM,EAAE,QAAQ,IAA8B,MAAM,KAAK,aAAa,IAAI;AAC1E,QAAM,EAAE,MAAM,GAAG,IAAI;AAErB,QAAM,EAAE,QAAQ,IAAI,oBAAoB;AAAA,IACtC;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO,qBAAqB,SAAS,MAAM,OAAO;AACpD;","names":["content"]}
@@ -0,0 +1,39 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkSWSSV3LKjs = require('./chunk-SWSSV3LK.js');
4
+
5
+
6
+ var _chunk3KQYPQZYjs = require('./chunk-3KQYPQZY.js');
7
+
8
+
9
+ var _chunkCZQKOZLRjs = require('./chunk-CZQKOZLR.js');
10
+
11
+ // src/internals/simulation/middleware/engine.ts
12
+ var _ethjsonrpcmiddleware = require('@metamask/eth-json-rpc-middleware');
13
+ var _jsonrpcengine = require('@metamask/json-rpc-engine');
14
+ var _snapsrpcmethods = require('@metamask/snaps-rpc-methods');
15
+ function createJsonRpcEngine({
16
+ store,
17
+ hooks,
18
+ permissionMiddleware,
19
+ endpoint = _chunkCZQKOZLRjs.DEFAULT_JSON_RPC_ENDPOINT
20
+ }) {
21
+ const engine = new (0, _jsonrpcengine.JsonRpcEngine)();
22
+ engine.push(_chunk3KQYPQZYjs.createMockMiddleware.call(void 0, store));
23
+ engine.push(_chunkSWSSV3LKjs.createInternalMethodsMiddleware.call(void 0, hooks));
24
+ engine.push(_snapsrpcmethods.createSnapsMethodMiddleware.call(void 0, true, hooks));
25
+ engine.push(permissionMiddleware);
26
+ engine.push(
27
+ _ethjsonrpcmiddleware.createFetchMiddleware.call(void 0, {
28
+ btoa: globalThis.btoa,
29
+ fetch: globalThis.fetch,
30
+ rpcUrl: endpoint
31
+ })
32
+ );
33
+ return engine;
34
+ }
35
+
36
+
37
+
38
+ exports.createJsonRpcEngine = createJsonRpcEngine;
39
+ //# sourceMappingURL=chunk-XDZPH5WD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals/simulation/middleware/engine.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,SAAS,6BAA6B;AAEtC,SAAS,qBAAqB;AAE9B,SAAS,mCAAmC;AA6BrC,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AACb,GAA+B;AAC7B,QAAM,SAAS,IAAI,cAAc;AACjC,SAAO,KAAK,qBAAqB,KAAK,CAAC;AACvC,SAAO,KAAK,gCAAgC,KAAK,CAAC;AAClD,SAAO,KAAK,4BAA4B,MAAM,KAAK,CAAC;AACpD,SAAO,KAAK,oBAAoB;AAChC,SAAO;AAAA,IACL,sBAAsB;AAAA,MACpB,MAAM,WAAW;AAAA,MACjB,OAAO,WAAW;AAAA,MAClB,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AAEA,SAAO;AACT","sourcesContent":["import { createFetchMiddleware } from '@metamask/eth-json-rpc-middleware';\nimport type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport { JsonRpcEngine } from '@metamask/json-rpc-engine';\nimport type { RestrictedMethodParameters } from '@metamask/permission-controller';\nimport { createSnapsMethodMiddleware } from '@metamask/snaps-rpc-methods';\nimport type { Json } from '@metamask/utils';\n\nimport { DEFAULT_JSON_RPC_ENDPOINT } from '../constants';\nimport type { MiddlewareHooks } from '../simulation';\nimport type { Store } from '../store';\nimport { createInternalMethodsMiddleware } from './internal-methods';\nimport { createMockMiddleware } from './mock';\n\nexport type CreateJsonRpcEngineOptions = {\n store: Store;\n hooks: MiddlewareHooks;\n permissionMiddleware: JsonRpcMiddleware<RestrictedMethodParameters, Json>;\n endpoint?: string;\n};\n\n/**\n * Create a JSON-RPC engine for use in a simulated environment. This engine\n * should be used to handle all JSON-RPC requests. It is set up to handle\n * requests that would normally be handled internally by the MetaMask client, as\n * well as Snap-specific requests.\n *\n * @param options - The options to use when creating the engine.\n * @param options.store - The Redux store to use.\n * @param options.hooks - Any hooks used by the middleware handlers.\n * @param options.permissionMiddleware - The permission middleware to use.\n * @param options.endpoint - The JSON-RPC endpoint to use for Ethereum requests.\n * @returns A JSON-RPC engine.\n */\nexport function createJsonRpcEngine({\n store,\n hooks,\n permissionMiddleware,\n endpoint = DEFAULT_JSON_RPC_ENDPOINT,\n}: CreateJsonRpcEngineOptions) {\n const engine = new JsonRpcEngine();\n engine.push(createMockMiddleware(store));\n engine.push(createInternalMethodsMiddleware(hooks));\n engine.push(createSnapsMethodMiddleware(true, hooks));\n engine.push(permissionMiddleware);\n engine.push(\n createFetchMiddleware({\n btoa: globalThis.btoa,\n fetch: globalThis.fetch,\n rpcUrl: endpoint,\n }),\n );\n\n return engine;\n}\n"]}
@@ -0,0 +1,13 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/internals/simulation/methods/hooks/get-locale.ts
2
+ function getGetLocaleMethodImplementation({
3
+ locale
4
+ }) {
5
+ return async () => {
6
+ return locale;
7
+ };
8
+ }
9
+
10
+
11
+
12
+ exports.getGetLocaleMethodImplementation = getGetLocaleMethodImplementation;
13
+ //# sourceMappingURL=chunk-Y5NWZU43.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internals/simulation/methods/hooks/get-locale.ts"],"names":[],"mappings":";AASO,SAAS,iCAAiC;AAAA,EAC/C;AACF,GAAsB;AACpB,SAAO,YAAY;AACjB,WAAO;AAAA,EACT;AACF","sourcesContent":["import type { SimulationOptions } from '../../options';\n\n/**\n * Get the implementation of the `getLocale` hook.\n *\n * @param options - The simulation options.\n * @param options.locale - The locale to use.\n * @returns The implementation of the `getLocale` hook.\n */\nexport function getGetLocaleMethodImplementation({\n locale,\n}: SimulationOptions) {\n return async () => {\n return locale;\n };\n}\n"]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-YZFWCFMG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-ZCE26WZM.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,134 @@
1
+ import {
2
+ InterfaceStruct,
3
+ SnapResponseStruct
4
+ } from "./chunk-BN5VBVT3.mjs";
5
+
6
+ // src/matchers.ts
7
+ import { expect } from "@jest/globals";
8
+ import { hasProperty } from "@metamask/utils";
9
+ import {
10
+ diff,
11
+ matcherErrorMessage,
12
+ matcherHint,
13
+ printReceived,
14
+ printWithType,
15
+ RECEIVED_COLOR
16
+ } from "jest-matcher-utils";
17
+ import { is } from "superstruct";
18
+ function assertActualIsSnapResponse(actual, matcherName, options) {
19
+ if (!is(actual, SnapResponseStruct)) {
20
+ throw new Error(
21
+ matcherErrorMessage(
22
+ matcherHint(matcherName, void 0, void 0, options),
23
+ `${RECEIVED_COLOR(
24
+ "received"
25
+ )} value must be a response from the \`request\` function`,
26
+ printWithType("Received", actual, printReceived)
27
+ )
28
+ );
29
+ }
30
+ }
31
+ function assertHasInterface(actual, matcherName, options) {
32
+ if (!is(actual, InterfaceStruct) || !actual.content) {
33
+ throw new Error(
34
+ matcherErrorMessage(
35
+ matcherHint(matcherName, void 0, void 0, options),
36
+ `${RECEIVED_COLOR("received")} value must have a \`content\` property`,
37
+ printWithType("Received", actual, printReceived)
38
+ )
39
+ );
40
+ }
41
+ }
42
+ var toRespondWith = function(actual, expected) {
43
+ assertActualIsSnapResponse(actual, "toRespondWith");
44
+ const { response } = actual;
45
+ if (hasProperty(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 (hasProperty(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 = diff(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
+ expect.extend({
122
+ toRespondWith,
123
+ toRespondWithError,
124
+ toSendNotification,
125
+ toRender
126
+ });
127
+
128
+ export {
129
+ toRespondWith,
130
+ toRespondWithError,
131
+ toSendNotification,
132
+ toRender
133
+ };
134
+ //# sourceMappingURL=chunk-ZZPKZRJQ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/matchers.ts"],"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"],"mappings":"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","names":["message"]}
@@ -0,0 +1,47 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunk4JUUFDTCjs = require('./chunk-4JUUFDTC.js');
5
+ require('./chunk-2M7WQ26F.js');
6
+ require('./chunk-R7ORBTUD.js');
7
+ require('./chunk-3CC2NI7R.js');
8
+ require('./chunk-4HY4SM3A.js');
9
+ require('./chunk-K2KTKFLP.js');
10
+ require('./chunk-6IMEYERE.js');
11
+ require('./chunk-YZFWCFMG.js');
12
+ require('./chunk-XDZPH5WD.js');
13
+ require('./chunk-3ZW2EE3B.js');
14
+ require('./chunk-SWSSV3LK.js');
15
+ require('./chunk-T4TRX3ZR.js');
16
+ require('./chunk-2KLZ7GOW.js');
17
+ require('./chunk-3KQYPQZY.js');
18
+ require('./chunk-EFB6AQPB.js');
19
+ require('./chunk-KPXLJ6RH.js');
20
+ require('./chunk-MNDF32ZV.js');
21
+ require('./chunk-RQBZLDXL.js');
22
+ require('./chunk-CZQKOZLR.js');
23
+ require('./chunk-KGIWSGTT.js');
24
+ require('./chunk-QMHWGASM.js');
25
+ require('./chunk-VNQIROKZ.js');
26
+ require('./chunk-HP56MLQ3.js');
27
+ require('./chunk-AH7YNG6N.js');
28
+ require('./chunk-Y5NWZU43.js');
29
+ require('./chunk-JDN3VGMO.js');
30
+ require('./chunk-5O6VBW42.js');
31
+ require('./chunk-D36QBJ35.js');
32
+ require('./chunk-3KCEPGJA.js');
33
+ require('./chunk-S3DHQTXB.js');
34
+ require('./chunk-JGQJFYU4.js');
35
+ require('./chunk-JA7RJLI7.js');
36
+ require('./chunk-34GS3AHA.js');
37
+ require('./chunk-ON6M4WG5.js');
38
+ require('./chunk-4WCFXE73.js');
39
+ require('./chunk-O4MJRHZD.js');
40
+ require('./chunk-3O5OISLU.js');
41
+ require('./chunk-7JLVQJK7.js');
42
+ require('./chunk-PHUTP7NB.js');
43
+
44
+
45
+
46
+ exports.SnapsEnvironment = _chunk4JUUFDTCjs.SnapsEnvironment; exports.default = _chunk4JUUFDTCjs.environment_default;
47
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}