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,372 @@
|
|
|
1
|
+
import { AssetIntegrityError, AssetTooLargeError, CancelledError, RuntimeConfigurationError, TimeoutError, UnsupportedBrowserFeatureError, isWasmIdleError, preflightRuntimeAssets, resolveExecutionLimits, verifyRuntimeAssetIntegrity } from '@wasm-idle/core';
|
|
2
|
+
export const J_PREFLIGHT_PROTOCOL = 'wasm-idle-j-preflight';
|
|
3
|
+
export const J_PREFLIGHT_PROTOCOL_VERSION = 1;
|
|
4
|
+
export const J_PREFLIGHT_RUNTIME_ID = 'J';
|
|
5
|
+
const MAX_MANIFEST_BYTES = 64 * 1024;
|
|
6
|
+
const VERIFIED_WASM_STORAGE_PATH = 'jamalgam.wasm.gz.bin';
|
|
7
|
+
export async function preflightJRuntimeAssets(request) {
|
|
8
|
+
if (!request || typeof request !== 'object') {
|
|
9
|
+
throw new RuntimeConfigurationError('J runtime preflight request is required', {
|
|
10
|
+
phase: 'asset',
|
|
11
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
let baseUrl;
|
|
15
|
+
let manifestUrl;
|
|
16
|
+
try {
|
|
17
|
+
baseUrl = new URL(request.baseUrl);
|
|
18
|
+
if (!baseUrl.pathname.endsWith('/'))
|
|
19
|
+
baseUrl.pathname += '/';
|
|
20
|
+
manifestUrl = new URL(request.manifestUrl, baseUrl);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
throw new RuntimeConfigurationError('J runtime asset URLs are invalid', {
|
|
24
|
+
cause: error,
|
|
25
|
+
phase: 'asset',
|
|
26
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
if ((baseUrl.protocol !== 'https:' && baseUrl.protocol !== 'http:') ||
|
|
30
|
+
baseUrl.username ||
|
|
31
|
+
baseUrl.password ||
|
|
32
|
+
baseUrl.search ||
|
|
33
|
+
baseUrl.hash) {
|
|
34
|
+
throw new RuntimeConfigurationError('J runtime base must be a credential-free HTTP(S) directory URL without a query or fragment', { phase: 'asset', runtimeId: J_PREFLIGHT_RUNTIME_ID });
|
|
35
|
+
}
|
|
36
|
+
if ((manifestUrl.protocol !== 'https:' && manifestUrl.protocol !== 'http:') ||
|
|
37
|
+
manifestUrl.username ||
|
|
38
|
+
manifestUrl.password ||
|
|
39
|
+
manifestUrl.hash ||
|
|
40
|
+
manifestUrl.origin !== baseUrl.origin ||
|
|
41
|
+
!manifestUrl.pathname.startsWith(baseUrl.pathname)) {
|
|
42
|
+
throw new RuntimeConfigurationError('J runtime manifest must be an HTTP(S) asset beneath the configured runtime base', { phase: 'asset', runtimeId: J_PREFLIGHT_RUNTIME_ID });
|
|
43
|
+
}
|
|
44
|
+
const manifestPath = manifestUrl.pathname.slice(baseUrl.pathname.length);
|
|
45
|
+
if (!manifestPath ||
|
|
46
|
+
manifestPath.includes('\\') ||
|
|
47
|
+
manifestPath.includes('\0') ||
|
|
48
|
+
manifestPath.split('/').some((segment) => !segment || segment === '.' || segment === '..')) {
|
|
49
|
+
throw new RuntimeConfigurationError('J runtime manifest path must be a normalized file beneath the runtime base', { phase: 'asset', runtimeId: J_PREFLIGHT_RUNTIME_ID });
|
|
50
|
+
}
|
|
51
|
+
if (manifestPath === 'jamalgam.js' || manifestPath === VERIFIED_WASM_STORAGE_PATH) {
|
|
52
|
+
throw new RuntimeConfigurationError('J runtime manifest and executable asset paths must be distinct', { phase: 'asset', runtimeId: J_PREFLIGHT_RUNTIME_ID });
|
|
53
|
+
}
|
|
54
|
+
const profile = request.profile;
|
|
55
|
+
if (!profile ||
|
|
56
|
+
typeof profile !== 'object' ||
|
|
57
|
+
typeof profile.profileId !== 'string' ||
|
|
58
|
+
!/^jsoftware-j-playground-[A-Za-z0-9._-]+$/u.test(profile.profileId) ||
|
|
59
|
+
typeof profile.sourceRevision !== 'string' ||
|
|
60
|
+
!/^[A-Za-z0-9:;._-]+$/u.test(profile.sourceRevision) ||
|
|
61
|
+
typeof profile.manifestFingerprint !== 'string' ||
|
|
62
|
+
!/^[a-f0-9]{64}$/u.test(profile.manifestFingerprint)) {
|
|
63
|
+
throw new RuntimeConfigurationError('J runtime preflight profile is invalid', {
|
|
64
|
+
phase: 'asset',
|
|
65
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
for (const [label, receipt] of [
|
|
69
|
+
['manifest', profile.manifestReceipt],
|
|
70
|
+
['module', profile.moduleReceipt]
|
|
71
|
+
]) {
|
|
72
|
+
if (!receipt ||
|
|
73
|
+
typeof receipt !== 'object' ||
|
|
74
|
+
!Number.isSafeInteger(receipt.bytes) ||
|
|
75
|
+
(receipt.bytes ?? 0) <= 0 ||
|
|
76
|
+
typeof receipt.sha256 !== 'string' ||
|
|
77
|
+
!/^[a-f0-9]{64}$/u.test(receipt.sha256)) {
|
|
78
|
+
throw new RuntimeConfigurationError(`J runtime ${label} preflight receipt is invalid`, {
|
|
79
|
+
phase: 'asset',
|
|
80
|
+
profileId: profile.profileId,
|
|
81
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const wasmReceipt = profile.wasmReceipt;
|
|
86
|
+
if (!wasmReceipt ||
|
|
87
|
+
typeof wasmReceipt !== 'object' ||
|
|
88
|
+
!Number.isSafeInteger(wasmReceipt.bytes) ||
|
|
89
|
+
(wasmReceipt.bytes ?? 0) <= 0 ||
|
|
90
|
+
typeof wasmReceipt.sha256 !== 'string' ||
|
|
91
|
+
!/^[a-f0-9]{64}$/u.test(wasmReceipt.sha256) ||
|
|
92
|
+
!Number.isSafeInteger(wasmReceipt.uncompressedBytes) ||
|
|
93
|
+
(wasmReceipt.uncompressedBytes ?? 0) <= 0 ||
|
|
94
|
+
typeof wasmReceipt.uncompressedSha256 !== 'string' ||
|
|
95
|
+
!/^[a-f0-9]{64}$/u.test(wasmReceipt.uncompressedSha256)) {
|
|
96
|
+
throw new RuntimeConfigurationError('J runtime Wasm preflight receipt is invalid', {
|
|
97
|
+
phase: 'asset',
|
|
98
|
+
profileId: profile.profileId,
|
|
99
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
const limits = resolveExecutionLimits(request.limits);
|
|
103
|
+
const oversized = [
|
|
104
|
+
[
|
|
105
|
+
'manifest',
|
|
106
|
+
profile.manifestReceipt.bytes,
|
|
107
|
+
Math.min(MAX_MANIFEST_BYTES, limits.maxAssetBytes)
|
|
108
|
+
],
|
|
109
|
+
['module', profile.moduleReceipt.bytes, limits.maxAssetBytes],
|
|
110
|
+
['compressed Wasm', wasmReceipt.bytes, limits.maxAssetBytes],
|
|
111
|
+
['logical Wasm', wasmReceipt.uncompressedBytes, limits.maxAssetBytes]
|
|
112
|
+
];
|
|
113
|
+
for (const [label, bytes, limit] of oversized) {
|
|
114
|
+
if (bytes > limit) {
|
|
115
|
+
throw new AssetTooLargeError(`J runtime ${label} exceeds the ${limit} byte limit`, {
|
|
116
|
+
actual: bytes,
|
|
117
|
+
limit,
|
|
118
|
+
phase: 'asset',
|
|
119
|
+
profileId: profile.profileId,
|
|
120
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (typeof DecompressionStream !== 'function') {
|
|
125
|
+
throw new UnsupportedBrowserFeatureError('DecompressionStream(gzip)', {
|
|
126
|
+
phase: 'asset',
|
|
127
|
+
profileId: profile.profileId,
|
|
128
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
const expectedManifestQuery = `?v=${profile.manifestFingerprint}`;
|
|
132
|
+
if (manifestUrl.search && manifestUrl.search !== expectedManifestQuery) {
|
|
133
|
+
throw new RuntimeConfigurationError('J runtime manifest query must be the pinned manifest fingerprint cache-buster', {
|
|
134
|
+
phase: 'asset',
|
|
135
|
+
profileId: profile.profileId,
|
|
136
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
const manifestRequestUrl = new URL(manifestUrl);
|
|
140
|
+
if (!manifestRequestUrl.search) {
|
|
141
|
+
manifestRequestUrl.searchParams.set('v', profile.manifestFingerprint);
|
|
142
|
+
}
|
|
143
|
+
const moduleRequestUrl = new URL('jamalgam.js', baseUrl);
|
|
144
|
+
moduleRequestUrl.searchParams.set('v', profile.moduleReceipt.sha256);
|
|
145
|
+
const wasmRequestUrl = new URL(VERIFIED_WASM_STORAGE_PATH, baseUrl);
|
|
146
|
+
wasmRequestUrl.searchParams.set('v', wasmReceipt.sha256);
|
|
147
|
+
const registry = {
|
|
148
|
+
schemaVersion: 2,
|
|
149
|
+
manifestId: 'wasm-idle/j-preflight',
|
|
150
|
+
revision: profile.manifestFingerprint,
|
|
151
|
+
runtimes: [
|
|
152
|
+
{
|
|
153
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID,
|
|
154
|
+
identity: {
|
|
155
|
+
languageId: 'J',
|
|
156
|
+
implementationId: 'jsoftware/j-playground',
|
|
157
|
+
implementationVersion: profile.sourceRevision,
|
|
158
|
+
profile: {
|
|
159
|
+
profileId: profile.profileId,
|
|
160
|
+
manifestSchemaVersion: 2,
|
|
161
|
+
manifestSha256: profile.manifestReceipt.sha256,
|
|
162
|
+
protocolVersion: J_PREFLIGHT_PROTOCOL_VERSION,
|
|
163
|
+
trustProfileId: 'wasm-idle-static-worker-v1',
|
|
164
|
+
trustProfileSchemaVersion: 1
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
capabilities: {
|
|
168
|
+
stdin: 'streaming',
|
|
169
|
+
workspace: false,
|
|
170
|
+
abort: true,
|
|
171
|
+
artifacts: false,
|
|
172
|
+
streamingOutput: true
|
|
173
|
+
},
|
|
174
|
+
workerLifetime: { mode: 'per-run' },
|
|
175
|
+
requiredBrowserFeatures: ['wasm', 'decompression-stream'],
|
|
176
|
+
assetRoot: '.',
|
|
177
|
+
assets: [
|
|
178
|
+
{
|
|
179
|
+
key: 'manifest',
|
|
180
|
+
path: manifestPath,
|
|
181
|
+
compressedSha256: profile.manifestReceipt.sha256,
|
|
182
|
+
uncompressedSha256: profile.manifestReceipt.sha256,
|
|
183
|
+
compressedBytes: profile.manifestReceipt.bytes,
|
|
184
|
+
uncompressedBytes: profile.manifestReceipt.bytes,
|
|
185
|
+
mediaType: 'application/json',
|
|
186
|
+
encoding: 'identity'
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
key: 'module',
|
|
190
|
+
path: 'jamalgam.js',
|
|
191
|
+
compressedSha256: profile.moduleReceipt.sha256,
|
|
192
|
+
uncompressedSha256: profile.moduleReceipt.sha256,
|
|
193
|
+
compressedBytes: profile.moduleReceipt.bytes,
|
|
194
|
+
uncompressedBytes: profile.moduleReceipt.bytes,
|
|
195
|
+
mediaType: 'text/javascript',
|
|
196
|
+
encoding: 'identity'
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
key: 'wasm',
|
|
200
|
+
path: VERIFIED_WASM_STORAGE_PATH,
|
|
201
|
+
compressedSha256: wasmReceipt.sha256,
|
|
202
|
+
uncompressedSha256: wasmReceipt.uncompressedSha256,
|
|
203
|
+
compressedBytes: wasmReceipt.bytes,
|
|
204
|
+
uncompressedBytes: wasmReceipt.uncompressedBytes,
|
|
205
|
+
mediaType: 'application/wasm',
|
|
206
|
+
encoding: 'gzip'
|
|
207
|
+
}
|
|
208
|
+
],
|
|
209
|
+
contracts: {
|
|
210
|
+
routeId: 'j',
|
|
211
|
+
runtimeAssetKey: 'j',
|
|
212
|
+
documentationId: 'J',
|
|
213
|
+
syncTarget: 'sync:wasm-j',
|
|
214
|
+
browserTestId: 'browser:j'
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
]
|
|
218
|
+
};
|
|
219
|
+
const controller = new AbortController();
|
|
220
|
+
let timedOut = false;
|
|
221
|
+
const abortFromCaller = () => controller.abort(request.signal?.reason);
|
|
222
|
+
request.signal?.addEventListener('abort', abortFromCaller, { once: true });
|
|
223
|
+
if (request.signal?.aborted)
|
|
224
|
+
abortFromCaller();
|
|
225
|
+
const timeout = setTimeout(() => {
|
|
226
|
+
timedOut = true;
|
|
227
|
+
controller.abort(new DOMException('J runtime preflight timed out', 'TimeoutError'));
|
|
228
|
+
}, limits.assetTimeoutMs);
|
|
229
|
+
try {
|
|
230
|
+
const preflight = await preflightRuntimeAssets({
|
|
231
|
+
manifest: registry,
|
|
232
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID,
|
|
233
|
+
rootUrl: baseUrl,
|
|
234
|
+
assetUrls: {
|
|
235
|
+
manifest: manifestRequestUrl,
|
|
236
|
+
module: moduleRequestUrl,
|
|
237
|
+
wasm: wasmRequestUrl
|
|
238
|
+
},
|
|
239
|
+
fetch: request.fetch,
|
|
240
|
+
signal: controller.signal,
|
|
241
|
+
limits,
|
|
242
|
+
maxConcurrentDownloads: 3,
|
|
243
|
+
reportProgress: request.reportProgress
|
|
244
|
+
});
|
|
245
|
+
const manifestAsset = preflight.assets.manifest;
|
|
246
|
+
const moduleAsset = preflight.assets.module;
|
|
247
|
+
const wasmAsset = preflight.assets.wasm;
|
|
248
|
+
if (!manifestAsset || !moduleAsset || !wasmAsset) {
|
|
249
|
+
throw new RuntimeConfigurationError('J runtime preflight returned an incomplete asset set', {
|
|
250
|
+
phase: 'asset',
|
|
251
|
+
profileId: profile.profileId,
|
|
252
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
if (wasmAsset.bytes[0] !== 0x1f || wasmAsset.bytes[1] !== 0x8b) {
|
|
256
|
+
throw new AssetIntegrityError('J runtime Wasm storage asset is not gzip data', {
|
|
257
|
+
profileId: profile.profileId,
|
|
258
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
const compressedBody = new Response(Uint8Array.from(wasmAsset.bytes)).body;
|
|
262
|
+
if (!compressedBody) {
|
|
263
|
+
throw new UnsupportedBrowserFeatureError('ReadableStream response bodies', {
|
|
264
|
+
phase: 'asset',
|
|
265
|
+
profileId: profile.profileId,
|
|
266
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
const stream = compressedBody.pipeThrough(new DecompressionStream('gzip'));
|
|
270
|
+
const reader = stream.getReader();
|
|
271
|
+
const wasmBytes = new Uint8Array(wasmReceipt.uncompressedBytes);
|
|
272
|
+
let offset = 0;
|
|
273
|
+
const cancelDecompression = () => {
|
|
274
|
+
try {
|
|
275
|
+
void reader.cancel(controller.signal.reason).catch(() => undefined);
|
|
276
|
+
}
|
|
277
|
+
catch {
|
|
278
|
+
// Preserve the cancellation or integrity failure that stopped decompression.
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
controller.signal.addEventListener('abort', cancelDecompression, { once: true });
|
|
282
|
+
try {
|
|
283
|
+
for (;;) {
|
|
284
|
+
if (controller.signal.aborted)
|
|
285
|
+
throw controller.signal.reason;
|
|
286
|
+
const { done, value } = await reader.read();
|
|
287
|
+
if (done)
|
|
288
|
+
break;
|
|
289
|
+
if (offset + value.byteLength > wasmBytes.byteLength) {
|
|
290
|
+
const error = new AssetIntegrityError('J runtime Wasm gzip output exceeds its logical receipt', { profileId: profile.profileId, runtimeId: J_PREFLIGHT_RUNTIME_ID });
|
|
291
|
+
try {
|
|
292
|
+
await reader.cancel(error);
|
|
293
|
+
}
|
|
294
|
+
catch {
|
|
295
|
+
// Preserve the expansion-limit failure.
|
|
296
|
+
}
|
|
297
|
+
throw error;
|
|
298
|
+
}
|
|
299
|
+
wasmBytes.set(value, offset);
|
|
300
|
+
offset += value.byteLength;
|
|
301
|
+
request.reportDecompressionProgress?.(offset, wasmBytes.byteLength);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
catch (error) {
|
|
305
|
+
if (controller.signal.aborted || isWasmIdleError(error))
|
|
306
|
+
throw error;
|
|
307
|
+
throw new AssetIntegrityError('J runtime Wasm gzip decompression failed', {
|
|
308
|
+
cause: error,
|
|
309
|
+
profileId: profile.profileId,
|
|
310
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
finally {
|
|
314
|
+
controller.signal.removeEventListener('abort', cancelDecompression);
|
|
315
|
+
try {
|
|
316
|
+
reader.releaseLock();
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
// Cancellation may already have detached the stream reader.
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
if (offset !== wasmBytes.byteLength) {
|
|
323
|
+
throw new AssetIntegrityError('J runtime Wasm gzip output is shorter than its logical receipt', {
|
|
324
|
+
profileId: profile.profileId,
|
|
325
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
await verifyRuntimeAssetIntegrity({
|
|
329
|
+
asset: 'jamalgam.wasm',
|
|
330
|
+
bytes: wasmBytes,
|
|
331
|
+
expected: wasmReceipt,
|
|
332
|
+
stage: 'uncompressed',
|
|
333
|
+
mimeType: 'application/wasm',
|
|
334
|
+
profileId: profile.profileId,
|
|
335
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID
|
|
336
|
+
});
|
|
337
|
+
return Object.freeze({
|
|
338
|
+
protocol: J_PREFLIGHT_PROTOCOL,
|
|
339
|
+
protocolVersion: J_PREFLIGHT_PROTOCOL_VERSION,
|
|
340
|
+
profileId: profile.profileId,
|
|
341
|
+
sourceRevision: profile.sourceRevision,
|
|
342
|
+
manifestFingerprint: profile.manifestFingerprint,
|
|
343
|
+
manifestBytes: Uint8Array.from(manifestAsset.bytes),
|
|
344
|
+
moduleBytes: Uint8Array.from(moduleAsset.bytes),
|
|
345
|
+
wasmBytes
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
catch (error) {
|
|
349
|
+
if (timedOut) {
|
|
350
|
+
throw new TimeoutError(`J runtime preflight timed out after ${limits.assetTimeoutMs} ms`, {
|
|
351
|
+
cause: error,
|
|
352
|
+
phase: 'asset',
|
|
353
|
+
profileId: profile.profileId,
|
|
354
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID,
|
|
355
|
+
timeoutMs: limits.assetTimeoutMs
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
if (request.signal?.aborted) {
|
|
359
|
+
throw new CancelledError('J runtime preflight cancelled', {
|
|
360
|
+
cause: request.signal.reason,
|
|
361
|
+
phase: 'asset',
|
|
362
|
+
profileId: profile.profileId,
|
|
363
|
+
runtimeId: J_PREFLIGHT_RUNTIME_ID
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
throw error;
|
|
367
|
+
}
|
|
368
|
+
finally {
|
|
369
|
+
clearTimeout(timeout);
|
|
370
|
+
request.signal?.removeEventListener('abort', abortFromCaller);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { resolveJanetRuntimeAssetConfig } from './assets';
|
|
2
|
+
import { preflightStaticRuntimeAssetsInWorker } from './staticRuntimePreflight';
|
|
3
|
+
import { StaticWorkerRuntimeSandbox } from './staticWorkerRuntime';
|
|
4
|
+
import { RuntimeConfigurationError, snapshotJanetRuntimePreflightProfile } from '@wasm-idle/core';
|
|
5
|
+
class Janet extends StaticWorkerRuntimeSandbox {
|
|
6
|
+
constructor() {
|
|
7
|
+
super({
|
|
8
|
+
displayName: 'Janet',
|
|
9
|
+
languageId: 'JANET',
|
|
10
|
+
defaultActivePath: 'main.janet',
|
|
11
|
+
moduleWorker: true,
|
|
12
|
+
workerLifetime: { mode: 'per-run' },
|
|
13
|
+
stdin: {
|
|
14
|
+
mode: 'streaming',
|
|
15
|
+
sourceHintPattern: /\b(?:getline|stdin|file\/read)\b/i
|
|
16
|
+
},
|
|
17
|
+
inlineVerifiedWorker: true,
|
|
18
|
+
runtimePreflightDelivery: 'transfer-owned',
|
|
19
|
+
resolveRuntimeAssets(runtimeAssets, currentUrl) {
|
|
20
|
+
const resolved = resolveJanetRuntimeAssetConfig(runtimeAssets, currentUrl);
|
|
21
|
+
const profile = snapshotJanetRuntimePreflightProfile(resolved.preflightProfile);
|
|
22
|
+
if (!/^[a-f0-9]{64}$/u.test(resolved.manifestFingerprint || '') ||
|
|
23
|
+
profile.manifestFingerprint !== resolved.manifestFingerprint ||
|
|
24
|
+
!resolved.workerReceipt) {
|
|
25
|
+
throw new RuntimeConfigurationError('Janet runtime requires one coherent preflight profile, manifest fingerprint, and worker receipt.', { runtimeId: 'JANET' });
|
|
26
|
+
}
|
|
27
|
+
return { ...resolved, preflightProfile: profile };
|
|
28
|
+
},
|
|
29
|
+
async preflightRuntimeAssets(urls, context) {
|
|
30
|
+
const profile = urls.preflightProfile;
|
|
31
|
+
const loadedByAsset = new Map();
|
|
32
|
+
const totalDownloadBytes = (profile.manifestReceipt.bytes ?? 0) +
|
|
33
|
+
(profile.javascriptReceipt.bytes ?? 0) +
|
|
34
|
+
(profile.wasmReceipt.bytes ?? 0);
|
|
35
|
+
const totalDecompressedBytes = profile.wasmReceipt.uncompressedBytes ?? 0;
|
|
36
|
+
const payload = await preflightStaticRuntimeAssetsInWorker({
|
|
37
|
+
runtimeId: 'JANET',
|
|
38
|
+
displayName: 'Janet',
|
|
39
|
+
baseUrl: urls.baseUrl,
|
|
40
|
+
manifestUrl: urls.manifestUrl || '',
|
|
41
|
+
profile,
|
|
42
|
+
limits: context.limits,
|
|
43
|
+
signal: context.signal,
|
|
44
|
+
reportProgress(progress) {
|
|
45
|
+
if (progress.kind === 'asset') {
|
|
46
|
+
loadedByAsset.set(progress.progress.assetKey, progress.progress.loadedBytes);
|
|
47
|
+
const loadedBytes = [...loadedByAsset.values()].reduce((total, loaded) => total + loaded, 0);
|
|
48
|
+
const fraction = totalDownloadBytes > 0 ? loadedBytes / totalDownloadBytes : 0;
|
|
49
|
+
context.reportProgress(0.04 + Math.min(1, fraction) * 0.1, `Preflighting Janet asset ${progress.progress.assetKey}`);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const { loadedBytes } = progress;
|
|
53
|
+
const fraction = totalDecompressedBytes > 0
|
|
54
|
+
? loadedBytes / totalDecompressedBytes
|
|
55
|
+
: 0;
|
|
56
|
+
context.reportProgress(0.14 + Math.min(1, fraction) * 0.03, 'Decompressing verified Janet wasm');
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
return context.createOwnedDelivery(payload);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export default Janet;
|
|
@@ -1,33 +1,47 @@
|
|
|
1
1
|
import { type CompilerDiagnostic, type SandboxExecutionOptions } from './options';
|
|
2
2
|
import { WorkerAssetBridge } from './assetBridge';
|
|
3
3
|
import { type PlaygroundRuntimeAssets } from './assets';
|
|
4
|
-
import type { Sandbox } from './sandbox';
|
|
4
|
+
import type { Sandbox, SandboxProgress } from './sandbox';
|
|
5
5
|
declare class Java implements Sandbox {
|
|
6
6
|
output: any;
|
|
7
7
|
worker?: Worker;
|
|
8
|
-
buffer:
|
|
8
|
+
buffer: import("./sharedBuffer").WasmIdleSharedBuffer;
|
|
9
9
|
pendingInput: string[];
|
|
10
10
|
begin: number;
|
|
11
11
|
elapse: number;
|
|
12
12
|
uid: number;
|
|
13
13
|
exit: boolean;
|
|
14
14
|
baseUrl: string;
|
|
15
|
-
activeReject: ((reason: string) => void) | null;
|
|
16
15
|
oncompilerdiagnostic?: (diagnostic: CompilerDiagnostic) => void;
|
|
17
16
|
waitingForInput: boolean;
|
|
18
17
|
pendingEof: boolean;
|
|
19
18
|
assetBridge: WorkerAssetBridge | null;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
private activeOperation;
|
|
20
|
+
private disposed;
|
|
21
|
+
private disposePromise;
|
|
22
|
+
private readonly disposeCancellation;
|
|
23
|
+
private readonly workerSession;
|
|
24
|
+
private disposedConfigurationError;
|
|
25
|
+
private requireOperationIdle;
|
|
26
|
+
private beginOperation;
|
|
27
|
+
private isOperationActive;
|
|
28
|
+
private releaseOperation;
|
|
29
|
+
private cleanupOperation;
|
|
30
|
+
private releaseBeforeSession;
|
|
31
|
+
private bindPreSessionAbort;
|
|
32
|
+
private bindAbortSignal;
|
|
33
|
+
private bindOperationTimeout;
|
|
34
|
+
private resetExplicitStdinState;
|
|
35
|
+
private finishExplicitStdin;
|
|
36
|
+
load(runtimeAssets?: string | PlaygroundRuntimeAssets, _code?: string, _log?: boolean, _args?: string[], options?: SandboxExecutionOptions, progress?: SandboxProgress): Promise<void>;
|
|
23
37
|
write(input: string): void;
|
|
24
38
|
eof(): void;
|
|
25
39
|
private flushPendingInput;
|
|
26
|
-
run(code: string, prepare: boolean, _log?: boolean, _prog?:
|
|
27
|
-
|
|
28
|
-
} | import('svelte/store').Writable<number>, args?: string[], options?: SandboxExecutionOptions): Promise<boolean | string>;
|
|
40
|
+
run(code: string, prepare: boolean, _log?: boolean, _prog?: SandboxProgress, args?: string[], options?: SandboxExecutionOptions): Promise<boolean | string>;
|
|
41
|
+
private cancelOperation;
|
|
29
42
|
kill(): void;
|
|
30
|
-
terminate(): void;
|
|
43
|
+
terminate(reason?: unknown): void;
|
|
31
44
|
clear(): Promise<void>;
|
|
45
|
+
dispose(): Promise<void>;
|
|
32
46
|
}
|
|
33
47
|
export default Java;
|