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,16 @@
|
|
|
1
|
+
export function resolveJavaSourceIdentity(code) {
|
|
2
|
+
const packageMatch = code.match(/^\s*package\s+([A-Za-z_][\w.]*)\s*;/m);
|
|
3
|
+
const typeMatch = code.match(/^\s*public\s+(?:final\s+|abstract\s+)?(?:class|record|enum|interface)\s+([A-Za-z_]\w*)\b/m) ||
|
|
4
|
+
code.match(/^\s*(?:final\s+|abstract\s+)?(?:class|record|enum|interface)\s+([A-Za-z_]\w*)\b/m);
|
|
5
|
+
const className = typeMatch?.[1];
|
|
6
|
+
if (!className) {
|
|
7
|
+
throw new Error('Java source must define a top-level class, record, enum, or interface');
|
|
8
|
+
}
|
|
9
|
+
const packageName = packageMatch?.[1] || '';
|
|
10
|
+
return {
|
|
11
|
+
sourcePath: packageName
|
|
12
|
+
? `${packageName.replaceAll('.', '/')}/${className}.java`
|
|
13
|
+
: `${className}.java`,
|
|
14
|
+
mainClass: packageName ? `${packageName}.${className}` : className
|
|
15
|
+
};
|
|
16
|
+
}
|
|
@@ -5,4 +5,4 @@ export interface PreparedJavaStdinInjection {
|
|
|
5
5
|
helperSourcePath: string | null;
|
|
6
6
|
helperSource: string | null;
|
|
7
7
|
}
|
|
8
|
-
export declare const prepareJavaStdinInjection: (code: string, stdin: string) => PreparedJavaStdinInjection;
|
|
8
|
+
export declare const prepareJavaStdinInjection: (code: string, stdin: string, hasExplicitStdin: boolean) => PreparedJavaStdinInjection;
|
|
@@ -210,7 +210,7 @@ final class Scanner implements AutoCloseable {
|
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
212
|
}`;
|
|
213
|
-
export const prepareJavaStdinInjection = (code, stdin) => {
|
|
213
|
+
export const prepareJavaStdinInjection = (code, stdin, hasExplicitStdin) => {
|
|
214
214
|
const usesStdin = code.includes('System.in');
|
|
215
215
|
const usesScanner = /\bScanner\b/.test(code) &&
|
|
216
216
|
!code.includes(JAVA_SCANNER_COMPAT_SENTINEL) &&
|
|
@@ -249,10 +249,12 @@ export const prepareJavaStdinInjection = (code, stdin) => {
|
|
|
249
249
|
.replaceAll(/\bjava\.util\.Scanner\b/g, 'Scanner');
|
|
250
250
|
transformedCode = `${transformedCode.trimEnd()}\n\n${JAVA_SCANNER_COMPAT_SHIM}\n`;
|
|
251
251
|
}
|
|
252
|
-
const encodedBytes = [...new TextEncoder().encode(stdin)]
|
|
252
|
+
const encodedBytes = [...new TextEncoder().encode(stdin)]
|
|
253
|
+
.map((byte) => (byte > 0x7f ? byte - 0x100 : byte))
|
|
254
|
+
.join(', ');
|
|
253
255
|
return {
|
|
254
256
|
usesStdin: true,
|
|
255
|
-
stdinCacheKey: stdin,
|
|
257
|
+
stdinCacheKey: JSON.stringify([hasExplicitStdin, stdin]),
|
|
256
258
|
transformedCode,
|
|
257
259
|
helperSourcePath,
|
|
258
260
|
helperSource: `${packageName ? `package ${packageName};\n\n` : ''}import java.io.InputStream;
|
|
@@ -263,6 +265,7 @@ import org.teavm.jso.core.JSMapLike;
|
|
|
263
265
|
|
|
264
266
|
final class ${JAVA_STDIN_HELPER_CLASS} extends InputStream {
|
|
265
267
|
private static final byte[] INITIAL_DATA = new byte[] { ${encodedBytes} };
|
|
268
|
+
private static final boolean HAS_EXPLICIT_INPUT = ${hasExplicitStdin ? 'true' : 'false'};
|
|
266
269
|
private static final ${JAVA_STDIN_HELPER_CLASS} INSTANCE = new ${JAVA_STDIN_HELPER_CLASS}();
|
|
267
270
|
private int position = 0;
|
|
268
271
|
|
|
@@ -305,6 +308,9 @@ final class ${JAVA_STDIN_HELPER_CLASS} extends InputStream {
|
|
|
305
308
|
position += count;
|
|
306
309
|
return count;
|
|
307
310
|
}
|
|
311
|
+
if (HAS_EXPLICIT_INPUT) {
|
|
312
|
+
return -1;
|
|
313
|
+
}
|
|
308
314
|
int next = readFromHost();
|
|
309
315
|
if (next == -1) {
|
|
310
316
|
return -1;
|
|
@@ -315,7 +321,10 @@ final class ${JAVA_STDIN_HELPER_CLASS} extends InputStream {
|
|
|
315
321
|
|
|
316
322
|
@Override
|
|
317
323
|
public int read() {
|
|
318
|
-
|
|
324
|
+
if (position < INITIAL_DATA.length) {
|
|
325
|
+
return INITIAL_DATA[position++] & 0xff;
|
|
326
|
+
}
|
|
327
|
+
return HAS_EXPLICIT_INPUT ? -1 : readFromHost();
|
|
319
328
|
}
|
|
320
329
|
}
|
|
321
330
|
`
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { resolveJuliaRuntimeAssetConfig } from './assets';
|
|
2
|
+
import { StaticWorkerRuntimeSandbox } from './staticWorkerRuntime';
|
|
3
|
+
import { RuntimeConfigurationError, preflightJuliaRuntimeAssets, snapshotJuliaRuntimePreflightProfile } from '@wasm-idle/core';
|
|
4
|
+
class Julia extends StaticWorkerRuntimeSandbox {
|
|
5
|
+
constructor() {
|
|
6
|
+
super({
|
|
7
|
+
displayName: 'Julia',
|
|
8
|
+
languageId: 'JULIA',
|
|
9
|
+
defaultActivePath: 'main.jl',
|
|
10
|
+
workerLifetime: { mode: 'per-run' },
|
|
11
|
+
runtimePreflightDelivery: 'transfer-owned',
|
|
12
|
+
stdin: {
|
|
13
|
+
mode: 'streaming',
|
|
14
|
+
sourceHintPattern: /\b(?:readline|readlines|read|eachline|stdin)\b/i
|
|
15
|
+
},
|
|
16
|
+
inlineVerifiedWorker: true,
|
|
17
|
+
resolveRuntimeAssets(runtimeAssets, currentUrl) {
|
|
18
|
+
const resolved = resolveJuliaRuntimeAssetConfig(runtimeAssets, currentUrl);
|
|
19
|
+
const profile = snapshotJuliaRuntimePreflightProfile(resolved.preflightProfile);
|
|
20
|
+
if (!/^[a-f0-9]{64}$/u.test(resolved.manifestFingerprint || '') ||
|
|
21
|
+
profile.manifestFingerprint !== resolved.manifestFingerprint ||
|
|
22
|
+
!resolved.workerReceipt) {
|
|
23
|
+
throw new RuntimeConfigurationError('Julia runtime requires one coherent preflight profile, manifest fingerprint, and worker receipt.', { runtimeId: 'JULIA' });
|
|
24
|
+
}
|
|
25
|
+
return { ...resolved, preflightProfile: profile };
|
|
26
|
+
},
|
|
27
|
+
async preflightRuntimeAssets(urls, context) {
|
|
28
|
+
const profile = urls.preflightProfile;
|
|
29
|
+
const loadedByAsset = new Map();
|
|
30
|
+
const decompressedByAsset = new Map();
|
|
31
|
+
const totalDownloadBytes = (profile.manifestReceipt.bytes ?? 0) +
|
|
32
|
+
(profile.javascriptReceipt.bytes ?? 0) +
|
|
33
|
+
(profile.wasmReceipt.bytes ?? 0) +
|
|
34
|
+
(profile.dataReceipt.bytes ?? 0);
|
|
35
|
+
const totalDecompressedBytes = (profile.javascriptReceipt.uncompressedBytes ?? 0) +
|
|
36
|
+
(profile.wasmReceipt.uncompressedBytes ?? 0) +
|
|
37
|
+
(profile.dataReceipt.uncompressedBytes ?? 0);
|
|
38
|
+
const payload = await preflightJuliaRuntimeAssets({
|
|
39
|
+
baseUrl: urls.baseUrl,
|
|
40
|
+
manifestUrl: urls.manifestUrl || '',
|
|
41
|
+
profile,
|
|
42
|
+
limits: context.limits,
|
|
43
|
+
signal: context.signal,
|
|
44
|
+
reportProgress(progress) {
|
|
45
|
+
loadedByAsset.set(progress.assetKey, progress.loadedBytes);
|
|
46
|
+
const loadedBytes = [...loadedByAsset.values()].reduce((total, loaded) => total + loaded, 0);
|
|
47
|
+
const fraction = totalDownloadBytes > 0 ? loadedBytes / totalDownloadBytes : 0;
|
|
48
|
+
context.reportProgress(0.04 + Math.min(1, fraction) * 0.1, `Preflighting Julia asset ${progress.assetKey}`);
|
|
49
|
+
},
|
|
50
|
+
reportDecompressionProgress(asset, loadedBytes) {
|
|
51
|
+
decompressedByAsset.set(asset, loadedBytes);
|
|
52
|
+
const decompressedBytes = [...decompressedByAsset.values()].reduce((total, loaded) => total + loaded, 0);
|
|
53
|
+
const fraction = totalDecompressedBytes > 0
|
|
54
|
+
? decompressedBytes / totalDecompressedBytes
|
|
55
|
+
: 0;
|
|
56
|
+
context.reportProgress(0.14 + Math.min(1, fraction) * 0.03, `Decompressing verified Julia ${asset}`);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
return context.createOwnedDelivery(payload);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export default Julia;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { StaticWorkerRuntimeSandbox } from './staticWorkerRuntime';
|
|
2
|
+
/** Real upstream FortranEvaluator using LLVM and Emscripten dynamic side modules. */
|
|
3
|
+
export default class LFortran extends StaticWorkerRuntimeSandbox {
|
|
4
|
+
readonly memoryEvidence: {
|
|
5
|
+
current: unknown;
|
|
6
|
+
};
|
|
7
|
+
constructor();
|
|
8
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { StaticWorkerRuntimeSandbox } from './staticWorkerRuntime';
|
|
2
|
+
import { preflightLfortranRuntimeAssets, resolveLfortranRuntimeAssetConfig } from './lfortranAssets';
|
|
3
|
+
/** Real upstream FortranEvaluator using LLVM and Emscripten dynamic side modules. */
|
|
4
|
+
export default class LFortran extends StaticWorkerRuntimeSandbox {
|
|
5
|
+
memoryEvidence;
|
|
6
|
+
constructor() {
|
|
7
|
+
const memoryEvidence = { current: undefined };
|
|
8
|
+
super({
|
|
9
|
+
displayName: 'LFortran',
|
|
10
|
+
languageId: 'LFORTRAN',
|
|
11
|
+
defaultActivePath: 'main.f90',
|
|
12
|
+
workerLifetime: { mode: 'per-run' },
|
|
13
|
+
runtimePreflightDelivery: 'transfer-owned',
|
|
14
|
+
inlineVerifiedWorker: true,
|
|
15
|
+
requireExactWorkerResponseUrl: true,
|
|
16
|
+
moduleWorker: true,
|
|
17
|
+
includeExecutionLimits: true,
|
|
18
|
+
onEvidence(evidence) {
|
|
19
|
+
memoryEvidence.current = evidence;
|
|
20
|
+
},
|
|
21
|
+
stdin: { mode: 'streaming', sourceHintPattern: /\bread\b/i },
|
|
22
|
+
resolveRuntimeAssets: resolveLfortranRuntimeAssetConfig,
|
|
23
|
+
async preflightRuntimeAssets(urls, context) {
|
|
24
|
+
memoryEvidence.current = undefined;
|
|
25
|
+
return context.createOwnedDelivery(await preflightLfortranRuntimeAssets(urls.baseUrl, context));
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
this.memoryEvidence = memoryEvidence;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ExecutionLimits } from '@wasm-idle/core';
|
|
2
|
+
import type { PlaygroundRuntimeAssets } from './assets';
|
|
3
|
+
export declare const LFORTRAN_INITIAL_MEMORY_BYTES: number;
|
|
4
|
+
export declare const LFORTRAN_RUNTIME_MANIFEST: import("@wasm-idle/core").RuntimeRegistryManifest;
|
|
5
|
+
export declare function resolveLfortranRuntimeAssetConfig(assets: string | PlaygroundRuntimeAssets, currentUrl: string): {
|
|
6
|
+
baseUrl: string;
|
|
7
|
+
workerUrl: string;
|
|
8
|
+
manifestFingerprint: "11c9baef85c5221440edc4462690312cda62b48998a133b9a397ce32c6a97c45";
|
|
9
|
+
workerReceipt: {
|
|
10
|
+
readonly bytes: 11569;
|
|
11
|
+
readonly sha256: "e801cbf4dca7be9fc6fd1205dc4e6ab17af4530f42527dcc8e544eb8373a1469";
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export declare function preflightLfortranRuntimeAssets(baseUrl: string, options: {
|
|
15
|
+
limits: ExecutionLimits;
|
|
16
|
+
signal?: AbortSignal;
|
|
17
|
+
reportProgress?: (value: number, stage: string) => void;
|
|
18
|
+
fetch?: typeof globalThis.fetch;
|
|
19
|
+
}): Promise<Readonly<{
|
|
20
|
+
fingerprint: "11c9baef85c5221440edc4462690312cda62b48998a133b9a397ce32c6a97c45";
|
|
21
|
+
}>>;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { defineRuntimeRegistryManifest, preflightRuntimeAssets, ResourceLimitError, RuntimeConfigurationError } from '@wasm-idle/core';
|
|
2
|
+
import { WASM_LFORTRAN_PROFILE as profile } from './wasmLfortranVersion';
|
|
3
|
+
export const LFORTRAN_INITIAL_MEMORY_BYTES = 128 * 1024 * 1024;
|
|
4
|
+
export const LFORTRAN_RUNTIME_MANIFEST = defineRuntimeRegistryManifest({
|
|
5
|
+
schemaVersion: 2,
|
|
6
|
+
manifestId: 'wasm-idle/lfortran',
|
|
7
|
+
revision: profile.assets['producer-receipt.json'].sha256,
|
|
8
|
+
runtimes: [
|
|
9
|
+
{
|
|
10
|
+
runtimeId: 'LFORTRAN',
|
|
11
|
+
identity: {
|
|
12
|
+
languageId: 'LFORTRAN',
|
|
13
|
+
implementationId: 'lfortran-llvm-emscripten',
|
|
14
|
+
implementationVersion: profile.version,
|
|
15
|
+
profile: {
|
|
16
|
+
profileId: profile.profileId,
|
|
17
|
+
manifestSchemaVersion: 1,
|
|
18
|
+
manifestSha256: profile.assets['producer-receipt.json'].sha256,
|
|
19
|
+
protocolVersion: 1,
|
|
20
|
+
trustProfileId: profile.profileId,
|
|
21
|
+
trustProfileSchemaVersion: 1
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
capabilities: {
|
|
25
|
+
stdin: 'streaming',
|
|
26
|
+
workspace: true,
|
|
27
|
+
abort: true,
|
|
28
|
+
artifacts: false,
|
|
29
|
+
streamingOutput: true
|
|
30
|
+
},
|
|
31
|
+
workerLifetime: { mode: 'per-run' },
|
|
32
|
+
requiredBrowserFeatures: ['wasm', 'wasm-exceptions', 'shared-array-buffer'],
|
|
33
|
+
assetRoot: '.',
|
|
34
|
+
assets: Object.entries(profile.assets).map(([name, receipt]) => ({
|
|
35
|
+
key: name,
|
|
36
|
+
path: name === 'lfortran.data' ? 'lfortran.data.bin' : name,
|
|
37
|
+
compressedSha256: receipt.sha256,
|
|
38
|
+
uncompressedSha256: receipt.sha256,
|
|
39
|
+
compressedBytes: receipt.bytes,
|
|
40
|
+
uncompressedBytes: receipt.bytes,
|
|
41
|
+
encoding: 'identity',
|
|
42
|
+
mediaType: name.endsWith('.wasm')
|
|
43
|
+
? 'application/wasm'
|
|
44
|
+
: name.endsWith('.js')
|
|
45
|
+
? 'text/javascript'
|
|
46
|
+
: name.endsWith('.json')
|
|
47
|
+
? 'application/json'
|
|
48
|
+
: 'application/octet-stream'
|
|
49
|
+
})),
|
|
50
|
+
contracts: {
|
|
51
|
+
routeId: 'LFORTRAN',
|
|
52
|
+
runtimeAssetKey: 'lfortran',
|
|
53
|
+
documentationId: 'lfortran',
|
|
54
|
+
syncTarget: 'wasm-lfortran',
|
|
55
|
+
browserTestId: 'LFORTRAN'
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
});
|
|
60
|
+
export function resolveLfortranRuntimeAssetConfig(assets, currentUrl) {
|
|
61
|
+
const root = typeof assets === 'string' ? assets : assets.rootUrl || '';
|
|
62
|
+
const override = typeof assets === 'string' ? undefined : assets.lfortran?.baseUrl;
|
|
63
|
+
const baseUrl = new URL(override ?? `${root.replace(/\/+$/, '')}/wasm-lfortran/`, currentUrl);
|
|
64
|
+
if (!['http:', 'https:'].includes(baseUrl.protocol) ||
|
|
65
|
+
baseUrl.username ||
|
|
66
|
+
baseUrl.password ||
|
|
67
|
+
baseUrl.search ||
|
|
68
|
+
baseUrl.hash) {
|
|
69
|
+
throw new RuntimeConfigurationError('LFortran requires a credential-free HTTP(S) asset directory.', { runtimeId: 'LFORTRAN' });
|
|
70
|
+
}
|
|
71
|
+
if (!baseUrl.pathname.endsWith('/'))
|
|
72
|
+
baseUrl.pathname += '/';
|
|
73
|
+
const workerUrl = new URL('runner-worker.js', baseUrl);
|
|
74
|
+
workerUrl.searchParams.set('v', profile.workerReceipt.sha256);
|
|
75
|
+
return {
|
|
76
|
+
baseUrl: baseUrl.href,
|
|
77
|
+
workerUrl: workerUrl.href,
|
|
78
|
+
manifestFingerprint: profile.assets['producer-receipt.json'].sha256,
|
|
79
|
+
workerReceipt: profile.workerReceipt
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export async function preflightLfortranRuntimeAssets(baseUrl, options) {
|
|
83
|
+
if (options.limits.maxWasmMemoryBytes < LFORTRAN_INITIAL_MEMORY_BYTES) {
|
|
84
|
+
throw new ResourceLimitError('LFortran needs at least 128 MiB of Wasm memory.', {
|
|
85
|
+
runtimeId: 'LFORTRAN',
|
|
86
|
+
phase: 'asset',
|
|
87
|
+
resource: 'wasm-memory',
|
|
88
|
+
actual: LFORTRAN_INITIAL_MEMORY_BYTES,
|
|
89
|
+
limit: options.limits.maxWasmMemoryBytes
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
const loaded = new Map();
|
|
93
|
+
const total = Object.values(profile.assets).reduce((sum, asset) => sum + asset.bytes, 0);
|
|
94
|
+
const result = await preflightRuntimeAssets({
|
|
95
|
+
manifest: LFORTRAN_RUNTIME_MANIFEST,
|
|
96
|
+
runtimeId: 'LFORTRAN',
|
|
97
|
+
rootUrl: baseUrl,
|
|
98
|
+
assetUrls: Object.fromEntries(Object.entries(profile.assets).map(([name, asset]) => [
|
|
99
|
+
name,
|
|
100
|
+
new URL(`${name === 'lfortran.data' ? 'lfortran.data.bin' : name}?v=${asset.sha256}`, baseUrl)
|
|
101
|
+
])),
|
|
102
|
+
limits: options.limits,
|
|
103
|
+
signal: options.signal,
|
|
104
|
+
fetch: options.fetch,
|
|
105
|
+
redirect: 'error',
|
|
106
|
+
requireExactResponseUrl: true,
|
|
107
|
+
maxConcurrentDownloads: 2,
|
|
108
|
+
maxTotalDeliveryBytes: total,
|
|
109
|
+
reportProgress(progress) {
|
|
110
|
+
loaded.set(progress.assetKey, progress.loadedBytes);
|
|
111
|
+
options.reportProgress?.(0.04 + (0.13 * [...loaded.values()].reduce((a, b) => a + b, 0)) / total, `Verifying LFortran ${progress.assetKey}`);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
return Object.freeze({
|
|
115
|
+
fingerprint: profile.assets['producer-receipt.json'].sha256,
|
|
116
|
+
...Object.fromEntries(Object.entries(result.assets).map(([name, asset]) => [name, asset.bytes]))
|
|
117
|
+
});
|
|
118
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type PlaygroundRuntimeAssets } from './assets';
|
|
2
|
+
import { type CompilerDiagnostic, type SandboxExecutionOptions } from './options';
|
|
3
|
+
import type { Sandbox, SandboxProgress } from './sandbox';
|
|
4
|
+
declare class Lisp implements Sandbox {
|
|
5
|
+
output: any;
|
|
6
|
+
worker?: Worker;
|
|
7
|
+
buffer: import("./sharedBuffer").WasmIdleSharedBuffer;
|
|
8
|
+
pendingInput: string[];
|
|
9
|
+
begin: number;
|
|
10
|
+
elapse: number;
|
|
11
|
+
uid: number;
|
|
12
|
+
exit: boolean;
|
|
13
|
+
moduleUrl: string;
|
|
14
|
+
private runtimeConfigKey;
|
|
15
|
+
oncompilerdiagnostic?: (diagnostic: CompilerDiagnostic) => void;
|
|
16
|
+
waitingForInput: boolean;
|
|
17
|
+
pendingEof: boolean;
|
|
18
|
+
private activeOperation;
|
|
19
|
+
private disposed;
|
|
20
|
+
private disposePromise;
|
|
21
|
+
private readonly disposeCancellation;
|
|
22
|
+
private readonly workerSession;
|
|
23
|
+
private requireOperationIdle;
|
|
24
|
+
private beginOperation;
|
|
25
|
+
private isOperationActive;
|
|
26
|
+
private releaseOperation;
|
|
27
|
+
private cleanupOperation;
|
|
28
|
+
private releaseBeforeSession;
|
|
29
|
+
private bindPreSessionAbort;
|
|
30
|
+
private bindAbortSignal;
|
|
31
|
+
private bindOperationTimeout;
|
|
32
|
+
private resetExplicitStdinState;
|
|
33
|
+
private finishExplicitStdin;
|
|
34
|
+
load(runtimeAssets?: string | PlaygroundRuntimeAssets, _code?: string, _log?: boolean, _args?: string[], options?: SandboxExecutionOptions, progress?: SandboxProgress): Promise<void>;
|
|
35
|
+
write(input: string): void;
|
|
36
|
+
eof(): void;
|
|
37
|
+
private flushPendingInput;
|
|
38
|
+
run(code: string, prepare: boolean, _log?: boolean, _prog?: SandboxProgress, args?: string[], options?: SandboxExecutionOptions): Promise<boolean | string>;
|
|
39
|
+
private cancelOperation;
|
|
40
|
+
kill(): void;
|
|
41
|
+
terminate(reason?: unknown): void;
|
|
42
|
+
clear(): Promise<void>;
|
|
43
|
+
dispose(): Promise<void>;
|
|
44
|
+
}
|
|
45
|
+
export default Lisp;
|