@metamask/snaps-utils 6.1.0 → 7.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 +18 -1
- package/dist/array.js +8 -0
- package/dist/array.js.map +1 -0
- package/dist/array.mjs +8 -0
- package/dist/array.mjs.map +1 -0
- package/dist/auxiliary-files.js +12 -0
- package/dist/auxiliary-files.js.map +1 -0
- package/dist/auxiliary-files.mjs +12 -0
- package/dist/auxiliary-files.mjs.map +1 -0
- package/dist/base64.js +13 -0
- package/dist/base64.js.map +1 -0
- package/dist/base64.mjs +13 -0
- package/dist/base64.mjs.map +1 -0
- package/dist/bytes.js +10 -0
- package/dist/bytes.js.map +1 -0
- package/dist/bytes.mjs +10 -0
- package/dist/bytes.mjs.map +1 -0
- package/dist/caveats.js +8 -0
- package/dist/caveats.js.map +1 -0
- package/dist/caveats.mjs +8 -0
- package/dist/caveats.mjs.map +1 -0
- package/dist/checksum.js +13 -0
- package/dist/checksum.js.map +1 -0
- package/dist/checksum.mjs +13 -0
- package/dist/checksum.mjs.map +1 -0
- package/dist/chunk-224S5XKL.js +32 -0
- package/dist/chunk-224S5XKL.js.map +1 -0
- package/dist/chunk-2G4HD42C.mjs +22 -0
- package/dist/chunk-2G4HD42C.mjs.map +1 -0
- package/dist/chunk-2IVFF3AA.mjs +211 -0
- package/dist/chunk-2IVFF3AA.mjs.map +1 -0
- package/dist/chunk-2QS3W66J.js +64 -0
- package/dist/chunk-2QS3W66J.js.map +1 -0
- package/dist/chunk-2XF32FCF.js +1 -0
- package/dist/chunk-2XF32FCF.js.map +1 -0
- package/dist/chunk-32B4YQM7.mjs +103 -0
- package/dist/chunk-32B4YQM7.mjs.map +1 -0
- package/dist/chunk-3SARO5TJ.mjs +18 -0
- package/dist/chunk-3SARO5TJ.mjs.map +1 -0
- package/dist/chunk-3TH3NLQL.js +169 -0
- package/dist/chunk-3TH3NLQL.js.map +1 -0
- package/dist/chunk-3ZSMMNQB.mjs +41 -0
- package/dist/chunk-3ZSMMNQB.mjs.map +1 -0
- package/dist/chunk-43EBXDVP.mjs +30 -0
- package/dist/chunk-43EBXDVP.mjs.map +1 -0
- package/dist/chunk-4GBOSMF7.mjs +33 -0
- package/dist/chunk-4GBOSMF7.mjs.map +1 -0
- package/dist/chunk-4IKNNAVC.mjs +30 -0
- package/dist/chunk-4IKNNAVC.mjs.map +1 -0
- package/dist/chunk-4UMDRHDR.js +95 -0
- package/dist/chunk-4UMDRHDR.js.map +1 -0
- package/dist/chunk-6CTV7VW5.mjs +20 -0
- package/dist/chunk-6CTV7VW5.mjs.map +1 -0
- package/dist/chunk-6H32HLTZ.js +10 -0
- package/dist/chunk-6H32HLTZ.js.map +1 -0
- package/dist/chunk-6WBLB5BX.js +9 -0
- package/dist/chunk-6WBLB5BX.js.map +1 -0
- package/dist/chunk-7H5TGXZ5.js +70 -0
- package/dist/chunk-7H5TGXZ5.js.map +1 -0
- package/dist/chunk-7KKLGQNE.js +38 -0
- package/dist/chunk-7KKLGQNE.js.map +1 -0
- package/dist/chunk-7PNGOFLU.js +22 -0
- package/dist/chunk-7PNGOFLU.js.map +1 -0
- package/dist/chunk-7T3N2ZGQ.mjs +107 -0
- package/dist/chunk-7T3N2ZGQ.mjs.map +1 -0
- package/dist/chunk-7XA5VYYV.mjs +9 -0
- package/dist/chunk-7XA5VYYV.mjs.map +1 -0
- package/dist/chunk-B2DMAQNK.mjs +8 -0
- package/dist/chunk-B2DMAQNK.mjs.map +1 -0
- package/dist/chunk-B3YQVRPE.js +107 -0
- package/dist/chunk-B3YQVRPE.js.map +1 -0
- package/dist/chunk-DK3IYVMP.mjs +1 -0
- package/dist/chunk-DK3IYVMP.mjs.map +1 -0
- package/dist/chunk-DKSB4FMW.mjs +74 -0
- package/dist/chunk-DKSB4FMW.mjs.map +1 -0
- package/dist/chunk-F33RMB76.js +69 -0
- package/dist/chunk-F33RMB76.js.map +1 -0
- package/dist/chunk-FJH6DDEL.mjs +193 -0
- package/dist/chunk-FJH6DDEL.mjs.map +1 -0
- package/dist/chunk-FTY3BOF7.js +9 -0
- package/dist/chunk-FTY3BOF7.js.map +1 -0
- package/dist/chunk-GK4IJQVW.js +409 -0
- package/dist/chunk-GK4IJQVW.js.map +1 -0
- package/dist/chunk-GMC2A3D7.js +211 -0
- package/dist/chunk-GMC2A3D7.js.map +1 -0
- package/dist/chunk-GW5NQXN4.mjs +151 -0
- package/dist/chunk-GW5NQXN4.mjs.map +1 -0
- package/dist/chunk-H34N3OWO.mjs +169 -0
- package/dist/chunk-H34N3OWO.mjs.map +1 -0
- package/dist/chunk-H636DAOG.js +193 -0
- package/dist/chunk-H636DAOG.js.map +1 -0
- package/dist/chunk-HOTDTMNP.mjs +21 -0
- package/dist/chunk-HOTDTMNP.mjs.map +1 -0
- package/dist/chunk-HWFLO7W5.mjs +281 -0
- package/dist/chunk-HWFLO7W5.mjs.map +1 -0
- package/dist/chunk-I3BUOULW.js +18 -0
- package/dist/chunk-I3BUOULW.js.map +1 -0
- package/dist/chunk-IIDK6BRC.mjs +1 -0
- package/dist/chunk-IIDK6BRC.mjs.map +1 -0
- package/dist/chunk-IUNNN6HN.mjs +29 -0
- package/dist/chunk-IUNNN6HN.mjs.map +1 -0
- package/dist/chunk-IWENO6LT.js +20 -0
- package/dist/chunk-IWENO6LT.js.map +1 -0
- package/dist/chunk-JGMGNLZW.mjs +38 -0
- package/dist/chunk-JGMGNLZW.mjs.map +1 -0
- package/dist/chunk-JV7OA3FD.js +1 -0
- package/dist/chunk-JV7OA3FD.js.map +1 -0
- package/dist/chunk-KEXZDQAN.js +50 -0
- package/dist/chunk-KEXZDQAN.js.map +1 -0
- package/dist/chunk-KWQKGJSV.js +152 -0
- package/dist/chunk-KWQKGJSV.js.map +1 -0
- package/dist/chunk-LEFOMYX3.mjs +1 -0
- package/dist/chunk-LEFOMYX3.mjs.map +1 -0
- package/dist/chunk-LHIPBIPS.mjs +32 -0
- package/dist/chunk-LHIPBIPS.mjs.map +1 -0
- package/dist/chunk-LOW2T4MV.mjs +50 -0
- package/dist/chunk-LOW2T4MV.mjs.map +1 -0
- package/dist/chunk-MJABESWH.js +20 -0
- package/dist/chunk-MJABESWH.js.map +1 -0
- package/dist/chunk-MSUZTHYT.js +9 -0
- package/dist/chunk-MSUZTHYT.js.map +1 -0
- package/dist/chunk-MYSBDK36.mjs +1 -0
- package/dist/chunk-MYSBDK36.mjs.map +1 -0
- package/dist/chunk-N52KMB25.mjs +109 -0
- package/dist/chunk-N52KMB25.mjs.map +1 -0
- package/dist/chunk-O3XKEEJV.mjs +249 -0
- package/dist/chunk-O3XKEEJV.mjs.map +1 -0
- package/dist/chunk-O4PW77JW.mjs +1 -0
- package/dist/chunk-O4PW77JW.mjs.map +1 -0
- package/dist/chunk-OQSLMZJN.js +281 -0
- package/dist/chunk-OQSLMZJN.js.map +1 -0
- package/dist/chunk-P5V6S2PA.mjs +69 -0
- package/dist/chunk-P5V6S2PA.mjs.map +1 -0
- package/dist/chunk-PHUTP7NB.js +25 -0
- package/dist/chunk-PHUTP7NB.js.map +1 -0
- package/dist/chunk-Q5T57UNN.js +1 -0
- package/dist/chunk-Q5T57UNN.js.map +1 -0
- package/dist/chunk-Q7FGULTV.js +8 -0
- package/dist/chunk-Q7FGULTV.js.map +1 -0
- package/dist/chunk-QF3LHIJ5.mjs +9 -0
- package/dist/chunk-QF3LHIJ5.mjs.map +1 -0
- package/dist/chunk-QJTAFTW7.js +30 -0
- package/dist/chunk-QJTAFTW7.js.map +1 -0
- package/dist/chunk-QWEXXUTO.mjs +10 -0
- package/dist/chunk-QWEXXUTO.mjs.map +1 -0
- package/dist/chunk-QYFDFOWT.js +41 -0
- package/dist/chunk-QYFDFOWT.js.map +1 -0
- package/dist/chunk-R4BBIGBN.js +18 -0
- package/dist/chunk-R4BBIGBN.js.map +1 -0
- package/dist/chunk-R7UAMO2U.js +21 -0
- package/dist/chunk-R7UAMO2U.js.map +1 -0
- package/dist/chunk-RRPU7M4Y.js +29 -0
- package/dist/chunk-RRPU7M4Y.js.map +1 -0
- package/dist/chunk-RS5HE55U.js +109 -0
- package/dist/chunk-RS5HE55U.js.map +1 -0
- package/dist/chunk-TUAHXE75.mjs +21 -0
- package/dist/chunk-TUAHXE75.mjs.map +1 -0
- package/dist/chunk-TURGGK5F.mjs +59 -0
- package/dist/chunk-TURGGK5F.mjs.map +1 -0
- package/dist/chunk-UGQQ5DJ4.mjs +50 -0
- package/dist/chunk-UGQQ5DJ4.mjs.map +1 -0
- package/dist/chunk-VGWELVCX.mjs +18 -0
- package/dist/chunk-VGWELVCX.mjs.map +1 -0
- package/dist/chunk-VMUXXXJC.js +103 -0
- package/dist/chunk-VMUXXXJC.js.map +1 -0
- package/dist/chunk-WDGBH5CP.js +249 -0
- package/dist/chunk-WDGBH5CP.js.map +1 -0
- package/dist/chunk-WJOAEPZ7.js +30 -0
- package/dist/chunk-WJOAEPZ7.js.map +1 -0
- package/dist/chunk-XC5E26VE.mjs +20 -0
- package/dist/chunk-XC5E26VE.mjs.map +1 -0
- package/dist/chunk-XDEHYKW2.js +1 -0
- package/dist/chunk-XDEHYKW2.js.map +1 -0
- package/dist/chunk-XEY3KVEH.js +21 -0
- package/dist/chunk-XEY3KVEH.js.map +1 -0
- package/dist/chunk-XKXHM3PC.mjs +9 -0
- package/dist/chunk-XKXHM3PC.mjs.map +1 -0
- package/dist/chunk-XRGYWWT7.js +151 -0
- package/dist/chunk-XRGYWWT7.js.map +1 -0
- package/dist/chunk-XWFKTDB3.js +50 -0
- package/dist/chunk-XWFKTDB3.js.map +1 -0
- package/dist/chunk-Y3F7VUZB.mjs +409 -0
- package/dist/chunk-Y3F7VUZB.mjs.map +1 -0
- package/dist/chunk-YF4PGFCO.js +1 -0
- package/dist/chunk-YF4PGFCO.js.map +1 -0
- package/dist/chunk-YLT6CNSL.mjs +64 -0
- package/dist/chunk-YLT6CNSL.mjs.map +1 -0
- package/dist/chunk-Z4J4GUGG.mjs +152 -0
- package/dist/chunk-Z4J4GUGG.mjs.map +1 -0
- package/dist/chunk-ZLFA4R5X.js +56 -0
- package/dist/chunk-ZLFA4R5X.js.map +1 -0
- package/dist/chunk-ZRVOIW3H.js +74 -0
- package/dist/chunk-ZRVOIW3H.js.map +1 -0
- package/dist/chunk-ZVXX2CTH.mjs +95 -0
- package/dist/chunk-ZVXX2CTH.mjs.map +1 -0
- package/dist/chunk-ZXCNX3ZB.mjs +70 -0
- package/dist/chunk-ZXCNX3ZB.mjs.map +1 -0
- package/dist/cronjob.js +20 -0
- package/dist/cronjob.js.map +1 -0
- package/dist/cronjob.mjs +20 -0
- package/dist/cronjob.mjs.map +1 -0
- package/dist/deep-clone.js +8 -0
- package/dist/deep-clone.js.map +1 -0
- package/dist/deep-clone.mjs +8 -0
- package/dist/deep-clone.mjs.map +1 -0
- package/dist/default-endowments.js +8 -0
- package/dist/default-endowments.js.map +1 -0
- package/dist/default-endowments.mjs +8 -0
- package/dist/default-endowments.mjs.map +1 -0
- package/dist/derivation-paths.js +13 -0
- package/dist/derivation-paths.js.map +1 -0
- package/dist/derivation-paths.mjs +13 -0
- package/dist/derivation-paths.mjs.map +1 -0
- package/dist/entropy.js +10 -0
- package/dist/entropy.js.map +1 -0
- package/dist/entropy.mjs +10 -0
- package/dist/entropy.mjs.map +1 -0
- package/dist/errors.js +20 -0
- package/dist/errors.js.map +1 -0
- package/dist/errors.mjs +20 -0
- package/dist/errors.mjs.map +1 -0
- package/dist/eval-worker.js +43 -0
- package/dist/eval-worker.js.map +1 -0
- package/dist/eval-worker.mjs +43 -0
- package/dist/eval-worker.mjs.map +1 -0
- package/dist/eval.js +17 -0
- package/dist/eval.js.map +1 -0
- package/dist/eval.mjs +17 -0
- package/dist/eval.mjs.map +1 -0
- package/dist/fs.js +28 -0
- package/dist/fs.js.map +1 -0
- package/dist/fs.mjs +28 -0
- package/dist/fs.mjs.map +1 -0
- package/dist/handler-types.js +10 -0
- package/dist/handler-types.js.map +1 -0
- package/dist/handler-types.mjs +10 -0
- package/dist/handler-types.mjs.map +1 -0
- package/dist/handlers.js +35 -0
- package/dist/handlers.js.map +1 -0
- package/dist/handlers.mjs +35 -0
- package/dist/handlers.mjs.map +1 -0
- package/dist/icon.js +14 -0
- package/dist/icon.js.map +1 -0
- package/dist/icon.mjs +14 -0
- package/dist/icon.mjs.map +1 -0
- package/dist/iframe.js +8 -0
- package/dist/iframe.js.map +1 -0
- package/dist/iframe.mjs +8 -0
- package/dist/iframe.mjs.map +1 -0
- package/dist/index.executionenv.js +134 -0
- package/dist/index.executionenv.js.map +1 -0
- package/dist/index.executionenv.mjs +134 -0
- package/dist/index.executionenv.mjs.map +1 -0
- package/dist/index.js +378 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +378 -0
- package/dist/index.mjs.map +1 -0
- package/dist/json-rpc.js +18 -0
- package/dist/json-rpc.js.map +1 -0
- package/dist/json-rpc.mjs +18 -0
- package/dist/json-rpc.mjs.map +1 -0
- package/dist/json.js +8 -0
- package/dist/json.js.map +1 -0
- package/dist/json.mjs +8 -0
- package/dist/json.mjs.map +1 -0
- package/dist/localization.js +23 -0
- package/dist/localization.js.map +1 -0
- package/dist/localization.mjs +23 -0
- package/dist/localization.mjs.map +1 -0
- package/dist/logging.js +14 -0
- package/dist/logging.js.map +1 -0
- package/dist/logging.mjs +14 -0
- package/dist/logging.mjs.map +1 -0
- package/dist/manifest/index.js +59 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/manifest/index.mjs +59 -0
- package/dist/manifest/index.mjs.map +1 -0
- package/dist/manifest/manifest.js +42 -0
- package/dist/manifest/manifest.js.map +1 -0
- package/dist/manifest/manifest.mjs +42 -0
- package/dist/manifest/manifest.mjs.map +1 -0
- package/dist/manifest/node.js +85 -0
- package/dist/manifest/node.js.map +1 -0
- package/dist/manifest/node.mjs +85 -0
- package/dist/manifest/node.mjs.map +1 -0
- package/dist/manifest/validation.js +58 -0
- package/dist/manifest/validation.js.map +1 -0
- package/dist/manifest/validation.mjs +58 -0
- package/dist/manifest/validation.mjs.map +1 -0
- package/dist/mock.js +13 -0
- package/dist/mock.js.map +1 -0
- package/dist/mock.mjs +13 -0
- package/dist/mock.mjs.map +1 -0
- package/dist/namespace.js +44 -0
- package/dist/namespace.js.map +1 -0
- package/dist/namespace.mjs +44 -0
- package/dist/namespace.mjs.map +1 -0
- package/dist/node.js +448 -0
- package/dist/node.js.map +1 -0
- package/dist/node.mjs +448 -0
- package/dist/node.mjs.map +1 -0
- package/dist/npm.js +32 -0
- package/dist/npm.js.map +1 -0
- package/dist/npm.mjs +32 -0
- package/dist/npm.mjs.map +1 -0
- package/dist/path.js +8 -0
- package/dist/path.js.map +1 -0
- package/dist/path.mjs +8 -0
- package/dist/path.mjs.map +1 -0
- package/dist/post-process.js +10 -0
- package/dist/post-process.js.map +1 -0
- package/dist/post-process.mjs +10 -0
- package/dist/post-process.mjs.map +1 -0
- package/dist/snaps.js +48 -0
- package/dist/snaps.js.map +1 -0
- package/dist/snaps.mjs +48 -0
- package/dist/snaps.mjs.map +1 -0
- package/dist/strings.js +8 -0
- package/dist/strings.js.map +1 -0
- package/dist/strings.mjs +8 -0
- package/dist/strings.mjs.map +1 -0
- package/dist/structs.js +31 -0
- package/dist/structs.js.map +1 -0
- package/dist/structs.mjs +31 -0
- package/dist/structs.mjs.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/types/bytes.d.ts +1 -1
- package/dist/types/checksum.d.ts +1 -1
- package/dist/types/index.d.ts +1 -6
- package/dist/types/json-rpc.d.ts +1 -1
- package/dist/types/localization.d.ts +1 -1
- package/dist/types/manifest/index.d.ts +0 -1
- package/dist/types/manifest/manifest.d.ts +1 -1
- package/dist/types/manifest/node.d.ts +2 -0
- package/dist/types/manifest/validation.d.ts +5 -5
- package/dist/types/node.d.ts +8 -0
- package/dist/types/structs.d.ts +0 -20
- package/dist/types/ui.d.ts +7 -0
- package/dist/types/virtual-file/index.d.ts +0 -1
- package/dist/types/virtual-file/node.d.ts +2 -0
- package/dist/types.js +28 -0
- package/dist/types.js.map +1 -0
- package/dist/types.mjs +28 -0
- package/dist/types.mjs.map +1 -0
- package/dist/ui.js +12 -0
- package/dist/ui.js.map +1 -0
- package/dist/ui.mjs +12 -0
- package/dist/ui.mjs.map +1 -0
- package/dist/validation.js +24 -0
- package/dist/validation.js.map +1 -0
- package/dist/validation.mjs +24 -0
- package/dist/validation.mjs.map +1 -0
- package/dist/versions.js +12 -0
- package/dist/versions.js.map +1 -0
- package/dist/versions.mjs +12 -0
- package/dist/versions.mjs.map +1 -0
- package/dist/virtual-file/VirtualFile.js +9 -0
- package/dist/virtual-file/VirtualFile.js.map +1 -0
- package/dist/virtual-file/VirtualFile.mjs +9 -0
- package/dist/virtual-file/VirtualFile.mjs.map +1 -0
- package/dist/virtual-file/index.js +10 -0
- package/dist/virtual-file/index.js.map +1 -0
- package/dist/virtual-file/index.mjs +10 -0
- package/dist/virtual-file/index.mjs.map +1 -0
- package/dist/virtual-file/node.js +17 -0
- package/dist/virtual-file/node.js.map +1 -0
- package/dist/virtual-file/node.mjs +17 -0
- package/dist/virtual-file/node.mjs.map +1 -0
- package/dist/virtual-file/toVirtualFile.js +12 -0
- package/dist/virtual-file/toVirtualFile.js.map +1 -0
- package/dist/virtual-file/toVirtualFile.mjs +12 -0
- package/dist/virtual-file/toVirtualFile.mjs.map +1 -0
- package/package.json +23 -38
- package/dist/cjs/array.js +0 -23
- package/dist/cjs/array.js.map +0 -1
- package/dist/cjs/auxiliary-files.js +0 -27
- package/dist/cjs/auxiliary-files.js.map +0 -1
- package/dist/cjs/base64.js +0 -44
- package/dist/cjs/base64.js.map +0 -1
- package/dist/cjs/bytes.js +0 -23
- package/dist/cjs/bytes.js.map +0 -1
- package/dist/cjs/caveats.js +0 -48
- package/dist/cjs/caveats.js.map +0 -1
- package/dist/cjs/checksum.js +0 -43
- package/dist/cjs/checksum.js.map +0 -1
- package/dist/cjs/cronjob.js +0 -77
- package/dist/cjs/cronjob.js.map +0 -1
- package/dist/cjs/deep-clone.js +0 -22
- package/dist/cjs/deep-clone.js.map +0 -1
- package/dist/cjs/default-endowments.js +0 -49
- package/dist/cjs/default-endowments.js.map +0 -1
- package/dist/cjs/derivation-paths.js +0 -300
- package/dist/cjs/derivation-paths.js.map +0 -1
- package/dist/cjs/entropy.js +0 -23
- package/dist/cjs/entropy.js.map +0 -1
- package/dist/cjs/errors.js +0 -221
- package/dist/cjs/errors.js.map +0 -1
- package/dist/cjs/eval-worker.js +0 -44
- package/dist/cjs/eval-worker.js.map +0 -1
- package/dist/cjs/eval.js +0 -77
- package/dist/cjs/eval.js.map +0 -1
- package/dist/cjs/fs.js +0 -126
- package/dist/cjs/fs.js.map +0 -1
- package/dist/cjs/handler-types.js +0 -34
- package/dist/cjs/handler-types.js.map +0 -1
- package/dist/cjs/handlers.js +0 -173
- package/dist/cjs/handlers.js.map +0 -1
- package/dist/cjs/icon.js +0 -66
- package/dist/cjs/icon.js.map +0 -1
- package/dist/cjs/iframe.js +0 -59
- package/dist/cjs/iframe.js.map +0 -1
- package/dist/cjs/index.browser.js +0 -49
- package/dist/cjs/index.browser.js.map +0 -1
- package/dist/cjs/index.executionenv.js +0 -27
- package/dist/cjs/index.executionenv.js.map +0 -1
- package/dist/cjs/index.js +0 -54
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/json-rpc.js +0 -81
- package/dist/cjs/json-rpc.js.map +0 -1
- package/dist/cjs/json.js +0 -16
- package/dist/cjs/json.js.map +0 -1
- package/dist/cjs/localization.js +0 -113
- package/dist/cjs/localization.js.map +0 -1
- package/dist/cjs/logging.js +0 -40
- package/dist/cjs/logging.js.map +0 -1
- package/dist/cjs/manifest/index.browser.js +0 -20
- package/dist/cjs/manifest/index.browser.js.map +0 -1
- package/dist/cjs/manifest/index.js +0 -21
- package/dist/cjs/manifest/index.js.map +0 -1
- package/dist/cjs/manifest/manifest.js +0 -283
- package/dist/cjs/manifest/manifest.js.map +0 -1
- package/dist/cjs/manifest/validation.js +0 -244
- package/dist/cjs/manifest/validation.js.map +0 -1
- package/dist/cjs/mock.js +0 -128
- package/dist/cjs/mock.js.map +0 -1
- package/dist/cjs/namespace.js +0 -136
- package/dist/cjs/namespace.js.map +0 -1
- package/dist/cjs/npm.js +0 -96
- package/dist/cjs/npm.js.map +0 -1
- package/dist/cjs/path.js +0 -21
- package/dist/cjs/path.js.map +0 -1
- package/dist/cjs/post-process.js +0 -328
- package/dist/cjs/post-process.js.map +0 -1
- package/dist/cjs/snaps.js +0 -232
- package/dist/cjs/snaps.js.map +0 -1
- package/dist/cjs/strings.js +0 -21
- package/dist/cjs/strings.js.map +0 -1
- package/dist/cjs/structs.js +0 -210
- package/dist/cjs/structs.js.map +0 -1
- package/dist/cjs/types.js +0 -104
- package/dist/cjs/types.js.map +0 -1
- package/dist/cjs/ui.js +0 -53
- package/dist/cjs/ui.js.map +0 -1
- package/dist/cjs/validation.js +0 -24
- package/dist/cjs/validation.js.map +0 -1
- package/dist/cjs/versions.js +0 -47
- package/dist/cjs/versions.js.map +0 -1
- package/dist/cjs/virtual-file/VirtualFile.js +0 -92
- package/dist/cjs/virtual-file/VirtualFile.js.map +0 -1
- package/dist/cjs/virtual-file/index.browser.js +0 -20
- package/dist/cjs/virtual-file/index.browser.js.map +0 -1
- package/dist/cjs/virtual-file/index.js +0 -21
- package/dist/cjs/virtual-file/index.js.map +0 -1
- package/dist/cjs/virtual-file/toVirtualFile.js +0 -33
- package/dist/cjs/virtual-file/toVirtualFile.js.map +0 -1
- package/dist/esm/array.js +0 -13
- package/dist/esm/array.js.map +0 -1
- package/dist/esm/auxiliary-files.js +0 -23
- package/dist/esm/auxiliary-files.js.map +0 -1
- package/dist/esm/base64.js +0 -36
- package/dist/esm/base64.js.map +0 -1
- package/dist/esm/bytes.js +0 -18
- package/dist/esm/bytes.js.map +0 -1
- package/dist/esm/caveats.js +0 -38
- package/dist/esm/caveats.js.map +0 -1
- package/dist/esm/checksum.js +0 -41
- package/dist/esm/checksum.js.map +0 -1
- package/dist/esm/cronjob.js +0 -59
- package/dist/esm/cronjob.js.map +0 -1
- package/dist/esm/deep-clone.js +0 -7
- package/dist/esm/deep-clone.js.map +0 -1
- package/dist/esm/default-endowments.js +0 -39
- package/dist/esm/default-endowments.js.map +0 -1
- package/dist/esm/derivation-paths.js +0 -287
- package/dist/esm/derivation-paths.js.map +0 -1
- package/dist/esm/entropy.js +0 -6
- package/dist/esm/entropy.js.map +0 -1
- package/dist/esm/errors.js +0 -211
- package/dist/esm/errors.js.map +0 -1
- package/dist/esm/eval-worker.js +0 -40
- package/dist/esm/eval-worker.js.map +0 -1
- package/dist/esm/eval.js +0 -65
- package/dist/esm/eval.js.map +0 -1
- package/dist/esm/fs.js +0 -136
- package/dist/esm/fs.js.map +0 -1
- package/dist/esm/handler-types.js +0 -16
- package/dist/esm/handler-types.js.map +0 -1
- package/dist/esm/handlers.js +0 -119
- package/dist/esm/handlers.js.map +0 -1
- package/dist/esm/icon.js +0 -51
- package/dist/esm/icon.js.map +0 -1
- package/dist/esm/iframe.js +0 -49
- package/dist/esm/iframe.js.map +0 -1
- package/dist/esm/index.browser.js +0 -32
- package/dist/esm/index.browser.js.map +0 -1
- package/dist/esm/index.executionenv.js +0 -10
- package/dist/esm/index.executionenv.js.map +0 -1
- package/dist/esm/index.js +0 -37
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/json-rpc.js +0 -79
- package/dist/esm/json-rpc.js.map +0 -1
- package/dist/esm/json.js +0 -17
- package/dist/esm/json.js.map +0 -1
- package/dist/esm/localization.js +0 -115
- package/dist/esm/localization.js.map +0 -1
- package/dist/esm/logging.js +0 -59
- package/dist/esm/logging.js.map +0 -1
- package/dist/esm/manifest/index.browser.js +0 -3
- package/dist/esm/manifest/index.browser.js.map +0 -1
- package/dist/esm/manifest/index.js +0 -4
- package/dist/esm/manifest/index.js.map +0 -1
- package/dist/esm/manifest/manifest.js +0 -307
- package/dist/esm/manifest/manifest.js.map +0 -1
- package/dist/esm/manifest/validation.js +0 -190
- package/dist/esm/manifest/validation.js.map +0 -1
- package/dist/esm/mock.js +0 -111
- package/dist/esm/mock.js.map +0 -1
- package/dist/esm/namespace.js +0 -113
- package/dist/esm/namespace.js.map +0 -1
- package/dist/esm/npm.js +0 -85
- package/dist/esm/npm.js.map +0 -1
- package/dist/esm/path.js +0 -17
- package/dist/esm/path.js.map +0 -1
- package/dist/esm/post-process.js +0 -333
- package/dist/esm/post-process.js.map +0 -1
- package/dist/esm/snaps.js +0 -217
- package/dist/esm/snaps.js.map +0 -1
- package/dist/esm/strings.js +0 -11
- package/dist/esm/strings.js.map +0 -1
- package/dist/esm/structs.js +0 -295
- package/dist/esm/structs.js.map +0 -1
- package/dist/esm/types.js +0 -78
- package/dist/esm/types.js.map +0 -1
- package/dist/esm/ui.js +0 -50
- package/dist/esm/ui.js.map +0 -1
- package/dist/esm/validation.js +0 -19
- package/dist/esm/validation.js.map +0 -1
- package/dist/esm/versions.js +0 -41
- package/dist/esm/versions.js.map +0 -1
- package/dist/esm/virtual-file/VirtualFile.js +0 -82
- package/dist/esm/virtual-file/VirtualFile.js.map +0 -1
- package/dist/esm/virtual-file/index.browser.js +0 -3
- package/dist/esm/virtual-file/index.browser.js.map +0 -1
- package/dist/esm/virtual-file/index.js +0 -4
- package/dist/esm/virtual-file/index.js.map +0 -1
- package/dist/esm/virtual-file/toVirtualFile.js +0 -26
- package/dist/esm/virtual-file/toVirtualFile.js.map +0 -1
- package/dist/types/index.browser.d.ts +0 -30
- package/dist/types/manifest/index.browser.d.ts +0 -1
- package/dist/types/virtual-file/index.browser.d.ts +0 -1
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _chunkPHUTP7NBjs = require('./chunk-PHUTP7NB.js');
|
|
6
|
+
|
|
7
|
+
// src/errors.ts
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _rpcerrors = require('@metamask/rpc-errors');
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
var _snapssdk = require('@metamask/snaps-sdk');
|
|
19
|
+
var _utils = require('@metamask/utils');
|
|
20
|
+
var SNAP_ERROR_WRAPPER_CODE = -31001;
|
|
21
|
+
var SNAP_ERROR_WRAPPER_MESSAGE = "Wrapped Snap Error";
|
|
22
|
+
var _error, _message, _stack;
|
|
23
|
+
var WrappedSnapError = class extends Error {
|
|
24
|
+
/**
|
|
25
|
+
* Create a new `WrappedSnapError`.
|
|
26
|
+
*
|
|
27
|
+
* @param error - The error to create the `WrappedSnapError` from.
|
|
28
|
+
*/
|
|
29
|
+
constructor(error) {
|
|
30
|
+
const message = _snapssdk.getErrorMessage.call(void 0, error);
|
|
31
|
+
super(message);
|
|
32
|
+
_chunkPHUTP7NBjs.__privateAdd.call(void 0, this, _error, void 0);
|
|
33
|
+
_chunkPHUTP7NBjs.__privateAdd.call(void 0, this, _message, void 0);
|
|
34
|
+
_chunkPHUTP7NBjs.__privateAdd.call(void 0, this, _stack, void 0);
|
|
35
|
+
_chunkPHUTP7NBjs.__privateSet.call(void 0, this, _error, error);
|
|
36
|
+
_chunkPHUTP7NBjs.__privateSet.call(void 0, this, _message, message);
|
|
37
|
+
_chunkPHUTP7NBjs.__privateSet.call(void 0, this, _stack, _snapssdk.getErrorStack.call(void 0, error));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The error name.
|
|
41
|
+
*
|
|
42
|
+
* @returns The error name.
|
|
43
|
+
*/
|
|
44
|
+
get name() {
|
|
45
|
+
return "WrappedSnapError";
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The error message.
|
|
49
|
+
*
|
|
50
|
+
* @returns The error message.
|
|
51
|
+
*/
|
|
52
|
+
get message() {
|
|
53
|
+
return _chunkPHUTP7NBjs.__privateGet.call(void 0, this, _message);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* The error stack.
|
|
57
|
+
*
|
|
58
|
+
* @returns The error stack.
|
|
59
|
+
*/
|
|
60
|
+
get stack() {
|
|
61
|
+
return _chunkPHUTP7NBjs.__privateGet.call(void 0, this, _stack);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Convert the error to a JSON object.
|
|
65
|
+
*
|
|
66
|
+
* @returns The JSON object.
|
|
67
|
+
*/
|
|
68
|
+
toJSON() {
|
|
69
|
+
const cause = isSnapError(_chunkPHUTP7NBjs.__privateGet.call(void 0, this, _error)) ? _chunkPHUTP7NBjs.__privateGet.call(void 0, this, _error).serialize() : _rpcerrors.serializeCause.call(void 0, _chunkPHUTP7NBjs.__privateGet.call(void 0, this, _error));
|
|
70
|
+
return {
|
|
71
|
+
code: SNAP_ERROR_WRAPPER_CODE,
|
|
72
|
+
message: SNAP_ERROR_WRAPPER_MESSAGE,
|
|
73
|
+
data: {
|
|
74
|
+
cause
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Serialize the error to a JSON object. This is called by
|
|
80
|
+
* `@metamask/rpc-errors` when serializing the error.
|
|
81
|
+
*
|
|
82
|
+
* @returns The JSON object.
|
|
83
|
+
*/
|
|
84
|
+
serialize() {
|
|
85
|
+
return this.toJSON();
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
_error = new WeakMap();
|
|
89
|
+
_message = new WeakMap();
|
|
90
|
+
_stack = new WeakMap();
|
|
91
|
+
function isSnapError(error) {
|
|
92
|
+
if (_utils.isObject.call(void 0, error) && "serialize" in error && typeof error.serialize === "function") {
|
|
93
|
+
const serialized = error.serialize();
|
|
94
|
+
return _utils.isJsonRpcError.call(void 0, serialized) && isSerializedSnapError(serialized);
|
|
95
|
+
}
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
function isSerializedSnapError(error) {
|
|
99
|
+
return error.code === _snapssdk.SNAP_ERROR_CODE && error.message === _snapssdk.SNAP_ERROR_MESSAGE;
|
|
100
|
+
}
|
|
101
|
+
function isWrappedSnapError(error) {
|
|
102
|
+
return _utils.isJsonRpcError.call(void 0, error) && error.code === SNAP_ERROR_WRAPPER_CODE && error.message === SNAP_ERROR_WRAPPER_MESSAGE;
|
|
103
|
+
}
|
|
104
|
+
function getJsonRpcError(code, message, stack, data) {
|
|
105
|
+
const error = new (0, _rpcerrors.JsonRpcError)(code, message, data);
|
|
106
|
+
error.stack = stack;
|
|
107
|
+
return error;
|
|
108
|
+
}
|
|
109
|
+
function unwrapError(error) {
|
|
110
|
+
if (isWrappedSnapError(error)) {
|
|
111
|
+
if (_utils.isJsonRpcError.call(void 0, error.data.cause)) {
|
|
112
|
+
if (isSerializedSnapError(error.data.cause)) {
|
|
113
|
+
const { code: code2, message: message2, stack: stack2, data: data2 } = error.data.cause.data.cause;
|
|
114
|
+
return [getJsonRpcError(code2, message2, stack2, data2), true];
|
|
115
|
+
}
|
|
116
|
+
const { code, message, stack, data } = error.data.cause;
|
|
117
|
+
return [getJsonRpcError(code, message, stack, data), false];
|
|
118
|
+
}
|
|
119
|
+
return [
|
|
120
|
+
getJsonRpcError(
|
|
121
|
+
_rpcerrors.errorCodes.rpc.internal,
|
|
122
|
+
_snapssdk.getErrorMessage.call(void 0, error.data.cause),
|
|
123
|
+
_snapssdk.getErrorStack.call(void 0, error.data.cause)
|
|
124
|
+
),
|
|
125
|
+
false
|
|
126
|
+
];
|
|
127
|
+
}
|
|
128
|
+
if (_utils.isJsonRpcError.call(void 0, error)) {
|
|
129
|
+
const { code, message, stack, data } = error;
|
|
130
|
+
return [getJsonRpcError(code, message, stack, data), false];
|
|
131
|
+
}
|
|
132
|
+
return [
|
|
133
|
+
getJsonRpcError(
|
|
134
|
+
_rpcerrors.errorCodes.rpc.internal,
|
|
135
|
+
_snapssdk.getErrorMessage.call(void 0, error),
|
|
136
|
+
_snapssdk.getErrorStack.call(void 0, error)
|
|
137
|
+
),
|
|
138
|
+
false
|
|
139
|
+
];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
exports.SNAP_ERROR_WRAPPER_CODE = SNAP_ERROR_WRAPPER_CODE; exports.SNAP_ERROR_WRAPPER_MESSAGE = SNAP_ERROR_WRAPPER_MESSAGE; exports.WrappedSnapError = WrappedSnapError; exports.isSnapError = isSnapError; exports.isSerializedSnapError = isSerializedSnapError; exports.isWrappedSnapError = isWrappedSnapError; exports.unwrapError = unwrapError;
|
|
151
|
+
//# sourceMappingURL=chunk-XRGYWWT7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts"],"names":["code","message","stack","data"],"mappings":";;;;;;;AAAA;AAAA,EACE;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,UAAU,sBAAsB;AAElC,IAAM,0BAA0B;AAChC,IAAM,6BAA6B;AAjB1C;AA2BO,IAAM,mBAAN,cAA+B,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAY1C,YAAY,OAAgB;AAC1B,UAAM,UAAU,gBAAgB,KAAK;AACrC,UAAM,OAAO;AAbf,uBAAS,QAAT;AAEA,uBAAS,UAAT;AAEA,uBAAS,QAAT;AAWE,uBAAK,QAAS;AACd,uBAAK,UAAW;AAChB,uBAAK,QAAS,cAAc,KAAK;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAO;AACT,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,UAAU;AACZ,WAAO,mBAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,QAAQ;AACV,WAAO,mBAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAqC;AACnC,UAAM,QAAQ,YAAY,mBAAK,OAAM,IACjC,mBAAK,QAAO,UAAU,IACtB,eAAe,mBAAK,OAAM;AAE9B,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT,MAAM;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YAAY;AACV,WAAO,KAAK,OAAO;AAAA,EACrB;AACF;AA3EW;AAEA;AAEA;AA+EJ,SAAS,YAAY,OAAoC;AAC9D,MACE,SAAS,KAAK,KACd,eAAe,SACf,OAAO,MAAM,cAAc,YAC3B;AACA,UAAM,aAAa,MAAM,UAAU;AACnC,WAAO,eAAe,UAAU,KAAK,sBAAsB,UAAU;AAAA,EACvE;AAEA,SAAO;AACT;AAQO,SAAS,sBACd,OAC8B;AAC9B,SAAO,MAAM,SAAS,mBAAmB,MAAM,YAAY;AAC7D;AAQO,SAAS,mBACd,OACqC;AACrC,SACE,eAAe,KAAK,KACpB,MAAM,SAAS,2BACf,MAAM,YAAY;AAEtB;AAWA,SAAS,gBACP,MACA,SACA,OACA,MACA;AACA,QAAM,QAAQ,IAAI,SAAS,MAAM,SAAS,IAAI;AAC9C,QAAM,QAAQ;AAEd,SAAO;AACT;AAWO,SAAS,YACd,OAC8D;AAK9D,MAAI,mBAAmB,KAAK,GAAG;AAG7B,QAAI,eAAe,MAAM,KAAK,KAAK,GAAG;AAEpC,UAAI,sBAAsB,MAAM,KAAK,KAAK,GAAG;AAC3C,cAAM,EAAE,MAAAA,OAAM,SAAAC,UAAS,OAAAC,QAAO,MAAAC,MAAK,IAAI,MAAM,KAAK,MAAM,KAAK;AAC7D,eAAO,CAAC,gBAAgBH,OAAMC,UAASC,QAAOC,KAAI,GAAG,IAAI;AAAA,MAC3D;AAGA,YAAM,EAAE,MAAM,SAAS,OAAO,KAAK,IAAI,MAAM,KAAK;AAClD,aAAO,CAAC,gBAAgB,MAAM,SAAS,OAAO,IAAI,GAAG,KAAK;AAAA,IAC5D;AAIA,WAAO;AAAA,MACL;AAAA,QACE,WAAW,IAAI;AAAA,QACf,gBAAgB,MAAM,KAAK,KAAK;AAAA,QAChC,cAAc,MAAM,KAAK,KAAK;AAAA,MAChC;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAIA,MAAI,eAAe,KAAK,GAAG;AACzB,UAAM,EAAE,MAAM,SAAS,OAAO,KAAK,IAAI;AACvC,WAAO,CAAC,gBAAgB,MAAM,SAAS,OAAO,IAAI,GAAG,KAAK;AAAA,EAC5D;AAIA,SAAO;AAAA,IACL;AAAA,MACE,WAAW,IAAI;AAAA,MACf,gBAAgB,KAAK;AAAA,MACrB,cAAc,KAAK;AAAA,IACrB;AAAA,IACA;AAAA,EACF;AACF","sourcesContent":["import {\n errorCodes,\n JsonRpcError as RpcError,\n serializeCause,\n} from '@metamask/rpc-errors';\nimport type { DataWithOptionalCause } from '@metamask/rpc-errors';\nimport type { SerializedSnapError, SnapError } from '@metamask/snaps-sdk';\nimport {\n getErrorMessage,\n getErrorStack,\n SNAP_ERROR_CODE,\n SNAP_ERROR_MESSAGE,\n} from '@metamask/snaps-sdk';\nimport type { Json, JsonRpcError } from '@metamask/utils';\nimport { isObject, isJsonRpcError } from '@metamask/utils';\n\nexport const SNAP_ERROR_WRAPPER_CODE = -31001;\nexport const SNAP_ERROR_WRAPPER_MESSAGE = 'Wrapped Snap Error';\n\nexport type SerializedSnapErrorWrapper = {\n code: typeof SNAP_ERROR_WRAPPER_CODE;\n message: typeof SNAP_ERROR_WRAPPER_MESSAGE;\n data: {\n cause: Json;\n };\n};\n\nexport class WrappedSnapError extends Error {\n readonly #error: unknown;\n\n readonly #message: string;\n\n readonly #stack?: string;\n\n /**\n * Create a new `WrappedSnapError`.\n *\n * @param error - The error to create the `WrappedSnapError` from.\n */\n constructor(error: unknown) {\n const message = getErrorMessage(error);\n super(message);\n\n this.#error = error;\n this.#message = message;\n this.#stack = getErrorStack(error);\n }\n\n /**\n * The error name.\n *\n * @returns The error name.\n */\n get name() {\n return 'WrappedSnapError';\n }\n\n /**\n * The error message.\n *\n * @returns The error message.\n */\n get message() {\n return this.#message;\n }\n\n /**\n * The error stack.\n *\n * @returns The error stack.\n */\n get stack() {\n return this.#stack;\n }\n\n /**\n * Convert the error to a JSON object.\n *\n * @returns The JSON object.\n */\n toJSON(): SerializedSnapErrorWrapper {\n const cause = isSnapError(this.#error)\n ? this.#error.serialize()\n : serializeCause(this.#error);\n\n return {\n code: SNAP_ERROR_WRAPPER_CODE,\n message: SNAP_ERROR_WRAPPER_MESSAGE,\n data: {\n cause,\n },\n };\n }\n\n /**\n * Serialize the error to a JSON object. This is called by\n * `@metamask/rpc-errors` when serializing the error.\n *\n * @returns The JSON object.\n */\n serialize() {\n return this.toJSON();\n }\n}\n\n/**\n * Check if an object is a `SnapError`.\n *\n * @param error - The object to check.\n * @returns Whether the object is a `SnapError`.\n */\nexport function isSnapError(error: unknown): error is SnapError {\n if (\n isObject(error) &&\n 'serialize' in error &&\n typeof error.serialize === 'function'\n ) {\n const serialized = error.serialize();\n return isJsonRpcError(serialized) && isSerializedSnapError(serialized);\n }\n\n return false;\n}\n\n/**\n * Check if a JSON-RPC error is a `SnapError`.\n *\n * @param error - The object to check.\n * @returns Whether the object is a `SnapError`.\n */\nexport function isSerializedSnapError(\n error: JsonRpcError,\n): error is SerializedSnapError {\n return error.code === SNAP_ERROR_CODE && error.message === SNAP_ERROR_MESSAGE;\n}\n\n/**\n * Check if a JSON-RPC error is a `WrappedSnapError`.\n *\n * @param error - The object to check.\n * @returns Whether the object is a `WrappedSnapError`.\n */\nexport function isWrappedSnapError(\n error: unknown,\n): error is SerializedSnapErrorWrapper {\n return (\n isJsonRpcError(error) &&\n error.code === SNAP_ERROR_WRAPPER_CODE &&\n error.message === SNAP_ERROR_WRAPPER_MESSAGE\n );\n}\n\n/**\n * Get a JSON-RPC error with the given code, message, stack, and data.\n *\n * @param code - The error code.\n * @param message - The error message.\n * @param stack - The error stack.\n * @param data - Additional data for the error.\n * @returns The JSON-RPC error.\n */\nfunction getJsonRpcError(\n code: number,\n message: string,\n stack?: string,\n data?: Json,\n) {\n const error = new RpcError(code, message, data);\n error.stack = stack;\n\n return error;\n}\n\n/**\n * Attempt to unwrap an unknown error to a `JsonRpcError`. This function will\n * try to get the error code, message, and data from the error, and return a\n * `JsonRpcError` with those properties.\n *\n * @param error - The error to unwrap.\n * @returns A tuple containing the unwrapped error and a boolean indicating\n * whether the error was handled.\n */\nexport function unwrapError(\n error: unknown,\n): [error: RpcError<DataWithOptionalCause>, isHandled: boolean] {\n // This logic is a bit complicated, but it's necessary to handle all the\n // different types of errors that can be thrown by a Snap.\n\n // If the error is a wrapped Snap error, unwrap it.\n if (isWrappedSnapError(error)) {\n // The wrapped error can be a JSON-RPC error, or an unknown error. If it's\n // a JSON-RPC error, we can unwrap it further.\n if (isJsonRpcError(error.data.cause)) {\n // If the JSON-RPC error is a wrapped Snap error, unwrap it further.\n if (isSerializedSnapError(error.data.cause)) {\n const { code, message, stack, data } = error.data.cause.data.cause;\n return [getJsonRpcError(code, message, stack, data), true];\n }\n\n // Otherwise, we use the original JSON-RPC error.\n const { code, message, stack, data } = error.data.cause;\n return [getJsonRpcError(code, message, stack, data), false];\n }\n\n // Otherwise, we throw an internal error with the wrapped error as the\n // message.\n return [\n getJsonRpcError(\n errorCodes.rpc.internal,\n getErrorMessage(error.data.cause),\n getErrorStack(error.data.cause),\n ),\n false,\n ];\n }\n\n // The error can be a non-wrapped JSON-RPC error, in which case we can just\n // re-throw it with the same code, message, and data.\n if (isJsonRpcError(error)) {\n const { code, message, stack, data } = error;\n return [getJsonRpcError(code, message, stack, data), false];\n }\n\n // If the error is not a wrapped error, we don't know how to handle it, so we\n // throw an internal error with the error as the message.\n return [\n getJsonRpcError(\n errorCodes.rpc.internal,\n getErrorMessage(error),\n getErrorStack(error),\n ),\n false,\n ];\n}\n"]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
+
|
|
3
|
+
var _chunkQ7FGULTVjs = require('./chunk-Q7FGULTV.js');
|
|
4
|
+
|
|
5
|
+
// src/virtual-file/VirtualFile.ts
|
|
6
|
+
var _utils = require('@metamask/utils');
|
|
7
|
+
var _base = require('@scure/base');
|
|
8
|
+
var VirtualFile = class _VirtualFile {
|
|
9
|
+
constructor(value) {
|
|
10
|
+
let options;
|
|
11
|
+
if (typeof value === "string" || value instanceof Uint8Array) {
|
|
12
|
+
options = { value };
|
|
13
|
+
} else {
|
|
14
|
+
options = value;
|
|
15
|
+
}
|
|
16
|
+
this.value = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _ => _.value]), () => ( ""));
|
|
17
|
+
this.result = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _2 => _2.result]), () => ( void 0));
|
|
18
|
+
this.data = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _3 => _3.data]), () => ( {}));
|
|
19
|
+
this.path = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _4 => _4.path]), () => ( "/"));
|
|
20
|
+
}
|
|
21
|
+
toString(encoding) {
|
|
22
|
+
if (typeof this.value === "string") {
|
|
23
|
+
_utils.assert.call(void 0, encoding === void 0, "Tried to encode string.");
|
|
24
|
+
return this.value;
|
|
25
|
+
} else if (this.value instanceof Uint8Array && encoding === "hex") {
|
|
26
|
+
return _utils.bytesToHex.call(void 0, this.value);
|
|
27
|
+
} else if (this.value instanceof Uint8Array && encoding === "base64") {
|
|
28
|
+
return _base.base64.encode(this.value);
|
|
29
|
+
}
|
|
30
|
+
const decoder = new TextDecoder(encoding);
|
|
31
|
+
return decoder.decode(this.value);
|
|
32
|
+
}
|
|
33
|
+
clone() {
|
|
34
|
+
const vfile = new _VirtualFile();
|
|
35
|
+
if (typeof this.value === "string") {
|
|
36
|
+
vfile.value = this.value;
|
|
37
|
+
} else {
|
|
38
|
+
vfile.value = this.value.slice(0);
|
|
39
|
+
}
|
|
40
|
+
vfile.result = _chunkQ7FGULTVjs.deepClone.call(void 0, this.result);
|
|
41
|
+
vfile.data = _chunkQ7FGULTVjs.deepClone.call(void 0, this.data);
|
|
42
|
+
vfile.path = this.path;
|
|
43
|
+
return vfile;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
exports.VirtualFile = VirtualFile;
|
|
50
|
+
//# sourceMappingURL=chunk-XWFKTDB3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/virtual-file/VirtualFile.ts"],"names":[],"mappings":";;;;;AAQA,SAAS,QAAQ,kBAAkB;AACnC,SAAS,cAAc;AAiChB,IAAM,cAAN,MAAM,aAA8B;AAAA,EACzC,YAAY,OAA4B;AACtC,QAAI;AACJ,QAAI,OAAO,UAAU,YAAY,iBAAiB,YAAY;AAC5D,gBAAU,EAAE,MAAM;AAAA,IACpB,OAAO;AACL,gBAAU;AAAA,IACZ;AAEA,SAAK,QAAQ,SAAS,SAAS;AAU/B,SAAK,SAAS,SAAS,UAAW;AAClC,SAAK,OAAO,SAAS,QAAQ,CAAC;AAC9B,SAAK,OAAO,SAAS,QAAQ;AAAA,EAC/B;AAAA,EAUA,SAAS,UAAmB;AAC1B,QAAI,OAAO,KAAK,UAAU,UAAU;AAClC,aAAO,aAAa,QAAW,yBAAyB;AACxD,aAAO,KAAK;AAAA,IACd,WAAW,KAAK,iBAAiB,cAAc,aAAa,OAAO;AACjE,aAAO,WAAW,KAAK,KAAK;AAAA,IAC9B,WAAW,KAAK,iBAAiB,cAAc,aAAa,UAAU;AAGpE,aAAO,OAAO,OAAO,KAAK,KAAK;AAAA,IACjC;AACA,UAAM,UAAU,IAAI,YAAY,QAAQ;AACxC,WAAO,QAAQ,OAAO,KAAK,KAAK;AAAA,EAClC;AAAA,EAEA,QAAQ;AACN,UAAM,QAAQ,IAAI,aAAoB;AACtC,QAAI,OAAO,KAAK,UAAU,UAAU;AAClC,YAAM,QAAQ,KAAK;AAAA,IACrB,OAAO;AAEL,YAAM,QAAQ,KAAK,MAAM,MAAM,CAAC;AAAA,IAClC;AACA,UAAM,SAAS,UAAU,KAAK,MAAM;AACpC,UAAM,OAAO,UAAU,KAAK,IAAI;AAChC,UAAM,OAAO,KAAK;AAClB,WAAO;AAAA,EACT;AACF","sourcesContent":["// TODO(ritave): Move into separate package @metamask/vfile / @metamask/utils + @metamask/to-vfile when passes code review\n// TODO(ritave): Streaming vfile contents similar to vinyl maybe?\n// TODO(ritave): Move fixing manifest in cli and bundler plugins to write messages to vfile\n// similar to unified instead of throwing \"ProgrammaticallyFixableErrors\".\n//\n// Using https://github.com/vfile/vfile would be helpful, but they only support ESM and we need to support CommonJS.\n// https://github.com/gulpjs/vinyl is also good, but they normalize paths, which we can't do, because\n// we're calculating checksums based on original path.\nimport { assert, bytesToHex } from '@metamask/utils';\nimport { base64 } from '@scure/base';\n\nimport { deepClone } from '../deep-clone';\n\n/**\n * This map registers the type of the {@link VirtualFile.data} key of a {@link VirtualFile}.\n *\n * This type can be augmented to register custom `data` types.\n *\n * @example\n * declare module '@metamask/snaps-utils' {\n * interface DataMap {\n * // `file.data.name` is typed as `string`\n * name: string\n * }\n * }\n */\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions, @typescript-eslint/no-empty-interface\nexport interface DataMap {}\n\nexport type Value = string | Uint8Array;\nexport type Compatible<Result = unknown> =\n | string\n | Uint8Array\n | Options<Result>;\nexport type Data = Record<string, unknown> & Partial<DataMap>;\nexport type Options<Result = unknown> = {\n value: Value;\n path?: string;\n data?: Data;\n result?: Result;\n};\n\nexport class VirtualFile<Result = unknown> {\n constructor(value?: Compatible<Result>) {\n let options: Options | undefined;\n if (typeof value === 'string' || value instanceof Uint8Array) {\n options = { value };\n } else {\n options = value;\n }\n\n this.value = options?.value ?? '';\n // This situations happens when there's no .result used,\n // we expect the file to have default generic in that situation:\n // VirtualFile<unknown> which will handle undefined properly\n //\n // While not 100% type safe, it'll be way less frustrating to work with.\n // The alternative would be to have VirtualFile.result be Result | undefined\n // and that would result in needing to branch out and check in all situations.\n //\n // In short, optimizing for most common use case.\n this.result = options?.result ?? (undefined as any);\n this.data = options?.data ?? {};\n this.path = options?.path ?? '/';\n }\n\n value: Value;\n\n result: Result;\n\n data: Data;\n\n path: string;\n\n toString(encoding?: string) {\n if (typeof this.value === 'string') {\n assert(encoding === undefined, 'Tried to encode string.');\n return this.value;\n } else if (this.value instanceof Uint8Array && encoding === 'hex') {\n return bytesToHex(this.value);\n } else if (this.value instanceof Uint8Array && encoding === 'base64') {\n // For large files, this is quite slow, instead use `encodeBase64()`\n // TODO: Use @metamask/utils for this\n return base64.encode(this.value);\n }\n const decoder = new TextDecoder(encoding);\n return decoder.decode(this.value);\n }\n\n clone() {\n const vfile = new VirtualFile<Result>();\n if (typeof this.value === 'string') {\n vfile.value = this.value;\n } else {\n // deep-clone doesn't clone Buffer properly, even if it's a sub-class of Uint8Array\n vfile.value = this.value.slice(0);\n }\n vfile.result = deepClone(this.result);\n vfile.data = deepClone(this.data);\n vfile.path = this.path;\n return vfile;\n }\n}\n"]}
|
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
import {
|
|
2
|
+
assertIsSnapManifest
|
|
3
|
+
} from "./chunk-HWFLO7W5.mjs";
|
|
4
|
+
import {
|
|
5
|
+
ProgrammaticallyFixableSnapError,
|
|
6
|
+
getSnapChecksum,
|
|
7
|
+
validateSnapShasum
|
|
8
|
+
} from "./chunk-FJH6DDEL.mjs";
|
|
9
|
+
import {
|
|
10
|
+
assertIsSnapIcon,
|
|
11
|
+
getSvgDimensions
|
|
12
|
+
} from "./chunk-UGQQ5DJ4.mjs";
|
|
13
|
+
import {
|
|
14
|
+
SnapValidationFailureReason,
|
|
15
|
+
assertIsNpmSnapPackageJson
|
|
16
|
+
} from "./chunk-ZVXX2CTH.mjs";
|
|
17
|
+
import {
|
|
18
|
+
getValidatedLocalizationFiles,
|
|
19
|
+
validateSnapManifestLocalizations
|
|
20
|
+
} from "./chunk-N52KMB25.mjs";
|
|
21
|
+
import {
|
|
22
|
+
readJsonFile
|
|
23
|
+
} from "./chunk-32B4YQM7.mjs";
|
|
24
|
+
import {
|
|
25
|
+
readVirtualFile
|
|
26
|
+
} from "./chunk-HOTDTMNP.mjs";
|
|
27
|
+
import {
|
|
28
|
+
VirtualFile
|
|
29
|
+
} from "./chunk-LOW2T4MV.mjs";
|
|
30
|
+
import {
|
|
31
|
+
deepClone
|
|
32
|
+
} from "./chunk-B2DMAQNK.mjs";
|
|
33
|
+
|
|
34
|
+
// src/manifest/manifest.ts
|
|
35
|
+
import { getErrorMessage } from "@metamask/snaps-sdk";
|
|
36
|
+
import { assertExhaustive, assert, isPlainObject } from "@metamask/utils";
|
|
37
|
+
import deepEqual from "fast-deep-equal";
|
|
38
|
+
import { promises as fs } from "fs";
|
|
39
|
+
import pathUtils from "path";
|
|
40
|
+
var MANIFEST_SORT_ORDER = {
|
|
41
|
+
$schema: 1,
|
|
42
|
+
version: 2,
|
|
43
|
+
description: 3,
|
|
44
|
+
proposedName: 4,
|
|
45
|
+
repository: 5,
|
|
46
|
+
source: 6,
|
|
47
|
+
initialConnections: 7,
|
|
48
|
+
initialPermissions: 8,
|
|
49
|
+
manifestVersion: 9
|
|
50
|
+
};
|
|
51
|
+
async function checkManifest(basePath, writeManifest = true, sourceCode, writeFileFn = fs.writeFile) {
|
|
52
|
+
const warnings = [];
|
|
53
|
+
const errors = [];
|
|
54
|
+
let updated = false;
|
|
55
|
+
const manifestPath = pathUtils.join(basePath, "snap.manifest.json" /* Manifest */);
|
|
56
|
+
const manifestFile = await readJsonFile(manifestPath);
|
|
57
|
+
const unvalidatedManifest = manifestFile.result;
|
|
58
|
+
const packageFile = await readJsonFile(
|
|
59
|
+
pathUtils.join(basePath, "package.json" /* PackageJson */)
|
|
60
|
+
);
|
|
61
|
+
const auxiliaryFilePaths = getSnapFilePaths(
|
|
62
|
+
unvalidatedManifest,
|
|
63
|
+
(manifest2) => manifest2?.source?.files
|
|
64
|
+
);
|
|
65
|
+
const localizationFilePaths = getSnapFilePaths(
|
|
66
|
+
unvalidatedManifest,
|
|
67
|
+
(manifest2) => manifest2?.source?.locales
|
|
68
|
+
);
|
|
69
|
+
const snapFiles = {
|
|
70
|
+
manifest: manifestFile,
|
|
71
|
+
packageJson: packageFile,
|
|
72
|
+
sourceCode: await getSnapSourceCode(
|
|
73
|
+
basePath,
|
|
74
|
+
unvalidatedManifest,
|
|
75
|
+
sourceCode
|
|
76
|
+
),
|
|
77
|
+
svgIcon: await getSnapIcon(basePath, unvalidatedManifest),
|
|
78
|
+
// Intentionally pass null as the encoding here since the files may be binary
|
|
79
|
+
auxiliaryFiles: await getSnapFiles(basePath, auxiliaryFilePaths, null) ?? [],
|
|
80
|
+
localizationFiles: await getSnapFiles(basePath, localizationFilePaths) ?? []
|
|
81
|
+
};
|
|
82
|
+
let manifest;
|
|
83
|
+
try {
|
|
84
|
+
({ manifest } = await validateNpmSnap(snapFiles));
|
|
85
|
+
} catch (error) {
|
|
86
|
+
if (error instanceof ProgrammaticallyFixableSnapError) {
|
|
87
|
+
errors.push(error.message);
|
|
88
|
+
const partiallyValidatedFiles = snapFiles;
|
|
89
|
+
let isInvalid = true;
|
|
90
|
+
let currentError = error;
|
|
91
|
+
const maxAttempts = Object.keys(SnapValidationFailureReason).length;
|
|
92
|
+
for (let attempts = 1; isInvalid && attempts <= maxAttempts; attempts++) {
|
|
93
|
+
manifest = await fixManifest(
|
|
94
|
+
manifest ? { ...partiallyValidatedFiles, manifest } : partiallyValidatedFiles,
|
|
95
|
+
currentError
|
|
96
|
+
);
|
|
97
|
+
try {
|
|
98
|
+
await validateNpmSnapManifest({
|
|
99
|
+
...partiallyValidatedFiles,
|
|
100
|
+
manifest
|
|
101
|
+
});
|
|
102
|
+
isInvalid = false;
|
|
103
|
+
} catch (nextValidationError) {
|
|
104
|
+
currentError = nextValidationError;
|
|
105
|
+
if (!(nextValidationError instanceof ProgrammaticallyFixableSnapError) || attempts === maxAttempts && !isInvalid) {
|
|
106
|
+
throw new Error(
|
|
107
|
+
`Internal error: Failed to fix manifest. This is a bug, please report it. Reason:
|
|
108
|
+
${error.message}`
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
errors.push(currentError.message);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
updated = true;
|
|
115
|
+
} else {
|
|
116
|
+
throw error;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
assert(manifest);
|
|
120
|
+
const validatedManifest = manifest.result;
|
|
121
|
+
const recommendedFields = ["repository"];
|
|
122
|
+
const missingRecommendedFields = recommendedFields.filter(
|
|
123
|
+
(key) => !validatedManifest[key]
|
|
124
|
+
);
|
|
125
|
+
if (missingRecommendedFields.length > 0) {
|
|
126
|
+
warnings.push(
|
|
127
|
+
`Missing recommended package.json properties:
|
|
128
|
+
${missingRecommendedFields.reduce(
|
|
129
|
+
(allMissing, currentField) => {
|
|
130
|
+
return `${allMissing} ${currentField}
|
|
131
|
+
`;
|
|
132
|
+
},
|
|
133
|
+
""
|
|
134
|
+
)}`
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
if (!snapFiles.svgIcon) {
|
|
138
|
+
warnings.push(
|
|
139
|
+
"No icon found in the Snap manifest. It is recommended to include an icon for the Snap. See https://docs.metamask.io/snaps/how-to/design-a-snap/#guidelines-at-a-glance for more information."
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
const iconDimensions = snapFiles.svgIcon && getSvgDimensions(snapFiles.svgIcon.toString());
|
|
143
|
+
if (iconDimensions && iconDimensions.height !== iconDimensions.width) {
|
|
144
|
+
warnings.push(
|
|
145
|
+
"The icon in the Snap manifest is not square. It is recommended to use a square icon for the Snap."
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
if (writeManifest) {
|
|
149
|
+
try {
|
|
150
|
+
const newManifest = `${JSON.stringify(
|
|
151
|
+
getWritableManifest(validatedManifest),
|
|
152
|
+
null,
|
|
153
|
+
2
|
|
154
|
+
)}
|
|
155
|
+
`;
|
|
156
|
+
if (updated || newManifest !== manifestFile.value) {
|
|
157
|
+
await writeFileFn(
|
|
158
|
+
pathUtils.join(basePath, "snap.manifest.json" /* Manifest */),
|
|
159
|
+
newManifest
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
} catch (error) {
|
|
163
|
+
throw new Error(`Failed to update snap.manifest.json: ${error.message}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return { manifest: validatedManifest, updated, warnings, errors };
|
|
167
|
+
}
|
|
168
|
+
async function fixManifest(snapFiles, error) {
|
|
169
|
+
const { manifest, packageJson } = snapFiles;
|
|
170
|
+
const clonedFile = manifest.clone();
|
|
171
|
+
const manifestCopy = clonedFile.result;
|
|
172
|
+
switch (error.reason) {
|
|
173
|
+
case '"name" field mismatch' /* NameMismatch */:
|
|
174
|
+
manifestCopy.source.location.npm.packageName = packageJson.result.name;
|
|
175
|
+
break;
|
|
176
|
+
case '"version" field mismatch' /* VersionMismatch */:
|
|
177
|
+
manifestCopy.version = packageJson.result.version;
|
|
178
|
+
break;
|
|
179
|
+
case '"repository" field mismatch' /* RepositoryMismatch */:
|
|
180
|
+
manifestCopy.repository = packageJson.result.repository ? deepClone(packageJson.result.repository) : void 0;
|
|
181
|
+
break;
|
|
182
|
+
case '"shasum" field mismatch' /* ShasumMismatch */:
|
|
183
|
+
manifestCopy.source.shasum = await getSnapChecksum(snapFiles);
|
|
184
|
+
break;
|
|
185
|
+
default:
|
|
186
|
+
assertExhaustive(error.reason);
|
|
187
|
+
}
|
|
188
|
+
clonedFile.result = manifestCopy;
|
|
189
|
+
clonedFile.value = JSON.stringify(manifestCopy);
|
|
190
|
+
return clonedFile;
|
|
191
|
+
}
|
|
192
|
+
async function getSnapSourceCode(basePath, manifest, sourceCode) {
|
|
193
|
+
if (!isPlainObject(manifest)) {
|
|
194
|
+
return void 0;
|
|
195
|
+
}
|
|
196
|
+
const sourceFilePath = manifest.source?.location?.npm?.filePath;
|
|
197
|
+
if (!sourceFilePath) {
|
|
198
|
+
return void 0;
|
|
199
|
+
}
|
|
200
|
+
if (sourceCode) {
|
|
201
|
+
return new VirtualFile({
|
|
202
|
+
path: pathUtils.join(basePath, sourceFilePath),
|
|
203
|
+
value: sourceCode
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
try {
|
|
207
|
+
const virtualFile = await readVirtualFile(
|
|
208
|
+
pathUtils.join(basePath, sourceFilePath),
|
|
209
|
+
"utf8"
|
|
210
|
+
);
|
|
211
|
+
return virtualFile;
|
|
212
|
+
} catch (error) {
|
|
213
|
+
throw new Error(
|
|
214
|
+
`Failed to read snap bundle file: ${getErrorMessage(error)}`
|
|
215
|
+
);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
async function getSnapIcon(basePath, manifest) {
|
|
219
|
+
if (!isPlainObject(manifest)) {
|
|
220
|
+
return void 0;
|
|
221
|
+
}
|
|
222
|
+
const iconPath = manifest.source?.location?.npm?.iconPath;
|
|
223
|
+
if (!iconPath) {
|
|
224
|
+
return void 0;
|
|
225
|
+
}
|
|
226
|
+
try {
|
|
227
|
+
const virtualFile = await readVirtualFile(
|
|
228
|
+
pathUtils.join(basePath, iconPath),
|
|
229
|
+
"utf8"
|
|
230
|
+
);
|
|
231
|
+
return virtualFile;
|
|
232
|
+
} catch (error) {
|
|
233
|
+
throw new Error(`Failed to read snap icon file: ${getErrorMessage(error)}`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
function getSnapFilePaths(manifest, selector) {
|
|
237
|
+
if (!isPlainObject(manifest)) {
|
|
238
|
+
return void 0;
|
|
239
|
+
}
|
|
240
|
+
const snapManifest = manifest;
|
|
241
|
+
const paths = selector(snapManifest);
|
|
242
|
+
if (!Array.isArray(paths)) {
|
|
243
|
+
return void 0;
|
|
244
|
+
}
|
|
245
|
+
return paths;
|
|
246
|
+
}
|
|
247
|
+
async function getSnapFiles(basePath, paths, encoding = "utf8") {
|
|
248
|
+
if (!paths) {
|
|
249
|
+
return void 0;
|
|
250
|
+
}
|
|
251
|
+
try {
|
|
252
|
+
return await Promise.all(
|
|
253
|
+
paths.map(
|
|
254
|
+
async (filePath) => readVirtualFile(pathUtils.join(basePath, filePath), encoding)
|
|
255
|
+
)
|
|
256
|
+
);
|
|
257
|
+
} catch (error) {
|
|
258
|
+
throw new Error(`Failed to read snap files: ${getErrorMessage(error)}`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
function getWritableManifest(manifest) {
|
|
262
|
+
const { repository, ...remaining } = manifest;
|
|
263
|
+
const keys = Object.keys(
|
|
264
|
+
repository ? { ...remaining, repository } : remaining
|
|
265
|
+
);
|
|
266
|
+
const writableManifest = keys.sort((a, b) => MANIFEST_SORT_ORDER[a] - MANIFEST_SORT_ORDER[b]).reduce(
|
|
267
|
+
(result, key) => ({
|
|
268
|
+
...result,
|
|
269
|
+
[key]: manifest[key]
|
|
270
|
+
}),
|
|
271
|
+
{}
|
|
272
|
+
);
|
|
273
|
+
return writableManifest;
|
|
274
|
+
}
|
|
275
|
+
async function validateNpmSnapManifest({
|
|
276
|
+
manifest,
|
|
277
|
+
packageJson,
|
|
278
|
+
sourceCode,
|
|
279
|
+
svgIcon,
|
|
280
|
+
auxiliaryFiles,
|
|
281
|
+
localizationFiles
|
|
282
|
+
}) {
|
|
283
|
+
const packageJsonName = packageJson.result.name;
|
|
284
|
+
const packageJsonVersion = packageJson.result.version;
|
|
285
|
+
const packageJsonRepository = packageJson.result.repository;
|
|
286
|
+
const manifestPackageName = manifest.result.source.location.npm.packageName;
|
|
287
|
+
const manifestPackageVersion = manifest.result.version;
|
|
288
|
+
const manifestRepository = manifest.result.repository;
|
|
289
|
+
if (packageJsonName !== manifestPackageName) {
|
|
290
|
+
throw new ProgrammaticallyFixableSnapError(
|
|
291
|
+
`"${"snap.manifest.json" /* Manifest */}" npm package name ("${manifestPackageName}") does not match the "${"package.json" /* PackageJson */}" "name" field ("${packageJsonName}").`,
|
|
292
|
+
'"name" field mismatch' /* NameMismatch */
|
|
293
|
+
);
|
|
294
|
+
}
|
|
295
|
+
if (packageJsonVersion !== manifestPackageVersion) {
|
|
296
|
+
throw new ProgrammaticallyFixableSnapError(
|
|
297
|
+
`"${"snap.manifest.json" /* Manifest */}" npm package version ("${manifestPackageVersion}") does not match the "${"package.json" /* PackageJson */}" "version" field ("${packageJsonVersion}").`,
|
|
298
|
+
'"version" field mismatch' /* VersionMismatch */
|
|
299
|
+
);
|
|
300
|
+
}
|
|
301
|
+
if (
|
|
302
|
+
// The repository may be `undefined` in package.json but can only be defined
|
|
303
|
+
// or `null` in the Snap manifest due to TS@<4.4 issues.
|
|
304
|
+
(packageJsonRepository || manifestRepository) && !deepEqual(packageJsonRepository, manifestRepository)
|
|
305
|
+
) {
|
|
306
|
+
throw new ProgrammaticallyFixableSnapError(
|
|
307
|
+
`"${"snap.manifest.json" /* Manifest */}" "repository" field does not match the "${"package.json" /* PackageJson */}" "repository" field.`,
|
|
308
|
+
'"repository" field mismatch' /* RepositoryMismatch */
|
|
309
|
+
);
|
|
310
|
+
}
|
|
311
|
+
await validateSnapShasum(
|
|
312
|
+
{ manifest, sourceCode, svgIcon, auxiliaryFiles, localizationFiles },
|
|
313
|
+
`"${"snap.manifest.json" /* Manifest */}" "shasum" field does not match computed shasum.`
|
|
314
|
+
);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
// src/npm.ts
|
|
318
|
+
var EXPECTED_SNAP_FILES = [
|
|
319
|
+
"manifest",
|
|
320
|
+
"packageJson",
|
|
321
|
+
"sourceCode"
|
|
322
|
+
];
|
|
323
|
+
var SnapFileNameFromKey = {
|
|
324
|
+
manifest: "snap.manifest.json" /* Manifest */,
|
|
325
|
+
packageJson: "package.json" /* PackageJson */,
|
|
326
|
+
sourceCode: "source code bundle"
|
|
327
|
+
};
|
|
328
|
+
async function validateNpmSnap(snapFiles, errorPrefix) {
|
|
329
|
+
EXPECTED_SNAP_FILES.forEach((key) => {
|
|
330
|
+
if (!snapFiles[key]) {
|
|
331
|
+
throw new Error(
|
|
332
|
+
`${errorPrefix ?? ""}Missing file "${SnapFileNameFromKey[key]}".`
|
|
333
|
+
);
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
const {
|
|
337
|
+
manifest,
|
|
338
|
+
packageJson,
|
|
339
|
+
sourceCode,
|
|
340
|
+
svgIcon,
|
|
341
|
+
auxiliaryFiles,
|
|
342
|
+
localizationFiles
|
|
343
|
+
} = snapFiles;
|
|
344
|
+
try {
|
|
345
|
+
assertIsSnapManifest(manifest.result);
|
|
346
|
+
} catch (error) {
|
|
347
|
+
throw new Error(`${errorPrefix ?? ""}${error.message}`);
|
|
348
|
+
}
|
|
349
|
+
const validatedManifest = manifest;
|
|
350
|
+
const { iconPath } = validatedManifest.result.source.location.npm;
|
|
351
|
+
if (iconPath && !svgIcon) {
|
|
352
|
+
throw new Error(`Missing file "${iconPath}".`);
|
|
353
|
+
}
|
|
354
|
+
try {
|
|
355
|
+
assertIsNpmSnapPackageJson(packageJson.result);
|
|
356
|
+
} catch (error) {
|
|
357
|
+
throw new Error(`${errorPrefix ?? ""}${error.message}`);
|
|
358
|
+
}
|
|
359
|
+
const validatedPackageJson = packageJson;
|
|
360
|
+
await validateNpmSnapManifest({
|
|
361
|
+
manifest: validatedManifest,
|
|
362
|
+
packageJson: validatedPackageJson,
|
|
363
|
+
sourceCode,
|
|
364
|
+
svgIcon,
|
|
365
|
+
auxiliaryFiles,
|
|
366
|
+
localizationFiles
|
|
367
|
+
});
|
|
368
|
+
if (svgIcon) {
|
|
369
|
+
try {
|
|
370
|
+
assertIsSnapIcon(svgIcon);
|
|
371
|
+
} catch (error) {
|
|
372
|
+
throw new Error(`${errorPrefix ?? ""}${error.message}`);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
if (localizationFiles) {
|
|
376
|
+
try {
|
|
377
|
+
getValidatedLocalizationFiles(localizationFiles);
|
|
378
|
+
validateSnapManifestLocalizations(
|
|
379
|
+
manifest.result,
|
|
380
|
+
localizationFiles.map((file) => file.result)
|
|
381
|
+
);
|
|
382
|
+
} catch (error) {
|
|
383
|
+
throw new Error(`${errorPrefix ?? ""}${error.message}`);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
return {
|
|
387
|
+
manifest: validatedManifest,
|
|
388
|
+
packageJson: validatedPackageJson,
|
|
389
|
+
sourceCode,
|
|
390
|
+
svgIcon,
|
|
391
|
+
auxiliaryFiles,
|
|
392
|
+
localizationFiles
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
export {
|
|
397
|
+
EXPECTED_SNAP_FILES,
|
|
398
|
+
SnapFileNameFromKey,
|
|
399
|
+
validateNpmSnap,
|
|
400
|
+
checkManifest,
|
|
401
|
+
fixManifest,
|
|
402
|
+
getSnapSourceCode,
|
|
403
|
+
getSnapIcon,
|
|
404
|
+
getSnapFilePaths,
|
|
405
|
+
getSnapFiles,
|
|
406
|
+
getWritableManifest,
|
|
407
|
+
validateNpmSnapManifest
|
|
408
|
+
};
|
|
409
|
+
//# sourceMappingURL=chunk-Y3F7VUZB.mjs.map
|