@metamask/snaps-controllers 5.0.1 → 6.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 +18 -1
- package/dist/chunk-36YC4Z3T.mjs +109 -0
- package/dist/chunk-36YC4Z3T.mjs.map +1 -0
- package/dist/chunk-3RNW7OKG.mjs +1 -0
- package/dist/chunk-3RNW7OKG.mjs.map +1 -0
- package/dist/chunk-43ODL57R.js +39 -0
- package/dist/chunk-43ODL57R.js.map +1 -0
- package/dist/chunk-4HVWEABQ.mjs +9 -0
- package/dist/chunk-4HVWEABQ.mjs.map +1 -0
- package/dist/chunk-4LGL4A3M.js +105 -0
- package/dist/chunk-4LGL4A3M.js.map +1 -0
- package/dist/chunk-4URGXJP7.js +1 -0
- package/dist/chunk-4URGXJP7.js.map +1 -0
- package/dist/chunk-5R4ENIDN.mjs +2307 -0
- package/dist/chunk-5R4ENIDN.mjs.map +1 -0
- package/dist/chunk-5YBORD3A.js +19 -0
- package/dist/chunk-5YBORD3A.js.map +1 -0
- package/dist/chunk-6EZSNS4O.mjs +59 -0
- package/dist/chunk-6EZSNS4O.mjs.map +1 -0
- package/dist/chunk-6GMWL4JR.mjs +92 -0
- package/dist/chunk-6GMWL4JR.mjs.map +1 -0
- package/dist/chunk-6N6KZYVD.js +12 -0
- package/dist/chunk-6N6KZYVD.js.map +1 -0
- package/dist/chunk-6NYC5VNK.mjs +354 -0
- package/dist/chunk-6NYC5VNK.mjs.map +1 -0
- package/dist/chunk-6XGUJ27X.js +72 -0
- package/dist/chunk-6XGUJ27X.js.map +1 -0
- package/dist/chunk-6YVCFPP6.mjs +58 -0
- package/dist/chunk-6YVCFPP6.mjs.map +1 -0
- package/dist/chunk-7JY5VENP.js +273 -0
- package/dist/chunk-7JY5VENP.js.map +1 -0
- package/dist/chunk-7PZECZV3.mjs +38 -0
- package/dist/chunk-7PZECZV3.mjs.map +1 -0
- package/dist/chunk-7WOG63YY.js +40 -0
- package/dist/chunk-7WOG63YY.js.map +1 -0
- package/dist/chunk-7Y6P5FRN.js +60 -0
- package/dist/chunk-7Y6P5FRN.js.map +1 -0
- package/dist/chunk-A6WJEA3C.js +1 -0
- package/dist/chunk-A6WJEA3C.js.map +1 -0
- package/dist/chunk-AP7CJ6DA.js +47 -0
- package/dist/chunk-AP7CJ6DA.js.map +1 -0
- package/dist/chunk-B3UTLNYS.mjs +48 -0
- package/dist/chunk-B3UTLNYS.mjs.map +1 -0
- package/dist/chunk-B67RDBZ4.mjs +40 -0
- package/dist/chunk-B67RDBZ4.mjs.map +1 -0
- package/dist/chunk-B7R3EWM3.mjs +1 -0
- package/dist/chunk-B7R3EWM3.mjs.map +1 -0
- package/dist/chunk-BAEXVO3U.mjs +1 -0
- package/dist/chunk-BAEXVO3U.mjs.map +1 -0
- package/dist/chunk-BO2ZDPWV.js +59 -0
- package/dist/chunk-BO2ZDPWV.js.map +1 -0
- package/dist/chunk-C4D6GBMY.js +71 -0
- package/dist/chunk-C4D6GBMY.js.map +1 -0
- package/dist/chunk-D74XJG2L.js +1 -0
- package/dist/chunk-D74XJG2L.js.map +1 -0
- package/dist/chunk-DSQYZGBH.mjs +273 -0
- package/dist/chunk-DSQYZGBH.mjs.map +1 -0
- package/dist/chunk-ESQPQNEF.mjs +1 -0
- package/dist/chunk-ESQPQNEF.mjs.map +1 -0
- package/dist/chunk-EXN2TFDJ.js +38 -0
- package/dist/chunk-EXN2TFDJ.js.map +1 -0
- package/dist/chunk-FX5AADOV.mjs +1 -0
- package/dist/chunk-FX5AADOV.mjs.map +1 -0
- package/dist/chunk-FZY2Z5NP.js +38 -0
- package/dist/chunk-FZY2Z5NP.js.map +1 -0
- package/dist/chunk-G66GQJS6.js +1 -0
- package/dist/chunk-G66GQJS6.js.map +1 -0
- package/dist/chunk-G7U6WKWS.mjs +1 -0
- package/dist/chunk-G7U6WKWS.mjs.map +1 -0
- package/dist/chunk-HOY6NKQR.js +1 -0
- package/dist/chunk-HOY6NKQR.js.map +1 -0
- package/dist/chunk-HWJE3SDW.mjs +1 -0
- package/dist/chunk-HWJE3SDW.mjs.map +1 -0
- package/dist/chunk-IABOI7TW.mjs +1 -0
- package/dist/chunk-IABOI7TW.mjs.map +1 -0
- package/dist/chunk-IGC4E7PI.mjs +71 -0
- package/dist/chunk-IGC4E7PI.mjs.map +1 -0
- package/dist/chunk-IMBPDTVN.mjs +72 -0
- package/dist/chunk-IMBPDTVN.mjs.map +1 -0
- package/dist/chunk-J4PGHMLL.js +38 -0
- package/dist/chunk-J4PGHMLL.js.map +1 -0
- package/dist/chunk-JAUAKTUL.js +1 -0
- package/dist/chunk-JAUAKTUL.js.map +1 -0
- package/dist/chunk-JDHKH5YU.js +354 -0
- package/dist/chunk-JDHKH5YU.js.map +1 -0
- package/dist/chunk-JW7WBUL7.js +1 -0
- package/dist/chunk-JW7WBUL7.js.map +1 -0
- package/dist/chunk-K276CM3B.mjs +197 -0
- package/dist/chunk-K276CM3B.mjs.map +1 -0
- package/dist/chunk-KBVG3CL2.js +58 -0
- package/dist/chunk-KBVG3CL2.js.map +1 -0
- package/dist/chunk-KCMULJ2M.mjs +1 -0
- package/dist/chunk-KCMULJ2M.mjs.map +1 -0
- package/dist/chunk-KF4PCKG7.mjs +74 -0
- package/dist/chunk-KF4PCKG7.mjs.map +1 -0
- package/dist/chunk-KLK7ZRMH.js +55 -0
- package/dist/chunk-KLK7ZRMH.js.map +1 -0
- package/dist/chunk-LWBPKSU2.js +48 -0
- package/dist/chunk-LWBPKSU2.js.map +1 -0
- package/dist/chunk-MYWDTEX2.js +283 -0
- package/dist/chunk-MYWDTEX2.js.map +1 -0
- package/dist/chunk-NC5PBDKD.mjs +47 -0
- package/dist/chunk-NC5PBDKD.mjs.map +1 -0
- package/dist/chunk-NOLPMHXS.js +101 -0
- package/dist/chunk-NOLPMHXS.js.map +1 -0
- package/dist/chunk-NXZVKBSV.js +9 -0
- package/dist/chunk-NXZVKBSV.js.map +1 -0
- package/dist/chunk-OHMCPTOI.js +1 -0
- package/dist/chunk-OHMCPTOI.js.map +1 -0
- package/dist/chunk-OIEUL55W.js +1 -0
- package/dist/chunk-OIEUL55W.js.map +1 -0
- package/dist/chunk-P7Y6MIZW.mjs +7 -0
- package/dist/chunk-P7Y6MIZW.mjs.map +1 -0
- package/dist/chunk-PGKMKSAR.mjs +105 -0
- package/dist/chunk-PGKMKSAR.mjs.map +1 -0
- package/dist/chunk-PXECEHH7.mjs +39 -0
- package/dist/chunk-PXECEHH7.mjs.map +1 -0
- package/dist/chunk-Q2ON6SMV.js +197 -0
- package/dist/chunk-Q2ON6SMV.js.map +1 -0
- package/dist/chunk-QL3QGUTM.mjs +1 -0
- package/dist/chunk-QL3QGUTM.mjs.map +1 -0
- package/dist/chunk-RDBT3ZJQ.js +92 -0
- package/dist/chunk-RDBT3ZJQ.js.map +1 -0
- package/dist/chunk-RIU3ZIXZ.mjs +55 -0
- package/dist/chunk-RIU3ZIXZ.mjs.map +1 -0
- package/dist/chunk-RU67JKBV.mjs +12 -0
- package/dist/chunk-RU67JKBV.mjs.map +1 -0
- package/dist/chunk-TG6OXBLR.js +1 -0
- package/dist/chunk-TG6OXBLR.js.map +1 -0
- package/dist/chunk-TMWMIQV4.js +1 -0
- package/dist/chunk-TMWMIQV4.js.map +1 -0
- package/dist/chunk-U6T2MPXT.js +74 -0
- package/dist/chunk-U6T2MPXT.js.map +1 -0
- package/dist/chunk-U74FML7Z.mjs +1 -0
- package/dist/chunk-U74FML7Z.mjs.map +1 -0
- package/dist/chunk-V6NFZ47P.mjs +1 -0
- package/dist/chunk-V6NFZ47P.mjs.map +1 -0
- package/dist/chunk-VNOCJWOK.js +1 -0
- package/dist/chunk-VNOCJWOK.js.map +1 -0
- package/dist/chunk-VOZOZKRC.mjs +101 -0
- package/dist/chunk-VOZOZKRC.mjs.map +1 -0
- package/dist/chunk-WEY7ICES.js +1 -0
- package/dist/chunk-WEY7ICES.js.map +1 -0
- package/dist/chunk-WKQRCGUW.mjs +331 -0
- package/dist/chunk-WKQRCGUW.mjs.map +1 -0
- package/dist/chunk-XE5IWVNV.js +109 -0
- package/dist/chunk-XE5IWVNV.js.map +1 -0
- package/dist/chunk-XWDEGRM5.js +331 -0
- package/dist/chunk-XWDEGRM5.js.map +1 -0
- package/dist/chunk-YIQM6ZKA.mjs +19 -0
- package/dist/chunk-YIQM6ZKA.mjs.map +1 -0
- package/dist/chunk-YRZVIDCF.mjs +38 -0
- package/dist/chunk-YRZVIDCF.mjs.map +1 -0
- package/dist/chunk-YYPUPKQY.js +7 -0
- package/dist/chunk-YYPUPKQY.js.map +1 -0
- package/dist/chunk-ZAMIT33L.js +2307 -0
- package/dist/chunk-ZAMIT33L.js.map +1 -0
- package/dist/chunk-ZETJVFUS.mjs +283 -0
- package/dist/chunk-ZETJVFUS.mjs.map +1 -0
- package/dist/chunk-ZQAGLOXD.mjs +1 -0
- package/dist/chunk-ZQAGLOXD.mjs.map +1 -0
- package/dist/chunk-ZRS2VVUV.mjs +38 -0
- package/dist/chunk-ZRS2VVUV.mjs.map +1 -0
- package/dist/chunk-ZVOYOZFT.mjs +60 -0
- package/dist/chunk-ZVOYOZFT.mjs.map +1 -0
- package/dist/cronjob/CronjobController.js +41 -0
- package/dist/cronjob/CronjobController.js.map +1 -0
- package/dist/cronjob/CronjobController.mjs +41 -0
- package/dist/cronjob/CronjobController.mjs.map +1 -0
- package/dist/cronjob/index.js +41 -0
- package/dist/cronjob/index.js.map +1 -0
- package/dist/cronjob/index.mjs +41 -0
- package/dist/cronjob/index.mjs.map +1 -0
- package/dist/fsm.js +10 -0
- package/dist/fsm.js.map +1 -0
- package/dist/fsm.mjs +10 -0
- package/dist/fsm.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/interface/SnapInterfaceController.js +9 -0
- package/dist/interface/SnapInterfaceController.js.map +1 -0
- package/dist/interface/SnapInterfaceController.mjs +9 -0
- package/dist/interface/SnapInterfaceController.mjs.map +1 -0
- package/dist/interface/index.js +10 -0
- package/dist/interface/index.js.map +1 -0
- package/dist/interface/index.mjs +10 -0
- package/dist/interface/index.mjs.map +1 -0
- package/dist/interface/utils.js +14 -0
- package/dist/interface/utils.js.map +1 -0
- package/dist/interface/utils.mjs +14 -0
- package/dist/interface/utils.mjs.map +1 -0
- package/dist/logging.js +8 -0
- package/dist/logging.js.map +1 -0
- package/dist/logging.mjs +8 -0
- package/dist/logging.mjs.map +1 -0
- package/dist/node.js +128 -0
- package/dist/node.js.map +1 -0
- package/dist/node.mjs +128 -0
- package/dist/node.mjs.map +1 -0
- package/dist/react-native.js +125 -0
- package/dist/react-native.js.map +1 -0
- package/dist/react-native.mjs +125 -0
- package/dist/react-native.mjs.map +1 -0
- package/dist/services/AbstractExecutionService.js +13 -0
- package/dist/services/AbstractExecutionService.js.map +1 -0
- package/dist/services/AbstractExecutionService.mjs +13 -0
- package/dist/services/AbstractExecutionService.mjs.map +1 -0
- package/dist/services/ExecutionService.js +2 -0
- package/dist/services/ExecutionService.js.map +1 -0
- package/dist/services/ExecutionService.mjs +2 -0
- package/dist/services/ExecutionService.mjs.map +1 -0
- package/dist/services/ProxyPostMessageStream.js +8 -0
- package/dist/services/ProxyPostMessageStream.js.map +1 -0
- package/dist/services/ProxyPostMessageStream.mjs +8 -0
- package/dist/services/ProxyPostMessageStream.mjs.map +1 -0
- package/dist/services/browser.js +40 -0
- package/dist/services/browser.js.map +1 -0
- package/dist/services/browser.mjs +40 -0
- package/dist/services/browser.mjs.map +1 -0
- package/dist/services/iframe/IframeExecutionService.js +12 -0
- package/dist/services/iframe/IframeExecutionService.js.map +1 -0
- package/dist/services/iframe/IframeExecutionService.mjs +12 -0
- package/dist/services/iframe/IframeExecutionService.mjs.map +1 -0
- package/dist/services/iframe/index.js +13 -0
- package/dist/services/iframe/index.js.map +1 -0
- package/dist/services/iframe/index.mjs +13 -0
- package/dist/services/iframe/index.mjs.map +1 -0
- package/dist/services/index.js +35 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/index.mjs +35 -0
- package/dist/services/index.mjs.map +1 -0
- package/dist/services/node-js/NodeProcessExecutionService.js +22 -0
- package/dist/services/node-js/NodeProcessExecutionService.js.map +1 -0
- package/dist/services/node-js/NodeProcessExecutionService.mjs +22 -0
- package/dist/services/node-js/NodeProcessExecutionService.mjs.map +1 -0
- package/dist/services/node-js/NodeThreadExecutionService.js +22 -0
- package/dist/services/node-js/NodeThreadExecutionService.js.map +1 -0
- package/dist/services/node-js/NodeThreadExecutionService.mjs +22 -0
- package/dist/services/node-js/NodeThreadExecutionService.mjs.map +1 -0
- package/dist/services/node-js/index.js +27 -0
- package/dist/services/node-js/index.js.map +1 -0
- package/dist/services/node-js/index.mjs +27 -0
- package/dist/services/node-js/index.mjs.map +1 -0
- package/dist/services/node.js +45 -0
- package/dist/services/node.js.map +1 -0
- package/dist/services/node.mjs +45 -0
- package/dist/services/node.mjs.map +1 -0
- package/dist/services/offscreen/OffscreenExecutionService.js +14 -0
- package/dist/services/offscreen/OffscreenExecutionService.js.map +1 -0
- package/dist/services/offscreen/OffscreenExecutionService.mjs +14 -0
- package/dist/services/offscreen/OffscreenExecutionService.mjs.map +1 -0
- package/dist/services/offscreen/index.js +15 -0
- package/dist/services/offscreen/index.js.map +1 -0
- package/dist/services/offscreen/index.mjs +15 -0
- package/dist/services/offscreen/index.mjs.map +1 -0
- package/dist/services/proxy/ProxyExecutionService.js +13 -0
- package/dist/services/proxy/ProxyExecutionService.js.map +1 -0
- package/dist/services/proxy/ProxyExecutionService.mjs +13 -0
- package/dist/services/proxy/ProxyExecutionService.mjs.map +1 -0
- package/dist/services/react-native.js +42 -0
- package/dist/services/react-native.js.map +1 -0
- package/dist/services/react-native.mjs +42 -0
- package/dist/services/react-native.mjs.map +1 -0
- package/dist/services/webview/WebViewExecutionService.js +15 -0
- package/dist/services/webview/WebViewExecutionService.js.map +1 -0
- package/dist/services/webview/WebViewExecutionService.mjs +15 -0
- package/dist/services/webview/WebViewExecutionService.mjs.map +1 -0
- package/dist/services/webview/WebViewMessageStream.js +8 -0
- package/dist/services/webview/WebViewMessageStream.js.map +1 -0
- package/dist/services/webview/WebViewMessageStream.mjs +8 -0
- package/dist/services/webview/WebViewMessageStream.mjs.map +1 -0
- package/dist/services/webview/index.js +16 -0
- package/dist/services/webview/index.js.map +1 -0
- package/dist/services/webview/index.mjs +16 -0
- package/dist/services/webview/index.mjs.map +1 -0
- package/dist/services/webworker/WebWorkerExecutionService.js +15 -0
- package/dist/services/webworker/WebWorkerExecutionService.js.map +1 -0
- package/dist/services/webworker/WebWorkerExecutionService.mjs +15 -0
- package/dist/services/webworker/WebWorkerExecutionService.mjs.map +1 -0
- package/dist/services/webworker/index.js +16 -0
- package/dist/services/webworker/index.js.map +1 -0
- package/dist/services/webworker/index.mjs +16 -0
- package/dist/services/webworker/index.mjs.map +1 -0
- package/dist/snaps/RequestQueue.js +8 -0
- package/dist/snaps/RequestQueue.js.map +1 -0
- package/dist/snaps/RequestQueue.mjs +8 -0
- package/dist/snaps/RequestQueue.mjs.map +1 -0
- package/dist/snaps/SnapController.js +30 -0
- package/dist/snaps/SnapController.js.map +1 -0
- package/dist/snaps/SnapController.mjs +30 -0
- package/dist/snaps/SnapController.mjs.map +1 -0
- package/dist/snaps/Timer.js +8 -0
- package/dist/snaps/Timer.js.map +1 -0
- package/dist/snaps/Timer.mjs +8 -0
- package/dist/snaps/Timer.mjs.map +1 -0
- package/dist/snaps/constants.js +8 -0
- package/dist/snaps/constants.js.map +1 -0
- package/dist/snaps/constants.mjs +8 -0
- package/dist/snaps/constants.mjs.map +1 -0
- package/dist/snaps/index.js +63 -0
- package/dist/snaps/index.js.map +1 -0
- package/dist/snaps/index.mjs +63 -0
- package/dist/snaps/index.mjs.map +1 -0
- package/dist/snaps/location/http.js +8 -0
- package/dist/snaps/location/http.js.map +1 -0
- package/dist/snaps/location/http.mjs +8 -0
- package/dist/snaps/location/http.mjs.map +1 -0
- package/dist/snaps/location/index.js +31 -0
- package/dist/snaps/location/index.js.map +1 -0
- package/dist/snaps/location/index.mjs +31 -0
- package/dist/snaps/location/index.mjs.map +1 -0
- package/dist/snaps/location/local.js +9 -0
- package/dist/snaps/location/local.js.map +1 -0
- package/dist/snaps/location/local.mjs +9 -0
- package/dist/snaps/location/local.mjs.map +1 -0
- package/dist/snaps/location/location.js +11 -0
- package/dist/snaps/location/location.js.map +1 -0
- package/dist/snaps/location/location.mjs +11 -0
- package/dist/snaps/location/location.mjs.map +1 -0
- package/dist/snaps/location/npm.js +18 -0
- package/dist/snaps/location/npm.js.map +1 -0
- package/dist/snaps/location/npm.mjs +18 -0
- package/dist/snaps/location/npm.mjs.map +1 -0
- package/dist/snaps/registry/index.js +13 -0
- package/dist/snaps/registry/index.js.map +1 -0
- package/dist/snaps/registry/index.mjs +13 -0
- package/dist/snaps/registry/index.mjs.map +1 -0
- package/dist/snaps/registry/json.js +9 -0
- package/dist/snaps/registry/json.js.map +1 -0
- package/dist/snaps/registry/json.mjs +9 -0
- package/dist/snaps/registry/json.mjs.map +1 -0
- package/dist/snaps/registry/registry.js +8 -0
- package/dist/snaps/registry/registry.js.map +1 -0
- package/dist/snaps/registry/registry.mjs +8 -0
- package/dist/snaps/registry/registry.mjs.map +1 -0
- package/dist/snaps/selectors.js +8 -0
- package/dist/snaps/selectors.js.map +1 -0
- package/dist/snaps/selectors.mjs +8 -0
- package/dist/snaps/selectors.mjs.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/types/node.d.ts +2 -0
- package/dist/types/react-native.d.ts +2 -0
- package/dist/types/services/index.d.ts +0 -2
- package/dist/types/services/node.d.ts +2 -0
- package/dist/types/services/react-native.d.ts +2 -0
- package/dist/types/utils.d.ts +1 -1
- package/dist/types/vendor/global.d.js +1 -0
- package/dist/types/vendor/global.d.js.map +1 -0
- package/dist/types/vendor/global.d.mjs +1 -0
- package/dist/types/vendor/global.d.mjs.map +1 -0
- package/dist/types/vendor/readable-stream.d.js +1 -0
- package/dist/types/vendor/readable-stream.d.js.map +1 -0
- package/dist/types/vendor/readable-stream.d.mjs +1 -0
- package/dist/types/vendor/readable-stream.d.mjs.map +1 -0
- package/dist/types/vendor/zlib.d.js +1 -0
- package/dist/types/vendor/zlib.d.js.map +1 -0
- package/dist/types/vendor/zlib.d.mjs +1 -0
- package/dist/types/vendor/zlib.d.mjs.map +1 -0
- package/dist/utils.js +21 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.mjs +21 -0
- package/dist/utils.mjs.map +1 -0
- package/package.json +31 -22
- package/dist/cjs/cronjob/CronjobController.js +0 -296
- package/dist/cjs/cronjob/CronjobController.js.map +0 -1
- package/dist/cjs/cronjob/index.js +0 -20
- package/dist/cjs/cronjob/index.js.map +0 -1
- package/dist/cjs/fsm.js +0 -69
- package/dist/cjs/fsm.js.map +0 -1
- package/dist/cjs/index.js +0 -24
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/interface/SnapInterfaceController.js +0 -166
- package/dist/cjs/interface/SnapInterfaceController.js.map +0 -1
- package/dist/cjs/interface/index.js +0 -20
- package/dist/cjs/interface/index.js.map +0 -1
- package/dist/cjs/interface/utils.js +0 -59
- package/dist/cjs/interface/utils.js.map +0 -1
- package/dist/cjs/logging.js +0 -15
- package/dist/cjs/logging.js.map +0 -1
- package/dist/cjs/services/AbstractExecutionService.js +0 -387
- package/dist/cjs/services/AbstractExecutionService.js.map +0 -1
- package/dist/cjs/services/ExecutionService.js +0 -7
- package/dist/cjs/services/ExecutionService.js.map +0 -1
- package/dist/cjs/services/ProxyPostMessageStream.js +0 -109
- package/dist/cjs/services/ProxyPostMessageStream.js.map +0 -1
- package/dist/cjs/services/browser.js +0 -33
- package/dist/cjs/services/browser.js.map +0 -1
- package/dist/cjs/services/iframe/IframeExecutionService.js +0 -54
- package/dist/cjs/services/iframe/IframeExecutionService.js.map +0 -1
- package/dist/cjs/services/iframe/index.js +0 -20
- package/dist/cjs/services/iframe/index.js.map +0 -1
- package/dist/cjs/services/index.js +0 -33
- package/dist/cjs/services/index.js.map +0 -1
- package/dist/cjs/services/node/NodeProcessExecutionService.js +0 -42
- package/dist/cjs/services/node/NodeProcessExecutionService.js.map +0 -1
- package/dist/cjs/services/node/NodeThreadExecutionService.js +0 -43
- package/dist/cjs/services/node/NodeThreadExecutionService.js.map +0 -1
- package/dist/cjs/services/node/index.js +0 -21
- package/dist/cjs/services/node/index.js.map +0 -1
- package/dist/cjs/services/offscreen/OffscreenExecutionService.js +0 -96
- package/dist/cjs/services/offscreen/OffscreenExecutionService.js.map +0 -1
- package/dist/cjs/services/offscreen/index.js +0 -20
- package/dist/cjs/services/offscreen/index.js.map +0 -1
- package/dist/cjs/services/proxy/ProxyExecutionService.js +0 -110
- package/dist/cjs/services/proxy/ProxyExecutionService.js.map +0 -1
- package/dist/cjs/services/webview/WebViewExecutionService.js +0 -99
- package/dist/cjs/services/webview/WebViewExecutionService.js.map +0 -1
- package/dist/cjs/services/webview/WebViewMessageStream.js +0 -127
- package/dist/cjs/services/webview/WebViewMessageStream.js.map +0 -1
- package/dist/cjs/services/webview/index.js +0 -20
- package/dist/cjs/services/webview/index.js.map +0 -1
- package/dist/cjs/services/webworker/WebWorkerExecutionService.js +0 -148
- package/dist/cjs/services/webworker/WebWorkerExecutionService.js.map +0 -1
- package/dist/cjs/services/webworker/index.js +0 -20
- package/dist/cjs/services/webworker/index.js.map +0 -1
- package/dist/cjs/snaps/RequestQueue.js +0 -63
- package/dist/cjs/snaps/RequestQueue.js.map +0 -1
- package/dist/cjs/snaps/SnapController.js +0 -1968
- package/dist/cjs/snaps/SnapController.js.map +0 -1
- package/dist/cjs/snaps/Timer.js +0 -117
- package/dist/cjs/snaps/Timer.js.map +0 -1
- package/dist/cjs/snaps/constants.js +0 -25
- package/dist/cjs/snaps/constants.js.map +0 -1
- package/dist/cjs/snaps/index.js +0 -23
- package/dist/cjs/snaps/index.js.map +0 -1
- package/dist/cjs/snaps/location/http.js +0 -106
- package/dist/cjs/snaps/location/http.js.map +0 -1
- package/dist/cjs/snaps/location/index.js +0 -23
- package/dist/cjs/snaps/location/index.js.map +0 -1
- package/dist/cjs/snaps/location/local.js +0 -93
- package/dist/cjs/snaps/location/local.js.map +0 -1
- package/dist/cjs/snaps/location/location.js +0 -34
- package/dist/cjs/snaps/location/location.js.map +0 -1
- package/dist/cjs/snaps/location/npm.js +0 -389
- package/dist/cjs/snaps/location/npm.js.map +0 -1
- package/dist/cjs/snaps/registry/index.js +0 -21
- package/dist/cjs/snaps/registry/index.js.map +0 -1
- package/dist/cjs/snaps/registry/json.js +0 -311
- package/dist/cjs/snaps/registry/json.js.map +0 -1
- package/dist/cjs/snaps/registry/registry.js +0 -18
- package/dist/cjs/snaps/registry/registry.js.map +0 -1
- package/dist/cjs/snaps/selectors.js +0 -13
- package/dist/cjs/snaps/selectors.js.map +0 -1
- package/dist/cjs/utils.js +0 -111
- package/dist/cjs/utils.js.map +0 -1
- package/dist/esm/cronjob/CronjobController.js +0 -281
- package/dist/esm/cronjob/CronjobController.js.map +0 -1
- package/dist/esm/cronjob/index.js +0 -3
- package/dist/esm/cronjob/index.js.map +0 -1
- package/dist/esm/fsm.js +0 -70
- package/dist/esm/fsm.js.map +0 -1
- package/dist/esm/index.js +0 -7
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/interface/SnapInterfaceController.js +0 -158
- package/dist/esm/interface/SnapInterfaceController.js.map +0 -1
- package/dist/esm/interface/index.js +0 -3
- package/dist/esm/interface/index.js.map +0 -1
- package/dist/esm/interface/utils.js +0 -62
- package/dist/esm/interface/utils.js.map +0 -1
- package/dist/esm/logging.js +0 -10
- package/dist/esm/logging.js.map +0 -1
- package/dist/esm/services/AbstractExecutionService.js +0 -370
- package/dist/esm/services/AbstractExecutionService.js.map +0 -1
- package/dist/esm/services/ExecutionService.js +0 -4
- package/dist/esm/services/ExecutionService.js.map +0 -1
- package/dist/esm/services/ProxyPostMessageStream.js +0 -102
- package/dist/esm/services/ProxyPostMessageStream.js.map +0 -1
- package/dist/esm/services/browser.js +0 -10
- package/dist/esm/services/browser.js.map +0 -1
- package/dist/esm/services/iframe/IframeExecutionService.js +0 -44
- package/dist/esm/services/iframe/IframeExecutionService.js.map +0 -1
- package/dist/esm/services/iframe/index.js +0 -3
- package/dist/esm/services/iframe/index.js.map +0 -1
- package/dist/esm/services/index.js +0 -10
- package/dist/esm/services/index.js.map +0 -1
- package/dist/esm/services/node/NodeProcessExecutionService.js +0 -32
- package/dist/esm/services/node/NodeProcessExecutionService.js.map +0 -1
- package/dist/esm/services/node/NodeThreadExecutionService.js +0 -34
- package/dist/esm/services/node/NodeThreadExecutionService.js.map +0 -1
- package/dist/esm/services/node/index.js +0 -4
- package/dist/esm/services/node/index.js.map +0 -1
- package/dist/esm/services/offscreen/OffscreenExecutionService.js +0 -86
- package/dist/esm/services/offscreen/OffscreenExecutionService.js.map +0 -1
- package/dist/esm/services/offscreen/index.js +0 -3
- package/dist/esm/services/offscreen/index.js.map +0 -1
- package/dist/esm/services/proxy/ProxyExecutionService.js +0 -100
- package/dist/esm/services/proxy/ProxyExecutionService.js.map +0 -1
- package/dist/esm/services/webview/WebViewExecutionService.js +0 -89
- package/dist/esm/services/webview/WebViewExecutionService.js.map +0 -1
- package/dist/esm/services/webview/WebViewMessageStream.js +0 -119
- package/dist/esm/services/webview/WebViewMessageStream.js.map +0 -1
- package/dist/esm/services/webview/index.js +0 -3
- package/dist/esm/services/webview/index.js.map +0 -1
- package/dist/esm/services/webworker/WebWorkerExecutionService.js +0 -130
- package/dist/esm/services/webworker/WebWorkerExecutionService.js.map +0 -1
- package/dist/esm/services/webworker/index.js +0 -3
- package/dist/esm/services/webworker/index.js.map +0 -1
- package/dist/esm/snaps/RequestQueue.js +0 -53
- package/dist/esm/snaps/RequestQueue.js.map +0 -1
- package/dist/esm/snaps/SnapController.js +0 -1947
- package/dist/esm/snaps/SnapController.js.map +0 -1
- package/dist/esm/snaps/Timer.js +0 -107
- package/dist/esm/snaps/Timer.js.map +0 -1
- package/dist/esm/snaps/constants.js +0 -16
- package/dist/esm/snaps/constants.js.map +0 -1
- package/dist/esm/snaps/index.js +0 -6
- package/dist/esm/snaps/index.js.map +0 -1
- package/dist/esm/snaps/location/http.js +0 -96
- package/dist/esm/snaps/location/http.js.map +0 -1
- package/dist/esm/snaps/location/index.js +0 -6
- package/dist/esm/snaps/location/index.js.map +0 -1
- package/dist/esm/snaps/location/local.js +0 -83
- package/dist/esm/snaps/location/local.js.map +0 -1
- package/dist/esm/snaps/location/location.js +0 -30
- package/dist/esm/snaps/location/location.js.map +0 -1
- package/dist/esm/snaps/location/npm.js +0 -373
- package/dist/esm/snaps/location/npm.js.map +0 -1
- package/dist/esm/snaps/registry/index.js +0 -4
- package/dist/esm/snaps/registry/index.js.map +0 -1
- package/dist/esm/snaps/registry/json.js +0 -301
- package/dist/esm/snaps/registry/json.js.map +0 -1
- package/dist/esm/snaps/registry/registry.js +0 -8
- package/dist/esm/snaps/registry/registry.js.map +0 -1
- package/dist/esm/snaps/selectors.js +0 -3
- package/dist/esm/snaps/selectors.js.map +0 -1
- package/dist/esm/utils.js +0 -132
- package/dist/esm/utils.js.map +0 -1
- /package/dist/types/services/{node → node-js}/NodeProcessExecutionService.d.ts +0 -0
- /package/dist/types/services/{node → node-js}/NodeThreadExecutionService.d.ts +0 -0
- /package/dist/types/services/{node → node-js}/index.d.ts +0 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import {
|
|
2
|
+
constructState
|
|
3
|
+
} from "./chunk-RIU3ZIXZ.mjs";
|
|
4
|
+
import {
|
|
5
|
+
__privateAdd,
|
|
6
|
+
__privateMethod
|
|
7
|
+
} from "./chunk-YRZVIDCF.mjs";
|
|
8
|
+
|
|
9
|
+
// src/interface/SnapInterfaceController.ts
|
|
10
|
+
import { BaseController } from "@metamask/base-controller";
|
|
11
|
+
import {
|
|
12
|
+
getTotalTextLength,
|
|
13
|
+
validateComponentLinks
|
|
14
|
+
} from "@metamask/snaps-utils";
|
|
15
|
+
import { assert, getJsonSize } from "@metamask/utils";
|
|
16
|
+
import { nanoid } from "nanoid";
|
|
17
|
+
var MAX_UI_CONTENT_SIZE = 25e4;
|
|
18
|
+
var MAX_TEXT_LENGTH = 5e4;
|
|
19
|
+
var controllerName = "SnapInterfaceController";
|
|
20
|
+
var _registerMessageHandlers, registerMessageHandlers_fn, _validateArgs, validateArgs_fn, _triggerPhishingListUpdate, triggerPhishingListUpdate_fn, _checkPhishingList, checkPhishingList_fn, _validateContent, validateContent_fn;
|
|
21
|
+
var SnapInterfaceController = class extends BaseController {
|
|
22
|
+
constructor({ messenger, state }) {
|
|
23
|
+
super({
|
|
24
|
+
messenger,
|
|
25
|
+
metadata: {
|
|
26
|
+
interfaces: { persist: false, anonymous: false }
|
|
27
|
+
},
|
|
28
|
+
name: controllerName,
|
|
29
|
+
state: { interfaces: {}, ...state }
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* Constructor helper for registering this controller's messaging system
|
|
33
|
+
* actions.
|
|
34
|
+
*/
|
|
35
|
+
__privateAdd(this, _registerMessageHandlers);
|
|
36
|
+
/**
|
|
37
|
+
* Utility function to validate the args passed to the other methods.
|
|
38
|
+
*
|
|
39
|
+
* @param snapId - The snap id.
|
|
40
|
+
* @param id - The interface id.
|
|
41
|
+
*/
|
|
42
|
+
__privateAdd(this, _validateArgs);
|
|
43
|
+
/**
|
|
44
|
+
* Trigger a Phishing list update if needed.
|
|
45
|
+
*/
|
|
46
|
+
__privateAdd(this, _triggerPhishingListUpdate);
|
|
47
|
+
/**
|
|
48
|
+
* Check an origin against the phishing list.
|
|
49
|
+
*
|
|
50
|
+
* @param origin - The origin to check.
|
|
51
|
+
* @returns True if the origin is on the phishing list, otherwise false.
|
|
52
|
+
*/
|
|
53
|
+
__privateAdd(this, _checkPhishingList);
|
|
54
|
+
/**
|
|
55
|
+
* Utility function to validate the components of an interface.
|
|
56
|
+
* Throws if something is invalid.
|
|
57
|
+
*
|
|
58
|
+
* Right now this only checks links against the phighing list.
|
|
59
|
+
*
|
|
60
|
+
* @param content - The components to verify.
|
|
61
|
+
*/
|
|
62
|
+
__privateAdd(this, _validateContent);
|
|
63
|
+
__privateMethod(this, _registerMessageHandlers, registerMessageHandlers_fn).call(this);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Create an interface in the controller state with the associated data.
|
|
67
|
+
*
|
|
68
|
+
* @param snapId - The snap id that created the interface.
|
|
69
|
+
* @param content - The interface content.
|
|
70
|
+
* @returns The newly interface id.
|
|
71
|
+
*/
|
|
72
|
+
async createInterface(snapId, content) {
|
|
73
|
+
await __privateMethod(this, _validateContent, validateContent_fn).call(this, content);
|
|
74
|
+
const id = nanoid();
|
|
75
|
+
const componentState = constructState({}, content);
|
|
76
|
+
this.update((draftState) => {
|
|
77
|
+
draftState.interfaces[id] = {
|
|
78
|
+
snapId,
|
|
79
|
+
content,
|
|
80
|
+
state: componentState
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
return id;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get the data of a given interface id.
|
|
87
|
+
*
|
|
88
|
+
* @param snapId - The snap id requesting the interface data.
|
|
89
|
+
* @param id - The interface id.
|
|
90
|
+
* @returns The interface state.
|
|
91
|
+
*/
|
|
92
|
+
getInterface(snapId, id) {
|
|
93
|
+
__privateMethod(this, _validateArgs, validateArgs_fn).call(this, snapId, id);
|
|
94
|
+
return this.state.interfaces[id];
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Update the interface with the given content.
|
|
98
|
+
*
|
|
99
|
+
* @param snapId - The snap id requesting the update.
|
|
100
|
+
* @param id - The interface id.
|
|
101
|
+
* @param content - The new content.
|
|
102
|
+
*/
|
|
103
|
+
async updateInterface(snapId, id, content) {
|
|
104
|
+
__privateMethod(this, _validateArgs, validateArgs_fn).call(this, snapId, id);
|
|
105
|
+
await __privateMethod(this, _validateContent, validateContent_fn).call(this, content);
|
|
106
|
+
const oldState = this.state.interfaces[id].state;
|
|
107
|
+
const newState = constructState(oldState, content);
|
|
108
|
+
this.update((draftState) => {
|
|
109
|
+
draftState.interfaces[id].state = newState;
|
|
110
|
+
draftState.interfaces[id].content = content;
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Delete an interface from state.
|
|
115
|
+
*
|
|
116
|
+
* @param id - The interface id.
|
|
117
|
+
*/
|
|
118
|
+
deleteInterface(id) {
|
|
119
|
+
this.update((draftState) => {
|
|
120
|
+
delete draftState.interfaces[id];
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Update the interface state.
|
|
125
|
+
*
|
|
126
|
+
* @param id - The interface id.
|
|
127
|
+
* @param state - The new state.
|
|
128
|
+
*/
|
|
129
|
+
updateInterfaceState(id, state) {
|
|
130
|
+
this.update((draftState) => {
|
|
131
|
+
draftState.interfaces[id].state = state;
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
_registerMessageHandlers = new WeakSet();
|
|
136
|
+
registerMessageHandlers_fn = function() {
|
|
137
|
+
this.messagingSystem.registerActionHandler(
|
|
138
|
+
`${controllerName}:createInterface`,
|
|
139
|
+
this.createInterface.bind(this)
|
|
140
|
+
);
|
|
141
|
+
this.messagingSystem.registerActionHandler(
|
|
142
|
+
`${controllerName}:getInterface`,
|
|
143
|
+
this.getInterface.bind(this)
|
|
144
|
+
);
|
|
145
|
+
this.messagingSystem.registerActionHandler(
|
|
146
|
+
`${controllerName}:updateInterface`,
|
|
147
|
+
this.updateInterface.bind(this)
|
|
148
|
+
);
|
|
149
|
+
this.messagingSystem.registerActionHandler(
|
|
150
|
+
`${controllerName}:deleteInterface`,
|
|
151
|
+
this.deleteInterface.bind(this)
|
|
152
|
+
);
|
|
153
|
+
this.messagingSystem.registerActionHandler(
|
|
154
|
+
`${controllerName}:updateInterfaceState`,
|
|
155
|
+
this.updateInterfaceState.bind(this)
|
|
156
|
+
);
|
|
157
|
+
};
|
|
158
|
+
_validateArgs = new WeakSet();
|
|
159
|
+
validateArgs_fn = function(snapId, id) {
|
|
160
|
+
const existingInterface = this.state.interfaces[id];
|
|
161
|
+
assert(
|
|
162
|
+
existingInterface !== void 0,
|
|
163
|
+
`Interface with id '${id}' not found.`
|
|
164
|
+
);
|
|
165
|
+
assert(
|
|
166
|
+
existingInterface.snapId === snapId,
|
|
167
|
+
`Interface not created by ${snapId}.`
|
|
168
|
+
);
|
|
169
|
+
};
|
|
170
|
+
_triggerPhishingListUpdate = new WeakSet();
|
|
171
|
+
triggerPhishingListUpdate_fn = async function() {
|
|
172
|
+
await this.messagingSystem.call("PhishingController:maybeUpdateState");
|
|
173
|
+
};
|
|
174
|
+
_checkPhishingList = new WeakSet();
|
|
175
|
+
checkPhishingList_fn = function(origin) {
|
|
176
|
+
return this.messagingSystem.call("PhishingController:testOrigin", origin).result;
|
|
177
|
+
};
|
|
178
|
+
_validateContent = new WeakSet();
|
|
179
|
+
validateContent_fn = async function(content) {
|
|
180
|
+
const size = getJsonSize(content);
|
|
181
|
+
assert(
|
|
182
|
+
size <= MAX_UI_CONTENT_SIZE,
|
|
183
|
+
`A Snap UI may not be larger than ${MAX_UI_CONTENT_SIZE / 1e3} kB.`
|
|
184
|
+
);
|
|
185
|
+
const textSize = getTotalTextLength(content);
|
|
186
|
+
assert(
|
|
187
|
+
textSize <= MAX_TEXT_LENGTH,
|
|
188
|
+
`The text in a Snap UI may not be larger than ${MAX_TEXT_LENGTH / 1e3} kB.`
|
|
189
|
+
);
|
|
190
|
+
await __privateMethod(this, _triggerPhishingListUpdate, triggerPhishingListUpdate_fn).call(this);
|
|
191
|
+
validateComponentLinks(content, __privateMethod(this, _checkPhishingList, checkPhishingList_fn).bind(this));
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
export {
|
|
195
|
+
SnapInterfaceController
|
|
196
|
+
};
|
|
197
|
+
//# sourceMappingURL=chunk-K276CM3B.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/interface/SnapInterfaceController.ts"],"sourcesContent":["import type { RestrictedControllerMessenger } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type {\n MaybeUpdateState,\n TestOrigin,\n} from '@metamask/phishing-controller';\nimport type { Component, InterfaceState, SnapId } from '@metamask/snaps-sdk';\nimport {\n getTotalTextLength,\n validateComponentLinks,\n} from '@metamask/snaps-utils';\nimport { assert, getJsonSize } from '@metamask/utils';\nimport { nanoid } from 'nanoid';\n\nimport { constructState } from './utils';\n\nconst MAX_UI_CONTENT_SIZE = 250_000; // 250 kb\nconst MAX_TEXT_LENGTH = 50_000; // 50 kb\n\nconst controllerName = 'SnapInterfaceController';\n\nexport type CreateInterface = {\n type: `${typeof controllerName}:createInterface`;\n handler: SnapInterfaceController['createInterface'];\n};\n\nexport type GetInterface = {\n type: `${typeof controllerName}:getInterface`;\n handler: SnapInterfaceController['getInterface'];\n};\n\nexport type UpdateInterface = {\n type: `${typeof controllerName}:updateInterface`;\n handler: SnapInterfaceController['updateInterface'];\n};\n\nexport type DeleteInterface = {\n type: `${typeof controllerName}:deleteInterface`;\n handler: SnapInterfaceController['deleteInterface'];\n};\n\nexport type UpdateInterfaceState = {\n type: `${typeof controllerName}:updateInterfaceState`;\n handler: SnapInterfaceController['updateInterfaceState'];\n};\n\nexport type SnapInterfaceControllerAllowedActions =\n | TestOrigin\n | MaybeUpdateState;\n\nexport type SnapInterfaceControllerActions =\n | CreateInterface\n | GetInterface\n | UpdateInterface\n | DeleteInterface\n | UpdateInterfaceState;\n\nexport type SnapInterfaceControllerMessenger = RestrictedControllerMessenger<\n typeof controllerName,\n SnapInterfaceControllerActions | SnapInterfaceControllerAllowedActions,\n never,\n SnapInterfaceControllerAllowedActions['type'],\n never\n>;\n\nexport type StoredInterface = {\n snapId: SnapId;\n content: Component;\n state: InterfaceState;\n};\n\nexport type SnapInterfaceControllerState = {\n interfaces: Record<string, StoredInterface>;\n};\n\nexport type SnapInterfaceControllerArgs = {\n messenger: SnapInterfaceControllerMessenger;\n state?: SnapInterfaceControllerState;\n};\n\n/**\n * Use this controller to manage snaps UI interfaces using RPC method hooks.\n */\nexport class SnapInterfaceController extends BaseController<\n typeof controllerName,\n SnapInterfaceControllerState,\n SnapInterfaceControllerMessenger\n> {\n constructor({ messenger, state }: SnapInterfaceControllerArgs) {\n super({\n messenger,\n metadata: {\n interfaces: { persist: false, anonymous: false },\n },\n name: controllerName,\n state: { interfaces: {}, ...state },\n });\n\n this.#registerMessageHandlers();\n }\n\n /**\n * Constructor helper for registering this controller's messaging system\n * actions.\n */\n #registerMessageHandlers() {\n this.messagingSystem.registerActionHandler(\n `${controllerName}:createInterface`,\n this.createInterface.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n `${controllerName}:getInterface`,\n this.getInterface.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n `${controllerName}:updateInterface`,\n this.updateInterface.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n `${controllerName}:deleteInterface`,\n this.deleteInterface.bind(this),\n );\n\n this.messagingSystem.registerActionHandler(\n `${controllerName}:updateInterfaceState`,\n this.updateInterfaceState.bind(this),\n );\n }\n\n /**\n * Create an interface in the controller state with the associated data.\n *\n * @param snapId - The snap id that created the interface.\n * @param content - The interface content.\n * @returns The newly interface id.\n */\n async createInterface(snapId: SnapId, content: Component) {\n await this.#validateContent(content);\n\n const id = nanoid();\n\n const componentState = constructState({}, content);\n\n this.update((draftState) => {\n draftState.interfaces[id] = {\n snapId,\n content,\n state: componentState,\n };\n });\n\n return id;\n }\n\n /**\n * Get the data of a given interface id.\n *\n * @param snapId - The snap id requesting the interface data.\n * @param id - The interface id.\n * @returns The interface state.\n */\n getInterface(snapId: SnapId, id: string) {\n this.#validateArgs(snapId, id);\n\n return this.state.interfaces[id];\n }\n\n /**\n * Update the interface with the given content.\n *\n * @param snapId - The snap id requesting the update.\n * @param id - The interface id.\n * @param content - The new content.\n */\n async updateInterface(snapId: SnapId, id: string, content: Component) {\n this.#validateArgs(snapId, id);\n await this.#validateContent(content);\n\n const oldState = this.state.interfaces[id].state;\n\n const newState = constructState(oldState, content);\n\n this.update((draftState) => {\n draftState.interfaces[id].state = newState;\n draftState.interfaces[id].content = content;\n });\n }\n\n /**\n * Delete an interface from state.\n *\n * @param id - The interface id.\n */\n deleteInterface(id: string) {\n this.update((draftState) => {\n delete draftState.interfaces[id];\n });\n }\n\n /**\n * Update the interface state.\n *\n * @param id - The interface id.\n * @param state - The new state.\n */\n updateInterfaceState(id: string, state: InterfaceState) {\n this.update((draftState) => {\n draftState.interfaces[id].state = state;\n });\n }\n\n /**\n * Utility function to validate the args passed to the other methods.\n *\n * @param snapId - The snap id.\n * @param id - The interface id.\n */\n #validateArgs(snapId: SnapId, id: string) {\n const existingInterface = this.state.interfaces[id];\n\n assert(\n existingInterface !== undefined,\n `Interface with id '${id}' not found.`,\n );\n assert(\n existingInterface.snapId === snapId,\n `Interface not created by ${snapId}.`,\n );\n }\n\n /**\n * Trigger a Phishing list update if needed.\n */\n async #triggerPhishingListUpdate() {\n await this.messagingSystem.call('PhishingController:maybeUpdateState');\n }\n\n /**\n * Check an origin against the phishing list.\n *\n * @param origin - The origin to check.\n * @returns True if the origin is on the phishing list, otherwise false.\n */\n #checkPhishingList(origin: string) {\n return this.messagingSystem.call('PhishingController:testOrigin', origin)\n .result;\n }\n\n /**\n * Utility function to validate the components of an interface.\n * Throws if something is invalid.\n *\n * Right now this only checks links against the phighing list.\n *\n * @param content - The components to verify.\n */\n async #validateContent(content: Component) {\n const size = getJsonSize(content);\n\n assert(\n size <= MAX_UI_CONTENT_SIZE,\n `A Snap UI may not be larger than ${MAX_UI_CONTENT_SIZE / 1000} kB.`,\n );\n\n const textSize = getTotalTextLength(content);\n\n assert(\n textSize <= MAX_TEXT_LENGTH,\n `The text in a Snap UI may not be larger than ${\n MAX_TEXT_LENGTH / 1000\n } kB.`,\n );\n\n await this.#triggerPhishingListUpdate();\n\n validateComponentLinks(content, this.#checkPhishingList.bind(this));\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkC4D6GBMYjs = require('./chunk-C4D6GBMY.js');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkU6T2MPXTjs = require('./chunk-U6T2MPXT.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _chunkEXN2TFDJjs = require('./chunk-EXN2TFDJ.js');
|
|
13
|
+
|
|
14
|
+
// src/services/webview/WebViewExecutionService.ts
|
|
15
|
+
var _getWebView, _ensureWebViewLoaded, ensureWebViewLoaded_fn;
|
|
16
|
+
var WebViewExecutionService = class extends _chunkU6T2MPXTjs.ProxyExecutionService {
|
|
17
|
+
constructor({
|
|
18
|
+
messenger,
|
|
19
|
+
setupSnapProvider,
|
|
20
|
+
getWebView
|
|
21
|
+
}) {
|
|
22
|
+
super({
|
|
23
|
+
messenger,
|
|
24
|
+
setupSnapProvider,
|
|
25
|
+
stream: new (0, _chunkC4D6GBMYjs.WebViewMessageStream)({
|
|
26
|
+
name: "parent",
|
|
27
|
+
target: "child",
|
|
28
|
+
getWebView
|
|
29
|
+
})
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* Ensure that the WebView has been loaded by awaiting the getWebView promise.
|
|
33
|
+
*/
|
|
34
|
+
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _ensureWebViewLoaded);
|
|
35
|
+
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _getWebView, void 0);
|
|
36
|
+
_chunkEXN2TFDJjs.__privateSet.call(void 0, this, _getWebView, getWebView);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Create a new stream for the specified job. This wraps the runtime stream
|
|
40
|
+
* in a stream specific to the job.
|
|
41
|
+
*
|
|
42
|
+
* @param jobId - The job ID.
|
|
43
|
+
*/
|
|
44
|
+
async initEnvStream(jobId) {
|
|
45
|
+
await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _ensureWebViewLoaded, ensureWebViewLoaded_fn).call(this);
|
|
46
|
+
return super.initEnvStream(jobId);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
_getWebView = new WeakMap();
|
|
50
|
+
_ensureWebViewLoaded = new WeakSet();
|
|
51
|
+
ensureWebViewLoaded_fn = async function() {
|
|
52
|
+
await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _getWebView).call(this);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
exports.WebViewExecutionService = WebViewExecutionService;
|
|
58
|
+
//# sourceMappingURL=chunk-KBVG3CL2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/services/webview/WebViewExecutionService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA;AASO,IAAM,0BAAN,cAAsC,sBAAsB;AAAA,EAGjE,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAgC;AAC9B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,QAAQ,IAAI,qBAAqB;AAAA,QAC/B,MAAM;AAAA,QACN,QAAQ;AAAA,QACR;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAoBH;AAAA;AAAA;AAAA,uBAAM;AAnCN;AAgBE,uBAAK,aAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAgB,cAAc,OAAe;AAE3C,UAAM,sBAAK,8CAAL;AAEN,WAAO,MAAM,cAAc,KAAK;AAAA,EAClC;AAQF;AAtCE;AAmCM;AAAA,yBAAoB,iBAAG;AAC3B,QAAM,mBAAK,aAAL;AACR","sourcesContent":["import type { ExecutionServiceArgs } from '../AbstractExecutionService';\nimport { ProxyExecutionService } from '../proxy/ProxyExecutionService';\nimport type { WebViewInterface } from './WebViewMessageStream';\nimport { WebViewMessageStream } from './WebViewMessageStream';\n\nexport type WebViewExecutionServiceArgs = ExecutionServiceArgs & {\n getWebView: () => Promise<WebViewInterface>;\n};\n\nexport class WebViewExecutionService extends ProxyExecutionService {\n #getWebView;\n\n constructor({\n messenger,\n setupSnapProvider,\n getWebView,\n }: WebViewExecutionServiceArgs) {\n super({\n messenger,\n setupSnapProvider,\n stream: new WebViewMessageStream({\n name: 'parent',\n target: 'child',\n getWebView,\n }),\n });\n this.#getWebView = getWebView;\n }\n\n /**\n * Create a new stream for the specified job. This wraps the runtime stream\n * in a stream specific to the job.\n *\n * @param jobId - The job ID.\n */\n protected async initEnvStream(jobId: string) {\n // Ensure that the WebView has been loaded before we proceed.\n await this.#ensureWebViewLoaded();\n\n return super.initEnvStream(jobId);\n }\n\n /**\n * Ensure that the WebView has been loaded by awaiting the getWebView promise.\n */\n async #ensureWebViewLoaded() {\n await this.#getWebView();\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-KCMULJ2M.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AbstractExecutionService
|
|
3
|
+
} from "./chunk-6NYC5VNK.mjs";
|
|
4
|
+
import {
|
|
5
|
+
ProxyPostMessageStream
|
|
6
|
+
} from "./chunk-ZVOYOZFT.mjs";
|
|
7
|
+
import {
|
|
8
|
+
__privateAdd,
|
|
9
|
+
__privateGet,
|
|
10
|
+
__privateSet
|
|
11
|
+
} from "./chunk-YRZVIDCF.mjs";
|
|
12
|
+
|
|
13
|
+
// src/services/proxy/ProxyExecutionService.ts
|
|
14
|
+
import { nanoid } from "nanoid";
|
|
15
|
+
var _stream;
|
|
16
|
+
var ProxyExecutionService = class extends AbstractExecutionService {
|
|
17
|
+
/**
|
|
18
|
+
* Create a new proxy execution service.
|
|
19
|
+
*
|
|
20
|
+
* @param args - The constructor arguments.
|
|
21
|
+
* @param args.messenger - The messenger to use for communication with the
|
|
22
|
+
* `SnapController`.
|
|
23
|
+
* @param args.setupSnapProvider - The function to use to set up the snap
|
|
24
|
+
* provider.
|
|
25
|
+
* @param args.stream - The stream to use for communicating with the proxy
|
|
26
|
+
* executor.
|
|
27
|
+
*/
|
|
28
|
+
constructor({
|
|
29
|
+
stream,
|
|
30
|
+
messenger,
|
|
31
|
+
setupSnapProvider
|
|
32
|
+
}) {
|
|
33
|
+
super({
|
|
34
|
+
messenger,
|
|
35
|
+
setupSnapProvider
|
|
36
|
+
});
|
|
37
|
+
__privateAdd(this, _stream, void 0);
|
|
38
|
+
__privateSet(this, _stream, stream);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Send a termination command to the proxy stream.
|
|
42
|
+
*
|
|
43
|
+
* @param job - The job to terminate.
|
|
44
|
+
*/
|
|
45
|
+
async terminateJob(job) {
|
|
46
|
+
__privateGet(this, _stream).write({
|
|
47
|
+
jobId: job.id,
|
|
48
|
+
data: {
|
|
49
|
+
jsonrpc: "2.0",
|
|
50
|
+
method: "terminateJob",
|
|
51
|
+
id: nanoid()
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Create a new stream for the specified job. This wraps the root stream
|
|
57
|
+
* in a stream specific to the job.
|
|
58
|
+
*
|
|
59
|
+
* @param jobId - The job ID.
|
|
60
|
+
*/
|
|
61
|
+
async initEnvStream(jobId) {
|
|
62
|
+
const stream = new ProxyPostMessageStream({
|
|
63
|
+
stream: __privateGet(this, _stream),
|
|
64
|
+
jobId
|
|
65
|
+
});
|
|
66
|
+
return { worker: jobId, stream };
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
_stream = new WeakMap();
|
|
70
|
+
|
|
71
|
+
export {
|
|
72
|
+
ProxyExecutionService
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=chunk-KF4PCKG7.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/services/proxy/ProxyExecutionService.ts"],"sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { nanoid } from 'nanoid';\n\nimport type { ExecutionServiceArgs, Job } from '../AbstractExecutionService';\nimport { AbstractExecutionService } from '../AbstractExecutionService';\nimport { ProxyPostMessageStream } from '../ProxyPostMessageStream';\n\ntype ProxyExecutionEnvironmentServiceArgs = {\n stream: BasePostMessageStream;\n} & ExecutionServiceArgs;\n\nexport class ProxyExecutionService extends AbstractExecutionService<string> {\n readonly #stream: BasePostMessageStream;\n\n /**\n * Create a new proxy execution service.\n *\n * @param args - The constructor arguments.\n * @param args.messenger - The messenger to use for communication with the\n * `SnapController`.\n * @param args.setupSnapProvider - The function to use to set up the snap\n * provider.\n * @param args.stream - The stream to use for communicating with the proxy\n * executor.\n */\n constructor({\n stream,\n messenger,\n setupSnapProvider,\n }: ProxyExecutionEnvironmentServiceArgs) {\n super({\n messenger,\n setupSnapProvider,\n });\n\n this.#stream = stream;\n }\n\n /**\n * Send a termination command to the proxy stream.\n *\n * @param job - The job to terminate.\n */\n protected async terminateJob(job: Job<string>) {\n // The `AbstractExecutionService` will have already closed the job stream,\n // so we write to the runtime stream directly.\n this.#stream.write({\n jobId: job.id,\n data: {\n jsonrpc: '2.0',\n method: 'terminateJob',\n id: nanoid(),\n },\n });\n }\n\n /**\n * Create a new stream for the specified job. This wraps the root stream\n * in a stream specific to the job.\n *\n * @param jobId - The job ID.\n */\n protected async initEnvStream(jobId: string) {\n const stream = new ProxyPostMessageStream({\n stream: this.#stream,\n jobId,\n });\n\n return { worker: jobId, stream };\n }\n}\n"],"mappings":";;;;;;;;;;;;;AACA,SAAS,cAAc;AADvB;AAWO,IAAM,wBAAN,cAAoC,yBAAiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAc1E,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAyC;AACvC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,IACF,CAAC;AArBH,uBAAS,SAAT;AAuBE,uBAAK,SAAU;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAgB,aAAa,KAAkB;AAG7C,uBAAK,SAAQ,MAAM;AAAA,MACjB,OAAO,IAAI;AAAA,MACX,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,IAAI,OAAO;AAAA,MACb;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAgB,cAAc,OAAe;AAC3C,UAAM,SAAS,IAAI,uBAAuB;AAAA,MACxC,QAAQ,mBAAK;AAAA,MACb;AAAA,IACF,CAAC;AAED,WAAO,EAAE,QAAQ,OAAO,OAAO;AAAA,EACjC;AACF;AA1DW;","names":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/interface/utils.ts
|
|
2
|
+
var _snapssdk = require('@metamask/snaps-sdk');
|
|
3
|
+
var constructInputState = (state, component) => {
|
|
4
|
+
return component.value ?? state[component.name] ?? null;
|
|
5
|
+
};
|
|
6
|
+
var constructFormInputState = (state, component, form) => {
|
|
7
|
+
const oldFormState = state[form];
|
|
8
|
+
const oldInputState = oldFormState?.[component.name];
|
|
9
|
+
return component.value ?? oldInputState ?? null;
|
|
10
|
+
};
|
|
11
|
+
var assertNameIsUnique = (state, name) => {
|
|
12
|
+
_snapssdk.assert.call(void 0,
|
|
13
|
+
state[name] === void 0,
|
|
14
|
+
`Duplicate component names are not allowed, found multiple instances of: "${name}".`
|
|
15
|
+
);
|
|
16
|
+
};
|
|
17
|
+
var constructState = (oldState, component, newState = {}) => {
|
|
18
|
+
const { type } = component;
|
|
19
|
+
if (type === _snapssdk.NodeType.Panel) {
|
|
20
|
+
return component.children.reduce(
|
|
21
|
+
(acc, node) => constructState(oldState, node, acc),
|
|
22
|
+
newState
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
if (type === _snapssdk.NodeType.Form) {
|
|
26
|
+
assertNameIsUnique(newState, component.name);
|
|
27
|
+
newState[component.name] = component.children.reduce(
|
|
28
|
+
(acc, node) => {
|
|
29
|
+
if (node.type === _snapssdk.NodeType.Input) {
|
|
30
|
+
assertNameIsUnique(acc, node.name);
|
|
31
|
+
acc[node.name] = constructFormInputState(
|
|
32
|
+
oldState,
|
|
33
|
+
node,
|
|
34
|
+
component.name
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
return acc;
|
|
38
|
+
},
|
|
39
|
+
{}
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
if (type === _snapssdk.NodeType.Input) {
|
|
43
|
+
assertNameIsUnique(newState, component.name);
|
|
44
|
+
newState[component.name] = constructInputState(oldState, component);
|
|
45
|
+
}
|
|
46
|
+
return newState;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
exports.constructInputState = constructInputState; exports.constructFormInputState = constructFormInputState; exports.assertNameIsUnique = assertNameIsUnique; exports.constructState = constructState;
|
|
55
|
+
//# sourceMappingURL=chunk-KLK7ZRMH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/interface/utils.ts"],"names":[],"mappings":";AAAA,SAAS,UAAU,cAAc;AAe1B,IAAM,sBAAsB,CACjC,OACA,cACG;AACH,SAAO,UAAU,SAAS,MAAM,UAAU,IAAI,KAAK;AACrD;AAYO,IAAM,0BAA0B,CACrC,OACA,WACA,SACG;AACH,QAAM,eAAe,MAAM,IAAI;AAC/B,QAAM,gBAAgB,eAAe,UAAU,IAAI;AACnD,SAAO,UAAU,SAAS,iBAAiB;AAC7C;AAQO,IAAM,qBAAqB,CAAC,OAAuB,SAAiB;AACzE;AAAA,IACE,MAAM,IAAI,MAAM;AAAA,IAChB,4EAA4E,IAAI;AAAA,EAClF;AACF;AAUO,IAAM,iBAAiB,CAC5B,UACA,WACA,WAA2B,CAAC,MACT;AACnB,QAAM,EAAE,KAAK,IAAI;AACjB,MAAI,SAAS,SAAS,OAAO;AAC3B,WAAO,UAAU,SAAS;AAAA,MACxB,CAAC,KAAK,SAAS,eAAe,UAAU,MAAM,GAAG;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,SAAS,SAAS,MAAM;AAC1B,uBAAmB,UAAU,UAAU,IAAI;AAC3C,aAAS,UAAU,IAAI,IAAI,UAAU,SAAS;AAAA,MAC5C,CAAC,KAAK,SAAS;AACb,YAAI,KAAK,SAAS,SAAS,OAAO;AAChC,6BAAmB,KAAK,KAAK,IAAI;AACjC,cAAI,KAAK,IAAI,IAAI;AAAA,YACf;AAAA,YACA;AAAA,YACA,UAAU;AAAA,UACZ;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,MACA,CAAC;AAAA,IACH;AAAA,EACF;AAEA,MAAI,SAAS,SAAS,OAAO;AAC3B,uBAAmB,UAAU,UAAU,IAAI;AAC3C,aAAS,UAAU,IAAI,IAAI,oBAAoB,UAAU,SAAS;AAAA,EACpE;AAEA,SAAO;AACT","sourcesContent":["import { NodeType, assert } from '@metamask/snaps-sdk';\nimport type {\n Component,\n Input,\n FormState,\n InterfaceState,\n} from '@metamask/snaps-sdk';\n\n/**\n * Construct the state for a stray input (not enclosed in a form).\n *\n * @param state - The interface state.\n * @param component - The Input component.\n * @returns The input state.\n */\nexport const constructInputState = (\n state: InterfaceState,\n component: Input,\n) => {\n return component.value ?? state[component.name] ?? null;\n};\n\n/**\n * Construct the state for a form input.\n *\n * Sets the state to either the specified component value, the previous value from the old state or null.\n *\n * @param state - The interface state.\n * @param component - The Input component.\n * @param form - The parent form name of the input.\n * @returns The input state.\n */\nexport const constructFormInputState = (\n state: InterfaceState,\n component: Input,\n form: string,\n) => {\n const oldFormState = state[form] as FormState;\n const oldInputState = oldFormState?.[component.name];\n return component.value ?? oldInputState ?? null;\n};\n\n/**\n * Assert that the component name is unique in state.\n *\n * @param state - The interface state to verify against.\n * @param name - The component name to verify.\n */\nexport const assertNameIsUnique = (state: InterfaceState, name: string) => {\n assert(\n state[name] === undefined,\n `Duplicate component names are not allowed, found multiple instances of: \"${name}\".`,\n );\n};\n\n/**\n * Construct the interface state for a given component tree while preserving values for matching stateful components in the old state.\n *\n * @param oldState - The previous state.\n * @param component - The UI component to construct state from.\n * @param newState - The state that is being constructed.\n * @returns The interface state of the passed component.\n */\nexport const constructState = (\n oldState: InterfaceState,\n component: Component,\n newState: InterfaceState = {},\n): InterfaceState => {\n const { type } = component;\n if (type === NodeType.Panel) {\n return component.children.reduce(\n (acc, node) => constructState(oldState, node, acc),\n newState,\n );\n }\n\n if (type === NodeType.Form) {\n assertNameIsUnique(newState, component.name);\n newState[component.name] = component.children.reduce<FormState>(\n (acc, node) => {\n if (node.type === NodeType.Input) {\n assertNameIsUnique(acc, node.name);\n acc[node.name] = constructFormInputState(\n oldState,\n node,\n component.name,\n );\n }\n\n return acc;\n },\n {},\n );\n }\n\n if (type === NodeType.Input) {\n assertNameIsUnique(newState, component.name);\n newState[component.name] = constructInputState(oldState, component);\n }\n\n return newState;\n};\n"]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkRDBT3ZJQjs = require('./chunk-RDBT3ZJQ.js');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
var _chunkEXN2TFDJjs = require('./chunk-EXN2TFDJ.js');
|
|
9
|
+
|
|
10
|
+
// src/snaps/location/local.ts
|
|
11
|
+
var _snapsutils = require('@metamask/snaps-utils');
|
|
12
|
+
var _utils = require('@metamask/utils');
|
|
13
|
+
var _http;
|
|
14
|
+
var LocalLocation = class {
|
|
15
|
+
constructor(url, opts = {}) {
|
|
16
|
+
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _http, void 0);
|
|
17
|
+
_utils.assertStruct.call(void 0, url.toString(), _snapsutils.LocalSnapIdStruct, "Invalid Snap Id");
|
|
18
|
+
_utils.assert.call(void 0,
|
|
19
|
+
opts.fetchOptions === void 0,
|
|
20
|
+
"Currently adding fetch options to local: is unsupported."
|
|
21
|
+
);
|
|
22
|
+
_chunkEXN2TFDJjs.__privateSet.call(void 0, this, _http, new (0, _chunkRDBT3ZJQjs.HttpLocation)(
|
|
23
|
+
new URL(url.toString().slice(_snapsutils.SnapIdPrefixes.local.length)),
|
|
24
|
+
{ ...opts, fetchOptions: { cache: "no-cache" } }
|
|
25
|
+
));
|
|
26
|
+
}
|
|
27
|
+
async manifest() {
|
|
28
|
+
const vfile = await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _http).manifest();
|
|
29
|
+
return convertCanonical(vfile);
|
|
30
|
+
}
|
|
31
|
+
async fetch(path) {
|
|
32
|
+
return convertCanonical(await _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _http).fetch(path));
|
|
33
|
+
}
|
|
34
|
+
get shouldAlwaysReload() {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
_http = new WeakMap();
|
|
39
|
+
function convertCanonical(vfile) {
|
|
40
|
+
_utils.assert.call(void 0, vfile.data.canonicalPath !== void 0);
|
|
41
|
+
vfile.data.canonicalPath = `local:${vfile.data.canonicalPath}`;
|
|
42
|
+
return vfile;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
exports.LocalLocation = LocalLocation;
|
|
48
|
+
//# sourceMappingURL=chunk-LWBPKSU2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/snaps/location/local.ts"],"names":[],"mappings":";;;;;;;;;;AACA,SAAS,mBAAmB,sBAAsB;AAClD,SAAS,QAAQ,oBAAoB;AAFrC;AAQO,IAAM,gBAAN,MAA4C;AAAA,EAGjD,YAAY,KAAU,OAAoB,CAAC,GAAG;AAF9C,uBAAS,OAAT;AAGE,iBAAa,IAAI,SAAS,GAAG,mBAAmB,iBAAiB;AAEjE;AAAA,MACE,KAAK,iBAAiB;AAAA,MACtB;AAAA,IACF;AAEA,uBAAK,OAAQ,IAAI;AAAA,MACf,IAAI,IAAI,IAAI,SAAS,EAAE,MAAM,eAAe,MAAM,MAAM,CAAC;AAAA,MACzD,EAAE,GAAG,MAAM,cAAc,EAAE,OAAO,WAAW,EAAE;AAAA,IACjD;AAAA,EACF;AAAA,EAEA,MAAM,WAA+C;AACnD,UAAM,QAAQ,MAAM,mBAAK,OAAM,SAAS;AAExC,WAAO,iBAAiB,KAAK;AAAA,EAC/B;AAAA,EAEA,MAAM,MAAM,MAAoC;AAC9C,WAAO,iBAAiB,MAAM,mBAAK,OAAM,MAAM,IAAI,CAAC;AAAA,EACtD;AAAA,EAEA,IAAI,qBAAqB;AACvB,WAAO;AAAA,EACT;AACF;AA7BW;AAqCX,SAAS,iBACP,OACqB;AACrB,SAAO,MAAM,KAAK,kBAAkB,MAAS;AAC7C,QAAM,KAAK,gBAAgB,SAAS,MAAM,KAAK,aAAa;AAC5D,SAAO;AACT","sourcesContent":["import type { SnapManifest, VirtualFile } from '@metamask/snaps-utils';\nimport { LocalSnapIdStruct, SnapIdPrefixes } from '@metamask/snaps-utils';\nimport { assert, assertStruct } from '@metamask/utils';\n\nimport type { HttpOptions } from './http';\nimport { HttpLocation } from './http';\nimport type { SnapLocation } from './location';\n\nexport class LocalLocation implements SnapLocation {\n readonly #http: HttpLocation;\n\n constructor(url: URL, opts: HttpOptions = {}) {\n assertStruct(url.toString(), LocalSnapIdStruct, 'Invalid Snap Id');\n // TODO(ritave): Write deepMerge() which merges fetchOptions.\n assert(\n opts.fetchOptions === undefined,\n 'Currently adding fetch options to local: is unsupported.',\n );\n\n this.#http = new HttpLocation(\n new URL(url.toString().slice(SnapIdPrefixes.local.length)),\n { ...opts, fetchOptions: { cache: 'no-cache' } },\n );\n }\n\n async manifest(): Promise<VirtualFile<SnapManifest>> {\n const vfile = await this.#http.manifest();\n\n return convertCanonical(vfile);\n }\n\n async fetch(path: string): Promise<VirtualFile> {\n return convertCanonical(await this.#http.fetch(path));\n }\n\n get shouldAlwaysReload() {\n return true;\n }\n}\n\n/**\n * Converts vfiles with canonical `http:` paths into `local:` paths.\n *\n * @param vfile - The {@link VirtualFile} to convert.\n * @returns The same object with updated `.data.canonicalPath`.\n */\nfunction convertCanonical<Result>(\n vfile: VirtualFile<Result>,\n): VirtualFile<Result> {\n assert(vfile.data.canonicalPath !== undefined);\n vfile.data.canonicalPath = `local:${vfile.data.canonicalPath}`;\n return vfile;\n}\n"]}
|