@metamask/snaps-rpc-methods 6.0.0 → 7.0.1
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 +13 -2
- package/dist/chunk-23XDKQW2.mjs +73 -0
- package/dist/chunk-23XDKQW2.mjs.map +1 -0
- package/dist/chunk-2KTJCF3C.js +68 -0
- package/dist/chunk-2KTJCF3C.js.map +1 -0
- package/dist/chunk-3DHVA2FY.js +21 -0
- package/dist/chunk-3DHVA2FY.js.map +1 -0
- package/dist/chunk-3LPBU737.js +43 -0
- package/dist/chunk-3LPBU737.js.map +1 -0
- package/dist/chunk-3S7DJI4I.mjs +49 -0
- package/dist/chunk-3S7DJI4I.mjs.map +1 -0
- package/dist/chunk-3UAWEHMF.js +18 -0
- package/dist/chunk-3UAWEHMF.js.map +1 -0
- package/dist/chunk-4D2B2UQ6.mjs +23 -0
- package/dist/chunk-4D2B2UQ6.mjs.map +1 -0
- package/dist/chunk-4LSOS7SM.js +23 -0
- package/dist/chunk-4LSOS7SM.js.map +1 -0
- package/dist/chunk-4SQWLI2S.mjs +151 -0
- package/dist/chunk-4SQWLI2S.mjs.map +1 -0
- package/dist/chunk-4W7U4OH6.js +42 -0
- package/dist/chunk-4W7U4OH6.js.map +1 -0
- package/dist/chunk-62URQ5VS.mjs +18 -0
- package/dist/chunk-62URQ5VS.mjs.map +1 -0
- package/dist/chunk-6TKD32TS.js +78 -0
- package/dist/chunk-6TKD32TS.js.map +1 -0
- package/dist/chunk-6UY23OOZ.js +39 -0
- package/dist/chunk-6UY23OOZ.js.map +1 -0
- package/dist/chunk-6WUIFFMQ.mjs +78 -0
- package/dist/chunk-6WUIFFMQ.mjs.map +1 -0
- package/dist/chunk-7NBRKDKJ.mjs +188 -0
- package/dist/chunk-7NBRKDKJ.mjs.map +1 -0
- package/dist/chunk-7OMVZR5X.mjs +39 -0
- package/dist/chunk-7OMVZR5X.mjs.map +1 -0
- package/dist/chunk-7TVJV425.js +1 -0
- package/dist/chunk-7TVJV425.js.map +1 -0
- package/dist/chunk-ADXH5C3U.mjs +119 -0
- package/dist/chunk-ADXH5C3U.mjs.map +1 -0
- package/dist/chunk-AKRFLGOS.mjs +59 -0
- package/dist/chunk-AKRFLGOS.mjs.map +1 -0
- package/dist/chunk-AOWUGDER.js +78 -0
- package/dist/chunk-AOWUGDER.js.map +1 -0
- package/dist/chunk-AWQ6HTAL.mjs +75 -0
- package/dist/chunk-AWQ6HTAL.mjs.map +1 -0
- package/dist/chunk-AYJK7MSH.js +43 -0
- package/dist/chunk-AYJK7MSH.js.map +1 -0
- package/dist/chunk-B3NIHNXW.js +23 -0
- package/dist/{cjs/endowments/ethereum-provider.js.map → chunk-B3NIHNXW.js.map} +1 -1
- package/dist/chunk-C6E6DI4I.mjs +115 -0
- package/dist/chunk-C6E6DI4I.mjs.map +1 -0
- package/dist/chunk-CD4OUHO5.mjs +20 -0
- package/dist/chunk-CD4OUHO5.mjs.map +1 -0
- package/dist/chunk-CH5O2YCX.mjs +18 -0
- package/dist/chunk-CH5O2YCX.mjs.map +1 -0
- package/dist/chunk-CVK2TYJX.mjs +54 -0
- package/dist/chunk-CVK2TYJX.mjs.map +1 -0
- package/dist/chunk-D6MUXDVI.js +51 -0
- package/dist/chunk-D6MUXDVI.js.map +1 -0
- package/dist/chunk-E6WUMFQT.mjs +54 -0
- package/dist/chunk-E6WUMFQT.mjs.map +1 -0
- package/dist/chunk-EEVEVBK6.mjs +78 -0
- package/dist/chunk-EEVEVBK6.mjs.map +1 -0
- package/dist/chunk-EKXDFYIX.mjs +68 -0
- package/dist/chunk-EKXDFYIX.mjs.map +1 -0
- package/dist/chunk-FBOZCV3C.js +59 -0
- package/dist/chunk-FBOZCV3C.js.map +1 -0
- package/dist/chunk-FCVWU5XH.js +73 -0
- package/dist/chunk-FCVWU5XH.js.map +1 -0
- package/dist/chunk-FFHVA6PP.js +82 -0
- package/dist/chunk-FFHVA6PP.js.map +1 -0
- package/dist/chunk-FMDV3RFT.js +21 -0
- package/dist/chunk-FMDV3RFT.js.map +1 -0
- package/dist/chunk-GP5KW5FU.js +45 -0
- package/dist/chunk-GP5KW5FU.js.map +1 -0
- package/dist/chunk-GYZV5UBD.js +151 -0
- package/dist/chunk-GYZV5UBD.js.map +1 -0
- package/dist/chunk-I6FU5MGE.mjs +47 -0
- package/dist/chunk-I6FU5MGE.mjs.map +1 -0
- package/dist/chunk-IBV23QOX.mjs +67 -0
- package/dist/chunk-IBV23QOX.mjs.map +1 -0
- package/dist/chunk-IDZGMGIB.js +45 -0
- package/dist/chunk-IDZGMGIB.js.map +1 -0
- package/dist/chunk-IEUCBULU.js +119 -0
- package/dist/chunk-IEUCBULU.js.map +1 -0
- package/dist/chunk-IZYMBIBD.mjs +32 -0
- package/dist/chunk-IZYMBIBD.mjs.map +1 -0
- package/dist/chunk-JQ456NCC.mjs +51 -0
- package/dist/chunk-JQ456NCC.mjs.map +1 -0
- package/dist/chunk-JRSPKOFG.js +115 -0
- package/dist/chunk-JRSPKOFG.js.map +1 -0
- package/dist/chunk-JWDQUKKU.mjs +80 -0
- package/dist/chunk-JWDQUKKU.mjs.map +1 -0
- package/dist/chunk-KO4MKRYZ.js +188 -0
- package/dist/chunk-KO4MKRYZ.js.map +1 -0
- package/dist/chunk-KSTF5JYB.mjs +23 -0
- package/dist/chunk-KSTF5JYB.mjs.map +1 -0
- package/dist/chunk-LGUJMQC7.js +78 -0
- package/dist/{cjs/restricted/getBip32PublicKey.js.map → chunk-LGUJMQC7.js.map} +1 -1
- package/dist/chunk-LIWV3FMY.js +69 -0
- package/dist/chunk-LIWV3FMY.js.map +1 -0
- package/dist/chunk-LR7UR4YU.mjs +52 -0
- package/dist/chunk-LR7UR4YU.mjs.map +1 -0
- package/dist/chunk-LVTN25J2.js +49 -0
- package/dist/chunk-LVTN25J2.js.map +1 -0
- package/dist/chunk-MVG4B2HM.mjs +21 -0
- package/dist/chunk-MVG4B2HM.mjs.map +1 -0
- package/dist/chunk-MXCJWR45.mjs +45 -0
- package/dist/chunk-MXCJWR45.mjs.map +1 -0
- package/dist/chunk-MXPVC2XP.mjs +105 -0
- package/dist/chunk-MXPVC2XP.mjs.map +1 -0
- package/dist/chunk-NP3KGMVC.js +47 -0
- package/dist/chunk-NP3KGMVC.js.map +1 -0
- package/dist/chunk-NU4NAAFG.js +1 -0
- package/dist/chunk-NU4NAAFG.js.map +1 -0
- package/dist/chunk-NWT2EXFD.js +18 -0
- package/dist/chunk-NWT2EXFD.js.map +1 -0
- package/dist/chunk-O66NZFSD.mjs +23 -0
- package/dist/chunk-O66NZFSD.mjs.map +1 -0
- package/dist/chunk-OQOTJFFV.js +74 -0
- package/dist/chunk-OQOTJFFV.js.map +1 -0
- package/dist/chunk-P74WXDY4.js +54 -0
- package/dist/chunk-P74WXDY4.js.map +1 -0
- package/dist/chunk-PCB6QOHL.mjs +21 -0
- package/dist/chunk-PCB6QOHL.mjs.map +1 -0
- package/dist/chunk-PS6OEQXL.js +105 -0
- package/dist/chunk-PS6OEQXL.js.map +1 -0
- package/dist/chunk-PWUEAR4H.js +70 -0
- package/dist/chunk-PWUEAR4H.js.map +1 -0
- package/dist/chunk-Q27K2I6Z.js +23 -0
- package/dist/{cjs/endowments/web-assembly.js.map → chunk-Q27K2I6Z.js.map} +1 -1
- package/dist/chunk-Q5W3YGEB.js +67 -0
- package/dist/chunk-Q5W3YGEB.js.map +1 -0
- package/dist/chunk-QDZAWH6F.js +80 -0
- package/dist/chunk-QDZAWH6F.js.map +1 -0
- package/dist/chunk-QMULJEYN.js +35 -0
- package/dist/chunk-QMULJEYN.js.map +1 -0
- package/dist/chunk-S7AR3ROH.js +57 -0
- package/dist/chunk-S7AR3ROH.js.map +1 -0
- package/dist/chunk-SGQXD5K7.mjs +83 -0
- package/dist/chunk-SGQXD5K7.mjs.map +1 -0
- package/dist/chunk-SYUGPLEP.js +32 -0
- package/dist/chunk-SYUGPLEP.js.map +1 -0
- package/dist/chunk-TEXEQGNZ.js +75 -0
- package/dist/chunk-TEXEQGNZ.js.map +1 -0
- package/dist/chunk-TG63GBK3.mjs +1 -0
- package/dist/chunk-TG63GBK3.mjs.map +1 -0
- package/dist/chunk-TJYMYQAB.mjs +42 -0
- package/dist/chunk-TJYMYQAB.mjs.map +1 -0
- package/dist/chunk-TKXU7ZXP.mjs +78 -0
- package/dist/chunk-TKXU7ZXP.mjs.map +1 -0
- package/dist/chunk-TNENASGX.mjs +1 -0
- package/dist/chunk-TNENASGX.mjs.map +1 -0
- package/dist/chunk-TNRH2LRU.mjs +57 -0
- package/dist/chunk-TNRH2LRU.mjs.map +1 -0
- package/dist/chunk-TOYWHUAS.mjs +70 -0
- package/dist/chunk-TOYWHUAS.mjs.map +1 -0
- package/dist/chunk-TT4DP2YW.mjs +35 -0
- package/dist/chunk-TT4DP2YW.mjs.map +1 -0
- package/dist/chunk-UB3733UY.mjs +23 -0
- package/dist/chunk-UB3733UY.mjs.map +1 -0
- package/dist/chunk-UBPHGXCO.mjs +74 -0
- package/dist/chunk-UBPHGXCO.mjs.map +1 -0
- package/dist/chunk-VCGZNL35.mjs +69 -0
- package/dist/chunk-VCGZNL35.mjs.map +1 -0
- package/dist/chunk-VHY3NATP.js +67 -0
- package/dist/chunk-VHY3NATP.js.map +1 -0
- package/dist/chunk-VUA6ICJO.js +52 -0
- package/dist/chunk-VUA6ICJO.js.map +1 -0
- package/dist/chunk-VVBTXSID.mjs +82 -0
- package/dist/chunk-VVBTXSID.mjs.map +1 -0
- package/dist/chunk-WFAY5FPP.mjs +67 -0
- package/dist/chunk-WFAY5FPP.mjs.map +1 -0
- package/dist/chunk-WLDEPJGG.mjs +43 -0
- package/dist/chunk-WLDEPJGG.mjs.map +1 -0
- package/dist/chunk-Y4LNTDZ2.mjs +43 -0
- package/dist/chunk-Y4LNTDZ2.mjs.map +1 -0
- package/dist/chunk-YG7W4CDT.js +83 -0
- package/dist/{cjs/utils.js.map → chunk-YG7W4CDT.js.map} +1 -1
- package/dist/chunk-YGKFOOWI.js +20 -0
- package/dist/chunk-YGKFOOWI.js.map +1 -0
- package/dist/chunk-YOHE52XB.js +23 -0
- package/dist/chunk-YOHE52XB.js.map +1 -0
- package/dist/chunk-YS6TYXCP.mjs +45 -0
- package/dist/chunk-YS6TYXCP.mjs.map +1 -0
- package/dist/chunk-ZPK4THX4.js +54 -0
- package/dist/chunk-ZPK4THX4.js.map +1 -0
- package/dist/endowments/caveats/generic.js +7 -0
- package/dist/endowments/caveats/generic.js.map +1 -0
- package/dist/endowments/caveats/generic.mjs +7 -0
- package/dist/endowments/caveats/generic.mjs.map +1 -0
- package/dist/endowments/caveats/index.js +18 -0
- package/dist/endowments/caveats/index.js.map +1 -0
- package/dist/endowments/caveats/index.mjs +18 -0
- package/dist/endowments/caveats/index.mjs.map +1 -0
- package/dist/endowments/caveats/requestTime.js +13 -0
- package/dist/endowments/caveats/requestTime.js.map +1 -0
- package/dist/endowments/caveats/requestTime.mjs +13 -0
- package/dist/endowments/caveats/requestTime.mjs.map +1 -0
- package/dist/endowments/cronjob.js +16 -0
- package/dist/endowments/cronjob.js.map +1 -0
- package/dist/endowments/cronjob.mjs +16 -0
- package/dist/endowments/cronjob.mjs.map +1 -0
- package/dist/endowments/enum.js +7 -0
- package/dist/endowments/enum.js.map +1 -0
- package/dist/endowments/enum.mjs +7 -0
- package/dist/endowments/enum.mjs.map +1 -0
- package/dist/endowments/ethereum-provider.js +8 -0
- package/dist/endowments/ethereum-provider.js.map +1 -0
- package/dist/endowments/ethereum-provider.mjs +8 -0
- package/dist/endowments/ethereum-provider.mjs.map +1 -0
- package/dist/endowments/home-page.js +8 -0
- package/dist/endowments/home-page.js.map +1 -0
- package/dist/endowments/home-page.mjs +8 -0
- package/dist/endowments/home-page.mjs.map +1 -0
- package/dist/endowments/index.js +54 -0
- package/dist/endowments/index.js.map +1 -0
- package/dist/endowments/index.mjs +54 -0
- package/dist/endowments/index.mjs.map +1 -0
- package/dist/endowments/keyring.js +17 -0
- package/dist/endowments/keyring.js.map +1 -0
- package/dist/endowments/keyring.mjs +17 -0
- package/dist/endowments/keyring.mjs.map +1 -0
- package/dist/endowments/lifecycle-hooks.js +8 -0
- package/dist/endowments/lifecycle-hooks.js.map +1 -0
- package/dist/endowments/lifecycle-hooks.mjs +8 -0
- package/dist/endowments/lifecycle-hooks.mjs.map +1 -0
- package/dist/endowments/name-lookup.js +19 -0
- package/dist/endowments/name-lookup.js.map +1 -0
- package/dist/endowments/name-lookup.mjs +19 -0
- package/dist/endowments/name-lookup.mjs.map +1 -0
- package/dist/endowments/network-access.js +8 -0
- package/dist/endowments/network-access.js.map +1 -0
- package/dist/endowments/network-access.mjs +8 -0
- package/dist/endowments/network-access.mjs.map +1 -0
- package/dist/endowments/rpc.js +17 -0
- package/dist/endowments/rpc.js.map +1 -0
- package/dist/endowments/rpc.mjs +17 -0
- package/dist/endowments/rpc.mjs.map +1 -0
- package/dist/endowments/signature-insight.js +17 -0
- package/dist/endowments/signature-insight.js.map +1 -0
- package/dist/endowments/signature-insight.mjs +17 -0
- package/dist/endowments/signature-insight.mjs.map +1 -0
- package/dist/endowments/transaction-insight.js +17 -0
- package/dist/endowments/transaction-insight.js.map +1 -0
- package/dist/endowments/transaction-insight.mjs +17 -0
- package/dist/endowments/transaction-insight.mjs.map +1 -0
- package/dist/endowments/web-assembly.js +8 -0
- package/dist/endowments/web-assembly.js.map +1 -0
- package/dist/endowments/web-assembly.mjs +8 -0
- package/dist/endowments/web-assembly.mjs.map +1 -0
- package/dist/index.js +118 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +118 -0
- package/dist/index.mjs.map +1 -0
- package/dist/permissions.js +43 -0
- package/dist/permissions.js.map +1 -0
- package/dist/permissions.mjs +43 -0
- package/dist/permissions.mjs.map +1 -0
- package/dist/permitted/createInterface.js +7 -0
- package/dist/permitted/createInterface.js.map +1 -0
- package/dist/permitted/createInterface.mjs +7 -0
- package/dist/permitted/createInterface.mjs.map +1 -0
- package/dist/permitted/getAllSnaps.js +7 -0
- package/dist/permitted/getAllSnaps.js.map +1 -0
- package/dist/permitted/getAllSnaps.mjs +7 -0
- package/dist/permitted/getAllSnaps.mjs.map +1 -0
- package/dist/permitted/getClientStatus.js +7 -0
- package/dist/permitted/getClientStatus.js.map +1 -0
- package/dist/permitted/getClientStatus.mjs +7 -0
- package/dist/permitted/getClientStatus.mjs.map +1 -0
- package/dist/permitted/getFile.js +9 -0
- package/dist/permitted/getFile.js.map +1 -0
- package/dist/permitted/getFile.mjs +9 -0
- package/dist/permitted/getFile.mjs.map +1 -0
- package/dist/permitted/getInterfaceState.js +7 -0
- package/dist/permitted/getInterfaceState.js.map +1 -0
- package/dist/permitted/getInterfaceState.mjs +7 -0
- package/dist/permitted/getInterfaceState.mjs.map +1 -0
- package/dist/permitted/getSnaps.js +7 -0
- package/dist/permitted/getSnaps.js.map +1 -0
- package/dist/permitted/getSnaps.mjs +7 -0
- package/dist/permitted/getSnaps.mjs.map +1 -0
- package/dist/permitted/handlers.js +20 -0
- package/dist/permitted/handlers.js.map +1 -0
- package/dist/permitted/handlers.mjs +20 -0
- package/dist/permitted/handlers.mjs.map +1 -0
- package/dist/permitted/index.js +26 -0
- package/dist/permitted/index.js.map +1 -0
- package/dist/permitted/index.mjs +26 -0
- package/dist/permitted/index.mjs.map +1 -0
- package/dist/permitted/invokeKeyring.js +8 -0
- package/dist/permitted/invokeKeyring.js.map +1 -0
- package/dist/permitted/invokeKeyring.mjs +8 -0
- package/dist/permitted/invokeKeyring.mjs.map +1 -0
- package/dist/permitted/invokeSnapSugar.js +11 -0
- package/dist/permitted/invokeSnapSugar.js.map +1 -0
- package/dist/permitted/invokeSnapSugar.mjs +11 -0
- package/dist/permitted/invokeSnapSugar.mjs.map +1 -0
- package/dist/permitted/middleware.js +20 -0
- package/dist/permitted/middleware.js.map +1 -0
- package/dist/permitted/middleware.mjs +20 -0
- package/dist/permitted/middleware.mjs.map +1 -0
- package/dist/permitted/requestSnaps.js +12 -0
- package/dist/permitted/requestSnaps.js.map +1 -0
- package/dist/permitted/requestSnaps.mjs +12 -0
- package/dist/permitted/requestSnaps.mjs.map +1 -0
- package/dist/permitted/updateInterface.js +7 -0
- package/dist/permitted/updateInterface.js.map +1 -0
- package/dist/permitted/updateInterface.mjs +7 -0
- package/dist/permitted/updateInterface.mjs.map +1 -0
- package/dist/restricted/caveats/index.js +17 -0
- package/dist/restricted/caveats/index.js.map +1 -0
- package/dist/restricted/caveats/index.mjs +17 -0
- package/dist/restricted/caveats/index.mjs.map +1 -0
- package/dist/restricted/caveats/permittedCoinTypes.js +13 -0
- package/dist/restricted/caveats/permittedCoinTypes.js.map +1 -0
- package/dist/restricted/caveats/permittedCoinTypes.mjs +13 -0
- package/dist/restricted/caveats/permittedCoinTypes.mjs.map +1 -0
- package/dist/restricted/caveats/permittedDerivationPaths.js +13 -0
- package/dist/restricted/caveats/permittedDerivationPaths.js.map +1 -0
- package/dist/restricted/caveats/permittedDerivationPaths.mjs +13 -0
- package/dist/restricted/caveats/permittedDerivationPaths.mjs.map +1 -0
- package/dist/restricted/caveats/snapIds.js +11 -0
- package/dist/restricted/caveats/snapIds.js.map +1 -0
- package/dist/restricted/caveats/snapIds.mjs +11 -0
- package/dist/restricted/caveats/snapIds.mjs.map +1 -0
- package/dist/restricted/dialog.js +9 -0
- package/dist/restricted/dialog.js.map +1 -0
- package/dist/restricted/dialog.mjs +9 -0
- package/dist/restricted/dialog.mjs.map +1 -0
- package/dist/restricted/getBip32Entropy.js +10 -0
- package/dist/restricted/getBip32Entropy.js.map +1 -0
- package/dist/restricted/getBip32Entropy.mjs +10 -0
- package/dist/restricted/getBip32Entropy.mjs.map +1 -0
- package/dist/restricted/getBip32PublicKey.js +12 -0
- package/dist/restricted/getBip32PublicKey.js.map +1 -0
- package/dist/restricted/getBip32PublicKey.mjs +12 -0
- package/dist/restricted/getBip32PublicKey.mjs.map +1 -0
- package/dist/restricted/getBip44Entropy.js +9 -0
- package/dist/restricted/getBip44Entropy.js.map +1 -0
- package/dist/restricted/getBip44Entropy.mjs +9 -0
- package/dist/restricted/getBip44Entropy.mjs.map +1 -0
- package/dist/restricted/getEntropy.js +10 -0
- package/dist/restricted/getEntropy.js.map +1 -0
- package/dist/restricted/getEntropy.mjs +10 -0
- package/dist/restricted/getEntropy.mjs.map +1 -0
- package/dist/restricted/getLocale.js +11 -0
- package/dist/restricted/getLocale.js.map +1 -0
- package/dist/restricted/getLocale.mjs +11 -0
- package/dist/restricted/getLocale.mjs.map +1 -0
- package/dist/restricted/index.js +33 -0
- package/dist/restricted/index.js.map +1 -0
- package/dist/restricted/index.mjs +33 -0
- package/dist/restricted/index.mjs.map +1 -0
- package/dist/restricted/invokeSnap.js +13 -0
- package/dist/restricted/invokeSnap.js.map +1 -0
- package/dist/restricted/invokeSnap.mjs +13 -0
- package/dist/restricted/invokeSnap.mjs.map +1 -0
- package/dist/restricted/manageAccounts.js +13 -0
- package/dist/restricted/manageAccounts.js.map +1 -0
- package/dist/restricted/manageAccounts.mjs +13 -0
- package/dist/restricted/manageAccounts.mjs.map +1 -0
- package/dist/restricted/manageState.js +20 -0
- package/dist/restricted/manageState.js.map +1 -0
- package/dist/restricted/manageState.mjs +20 -0
- package/dist/restricted/manageState.mjs.map +1 -0
- package/dist/restricted/notify.js +13 -0
- package/dist/restricted/notify.js.map +1 -0
- package/dist/restricted/notify.mjs +13 -0
- package/dist/restricted/notify.mjs.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/utils.js +13 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.mjs +13 -0
- package/dist/utils.mjs.map +1 -0
- package/package.json +21 -18
- package/dist/cjs/endowments/caveats/generic.js +0 -40
- package/dist/cjs/endowments/caveats/generic.js.map +0 -1
- package/dist/cjs/endowments/caveats/index.js +0 -21
- package/dist/cjs/endowments/caveats/index.js.map +0 -1
- package/dist/cjs/endowments/caveats/requestTime.js +0 -99
- package/dist/cjs/endowments/caveats/requestTime.js.map +0 -1
- package/dist/cjs/endowments/cronjob.js +0 -100
- package/dist/cjs/endowments/cronjob.js.map +0 -1
- package/dist/cjs/endowments/enum.js +0 -26
- package/dist/cjs/endowments/enum.js.map +0 -1
- package/dist/cjs/endowments/ethereum-provider.js +0 -43
- package/dist/cjs/endowments/home-page.js +0 -37
- package/dist/cjs/endowments/home-page.js.map +0 -1
- package/dist/cjs/endowments/index.js +0 -121
- package/dist/cjs/endowments/index.js.map +0 -1
- package/dist/cjs/endowments/keyring.js +0 -104
- package/dist/cjs/endowments/keyring.js.map +0 -1
- package/dist/cjs/endowments/lifecycle-hooks.js +0 -37
- package/dist/cjs/endowments/lifecycle-hooks.js.map +0 -1
- package/dist/cjs/endowments/name-lookup.js +0 -148
- package/dist/cjs/endowments/name-lookup.js.map +0 -1
- package/dist/cjs/endowments/network-access.js +0 -44
- package/dist/cjs/endowments/network-access.js.map +0 -1
- package/dist/cjs/endowments/rpc.js +0 -103
- package/dist/cjs/endowments/rpc.js.map +0 -1
- package/dist/cjs/endowments/signature-insight.js +0 -110
- package/dist/cjs/endowments/signature-insight.js.map +0 -1
- package/dist/cjs/endowments/transaction-insight.js +0 -111
- package/dist/cjs/endowments/transaction-insight.js.map +0 -1
- package/dist/cjs/endowments/web-assembly.js +0 -42
- package/dist/cjs/index.js +0 -45
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/permissions.js +0 -62
- package/dist/cjs/permissions.js.map +0 -1
- package/dist/cjs/permitted/createInterface.js +0 -68
- package/dist/cjs/permitted/createInterface.js.map +0 -1
- package/dist/cjs/permitted/getAllSnaps.js +0 -44
- package/dist/cjs/permitted/getAllSnaps.js.map +0 -1
- package/dist/cjs/permitted/getClientStatus.js +0 -40
- package/dist/cjs/permitted/getClientStatus.js.map +0 -1
- package/dist/cjs/permitted/getFile.js +0 -63
- package/dist/cjs/permitted/getFile.js.map +0 -1
- package/dist/cjs/permitted/getInterfaceState.js +0 -67
- package/dist/cjs/permitted/getInterfaceState.js.map +0 -1
- package/dist/cjs/permitted/getSnaps.js +0 -39
- package/dist/cjs/permitted/getSnaps.js.map +0 -1
- package/dist/cjs/permitted/handlers.js +0 -43
- package/dist/cjs/permitted/handlers.js.map +0 -1
- package/dist/cjs/permitted/index.js +0 -21
- package/dist/cjs/permitted/index.js.map +0 -1
- package/dist/cjs/permitted/invokeKeyring.js +0 -87
- package/dist/cjs/permitted/invokeKeyring.js.map +0 -1
- package/dist/cjs/permitted/invokeSnapSugar.js +0 -62
- package/dist/cjs/permitted/invokeSnapSugar.js.map +0 -1
- package/dist/cjs/permitted/middleware.js +0 -38
- package/dist/cjs/permitted/middleware.js.map +0 -1
- package/dist/cjs/permitted/requestSnaps.js +0 -123
- package/dist/cjs/permitted/requestSnaps.js.map +0 -1
- package/dist/cjs/permitted/updateInterface.js +0 -70
- package/dist/cjs/permitted/updateInterface.js.map +0 -1
- package/dist/cjs/restricted/caveats/index.js +0 -38
- package/dist/cjs/restricted/caveats/index.js.map +0 -1
- package/dist/cjs/restricted/caveats/permittedCoinTypes.js +0 -83
- package/dist/cjs/restricted/caveats/permittedCoinTypes.js.map +0 -1
- package/dist/cjs/restricted/caveats/permittedDerivationPaths.js +0 -67
- package/dist/cjs/restricted/caveats/permittedDerivationPaths.js.map +0 -1
- package/dist/cjs/restricted/caveats/snapIds.js +0 -59
- package/dist/cjs/restricted/caveats/snapIds.js.map +0 -1
- package/dist/cjs/restricted/dialog.js +0 -172
- package/dist/cjs/restricted/dialog.js.map +0 -1
- package/dist/cjs/restricted/getBip32Entropy.js +0 -76
- package/dist/cjs/restricted/getBip32Entropy.js.map +0 -1
- package/dist/cjs/restricted/getBip32PublicKey.js +0 -91
- package/dist/cjs/restricted/getBip44Entropy.js +0 -76
- package/dist/cjs/restricted/getBip44Entropy.js.map +0 -1
- package/dist/cjs/restricted/getEntropy.js +0 -76
- package/dist/cjs/restricted/getEntropy.js.map +0 -1
- package/dist/cjs/restricted/getLocale.js +0 -49
- package/dist/cjs/restricted/getLocale.js.map +0 -1
- package/dist/cjs/restricted/index.js +0 -59
- package/dist/cjs/restricted/index.js.map +0 -1
- package/dist/cjs/restricted/invokeSnap.js +0 -99
- package/dist/cjs/restricted/invokeSnap.js.map +0 -1
- package/dist/cjs/restricted/manageAccounts.js +0 -68
- package/dist/cjs/restricted/manageAccounts.js.map +0 -1
- package/dist/cjs/restricted/manageState.js +0 -208
- package/dist/cjs/restricted/manageState.js.map +0 -1
- package/dist/cjs/restricted/notify.js +0 -92
- package/dist/cjs/restricted/notify.js.map +0 -1
- package/dist/cjs/utils.js +0 -98
- package/dist/esm/endowments/caveats/generic.js +0 -40
- package/dist/esm/endowments/caveats/generic.js.map +0 -1
- package/dist/esm/endowments/caveats/index.js +0 -4
- package/dist/esm/endowments/caveats/index.js.map +0 -1
- package/dist/esm/endowments/caveats/requestTime.js +0 -93
- package/dist/esm/endowments/caveats/requestTime.js.map +0 -1
- package/dist/esm/endowments/cronjob.js +0 -99
- package/dist/esm/endowments/cronjob.js.map +0 -1
- package/dist/esm/endowments/enum.js +0 -16
- package/dist/esm/endowments/enum.js.map +0 -1
- package/dist/esm/endowments/ethereum-provider.js +0 -33
- package/dist/esm/endowments/ethereum-provider.js.map +0 -1
- package/dist/esm/endowments/home-page.js +0 -27
- package/dist/esm/endowments/home-page.js.map +0 -1
- package/dist/esm/endowments/index.js +0 -68
- package/dist/esm/endowments/index.js.map +0 -1
- package/dist/esm/endowments/keyring.js +0 -95
- package/dist/esm/endowments/keyring.js.map +0 -1
- package/dist/esm/endowments/lifecycle-hooks.js +0 -27
- package/dist/esm/endowments/lifecycle-hooks.js.map +0 -1
- package/dist/esm/endowments/name-lookup.js +0 -146
- package/dist/esm/endowments/name-lookup.js.map +0 -1
- package/dist/esm/endowments/network-access.js +0 -34
- package/dist/esm/endowments/network-access.js.map +0 -1
- package/dist/esm/endowments/rpc.js +0 -92
- package/dist/esm/endowments/rpc.js.map +0 -1
- package/dist/esm/endowments/signature-insight.js +0 -103
- package/dist/esm/endowments/signature-insight.js.map +0 -1
- package/dist/esm/endowments/transaction-insight.js +0 -104
- package/dist/esm/endowments/transaction-insight.js.map +0 -1
- package/dist/esm/endowments/web-assembly.js +0 -32
- package/dist/esm/endowments/web-assembly.js.map +0 -1
- package/dist/esm/index.js +0 -8
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/permissions.js +0 -51
- package/dist/esm/permissions.js.map +0 -1
- package/dist/esm/permitted/createInterface.js +0 -58
- package/dist/esm/permitted/createInterface.js.map +0 -1
- package/dist/esm/permitted/getAllSnaps.js +0 -37
- package/dist/esm/permitted/getAllSnaps.js.map +0 -1
- package/dist/esm/permitted/getClientStatus.js +0 -32
- package/dist/esm/permitted/getClientStatus.js.map +0 -1
- package/dist/esm/permitted/getFile.js +0 -45
- package/dist/esm/permitted/getFile.js.map +0 -1
- package/dist/esm/permitted/getInterfaceState.js +0 -57
- package/dist/esm/permitted/getInterfaceState.js.map +0 -1
- package/dist/esm/permitted/getSnaps.js +0 -31
- package/dist/esm/permitted/getSnaps.js.map +0 -1
- package/dist/esm/permitted/handlers.js +0 -25
- package/dist/esm/permitted/handlers.js.map +0 -1
- package/dist/esm/permitted/index.js +0 -4
- package/dist/esm/permitted/index.js.map +0 -1
- package/dist/esm/permitted/invokeKeyring.js +0 -79
- package/dist/esm/permitted/invokeKeyring.js.map +0 -1
- package/dist/esm/permitted/invokeSnapSugar.js +0 -60
- package/dist/esm/permitted/invokeSnapSugar.js.map +0 -1
- package/dist/esm/permitted/middleware.js +0 -34
- package/dist/esm/permitted/middleware.js.map +0 -1
- package/dist/esm/permitted/requestSnaps.js +0 -118
- package/dist/esm/permitted/requestSnaps.js.map +0 -1
- package/dist/esm/permitted/updateInterface.js +0 -60
- package/dist/esm/permitted/updateInterface.js.map +0 -1
- package/dist/esm/restricted/caveats/index.js +0 -20
- package/dist/esm/restricted/caveats/index.js.map +0 -1
- package/dist/esm/restricted/caveats/permittedCoinTypes.js +0 -77
- package/dist/esm/restricted/caveats/permittedCoinTypes.js.map +0 -1
- package/dist/esm/restricted/caveats/permittedDerivationPaths.js +0 -64
- package/dist/esm/restricted/caveats/permittedDerivationPaths.js.map +0 -1
- package/dist/esm/restricted/caveats/snapIds.js +0 -50
- package/dist/esm/restricted/caveats/snapIds.js.map +0 -1
- package/dist/esm/restricted/dialog.js +0 -164
- package/dist/esm/restricted/dialog.js.map +0 -1
- package/dist/esm/restricted/getBip32Entropy.js +0 -67
- package/dist/esm/restricted/getBip32Entropy.js.map +0 -1
- package/dist/esm/restricted/getBip32PublicKey.js +0 -79
- package/dist/esm/restricted/getBip32PublicKey.js.map +0 -1
- package/dist/esm/restricted/getBip44Entropy.js +0 -69
- package/dist/esm/restricted/getBip44Entropy.js.map +0 -1
- package/dist/esm/restricted/getEntropy.js +0 -58
- package/dist/esm/restricted/getEntropy.js.map +0 -1
- package/dist/esm/restricted/getLocale.js +0 -42
- package/dist/esm/restricted/getLocale.js.map +0 -1
- package/dist/esm/restricted/index.js +0 -27
- package/dist/esm/restricted/index.js.map +0 -1
- package/dist/esm/restricted/invokeSnap.js +0 -89
- package/dist/esm/restricted/invokeSnap.js.map +0 -1
- package/dist/esm/restricted/manageAccounts.js +0 -60
- package/dist/esm/restricted/manageAccounts.js.map +0 -1
- package/dist/esm/restricted/manageState.js +0 -225
- package/dist/esm/restricted/manageState.js.map +0 -1
- package/dist/esm/restricted/notify.js +0 -92
- package/dist/esm/restricted/notify.js.map +0 -1
- package/dist/esm/utils.js +0 -124
- package/dist/esm/utils.js.map +0 -1
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// src/endowments/cronjob.ts
|
|
2
|
+
import { PermissionType, SubjectType } from "@metamask/permission-controller";
|
|
3
|
+
import { rpcErrors } from "@metamask/rpc-errors";
|
|
4
|
+
import {
|
|
5
|
+
SnapCaveatType,
|
|
6
|
+
isCronjobSpecificationArray
|
|
7
|
+
} from "@metamask/snaps-utils";
|
|
8
|
+
import { assert, hasProperty, isPlainObject } from "@metamask/utils";
|
|
9
|
+
var permissionName = "endowment:cronjob" /* Cronjob */;
|
|
10
|
+
var specificationBuilder = (_builderOptions) => {
|
|
11
|
+
return {
|
|
12
|
+
permissionType: PermissionType.Endowment,
|
|
13
|
+
targetName: permissionName,
|
|
14
|
+
allowedCaveats: [SnapCaveatType.SnapCronjob],
|
|
15
|
+
endowmentGetter: (_getterOptions) => void 0,
|
|
16
|
+
subjectTypes: [SubjectType.Snap]
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
var cronjobEndowmentBuilder = Object.freeze({
|
|
20
|
+
targetName: permissionName,
|
|
21
|
+
specificationBuilder
|
|
22
|
+
});
|
|
23
|
+
function getCronjobCaveatMapper(value) {
|
|
24
|
+
return {
|
|
25
|
+
caveats: [
|
|
26
|
+
{
|
|
27
|
+
type: SnapCaveatType.SnapCronjob,
|
|
28
|
+
value
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function getCronjobCaveatJobs(permission) {
|
|
34
|
+
if (!permission?.caveats) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
assert(permission.caveats.length === 1);
|
|
38
|
+
assert(permission.caveats[0].type === SnapCaveatType.SnapCronjob);
|
|
39
|
+
const caveat = permission.caveats[0];
|
|
40
|
+
return caveat.value?.jobs ?? null;
|
|
41
|
+
}
|
|
42
|
+
function validateCronjobCaveat(caveat) {
|
|
43
|
+
if (!hasProperty(caveat, "value") || !isPlainObject(caveat.value)) {
|
|
44
|
+
throw rpcErrors.invalidParams({
|
|
45
|
+
message: "Expected a plain object."
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
const { value } = caveat;
|
|
49
|
+
if (!hasProperty(value, "jobs") || !isPlainObject(value)) {
|
|
50
|
+
throw rpcErrors.invalidParams({
|
|
51
|
+
message: "Expected a plain object."
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (!isCronjobSpecificationArray(value.jobs)) {
|
|
55
|
+
throw rpcErrors.invalidParams({
|
|
56
|
+
message: "Expected a valid cronjob specification array."
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
var cronjobCaveatSpecifications = {
|
|
61
|
+
[SnapCaveatType.SnapCronjob]: Object.freeze({
|
|
62
|
+
type: SnapCaveatType.SnapCronjob,
|
|
63
|
+
validator: (caveat) => validateCronjobCaveat(caveat)
|
|
64
|
+
})
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
export {
|
|
68
|
+
cronjobEndowmentBuilder,
|
|
69
|
+
getCronjobCaveatMapper,
|
|
70
|
+
getCronjobCaveatJobs,
|
|
71
|
+
validateCronjobCaveat,
|
|
72
|
+
cronjobCaveatSpecifications
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=chunk-UBPHGXCO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/endowments/cronjob.ts"],"sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n PermissionConstraint,\n Caveat,\n CaveatSpecificationConstraint,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { CronjobSpecification } from '@metamask/snaps-utils';\nimport {\n SnapCaveatType,\n isCronjobSpecificationArray,\n} from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { assert, hasProperty, isPlainObject } from '@metamask/utils';\n\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.Cronjob;\n\ntype CronjobEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: any) => undefined;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n}>;\n\n/**\n * `endowment:cronjob` returns nothing; it is intended to be used as a flag to determine whether the snap wants to run cronjobs.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the cronjob endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n CronjobEndowmentSpecification\n> = (_builderOptions?: any) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: [SnapCaveatType.SnapCronjob],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => undefined,\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const cronjobEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n\n/**\n * Map a raw value from the `initialPermissions` to a caveat specification.\n * Note that this function does not do any validation, that's handled by the\n * PermissionsController when the permission is requested.\n *\n * @param value - The raw value from the `initialPermissions`.\n * @returns The caveat specification.\n */\nexport function getCronjobCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n return {\n caveats: [\n {\n type: SnapCaveatType.SnapCronjob,\n value,\n },\n ],\n };\n}\n\n/**\n * Getter function to get the cronjobs from a permission.\n *\n * This does basic validation of the caveat, but does not validate the type or\n * value of the namespaces object itself, as this is handled by the\n * `PermissionsController` when the permission is requested.\n *\n * @param permission - The permission to get the keyring namespaces from.\n * @returns The cronjobs, or `null` if the permission does not have a\n * cronjob caveat.\n */\nexport function getCronjobCaveatJobs(\n permission?: PermissionConstraint,\n): CronjobSpecification[] | null {\n if (!permission?.caveats) {\n return null;\n }\n\n assert(permission.caveats.length === 1);\n assert(permission.caveats[0].type === SnapCaveatType.SnapCronjob);\n\n const caveat = permission.caveats[0] as Caveat<string, { jobs: Json[] }>;\n\n return (caveat.value?.jobs as CronjobSpecification[]) ?? null;\n}\n\n/**\n * Validate the cronjob specification values associated with a caveat.\n * This validates that the value is a non-empty array with valid\n * cronjob expression and request object.\n *\n * @param caveat - The caveat to validate.\n * @throws If the value is invalid.\n */\nexport function validateCronjobCaveat(caveat: Caveat<string, any>) {\n if (!hasProperty(caveat, 'value') || !isPlainObject(caveat.value)) {\n throw rpcErrors.invalidParams({\n message: 'Expected a plain object.',\n });\n }\n\n const { value } = caveat;\n\n if (!hasProperty(value, 'jobs') || !isPlainObject(value)) {\n throw rpcErrors.invalidParams({\n message: 'Expected a plain object.',\n });\n }\n\n if (!isCronjobSpecificationArray(value.jobs)) {\n throw rpcErrors.invalidParams({\n message: 'Expected a valid cronjob specification array.',\n });\n }\n}\n\n/**\n * Caveat specification for the Cronjob.\n */\nexport const cronjobCaveatSpecifications: Record<\n SnapCaveatType.SnapCronjob,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.SnapCronjob]: Object.freeze({\n type: SnapCaveatType.SnapCronjob,\n validator: (caveat) => validateCronjobCaveat(caveat),\n }),\n};\n"],"mappings":";AAQA,SAAS,gBAAgB,mBAAmB;AAC5C,SAAS,iBAAiB;AAE1B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP,SAAS,QAAQ,aAAa,qBAAqB;AAInD,IAAM;AAeN,IAAM,uBAIF,CAAC,oBAA0B;AAC7B,SAAO;AAAA,IACL,gBAAgB,eAAe;AAAA,IAC/B,YAAY;AAAA,IACZ,gBAAgB,CAAC,eAAe,WAAW;AAAA,IAC3C,iBAAiB,CAAC,mBAA2C;AAAA,IAC7D,cAAc,CAAC,YAAY,IAAI;AAAA,EACjC;AACF;AAEO,IAAM,0BAA0B,OAAO,OAAO;AAAA,EACnD,YAAY;AAAA,EACZ;AACF,CAAU;AAUH,SAAS,uBACd,OACuC;AACvC,SAAO;AAAA,IACL,SAAS;AAAA,MACP;AAAA,QACE,MAAM,eAAe;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAaO,SAAS,qBACd,YAC+B;AAC/B,MAAI,CAAC,YAAY,SAAS;AACxB,WAAO;AAAA,EACT;AAEA,SAAO,WAAW,QAAQ,WAAW,CAAC;AACtC,SAAO,WAAW,QAAQ,CAAC,EAAE,SAAS,eAAe,WAAW;AAEhE,QAAM,SAAS,WAAW,QAAQ,CAAC;AAEnC,SAAQ,OAAO,OAAO,QAAmC;AAC3D;AAUO,SAAS,sBAAsB,QAA6B;AACjE,MAAI,CAAC,YAAY,QAAQ,OAAO,KAAK,CAAC,cAAc,OAAO,KAAK,GAAG;AACjE,UAAM,UAAU,cAAc;AAAA,MAC5B,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,QAAM,EAAE,MAAM,IAAI;AAElB,MAAI,CAAC,YAAY,OAAO,MAAM,KAAK,CAAC,cAAc,KAAK,GAAG;AACxD,UAAM,UAAU,cAAc;AAAA,MAC5B,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,MAAI,CAAC,4BAA4B,MAAM,IAAI,GAAG;AAC5C,UAAM,UAAU,cAAc;AAAA,MAC5B,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACF;AAKO,IAAM,8BAGT;AAAA,EACF,CAAC,eAAe,WAAW,GAAG,OAAO,OAAO;AAAA,IAC1C,MAAM,eAAe;AAAA,IACrB,WAAW,CAAC,WAAW,sBAAsB,MAAM;AAAA,EACrD,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createGenericPermissionValidator
|
|
3
|
+
} from "./chunk-TT4DP2YW.mjs";
|
|
4
|
+
|
|
5
|
+
// src/endowments/rpc.ts
|
|
6
|
+
import { PermissionType, SubjectType } from "@metamask/permission-controller";
|
|
7
|
+
import { rpcErrors } from "@metamask/rpc-errors";
|
|
8
|
+
import { assertIsRpcOrigins, SnapCaveatType } from "@metamask/snaps-utils";
|
|
9
|
+
import { hasProperty, isPlainObject, assert } from "@metamask/utils";
|
|
10
|
+
var targetName = "endowment:rpc" /* Rpc */;
|
|
11
|
+
var specificationBuilder = (_builderOptions) => {
|
|
12
|
+
return {
|
|
13
|
+
permissionType: PermissionType.Endowment,
|
|
14
|
+
targetName,
|
|
15
|
+
allowedCaveats: [SnapCaveatType.RpcOrigin, SnapCaveatType.MaxRequestTime],
|
|
16
|
+
endowmentGetter: (_getterOptions) => void 0,
|
|
17
|
+
validator: createGenericPermissionValidator([
|
|
18
|
+
{ type: SnapCaveatType.RpcOrigin },
|
|
19
|
+
{ type: SnapCaveatType.MaxRequestTime, optional: true }
|
|
20
|
+
]),
|
|
21
|
+
subjectTypes: [SubjectType.Snap]
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
var rpcEndowmentBuilder = Object.freeze({
|
|
25
|
+
targetName,
|
|
26
|
+
specificationBuilder
|
|
27
|
+
});
|
|
28
|
+
function validateCaveatOrigins(caveat) {
|
|
29
|
+
if (!hasProperty(caveat, "value") || !isPlainObject(caveat.value)) {
|
|
30
|
+
throw rpcErrors.invalidParams({
|
|
31
|
+
message: "Invalid JSON-RPC origins: Expected a plain object."
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const { value } = caveat;
|
|
35
|
+
assertIsRpcOrigins(value, rpcErrors.invalidParams);
|
|
36
|
+
}
|
|
37
|
+
function getRpcCaveatMapper(value) {
|
|
38
|
+
return {
|
|
39
|
+
caveats: [
|
|
40
|
+
{
|
|
41
|
+
type: SnapCaveatType.RpcOrigin,
|
|
42
|
+
value
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function getRpcCaveatOrigins(permission) {
|
|
48
|
+
const caveats = permission?.caveats?.filter(
|
|
49
|
+
(caveat2) => caveat2.type === SnapCaveatType.RpcOrigin
|
|
50
|
+
);
|
|
51
|
+
assert(caveats);
|
|
52
|
+
assert(caveats.length === 1);
|
|
53
|
+
const caveat = caveats[0];
|
|
54
|
+
return caveat.value;
|
|
55
|
+
}
|
|
56
|
+
var rpcCaveatSpecifications = {
|
|
57
|
+
[SnapCaveatType.RpcOrigin]: Object.freeze({
|
|
58
|
+
type: SnapCaveatType.RpcOrigin,
|
|
59
|
+
validator: (caveat) => validateCaveatOrigins(caveat)
|
|
60
|
+
})
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export {
|
|
64
|
+
rpcEndowmentBuilder,
|
|
65
|
+
getRpcCaveatMapper,
|
|
66
|
+
getRpcCaveatOrigins,
|
|
67
|
+
rpcCaveatSpecifications
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=chunk-VCGZNL35.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/endowments/rpc.ts"],"sourcesContent":["import type {\n Caveat,\n CaveatSpecificationConstraint,\n EndowmentGetterParams,\n PermissionConstraint,\n PermissionSpecificationBuilder,\n PermissionValidatorConstraint,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { RpcOrigins } from '@metamask/snaps-utils';\nimport { assertIsRpcOrigins, SnapCaveatType } from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\nimport { hasProperty, isPlainObject, assert } from '@metamask/utils';\n\nimport { createGenericPermissionValidator } from './caveats';\nimport { SnapEndowments } from './enum';\n\nconst targetName = SnapEndowments.Rpc;\n\ntype RpcSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof targetName;\n endowmentGetter: (_options?: any) => undefined;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n subjectTypes: readonly SubjectType[];\n}>;\n\ntype RpcSpecificationBuilderOptions = {\n // Empty for now.\n};\n\n/**\n * The specification builder for the JSON-RPC endowment permission.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the JSON-RPC endowment permission.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n RpcSpecificationBuilderOptions,\n RpcSpecification\n> = (_builderOptions?: any): RpcSpecification => {\n return {\n permissionType: PermissionType.Endowment,\n targetName,\n allowedCaveats: [SnapCaveatType.RpcOrigin, SnapCaveatType.MaxRequestTime],\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => undefined,\n validator: createGenericPermissionValidator([\n { type: SnapCaveatType.RpcOrigin },\n { type: SnapCaveatType.MaxRequestTime, optional: true },\n ]),\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const rpcEndowmentBuilder = Object.freeze({\n targetName,\n specificationBuilder,\n} as const);\n\n/**\n * Validate the value of a caveat. This does not validate the type of the\n * caveat itself, only the value of the caveat.\n *\n * @param caveat - The caveat to validate.\n * @throws If the caveat value is invalid.\n */\nfunction validateCaveatOrigins(caveat: Caveat<string, any>) {\n if (!hasProperty(caveat, 'value') || !isPlainObject(caveat.value)) {\n throw rpcErrors.invalidParams({\n message: 'Invalid JSON-RPC origins: Expected a plain object.',\n });\n }\n\n const { value } = caveat;\n assertIsRpcOrigins(value, rpcErrors.invalidParams);\n}\n\n/**\n * Map a raw value from the `initialPermissions` to a caveat specification.\n * Note that this function does not do any validation, that's handled by the\n * PermissionsController when the permission is requested.\n *\n * @param value - The raw value from the `initialPermissions`.\n * @returns The caveat specification.\n */\nexport function getRpcCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n return {\n caveats: [\n {\n type: SnapCaveatType.RpcOrigin,\n value,\n },\n ],\n };\n}\n\n/**\n * Getter function to get the {@link RpcOrigins} caveat value from a permission.\n *\n * @param permission - The permission to get the caveat value from.\n * @returns The caveat value.\n * @throws If the permission does not have a valid {@link RpcOrigins} caveat.\n */\nexport function getRpcCaveatOrigins(\n permission?: PermissionConstraint,\n): RpcOrigins | null {\n const caveats = permission?.caveats?.filter(\n (caveat) => caveat.type === SnapCaveatType.RpcOrigin,\n );\n assert(caveats);\n assert(caveats.length === 1);\n\n const caveat = caveats[0] as Caveat<string, RpcOrigins>;\n return caveat.value;\n}\n\nexport const rpcCaveatSpecifications: Record<\n SnapCaveatType.RpcOrigin,\n CaveatSpecificationConstraint\n> = {\n [SnapCaveatType.RpcOrigin]: Object.freeze({\n type: SnapCaveatType.RpcOrigin,\n validator: (caveat: Caveat<string, any>) => validateCaveatOrigins(caveat),\n }),\n};\n"],"mappings":";;;;;AASA,SAAS,gBAAgB,mBAAmB;AAC5C,SAAS,iBAAiB;AAE1B,SAAS,oBAAoB,sBAAsB;AAEnD,SAAS,aAAa,eAAe,cAAc;AAKnD,IAAM;AAqBN,IAAM,uBAIF,CAAC,oBAA4C;AAC/C,SAAO;AAAA,IACL,gBAAgB,eAAe;AAAA,IAC/B;AAAA,IACA,gBAAgB,CAAC,eAAe,WAAW,eAAe,cAAc;AAAA,IACxE,iBAAiB,CAAC,mBAA2C;AAAA,IAC7D,WAAW,iCAAiC;AAAA,MAC1C,EAAE,MAAM,eAAe,UAAU;AAAA,MACjC,EAAE,MAAM,eAAe,gBAAgB,UAAU,KAAK;AAAA,IACxD,CAAC;AAAA,IACD,cAAc,CAAC,YAAY,IAAI;AAAA,EACjC;AACF;AAEO,IAAM,sBAAsB,OAAO,OAAO;AAAA,EAC/C;AAAA,EACA;AACF,CAAU;AASV,SAAS,sBAAsB,QAA6B;AAC1D,MAAI,CAAC,YAAY,QAAQ,OAAO,KAAK,CAAC,cAAc,OAAO,KAAK,GAAG;AACjE,UAAM,UAAU,cAAc;AAAA,MAC5B,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,QAAM,EAAE,MAAM,IAAI;AAClB,qBAAmB,OAAO,UAAU,aAAa;AACnD;AAUO,SAAS,mBACd,OACuC;AACvC,SAAO;AAAA,IACL,SAAS;AAAA,MACP;AAAA,QACE,MAAM,eAAe;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AASO,SAAS,oBACd,YACmB;AACnB,QAAM,UAAU,YAAY,SAAS;AAAA,IACnC,CAACA,YAAWA,QAAO,SAAS,eAAe;AAAA,EAC7C;AACA,SAAO,OAAO;AACd,SAAO,QAAQ,WAAW,CAAC;AAE3B,QAAM,SAAS,QAAQ,CAAC;AACxB,SAAO,OAAO;AAChB;AAEO,IAAM,0BAGT;AAAA,EACF,CAAC,eAAe,SAAS,GAAG,OAAO,OAAO;AAAA,IACxC,MAAM,eAAe;AAAA,IACrB,WAAW,CAAC,WAAgC,sBAAsB,MAAM;AAAA,EAC1E,CAAC;AACH;","names":["caveat"]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/restricted/caveats/permittedDerivationPaths.ts
|
|
2
|
+
var _rpcerrors = require('@metamask/rpc-errors');
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _snapsutils = require('@metamask/snaps-utils');
|
|
8
|
+
var _utils = require('@metamask/utils');
|
|
9
|
+
var _superstruct = require('superstruct');
|
|
10
|
+
function permittedDerivationPathsCaveatMapper(value) {
|
|
11
|
+
return {
|
|
12
|
+
caveats: [
|
|
13
|
+
{
|
|
14
|
+
type: _snapsutils.SnapCaveatType.PermittedDerivationPaths,
|
|
15
|
+
value
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function validateBIP32Path(value) {
|
|
21
|
+
_utils.assertStruct.call(void 0,
|
|
22
|
+
value,
|
|
23
|
+
_snapsutils.Bip32EntropyStruct,
|
|
24
|
+
"Invalid BIP-32 entropy path definition",
|
|
25
|
+
_rpcerrors.rpcErrors.invalidParams
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
function validateBIP32CaveatPaths(caveat) {
|
|
29
|
+
_utils.assertStruct.call(void 0,
|
|
30
|
+
caveat,
|
|
31
|
+
_superstruct.type.call(void 0, { value: _superstruct.size.call(void 0, _superstruct.array.call(void 0, _snapsutils.Bip32EntropyStruct), 1, Infinity) }),
|
|
32
|
+
"Invalid BIP-32 entropy caveat",
|
|
33
|
+
_rpcerrors.rpcErrors.internal
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
var PermittedDerivationPathsCaveatSpecification = {
|
|
37
|
+
[_snapsutils.SnapCaveatType.PermittedDerivationPaths]: Object.freeze({
|
|
38
|
+
type: _snapsutils.SnapCaveatType.PermittedDerivationPaths,
|
|
39
|
+
decorator: (method, caveat) => {
|
|
40
|
+
return async (args) => {
|
|
41
|
+
const { params } = args;
|
|
42
|
+
validateBIP32Path(params);
|
|
43
|
+
const path = caveat.value.find(
|
|
44
|
+
(caveatPath) => _snapsutils.isEqual.call(void 0,
|
|
45
|
+
params.path.slice(0, caveatPath.path.length),
|
|
46
|
+
caveatPath.path
|
|
47
|
+
) && caveatPath.curve === params.curve
|
|
48
|
+
);
|
|
49
|
+
if (!path) {
|
|
50
|
+
throw _rpcerrors.providerErrors.unauthorized({
|
|
51
|
+
message: "The requested path is not permitted. Allowed paths must be specified in the snap manifest."
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return await method(args);
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
validator: (caveat) => validateBIP32CaveatPaths(caveat)
|
|
58
|
+
})
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
exports.permittedDerivationPathsCaveatMapper = permittedDerivationPathsCaveatMapper; exports.validateBIP32Path = validateBIP32Path; exports.validateBIP32CaveatPaths = validateBIP32CaveatPaths; exports.PermittedDerivationPathsCaveatSpecification = PermittedDerivationPathsCaveatSpecification;
|
|
67
|
+
//# sourceMappingURL=chunk-VHY3NATP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/restricted/caveats/permittedDerivationPaths.ts"],"names":[],"mappings":";AAKA,SAAS,gBAAgB,iBAAiB;AAE1C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,oBAAoB;AAC7B,SAAS,OAAO,MAAM,YAAY;AAU3B,SAAS,qCACd,OACuC;AACvC,SAAO;AAAA,IACL,SAAS;AAAA,MACP;AAAA,QACE,MAAM,eAAe;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAWO,SAAS,kBACd,OAC+B;AAC/B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,EACZ;AACF;AASO,SAAS,yBACd,QACkD;AAClD;AAAA,IACE;AAAA,IACA,KAAK,EAAE,OAAO,KAAK,MAAM,kBAAkB,GAAG,GAAG,QAAQ,EAAE,CAAC;AAAA,IAC5D;AAAA,IACA,UAAU;AAAA,EACZ;AACF;AAEO,IAAM,8CAGT;AAAA,EACF,CAAC,eAAe,wBAAwB,GAAG,OAAO,OAAO;AAAA,IACvD,MAAM,eAAe;AAAA,IACrB,WAAW,CACT,QACA,WACG;AACH,aAAO,OAAO,SAAS;AACrB,cAAM,EAAE,OAAO,IAAI;AACnB,0BAAkB,MAAM;AAExB,cAAM,OAAO,OAAO,MAAM;AAAA,UACxB,CAAC,eACC;AAAA,YACE,OAAO,KAAK,MAAM,GAAG,WAAW,KAAK,MAAM;AAAA,YAC3C,WAAW;AAAA,UACb,KAAK,WAAW,UAAU,OAAO;AAAA,QACrC;AAEA,YAAI,CAAC,MAAM;AACT,gBAAM,eAAe,aAAa;AAAA,YAChC,SACE;AAAA,UACJ,CAAC;AAAA,QACH;AAEA,eAAO,MAAM,OAAO,IAAI;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,WAAW,CAAC,WAAW,yBAAyB,MAAM;AAAA,EACxD,CAAC;AACH","sourcesContent":["import type {\n Caveat,\n PermissionConstraint,\n RestrictedMethodCaveatSpecificationConstraint,\n} from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type { Bip32Entropy } from '@metamask/snaps-utils';\nimport {\n SnapCaveatType,\n Bip32EntropyStruct,\n isEqual,\n} from '@metamask/snaps-utils';\nimport type { Json } from '@metamask/utils';\nimport { assertStruct } from '@metamask/utils';\nimport { array, size, type } from 'superstruct';\n\n/**\n * Map a raw value from the `initialPermissions` to a caveat specification.\n * Note that this function does not do any validation, that's handled by the\n * PermissionsController when the permission is requested.\n *\n * @param value - The raw value from the `initialPermissions`.\n * @returns The caveat specification.\n */\nexport function permittedDerivationPathsCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n return {\n caveats: [\n {\n type: SnapCaveatType.PermittedDerivationPaths,\n value,\n },\n ],\n };\n}\n\n/**\n * Validate a caveat path object. The object must consist of a `path` array and\n * a `curve` string. Paths must start with `m`, and must contain at\n * least two indices. If `ed25519` is used, this checks if all the path indices\n * are hardened.\n *\n * @param value - The value to validate.\n * @throws If the value is invalid.\n */\nexport function validateBIP32Path(\n value: unknown,\n): asserts value is Bip32Entropy {\n assertStruct(\n value,\n Bip32EntropyStruct,\n 'Invalid BIP-32 entropy path definition',\n rpcErrors.invalidParams,\n );\n}\n\n/**\n * Validate the path values associated with a caveat. This validates that the\n * value is a non-empty array with valid derivation paths and curves.\n *\n * @param caveat - The caveat to validate.\n * @throws If the value is invalid.\n */\nexport function validateBIP32CaveatPaths(\n caveat: Caveat<string, any>,\n): asserts caveat is Caveat<string, Bip32Entropy[]> {\n assertStruct(\n caveat,\n type({ value: size(array(Bip32EntropyStruct), 1, Infinity) }),\n 'Invalid BIP-32 entropy caveat',\n rpcErrors.internal,\n );\n}\n\nexport const PermittedDerivationPathsCaveatSpecification: Record<\n SnapCaveatType.PermittedDerivationPaths,\n RestrictedMethodCaveatSpecificationConstraint\n> = {\n [SnapCaveatType.PermittedDerivationPaths]: Object.freeze({\n type: SnapCaveatType.PermittedDerivationPaths,\n decorator: (\n method,\n caveat: Caveat<SnapCaveatType.PermittedDerivationPaths, Bip32Entropy[]>,\n ) => {\n return async (args) => {\n const { params } = args;\n validateBIP32Path(params);\n\n const path = caveat.value.find(\n (caveatPath) =>\n isEqual(\n params.path.slice(0, caveatPath.path.length),\n caveatPath.path,\n ) && caveatPath.curve === params.curve,\n );\n\n if (!path) {\n throw providerErrors.unauthorized({\n message:\n 'The requested path is not permitted. Allowed paths must be specified in the snap manifest.',\n });\n }\n\n return await method(args);\n };\n },\n validator: (caveat) => validateBIP32CaveatPaths(caveat),\n }),\n};\n"]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/restricted/getBip44Entropy.ts
|
|
2
|
+
var _keytree = require('@metamask/key-tree');
|
|
3
|
+
var _permissioncontroller = require('@metamask/permission-controller');
|
|
4
|
+
var _rpcerrors = require('@metamask/rpc-errors');
|
|
5
|
+
var _snapsutils = require('@metamask/snaps-utils');
|
|
6
|
+
var targetName = "snap_getBip44Entropy";
|
|
7
|
+
var specificationBuilder = ({ methodHooks: methodHooks2 }) => {
|
|
8
|
+
return {
|
|
9
|
+
permissionType: _permissioncontroller.PermissionType.RestrictedMethod,
|
|
10
|
+
targetName,
|
|
11
|
+
allowedCaveats: [_snapsutils.SnapCaveatType.PermittedCoinTypes],
|
|
12
|
+
methodImplementation: getBip44EntropyImplementation(methodHooks2),
|
|
13
|
+
validator: ({ caveats }) => {
|
|
14
|
+
if (caveats?.length !== 1 || caveats[0].type !== _snapsutils.SnapCaveatType.PermittedCoinTypes) {
|
|
15
|
+
throw _rpcerrors.rpcErrors.invalidParams({
|
|
16
|
+
message: `Expected a single "${_snapsutils.SnapCaveatType.PermittedCoinTypes}" caveat.`
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
subjectTypes: [_permissioncontroller.SubjectType.Snap]
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
var methodHooks = {
|
|
24
|
+
getMnemonic: true,
|
|
25
|
+
getUnlockPromise: true
|
|
26
|
+
};
|
|
27
|
+
var getBip44EntropyBuilder = Object.freeze({
|
|
28
|
+
targetName,
|
|
29
|
+
specificationBuilder,
|
|
30
|
+
methodHooks
|
|
31
|
+
});
|
|
32
|
+
function getBip44EntropyImplementation({
|
|
33
|
+
getMnemonic,
|
|
34
|
+
getUnlockPromise
|
|
35
|
+
}) {
|
|
36
|
+
return async function getBip44Entropy(args) {
|
|
37
|
+
await getUnlockPromise(true);
|
|
38
|
+
const params = args.params;
|
|
39
|
+
const node = await _keytree.BIP44CoinTypeNode.fromDerivationPath([
|
|
40
|
+
await getMnemonic(),
|
|
41
|
+
`bip32:44'`,
|
|
42
|
+
`bip32:${params.coinType}'`
|
|
43
|
+
]);
|
|
44
|
+
return node.toJSON();
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
exports.getBip44EntropyBuilder = getBip44EntropyBuilder; exports.getBip44EntropyImplementation = getBip44EntropyImplementation;
|
|
52
|
+
//# sourceMappingURL=chunk-VUA6ICJO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/restricted/getBip44Entropy.ts"],"names":["methodHooks"],"mappings":";AAAA,SAAS,yBAAyB;AAOlC,SAAS,gBAAgB,mBAAmB;AAC5C,SAAS,iBAAiB;AAK1B,SAAS,sBAAsB;AAK/B,IAAM,aAAa;AAsCnB,IAAM,uBAIF,CAAC,EAAE,aAAAA,aAAY,MAAkD;AACnE,SAAO;AAAA,IACL,gBAAgB,eAAe;AAAA,IAC/B;AAAA,IACA,gBAAgB,CAAC,eAAe,kBAAkB;AAAA,IAClD,sBAAsB,8BAA8BA,YAAW;AAAA,IAC/D,WAAW,CAAC,EAAE,QAAQ,MAAM;AAC1B,UACE,SAAS,WAAW,KACpB,QAAQ,CAAC,EAAE,SAAS,eAAe,oBACnC;AACA,cAAM,UAAU,cAAc;AAAA,UAC5B,SAAS,sBAAsB,eAAe,kBAAkB;AAAA,QAClE,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,cAAc,CAAC,YAAY,IAAI;AAAA,EACjC;AACF;AAEA,IAAM,cAA6D;AAAA,EACjE,aAAa;AAAA,EACb,kBAAkB;AACpB;AAEO,IAAM,yBAAyB,OAAO,OAAO;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AACF,CAAU;AAcH,SAAS,8BAA8B;AAAA,EAC5C;AAAA,EACA;AACF,GAA+B;AAC7B,SAAO,eAAe,gBACpB,MACgC;AAChC,UAAM,iBAAiB,IAAI;AAG3B,UAAM,SAAS,KAAK;AAEpB,UAAM,OAAO,MAAM,kBAAkB,mBAAmB;AAAA,MACtD,MAAM,YAAY;AAAA,MAClB;AAAA,MACA,SAAS,OAAO,QAAQ;AAAA,IAC1B,CAAC;AAED,WAAO,KAAK,OAAO;AAAA,EACrB;AACF","sourcesContent":["import { BIP44CoinTypeNode } from '@metamask/key-tree';\nimport type {\n PermissionSpecificationBuilder,\n PermissionValidatorConstraint,\n RestrictedMethodOptions,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n GetBip44EntropyParams,\n GetBip44EntropyResult,\n} from '@metamask/snaps-sdk';\nimport { SnapCaveatType } from '@metamask/snaps-utils';\nimport type { NonEmptyArray } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nconst targetName = 'snap_getBip44Entropy';\n\nexport type GetBip44EntropyMethodHooks = {\n /**\n * @returns The mnemonic of the user's primary keyring.\n */\n getMnemonic: () => Promise<Uint8Array>;\n\n /**\n * Waits for the extension to be unlocked.\n *\n * @returns A promise that resolves once the extension is unlocked.\n */\n getUnlockPromise: (shouldShowUnlockRequest: boolean) => Promise<void>;\n};\n\ntype GetBip44EntropySpecificationBuilderOptions = {\n methodHooks: GetBip44EntropyMethodHooks;\n};\n\ntype GetBip44EntropySpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.RestrictedMethod;\n targetName: typeof targetName;\n methodImplementation: ReturnType<typeof getBip44EntropyImplementation>;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n}>;\n\n/**\n * The specification builder for the `snap_getBip44Entropy` permission.\n * `snap_getBip44Entropy_*` lets the Snap control private keys for a particular\n * BIP-32 coin type.\n *\n * @param options - The specification builder options.\n * @param options.methodHooks - The RPC method hooks needed by the method\n * implementation.\n * @returns The specification for the `snap_getBip44Entropy` permission.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.RestrictedMethod,\n GetBip44EntropySpecificationBuilderOptions,\n GetBip44EntropySpecification\n> = ({ methodHooks }: GetBip44EntropySpecificationBuilderOptions) => {\n return {\n permissionType: PermissionType.RestrictedMethod,\n targetName,\n allowedCaveats: [SnapCaveatType.PermittedCoinTypes],\n methodImplementation: getBip44EntropyImplementation(methodHooks),\n validator: ({ caveats }) => {\n if (\n caveats?.length !== 1 ||\n caveats[0].type !== SnapCaveatType.PermittedCoinTypes\n ) {\n throw rpcErrors.invalidParams({\n message: `Expected a single \"${SnapCaveatType.PermittedCoinTypes}\" caveat.`,\n });\n }\n },\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nconst methodHooks: MethodHooksObject<GetBip44EntropyMethodHooks> = {\n getMnemonic: true,\n getUnlockPromise: true,\n};\n\nexport const getBip44EntropyBuilder = Object.freeze({\n targetName,\n specificationBuilder,\n methodHooks,\n} as const);\n\n/**\n * Builds the method implementation for `snap_getBip44Entropy`.\n *\n * @param hooks - The RPC method hooks.\n * @param hooks.getMnemonic - A function to retrieve the Secret Recovery Phrase\n * of the user.\n * @param hooks.getUnlockPromise - A function that resolves once the MetaMask\n * extension is unlocked and prompts the user to unlock their MetaMask if it is\n * locked.\n * @returns The method implementation which returns a `BIP44CoinTypeNode`.\n * @throws If the params are invalid.\n */\nexport function getBip44EntropyImplementation({\n getMnemonic,\n getUnlockPromise,\n}: GetBip44EntropyMethodHooks) {\n return async function getBip44Entropy(\n args: RestrictedMethodOptions<GetBip44EntropyParams>,\n ): Promise<GetBip44EntropyResult> {\n await getUnlockPromise(true);\n\n // `args.params` is validated by the decorator, so it's safe to assert here.\n const params = args.params as GetBip44EntropyParams;\n\n const node = await BIP44CoinTypeNode.fromDerivationPath([\n await getMnemonic(),\n `bip32:44'`,\n `bip32:${params.coinType}'`,\n ]);\n\n return node.toJSON();\n };\n}\n"]}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// src/restricted/invokeSnap.ts
|
|
2
|
+
import { PermissionType } from "@metamask/permission-controller";
|
|
3
|
+
import { rpcErrors } from "@metamask/rpc-errors";
|
|
4
|
+
import { HandlerType, SnapCaveatType } from "@metamask/snaps-utils";
|
|
5
|
+
var WALLET_SNAP_PERMISSION_KEY = "wallet_snap";
|
|
6
|
+
var handleSnapInstall = async ({ requestData, messagingSystem }) => {
|
|
7
|
+
const snaps = requestData.permissions[WALLET_SNAP_PERMISSION_KEY].caveats?.[0].value;
|
|
8
|
+
const permittedSnaps = messagingSystem.call(
|
|
9
|
+
`SnapController:getPermitted`,
|
|
10
|
+
requestData.metadata.origin
|
|
11
|
+
);
|
|
12
|
+
const dedupedSnaps = Object.keys(snaps).reduce(
|
|
13
|
+
(filteredSnaps, snap) => {
|
|
14
|
+
if (!permittedSnaps[snap]) {
|
|
15
|
+
filteredSnaps[snap] = snaps[snap];
|
|
16
|
+
}
|
|
17
|
+
return filteredSnaps;
|
|
18
|
+
},
|
|
19
|
+
{}
|
|
20
|
+
);
|
|
21
|
+
return messagingSystem.call(
|
|
22
|
+
`SnapController:install`,
|
|
23
|
+
requestData.metadata.origin,
|
|
24
|
+
dedupedSnaps
|
|
25
|
+
);
|
|
26
|
+
};
|
|
27
|
+
var specificationBuilder = ({ methodHooks: methodHooks2 }) => {
|
|
28
|
+
return {
|
|
29
|
+
permissionType: PermissionType.RestrictedMethod,
|
|
30
|
+
targetName: WALLET_SNAP_PERMISSION_KEY,
|
|
31
|
+
allowedCaveats: [SnapCaveatType.SnapIds],
|
|
32
|
+
methodImplementation: getInvokeSnapImplementation(methodHooks2),
|
|
33
|
+
validator: ({ caveats }) => {
|
|
34
|
+
if (caveats?.length !== 1 || caveats[0].type !== SnapCaveatType.SnapIds) {
|
|
35
|
+
throw rpcErrors.invalidParams({
|
|
36
|
+
message: `Expected a single "${SnapCaveatType.SnapIds}" caveat.`
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
sideEffect: {
|
|
41
|
+
onPermitted: handleSnapInstall
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
var methodHooks = {
|
|
46
|
+
getSnap: true,
|
|
47
|
+
handleSnapRpcRequest: true
|
|
48
|
+
};
|
|
49
|
+
var invokeSnapBuilder = Object.freeze({
|
|
50
|
+
targetName: WALLET_SNAP_PERMISSION_KEY,
|
|
51
|
+
specificationBuilder,
|
|
52
|
+
methodHooks
|
|
53
|
+
});
|
|
54
|
+
function getInvokeSnapImplementation({
|
|
55
|
+
getSnap,
|
|
56
|
+
handleSnapRpcRequest
|
|
57
|
+
}) {
|
|
58
|
+
return async function invokeSnap(options) {
|
|
59
|
+
const { params = {}, context } = options;
|
|
60
|
+
const { snapId, request } = params;
|
|
61
|
+
if (!getSnap(snapId)) {
|
|
62
|
+
throw rpcErrors.invalidRequest({
|
|
63
|
+
message: `The snap "${snapId}" is not installed. Please install it first, before invoking the snap.`
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
const { origin } = context;
|
|
67
|
+
return await handleSnapRpcRequest({
|
|
68
|
+
snapId,
|
|
69
|
+
origin,
|
|
70
|
+
request,
|
|
71
|
+
handler: HandlerType.OnRpcRequest
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export {
|
|
77
|
+
WALLET_SNAP_PERMISSION_KEY,
|
|
78
|
+
handleSnapInstall,
|
|
79
|
+
invokeSnapBuilder,
|
|
80
|
+
getInvokeSnapImplementation
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=chunk-VVBTXSID.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/restricted/invokeSnap.ts"],"sourcesContent":["import type {\n PermissionSpecificationBuilder,\n RestrictedMethodOptions,\n ValidPermissionSpecification,\n PermissionValidatorConstraint,\n PermissionSideEffect,\n} from '@metamask/permission-controller';\nimport { PermissionType } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n InvokeSnapResult,\n RequestSnapsParams,\n RequestSnapsResult,\n} from '@metamask/snaps-sdk';\nimport type { Snap, SnapRpcHookArgs } from '@metamask/snaps-utils';\nimport { HandlerType, SnapCaveatType } from '@metamask/snaps-utils';\nimport type { Json, NonEmptyArray } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nexport const WALLET_SNAP_PERMISSION_KEY = 'wallet_snap';\n\n// Redeclare installSnaps action type to avoid circular dependencies\nexport type InstallSnaps = {\n type: `SnapController:install`;\n handler: (\n origin: string,\n requestedSnaps: RequestSnapsParams,\n ) => Promise<RequestSnapsResult>;\n};\n\nexport type GetPermittedSnaps = {\n type: `SnapController:getPermitted`;\n handler: (origin: string) => RequestSnapsResult;\n};\n\ntype AllowedActions = InstallSnaps | GetPermittedSnaps;\n\nexport type InvokeSnapMethodHooks = {\n getSnap: (snapId: string) => Snap | undefined;\n handleSnapRpcRequest: ({\n snapId,\n origin,\n handler,\n request,\n }: SnapRpcHookArgs & { snapId: string }) => Promise<unknown>;\n};\n\ntype InvokeSnapSpecificationBuilderOptions = {\n allowedCaveats?: Readonly<NonEmptyArray<string>> | null;\n methodHooks: InvokeSnapMethodHooks;\n};\n\ntype InvokeSnapSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.RestrictedMethod;\n targetName: typeof WALLET_SNAP_PERMISSION_KEY;\n methodImplementation: ReturnType<typeof getInvokeSnapImplementation>;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n validator: PermissionValidatorConstraint;\n sideEffect: {\n onPermitted: PermissionSideEffect<AllowedActions, never>['onPermitted'];\n };\n}>;\n\nexport type InvokeSnapParams = {\n snapId: string;\n request: Record<string, Json>;\n};\n\n/**\n * The side-effect method to handle the snap install.\n *\n * @param params - The side-effect params.\n * @param params.requestData - The request data associated to the requested permission.\n * @param params.messagingSystem - The messenger to call an action.\n */\nexport const handleSnapInstall: PermissionSideEffect<\n AllowedActions,\n never\n>['onPermitted'] = async ({ requestData, messagingSystem }) => {\n const snaps = requestData.permissions[WALLET_SNAP_PERMISSION_KEY].caveats?.[0]\n .value as RequestSnapsParams;\n\n const permittedSnaps = messagingSystem.call(\n `SnapController:getPermitted`,\n requestData.metadata.origin,\n );\n\n const dedupedSnaps = Object.keys(snaps).reduce<RequestSnapsParams>(\n (filteredSnaps, snap) => {\n if (!permittedSnaps[snap]) {\n filteredSnaps[snap] = snaps[snap];\n }\n return filteredSnaps;\n },\n {},\n );\n\n return messagingSystem.call(\n `SnapController:install`,\n requestData.metadata.origin,\n dedupedSnaps,\n );\n};\n/**\n * The specification builder for the `wallet_snap_*` permission.\n *\n * `wallet_snap_*` attempts to invoke an RPC method of the specified Snap.\n *\n * Requesting its corresponding permission will attempt to connect to the Snap,\n * and install it if it's not available yet.\n *\n * @param options - The specification builder options.\n * @param options.methodHooks - The RPC method hooks needed by the method implementation.\n * @returns The specification for the `wallet_snap_*` permission.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.RestrictedMethod,\n InvokeSnapSpecificationBuilderOptions,\n InvokeSnapSpecification\n> = ({ methodHooks }: InvokeSnapSpecificationBuilderOptions) => {\n return {\n permissionType: PermissionType.RestrictedMethod,\n targetName: WALLET_SNAP_PERMISSION_KEY,\n allowedCaveats: [SnapCaveatType.SnapIds],\n methodImplementation: getInvokeSnapImplementation(methodHooks),\n validator: ({ caveats }) => {\n if (caveats?.length !== 1 || caveats[0].type !== SnapCaveatType.SnapIds) {\n throw rpcErrors.invalidParams({\n message: `Expected a single \"${SnapCaveatType.SnapIds}\" caveat.`,\n });\n }\n },\n sideEffect: {\n onPermitted: handleSnapInstall,\n },\n };\n};\n\nconst methodHooks: MethodHooksObject<InvokeSnapMethodHooks> = {\n getSnap: true,\n handleSnapRpcRequest: true,\n};\n\nexport const invokeSnapBuilder = Object.freeze({\n targetName: WALLET_SNAP_PERMISSION_KEY,\n specificationBuilder,\n methodHooks,\n} as const);\n\n/**\n * Builds the method implementation for `wallet_snap_*`.\n *\n * @param hooks - The RPC method hooks.\n * @param hooks.getSnap - A function that retrieves all information stored about a snap.\n * @param hooks.handleSnapRpcRequest - A function that sends an RPC request to a snap's RPC handler or throws if that fails.\n * @returns The method implementation which returns the result of `handleSnapRpcRequest`.\n * @throws If the params are invalid.\n */\nexport function getInvokeSnapImplementation({\n getSnap,\n handleSnapRpcRequest,\n}: InvokeSnapMethodHooks) {\n return async function invokeSnap(\n options: RestrictedMethodOptions<InvokeSnapParams>,\n ): Promise<InvokeSnapResult> {\n const { params = {}, context } = options;\n\n const { snapId, request } = params as InvokeSnapParams;\n\n if (!getSnap(snapId)) {\n throw rpcErrors.invalidRequest({\n message: `The snap \"${snapId}\" is not installed. Please install it first, before invoking the snap.`,\n });\n }\n\n const { origin } = context;\n\n return (await handleSnapRpcRequest({\n snapId,\n origin,\n request,\n handler: HandlerType.OnRpcRequest,\n })) as Json;\n };\n}\n"],"mappings":";AAOA,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAO1B,SAAS,aAAa,sBAAsB;AAKrC,IAAM,6BAA6B;AAwDnC,IAAM,oBAGM,OAAO,EAAE,aAAa,gBAAgB,MAAM;AAC7D,QAAM,QAAQ,YAAY,YAAY,0BAA0B,EAAE,UAAU,CAAC,EAC1E;AAEH,QAAM,iBAAiB,gBAAgB;AAAA,IACrC;AAAA,IACA,YAAY,SAAS;AAAA,EACvB;AAEA,QAAM,eAAe,OAAO,KAAK,KAAK,EAAE;AAAA,IACtC,CAAC,eAAe,SAAS;AACvB,UAAI,CAAC,eAAe,IAAI,GAAG;AACzB,sBAAc,IAAI,IAAI,MAAM,IAAI;AAAA,MAClC;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AAEA,SAAO,gBAAgB;AAAA,IACrB;AAAA,IACA,YAAY,SAAS;AAAA,IACrB;AAAA,EACF;AACF;AAaA,IAAM,uBAIF,CAAC,EAAE,aAAAA,aAAY,MAA6C;AAC9D,SAAO;AAAA,IACL,gBAAgB,eAAe;AAAA,IAC/B,YAAY;AAAA,IACZ,gBAAgB,CAAC,eAAe,OAAO;AAAA,IACvC,sBAAsB,4BAA4BA,YAAW;AAAA,IAC7D,WAAW,CAAC,EAAE,QAAQ,MAAM;AAC1B,UAAI,SAAS,WAAW,KAAK,QAAQ,CAAC,EAAE,SAAS,eAAe,SAAS;AACvE,cAAM,UAAU,cAAc;AAAA,UAC5B,SAAS,sBAAsB,eAAe,OAAO;AAAA,QACvD,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,YAAY;AAAA,MACV,aAAa;AAAA,IACf;AAAA,EACF;AACF;AAEA,IAAM,cAAwD;AAAA,EAC5D,SAAS;AAAA,EACT,sBAAsB;AACxB;AAEO,IAAM,oBAAoB,OAAO,OAAO;AAAA,EAC7C,YAAY;AAAA,EACZ;AAAA,EACA;AACF,CAAU;AAWH,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA;AACF,GAA0B;AACxB,SAAO,eAAe,WACpB,SAC2B;AAC3B,UAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,IAAI;AAEjC,UAAM,EAAE,QAAQ,QAAQ,IAAI;AAE5B,QAAI,CAAC,QAAQ,MAAM,GAAG;AACpB,YAAM,UAAU,eAAe;AAAA,QAC7B,SAAS,aAAa,MAAM;AAAA,MAC9B,CAAC;AAAA,IACH;AAEA,UAAM,EAAE,OAAO,IAAI;AAEnB,WAAQ,MAAM,qBAAqB;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,YAAY;AAAA,IACvB,CAAC;AAAA,EACH;AACF;","names":["methodHooks"]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// src/restricted/caveats/permittedDerivationPaths.ts
|
|
2
|
+
import { providerErrors, rpcErrors } from "@metamask/rpc-errors";
|
|
3
|
+
import {
|
|
4
|
+
SnapCaveatType,
|
|
5
|
+
Bip32EntropyStruct,
|
|
6
|
+
isEqual
|
|
7
|
+
} from "@metamask/snaps-utils";
|
|
8
|
+
import { assertStruct } from "@metamask/utils";
|
|
9
|
+
import { array, size, type } from "superstruct";
|
|
10
|
+
function permittedDerivationPathsCaveatMapper(value) {
|
|
11
|
+
return {
|
|
12
|
+
caveats: [
|
|
13
|
+
{
|
|
14
|
+
type: SnapCaveatType.PermittedDerivationPaths,
|
|
15
|
+
value
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function validateBIP32Path(value) {
|
|
21
|
+
assertStruct(
|
|
22
|
+
value,
|
|
23
|
+
Bip32EntropyStruct,
|
|
24
|
+
"Invalid BIP-32 entropy path definition",
|
|
25
|
+
rpcErrors.invalidParams
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
function validateBIP32CaveatPaths(caveat) {
|
|
29
|
+
assertStruct(
|
|
30
|
+
caveat,
|
|
31
|
+
type({ value: size(array(Bip32EntropyStruct), 1, Infinity) }),
|
|
32
|
+
"Invalid BIP-32 entropy caveat",
|
|
33
|
+
rpcErrors.internal
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
var PermittedDerivationPathsCaveatSpecification = {
|
|
37
|
+
[SnapCaveatType.PermittedDerivationPaths]: Object.freeze({
|
|
38
|
+
type: SnapCaveatType.PermittedDerivationPaths,
|
|
39
|
+
decorator: (method, caveat) => {
|
|
40
|
+
return async (args) => {
|
|
41
|
+
const { params } = args;
|
|
42
|
+
validateBIP32Path(params);
|
|
43
|
+
const path = caveat.value.find(
|
|
44
|
+
(caveatPath) => isEqual(
|
|
45
|
+
params.path.slice(0, caveatPath.path.length),
|
|
46
|
+
caveatPath.path
|
|
47
|
+
) && caveatPath.curve === params.curve
|
|
48
|
+
);
|
|
49
|
+
if (!path) {
|
|
50
|
+
throw providerErrors.unauthorized({
|
|
51
|
+
message: "The requested path is not permitted. Allowed paths must be specified in the snap manifest."
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return await method(args);
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
validator: (caveat) => validateBIP32CaveatPaths(caveat)
|
|
58
|
+
})
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export {
|
|
62
|
+
permittedDerivationPathsCaveatMapper,
|
|
63
|
+
validateBIP32Path,
|
|
64
|
+
validateBIP32CaveatPaths,
|
|
65
|
+
PermittedDerivationPathsCaveatSpecification
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=chunk-WFAY5FPP.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/restricted/caveats/permittedDerivationPaths.ts"],"sourcesContent":["import type {\n Caveat,\n PermissionConstraint,\n RestrictedMethodCaveatSpecificationConstraint,\n} from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type { Bip32Entropy } from '@metamask/snaps-utils';\nimport {\n SnapCaveatType,\n Bip32EntropyStruct,\n isEqual,\n} from '@metamask/snaps-utils';\nimport type { Json } from '@metamask/utils';\nimport { assertStruct } from '@metamask/utils';\nimport { array, size, type } from 'superstruct';\n\n/**\n * Map a raw value from the `initialPermissions` to a caveat specification.\n * Note that this function does not do any validation, that's handled by the\n * PermissionsController when the permission is requested.\n *\n * @param value - The raw value from the `initialPermissions`.\n * @returns The caveat specification.\n */\nexport function permittedDerivationPathsCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n return {\n caveats: [\n {\n type: SnapCaveatType.PermittedDerivationPaths,\n value,\n },\n ],\n };\n}\n\n/**\n * Validate a caveat path object. The object must consist of a `path` array and\n * a `curve` string. Paths must start with `m`, and must contain at\n * least two indices. If `ed25519` is used, this checks if all the path indices\n * are hardened.\n *\n * @param value - The value to validate.\n * @throws If the value is invalid.\n */\nexport function validateBIP32Path(\n value: unknown,\n): asserts value is Bip32Entropy {\n assertStruct(\n value,\n Bip32EntropyStruct,\n 'Invalid BIP-32 entropy path definition',\n rpcErrors.invalidParams,\n );\n}\n\n/**\n * Validate the path values associated with a caveat. This validates that the\n * value is a non-empty array with valid derivation paths and curves.\n *\n * @param caveat - The caveat to validate.\n * @throws If the value is invalid.\n */\nexport function validateBIP32CaveatPaths(\n caveat: Caveat<string, any>,\n): asserts caveat is Caveat<string, Bip32Entropy[]> {\n assertStruct(\n caveat,\n type({ value: size(array(Bip32EntropyStruct), 1, Infinity) }),\n 'Invalid BIP-32 entropy caveat',\n rpcErrors.internal,\n );\n}\n\nexport const PermittedDerivationPathsCaveatSpecification: Record<\n SnapCaveatType.PermittedDerivationPaths,\n RestrictedMethodCaveatSpecificationConstraint\n> = {\n [SnapCaveatType.PermittedDerivationPaths]: Object.freeze({\n type: SnapCaveatType.PermittedDerivationPaths,\n decorator: (\n method,\n caveat: Caveat<SnapCaveatType.PermittedDerivationPaths, Bip32Entropy[]>,\n ) => {\n return async (args) => {\n const { params } = args;\n validateBIP32Path(params);\n\n const path = caveat.value.find(\n (caveatPath) =>\n isEqual(\n params.path.slice(0, caveatPath.path.length),\n caveatPath.path,\n ) && caveatPath.curve === params.curve,\n );\n\n if (!path) {\n throw providerErrors.unauthorized({\n message:\n 'The requested path is not permitted. Allowed paths must be specified in the snap manifest.',\n });\n }\n\n return await method(args);\n };\n },\n validator: (caveat) => validateBIP32CaveatPaths(caveat),\n }),\n};\n"],"mappings":";AAKA,SAAS,gBAAgB,iBAAiB;AAE1C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,oBAAoB;AAC7B,SAAS,OAAO,MAAM,YAAY;AAU3B,SAAS,qCACd,OACuC;AACvC,SAAO;AAAA,IACL,SAAS;AAAA,MACP;AAAA,QACE,MAAM,eAAe;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAWO,SAAS,kBACd,OAC+B;AAC/B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,EACZ;AACF;AASO,SAAS,yBACd,QACkD;AAClD;AAAA,IACE;AAAA,IACA,KAAK,EAAE,OAAO,KAAK,MAAM,kBAAkB,GAAG,GAAG,QAAQ,EAAE,CAAC;AAAA,IAC5D;AAAA,IACA,UAAU;AAAA,EACZ;AACF;AAEO,IAAM,8CAGT;AAAA,EACF,CAAC,eAAe,wBAAwB,GAAG,OAAO,OAAO;AAAA,IACvD,MAAM,eAAe;AAAA,IACrB,WAAW,CACT,QACA,WACG;AACH,aAAO,OAAO,SAAS;AACrB,cAAM,EAAE,OAAO,IAAI;AACnB,0BAAkB,MAAM;AAExB,cAAM,OAAO,OAAO,MAAM;AAAA,UACxB,CAAC,eACC;AAAA,YACE,OAAO,KAAK,MAAM,GAAG,WAAW,KAAK,MAAM;AAAA,YAC3C,WAAW;AAAA,UACb,KAAK,WAAW,UAAU,OAAO;AAAA,QACrC;AAEA,YAAI,CAAC,MAAM;AACT,gBAAM,eAAe,aAAa;AAAA,YAChC,SACE;AAAA,UACJ,CAAC;AAAA,QACH;AAEA,eAAO,MAAM,OAAO,IAAI;AAAA,MAC1B;AAAA,IACF;AAAA,IACA,WAAW,CAAC,WAAW,yBAAyB,MAAM;AAAA,EACxD,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// src/permitted/createInterface.ts
|
|
2
|
+
import { rpcErrors } from "@metamask/rpc-errors";
|
|
3
|
+
import { ComponentStruct } from "@metamask/snaps-sdk";
|
|
4
|
+
import { StructError, create, object } from "superstruct";
|
|
5
|
+
var hookNames = {
|
|
6
|
+
createInterface: true
|
|
7
|
+
};
|
|
8
|
+
var createInterfaceHandler = {
|
|
9
|
+
methodNames: ["snap_createInterface"],
|
|
10
|
+
implementation: getCreateInterfaceImplementation,
|
|
11
|
+
hookNames
|
|
12
|
+
};
|
|
13
|
+
var CreateInterfaceParametersStruct = object({
|
|
14
|
+
ui: ComponentStruct
|
|
15
|
+
});
|
|
16
|
+
async function getCreateInterfaceImplementation(req, res, _next, end, { createInterface }) {
|
|
17
|
+
const { params } = req;
|
|
18
|
+
try {
|
|
19
|
+
const validatedParams = getValidatedParams(params);
|
|
20
|
+
const { ui } = validatedParams;
|
|
21
|
+
res.result = await createInterface(ui);
|
|
22
|
+
} catch (error) {
|
|
23
|
+
return end(error);
|
|
24
|
+
}
|
|
25
|
+
return end();
|
|
26
|
+
}
|
|
27
|
+
function getValidatedParams(params) {
|
|
28
|
+
try {
|
|
29
|
+
return create(params, CreateInterfaceParametersStruct);
|
|
30
|
+
} catch (error) {
|
|
31
|
+
if (error instanceof StructError) {
|
|
32
|
+
throw rpcErrors.invalidParams({
|
|
33
|
+
message: `Invalid params: ${error.message}.`
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
throw rpcErrors.internal();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export {
|
|
41
|
+
createInterfaceHandler
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=chunk-WLDEPJGG.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/permitted/createInterface.ts"],"sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n Component,\n CreateInterfaceParams,\n CreateInterfaceResult,\n JsonRpcRequest,\n} from '@metamask/snaps-sdk';\nimport { ComponentStruct } from '@metamask/snaps-sdk';\nimport { type InferMatching } from '@metamask/snaps-utils';\nimport type { PendingJsonRpcResponse } from '@metamask/utils';\nimport { StructError, create, object } from 'superstruct';\n\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<CreateInterfaceMethodHooks> = {\n createInterface: true,\n};\n\nexport type CreateInterfaceMethodHooks = {\n /**\n * @param ui - The UI components.\n * @returns The unique identifier of the interface.\n */\n createInterface: (ui: Component) => Promise<string>;\n};\n\nexport const createInterfaceHandler: PermittedHandlerExport<\n CreateInterfaceMethodHooks,\n CreateInterfaceParameters,\n CreateInterfaceResult\n> = {\n methodNames: ['snap_createInterface'],\n implementation: getCreateInterfaceImplementation,\n hookNames,\n};\n\nconst CreateInterfaceParametersStruct = object({\n ui: ComponentStruct,\n});\n\nexport type CreateInterfaceParameters = InferMatching<\n typeof CreateInterfaceParametersStruct,\n CreateInterfaceParams\n>;\n\n/**\n * The `snap_createInterface` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback. Not used by this\n * function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param hooks - The RPC method hooks.\n * @param hooks.createInterface - The function to create the interface.\n * @returns Nothing.\n */\nasync function getCreateInterfaceImplementation(\n req: JsonRpcRequest<CreateInterfaceParameters>,\n res: PendingJsonRpcResponse<CreateInterfaceResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { createInterface }: CreateInterfaceMethodHooks,\n): Promise<void> {\n const { params } = req;\n\n try {\n const validatedParams = getValidatedParams(params);\n\n const { ui } = validatedParams;\n\n res.result = await createInterface(ui);\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the createInterface method `params` and returns them cast to the correct\n * type. Throws if validation fails.\n *\n * @param params - The unvalidated params object from the method request.\n * @returns The validated createInterface method parameter object.\n */\nfunction getValidatedParams(params: unknown): CreateInterfaceParameters {\n try {\n return create(params, CreateInterfaceParametersStruct);\n } catch (error) {\n if (error instanceof StructError) {\n throw rpcErrors.invalidParams({\n message: `Invalid params: ${error.message}.`,\n });\n }\n /* istanbul ignore next */\n throw rpcErrors.internal();\n }\n}\n"],"mappings":";AAEA,SAAS,iBAAiB;AAO1B,SAAS,uBAAuB;AAGhC,SAAS,aAAa,QAAQ,cAAc;AAI5C,IAAM,YAA2D;AAAA,EAC/D,iBAAiB;AACnB;AAUO,IAAM,yBAIT;AAAA,EACF,aAAa,CAAC,sBAAsB;AAAA,EACpC,gBAAgB;AAAA,EAChB;AACF;AAEA,IAAM,kCAAkC,OAAO;AAAA,EAC7C,IAAI;AACN,CAAC;AAmBD,eAAe,iCACb,KACA,KACA,OACA,KACA,EAAE,gBAAgB,GACH;AACf,QAAM,EAAE,OAAO,IAAI;AAEnB,MAAI;AACF,UAAM,kBAAkB,mBAAmB,MAAM;AAEjD,UAAM,EAAE,GAAG,IAAI;AAEf,QAAI,SAAS,MAAM,gBAAgB,EAAE;AAAA,EACvC,SAAS,OAAO;AACd,WAAO,IAAI,KAAK;AAAA,EAClB;AAEA,SAAO,IAAI;AACb;AASA,SAAS,mBAAmB,QAA4C;AACtE,MAAI;AACF,WAAO,OAAO,QAAQ,+BAA+B;AAAA,EACvD,SAAS,OAAO;AACd,QAAI,iBAAiB,aAAa;AAChC,YAAM,UAAU,cAAc;AAAA,QAC5B,SAAS,mBAAmB,MAAM,OAAO;AAAA,MAC3C,CAAC;AAAA,IACH;AAEA,UAAM,UAAU,SAAS;AAAA,EAC3B;AACF;","names":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PermittedCoinTypesCaveatSpecification,
|
|
3
|
+
permittedCoinTypesCaveatMapper
|
|
4
|
+
} from "./chunk-EKXDFYIX.mjs";
|
|
5
|
+
import {
|
|
6
|
+
PermittedDerivationPathsCaveatSpecification,
|
|
7
|
+
permittedDerivationPathsCaveatMapper
|
|
8
|
+
} from "./chunk-WFAY5FPP.mjs";
|
|
9
|
+
import {
|
|
10
|
+
SnapIdsCaveatSpecification,
|
|
11
|
+
snapIdsCaveatMapper
|
|
12
|
+
} from "./chunk-CVK2TYJX.mjs";
|
|
13
|
+
import {
|
|
14
|
+
getBip44EntropyBuilder
|
|
15
|
+
} from "./chunk-LR7UR4YU.mjs";
|
|
16
|
+
import {
|
|
17
|
+
getBip32EntropyBuilder
|
|
18
|
+
} from "./chunk-TNRH2LRU.mjs";
|
|
19
|
+
import {
|
|
20
|
+
getBip32PublicKeyBuilder
|
|
21
|
+
} from "./chunk-6WUIFFMQ.mjs";
|
|
22
|
+
import {
|
|
23
|
+
invokeSnapBuilder
|
|
24
|
+
} from "./chunk-VVBTXSID.mjs";
|
|
25
|
+
|
|
26
|
+
// src/restricted/caveats/index.ts
|
|
27
|
+
var caveatSpecifications = {
|
|
28
|
+
...PermittedDerivationPathsCaveatSpecification,
|
|
29
|
+
...PermittedCoinTypesCaveatSpecification,
|
|
30
|
+
...SnapIdsCaveatSpecification
|
|
31
|
+
};
|
|
32
|
+
var caveatMappers = {
|
|
33
|
+
[getBip32EntropyBuilder.targetName]: permittedDerivationPathsCaveatMapper,
|
|
34
|
+
[getBip32PublicKeyBuilder.targetName]: permittedDerivationPathsCaveatMapper,
|
|
35
|
+
[getBip44EntropyBuilder.targetName]: permittedCoinTypesCaveatMapper,
|
|
36
|
+
[invokeSnapBuilder.targetName]: snapIdsCaveatMapper
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export {
|
|
40
|
+
caveatSpecifications,
|
|
41
|
+
caveatMappers
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=chunk-Y4LNTDZ2.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/restricted/caveats/index.ts"],"sourcesContent":["import type { PermissionConstraint } from '@metamask/permission-controller';\nimport type { Json } from '@metamask/utils';\n\nimport { getBip32EntropyBuilder } from '../getBip32Entropy';\nimport { getBip32PublicKeyBuilder } from '../getBip32PublicKey';\nimport { getBip44EntropyBuilder } from '../getBip44Entropy';\nimport { invokeSnapBuilder } from '../invokeSnap';\nimport {\n permittedCoinTypesCaveatMapper,\n PermittedCoinTypesCaveatSpecification,\n} from './permittedCoinTypes';\nimport {\n permittedDerivationPathsCaveatMapper,\n PermittedDerivationPathsCaveatSpecification,\n} from './permittedDerivationPaths';\nimport { snapIdsCaveatMapper, SnapIdsCaveatSpecification } from './snapIds';\n\nexport const caveatSpecifications = {\n ...PermittedDerivationPathsCaveatSpecification,\n ...PermittedCoinTypesCaveatSpecification,\n ...SnapIdsCaveatSpecification,\n} as const;\n\nexport const caveatMappers: Record<\n string,\n (value: Json) => Pick<PermissionConstraint, 'caveats'>\n> = {\n [getBip32EntropyBuilder.targetName]: permittedDerivationPathsCaveatMapper,\n [getBip32PublicKeyBuilder.targetName]: permittedDerivationPathsCaveatMapper,\n [getBip44EntropyBuilder.targetName]: permittedCoinTypesCaveatMapper,\n [invokeSnapBuilder.targetName]: snapIdsCaveatMapper,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAiBO,IAAM,uBAAuB;AAAA,EAClC,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAEO,IAAM,gBAGT;AAAA,EACF,CAAC,uBAAuB,UAAU,GAAG;AAAA,EACrC,CAAC,yBAAyB,UAAU,GAAG;AAAA,EACvC,CAAC,uBAAuB,UAAU,GAAG;AAAA,EACrC,CAAC,kBAAkB,UAAU,GAAG;AAClC;","names":[]}
|