@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
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "invokeKeyringHandler", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return invokeKeyringHandler;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _rpcerrors = require("@metamask/rpc-errors");
|
|
12
|
-
const _snapsutils = require("@metamask/snaps-utils");
|
|
13
|
-
const _utils = require("@metamask/utils");
|
|
14
|
-
const _invokeSnapSugar = require("./invokeSnapSugar");
|
|
15
|
-
const hookNames = {
|
|
16
|
-
hasPermission: true,
|
|
17
|
-
handleSnapRpcRequest: true,
|
|
18
|
-
getSnap: true,
|
|
19
|
-
getAllowedKeyringMethods: true
|
|
20
|
-
};
|
|
21
|
-
const invokeKeyringHandler = {
|
|
22
|
-
methodNames: [
|
|
23
|
-
'wallet_invokeKeyring'
|
|
24
|
-
],
|
|
25
|
-
implementation: invokeKeyringImplementation,
|
|
26
|
-
hookNames
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* The `wallet_invokeKeyring` method implementation.
|
|
30
|
-
* Invokes onKeyringRequest if the snap requested is installed and connected to the dapp.
|
|
31
|
-
*
|
|
32
|
-
* @param req - The JSON-RPC request object.
|
|
33
|
-
* @param res - The JSON-RPC response object.
|
|
34
|
-
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
35
|
-
* function.
|
|
36
|
-
* @param end - The `json-rpc-engine` "end" callback.
|
|
37
|
-
* @param hooks - The RPC method hooks.
|
|
38
|
-
* @param hooks.handleSnapRpcRequest - Invokes a snap with a given RPC request.
|
|
39
|
-
* @param hooks.hasPermission - Checks whether a given origin has a given permission.
|
|
40
|
-
* @param hooks.getSnap - Gets information about a given snap.
|
|
41
|
-
* @param hooks.getAllowedKeyringMethods - Get the list of allowed Keyring
|
|
42
|
-
* methods for a given origin.
|
|
43
|
-
* @returns Nothing.
|
|
44
|
-
*/ async function invokeKeyringImplementation(req, res, _next, end, { handleSnapRpcRequest, hasPermission, getSnap, getAllowedKeyringMethods }) {
|
|
45
|
-
let params;
|
|
46
|
-
try {
|
|
47
|
-
params = (0, _invokeSnapSugar.getValidatedParams)(req.params);
|
|
48
|
-
} catch (error) {
|
|
49
|
-
return end(error);
|
|
50
|
-
}
|
|
51
|
-
// We expect the MM middleware stack to always add the origin to requests
|
|
52
|
-
const { origin } = req;
|
|
53
|
-
const { snapId, request } = params;
|
|
54
|
-
if (!origin || !hasPermission(_snapsutils.WALLET_SNAP_PERMISSION_KEY)) {
|
|
55
|
-
return end(_rpcerrors.rpcErrors.invalidRequest({
|
|
56
|
-
message: `The snap "${snapId}" is not connected to "${origin}". Please connect before invoking the snap.`
|
|
57
|
-
}));
|
|
58
|
-
}
|
|
59
|
-
if (!getSnap(snapId)) {
|
|
60
|
-
return end(_rpcerrors.rpcErrors.invalidRequest({
|
|
61
|
-
message: `The snap "${snapId}" is not installed. Please install it first, before invoking the snap.`
|
|
62
|
-
}));
|
|
63
|
-
}
|
|
64
|
-
if (!(0, _utils.hasProperty)(request, 'method') || typeof request.method !== 'string') {
|
|
65
|
-
return end(_rpcerrors.rpcErrors.invalidRequest({
|
|
66
|
-
message: 'The request must have a method.'
|
|
67
|
-
}));
|
|
68
|
-
}
|
|
69
|
-
const allowedMethods = getAllowedKeyringMethods();
|
|
70
|
-
if (!allowedMethods.includes(request.method)) {
|
|
71
|
-
return end(_rpcerrors.rpcErrors.invalidRequest({
|
|
72
|
-
message: `The origin "${origin}" is not allowed to invoke the method "${request.method}".`
|
|
73
|
-
}));
|
|
74
|
-
}
|
|
75
|
-
try {
|
|
76
|
-
res.result = await handleSnapRpcRequest({
|
|
77
|
-
snapId,
|
|
78
|
-
request,
|
|
79
|
-
handler: _snapsutils.HandlerType.OnKeyringRequest
|
|
80
|
-
});
|
|
81
|
-
} catch (error) {
|
|
82
|
-
return end(error);
|
|
83
|
-
}
|
|
84
|
-
return end();
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
//# sourceMappingURL=invokeKeyring.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/permitted/invokeKeyring.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 InvokeKeyringParams,\n InvokeKeyringResult,\n InvokeSnapParams,\n} from '@metamask/snaps-sdk';\nimport type { Snap, SnapRpcHookArgs } from '@metamask/snaps-utils';\nimport { HandlerType, WALLET_SNAP_PERMISSION_KEY } from '@metamask/snaps-utils';\nimport type { PendingJsonRpcResponse, JsonRpcRequest } from '@metamask/utils';\nimport { hasProperty, type Json } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\nimport { getValidatedParams } from './invokeSnapSugar';\n\nconst hookNames: MethodHooksObject<InvokeKeyringHooks> = {\n hasPermission: true,\n handleSnapRpcRequest: true,\n getSnap: true,\n getAllowedKeyringMethods: true,\n};\n\n/**\n * `wallet_invokeKeyring` gets the requester's permitted and installed Snaps.\n */\nexport const invokeKeyringHandler: PermittedHandlerExport<\n InvokeKeyringHooks,\n InvokeSnapParams,\n InvokeKeyringResult\n> = {\n methodNames: ['wallet_invokeKeyring'],\n implementation: invokeKeyringImplementation,\n hookNames,\n};\n\nexport type InvokeKeyringHooks = {\n hasPermission: (permissionName: string) => boolean;\n\n handleSnapRpcRequest: ({\n snapId,\n handler,\n request,\n }: Omit<SnapRpcHookArgs, 'origin'> & { snapId: string }) => Promise<unknown>;\n\n getSnap: (snapId: string) => Snap | undefined;\n\n getAllowedKeyringMethods: () => string[];\n};\n\n/**\n * The `wallet_invokeKeyring` method implementation.\n * Invokes onKeyringRequest if the snap requested is installed and connected to the dapp.\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.handleSnapRpcRequest - Invokes a snap with a given RPC request.\n * @param hooks.hasPermission - Checks whether a given origin has a given permission.\n * @param hooks.getSnap - Gets information about a given snap.\n * @param hooks.getAllowedKeyringMethods - Get the list of allowed Keyring\n * methods for a given origin.\n * @returns Nothing.\n */\nasync function invokeKeyringImplementation(\n req: JsonRpcRequest<InvokeKeyringParams>,\n res: PendingJsonRpcResponse<InvokeKeyringResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n {\n handleSnapRpcRequest,\n hasPermission,\n getSnap,\n getAllowedKeyringMethods,\n }: InvokeKeyringHooks,\n): Promise<void> {\n let params: InvokeSnapParams;\n try {\n params = getValidatedParams(req.params);\n } catch (error) {\n return end(error);\n }\n\n // We expect the MM middleware stack to always add the origin to requests\n const { origin } = req as JsonRpcRequest & { origin: string };\n const { snapId, request } = params;\n\n if (!origin || !hasPermission(WALLET_SNAP_PERMISSION_KEY)) {\n return end(\n rpcErrors.invalidRequest({\n message: `The snap \"${snapId}\" is not connected to \"${origin}\". Please connect before invoking the snap.`,\n }),\n );\n }\n\n if (!getSnap(snapId)) {\n return end(\n rpcErrors.invalidRequest({\n message: `The snap \"${snapId}\" is not installed. Please install it first, before invoking the snap.`,\n }),\n );\n }\n\n if (!hasProperty(request, 'method') || typeof request.method !== 'string') {\n return end(\n rpcErrors.invalidRequest({\n message: 'The request must have a method.',\n }),\n );\n }\n\n const allowedMethods = getAllowedKeyringMethods();\n if (!allowedMethods.includes(request.method)) {\n return end(\n rpcErrors.invalidRequest({\n message: `The origin \"${origin}\" is not allowed to invoke the method \"${request.method}\".`,\n }),\n );\n }\n\n try {\n res.result = (await handleSnapRpcRequest({\n snapId,\n request,\n handler: HandlerType.OnKeyringRequest,\n })) as Json;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n"],"names":["invokeKeyringHandler","hookNames","hasPermission","handleSnapRpcRequest","getSnap","getAllowedKeyringMethods","methodNames","implementation","invokeKeyringImplementation","req","res","_next","end","params","getValidatedParams","error","origin","snapId","request","WALLET_SNAP_PERMISSION_KEY","rpcErrors","invalidRequest","message","hasProperty","method","allowedMethods","includes","result","handler","HandlerType","OnKeyringRequest"],"mappings":";;;;+BA0BaA;;;eAAAA;;;2BAxBa;4BAO8B;uBAEjB;iCAGJ;AAEnC,MAAMC,YAAmD;IACvDC,eAAe;IACfC,sBAAsB;IACtBC,SAAS;IACTC,0BAA0B;AAC5B;AAKO,MAAML,uBAIT;IACFM,aAAa;QAAC;KAAuB;IACrCC,gBAAgBC;IAChBP;AACF;AAgBA;;;;;;;;;;;;;;;;CAgBC,GACD,eAAeO,4BACbC,GAAwC,EACxCC,GAAgD,EAChDC,KAAc,EACdC,GAA6B,EAC7B,EACET,oBAAoB,EACpBD,aAAa,EACbE,OAAO,EACPC,wBAAwB,EACL;IAErB,IAAIQ;IACJ,IAAI;QACFA,SAASC,IAAAA,mCAAkB,EAACL,IAAII,MAAM;IACxC,EAAE,OAAOE,OAAO;QACd,OAAOH,IAAIG;IACb;IAEA,yEAAyE;IACzE,MAAM,EAAEC,MAAM,EAAE,GAAGP;IACnB,MAAM,EAAEQ,MAAM,EAAEC,OAAO,EAAE,GAAGL;IAE5B,IAAI,CAACG,UAAU,CAACd,cAAciB,sCAA0B,GAAG;QACzD,OAAOP,IACLQ,oBAAS,CAACC,cAAc,CAAC;YACvBC,SAAS,CAAC,UAAU,EAAEL,OAAO,uBAAuB,EAAED,OAAO,2CAA2C,CAAC;QAC3G;IAEJ;IAEA,IAAI,CAACZ,QAAQa,SAAS;QACpB,OAAOL,IACLQ,oBAAS,CAACC,cAAc,CAAC;YACvBC,SAAS,CAAC,UAAU,EAAEL,OAAO,sEAAsE,CAAC;QACtG;IAEJ;IAEA,IAAI,CAACM,IAAAA,kBAAW,EAACL,SAAS,aAAa,OAAOA,QAAQM,MAAM,KAAK,UAAU;QACzE,OAAOZ,IACLQ,oBAAS,CAACC,cAAc,CAAC;YACvBC,SAAS;QACX;IAEJ;IAEA,MAAMG,iBAAiBpB;IACvB,IAAI,CAACoB,eAAeC,QAAQ,CAACR,QAAQM,MAAM,GAAG;QAC5C,OAAOZ,IACLQ,oBAAS,CAACC,cAAc,CAAC;YACvBC,SAAS,CAAC,YAAY,EAAEN,OAAO,uCAAuC,EAAEE,QAAQM,MAAM,CAAC,EAAE,CAAC;QAC5F;IAEJ;IAEA,IAAI;QACFd,IAAIiB,MAAM,GAAI,MAAMxB,qBAAqB;YACvCc;YACAC;YACAU,SAASC,uBAAW,CAACC,gBAAgB;QACvC;IACF,EAAE,OAAOf,OAAO;QACd,OAAOH,IAAIG;IACb;IAEA,OAAOH;AACT"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
invokeSnapSugarHandler: function() {
|
|
13
|
-
return invokeSnapSugarHandler;
|
|
14
|
-
},
|
|
15
|
-
invokeSnapSugar: function() {
|
|
16
|
-
return invokeSnapSugar;
|
|
17
|
-
},
|
|
18
|
-
getValidatedParams: function() {
|
|
19
|
-
return getValidatedParams;
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
const _rpcerrors = require("@metamask/rpc-errors");
|
|
23
|
-
const _utils = require("@metamask/utils");
|
|
24
|
-
const invokeSnapSugarHandler = {
|
|
25
|
-
methodNames: [
|
|
26
|
-
'wallet_invokeSnap'
|
|
27
|
-
],
|
|
28
|
-
implementation: invokeSnapSugar,
|
|
29
|
-
hookNames: undefined
|
|
30
|
-
};
|
|
31
|
-
function invokeSnapSugar(req, _res, next, end) {
|
|
32
|
-
let params;
|
|
33
|
-
try {
|
|
34
|
-
params = getValidatedParams(req.params);
|
|
35
|
-
} catch (error) {
|
|
36
|
-
return end(error);
|
|
37
|
-
}
|
|
38
|
-
req.method = 'wallet_snap';
|
|
39
|
-
req.params = params;
|
|
40
|
-
return next();
|
|
41
|
-
}
|
|
42
|
-
function getValidatedParams(params) {
|
|
43
|
-
if (!(0, _utils.isObject)(params)) {
|
|
44
|
-
throw _rpcerrors.rpcErrors.invalidParams({
|
|
45
|
-
message: 'Expected params to be a single object.'
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
const { snapId, request } = params;
|
|
49
|
-
if (!snapId || typeof snapId !== 'string' || snapId === '') {
|
|
50
|
-
throw _rpcerrors.rpcErrors.invalidParams({
|
|
51
|
-
message: 'Must specify a valid snap ID.'
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
if (!(0, _utils.isObject)(request)) {
|
|
55
|
-
throw _rpcerrors.rpcErrors.invalidParams({
|
|
56
|
-
message: 'Expected request to be a single object.'
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
return params;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
//# sourceMappingURL=invokeSnapSugar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/permitted/invokeSnapSugar.ts"],"sourcesContent":["import type {\n JsonRpcEngineEndCallback,\n JsonRpcEngineNextCallback,\n} from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { InvokeSnapParams, InvokeSnapResult } from '@metamask/snaps-sdk';\nimport type { JsonRpcRequest } from '@metamask/utils';\nimport { isObject } from '@metamask/utils';\n\n/**\n * `wallet_invokeSnap` attempts to invoke an RPC method of the specified Snap.\n */\nexport const invokeSnapSugarHandler: PermittedHandlerExport<\n void,\n InvokeSnapParams,\n InvokeSnapResult\n> = {\n methodNames: ['wallet_invokeSnap'],\n implementation: invokeSnapSugar,\n hookNames: undefined,\n};\n\n/**\n * The `wallet_invokeSnap` method implementation.\n * Reroutes incoming JSON-RPC requests that are targeting snaps, by modifying the method and params.\n *\n * @param req - The JSON-RPC request object.\n * @param _res - The JSON-RPC response object. Not used by this\n * function.\n * @param next - The `json-rpc-engine` \"next\" callback.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @returns Nothing.\n * @throws If the params are invalid.\n */\nexport function invokeSnapSugar(\n req: JsonRpcRequest<InvokeSnapParams>,\n _res: unknown,\n next: JsonRpcEngineNextCallback,\n end: JsonRpcEngineEndCallback,\n): void {\n let params: InvokeSnapParams;\n try {\n params = getValidatedParams(req.params);\n } catch (error) {\n return end(error);\n }\n\n req.method = 'wallet_snap';\n req.params = params;\n return next();\n}\n\n/**\n * Validates the wallet_invokeSnap 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 method parameter object.\n */\nexport function getValidatedParams(params: unknown): InvokeSnapParams {\n if (!isObject(params)) {\n throw rpcErrors.invalidParams({\n message: 'Expected params to be a single object.',\n });\n }\n\n const { snapId, request } = params;\n\n if (!snapId || typeof snapId !== 'string' || snapId === '') {\n throw rpcErrors.invalidParams({\n message: 'Must specify a valid snap ID.',\n });\n }\n\n if (!isObject(request)) {\n throw rpcErrors.invalidParams({\n message: 'Expected request to be a single object.',\n });\n }\n\n return params as InvokeSnapParams;\n}\n"],"names":["invokeSnapSugarHandler","invokeSnapSugar","getValidatedParams","methodNames","implementation","hookNames","undefined","req","_res","next","end","params","error","method","isObject","rpcErrors","invalidParams","message","snapId","request"],"mappings":";;;;;;;;;;;IAaaA,sBAAsB;eAAtBA;;IAsBGC,eAAe;eAAfA;;IAyBAC,kBAAkB;eAAlBA;;;2BAvDU;uBAGD;AAKlB,MAAMF,yBAIT;IACFG,aAAa;QAAC;KAAoB;IAClCC,gBAAgBH;IAChBI,WAAWC;AACb;AAcO,SAASL,gBACdM,GAAqC,EACrCC,IAAa,EACbC,IAA+B,EAC/BC,GAA6B;IAE7B,IAAIC;IACJ,IAAI;QACFA,SAAST,mBAAmBK,IAAII,MAAM;IACxC,EAAE,OAAOC,OAAO;QACd,OAAOF,IAAIE;IACb;IAEAL,IAAIM,MAAM,GAAG;IACbN,IAAII,MAAM,GAAGA;IACb,OAAOF;AACT;AASO,SAASP,mBAAmBS,MAAe;IAChD,IAAI,CAACG,IAAAA,eAAQ,EAACH,SAAS;QACrB,MAAMI,oBAAS,CAACC,aAAa,CAAC;YAC5BC,SAAS;QACX;IACF;IAEA,MAAM,EAAEC,MAAM,EAAEC,OAAO,EAAE,GAAGR;IAE5B,IAAI,CAACO,UAAU,OAAOA,WAAW,YAAYA,WAAW,IAAI;QAC1D,MAAMH,oBAAS,CAACC,aAAa,CAAC;YAC5BC,SAAS;QACX;IACF;IAEA,IAAI,CAACH,IAAAA,eAAQ,EAACK,UAAU;QACtB,MAAMJ,oBAAS,CAACC,aAAa,CAAC;YAC5BC,SAAS;QACX;IACF;IAEA,OAAON;AACT"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "createSnapsMethodMiddleware", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return createSnapsMethodMiddleware;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _rpcerrors = require("@metamask/rpc-errors");
|
|
12
|
-
const _snapsutils = require("@metamask/snaps-utils");
|
|
13
|
-
const _utils = require("../utils");
|
|
14
|
-
const _handlers = require("./handlers");
|
|
15
|
-
function createSnapsMethodMiddleware(isSnap, hooks) {
|
|
16
|
-
// This is not actually a misused promise, the type is just wrong
|
|
17
|
-
// eslint-disable-next-line @typescript-eslint/no-misused-promises
|
|
18
|
-
return async function methodMiddleware(request, response, next, end) {
|
|
19
|
-
const handler = _handlers.methodHandlers[request.method];
|
|
20
|
-
if (handler) {
|
|
21
|
-
if (String.prototype.startsWith.call(request.method, 'snap_') && !isSnap) {
|
|
22
|
-
return end(_rpcerrors.rpcErrors.methodNotFound());
|
|
23
|
-
}
|
|
24
|
-
// TODO: Once json-rpc-engine types are up to date, we should type this correctly
|
|
25
|
-
const { implementation, hookNames } = handler;
|
|
26
|
-
try {
|
|
27
|
-
// Implementations may or may not be async, so we must await them.
|
|
28
|
-
return await implementation(request, response, next, end, (0, _utils.selectHooks)(hooks, hookNames));
|
|
29
|
-
} catch (error) {
|
|
30
|
-
(0, _snapsutils.logError)(error);
|
|
31
|
-
return end(error);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return next();
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
//# sourceMappingURL=middleware.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/permitted/middleware.ts"],"sourcesContent":["import type { JsonRpcMiddleware } from '@metamask/json-rpc-engine';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport { logError } from '@metamask/snaps-utils';\nimport type { Json, JsonRpcParams } from '@metamask/utils';\n\nimport { selectHooks } from '../utils';\nimport { methodHandlers } from './handlers';\n\n/**\n * Creates a middleware that handles permitted snap RPC methods.\n *\n * @param isSnap - A flag that should indicate whether the requesting origin is a snap or not.\n * @param hooks - An object containing the hooks made available to the permitted RPC methods.\n * @returns The middleware.\n */\nexport function createSnapsMethodMiddleware(\n isSnap: boolean,\n hooks: Record<string, unknown>,\n): JsonRpcMiddleware<JsonRpcParams, Json> {\n // This is not actually a misused promise, the type is just wrong\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return async function methodMiddleware(request, response, next, end) {\n const handler =\n methodHandlers[request.method as keyof typeof methodHandlers];\n if (handler) {\n if (\n String.prototype.startsWith.call(request.method, 'snap_') &&\n !isSnap\n ) {\n return end(rpcErrors.methodNotFound());\n }\n\n // TODO: Once json-rpc-engine types are up to date, we should type this correctly\n const { implementation, hookNames } = handler as any;\n try {\n // Implementations may or may not be async, so we must await them.\n return await implementation(\n request,\n response,\n next,\n end,\n selectHooks(hooks, hookNames),\n );\n } catch (error) {\n logError(error);\n return end(error);\n }\n }\n\n return next();\n };\n}\n"],"names":["createSnapsMethodMiddleware","isSnap","hooks","methodMiddleware","request","response","next","end","handler","methodHandlers","method","String","prototype","startsWith","call","rpcErrors","methodNotFound","implementation","hookNames","selectHooks","error","logError"],"mappings":";;;;+BAegBA;;;eAAAA;;;2BAdU;4BACD;uBAGG;0BACG;AASxB,SAASA,4BACdC,MAAe,EACfC,KAA8B;IAE9B,iEAAiE;IACjE,kEAAkE;IAClE,OAAO,eAAeC,iBAAiBC,OAAO,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,GAAG;QACjE,MAAMC,UACJC,wBAAc,CAACL,QAAQM,MAAM,CAAgC;QAC/D,IAAIF,SAAS;YACX,IACEG,OAAOC,SAAS,CAACC,UAAU,CAACC,IAAI,CAACV,QAAQM,MAAM,EAAE,YACjD,CAACT,QACD;gBACA,OAAOM,IAAIQ,oBAAS,CAACC,cAAc;YACrC;YAEA,iFAAiF;YACjF,MAAM,EAAEC,cAAc,EAAEC,SAAS,EAAE,GAAGV;YACtC,IAAI;gBACF,kEAAkE;gBAClE,OAAO,MAAMS,eACXb,SACAC,UACAC,MACAC,KACAY,IAAAA,kBAAW,EAACjB,OAAOgB;YAEvB,EAAE,OAAOE,OAAO;gBACdC,IAAAA,oBAAQ,EAACD;gBACT,OAAOb,IAAIa;YACb;QACF;QAEA,OAAOd;IACT;AACF"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
requestSnapsHandler: function() {
|
|
13
|
-
return requestSnapsHandler;
|
|
14
|
-
},
|
|
15
|
-
hasRequestedSnaps: function() {
|
|
16
|
-
return hasRequestedSnaps;
|
|
17
|
-
},
|
|
18
|
-
getSnapPermissionsRequest: function() {
|
|
19
|
-
return getSnapPermissionsRequest;
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
const _rpcerrors = require("@metamask/rpc-errors");
|
|
23
|
-
const _snapsutils = require("@metamask/snaps-utils");
|
|
24
|
-
const _utils = require("@metamask/utils");
|
|
25
|
-
const _invokeSnap = require("../restricted/invokeSnap");
|
|
26
|
-
const hookNames = {
|
|
27
|
-
installSnaps: true,
|
|
28
|
-
requestPermissions: true,
|
|
29
|
-
getPermissions: true
|
|
30
|
-
};
|
|
31
|
-
const requestSnapsHandler = {
|
|
32
|
-
methodNames: [
|
|
33
|
-
'wallet_requestSnaps'
|
|
34
|
-
],
|
|
35
|
-
implementation: requestSnapsImplementation,
|
|
36
|
-
hookNames
|
|
37
|
-
};
|
|
38
|
-
function hasRequestedSnaps(existingPermissions, requestedSnaps) {
|
|
39
|
-
const snapIdCaveat = existingPermissions[_invokeSnap.WALLET_SNAP_PERMISSION_KEY]?.caveats?.find((caveat)=>caveat.type === _snapsutils.SnapCaveatType.SnapIds);
|
|
40
|
-
const permittedSnaps = snapIdCaveat?.value;
|
|
41
|
-
if ((0, _utils.isObject)(permittedSnaps)) {
|
|
42
|
-
return Object.keys(requestedSnaps).every((requestedSnap)=>(0, _utils.hasProperty)(permittedSnaps, requestedSnap));
|
|
43
|
-
}
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
function getSnapPermissionsRequest(existingPermissions, requestedPermissions) {
|
|
47
|
-
(0, _snapsutils.verifyRequestedSnapPermissions)(requestedPermissions);
|
|
48
|
-
if (!existingPermissions[_invokeSnap.WALLET_SNAP_PERMISSION_KEY]) {
|
|
49
|
-
return requestedPermissions;
|
|
50
|
-
}
|
|
51
|
-
const snapIdCaveat = existingPermissions[_invokeSnap.WALLET_SNAP_PERMISSION_KEY].caveats?.find((caveat)=>caveat.type === _snapsutils.SnapCaveatType.SnapIds);
|
|
52
|
-
const permittedSnaps = (snapIdCaveat?.value) ?? {};
|
|
53
|
-
const requestedSnaps = requestedPermissions[_invokeSnap.WALLET_SNAP_PERMISSION_KEY].caveats[0].value;
|
|
54
|
-
const snapIdSet = new Set([
|
|
55
|
-
...Object.keys(permittedSnaps),
|
|
56
|
-
...Object.keys(requestedSnaps)
|
|
57
|
-
]);
|
|
58
|
-
const mergedCaveatValue = [
|
|
59
|
-
...snapIdSet
|
|
60
|
-
].reduce((request, snapId)=>{
|
|
61
|
-
request[snapId] = requestedSnaps[snapId] ?? permittedSnaps[snapId];
|
|
62
|
-
return request;
|
|
63
|
-
}, {});
|
|
64
|
-
requestedPermissions[_invokeSnap.WALLET_SNAP_PERMISSION_KEY].caveats[0].value = mergedCaveatValue;
|
|
65
|
-
return requestedPermissions;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* The `wallet_requestSnaps` method implementation.
|
|
69
|
-
* Tries to install the requested snaps and adds them to the JSON-RPC response.
|
|
70
|
-
*
|
|
71
|
-
* @param req - The JSON-RPC request object.
|
|
72
|
-
* @param res - The JSON-RPC response object.
|
|
73
|
-
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
74
|
-
* function.
|
|
75
|
-
* @param end - The `json-rpc-engine` "end" callback.
|
|
76
|
-
* @param hooks - The RPC method hooks.
|
|
77
|
-
* @param hooks.installSnaps - A function that tries to install a given snap, prompting the user if necessary.
|
|
78
|
-
* @param hooks.requestPermissions - A function that requests permissions on
|
|
79
|
-
* behalf of a subject.
|
|
80
|
-
* @param hooks.getPermissions - A function that gets the current permissions.
|
|
81
|
-
* @returns A promise that resolves once the JSON-RPC response has been modified.
|
|
82
|
-
* @throws If the params are invalid.
|
|
83
|
-
*/ async function requestSnapsImplementation(req, res, _next, end, { installSnaps, requestPermissions, getPermissions }) {
|
|
84
|
-
const requestedSnaps = req.params;
|
|
85
|
-
if (!(0, _utils.isObject)(requestedSnaps)) {
|
|
86
|
-
return end(_rpcerrors.rpcErrors.invalidParams({
|
|
87
|
-
message: '"params" must be an object.'
|
|
88
|
-
}));
|
|
89
|
-
}
|
|
90
|
-
try {
|
|
91
|
-
if (Object.keys(requestedSnaps).length === 0) {
|
|
92
|
-
return end(_rpcerrors.rpcErrors.invalidParams({
|
|
93
|
-
message: 'Request must have at least one requested snap.'
|
|
94
|
-
}));
|
|
95
|
-
}
|
|
96
|
-
const requestedPermissions = {
|
|
97
|
-
[_invokeSnap.WALLET_SNAP_PERMISSION_KEY]: {
|
|
98
|
-
caveats: [
|
|
99
|
-
{
|
|
100
|
-
type: _snapsutils.SnapCaveatType.SnapIds,
|
|
101
|
-
value: requestedSnaps
|
|
102
|
-
}
|
|
103
|
-
]
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
const existingPermissions = await getPermissions();
|
|
107
|
-
if (!existingPermissions) {
|
|
108
|
-
const [, metadata] = await requestPermissions(requestedPermissions);
|
|
109
|
-
res.result = metadata.data[_invokeSnap.WALLET_SNAP_PERMISSION_KEY];
|
|
110
|
-
} else if (hasRequestedSnaps(existingPermissions, requestedSnaps)) {
|
|
111
|
-
res.result = await installSnaps(requestedSnaps);
|
|
112
|
-
} else {
|
|
113
|
-
const mergedPermissionsRequest = getSnapPermissionsRequest(existingPermissions, requestedPermissions);
|
|
114
|
-
const [, metadata] = await requestPermissions(mergedPermissionsRequest);
|
|
115
|
-
res.result = metadata.data[_invokeSnap.WALLET_SNAP_PERMISSION_KEY];
|
|
116
|
-
}
|
|
117
|
-
} catch (error) {
|
|
118
|
-
res.error = error;
|
|
119
|
-
}
|
|
120
|
-
return end();
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
//# sourceMappingURL=requestSnaps.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/permitted/requestSnaps.ts"],"sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type {\n PermissionConstraint,\n RequestedPermissions,\n Caveat,\n PermittedHandlerExport,\n} from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type {\n RequestSnapsParams,\n RequestSnapsResult,\n} from '@metamask/snaps-sdk';\nimport type { SnapsPermissionRequest } from '@metamask/snaps-utils';\nimport {\n SnapCaveatType,\n verifyRequestedSnapPermissions,\n} from '@metamask/snaps-utils';\nimport type {\n JsonRpcRequest,\n PendingJsonRpcResponse,\n Json,\n} from '@metamask/utils';\nimport { hasProperty, isObject } from '@metamask/utils';\n\nimport { WALLET_SNAP_PERMISSION_KEY } from '../restricted/invokeSnap';\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<RequestSnapsHooks> = {\n installSnaps: true,\n requestPermissions: true,\n getPermissions: true,\n};\n\n/**\n * `wallet_requestSnaps` installs the requested Snaps and requests permission to use them if necessary.\n */\nexport const requestSnapsHandler: PermittedHandlerExport<\n RequestSnapsHooks,\n RequestSnapsParams,\n RequestSnapsResult\n> = {\n methodNames: ['wallet_requestSnaps'],\n implementation: requestSnapsImplementation,\n hookNames,\n};\n\nexport type RequestSnapsHooks = {\n /**\n * Installs the requested snaps if they are permitted.\n */\n installSnaps: (\n requestedSnaps: RequestSnapsParams,\n ) => Promise<RequestSnapsResult>;\n\n /**\n * Initiates a permission request for the requesting origin.\n *\n * @returns The result of the permissions request.\n */\n requestPermissions: (\n permissions: RequestedPermissions,\n ) => Promise<\n [\n Record<string, PermissionConstraint>,\n { data: Record<string, unknown>; id: string; origin: string },\n ]\n >;\n\n /**\n * Gets the current permissions for the requesting origin.\n *\n * @returns The current permissions of the requesting origin.\n */\n getPermissions: () => Promise<\n Record<string, PermissionConstraint> | undefined\n >;\n};\n\n/**\n * Checks whether an origin has existing `wallet_snap` permission and\n * whether or not it has the requested snapIds caveat.\n *\n * @param existingPermissions - The existing permissions for the origin.\n * @param requestedSnaps - The requested snaps.\n * @returns True if the existing permissions satisfy the requested snaps, otherwise false.\n */\nexport function hasRequestedSnaps(\n existingPermissions: Record<string, PermissionConstraint>,\n requestedSnaps: Record<string, unknown>,\n): boolean {\n const snapIdCaveat = existingPermissions[\n WALLET_SNAP_PERMISSION_KEY\n ]?.caveats?.find(\n (caveat: Caveat<string, Json>) => caveat.type === SnapCaveatType.SnapIds,\n );\n\n const permittedSnaps = snapIdCaveat?.value;\n if (isObject(permittedSnaps)) {\n return Object.keys(requestedSnaps).every((requestedSnap) =>\n hasProperty(permittedSnaps, requestedSnap),\n );\n }\n return false;\n}\n\n/**\n * Constructs a valid permission request with merged caveats based on existing permissions\n * and the requested snaps.\n *\n * @param existingPermissions - The existing permissions for the origin.\n * @param requestedPermissions - The permission request passed into `requestPermissions`.\n * @returns `requestedPermissions`.\n */\nexport function getSnapPermissionsRequest(\n existingPermissions: Record<string, PermissionConstraint>,\n requestedPermissions: unknown,\n): SnapsPermissionRequest {\n verifyRequestedSnapPermissions(requestedPermissions);\n\n if (!existingPermissions[WALLET_SNAP_PERMISSION_KEY]) {\n return requestedPermissions;\n }\n\n const snapIdCaveat = existingPermissions[\n WALLET_SNAP_PERMISSION_KEY\n ].caveats?.find(\n (caveat: Caveat<string, Json>) => caveat.type === SnapCaveatType.SnapIds,\n );\n\n const permittedSnaps = (snapIdCaveat?.value as Record<string, Json>) ?? {};\n\n const requestedSnaps =\n requestedPermissions[WALLET_SNAP_PERMISSION_KEY].caveats[0].value;\n\n const snapIdSet = new Set([\n ...Object.keys(permittedSnaps),\n ...Object.keys(requestedSnaps),\n ]);\n\n const mergedCaveatValue = [...snapIdSet].reduce<Record<string, Json>>(\n (request, snapId) => {\n request[snapId] = requestedSnaps[snapId] ?? permittedSnaps[snapId];\n return request;\n },\n {},\n );\n\n requestedPermissions[WALLET_SNAP_PERMISSION_KEY].caveats[0].value =\n mergedCaveatValue;\n\n return requestedPermissions;\n}\n\n/**\n * The `wallet_requestSnaps` method implementation.\n * Tries to install the requested snaps and adds them to the JSON-RPC response.\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.installSnaps - A function that tries to install a given snap, prompting the user if necessary.\n * @param hooks.requestPermissions - A function that requests permissions on\n * behalf of a subject.\n * @param hooks.getPermissions - A function that gets the current permissions.\n * @returns A promise that resolves once the JSON-RPC response has been modified.\n * @throws If the params are invalid.\n */\nasync function requestSnapsImplementation(\n req: JsonRpcRequest<RequestSnapsParams>,\n res: PendingJsonRpcResponse<RequestSnapsResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { installSnaps, requestPermissions, getPermissions }: RequestSnapsHooks,\n): Promise<void> {\n const requestedSnaps = req.params;\n if (!isObject(requestedSnaps)) {\n return end(\n rpcErrors.invalidParams({\n message: '\"params\" must be an object.',\n }),\n );\n }\n\n try {\n if (Object.keys(requestedSnaps).length === 0) {\n return end(\n rpcErrors.invalidParams({\n message: 'Request must have at least one requested snap.',\n }),\n );\n }\n\n const requestedPermissions = {\n [WALLET_SNAP_PERMISSION_KEY]: {\n caveats: [{ type: SnapCaveatType.SnapIds, value: requestedSnaps }],\n },\n } as RequestedPermissions;\n const existingPermissions = await getPermissions();\n\n if (!existingPermissions) {\n const [, metadata] = await requestPermissions(requestedPermissions);\n res.result = metadata.data[\n WALLET_SNAP_PERMISSION_KEY\n ] as RequestSnapsResult;\n } else if (hasRequestedSnaps(existingPermissions, requestedSnaps)) {\n res.result = await installSnaps(requestedSnaps);\n } else {\n const mergedPermissionsRequest = getSnapPermissionsRequest(\n existingPermissions,\n requestedPermissions,\n );\n\n const [, metadata] = await requestPermissions(mergedPermissionsRequest);\n res.result = metadata.data[\n WALLET_SNAP_PERMISSION_KEY\n ] as RequestSnapsResult;\n }\n } catch (error) {\n res.error = error;\n }\n\n return end();\n}\n"],"names":["requestSnapsHandler","hasRequestedSnaps","getSnapPermissionsRequest","hookNames","installSnaps","requestPermissions","getPermissions","methodNames","implementation","requestSnapsImplementation","existingPermissions","requestedSnaps","snapIdCaveat","WALLET_SNAP_PERMISSION_KEY","caveats","find","caveat","type","SnapCaveatType","SnapIds","permittedSnaps","value","isObject","Object","keys","every","requestedSnap","hasProperty","requestedPermissions","verifyRequestedSnapPermissions","snapIdSet","Set","mergedCaveatValue","reduce","request","snapId","req","res","_next","end","params","rpcErrors","invalidParams","message","length","metadata","result","data","mergedPermissionsRequest","error"],"mappings":";;;;;;;;;;;IAoCaA,mBAAmB;eAAnBA;;IAkDGC,iBAAiB;eAAjBA;;IA2BAC,yBAAyB;eAAzBA;;;2BA1GU;4BASnB;uBAM+B;4BAEK;AAG3C,MAAMC,YAAkD;IACtDC,cAAc;IACdC,oBAAoB;IACpBC,gBAAgB;AAClB;AAKO,MAAMN,sBAIT;IACFO,aAAa;QAAC;KAAsB;IACpCC,gBAAgBC;IAChBN;AACF;AA0CO,SAASF,kBACdS,mBAAyD,EACzDC,cAAuC;IAEvC,MAAMC,eAAeF,mBAAmB,CACtCG,sCAA0B,CAC3B,EAAEC,SAASC,KACV,CAACC,SAAiCA,OAAOC,IAAI,KAAKC,0BAAc,CAACC,OAAO;IAG1E,MAAMC,iBAAiBR,cAAcS;IACrC,IAAIC,IAAAA,eAAQ,EAACF,iBAAiB;QAC5B,OAAOG,OAAOC,IAAI,CAACb,gBAAgBc,KAAK,CAAC,CAACC,gBACxCC,IAAAA,kBAAW,EAACP,gBAAgBM;IAEhC;IACA,OAAO;AACT;AAUO,SAASxB,0BACdQ,mBAAyD,EACzDkB,oBAA6B;IAE7BC,IAAAA,0CAA8B,EAACD;IAE/B,IAAI,CAAClB,mBAAmB,CAACG,sCAA0B,CAAC,EAAE;QACpD,OAAOe;IACT;IAEA,MAAMhB,eAAeF,mBAAmB,CACtCG,sCAA0B,CAC3B,CAACC,OAAO,EAAEC,KACT,CAACC,SAAiCA,OAAOC,IAAI,KAAKC,0BAAc,CAACC,OAAO;IAG1E,MAAMC,iBAAiB,CAACR,cAAcS,KAA6B,KAAK,CAAC;IAEzE,MAAMV,iBACJiB,oBAAoB,CAACf,sCAA0B,CAAC,CAACC,OAAO,CAAC,EAAE,CAACO,KAAK;IAEnE,MAAMS,YAAY,IAAIC,IAAI;WACrBR,OAAOC,IAAI,CAACJ;WACZG,OAAOC,IAAI,CAACb;KAChB;IAED,MAAMqB,oBAAoB;WAAIF;KAAU,CAACG,MAAM,CAC7C,CAACC,SAASC;QACRD,OAAO,CAACC,OAAO,GAAGxB,cAAc,CAACwB,OAAO,IAAIf,cAAc,CAACe,OAAO;QAClE,OAAOD;IACT,GACA,CAAC;IAGHN,oBAAoB,CAACf,sCAA0B,CAAC,CAACC,OAAO,CAAC,EAAE,CAACO,KAAK,GAC/DW;IAEF,OAAOJ;AACT;AAEA;;;;;;;;;;;;;;;;CAgBC,GACD,eAAenB,2BACb2B,GAAuC,EACvCC,GAA+C,EAC/CC,KAAc,EACdC,GAA6B,EAC7B,EAAEnC,YAAY,EAAEC,kBAAkB,EAAEC,cAAc,EAAqB;IAEvE,MAAMK,iBAAiByB,IAAII,MAAM;IACjC,IAAI,CAAClB,IAAAA,eAAQ,EAACX,iBAAiB;QAC7B,OAAO4B,IACLE,oBAAS,CAACC,aAAa,CAAC;YACtBC,SAAS;QACX;IAEJ;IAEA,IAAI;QACF,IAAIpB,OAAOC,IAAI,CAACb,gBAAgBiC,MAAM,KAAK,GAAG;YAC5C,OAAOL,IACLE,oBAAS,CAACC,aAAa,CAAC;gBACtBC,SAAS;YACX;QAEJ;QAEA,MAAMf,uBAAuB;YAC3B,CAACf,sCAA0B,CAAC,EAAE;gBAC5BC,SAAS;oBAAC;wBAAEG,MAAMC,0BAAc,CAACC,OAAO;wBAAEE,OAAOV;oBAAe;iBAAE;YACpE;QACF;QACA,MAAMD,sBAAsB,MAAMJ;QAElC,IAAI,CAACI,qBAAqB;YACxB,MAAM,GAAGmC,SAAS,GAAG,MAAMxC,mBAAmBuB;YAC9CS,IAAIS,MAAM,GAAGD,SAASE,IAAI,CACxBlC,sCAA0B,CAC3B;QACH,OAAO,IAAIZ,kBAAkBS,qBAAqBC,iBAAiB;YACjE0B,IAAIS,MAAM,GAAG,MAAM1C,aAAaO;QAClC,OAAO;YACL,MAAMqC,2BAA2B9C,0BAC/BQ,qBACAkB;YAGF,MAAM,GAAGiB,SAAS,GAAG,MAAMxC,mBAAmB2C;YAC9CX,IAAIS,MAAM,GAAGD,SAASE,IAAI,CACxBlC,sCAA0B,CAC3B;QACH;IACF,EAAE,OAAOoC,OAAO;QACdZ,IAAIY,KAAK,GAAGA;IACd;IAEA,OAAOV;AACT"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "updateInterfaceHandler", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return updateInterfaceHandler;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
const _rpcerrors = require("@metamask/rpc-errors");
|
|
12
|
-
const _snapssdk = require("@metamask/snaps-sdk");
|
|
13
|
-
const _superstruct = require("superstruct");
|
|
14
|
-
const hookNames = {
|
|
15
|
-
updateInterface: true
|
|
16
|
-
};
|
|
17
|
-
const updateInterfaceHandler = {
|
|
18
|
-
methodNames: [
|
|
19
|
-
'snap_updateInterface'
|
|
20
|
-
],
|
|
21
|
-
implementation: getUpdateInterfaceImplementation,
|
|
22
|
-
hookNames
|
|
23
|
-
};
|
|
24
|
-
const UpdateInterfaceParametersStruct = (0, _superstruct.object)({
|
|
25
|
-
id: (0, _superstruct.string)(),
|
|
26
|
-
ui: _snapssdk.ComponentStruct
|
|
27
|
-
});
|
|
28
|
-
/**
|
|
29
|
-
* The `snap_updateInterface` method implementation.
|
|
30
|
-
*
|
|
31
|
-
* @param req - The JSON-RPC request object.
|
|
32
|
-
* @param res - The JSON-RPC response object.
|
|
33
|
-
* @param _next - The `json-rpc-engine` "next" callback. Not used by this
|
|
34
|
-
* function.
|
|
35
|
-
* @param end - The `json-rpc-engine` "end" callback.
|
|
36
|
-
* @param hooks - The RPC method hooks.
|
|
37
|
-
* @param hooks.updateInterface - The function to update the interface.
|
|
38
|
-
* @returns Nothing.
|
|
39
|
-
*/ async function getUpdateInterfaceImplementation(req, res, _next, end, { updateInterface }) {
|
|
40
|
-
const { params } = req;
|
|
41
|
-
try {
|
|
42
|
-
const validatedParams = getValidatedParams(params);
|
|
43
|
-
const { id, ui } = validatedParams;
|
|
44
|
-
await updateInterface(id, ui);
|
|
45
|
-
res.result = null;
|
|
46
|
-
} catch (error) {
|
|
47
|
-
return end(error);
|
|
48
|
-
}
|
|
49
|
-
return end();
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Validate the updateInterface method `params` and returns them cast to the correct
|
|
53
|
-
* type. Throws if validation fails.
|
|
54
|
-
*
|
|
55
|
-
* @param params - The unvalidated params object from the method request.
|
|
56
|
-
* @returns The validated updateInterface method parameter object.
|
|
57
|
-
*/ function getValidatedParams(params) {
|
|
58
|
-
try {
|
|
59
|
-
return (0, _superstruct.create)(params, UpdateInterfaceParametersStruct);
|
|
60
|
-
} catch (error) {
|
|
61
|
-
if (error instanceof _superstruct.StructError) {
|
|
62
|
-
throw _rpcerrors.rpcErrors.invalidParams({
|
|
63
|
-
message: `Invalid params: ${error.message}.`
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
/* istanbul ignore next */ throw _rpcerrors.rpcErrors.internal();
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
//# sourceMappingURL=updateInterface.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/permitted/updateInterface.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 UpdateInterfaceParams,\n UpdateInterfaceResult,\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, string } from 'superstruct';\n\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<UpdateInterfaceMethodHooks> = {\n updateInterface: true,\n};\n\nexport type UpdateInterfaceMethodHooks = {\n /**\n * @param id - The interface ID.\n * @param ui - The UI components.\n */\n updateInterface: (id: string, ui: Component) => Promise<void>;\n};\n\nexport const updateInterfaceHandler: PermittedHandlerExport<\n UpdateInterfaceMethodHooks,\n UpdateInterfaceParameters,\n UpdateInterfaceResult\n> = {\n methodNames: ['snap_updateInterface'],\n implementation: getUpdateInterfaceImplementation,\n hookNames,\n};\n\nconst UpdateInterfaceParametersStruct = object({\n id: string(),\n ui: ComponentStruct,\n});\n\nexport type UpdateInterfaceParameters = InferMatching<\n typeof UpdateInterfaceParametersStruct,\n UpdateInterfaceParams\n>;\n\n/**\n * The `snap_updateInterface` 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.updateInterface - The function to update the interface.\n * @returns Nothing.\n */\nasync function getUpdateInterfaceImplementation(\n req: JsonRpcRequest<UpdateInterfaceParameters>,\n res: PendingJsonRpcResponse<UpdateInterfaceResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { updateInterface }: UpdateInterfaceMethodHooks,\n): Promise<void> {\n const { params } = req;\n\n try {\n const validatedParams = getValidatedParams(params);\n\n const { id, ui } = validatedParams;\n\n await updateInterface(id, ui);\n res.result = null;\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n\n/**\n * Validate the updateInterface 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 updateInterface method parameter object.\n */\nfunction getValidatedParams(params: unknown): UpdateInterfaceParameters {\n try {\n return create(params, UpdateInterfaceParametersStruct);\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"],"names":["updateInterfaceHandler","hookNames","updateInterface","methodNames","implementation","getUpdateInterfaceImplementation","UpdateInterfaceParametersStruct","object","id","string","ui","ComponentStruct","req","res","_next","end","params","validatedParams","getValidatedParams","result","error","create","StructError","rpcErrors","invalidParams","message","internal"],"mappings":";;;;+BA4BaA;;;eAAAA;;;2BA1Ba;0BAOM;6BAGoB;AAIpD,MAAMC,YAA2D;IAC/DC,iBAAiB;AACnB;AAUO,MAAMF,yBAIT;IACFG,aAAa;QAAC;KAAuB;IACrCC,gBAAgBC;IAChBJ;AACF;AAEA,MAAMK,kCAAkCC,IAAAA,mBAAM,EAAC;IAC7CC,IAAIC,IAAAA,mBAAM;IACVC,IAAIC,yBAAe;AACrB;AAOA;;;;;;;;;;;CAWC,GACD,eAAeN,iCACbO,GAA8C,EAC9CC,GAAkD,EAClDC,KAAc,EACdC,GAA6B,EAC7B,EAAEb,eAAe,EAA8B;IAE/C,MAAM,EAAEc,MAAM,EAAE,GAAGJ;IAEnB,IAAI;QACF,MAAMK,kBAAkBC,mBAAmBF;QAE3C,MAAM,EAAER,EAAE,EAAEE,EAAE,EAAE,GAAGO;QAEnB,MAAMf,gBAAgBM,IAAIE;QAC1BG,IAAIM,MAAM,GAAG;IACf,EAAE,OAAOC,OAAO;QACd,OAAOL,IAAIK;IACb;IAEA,OAAOL;AACT;AAEA;;;;;;CAMC,GACD,SAASG,mBAAmBF,MAAe;IACzC,IAAI;QACF,OAAOK,IAAAA,mBAAM,EAACL,QAAQV;IACxB,EAAE,OAAOc,OAAO;QACd,IAAIA,iBAAiBE,wBAAW,EAAE;YAChC,MAAMC,oBAAS,CAACC,aAAa,CAAC;gBAC5BC,SAAS,CAAC,gBAAgB,EAAEL,MAAMK,OAAO,CAAC,CAAC,CAAC;YAC9C;QACF;QACA,wBAAwB,GACxB,MAAMF,oBAAS,CAACG,QAAQ;IAC1B;AACF"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
caveatSpecifications: function() {
|
|
13
|
-
return caveatSpecifications;
|
|
14
|
-
},
|
|
15
|
-
caveatMappers: function() {
|
|
16
|
-
return caveatMappers;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
const _getBip32Entropy = require("../getBip32Entropy");
|
|
20
|
-
const _getBip32PublicKey = require("../getBip32PublicKey");
|
|
21
|
-
const _getBip44Entropy = require("../getBip44Entropy");
|
|
22
|
-
const _invokeSnap = require("../invokeSnap");
|
|
23
|
-
const _permittedCoinTypes = require("./permittedCoinTypes");
|
|
24
|
-
const _permittedDerivationPaths = require("./permittedDerivationPaths");
|
|
25
|
-
const _snapIds = require("./snapIds");
|
|
26
|
-
const caveatSpecifications = {
|
|
27
|
-
..._permittedDerivationPaths.PermittedDerivationPathsCaveatSpecification,
|
|
28
|
-
..._permittedCoinTypes.PermittedCoinTypesCaveatSpecification,
|
|
29
|
-
..._snapIds.SnapIdsCaveatSpecification
|
|
30
|
-
};
|
|
31
|
-
const caveatMappers = {
|
|
32
|
-
[_getBip32Entropy.getBip32EntropyBuilder.targetName]: _permittedDerivationPaths.permittedDerivationPathsCaveatMapper,
|
|
33
|
-
[_getBip32PublicKey.getBip32PublicKeyBuilder.targetName]: _permittedDerivationPaths.permittedDerivationPathsCaveatMapper,
|
|
34
|
-
[_getBip44Entropy.getBip44EntropyBuilder.targetName]: _permittedCoinTypes.permittedCoinTypesCaveatMapper,
|
|
35
|
-
[_invokeSnap.invokeSnapBuilder.targetName]: _snapIds.snapIdsCaveatMapper
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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"],"names":["caveatSpecifications","caveatMappers","PermittedDerivationPathsCaveatSpecification","PermittedCoinTypesCaveatSpecification","SnapIdsCaveatSpecification","getBip32EntropyBuilder","targetName","permittedDerivationPathsCaveatMapper","getBip32PublicKeyBuilder","getBip44EntropyBuilder","permittedCoinTypesCaveatMapper","invokeSnapBuilder","snapIdsCaveatMapper"],"mappings":";;;;;;;;;;;IAiBaA,oBAAoB;eAApBA;;IAMAC,aAAa;eAAbA;;;iCApB0B;mCACE;iCACF;4BACL;oCAI3B;0CAIA;yBACyD;AAEzD,MAAMD,uBAAuB;IAClC,GAAGE,qEAA2C;IAC9C,GAAGC,yDAAqC;IACxC,GAAGC,mCAA0B;AAC/B;AAEO,MAAMH,gBAGT;IACF,CAACI,uCAAsB,CAACC,UAAU,CAAC,EAAEC,8DAAoC;IACzE,CAACC,2CAAwB,CAACF,UAAU,CAAC,EAAEC,8DAAoC;IAC3E,CAACE,uCAAsB,CAACH,UAAU,CAAC,EAAEI,kDAA8B;IACnE,CAACC,6BAAiB,CAACL,UAAU,CAAC,EAAEM,4BAAmB;AACrD"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
permittedCoinTypesCaveatMapper: function() {
|
|
13
|
-
return permittedCoinTypesCaveatMapper;
|
|
14
|
-
},
|
|
15
|
-
validateBIP44Params: function() {
|
|
16
|
-
return validateBIP44Params;
|
|
17
|
-
},
|
|
18
|
-
validateBIP44Caveat: function() {
|
|
19
|
-
return validateBIP44Caveat;
|
|
20
|
-
},
|
|
21
|
-
PermittedCoinTypesCaveatSpecification: function() {
|
|
22
|
-
return PermittedCoinTypesCaveatSpecification;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
const _rpcerrors = require("@metamask/rpc-errors");
|
|
26
|
-
const _snapsutils = require("@metamask/snaps-utils");
|
|
27
|
-
const _utils = require("@metamask/utils");
|
|
28
|
-
function permittedCoinTypesCaveatMapper(value) {
|
|
29
|
-
return {
|
|
30
|
-
caveats: [
|
|
31
|
-
{
|
|
32
|
-
type: _snapsutils.SnapCaveatType.PermittedCoinTypes,
|
|
33
|
-
value
|
|
34
|
-
}
|
|
35
|
-
]
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
function validateBIP44Params(value) {
|
|
39
|
-
if (!(0, _utils.isPlainObject)(value) || !(0, _utils.hasProperty)(value, 'coinType')) {
|
|
40
|
-
throw _rpcerrors.rpcErrors.invalidParams({
|
|
41
|
-
message: 'Expected a plain object containing a coin type.'
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
if (typeof value.coinType !== 'number' || !Number.isInteger(value.coinType) || value.coinType < 0 || value.coinType > 0x7fffffff) {
|
|
45
|
-
throw _rpcerrors.rpcErrors.invalidParams({
|
|
46
|
-
message: 'Invalid "coinType" parameter. Coin type must be a non-negative integer.'
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
if (_snapsutils.FORBIDDEN_COIN_TYPES.includes(value.coinType)) {
|
|
50
|
-
throw _rpcerrors.rpcErrors.invalidParams({
|
|
51
|
-
message: `Coin type ${value.coinType} is forbidden.`
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
function validateBIP44Caveat(caveat) {
|
|
56
|
-
if (!(0, _utils.hasProperty)(caveat, 'value') || !Array.isArray(caveat.value) || caveat.value.length === 0) {
|
|
57
|
-
throw _rpcerrors.rpcErrors.invalidParams({
|
|
58
|
-
message: 'Expected non-empty array of coin types.'
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
caveat.value.forEach(validateBIP44Params);
|
|
62
|
-
}
|
|
63
|
-
const PermittedCoinTypesCaveatSpecification = {
|
|
64
|
-
[_snapsutils.SnapCaveatType.PermittedCoinTypes]: Object.freeze({
|
|
65
|
-
type: _snapsutils.SnapCaveatType.PermittedCoinTypes,
|
|
66
|
-
decorator: (method, caveat)=>{
|
|
67
|
-
return async (args)=>{
|
|
68
|
-
const { params } = args;
|
|
69
|
-
validateBIP44Params(params);
|
|
70
|
-
const coinType = caveat.value.find((caveatValue)=>caveatValue.coinType === params.coinType);
|
|
71
|
-
if (!coinType) {
|
|
72
|
-
throw _rpcerrors.providerErrors.unauthorized({
|
|
73
|
-
message: 'The requested coin type is not permitted. Allowed coin types must be specified in the snap manifest.'
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
return await method(args);
|
|
77
|
-
};
|
|
78
|
-
},
|
|
79
|
-
validator: (caveat)=>validateBIP44Caveat(caveat)
|
|
80
|
-
})
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
//# sourceMappingURL=permittedCoinTypes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/restricted/caveats/permittedCoinTypes.ts"],"sourcesContent":["import type {\n PermissionConstraint,\n RestrictedMethodCaveatSpecificationConstraint,\n Caveat,\n} from '@metamask/permission-controller';\nimport { providerErrors, rpcErrors } from '@metamask/rpc-errors';\nimport type { GetBip44EntropyParams } from '@metamask/snaps-sdk';\nimport { FORBIDDEN_COIN_TYPES, SnapCaveatType } from '@metamask/snaps-utils';\nimport type { Json } from '@metamask/utils';\nimport { hasProperty, isPlainObject } from '@metamask/utils';\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 permittedCoinTypesCaveatMapper(\n value: Json,\n): Pick<PermissionConstraint, 'caveats'> {\n return {\n caveats: [\n {\n type: SnapCaveatType.PermittedCoinTypes,\n value,\n },\n ],\n };\n}\n\n/**\n * Validate the params for `snap_getBip44Entropy`.\n *\n * @param value - The params to validate.\n * @throws If the params are invalid.\n */\nexport function validateBIP44Params(\n value: unknown,\n): asserts value is GetBip44EntropyParams {\n if (!isPlainObject(value) || !hasProperty(value, 'coinType')) {\n throw rpcErrors.invalidParams({\n message: 'Expected a plain object containing a coin type.',\n });\n }\n\n if (\n typeof value.coinType !== 'number' ||\n !Number.isInteger(value.coinType) ||\n value.coinType < 0 ||\n value.coinType > 0x7fffffff\n ) {\n throw rpcErrors.invalidParams({\n message:\n 'Invalid \"coinType\" parameter. Coin type must be a non-negative integer.',\n });\n }\n\n if (FORBIDDEN_COIN_TYPES.includes(value.coinType)) {\n throw rpcErrors.invalidParams({\n message: `Coin type ${value.coinType} is forbidden.`,\n });\n }\n}\n\n/**\n * Validate the coin types values associated with a caveat. This checks if the\n * values are non-negative integers (>= 0).\n *\n * @param caveat - The caveat to validate.\n * @throws If the caveat is invalid.\n */\nexport function validateBIP44Caveat(caveat: Caveat<string, any>) {\n if (\n !hasProperty(caveat, 'value') ||\n !Array.isArray(caveat.value) ||\n caveat.value.length === 0\n ) {\n throw rpcErrors.invalidParams({\n message: 'Expected non-empty array of coin types.',\n });\n }\n\n caveat.value.forEach(validateBIP44Params);\n}\n\nexport const PermittedCoinTypesCaveatSpecification: Record<\n SnapCaveatType.PermittedCoinTypes,\n RestrictedMethodCaveatSpecificationConstraint\n> = {\n [SnapCaveatType.PermittedCoinTypes]: Object.freeze({\n type: SnapCaveatType.PermittedCoinTypes,\n decorator: (\n method,\n caveat: Caveat<\n SnapCaveatType.PermittedCoinTypes,\n GetBip44EntropyParams[]\n >,\n ) => {\n return async (args) => {\n const { params } = args;\n validateBIP44Params(params);\n\n const coinType = caveat.value.find(\n (caveatValue) => caveatValue.coinType === params.coinType,\n );\n\n if (!coinType) {\n throw providerErrors.unauthorized({\n message:\n 'The requested coin type is not permitted. Allowed coin types must be specified in the snap manifest.',\n });\n }\n\n return await method(args);\n };\n },\n validator: (caveat) => validateBIP44Caveat(caveat),\n }),\n};\n"],"names":["permittedCoinTypesCaveatMapper","validateBIP44Params","validateBIP44Caveat","PermittedCoinTypesCaveatSpecification","value","caveats","type","SnapCaveatType","PermittedCoinTypes","isPlainObject","hasProperty","rpcErrors","invalidParams","message","coinType","Number","isInteger","FORBIDDEN_COIN_TYPES","includes","caveat","Array","isArray","length","forEach","Object","freeze","decorator","method","args","params","find","caveatValue","providerErrors","unauthorized","validator"],"mappings":";;;;;;;;;;;IAmBgBA,8BAA8B;eAA9BA;;IAmBAC,mBAAmB;eAAnBA;;IAmCAC,mBAAmB;eAAnBA;;IAcHC,qCAAqC;eAArCA;;;2BAlF6B;4BAEW;uBAEV;AAUpC,SAASH,+BACdI,KAAW;IAEX,OAAO;QACLC,SAAS;YACP;gBACEC,MAAMC,0BAAc,CAACC,kBAAkB;gBACvCJ;YACF;SACD;IACH;AACF;AAQO,SAASH,oBACdG,KAAc;IAEd,IAAI,CAACK,IAAAA,oBAAa,EAACL,UAAU,CAACM,IAAAA,kBAAW,EAACN,OAAO,aAAa;QAC5D,MAAMO,oBAAS,CAACC,aAAa,CAAC;YAC5BC,SAAS;QACX;IACF;IAEA,IACE,OAAOT,MAAMU,QAAQ,KAAK,YAC1B,CAACC,OAAOC,SAAS,CAACZ,MAAMU,QAAQ,KAChCV,MAAMU,QAAQ,GAAG,KACjBV,MAAMU,QAAQ,GAAG,YACjB;QACA,MAAMH,oBAAS,CAACC,aAAa,CAAC;YAC5BC,SACE;QACJ;IACF;IAEA,IAAII,gCAAoB,CAACC,QAAQ,CAACd,MAAMU,QAAQ,GAAG;QACjD,MAAMH,oBAAS,CAACC,aAAa,CAAC;YAC5BC,SAAS,CAAC,UAAU,EAAET,MAAMU,QAAQ,CAAC,cAAc,CAAC;QACtD;IACF;AACF;AASO,SAASZ,oBAAoBiB,MAA2B;IAC7D,IACE,CAACT,IAAAA,kBAAW,EAACS,QAAQ,YACrB,CAACC,MAAMC,OAAO,CAACF,OAAOf,KAAK,KAC3Be,OAAOf,KAAK,CAACkB,MAAM,KAAK,GACxB;QACA,MAAMX,oBAAS,CAACC,aAAa,CAAC;YAC5BC,SAAS;QACX;IACF;IAEAM,OAAOf,KAAK,CAACmB,OAAO,CAACtB;AACvB;AAEO,MAAME,wCAGT;IACF,CAACI,0BAAc,CAACC,kBAAkB,CAAC,EAAEgB,OAAOC,MAAM,CAAC;QACjDnB,MAAMC,0BAAc,CAACC,kBAAkB;QACvCkB,WAAW,CACTC,QACAR;YAKA,OAAO,OAAOS;gBACZ,MAAM,EAAEC,MAAM,EAAE,GAAGD;gBACnB3B,oBAAoB4B;gBAEpB,MAAMf,WAAWK,OAAOf,KAAK,CAAC0B,IAAI,CAChC,CAACC,cAAgBA,YAAYjB,QAAQ,KAAKe,OAAOf,QAAQ;gBAG3D,IAAI,CAACA,UAAU;oBACb,MAAMkB,yBAAc,CAACC,YAAY,CAAC;wBAChCpB,SACE;oBACJ;gBACF;gBAEA,OAAO,MAAMc,OAAOC;YACtB;QACF;QACAM,WAAW,CAACf,SAAWjB,oBAAoBiB;IAC7C;AACF"}
|