@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,69 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkQMULJEYNjs = require('./chunk-QMULJEYN.js');
|
|
4
|
+
|
|
5
|
+
// src/endowments/rpc.ts
|
|
6
|
+
var _permissioncontroller = require('@metamask/permission-controller');
|
|
7
|
+
var _rpcerrors = require('@metamask/rpc-errors');
|
|
8
|
+
var _snapsutils = require('@metamask/snaps-utils');
|
|
9
|
+
var _utils = require('@metamask/utils');
|
|
10
|
+
var targetName = "endowment:rpc" /* Rpc */;
|
|
11
|
+
var specificationBuilder = (_builderOptions) => {
|
|
12
|
+
return {
|
|
13
|
+
permissionType: _permissioncontroller.PermissionType.Endowment,
|
|
14
|
+
targetName,
|
|
15
|
+
allowedCaveats: [_snapsutils.SnapCaveatType.RpcOrigin, _snapsutils.SnapCaveatType.MaxRequestTime],
|
|
16
|
+
endowmentGetter: (_getterOptions) => void 0,
|
|
17
|
+
validator: _chunkQMULJEYNjs.createGenericPermissionValidator.call(void 0, [
|
|
18
|
+
{ type: _snapsutils.SnapCaveatType.RpcOrigin },
|
|
19
|
+
{ type: _snapsutils.SnapCaveatType.MaxRequestTime, optional: true }
|
|
20
|
+
]),
|
|
21
|
+
subjectTypes: [_permissioncontroller.SubjectType.Snap]
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
var rpcEndowmentBuilder = Object.freeze({
|
|
25
|
+
targetName,
|
|
26
|
+
specificationBuilder
|
|
27
|
+
});
|
|
28
|
+
function validateCaveatOrigins(caveat) {
|
|
29
|
+
if (!_utils.hasProperty.call(void 0, caveat, "value") || !_utils.isPlainObject.call(void 0, caveat.value)) {
|
|
30
|
+
throw _rpcerrors.rpcErrors.invalidParams({
|
|
31
|
+
message: "Invalid JSON-RPC origins: Expected a plain object."
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const { value } = caveat;
|
|
35
|
+
_snapsutils.assertIsRpcOrigins.call(void 0, value, _rpcerrors.rpcErrors.invalidParams);
|
|
36
|
+
}
|
|
37
|
+
function getRpcCaveatMapper(value) {
|
|
38
|
+
return {
|
|
39
|
+
caveats: [
|
|
40
|
+
{
|
|
41
|
+
type: _snapsutils.SnapCaveatType.RpcOrigin,
|
|
42
|
+
value
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function getRpcCaveatOrigins(permission) {
|
|
48
|
+
const caveats = permission?.caveats?.filter(
|
|
49
|
+
(caveat2) => caveat2.type === _snapsutils.SnapCaveatType.RpcOrigin
|
|
50
|
+
);
|
|
51
|
+
_utils.assert.call(void 0, caveats);
|
|
52
|
+
_utils.assert.call(void 0, caveats.length === 1);
|
|
53
|
+
const caveat = caveats[0];
|
|
54
|
+
return caveat.value;
|
|
55
|
+
}
|
|
56
|
+
var rpcCaveatSpecifications = {
|
|
57
|
+
[_snapsutils.SnapCaveatType.RpcOrigin]: Object.freeze({
|
|
58
|
+
type: _snapsutils.SnapCaveatType.RpcOrigin,
|
|
59
|
+
validator: (caveat) => validateCaveatOrigins(caveat)
|
|
60
|
+
})
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
exports.rpcEndowmentBuilder = rpcEndowmentBuilder; exports.getRpcCaveatMapper = getRpcCaveatMapper; exports.getRpcCaveatOrigins = getRpcCaveatOrigins; exports.rpcCaveatSpecifications = rpcCaveatSpecifications;
|
|
69
|
+
//# sourceMappingURL=chunk-LIWV3FMY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/endowments/rpc.ts"],"names":["caveat"],"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","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"]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// src/restricted/getBip44Entropy.ts
|
|
2
|
+
import { BIP44CoinTypeNode } from "@metamask/key-tree";
|
|
3
|
+
import { PermissionType, SubjectType } from "@metamask/permission-controller";
|
|
4
|
+
import { rpcErrors } from "@metamask/rpc-errors";
|
|
5
|
+
import { SnapCaveatType } from "@metamask/snaps-utils";
|
|
6
|
+
var targetName = "snap_getBip44Entropy";
|
|
7
|
+
var specificationBuilder = ({ methodHooks: methodHooks2 }) => {
|
|
8
|
+
return {
|
|
9
|
+
permissionType: PermissionType.RestrictedMethod,
|
|
10
|
+
targetName,
|
|
11
|
+
allowedCaveats: [SnapCaveatType.PermittedCoinTypes],
|
|
12
|
+
methodImplementation: getBip44EntropyImplementation(methodHooks2),
|
|
13
|
+
validator: ({ caveats }) => {
|
|
14
|
+
if (caveats?.length !== 1 || caveats[0].type !== SnapCaveatType.PermittedCoinTypes) {
|
|
15
|
+
throw rpcErrors.invalidParams({
|
|
16
|
+
message: `Expected a single "${SnapCaveatType.PermittedCoinTypes}" caveat.`
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
subjectTypes: [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 BIP44CoinTypeNode.fromDerivationPath([
|
|
40
|
+
await getMnemonic(),
|
|
41
|
+
`bip32:44'`,
|
|
42
|
+
`bip32:${params.coinType}'`
|
|
43
|
+
]);
|
|
44
|
+
return node.toJSON();
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export {
|
|
49
|
+
getBip44EntropyBuilder,
|
|
50
|
+
getBip44EntropyImplementation
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=chunk-LR7UR4YU.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/restricted/getBip44Entropy.ts"],"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"],"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;","names":["methodHooks"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkVUA6ICJOjs = require('./chunk-VUA6ICJO.js');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkQ5W3YGEBjs = require('./chunk-Q5W3YGEB.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkSYUGPLEPjs = require('./chunk-SYUGPLEP.js');
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _chunkP74WXDY4js = require('./chunk-P74WXDY4.js');
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
var _chunkKO4MKRYZjs = require('./chunk-KO4MKRYZ.js');
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
var _chunkQDZAWH6Fjs = require('./chunk-QDZAWH6F.js');
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
var _chunkGYZV5UBDjs = require('./chunk-GYZV5UBD.js');
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
var _chunkS7AR3ROHjs = require('./chunk-S7AR3ROH.js');
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
var _chunkLGUJMQC7js = require('./chunk-LGUJMQC7.js');
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
var _chunkFFHVA6PPjs = require('./chunk-FFHVA6PP.js');
|
|
31
|
+
|
|
32
|
+
// src/restricted/index.ts
|
|
33
|
+
var restrictedMethodPermissionBuilders = {
|
|
34
|
+
[_chunkGYZV5UBDjs.dialogBuilder.targetName]: _chunkGYZV5UBDjs.dialogBuilder,
|
|
35
|
+
[_chunkS7AR3ROHjs.getBip32EntropyBuilder.targetName]: _chunkS7AR3ROHjs.getBip32EntropyBuilder,
|
|
36
|
+
[_chunkLGUJMQC7js.getBip32PublicKeyBuilder.targetName]: _chunkLGUJMQC7js.getBip32PublicKeyBuilder,
|
|
37
|
+
[_chunkVUA6ICJOjs.getBip44EntropyBuilder.targetName]: _chunkVUA6ICJOjs.getBip44EntropyBuilder,
|
|
38
|
+
[_chunkQ5W3YGEBjs.getEntropyBuilder.targetName]: _chunkQ5W3YGEBjs.getEntropyBuilder,
|
|
39
|
+
[_chunkFFHVA6PPjs.invokeSnapBuilder.targetName]: _chunkFFHVA6PPjs.invokeSnapBuilder,
|
|
40
|
+
[_chunkKO4MKRYZjs.manageStateBuilder.targetName]: _chunkKO4MKRYZjs.manageStateBuilder,
|
|
41
|
+
[_chunkQDZAWH6Fjs.notifyBuilder.targetName]: _chunkQDZAWH6Fjs.notifyBuilder,
|
|
42
|
+
[_chunkP74WXDY4js.manageAccountsBuilder.targetName]: _chunkP74WXDY4js.manageAccountsBuilder,
|
|
43
|
+
[_chunkSYUGPLEPjs.getLocaleBuilder.targetName]: _chunkSYUGPLEPjs.getLocaleBuilder
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
exports.restrictedMethodPermissionBuilders = restrictedMethodPermissionBuilders;
|
|
49
|
+
//# sourceMappingURL=chunk-LVTN25J2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/restricted/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCO,IAAM,qCAAqC;AAAA,EAChD,CAAC,cAAc,UAAU,GAAG;AAAA,EAC5B,CAAC,uBAAuB,UAAU,GAAG;AAAA,EACrC,CAAC,yBAAyB,UAAU,GAAG;AAAA,EACvC,CAAC,uBAAuB,UAAU,GAAG;AAAA,EACrC,CAAC,kBAAkB,UAAU,GAAG;AAAA,EAChC,CAAC,kBAAkB,UAAU,GAAG;AAAA,EAChC,CAAC,mBAAmB,UAAU,GAAG;AAAA,EACjC,CAAC,cAAc,UAAU,GAAG;AAAA,EAC5B,CAAC,sBAAsB,UAAU,GAAG;AAAA,EACpC,CAAC,iBAAiB,UAAU,GAAG;AACjC","sourcesContent":["import type { DialogMethodHooks } from './dialog';\nimport { dialogBuilder } from './dialog';\nimport type { GetBip32EntropyMethodHooks } from './getBip32Entropy';\nimport { getBip32EntropyBuilder } from './getBip32Entropy';\nimport type { GetBip32PublicKeyMethodHooks } from './getBip32PublicKey';\nimport { getBip32PublicKeyBuilder } from './getBip32PublicKey';\nimport type { GetBip44EntropyMethodHooks } from './getBip44Entropy';\nimport { getBip44EntropyBuilder } from './getBip44Entropy';\nimport type { GetEntropyHooks } from './getEntropy';\nimport { getEntropyBuilder } from './getEntropy';\nimport type { GetLocaleMethodHooks } from './getLocale';\nimport { getLocaleBuilder } from './getLocale';\nimport type { InvokeSnapMethodHooks } from './invokeSnap';\nimport { invokeSnapBuilder } from './invokeSnap';\nimport type { ManageAccountsMethodHooks } from './manageAccounts';\nimport { manageAccountsBuilder } from './manageAccounts';\nimport type { ManageStateMethodHooks } from './manageState';\nimport { manageStateBuilder } from './manageState';\nimport type { NotifyMethodHooks } from './notify';\nimport { notifyBuilder } from './notify';\n\nexport { WALLET_SNAP_PERMISSION_KEY } from './invokeSnap';\nexport { getEncryptionKey } from './manageState';\n\nexport type RestrictedMethodHooks = DialogMethodHooks &\n GetBip32EntropyMethodHooks &\n GetBip32PublicKeyMethodHooks &\n GetBip44EntropyMethodHooks &\n GetEntropyHooks &\n InvokeSnapMethodHooks &\n ManageStateMethodHooks &\n NotifyMethodHooks &\n ManageAccountsMethodHooks &\n GetLocaleMethodHooks;\n\nexport const restrictedMethodPermissionBuilders = {\n [dialogBuilder.targetName]: dialogBuilder,\n [getBip32EntropyBuilder.targetName]: getBip32EntropyBuilder,\n [getBip32PublicKeyBuilder.targetName]: getBip32PublicKeyBuilder,\n [getBip44EntropyBuilder.targetName]: getBip44EntropyBuilder,\n [getEntropyBuilder.targetName]: getEntropyBuilder,\n [invokeSnapBuilder.targetName]: invokeSnapBuilder,\n [manageStateBuilder.targetName]: manageStateBuilder,\n [notifyBuilder.targetName]: notifyBuilder,\n [manageAccountsBuilder.targetName]: manageAccountsBuilder,\n [getLocaleBuilder.targetName]: getLocaleBuilder,\n} as const;\n\nexport * from './caveats';\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// src/endowments/home-page.ts
|
|
2
|
+
import { PermissionType, SubjectType } from "@metamask/permission-controller";
|
|
3
|
+
var permissionName = "endowment:page-home" /* HomePage */;
|
|
4
|
+
var specificationBuilder = (_builderOptions) => {
|
|
5
|
+
return {
|
|
6
|
+
permissionType: PermissionType.Endowment,
|
|
7
|
+
targetName: permissionName,
|
|
8
|
+
allowedCaveats: null,
|
|
9
|
+
endowmentGetter: (_getterOptions) => void 0,
|
|
10
|
+
subjectTypes: [SubjectType.Snap]
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
var homePageEndowmentBuilder = Object.freeze({
|
|
14
|
+
targetName: permissionName,
|
|
15
|
+
specificationBuilder
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export {
|
|
19
|
+
homePageEndowmentBuilder
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=chunk-MVG4B2HM.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/endowments/home-page.ts"],"sourcesContent":["import type {\n PermissionSpecificationBuilder,\n EndowmentGetterParams,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\nimport type { NonEmptyArray } from '@metamask/utils';\n\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.HomePage;\n\ntype HomePageEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: EndowmentGetterParams) => undefined;\n allowedCaveats: Readonly<NonEmptyArray<string>> | null;\n}>;\n\n/**\n * `endowment:page-home` returns nothing; it is intended to be used as a\n * flag by the snap controller to detect whether the snap has the capability to\n * use the snap home page feature.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the `snap-pages` endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n HomePageEndowmentSpecification\n> = (_builderOptions?: unknown) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: null,\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => undefined,\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const homePageEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n"],"mappings":";AAKA,SAAS,gBAAgB,mBAAmB;AAK5C,IAAM;AAiBN,IAAM,uBAIF,CAAC,oBAA8B;AACjC,SAAO;AAAA,IACL,gBAAgB,eAAe;AAAA,IAC/B,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,iBAAiB,CAAC,mBAA2C;AAAA,IAC7D,cAAc,CAAC,YAAY,IAAI;AAAA,EACjC;AACF;AAEO,IAAM,2BAA2B,OAAO,OAAO;AAAA,EACpD,YAAY;AAAA,EACZ;AACF,CAAU;","names":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// src/permitted/invokeSnapSugar.ts
|
|
2
|
+
import { rpcErrors } from "@metamask/rpc-errors";
|
|
3
|
+
import { isObject } from "@metamask/utils";
|
|
4
|
+
var invokeSnapSugarHandler = {
|
|
5
|
+
methodNames: ["wallet_invokeSnap"],
|
|
6
|
+
implementation: invokeSnapSugar,
|
|
7
|
+
hookNames: void 0
|
|
8
|
+
};
|
|
9
|
+
function invokeSnapSugar(req, _res, next, end) {
|
|
10
|
+
let params;
|
|
11
|
+
try {
|
|
12
|
+
params = getValidatedParams(req.params);
|
|
13
|
+
} catch (error) {
|
|
14
|
+
return end(error);
|
|
15
|
+
}
|
|
16
|
+
req.method = "wallet_snap";
|
|
17
|
+
req.params = params;
|
|
18
|
+
return next();
|
|
19
|
+
}
|
|
20
|
+
function getValidatedParams(params) {
|
|
21
|
+
if (!isObject(params)) {
|
|
22
|
+
throw rpcErrors.invalidParams({
|
|
23
|
+
message: "Expected params to be a single object."
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const { snapId, request } = params;
|
|
27
|
+
if (!snapId || typeof snapId !== "string" || snapId === "") {
|
|
28
|
+
throw rpcErrors.invalidParams({
|
|
29
|
+
message: "Must specify a valid snap ID."
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
if (!isObject(request)) {
|
|
33
|
+
throw rpcErrors.invalidParams({
|
|
34
|
+
message: "Expected request to be a single object."
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return params;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export {
|
|
41
|
+
invokeSnapSugarHandler,
|
|
42
|
+
invokeSnapSugar,
|
|
43
|
+
getValidatedParams
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=chunk-MXCJWR45.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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"],"mappings":";AAKA,SAAS,iBAAiB;AAG1B,SAAS,gBAAgB;AAKlB,IAAM,yBAIT;AAAA,EACF,aAAa,CAAC,mBAAmB;AAAA,EACjC,gBAAgB;AAAA,EAChB,WAAW;AACb;AAcO,SAAS,gBACd,KACA,MACA,MACA,KACM;AACN,MAAI;AACJ,MAAI;AACF,aAAS,mBAAmB,IAAI,MAAM;AAAA,EACxC,SAAS,OAAO;AACd,WAAO,IAAI,KAAK;AAAA,EAClB;AAEA,MAAI,SAAS;AACb,MAAI,SAAS;AACb,SAAO,KAAK;AACd;AASO,SAAS,mBAAmB,QAAmC;AACpE,MAAI,CAAC,SAAS,MAAM,GAAG;AACrB,UAAM,UAAU,cAAc;AAAA,MAC5B,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,QAAM,EAAE,QAAQ,QAAQ,IAAI;AAE5B,MAAI,CAAC,UAAU,OAAO,WAAW,YAAY,WAAW,IAAI;AAC1D,UAAM,UAAU,cAAc;AAAA,MAC5B,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,MAAI,CAAC,SAAS,OAAO,GAAG;AACtB,UAAM,UAAU,cAAc;AAAA,MAC5B,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import {
|
|
2
|
+
WALLET_SNAP_PERMISSION_KEY
|
|
3
|
+
} from "./chunk-VVBTXSID.mjs";
|
|
4
|
+
|
|
5
|
+
// src/permitted/requestSnaps.ts
|
|
6
|
+
import { rpcErrors } from "@metamask/rpc-errors";
|
|
7
|
+
import {
|
|
8
|
+
SnapCaveatType,
|
|
9
|
+
verifyRequestedSnapPermissions
|
|
10
|
+
} from "@metamask/snaps-utils";
|
|
11
|
+
import { hasProperty, isObject } from "@metamask/utils";
|
|
12
|
+
var hookNames = {
|
|
13
|
+
installSnaps: true,
|
|
14
|
+
requestPermissions: true,
|
|
15
|
+
getPermissions: true
|
|
16
|
+
};
|
|
17
|
+
var requestSnapsHandler = {
|
|
18
|
+
methodNames: ["wallet_requestSnaps"],
|
|
19
|
+
implementation: requestSnapsImplementation,
|
|
20
|
+
hookNames
|
|
21
|
+
};
|
|
22
|
+
function hasRequestedSnaps(existingPermissions, requestedSnaps) {
|
|
23
|
+
const snapIdCaveat = existingPermissions[WALLET_SNAP_PERMISSION_KEY]?.caveats?.find(
|
|
24
|
+
(caveat) => caveat.type === SnapCaveatType.SnapIds
|
|
25
|
+
);
|
|
26
|
+
const permittedSnaps = snapIdCaveat?.value;
|
|
27
|
+
if (isObject(permittedSnaps)) {
|
|
28
|
+
return Object.keys(requestedSnaps).every(
|
|
29
|
+
(requestedSnap) => hasProperty(permittedSnaps, requestedSnap)
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
function getSnapPermissionsRequest(existingPermissions, requestedPermissions) {
|
|
35
|
+
verifyRequestedSnapPermissions(requestedPermissions);
|
|
36
|
+
if (!existingPermissions[WALLET_SNAP_PERMISSION_KEY]) {
|
|
37
|
+
return requestedPermissions;
|
|
38
|
+
}
|
|
39
|
+
const snapIdCaveat = existingPermissions[WALLET_SNAP_PERMISSION_KEY].caveats?.find(
|
|
40
|
+
(caveat) => caveat.type === SnapCaveatType.SnapIds
|
|
41
|
+
);
|
|
42
|
+
const permittedSnaps = snapIdCaveat?.value ?? {};
|
|
43
|
+
const requestedSnaps = requestedPermissions[WALLET_SNAP_PERMISSION_KEY].caveats[0].value;
|
|
44
|
+
const snapIdSet = /* @__PURE__ */ new Set([
|
|
45
|
+
...Object.keys(permittedSnaps),
|
|
46
|
+
...Object.keys(requestedSnaps)
|
|
47
|
+
]);
|
|
48
|
+
const mergedCaveatValue = [...snapIdSet].reduce(
|
|
49
|
+
(request, snapId) => {
|
|
50
|
+
request[snapId] = requestedSnaps[snapId] ?? permittedSnaps[snapId];
|
|
51
|
+
return request;
|
|
52
|
+
},
|
|
53
|
+
{}
|
|
54
|
+
);
|
|
55
|
+
requestedPermissions[WALLET_SNAP_PERMISSION_KEY].caveats[0].value = mergedCaveatValue;
|
|
56
|
+
return requestedPermissions;
|
|
57
|
+
}
|
|
58
|
+
async function requestSnapsImplementation(req, res, _next, end, { installSnaps, requestPermissions, getPermissions }) {
|
|
59
|
+
const requestedSnaps = req.params;
|
|
60
|
+
if (!isObject(requestedSnaps)) {
|
|
61
|
+
return end(
|
|
62
|
+
rpcErrors.invalidParams({
|
|
63
|
+
message: '"params" must be an object.'
|
|
64
|
+
})
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
if (Object.keys(requestedSnaps).length === 0) {
|
|
69
|
+
return end(
|
|
70
|
+
rpcErrors.invalidParams({
|
|
71
|
+
message: "Request must have at least one requested snap."
|
|
72
|
+
})
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
const requestedPermissions = {
|
|
76
|
+
[WALLET_SNAP_PERMISSION_KEY]: {
|
|
77
|
+
caveats: [{ type: SnapCaveatType.SnapIds, value: requestedSnaps }]
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
const existingPermissions = await getPermissions();
|
|
81
|
+
if (!existingPermissions) {
|
|
82
|
+
const [, metadata] = await requestPermissions(requestedPermissions);
|
|
83
|
+
res.result = metadata.data[WALLET_SNAP_PERMISSION_KEY];
|
|
84
|
+
} else if (hasRequestedSnaps(existingPermissions, requestedSnaps)) {
|
|
85
|
+
res.result = await installSnaps(requestedSnaps);
|
|
86
|
+
} else {
|
|
87
|
+
const mergedPermissionsRequest = getSnapPermissionsRequest(
|
|
88
|
+
existingPermissions,
|
|
89
|
+
requestedPermissions
|
|
90
|
+
);
|
|
91
|
+
const [, metadata] = await requestPermissions(mergedPermissionsRequest);
|
|
92
|
+
res.result = metadata.data[WALLET_SNAP_PERMISSION_KEY];
|
|
93
|
+
}
|
|
94
|
+
} catch (error) {
|
|
95
|
+
res.error = error;
|
|
96
|
+
}
|
|
97
|
+
return end();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export {
|
|
101
|
+
requestSnapsHandler,
|
|
102
|
+
hasRequestedSnaps,
|
|
103
|
+
getSnapPermissionsRequest
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=chunk-MXPVC2XP.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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"],"mappings":";;;;;AAOA,SAAS,iBAAiB;AAM1B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAMP,SAAS,aAAa,gBAAgB;AAKtC,IAAM,YAAkD;AAAA,EACtD,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,gBAAgB;AAClB;AAKO,IAAM,sBAIT;AAAA,EACF,aAAa,CAAC,qBAAqB;AAAA,EACnC,gBAAgB;AAAA,EAChB;AACF;AA0CO,SAAS,kBACd,qBACA,gBACS;AACT,QAAM,eAAe,oBACnB,0BACF,GAAG,SAAS;AAAA,IACV,CAAC,WAAiC,OAAO,SAAS,eAAe;AAAA,EACnE;AAEA,QAAM,iBAAiB,cAAc;AACrC,MAAI,SAAS,cAAc,GAAG;AAC5B,WAAO,OAAO,KAAK,cAAc,EAAE;AAAA,MAAM,CAAC,kBACxC,YAAY,gBAAgB,aAAa;AAAA,IAC3C;AAAA,EACF;AACA,SAAO;AACT;AAUO,SAAS,0BACd,qBACA,sBACwB;AACxB,iCAA+B,oBAAoB;AAEnD,MAAI,CAAC,oBAAoB,0BAA0B,GAAG;AACpD,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,oBACnB,0BACF,EAAE,SAAS;AAAA,IACT,CAAC,WAAiC,OAAO,SAAS,eAAe;AAAA,EACnE;AAEA,QAAM,iBAAkB,cAAc,SAAkC,CAAC;AAEzE,QAAM,iBACJ,qBAAqB,0BAA0B,EAAE,QAAQ,CAAC,EAAE;AAE9D,QAAM,YAAY,oBAAI,IAAI;AAAA,IACxB,GAAG,OAAO,KAAK,cAAc;AAAA,IAC7B,GAAG,OAAO,KAAK,cAAc;AAAA,EAC/B,CAAC;AAED,QAAM,oBAAoB,CAAC,GAAG,SAAS,EAAE;AAAA,IACvC,CAAC,SAAS,WAAW;AACnB,cAAQ,MAAM,IAAI,eAAe,MAAM,KAAK,eAAe,MAAM;AACjE,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AAEA,uBAAqB,0BAA0B,EAAE,QAAQ,CAAC,EAAE,QAC1D;AAEF,SAAO;AACT;AAmBA,eAAe,2BACb,KACA,KACA,OACA,KACA,EAAE,cAAc,oBAAoB,eAAe,GACpC;AACf,QAAM,iBAAiB,IAAI;AAC3B,MAAI,CAAC,SAAS,cAAc,GAAG;AAC7B,WAAO;AAAA,MACL,UAAU,cAAc;AAAA,QACtB,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI;AACF,QAAI,OAAO,KAAK,cAAc,EAAE,WAAW,GAAG;AAC5C,aAAO;AAAA,QACL,UAAU,cAAc;AAAA,UACtB,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AAAA,IACF;AAEA,UAAM,uBAAuB;AAAA,MAC3B,CAAC,0BAA0B,GAAG;AAAA,QAC5B,SAAS,CAAC,EAAE,MAAM,eAAe,SAAS,OAAO,eAAe,CAAC;AAAA,MACnE;AAAA,IACF;AACA,UAAM,sBAAsB,MAAM,eAAe;AAEjD,QAAI,CAAC,qBAAqB;AACxB,YAAM,CAAC,EAAE,QAAQ,IAAI,MAAM,mBAAmB,oBAAoB;AAClE,UAAI,SAAS,SAAS,KACpB,0BACF;AAAA,IACF,WAAW,kBAAkB,qBAAqB,cAAc,GAAG;AACjE,UAAI,SAAS,MAAM,aAAa,cAAc;AAAA,IAChD,OAAO;AACL,YAAM,2BAA2B;AAAA,QAC/B;AAAA,QACA;AAAA,MACF;AAEA,YAAM,CAAC,EAAE,QAAQ,IAAI,MAAM,mBAAmB,wBAAwB;AACtE,UAAI,SAAS,SAAS,KACpB,0BACF;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,QAAI,QAAQ;AAAA,EACd;AAEA,SAAO,IAAI;AACb;","names":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/permitted/getFile.ts
|
|
2
|
+
var _rpcerrors = require('@metamask/rpc-errors');
|
|
3
|
+
var _snapssdk = require('@metamask/snaps-sdk');
|
|
4
|
+
var _utils = require('@metamask/utils');
|
|
5
|
+
var _superstruct = require('superstruct');
|
|
6
|
+
var GetFileArgsStruct = _superstruct.object.call(void 0, {
|
|
7
|
+
path: _superstruct.string.call(void 0, ),
|
|
8
|
+
encoding: _superstruct.optional.call(void 0,
|
|
9
|
+
_superstruct.union.call(void 0, [
|
|
10
|
+
_snapssdk.enumValue.call(void 0, _snapssdk.AuxiliaryFileEncoding.Base64),
|
|
11
|
+
_snapssdk.enumValue.call(void 0, _snapssdk.AuxiliaryFileEncoding.Hex),
|
|
12
|
+
_snapssdk.enumValue.call(void 0, _snapssdk.AuxiliaryFileEncoding.Utf8)
|
|
13
|
+
])
|
|
14
|
+
)
|
|
15
|
+
});
|
|
16
|
+
var hookNames = {
|
|
17
|
+
getSnapFile: true
|
|
18
|
+
};
|
|
19
|
+
var getFileHandler = {
|
|
20
|
+
methodNames: ["snap_getFile"],
|
|
21
|
+
implementation,
|
|
22
|
+
hookNames
|
|
23
|
+
};
|
|
24
|
+
async function implementation(req, res, _next, end, { getSnapFile }) {
|
|
25
|
+
const { params } = req;
|
|
26
|
+
_utils.assertStruct.call(void 0,
|
|
27
|
+
params,
|
|
28
|
+
GetFileArgsStruct,
|
|
29
|
+
'Invalid "snap_getFile" parameters',
|
|
30
|
+
_rpcerrors.rpcErrors.invalidParams
|
|
31
|
+
);
|
|
32
|
+
try {
|
|
33
|
+
res.result = await getSnapFile(
|
|
34
|
+
params.path,
|
|
35
|
+
params.encoding ?? _snapssdk.AuxiliaryFileEncoding.Base64
|
|
36
|
+
);
|
|
37
|
+
} catch (error) {
|
|
38
|
+
return end(error);
|
|
39
|
+
}
|
|
40
|
+
return end();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
exports.GetFileArgsStruct = GetFileArgsStruct; exports.getFileHandler = getFileHandler;
|
|
47
|
+
//# sourceMappingURL=chunk-NP3KGMVC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/permitted/getFile.ts"],"names":[],"mappings":";AAEA,SAAS,iBAAiB;AAE1B,SAAS,uBAAuB,iBAAiB;AAGjD,SAAS,oBAAoB;AAC7B,SAAS,QAAQ,UAAU,QAAQ,aAAa;AAIzC,IAAM,oBAAoB,OAAO;AAAA,EACtC,MAAM,OAAO;AAAA,EACb,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,UAAU,sBAAsB,MAAM;AAAA,MACtC,UAAU,sBAAsB,GAAG;AAAA,MACnC,UAAU,sBAAsB,IAAI;AAAA,IACtC,CAAC;AAAA,EACH;AACF,CAAC;AAOD,IAAM,YAA6C;AAAA,EACjD,aAAa;AACf;AAEO,IAAM,iBAIT;AAAA,EACF,aAAa,CAAC,cAAc;AAAA,EAC5B;AAAA,EACA;AACF;AAqBA,eAAe,eACb,KACA,KACA,OACA,KACA,EAAE,YAAY,GACC;AACf,QAAM,EAAE,OAAO,IAAI;AAEnB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU;AAAA,EACZ;AAEA,MAAI;AACF,QAAI,SAAS,MAAM;AAAA,MACjB,OAAO;AAAA,MACP,OAAO,YAAY,sBAAsB;AAAA,IAC3C;AAAA,EACF,SAAS,OAAO;AACd,WAAO,IAAI,KAAK;AAAA,EAClB;AAEA,SAAO,IAAI;AACb","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport { rpcErrors } from '@metamask/rpc-errors';\nimport type { GetFileParams, GetFileResult } from '@metamask/snaps-sdk';\nimport { AuxiliaryFileEncoding, enumValue } from '@metamask/snaps-sdk';\nimport type { InferMatching } from '@metamask/snaps-utils';\nimport type { PendingJsonRpcResponse, JsonRpcRequest } from '@metamask/utils';\nimport { assertStruct } from '@metamask/utils';\nimport { object, optional, string, union } from 'superstruct';\n\nimport type { MethodHooksObject } from '../utils';\n\nexport const GetFileArgsStruct = object({\n path: string(),\n encoding: optional(\n union([\n enumValue(AuxiliaryFileEncoding.Base64),\n enumValue(AuxiliaryFileEncoding.Hex),\n enumValue(AuxiliaryFileEncoding.Utf8),\n ]),\n ),\n});\n\nexport type InferredGetFileParams = InferMatching<\n typeof GetFileArgsStruct,\n GetFileParams\n>;\n\nconst hookNames: MethodHooksObject<GetFileHooks> = {\n getSnapFile: true,\n};\n\nexport const getFileHandler: PermittedHandlerExport<\n GetFileHooks,\n InferredGetFileParams,\n string\n> = {\n methodNames: ['snap_getFile'],\n implementation,\n hookNames,\n};\n\nexport type GetFileHooks = {\n getSnapFile: (\n path: InferredGetFileParams['path'],\n encoding: InferredGetFileParams['encoding'],\n ) => Promise<string>;\n};\n\n/**\n * The `snap_getFile` 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.getSnapFile - The function to load a static snap file.\n * @returns Nothing.\n */\nasync function implementation(\n req: JsonRpcRequest<InferredGetFileParams>,\n res: PendingJsonRpcResponse<GetFileResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { getSnapFile }: GetFileHooks,\n): Promise<void> {\n const { params } = req;\n\n assertStruct(\n params,\n GetFileArgsStruct,\n 'Invalid \"snap_getFile\" parameters',\n rpcErrors.invalidParams,\n );\n\n try {\n res.result = await getSnapFile(\n params.path,\n params.encoding ?? AuxiliaryFileEncoding.Base64,\n );\n } catch (error) {\n return end(error);\n }\n\n return end();\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";//# sourceMappingURL=chunk-NU4NAAFG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/permitted/getSnaps.ts
|
|
2
|
+
var hookNames = {
|
|
3
|
+
getSnaps: true
|
|
4
|
+
};
|
|
5
|
+
var getSnapsHandler = {
|
|
6
|
+
methodNames: ["wallet_getSnaps"],
|
|
7
|
+
implementation: getSnapsImplementation,
|
|
8
|
+
hookNames
|
|
9
|
+
};
|
|
10
|
+
async function getSnapsImplementation(_req, res, _next, end, { getSnaps }) {
|
|
11
|
+
res.result = await getSnaps();
|
|
12
|
+
return end();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
exports.getSnapsHandler = getSnapsHandler;
|
|
18
|
+
//# sourceMappingURL=chunk-NWT2EXFD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/permitted/getSnaps.ts"],"names":[],"mappings":";AAOA,IAAM,YAA8C;AAAA,EAClD,UAAU;AACZ;AAKO,IAAM,kBAIT;AAAA,EACF,aAAa,CAAC,iBAAiB;AAAA,EAC/B,gBAAgB;AAAA,EAChB;AACF;AAsBA,eAAe,uBACb,MACA,KACA,OACA,KACA,EAAE,SAAS,GACI;AAEf,MAAI,SAAS,MAAM,SAAS;AAC5B,SAAO,IAAI;AACb","sourcesContent":["import type { JsonRpcEngineEndCallback } from '@metamask/json-rpc-engine';\nimport type { PermittedHandlerExport } from '@metamask/permission-controller';\nimport type { GetSnapsResult } from '@metamask/snaps-sdk';\nimport type { JsonRpcParams, PendingJsonRpcResponse } from '@metamask/utils';\n\nimport type { MethodHooksObject } from '../utils';\n\nconst hookNames: MethodHooksObject<GetSnapsHooks> = {\n getSnaps: true,\n};\n\n/**\n * `wallet_getSnaps` gets the requester's permitted and installed Snaps.\n */\nexport const getSnapsHandler: PermittedHandlerExport<\n GetSnapsHooks,\n JsonRpcParams,\n GetSnapsResult\n> = {\n methodNames: ['wallet_getSnaps'],\n implementation: getSnapsImplementation,\n hookNames,\n};\n\nexport type GetSnapsHooks = {\n /**\n * @returns The permitted and installed snaps for the requesting origin.\n */\n getSnaps: () => Promise<GetSnapsResult>;\n};\n\n/**\n * The `wallet_getSnaps` method implementation.\n * Fetches available snaps for the requesting origin and adds them to the JSON-RPC response.\n *\n * @param _req - The JSON-RPC request object. Not used by this function.\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.getSnaps - A function that returns the snaps available for the requesting origin.\n * @returns Nothing.\n */\nasync function getSnapsImplementation(\n _req: unknown,\n res: PendingJsonRpcResponse<GetSnapsResult>,\n _next: unknown,\n end: JsonRpcEngineEndCallback,\n { getSnaps }: GetSnapsHooks,\n): Promise<void> {\n // getSnaps is already bound to the origin\n res.result = await getSnaps();\n return end();\n}\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// src/endowments/web-assembly.ts
|
|
2
|
+
import { PermissionType, SubjectType } from "@metamask/permission-controller";
|
|
3
|
+
var permissionName = "endowment:webassembly" /* WebAssemblyAccess */;
|
|
4
|
+
var specificationBuilder = (_builderOptions) => {
|
|
5
|
+
return {
|
|
6
|
+
permissionType: PermissionType.Endowment,
|
|
7
|
+
targetName: permissionName,
|
|
8
|
+
allowedCaveats: null,
|
|
9
|
+
endowmentGetter: (_getterOptions) => {
|
|
10
|
+
return ["WebAssembly"];
|
|
11
|
+
},
|
|
12
|
+
subjectTypes: [SubjectType.Snap]
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
var webAssemblyEndowmentBuilder = Object.freeze({
|
|
16
|
+
targetName: permissionName,
|
|
17
|
+
specificationBuilder
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
webAssemblyEndowmentBuilder
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=chunk-O66NZFSD.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/endowments/web-assembly.ts"],"sourcesContent":["import type {\n EndowmentGetterParams,\n PermissionSpecificationBuilder,\n ValidPermissionSpecification,\n} from '@metamask/permission-controller';\nimport { PermissionType, SubjectType } from '@metamask/permission-controller';\n\nimport { SnapEndowments } from './enum';\n\nconst permissionName = SnapEndowments.WebAssemblyAccess;\n\ntype WebAssemblyEndowmentSpecification = ValidPermissionSpecification<{\n permissionType: PermissionType.Endowment;\n targetName: typeof permissionName;\n endowmentGetter: (_options?: any) => ['WebAssembly'];\n allowedCaveats: null;\n}>;\n\n/**\n * `endowment:webassembly` returns the name of global browser API(s) that\n * enable access to the WebAssembly API.\n * This is intended to populate the endowments of the SES Compartment\n * in which a Snap executes.\n *\n * @param _builderOptions - Optional specification builder options.\n * @returns The specification for the WebAssembly endowment.\n */\nconst specificationBuilder: PermissionSpecificationBuilder<\n PermissionType.Endowment,\n any,\n WebAssemblyEndowmentSpecification\n> = (_builderOptions?: any) => {\n return {\n permissionType: PermissionType.Endowment,\n targetName: permissionName,\n allowedCaveats: null,\n endowmentGetter: (_getterOptions?: EndowmentGetterParams) => {\n return ['WebAssembly'];\n },\n subjectTypes: [SubjectType.Snap],\n };\n};\n\nexport const webAssemblyEndowmentBuilder = Object.freeze({\n targetName: permissionName,\n specificationBuilder,\n} as const);\n"],"mappings":";AAKA,SAAS,gBAAgB,mBAAmB;AAI5C,IAAM;AAkBN,IAAM,uBAIF,CAAC,oBAA0B;AAC7B,SAAO;AAAA,IACL,gBAAgB,eAAe;AAAA,IAC/B,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,iBAAiB,CAAC,mBAA2C;AAC3D,aAAO,CAAC,aAAa;AAAA,IACvB;AAAA,IACA,cAAc,CAAC,YAAY,IAAI;AAAA,EACjC;AACF;AAEO,IAAM,8BAA8B,OAAO,OAAO;AAAA,EACvD,YAAY;AAAA,EACZ;AACF,CAAU;","names":[]}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/endowments/cronjob.ts
|
|
2
|
+
var _permissioncontroller = require('@metamask/permission-controller');
|
|
3
|
+
var _rpcerrors = require('@metamask/rpc-errors');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _snapsutils = require('@metamask/snaps-utils');
|
|
8
|
+
var _utils = require('@metamask/utils');
|
|
9
|
+
var permissionName = "endowment:cronjob" /* Cronjob */;
|
|
10
|
+
var specificationBuilder = (_builderOptions) => {
|
|
11
|
+
return {
|
|
12
|
+
permissionType: _permissioncontroller.PermissionType.Endowment,
|
|
13
|
+
targetName: permissionName,
|
|
14
|
+
allowedCaveats: [_snapsutils.SnapCaveatType.SnapCronjob],
|
|
15
|
+
endowmentGetter: (_getterOptions) => void 0,
|
|
16
|
+
subjectTypes: [_permissioncontroller.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: _snapsutils.SnapCaveatType.SnapCronjob,
|
|
28
|
+
value
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function getCronjobCaveatJobs(permission) {
|
|
34
|
+
if (!permission?.caveats) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
_utils.assert.call(void 0, permission.caveats.length === 1);
|
|
38
|
+
_utils.assert.call(void 0, permission.caveats[0].type === _snapsutils.SnapCaveatType.SnapCronjob);
|
|
39
|
+
const caveat = permission.caveats[0];
|
|
40
|
+
return caveat.value?.jobs ?? null;
|
|
41
|
+
}
|
|
42
|
+
function validateCronjobCaveat(caveat) {
|
|
43
|
+
if (!_utils.hasProperty.call(void 0, caveat, "value") || !_utils.isPlainObject.call(void 0, caveat.value)) {
|
|
44
|
+
throw _rpcerrors.rpcErrors.invalidParams({
|
|
45
|
+
message: "Expected a plain object."
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
const { value } = caveat;
|
|
49
|
+
if (!_utils.hasProperty.call(void 0, value, "jobs") || !_utils.isPlainObject.call(void 0, value)) {
|
|
50
|
+
throw _rpcerrors.rpcErrors.invalidParams({
|
|
51
|
+
message: "Expected a plain object."
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (!_snapsutils.isCronjobSpecificationArray.call(void 0, value.jobs)) {
|
|
55
|
+
throw _rpcerrors.rpcErrors.invalidParams({
|
|
56
|
+
message: "Expected a valid cronjob specification array."
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
var cronjobCaveatSpecifications = {
|
|
61
|
+
[_snapsutils.SnapCaveatType.SnapCronjob]: Object.freeze({
|
|
62
|
+
type: _snapsutils.SnapCaveatType.SnapCronjob,
|
|
63
|
+
validator: (caveat) => validateCronjobCaveat(caveat)
|
|
64
|
+
})
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
exports.cronjobEndowmentBuilder = cronjobEndowmentBuilder; exports.getCronjobCaveatMapper = getCronjobCaveatMapper; exports.getCronjobCaveatJobs = getCronjobCaveatJobs; exports.validateCronjobCaveat = validateCronjobCaveat; exports.cronjobCaveatSpecifications = cronjobCaveatSpecifications;
|
|
74
|
+
//# sourceMappingURL=chunk-OQOTJFFV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/endowments/cronjob.ts"],"names":[],"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","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"]}
|