@metamask/snaps-controllers 9.5.0 → 9.7.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 +21 -1
- package/dist/cronjob/CronjobController.cjs +255 -0
- package/dist/cronjob/CronjobController.cjs.map +1 -0
- package/dist/{types/cronjob/CronjobController.d.ts → cronjob/CronjobController.d.cts} +8 -7
- package/dist/cronjob/CronjobController.d.cts.map +1 -0
- package/dist/cronjob/CronjobController.d.mts +121 -0
- package/dist/cronjob/CronjobController.d.mts.map +1 -0
- package/dist/cronjob/CronjobController.mjs +249 -41
- package/dist/cronjob/CronjobController.mjs.map +1 -1
- package/dist/cronjob/index.cjs +18 -0
- package/dist/cronjob/index.cjs.map +1 -0
- package/dist/cronjob/index.d.cts +2 -0
- package/dist/cronjob/index.d.cts.map +1 -0
- package/dist/cronjob/index.d.mts +2 -0
- package/dist/cronjob/index.d.mts.map +1 -0
- package/dist/cronjob/index.mjs +1 -42
- package/dist/cronjob/index.mjs.map +1 -1
- package/dist/fsm.cjs +75 -0
- package/dist/fsm.cjs.map +1 -0
- package/dist/{types/fsm.d.ts → fsm.d.cts} +2 -1
- package/dist/fsm.d.cts.map +1 -0
- package/dist/fsm.d.mts +25 -0
- package/dist/fsm.d.mts.map +1 -0
- package/dist/fsm.mjs +69 -9
- package/dist/fsm.mjs.map +1 -1
- package/dist/index.cjs +23 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +8 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +8 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +6 -124
- package/dist/index.mjs.map +1 -1
- package/dist/insights/SnapInsightsController.cjs +182 -0
- package/dist/insights/SnapInsightsController.cjs.map +1 -0
- package/dist/{types/insights/SnapInsightsController.d.ts → insights/SnapInsightsController.d.cts} +8 -7
- package/dist/insights/SnapInsightsController.d.cts.map +1 -0
- package/dist/insights/SnapInsightsController.d.mts +38 -0
- package/dist/insights/SnapInsightsController.d.mts.map +1 -0
- package/dist/insights/SnapInsightsController.mjs +176 -23
- package/dist/insights/SnapInsightsController.mjs.map +1 -1
- package/dist/insights/index.cjs +18 -0
- package/dist/insights/index.cjs.map +1 -0
- package/dist/insights/index.d.cts +2 -0
- package/dist/insights/index.d.cts.map +1 -0
- package/dist/insights/index.d.mts +2 -0
- package/dist/insights/index.d.mts.map +1 -0
- package/dist/insights/index.mjs +1 -25
- package/dist/insights/index.mjs.map +1 -1
- package/dist/interface/SnapInterfaceController.cjs +176 -0
- package/dist/interface/SnapInterfaceController.cjs.map +1 -0
- package/dist/{types/interface/SnapInterfaceController.d.ts → interface/SnapInterfaceController.d.cts} +8 -7
- package/dist/interface/SnapInterfaceController.d.cts.map +1 -0
- package/dist/interface/SnapInterfaceController.d.mts +107 -0
- package/dist/interface/SnapInterfaceController.d.mts.map +1 -0
- package/dist/interface/SnapInterfaceController.mjs +170 -7
- package/dist/interface/SnapInterfaceController.mjs.map +1 -1
- package/dist/interface/index.cjs +18 -0
- package/dist/interface/index.cjs.map +1 -0
- package/dist/interface/index.d.cts +2 -0
- package/dist/interface/index.d.cts.map +1 -0
- package/dist/interface/index.d.mts +2 -0
- package/dist/interface/index.d.mts.map +1 -0
- package/dist/interface/index.mjs +1 -9
- package/dist/interface/index.mjs.map +1 -1
- package/dist/interface/utils.cjs +165 -0
- package/dist/interface/utils.cjs.map +1 -0
- package/dist/{types/interface/utils.d.ts → interface/utils.d.cts} +3 -2
- package/dist/interface/utils.d.cts.map +1 -0
- package/dist/interface/utils.d.mts +34 -0
- package/dist/interface/utils.d.mts.map +1 -0
- package/dist/interface/utils.mjs +157 -13
- package/dist/interface/utils.mjs.map +1 -1
- package/dist/logging.cjs +13 -0
- package/dist/logging.cjs.map +1 -0
- package/dist/{types/logging.d.ts → logging.d.cts} +1 -0
- package/dist/logging.d.cts.map +1 -0
- package/dist/logging.d.mts +9 -0
- package/dist/logging.d.mts.map +1 -0
- package/dist/logging.mjs +9 -7
- package/dist/logging.mjs.map +1 -1
- package/dist/node.cjs +20 -0
- package/dist/node.cjs.map +1 -0
- package/dist/node.d.cts +3 -0
- package/dist/node.d.cts.map +1 -0
- package/dist/node.d.mts +3 -0
- package/dist/node.d.mts.map +1 -0
- package/dist/node.mjs +3 -134
- package/dist/node.mjs.map +1 -1
- package/dist/react-native.cjs +20 -0
- package/dist/react-native.cjs.map +1 -0
- package/dist/react-native.d.cts +3 -0
- package/dist/react-native.d.cts.map +1 -0
- package/dist/react-native.d.mts +3 -0
- package/dist/react-native.d.mts.map +1 -0
- package/dist/react-native.mjs +3 -131
- package/dist/react-native.mjs.map +1 -1
- package/dist/services/AbstractExecutionService.cjs +348 -0
- package/dist/services/AbstractExecutionService.cjs.map +1 -0
- package/dist/{types/services/AbstractExecutionService.d.ts → services/AbstractExecutionService.d.cts} +8 -8
- package/dist/services/AbstractExecutionService.d.cts.map +1 -0
- package/dist/services/AbstractExecutionService.d.mts +131 -0
- package/dist/services/AbstractExecutionService.d.mts.map +1 -0
- package/dist/services/AbstractExecutionService.mjs +345 -11
- package/dist/services/AbstractExecutionService.mjs.map +1 -1
- package/dist/services/ExecutionService.cjs +4 -0
- package/dist/services/ExecutionService.cjs.map +1 -0
- package/dist/{types/services/ExecutionService.d.ts → services/ExecutionService.d.cts} +4 -3
- package/dist/services/ExecutionService.d.cts.map +1 -0
- package/dist/services/ExecutionService.d.mts +69 -0
- package/dist/services/ExecutionService.d.mts.map +1 -0
- package/dist/services/ExecutionService.mjs +2 -1
- package/dist/services/ExecutionService.mjs.map +1 -1
- package/dist/services/ProxyPostMessageStream.cjs +58 -0
- package/dist/services/ProxyPostMessageStream.cjs.map +1 -0
- package/dist/{types/services/ProxyPostMessageStream.d.ts → services/ProxyPostMessageStream.d.cts} +3 -2
- package/dist/services/ProxyPostMessageStream.d.cts.map +1 -0
- package/dist/services/ProxyPostMessageStream.d.mts +35 -0
- package/dist/services/ProxyPostMessageStream.d.mts.map +1 -0
- package/dist/services/ProxyPostMessageStream.mjs +53 -6
- package/dist/services/ProxyPostMessageStream.mjs.map +1 -1
- package/dist/services/browser.cjs +27 -0
- package/dist/services/browser.cjs.map +1 -0
- package/dist/services/browser.d.cts +8 -0
- package/dist/services/browser.d.cts.map +1 -0
- package/dist/services/browser.d.mts +8 -0
- package/dist/services/browser.d.mts.map +1 -0
- package/dist/services/browser.mjs +8 -39
- package/dist/services/browser.mjs.map +1 -1
- package/dist/services/iframe/IframeExecutionService.cjs +30 -0
- package/dist/services/iframe/IframeExecutionService.cjs.map +1 -0
- package/dist/{types/services/iframe/IframeExecutionService.d.ts → services/iframe/IframeExecutionService.d.cts} +4 -3
- package/dist/services/iframe/IframeExecutionService.d.cts.map +1 -0
- package/dist/services/iframe/IframeExecutionService.d.mts +17 -0
- package/dist/services/iframe/IframeExecutionService.d.mts.map +1 -0
- package/dist/services/iframe/IframeExecutionService.mjs +26 -11
- package/dist/services/iframe/IframeExecutionService.mjs.map +1 -1
- package/dist/services/iframe/index.cjs +18 -0
- package/dist/services/iframe/index.cjs.map +1 -0
- package/dist/services/iframe/index.d.cts +2 -0
- package/dist/services/iframe/index.d.cts.map +1 -0
- package/dist/services/iframe/index.d.mts +2 -0
- package/dist/services/iframe/index.d.mts.map +1 -0
- package/dist/services/iframe/index.mjs +1 -12
- package/dist/services/iframe/index.mjs.map +1 -1
- package/dist/services/index.cjs +25 -0
- package/dist/services/index.cjs.map +1 -0
- package/dist/services/index.d.cts +7 -0
- package/dist/services/index.d.cts.map +1 -0
- package/dist/services/index.d.mts +7 -0
- package/dist/services/index.d.mts.map +1 -0
- package/dist/services/index.mjs +6 -34
- package/dist/services/index.mjs.map +1 -1
- package/dist/services/node-js/NodeProcessExecutionService.cjs +30 -0
- package/dist/services/node-js/NodeProcessExecutionService.cjs.map +1 -0
- package/dist/{types/services/node-js/NodeProcessExecutionService.d.ts → services/node-js/NodeProcessExecutionService.d.cts} +5 -4
- package/dist/services/node-js/NodeProcessExecutionService.d.cts.map +1 -0
- package/dist/services/node-js/NodeProcessExecutionService.d.mts +13 -0
- package/dist/services/node-js/NodeProcessExecutionService.d.mts.map +1 -0
- package/dist/services/node-js/NodeProcessExecutionService.mjs +28 -21
- package/dist/services/node-js/NodeProcessExecutionService.mjs.map +1 -1
- package/dist/services/node-js/NodeThreadExecutionService.cjs +32 -0
- package/dist/services/node-js/NodeThreadExecutionService.cjs.map +1 -0
- package/dist/{types/services/node-js/NodeThreadExecutionService.d.ts → services/node-js/NodeThreadExecutionService.d.cts} +5 -4
- package/dist/services/node-js/NodeThreadExecutionService.d.cts.map +1 -0
- package/dist/services/node-js/NodeThreadExecutionService.d.mts +13 -0
- package/dist/services/node-js/NodeThreadExecutionService.d.mts.map +1 -0
- package/dist/services/node-js/NodeThreadExecutionService.mjs +30 -21
- package/dist/services/node-js/NodeThreadExecutionService.mjs.map +1 -1
- package/dist/services/node-js/index.cjs +19 -0
- package/dist/services/node-js/index.cjs.map +1 -0
- package/dist/services/node-js/index.d.cts +3 -0
- package/dist/services/node-js/index.d.cts.map +1 -0
- package/dist/services/node-js/index.d.mts +3 -0
- package/dist/services/node-js/index.d.mts.map +1 -0
- package/dist/services/node-js/index.mjs +2 -26
- package/dist/services/node-js/index.mjs.map +1 -1
- package/dist/services/node.cjs +19 -0
- package/dist/services/node.cjs.map +1 -0
- package/dist/services/node.d.cts +3 -0
- package/dist/services/node.d.cts.map +1 -0
- package/dist/services/node.d.mts +3 -0
- package/dist/services/node.d.mts.map +1 -0
- package/dist/services/node.mjs +2 -44
- package/dist/services/node.mjs.map +1 -1
- package/dist/services/offscreen/OffscreenExecutionService.cjs +56 -0
- package/dist/services/offscreen/OffscreenExecutionService.cjs.map +1 -0
- package/dist/{types/services/offscreen/OffscreenExecutionService.d.ts → services/offscreen/OffscreenExecutionService.d.cts} +4 -3
- package/dist/services/offscreen/OffscreenExecutionService.d.cts.map +1 -0
- package/dist/services/offscreen/OffscreenExecutionService.d.mts +33 -0
- package/dist/services/offscreen/OffscreenExecutionService.d.mts.map +1 -0
- package/dist/services/offscreen/OffscreenExecutionService.mjs +51 -12
- package/dist/services/offscreen/OffscreenExecutionService.mjs.map +1 -1
- package/dist/services/offscreen/index.cjs +18 -0
- package/dist/services/offscreen/index.cjs.map +1 -0
- package/dist/services/offscreen/index.d.cts +2 -0
- package/dist/services/offscreen/index.d.cts.map +1 -0
- package/dist/services/offscreen/index.d.mts +2 -0
- package/dist/services/offscreen/index.d.mts.map +1 -0
- package/dist/services/offscreen/index.mjs +1 -14
- package/dist/services/offscreen/index.mjs.map +1 -1
- package/dist/services/proxy/ProxyExecutionService.cjs +85 -0
- package/dist/services/proxy/ProxyExecutionService.cjs.map +1 -0
- package/dist/{types/services/proxy/ProxyExecutionService.d.ts → services/proxy/ProxyExecutionService.d.cts} +6 -4
- package/dist/services/proxy/ProxyExecutionService.d.cts.map +1 -0
- package/dist/services/proxy/ProxyExecutionService.d.mts +41 -0
- package/dist/services/proxy/ProxyExecutionService.d.mts.map +1 -0
- package/dist/services/proxy/ProxyExecutionService.mjs +79 -11
- package/dist/services/proxy/ProxyExecutionService.mjs.map +1 -1
- package/dist/services/react-native.cjs +19 -0
- package/dist/services/react-native.cjs.map +1 -0
- package/dist/services/react-native.d.cts +3 -0
- package/dist/services/react-native.d.cts.map +1 -0
- package/dist/services/react-native.d.mts +3 -0
- package/dist/services/react-native.d.mts.map +1 -0
- package/dist/services/react-native.mjs +2 -41
- package/dist/services/react-native.mjs.map +1 -1
- package/dist/services/webview/WebViewExecutionService.cjs +54 -0
- package/dist/services/webview/WebViewExecutionService.cjs.map +1 -0
- package/dist/{types/services/webview/WebViewExecutionService.d.ts → services/webview/WebViewExecutionService.d.cts} +6 -4
- package/dist/services/webview/WebViewExecutionService.d.cts.map +1 -0
- package/dist/services/webview/WebViewExecutionService.d.mts +22 -0
- package/dist/services/webview/WebViewExecutionService.d.mts.map +1 -0
- package/dist/services/webview/WebViewExecutionService.mjs +48 -13
- package/dist/services/webview/WebViewExecutionService.mjs.map +1 -1
- package/dist/services/webview/WebViewMessageStream.cjs +89 -0
- package/dist/services/webview/WebViewMessageStream.cjs.map +1 -0
- package/dist/{types/services/webview/WebViewMessageStream.d.ts → services/webview/WebViewMessageStream.d.cts} +3 -2
- package/dist/services/webview/WebViewMessageStream.d.cts.map +1 -0
- package/dist/services/webview/WebViewMessageStream.d.mts +33 -0
- package/dist/services/webview/WebViewMessageStream.d.mts.map +1 -0
- package/dist/services/webview/WebViewMessageStream.mjs +84 -6
- package/dist/services/webview/WebViewMessageStream.mjs.map +1 -1
- package/dist/services/webview/index.cjs +18 -0
- package/dist/services/webview/index.cjs.map +1 -0
- package/dist/services/webview/index.d.cts +2 -0
- package/dist/services/webview/index.d.cts.map +1 -0
- package/dist/services/webview/index.d.mts +2 -0
- package/dist/services/webview/index.d.mts.map +1 -0
- package/dist/services/webview/index.mjs +1 -15
- package/dist/services/webview/index.mjs.map +1 -1
- package/dist/services/webworker/WebWorkerExecutionService.cjs +101 -0
- package/dist/services/webworker/WebWorkerExecutionService.cjs.map +1 -0
- package/dist/{types/services/webworker/WebWorkerExecutionService.d.ts → services/webworker/WebWorkerExecutionService.d.cts} +5 -3
- package/dist/services/webworker/WebWorkerExecutionService.d.cts.map +1 -0
- package/dist/services/webworker/WebWorkerExecutionService.d.mts +47 -0
- package/dist/services/webworker/WebWorkerExecutionService.d.mts.map +1 -0
- package/dist/services/webworker/WebWorkerExecutionService.mjs +96 -13
- package/dist/services/webworker/WebWorkerExecutionService.mjs.map +1 -1
- package/dist/services/webworker/index.cjs +18 -0
- package/dist/services/webworker/index.cjs.map +1 -0
- package/dist/services/webworker/index.d.cts +2 -0
- package/dist/services/webworker/index.d.cts.map +1 -0
- package/dist/services/webworker/index.d.mts +2 -0
- package/dist/services/webworker/index.d.mts.map +1 -0
- package/dist/services/webworker/index.mjs +1 -15
- package/dist/services/webworker/index.mjs.map +1 -1
- package/dist/snaps/RequestQueue.cjs +44 -0
- package/dist/snaps/RequestQueue.cjs.map +1 -0
- package/dist/{types/snaps/RequestQueue.d.ts → snaps/RequestQueue.d.cts} +1 -0
- package/dist/snaps/RequestQueue.d.cts.map +1 -0
- package/dist/snaps/RequestQueue.d.mts +25 -0
- package/dist/snaps/RequestQueue.d.mts.map +1 -0
- package/dist/snaps/RequestQueue.mjs +39 -7
- package/dist/snaps/RequestQueue.mjs.map +1 -1
- package/dist/snaps/SnapController.cjs +1898 -0
- package/dist/snaps/SnapController.cjs.map +1 -0
- package/dist/{types/snaps/SnapController.d.ts → snaps/SnapController.d.cts} +34 -20
- package/dist/snaps/SnapController.d.cts.map +1 -0
- package/dist/snaps/SnapController.d.mts +668 -0
- package/dist/snaps/SnapController.d.mts.map +1 -0
- package/dist/snaps/SnapController.mjs +1892 -28
- package/dist/snaps/SnapController.mjs.map +1 -1
- package/dist/snaps/Timer.cjs +103 -0
- package/dist/snaps/Timer.cjs.map +1 -0
- package/dist/{types/snaps/Timer.d.ts → snaps/Timer.d.cts} +1 -0
- package/dist/snaps/Timer.d.cts.map +1 -0
- package/dist/snaps/Timer.d.mts +47 -0
- package/dist/snaps/Timer.d.mts.map +1 -0
- package/dist/snaps/Timer.mjs +98 -7
- package/dist/snaps/Timer.mjs.map +1 -1
- package/dist/snaps/constants.cjs +24 -0
- package/dist/snaps/constants.cjs.map +1 -0
- package/dist/{types/snaps/constants.d.ts → snaps/constants.d.cts} +1 -0
- package/dist/snaps/constants.d.cts.map +1 -0
- package/dist/snaps/constants.d.mts +8 -0
- package/dist/snaps/constants.d.mts.map +1 -0
- package/dist/snaps/constants.mjs +19 -8
- package/dist/snaps/constants.mjs.map +1 -1
- package/dist/snaps/index.cjs +21 -0
- package/dist/snaps/index.cjs.map +1 -0
- package/dist/snaps/index.d.cts +5 -0
- package/dist/snaps/index.d.cts.map +1 -0
- package/dist/snaps/index.d.mts +5 -0
- package/dist/snaps/index.d.mts.map +1 -0
- package/dist/snaps/index.mjs +4 -62
- package/dist/snaps/index.mjs.map +1 -1
- package/dist/snaps/location/http.cjs +75 -0
- package/dist/snaps/location/http.cjs.map +1 -0
- package/dist/{types/snaps/location/http.d.ts → snaps/location/http.d.cts} +4 -3
- package/dist/snaps/location/http.d.cts.map +1 -0
- package/dist/snaps/location/http.d.mts +23 -0
- package/dist/snaps/location/http.d.mts.map +1 -0
- package/dist/snaps/location/http.mjs +70 -7
- package/dist/snaps/location/http.mjs.map +1 -1
- package/dist/snaps/location/index.cjs +21 -0
- package/dist/snaps/location/index.cjs.map +1 -0
- package/dist/snaps/location/index.d.cts +5 -0
- package/dist/snaps/location/index.d.cts.map +1 -0
- package/dist/snaps/location/index.d.mts +5 -0
- package/dist/snaps/location/index.d.mts.map +1 -0
- package/dist/snaps/location/index.mjs +4 -30
- package/dist/snaps/location/index.mjs.map +1 -1
- package/dist/snaps/location/local.cjs +51 -0
- package/dist/snaps/location/local.cjs.map +1 -0
- package/dist/{types/snaps/location/local.d.ts → snaps/location/local.d.cts} +4 -3
- package/dist/snaps/location/local.d.cts.map +1 -0
- package/dist/snaps/location/local.d.mts +11 -0
- package/dist/snaps/location/local.d.mts.map +1 -0
- package/dist/snaps/location/local.mjs +45 -7
- package/dist/snaps/location/local.mjs.map +1 -1
- package/dist/snaps/location/location.cjs +34 -0
- package/dist/{chunk-ZKG6FRKN.mjs.map → snaps/location/location.cjs.map} +1 -1
- package/dist/{types/snaps/location/location.d.ts → snaps/location/location.d.cts} +4 -3
- package/dist/snaps/location/location.d.cts.map +1 -0
- package/dist/snaps/location/location.d.mts +45 -0
- package/dist/snaps/location/location.d.mts.map +1 -0
- package/dist/snaps/location/location.mjs +29 -10
- package/dist/snaps/location/location.mjs.map +1 -1
- package/dist/snaps/location/npm.cjs +335 -0
- package/dist/snaps/location/npm.cjs.map +1 -0
- package/dist/{types/snaps/location/npm.d.ts → snaps/location/npm.d.cts} +5 -4
- package/dist/snaps/location/npm.d.cts.map +1 -0
- package/dist/snaps/location/npm.d.mts +84 -0
- package/dist/snaps/location/npm.d.mts.map +1 -0
- package/dist/snaps/location/npm.mjs +331 -16
- package/dist/snaps/location/npm.mjs.map +1 -1
- package/dist/snaps/registry/index.cjs +19 -0
- package/dist/snaps/registry/index.cjs.map +1 -0
- package/dist/snaps/registry/index.d.cts +3 -0
- package/dist/snaps/registry/index.d.cts.map +1 -0
- package/dist/snaps/registry/index.d.mts +3 -0
- package/dist/snaps/registry/index.d.mts.map +1 -0
- package/dist/snaps/registry/index.mjs +2 -12
- package/dist/snaps/registry/index.mjs.map +1 -1
- package/dist/snaps/registry/json.cjs +224 -0
- package/dist/snaps/registry/json.cjs.map +1 -0
- package/dist/{types/snaps/registry/json.d.ts → snaps/registry/json.d.cts} +6 -5
- package/dist/snaps/registry/json.d.cts.map +1 -0
- package/dist/snaps/registry/json.d.mts +51 -0
- package/dist/snaps/registry/json.d.mts.map +1 -0
- package/dist/snaps/registry/json.mjs +219 -7
- package/dist/snaps/registry/json.mjs.map +1 -1
- package/dist/snaps/registry/registry.cjs +11 -0
- package/dist/snaps/registry/registry.cjs.map +1 -0
- package/dist/{types/snaps/registry/registry.d.ts → snaps/registry/registry.d.cts} +4 -3
- package/dist/snaps/registry/registry.d.cts.map +1 -0
- package/dist/snaps/registry/registry.d.mts +42 -0
- package/dist/snaps/registry/registry.d.mts.map +1 -0
- package/dist/snaps/registry/registry.mjs +7 -7
- package/dist/snaps/registry/registry.mjs.map +1 -1
- package/dist/snaps/selectors.cjs +6 -0
- package/dist/snaps/selectors.cjs.map +1 -0
- package/dist/snaps/selectors.d.cts +3 -0
- package/dist/snaps/selectors.d.cts.map +1 -0
- package/dist/snaps/selectors.d.mts +3 -0
- package/dist/snaps/selectors.d.mts.map +1 -0
- package/dist/snaps/selectors.mjs +1 -7
- package/dist/snaps/selectors.mjs.map +1 -1
- package/dist/types/controllers.cjs +4 -0
- package/dist/types/controllers.cjs.map +1 -0
- package/dist/types/{types/controllers.d.ts → controllers.d.cts} +3 -2
- package/dist/types/controllers.d.cts.map +1 -0
- package/dist/types/controllers.d.mts +132 -0
- package/dist/types/controllers.d.mts.map +1 -0
- package/dist/types/controllers.mjs +2 -1
- package/dist/types/controllers.mjs.map +1 -1
- package/dist/types/encryptor.cjs +3 -0
- package/dist/types/encryptor.cjs.map +1 -0
- package/dist/types/{types/encryptor.d.ts → encryptor.d.cts} +2 -1
- package/dist/types/encryptor.d.cts.map +1 -0
- package/dist/types/encryptor.d.mts +99 -0
- package/dist/types/encryptor.d.mts.map +1 -0
- package/dist/types/encryptor.mjs +1 -1
- package/dist/types/encryptor.mjs.map +1 -1
- package/dist/types/index.cjs +19 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +3 -0
- package/dist/types/index.d.cts.map +1 -0
- package/dist/types/index.d.mts +3 -0
- package/dist/types/index.d.mts.map +1 -0
- package/dist/types/index.mjs +2 -2
- package/dist/types/index.mjs.map +1 -1
- package/dist/utils.cjs +174 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/{types/utils.d.ts → utils.d.cts} +8 -14
- package/dist/utils.d.cts.map +1 -0
- package/dist/utils.d.mts +245 -0
- package/dist/utils.d.mts.map +1 -0
- package/dist/utils.mjs +167 -22
- package/dist/utils.mjs.map +1 -1
- package/package.json +42 -30
- package/react-native.d.ts +3 -1
- package/react-native.js +1 -1
- package/dist/chunk-272IFIK7.mjs +0 -1
- package/dist/chunk-272IFIK7.mjs.map +0 -1
- package/dist/chunk-2D5PGL7S.js +0 -253
- package/dist/chunk-2D5PGL7S.js.map +0 -1
- package/dist/chunk-2SRKMEUV.mjs +0 -92
- package/dist/chunk-2SRKMEUV.mjs.map +0 -1
- package/dist/chunk-2XQD4P2S.mjs +0 -1
- package/dist/chunk-2XQD4P2S.mjs.map +0 -1
- package/dist/chunk-36QDTCDZ.js +0 -276
- package/dist/chunk-36QDTCDZ.js.map +0 -1
- package/dist/chunk-3RNW7OKG.mjs +0 -1
- package/dist/chunk-3RNW7OKG.mjs.map +0 -1
- package/dist/chunk-3WWZDKQL.js +0 -40
- package/dist/chunk-3WWZDKQL.js.map +0 -1
- package/dist/chunk-4CA3O64H.js +0 -13
- package/dist/chunk-4CA3O64H.js.map +0 -1
- package/dist/chunk-4HVWEABQ.mjs +0 -9
- package/dist/chunk-4HVWEABQ.mjs.map +0 -1
- package/dist/chunk-4M2FX2AT.mjs +0 -26
- package/dist/chunk-4M2FX2AT.mjs.map +0 -1
- package/dist/chunk-4URGXJP7.js +0 -1
- package/dist/chunk-4URGXJP7.js.map +0 -1
- package/dist/chunk-6EZSNS4O.mjs +0 -59
- package/dist/chunk-6EZSNS4O.mjs.map +0 -1
- package/dist/chunk-6K4MATNG.js +0 -2548
- package/dist/chunk-6K4MATNG.js.map +0 -1
- package/dist/chunk-6WGCLJGC.mjs +0 -58
- package/dist/chunk-6WGCLJGC.mjs.map +0 -1
- package/dist/chunk-6Z4WDAVC.js +0 -48
- package/dist/chunk-6Z4WDAVC.js.map +0 -1
- package/dist/chunk-7BUNUNUC.js +0 -58
- package/dist/chunk-7BUNUNUC.js.map +0 -1
- package/dist/chunk-7Y6P5FRN.js +0 -60
- package/dist/chunk-7Y6P5FRN.js.map +0 -1
- package/dist/chunk-A6WJEA3C.js +0 -1
- package/dist/chunk-A6WJEA3C.js.map +0 -1
- package/dist/chunk-AP7CJ6DA.js +0 -47
- package/dist/chunk-AP7CJ6DA.js.map +0 -1
- package/dist/chunk-B6KTRDBK.js +0 -127
- package/dist/chunk-B6KTRDBK.js.map +0 -1
- package/dist/chunk-B7R3EWM3.mjs +0 -1
- package/dist/chunk-B7R3EWM3.mjs.map +0 -1
- package/dist/chunk-BAEXVO3U.mjs +0 -1
- package/dist/chunk-BAEXVO3U.mjs.map +0 -1
- package/dist/chunk-BAUQWPSP.mjs +0 -331
- package/dist/chunk-BAUQWPSP.mjs.map +0 -1
- package/dist/chunk-BO2ZDPWV.js +0 -59
- package/dist/chunk-BO2ZDPWV.js.map +0 -1
- package/dist/chunk-BOFPNIRX.js +0 -119
- package/dist/chunk-BOFPNIRX.js.map +0 -1
- package/dist/chunk-C4D6GBMY.js +0 -71
- package/dist/chunk-C4D6GBMY.js.map +0 -1
- package/dist/chunk-D66YLO7T.js +0 -38
- package/dist/chunk-D66YLO7T.js.map +0 -1
- package/dist/chunk-D74XJG2L.js +0 -1
- package/dist/chunk-D74XJG2L.js.map +0 -1
- package/dist/chunk-DSOZPX7I.js +0 -283
- package/dist/chunk-DSOZPX7I.js.map +0 -1
- package/dist/chunk-ESQPQNEF.mjs +0 -1
- package/dist/chunk-ESQPQNEF.mjs.map +0 -1
- package/dist/chunk-EXN2TFDJ.js +0 -38
- package/dist/chunk-EXN2TFDJ.js.map +0 -1
- package/dist/chunk-F3ZMDQ52.mjs +0 -276
- package/dist/chunk-F3ZMDQ52.mjs.map +0 -1
- package/dist/chunk-FX5AADOV.mjs +0 -1
- package/dist/chunk-FX5AADOV.mjs.map +0 -1
- package/dist/chunk-FZOI4WPB.js +0 -82
- package/dist/chunk-FZOI4WPB.js.map +0 -1
- package/dist/chunk-G66GQJS6.js +0 -1
- package/dist/chunk-G66GQJS6.js.map +0 -1
- package/dist/chunk-G7U6WKWS.mjs +0 -1
- package/dist/chunk-G7U6WKWS.mjs.map +0 -1
- package/dist/chunk-HLQQTAMM.mjs +0 -105
- package/dist/chunk-HLQQTAMM.mjs.map +0 -1
- package/dist/chunk-HOY6NKQR.js +0 -1
- package/dist/chunk-HOY6NKQR.js.map +0 -1
- package/dist/chunk-HP6S5IOB.js +0 -1
- package/dist/chunk-HP6S5IOB.js.map +0 -1
- package/dist/chunk-HULNFJMA.mjs +0 -108
- package/dist/chunk-HULNFJMA.mjs.map +0 -1
- package/dist/chunk-HWJE3SDW.mjs +0 -1
- package/dist/chunk-HWJE3SDW.mjs.map +0 -1
- package/dist/chunk-I25KLPIS.js +0 -273
- package/dist/chunk-I25KLPIS.js.map +0 -1
- package/dist/chunk-I5V56NYO.mjs +0 -273
- package/dist/chunk-I5V56NYO.mjs.map +0 -1
- package/dist/chunk-IABOI7TW.mjs +0 -1
- package/dist/chunk-IABOI7TW.mjs.map +0 -1
- package/dist/chunk-IDCWJJCQ.js +0 -1
- package/dist/chunk-IDCWJJCQ.js.map +0 -1
- package/dist/chunk-IGC4E7PI.mjs +0 -71
- package/dist/chunk-IGC4E7PI.mjs.map +0 -1
- package/dist/chunk-JAUAKTUL.js +0 -1
- package/dist/chunk-JAUAKTUL.js.map +0 -1
- package/dist/chunk-JQ54YYLU.js +0 -26
- package/dist/chunk-JQ54YYLU.js.map +0 -1
- package/dist/chunk-JW7WBUL7.js +0 -1
- package/dist/chunk-JW7WBUL7.js.map +0 -1
- package/dist/chunk-K3TNQEM5.js +0 -331
- package/dist/chunk-K3TNQEM5.js.map +0 -1
- package/dist/chunk-KCMULJ2M.mjs +0 -1
- package/dist/chunk-KCMULJ2M.mjs.map +0 -1
- package/dist/chunk-KELDSV7H.js +0 -39
- package/dist/chunk-KELDSV7H.js.map +0 -1
- package/dist/chunk-KRI4OKC3.mjs +0 -127
- package/dist/chunk-KRI4OKC3.mjs.map +0 -1
- package/dist/chunk-KYRKZ3RH.mjs +0 -38
- package/dist/chunk-KYRKZ3RH.mjs.map +0 -1
- package/dist/chunk-LDL6LJ3P.mjs +0 -38
- package/dist/chunk-LDL6LJ3P.mjs.map +0 -1
- package/dist/chunk-M7DWHPVM.js +0 -1
- package/dist/chunk-M7DWHPVM.js.map +0 -1
- package/dist/chunk-NC5PBDKD.mjs +0 -47
- package/dist/chunk-NC5PBDKD.mjs.map +0 -1
- package/dist/chunk-NXZVKBSV.js +0 -9
- package/dist/chunk-NXZVKBSV.js.map +0 -1
- package/dist/chunk-NZOUFWUN.mjs +0 -1
- package/dist/chunk-NZOUFWUN.mjs.map +0 -1
- package/dist/chunk-OHMCPTOI.js +0 -1
- package/dist/chunk-OHMCPTOI.js.map +0 -1
- package/dist/chunk-OIEUL55W.js +0 -1
- package/dist/chunk-OIEUL55W.js.map +0 -1
- package/dist/chunk-OVATPF5I.js +0 -58
- package/dist/chunk-OVATPF5I.js.map +0 -1
- package/dist/chunk-P66VIDFG.js +0 -105
- package/dist/chunk-P66VIDFG.js.map +0 -1
- package/dist/chunk-P7Y6MIZW.mjs +0 -7
- package/dist/chunk-P7Y6MIZW.mjs.map +0 -1
- package/dist/chunk-PYSDWIVK.js +0 -38
- package/dist/chunk-PYSDWIVK.js.map +0 -1
- package/dist/chunk-QL3QGUTM.mjs +0 -1
- package/dist/chunk-QL3QGUTM.mjs.map +0 -1
- package/dist/chunk-QRISQRFI.js +0 -399
- package/dist/chunk-QRISQRFI.js.map +0 -1
- package/dist/chunk-QWN3UOMA.mjs +0 -2548
- package/dist/chunk-QWN3UOMA.mjs.map +0 -1
- package/dist/chunk-RZ2NHZXH.js +0 -108
- package/dist/chunk-RZ2NHZXH.js.map +0 -1
- package/dist/chunk-TG6OXBLR.js +0 -1
- package/dist/chunk-TG6OXBLR.js.map +0 -1
- package/dist/chunk-TIURYSSR.js +0 -92
- package/dist/chunk-TIURYSSR.js.map +0 -1
- package/dist/chunk-TMWMIQV4.js +0 -1
- package/dist/chunk-TMWMIQV4.js.map +0 -1
- package/dist/chunk-TSDUJNOP.mjs +0 -399
- package/dist/chunk-TSDUJNOP.mjs.map +0 -1
- package/dist/chunk-U74FML7Z.mjs +0 -1
- package/dist/chunk-U74FML7Z.mjs.map +0 -1
- package/dist/chunk-UM4NFNEI.mjs +0 -48
- package/dist/chunk-UM4NFNEI.mjs.map +0 -1
- package/dist/chunk-V6NFZ47P.mjs +0 -1
- package/dist/chunk-V6NFZ47P.mjs.map +0 -1
- package/dist/chunk-VKMY6CKT.mjs +0 -39
- package/dist/chunk-VKMY6CKT.mjs.map +0 -1
- package/dist/chunk-VNOCJWOK.js +0 -1
- package/dist/chunk-VNOCJWOK.js.map +0 -1
- package/dist/chunk-WEY7ICES.js +0 -1
- package/dist/chunk-WEY7ICES.js.map +0 -1
- package/dist/chunk-WR7CVDEY.mjs +0 -58
- package/dist/chunk-WR7CVDEY.mjs.map +0 -1
- package/dist/chunk-XO7KDFBY.mjs +0 -119
- package/dist/chunk-XO7KDFBY.mjs.map +0 -1
- package/dist/chunk-XOSHP4J3.mjs +0 -82
- package/dist/chunk-XOSHP4J3.mjs.map +0 -1
- package/dist/chunk-YRZVIDCF.mjs +0 -38
- package/dist/chunk-YRZVIDCF.mjs.map +0 -1
- package/dist/chunk-YYPUPKQY.js +0 -7
- package/dist/chunk-YYPUPKQY.js.map +0 -1
- package/dist/chunk-Z4BUMSH3.mjs +0 -283
- package/dist/chunk-Z4BUMSH3.mjs.map +0 -1
- package/dist/chunk-Z5QWRDUN.mjs +0 -253
- package/dist/chunk-Z5QWRDUN.mjs.map +0 -1
- package/dist/chunk-ZKG6FRKN.mjs +0 -40
- package/dist/chunk-ZQAGLOXD.mjs +0 -1
- package/dist/chunk-ZQAGLOXD.mjs.map +0 -1
- package/dist/chunk-ZVOYOZFT.mjs +0 -60
- package/dist/chunk-ZVOYOZFT.mjs.map +0 -1
- package/dist/chunk-ZZD3HUNE.mjs +0 -13
- package/dist/chunk-ZZD3HUNE.mjs.map +0 -1
- package/dist/cronjob/CronjobController.js +0 -43
- package/dist/cronjob/CronjobController.js.map +0 -1
- package/dist/cronjob/index.js +0 -43
- package/dist/cronjob/index.js.map +0 -1
- package/dist/fsm.js +0 -10
- package/dist/fsm.js.map +0 -1
- package/dist/index.js +0 -125
- package/dist/index.js.map +0 -1
- package/dist/insights/SnapInsightsController.js +0 -25
- package/dist/insights/SnapInsightsController.js.map +0 -1
- package/dist/insights/index.js +0 -26
- package/dist/insights/index.js.map +0 -1
- package/dist/interface/SnapInterfaceController.js +0 -9
- package/dist/interface/SnapInterfaceController.js.map +0 -1
- package/dist/interface/index.js +0 -10
- package/dist/interface/index.js.map +0 -1
- package/dist/interface/utils.js +0 -14
- package/dist/interface/utils.js.map +0 -1
- package/dist/logging.js +0 -8
- package/dist/logging.js.map +0 -1
- package/dist/node.js +0 -135
- package/dist/node.js.map +0 -1
- package/dist/react-native.js +0 -132
- package/dist/react-native.js.map +0 -1
- package/dist/services/AbstractExecutionService.js +0 -13
- package/dist/services/AbstractExecutionService.js.map +0 -1
- package/dist/services/ExecutionService.js +0 -2
- package/dist/services/ExecutionService.js.map +0 -1
- package/dist/services/ProxyPostMessageStream.js +0 -8
- package/dist/services/ProxyPostMessageStream.js.map +0 -1
- package/dist/services/browser.js +0 -40
- package/dist/services/browser.js.map +0 -1
- package/dist/services/iframe/IframeExecutionService.js +0 -12
- package/dist/services/iframe/IframeExecutionService.js.map +0 -1
- package/dist/services/iframe/index.js +0 -13
- package/dist/services/iframe/index.js.map +0 -1
- package/dist/services/index.js +0 -35
- package/dist/services/index.js.map +0 -1
- package/dist/services/node-js/NodeProcessExecutionService.js +0 -22
- package/dist/services/node-js/NodeProcessExecutionService.js.map +0 -1
- package/dist/services/node-js/NodeThreadExecutionService.js +0 -22
- package/dist/services/node-js/NodeThreadExecutionService.js.map +0 -1
- package/dist/services/node-js/index.js +0 -27
- package/dist/services/node-js/index.js.map +0 -1
- package/dist/services/node.js +0 -45
- package/dist/services/node.js.map +0 -1
- package/dist/services/offscreen/OffscreenExecutionService.js +0 -14
- package/dist/services/offscreen/OffscreenExecutionService.js.map +0 -1
- package/dist/services/offscreen/index.js +0 -15
- package/dist/services/offscreen/index.js.map +0 -1
- package/dist/services/proxy/ProxyExecutionService.js +0 -13
- package/dist/services/proxy/ProxyExecutionService.js.map +0 -1
- package/dist/services/react-native.js +0 -42
- package/dist/services/react-native.js.map +0 -1
- package/dist/services/webview/WebViewExecutionService.js +0 -15
- package/dist/services/webview/WebViewExecutionService.js.map +0 -1
- package/dist/services/webview/WebViewMessageStream.js +0 -8
- package/dist/services/webview/WebViewMessageStream.js.map +0 -1
- package/dist/services/webview/index.js +0 -16
- package/dist/services/webview/index.js.map +0 -1
- package/dist/services/webworker/WebWorkerExecutionService.js +0 -15
- package/dist/services/webworker/WebWorkerExecutionService.js.map +0 -1
- package/dist/services/webworker/index.js +0 -16
- package/dist/services/webworker/index.js.map +0 -1
- package/dist/snaps/RequestQueue.js +0 -8
- package/dist/snaps/RequestQueue.js.map +0 -1
- package/dist/snaps/SnapController.js +0 -30
- package/dist/snaps/SnapController.js.map +0 -1
- package/dist/snaps/Timer.js +0 -8
- package/dist/snaps/Timer.js.map +0 -1
- package/dist/snaps/constants.js +0 -10
- package/dist/snaps/constants.js.map +0 -1
- package/dist/snaps/index.js +0 -63
- package/dist/snaps/index.js.map +0 -1
- package/dist/snaps/location/http.js +0 -8
- package/dist/snaps/location/http.js.map +0 -1
- package/dist/snaps/location/index.js +0 -31
- package/dist/snaps/location/index.js.map +0 -1
- package/dist/snaps/location/local.js +0 -9
- package/dist/snaps/location/local.js.map +0 -1
- package/dist/snaps/location/location.js +0 -11
- package/dist/snaps/location/location.js.map +0 -1
- package/dist/snaps/location/npm.js +0 -18
- package/dist/snaps/location/npm.js.map +0 -1
- package/dist/snaps/registry/index.js +0 -13
- package/dist/snaps/registry/index.js.map +0 -1
- package/dist/snaps/registry/json.js +0 -9
- package/dist/snaps/registry/json.js.map +0 -1
- package/dist/snaps/registry/registry.js +0 -8
- package/dist/snaps/registry/registry.js.map +0 -1
- package/dist/snaps/selectors.js +0 -8
- package/dist/snaps/selectors.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/dist/types/controllers.js +0 -2
- package/dist/types/controllers.js.map +0 -1
- package/dist/types/cronjob/index.d.ts +0 -1
- package/dist/types/encryptor.js +0 -2
- package/dist/types/encryptor.js.map +0 -1
- package/dist/types/index.d.ts +0 -7
- package/dist/types/index.js +0 -3
- package/dist/types/index.js.map +0 -1
- package/dist/types/insights/index.d.ts +0 -1
- package/dist/types/interface/index.d.ts +0 -1
- package/dist/types/node.d.ts +0 -2
- package/dist/types/react-native.d.ts +0 -2
- package/dist/types/services/browser.d.ts +0 -7
- package/dist/types/services/iframe/index.d.ts +0 -1
- package/dist/types/services/index.d.ts +0 -6
- package/dist/types/services/node-js/index.d.ts +0 -2
- package/dist/types/services/node.d.ts +0 -2
- package/dist/types/services/offscreen/index.d.ts +0 -1
- package/dist/types/services/react-native.d.ts +0 -2
- package/dist/types/services/webview/index.d.ts +0 -1
- package/dist/types/services/webworker/index.d.ts +0 -1
- package/dist/types/snaps/index.d.ts +0 -4
- package/dist/types/snaps/location/index.d.ts +0 -4
- package/dist/types/snaps/registry/index.d.ts +0 -2
- package/dist/types/snaps/selectors.d.ts +0 -2
- package/dist/types/types/index.d.ts +0 -2
- package/dist/types/vendor/global.d.js +0 -1
- package/dist/types/vendor/global.d.js.map +0 -1
- package/dist/types/vendor/global.d.mjs +0 -1
- package/dist/types/vendor/global.d.mjs.map +0 -1
- package/dist/types/vendor/readable-stream.d.js +0 -1
- package/dist/types/vendor/readable-stream.d.js.map +0 -1
- package/dist/types/vendor/readable-stream.d.mjs +0 -1
- package/dist/types/vendor/readable-stream.d.mjs.map +0 -1
- package/dist/types/vendor/zlib.d.js +0 -1
- package/dist/types/vendor/zlib.d.js.map +0 -1
- package/dist/types/vendor/zlib.d.mjs +0 -1
- package/dist/types/vendor/zlib.d.mjs.map +0 -1
- package/dist/utils.js +0 -23
- package/dist/utils.js.map +0 -1
package/dist/snaps/Timer.mjs
CHANGED
|
@@ -1,8 +1,99 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
1
|
+
import { assert } from "@metamask/utils";
|
|
2
|
+
export class Timer {
|
|
3
|
+
/**
|
|
4
|
+
* If `ms` is smaller or equal to zero (including -Infinity), the callback is added to the event loop and executed async immediately
|
|
5
|
+
* If `ms` is +Infinity the timer never finishes.
|
|
6
|
+
*
|
|
7
|
+
* @throws {@link TypeError}. If `ms` is NaN or negative.
|
|
8
|
+
* @param ms - The number of milliseconds before the callback is called after started.
|
|
9
|
+
*/
|
|
10
|
+
constructor(ms) {
|
|
11
|
+
assert(!Number.isNaN(ms), new TypeError("Can't start a timer with NaN time"));
|
|
12
|
+
assert(ms >= 0, new TypeError("Can't start a timer with negative time"));
|
|
13
|
+
this.state = { value: 'stopped', remaining: ms };
|
|
14
|
+
}
|
|
15
|
+
get status() {
|
|
16
|
+
return this.state.value;
|
|
17
|
+
}
|
|
18
|
+
get remaining() {
|
|
19
|
+
return this.state.remaining;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Cancels the currently running timer and marks it finished.
|
|
23
|
+
*
|
|
24
|
+
* @throws {@link Error}. If it wasn't running or paused.
|
|
25
|
+
*/
|
|
26
|
+
cancel() {
|
|
27
|
+
assert(this.status === 'paused' || this.status === 'running', new Error('Tried to cancel a not running Timer'));
|
|
28
|
+
this.onFinish(false);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Marks the timer as finished prematurely and triggers the callback.
|
|
32
|
+
*
|
|
33
|
+
* @throws {@link Error}. If it wasn't running or paused.
|
|
34
|
+
*/
|
|
35
|
+
finish() {
|
|
36
|
+
assert(this.status !== 'finished', new Error('Tried to finish a finished Timer.'));
|
|
37
|
+
this.onFinish(true);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Pauses a currently running timer, allowing it to resume later.
|
|
41
|
+
*
|
|
42
|
+
* @throws {@link Error}. If it wasn't running.
|
|
43
|
+
*/
|
|
44
|
+
pause() {
|
|
45
|
+
assert(this.state.value === 'running', new Error('Tried to pause a not running Timer'));
|
|
46
|
+
const { callback, start, timeout, remaining } = this.state;
|
|
47
|
+
timeout !== undefined && clearTimeout(timeout);
|
|
48
|
+
this.state = {
|
|
49
|
+
value: 'paused',
|
|
50
|
+
callback,
|
|
51
|
+
remaining: remaining - (Date.now() - start),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Starts the timer.
|
|
56
|
+
*
|
|
57
|
+
* @param callback - The function that will be called after the timer finishes.
|
|
58
|
+
* @throws {@link Error}. If it was already started.
|
|
59
|
+
*/
|
|
60
|
+
start(callback) {
|
|
61
|
+
assert(this.state.value === 'stopped', new Error('Tried to start an already running Timer'));
|
|
62
|
+
const { remaining } = this.state;
|
|
63
|
+
this.state = { value: 'paused', remaining, callback };
|
|
64
|
+
this.resume();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Resumes a currently paused timer.
|
|
68
|
+
*
|
|
69
|
+
* @throws {@link Error}. If it wasn't paused.
|
|
70
|
+
*/
|
|
71
|
+
resume() {
|
|
72
|
+
assert(this.state.value === 'paused', new Error('Tried to resume not paused Timer'));
|
|
73
|
+
const { remaining, callback } = this.state;
|
|
74
|
+
const start = Date.now();
|
|
75
|
+
let timeout;
|
|
76
|
+
// setTimeout returns immediately on +Infinity which we use
|
|
77
|
+
if (remaining !== Number.POSITIVE_INFINITY) {
|
|
78
|
+
timeout = setTimeout(() => this.onFinish(true), remaining);
|
|
79
|
+
}
|
|
80
|
+
this.state = { value: 'running', callback, remaining, start, timeout };
|
|
81
|
+
}
|
|
82
|
+
onFinish(shouldCall) {
|
|
83
|
+
assert(this.state.value === 'running' || this.state.value === 'paused');
|
|
84
|
+
if (this.state.value === 'running' && this.state.timeout !== undefined) {
|
|
85
|
+
clearTimeout(this.state.timeout);
|
|
86
|
+
}
|
|
87
|
+
const { callback, remaining } = this.state;
|
|
88
|
+
this.state = {
|
|
89
|
+
value: 'finished',
|
|
90
|
+
remaining: this.state.value === 'running'
|
|
91
|
+
? remaining - (Date.now() - this.state.start)
|
|
92
|
+
: remaining,
|
|
93
|
+
};
|
|
94
|
+
if (shouldCall) {
|
|
95
|
+
callback();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
8
99
|
//# sourceMappingURL=Timer.mjs.map
|
package/dist/snaps/Timer.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"
|
|
1
|
+
{"version":3,"file":"Timer.mjs","sourceRoot":"","sources":["../../src/snaps/Timer.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from '@metamask/utils';\n\nexport type TimerStatus = 'stopped' | 'paused' | 'running' | 'finished';\n\nexport class Timer {\n private state:\n | { value: 'stopped'; remaining: number }\n | {\n value: 'paused';\n remaining: number;\n callback: () => void;\n }\n | {\n value: 'running';\n remaining: number;\n callback: () => void;\n start: number;\n timeout?: unknown;\n }\n | { value: 'finished'; remaining: number };\n\n /**\n * If `ms` is smaller or equal to zero (including -Infinity), the callback is added to the event loop and executed async immediately\n * If `ms` is +Infinity the timer never finishes.\n *\n * @throws {@link TypeError}. If `ms` is NaN or negative.\n * @param ms - The number of milliseconds before the callback is called after started.\n */\n constructor(ms: number) {\n assert(\n !Number.isNaN(ms),\n new TypeError(\"Can't start a timer with NaN time\"),\n );\n assert(ms >= 0, new TypeError(\"Can't start a timer with negative time\"));\n this.state = { value: 'stopped', remaining: ms };\n }\n\n get status(): TimerStatus {\n return this.state.value;\n }\n\n get remaining(): number {\n return this.state.remaining;\n }\n\n /**\n * Cancels the currently running timer and marks it finished.\n *\n * @throws {@link Error}. If it wasn't running or paused.\n */\n cancel() {\n assert(\n this.status === 'paused' || this.status === 'running',\n new Error('Tried to cancel a not running Timer'),\n );\n this.onFinish(false);\n }\n\n /**\n * Marks the timer as finished prematurely and triggers the callback.\n *\n * @throws {@link Error}. If it wasn't running or paused.\n */\n finish() {\n assert(\n this.status !== 'finished',\n new Error('Tried to finish a finished Timer.'),\n );\n this.onFinish(true);\n }\n\n /**\n * Pauses a currently running timer, allowing it to resume later.\n *\n * @throws {@link Error}. If it wasn't running.\n */\n pause() {\n assert(\n this.state.value === 'running',\n new Error('Tried to pause a not running Timer'),\n );\n\n const { callback, start, timeout, remaining } = this.state;\n\n timeout !== undefined && clearTimeout(timeout as any);\n this.state = {\n value: 'paused',\n callback,\n remaining: remaining - (Date.now() - start),\n };\n }\n\n /**\n * Starts the timer.\n *\n * @param callback - The function that will be called after the timer finishes.\n * @throws {@link Error}. If it was already started.\n */\n start(callback: () => void) {\n assert(\n this.state.value === 'stopped',\n new Error('Tried to start an already running Timer'),\n );\n\n const { remaining } = this.state;\n this.state = { value: 'paused', remaining, callback };\n this.resume();\n }\n\n /**\n * Resumes a currently paused timer.\n *\n * @throws {@link Error}. If it wasn't paused.\n */\n resume() {\n assert(\n this.state.value === 'paused',\n new Error('Tried to resume not paused Timer'),\n );\n const { remaining, callback } = this.state;\n const start = Date.now();\n\n let timeout: unknown;\n // setTimeout returns immediately on +Infinity which we use\n if (remaining !== Number.POSITIVE_INFINITY) {\n timeout = setTimeout(() => this.onFinish(true), remaining);\n }\n\n this.state = { value: 'running', callback, remaining, start, timeout };\n }\n\n private onFinish(shouldCall: boolean) {\n assert(this.state.value === 'running' || this.state.value === 'paused');\n\n if (this.state.value === 'running' && this.state.timeout !== undefined) {\n clearTimeout(this.state.timeout as any);\n }\n\n const { callback, remaining } = this.state;\n this.state = {\n value: 'finished',\n remaining:\n this.state.value === 'running'\n ? remaining - (Date.now() - this.state.start)\n : remaining,\n };\n\n if (shouldCall) {\n callback();\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LEGACY_ENCRYPTION_KEY_DERIVATION_OPTIONS = exports.ALLOWED_PERMISSIONS = void 0;
|
|
4
|
+
const snaps_rpc_methods_1 = require("@metamask/snaps-rpc-methods");
|
|
5
|
+
// These permissions are allowed without being on the allowlist.
|
|
6
|
+
exports.ALLOWED_PERMISSIONS = Object.freeze([
|
|
7
|
+
'snap_dialog',
|
|
8
|
+
'snap_manageState',
|
|
9
|
+
'snap_notify',
|
|
10
|
+
'snap_getLocale',
|
|
11
|
+
snaps_rpc_methods_1.SnapEndowments.Cronjob,
|
|
12
|
+
snaps_rpc_methods_1.SnapEndowments.HomePage,
|
|
13
|
+
snaps_rpc_methods_1.SnapEndowments.LifecycleHooks,
|
|
14
|
+
snaps_rpc_methods_1.SnapEndowments.EthereumProvider,
|
|
15
|
+
snaps_rpc_methods_1.SnapEndowments.TransactionInsight,
|
|
16
|
+
snaps_rpc_methods_1.SnapEndowments.SignatureInsight,
|
|
17
|
+
]);
|
|
18
|
+
exports.LEGACY_ENCRYPTION_KEY_DERIVATION_OPTIONS = {
|
|
19
|
+
algorithm: 'PBKDF2',
|
|
20
|
+
params: {
|
|
21
|
+
iterations: 10000,
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=constants.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../../src/snaps/constants.ts"],"names":[],"mappings":";;;AAAA,mEAA6D;AAE7D,gEAAgE;AACnD,QAAA,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,aAAa;IACb,kBAAkB;IAClB,aAAa;IACb,gBAAgB;IAChB,kCAAc,CAAC,OAAO;IACtB,kCAAc,CAAC,QAAQ;IACvB,kCAAc,CAAC,cAAc;IAC7B,kCAAc,CAAC,gBAAgB;IAC/B,kCAAc,CAAC,kBAAkB;IACjC,kCAAc,CAAC,gBAAgB;CAChC,CAAC,CAAC;AAEU,QAAA,wCAAwC,GAAG;IACtD,SAAS,EAAE,QAAiB;IAC5B,MAAM,EAAE;QACN,UAAU,EAAE,KAAM;KACnB;CACF,CAAC","sourcesContent":["import { SnapEndowments } from '@metamask/snaps-rpc-methods';\n\n// These permissions are allowed without being on the allowlist.\nexport const ALLOWED_PERMISSIONS = Object.freeze([\n 'snap_dialog',\n 'snap_manageState',\n 'snap_notify',\n 'snap_getLocale',\n SnapEndowments.Cronjob,\n SnapEndowments.HomePage,\n SnapEndowments.LifecycleHooks,\n SnapEndowments.EthereumProvider,\n SnapEndowments.TransactionInsight,\n SnapEndowments.SignatureInsight,\n]);\n\nexport const LEGACY_ENCRYPTION_KEY_DERIVATION_OPTIONS = {\n algorithm: 'PBKDF2' as const,\n params: {\n iterations: 10_000,\n },\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../../src/snaps/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,mBAW9B,CAAC;AAEH,eAAO,MAAM,wCAAwC;;;;;CAKpD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../src/snaps/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,mBAW9B,CAAC;AAEH,eAAO,MAAM,wCAAwC;;;;;CAKpD,CAAC"}
|
package/dist/snaps/constants.mjs
CHANGED
|
@@ -1,10 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { SnapEndowments } from "@metamask/snaps-rpc-methods";
|
|
2
|
+
// These permissions are allowed without being on the allowlist.
|
|
3
|
+
export const ALLOWED_PERMISSIONS = Object.freeze([
|
|
4
|
+
'snap_dialog',
|
|
5
|
+
'snap_manageState',
|
|
6
|
+
'snap_notify',
|
|
7
|
+
'snap_getLocale',
|
|
8
|
+
SnapEndowments.Cronjob,
|
|
9
|
+
SnapEndowments.HomePage,
|
|
10
|
+
SnapEndowments.LifecycleHooks,
|
|
11
|
+
SnapEndowments.EthereumProvider,
|
|
12
|
+
SnapEndowments.TransactionInsight,
|
|
13
|
+
SnapEndowments.SignatureInsight,
|
|
14
|
+
]);
|
|
15
|
+
export const LEGACY_ENCRYPTION_KEY_DERIVATION_OPTIONS = {
|
|
16
|
+
algorithm: 'PBKDF2',
|
|
17
|
+
params: {
|
|
18
|
+
iterations: 10000,
|
|
19
|
+
},
|
|
9
20
|
};
|
|
10
21
|
//# sourceMappingURL=constants.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"
|
|
1
|
+
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../src/snaps/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,oCAAoC;AAE7D,gEAAgE;AAChE,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/C,aAAa;IACb,kBAAkB;IAClB,aAAa;IACb,gBAAgB;IAChB,cAAc,CAAC,OAAO;IACtB,cAAc,CAAC,QAAQ;IACvB,cAAc,CAAC,cAAc;IAC7B,cAAc,CAAC,gBAAgB;IAC/B,cAAc,CAAC,kBAAkB;IACjC,cAAc,CAAC,gBAAgB;CAChC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wCAAwC,GAAG;IACtD,SAAS,EAAE,QAAiB;IAC5B,MAAM,EAAE;QACN,UAAU,EAAE,KAAM;KACnB;CACF,CAAC","sourcesContent":["import { SnapEndowments } from '@metamask/snaps-rpc-methods';\n\n// These permissions are allowed without being on the allowlist.\nexport const ALLOWED_PERMISSIONS = Object.freeze([\n 'snap_dialog',\n 'snap_manageState',\n 'snap_notify',\n 'snap_getLocale',\n SnapEndowments.Cronjob,\n SnapEndowments.HomePage,\n SnapEndowments.LifecycleHooks,\n SnapEndowments.EthereumProvider,\n SnapEndowments.TransactionInsight,\n SnapEndowments.SignatureInsight,\n]);\n\nexport const LEGACY_ENCRYPTION_KEY_DERIVATION_OPTIONS = {\n algorithm: 'PBKDF2' as const,\n params: {\n iterations: 10_000,\n },\n};\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./location/index.cjs"), exports);
|
|
18
|
+
__exportStar(require("./SnapController.cjs"), exports);
|
|
19
|
+
__exportStar(require("./selectors.cjs"), exports);
|
|
20
|
+
__exportStar(require("./registry/index.cjs"), exports);
|
|
21
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/snaps/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAA2B;AAC3B,uDAAiC;AACjC,kDAA4B;AAC5B,uDAA2B","sourcesContent":["export * from './location';\nexport * from './SnapController';\nexport * from './selectors';\nexport * from './registry';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/snaps/index.ts"],"names":[],"mappings":"AAAA,qCAA2B;AAC3B,qCAAiC;AACjC,gCAA4B;AAC5B,qCAA2B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/snaps/index.ts"],"names":[],"mappings":"AAAA,qCAA2B;AAC3B,qCAAiC;AACjC,gCAA4B;AAC5B,qCAA2B"}
|
package/dist/snaps/index.mjs
CHANGED
|
@@ -1,63 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
SNAP_APPROVAL_INSTALL,
|
|
7
|
-
SNAP_APPROVAL_RESULT,
|
|
8
|
-
SNAP_APPROVAL_UPDATE,
|
|
9
|
-
SnapController,
|
|
10
|
-
controllerName
|
|
11
|
-
} from "../chunk-QWN3UOMA.mjs";
|
|
12
|
-
import "../chunk-QL3QGUTM.mjs";
|
|
13
|
-
import {
|
|
14
|
-
detectSnapLocation
|
|
15
|
-
} from "../chunk-ZKG6FRKN.mjs";
|
|
16
|
-
import {
|
|
17
|
-
LocalLocation
|
|
18
|
-
} from "../chunk-UM4NFNEI.mjs";
|
|
19
|
-
import {
|
|
20
|
-
HttpLocation
|
|
21
|
-
} from "../chunk-2SRKMEUV.mjs";
|
|
22
|
-
import {
|
|
23
|
-
BaseNpmLocation,
|
|
24
|
-
DEFAULT_NPM_REGISTRY,
|
|
25
|
-
NpmLocation,
|
|
26
|
-
TARBALL_SIZE_SAFETY_LIMIT,
|
|
27
|
-
fetchNpmMetadata,
|
|
28
|
-
getNpmCanonicalBasePath
|
|
29
|
-
} from "../chunk-BAUQWPSP.mjs";
|
|
30
|
-
import "../chunk-HWJE3SDW.mjs";
|
|
31
|
-
import {
|
|
32
|
-
JsonSnapsRegistry
|
|
33
|
-
} from "../chunk-I5V56NYO.mjs";
|
|
34
|
-
import {
|
|
35
|
-
SnapsRegistryStatus
|
|
36
|
-
} from "../chunk-ZZD3HUNE.mjs";
|
|
37
|
-
import "../chunk-NC5PBDKD.mjs";
|
|
38
|
-
import "../chunk-4M2FX2AT.mjs";
|
|
39
|
-
import "../chunk-6EZSNS4O.mjs";
|
|
40
|
-
import "../chunk-4HVWEABQ.mjs";
|
|
41
|
-
import "../chunk-KRI4OKC3.mjs";
|
|
42
|
-
import "../chunk-XO7KDFBY.mjs";
|
|
43
|
-
import "../chunk-YRZVIDCF.mjs";
|
|
44
|
-
export {
|
|
45
|
-
BaseNpmLocation,
|
|
46
|
-
DEFAULT_NPM_REGISTRY,
|
|
47
|
-
HttpLocation,
|
|
48
|
-
JsonSnapsRegistry,
|
|
49
|
-
LocalLocation,
|
|
50
|
-
NpmLocation,
|
|
51
|
-
SNAP_APPROVAL_INSTALL,
|
|
52
|
-
SNAP_APPROVAL_RESULT,
|
|
53
|
-
SNAP_APPROVAL_UPDATE,
|
|
54
|
-
SnapController,
|
|
55
|
-
SnapsRegistryStatus,
|
|
56
|
-
TARBALL_SIZE_SAFETY_LIMIT,
|
|
57
|
-
controllerName,
|
|
58
|
-
detectSnapLocation,
|
|
59
|
-
fetchNpmMetadata,
|
|
60
|
-
getNpmCanonicalBasePath,
|
|
61
|
-
getRunnableSnaps
|
|
62
|
-
};
|
|
1
|
+
export * from "./location/index.mjs";
|
|
2
|
+
export * from "./SnapController.mjs";
|
|
3
|
+
export * from "./selectors.mjs";
|
|
4
|
+
export * from "./registry/index.mjs";
|
|
63
5
|
//# sourceMappingURL=index.mjs.map
|
package/dist/snaps/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/snaps/index.ts"],"names":[],"mappings":"AAAA,qCAA2B;AAC3B,qCAAiC;AACjC,gCAA4B;AAC5B,qCAA2B","sourcesContent":["export * from './location';\nexport * from './SnapController';\nexport * from './selectors';\nexport * from './registry';\n"]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpLocation = void 0;
|
|
4
|
+
const snaps_utils_1 = require("@metamask/snaps-utils");
|
|
5
|
+
const utils_1 = require("@metamask/utils");
|
|
6
|
+
class HttpLocation {
|
|
7
|
+
constructor(url, opts = {}) {
|
|
8
|
+
// We keep contents separate because then we can use only one Blob in cache,
|
|
9
|
+
// which we convert to Uint8Array when actually returning the file.
|
|
10
|
+
//
|
|
11
|
+
// That avoids deepCloning file contents.
|
|
12
|
+
// I imagine ArrayBuffers are copy-on-write optimized, meaning
|
|
13
|
+
// in most often case we'll only have one file contents in common case.
|
|
14
|
+
this.cache = new Map();
|
|
15
|
+
(0, utils_1.assertStruct)(url.toString(), snaps_utils_1.HttpSnapIdStruct, 'Invalid Snap Id: ');
|
|
16
|
+
this.fetchFn = opts.fetch ?? globalThis.fetch.bind(undefined);
|
|
17
|
+
this.fetchOptions = opts.fetchOptions;
|
|
18
|
+
this.url = url;
|
|
19
|
+
}
|
|
20
|
+
async manifest() {
|
|
21
|
+
if (this.validatedManifest) {
|
|
22
|
+
return this.validatedManifest.clone();
|
|
23
|
+
}
|
|
24
|
+
// jest-fetch-mock doesn't handle new URL(), we need to convert .toString()
|
|
25
|
+
const canonicalPath = new URL(snaps_utils_1.NpmSnapFileNames.Manifest, this.url).toString();
|
|
26
|
+
const response = await this.fetchFn(canonicalPath, this.fetchOptions);
|
|
27
|
+
if (!response.ok) {
|
|
28
|
+
throw new Error(`Failed to fetch "${canonicalPath}". Status code: ${response.status}.`);
|
|
29
|
+
}
|
|
30
|
+
const contents = await response.text();
|
|
31
|
+
const manifest = (0, snaps_utils_1.parseJson)(contents);
|
|
32
|
+
const vfile = new snaps_utils_1.VirtualFile({
|
|
33
|
+
value: contents,
|
|
34
|
+
result: (0, snaps_utils_1.createSnapManifest)(manifest),
|
|
35
|
+
path: snaps_utils_1.NpmSnapFileNames.Manifest,
|
|
36
|
+
data: { canonicalPath },
|
|
37
|
+
});
|
|
38
|
+
this.validatedManifest = vfile;
|
|
39
|
+
return this.manifest();
|
|
40
|
+
}
|
|
41
|
+
async fetch(path) {
|
|
42
|
+
const relativePath = (0, snaps_utils_1.normalizeRelative)(path);
|
|
43
|
+
const cached = this.cache.get(relativePath);
|
|
44
|
+
if (cached !== undefined) {
|
|
45
|
+
const { file, contents } = cached;
|
|
46
|
+
const value = new Uint8Array(await contents.arrayBuffer());
|
|
47
|
+
const vfile = file.clone();
|
|
48
|
+
vfile.value = value;
|
|
49
|
+
return vfile;
|
|
50
|
+
}
|
|
51
|
+
const canonicalPath = this.toCanonical(relativePath).toString();
|
|
52
|
+
const response = await this.fetchFn(canonicalPath, this.fetchOptions);
|
|
53
|
+
if (!response.ok) {
|
|
54
|
+
throw new Error(`Failed to fetch "${canonicalPath}". Status code: ${response.status}.`);
|
|
55
|
+
}
|
|
56
|
+
const vfile = new snaps_utils_1.VirtualFile({
|
|
57
|
+
value: '',
|
|
58
|
+
path: relativePath,
|
|
59
|
+
data: { canonicalPath },
|
|
60
|
+
});
|
|
61
|
+
const blob = await response.blob();
|
|
62
|
+
(0, utils_1.assert)(!this.cache.has(relativePath), 'Corrupted cache, multiple files with same path.');
|
|
63
|
+
this.cache.set(relativePath, { file: vfile, contents: blob });
|
|
64
|
+
return this.fetch(relativePath);
|
|
65
|
+
}
|
|
66
|
+
get root() {
|
|
67
|
+
return new URL(this.url);
|
|
68
|
+
}
|
|
69
|
+
toCanonical(path) {
|
|
70
|
+
(0, utils_1.assert)(!path.startsWith('/'), 'Tried to parse absolute path.');
|
|
71
|
+
return new URL(path, this.url);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.HttpLocation = HttpLocation;
|
|
75
|
+
//# sourceMappingURL=http.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.cjs","sourceRoot":"","sources":["../../../src/snaps/location/http.ts"],"names":[],"mappings":"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","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(undefined);\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"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { SnapManifest } from
|
|
2
|
-
import { VirtualFile } from
|
|
3
|
-
import type { SnapLocation } from
|
|
1
|
+
import type { SnapManifest } from "@metamask/snaps-utils";
|
|
2
|
+
import { VirtualFile } from "@metamask/snaps-utils";
|
|
3
|
+
import type { SnapLocation } from "./location.cjs";
|
|
4
4
|
export interface HttpOptions {
|
|
5
5
|
/**
|
|
6
6
|
* @default fetch
|
|
@@ -20,3 +20,4 @@ export declare class HttpLocation implements SnapLocation {
|
|
|
20
20
|
get root(): URL;
|
|
21
21
|
private toCanonical;
|
|
22
22
|
}
|
|
23
|
+
//# sourceMappingURL=http.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.cts","sourceRoot":"","sources":["../../../src/snaps/location/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B;AAC1D,OAAO,EACL,WAAW,EAMZ,8BAA8B;AAG/B,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAmB;AAE/C,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,YAAY,CAAC,EAAE,WAAW,CAAC;CAC5B;AAED,qBAAa,YAAa,YAAW,YAAY;IAO/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAGlB;IAEJ,OAAO,CAAC,iBAAiB,CAAC,CAA4B;IAEtD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAE1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IAEvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAc;gBAEhC,GAAG,EAAE,GAAG,EAAE,IAAI,GAAE,WAAgB;IAOtC,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IA8B9C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiC/C,IAAI,IAAI,IAAI,GAAG,CAEd;IAED,OAAO,CAAC,WAAW;CAIpB"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { SnapManifest } from "@metamask/snaps-utils";
|
|
2
|
+
import { VirtualFile } from "@metamask/snaps-utils";
|
|
3
|
+
import type { SnapLocation } from "./location.mjs";
|
|
4
|
+
export interface HttpOptions {
|
|
5
|
+
/**
|
|
6
|
+
* @default fetch
|
|
7
|
+
*/
|
|
8
|
+
fetch?: typeof fetch;
|
|
9
|
+
fetchOptions?: RequestInit;
|
|
10
|
+
}
|
|
11
|
+
export declare class HttpLocation implements SnapLocation {
|
|
12
|
+
private readonly cache;
|
|
13
|
+
private validatedManifest?;
|
|
14
|
+
private readonly url;
|
|
15
|
+
private readonly fetchFn;
|
|
16
|
+
private readonly fetchOptions?;
|
|
17
|
+
constructor(url: URL, opts?: HttpOptions);
|
|
18
|
+
manifest(): Promise<VirtualFile<SnapManifest>>;
|
|
19
|
+
fetch(path: string): Promise<VirtualFile>;
|
|
20
|
+
get root(): URL;
|
|
21
|
+
private toCanonical;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=http.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.mts","sourceRoot":"","sources":["../../../src/snaps/location/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,8BAA8B;AAC1D,OAAO,EACL,WAAW,EAMZ,8BAA8B;AAG/B,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAmB;AAE/C,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,YAAY,CAAC,EAAE,WAAW,CAAC;CAC5B;AAED,qBAAa,YAAa,YAAW,YAAY;IAO/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAGlB;IAEJ,OAAO,CAAC,iBAAiB,CAAC,CAA4B;IAEtD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAE1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IAEvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAc;gBAEhC,GAAG,EAAE,GAAG,EAAE,IAAI,GAAE,WAAgB;IAOtC,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IA8B9C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAiC/C,IAAI,IAAI,IAAI,GAAG,CAEd;IAED,OAAO,CAAC,WAAW;CAIpB"}
|
|
@@ -1,8 +1,71 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { VirtualFile, HttpSnapIdStruct, NpmSnapFileNames, createSnapManifest, normalizeRelative, parseJson } from "@metamask/snaps-utils";
|
|
2
|
+
import { assert, assertStruct } from "@metamask/utils";
|
|
3
|
+
export class HttpLocation {
|
|
4
|
+
constructor(url, opts = {}) {
|
|
5
|
+
// We keep contents separate because then we can use only one Blob in cache,
|
|
6
|
+
// which we convert to Uint8Array when actually returning the file.
|
|
7
|
+
//
|
|
8
|
+
// That avoids deepCloning file contents.
|
|
9
|
+
// I imagine ArrayBuffers are copy-on-write optimized, meaning
|
|
10
|
+
// in most often case we'll only have one file contents in common case.
|
|
11
|
+
this.cache = new Map();
|
|
12
|
+
assertStruct(url.toString(), HttpSnapIdStruct, 'Invalid Snap Id: ');
|
|
13
|
+
this.fetchFn = opts.fetch ?? globalThis.fetch.bind(undefined);
|
|
14
|
+
this.fetchOptions = opts.fetchOptions;
|
|
15
|
+
this.url = url;
|
|
16
|
+
}
|
|
17
|
+
async manifest() {
|
|
18
|
+
if (this.validatedManifest) {
|
|
19
|
+
return this.validatedManifest.clone();
|
|
20
|
+
}
|
|
21
|
+
// jest-fetch-mock doesn't handle new URL(), we need to convert .toString()
|
|
22
|
+
const canonicalPath = new URL(NpmSnapFileNames.Manifest, this.url).toString();
|
|
23
|
+
const response = await this.fetchFn(canonicalPath, this.fetchOptions);
|
|
24
|
+
if (!response.ok) {
|
|
25
|
+
throw new Error(`Failed to fetch "${canonicalPath}". Status code: ${response.status}.`);
|
|
26
|
+
}
|
|
27
|
+
const contents = await response.text();
|
|
28
|
+
const manifest = parseJson(contents);
|
|
29
|
+
const vfile = new VirtualFile({
|
|
30
|
+
value: contents,
|
|
31
|
+
result: createSnapManifest(manifest),
|
|
32
|
+
path: NpmSnapFileNames.Manifest,
|
|
33
|
+
data: { canonicalPath },
|
|
34
|
+
});
|
|
35
|
+
this.validatedManifest = vfile;
|
|
36
|
+
return this.manifest();
|
|
37
|
+
}
|
|
38
|
+
async fetch(path) {
|
|
39
|
+
const relativePath = normalizeRelative(path);
|
|
40
|
+
const cached = this.cache.get(relativePath);
|
|
41
|
+
if (cached !== undefined) {
|
|
42
|
+
const { file, contents } = cached;
|
|
43
|
+
const value = new Uint8Array(await contents.arrayBuffer());
|
|
44
|
+
const vfile = file.clone();
|
|
45
|
+
vfile.value = value;
|
|
46
|
+
return vfile;
|
|
47
|
+
}
|
|
48
|
+
const canonicalPath = this.toCanonical(relativePath).toString();
|
|
49
|
+
const response = await this.fetchFn(canonicalPath, this.fetchOptions);
|
|
50
|
+
if (!response.ok) {
|
|
51
|
+
throw new Error(`Failed to fetch "${canonicalPath}". Status code: ${response.status}.`);
|
|
52
|
+
}
|
|
53
|
+
const vfile = new VirtualFile({
|
|
54
|
+
value: '',
|
|
55
|
+
path: relativePath,
|
|
56
|
+
data: { canonicalPath },
|
|
57
|
+
});
|
|
58
|
+
const blob = await response.blob();
|
|
59
|
+
assert(!this.cache.has(relativePath), 'Corrupted cache, multiple files with same path.');
|
|
60
|
+
this.cache.set(relativePath, { file: vfile, contents: blob });
|
|
61
|
+
return this.fetch(relativePath);
|
|
62
|
+
}
|
|
63
|
+
get root() {
|
|
64
|
+
return new URL(this.url);
|
|
65
|
+
}
|
|
66
|
+
toCanonical(path) {
|
|
67
|
+
assert(!path.startsWith('/'), 'Tried to parse absolute path.');
|
|
68
|
+
return new URL(path, this.url);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
8
71
|
//# sourceMappingURL=http.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"
|
|
1
|
+
{"version":3,"file":"http.mjs","sourceRoot":"","sources":["../../../src/snaps/location/http.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,SAAS,EACV,8BAA8B;AAC/B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,wBAAwB;AAYvD,MAAM,OAAO,YAAY;IAoBvB,YAAY,GAAQ,EAAE,OAAoB,EAAE;QAnB5C,4EAA4E;QAC5E,mEAAmE;QACnE,EAAE;QACF,yCAAyC;QACzC,8DAA8D;QAC9D,uEAAuE;QACtD,UAAK,GAAG,IAAI,GAAG,EAG7B,CAAC;QAWF,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QACxC,CAAC;QAED,2EAA2E;QAC3E,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,gBAAgB,CAAC,QAAQ,EACzB,IAAI,CAAC,GAAG,CACT,CAAC,QAAQ,EAAE,CAAC;QAEb,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,oBAAoB,aAAa,mBAAmB,QAAQ,CAAC,MAAM,GAAG,CACvE,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAe;YAC1C,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC;YACpC,IAAI,EAAE,gBAAgB,CAAC,QAAQ;YAC/B,IAAI,EAAE,EAAE,aAAa,EAAE;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAE/B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,oBAAoB,aAAa,mBAAmB,QAAQ,CAAC,MAAM,GAAG,CACvE,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC;YAC5B,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,EAAE,aAAa,EAAE;SACxB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,CACJ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAC7B,iDAAiD,CAClD,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9D,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEO,WAAW,CAAC,IAAY;QAC9B,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,+BAA+B,CAAC,CAAC;QAC/D,OAAO,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;CACF","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(undefined);\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,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./location.cjs"), exports);
|
|
18
|
+
__exportStar(require("./npm.cjs"), exports);
|
|
19
|
+
__exportStar(require("./local.cjs"), exports);
|
|
20
|
+
__exportStar(require("./http.cjs"), exports);
|
|
21
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../../src/snaps/location/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA2B;AAC3B,4CAAsB;AACtB,8CAAwB;AACxB,6CAAuB","sourcesContent":["export * from './location';\nexport * from './npm';\nexport * from './local';\nexport * from './http';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/snaps/location/index.ts"],"names":[],"mappings":"AAAA,+BAA2B;AAC3B,0BAAsB;AACtB,4BAAwB;AACxB,2BAAuB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../src/snaps/location/index.ts"],"names":[],"mappings":"AAAA,+BAA2B;AAC3B,0BAAsB;AACtB,4BAAwB;AACxB,2BAAuB"}
|