@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.
- package/CHANGELOG.md +25 -1
- package/README.md +66 -179
- package/dist/chunk-2KLZ7GOW.js +15 -0
- package/dist/chunk-2KLZ7GOW.js.map +1 -0
- package/dist/chunk-2M7WQ26F.js +28 -0
- package/dist/chunk-2M7WQ26F.js.map +1 -0
- package/dist/chunk-34GS3AHA.js +33 -0
- package/dist/chunk-34GS3AHA.js.map +1 -0
- package/dist/chunk-3CC2NI7R.js +80 -0
- package/dist/chunk-3CC2NI7R.js.map +1 -0
- package/dist/chunk-3IUQA6YL.mjs +1 -0
- package/dist/chunk-3IUQA6YL.mjs.map +1 -0
- package/dist/chunk-3KCEPGJA.js +39 -0
- package/dist/chunk-3KCEPGJA.js.map +1 -0
- package/dist/chunk-3KQYPQZY.js +20 -0
- package/dist/chunk-3KQYPQZY.js.map +1 -0
- package/dist/chunk-3O5OISLU.js +16 -0
- package/dist/chunk-3O5OISLU.js.map +1 -0
- package/dist/chunk-3ZW2EE3B.js +1 -0
- package/dist/chunk-3ZW2EE3B.js.map +1 -0
- package/dist/chunk-4FCRZDOX.js +134 -0
- package/dist/chunk-4FCRZDOX.js.map +1 -0
- package/dist/chunk-4HY4SM3A.js +1 -0
- package/dist/chunk-4HY4SM3A.js.map +1 -0
- package/dist/chunk-4JUUFDTC.js +104 -0
- package/dist/chunk-4JUUFDTC.js.map +1 -0
- package/dist/chunk-4VCE3DRR.mjs +34 -0
- package/dist/chunk-4VCE3DRR.mjs.map +1 -0
- package/dist/chunk-4WCFXE73.js +48 -0
- package/dist/chunk-4WCFXE73.js.map +1 -0
- package/dist/chunk-5IUHGC5S.js +153 -0
- package/dist/chunk-5IUHGC5S.js.map +1 -0
- package/dist/chunk-5O6VBW42.js +42 -0
- package/dist/chunk-5O6VBW42.js.map +1 -0
- package/dist/chunk-6IMEYERE.js +137 -0
- package/dist/chunk-6IMEYERE.js.map +1 -0
- package/dist/chunk-6KNT4UMX.mjs +35 -0
- package/dist/chunk-6KNT4UMX.mjs.map +1 -0
- package/dist/chunk-6RDNSELT.mjs +39 -0
- package/dist/chunk-6RDNSELT.mjs.map +1 -0
- package/dist/chunk-72YN2D26.mjs +60 -0
- package/dist/chunk-72YN2D26.mjs.map +1 -0
- package/dist/chunk-7JLVQJK7.js +14 -0
- package/dist/chunk-7JLVQJK7.js.map +1 -0
- package/dist/chunk-AH7YNG6N.js +22 -0
- package/dist/chunk-AH7YNG6N.js.map +1 -0
- package/dist/chunk-AIZADBRK.mjs +36 -0
- package/dist/chunk-AIZADBRK.mjs.map +1 -0
- package/dist/chunk-AKFRQ5EJ.mjs +42 -0
- package/dist/chunk-AKFRQ5EJ.mjs.map +1 -0
- package/dist/chunk-AUB7XPDH.mjs +28 -0
- package/dist/chunk-AUB7XPDH.mjs.map +1 -0
- package/dist/chunk-BJMTD7H2.mjs +20 -0
- package/dist/chunk-BJMTD7H2.mjs.map +1 -0
- package/dist/chunk-BN5VBVT3.mjs +233 -0
- package/dist/chunk-BN5VBVT3.mjs.map +1 -0
- package/dist/chunk-CKOGTHM4.mjs +22 -0
- package/dist/chunk-CKOGTHM4.mjs.map +1 -0
- package/dist/chunk-CZQKOZLR.js +11 -0
- package/dist/chunk-CZQKOZLR.js.map +1 -0
- package/dist/chunk-D36QBJ35.js +24 -0
- package/dist/chunk-D36QBJ35.js.map +1 -0
- package/dist/chunk-DEFFA5IJ.mjs +24 -0
- package/dist/chunk-DEFFA5IJ.mjs.map +1 -0
- package/dist/chunk-EFB6AQPB.js +36 -0
- package/dist/chunk-EFB6AQPB.js.map +1 -0
- package/dist/chunk-EOCDSPT7.mjs +97 -0
- package/dist/chunk-EOCDSPT7.mjs.map +1 -0
- package/dist/chunk-FPFX5AKR.mjs +36 -0
- package/dist/chunk-FPFX5AKR.mjs.map +1 -0
- package/dist/chunk-HBT34TJ2.mjs +1 -0
- package/dist/chunk-HBT34TJ2.mjs.map +1 -0
- package/dist/chunk-HBVDXIVN.mjs +80 -0
- package/dist/chunk-HBVDXIVN.mjs.map +1 -0
- package/dist/chunk-HMF2CKYT.mjs +39 -0
- package/dist/chunk-HMF2CKYT.mjs.map +1 -0
- package/dist/chunk-HP56MLQ3.js +1 -0
- package/dist/chunk-HP56MLQ3.js.map +1 -0
- package/dist/chunk-I5LVU57H.mjs +69 -0
- package/dist/chunk-I5LVU57H.mjs.map +1 -0
- package/dist/chunk-I7FLOZU7.mjs +1 -0
- package/dist/chunk-I7FLOZU7.mjs.map +1 -0
- package/dist/chunk-J2ID3DS7.mjs +33 -0
- package/dist/chunk-J2ID3DS7.mjs.map +1 -0
- package/dist/chunk-JA7RJLI7.js +34 -0
- package/dist/chunk-JA7RJLI7.js.map +1 -0
- package/dist/chunk-JB2H2XEL.mjs +1 -0
- package/dist/chunk-JB2H2XEL.mjs.map +1 -0
- package/dist/chunk-JDN3VGMO.js +21 -0
- package/dist/chunk-JDN3VGMO.js.map +1 -0
- package/dist/chunk-JGQJFYU4.js +57 -0
- package/dist/chunk-JGQJFYU4.js.map +1 -0
- package/dist/chunk-JJCX335U.mjs +91 -0
- package/dist/chunk-JJCX335U.mjs.map +1 -0
- package/dist/chunk-JMDSN227.mjs +25 -0
- package/dist/chunk-JMDSN227.mjs.map +1 -0
- package/dist/chunk-JXOKRTEH.mjs +11 -0
- package/dist/chunk-JXOKRTEH.mjs.map +1 -0
- package/dist/chunk-JZJWUVD7.mjs +1 -0
- package/dist/chunk-JZJWUVD7.mjs.map +1 -0
- package/dist/chunk-K2KTKFLP.js +76 -0
- package/dist/chunk-K2KTKFLP.js.map +1 -0
- package/dist/chunk-KGIWSGTT.js +91 -0
- package/dist/chunk-KGIWSGTT.js.map +1 -0
- package/dist/chunk-KPXLJ6RH.js +60 -0
- package/dist/chunk-KPXLJ6RH.js.map +1 -0
- package/dist/chunk-LD5PSHHT.mjs +57 -0
- package/dist/chunk-LD5PSHHT.mjs.map +1 -0
- package/dist/chunk-LNNKGOHQ.mjs +16 -0
- package/dist/chunk-LNNKGOHQ.mjs.map +1 -0
- package/dist/chunk-MNDF32ZV.js +8 -0
- package/dist/chunk-MNDF32ZV.js.map +1 -0
- package/dist/chunk-MSQ7Q2VJ.mjs +13 -0
- package/dist/chunk-MSQ7Q2VJ.mjs.map +1 -0
- package/dist/chunk-O3VJYBFN.mjs +15 -0
- package/dist/chunk-O3VJYBFN.mjs.map +1 -0
- package/dist/chunk-O4MJRHZD.js +69 -0
- package/dist/chunk-O4MJRHZD.js.map +1 -0
- package/dist/chunk-OC64PNDU.mjs +21 -0
- package/dist/chunk-OC64PNDU.mjs.map +1 -0
- package/dist/chunk-ON6M4WG5.js +36 -0
- package/dist/chunk-ON6M4WG5.js.map +1 -0
- package/dist/chunk-P7JA42ZC.mjs +153 -0
- package/dist/chunk-P7JA42ZC.mjs.map +1 -0
- package/dist/chunk-PHUTP7NB.js +25 -0
- package/dist/chunk-PHUTP7NB.js.map +1 -0
- package/dist/chunk-QFPRGU5L.mjs +104 -0
- package/dist/chunk-QFPRGU5L.mjs.map +1 -0
- package/dist/chunk-QMHWGASM.js +1 -0
- package/dist/chunk-QMHWGASM.js.map +1 -0
- package/dist/chunk-QNDLJ2W7.js +1 -0
- package/dist/chunk-QNDLJ2W7.js.map +1 -0
- package/dist/chunk-QUUILTDY.mjs +137 -0
- package/dist/chunk-QUUILTDY.mjs.map +1 -0
- package/dist/chunk-R7ORBTUD.js +1 -0
- package/dist/chunk-R7ORBTUD.js.map +1 -0
- package/dist/chunk-RQBZLDXL.js +233 -0
- package/dist/chunk-RQBZLDXL.js.map +1 -0
- package/dist/chunk-S3DHQTXB.js +1 -0
- package/dist/chunk-S3DHQTXB.js.map +1 -0
- package/dist/chunk-SWSSV3LK.js +35 -0
- package/dist/chunk-SWSSV3LK.js.map +1 -0
- package/dist/chunk-T4TRX3ZR.js +22 -0
- package/dist/chunk-T4TRX3ZR.js.map +1 -0
- package/dist/chunk-UXHKMILA.mjs +1 -0
- package/dist/chunk-UXHKMILA.mjs.map +1 -0
- package/dist/chunk-VCXM6FKU.mjs +1 -0
- package/dist/chunk-VCXM6FKU.mjs.map +1 -0
- package/dist/chunk-VHTVUQWR.mjs +14 -0
- package/dist/chunk-VHTVUQWR.mjs.map +1 -0
- package/dist/chunk-VNQIROKZ.js +97 -0
- package/dist/chunk-VNQIROKZ.js.map +1 -0
- package/dist/chunk-VXQOXWRO.mjs +48 -0
- package/dist/chunk-VXQOXWRO.mjs.map +1 -0
- package/dist/chunk-VYKYQSUI.mjs +22 -0
- package/dist/chunk-VYKYQSUI.mjs.map +1 -0
- package/dist/chunk-WEI35OIM.mjs +8 -0
- package/dist/chunk-WEI35OIM.mjs.map +1 -0
- package/dist/chunk-WL2GRM5E.mjs +76 -0
- package/dist/chunk-WL2GRM5E.mjs.map +1 -0
- package/dist/chunk-XDZPH5WD.js +39 -0
- package/dist/chunk-XDZPH5WD.js.map +1 -0
- package/dist/chunk-Y5NWZU43.js +13 -0
- package/dist/chunk-Y5NWZU43.js.map +1 -0
- package/dist/chunk-YZFWCFMG.js +1 -0
- package/dist/chunk-YZFWCFMG.js.map +1 -0
- package/dist/chunk-ZCE26WZM.mjs +1 -0
- package/dist/chunk-ZCE26WZM.mjs.map +1 -0
- package/dist/chunk-ZZPKZRJQ.mjs +134 -0
- package/dist/chunk-ZZPKZRJQ.mjs.map +1 -0
- package/dist/environment.js +47 -0
- package/dist/environment.js.map +1 -0
- package/dist/environment.mjs +47 -0
- package/dist/environment.mjs.map +1 -0
- package/dist/helpers.js +44 -0
- package/dist/helpers.js.map +1 -0
- package/dist/helpers.mjs +44 -0
- package/dist/helpers.mjs.map +1 -0
- package/dist/index.js +54 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +54 -0
- package/dist/index.mjs.map +1 -0
- package/dist/internals/environment.js +8 -0
- package/dist/internals/environment.js.map +1 -0
- package/dist/internals/environment.mjs +8 -0
- package/dist/internals/environment.mjs.map +1 -0
- package/dist/internals/index.js +123 -0
- package/dist/internals/index.js.map +1 -0
- package/dist/internals/index.mjs +123 -0
- package/dist/internals/index.mjs.map +1 -0
- package/dist/internals/logger.js +8 -0
- package/dist/internals/logger.js.map +1 -0
- package/dist/internals/logger.mjs +8 -0
- package/dist/internals/logger.mjs.map +1 -0
- package/dist/internals/request.js +40 -0
- package/dist/internals/request.js.map +1 -0
- package/dist/internals/request.mjs +40 -0
- package/dist/internals/request.mjs.map +1 -0
- package/dist/internals/server.js +9 -0
- package/dist/internals/server.js.map +1 -0
- package/dist/internals/server.mjs +9 -0
- package/dist/internals/server.mjs.map +1 -0
- package/dist/internals/simulation/constants.js +12 -0
- package/dist/internals/simulation/constants.js.map +1 -0
- package/dist/internals/simulation/constants.mjs +12 -0
- package/dist/internals/simulation/constants.mjs.map +1 -0
- package/dist/internals/simulation/controllers.js +26 -0
- package/dist/internals/simulation/controllers.js.map +1 -0
- package/dist/internals/simulation/controllers.mjs +26 -0
- package/dist/internals/simulation/controllers.mjs.map +1 -0
- package/dist/internals/simulation/files.js +8 -0
- package/dist/internals/simulation/files.js.map +1 -0
- package/dist/internals/simulation/files.mjs +8 -0
- package/dist/internals/simulation/files.mjs.map +1 -0
- package/dist/internals/simulation/index.js +90 -0
- package/dist/internals/simulation/index.js.map +1 -0
- package/dist/internals/simulation/index.mjs +90 -0
- package/dist/internals/simulation/index.mjs.map +1 -0
- package/dist/internals/simulation/interface.js +16 -0
- package/dist/internals/simulation/interface.js.map +1 -0
- package/dist/internals/simulation/interface.mjs +16 -0
- package/dist/internals/simulation/interface.mjs.map +1 -0
- package/dist/internals/simulation/methods/constants.js +12 -0
- package/dist/internals/simulation/methods/constants.js.map +1 -0
- package/dist/internals/simulation/methods/constants.mjs +12 -0
- package/dist/internals/simulation/methods/constants.mjs.map +1 -0
- package/dist/internals/simulation/methods/hooks/encryption.js +10 -0
- package/dist/internals/simulation/methods/hooks/encryption.js.map +1 -0
- package/dist/internals/simulation/methods/hooks/encryption.mjs +10 -0
- package/dist/internals/simulation/methods/hooks/encryption.mjs.map +1 -0
- package/dist/internals/simulation/methods/hooks/get-locale.js +8 -0
- package/dist/internals/simulation/methods/hooks/get-locale.js.map +1 -0
- package/dist/internals/simulation/methods/hooks/get-locale.mjs +8 -0
- package/dist/internals/simulation/methods/hooks/get-locale.mjs.map +1 -0
- package/dist/internals/simulation/methods/hooks/index.js +45 -0
- package/dist/internals/simulation/methods/hooks/index.js.map +1 -0
- package/dist/internals/simulation/methods/hooks/index.mjs +45 -0
- package/dist/internals/simulation/methods/hooks/index.mjs.map +1 -0
- package/dist/internals/simulation/methods/hooks/interface.js +10 -0
- package/dist/internals/simulation/methods/hooks/interface.js.map +1 -0
- package/dist/internals/simulation/methods/hooks/interface.mjs +10 -0
- package/dist/internals/simulation/methods/hooks/interface.mjs.map +1 -0
- package/dist/internals/simulation/methods/hooks/notifications.js +16 -0
- package/dist/internals/simulation/methods/hooks/notifications.js.map +1 -0
- package/dist/internals/simulation/methods/hooks/notifications.mjs +16 -0
- package/dist/internals/simulation/methods/hooks/notifications.mjs.map +1 -0
- package/dist/internals/simulation/methods/hooks/show-dialog.js +14 -0
- package/dist/internals/simulation/methods/hooks/show-dialog.js.map +1 -0
- package/dist/internals/simulation/methods/hooks/show-dialog.mjs +14 -0
- package/dist/internals/simulation/methods/hooks/show-dialog.mjs.map +1 -0
- package/dist/internals/simulation/methods/hooks/state.js +18 -0
- package/dist/internals/simulation/methods/hooks/state.js.map +1 -0
- package/dist/internals/simulation/methods/hooks/state.mjs +18 -0
- package/dist/internals/simulation/methods/hooks/state.mjs.map +1 -0
- package/dist/internals/simulation/methods/index.js +29 -0
- package/dist/internals/simulation/methods/index.js.map +1 -0
- package/dist/internals/simulation/methods/index.mjs +29 -0
- package/dist/internals/simulation/methods/index.mjs.map +1 -0
- package/dist/internals/simulation/methods/specifications.js +28 -0
- package/dist/internals/simulation/methods/specifications.js.map +1 -0
- package/dist/internals/simulation/methods/specifications.mjs +28 -0
- package/dist/internals/simulation/methods/specifications.mjs.map +1 -0
- package/dist/internals/simulation/middleware/engine.js +15 -0
- package/dist/internals/simulation/middleware/engine.js.map +1 -0
- package/dist/internals/simulation/middleware/engine.mjs +15 -0
- package/dist/internals/simulation/middleware/engine.mjs.map +1 -0
- package/dist/internals/simulation/middleware/index.js +16 -0
- package/dist/internals/simulation/middleware/index.js.map +1 -0
- package/dist/internals/simulation/middleware/index.mjs +16 -0
- package/dist/internals/simulation/middleware/index.mjs.map +1 -0
- package/dist/internals/simulation/middleware/internal-methods/accounts.js +8 -0
- package/dist/internals/simulation/middleware/internal-methods/accounts.js.map +1 -0
- package/dist/internals/simulation/middleware/internal-methods/accounts.mjs +8 -0
- package/dist/internals/simulation/middleware/internal-methods/accounts.mjs.map +1 -0
- package/dist/internals/simulation/middleware/internal-methods/index.js +11 -0
- package/dist/internals/simulation/middleware/internal-methods/index.js.map +1 -0
- package/dist/internals/simulation/middleware/internal-methods/index.mjs +11 -0
- package/dist/internals/simulation/middleware/internal-methods/index.mjs.map +1 -0
- package/dist/internals/simulation/middleware/internal-methods/middleware.js +10 -0
- package/dist/internals/simulation/middleware/internal-methods/middleware.js.map +1 -0
- package/dist/internals/simulation/middleware/internal-methods/middleware.mjs +10 -0
- package/dist/internals/simulation/middleware/internal-methods/middleware.mjs.map +1 -0
- package/dist/internals/simulation/middleware/internal-methods/provider-state.js +8 -0
- package/dist/internals/simulation/middleware/internal-methods/provider-state.js.map +1 -0
- package/dist/internals/simulation/middleware/internal-methods/provider-state.mjs +8 -0
- package/dist/internals/simulation/middleware/internal-methods/provider-state.mjs.map +1 -0
- package/dist/internals/simulation/middleware/mock.js +9 -0
- package/dist/internals/simulation/middleware/mock.js.map +1 -0
- package/dist/internals/simulation/middleware/mock.mjs +9 -0
- package/dist/internals/simulation/middleware/mock.mjs.map +1 -0
- package/dist/internals/simulation/options.js +9 -0
- package/dist/internals/simulation/options.js.map +1 -0
- package/dist/internals/simulation/options.mjs +9 -0
- package/dist/internals/simulation/options.mjs.map +1 -0
- package/dist/internals/simulation/simulation.js +39 -0
- package/dist/internals/simulation/simulation.js.map +1 -0
- package/dist/internals/simulation/simulation.mjs +39 -0
- package/dist/internals/simulation/simulation.mjs.map +1 -0
- package/dist/internals/simulation/store/index.js +44 -0
- package/dist/internals/simulation/store/index.js.map +1 -0
- package/dist/internals/simulation/store/index.mjs +44 -0
- package/dist/internals/simulation/store/index.mjs.map +1 -0
- package/dist/internals/simulation/store/mocks.js +16 -0
- package/dist/internals/simulation/store/mocks.js.map +1 -0
- package/dist/internals/simulation/store/mocks.mjs +16 -0
- package/dist/internals/simulation/store/mocks.mjs.map +1 -0
- package/dist/internals/simulation/store/notifications.js +16 -0
- package/dist/internals/simulation/store/notifications.js.map +1 -0
- package/dist/internals/simulation/store/notifications.mjs +16 -0
- package/dist/internals/simulation/store/notifications.mjs.map +1 -0
- package/dist/internals/simulation/store/state.js +14 -0
- package/dist/internals/simulation/store/state.js.map +1 -0
- package/dist/internals/simulation/store/state.mjs +14 -0
- package/dist/internals/simulation/store/state.mjs.map +1 -0
- package/dist/internals/simulation/store/store.js +12 -0
- package/dist/internals/simulation/store/store.js.map +1 -0
- package/dist/internals/simulation/store/store.mjs +12 -0
- package/dist/internals/simulation/store/store.mjs.map +1 -0
- package/dist/internals/simulation/store/ui.js +16 -0
- package/dist/internals/simulation/store/ui.js.map +1 -0
- package/dist/internals/simulation/store/ui.mjs +16 -0
- package/dist/internals/simulation/store/ui.mjs.map +1 -0
- package/dist/internals/structs.js +18 -0
- package/dist/internals/structs.js.map +1 -0
- package/dist/internals/structs.mjs +18 -0
- package/dist/internals/structs.mjs.map +1 -0
- package/dist/matchers.js +50 -0
- package/dist/matchers.js.map +1 -0
- package/dist/matchers.mjs +50 -0
- package/dist/matchers.mjs.map +1 -0
- package/dist/options.js +8 -0
- package/dist/options.js.map +1 -0
- package/dist/options.mjs +8 -0
- package/dist/options.mjs.map +1 -0
- package/dist/setup.js +39 -0
- package/dist/setup.js.map +1 -0
- package/dist/setup.mjs +39 -0
- package/dist/setup.mjs.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/types/environment.d.ts +14 -15
- package/dist/types/helpers.d.ts +64 -3
- package/dist/types/internals/index.d.ts +1 -4
- package/dist/types/internals/request.d.ts +38 -74
- package/dist/types/internals/simulation/constants.d.ts +13 -0
- package/dist/types/internals/simulation/controllers.d.ts +40 -0
- package/dist/types/internals/simulation/files.d.ts +11 -0
- package/dist/types/internals/simulation/index.d.ts +5 -0
- package/dist/types/internals/simulation/interface.d.ts +25 -0
- package/dist/types/internals/simulation/methods/constants.d.ts +10 -0
- package/dist/types/internals/simulation/methods/hooks/encryption.d.ts +29 -0
- package/dist/types/internals/simulation/methods/hooks/get-locale.d.ts +9 -0
- package/dist/types/internals/simulation/methods/hooks/index.d.ts +6 -0
- package/dist/types/internals/simulation/methods/hooks/interface.d.ts +16 -0
- package/dist/types/internals/simulation/methods/hooks/notifications.d.ts +16 -0
- package/dist/types/internals/simulation/methods/hooks/show-dialog.d.ts +9 -0
- package/dist/types/internals/simulation/methods/hooks/state.d.ts +22 -0
- package/dist/types/internals/simulation/methods/index.d.ts +1 -0
- package/dist/types/internals/simulation/methods/specifications.d.ts +56 -0
- package/dist/types/internals/simulation/middleware/engine.d.ts +26 -0
- package/dist/types/internals/simulation/middleware/index.d.ts +1 -0
- package/dist/types/internals/simulation/middleware/internal-methods/accounts.d.ts +18 -0
- package/dist/types/internals/simulation/middleware/internal-methods/index.d.ts +1 -0
- package/dist/types/internals/simulation/middleware/internal-methods/middleware.d.ts +22 -0
- package/dist/types/internals/simulation/middleware/internal-methods/provider-state.d.ts +14 -0
- package/dist/types/internals/simulation/middleware/mock.d.ts +10 -0
- package/dist/types/internals/simulation/options.d.ts +37 -0
- package/dist/types/internals/simulation/simulation.d.ts +98 -0
- package/dist/types/internals/simulation/store/index.d.ts +4 -0
- package/dist/types/internals/simulation/store/mocks.d.ts +35 -0
- package/dist/types/internals/simulation/store/notifications.d.ts +44 -0
- package/dist/types/internals/simulation/store/state.d.ts +55 -0
- package/dist/types/internals/simulation/store/store.d.ts +22 -0
- package/dist/types/internals/simulation/store/ui.d.ts +25 -0
- package/dist/types/internals/structs.d.ts +153 -0
- package/dist/types/options.d.ts +3 -35
- package/dist/types/types.d.ts +88 -41
- package/dist/types/vendor/readable-stream.d.js +1 -0
- package/dist/types/vendor/readable-stream.d.js.map +1 -0
- package/dist/types/vendor/readable-stream.d.mjs +1 -0
- package/dist/types/vendor/readable-stream.d.mjs.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/types.mjs +2 -0
- package/dist/types.mjs.map +1 -0
- package/jest-preset.js +1 -1
- package/package.json +37 -24
- package/dist/cjs/environment.js +0 -205
- package/dist/cjs/environment.js.map +0 -1
- package/dist/cjs/helpers.js +0 -67
- package/dist/cjs/helpers.js.map +0 -1
- package/dist/cjs/index.js +0 -42
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/internals/environment.js +0 -19
- package/dist/cjs/internals/environment.js.map +0 -1
- package/dist/cjs/internals/index.js +0 -28
- package/dist/cjs/internals/index.js.map +0 -1
- package/dist/cjs/internals/interface.js +0 -103
- package/dist/cjs/internals/interface.js.map +0 -1
- package/dist/cjs/internals/logger.js +0 -14
- package/dist/cjs/internals/logger.js.map +0 -1
- package/dist/cjs/internals/network.js +0 -148
- package/dist/cjs/internals/network.js.map +0 -1
- package/dist/cjs/internals/request.js +0 -121
- package/dist/cjs/internals/request.js.map +0 -1
- package/dist/cjs/internals/server.js +0 -75
- package/dist/cjs/internals/server.js.map +0 -1
- package/dist/cjs/internals/structs.js +0 -122
- package/dist/cjs/internals/structs.js.map +0 -1
- package/dist/cjs/internals/types.js +0 -6
- package/dist/cjs/internals/types.js.map +0 -1
- package/dist/cjs/internals/wait-for.js +0 -63
- package/dist/cjs/internals/wait-for.js.map +0 -1
- package/dist/cjs/matchers.js +0 -117
- package/dist/cjs/matchers.js.map +0 -1
- package/dist/cjs/options.js +0 -29
- package/dist/cjs/options.js.map +0 -1
- package/dist/cjs/setup.js +0 -10
- package/dist/cjs/setup.js.map +0 -1
- package/dist/cjs/types.js +0 -6
- package/dist/cjs/types.js.map +0 -1
- package/dist/esm/environment.js +0 -182
- package/dist/esm/environment.js.map +0 -1
- package/dist/esm/helpers.js +0 -82
- package/dist/esm/helpers.js.map +0 -1
- package/dist/esm/index.js +0 -6
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/internals/environment.js +0 -14
- package/dist/esm/internals/environment.js.map +0 -1
- package/dist/esm/internals/index.js +0 -12
- package/dist/esm/internals/index.js.map +0 -1
- package/dist/esm/internals/interface.js +0 -100
- package/dist/esm/internals/interface.js.map +0 -1
- package/dist/esm/internals/logger.js +0 -4
- package/dist/esm/internals/logger.js.map +0 -1
- package/dist/esm/internals/network.js +0 -143
- package/dist/esm/internals/network.js.map +0 -1
- package/dist/esm/internals/request.js +0 -120
- package/dist/esm/internals/request.js.map +0 -1
- package/dist/esm/internals/server.js +0 -68
- package/dist/esm/internals/server.js.map +0 -1
- package/dist/esm/internals/structs.js +0 -98
- package/dist/esm/internals/structs.js.map +0 -1
- package/dist/esm/internals/types.js +0 -3
- package/dist/esm/internals/types.js.map +0 -1
- package/dist/esm/internals/wait-for.js +0 -63
- package/dist/esm/internals/wait-for.js.map +0 -1
- package/dist/esm/matchers.js +0 -108
- package/dist/esm/matchers.js.map +0 -1
- package/dist/esm/options.js +0 -26
- package/dist/esm/options.js.map +0 -1
- package/dist/esm/setup.js +0 -6
- package/dist/esm/setup.js.map +0 -1
- package/dist/esm/types.js +0 -3
- package/dist/esm/types.js.map +0 -1
- package/dist/types/internals/interface.d.ts +0 -25
- package/dist/types/internals/network.d.ts +0 -87
- package/dist/types/internals/types.d.ts +0 -18
- package/dist/types/internals/wait-for.d.ts +0 -38
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var __accessCheck = (obj, member, msg) => {
|
|
2
|
+
if (!member.has(obj))
|
|
3
|
+
throw TypeError("Cannot " + msg);
|
|
4
|
+
};
|
|
5
|
+
var __privateGet = (obj, member, getter) => {
|
|
6
|
+
__accessCheck(obj, member, "read from private field");
|
|
7
|
+
return getter ? getter.call(obj) : member.get(obj);
|
|
8
|
+
};
|
|
9
|
+
var __privateAdd = (obj, member, value) => {
|
|
10
|
+
if (member.has(obj))
|
|
11
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
12
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
13
|
+
};
|
|
14
|
+
var __privateSet = (obj, member, value, setter) => {
|
|
15
|
+
__accessCheck(obj, member, "write to private field");
|
|
16
|
+
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
17
|
+
return value;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
exports.__privateGet = __privateGet; exports.__privateAdd = __privateAdd; exports.__privateSet = __privateSet;
|
|
25
|
+
//# sourceMappingURL=chunk-PHUTP7NB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getOptions
|
|
3
|
+
} from "./chunk-AUB7XPDH.mjs";
|
|
4
|
+
import {
|
|
5
|
+
handleInstallSnap
|
|
6
|
+
} from "./chunk-QUUILTDY.mjs";
|
|
7
|
+
import {
|
|
8
|
+
startServer
|
|
9
|
+
} from "./chunk-72YN2D26.mjs";
|
|
10
|
+
import {
|
|
11
|
+
rootLogger
|
|
12
|
+
} from "./chunk-WEI35OIM.mjs";
|
|
13
|
+
import {
|
|
14
|
+
__privateAdd,
|
|
15
|
+
__privateGet,
|
|
16
|
+
__privateSet
|
|
17
|
+
} from "./chunk-JMDSN227.mjs";
|
|
18
|
+
|
|
19
|
+
// src/environment.ts
|
|
20
|
+
import { assert, createModuleLogger } from "@metamask/utils";
|
|
21
|
+
import NodeEnvironment from "jest-environment-node";
|
|
22
|
+
var log = createModuleLogger(rootLogger, "environment");
|
|
23
|
+
var _options, _server, _instance;
|
|
24
|
+
var SnapsEnvironment = class extends NodeEnvironment {
|
|
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
|
+
__privateAdd(this, _options, void 0);
|
|
34
|
+
__privateAdd(this, _server, void 0);
|
|
35
|
+
__privateAdd(this, _instance, void 0);
|
|
36
|
+
__privateSet(this, _options, getOptions(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 (__privateGet(this, _options).server.enabled) {
|
|
45
|
+
log("Starting server.");
|
|
46
|
+
__privateSet(this, _server, await startServer(__privateGet(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 __privateGet(this, _instance)?.executionService.terminateAllSnaps();
|
|
56
|
+
__privateGet(this, _server)?.close();
|
|
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 __privateGet(this, _instance)?.executionService.terminateAllSnaps();
|
|
75
|
+
__privateSet(this, _instance, await handleInstallSnap(snapId, options));
|
|
76
|
+
return __privateGet(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
|
+
assert(
|
|
88
|
+
__privateGet(this, _server),
|
|
89
|
+
"You must specify a snap ID, because the built-in server is not running."
|
|
90
|
+
);
|
|
91
|
+
const { port } = __privateGet(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
|
+
export {
|
|
101
|
+
SnapsEnvironment,
|
|
102
|
+
environment_default
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=chunk-QFPRGU5L.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/environment.ts"],"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"],"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;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";//# sourceMappingURL=chunk-QMHWGASM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";//# sourceMappingURL=chunk-QNDLJ2W7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createJsonRpcEngine
|
|
3
|
+
} from "./chunk-HMF2CKYT.mjs";
|
|
4
|
+
import {
|
|
5
|
+
getOptions
|
|
6
|
+
} from "./chunk-FPFX5AKR.mjs";
|
|
7
|
+
import {
|
|
8
|
+
getControllers,
|
|
9
|
+
registerSnap
|
|
10
|
+
} from "./chunk-JJCX335U.mjs";
|
|
11
|
+
import {
|
|
12
|
+
getEndowments
|
|
13
|
+
} from "./chunk-EOCDSPT7.mjs";
|
|
14
|
+
import {
|
|
15
|
+
createStore
|
|
16
|
+
} from "./chunk-LD5PSHHT.mjs";
|
|
17
|
+
import {
|
|
18
|
+
getSnapFile
|
|
19
|
+
} from "./chunk-LNNKGOHQ.mjs";
|
|
20
|
+
|
|
21
|
+
// src/internals/simulation/simulation.ts
|
|
22
|
+
import { ControllerMessenger } from "@metamask/base-controller";
|
|
23
|
+
import { createEngineStream } from "@metamask/json-rpc-middleware-stream";
|
|
24
|
+
import { mnemonicPhraseToBytes } from "@metamask/key-tree";
|
|
25
|
+
import {
|
|
26
|
+
fetchSnap,
|
|
27
|
+
detectSnapLocation,
|
|
28
|
+
NodeThreadExecutionService,
|
|
29
|
+
setupMultiplex
|
|
30
|
+
} from "@metamask/snaps-controllers/node";
|
|
31
|
+
import { getEncryptionKey } from "@metamask/snaps-rpc-methods";
|
|
32
|
+
import { logError } from "@metamask/snaps-utils";
|
|
33
|
+
import { pipeline } from "readable-stream";
|
|
34
|
+
async function handleInstallSnap(snapId, {
|
|
35
|
+
executionService,
|
|
36
|
+
executionServiceOptions,
|
|
37
|
+
options: rawOptions = {}
|
|
38
|
+
} = {}) {
|
|
39
|
+
const options = getOptions(rawOptions);
|
|
40
|
+
const location = detectSnapLocation(snapId, {
|
|
41
|
+
allowLocal: true
|
|
42
|
+
});
|
|
43
|
+
const snapFiles = await fetchSnap(snapId, location);
|
|
44
|
+
const password = await getEncryptionKey({
|
|
45
|
+
mnemonicPhrase: mnemonicPhraseToBytes(options.secretRecoveryPhrase),
|
|
46
|
+
snapId
|
|
47
|
+
});
|
|
48
|
+
const { store, runSaga } = createStore(password, options);
|
|
49
|
+
const controllerMessenger = new ControllerMessenger();
|
|
50
|
+
registerActions(controllerMessenger);
|
|
51
|
+
const hooks = getHooks(options, snapFiles, snapId, controllerMessenger);
|
|
52
|
+
const { subjectMetadataController, permissionController } = getControllers({
|
|
53
|
+
controllerMessenger,
|
|
54
|
+
hooks,
|
|
55
|
+
runSaga,
|
|
56
|
+
options
|
|
57
|
+
});
|
|
58
|
+
const engine = createJsonRpcEngine({
|
|
59
|
+
store,
|
|
60
|
+
hooks,
|
|
61
|
+
permissionMiddleware: permissionController.createPermissionMiddleware({
|
|
62
|
+
origin: snapId
|
|
63
|
+
})
|
|
64
|
+
});
|
|
65
|
+
const ExecutionService = executionService ?? NodeThreadExecutionService;
|
|
66
|
+
const service = new ExecutionService({
|
|
67
|
+
...executionServiceOptions,
|
|
68
|
+
messenger: controllerMessenger.getRestricted({
|
|
69
|
+
name: "ExecutionService"
|
|
70
|
+
}),
|
|
71
|
+
setupSnapProvider: (_snapId, rpcStream) => {
|
|
72
|
+
const mux = setupMultiplex(rpcStream, "snapStream");
|
|
73
|
+
const stream = mux.createStream("metamask-provider");
|
|
74
|
+
const providerStream = createEngineStream({ engine });
|
|
75
|
+
pipeline(stream, providerStream, stream, (error) => {
|
|
76
|
+
if (error) {
|
|
77
|
+
logError(`Provider stream failure.`, error);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
await registerSnap(snapId, snapFiles.manifest.result, {
|
|
83
|
+
permissionController,
|
|
84
|
+
subjectMetadataController
|
|
85
|
+
});
|
|
86
|
+
await service.executeSnap({
|
|
87
|
+
snapId,
|
|
88
|
+
sourceCode: snapFiles.sourceCode.toString("utf8"),
|
|
89
|
+
endowments: await getEndowments(permissionController, snapId)
|
|
90
|
+
});
|
|
91
|
+
return {
|
|
92
|
+
snapId,
|
|
93
|
+
store,
|
|
94
|
+
executionService: service,
|
|
95
|
+
controllerMessenger,
|
|
96
|
+
runSaga
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function getHooks(options, snapFiles, snapId, controllerMessenger) {
|
|
100
|
+
return {
|
|
101
|
+
getMnemonic: async () => Promise.resolve(mnemonicPhraseToBytes(options.secretRecoveryPhrase)),
|
|
102
|
+
getSnapFile: async (path, encoding) => await getSnapFile(snapFiles.auxiliaryFiles, path, encoding),
|
|
103
|
+
getIsLocked: () => false,
|
|
104
|
+
createInterface: async (...args) => controllerMessenger.call(
|
|
105
|
+
"SnapInterfaceController:createInterface",
|
|
106
|
+
snapId,
|
|
107
|
+
...args
|
|
108
|
+
),
|
|
109
|
+
updateInterface: async (...args) => controllerMessenger.call(
|
|
110
|
+
"SnapInterfaceController:updateInterface",
|
|
111
|
+
snapId,
|
|
112
|
+
...args
|
|
113
|
+
),
|
|
114
|
+
getInterfaceState: (...args) => controllerMessenger.call(
|
|
115
|
+
"SnapInterfaceController:getInterface",
|
|
116
|
+
snapId,
|
|
117
|
+
...args
|
|
118
|
+
).state
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function registerActions(controllerMessenger) {
|
|
122
|
+
controllerMessenger.registerActionHandler(
|
|
123
|
+
"PhishingController:maybeUpdateState",
|
|
124
|
+
async () => Promise.resolve()
|
|
125
|
+
);
|
|
126
|
+
controllerMessenger.registerActionHandler(
|
|
127
|
+
"PhishingController:testOrigin",
|
|
128
|
+
() => ({ result: false, type: "all" })
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export {
|
|
133
|
+
handleInstallSnap,
|
|
134
|
+
getHooks,
|
|
135
|
+
registerActions
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=chunk-QUUILTDY.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internals/simulation/simulation.ts"],"sourcesContent":["import type {\n ActionConstraint,\n EventConstraint,\n} from '@metamask/base-controller';\nimport { ControllerMessenger } from '@metamask/base-controller';\nimport { createEngineStream } from '@metamask/json-rpc-middleware-stream';\nimport { mnemonicPhraseToBytes } from '@metamask/key-tree';\nimport type { AbstractExecutionService } from '@metamask/snaps-controllers';\nimport {\n fetchSnap,\n detectSnapLocation,\n NodeThreadExecutionService,\n setupMultiplex,\n} from '@metamask/snaps-controllers/node';\nimport { getEncryptionKey } from '@metamask/snaps-rpc-methods';\nimport type {\n SnapId,\n AuxiliaryFileEncoding,\n Component,\n InterfaceState,\n} from '@metamask/snaps-sdk';\nimport type { FetchedSnapFiles } from '@metamask/snaps-utils';\nimport { logError } from '@metamask/snaps-utils';\nimport type { Duplex } from 'readable-stream';\nimport { pipeline } from 'readable-stream';\n\nimport type { RootControllerMessenger } from './controllers';\nimport { getControllers, registerSnap } from './controllers';\nimport { getSnapFile } from './files';\nimport { getEndowments } from './methods';\nimport { createJsonRpcEngine } from './middleware';\nimport type { SimulationOptions, SimulationUserOptions } from './options';\nimport { getOptions } from './options';\nimport type { RunSagaFunction, Store } from './store';\nimport { createStore } from './store';\n\n/**\n * Options for the execution service, without the options that are shared\n * between all execution services.\n *\n * @template Service - The type of the execution service, i.e., the class that\n * creates the execution service.\n */\nexport type ExecutionServiceOptions<\n Service extends new (...args: any[]) => any,\n> = Omit<\n ConstructorParameters<Service>[0],\n keyof ConstructorParameters<typeof AbstractExecutionService<unknown>>[0]\n>;\n\n/**\n * The options for running a Snap in a simulated environment.\n *\n * @property executionService - The execution service to use.\n * @property 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 * @property options - The simulation options.\n * @template Service - The type of the execution service.\n */\nexport type InstallSnapOptions<\n Service extends new (...args: any[]) => InstanceType<\n typeof AbstractExecutionService<unknown>\n >,\n> = ExecutionServiceOptions<Service> extends Record<string, never>\n ? {\n executionService: Service;\n executionServiceOptions?: ExecutionServiceOptions<Service>;\n options?: SimulationUserOptions;\n }\n : {\n executionService: Service;\n executionServiceOptions: ExecutionServiceOptions<Service>;\n options?: SimulationUserOptions;\n };\n\nexport type InstalledSnap = {\n snapId: SnapId;\n store: Store;\n executionService: InstanceType<typeof AbstractExecutionService>;\n controllerMessenger: ControllerMessenger<ActionConstraint, EventConstraint>;\n runSaga: RunSagaFunction;\n};\n\nexport type MiddlewareHooks = {\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 /**\n * A hook that returns the Snap's auxiliary file for the given path.\n *\n * @param path - The path of the auxiliary file to get.\n * @param encoding - The encoding to use when returning the file.\n * @returns The Snap's auxiliary file for the given path.\n */\n getSnapFile: (\n path: string,\n encoding: AuxiliaryFileEncoding,\n ) => Promise<string | null>;\n\n /**\n * A hook that returns whether the client is locked or not.\n *\n * @returns A boolean flag signaling whether the client is locked.\n */\n getIsLocked: () => boolean;\n createInterface: (content: Component) => Promise<string>;\n updateInterface: (id: string, content: Component) => Promise<void>;\n getInterfaceState: (id: string) => InterfaceState;\n};\n\n/**\n * Install a Snap in a simulated environment. This will fetch the Snap files,\n * create a Redux store, set up the controllers and JSON-RPC stack, register the\n * Snap, and run the Snap code in the 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 */\nexport async function handleInstallSnap<\n Service extends new (...args: any[]) => InstanceType<\n typeof AbstractExecutionService\n >,\n>(\n snapId: SnapId,\n {\n executionService,\n executionServiceOptions,\n options: rawOptions = {},\n }: Partial<InstallSnapOptions<Service>> = {},\n): Promise<InstalledSnap> {\n const options = getOptions(rawOptions);\n\n // Fetch Snap files.\n const location = detectSnapLocation(snapId, {\n allowLocal: true,\n });\n\n const snapFiles = await fetchSnap(snapId, location);\n\n // Create Redux store.\n const password = await getEncryptionKey({\n mnemonicPhrase: mnemonicPhraseToBytes(options.secretRecoveryPhrase),\n snapId,\n });\n\n const { store, runSaga } = createStore(password, options);\n\n const controllerMessenger = new ControllerMessenger<any, any>();\n\n registerActions(controllerMessenger);\n\n // Set up controllers and JSON-RPC stack.\n const hooks = getHooks(options, snapFiles, snapId, controllerMessenger);\n\n const { subjectMetadataController, permissionController } = getControllers({\n controllerMessenger,\n hooks,\n runSaga,\n options,\n });\n\n const engine = createJsonRpcEngine({\n store,\n hooks,\n permissionMiddleware: permissionController.createPermissionMiddleware({\n origin: snapId,\n }),\n });\n\n // Create execution service.\n const ExecutionService = executionService ?? NodeThreadExecutionService;\n const service = new ExecutionService({\n ...executionServiceOptions,\n messenger: controllerMessenger.getRestricted({\n name: 'ExecutionService',\n }),\n setupSnapProvider: (_snapId: string, rpcStream: Duplex) => {\n const mux = setupMultiplex(rpcStream, 'snapStream');\n const stream = mux.createStream('metamask-provider');\n const providerStream = createEngineStream({ engine });\n\n // Error function is difficult to test, so we ignore it.\n /* istanbul ignore next 2 */\n pipeline(stream, providerStream, stream, (error: unknown) => {\n if (error) {\n logError(`Provider stream failure.`, error);\n }\n });\n },\n });\n\n // Register the Snap. This sets up the Snap's permissions and subject\n // metadata.\n await registerSnap(snapId, snapFiles.manifest.result, {\n permissionController,\n subjectMetadataController,\n });\n\n // Run the Snap code in the execution service.\n await service.executeSnap({\n snapId,\n sourceCode: snapFiles.sourceCode.toString('utf8'),\n endowments: await getEndowments(permissionController, snapId),\n });\n\n return {\n snapId,\n store,\n executionService: service,\n controllerMessenger,\n runSaga,\n };\n}\n\n/**\n * Get the hooks for the simulation.\n *\n * @param options - The simulation options.\n * @param snapFiles - The Snap files.\n * @param snapId - The Snap ID.\n * @param controllerMessenger - The controller messenger.\n * @returns The hooks for the simulation.\n */\nexport function getHooks(\n options: SimulationOptions,\n snapFiles: FetchedSnapFiles,\n snapId: SnapId,\n controllerMessenger: RootControllerMessenger,\n): MiddlewareHooks {\n return {\n getMnemonic: async () =>\n Promise.resolve(mnemonicPhraseToBytes(options.secretRecoveryPhrase)),\n getSnapFile: async (path: string, encoding: AuxiliaryFileEncoding) =>\n await getSnapFile(snapFiles.auxiliaryFiles, path, encoding),\n getIsLocked: () => false,\n createInterface: async (...args) =>\n controllerMessenger.call(\n 'SnapInterfaceController:createInterface',\n snapId,\n ...args,\n ),\n updateInterface: async (...args) =>\n controllerMessenger.call(\n 'SnapInterfaceController:updateInterface',\n snapId,\n ...args,\n ),\n getInterfaceState: (...args) =>\n controllerMessenger.call(\n 'SnapInterfaceController:getInterface',\n snapId,\n ...args,\n ).state,\n };\n}\n\n/**\n * Register mocked action handlers.\n *\n * @param controllerMessenger - The controller messenger.\n */\nexport function registerActions(controllerMessenger: RootControllerMessenger) {\n controllerMessenger.registerActionHandler(\n 'PhishingController:maybeUpdateState',\n async () => Promise.resolve(),\n );\n\n controllerMessenger.registerActionHandler(\n 'PhishingController:testOrigin',\n () => ({ result: false, type: 'all' }),\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";//# sourceMappingURL=chunk-R7ORBTUD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/internals/structs.ts
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _snapssdk = require('@metamask/snaps-sdk');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _utils = require('@metamask/utils');
|
|
13
|
+
var _crypto = require('crypto');
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
var _superstruct = require('superstruct');
|
|
31
|
+
var BytesLikeStruct = _superstruct.union.call(void 0, [
|
|
32
|
+
_superstruct.bigint.call(void 0, ),
|
|
33
|
+
_superstruct.number.call(void 0, ),
|
|
34
|
+
_superstruct.string.call(void 0, ),
|
|
35
|
+
_superstruct.instance.call(void 0, Uint8Array)
|
|
36
|
+
]);
|
|
37
|
+
var TransactionOptionsStruct = _superstruct.object.call(void 0, {
|
|
38
|
+
/**
|
|
39
|
+
* The CAIP-2 chain ID to send the transaction on. Defaults to `eip155:1`.
|
|
40
|
+
*/
|
|
41
|
+
chainId: _superstruct.defaulted.call(void 0, _superstruct.string.call(void 0, ), "eip155:1"),
|
|
42
|
+
/**
|
|
43
|
+
* The origin to send the transaction from. Defaults to `metamask.io`.
|
|
44
|
+
*/
|
|
45
|
+
origin: _superstruct.defaulted.call(void 0, _superstruct.string.call(void 0, ), "metamask.io"),
|
|
46
|
+
/**
|
|
47
|
+
* The address to send the transaction from. Defaults to a randomly generated
|
|
48
|
+
* address.
|
|
49
|
+
*/
|
|
50
|
+
// TODO: Move this coercer to `@metamask/utils`.
|
|
51
|
+
from: _superstruct.coerce.call(void 0, _utils.StrictHexStruct, _superstruct.optional.call(void 0, BytesLikeStruct), (value) => {
|
|
52
|
+
if (value) {
|
|
53
|
+
return _utils.bytesToHex.call(void 0, _utils.valueToBytes.call(void 0, value));
|
|
54
|
+
}
|
|
55
|
+
return _utils.bytesToHex.call(void 0, _crypto.randomBytes.call(void 0, 20));
|
|
56
|
+
}),
|
|
57
|
+
/**
|
|
58
|
+
* The address to send the transaction to. Defaults to a randomly generated
|
|
59
|
+
* address.
|
|
60
|
+
*/
|
|
61
|
+
// TODO: Move this coercer to `@metamask/utils`.
|
|
62
|
+
to: _superstruct.coerce.call(void 0, _utils.StrictHexStruct, _superstruct.optional.call(void 0, BytesLikeStruct), (value) => {
|
|
63
|
+
if (value) {
|
|
64
|
+
return _utils.bytesToHex.call(void 0, _utils.valueToBytes.call(void 0, value));
|
|
65
|
+
}
|
|
66
|
+
return _utils.bytesToHex.call(void 0, _crypto.randomBytes.call(void 0, 20));
|
|
67
|
+
}),
|
|
68
|
+
/**
|
|
69
|
+
* The value to send with the transaction. The value may be specified as a
|
|
70
|
+
* `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `0`.
|
|
71
|
+
*/
|
|
72
|
+
value: _superstruct.defaulted.call(void 0,
|
|
73
|
+
_superstruct.coerce.call(void 0,
|
|
74
|
+
_utils.StrictHexStruct,
|
|
75
|
+
BytesLikeStruct,
|
|
76
|
+
(value) => _utils.bytesToHex.call(void 0, _utils.valueToBytes.call(void 0, value))
|
|
77
|
+
),
|
|
78
|
+
"0x0"
|
|
79
|
+
),
|
|
80
|
+
/**
|
|
81
|
+
* The gas limit to use for the transaction. The gas limit may be specified
|
|
82
|
+
* as a `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `21_000`.
|
|
83
|
+
*/
|
|
84
|
+
gasLimit: _superstruct.defaulted.call(void 0,
|
|
85
|
+
_superstruct.coerce.call(void 0,
|
|
86
|
+
_utils.StrictHexStruct,
|
|
87
|
+
BytesLikeStruct,
|
|
88
|
+
(value) => _utils.bytesToHex.call(void 0, _utils.valueToBytes.call(void 0, value))
|
|
89
|
+
),
|
|
90
|
+
_utils.valueToBytes.call(void 0, 21e3)
|
|
91
|
+
),
|
|
92
|
+
/**
|
|
93
|
+
* The max fee per gas (in Wei) to use for the transaction. The max fee per
|
|
94
|
+
* gas may be specified as a `number`, `bigint`, `string`, or `Uint8Array`.
|
|
95
|
+
* Defaults to `1`.
|
|
96
|
+
*/
|
|
97
|
+
maxFeePerGas: _superstruct.defaulted.call(void 0,
|
|
98
|
+
_superstruct.coerce.call(void 0,
|
|
99
|
+
_utils.StrictHexStruct,
|
|
100
|
+
BytesLikeStruct,
|
|
101
|
+
(value) => _utils.bytesToHex.call(void 0, _utils.valueToBytes.call(void 0, value))
|
|
102
|
+
),
|
|
103
|
+
_utils.valueToBytes.call(void 0, 1)
|
|
104
|
+
),
|
|
105
|
+
/**
|
|
106
|
+
* The max priority fee per gas (in Wei) to use for the transaction. The max
|
|
107
|
+
* priority fee per gas may be specified as a `number`, `bigint`, `string`,
|
|
108
|
+
* or `Uint8Array`. Defaults to `1`.
|
|
109
|
+
*/
|
|
110
|
+
maxPriorityFeePerGas: _superstruct.defaulted.call(void 0,
|
|
111
|
+
_superstruct.coerce.call(void 0,
|
|
112
|
+
_utils.StrictHexStruct,
|
|
113
|
+
BytesLikeStruct,
|
|
114
|
+
(value) => _utils.bytesToHex.call(void 0, _utils.valueToBytes.call(void 0, value))
|
|
115
|
+
),
|
|
116
|
+
_utils.valueToBytes.call(void 0, 1)
|
|
117
|
+
),
|
|
118
|
+
/**
|
|
119
|
+
* The nonce to use for the transaction. The nonce may be specified as a
|
|
120
|
+
* `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `0`.
|
|
121
|
+
*/
|
|
122
|
+
nonce: _superstruct.defaulted.call(void 0,
|
|
123
|
+
_superstruct.coerce.call(void 0,
|
|
124
|
+
_utils.StrictHexStruct,
|
|
125
|
+
BytesLikeStruct,
|
|
126
|
+
(value) => _utils.bytesToHex.call(void 0, _utils.valueToBytes.call(void 0, value))
|
|
127
|
+
),
|
|
128
|
+
_utils.valueToBytes.call(void 0, 0)
|
|
129
|
+
),
|
|
130
|
+
/**
|
|
131
|
+
* The data to send with the transaction. The data may be specified as a
|
|
132
|
+
* `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `0x`.
|
|
133
|
+
*/
|
|
134
|
+
data: _superstruct.defaulted.call(void 0,
|
|
135
|
+
_superstruct.coerce.call(void 0,
|
|
136
|
+
_superstruct.union.call(void 0, [_utils.StrictHexStruct, _superstruct.literal.call(void 0, "0x")]),
|
|
137
|
+
BytesLikeStruct,
|
|
138
|
+
(value) => _utils.bytesToHex.call(void 0, _utils.valueToBytes.call(void 0, value))
|
|
139
|
+
),
|
|
140
|
+
"0x"
|
|
141
|
+
)
|
|
142
|
+
});
|
|
143
|
+
var SignatureOptionsStruct = _superstruct.object.call(void 0, {
|
|
144
|
+
/**
|
|
145
|
+
* The origin making the signature request.
|
|
146
|
+
*/
|
|
147
|
+
origin: _superstruct.defaulted.call(void 0, _superstruct.string.call(void 0, ), "metamask.io"),
|
|
148
|
+
/**
|
|
149
|
+
* The address signing the signature request. Defaults to a randomly generated
|
|
150
|
+
* address.
|
|
151
|
+
*/
|
|
152
|
+
from: _superstruct.coerce.call(void 0, _utils.StrictHexStruct, _superstruct.optional.call(void 0, BytesLikeStruct), (value) => {
|
|
153
|
+
if (value) {
|
|
154
|
+
return _utils.bytesToHex.call(void 0, _utils.valueToBytes.call(void 0, value));
|
|
155
|
+
}
|
|
156
|
+
return _utils.bytesToHex.call(void 0, _crypto.randomBytes.call(void 0, 20));
|
|
157
|
+
}),
|
|
158
|
+
/**
|
|
159
|
+
* The data to send with the transaction. The data may be specified as a
|
|
160
|
+
* `string`, an object, or an array of objects. This covers the data types
|
|
161
|
+
* for the supported signature methods. Defaults to `0x`.
|
|
162
|
+
*/
|
|
163
|
+
data: _superstruct.defaulted.call(void 0,
|
|
164
|
+
_superstruct.union.call(void 0, [
|
|
165
|
+
_utils.StrictHexStruct,
|
|
166
|
+
_superstruct.literal.call(void 0, "0x"),
|
|
167
|
+
_superstruct.record.call(void 0, _superstruct.string.call(void 0, ), _superstruct.any.call(void 0, )),
|
|
168
|
+
_superstruct.array.call(void 0, _superstruct.record.call(void 0, _superstruct.string.call(void 0, ), _superstruct.any.call(void 0, )))
|
|
169
|
+
]),
|
|
170
|
+
"0x"
|
|
171
|
+
),
|
|
172
|
+
/**
|
|
173
|
+
* The signature method being used.
|
|
174
|
+
*/
|
|
175
|
+
signatureMethod: _superstruct.defaulted.call(void 0,
|
|
176
|
+
_superstruct.union.call(void 0, [
|
|
177
|
+
_superstruct.literal.call(void 0, "eth_sign"),
|
|
178
|
+
_superstruct.literal.call(void 0, "personal_sign"),
|
|
179
|
+
_superstruct.literal.call(void 0, "eth_signTypedData"),
|
|
180
|
+
_superstruct.literal.call(void 0, "eth_signTypedData_v3"),
|
|
181
|
+
_superstruct.literal.call(void 0, "eth_signTypedData_v4")
|
|
182
|
+
]),
|
|
183
|
+
"personal_sign"
|
|
184
|
+
)
|
|
185
|
+
});
|
|
186
|
+
var SnapOptionsStruct = _superstruct.object.call(void 0, {
|
|
187
|
+
/**
|
|
188
|
+
* The timeout in milliseconds to use for requests to the snap. Defaults to
|
|
189
|
+
* `1000`.
|
|
190
|
+
*/
|
|
191
|
+
timeout: _superstruct.defaulted.call(void 0, _superstruct.optional.call(void 0, _superstruct.number.call(void 0, )), 1e3)
|
|
192
|
+
});
|
|
193
|
+
var JsonRpcMockOptionsStruct = _superstruct.object.call(void 0, {
|
|
194
|
+
method: _superstruct.string.call(void 0, ),
|
|
195
|
+
result: _utils.JsonStruct
|
|
196
|
+
});
|
|
197
|
+
var InterfaceStruct = _superstruct.type.call(void 0, {
|
|
198
|
+
content: _superstruct.optional.call(void 0, _snapssdk.ComponentStruct)
|
|
199
|
+
});
|
|
200
|
+
var SnapResponseStruct = _superstruct.assign.call(void 0,
|
|
201
|
+
InterfaceStruct,
|
|
202
|
+
_superstruct.object.call(void 0, {
|
|
203
|
+
id: _superstruct.string.call(void 0, ),
|
|
204
|
+
response: _superstruct.union.call(void 0, [
|
|
205
|
+
_superstruct.object.call(void 0, {
|
|
206
|
+
result: _utils.JsonStruct
|
|
207
|
+
}),
|
|
208
|
+
_superstruct.object.call(void 0, {
|
|
209
|
+
error: _utils.JsonStruct
|
|
210
|
+
})
|
|
211
|
+
]),
|
|
212
|
+
notifications: _superstruct.array.call(void 0,
|
|
213
|
+
_superstruct.object.call(void 0, {
|
|
214
|
+
id: _superstruct.string.call(void 0, ),
|
|
215
|
+
message: _superstruct.string.call(void 0, ),
|
|
216
|
+
type: _superstruct.union.call(void 0, [
|
|
217
|
+
_snapssdk.enumValue.call(void 0, _snapssdk.NotificationType.InApp),
|
|
218
|
+
_snapssdk.enumValue.call(void 0, _snapssdk.NotificationType.Native)
|
|
219
|
+
])
|
|
220
|
+
})
|
|
221
|
+
)
|
|
222
|
+
})
|
|
223
|
+
);
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
exports.TransactionOptionsStruct = TransactionOptionsStruct; exports.SignatureOptionsStruct = SignatureOptionsStruct; exports.SnapOptionsStruct = SnapOptionsStruct; exports.JsonRpcMockOptionsStruct = JsonRpcMockOptionsStruct; exports.InterfaceStruct = InterfaceStruct; exports.SnapResponseStruct = SnapResponseStruct;
|
|
233
|
+
//# sourceMappingURL=chunk-RQBZLDXL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internals/structs.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n NotificationType,\n ComponentStruct,\n enumValue,\n} from '@metamask/snaps-sdk';\nimport {\n bytesToHex,\n JsonStruct,\n StrictHexStruct,\n valueToBytes,\n} from '@metamask/utils';\nimport { randomBytes } from 'crypto';\nimport {\n array,\n assign,\n bigint,\n coerce,\n defaulted,\n instance,\n literal,\n number,\n object,\n optional,\n string,\n type,\n union,\n record,\n any,\n} from 'superstruct';\n\n// TODO: Export this from `@metamask/utils` instead.\nconst BytesLikeStruct = union([\n bigint(),\n number(),\n string(),\n instance(Uint8Array),\n]);\n\nexport const TransactionOptionsStruct = object({\n /**\n * The CAIP-2 chain ID to send the transaction on. Defaults to `eip155:1`.\n */\n chainId: defaulted(string(), 'eip155:1'),\n\n /**\n * The origin to send the transaction from. Defaults to `metamask.io`.\n */\n origin: defaulted(string(), 'metamask.io'),\n\n /**\n * The address to send the transaction from. Defaults to a randomly generated\n * address.\n */\n // TODO: Move this coercer to `@metamask/utils`.\n from: coerce(StrictHexStruct, optional(BytesLikeStruct), (value) => {\n if (value) {\n return bytesToHex(valueToBytes(value));\n }\n\n return bytesToHex(randomBytes(20));\n }),\n\n /**\n * The address to send the transaction to. Defaults to a randomly generated\n * address.\n */\n // TODO: Move this coercer to `@metamask/utils`.\n to: coerce(StrictHexStruct, optional(BytesLikeStruct), (value) => {\n if (value) {\n return bytesToHex(valueToBytes(value));\n }\n\n return bytesToHex(randomBytes(20));\n }),\n\n /**\n * The value to send with the transaction. The value may be specified as a\n * `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `0`.\n */\n value: defaulted(\n coerce(StrictHexStruct, BytesLikeStruct, (value) =>\n bytesToHex(valueToBytes(value)),\n ),\n '0x0',\n ),\n\n /**\n * The gas limit to use for the transaction. The gas limit may be specified\n * as a `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `21_000`.\n */\n gasLimit: defaulted(\n coerce(StrictHexStruct, BytesLikeStruct, (value) =>\n bytesToHex(valueToBytes(value)),\n ),\n valueToBytes(21_000),\n ),\n\n /**\n * The max fee per gas (in Wei) to use for the transaction. The max fee per\n * gas may be specified as a `number`, `bigint`, `string`, or `Uint8Array`.\n * Defaults to `1`.\n */\n maxFeePerGas: defaulted(\n coerce(StrictHexStruct, BytesLikeStruct, (value) =>\n bytesToHex(valueToBytes(value)),\n ),\n valueToBytes(1),\n ),\n\n /**\n * The max priority fee per gas (in Wei) to use for the transaction. The max\n * priority fee per gas may be specified as a `number`, `bigint`, `string`,\n * or `Uint8Array`. Defaults to `1`.\n */\n maxPriorityFeePerGas: defaulted(\n coerce(StrictHexStruct, BytesLikeStruct, (value) =>\n bytesToHex(valueToBytes(value)),\n ),\n valueToBytes(1),\n ),\n\n /**\n * The nonce to use for the transaction. The nonce may be specified as a\n * `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `0`.\n */\n nonce: defaulted(\n coerce(StrictHexStruct, BytesLikeStruct, (value) =>\n bytesToHex(valueToBytes(value)),\n ),\n valueToBytes(0),\n ),\n\n /**\n * The data to send with the transaction. The data may be specified as a\n * `number`, `bigint`, `string`, or `Uint8Array`. Defaults to `0x`.\n */\n data: defaulted(\n coerce(union([StrictHexStruct, literal('0x')]), BytesLikeStruct, (value) =>\n bytesToHex(valueToBytes(value)),\n ),\n '0x',\n ),\n});\n\nexport const SignatureOptionsStruct = object({\n /**\n * The origin making the signature request.\n */\n origin: defaulted(string(), 'metamask.io'),\n\n /**\n * The address signing the signature request. Defaults to a randomly generated\n * address.\n */\n from: coerce(StrictHexStruct, optional(BytesLikeStruct), (value) => {\n if (value) {\n return bytesToHex(valueToBytes(value));\n }\n\n return bytesToHex(randomBytes(20));\n }),\n\n /**\n * The data to send with the transaction. The data may be specified as a\n * `string`, an object, or an array of objects. This covers the data types\n * for the supported signature methods. Defaults to `0x`.\n */\n data: defaulted(\n union([\n StrictHexStruct,\n literal('0x'),\n record(string(), any()),\n array(record(string(), any())),\n ]),\n '0x',\n ),\n\n /**\n * The signature method being used.\n */\n signatureMethod: defaulted(\n union([\n literal('eth_sign'),\n literal('personal_sign'),\n literal('eth_signTypedData'),\n literal('eth_signTypedData_v3'),\n literal('eth_signTypedData_v4'),\n ]),\n 'personal_sign',\n ),\n});\n\nexport const SnapOptionsStruct = object({\n /**\n * The timeout in milliseconds to use for requests to the snap. Defaults to\n * `1000`.\n */\n timeout: defaulted(optional(number()), 1000),\n});\n\nexport const JsonRpcMockOptionsStruct = object({\n method: string(),\n result: JsonStruct,\n});\n\nexport const InterfaceStruct = type({\n content: optional(ComponentStruct),\n});\n\nexport const SnapResponseStruct = assign(\n InterfaceStruct,\n object({\n id: string(),\n\n response: union([\n object({\n result: JsonStruct,\n }),\n object({\n error: JsonStruct,\n }),\n ]),\n\n notifications: array(\n object({\n id: string(),\n message: string(),\n type: union([\n enumValue(NotificationType.InApp),\n enumValue(NotificationType.Native),\n ]),\n }),\n ),\n }),\n);\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";//# sourceMappingURL=chunk-S3DHQTXB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkT4TRX3ZRjs = require('./chunk-T4TRX3ZR.js');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunk2KLZ7GOWjs = require('./chunk-2KLZ7GOW.js');
|
|
7
|
+
|
|
8
|
+
// src/internals/simulation/middleware/internal-methods/middleware.ts
|
|
9
|
+
var _snapsutils = require('@metamask/snaps-utils');
|
|
10
|
+
var methodHandlers = {
|
|
11
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
12
|
+
metamask_getProviderState: _chunk2KLZ7GOWjs.getProviderStateHandler,
|
|
13
|
+
eth_requestAccounts: _chunkT4TRX3ZRjs.getAccountsHandler,
|
|
14
|
+
eth_accounts: _chunkT4TRX3ZRjs.getAccountsHandler
|
|
15
|
+
/* eslint-enable @typescript-eslint/naming-convention */
|
|
16
|
+
};
|
|
17
|
+
function createInternalMethodsMiddleware(hooks) {
|
|
18
|
+
return async function methodMiddleware(request, response, next, end) {
|
|
19
|
+
const handler = methodHandlers[request.method];
|
|
20
|
+
if (handler) {
|
|
21
|
+
try {
|
|
22
|
+
return await handler(request, response, next, end, hooks);
|
|
23
|
+
} catch (error) {
|
|
24
|
+
_snapsutils.logError.call(void 0, error);
|
|
25
|
+
return end(error);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return next();
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
exports.createInternalMethodsMiddleware = createInternalMethodsMiddleware;
|
|
35
|
+
//# sourceMappingURL=chunk-SWSSV3LK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internals/simulation/middleware/internal-methods/middleware.ts"],"names":[],"mappings":";;;;;;;;AACA,SAAS,gBAAgB;AAezB,IAAM,iBAAiB;AAAA;AAAA,EAErB,2BAA2B;AAAA,EAC3B,qBAAqB;AAAA,EACrB,cAAc;AAAA;AAEhB;AAaO,SAAS,gCACd,OACwC;AAGxC,SAAO,eAAe,iBAAiB,SAAS,UAAU,MAAM,KAAK;AACnE,UAAM,UACJ,eAAe,QAAQ,MAAqC;AAC9D,QAAI,SAAS;AACX,UAAI;AAEF,eAAO,MAAM,QAAQ,SAAS,UAAU,MAAM,KAAK,KAAK;AAAA,MAC1D,SAAS,OAAY;AACnB,iBAAS,KAAK;AACd,eAAO,IAAI,KAAK;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK;AAAA,EACd;AACF","sourcesContent":["import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport { logError } from '@metamask/snaps-utils';\nimport type { Json, JsonRpcParams } from '@metamask/utils';\n\nimport { getAccountsHandler } from './accounts';\nimport { getProviderStateHandler } from './provider-state';\n\nexport type InternalMethodsMiddlewareHooks = {\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\nconst methodHandlers = {\n /* eslint-disable @typescript-eslint/naming-convention */\n metamask_getProviderState: getProviderStateHandler,\n eth_requestAccounts: getAccountsHandler,\n eth_accounts: getAccountsHandler,\n /* eslint-enable @typescript-eslint/naming-convention */\n};\n\n/**\n * Create a middleware for handling JSON-RPC methods normally handled internally\n * by the MetaMask client.\n *\n * NOTE: This middleware provides all `hooks` to all handlers and should\n * therefore NOT be used outside of the simulation environment. It is intended\n * for testing purposes only.\n *\n * @param hooks - Any hooks used by the middleware handlers.\n * @returns A middleware function.\n */\nexport function createInternalMethodsMiddleware(\n hooks: InternalMethodsMiddlewareHooks,\n): JsonRpcMiddleware<JsonRpcParams, Json> {\n // This should probably use createAsyncMiddleware.\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async function methodMiddleware(request, response, next, end) {\n const handler =\n methodHandlers[request.method as keyof typeof methodHandlers];\n if (handler) {\n try {\n // Implementations may or may not be async, so we must await them.\n return await handler(request, response, next, end, hooks);\n } catch (error: any) {\n logError(error);\n return end(error);\n }\n }\n\n return next();\n };\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/internals/simulation/middleware/internal-methods/accounts.ts
|
|
2
|
+
var _keytree = require('@metamask/key-tree');
|
|
3
|
+
async function getAccountsHandler(_request, response, _next, end, hooks) {
|
|
4
|
+
const { getMnemonic } = hooks;
|
|
5
|
+
const node = await _keytree.BIP44Node.fromDerivationPath({
|
|
6
|
+
derivationPath: [
|
|
7
|
+
await getMnemonic(),
|
|
8
|
+
`bip32:44'`,
|
|
9
|
+
`bip32:60'`,
|
|
10
|
+
`bip32:0'`,
|
|
11
|
+
`bip32:0`,
|
|
12
|
+
`bip32:0`
|
|
13
|
+
]
|
|
14
|
+
});
|
|
15
|
+
response.result = [node.address];
|
|
16
|
+
return end();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
exports.getAccountsHandler = getAccountsHandler;
|
|
22
|
+
//# sourceMappingURL=chunk-T4TRX3ZR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internals/simulation/middleware/internal-methods/accounts.ts"],"names":[],"mappings":";AAIA,SAAS,iBAAiB;AAuB1B,eAAsB,mBACpB,UACA,UACA,OACA,KACA,OACA;AACA,QAAM,EAAE,YAAY,IAAI;AAExB,QAAM,OAAO,MAAM,UAAU,mBAAmB;AAAA,IAC9C,gBAAgB;AAAA,MACd,MAAM,YAAY;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,CAAC;AAED,WAAS,SAAS,CAAC,KAAK,OAAO;AAC/B,SAAO,IAAI;AACb","sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n JsonRpcEngineNextCallback,\n} from '@metamask/json-rpc-engine';\nimport { BIP44Node } from '@metamask/key-tree';\nimport type {\n Json,\n JsonRpcRequest,\n PendingJsonRpcResponse,\n} from '@metamask/utils';\n\nexport type GetAccountsHandlerHooks = {\n getMnemonic: () => Promise<Uint8Array>;\n};\n\n/**\n * A mock handler for account related methods that always returns the first\n * address for the selected secret recovery phrase.\n *\n * @param _request - Incoming JSON-RPC request. This is ignored for this\n * specific handler.\n * @param response - The outgoing JSON-RPC response, modified to return the\n * result.\n * @param _next - The `json-rpc-engine` middleware next handler.\n * @param end - The `json-rpc-engine` middleware end handler.\n * @param hooks - Any hooks required by this handler.\n */\nexport async function getAccountsHandler(\n _request: JsonRpcRequest,\n response: PendingJsonRpcResponse<Json>,\n _next: JsonRpcEngineNextCallback,\n end: JsonRpcEngineEndCallback,\n hooks: GetAccountsHandlerHooks,\n) {\n const { getMnemonic } = hooks;\n\n const node = await BIP44Node.fromDerivationPath({\n derivationPath: [\n await getMnemonic(),\n `bip32:44'`,\n `bip32:60'`,\n `bip32:0'`,\n `bip32:0`,\n `bip32:0`,\n ],\n });\n\n response.result = [node.address];\n return end();\n}\n"]}
|