@metamask/snaps-execution-environments 4.0.1 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -1
- package/dist/browserify/iframe/bundle.js +4 -4
- package/dist/browserify/node-process/bundle.js +3 -3
- package/dist/browserify/node-thread/bundle.js +3 -3
- package/dist/browserify/webview/bundle.js +4 -4
- package/dist/browserify/worker-executor/bundle.js +4 -4
- package/dist/browserify/worker-pool/bundle.js +4 -4
- package/dist/chunk-2VA6RAEE.js +30 -0
- package/dist/chunk-2VA6RAEE.js.map +1 -0
- package/dist/chunk-3JCT4MWT.js +108 -0
- package/dist/chunk-3JCT4MWT.js.map +1 -0
- package/dist/chunk-3Y4ZRKNE.js +33 -0
- package/dist/chunk-3Y4ZRKNE.js.map +1 -0
- package/dist/chunk-44XYIN4N.js +86 -0
- package/dist/chunk-44XYIN4N.js.map +1 -0
- package/dist/chunk-4CGJF3BT.mjs +262 -0
- package/dist/chunk-4CGJF3BT.mjs.map +1 -0
- package/dist/chunk-4XRZLEKU.js +49 -0
- package/dist/chunk-4XRZLEKU.js.map +1 -0
- package/dist/chunk-53ZULHPK.mjs +16 -0
- package/dist/chunk-53ZULHPK.mjs.map +1 -0
- package/dist/chunk-5DEV3QQU.mjs +12 -0
- package/dist/chunk-5DEV3QQU.mjs.map +1 -0
- package/dist/chunk-5FG5IBYT.mjs +33 -0
- package/dist/chunk-5FG5IBYT.mjs.map +1 -0
- package/dist/chunk-5STN3QCA.js +183 -0
- package/dist/chunk-5STN3QCA.js.map +1 -0
- package/dist/chunk-7AJWXSDQ.mjs +73 -0
- package/dist/chunk-7AJWXSDQ.mjs.map +1 -0
- package/dist/chunk-ACK2JBSO.mjs +49 -0
- package/dist/chunk-ACK2JBSO.mjs.map +1 -0
- package/dist/chunk-B3JZNNZD.js +48 -0
- package/dist/chunk-B3JZNNZD.js.map +1 -0
- package/dist/chunk-BCBKEUCG.mjs +38 -0
- package/dist/chunk-BCBKEUCG.mjs.map +1 -0
- package/dist/chunk-BTEAZZKP.mjs +24 -0
- package/dist/chunk-BTEAZZKP.mjs.map +1 -0
- package/dist/chunk-CV5LC4PP.js +24 -0
- package/dist/chunk-CV5LC4PP.js.map +1 -0
- package/dist/chunk-CWCVTRNZ.mjs +48 -0
- package/dist/chunk-CWCVTRNZ.mjs.map +1 -0
- package/dist/chunk-CWIFVPLR.js +262 -0
- package/dist/chunk-CWIFVPLR.js.map +1 -0
- package/dist/chunk-DFPM46ZF.js +147 -0
- package/dist/chunk-DFPM46ZF.js.map +1 -0
- package/dist/chunk-DLLLH5HN.js +26 -0
- package/dist/chunk-DLLLH5HN.js.map +1 -0
- package/dist/chunk-DTF6YTIS.js +484 -0
- package/dist/chunk-DTF6YTIS.js.map +1 -0
- package/dist/chunk-ERB7OLAB.mjs +86 -0
- package/dist/chunk-ERB7OLAB.mjs.map +1 -0
- package/dist/chunk-EXN2TFDJ.js +38 -0
- package/dist/chunk-EXN2TFDJ.js.map +1 -0
- package/dist/chunk-F37LPBJS.js +33 -0
- package/dist/chunk-F37LPBJS.js.map +1 -0
- package/dist/chunk-FOEAIF5U.js +16 -0
- package/dist/chunk-FOEAIF5U.js.map +1 -0
- package/dist/chunk-HGLRZZ56.js +32 -0
- package/dist/chunk-HGLRZZ56.js.map +1 -0
- package/dist/chunk-HKHW6TTX.js +49 -0
- package/dist/chunk-HKHW6TTX.js.map +1 -0
- package/dist/chunk-HWS4QSOC.mjs +16 -0
- package/dist/chunk-HWS4QSOC.mjs.map +1 -0
- package/dist/chunk-I5G4YFHM.js +73 -0
- package/dist/chunk-I5G4YFHM.js.map +1 -0
- package/dist/chunk-IX5S3V47.mjs +26 -0
- package/dist/chunk-IX5S3V47.mjs.map +1 -0
- package/dist/chunk-JW3JHJ7S.js +45 -0
- package/dist/chunk-JW3JHJ7S.js.map +1 -0
- package/dist/chunk-LO5ORVRC.js +16 -0
- package/dist/chunk-LO5ORVRC.js.map +1 -0
- package/dist/chunk-MCXWFCGV.js +1 -0
- package/dist/chunk-MCXWFCGV.js.map +1 -0
- package/dist/chunk-MIWGLICQ.mjs +108 -0
- package/dist/chunk-MIWGLICQ.mjs.map +1 -0
- package/dist/chunk-MM6ZSW4E.mjs +81 -0
- package/dist/chunk-MM6ZSW4E.mjs.map +1 -0
- package/dist/chunk-MOXNHXPG.js +67 -0
- package/dist/chunk-MOXNHXPG.js.map +1 -0
- package/dist/chunk-MS2LQQYH.js +38 -0
- package/dist/chunk-MS2LQQYH.js.map +1 -0
- package/dist/chunk-MXNMMTJW.mjs +51 -0
- package/dist/chunk-MXNMMTJW.mjs.map +1 -0
- package/dist/chunk-OBT45IWW.js +92 -0
- package/dist/chunk-OBT45IWW.js.map +1 -0
- package/dist/chunk-OCNPLHS2.js +51 -0
- package/dist/chunk-OCNPLHS2.js.map +1 -0
- package/dist/chunk-OLASO3O4.js +81 -0
- package/dist/chunk-OLASO3O4.js.map +1 -0
- package/dist/chunk-PTCQ2I47.mjs +147 -0
- package/dist/chunk-PTCQ2I47.mjs.map +1 -0
- package/dist/chunk-Q42NNJFY.mjs +32 -0
- package/dist/chunk-Q42NNJFY.mjs.map +1 -0
- package/dist/chunk-QJB4J7WL.mjs +67 -0
- package/dist/chunk-QJB4J7WL.mjs.map +1 -0
- package/dist/chunk-QVIHE3WB.mjs +484 -0
- package/dist/chunk-QVIHE3WB.mjs.map +1 -0
- package/dist/chunk-QZC2X6NG.js +44 -0
- package/dist/chunk-QZC2X6NG.js.map +1 -0
- package/dist/chunk-RZNKZRAD.js +40 -0
- package/dist/chunk-RZNKZRAD.js.map +1 -0
- package/dist/chunk-S7257EN3.mjs +49 -0
- package/dist/chunk-S7257EN3.mjs.map +1 -0
- package/dist/chunk-TSEAPB7L.mjs +1 -0
- package/dist/chunk-TSEAPB7L.mjs.map +1 -0
- package/dist/chunk-UOPIRTJX.mjs +44 -0
- package/dist/chunk-UOPIRTJX.mjs.map +1 -0
- package/dist/chunk-USHNZDGV.mjs +33 -0
- package/dist/chunk-USHNZDGV.mjs.map +1 -0
- package/dist/chunk-V76DI2XM.mjs +183 -0
- package/dist/chunk-V76DI2XM.mjs.map +1 -0
- package/dist/chunk-VKFZ4EB5.mjs +40 -0
- package/dist/chunk-VKFZ4EB5.mjs.map +1 -0
- package/dist/chunk-W7EDURT5.mjs +92 -0
- package/dist/chunk-W7EDURT5.mjs.map +1 -0
- package/dist/chunk-WV3CXIKN.mjs +147 -0
- package/dist/chunk-WV3CXIKN.mjs.map +1 -0
- package/dist/chunk-Y7MVNOPY.mjs +45 -0
- package/dist/chunk-Y7MVNOPY.mjs.map +1 -0
- package/dist/chunk-YRZVIDCF.mjs +38 -0
- package/dist/chunk-YRZVIDCF.mjs.map +1 -0
- package/dist/chunk-Z4WSS7YZ.js +147 -0
- package/dist/chunk-Z4WSS7YZ.js.map +1 -0
- package/dist/chunk-Z7BOREC4.js +12 -0
- package/dist/chunk-Z7BOREC4.js.map +1 -0
- package/dist/chunk-ZNTCZK7J.mjs +30 -0
- package/dist/chunk-ZNTCZK7J.mjs.map +1 -0
- package/dist/common/BaseSnapExecutor.js +26 -0
- package/dist/common/BaseSnapExecutor.js.map +1 -0
- package/dist/common/BaseSnapExecutor.mjs +26 -0
- package/dist/common/BaseSnapExecutor.mjs.map +1 -0
- package/dist/common/commands.js +11 -0
- package/dist/common/commands.js.map +1 -0
- package/dist/common/commands.mjs +11 -0
- package/dist/common/commands.mjs.map +1 -0
- package/dist/common/endowments/commonEndowmentFactory.js +20 -0
- package/dist/common/endowments/commonEndowmentFactory.js.map +1 -0
- package/dist/common/endowments/commonEndowmentFactory.mjs +20 -0
- package/dist/common/endowments/commonEndowmentFactory.mjs.map +1 -0
- package/dist/common/endowments/console.js +13 -0
- package/dist/common/endowments/console.js.map +1 -0
- package/dist/common/endowments/console.mjs +13 -0
- package/dist/common/endowments/console.mjs.map +1 -0
- package/dist/common/endowments/crypto.js +11 -0
- package/dist/common/endowments/crypto.js.map +1 -0
- package/dist/common/endowments/crypto.mjs +11 -0
- package/dist/common/endowments/crypto.mjs.map +1 -0
- package/dist/common/endowments/date.js +9 -0
- package/dist/common/endowments/date.js.map +1 -0
- package/dist/common/endowments/date.mjs +9 -0
- package/dist/common/endowments/date.mjs.map +1 -0
- package/dist/common/endowments/index.js +21 -0
- package/dist/common/endowments/index.js.map +1 -0
- package/dist/common/endowments/index.mjs +21 -0
- package/dist/common/endowments/index.mjs.map +1 -0
- package/dist/common/endowments/interval.js +8 -0
- package/dist/common/endowments/interval.js.map +1 -0
- package/dist/common/endowments/interval.mjs +8 -0
- package/dist/common/endowments/interval.mjs.map +1 -0
- package/dist/common/endowments/math.js +10 -0
- package/dist/common/endowments/math.js.map +1 -0
- package/dist/common/endowments/math.mjs +10 -0
- package/dist/common/endowments/math.mjs.map +1 -0
- package/dist/common/endowments/network.js +10 -0
- package/dist/common/endowments/network.js.map +1 -0
- package/dist/common/endowments/network.mjs +10 -0
- package/dist/common/endowments/network.mjs.map +1 -0
- package/dist/common/endowments/textDecoder.js +8 -0
- package/dist/common/endowments/textDecoder.js.map +1 -0
- package/dist/common/endowments/textDecoder.mjs +8 -0
- package/dist/common/endowments/textDecoder.mjs.map +1 -0
- package/dist/common/endowments/textEncoder.js +8 -0
- package/dist/common/endowments/textEncoder.js.map +1 -0
- package/dist/common/endowments/textEncoder.mjs +8 -0
- package/dist/common/endowments/textEncoder.mjs.map +1 -0
- package/dist/common/endowments/timeout.js +8 -0
- package/dist/common/endowments/timeout.js.map +1 -0
- package/dist/common/endowments/timeout.mjs +8 -0
- package/dist/common/endowments/timeout.mjs.map +1 -0
- package/dist/common/globalEvents.js +11 -0
- package/dist/common/globalEvents.js.map +1 -0
- package/dist/common/globalEvents.mjs +11 -0
- package/dist/common/globalEvents.mjs.map +1 -0
- package/dist/common/globalObject.js +10 -0
- package/dist/common/globalObject.js.map +1 -0
- package/dist/common/globalObject.mjs +10 -0
- package/dist/common/globalObject.mjs.map +1 -0
- package/dist/common/lockdown/lockdown-events.js +8 -0
- package/dist/common/lockdown/lockdown-events.js.map +1 -0
- package/dist/common/lockdown/lockdown-events.mjs +8 -0
- package/dist/common/lockdown/lockdown-events.mjs.map +1 -0
- package/dist/common/lockdown/lockdown-more.js +8 -0
- package/dist/common/lockdown/lockdown-more.js.map +1 -0
- package/dist/common/lockdown/lockdown-more.mjs +8 -0
- package/dist/common/lockdown/lockdown-more.mjs.map +1 -0
- package/dist/common/lockdown/lockdown.js +22 -0
- package/dist/common/lockdown/lockdown.js.map +1 -0
- package/dist/common/lockdown/lockdown.mjs +22 -0
- package/dist/common/lockdown/lockdown.mjs.map +1 -0
- package/dist/common/sortParams.js +8 -0
- package/dist/common/sortParams.js.map +1 -0
- package/dist/common/sortParams.mjs +8 -0
- package/dist/common/sortParams.mjs.map +1 -0
- package/dist/common/utils.js +21 -0
- package/dist/common/utils.js.map +1 -0
- package/dist/common/utils.mjs +21 -0
- package/dist/common/utils.mjs.map +1 -0
- package/dist/common/validation.js +38 -0
- package/dist/common/validation.js.map +1 -0
- package/dist/common/validation.mjs +38 -0
- package/dist/common/validation.mjs.map +1 -0
- package/dist/globals.d.js +1 -0
- package/dist/globals.d.js.map +1 -0
- package/dist/globals.d.mjs +1 -0
- package/dist/globals.d.mjs.map +1 -0
- package/dist/iframe/IFrameSnapExecutor.js +27 -0
- package/dist/iframe/IFrameSnapExecutor.js.map +1 -0
- package/dist/iframe/IFrameSnapExecutor.mjs +27 -0
- package/dist/iframe/IFrameSnapExecutor.mjs.map +1 -0
- package/dist/iframe/index.js +35 -0
- package/dist/iframe/index.js.map +1 -0
- package/dist/iframe/index.mjs +35 -0
- package/dist/iframe/index.mjs.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +9 -0
- package/dist/index.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-process/ChildProcessSnapExecutor.js +27 -0
- package/dist/node-process/ChildProcessSnapExecutor.js.map +1 -0
- package/dist/node-process/ChildProcessSnapExecutor.mjs +27 -0
- package/dist/node-process/ChildProcessSnapExecutor.mjs.map +1 -0
- package/dist/node-process/index.js +31 -0
- package/dist/node-process/index.js.map +1 -0
- package/dist/node-process/index.mjs +31 -0
- package/dist/node-process/index.mjs.map +1 -0
- package/dist/node-thread/ThreadSnapExecutor.js +27 -0
- package/dist/node-thread/ThreadSnapExecutor.js.map +1 -0
- package/dist/node-thread/ThreadSnapExecutor.mjs +27 -0
- package/dist/node-thread/ThreadSnapExecutor.mjs.map +1 -0
- package/dist/node-thread/index.js +31 -0
- package/dist/node-thread/index.js.map +1 -0
- package/dist/node-thread/index.mjs +31 -0
- package/dist/node-thread/index.mjs.map +1 -0
- package/dist/proxy/ProxySnapExecutor.js +8 -0
- package/dist/proxy/ProxySnapExecutor.js.map +1 -0
- package/dist/proxy/ProxySnapExecutor.mjs +8 -0
- package/dist/proxy/ProxySnapExecutor.mjs.map +1 -0
- package/dist/proxy/index.js +9 -0
- package/dist/proxy/index.js.map +1 -0
- package/dist/proxy/index.mjs +9 -0
- package/dist/proxy/index.mjs.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/types/common/utils.d.ts +7 -0
- 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/webview/WebViewExecutorStream.js +8 -0
- package/dist/webview/WebViewExecutorStream.js.map +1 -0
- package/dist/webview/WebViewExecutorStream.mjs +8 -0
- package/dist/webview/WebViewExecutorStream.mjs.map +1 -0
- package/dist/webview/index.js +26 -0
- package/dist/webview/index.js.map +1 -0
- package/dist/webview/index.mjs +26 -0
- package/dist/webview/index.mjs.map +1 -0
- package/dist/webworker/executor/WebWorkerSnapExecutor.js +27 -0
- package/dist/webworker/executor/WebWorkerSnapExecutor.js.map +1 -0
- package/dist/webworker/executor/WebWorkerSnapExecutor.mjs +27 -0
- package/dist/webworker/executor/WebWorkerSnapExecutor.mjs.map +1 -0
- package/dist/webworker/executor/index.js +35 -0
- package/dist/webworker/executor/index.js.map +1 -0
- package/dist/webworker/executor/index.mjs +35 -0
- package/dist/webworker/executor/index.mjs.map +1 -0
- package/dist/webworker/pool/WebWorkerPool.js +8 -0
- package/dist/webworker/pool/WebWorkerPool.js.map +1 -0
- package/dist/webworker/pool/WebWorkerPool.mjs +8 -0
- package/dist/webworker/pool/WebWorkerPool.mjs.map +1 -0
- package/dist/webworker/pool/index.js +16 -0
- package/dist/webworker/pool/index.js.map +1 -0
- package/dist/webworker/pool/index.mjs +16 -0
- package/dist/webworker/pool/index.mjs.map +1 -0
- package/package.json +25 -18
- package/dist/cjs/common/BaseSnapExecutor.js +0 -496
- package/dist/cjs/common/BaseSnapExecutor.js.map +0 -1
- package/dist/cjs/common/commands.js +0 -102
- package/dist/cjs/common/commands.js.map +0 -1
- package/dist/cjs/common/endowments/commonEndowmentFactory.js +0 -147
- package/dist/cjs/common/endowments/commonEndowmentFactory.js.map +0 -1
- package/dist/cjs/common/endowments/console.js +0 -134
- package/dist/cjs/common/endowments/console.js.map +0 -1
- package/dist/cjs/common/endowments/crypto.js +0 -44
- package/dist/cjs/common/endowments/crypto.js.map +0 -1
- package/dist/cjs/common/endowments/date.js +0 -53
- package/dist/cjs/common/endowments/date.js.map +0 -1
- package/dist/cjs/common/endowments/index.js +0 -93
- package/dist/cjs/common/endowments/index.js.map +0 -1
- package/dist/cjs/common/endowments/interval.js +0 -62
- package/dist/cjs/common/endowments/interval.js.map +0 -1
- package/dist/cjs/common/endowments/math.js +0 -67
- package/dist/cjs/common/endowments/math.js.map +0 -1
- package/dist/cjs/common/endowments/network.js +0 -303
- package/dist/cjs/common/endowments/network.js.map +0 -1
- package/dist/cjs/common/endowments/textDecoder.js +0 -28
- package/dist/cjs/common/endowments/textDecoder.js.map +0 -1
- package/dist/cjs/common/endowments/textEncoder.js +0 -28
- package/dist/cjs/common/endowments/textEncoder.js.map +0 -1
- package/dist/cjs/common/endowments/timeout.js +0 -64
- package/dist/cjs/common/endowments/timeout.js.map +0 -1
- package/dist/cjs/common/globalEvents.js +0 -40
- package/dist/cjs/common/globalEvents.js.map +0 -1
- package/dist/cjs/common/globalObject.js +0 -53
- package/dist/cjs/common/globalObject.js.map +0 -1
- package/dist/cjs/common/lockdown/lockdown-events.js +0 -74
- package/dist/cjs/common/lockdown/lockdown-events.js.map +0 -1
- package/dist/cjs/common/lockdown/lockdown-more.js +0 -73
- package/dist/cjs/common/lockdown/lockdown-more.js.map +0 -1
- package/dist/cjs/common/lockdown/lockdown.js +0 -30
- package/dist/cjs/common/lockdown/lockdown.js.map +0 -1
- package/dist/cjs/common/sortParams.js +0 -26
- package/dist/cjs/common/sortParams.js.map +0 -1
- package/dist/cjs/common/utils.js +0 -128
- package/dist/cjs/common/utils.js.map +0 -1
- package/dist/cjs/common/validation.js +0 -149
- package/dist/cjs/common/validation.js.map +0 -1
- package/dist/cjs/iframe/IFrameSnapExecutor.js +0 -50
- package/dist/cjs/iframe/IFrameSnapExecutor.js.map +0 -1
- package/dist/cjs/iframe/index.js +0 -13
- package/dist/cjs/iframe/index.js.map +0 -1
- package/dist/cjs/index.js +0 -20
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/logging.js +0 -15
- package/dist/cjs/logging.js.map +0 -1
- package/dist/cjs/node-process/ChildProcessSnapExecutor.js +0 -39
- package/dist/cjs/node-process/ChildProcessSnapExecutor.js.map +0 -1
- package/dist/cjs/node-process/index.js +0 -11
- package/dist/cjs/node-process/index.js.map +0 -1
- package/dist/cjs/node-thread/ThreadSnapExecutor.js +0 -39
- package/dist/cjs/node-thread/ThreadSnapExecutor.js.map +0 -1
- package/dist/cjs/node-thread/index.js +0 -11
- package/dist/cjs/node-thread/index.js.map +0 -1
- package/dist/cjs/proxy/ProxySnapExecutor.js +0 -183
- package/dist/cjs/proxy/ProxySnapExecutor.js.map +0 -1
- package/dist/cjs/proxy/index.js +0 -20
- package/dist/cjs/proxy/index.js.map +0 -1
- package/dist/cjs/webview/WebViewExecutorStream.js +0 -121
- package/dist/cjs/webview/WebViewExecutorStream.js.map +0 -1
- package/dist/cjs/webview/index.js +0 -19
- package/dist/cjs/webview/index.js.map +0 -1
- package/dist/cjs/webworker/executor/WebWorkerSnapExecutor.js +0 -45
- package/dist/cjs/webworker/executor/WebWorkerSnapExecutor.js.map +0 -1
- package/dist/cjs/webworker/executor/index.js +0 -13
- package/dist/cjs/webworker/executor/index.js.map +0 -1
- package/dist/cjs/webworker/pool/WebWorkerPool.js +0 -248
- package/dist/cjs/webworker/pool/WebWorkerPool.js.map +0 -1
- package/dist/cjs/webworker/pool/index.js +0 -13
- package/dist/cjs/webworker/pool/index.js.map +0 -1
- package/dist/esm/common/BaseSnapExecutor.js +0 -486
- package/dist/esm/common/BaseSnapExecutor.js.map +0 -1
- package/dist/esm/common/commands.js +0 -101
- package/dist/esm/common/commands.js.map +0 -1
- package/dist/esm/common/endowments/commonEndowmentFactory.js +0 -132
- package/dist/esm/common/endowments/commonEndowmentFactory.js.map +0 -1
- package/dist/esm/common/endowments/console.js +0 -116
- package/dist/esm/common/endowments/console.js.map +0 -1
- package/dist/esm/common/endowments/crypto.js +0 -26
- package/dist/esm/common/endowments/crypto.js.map +0 -1
- package/dist/esm/common/endowments/date.js +0 -43
- package/dist/esm/common/endowments/date.js.map +0 -1
- package/dist/esm/common/endowments/index.js +0 -92
- package/dist/esm/common/endowments/index.js.map +0 -1
- package/dist/esm/common/endowments/interval.js +0 -52
- package/dist/esm/common/endowments/interval.js.map +0 -1
- package/dist/esm/common/endowments/math.js +0 -57
- package/dist/esm/common/endowments/math.js.map +0 -1
- package/dist/esm/common/endowments/network.js +0 -293
- package/dist/esm/common/endowments/network.js.map +0 -1
- package/dist/esm/common/endowments/textDecoder.js +0 -18
- package/dist/esm/common/endowments/textDecoder.js.map +0 -1
- package/dist/esm/common/endowments/textEncoder.js +0 -18
- package/dist/esm/common/endowments/textEncoder.js.map +0 -1
- package/dist/esm/common/endowments/timeout.js +0 -54
- package/dist/esm/common/endowments/timeout.js.map +0 -1
- package/dist/esm/common/globalEvents.js +0 -36
- package/dist/esm/common/globalEvents.js.map +0 -1
- package/dist/esm/common/globalObject.js +0 -36
- package/dist/esm/common/globalObject.js.map +0 -1
- package/dist/esm/common/lockdown/lockdown-events.js +0 -66
- package/dist/esm/common/lockdown/lockdown-events.js.map +0 -1
- package/dist/esm/common/lockdown/lockdown-more.js +0 -82
- package/dist/esm/common/lockdown/lockdown-more.js.map +0 -1
- package/dist/esm/common/lockdown/lockdown.js +0 -24
- package/dist/esm/common/lockdown/lockdown.js.map +0 -1
- package/dist/esm/common/sortParams.js +0 -29
- package/dist/esm/common/sortParams.js.map +0 -1
- package/dist/esm/common/utils.js +0 -128
- package/dist/esm/common/utils.js.map +0 -1
- package/dist/esm/common/validation.js +0 -127
- package/dist/esm/common/validation.js.map +0 -1
- package/dist/esm/iframe/IFrameSnapExecutor.js +0 -35
- package/dist/esm/iframe/IFrameSnapExecutor.js.map +0 -1
- package/dist/esm/iframe/index.js +0 -9
- package/dist/esm/iframe/index.js.map +0 -1
- package/dist/esm/index.js +0 -3
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/logging.js +0 -10
- package/dist/esm/logging.js.map +0 -1
- package/dist/esm/node-process/ChildProcessSnapExecutor.js +0 -24
- package/dist/esm/node-process/ChildProcessSnapExecutor.js.map +0 -1
- package/dist/esm/node-process/index.js +0 -7
- package/dist/esm/node-process/index.js.map +0 -1
- package/dist/esm/node-thread/ThreadSnapExecutor.js +0 -24
- package/dist/esm/node-thread/ThreadSnapExecutor.js.map +0 -1
- package/dist/esm/node-thread/index.js +0 -7
- package/dist/esm/node-thread/index.js.map +0 -1
- package/dist/esm/proxy/ProxySnapExecutor.js +0 -181
- package/dist/esm/proxy/ProxySnapExecutor.js.map +0 -1
- package/dist/esm/proxy/index.js +0 -3
- package/dist/esm/proxy/index.js.map +0 -1
- package/dist/esm/webview/WebViewExecutorStream.js +0 -111
- package/dist/esm/webview/WebViewExecutorStream.js.map +0 -1
- package/dist/esm/webview/index.js +0 -15
- package/dist/esm/webview/index.js.map +0 -1
- package/dist/esm/webworker/executor/WebWorkerSnapExecutor.js +0 -30
- package/dist/esm/webworker/executor/WebWorkerSnapExecutor.js.map +0 -1
- package/dist/esm/webworker/executor/index.js +0 -9
- package/dist/esm/webworker/executor/index.js.map +0 -1
- package/dist/esm/webworker/pool/WebWorkerPool.js +0 -245
- package/dist/esm/webworker/pool/WebWorkerPool.js.map +0 -1
- package/dist/esm/webworker/pool/index.js +0 -9
- package/dist/esm/webworker/pool/index.js.map +0 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// src/common/endowments/textDecoder.ts
|
|
2
|
+
var createTextDecoder = () => {
|
|
3
|
+
return {
|
|
4
|
+
TextDecoder: harden(TextDecoder)
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
var endowmentModule = {
|
|
8
|
+
names: ["TextDecoder"],
|
|
9
|
+
factory: createTextDecoder
|
|
10
|
+
};
|
|
11
|
+
var textDecoder_default = endowmentModule;
|
|
12
|
+
|
|
13
|
+
export {
|
|
14
|
+
textDecoder_default
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=chunk-53ZULHPK.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/endowments/textDecoder.ts"],"sourcesContent":["/**\n * Creates TextDecoder function hardened by SES.\n *\n * @returns An object with the attenuated `TextDecoder` function.\n */\nconst createTextDecoder = () => {\n return {\n TextDecoder: harden(TextDecoder),\n } as const;\n};\n\nconst endowmentModule = {\n names: ['TextDecoder'] as const,\n factory: createTextDecoder,\n};\nexport default endowmentModule;\n"],"mappings":";AAKA,IAAM,oBAAoB,MAAM;AAC9B,SAAO;AAAA,IACL,aAAa,OAAO,WAAW;AAAA,EACjC;AACF;AAEA,IAAM,kBAAkB;AAAA,EACtB,OAAO,CAAC,aAAa;AAAA,EACrB,SAAS;AACX;AACA,IAAO,sBAAQ;","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// src/logging.ts
|
|
2
|
+
import { snapsLogger } from "@metamask/snaps-utils";
|
|
3
|
+
import { createModuleLogger } from "@metamask/utils";
|
|
4
|
+
var log = createModuleLogger(
|
|
5
|
+
snapsLogger,
|
|
6
|
+
"snaps-execution-environments"
|
|
7
|
+
);
|
|
8
|
+
|
|
9
|
+
export {
|
|
10
|
+
log
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=chunk-5DEV3QQU.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/logging.ts"],"sourcesContent":["import { snapsLogger } from '@metamask/snaps-utils';\nimport { createModuleLogger } from '@metamask/utils';\n\n/**\n * A logging function specific to this package. The log messages don't show up\n * by default, but they can be enabled by setting the environment variable:\n * - `DEBUG=metamask:snaps:snaps-execution-environments`, or\n * - `DEBUG=metamask:snaps:*` to enable all logs from `@metamask/snaps-*`.\n */\nexport const log = createModuleLogger(\n snapsLogger,\n 'snaps-execution-environments',\n);\n"],"mappings":";AAAA,SAAS,mBAAmB;AAC5B,SAAS,0BAA0B;AAQ5B,IAAM,MAAM;AAAA,EACjB;AAAA,EACA;AACF;","names":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BaseSnapExecutor
|
|
3
|
+
} from "./chunk-QVIHE3WB.mjs";
|
|
4
|
+
import {
|
|
5
|
+
log
|
|
6
|
+
} from "./chunk-5DEV3QQU.mjs";
|
|
7
|
+
|
|
8
|
+
// src/node-thread/ThreadSnapExecutor.ts
|
|
9
|
+
import ObjectMultiplex from "@metamask/object-multiplex";
|
|
10
|
+
import { ThreadMessageStream } from "@metamask/post-message-stream";
|
|
11
|
+
import { logError, SNAP_STREAM_NAMES } from "@metamask/snaps-utils";
|
|
12
|
+
import { pipeline } from "readable-stream";
|
|
13
|
+
var ThreadSnapExecutor = class _ThreadSnapExecutor extends BaseSnapExecutor {
|
|
14
|
+
static initialize() {
|
|
15
|
+
log("Worker: Connecting to parent.");
|
|
16
|
+
const parentStream = new ThreadMessageStream();
|
|
17
|
+
const mux = new ObjectMultiplex();
|
|
18
|
+
pipeline(parentStream, mux, parentStream, (error) => {
|
|
19
|
+
if (error) {
|
|
20
|
+
logError(`Parent stream failure, closing worker.`, error);
|
|
21
|
+
}
|
|
22
|
+
self.close();
|
|
23
|
+
});
|
|
24
|
+
const commandStream = mux.createStream(SNAP_STREAM_NAMES.COMMAND);
|
|
25
|
+
const rpcStream = mux.createStream(SNAP_STREAM_NAMES.JSON_RPC);
|
|
26
|
+
return new _ThreadSnapExecutor(commandStream, rpcStream);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export {
|
|
31
|
+
ThreadSnapExecutor
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=chunk-5FG5IBYT.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/node-thread/ThreadSnapExecutor.ts"],"sourcesContent":["import ObjectMultiplex from '@metamask/object-multiplex';\nimport { ThreadMessageStream } from '@metamask/post-message-stream';\nimport { logError, SNAP_STREAM_NAMES } from '@metamask/snaps-utils';\nimport { pipeline } from 'readable-stream';\n\nimport { BaseSnapExecutor } from '../common/BaseSnapExecutor';\nimport { log } from '../logging';\n\nexport class ThreadSnapExecutor extends BaseSnapExecutor {\n static initialize() {\n log('Worker: Connecting to parent.');\n\n const parentStream = new ThreadMessageStream();\n const mux = new ObjectMultiplex();\n pipeline(parentStream, mux as any, parentStream, (error) => {\n if (error) {\n logError(`Parent stream failure, closing worker.`, error);\n }\n self.close();\n });\n\n const commandStream = mux.createStream(SNAP_STREAM_NAMES.COMMAND);\n const rpcStream = mux.createStream(SNAP_STREAM_NAMES.JSON_RPC) as any;\n return new ThreadSnapExecutor(commandStream, rpcStream);\n }\n}\n"],"mappings":";;;;;;;;AAAA,OAAO,qBAAqB;AAC5B,SAAS,2BAA2B;AACpC,SAAS,UAAU,yBAAyB;AAC5C,SAAS,gBAAgB;AAKlB,IAAM,qBAAN,MAAM,4BAA2B,iBAAiB;AAAA,EACvD,OAAO,aAAa;AAClB,QAAI,+BAA+B;AAEnC,UAAM,eAAe,IAAI,oBAAoB;AAC7C,UAAM,MAAM,IAAI,gBAAgB;AAChC,aAAS,cAAc,KAAY,cAAc,CAAC,UAAU;AAC1D,UAAI,OAAO;AACT,iBAAS,0CAA0C,KAAK;AAAA,MAC1D;AACA,WAAK,MAAM;AAAA,IACb,CAAC;AAED,UAAM,gBAAgB,IAAI,aAAa,kBAAkB,OAAO;AAChE,UAAM,YAAY,IAAI,aAAa,kBAAkB,QAAQ;AAC7D,WAAO,IAAI,oBAAmB,eAAe,SAAS;AAAA,EACxD;AACF;","names":[]}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkEXN2TFDJjs = require('./chunk-EXN2TFDJ.js');
|
|
7
|
+
|
|
8
|
+
// src/webworker/pool/WebWorkerPool.ts
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
var _postmessagestream = require('@metamask/post-message-stream');
|
|
13
|
+
var _snapsutils = require('@metamask/snaps-utils');
|
|
14
|
+
var _utils = require('@metamask/utils');
|
|
15
|
+
var _nonsecure = require('nanoid/non-secure');
|
|
16
|
+
var _poolSize, _stream, _url, _workerSourceURL, _onData, onData_fn, _initializeJob, initializeJob_fn, _terminateJob, terminateJob_fn, _getWorker, getWorker_fn, _updatePool, updatePool_fn, _createWorker, createWorker_fn, _getWorkerURL, getWorkerURL_fn;
|
|
17
|
+
var _WebWorkerPool = class _WebWorkerPool {
|
|
18
|
+
constructor(stream, url, poolSize = 3) {
|
|
19
|
+
/**
|
|
20
|
+
* Handle an incoming message from the `WebWorkerExecutionService`. This
|
|
21
|
+
* assumes that the message contains a `jobId` property, and a JSON-RPC
|
|
22
|
+
* request in the `data` property.
|
|
23
|
+
*
|
|
24
|
+
* @param data - The message data.
|
|
25
|
+
* @param data.data - The JSON-RPC request.
|
|
26
|
+
* @param data.jobId - The job ID.
|
|
27
|
+
*/
|
|
28
|
+
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _onData);
|
|
29
|
+
/**
|
|
30
|
+
* Create a new worker and set up a stream to communicate with it.
|
|
31
|
+
*
|
|
32
|
+
* @param jobId - The job ID.
|
|
33
|
+
* @returns The job.
|
|
34
|
+
*/
|
|
35
|
+
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _initializeJob);
|
|
36
|
+
/**
|
|
37
|
+
* Terminate the job with the given ID. This will close the worker and delete
|
|
38
|
+
* the job from the internal job map.
|
|
39
|
+
*
|
|
40
|
+
* @param jobId - The job ID.
|
|
41
|
+
*/
|
|
42
|
+
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _terminateJob);
|
|
43
|
+
/**
|
|
44
|
+
* Get a worker from the pool. A new worker will be created automatically.
|
|
45
|
+
*
|
|
46
|
+
* @returns The worker.
|
|
47
|
+
*/
|
|
48
|
+
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _getWorker);
|
|
49
|
+
/**
|
|
50
|
+
* Update the pool of workers. This will create new workers if the pool is
|
|
51
|
+
* below the minimum size.
|
|
52
|
+
*/
|
|
53
|
+
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _updatePool);
|
|
54
|
+
/**
|
|
55
|
+
* Create a new worker. This will fetch the worker source if it has not
|
|
56
|
+
* already been fetched.
|
|
57
|
+
*
|
|
58
|
+
* @returns The worker.
|
|
59
|
+
*/
|
|
60
|
+
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _createWorker);
|
|
61
|
+
/**
|
|
62
|
+
* Get the URL of the worker source. This will fetch the worker source if it
|
|
63
|
+
* has not already been fetched.
|
|
64
|
+
*
|
|
65
|
+
* @returns The worker source URL, as a `blob:` URL.
|
|
66
|
+
*/
|
|
67
|
+
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _getWorkerURL);
|
|
68
|
+
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _poolSize, void 0);
|
|
69
|
+
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _stream, void 0);
|
|
70
|
+
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _url, void 0);
|
|
71
|
+
this.pool = [];
|
|
72
|
+
this.jobs = /* @__PURE__ */ new Map();
|
|
73
|
+
_chunkEXN2TFDJjs.__privateAdd.call(void 0, this, _workerSourceURL, void 0);
|
|
74
|
+
_chunkEXN2TFDJjs.__privateSet.call(void 0, this, _stream, stream);
|
|
75
|
+
_chunkEXN2TFDJjs.__privateSet.call(void 0, this, _url, url);
|
|
76
|
+
_chunkEXN2TFDJjs.__privateSet.call(void 0, this, _poolSize, poolSize);
|
|
77
|
+
_chunkEXN2TFDJjs.__privateGet.call(void 0, this, _stream).on("data", _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _onData, onData_fn).bind(this));
|
|
78
|
+
}
|
|
79
|
+
/* istanbul ignore next - Constructor arguments. */
|
|
80
|
+
static initialize(stream = new (0, _postmessagestream.WindowPostMessageStream)({
|
|
81
|
+
name: "child",
|
|
82
|
+
target: "parent",
|
|
83
|
+
targetWindow: self.parent,
|
|
84
|
+
targetOrigin: "*"
|
|
85
|
+
}), url = "../executor/bundle.js", poolSize) {
|
|
86
|
+
return new _WebWorkerPool(stream, url, poolSize);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
_poolSize = new WeakMap();
|
|
90
|
+
_stream = new WeakMap();
|
|
91
|
+
_url = new WeakMap();
|
|
92
|
+
_workerSourceURL = new WeakMap();
|
|
93
|
+
_onData = new WeakSet();
|
|
94
|
+
onData_fn = function(data) {
|
|
95
|
+
const { jobId, data: request } = data;
|
|
96
|
+
const job = this.jobs.get(jobId);
|
|
97
|
+
if (!job) {
|
|
98
|
+
_chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _initializeJob, initializeJob_fn).call(this, jobId).then(() => {
|
|
99
|
+
_chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _onData, onData_fn).call(this, data);
|
|
100
|
+
}).catch((error) => {
|
|
101
|
+
_snapsutils.logError.call(void 0, "[Worker] Error initializing job:", error.toString());
|
|
102
|
+
_chunkEXN2TFDJjs.__privateGet.call(void 0, this, _stream).write({
|
|
103
|
+
jobId,
|
|
104
|
+
data: {
|
|
105
|
+
name: "command",
|
|
106
|
+
data: {
|
|
107
|
+
jsonrpc: "2.0",
|
|
108
|
+
id: request.id ?? null,
|
|
109
|
+
error: {
|
|
110
|
+
code: -32e3,
|
|
111
|
+
message: "Internal error"
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (request.method === "terminateJob") {
|
|
120
|
+
_chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _terminateJob, terminateJob_fn).call(this, jobId);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
job.stream.write(request);
|
|
124
|
+
};
|
|
125
|
+
_initializeJob = new WeakSet();
|
|
126
|
+
initializeJob_fn = async function(jobId) {
|
|
127
|
+
const worker = await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _getWorker, getWorker_fn).call(this);
|
|
128
|
+
const jobStream = new (0, _postmessagestream.WebWorkerParentPostMessageStream)({
|
|
129
|
+
worker
|
|
130
|
+
});
|
|
131
|
+
jobStream.on("data", (data) => {
|
|
132
|
+
_chunkEXN2TFDJjs.__privateGet.call(void 0, this, _stream).write({ data, jobId });
|
|
133
|
+
});
|
|
134
|
+
const job = { id: jobId, worker, stream: jobStream };
|
|
135
|
+
this.jobs.set(jobId, job);
|
|
136
|
+
return job;
|
|
137
|
+
};
|
|
138
|
+
_terminateJob = new WeakSet();
|
|
139
|
+
terminateJob_fn = function(jobId) {
|
|
140
|
+
const job = this.jobs.get(jobId);
|
|
141
|
+
_utils.assert.call(void 0, job, `Job "${jobId}" not found.`);
|
|
142
|
+
job.stream.destroy();
|
|
143
|
+
job.worker.terminate();
|
|
144
|
+
this.jobs.delete(jobId);
|
|
145
|
+
};
|
|
146
|
+
_getWorker = new WeakSet();
|
|
147
|
+
getWorker_fn = async function() {
|
|
148
|
+
if (this.pool.length === 0) {
|
|
149
|
+
await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _updatePool, updatePool_fn).call(this);
|
|
150
|
+
}
|
|
151
|
+
const worker = this.pool.shift();
|
|
152
|
+
_utils.assert.call(void 0, worker, "Worker not found.");
|
|
153
|
+
await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _updatePool, updatePool_fn).call(this);
|
|
154
|
+
return worker;
|
|
155
|
+
};
|
|
156
|
+
_updatePool = new WeakSet();
|
|
157
|
+
updatePool_fn = async function() {
|
|
158
|
+
while (this.pool.length < _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _poolSize)) {
|
|
159
|
+
const worker = await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _createWorker, createWorker_fn).call(this);
|
|
160
|
+
this.pool.push(worker);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
_createWorker = new WeakSet();
|
|
164
|
+
createWorker_fn = async function() {
|
|
165
|
+
return new Worker(await _chunkEXN2TFDJjs.__privateMethod.call(void 0, this, _getWorkerURL, getWorkerURL_fn).call(this), {
|
|
166
|
+
name: `worker-${_nonsecure.nanoid.call(void 0, )}`
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
_getWorkerURL = new WeakSet();
|
|
170
|
+
getWorkerURL_fn = async function() {
|
|
171
|
+
if (_chunkEXN2TFDJjs.__privateGet.call(void 0, this, _workerSourceURL)) {
|
|
172
|
+
return _chunkEXN2TFDJjs.__privateGet.call(void 0, this, _workerSourceURL);
|
|
173
|
+
}
|
|
174
|
+
const blob = await fetch(_chunkEXN2TFDJjs.__privateGet.call(void 0, this, _url)).then(async (response) => response.blob()).then(URL.createObjectURL.bind(URL));
|
|
175
|
+
_chunkEXN2TFDJjs.__privateSet.call(void 0, this, _workerSourceURL, blob);
|
|
176
|
+
return blob;
|
|
177
|
+
};
|
|
178
|
+
var WebWorkerPool = _WebWorkerPool;
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
exports.WebWorkerPool = WebWorkerPool;
|
|
183
|
+
//# sourceMappingURL=chunk-5STN3QCA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/webworker/pool/WebWorkerPool.ts"],"names":[],"mappings":";;;;;;;;AACA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,gBAAgB;AAEzB,SAAS,cAAc;AACvB,SAAS,cAAc;AARvB;AAwBO,IAAM,iBAAN,MAAM,eAAc;AAAA,EA2BzB,YAAY,QAA+B,KAAa,WAAW,GAAG;AAiBtE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAkDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAM;AAsBN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAM;AAkBN;AAAA;AAAA;AAAA;AAAA,uBAAM;AAaN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAM;AAYN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAM;AA7KN,uBAAS,WAAT;AAEA,uBAAS,SAAT;AAEA,uBAAS,MAAT;AAEA,SAAS,OAAiB,CAAC;AAE3B,SAAS,OAAiC,oBAAI,IAAI;AAElD;AAiBE,uBAAK,SAAU;AACf,uBAAK,MAAO;AACZ,uBAAK,WAAY;AAEjB,uBAAK,SAAQ,GAAG,QAAQ,sBAAK,oBAAQ,KAAK,IAAI,CAAC;AAAA,EACjD;AAAA;AAAA,EAnBA,OAAO,WACL,SAAgC,IAAI,wBAAwB;AAAA,IAC1D,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,cAAc,KAAK;AAAA,IACnB,cAAc;AAAA,EAChB,CAAC,GACD,MAAM,yBACN,UACA;AACA,WAAO,IAAI,eAAc,QAAQ,KAAK,QAAQ;AAAA,EAChD;AAiKF;AAzLW;AAEA;AAEA;AAMT;AAiCA;AAAA,YAAO,SAAC,MAA+C;AACrD,QAAM,EAAE,OAAO,MAAM,QAAQ,IAAI;AAEjC,QAAM,MAAM,KAAK,KAAK,IAAI,KAAK;AAC/B,MAAI,CAAC,KAAK;AAIR,0BAAK,kCAAL,WAAoB,OACjB,KAAK,MAAM;AACV,4BAAK,oBAAL,WAAa;AAAA,IACf,CAAC,EACA,MAAM,CAAC,UAAU;AAChB,eAAS,oCAAoC,MAAM,SAAS,CAAC;AAE7D,yBAAK,SAAQ,MAAM;AAAA,QACjB;AAAA,QACA,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,MAAM;AAAA,YACJ,SAAS;AAAA,YACT,IAAI,QAAQ,MAAM;AAAA,YAClB,OAAO;AAAA,cACL,MAAM;AAAA,cACN,SAAS;AAAA,YACX;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAEH;AAAA,EACF;AAIA,MAAI,QAAQ,WAAW,gBAAgB;AACrC,0BAAK,gCAAL,WAAmB;AACnB;AAAA,EACF;AAEA,MAAI,OAAO,MAAM,OAAO;AAC1B;AAQM;AAAA,mBAAc,eAAC,OAAqC;AACxD,QAAM,SAAS,MAAM,sBAAK,0BAAL;AACrB,QAAM,YAAY,IAAI,iCAAiC;AAAA,IACrD;AAAA,EACF,CAAC;AAGD,YAAU,GAAG,QAAQ,CAAC,SAAS;AAC7B,uBAAK,SAAQ,MAAM,EAAE,MAAM,MAAM,CAAC;AAAA,EACpC,CAAC;AAED,QAAM,MAAM,EAAE,IAAI,OAAO,QAAQ,QAAQ,UAAU;AACnD,OAAK,KAAK,IAAI,OAAO,GAAG;AACxB,SAAO;AACT;AAQA;AAAA,kBAAa,SAAC,OAAe;AAC3B,QAAM,MAAM,KAAK,KAAK,IAAI,KAAK;AAC/B,SAAO,KAAK,QAAQ,KAAK,cAAc;AAEvC,MAAI,OAAO,QAAQ;AACnB,MAAI,OAAO,UAAU;AAErB,OAAK,KAAK,OAAO,KAAK;AACxB;AAOM;AAAA,eAAU,iBAAG;AAEjB,MAAI,KAAK,KAAK,WAAW,GAAG;AAC1B,UAAM,sBAAK,4BAAL;AAAA,EACR;AAEA,QAAM,SAAS,KAAK,KAAK,MAAM;AAC/B,SAAO,QAAQ,mBAAmB;AAElC,QAAM,sBAAK,4BAAL;AAEN,SAAO;AACT;AAMM;AAAA,gBAAW,iBAAG;AAClB,SAAO,KAAK,KAAK,SAAS,mBAAK,YAAW;AACxC,UAAM,SAAS,MAAM,sBAAK,gCAAL;AACrB,SAAK,KAAK,KAAK,MAAM;AAAA,EACvB;AACF;AAQM;AAAA,kBAAa,iBAAG;AACpB,SAAO,IAAI,OAAO,MAAM,sBAAK,gCAAL,YAAsB;AAAA,IAC5C,MAAM,UAAU,OAAO,CAAC;AAAA,EAC1B,CAAC;AACH;AAQM;AAAA,kBAAa,iBAAG;AACpB,MAAI,mBAAK,mBAAkB;AACzB,WAAO,mBAAK;AAAA,EACd;AAEA,QAAM,OAAO,MAAM,MAAM,mBAAK,KAAI,EAC/B,KAAK,OAAO,aAAa,SAAS,KAAK,CAAC,EACxC,KAAK,IAAI,gBAAgB,KAAK,GAAG,CAAC;AAErC,qBAAK,kBAAmB;AACxB,SAAO;AACT;AAzLK,IAAM,gBAAN","sourcesContent":["import type { BasePostMessageStream } from '@metamask/post-message-stream';\nimport {\n WebWorkerParentPostMessageStream,\n WindowPostMessageStream,\n} from '@metamask/post-message-stream';\nimport { logError } from '@metamask/snaps-utils';\nimport type { JsonRpcRequest } from '@metamask/utils';\nimport { assert } from '@metamask/utils';\nimport { nanoid } from 'nanoid/non-secure';\n\ntype ExecutorJob = {\n id: string;\n worker: Worker;\n stream: WebWorkerParentPostMessageStream;\n};\n\n/**\n * A snap executor using the WebWorker API.\n *\n * This is not a traditional snap executor, as it does not execute snaps itself.\n * Instead, it creates a pool of webworkers for each snap execution, and sends\n * the snap execution request to the webworker. The webworker is responsible for\n * executing the snap.\n */\nexport class WebWorkerPool {\n readonly #poolSize;\n\n readonly #stream: BasePostMessageStream;\n\n readonly #url: string;\n\n readonly pool: Worker[] = [];\n\n readonly jobs: Map<string, ExecutorJob> = new Map();\n\n #workerSourceURL?: string;\n\n /* istanbul ignore next - Constructor arguments. */\n static initialize(\n stream: BasePostMessageStream = new WindowPostMessageStream({\n name: 'child',\n target: 'parent',\n targetWindow: self.parent,\n targetOrigin: '*',\n }),\n url = '../executor/bundle.js',\n poolSize?: number,\n ) {\n return new WebWorkerPool(stream, url, poolSize);\n }\n\n constructor(stream: BasePostMessageStream, url: string, poolSize = 3) {\n this.#stream = stream;\n this.#url = url;\n this.#poolSize = poolSize;\n\n this.#stream.on('data', this.#onData.bind(this));\n }\n\n /**\n * Handle an incoming message from the `WebWorkerExecutionService`. This\n * assumes that the message contains a `jobId` property, and a JSON-RPC\n * request in the `data` property.\n *\n * @param data - The message data.\n * @param data.data - The JSON-RPC request.\n * @param data.jobId - The job ID.\n */\n #onData(data: { data: JsonRpcRequest; jobId: string }) {\n const { jobId, data: request } = data;\n\n const job = this.jobs.get(jobId);\n if (!job) {\n // This ensures that a job is initialized before it is used. To avoid\n // code duplication, we call the `#onData` method again, which will\n // run the rest of the logic after initialization.\n this.#initializeJob(jobId)\n .then(() => {\n this.#onData(data);\n })\n .catch((error) => {\n logError('[Worker] Error initializing job:', error.toString());\n\n this.#stream.write({\n jobId,\n data: {\n name: 'command',\n data: {\n jsonrpc: '2.0',\n id: request.id ?? null,\n error: {\n code: -32000,\n message: 'Internal error',\n },\n },\n },\n });\n });\n\n return;\n }\n\n // This is a method specific to the `WebWorkerPool`, as the service itself\n // does not have access to the workers directly.\n if (request.method === 'terminateJob') {\n this.#terminateJob(jobId);\n return;\n }\n\n job.stream.write(request);\n }\n\n /**\n * Create a new worker and set up a stream to communicate with it.\n *\n * @param jobId - The job ID.\n * @returns The job.\n */\n async #initializeJob(jobId: string): Promise<ExecutorJob> {\n const worker = await this.#getWorker();\n const jobStream = new WebWorkerParentPostMessageStream({\n worker,\n });\n\n // Write messages from the worker to the parent, wrapped with the job ID.\n jobStream.on('data', (data) => {\n this.#stream.write({ data, jobId });\n });\n\n const job = { id: jobId, worker, stream: jobStream };\n this.jobs.set(jobId, job);\n return job;\n }\n\n /**\n * Terminate the job with the given ID. This will close the worker and delete\n * the job from the internal job map.\n *\n * @param jobId - The job ID.\n */\n #terminateJob(jobId: string) {\n const job = this.jobs.get(jobId);\n assert(job, `Job \"${jobId}\" not found.`);\n\n job.stream.destroy();\n job.worker.terminate();\n\n this.jobs.delete(jobId);\n }\n\n /**\n * Get a worker from the pool. A new worker will be created automatically.\n *\n * @returns The worker.\n */\n async #getWorker() {\n // Lazily create the pool of workers.\n if (this.pool.length === 0) {\n await this.#updatePool();\n }\n\n const worker = this.pool.shift();\n assert(worker, 'Worker not found.');\n\n await this.#updatePool();\n\n return worker;\n }\n\n /**\n * Update the pool of workers. This will create new workers if the pool is\n * below the minimum size.\n */\n async #updatePool() {\n while (this.pool.length < this.#poolSize) {\n const worker = await this.#createWorker();\n this.pool.push(worker);\n }\n }\n\n /**\n * Create a new worker. This will fetch the worker source if it has not\n * already been fetched.\n *\n * @returns The worker.\n */\n async #createWorker() {\n return new Worker(await this.#getWorkerURL(), {\n name: `worker-${nanoid()}`,\n });\n }\n\n /**\n * Get the URL of the worker source. This will fetch the worker source if it\n * has not already been fetched.\n *\n * @returns The worker source URL, as a `blob:` URL.\n */\n async #getWorkerURL() {\n if (this.#workerSourceURL) {\n return this.#workerSourceURL;\n }\n\n const blob = await fetch(this.#url)\n .then(async (response) => response.blob())\n .then(URL.createObjectURL.bind(URL));\n\n this.#workerSourceURL = blob;\n return blob;\n }\n}\n"]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__privateAdd,
|
|
3
|
+
__privateGet,
|
|
4
|
+
__privateSet
|
|
5
|
+
} from "./chunk-YRZVIDCF.mjs";
|
|
6
|
+
|
|
7
|
+
// src/webview/WebViewExecutorStream.ts
|
|
8
|
+
import { BasePostMessageStream } from "@metamask/post-message-stream";
|
|
9
|
+
import { isValidStreamMessage } from "@metamask/post-message-stream/dist/utils";
|
|
10
|
+
import { base64ToBytes, bytesToString } from "@metamask/utils";
|
|
11
|
+
var _name, _target, _targetWindow;
|
|
12
|
+
var WebViewExecutorStream = class extends BasePostMessageStream {
|
|
13
|
+
/**
|
|
14
|
+
* A special post-message-stream to be used by the WebView executor.
|
|
15
|
+
*
|
|
16
|
+
* This stream is different in a few ways:
|
|
17
|
+
* - It expects data to be base64 encoded
|
|
18
|
+
* - It stringifies the data it posts
|
|
19
|
+
* - It does less validation of origins
|
|
20
|
+
*
|
|
21
|
+
* @param args - Options bag.
|
|
22
|
+
* @param args.name - The name of the stream. Used to differentiate between
|
|
23
|
+
* multiple streams sharing the same window object. child:WebView
|
|
24
|
+
* @param args.target - The name of the stream to exchange messages with. parent:rnside
|
|
25
|
+
* @param args.targetWindow - The window object of the target stream.
|
|
26
|
+
*/
|
|
27
|
+
constructor({ name, target, targetWindow }) {
|
|
28
|
+
super();
|
|
29
|
+
__privateAdd(this, _name, void 0);
|
|
30
|
+
__privateAdd(this, _target, void 0);
|
|
31
|
+
__privateAdd(this, _targetWindow, void 0);
|
|
32
|
+
__privateSet(this, _name, name);
|
|
33
|
+
__privateSet(this, _target, target);
|
|
34
|
+
__privateSet(this, _targetWindow, targetWindow);
|
|
35
|
+
this._onMessage = this._onMessage.bind(this);
|
|
36
|
+
window.addEventListener("message", this._onMessage, false);
|
|
37
|
+
this._handshake();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Webview needs to receive strings only on postMessage. That's the main difference between this and the original window post message stream.
|
|
41
|
+
* Reference: https://github.com/react-native-webview/react-native-webview/blob/master/docs/Guide.md?plain=1#L471
|
|
42
|
+
*/
|
|
43
|
+
_postMessage(data) {
|
|
44
|
+
__privateGet(this, _targetWindow).postMessage(
|
|
45
|
+
JSON.stringify({
|
|
46
|
+
target: __privateGet(this, _target),
|
|
47
|
+
data
|
|
48
|
+
})
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
_onMessage(event) {
|
|
52
|
+
if (typeof event.data !== "string") {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const bytes = base64ToBytes(event.data);
|
|
56
|
+
const message = JSON.parse(bytesToString(bytes));
|
|
57
|
+
if (!isValidStreamMessage(message) || message.target !== __privateGet(this, _name)) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
this._onData(message.data);
|
|
61
|
+
}
|
|
62
|
+
_destroy() {
|
|
63
|
+
window.removeEventListener("message", this._onMessage, false);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
_name = new WeakMap();
|
|
67
|
+
_target = new WeakMap();
|
|
68
|
+
_targetWindow = new WeakMap();
|
|
69
|
+
|
|
70
|
+
export {
|
|
71
|
+
WebViewExecutorStream
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=chunk-7AJWXSDQ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/webview/WebViewExecutorStream.ts"],"sourcesContent":["import type { PostMessageEvent } from '@metamask/post-message-stream';\nimport { BasePostMessageStream } from '@metamask/post-message-stream';\nimport { isValidStreamMessage } from '@metamask/post-message-stream/dist/utils';\nimport { base64ToBytes, bytesToString } from '@metamask/utils';\n\ntype WebViewExecutorStreamArgs = {\n name: string;\n target: string;\n targetWindow: Window['ReactNativeWebView'];\n};\n\nexport class WebViewExecutorStream extends BasePostMessageStream {\n #name;\n\n #target;\n\n #targetWindow;\n\n /**\n * A special post-message-stream to be used by the WebView executor.\n *\n * This stream is different in a few ways:\n * - It expects data to be base64 encoded\n * - It stringifies the data it posts\n * - It does less validation of origins\n *\n * @param args - Options bag.\n * @param args.name - The name of the stream. Used to differentiate between\n * multiple streams sharing the same window object. child:WebView\n * @param args.target - The name of the stream to exchange messages with. parent:rnside\n * @param args.targetWindow - The window object of the target stream.\n */\n\n constructor({ name, target, targetWindow }: WebViewExecutorStreamArgs) {\n super();\n\n this.#name = name;\n this.#target = target;\n this.#targetWindow = targetWindow;\n\n this._onMessage = this._onMessage.bind(this);\n\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n window.addEventListener('message', this._onMessage as any, false);\n\n this._handshake();\n }\n\n /**\n * Webview needs to receive strings only on postMessage. That's the main difference between this and the original window post message stream.\n * Reference: https://github.com/react-native-webview/react-native-webview/blob/master/docs/Guide.md?plain=1#L471\n */\n\n protected _postMessage(data: unknown): void {\n this.#targetWindow.postMessage(\n JSON.stringify({\n target: this.#target,\n data,\n }),\n );\n }\n\n private _onMessage(event: PostMessageEvent): void {\n if (typeof event.data !== 'string') {\n return;\n }\n\n const bytes = base64ToBytes(event.data);\n const message = JSON.parse(bytesToString(bytes));\n\n // Notice that we don't check targetWindow or targetOrigin here.\n // This doesn't seem possible to do in RN.\n if (!isValidStreamMessage(message) || message.target !== this.#name) {\n return;\n }\n\n this._onData(message.data);\n }\n\n _destroy() {\n // This method is already bound.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n window.removeEventListener('message', this._onMessage as any, false);\n }\n}\n"],"mappings":";;;;;;;AACA,SAAS,6BAA6B;AACtC,SAAS,4BAA4B;AACrC,SAAS,eAAe,qBAAqB;AAH7C;AAWO,IAAM,wBAAN,cAAoC,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsB/D,YAAY,EAAE,MAAM,QAAQ,aAAa,GAA8B;AACrE,UAAM;AAtBR;AAEA;AAEA;AAoBE,uBAAK,OAAQ;AACb,uBAAK,SAAU;AACf,uBAAK,eAAgB;AAErB,SAAK,aAAa,KAAK,WAAW,KAAK,IAAI;AAI3C,WAAO,iBAAiB,WAAW,KAAK,YAAmB,KAAK;AAEhE,SAAK,WAAW;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,aAAa,MAAqB;AAC1C,uBAAK,eAAc;AAAA,MACjB,KAAK,UAAU;AAAA,QACb,QAAQ,mBAAK;AAAA,QACb;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEQ,WAAW,OAA+B;AAChD,QAAI,OAAO,MAAM,SAAS,UAAU;AAClC;AAAA,IACF;AAEA,UAAM,QAAQ,cAAc,MAAM,IAAI;AACtC,UAAM,UAAU,KAAK,MAAM,cAAc,KAAK,CAAC;AAI/C,QAAI,CAAC,qBAAqB,OAAO,KAAK,QAAQ,WAAW,mBAAK,QAAO;AACnE;AAAA,IACF;AAEA,SAAK,QAAQ,QAAQ,IAAI;AAAA,EAC3B;AAAA,EAEA,WAAW;AAGT,WAAO,oBAAoB,WAAW,KAAK,YAAmB,KAAK;AAAA,EACrE;AACF;AAzEE;AAEA;AAEA;","names":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// src/common/endowments/interval.ts
|
|
2
|
+
import { rpcErrors } from "@metamask/rpc-errors";
|
|
3
|
+
var MINIMUM_INTERVAL = 10;
|
|
4
|
+
var createInterval = () => {
|
|
5
|
+
const registeredHandles = /* @__PURE__ */ new Map();
|
|
6
|
+
const _setInterval = (handler, timeout) => {
|
|
7
|
+
if (typeof handler !== "function") {
|
|
8
|
+
throw rpcErrors.invalidInput(
|
|
9
|
+
`The interval handler must be a function. Received: ${typeof handler}.`
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
harden(handler);
|
|
13
|
+
const handle = Object.freeze(/* @__PURE__ */ Object.create(null));
|
|
14
|
+
const platformHandle = setInterval(
|
|
15
|
+
handler,
|
|
16
|
+
Math.max(MINIMUM_INTERVAL, timeout ?? 0)
|
|
17
|
+
);
|
|
18
|
+
registeredHandles.set(handle, platformHandle);
|
|
19
|
+
return handle;
|
|
20
|
+
};
|
|
21
|
+
const _clearInterval = (handle) => {
|
|
22
|
+
harden(handle);
|
|
23
|
+
const platformHandle = registeredHandles.get(handle);
|
|
24
|
+
if (platformHandle !== void 0) {
|
|
25
|
+
clearInterval(platformHandle);
|
|
26
|
+
registeredHandles.delete(handle);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const teardownFunction = () => {
|
|
30
|
+
for (const handle of registeredHandles.keys()) {
|
|
31
|
+
_clearInterval(handle);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
return {
|
|
35
|
+
setInterval: harden(_setInterval),
|
|
36
|
+
clearInterval: harden(_clearInterval),
|
|
37
|
+
teardownFunction
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
var endowmentModule = {
|
|
41
|
+
names: ["setInterval", "clearInterval"],
|
|
42
|
+
factory: createInterval
|
|
43
|
+
};
|
|
44
|
+
var interval_default = endowmentModule;
|
|
45
|
+
|
|
46
|
+
export {
|
|
47
|
+
interval_default
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=chunk-ACK2JBSO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/endowments/interval.ts"],"sourcesContent":["import { rpcErrors } from '@metamask/rpc-errors';\n\nconst MINIMUM_INTERVAL = 10;\n\n/**\n * Creates a pair of `setInterval` and `clearInterval` functions attenuated such\n * that:\n * - `setInterval` throws if its \"handler\" parameter is not a function.\n * - `clearInterval` only clears timeouts created by its sibling `setInterval`,\n * or else no-ops.\n *\n * @returns An object with the attenuated `setInterval` and `clearInterval`\n * functions.\n */\nconst createInterval = () => {\n const registeredHandles = new Map<unknown, unknown>();\n\n const _setInterval = (handler: TimerHandler, timeout?: number): unknown => {\n if (typeof handler !== 'function') {\n throw rpcErrors.invalidInput(\n `The interval handler must be a function. Received: ${typeof handler}.`,\n );\n }\n harden(handler);\n const handle = Object.freeze(Object.create(null));\n const platformHandle = setInterval(\n handler,\n Math.max(MINIMUM_INTERVAL, timeout ?? 0),\n );\n registeredHandles.set(handle, platformHandle);\n return handle;\n };\n\n const _clearInterval = (handle: unknown): void => {\n harden(handle);\n const platformHandle = registeredHandles.get(handle);\n if (platformHandle !== undefined) {\n clearInterval(platformHandle as any);\n registeredHandles.delete(handle);\n }\n };\n\n const teardownFunction = (): void => {\n for (const handle of registeredHandles.keys()) {\n _clearInterval(handle);\n }\n };\n\n return {\n setInterval: harden(_setInterval),\n clearInterval: harden(_clearInterval),\n teardownFunction,\n } as const;\n};\n\nconst endowmentModule = {\n names: ['setInterval', 'clearInterval'] as const,\n factory: createInterval,\n};\nexport default endowmentModule;\n"],"mappings":";AAAA,SAAS,iBAAiB;AAE1B,IAAM,mBAAmB;AAYzB,IAAM,iBAAiB,MAAM;AAC3B,QAAM,oBAAoB,oBAAI,IAAsB;AAEpD,QAAM,eAAe,CAAC,SAAuB,YAA8B;AACzE,QAAI,OAAO,YAAY,YAAY;AACjC,YAAM,UAAU;AAAA,QACd,sDAAsD,OAAO,OAAO;AAAA,MACtE;AAAA,IACF;AACA,WAAO,OAAO;AACd,UAAM,SAAS,OAAO,OAAO,uBAAO,OAAO,IAAI,CAAC;AAChD,UAAM,iBAAiB;AAAA,MACrB;AAAA,MACA,KAAK,IAAI,kBAAkB,WAAW,CAAC;AAAA,IACzC;AACA,sBAAkB,IAAI,QAAQ,cAAc;AAC5C,WAAO;AAAA,EACT;AAEA,QAAM,iBAAiB,CAAC,WAA0B;AAChD,WAAO,MAAM;AACb,UAAM,iBAAiB,kBAAkB,IAAI,MAAM;AACnD,QAAI,mBAAmB,QAAW;AAChC,oBAAc,cAAqB;AACnC,wBAAkB,OAAO,MAAM;AAAA,IACjC;AAAA,EACF;AAEA,QAAM,mBAAmB,MAAY;AACnC,eAAW,UAAU,kBAAkB,KAAK,GAAG;AAC7C,qBAAe,MAAM;AAAA,IACvB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,aAAa,OAAO,YAAY;AAAA,IAChC,eAAe,OAAO,cAAc;AAAA,IACpC;AAAA,EACF;AACF;AAEA,IAAM,kBAAkB;AAAA,EACtB,OAAO,CAAC,eAAe,eAAe;AAAA,EACtC,SAAS;AACX;AACA,IAAO,mBAAQ;","names":[]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/common/endowments/timeout.ts
|
|
2
|
+
var _rpcerrors = require('@metamask/rpc-errors');
|
|
3
|
+
var MINIMUM_TIMEOUT = 10;
|
|
4
|
+
var createTimeout = () => {
|
|
5
|
+
const registeredHandles = /* @__PURE__ */ new Map();
|
|
6
|
+
const _setTimeout = (handler, timeout) => {
|
|
7
|
+
if (typeof handler !== "function") {
|
|
8
|
+
throw _rpcerrors.rpcErrors.internal(
|
|
9
|
+
`The timeout handler must be a function. Received: ${typeof handler}.`
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
harden(handler);
|
|
13
|
+
const handle = Object.freeze(/* @__PURE__ */ Object.create(null));
|
|
14
|
+
const platformHandle = setTimeout(() => {
|
|
15
|
+
registeredHandles.delete(handle);
|
|
16
|
+
handler();
|
|
17
|
+
}, Math.max(MINIMUM_TIMEOUT, timeout ?? 0));
|
|
18
|
+
registeredHandles.set(handle, platformHandle);
|
|
19
|
+
return handle;
|
|
20
|
+
};
|
|
21
|
+
const _clearTimeout = (handle) => {
|
|
22
|
+
const platformHandle = registeredHandles.get(handle);
|
|
23
|
+
if (platformHandle !== void 0) {
|
|
24
|
+
clearTimeout(platformHandle);
|
|
25
|
+
registeredHandles.delete(handle);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const teardownFunction = () => {
|
|
29
|
+
for (const handle of registeredHandles.keys()) {
|
|
30
|
+
_clearTimeout(handle);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
return {
|
|
34
|
+
setTimeout: harden(_setTimeout),
|
|
35
|
+
clearTimeout: harden(_clearTimeout),
|
|
36
|
+
teardownFunction
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
var endowmentModule = {
|
|
40
|
+
names: ["setTimeout", "clearTimeout"],
|
|
41
|
+
factory: createTimeout
|
|
42
|
+
};
|
|
43
|
+
var timeout_default = endowmentModule;
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
exports.timeout_default = timeout_default;
|
|
48
|
+
//# sourceMappingURL=chunk-B3JZNNZD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/endowments/timeout.ts"],"names":[],"mappings":";AAAA,SAAS,iBAAiB;AAE1B,IAAM,kBAAkB;AAYxB,IAAM,gBAAgB,MAAM;AAC1B,QAAM,oBAAoB,oBAAI,IAAsB;AACpD,QAAM,cAAc,CAAC,SAAuB,YAA8B;AACxE,QAAI,OAAO,YAAY,YAAY;AACjC,YAAM,UAAU;AAAA,QACd,qDAAqD,OAAO,OAAO;AAAA,MACrE;AAAA,IACF;AACA,WAAO,OAAO;AACd,UAAM,SAAS,OAAO,OAAO,uBAAO,OAAO,IAAI,CAAC;AAChD,UAAM,iBAAiB,WAAW,MAAM;AACtC,wBAAkB,OAAO,MAAM;AAC/B,cAAQ;AAAA,IACV,GAAG,KAAK,IAAI,iBAAiB,WAAW,CAAC,CAAC;AAE1C,sBAAkB,IAAI,QAAQ,cAAc;AAC5C,WAAO;AAAA,EACT;AAEA,QAAM,gBAAgB,CAAC,WAA0B;AAC/C,UAAM,iBAAiB,kBAAkB,IAAI,MAAM;AACnD,QAAI,mBAAmB,QAAW;AAChC,mBAAa,cAAqB;AAClC,wBAAkB,OAAO,MAAM;AAAA,IACjC;AAAA,EACF;AAEA,QAAM,mBAAmB,MAAY;AACnC,eAAW,UAAU,kBAAkB,KAAK,GAAG;AAC7C,oBAAc,MAAM;AAAA,IACtB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,YAAY,OAAO,WAAW;AAAA,IAC9B,cAAc,OAAO,aAAa;AAAA,IAClC;AAAA,EACF;AACF;AAEA,IAAM,kBAAkB;AAAA,EACtB,OAAO,CAAC,cAAc,cAAc;AAAA,EACpC,SAAS;AACX;AACA,IAAO,kBAAQ","sourcesContent":["import { rpcErrors } from '@metamask/rpc-errors';\n\nconst MINIMUM_TIMEOUT = 10;\n\n/**\n * Creates a pair of `setTimeout` and `clearTimeout` functions attenuated such\n * that:\n * - `setTimeout` throws if its \"handler\" parameter is not a function.\n * - `clearTimeout` only clears timeouts created by its sibling `setTimeout`,\n * or else no-ops.\n *\n * @returns An object with the attenuated `setTimeout` and `clearTimeout`\n * functions.\n */\nconst createTimeout = () => {\n const registeredHandles = new Map<unknown, unknown>();\n const _setTimeout = (handler: TimerHandler, timeout?: number): unknown => {\n if (typeof handler !== 'function') {\n throw rpcErrors.internal(\n `The timeout handler must be a function. Received: ${typeof handler}.`,\n );\n }\n harden(handler);\n const handle = Object.freeze(Object.create(null));\n const platformHandle = setTimeout(() => {\n registeredHandles.delete(handle);\n handler();\n }, Math.max(MINIMUM_TIMEOUT, timeout ?? 0));\n\n registeredHandles.set(handle, platformHandle);\n return handle;\n };\n\n const _clearTimeout = (handle: unknown): void => {\n const platformHandle = registeredHandles.get(handle);\n if (platformHandle !== undefined) {\n clearTimeout(platformHandle as any);\n registeredHandles.delete(handle);\n }\n };\n\n const teardownFunction = (): void => {\n for (const handle of registeredHandles.keys()) {\n _clearTimeout(handle);\n }\n };\n\n return {\n setTimeout: harden(_setTimeout),\n clearTimeout: harden(_clearTimeout),\n teardownFunction,\n } as const;\n};\n\nconst endowmentModule = {\n names: ['setTimeout', 'clearTimeout'] as const,\n factory: createTimeout,\n};\nexport default endowmentModule;\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createCrypto
|
|
3
|
+
} from "./chunk-Q42NNJFY.mjs";
|
|
4
|
+
import {
|
|
5
|
+
rootRealmGlobal
|
|
6
|
+
} from "./chunk-IX5S3V47.mjs";
|
|
7
|
+
|
|
8
|
+
// src/common/endowments/math.ts
|
|
9
|
+
function createMath() {
|
|
10
|
+
const keys = Object.getOwnPropertyNames(
|
|
11
|
+
rootRealmGlobal.Math
|
|
12
|
+
);
|
|
13
|
+
const math = keys.reduce((target, key) => {
|
|
14
|
+
if (key === "random") {
|
|
15
|
+
return target;
|
|
16
|
+
}
|
|
17
|
+
return { ...target, [key]: rootRealmGlobal.Math[key] };
|
|
18
|
+
}, {});
|
|
19
|
+
const { crypto: hardenedCrypto } = createCrypto();
|
|
20
|
+
return harden({
|
|
21
|
+
Math: {
|
|
22
|
+
...math,
|
|
23
|
+
random: () => {
|
|
24
|
+
return hardenedCrypto.getRandomValues(new Uint32Array(1))[0] / 2 ** 32;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
var endowmentModule = {
|
|
30
|
+
names: ["Math"],
|
|
31
|
+
factory: createMath
|
|
32
|
+
};
|
|
33
|
+
var math_default = endowmentModule;
|
|
34
|
+
|
|
35
|
+
export {
|
|
36
|
+
math_default
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=chunk-BCBKEUCG.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/endowments/math.ts"],"sourcesContent":["import { rootRealmGlobal } from '../globalObject';\nimport { createCrypto } from './crypto';\n\n/**\n * Create a {@link Math} object, with the same properties as the global\n * {@link Math} object, but with the {@link Math.random} method replaced.\n *\n * @returns The {@link Math} object with the {@link Math.random} method\n * replaced.\n */\nfunction createMath() {\n // `Math` does not work with `Object.keys`, `Object.entries`, etc., so we\n // need to create a new object with the same properties.\n const keys = Object.getOwnPropertyNames(\n rootRealmGlobal.Math,\n ) as (keyof typeof Math)[];\n\n const math = keys.reduce<Partial<Math>>((target, key) => {\n if (key === 'random') {\n return target;\n }\n\n return { ...target, [key]: rootRealmGlobal.Math[key] };\n }, {});\n\n // Since the math endowment requires crypto, we can leverage the crypto endowment factory to get a hardened and platform agnostic instance of webcrypto\n const { crypto: hardenedCrypto } = createCrypto();\n\n return harden({\n Math: {\n ...math,\n random: () => {\n // NOTE: This is not intended to be a secure replacement for the weak\n // random number generator used by `Math.random`. It is only intended to\n // prevent side channel attacks of `Math.random` by replacing it with an\n // alternative implementation that is not vulnerable to the same\n // attacks.\n //\n // This does not mean that this implementation is secure. It is not\n // intended to be used in a security context, and this implementation\n // may change at any time.\n //\n // To securely generate random numbers, use a cryptographically secure\n // random number generator, such as the one provided by the Web Crypto\n // API:\n //\n // - https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/generateKey\n // - https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues\n return hardenedCrypto.getRandomValues(new Uint32Array(1))[0] / 2 ** 32;\n },\n },\n });\n}\n\nconst endowmentModule = {\n names: ['Math'] as const,\n factory: createMath,\n};\n\nexport default endowmentModule;\n"],"mappings":";;;;;;;;AAUA,SAAS,aAAa;AAGpB,QAAM,OAAO,OAAO;AAAA,IAClB,gBAAgB;AAAA,EAClB;AAEA,QAAM,OAAO,KAAK,OAAsB,CAAC,QAAQ,QAAQ;AACvD,QAAI,QAAQ,UAAU;AACpB,aAAO;AAAA,IACT;AAEA,WAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,GAAG,gBAAgB,KAAK,GAAG,EAAE;AAAA,EACvD,GAAG,CAAC,CAAC;AAGL,QAAM,EAAE,QAAQ,eAAe,IAAI,aAAa;AAEhD,SAAO,OAAO;AAAA,IACZ,MAAM;AAAA,MACJ,GAAG;AAAA,MACH,QAAQ,MAAM;AAiBZ,eAAO,eAAe,gBAAgB,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK;AAAA,MACtE;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,IAAM,kBAAkB;AAAA,EACtB,OAAO,CAAC,MAAM;AAAA,EACd,SAAS;AACX;AAEA,IAAO,eAAQ;","names":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// src/common/sortParams.ts
|
|
2
|
+
var sortParamKeys = (methodParams, params) => {
|
|
3
|
+
if (!params) {
|
|
4
|
+
return [];
|
|
5
|
+
}
|
|
6
|
+
if (params instanceof Array) {
|
|
7
|
+
return params;
|
|
8
|
+
}
|
|
9
|
+
const methodParamsOrder = methodParams.reduce(
|
|
10
|
+
(paramsOrderObj, paramsName, i) => ({
|
|
11
|
+
...paramsOrderObj,
|
|
12
|
+
[paramsName]: i
|
|
13
|
+
}),
|
|
14
|
+
{}
|
|
15
|
+
);
|
|
16
|
+
return Object.entries(params).sort(
|
|
17
|
+
([name1, _1], [name2, _2]) => methodParamsOrder[name1] - methodParamsOrder[name2]
|
|
18
|
+
).map(([_, val]) => val);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
sortParamKeys
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=chunk-BTEAZZKP.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/sortParams.ts"],"sourcesContent":["// original source sortParamKeys from: https://github.com/etclabscore/sig.tools/blob/master/src/postMessageServer/postMessageServer.ts#L75-L77\n\nimport type { JsonRpcParams } from '@metamask/utils';\n\n/**\n * Deterministically sort JSON-RPC parameter keys. This makes it possible to\n * support both arrays and objects as parameters. Objects are sorted and turned\n * into arrays, for easier consumption by the snap.\n *\n * The order is defined by the `method` parameter.\n *\n * @param methodParams - The parameters of the JSON-RPC method, which\n * determines the ordering for the parameters.\n * @param params - JSON-RPC parameters as object or array.\n * @returns The values for the sorted keys. If `params` is not provided, this\n * returns an empty array. If `params` is an array, this returns the same\n * `params`.\n */\nexport const sortParamKeys = (\n methodParams: string[],\n params?: JsonRpcParams,\n) => {\n if (!params) {\n return [];\n }\n\n if (params instanceof Array) {\n return params;\n }\n\n const methodParamsOrder: { [k: string]: number } = methodParams.reduce(\n (paramsOrderObj, paramsName, i) => ({\n ...paramsOrderObj,\n [paramsName]: i,\n }),\n {},\n );\n\n return Object.entries(params)\n .sort(\n ([name1, _1], [name2, _2]) =>\n methodParamsOrder[name1] - methodParamsOrder[name2],\n )\n .map(([_, val]) => val);\n};\n"],"mappings":";AAkBO,IAAM,gBAAgB,CAC3B,cACA,WACG;AACH,MAAI,CAAC,QAAQ;AACX,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,kBAAkB,OAAO;AAC3B,WAAO;AAAA,EACT;AAEA,QAAM,oBAA6C,aAAa;AAAA,IAC9D,CAAC,gBAAgB,YAAY,OAAO;AAAA,MAClC,GAAG;AAAA,MACH,CAAC,UAAU,GAAG;AAAA,IAChB;AAAA,IACA,CAAC;AAAA,EACH;AAEA,SAAO,OAAO,QAAQ,MAAM,EACzB;AAAA,IACC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MACtB,kBAAkB,KAAK,IAAI,kBAAkB,KAAK;AAAA,EACtD,EACC,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,GAAG;AAC1B;","names":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/common/sortParams.ts
|
|
2
|
+
var sortParamKeys = (methodParams, params) => {
|
|
3
|
+
if (!params) {
|
|
4
|
+
return [];
|
|
5
|
+
}
|
|
6
|
+
if (params instanceof Array) {
|
|
7
|
+
return params;
|
|
8
|
+
}
|
|
9
|
+
const methodParamsOrder = methodParams.reduce(
|
|
10
|
+
(paramsOrderObj, paramsName, i) => ({
|
|
11
|
+
...paramsOrderObj,
|
|
12
|
+
[paramsName]: i
|
|
13
|
+
}),
|
|
14
|
+
{}
|
|
15
|
+
);
|
|
16
|
+
return Object.entries(params).sort(
|
|
17
|
+
([name1, _1], [name2, _2]) => methodParamsOrder[name1] - methodParamsOrder[name2]
|
|
18
|
+
).map(([_, val]) => val);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
exports.sortParamKeys = sortParamKeys;
|
|
24
|
+
//# sourceMappingURL=chunk-CV5LC4PP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/sortParams.ts"],"names":[],"mappings":";AAkBO,IAAM,gBAAgB,CAC3B,cACA,WACG;AACH,MAAI,CAAC,QAAQ;AACX,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,kBAAkB,OAAO;AAC3B,WAAO;AAAA,EACT;AAEA,QAAM,oBAA6C,aAAa;AAAA,IAC9D,CAAC,gBAAgB,YAAY,OAAO;AAAA,MAClC,GAAG;AAAA,MACH,CAAC,UAAU,GAAG;AAAA,IAChB;AAAA,IACA,CAAC;AAAA,EACH;AAEA,SAAO,OAAO,QAAQ,MAAM,EACzB;AAAA,IACC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MACtB,kBAAkB,KAAK,IAAI,kBAAkB,KAAK;AAAA,EACtD,EACC,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,GAAG;AAC1B","sourcesContent":["// original source sortParamKeys from: https://github.com/etclabscore/sig.tools/blob/master/src/postMessageServer/postMessageServer.ts#L75-L77\n\nimport type { JsonRpcParams } from '@metamask/utils';\n\n/**\n * Deterministically sort JSON-RPC parameter keys. This makes it possible to\n * support both arrays and objects as parameters. Objects are sorted and turned\n * into arrays, for easier consumption by the snap.\n *\n * The order is defined by the `method` parameter.\n *\n * @param methodParams - The parameters of the JSON-RPC method, which\n * determines the ordering for the parameters.\n * @param params - JSON-RPC parameters as object or array.\n * @returns The values for the sorted keys. If `params` is not provided, this\n * returns an empty array. If `params` is an array, this returns the same\n * `params`.\n */\nexport const sortParamKeys = (\n methodParams: string[],\n params?: JsonRpcParams,\n) => {\n if (!params) {\n return [];\n }\n\n if (params instanceof Array) {\n return params;\n }\n\n const methodParamsOrder: { [k: string]: number } = methodParams.reduce(\n (paramsOrderObj, paramsName, i) => ({\n ...paramsOrderObj,\n [paramsName]: i,\n }),\n {},\n );\n\n return Object.entries(params)\n .sort(\n ([name1, _1], [name2, _2]) =>\n methodParamsOrder[name1] - methodParamsOrder[name2],\n )\n .map(([_, val]) => val);\n};\n"]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// src/common/endowments/timeout.ts
|
|
2
|
+
import { rpcErrors } from "@metamask/rpc-errors";
|
|
3
|
+
var MINIMUM_TIMEOUT = 10;
|
|
4
|
+
var createTimeout = () => {
|
|
5
|
+
const registeredHandles = /* @__PURE__ */ new Map();
|
|
6
|
+
const _setTimeout = (handler, timeout) => {
|
|
7
|
+
if (typeof handler !== "function") {
|
|
8
|
+
throw rpcErrors.internal(
|
|
9
|
+
`The timeout handler must be a function. Received: ${typeof handler}.`
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
harden(handler);
|
|
13
|
+
const handle = Object.freeze(/* @__PURE__ */ Object.create(null));
|
|
14
|
+
const platformHandle = setTimeout(() => {
|
|
15
|
+
registeredHandles.delete(handle);
|
|
16
|
+
handler();
|
|
17
|
+
}, Math.max(MINIMUM_TIMEOUT, timeout ?? 0));
|
|
18
|
+
registeredHandles.set(handle, platformHandle);
|
|
19
|
+
return handle;
|
|
20
|
+
};
|
|
21
|
+
const _clearTimeout = (handle) => {
|
|
22
|
+
const platformHandle = registeredHandles.get(handle);
|
|
23
|
+
if (platformHandle !== void 0) {
|
|
24
|
+
clearTimeout(platformHandle);
|
|
25
|
+
registeredHandles.delete(handle);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const teardownFunction = () => {
|
|
29
|
+
for (const handle of registeredHandles.keys()) {
|
|
30
|
+
_clearTimeout(handle);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
return {
|
|
34
|
+
setTimeout: harden(_setTimeout),
|
|
35
|
+
clearTimeout: harden(_clearTimeout),
|
|
36
|
+
teardownFunction
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
var endowmentModule = {
|
|
40
|
+
names: ["setTimeout", "clearTimeout"],
|
|
41
|
+
factory: createTimeout
|
|
42
|
+
};
|
|
43
|
+
var timeout_default = endowmentModule;
|
|
44
|
+
|
|
45
|
+
export {
|
|
46
|
+
timeout_default
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=chunk-CWCVTRNZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/common/endowments/timeout.ts"],"sourcesContent":["import { rpcErrors } from '@metamask/rpc-errors';\n\nconst MINIMUM_TIMEOUT = 10;\n\n/**\n * Creates a pair of `setTimeout` and `clearTimeout` functions attenuated such\n * that:\n * - `setTimeout` throws if its \"handler\" parameter is not a function.\n * - `clearTimeout` only clears timeouts created by its sibling `setTimeout`,\n * or else no-ops.\n *\n * @returns An object with the attenuated `setTimeout` and `clearTimeout`\n * functions.\n */\nconst createTimeout = () => {\n const registeredHandles = new Map<unknown, unknown>();\n const _setTimeout = (handler: TimerHandler, timeout?: number): unknown => {\n if (typeof handler !== 'function') {\n throw rpcErrors.internal(\n `The timeout handler must be a function. Received: ${typeof handler}.`,\n );\n }\n harden(handler);\n const handle = Object.freeze(Object.create(null));\n const platformHandle = setTimeout(() => {\n registeredHandles.delete(handle);\n handler();\n }, Math.max(MINIMUM_TIMEOUT, timeout ?? 0));\n\n registeredHandles.set(handle, platformHandle);\n return handle;\n };\n\n const _clearTimeout = (handle: unknown): void => {\n const platformHandle = registeredHandles.get(handle);\n if (platformHandle !== undefined) {\n clearTimeout(platformHandle as any);\n registeredHandles.delete(handle);\n }\n };\n\n const teardownFunction = (): void => {\n for (const handle of registeredHandles.keys()) {\n _clearTimeout(handle);\n }\n };\n\n return {\n setTimeout: harden(_setTimeout),\n clearTimeout: harden(_clearTimeout),\n teardownFunction,\n } as const;\n};\n\nconst endowmentModule = {\n names: ['setTimeout', 'clearTimeout'] as const,\n factory: createTimeout,\n};\nexport default endowmentModule;\n"],"mappings":";AAAA,SAAS,iBAAiB;AAE1B,IAAM,kBAAkB;AAYxB,IAAM,gBAAgB,MAAM;AAC1B,QAAM,oBAAoB,oBAAI,IAAsB;AACpD,QAAM,cAAc,CAAC,SAAuB,YAA8B;AACxE,QAAI,OAAO,YAAY,YAAY;AACjC,YAAM,UAAU;AAAA,QACd,qDAAqD,OAAO,OAAO;AAAA,MACrE;AAAA,IACF;AACA,WAAO,OAAO;AACd,UAAM,SAAS,OAAO,OAAO,uBAAO,OAAO,IAAI,CAAC;AAChD,UAAM,iBAAiB,WAAW,MAAM;AACtC,wBAAkB,OAAO,MAAM;AAC/B,cAAQ;AAAA,IACV,GAAG,KAAK,IAAI,iBAAiB,WAAW,CAAC,CAAC;AAE1C,sBAAkB,IAAI,QAAQ,cAAc;AAC5C,WAAO;AAAA,EACT;AAEA,QAAM,gBAAgB,CAAC,WAA0B;AAC/C,UAAM,iBAAiB,kBAAkB,IAAI,MAAM;AACnD,QAAI,mBAAmB,QAAW;AAChC,mBAAa,cAAqB;AAClC,wBAAkB,OAAO,MAAM;AAAA,IACjC;AAAA,EACF;AAEA,QAAM,mBAAmB,MAAY;AACnC,eAAW,UAAU,kBAAkB,KAAK,GAAG;AAC7C,oBAAc,MAAM;AAAA,IACtB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,YAAY,OAAO,WAAW;AAAA,IAC9B,cAAc,OAAO,aAAa;AAAA,IAClC;AAAA,EACF;AACF;AAEA,IAAM,kBAAkB;AAAA,EACtB,OAAO,CAAC,cAAc,cAAc;AAAA,EACpC,SAAS;AACX;AACA,IAAO,kBAAQ;","names":[]}
|