wasm-idle 0.7.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +760 -81
- package/dist/index.d.ts +4 -9
- package/dist/index.js +2 -4
- package/dist/playground/applicationAssets.d.ts +4 -0
- package/dist/playground/applicationAssets.js +277 -0
- package/dist/playground/assemblyscript.d.ts +41 -0
- package/dist/playground/assemblyscript.js +630 -0
- package/dist/playground/assetBridge.d.ts +18 -7
- package/dist/playground/assetBridge.js +824 -100
- package/dist/playground/assets.d.ts +813 -19
- package/dist/playground/assets.js +2096 -156
- package/dist/playground/awk.d.ts +5 -0
- package/dist/playground/awk.js +60 -0
- package/dist/playground/bash.d.ts +53 -0
- package/dist/playground/bash.js +1096 -0
- package/dist/playground/bashWorkerProtocol.d.ts +88 -0
- package/dist/playground/bashWorkerProtocol.js +135 -0
- package/dist/playground/bqn.d.ts +5 -0
- package/dist/playground/bqn.js +57 -0
- package/dist/playground/bqnPreflight.d.ts +26 -0
- package/dist/playground/bqnPreflight.js +399 -0
- package/dist/playground/c3.d.ts +15 -0
- package/dist/playground/c3.js +154 -0
- package/dist/playground/clang.d.ts +35 -19
- package/dist/playground/clang.js +241 -52
- package/dist/playground/clangAssetIntegrity.d.ts +32 -0
- package/dist/playground/clangAssetIntegrity.js +8 -0
- package/dist/playground/clojurescript.d.ts +5 -0
- package/dist/playground/clojurescript.js +59 -0
- package/dist/playground/clojurescriptPreflight.d.ts +26 -0
- package/dist/playground/clojurescriptPreflight.js +383 -0
- package/dist/playground/cobol.d.ts +46 -0
- package/dist/playground/cobol.js +703 -0
- package/dist/playground/d.d.ts +47 -0
- package/dist/playground/d.js +644 -0
- package/dist/playground/dOuterAssets.d.ts +16 -0
- package/dist/playground/dOuterAssets.js +163 -0
- package/dist/playground/dotnet.d.ts +99 -0
- package/dist/playground/dotnet.js +1131 -0
- package/dist/playground/duckdb.d.ts +36 -0
- package/dist/playground/duckdb.js +542 -0
- package/dist/playground/elixir.d.ts +18 -10
- package/dist/playground/elixir.js +630 -96
- package/dist/playground/elixirAssets.d.ts +6 -0
- package/dist/playground/elixirAssets.js +33 -0
- package/dist/playground/executionObservation.d.ts +22 -0
- package/dist/playground/executionObservation.js +65 -0
- package/dist/playground/forth.d.ts +5 -0
- package/dist/playground/forth.js +53 -0
- package/dist/playground/forthPreflight.d.ts +24 -0
- package/dist/playground/forthPreflight.js +198 -0
- package/dist/playground/fortran.d.ts +47 -0
- package/dist/playground/fortran.js +651 -0
- package/dist/playground/fortranAssets.d.ts +6 -0
- package/dist/playground/fortranAssets.js +27 -0
- package/dist/playground/gleam.d.ts +6 -0
- package/dist/playground/gleam.js +33 -0
- package/dist/playground/go.d.ts +17 -11
- package/dist/playground/go.js +376 -72
- package/dist/playground/goDebugInstrumentation.d.ts +1 -0
- package/dist/playground/goDebugInstrumentation.js +229 -0
- package/dist/playground/haskell.d.ts +44 -0
- package/dist/playground/haskell.js +678 -0
- package/dist/playground/haskellAssets.d.ts +24 -0
- package/dist/playground/haskellAssets.js +93 -0
- package/dist/playground/index.d.ts +1 -1
- package/dist/playground/index.js +360 -111
- package/dist/playground/j.d.ts +5 -0
- package/dist/playground/j.js +60 -0
- package/dist/playground/jPreflight.d.ts +26 -0
- package/dist/playground/jPreflight.js +372 -0
- package/dist/playground/janet.d.ts +5 -0
- package/dist/playground/janet.js +64 -0
- package/dist/playground/java.d.ts +24 -10
- package/dist/playground/java.js +706 -84
- package/dist/playground/javaSource.d.ts +5 -0
- package/dist/playground/javaSource.js +16 -0
- package/dist/playground/javaStdin.d.ts +1 -1
- package/dist/playground/javaStdin.js +13 -4
- package/dist/playground/julia.d.ts +5 -0
- package/dist/playground/julia.js +64 -0
- package/dist/playground/lfortran.d.ts +8 -0
- package/dist/playground/lfortran.js +30 -0
- package/dist/playground/lfortranAssets.d.ts +21 -0
- package/dist/playground/lfortranAssets.js +118 -0
- package/dist/playground/lisp.d.ts +45 -0
- package/dist/playground/lisp.js +640 -0
- package/dist/playground/lispAssets.d.ts +9 -0
- package/dist/playground/lispAssets.js +74 -0
- package/dist/playground/lldbManifest.d.ts +3 -0
- package/dist/playground/lldbManifest.js +155 -0
- package/dist/playground/lldbSession.d.ts +115 -0
- package/dist/playground/lldbSession.js +1347 -0
- package/dist/playground/loadingProgress.d.ts +16 -0
- package/dist/playground/loadingProgress.js +166 -0
- package/dist/playground/lua.d.ts +44 -0
- package/dist/playground/lua.js +630 -0
- package/dist/playground/nim.d.ts +5 -0
- package/dist/playground/nim.js +76 -0
- package/dist/playground/objectivec.d.ts +39 -0
- package/dist/playground/objectivec.js +288 -0
- package/dist/playground/ocaml.d.ts +28 -10
- package/dist/playground/ocaml.js +815 -253
- package/dist/playground/octave.d.ts +43 -0
- package/dist/playground/octave.js +783 -0
- package/dist/playground/options.d.ts +19 -40
- package/dist/playground/options.js +2 -1
- package/dist/playground/pascal.d.ts +5 -0
- package/dist/playground/pascal.js +60 -0
- package/dist/playground/perl.d.ts +5 -0
- package/dist/playground/perl.js +61 -0
- package/dist/playground/php.d.ts +44 -0
- package/dist/playground/php.js +665 -0
- package/dist/playground/prolog.d.ts +6 -0
- package/dist/playground/prolog.js +75 -0
- package/dist/playground/python.d.ts +20 -14
- package/dist/playground/python.js +445 -101
- package/dist/playground/pythonPackageLock.d.ts +6 -0
- package/dist/playground/pythonPackageLock.js +56 -0
- package/dist/playground/r.d.ts +44 -0
- package/dist/playground/r.js +637 -0
- package/dist/playground/ruby.d.ts +46 -0
- package/dist/playground/ruby.js +732 -0
- package/dist/playground/rubyAssets.d.ts +23 -0
- package/dist/playground/rubyAssets.js +68 -0
- package/dist/playground/rubyTestPreflight.d.ts +2 -0
- package/dist/playground/rubyTestPreflight.js +18 -0
- package/dist/playground/runtimeModule.d.ts +1 -0
- package/dist/playground/runtimeModule.js +5 -0
- package/dist/playground/rust.d.ts +44 -13
- package/dist/playground/rust.js +714 -76
- package/dist/playground/rustExecutableGraph.d.ts +85 -0
- package/dist/playground/rustExecutableGraph.js +946 -0
- package/dist/playground/rustWorkerLimits.d.ts +17 -0
- package/dist/playground/rustWorkerLimits.js +34 -0
- package/dist/playground/sandbox.d.ts +16 -10
- package/dist/playground/sharedBuffer.d.ts +6 -0
- package/dist/playground/sharedBuffer.js +12 -0
- package/dist/playground/sqlite.d.ts +38 -0
- package/dist/playground/sqlite.js +550 -0
- package/dist/playground/staticRuntimeModuleVersion.d.ts +1 -0
- package/dist/playground/staticRuntimeModuleVersion.js +2 -0
- package/dist/playground/staticRuntimePreflight.d.ts +13 -0
- package/dist/playground/staticRuntimePreflight.js +231 -0
- package/dist/playground/staticRuntimePreflightExecute.d.ts +8 -0
- package/dist/playground/staticRuntimePreflightExecute.js +66 -0
- package/dist/playground/staticRuntimePreflightProtocol.d.ts +68 -0
- package/dist/playground/staticRuntimePreflightProtocol.js +339 -0
- package/dist/playground/staticStdinRing.d.ts +45 -0
- package/dist/playground/staticStdinRing.js +158 -0
- package/dist/playground/staticWorkerRuntime.d.ts +154 -0
- package/dist/playground/staticWorkerRuntime.js +1917 -0
- package/dist/playground/stdinBuffer.d.ts +9 -7
- package/dist/playground/stdinBuffer.js +9 -18
- package/dist/playground/swift.d.ts +5 -0
- package/dist/playground/swift.js +17 -0
- package/dist/playground/tcl.d.ts +5 -0
- package/dist/playground/tcl.js +62 -0
- package/dist/playground/teavmConfig.d.ts +1 -1
- package/dist/playground/teavmConfig.js +2 -2
- package/dist/playground/tinygo.d.ts +48 -18
- package/dist/playground/tinygo.js +1202 -329
- package/dist/playground/tinygoExecutableGraph.d.ts +44 -0
- package/dist/playground/tinygoExecutableGraph.js +449 -0
- package/dist/playground/typescript.d.ts +55 -0
- package/dist/playground/typescript.js +924 -0
- package/dist/playground/wasm.d.ts +43 -0
- package/dist/playground/wasm.js +608 -0
- package/dist/playground/wasmAwkVersion.d.ts +59 -0
- package/dist/playground/wasmAwkVersion.js +31 -0
- package/dist/playground/wasmBashVersion.d.ts +63 -0
- package/dist/playground/wasmBashVersion.js +36 -0
- package/dist/playground/wasmBqnVersion.d.ts +24 -0
- package/dist/playground/wasmBqnVersion.js +24 -0
- package/dist/playground/wasmC3Version.d.ts +20 -0
- package/dist/playground/wasmC3Version.js +21 -0
- package/dist/playground/wasmClojureScriptVersion.d.ts +21 -0
- package/dist/playground/wasmClojureScriptVersion.js +21 -0
- package/dist/playground/wasmDIntegrity.d.ts +15 -0
- package/dist/playground/wasmDIntegrity.js +15 -0
- package/dist/playground/wasmDVersion.d.ts +1 -0
- package/dist/playground/wasmDVersion.js +1 -0
- package/dist/playground/wasmDebugVersion.d.ts +6 -0
- package/dist/playground/wasmDebugVersion.js +6 -0
- package/dist/playground/wasmDotnetVersion.d.ts +1 -0
- package/dist/playground/wasmDotnetVersion.js +1 -0
- package/dist/playground/wasmElixirVersion.d.ts +21 -1
- package/dist/playground/wasmElixirVersion.js +21 -1
- package/dist/playground/wasmForthVersion.d.ts +18 -0
- package/dist/playground/wasmForthVersion.js +18 -0
- package/dist/playground/wasmFortranExecutionAssets.d.ts +15 -0
- package/dist/playground/wasmFortranExecutionAssets.js +15 -0
- package/dist/playground/wasmFortranVersion.d.ts +1 -0
- package/dist/playground/wasmFortranVersion.js +1 -0
- package/dist/playground/wasmGleamVersion.d.ts +5 -0
- package/dist/playground/wasmGleamVersion.js +5 -0
- package/dist/playground/wasmGoVersion.d.ts +1 -1
- package/dist/playground/wasmGoVersion.js +1 -1
- package/dist/playground/wasmHaskellVersion.d.ts +1 -0
- package/dist/playground/wasmHaskellVersion.js +1 -0
- package/dist/playground/wasmJVersion.d.ts +24 -0
- package/dist/playground/wasmJVersion.js +24 -0
- package/dist/playground/wasmJanetVersion.d.ts +53 -0
- package/dist/playground/wasmJanetVersion.js +30 -0
- package/dist/playground/wasmJuliaVersion.d.ts +71 -0
- package/dist/playground/wasmJuliaVersion.js +39 -0
- package/dist/playground/wasmLfortranVersion.d.ts +28 -0
- package/dist/playground/wasmLfortranVersion.js +29 -0
- package/dist/playground/wasmLispVersion.d.ts +1 -0
- package/dist/playground/wasmLispVersion.js +1 -0
- package/dist/playground/wasmLuaVersion.d.ts +1 -0
- package/dist/playground/wasmLuaVersion.js +1 -0
- package/dist/playground/wasmNimVersion.d.ts +125 -0
- package/dist/playground/wasmNimVersion.js +66 -0
- package/dist/playground/wasmObjectiveCVersion.d.ts +27 -0
- package/dist/playground/wasmObjectiveCVersion.js +27 -0
- package/dist/playground/wasmOcamlVersion.d.ts +12 -1
- package/dist/playground/wasmOcamlVersion.js +12 -1
- package/dist/playground/wasmOctaveVersion.d.ts +1 -0
- package/dist/playground/wasmOctaveVersion.js +1 -0
- package/dist/playground/wasmPascalVersion.d.ts +61 -0
- package/dist/playground/wasmPascalVersion.js +34 -0
- package/dist/playground/wasmPerlVersion.d.ts +71 -0
- package/dist/playground/wasmPerlVersion.js +39 -0
- package/dist/playground/wasmPrologVersion.d.ts +31 -0
- package/dist/playground/wasmPrologVersion.js +31 -0
- package/dist/playground/wasmRVersion.d.ts +1 -0
- package/dist/playground/wasmRVersion.js +1 -0
- package/dist/playground/wasmRustVersion.d.ts +1306 -1
- package/dist/playground/wasmRustVersion.js +1458 -1
- package/dist/playground/wasmSwiftVersion.d.ts +1 -0
- package/dist/playground/wasmSwiftVersion.js +1 -0
- package/dist/playground/wasmTclVersion.d.ts +85 -0
- package/dist/playground/wasmTclVersion.js +46 -0
- package/dist/playground/wasmTinyGoVersion.d.ts +98 -1
- package/dist/playground/wasmTinyGoVersion.js +107 -1
- package/dist/playground/wasmTypeScriptVersion.d.ts +5 -0
- package/dist/playground/wasmTypeScriptVersion.js +5 -0
- package/dist/playground/wasmWatVersion.d.ts +1 -0
- package/dist/playground/wasmWatVersion.js +1 -0
- package/dist/playground/wasmZigVersion.d.ts +13 -0
- package/dist/playground/wasmZigVersion.js +13 -0
- package/dist/playground/wat.d.ts +44 -0
- package/dist/playground/wat.js +622 -0
- package/dist/playground/worker/assemblyscript.js +339 -0
- package/dist/playground/worker/assets.d.ts +7 -0
- package/dist/playground/worker/assets.js +288 -39
- package/dist/playground/worker/bash.js +338 -0
- package/dist/playground/worker/bashNestedBootstrap.d.ts +6 -0
- package/dist/playground/worker/bashNestedBootstrap.js +59 -0
- package/dist/playground/worker/bashRuntime.d.ts +89 -0
- package/dist/playground/worker/bashRuntime.js +982 -0
- package/dist/playground/worker/clang.js +92 -13
- package/dist/playground/worker/cobol.js +107 -0
- package/dist/playground/worker/d.js +199 -0
- package/dist/playground/worker/dotnet.js +141 -0
- package/dist/playground/worker/duckdb.d.ts +1 -0
- package/dist/playground/worker/duckdb.js +136 -0
- package/dist/playground/worker/elixir.js +307 -41
- package/dist/playground/worker/fortran.d.ts +1 -0
- package/dist/playground/worker/fortran.js +295 -0
- package/dist/playground/worker/go.js +246 -40
- package/dist/playground/worker/haskell.d.ts +7 -0
- package/dist/playground/worker/haskell.js +465 -0
- package/dist/playground/worker/java.js +59 -20
- package/dist/playground/worker/lisp.d.ts +1 -0
- package/dist/playground/worker/lisp.js +195 -0
- package/dist/playground/worker/lua.d.ts +1 -0
- package/dist/playground/worker/lua.js +163 -0
- package/dist/playground/worker/objectivec.d.ts +1 -0
- package/dist/playground/worker/objectivec.js +10 -0
- package/dist/playground/worker/ocaml.js +206 -58
- package/dist/playground/worker/php.d.ts +1 -0
- package/dist/playground/worker/php.js +261 -0
- package/dist/playground/worker/python.js +201 -44
- package/dist/playground/worker/r.d.ts +1 -0
- package/dist/playground/worker/r.js +192 -0
- package/dist/playground/worker/ruby.d.ts +1 -0
- package/dist/playground/worker/ruby.js +248 -0
- package/dist/playground/worker/runtimeAssetFetch.d.ts +15 -0
- package/dist/playground/worker/runtimeAssetFetch.js +375 -0
- package/dist/playground/worker/rust.js +546 -20
- package/dist/playground/worker/sqlite.d.ts +1 -0
- package/dist/playground/worker/sqlite.js +112 -0
- package/dist/playground/worker/staticRuntimePreflight.d.ts +1 -0
- package/dist/playground/worker/staticRuntimePreflight.js +56 -0
- package/dist/playground/worker/tinygo.js +34 -9
- package/dist/playground/worker/typescript.d.ts +1 -0
- package/dist/playground/worker/typescript.js +251 -0
- package/dist/playground/worker/wasm.d.ts +1 -0
- package/dist/playground/worker/wasm.js +273 -0
- package/dist/playground/worker/wat.d.ts +1 -0
- package/dist/playground/worker/wat.js +188 -0
- package/dist/playground/worker/zig.d.ts +8 -0
- package/dist/playground/worker/zig.js +578 -0
- package/dist/playground/workerProgress.d.ts +15 -0
- package/dist/playground/workerProgress.js +72 -0
- package/dist/playground/workerSession.d.ts +28 -0
- package/dist/playground/workerSession.js +164 -0
- package/dist/playground/zig.d.ts +46 -0
- package/dist/playground/zig.js +690 -0
- package/dist/playground/zigAssets.d.ts +6 -0
- package/dist/playground/zigAssets.js +49 -0
- package/package.json +234 -105
- package/dist/clang/app.d.ts +0 -75
- package/dist/clang/app.js +0 -744
- package/dist/clang/apply.d.ts +0 -2
- package/dist/clang/apply.js +0 -11
- package/dist/clang/color.d.ts +0 -3
- package/dist/clang/color.js +0 -3
- package/dist/clang/encode.d.ts +0 -4
- package/dist/clang/encode.js +0 -20
- package/dist/clang/error.d.ts +0 -14
- package/dist/clang/error.js +0 -27
- package/dist/clang/gccCompat.d.ts +0 -15
- package/dist/clang/gccCompat.js +0 -767
- package/dist/clang/index.d.ts +0 -85
- package/dist/clang/index.js +0 -1077
- package/dist/clang/memory/index.d.ts +0 -4
- package/dist/clang/memory/index.js +0 -4
- package/dist/clang/memory/memFs.d.ts +0 -35
- package/dist/clang/memory/memFs.js +0 -132
- package/dist/clang/memory/memory.d.ts +0 -22
- package/dist/clang/memory/memory.js +0 -73
- package/dist/clang/memory/tar.d.ts +0 -2
- package/dist/clang/memory/tar.js +0 -59
- package/dist/clang/url.d.ts +0 -4
- package/dist/clang/url.js +0 -5
- package/dist/clang/wasm.d.ts +0 -4
- package/dist/clang/wasm.js +0 -50
- package/dist/clangd/config.d.ts +0 -18
- package/dist/clangd/config.js +0 -14
- package/dist/clangd/jsonStream.d.ts +0 -9
- package/dist/clangd/jsonStream.js +0 -48
- package/dist/clangd/session.d.ts +0 -18
- package/dist/clangd/session.js +0 -112
- package/dist/clangd/worker.js +0 -131
- package/dist/debug/controller.svelte.d.ts +0 -43
- package/dist/debug/controller.svelte.js +0 -268
- package/dist/debug/editor/index.d.ts +0 -2
- package/dist/debug/editor/index.js +0 -1
- package/dist/debug/editor/monaco.d.ts +0 -26
- package/dist/debug/editor/monaco.js +0 -128
- package/dist/debug/expression.d.ts +0 -26
- package/dist/debug/expression.js +0 -547
- package/dist/debug/index.d.ts +0 -8
- package/dist/debug/index.js +0 -5
- package/dist/debug/language/cpp.d.ts +0 -2
- package/dist/debug/language/cpp.js +0 -7
- package/dist/debug/language/index.d.ts +0 -3
- package/dist/debug/language/index.js +0 -2
- package/dist/debug/language/python.d.ts +0 -2
- package/dist/debug/language/python.js +0 -14
- package/dist/debug/language/types.d.ts +0 -6
- package/dist/debug/locals.d.ts +0 -2
- package/dist/debug/locals.js +0 -8
- package/dist/lsp/cpp/server.d.ts +0 -2
- package/dist/lsp/cpp/server.js +0 -68
- package/dist/lsp/index.d.ts +0 -5
- package/dist/lsp/index.js +0 -4
- package/dist/lsp/python/main.worker.js +0 -92
- package/dist/lsp/python/package/arcturus_python_lsp/__init__.py +0 -3
- package/dist/lsp/python/package/arcturus_python_lsp/server.py +0 -462
- package/dist/lsp/python/server.d.ts +0 -2
- package/dist/lsp/python/server.js +0 -54
- package/dist/lsp/registry.d.ts +0 -2
- package/dist/lsp/registry.js +0 -12
- package/dist/lsp/runtime.d.ts +0 -5
- package/dist/lsp/runtime.js +0 -31
- package/dist/lsp/types.d.ts +0 -17
- package/dist/terminal/Terminal.svelte +0 -422
- package/dist/terminal/Terminal.svelte.d.ts +0 -26
- package/dist/terminal/index.d.ts +0 -7
- package/dist/terminal/index.js +0 -5
- package/dist/terminal/plugin/index.d.ts +0 -9
- package/dist/terminal/plugin/index.js +0 -19
- package/dist/terminal/theme.d.ts +0 -49
- package/dist/terminal/theme.js +0 -49
- package/dist/terminal/types.d.ts +0 -18
- package/dist/utils/vscodeJsonrpcBrowser.d.ts +0 -5
- package/dist/utils/vscodeJsonrpcBrowser.js +0 -4
- /package/dist/{clangd/worker.d.ts → playground/worker/assemblyscript.d.ts} +0 -0
- /package/dist/{debug/language/types.js → playground/worker/bash.d.ts} +0 -0
- /package/dist/{lsp/python/main.worker.d.ts → playground/worker/cobol.d.ts} +0 -0
- /package/dist/{lsp/types.js → playground/worker/d.d.ts} +0 -0
- /package/dist/{terminal/types.js → playground/worker/dotnet.d.ts} +0 -0
|
@@ -1,13 +1,34 @@
|
|
|
1
1
|
import { waitForBufferedStdin } from '../stdinBuffer';
|
|
2
|
+
import { verifyRuntimeAssetIntegrity } from '@wasm-idle/core';
|
|
3
|
+
import { fetchRuntimeAssetBytes } from './runtimeAssetFetch';
|
|
4
|
+
const MAX_OCAML_MANIFEST_BYTES = 4 * 1024 * 1024;
|
|
5
|
+
const MAX_OCAML_RUNTIME_ENTRY_BYTES = 32 * 1024 * 1024;
|
|
6
|
+
const DEFAULT_MAX_OCAML_ASSET_BYTES = 128 * 1024 * 1024;
|
|
7
|
+
const textDecoder = new TextDecoder();
|
|
2
8
|
let moduleUrl = '';
|
|
3
9
|
let manifestUrl = '';
|
|
4
|
-
let
|
|
5
|
-
let
|
|
10
|
+
let moduleReceipt = null;
|
|
11
|
+
let manifestReceipt = null;
|
|
12
|
+
let maxAssetBytes = DEFAULT_MAX_OCAML_ASSET_BYTES;
|
|
13
|
+
let loadedModuleIdentity = '';
|
|
14
|
+
let loadedManifestIdentity = '';
|
|
15
|
+
let loadedManifestMaxAssetBytes = 0;
|
|
6
16
|
let compilerPromise = null;
|
|
7
17
|
let manifestPromise = null;
|
|
8
18
|
let compiledResult = null;
|
|
9
19
|
let compiledCacheKey = '';
|
|
10
20
|
let stdinBufferOcaml = null;
|
|
21
|
+
function requireOuterAssetReceipt(value, label) {
|
|
22
|
+
if (!value ||
|
|
23
|
+
!Number.isSafeInteger(value.bytes) ||
|
|
24
|
+
value.bytes <= 0 ||
|
|
25
|
+
typeof value.sha256 !== 'string' ||
|
|
26
|
+
!/^[a-f0-9]{64}$/u.test(value.sha256)) {
|
|
27
|
+
throw new TypeError(`OCaml ${label} receipt is invalid`);
|
|
28
|
+
}
|
|
29
|
+
return Object.freeze({ bytes: value.bytes, sha256: value.sha256 });
|
|
30
|
+
}
|
|
31
|
+
const outerAssetIdentity = (url, receipt) => JSON.stringify([url, receipt.bytes, receipt.sha256]);
|
|
11
32
|
function appendTrailingNewline(text) {
|
|
12
33
|
return text.endsWith('\n') ? text : `${text}\n`;
|
|
13
34
|
}
|
|
@@ -34,21 +55,27 @@ function rewriteAbsoluteBundleUrl(url, currentManifestUrl) {
|
|
|
34
55
|
const basePath = manifestLocation.pathname.replace(/\/wasm-of-js-of-ocaml\/browser-native-bundle\/browser-native-manifest\.v1\.json$/, '');
|
|
35
56
|
return new URL(`${basePath}${url}`, manifestLocation.origin).toString();
|
|
36
57
|
}
|
|
58
|
+
function rewriteManifestAsset(asset, currentManifestUrl) {
|
|
59
|
+
return {
|
|
60
|
+
...asset,
|
|
61
|
+
url: rewriteAbsoluteBundleUrl(asset.url, currentManifestUrl)
|
|
62
|
+
};
|
|
63
|
+
}
|
|
37
64
|
function rewriteManifest(manifest, currentManifestUrl) {
|
|
38
65
|
return {
|
|
39
66
|
...manifest,
|
|
40
|
-
findlibConf:
|
|
67
|
+
findlibConf: rewriteManifestAsset(manifest.findlibConf, currentManifestUrl),
|
|
41
68
|
tools: {
|
|
42
|
-
ocamlc:
|
|
43
|
-
js_of_ocaml:
|
|
44
|
-
wasm_of_ocaml:
|
|
69
|
+
ocamlc: rewriteManifestAsset(manifest.tools.ocamlc, currentManifestUrl),
|
|
70
|
+
js_of_ocaml: rewriteManifestAsset(manifest.tools.js_of_ocaml, currentManifestUrl),
|
|
71
|
+
wasm_of_ocaml: rewriteManifestAsset(manifest.tools.wasm_of_ocaml, currentManifestUrl)
|
|
45
72
|
},
|
|
46
73
|
...(manifest.binaryenTools
|
|
47
74
|
? {
|
|
48
75
|
binaryenTools: {
|
|
49
|
-
wasm_opt:
|
|
50
|
-
wasm_merge:
|
|
51
|
-
wasm_metadce:
|
|
76
|
+
wasm_opt: rewriteManifestAsset(manifest.binaryenTools.wasm_opt, currentManifestUrl),
|
|
77
|
+
wasm_merge: rewriteManifestAsset(manifest.binaryenTools.wasm_merge, currentManifestUrl),
|
|
78
|
+
wasm_metadce: rewriteManifestAsset(manifest.binaryenTools.wasm_metadce, currentManifestUrl)
|
|
52
79
|
}
|
|
53
80
|
}
|
|
54
81
|
: {}),
|
|
@@ -74,18 +101,58 @@ function rewriteManifest(manifest, currentManifestUrl) {
|
|
|
74
101
|
}))
|
|
75
102
|
};
|
|
76
103
|
}
|
|
77
|
-
|
|
104
|
+
function prepareVerifiedModuleSource(bytes, nextModuleUrl) {
|
|
105
|
+
const source = textDecoder.decode(bytes);
|
|
106
|
+
const withAbsoluteImports = source.replace(/(\bfrom\s+|\bimport\s*(?:\(\s*)?)(['"])(\.{1,2}\/[^'"]+)\2/gu, (_match, prefix, quote, specifier) => `${prefix}${quote}${new URL(specifier, nextModuleUrl).href}${quote}`);
|
|
107
|
+
return withAbsoluteImports.replace(/\bimport\.meta\.url\b/gu, JSON.stringify(nextModuleUrl));
|
|
108
|
+
}
|
|
109
|
+
async function loadCompiler(nextModuleUrl, nextReceipt, nextMaxAssetBytes) {
|
|
78
110
|
if (!nextModuleUrl) {
|
|
79
111
|
throw new Error('OCaml runtime is not configured. Set runtimeAssets.ocaml.moduleUrl and runtimeAssets.ocaml.manifestUrl or sync the bundled wasm-of-js-of-ocaml assets.');
|
|
80
112
|
}
|
|
81
|
-
if (
|
|
113
|
+
if (nextReceipt.bytes > nextMaxAssetBytes) {
|
|
114
|
+
throw new Error(`OCaml module exceeds the ${nextMaxAssetBytes} byte limit`);
|
|
115
|
+
}
|
|
116
|
+
const identity = outerAssetIdentity(nextModuleUrl, nextReceipt);
|
|
117
|
+
if (loadedModuleIdentity === identity && compilerPromise) {
|
|
82
118
|
return await compilerPromise;
|
|
83
119
|
}
|
|
84
|
-
|
|
120
|
+
loadedModuleIdentity = identity;
|
|
85
121
|
compiledResult = null;
|
|
86
122
|
compiledCacheKey = '';
|
|
87
123
|
compilerPromise = (async () => {
|
|
88
|
-
const
|
|
124
|
+
const bytes = await fetchRuntimeAssetBytes({
|
|
125
|
+
url: nextModuleUrl,
|
|
126
|
+
label: 'OCaml runtime module',
|
|
127
|
+
cache: 'no-store',
|
|
128
|
+
maxAssetBytes: nextReceipt.bytes
|
|
129
|
+
});
|
|
130
|
+
await verifyRuntimeAssetIntegrity({
|
|
131
|
+
asset: nextModuleUrl,
|
|
132
|
+
bytes,
|
|
133
|
+
expected: nextReceipt,
|
|
134
|
+
runtimeId: 'OCAML'
|
|
135
|
+
});
|
|
136
|
+
if (typeof URL.createObjectURL !== 'function' ||
|
|
137
|
+
typeof URL.revokeObjectURL !== 'function') {
|
|
138
|
+
throw new Error('OCaml runtime requires Blob URL support');
|
|
139
|
+
}
|
|
140
|
+
const verifiedModuleUrl = URL.createObjectURL(new Blob([prepareVerifiedModuleSource(bytes, nextModuleUrl)], {
|
|
141
|
+
type: 'text/javascript'
|
|
142
|
+
}));
|
|
143
|
+
let module;
|
|
144
|
+
try {
|
|
145
|
+
module = (await import(
|
|
146
|
+
/* @vite-ignore */ verifiedModuleUrl));
|
|
147
|
+
}
|
|
148
|
+
finally {
|
|
149
|
+
try {
|
|
150
|
+
URL.revokeObjectURL(verifiedModuleUrl);
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
// Blob URL cleanup must not replace the verified module import outcome.
|
|
154
|
+
}
|
|
155
|
+
}
|
|
89
156
|
if (typeof module.compile !== 'function') {
|
|
90
157
|
throw new Error('wasm-of-js-of-ocaml bundle must export compile');
|
|
91
158
|
}
|
|
@@ -96,22 +163,79 @@ async function loadCompiler(nextModuleUrl) {
|
|
|
96
163
|
})();
|
|
97
164
|
return await compilerPromise;
|
|
98
165
|
}
|
|
99
|
-
|
|
166
|
+
function resolveMaxAssetBytes(value) {
|
|
167
|
+
const resolved = value ?? DEFAULT_MAX_OCAML_ASSET_BYTES;
|
|
168
|
+
if (!Number.isSafeInteger(resolved) || resolved <= 0) {
|
|
169
|
+
throw new TypeError('OCaml runtime maxAssetBytes must be a positive safe integer');
|
|
170
|
+
}
|
|
171
|
+
return resolved;
|
|
172
|
+
}
|
|
173
|
+
function assertManifestAssetLimit(manifest, limit) {
|
|
174
|
+
const declaredAssets = [
|
|
175
|
+
['findlib.conf', manifest.findlibConf?.bytes],
|
|
176
|
+
['ocamlc', manifest.tools?.ocamlc?.bytes],
|
|
177
|
+
['js_of_ocaml', manifest.tools?.js_of_ocaml?.bytes],
|
|
178
|
+
['wasm_of_ocaml', manifest.tools?.wasm_of_ocaml?.bytes],
|
|
179
|
+
...Object.entries(manifest.binaryenTools || {}).map(([name, asset]) => [name, asset?.bytes]),
|
|
180
|
+
...(manifest.runtimePack
|
|
181
|
+
? [
|
|
182
|
+
['runtime pack index', manifest.runtimePack.indexBytes],
|
|
183
|
+
[
|
|
184
|
+
'runtime pack compressed payload',
|
|
185
|
+
manifest.runtimePack.compressedBytes
|
|
186
|
+
],
|
|
187
|
+
['runtime pack expanded payload', manifest.runtimePack.totalBytes]
|
|
188
|
+
]
|
|
189
|
+
: []),
|
|
190
|
+
...(manifest.ocamlLibFiles || []).map((file) => [file.path, file.size]),
|
|
191
|
+
...(manifest.packages || []).flatMap((manifestPackage) => (manifestPackage.files || []).map((file) => [file.path, file.size]))
|
|
192
|
+
];
|
|
193
|
+
for (const [label, declaredBytes] of declaredAssets) {
|
|
194
|
+
if (Number.isSafeInteger(declaredBytes) && declaredBytes > limit) {
|
|
195
|
+
throw new Error(`OCaml runtime asset ${label} exceeds the ${limit} byte limit`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
async function loadManifest(nextManifestUrl, nextReceipt, nextMaxAssetBytes) {
|
|
100
200
|
if (!nextManifestUrl) {
|
|
101
201
|
throw new Error('OCaml runtime is not configured. Set runtimeAssets.ocaml.moduleUrl and runtimeAssets.ocaml.manifestUrl or sync the bundled wasm-of-js-of-ocaml assets.');
|
|
102
202
|
}
|
|
103
|
-
|
|
203
|
+
const manifestLimit = Math.min(MAX_OCAML_MANIFEST_BYTES, nextMaxAssetBytes);
|
|
204
|
+
if (nextReceipt.bytes > manifestLimit) {
|
|
205
|
+
throw new Error(`OCaml manifest exceeds the ${manifestLimit} byte limit`);
|
|
206
|
+
}
|
|
207
|
+
const identity = outerAssetIdentity(nextManifestUrl, nextReceipt);
|
|
208
|
+
if (loadedManifestIdentity === identity &&
|
|
209
|
+
loadedManifestMaxAssetBytes === nextMaxAssetBytes &&
|
|
210
|
+
manifestPromise) {
|
|
104
211
|
return await manifestPromise;
|
|
105
212
|
}
|
|
106
|
-
|
|
213
|
+
loadedManifestIdentity = identity;
|
|
214
|
+
loadedManifestMaxAssetBytes = nextMaxAssetBytes;
|
|
107
215
|
compiledResult = null;
|
|
108
216
|
compiledCacheKey = '';
|
|
109
217
|
manifestPromise = (async () => {
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
218
|
+
const bytes = await fetchRuntimeAssetBytes({
|
|
219
|
+
url: nextManifestUrl,
|
|
220
|
+
label: 'OCaml manifest',
|
|
221
|
+
cache: 'no-store',
|
|
222
|
+
maxAssetBytes: nextReceipt.bytes
|
|
223
|
+
});
|
|
224
|
+
await verifyRuntimeAssetIntegrity({
|
|
225
|
+
asset: nextManifestUrl,
|
|
226
|
+
bytes,
|
|
227
|
+
expected: nextReceipt,
|
|
228
|
+
runtimeId: 'OCAML'
|
|
229
|
+
});
|
|
230
|
+
let manifest;
|
|
231
|
+
try {
|
|
232
|
+
manifest = JSON.parse(textDecoder.decode(bytes));
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
throw new Error('OCaml manifest is not valid JSON');
|
|
113
236
|
}
|
|
114
|
-
|
|
237
|
+
assertManifestAssetLimit(manifest, nextMaxAssetBytes);
|
|
238
|
+
return rewriteManifest(manifest, nextManifestUrl);
|
|
115
239
|
})();
|
|
116
240
|
return await manifestPromise;
|
|
117
241
|
}
|
|
@@ -122,7 +246,7 @@ function getJsArtifact(result) {
|
|
|
122
246
|
}
|
|
123
247
|
return programArtifact;
|
|
124
248
|
}
|
|
125
|
-
async function executeCompileResult(result, log = false) {
|
|
249
|
+
async function executeCompileResult(result, log = false, stdin) {
|
|
126
250
|
const programArtifact = getJsArtifact(result);
|
|
127
251
|
const assetFiles = result.artifacts.filter((artifact) => artifact.kind === 'wasm' || artifact.kind === 'asset');
|
|
128
252
|
const assetResolverKey = '__wasm_of_js_of_ocaml_resolve_asset';
|
|
@@ -131,7 +255,8 @@ async function executeCompileResult(result, log = false) {
|
|
|
131
255
|
const sourceDir = programArtifact.path.replace(/\/[^/]+$/, '');
|
|
132
256
|
const createdObjectUrls = [];
|
|
133
257
|
const stdinEncoder = new TextEncoder();
|
|
134
|
-
|
|
258
|
+
const hasExplicitStdinOcaml = typeof stdin === 'string';
|
|
259
|
+
let stdinChunkOcaml = hasExplicitStdinOcaml ? stdinEncoder.encode(stdin) : new Uint8Array(0);
|
|
135
260
|
let stdinChunkOffsetOcaml = 0;
|
|
136
261
|
const originalConsole = globalThis.console;
|
|
137
262
|
const originalFetch = globalThis.fetch.bind(globalThis);
|
|
@@ -145,11 +270,11 @@ async function executeCompileResult(result, log = false) {
|
|
|
145
270
|
const hadModule = Object.prototype.hasOwnProperty.call(runtimeGlobal, 'module');
|
|
146
271
|
const hadExports = Object.prototype.hasOwnProperty.call(runtimeGlobal, 'exports');
|
|
147
272
|
const hadFs = Object.prototype.hasOwnProperty.call(runtimeGlobal, 'fs');
|
|
148
|
-
const originalProcess = runtimeGlobal
|
|
149
|
-
const originalRequire = runtimeGlobal
|
|
150
|
-
const originalModule = runtimeGlobal
|
|
151
|
-
const originalExports = runtimeGlobal
|
|
152
|
-
const originalFs = runtimeGlobal
|
|
273
|
+
const originalProcess = runtimeGlobal['process'];
|
|
274
|
+
const originalRequire = runtimeGlobal['require'];
|
|
275
|
+
const originalModule = runtimeGlobal['module'];
|
|
276
|
+
const originalExports = runtimeGlobal['exports'];
|
|
277
|
+
const originalFs = runtimeGlobal['fs'];
|
|
153
278
|
const hadStdinHook = Object.prototype.hasOwnProperty.call(runtimeGlobal, stdinHookKey);
|
|
154
279
|
const originalStdinHook = runtimeGlobal[stdinHookKey];
|
|
155
280
|
const assetEntries = assetFiles
|
|
@@ -199,6 +324,8 @@ async function executeCompileResult(result, log = false) {
|
|
|
199
324
|
return new Uint8Array(0);
|
|
200
325
|
}
|
|
201
326
|
while (stdinChunkOffsetOcaml >= stdinChunkOcaml.length) {
|
|
327
|
+
if (hasExplicitStdinOcaml)
|
|
328
|
+
return null;
|
|
202
329
|
const chunk = waitForBufferedStdin(stdinBufferOcaml, () => postMessage({ buffer: true }));
|
|
203
330
|
if (chunk == null) {
|
|
204
331
|
stdinChunkOcaml = new Uint8Array(0);
|
|
@@ -257,7 +384,7 @@ async function executeCompileResult(result, log = false) {
|
|
|
257
384
|
}
|
|
258
385
|
return await originalFetch(input, init);
|
|
259
386
|
});
|
|
260
|
-
runtimeGlobal
|
|
387
|
+
runtimeGlobal['process'] = undefined;
|
|
261
388
|
runtimeGlobal[stdinHookKey] = (requestedBytes = Number.MAX_SAFE_INTEGER) => {
|
|
262
389
|
const encoded = readOcamlStdinBytes(requestedBytes);
|
|
263
390
|
if (encoded == null) {
|
|
@@ -282,15 +409,15 @@ async function executeCompileResult(result, log = false) {
|
|
|
282
409
|
return encoded.byteLength;
|
|
283
410
|
}
|
|
284
411
|
};
|
|
285
|
-
runtimeGlobal
|
|
286
|
-
runtimeGlobal
|
|
412
|
+
runtimeGlobal['fs'] = stdinFsShim;
|
|
413
|
+
runtimeGlobal['require'] = (specifier) => {
|
|
287
414
|
if (specifier === 'fs' || specifier === 'node:fs') {
|
|
288
415
|
return stdinFsShim;
|
|
289
416
|
}
|
|
290
417
|
throw new Error(`unsupported OCaml runtime require: ${specifier}`);
|
|
291
418
|
};
|
|
292
|
-
runtimeGlobal
|
|
293
|
-
runtimeGlobal
|
|
419
|
+
runtimeGlobal['module'] = { exports: {} };
|
|
420
|
+
runtimeGlobal['exports'] = runtimeGlobal['module'].exports;
|
|
294
421
|
try {
|
|
295
422
|
let normalizedSource = normalizeAssetLoader(programArtifact.data, runtimePromiseKey);
|
|
296
423
|
const stdinReadReplacement = 'read($1,$2,$3,$4){var e=globalThis.__wasmIdleOcamlReadStdin?globalThis.__wasmIdleOcamlReadStdin($3):null;if(e==null)return 0;var h=e.length,f=new Uint8Array(h),i=0;for(;i<h;i++)f[i]=e.charCodeAt(i);var g=f.length<$3?f.length:$3;$1.set(f.subarray(0,g),$2);return g}';
|
|
@@ -322,34 +449,34 @@ async function executeCompileResult(result, log = false) {
|
|
|
322
449
|
delete globalThis[runtimePromiseKey];
|
|
323
450
|
delete globalThis[assetResolverKey];
|
|
324
451
|
if (!hadProcess) {
|
|
325
|
-
delete runtimeGlobal
|
|
452
|
+
delete runtimeGlobal['process'];
|
|
326
453
|
}
|
|
327
454
|
else {
|
|
328
|
-
runtimeGlobal
|
|
455
|
+
runtimeGlobal['process'] = originalProcess;
|
|
329
456
|
}
|
|
330
457
|
if (!hadRequire) {
|
|
331
|
-
delete runtimeGlobal
|
|
458
|
+
delete runtimeGlobal['require'];
|
|
332
459
|
}
|
|
333
460
|
else {
|
|
334
|
-
runtimeGlobal
|
|
461
|
+
runtimeGlobal['require'] = originalRequire;
|
|
335
462
|
}
|
|
336
463
|
if (!hadModule) {
|
|
337
|
-
delete runtimeGlobal
|
|
464
|
+
delete runtimeGlobal['module'];
|
|
338
465
|
}
|
|
339
466
|
else {
|
|
340
|
-
runtimeGlobal
|
|
467
|
+
runtimeGlobal['module'] = originalModule;
|
|
341
468
|
}
|
|
342
469
|
if (!hadExports) {
|
|
343
|
-
delete runtimeGlobal
|
|
470
|
+
delete runtimeGlobal['exports'];
|
|
344
471
|
}
|
|
345
472
|
else {
|
|
346
|
-
runtimeGlobal
|
|
473
|
+
runtimeGlobal['exports'] = originalExports;
|
|
347
474
|
}
|
|
348
475
|
if (!hadFs) {
|
|
349
|
-
delete runtimeGlobal
|
|
476
|
+
delete runtimeGlobal['fs'];
|
|
350
477
|
}
|
|
351
478
|
else {
|
|
352
|
-
runtimeGlobal
|
|
479
|
+
runtimeGlobal['fs'] = originalFs;
|
|
353
480
|
}
|
|
354
481
|
if (!hadStdinHook) {
|
|
355
482
|
delete runtimeGlobal[stdinHookKey];
|
|
@@ -363,39 +490,60 @@ async function executeCompileResult(result, log = false) {
|
|
|
363
490
|
}
|
|
364
491
|
}
|
|
365
492
|
self.onmessage = async (event) => {
|
|
366
|
-
|
|
493
|
+
let log = true;
|
|
367
494
|
try {
|
|
368
|
-
if (load) {
|
|
369
|
-
moduleUrl =
|
|
370
|
-
manifestUrl =
|
|
371
|
-
|
|
495
|
+
if (event.data.load) {
|
|
496
|
+
moduleUrl = event.data.moduleUrl;
|
|
497
|
+
manifestUrl = event.data.manifestUrl;
|
|
498
|
+
moduleReceipt = requireOuterAssetReceipt(event.data.moduleReceipt, 'module');
|
|
499
|
+
manifestReceipt = requireOuterAssetReceipt(event.data.manifestReceipt, 'manifest');
|
|
500
|
+
maxAssetBytes = resolveMaxAssetBytes(event.data.maxAssetBytes);
|
|
501
|
+
await loadManifest(manifestUrl, manifestReceipt, maxAssetBytes);
|
|
502
|
+
await loadCompiler(moduleUrl, moduleReceipt, maxAssetBytes);
|
|
372
503
|
postMessage({ load: true });
|
|
373
504
|
return;
|
|
374
505
|
}
|
|
506
|
+
const { code, prepare, target = 'wasm', wasmBinaryenMode = 'fast', log: configuredLog = true, buffer, stdin, activePath = 'main.ml', workspaceFiles = [] } = event.data;
|
|
507
|
+
log = configuredLog;
|
|
375
508
|
stdinBufferOcaml = buffer ? new Int32Array(buffer) : null;
|
|
376
509
|
if (log) {
|
|
377
510
|
console.log(`[wasm-idle:ocaml-worker] compile start prepare=${prepare} target=${target} binaryen=${wasmBinaryenMode}`);
|
|
378
511
|
}
|
|
379
512
|
postMessage({ progress: { stage: 'compile-bootstrap', percent: 10 } });
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
513
|
+
if (!moduleReceipt || !manifestReceipt) {
|
|
514
|
+
throw new Error('OCaml runtime outer asset receipts are not loaded');
|
|
515
|
+
}
|
|
516
|
+
const manifest = await loadManifest(manifestUrl, manifestReceipt, maxAssetBytes);
|
|
517
|
+
const compilerModule = await loadCompiler(moduleUrl, moduleReceipt, maxAssetBytes);
|
|
384
518
|
postMessage({ progress: { stage: 'compile-ready', percent: 25 } });
|
|
385
|
-
const
|
|
519
|
+
const files = Object.fromEntries([
|
|
520
|
+
...workspaceFiles.map((file) => [file.path, file.content]),
|
|
521
|
+
[activePath, code]
|
|
522
|
+
]);
|
|
523
|
+
const compileKey = JSON.stringify({
|
|
524
|
+
target,
|
|
525
|
+
wasmBinaryenMode,
|
|
526
|
+
entry: activePath,
|
|
527
|
+
files
|
|
528
|
+
});
|
|
386
529
|
let compiledFresh = false;
|
|
387
530
|
if (!compiledResult || compiledCacheKey !== compileKey) {
|
|
388
531
|
const result = await compilerModule.compile({
|
|
389
|
-
files
|
|
390
|
-
|
|
391
|
-
},
|
|
392
|
-
entry: 'main.ml',
|
|
532
|
+
files,
|
|
533
|
+
entry: activePath,
|
|
393
534
|
target,
|
|
394
535
|
effectsMode: 'cps',
|
|
395
536
|
wasmBinaryenMode
|
|
396
537
|
}, {
|
|
397
538
|
system: compilerModule.createBrowserWorkerSystemDispatcher({
|
|
398
|
-
manifest
|
|
539
|
+
manifest,
|
|
540
|
+
runtimeAssets: {
|
|
541
|
+
limits: {
|
|
542
|
+
maxAssetBytes,
|
|
543
|
+
maxMetadataBytes: Math.min(MAX_OCAML_MANIFEST_BYTES, maxAssetBytes),
|
|
544
|
+
maxEntryBytes: Math.min(MAX_OCAML_RUNTIME_ENTRY_BYTES, maxAssetBytes)
|
|
545
|
+
}
|
|
546
|
+
}
|
|
399
547
|
}),
|
|
400
548
|
toolchainRoot: '/static/toolchain'
|
|
401
549
|
});
|
|
@@ -439,7 +587,7 @@ self.onmessage = async (event) => {
|
|
|
439
587
|
return;
|
|
440
588
|
}
|
|
441
589
|
postMessage({ progress: { stage: 'runtime-start', percent: 95 } });
|
|
442
|
-
await executeCompileResult(result, log);
|
|
590
|
+
await executeCompileResult(result, log, stdin);
|
|
443
591
|
}
|
|
444
592
|
catch (error) {
|
|
445
593
|
if (log) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|