@metamask/snaps-controllers 5.0.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -1
- package/dist/chunk-26FZJGWA.mjs +331 -0
- package/dist/chunk-26FZJGWA.mjs.map +1 -0
- package/dist/chunk-2SSKLA6H.mjs +47 -0
- package/dist/chunk-2SSKLA6H.mjs.map +1 -0
- package/dist/chunk-2WWTILPZ.js +101 -0
- package/dist/chunk-2WWTILPZ.js.map +1 -0
- package/dist/chunk-35RVMQQU.mjs +283 -0
- package/dist/chunk-35RVMQQU.mjs.map +1 -0
- package/dist/chunk-3EJ6JINY.mjs +1 -0
- package/dist/chunk-3EJ6JINY.mjs.map +1 -0
- package/dist/chunk-3RXU6FL7.js +354 -0
- package/dist/chunk-3RXU6FL7.js.map +1 -0
- package/dist/chunk-3ZTS7EYA.mjs +109 -0
- package/dist/chunk-3ZTS7EYA.mjs.map +1 -0
- package/dist/chunk-4ICLRPDE.mjs +354 -0
- package/dist/chunk-4ICLRPDE.mjs.map +1 -0
- package/dist/chunk-4X5GUCI4.js +1 -0
- package/dist/chunk-4X5GUCI4.js.map +1 -0
- package/dist/chunk-5526GKFY.mjs +101 -0
- package/dist/chunk-5526GKFY.mjs.map +1 -0
- package/dist/chunk-57XSIYLY.mjs +9 -0
- package/dist/chunk-57XSIYLY.mjs.map +1 -0
- package/dist/chunk-5AOHJSZ6.mjs +40 -0
- package/dist/chunk-5AOHJSZ6.mjs.map +1 -0
- package/dist/chunk-5JX3PHKY.mjs +7 -0
- package/dist/chunk-5JX3PHKY.mjs.map +1 -0
- package/dist/chunk-5UJDZGAF.mjs +19 -0
- package/dist/chunk-5UJDZGAF.mjs.map +1 -0
- package/dist/chunk-66XO4TRY.js +9 -0
- package/dist/chunk-66XO4TRY.js.map +1 -0
- package/dist/chunk-6I34XHMY.mjs +1 -0
- package/dist/chunk-6I34XHMY.mjs.map +1 -0
- package/dist/chunk-6JQAGWUX.mjs +2307 -0
- package/dist/chunk-6JQAGWUX.mjs.map +1 -0
- package/dist/chunk-6RHMHULS.js +7 -0
- package/dist/chunk-6RHMHULS.js.map +1 -0
- package/dist/chunk-7LDJN7LU.js +283 -0
- package/dist/chunk-7LDJN7LU.js.map +1 -0
- package/dist/chunk-7W4BE27D.mjs +1 -0
- package/dist/chunk-7W4BE27D.mjs.map +1 -0
- package/dist/chunk-A7QA5OIN.js +1 -0
- package/dist/chunk-A7QA5OIN.js.map +1 -0
- package/dist/chunk-AR5J3IYZ.js +1 -0
- package/dist/chunk-AR5J3IYZ.js.map +1 -0
- package/dist/chunk-BEEH4ZXK.js +1 -0
- package/dist/chunk-BEEH4ZXK.js.map +1 -0
- package/dist/chunk-BFD5P2VB.mjs +12 -0
- package/dist/chunk-BFD5P2VB.mjs.map +1 -0
- package/dist/chunk-BGJPFPCH.js +109 -0
- package/dist/chunk-BGJPFPCH.js.map +1 -0
- package/dist/chunk-BKAYI3FB.js +74 -0
- package/dist/chunk-BKAYI3FB.js.map +1 -0
- package/dist/chunk-BMLPPIKQ.js +38 -0
- package/dist/chunk-BMLPPIKQ.js.map +1 -0
- package/dist/chunk-BMNPP53N.js +1 -0
- package/dist/chunk-BMNPP53N.js.map +1 -0
- package/dist/chunk-BUPF6RN3.mjs +1 -0
- package/dist/chunk-BUPF6RN3.mjs.map +1 -0
- package/dist/chunk-DC3KUFAP.mjs +58 -0
- package/dist/chunk-DC3KUFAP.mjs.map +1 -0
- package/dist/chunk-DLLH2SFQ.js +19 -0
- package/dist/chunk-DLLH2SFQ.js.map +1 -0
- package/dist/chunk-DQPMF4WI.mjs +1 -0
- package/dist/chunk-DQPMF4WI.mjs.map +1 -0
- package/dist/chunk-DX3JFCRL.mjs +72 -0
- package/dist/chunk-DX3JFCRL.mjs.map +1 -0
- package/dist/chunk-E5PSKNI7.js +1 -0
- package/dist/chunk-E5PSKNI7.js.map +1 -0
- package/dist/chunk-EXN2TFDJ.js +38 -0
- package/dist/chunk-EXN2TFDJ.js.map +1 -0
- package/dist/chunk-F62W2GSZ.js +47 -0
- package/dist/chunk-F62W2GSZ.js.map +1 -0
- package/dist/chunk-FD37BGB7.mjs +1 -0
- package/dist/chunk-FD37BGB7.mjs.map +1 -0
- package/dist/chunk-FYDIMXGD.mjs +71 -0
- package/dist/chunk-FYDIMXGD.mjs.map +1 -0
- package/dist/chunk-H3QD2CYQ.mjs +38 -0
- package/dist/chunk-H3QD2CYQ.mjs.map +1 -0
- package/dist/chunk-I6HMKVV3.js +48 -0
- package/dist/chunk-I6HMKVV3.js.map +1 -0
- package/dist/chunk-IEFJGFVV.mjs +1 -0
- package/dist/chunk-IEFJGFVV.mjs.map +1 -0
- package/dist/chunk-J35UUTXN.mjs +1 -0
- package/dist/chunk-J35UUTXN.mjs.map +1 -0
- package/dist/chunk-JBMTTZHS.js +1 -0
- package/dist/chunk-JBMTTZHS.js.map +1 -0
- package/dist/chunk-JFXRELU2.mjs +39 -0
- package/dist/chunk-JFXRELU2.mjs.map +1 -0
- package/dist/chunk-JPJ2F22U.mjs +38 -0
- package/dist/chunk-JPJ2F22U.mjs.map +1 -0
- package/dist/chunk-KDQ6OXVG.js +39 -0
- package/dist/chunk-KDQ6OXVG.js.map +1 -0
- package/dist/chunk-KET5WAIE.mjs +1 -0
- package/dist/chunk-KET5WAIE.mjs.map +1 -0
- package/dist/chunk-KF6HZNN4.js +1 -0
- package/dist/chunk-KF6HZNN4.js.map +1 -0
- package/dist/chunk-LANLSIYZ.mjs +74 -0
- package/dist/chunk-LANLSIYZ.mjs.map +1 -0
- package/dist/chunk-LFWLV3SS.js +273 -0
- package/dist/chunk-LFWLV3SS.js.map +1 -0
- package/dist/chunk-MJOLPPQK.mjs +105 -0
- package/dist/chunk-MJOLPPQK.mjs.map +1 -0
- package/dist/chunk-N3MAPSR3.js +197 -0
- package/dist/chunk-N3MAPSR3.js.map +1 -0
- package/dist/chunk-NAJQX2WM.mjs +55 -0
- package/dist/chunk-NAJQX2WM.mjs.map +1 -0
- package/dist/chunk-NDOKX4CC.js +58 -0
- package/dist/chunk-NDOKX4CC.js.map +1 -0
- package/dist/chunk-NKMIKK4P.js +71 -0
- package/dist/chunk-NKMIKK4P.js.map +1 -0
- package/dist/chunk-NSOTRW3O.mjs +1 -0
- package/dist/chunk-NSOTRW3O.mjs.map +1 -0
- package/dist/chunk-OJ2YAMFL.mjs +1 -0
- package/dist/chunk-OJ2YAMFL.mjs.map +1 -0
- package/dist/chunk-OPH3RY2U.mjs +60 -0
- package/dist/chunk-OPH3RY2U.mjs.map +1 -0
- package/dist/chunk-OUYEWVXP.js +331 -0
- package/dist/chunk-OUYEWVXP.js.map +1 -0
- package/dist/chunk-OYSDB7WV.js +60 -0
- package/dist/chunk-OYSDB7WV.js.map +1 -0
- package/dist/chunk-OZPD234W.js +55 -0
- package/dist/chunk-OZPD234W.js.map +1 -0
- package/dist/chunk-SREHPG7K.js +40 -0
- package/dist/chunk-SREHPG7K.js.map +1 -0
- package/dist/chunk-U7REZSMO.js +1 -0
- package/dist/chunk-U7REZSMO.js.map +1 -0
- package/dist/chunk-UMS7NV46.mjs +59 -0
- package/dist/chunk-UMS7NV46.mjs.map +1 -0
- package/dist/chunk-V5F3LOTD.js +2307 -0
- package/dist/chunk-V5F3LOTD.js.map +1 -0
- package/dist/chunk-VADTO25Q.js +12 -0
- package/dist/chunk-VADTO25Q.js.map +1 -0
- package/dist/chunk-VK6JW7XB.js +1 -0
- package/dist/chunk-VK6JW7XB.js.map +1 -0
- package/dist/chunk-VZD5REFA.js +72 -0
- package/dist/chunk-VZD5REFA.js.map +1 -0
- package/dist/chunk-W6RU3LZS.mjs +1 -0
- package/dist/chunk-W6RU3LZS.mjs.map +1 -0
- package/dist/chunk-WCLBWRFH.js +1 -0
- package/dist/chunk-WCLBWRFH.js.map +1 -0
- package/dist/chunk-WFWBAJSP.js +38 -0
- package/dist/chunk-WFWBAJSP.js.map +1 -0
- package/dist/chunk-WMOR2T45.js +1 -0
- package/dist/chunk-WMOR2T45.js.map +1 -0
- package/dist/chunk-WUAYTNK4.mjs +92 -0
- package/dist/chunk-WUAYTNK4.mjs.map +1 -0
- package/dist/chunk-X57FJ67O.mjs +197 -0
- package/dist/chunk-X57FJ67O.mjs.map +1 -0
- package/dist/chunk-XEITRX5U.js +59 -0
- package/dist/chunk-XEITRX5U.js.map +1 -0
- package/dist/chunk-XQ2TCH36.mjs +48 -0
- package/dist/chunk-XQ2TCH36.mjs.map +1 -0
- package/dist/chunk-XW3CYXPK.js +105 -0
- package/dist/chunk-XW3CYXPK.js.map +1 -0
- package/dist/chunk-YRZVIDCF.mjs +38 -0
- package/dist/chunk-YRZVIDCF.mjs.map +1 -0
- package/dist/chunk-YYBXAUVN.js +1 -0
- package/dist/chunk-YYBXAUVN.js.map +1 -0
- package/dist/chunk-Z7J4BWYY.mjs +1 -0
- package/dist/chunk-Z7J4BWYY.mjs.map +1 -0
- package/dist/chunk-ZQHMLI2N.mjs +273 -0
- package/dist/chunk-ZQHMLI2N.mjs.map +1 -0
- package/dist/chunk-ZRHUHKGT.js +92 -0
- package/dist/chunk-ZRHUHKGT.js.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 +32 -23
- 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 -306
- 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 -296
- 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,273 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__privateAdd,
|
|
3
|
+
__privateGet,
|
|
4
|
+
__privateMethod,
|
|
5
|
+
__privateSet
|
|
6
|
+
} from "./chunk-YRZVIDCF.mjs";
|
|
7
|
+
|
|
8
|
+
// src/snaps/registry/json.ts
|
|
9
|
+
import { BaseController } from "@metamask/base-controller";
|
|
10
|
+
import { verify } from "@metamask/snaps-registry";
|
|
11
|
+
import { getTargetVersion } from "@metamask/snaps-utils";
|
|
12
|
+
import {
|
|
13
|
+
assert,
|
|
14
|
+
assertIsSemVerRange,
|
|
15
|
+
Duration,
|
|
16
|
+
inMilliseconds,
|
|
17
|
+
satisfiesVersionRange
|
|
18
|
+
} from "@metamask/utils";
|
|
19
|
+
var SNAP_REGISTRY_URL = "https://cdn.jsdelivr.net/gh/MetaMask/snaps-registry@gh-pages/latest/registry.json";
|
|
20
|
+
var SNAP_REGISTRY_SIGNATURE_URL = "https://cdn.jsdelivr.net/gh/MetaMask/snaps-registry@gh-pages/latest/signature.json";
|
|
21
|
+
var controllerName = "SnapsRegistry";
|
|
22
|
+
var defaultState = {
|
|
23
|
+
database: null,
|
|
24
|
+
lastUpdated: null
|
|
25
|
+
};
|
|
26
|
+
var _url, _publicKey, _fetchFunction, _recentFetchThreshold, _refetchOnAllowlistMiss, _failOnUnavailableRegistry, _currentUpdate, _wasRecentlyFetched, wasRecentlyFetched_fn, _triggerUpdate, triggerUpdate_fn, _update, update_fn, _getDatabase, getDatabase_fn, _getSingle, getSingle_fn, _get, get_fn, _resolveVersion, resolveVersion_fn, _getMetadata, getMetadata_fn, _verifySignature, verifySignature_fn, _safeFetch, safeFetch_fn;
|
|
27
|
+
var JsonSnapsRegistry = class extends BaseController {
|
|
28
|
+
constructor({
|
|
29
|
+
messenger,
|
|
30
|
+
state,
|
|
31
|
+
url = {
|
|
32
|
+
registry: SNAP_REGISTRY_URL,
|
|
33
|
+
signature: SNAP_REGISTRY_SIGNATURE_URL
|
|
34
|
+
},
|
|
35
|
+
publicKey,
|
|
36
|
+
fetchFunction = globalThis.fetch.bind(globalThis),
|
|
37
|
+
recentFetchThreshold = inMilliseconds(5, Duration.Minute),
|
|
38
|
+
failOnUnavailableRegistry = true,
|
|
39
|
+
refetchOnAllowlistMiss = true
|
|
40
|
+
}) {
|
|
41
|
+
super({
|
|
42
|
+
messenger,
|
|
43
|
+
metadata: {
|
|
44
|
+
database: { persist: true, anonymous: false },
|
|
45
|
+
lastUpdated: { persist: true, anonymous: false }
|
|
46
|
+
},
|
|
47
|
+
name: controllerName,
|
|
48
|
+
state: {
|
|
49
|
+
...defaultState,
|
|
50
|
+
...state
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
__privateAdd(this, _wasRecentlyFetched);
|
|
54
|
+
/**
|
|
55
|
+
* Triggers an update of the registry database.
|
|
56
|
+
*
|
|
57
|
+
* If an existing update is in progress this function will await that update.
|
|
58
|
+
*/
|
|
59
|
+
__privateAdd(this, _triggerUpdate);
|
|
60
|
+
/**
|
|
61
|
+
* Updates the registry database if the registry hasn't been updated recently.
|
|
62
|
+
*
|
|
63
|
+
* NOTE: SHOULD NOT be called directly, instead `triggerUpdate` should be used.
|
|
64
|
+
*/
|
|
65
|
+
__privateAdd(this, _update);
|
|
66
|
+
__privateAdd(this, _getDatabase);
|
|
67
|
+
__privateAdd(this, _getSingle);
|
|
68
|
+
__privateAdd(this, _get);
|
|
69
|
+
/**
|
|
70
|
+
* Find an allowlisted version within a specified version range. Otherwise return the version range itself.
|
|
71
|
+
*
|
|
72
|
+
* @param snapId - The ID of the snap we are trying to resolve a version for.
|
|
73
|
+
* @param versionRange - The version range.
|
|
74
|
+
* @param refetch - An optional flag used to determine if we are refetching the registry.
|
|
75
|
+
* @returns An allowlisted version within the specified version range if available otherwise returns the input version range.
|
|
76
|
+
*/
|
|
77
|
+
__privateAdd(this, _resolveVersion);
|
|
78
|
+
/**
|
|
79
|
+
* Get metadata for the given snap ID.
|
|
80
|
+
*
|
|
81
|
+
* @param snapId - The ID of the snap to get metadata for.
|
|
82
|
+
* @returns The metadata for the given snap ID, or `null` if the snap is not
|
|
83
|
+
* verified.
|
|
84
|
+
*/
|
|
85
|
+
__privateAdd(this, _getMetadata);
|
|
86
|
+
/**
|
|
87
|
+
* Verify the signature of the registry.
|
|
88
|
+
*
|
|
89
|
+
* @param database - The registry database.
|
|
90
|
+
* @param signature - The signature of the registry.
|
|
91
|
+
* @throws If the signature is invalid.
|
|
92
|
+
* @private
|
|
93
|
+
*/
|
|
94
|
+
__privateAdd(this, _verifySignature);
|
|
95
|
+
/**
|
|
96
|
+
* Fetch the given URL, throwing if the response is not OK.
|
|
97
|
+
*
|
|
98
|
+
* @param url - The URL to fetch.
|
|
99
|
+
* @returns The response body.
|
|
100
|
+
* @private
|
|
101
|
+
*/
|
|
102
|
+
__privateAdd(this, _safeFetch);
|
|
103
|
+
__privateAdd(this, _url, void 0);
|
|
104
|
+
__privateAdd(this, _publicKey, void 0);
|
|
105
|
+
__privateAdd(this, _fetchFunction, void 0);
|
|
106
|
+
__privateAdd(this, _recentFetchThreshold, void 0);
|
|
107
|
+
__privateAdd(this, _refetchOnAllowlistMiss, void 0);
|
|
108
|
+
__privateAdd(this, _failOnUnavailableRegistry, void 0);
|
|
109
|
+
__privateAdd(this, _currentUpdate, void 0);
|
|
110
|
+
__privateSet(this, _url, url);
|
|
111
|
+
__privateSet(this, _publicKey, publicKey);
|
|
112
|
+
__privateSet(this, _fetchFunction, fetchFunction);
|
|
113
|
+
__privateSet(this, _recentFetchThreshold, recentFetchThreshold);
|
|
114
|
+
__privateSet(this, _refetchOnAllowlistMiss, refetchOnAllowlistMiss);
|
|
115
|
+
__privateSet(this, _failOnUnavailableRegistry, failOnUnavailableRegistry);
|
|
116
|
+
__privateSet(this, _currentUpdate, null);
|
|
117
|
+
this.messagingSystem.registerActionHandler(
|
|
118
|
+
"SnapsRegistry:get",
|
|
119
|
+
async (...args) => __privateMethod(this, _get, get_fn).call(this, ...args)
|
|
120
|
+
);
|
|
121
|
+
this.messagingSystem.registerActionHandler(
|
|
122
|
+
"SnapsRegistry:getMetadata",
|
|
123
|
+
async (...args) => __privateMethod(this, _getMetadata, getMetadata_fn).call(this, ...args)
|
|
124
|
+
);
|
|
125
|
+
this.messagingSystem.registerActionHandler(
|
|
126
|
+
"SnapsRegistry:resolveVersion",
|
|
127
|
+
async (...args) => __privateMethod(this, _resolveVersion, resolveVersion_fn).call(this, ...args)
|
|
128
|
+
);
|
|
129
|
+
this.messagingSystem.registerActionHandler(
|
|
130
|
+
"SnapsRegistry:update",
|
|
131
|
+
async () => __privateMethod(this, _triggerUpdate, triggerUpdate_fn).call(this)
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
_url = new WeakMap();
|
|
136
|
+
_publicKey = new WeakMap();
|
|
137
|
+
_fetchFunction = new WeakMap();
|
|
138
|
+
_recentFetchThreshold = new WeakMap();
|
|
139
|
+
_refetchOnAllowlistMiss = new WeakMap();
|
|
140
|
+
_failOnUnavailableRegistry = new WeakMap();
|
|
141
|
+
_currentUpdate = new WeakMap();
|
|
142
|
+
_wasRecentlyFetched = new WeakSet();
|
|
143
|
+
wasRecentlyFetched_fn = function() {
|
|
144
|
+
return this.state.lastUpdated && Date.now() - this.state.lastUpdated < __privateGet(this, _recentFetchThreshold);
|
|
145
|
+
};
|
|
146
|
+
_triggerUpdate = new WeakSet();
|
|
147
|
+
triggerUpdate_fn = async function() {
|
|
148
|
+
if (__privateGet(this, _currentUpdate)) {
|
|
149
|
+
await __privateGet(this, _currentUpdate);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (__privateGet(this, _currentUpdate) === null) {
|
|
153
|
+
__privateSet(this, _currentUpdate, __privateMethod(this, _update, update_fn).call(this));
|
|
154
|
+
}
|
|
155
|
+
await __privateGet(this, _currentUpdate);
|
|
156
|
+
__privateSet(this, _currentUpdate, null);
|
|
157
|
+
};
|
|
158
|
+
_update = new WeakSet();
|
|
159
|
+
update_fn = async function() {
|
|
160
|
+
if (__privateMethod(this, _wasRecentlyFetched, wasRecentlyFetched_fn).call(this)) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
try {
|
|
164
|
+
const database = await __privateMethod(this, _safeFetch, safeFetch_fn).call(this, __privateGet(this, _url).registry);
|
|
165
|
+
if (__privateGet(this, _publicKey)) {
|
|
166
|
+
const signature = await __privateMethod(this, _safeFetch, safeFetch_fn).call(this, __privateGet(this, _url).signature);
|
|
167
|
+
__privateMethod(this, _verifySignature, verifySignature_fn).call(this, database, signature);
|
|
168
|
+
}
|
|
169
|
+
this.update((state) => {
|
|
170
|
+
state.database = JSON.parse(database);
|
|
171
|
+
state.lastUpdated = Date.now();
|
|
172
|
+
});
|
|
173
|
+
} catch {
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
_getDatabase = new WeakSet();
|
|
177
|
+
getDatabase_fn = async function() {
|
|
178
|
+
if (this.state.database === null) {
|
|
179
|
+
await __privateMethod(this, _triggerUpdate, triggerUpdate_fn).call(this);
|
|
180
|
+
}
|
|
181
|
+
if (__privateGet(this, _failOnUnavailableRegistry) && this.state.database === null) {
|
|
182
|
+
throw new Error("Snaps registry is unavailable, installation blocked.");
|
|
183
|
+
}
|
|
184
|
+
return this.state.database;
|
|
185
|
+
};
|
|
186
|
+
_getSingle = new WeakSet();
|
|
187
|
+
getSingle_fn = async function(snapId, snapInfo, refetch = false) {
|
|
188
|
+
const database = await __privateMethod(this, _getDatabase, getDatabase_fn).call(this);
|
|
189
|
+
const blockedEntry = database?.blockedSnaps.find((blocked) => {
|
|
190
|
+
if ("id" in blocked) {
|
|
191
|
+
return blocked.id === snapId && satisfiesVersionRange(snapInfo.version, blocked.versionRange);
|
|
192
|
+
}
|
|
193
|
+
return blocked.checksum === snapInfo.checksum;
|
|
194
|
+
});
|
|
195
|
+
if (blockedEntry) {
|
|
196
|
+
return {
|
|
197
|
+
status: 1 /* Blocked */,
|
|
198
|
+
reason: blockedEntry.reason
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
const verified = database?.verifiedSnaps[snapId];
|
|
202
|
+
const version = verified?.versions?.[snapInfo.version];
|
|
203
|
+
if (version && version.checksum === snapInfo.checksum) {
|
|
204
|
+
return { status: 2 /* Verified */ };
|
|
205
|
+
}
|
|
206
|
+
if (__privateGet(this, _refetchOnAllowlistMiss) && !refetch) {
|
|
207
|
+
await __privateMethod(this, _triggerUpdate, triggerUpdate_fn).call(this);
|
|
208
|
+
return __privateMethod(this, _getSingle, getSingle_fn).call(this, snapId, snapInfo, true);
|
|
209
|
+
}
|
|
210
|
+
return { status: 0 /* Unverified */ };
|
|
211
|
+
};
|
|
212
|
+
_get = new WeakSet();
|
|
213
|
+
get_fn = async function(snaps) {
|
|
214
|
+
return Object.entries(snaps).reduce(async (previousPromise, [snapId, snapInfo]) => {
|
|
215
|
+
const result = await __privateMethod(this, _getSingle, getSingle_fn).call(this, snapId, snapInfo);
|
|
216
|
+
const acc = await previousPromise;
|
|
217
|
+
acc[snapId] = result;
|
|
218
|
+
return acc;
|
|
219
|
+
}, Promise.resolve({}));
|
|
220
|
+
};
|
|
221
|
+
_resolveVersion = new WeakSet();
|
|
222
|
+
resolveVersion_fn = async function(snapId, versionRange, refetch = false) {
|
|
223
|
+
const database = await __privateMethod(this, _getDatabase, getDatabase_fn).call(this);
|
|
224
|
+
const versions = database?.verifiedSnaps[snapId]?.versions ?? null;
|
|
225
|
+
if (!versions && __privateGet(this, _refetchOnAllowlistMiss) && !refetch) {
|
|
226
|
+
await __privateMethod(this, _triggerUpdate, triggerUpdate_fn).call(this);
|
|
227
|
+
return __privateMethod(this, _resolveVersion, resolveVersion_fn).call(this, snapId, versionRange, true);
|
|
228
|
+
}
|
|
229
|
+
if (!versions) {
|
|
230
|
+
return versionRange;
|
|
231
|
+
}
|
|
232
|
+
const targetVersion = getTargetVersion(
|
|
233
|
+
Object.keys(versions),
|
|
234
|
+
versionRange
|
|
235
|
+
);
|
|
236
|
+
if (!targetVersion && __privateGet(this, _refetchOnAllowlistMiss) && !refetch) {
|
|
237
|
+
await __privateMethod(this, _triggerUpdate, triggerUpdate_fn).call(this);
|
|
238
|
+
return __privateMethod(this, _resolveVersion, resolveVersion_fn).call(this, snapId, versionRange, true);
|
|
239
|
+
}
|
|
240
|
+
if (!targetVersion) {
|
|
241
|
+
return versionRange;
|
|
242
|
+
}
|
|
243
|
+
assertIsSemVerRange(targetVersion);
|
|
244
|
+
return targetVersion;
|
|
245
|
+
};
|
|
246
|
+
_getMetadata = new WeakSet();
|
|
247
|
+
getMetadata_fn = async function(snapId) {
|
|
248
|
+
const database = await __privateMethod(this, _getDatabase, getDatabase_fn).call(this);
|
|
249
|
+
return database?.verifiedSnaps[snapId]?.metadata ?? null;
|
|
250
|
+
};
|
|
251
|
+
_verifySignature = new WeakSet();
|
|
252
|
+
verifySignature_fn = function(database, signature) {
|
|
253
|
+
assert(__privateGet(this, _publicKey), "No public key provided.");
|
|
254
|
+
const valid = verify({
|
|
255
|
+
registry: database,
|
|
256
|
+
signature: JSON.parse(signature),
|
|
257
|
+
publicKey: __privateGet(this, _publicKey)
|
|
258
|
+
});
|
|
259
|
+
assert(valid, "Invalid registry signature.");
|
|
260
|
+
};
|
|
261
|
+
_safeFetch = new WeakSet();
|
|
262
|
+
safeFetch_fn = async function(url) {
|
|
263
|
+
const response = await __privateGet(this, _fetchFunction).call(this, url);
|
|
264
|
+
if (!response.ok) {
|
|
265
|
+
throw new Error(`Failed to fetch ${url}.`);
|
|
266
|
+
}
|
|
267
|
+
return await response.text();
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
export {
|
|
271
|
+
JsonSnapsRegistry
|
|
272
|
+
};
|
|
273
|
+
//# sourceMappingURL=chunk-ZQHMLI2N.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/snaps/registry/json.ts"],"sourcesContent":["import type { RestrictedControllerMessenger } from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\nimport type { SnapsRegistryDatabase } from '@metamask/snaps-registry';\nimport { verify } from '@metamask/snaps-registry';\nimport { getTargetVersion } from '@metamask/snaps-utils';\nimport type { Hex, SemVerRange, SemVerVersion } from '@metamask/utils';\nimport {\n assert,\n assertIsSemVerRange,\n Duration,\n inMilliseconds,\n satisfiesVersionRange,\n} from '@metamask/utils';\n\nimport type {\n SnapsRegistry,\n SnapsRegistryInfo,\n SnapsRegistryMetadata,\n SnapsRegistryRequest,\n SnapsRegistryResult,\n} from './registry';\nimport { SnapsRegistryStatus } from './registry';\n\n// TODO: Replace with a Codefi URL\nconst SNAP_REGISTRY_URL =\n 'https://cdn.jsdelivr.net/gh/MetaMask/snaps-registry@gh-pages/latest/registry.json';\n\nconst SNAP_REGISTRY_SIGNATURE_URL =\n 'https://cdn.jsdelivr.net/gh/MetaMask/snaps-registry@gh-pages/latest/signature.json';\n\ntype JsonSnapsRegistryUrl = {\n registry: string;\n signature: string;\n};\n\nexport type JsonSnapsRegistryArgs = {\n messenger: SnapsRegistryMessenger;\n state?: SnapsRegistryState;\n fetchFunction?: typeof fetch;\n url?: JsonSnapsRegistryUrl;\n recentFetchThreshold?: number;\n refetchOnAllowlistMiss?: boolean;\n failOnUnavailableRegistry?: boolean;\n publicKey?: Hex;\n};\n\nexport type GetResult = {\n type: `${typeof controllerName}:get`;\n handler: SnapsRegistry['get'];\n};\n\nexport type ResolveVersion = {\n type: `${typeof controllerName}:resolveVersion`;\n handler: SnapsRegistry['resolveVersion'];\n};\n\nexport type GetMetadata = {\n type: `${typeof controllerName}:getMetadata`;\n handler: SnapsRegistry['getMetadata'];\n};\n\nexport type Update = {\n type: `${typeof controllerName}:update`;\n handler: SnapsRegistry['update'];\n};\n\nexport type SnapsRegistryActions =\n | GetResult\n | GetMetadata\n | Update\n | ResolveVersion;\n\nexport type SnapsRegistryEvents = never;\n\nexport type SnapsRegistryMessenger = RestrictedControllerMessenger<\n 'SnapsRegistry',\n SnapsRegistryActions,\n SnapsRegistryEvents,\n SnapsRegistryActions['type'],\n SnapsRegistryEvents['type']\n>;\n\nexport type SnapsRegistryState = {\n database: SnapsRegistryDatabase | null;\n lastUpdated: number | null;\n};\n\nconst controllerName = 'SnapsRegistry';\n\nconst defaultState = {\n database: null,\n lastUpdated: null,\n};\n\nexport class JsonSnapsRegistry extends BaseController<\n typeof controllerName,\n SnapsRegistryState,\n SnapsRegistryMessenger\n> {\n #url: JsonSnapsRegistryUrl;\n\n #publicKey?: Hex;\n\n #fetchFunction: typeof fetch;\n\n #recentFetchThreshold: number;\n\n #refetchOnAllowlistMiss: boolean;\n\n #failOnUnavailableRegistry: boolean;\n\n #currentUpdate: Promise<void> | null;\n\n constructor({\n messenger,\n state,\n url = {\n registry: SNAP_REGISTRY_URL,\n signature: SNAP_REGISTRY_SIGNATURE_URL,\n },\n publicKey,\n fetchFunction = globalThis.fetch.bind(globalThis),\n recentFetchThreshold = inMilliseconds(5, Duration.Minute),\n failOnUnavailableRegistry = true,\n refetchOnAllowlistMiss = true,\n }: JsonSnapsRegistryArgs) {\n super({\n messenger,\n metadata: {\n database: { persist: true, anonymous: false },\n lastUpdated: { persist: true, anonymous: false },\n },\n name: controllerName,\n state: {\n ...defaultState,\n ...state,\n },\n });\n this.#url = url;\n this.#publicKey = publicKey;\n this.#fetchFunction = fetchFunction;\n this.#recentFetchThreshold = recentFetchThreshold;\n this.#refetchOnAllowlistMiss = refetchOnAllowlistMiss;\n this.#failOnUnavailableRegistry = failOnUnavailableRegistry;\n this.#currentUpdate = null;\n\n this.messagingSystem.registerActionHandler(\n 'SnapsRegistry:get',\n async (...args) => this.#get(...args),\n );\n\n this.messagingSystem.registerActionHandler(\n 'SnapsRegistry:getMetadata',\n async (...args) => this.#getMetadata(...args),\n );\n\n this.messagingSystem.registerActionHandler(\n 'SnapsRegistry:resolveVersion',\n async (...args) => this.#resolveVersion(...args),\n );\n\n this.messagingSystem.registerActionHandler(\n 'SnapsRegistry:update',\n async () => this.#triggerUpdate(),\n );\n }\n\n #wasRecentlyFetched() {\n return (\n this.state.lastUpdated &&\n Date.now() - this.state.lastUpdated < this.#recentFetchThreshold\n );\n }\n\n /**\n * Triggers an update of the registry database.\n *\n * If an existing update is in progress this function will await that update.\n */\n async #triggerUpdate() {\n // If an update is ongoing, wait for that.\n if (this.#currentUpdate) {\n await this.#currentUpdate;\n return;\n }\n // If no update exists, create promise and store globally.\n if (this.#currentUpdate === null) {\n this.#currentUpdate = this.#update();\n }\n await this.#currentUpdate;\n this.#currentUpdate = null;\n }\n\n /**\n * Updates the registry database if the registry hasn't been updated recently.\n *\n * NOTE: SHOULD NOT be called directly, instead `triggerUpdate` should be used.\n */\n async #update() {\n // No-op if we recently fetched the registry.\n if (this.#wasRecentlyFetched()) {\n return;\n }\n\n try {\n const database = await this.#safeFetch(this.#url.registry);\n\n if (this.#publicKey) {\n const signature = await this.#safeFetch(this.#url.signature);\n this.#verifySignature(database, signature);\n }\n\n this.update((state) => {\n state.database = JSON.parse(database);\n state.lastUpdated = Date.now();\n });\n } catch {\n // Ignore\n }\n }\n\n async #getDatabase(): Promise<SnapsRegistryDatabase | null> {\n if (this.state.database === null) {\n await this.#triggerUpdate();\n }\n\n // If the database is still null and we require it, throw.\n if (this.#failOnUnavailableRegistry && this.state.database === null) {\n throw new Error('Snaps registry is unavailable, installation blocked.');\n }\n return this.state.database;\n }\n\n async #getSingle(\n snapId: string,\n snapInfo: SnapsRegistryInfo,\n refetch = false,\n ): Promise<SnapsRegistryResult> {\n const database = await this.#getDatabase();\n\n const blockedEntry = database?.blockedSnaps.find((blocked) => {\n if ('id' in blocked) {\n return (\n blocked.id === snapId &&\n satisfiesVersionRange(snapInfo.version, blocked.versionRange)\n );\n }\n\n return blocked.checksum === snapInfo.checksum;\n });\n\n if (blockedEntry) {\n return {\n status: SnapsRegistryStatus.Blocked,\n reason: blockedEntry.reason,\n };\n }\n\n const verified = database?.verifiedSnaps[snapId];\n const version = verified?.versions?.[snapInfo.version];\n if (version && version.checksum === snapInfo.checksum) {\n return { status: SnapsRegistryStatus.Verified };\n }\n // For now, if we have an allowlist miss, we can refetch once and try again.\n if (this.#refetchOnAllowlistMiss && !refetch) {\n await this.#triggerUpdate();\n return this.#getSingle(snapId, snapInfo, true);\n }\n return { status: SnapsRegistryStatus.Unverified };\n }\n\n async #get(\n snaps: SnapsRegistryRequest,\n ): Promise<Record<string, SnapsRegistryResult>> {\n return Object.entries(snaps).reduce<\n Promise<Record<string, SnapsRegistryResult>>\n >(async (previousPromise, [snapId, snapInfo]) => {\n const result = await this.#getSingle(snapId, snapInfo);\n const acc = await previousPromise;\n acc[snapId] = result;\n return acc;\n }, Promise.resolve({}));\n }\n\n /**\n * Find an allowlisted version within a specified version range. Otherwise return the version range itself.\n *\n * @param snapId - The ID of the snap we are trying to resolve a version for.\n * @param versionRange - The version range.\n * @param refetch - An optional flag used to determine if we are refetching the registry.\n * @returns An allowlisted version within the specified version range if available otherwise returns the input version range.\n */\n async #resolveVersion(\n snapId: string,\n versionRange: SemVerRange,\n refetch = false,\n ): Promise<SemVerRange> {\n const database = await this.#getDatabase();\n const versions = database?.verifiedSnaps[snapId]?.versions ?? null;\n\n if (!versions && this.#refetchOnAllowlistMiss && !refetch) {\n await this.#triggerUpdate();\n return this.#resolveVersion(snapId, versionRange, true);\n }\n\n // If we cannot narrow down the version range we return the unaltered version range.\n if (!versions) {\n return versionRange;\n }\n\n const targetVersion = getTargetVersion(\n Object.keys(versions) as SemVerVersion[],\n versionRange,\n );\n\n if (!targetVersion && this.#refetchOnAllowlistMiss && !refetch) {\n await this.#triggerUpdate();\n return this.#resolveVersion(snapId, versionRange, true);\n }\n\n // If we cannot narrow down the version range we return the unaltered version range.\n if (!targetVersion) {\n return versionRange;\n }\n\n // A semver version is technically also a valid semver range.\n assertIsSemVerRange(targetVersion);\n return targetVersion;\n }\n\n /**\n * Get metadata for the given snap ID.\n *\n * @param snapId - The ID of the snap to get metadata for.\n * @returns The metadata for the given snap ID, or `null` if the snap is not\n * verified.\n */\n async #getMetadata(snapId: string): Promise<SnapsRegistryMetadata | null> {\n const database = await this.#getDatabase();\n return database?.verifiedSnaps[snapId]?.metadata ?? null;\n }\n\n /**\n * Verify the signature of the registry.\n *\n * @param database - The registry database.\n * @param signature - The signature of the registry.\n * @throws If the signature is invalid.\n * @private\n */\n #verifySignature(database: string, signature: string) {\n assert(this.#publicKey, 'No public key provided.');\n\n const valid = verify({\n registry: database,\n signature: JSON.parse(signature),\n publicKey: this.#publicKey,\n });\n\n assert(valid, 'Invalid registry signature.');\n }\n\n /**\n * Fetch the given URL, throwing if the response is not OK.\n *\n * @param url - The URL to fetch.\n * @returns The response body.\n * @private\n */\n async #safeFetch(url: string) {\n const response = await this.#fetchFunction(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch ${url}.`);\n }\n\n return await response.text();\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// src/snaps/location/http.ts
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _snapsutils = require('@metamask/snaps-utils');
|
|
10
|
+
var _utils = require('@metamask/utils');
|
|
11
|
+
var HttpLocation = class {
|
|
12
|
+
constructor(url, opts = {}) {
|
|
13
|
+
// We keep contents separate because then we can use only one Blob in cache,
|
|
14
|
+
// which we convert to Uint8Array when actually returning the file.
|
|
15
|
+
//
|
|
16
|
+
// That avoids deepCloning file contents.
|
|
17
|
+
// I imagine ArrayBuffers are copy-on-write optimized, meaning
|
|
18
|
+
// in most often case we'll only have one file contents in common case.
|
|
19
|
+
this.cache = /* @__PURE__ */ new Map();
|
|
20
|
+
_utils.assertStruct.call(void 0, url.toString(), _snapsutils.HttpSnapIdStruct, "Invalid Snap Id: ");
|
|
21
|
+
this.fetchFn = _nullishCoalesce(opts.fetch, () => ( globalThis.fetch.bind(globalThis)));
|
|
22
|
+
this.fetchOptions = opts.fetchOptions;
|
|
23
|
+
this.url = url;
|
|
24
|
+
}
|
|
25
|
+
async manifest() {
|
|
26
|
+
if (this.validatedManifest) {
|
|
27
|
+
return this.validatedManifest.clone();
|
|
28
|
+
}
|
|
29
|
+
const canonicalPath = new URL(
|
|
30
|
+
_snapsutils.NpmSnapFileNames.Manifest,
|
|
31
|
+
this.url
|
|
32
|
+
).toString();
|
|
33
|
+
const response = await this.fetchFn(canonicalPath, this.fetchOptions);
|
|
34
|
+
if (!response.ok) {
|
|
35
|
+
throw new Error(
|
|
36
|
+
`Failed to fetch "${canonicalPath}". Status code: ${response.status}.`
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
const contents = await response.text();
|
|
40
|
+
const manifest = _snapsutils.parseJson.call(void 0, contents);
|
|
41
|
+
const vfile = new (0, _snapsutils.VirtualFile)({
|
|
42
|
+
value: contents,
|
|
43
|
+
result: _snapsutils.createSnapManifest.call(void 0, manifest),
|
|
44
|
+
path: _snapsutils.NpmSnapFileNames.Manifest,
|
|
45
|
+
data: { canonicalPath }
|
|
46
|
+
});
|
|
47
|
+
this.validatedManifest = vfile;
|
|
48
|
+
return this.manifest();
|
|
49
|
+
}
|
|
50
|
+
async fetch(path) {
|
|
51
|
+
const relativePath = _snapsutils.normalizeRelative.call(void 0, path);
|
|
52
|
+
const cached = this.cache.get(relativePath);
|
|
53
|
+
if (cached !== void 0) {
|
|
54
|
+
const { file, contents } = cached;
|
|
55
|
+
const value = new Uint8Array(await contents.arrayBuffer());
|
|
56
|
+
const vfile2 = file.clone();
|
|
57
|
+
vfile2.value = value;
|
|
58
|
+
return vfile2;
|
|
59
|
+
}
|
|
60
|
+
const canonicalPath = this.toCanonical(relativePath).toString();
|
|
61
|
+
const response = await this.fetchFn(canonicalPath, this.fetchOptions);
|
|
62
|
+
if (!response.ok) {
|
|
63
|
+
throw new Error(
|
|
64
|
+
`Failed to fetch "${canonicalPath}". Status code: ${response.status}.`
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
const vfile = new (0, _snapsutils.VirtualFile)({
|
|
68
|
+
value: "",
|
|
69
|
+
path: relativePath,
|
|
70
|
+
data: { canonicalPath }
|
|
71
|
+
});
|
|
72
|
+
const blob = await response.blob();
|
|
73
|
+
_utils.assert.call(void 0,
|
|
74
|
+
!this.cache.has(relativePath),
|
|
75
|
+
"Corrupted cache, multiple files with same path."
|
|
76
|
+
);
|
|
77
|
+
this.cache.set(relativePath, { file: vfile, contents: blob });
|
|
78
|
+
return this.fetch(relativePath);
|
|
79
|
+
}
|
|
80
|
+
get root() {
|
|
81
|
+
return new URL(this.url);
|
|
82
|
+
}
|
|
83
|
+
toCanonical(path) {
|
|
84
|
+
_utils.assert.call(void 0, !path.startsWith("/"), "Tried to parse absolute path.");
|
|
85
|
+
return new URL(path, this.url);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
exports.HttpLocation = HttpLocation;
|
|
92
|
+
//# sourceMappingURL=chunk-ZRHUHKGT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/snaps/location/http.ts"],"names":["vfile"],"mappings":";AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,QAAQ,oBAAoB;AAY9B,IAAM,eAAN,MAA2C;AAAA,EAoBhD,YAAY,KAAU,OAAoB,CAAC,GAAG;AAb9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAAiB,QAAQ,oBAAI,IAG3B;AAWA,iBAAa,IAAI,SAAS,GAAG,kBAAkB,mBAAmB;AAClE,SAAK,UAAU,KAAK,SAAS,WAAW,MAAM,KAAK,UAAU;AAC7D,SAAK,eAAe,KAAK;AACzB,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,MAAM,WAA+C;AACnD,QAAI,KAAK,mBAAmB;AAC1B,aAAO,KAAK,kBAAkB,MAAM;AAAA,IACtC;AAGA,UAAM,gBAAgB,IAAI;AAAA,MACxB,iBAAiB;AAAA,MACjB,KAAK;AAAA,IACP,EAAE,SAAS;AAEX,UAAM,WAAW,MAAM,KAAK,QAAQ,eAAe,KAAK,YAAY;AACpE,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,oBAAoB,aAAa,mBAAmB,SAAS,MAAM;AAAA,MACrE;AAAA,IACF;AACA,UAAM,WAAW,MAAM,SAAS,KAAK;AACrC,UAAM,WAAW,UAAU,QAAQ;AACnC,UAAM,QAAQ,IAAI,YAA0B;AAAA,MAC1C,OAAO;AAAA,MACP,QAAQ,mBAAmB,QAAQ;AAAA,MACnC,MAAM,iBAAiB;AAAA,MACvB,MAAM,EAAE,cAAc;AAAA,IACxB,CAAC;AACD,SAAK,oBAAoB;AAEzB,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EAEA,MAAM,MAAM,MAAoC;AAC9C,UAAM,eAAe,kBAAkB,IAAI;AAC3C,UAAM,SAAS,KAAK,MAAM,IAAI,YAAY;AAC1C,QAAI,WAAW,QAAW;AACxB,YAAM,EAAE,MAAM,SAAS,IAAI;AAC3B,YAAM,QAAQ,IAAI,WAAW,MAAM,SAAS,YAAY,CAAC;AACzD,YAAMA,SAAQ,KAAK,MAAM;AACzB,MAAAA,OAAM,QAAQ;AACd,aAAOA;AAAA,IACT;AAEA,UAAM,gBAAgB,KAAK,YAAY,YAAY,EAAE,SAAS;AAC9D,UAAM,WAAW,MAAM,KAAK,QAAQ,eAAe,KAAK,YAAY;AACpE,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI;AAAA,QACR,oBAAoB,aAAa,mBAAmB,SAAS,MAAM;AAAA,MACrE;AAAA,IACF;AACA,UAAM,QAAQ,IAAI,YAAY;AAAA,MAC5B,OAAO;AAAA,MACP,MAAM;AAAA,MACN,MAAM,EAAE,cAAc;AAAA,IACxB,CAAC;AACD,UAAM,OAAO,MAAM,SAAS,KAAK;AACjC;AAAA,MACE,CAAC,KAAK,MAAM,IAAI,YAAY;AAAA,MAC5B;AAAA,IACF;AACA,SAAK,MAAM,IAAI,cAAc,EAAE,MAAM,OAAO,UAAU,KAAK,CAAC;AAE5D,WAAO,KAAK,MAAM,YAAY;AAAA,EAChC;AAAA,EAEA,IAAI,OAAY;AACd,WAAO,IAAI,IAAI,KAAK,GAAG;AAAA,EACzB;AAAA,EAEQ,YAAY,MAAmB;AACrC,WAAO,CAAC,KAAK,WAAW,GAAG,GAAG,+BAA+B;AAC7D,WAAO,IAAI,IAAI,MAAM,KAAK,GAAG;AAAA,EAC/B;AACF","sourcesContent":["import type { SnapManifest } from '@metamask/snaps-utils';\nimport {\n VirtualFile,\n HttpSnapIdStruct,\n NpmSnapFileNames,\n createSnapManifest,\n normalizeRelative,\n parseJson,\n} from '@metamask/snaps-utils';\nimport { assert, assertStruct } from '@metamask/utils';\n\nimport type { SnapLocation } from './location';\n\nexport interface HttpOptions {\n /**\n * @default fetch\n */\n fetch?: typeof fetch;\n fetchOptions?: RequestInit;\n}\n\nexport class HttpLocation implements SnapLocation {\n // We keep contents separate because then we can use only one Blob in cache,\n // which we convert to Uint8Array when actually returning the file.\n //\n // That avoids deepCloning file contents.\n // I imagine ArrayBuffers are copy-on-write optimized, meaning\n // in most often case we'll only have one file contents in common case.\n private readonly cache = new Map<\n string,\n { file: VirtualFile; contents: Blob }\n >();\n\n private validatedManifest?: VirtualFile<SnapManifest>;\n\n private readonly url: URL;\n\n private readonly fetchFn: typeof fetch;\n\n private readonly fetchOptions?: RequestInit;\n\n constructor(url: URL, opts: HttpOptions = {}) {\n assertStruct(url.toString(), HttpSnapIdStruct, 'Invalid Snap Id: ');\n this.fetchFn = opts.fetch ?? globalThis.fetch.bind(globalThis);\n this.fetchOptions = opts.fetchOptions;\n this.url = url;\n }\n\n async manifest(): Promise<VirtualFile<SnapManifest>> {\n if (this.validatedManifest) {\n return this.validatedManifest.clone();\n }\n\n // jest-fetch-mock doesn't handle new URL(), we need to convert .toString()\n const canonicalPath = new URL(\n NpmSnapFileNames.Manifest,\n this.url,\n ).toString();\n\n const response = await this.fetchFn(canonicalPath, this.fetchOptions);\n if (!response.ok) {\n throw new Error(\n `Failed to fetch \"${canonicalPath}\". Status code: ${response.status}.`,\n );\n }\n const contents = await response.text();\n const manifest = parseJson(contents);\n const vfile = new VirtualFile<SnapManifest>({\n value: contents,\n result: createSnapManifest(manifest),\n path: NpmSnapFileNames.Manifest,\n data: { canonicalPath },\n });\n this.validatedManifest = vfile;\n\n return this.manifest();\n }\n\n async fetch(path: string): Promise<VirtualFile> {\n const relativePath = normalizeRelative(path);\n const cached = this.cache.get(relativePath);\n if (cached !== undefined) {\n const { file, contents } = cached;\n const value = new Uint8Array(await contents.arrayBuffer());\n const vfile = file.clone();\n vfile.value = value;\n return vfile;\n }\n\n const canonicalPath = this.toCanonical(relativePath).toString();\n const response = await this.fetchFn(canonicalPath, this.fetchOptions);\n if (!response.ok) {\n throw new Error(\n `Failed to fetch \"${canonicalPath}\". Status code: ${response.status}.`,\n );\n }\n const vfile = new VirtualFile({\n value: '',\n path: relativePath,\n data: { canonicalPath },\n });\n const blob = await response.blob();\n assert(\n !this.cache.has(relativePath),\n 'Corrupted cache, multiple files with same path.',\n );\n this.cache.set(relativePath, { file: vfile, contents: blob });\n\n return this.fetch(relativePath);\n }\n\n get root(): URL {\n return new URL(this.url);\n }\n\n private toCanonical(path: string): URL {\n assert(!path.startsWith('/'), 'Tried to parse absolute path.');\n return new URL(path, this.url);\n }\n}\n"]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunk7LDJN7LUjs = require('../chunk-7LDJN7LU.js');
|
|
5
|
+
require('../chunk-YYBXAUVN.js');
|
|
6
|
+
require('../chunk-V5F3LOTD.js');
|
|
7
|
+
require('../chunk-WCLBWRFH.js');
|
|
8
|
+
require('../chunk-LFWLV3SS.js');
|
|
9
|
+
require('../chunk-VADTO25Q.js');
|
|
10
|
+
require('../chunk-BMNPP53N.js');
|
|
11
|
+
require('../chunk-SREHPG7K.js');
|
|
12
|
+
require('../chunk-OUYEWVXP.js');
|
|
13
|
+
require('../chunk-I6HMKVV3.js');
|
|
14
|
+
require('../chunk-ZRHUHKGT.js');
|
|
15
|
+
require('../chunk-F62W2GSZ.js');
|
|
16
|
+
require('../chunk-DLLH2SFQ.js');
|
|
17
|
+
require('../chunk-6RHMHULS.js');
|
|
18
|
+
require('../chunk-JBMTTZHS.js');
|
|
19
|
+
require('../chunk-N3MAPSR3.js');
|
|
20
|
+
require('../chunk-OZPD234W.js');
|
|
21
|
+
require('../chunk-U7REZSMO.js');
|
|
22
|
+
require('../chunk-AR5J3IYZ.js');
|
|
23
|
+
require('../chunk-XW3CYXPK.js');
|
|
24
|
+
require('../chunk-E5PSKNI7.js');
|
|
25
|
+
require('../chunk-BMLPPIKQ.js');
|
|
26
|
+
require('../chunk-KF6HZNN4.js');
|
|
27
|
+
require('../chunk-VZD5REFA.js');
|
|
28
|
+
require('../chunk-BKAYI3FB.js');
|
|
29
|
+
require('../chunk-3RXU6FL7.js');
|
|
30
|
+
require('../chunk-WMOR2T45.js');
|
|
31
|
+
require('../chunk-OYSDB7WV.js');
|
|
32
|
+
require('../chunk-XEITRX5U.js');
|
|
33
|
+
require('../chunk-66XO4TRY.js');
|
|
34
|
+
require('../chunk-BGJPFPCH.js');
|
|
35
|
+
require('../chunk-2WWTILPZ.js');
|
|
36
|
+
require('../chunk-EXN2TFDJ.js');
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
exports.CronjobController = _chunk7LDJN7LUjs.CronjobController; exports.DAILY_TIMEOUT = _chunk7LDJN7LUjs.DAILY_TIMEOUT;
|
|
41
|
+
//# sourceMappingURL=CronjobController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CronjobController,
|
|
3
|
+
DAILY_TIMEOUT
|
|
4
|
+
} from "../chunk-35RVMQQU.mjs";
|
|
5
|
+
import "../chunk-DQPMF4WI.mjs";
|
|
6
|
+
import "../chunk-6JQAGWUX.mjs";
|
|
7
|
+
import "../chunk-IEFJGFVV.mjs";
|
|
8
|
+
import "../chunk-ZQHMLI2N.mjs";
|
|
9
|
+
import "../chunk-BFD5P2VB.mjs";
|
|
10
|
+
import "../chunk-FD37BGB7.mjs";
|
|
11
|
+
import "../chunk-5AOHJSZ6.mjs";
|
|
12
|
+
import "../chunk-26FZJGWA.mjs";
|
|
13
|
+
import "../chunk-XQ2TCH36.mjs";
|
|
14
|
+
import "../chunk-WUAYTNK4.mjs";
|
|
15
|
+
import "../chunk-2SSKLA6H.mjs";
|
|
16
|
+
import "../chunk-5UJDZGAF.mjs";
|
|
17
|
+
import "../chunk-5JX3PHKY.mjs";
|
|
18
|
+
import "../chunk-NSOTRW3O.mjs";
|
|
19
|
+
import "../chunk-X57FJ67O.mjs";
|
|
20
|
+
import "../chunk-NAJQX2WM.mjs";
|
|
21
|
+
import "../chunk-BUPF6RN3.mjs";
|
|
22
|
+
import "../chunk-OJ2YAMFL.mjs";
|
|
23
|
+
import "../chunk-MJOLPPQK.mjs";
|
|
24
|
+
import "../chunk-7W4BE27D.mjs";
|
|
25
|
+
import "../chunk-JPJ2F22U.mjs";
|
|
26
|
+
import "../chunk-KET5WAIE.mjs";
|
|
27
|
+
import "../chunk-DX3JFCRL.mjs";
|
|
28
|
+
import "../chunk-LANLSIYZ.mjs";
|
|
29
|
+
import "../chunk-4ICLRPDE.mjs";
|
|
30
|
+
import "../chunk-Z7J4BWYY.mjs";
|
|
31
|
+
import "../chunk-OPH3RY2U.mjs";
|
|
32
|
+
import "../chunk-UMS7NV46.mjs";
|
|
33
|
+
import "../chunk-57XSIYLY.mjs";
|
|
34
|
+
import "../chunk-3ZTS7EYA.mjs";
|
|
35
|
+
import "../chunk-5526GKFY.mjs";
|
|
36
|
+
import "../chunk-YRZVIDCF.mjs";
|
|
37
|
+
export {
|
|
38
|
+
CronjobController,
|
|
39
|
+
DAILY_TIMEOUT
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=CronjobController.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunk7LDJN7LUjs = require('../chunk-7LDJN7LU.js');
|
|
5
|
+
require('../chunk-YYBXAUVN.js');
|
|
6
|
+
require('../chunk-V5F3LOTD.js');
|
|
7
|
+
require('../chunk-WCLBWRFH.js');
|
|
8
|
+
require('../chunk-LFWLV3SS.js');
|
|
9
|
+
require('../chunk-VADTO25Q.js');
|
|
10
|
+
require('../chunk-BMNPP53N.js');
|
|
11
|
+
require('../chunk-SREHPG7K.js');
|
|
12
|
+
require('../chunk-OUYEWVXP.js');
|
|
13
|
+
require('../chunk-I6HMKVV3.js');
|
|
14
|
+
require('../chunk-ZRHUHKGT.js');
|
|
15
|
+
require('../chunk-F62W2GSZ.js');
|
|
16
|
+
require('../chunk-DLLH2SFQ.js');
|
|
17
|
+
require('../chunk-6RHMHULS.js');
|
|
18
|
+
require('../chunk-JBMTTZHS.js');
|
|
19
|
+
require('../chunk-N3MAPSR3.js');
|
|
20
|
+
require('../chunk-OZPD234W.js');
|
|
21
|
+
require('../chunk-U7REZSMO.js');
|
|
22
|
+
require('../chunk-AR5J3IYZ.js');
|
|
23
|
+
require('../chunk-XW3CYXPK.js');
|
|
24
|
+
require('../chunk-E5PSKNI7.js');
|
|
25
|
+
require('../chunk-BMLPPIKQ.js');
|
|
26
|
+
require('../chunk-KF6HZNN4.js');
|
|
27
|
+
require('../chunk-VZD5REFA.js');
|
|
28
|
+
require('../chunk-BKAYI3FB.js');
|
|
29
|
+
require('../chunk-3RXU6FL7.js');
|
|
30
|
+
require('../chunk-WMOR2T45.js');
|
|
31
|
+
require('../chunk-OYSDB7WV.js');
|
|
32
|
+
require('../chunk-XEITRX5U.js');
|
|
33
|
+
require('../chunk-66XO4TRY.js');
|
|
34
|
+
require('../chunk-BGJPFPCH.js');
|
|
35
|
+
require('../chunk-2WWTILPZ.js');
|
|
36
|
+
require('../chunk-EXN2TFDJ.js');
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
exports.CronjobController = _chunk7LDJN7LUjs.CronjobController; exports.DAILY_TIMEOUT = _chunk7LDJN7LUjs.DAILY_TIMEOUT;
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CronjobController,
|
|
3
|
+
DAILY_TIMEOUT
|
|
4
|
+
} from "../chunk-35RVMQQU.mjs";
|
|
5
|
+
import "../chunk-DQPMF4WI.mjs";
|
|
6
|
+
import "../chunk-6JQAGWUX.mjs";
|
|
7
|
+
import "../chunk-IEFJGFVV.mjs";
|
|
8
|
+
import "../chunk-ZQHMLI2N.mjs";
|
|
9
|
+
import "../chunk-BFD5P2VB.mjs";
|
|
10
|
+
import "../chunk-FD37BGB7.mjs";
|
|
11
|
+
import "../chunk-5AOHJSZ6.mjs";
|
|
12
|
+
import "../chunk-26FZJGWA.mjs";
|
|
13
|
+
import "../chunk-XQ2TCH36.mjs";
|
|
14
|
+
import "../chunk-WUAYTNK4.mjs";
|
|
15
|
+
import "../chunk-2SSKLA6H.mjs";
|
|
16
|
+
import "../chunk-5UJDZGAF.mjs";
|
|
17
|
+
import "../chunk-5JX3PHKY.mjs";
|
|
18
|
+
import "../chunk-NSOTRW3O.mjs";
|
|
19
|
+
import "../chunk-X57FJ67O.mjs";
|
|
20
|
+
import "../chunk-NAJQX2WM.mjs";
|
|
21
|
+
import "../chunk-BUPF6RN3.mjs";
|
|
22
|
+
import "../chunk-OJ2YAMFL.mjs";
|
|
23
|
+
import "../chunk-MJOLPPQK.mjs";
|
|
24
|
+
import "../chunk-7W4BE27D.mjs";
|
|
25
|
+
import "../chunk-JPJ2F22U.mjs";
|
|
26
|
+
import "../chunk-KET5WAIE.mjs";
|
|
27
|
+
import "../chunk-DX3JFCRL.mjs";
|
|
28
|
+
import "../chunk-LANLSIYZ.mjs";
|
|
29
|
+
import "../chunk-4ICLRPDE.mjs";
|
|
30
|
+
import "../chunk-Z7J4BWYY.mjs";
|
|
31
|
+
import "../chunk-OPH3RY2U.mjs";
|
|
32
|
+
import "../chunk-UMS7NV46.mjs";
|
|
33
|
+
import "../chunk-57XSIYLY.mjs";
|
|
34
|
+
import "../chunk-3ZTS7EYA.mjs";
|
|
35
|
+
import "../chunk-5526GKFY.mjs";
|
|
36
|
+
import "../chunk-YRZVIDCF.mjs";
|
|
37
|
+
export {
|
|
38
|
+
CronjobController,
|
|
39
|
+
DAILY_TIMEOUT
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/fsm.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkXEITRX5Ujs = require('./chunk-XEITRX5U.js');
|
|
5
|
+
require('./chunk-EXN2TFDJ.js');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
exports.forceStrict = _chunkXEITRX5Ujs.forceStrict; exports.validateMachine = _chunkXEITRX5Ujs.validateMachine;
|
|
10
|
+
//# sourceMappingURL=fsm.js.map
|
package/dist/fsm.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
package/dist/fsm.mjs
ADDED
package/dist/fsm.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|