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
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { importRuntimeModule } from '../runtimeModule';
|
|
2
|
+
let wasmUrl = '';
|
|
3
|
+
let loadedWasmUrl = '';
|
|
4
|
+
let runtimeModuleUrl = '';
|
|
5
|
+
let sqlPromise = null;
|
|
6
|
+
function locateSqliteWasm(url) {
|
|
7
|
+
const maybeProcess = typeof process === 'undefined' ? null : process;
|
|
8
|
+
if (url.startsWith('/') && maybeProcess?.cwd) {
|
|
9
|
+
return `${maybeProcess.cwd()}${url}`;
|
|
10
|
+
}
|
|
11
|
+
return url;
|
|
12
|
+
}
|
|
13
|
+
async function loadSqlite(moduleUrl, url) {
|
|
14
|
+
if (!moduleUrl)
|
|
15
|
+
throw new Error('SQLite runtime module URL is not configured.');
|
|
16
|
+
const runtime = await importRuntimeModule(moduleUrl);
|
|
17
|
+
const nextUrl = url || runtime.sqliteWasmUrl;
|
|
18
|
+
if (runtimeModuleUrl === moduleUrl && loadedWasmUrl === nextUrl && sqlPromise) {
|
|
19
|
+
return await sqlPromise;
|
|
20
|
+
}
|
|
21
|
+
runtimeModuleUrl = moduleUrl;
|
|
22
|
+
loadedWasmUrl = nextUrl;
|
|
23
|
+
sqlPromise = runtime.default({
|
|
24
|
+
locateFile(file) {
|
|
25
|
+
return file.endsWith('.wasm') ? locateSqliteWasm(nextUrl) : file;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
return await sqlPromise;
|
|
29
|
+
}
|
|
30
|
+
function stringifyCell(value) {
|
|
31
|
+
if (value == null)
|
|
32
|
+
return 'NULL';
|
|
33
|
+
if (value instanceof Uint8Array) {
|
|
34
|
+
return `x'${Array.from(value, (byte) => byte.toString(16).padStart(2, '0')).join('')}'`;
|
|
35
|
+
}
|
|
36
|
+
return String(value);
|
|
37
|
+
}
|
|
38
|
+
function formatResult(result) {
|
|
39
|
+
const lines = [result.columns.join('\t')];
|
|
40
|
+
for (const row of result.values) {
|
|
41
|
+
lines.push(row.map(stringifyCell).join('\t'));
|
|
42
|
+
}
|
|
43
|
+
return `${lines.join('\n')}\n`;
|
|
44
|
+
}
|
|
45
|
+
function normalizeWorkspacePath(path) {
|
|
46
|
+
return path
|
|
47
|
+
.replace(/^\/+/, '')
|
|
48
|
+
.split('/')
|
|
49
|
+
.filter((part) => part && part !== '.' && part !== '..' && !part.includes('\0'))
|
|
50
|
+
.join('/');
|
|
51
|
+
}
|
|
52
|
+
function loadWorkspaceFiles(db, workspaceFiles) {
|
|
53
|
+
for (const file of workspaceFiles) {
|
|
54
|
+
const normalizedPath = normalizeWorkspacePath(file.path);
|
|
55
|
+
if (!normalizedPath || !normalizedPath.endsWith('.sql'))
|
|
56
|
+
continue;
|
|
57
|
+
if (normalizedPath === 'main.sql')
|
|
58
|
+
continue;
|
|
59
|
+
db.exec(file.content);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
self.onmessage = async (event) => {
|
|
63
|
+
const { load, moduleUrl: nextModuleUrl, wasmUrl: nextWasmUrl, code, prepare, activePath = 'main.sql', workspaceFiles = [], log } = event.data;
|
|
64
|
+
try {
|
|
65
|
+
if (load) {
|
|
66
|
+
const moduleUrl = nextModuleUrl || runtimeModuleUrl;
|
|
67
|
+
wasmUrl = nextWasmUrl || '';
|
|
68
|
+
if (log) {
|
|
69
|
+
console.log(`[wasm-idle:sqlite-worker] load moduleUrl=${moduleUrl} wasmUrl=${wasmUrl || 'default'}`);
|
|
70
|
+
}
|
|
71
|
+
await loadSqlite(moduleUrl, wasmUrl);
|
|
72
|
+
postMessage({ load: true });
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const SQL = await loadSqlite(runtimeModuleUrl, wasmUrl);
|
|
76
|
+
if (prepare) {
|
|
77
|
+
postMessage({ results: true });
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const db = new SQL.Database();
|
|
81
|
+
try {
|
|
82
|
+
loadWorkspaceFiles(db, workspaceFiles);
|
|
83
|
+
postMessage({
|
|
84
|
+
progress: {
|
|
85
|
+
kind: 'ready',
|
|
86
|
+
state: 'running',
|
|
87
|
+
reason: 'started',
|
|
88
|
+
label: 'SQLite query started'
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
if (log) {
|
|
92
|
+
console.log(`[wasm-idle:sqlite-worker] exec start bytes=${code.length} activePath=${activePath}`);
|
|
93
|
+
}
|
|
94
|
+
for (const result of db.exec(code)) {
|
|
95
|
+
postMessage({ output: formatResult(result) });
|
|
96
|
+
}
|
|
97
|
+
if (log) {
|
|
98
|
+
console.log('[wasm-idle:sqlite-worker] exec settled');
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
finally {
|
|
102
|
+
db.close();
|
|
103
|
+
}
|
|
104
|
+
postMessage({ results: true });
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
if (log) {
|
|
108
|
+
console.error('[wasm-idle:sqlite-worker] failed', error);
|
|
109
|
+
}
|
|
110
|
+
postMessage({ error: error?.message || String(error) });
|
|
111
|
+
}
|
|
112
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { executeStaticRuntimePreflight } from '../staticRuntimePreflightExecute';
|
|
2
|
+
import { STATIC_RUNTIME_PREFLIGHT_PROTOCOL_VERSION, collectStaticRuntimePreflightTransferables, serializeStaticRuntimePreflightError } from '../staticRuntimePreflightProtocol';
|
|
3
|
+
const workerSelf = globalThis;
|
|
4
|
+
let handled = false;
|
|
5
|
+
function isRequest(value) {
|
|
6
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
7
|
+
return false;
|
|
8
|
+
const request = value;
|
|
9
|
+
return (request.protocolVersion === STATIC_RUNTIME_PREFLIGHT_PROTOCOL_VERSION &&
|
|
10
|
+
request.type === 'preflight' &&
|
|
11
|
+
Number.isSafeInteger(request.requestId) &&
|
|
12
|
+
request.requestId > 0 &&
|
|
13
|
+
(request.runtimeId === 'BQN' ||
|
|
14
|
+
request.runtimeId === 'CLOJURESCRIPT' ||
|
|
15
|
+
request.runtimeId === 'FORTH' ||
|
|
16
|
+
request.runtimeId === 'J' ||
|
|
17
|
+
request.runtimeId === 'JANET' ||
|
|
18
|
+
request.runtimeId === 'PROLOG') &&
|
|
19
|
+
typeof request.baseUrl === 'string' &&
|
|
20
|
+
typeof request.manifestUrl === 'string' &&
|
|
21
|
+
request.profile !== null &&
|
|
22
|
+
typeof request.profile === 'object' &&
|
|
23
|
+
request.limits !== null &&
|
|
24
|
+
typeof request.limits === 'object');
|
|
25
|
+
}
|
|
26
|
+
workerSelf.onmessage = async (event) => {
|
|
27
|
+
const request = event.data;
|
|
28
|
+
if (handled || !isRequest(request))
|
|
29
|
+
return;
|
|
30
|
+
handled = true;
|
|
31
|
+
try {
|
|
32
|
+
const payload = await executeStaticRuntimePreflight(request, (progress) => {
|
|
33
|
+
workerSelf.postMessage({
|
|
34
|
+
protocolVersion: STATIC_RUNTIME_PREFLIGHT_PROTOCOL_VERSION,
|
|
35
|
+
type: 'progress',
|
|
36
|
+
requestId: request.requestId,
|
|
37
|
+
progress
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
const transferables = collectStaticRuntimePreflightTransferables(payload);
|
|
41
|
+
workerSelf.postMessage({
|
|
42
|
+
protocolVersion: STATIC_RUNTIME_PREFLIGHT_PROTOCOL_VERSION,
|
|
43
|
+
type: 'result',
|
|
44
|
+
requestId: request.requestId,
|
|
45
|
+
payload
|
|
46
|
+
}, transferables);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
workerSelf.postMessage({
|
|
50
|
+
protocolVersion: STATIC_RUNTIME_PREFLIGHT_PROTOCOL_VERSION,
|
|
51
|
+
type: 'error',
|
|
52
|
+
requestId: request.requestId,
|
|
53
|
+
error: serializeStaticRuntimePreflightError(error)
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
};
|
|
@@ -7,6 +7,14 @@ self.document = {
|
|
|
7
7
|
};
|
|
8
8
|
const encoder = new TextEncoder();
|
|
9
9
|
const decoder = new TextDecoder();
|
|
10
|
+
const postExecutionReady = () => postMessage({
|
|
11
|
+
progress: {
|
|
12
|
+
kind: 'ready',
|
|
13
|
+
state: 'running',
|
|
14
|
+
reason: 'started',
|
|
15
|
+
label: 'TinyGo program started'
|
|
16
|
+
}
|
|
17
|
+
});
|
|
10
18
|
let stdinBufferTinyGo = null;
|
|
11
19
|
let stdinChunkTinyGo = new Uint8Array(0);
|
|
12
20
|
let stdinChunkOffsetTinyGo = 0;
|
|
@@ -24,13 +32,13 @@ class TinyGoStdin extends Fd {
|
|
|
24
32
|
};
|
|
25
33
|
}
|
|
26
34
|
fd_read(size) {
|
|
27
|
-
if (stdinBufferTinyGo === null) {
|
|
28
|
-
return {
|
|
29
|
-
ret: wasi.ERRNO_SUCCESS,
|
|
30
|
-
data: new Uint8Array(0)
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
35
|
if (stdinChunkOffsetTinyGo >= stdinChunkTinyGo.length) {
|
|
36
|
+
if (stdinBufferTinyGo === null) {
|
|
37
|
+
return {
|
|
38
|
+
ret: wasi.ERRNO_SUCCESS,
|
|
39
|
+
data: new Uint8Array(0)
|
|
40
|
+
};
|
|
41
|
+
}
|
|
34
42
|
const nextChunk = waitForBufferedStdin(stdinBufferTinyGo, () => postMessage({ buffer: true }));
|
|
35
43
|
if (nextChunk === null) {
|
|
36
44
|
stdinChunkTinyGo = new Uint8Array(0);
|
|
@@ -53,7 +61,7 @@ class TinyGoStdin extends Fd {
|
|
|
53
61
|
}
|
|
54
62
|
}
|
|
55
63
|
self.onmessage = async (event) => {
|
|
56
|
-
const { load, artifact, buffer, args = [], log } = event.data;
|
|
64
|
+
const { load, artifact, buffer, stdin, args = [], log } = event.data;
|
|
57
65
|
try {
|
|
58
66
|
if (load) {
|
|
59
67
|
postMessage({ load: true });
|
|
@@ -69,8 +77,11 @@ self.onmessage = async (event) => {
|
|
|
69
77
|
if (!bytes) {
|
|
70
78
|
throw new Error('TinyGo worker expected a wasm artifact');
|
|
71
79
|
}
|
|
72
|
-
|
|
73
|
-
|
|
80
|
+
if (stdin !== undefined && typeof stdin !== 'string') {
|
|
81
|
+
throw new Error('TinyGo worker expected stdin to be a string');
|
|
82
|
+
}
|
|
83
|
+
stdinBufferTinyGo = stdin === undefined ? new Int32Array(buffer) : null;
|
|
84
|
+
stdinChunkTinyGo = stdin === undefined ? new Uint8Array(0) : encoder.encode(stdin);
|
|
74
85
|
stdinChunkOffsetTinyGo = 0;
|
|
75
86
|
const stdout = new ConsoleStdout((chunk) => {
|
|
76
87
|
const text = decoder.decode(chunk);
|
|
@@ -96,6 +107,7 @@ self.onmessage = async (event) => {
|
|
|
96
107
|
let exitCode = 0;
|
|
97
108
|
try {
|
|
98
109
|
if (typeof exportsObject._start === 'function') {
|
|
110
|
+
postExecutionReady();
|
|
99
111
|
exitCode = wasiRuntime.start(instance);
|
|
100
112
|
}
|
|
101
113
|
else if (typeof exportsObject.memory === 'object' &&
|
|
@@ -107,6 +119,7 @@ self.onmessage = async (event) => {
|
|
|
107
119
|
exportsObject.__wasm_call_ctors();
|
|
108
120
|
}
|
|
109
121
|
if (typeof exportsObject.main === 'function') {
|
|
122
|
+
postExecutionReady();
|
|
110
123
|
const mainResult = exportsObject.main();
|
|
111
124
|
exitCode = typeof mainResult === 'number' ? mainResult : 0;
|
|
112
125
|
}
|
|
@@ -137,4 +150,16 @@ self.onmessage = async (event) => {
|
|
|
137
150
|
}
|
|
138
151
|
postMessage({ error: error?.message || String(error) });
|
|
139
152
|
}
|
|
153
|
+
finally {
|
|
154
|
+
const stdinChunk = stdinChunkTinyGo;
|
|
155
|
+
stdinBufferTinyGo = null;
|
|
156
|
+
stdinChunkTinyGo = new Uint8Array(0);
|
|
157
|
+
stdinChunkOffsetTinyGo = 0;
|
|
158
|
+
try {
|
|
159
|
+
stdinChunk.fill(0);
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
// Stdin cleanup must not replace the execution result.
|
|
163
|
+
}
|
|
164
|
+
}
|
|
140
165
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { waitForBufferedStdin } from '../stdinBuffer';
|
|
2
|
+
import { fetchRuntimeAssetBytes } from './runtimeAssetFetch';
|
|
3
|
+
import { verifyRuntimeAssetIntegrity } from '@wasm-idle/core';
|
|
4
|
+
let stdinBufferTypeScript = null;
|
|
5
|
+
let moduleUrl = '';
|
|
6
|
+
let moduleReceipt = null;
|
|
7
|
+
let maxAssetBytes = 0;
|
|
8
|
+
let loadedModuleIdentity = '';
|
|
9
|
+
let runtimePromise = null;
|
|
10
|
+
let compiledArtifact = null;
|
|
11
|
+
let compiledCacheKey = '';
|
|
12
|
+
function snapshotModuleReceipt(value) {
|
|
13
|
+
if (!value || typeof value !== 'object') {
|
|
14
|
+
throw new Error('TypeScript runtime integrity receipt is required');
|
|
15
|
+
}
|
|
16
|
+
const bytes = value.bytes;
|
|
17
|
+
const sha256 = value.sha256;
|
|
18
|
+
if (!Number.isSafeInteger(bytes) || bytes <= 0) {
|
|
19
|
+
throw new Error('TypeScript runtime integrity receipt has an invalid byte size');
|
|
20
|
+
}
|
|
21
|
+
if (typeof sha256 !== 'string' || !/^[a-f0-9]{64}$/u.test(sha256)) {
|
|
22
|
+
throw new Error('TypeScript runtime integrity receipt has an invalid SHA-256 digest');
|
|
23
|
+
}
|
|
24
|
+
return Object.freeze({ bytes: bytes, sha256 });
|
|
25
|
+
}
|
|
26
|
+
function requireMaxAssetBytes(value) {
|
|
27
|
+
if (!Number.isSafeInteger(value) || value <= 0) {
|
|
28
|
+
throw new Error('TypeScript runtime maxAssetBytes must be a positive safe integer');
|
|
29
|
+
}
|
|
30
|
+
return value;
|
|
31
|
+
}
|
|
32
|
+
function requireModuleUrl(value) {
|
|
33
|
+
if (typeof value !== 'string' || !value.trim()) {
|
|
34
|
+
throw new Error('TypeScript runtime is not configured. Set PUBLIC_WASM_TYPESCRIPT_MODULE_URL or runtimeAssets.typescript.moduleUrl.');
|
|
35
|
+
}
|
|
36
|
+
let url;
|
|
37
|
+
try {
|
|
38
|
+
url = new URL(value);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
throw new Error(`TypeScript runtime module URL is invalid: ${value}`);
|
|
42
|
+
}
|
|
43
|
+
if (url.protocol !== 'http:' && url.protocol !== 'https:') {
|
|
44
|
+
throw new Error(`TypeScript runtime module URL must use HTTP(S): ${value}`);
|
|
45
|
+
}
|
|
46
|
+
if (url.username || url.password || url.hash) {
|
|
47
|
+
throw new Error(`TypeScript runtime module URL must not include credentials or a fragment: ${value}`);
|
|
48
|
+
}
|
|
49
|
+
if (/%2f|%5c/iu.test(url.pathname)) {
|
|
50
|
+
throw new Error(`TypeScript runtime module URL must not include encoded path separators: ${value}`);
|
|
51
|
+
}
|
|
52
|
+
return url.href;
|
|
53
|
+
}
|
|
54
|
+
async function loadRuntime(urlValue, receiptValue, maxAssetBytesValue) {
|
|
55
|
+
const url = requireModuleUrl(urlValue);
|
|
56
|
+
const receipt = snapshotModuleReceipt(receiptValue);
|
|
57
|
+
const byteLimit = requireMaxAssetBytes(maxAssetBytesValue);
|
|
58
|
+
if (receipt.bytes > byteLimit) {
|
|
59
|
+
throw new Error(`TypeScript runtime module exceeds the ${byteLimit} byte limit`);
|
|
60
|
+
}
|
|
61
|
+
const identity = JSON.stringify([url, receipt.bytes, receipt.sha256]);
|
|
62
|
+
if (loadedModuleIdentity === identity && runtimePromise) {
|
|
63
|
+
return await runtimePromise;
|
|
64
|
+
}
|
|
65
|
+
loadedModuleIdentity = identity;
|
|
66
|
+
compiledArtifact = null;
|
|
67
|
+
compiledCacheKey = '';
|
|
68
|
+
runtimePromise = (async () => {
|
|
69
|
+
const bytes = await fetchRuntimeAssetBytes({
|
|
70
|
+
url,
|
|
71
|
+
label: 'TypeScript runtime module',
|
|
72
|
+
maxAssetBytes: receipt.bytes
|
|
73
|
+
});
|
|
74
|
+
await verifyRuntimeAssetIntegrity({
|
|
75
|
+
asset: url,
|
|
76
|
+
bytes,
|
|
77
|
+
expected: receipt,
|
|
78
|
+
runtimeId: 'TYPESCRIPT'
|
|
79
|
+
});
|
|
80
|
+
if (typeof URL.createObjectURL !== 'function' ||
|
|
81
|
+
typeof URL.revokeObjectURL !== 'function') {
|
|
82
|
+
throw new Error('TypeScript runtime requires Blob URL support');
|
|
83
|
+
}
|
|
84
|
+
const revokeObjectURL = URL.revokeObjectURL.bind(URL);
|
|
85
|
+
const verifiedModuleUrl = URL.createObjectURL(new Blob([bytes], { type: 'text/javascript' }));
|
|
86
|
+
let module;
|
|
87
|
+
try {
|
|
88
|
+
module = await import(/* @vite-ignore */ verifiedModuleUrl);
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
try {
|
|
92
|
+
revokeObjectURL(verifiedModuleUrl);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// Blob URL cleanup must not replace the verified module's import outcome.
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const factory = typeof module.createTypeScriptCompiler === 'function'
|
|
99
|
+
? module.createTypeScriptCompiler
|
|
100
|
+
: typeof module.default === 'function'
|
|
101
|
+
? module.default
|
|
102
|
+
: null;
|
|
103
|
+
if (!factory) {
|
|
104
|
+
throw new Error('wasm-typescript module must export createTypeScriptCompiler or a default factory');
|
|
105
|
+
}
|
|
106
|
+
if (typeof module.executeBrowserTypeScriptArtifact !== 'function') {
|
|
107
|
+
throw new Error('wasm-typescript module must export executeBrowserTypeScriptArtifact');
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
compiler: await factory(),
|
|
111
|
+
executeBrowserTypeScriptArtifact: module.executeBrowserTypeScriptArtifact
|
|
112
|
+
};
|
|
113
|
+
})();
|
|
114
|
+
return await runtimePromise;
|
|
115
|
+
}
|
|
116
|
+
function normalizeDiagnostic(diagnostic) {
|
|
117
|
+
return {
|
|
118
|
+
fileName: diagnostic?.fileName ?? null,
|
|
119
|
+
lineNumber: Math.max(1, Number(diagnostic?.lineNumber || 1)),
|
|
120
|
+
columnNumber: typeof diagnostic?.columnNumber === 'number'
|
|
121
|
+
? Math.max(1, diagnostic.columnNumber)
|
|
122
|
+
: undefined,
|
|
123
|
+
endColumnNumber: typeof diagnostic?.endColumnNumber === 'number'
|
|
124
|
+
? Math.max(1, diagnostic.endColumnNumber)
|
|
125
|
+
: undefined,
|
|
126
|
+
severity: diagnostic?.severity === 'warning' || diagnostic?.severity === 'other'
|
|
127
|
+
? diagnostic.severity
|
|
128
|
+
: 'error',
|
|
129
|
+
message: String(diagnostic?.message || '')
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
self.onmessage = async (event) => {
|
|
133
|
+
const { load, moduleUrl: nextModuleUrl, moduleReceipt: nextModuleReceipt, maxAssetBytes: nextMaxAssetBytes, buffer, code, prepare, args = [], stdin, language = 'typescript', activePath = language === 'typescript' ? 'main.ts' : 'main.js', workspaceFiles = [], log } = event.data;
|
|
134
|
+
try {
|
|
135
|
+
if (load) {
|
|
136
|
+
const configuredModuleUrl = requireModuleUrl(nextModuleUrl);
|
|
137
|
+
const configuredModuleReceipt = snapshotModuleReceipt(nextModuleReceipt);
|
|
138
|
+
const configuredMaxAssetBytes = requireMaxAssetBytes(nextMaxAssetBytes);
|
|
139
|
+
if (log) {
|
|
140
|
+
console.log(`[wasm-idle:typescript-worker] load moduleUrl=${configuredModuleUrl}`);
|
|
141
|
+
}
|
|
142
|
+
await loadRuntime(configuredModuleUrl, configuredModuleReceipt, configuredMaxAssetBytes);
|
|
143
|
+
moduleUrl = configuredModuleUrl;
|
|
144
|
+
moduleReceipt = configuredModuleReceipt;
|
|
145
|
+
maxAssetBytes = configuredMaxAssetBytes;
|
|
146
|
+
postMessage({ load: true });
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
stdinBufferTypeScript = new Int32Array(buffer);
|
|
150
|
+
const runtime = await loadRuntime(moduleUrl, moduleReceipt, maxAssetBytes);
|
|
151
|
+
const compileCacheKey = `${language}\n${activePath}\n${code}`;
|
|
152
|
+
if (!compiledArtifact || compiledCacheKey !== compileCacheKey) {
|
|
153
|
+
if (log) {
|
|
154
|
+
console.log(`[wasm-idle:typescript-worker] compile start language=${language} prepare=${String(prepare)} bytes=${code.length}`);
|
|
155
|
+
}
|
|
156
|
+
const result = await runtime.compiler.compile({
|
|
157
|
+
code,
|
|
158
|
+
language,
|
|
159
|
+
fileName: activePath,
|
|
160
|
+
log
|
|
161
|
+
});
|
|
162
|
+
if (log) {
|
|
163
|
+
console.log(`[wasm-idle:typescript-worker] compile settled success=${String(result.success)} stdout=${String(Boolean(result.stdout))} stderr=${String(Boolean(result.stderr))}`);
|
|
164
|
+
}
|
|
165
|
+
for (const diagnostic of result.diagnostics || []) {
|
|
166
|
+
postMessage({ diagnostic: normalizeDiagnostic(diagnostic) });
|
|
167
|
+
}
|
|
168
|
+
if (result.stdout)
|
|
169
|
+
postMessage({ output: result.stdout });
|
|
170
|
+
if (!result.success) {
|
|
171
|
+
throw new Error(result.stderr ||
|
|
172
|
+
result.diagnostics
|
|
173
|
+
?.map((diagnostic) => diagnostic.message)
|
|
174
|
+
.join('\n') ||
|
|
175
|
+
'TypeScript compilation failed');
|
|
176
|
+
}
|
|
177
|
+
if (result.stderr)
|
|
178
|
+
postMessage({ output: result.stderr });
|
|
179
|
+
if (!result.artifact?.javascript) {
|
|
180
|
+
throw new Error('wasm-typescript did not return a JavaScript artifact');
|
|
181
|
+
}
|
|
182
|
+
compiledArtifact = result.artifact;
|
|
183
|
+
compiledCacheKey = compileCacheKey;
|
|
184
|
+
}
|
|
185
|
+
if (prepare) {
|
|
186
|
+
postMessage({ results: true });
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
const hasInitialStdin = typeof stdin === 'string';
|
|
190
|
+
let initialStdin = hasInitialStdin ? stdin : null;
|
|
191
|
+
const execution = await runtime.executeBrowserTypeScriptArtifact(compiledArtifact, {
|
|
192
|
+
args,
|
|
193
|
+
env: {
|
|
194
|
+
USER: 'jungol'
|
|
195
|
+
},
|
|
196
|
+
onReady: () => postMessage({
|
|
197
|
+
progress: {
|
|
198
|
+
kind: 'ready',
|
|
199
|
+
state: 'running',
|
|
200
|
+
reason: 'started',
|
|
201
|
+
label: `${language === 'typescript' ? 'TypeScript' : 'JavaScript'} program started`
|
|
202
|
+
}
|
|
203
|
+
}),
|
|
204
|
+
files: workspaceFiles,
|
|
205
|
+
activePath,
|
|
206
|
+
stdin: () => {
|
|
207
|
+
if (hasInitialStdin) {
|
|
208
|
+
const chunk = initialStdin;
|
|
209
|
+
initialStdin = null;
|
|
210
|
+
if (log) {
|
|
211
|
+
console.log(chunk == null
|
|
212
|
+
? '[wasm-idle:typescript-stdin] read(bytes=0, eof=true)'
|
|
213
|
+
: `[wasm-idle:typescript-stdin] read(bytes=${new TextEncoder().encode(chunk).byteLength}, text=${JSON.stringify(chunk)})`);
|
|
214
|
+
}
|
|
215
|
+
return chunk;
|
|
216
|
+
}
|
|
217
|
+
const chunk = waitForBufferedStdin(stdinBufferTypeScript, () => postMessage({ buffer: true }));
|
|
218
|
+
if (chunk == null) {
|
|
219
|
+
if (log) {
|
|
220
|
+
console.log('[wasm-idle:typescript-stdin] read(bytes=0, eof=true)');
|
|
221
|
+
}
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
if (log) {
|
|
225
|
+
console.log(`[wasm-idle:typescript-stdin] read(bytes=${new TextEncoder().encode(chunk).byteLength}, text=${JSON.stringify(chunk)})`);
|
|
226
|
+
}
|
|
227
|
+
return chunk;
|
|
228
|
+
},
|
|
229
|
+
stdout: (output) => {
|
|
230
|
+
if (output)
|
|
231
|
+
postMessage({ output });
|
|
232
|
+
},
|
|
233
|
+
stderr: (output) => {
|
|
234
|
+
if (output)
|
|
235
|
+
postMessage({ output });
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
if (execution.exitCode !== 0) {
|
|
239
|
+
throw new Error(execution.stderr
|
|
240
|
+
? `${language === 'typescript' ? 'TypeScript' : 'JavaScript'} program exited with code ${execution.exitCode}\n${execution.stderr}`
|
|
241
|
+
: `${language === 'typescript' ? 'TypeScript' : 'JavaScript'} program exited with code ${execution.exitCode}`);
|
|
242
|
+
}
|
|
243
|
+
postMessage({ results: true });
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
if (log) {
|
|
247
|
+
console.error('[wasm-idle:typescript-worker] failed', error);
|
|
248
|
+
}
|
|
249
|
+
postMessage({ error: error?.message || String(error) });
|
|
250
|
+
}
|
|
251
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|