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.
Files changed (386) hide show
  1. package/README.md +760 -81
  2. package/dist/index.d.ts +4 -9
  3. package/dist/index.js +2 -4
  4. package/dist/playground/applicationAssets.d.ts +4 -0
  5. package/dist/playground/applicationAssets.js +277 -0
  6. package/dist/playground/assemblyscript.d.ts +41 -0
  7. package/dist/playground/assemblyscript.js +630 -0
  8. package/dist/playground/assetBridge.d.ts +18 -7
  9. package/dist/playground/assetBridge.js +824 -100
  10. package/dist/playground/assets.d.ts +813 -19
  11. package/dist/playground/assets.js +2096 -156
  12. package/dist/playground/awk.d.ts +5 -0
  13. package/dist/playground/awk.js +60 -0
  14. package/dist/playground/bash.d.ts +53 -0
  15. package/dist/playground/bash.js +1096 -0
  16. package/dist/playground/bashWorkerProtocol.d.ts +88 -0
  17. package/dist/playground/bashWorkerProtocol.js +135 -0
  18. package/dist/playground/bqn.d.ts +5 -0
  19. package/dist/playground/bqn.js +57 -0
  20. package/dist/playground/bqnPreflight.d.ts +26 -0
  21. package/dist/playground/bqnPreflight.js +399 -0
  22. package/dist/playground/c3.d.ts +15 -0
  23. package/dist/playground/c3.js +154 -0
  24. package/dist/playground/clang.d.ts +35 -19
  25. package/dist/playground/clang.js +241 -52
  26. package/dist/playground/clangAssetIntegrity.d.ts +32 -0
  27. package/dist/playground/clangAssetIntegrity.js +8 -0
  28. package/dist/playground/clojurescript.d.ts +5 -0
  29. package/dist/playground/clojurescript.js +59 -0
  30. package/dist/playground/clojurescriptPreflight.d.ts +26 -0
  31. package/dist/playground/clojurescriptPreflight.js +383 -0
  32. package/dist/playground/cobol.d.ts +46 -0
  33. package/dist/playground/cobol.js +703 -0
  34. package/dist/playground/d.d.ts +47 -0
  35. package/dist/playground/d.js +644 -0
  36. package/dist/playground/dOuterAssets.d.ts +16 -0
  37. package/dist/playground/dOuterAssets.js +163 -0
  38. package/dist/playground/dotnet.d.ts +99 -0
  39. package/dist/playground/dotnet.js +1131 -0
  40. package/dist/playground/duckdb.d.ts +36 -0
  41. package/dist/playground/duckdb.js +542 -0
  42. package/dist/playground/elixir.d.ts +18 -10
  43. package/dist/playground/elixir.js +630 -96
  44. package/dist/playground/elixirAssets.d.ts +6 -0
  45. package/dist/playground/elixirAssets.js +33 -0
  46. package/dist/playground/executionObservation.d.ts +22 -0
  47. package/dist/playground/executionObservation.js +65 -0
  48. package/dist/playground/forth.d.ts +5 -0
  49. package/dist/playground/forth.js +53 -0
  50. package/dist/playground/forthPreflight.d.ts +24 -0
  51. package/dist/playground/forthPreflight.js +198 -0
  52. package/dist/playground/fortran.d.ts +47 -0
  53. package/dist/playground/fortran.js +651 -0
  54. package/dist/playground/fortranAssets.d.ts +6 -0
  55. package/dist/playground/fortranAssets.js +27 -0
  56. package/dist/playground/gleam.d.ts +6 -0
  57. package/dist/playground/gleam.js +33 -0
  58. package/dist/playground/go.d.ts +17 -11
  59. package/dist/playground/go.js +376 -72
  60. package/dist/playground/goDebugInstrumentation.d.ts +1 -0
  61. package/dist/playground/goDebugInstrumentation.js +229 -0
  62. package/dist/playground/haskell.d.ts +44 -0
  63. package/dist/playground/haskell.js +678 -0
  64. package/dist/playground/haskellAssets.d.ts +24 -0
  65. package/dist/playground/haskellAssets.js +93 -0
  66. package/dist/playground/index.d.ts +1 -1
  67. package/dist/playground/index.js +360 -111
  68. package/dist/playground/j.d.ts +5 -0
  69. package/dist/playground/j.js +60 -0
  70. package/dist/playground/jPreflight.d.ts +26 -0
  71. package/dist/playground/jPreflight.js +372 -0
  72. package/dist/playground/janet.d.ts +5 -0
  73. package/dist/playground/janet.js +64 -0
  74. package/dist/playground/java.d.ts +24 -10
  75. package/dist/playground/java.js +706 -84
  76. package/dist/playground/javaSource.d.ts +5 -0
  77. package/dist/playground/javaSource.js +16 -0
  78. package/dist/playground/javaStdin.d.ts +1 -1
  79. package/dist/playground/javaStdin.js +13 -4
  80. package/dist/playground/julia.d.ts +5 -0
  81. package/dist/playground/julia.js +64 -0
  82. package/dist/playground/lfortran.d.ts +8 -0
  83. package/dist/playground/lfortran.js +30 -0
  84. package/dist/playground/lfortranAssets.d.ts +21 -0
  85. package/dist/playground/lfortranAssets.js +118 -0
  86. package/dist/playground/lisp.d.ts +45 -0
  87. package/dist/playground/lisp.js +640 -0
  88. package/dist/playground/lispAssets.d.ts +9 -0
  89. package/dist/playground/lispAssets.js +74 -0
  90. package/dist/playground/lldbManifest.d.ts +3 -0
  91. package/dist/playground/lldbManifest.js +155 -0
  92. package/dist/playground/lldbSession.d.ts +115 -0
  93. package/dist/playground/lldbSession.js +1347 -0
  94. package/dist/playground/loadingProgress.d.ts +16 -0
  95. package/dist/playground/loadingProgress.js +166 -0
  96. package/dist/playground/lua.d.ts +44 -0
  97. package/dist/playground/lua.js +630 -0
  98. package/dist/playground/nim.d.ts +5 -0
  99. package/dist/playground/nim.js +76 -0
  100. package/dist/playground/objectivec.d.ts +39 -0
  101. package/dist/playground/objectivec.js +288 -0
  102. package/dist/playground/ocaml.d.ts +28 -10
  103. package/dist/playground/ocaml.js +815 -253
  104. package/dist/playground/octave.d.ts +43 -0
  105. package/dist/playground/octave.js +783 -0
  106. package/dist/playground/options.d.ts +19 -40
  107. package/dist/playground/options.js +2 -1
  108. package/dist/playground/pascal.d.ts +5 -0
  109. package/dist/playground/pascal.js +60 -0
  110. package/dist/playground/perl.d.ts +5 -0
  111. package/dist/playground/perl.js +61 -0
  112. package/dist/playground/php.d.ts +44 -0
  113. package/dist/playground/php.js +665 -0
  114. package/dist/playground/prolog.d.ts +6 -0
  115. package/dist/playground/prolog.js +75 -0
  116. package/dist/playground/python.d.ts +20 -14
  117. package/dist/playground/python.js +445 -101
  118. package/dist/playground/pythonPackageLock.d.ts +6 -0
  119. package/dist/playground/pythonPackageLock.js +56 -0
  120. package/dist/playground/r.d.ts +44 -0
  121. package/dist/playground/r.js +637 -0
  122. package/dist/playground/ruby.d.ts +46 -0
  123. package/dist/playground/ruby.js +732 -0
  124. package/dist/playground/rubyAssets.d.ts +23 -0
  125. package/dist/playground/rubyAssets.js +68 -0
  126. package/dist/playground/rubyTestPreflight.d.ts +2 -0
  127. package/dist/playground/rubyTestPreflight.js +18 -0
  128. package/dist/playground/runtimeModule.d.ts +1 -0
  129. package/dist/playground/runtimeModule.js +5 -0
  130. package/dist/playground/rust.d.ts +44 -13
  131. package/dist/playground/rust.js +714 -76
  132. package/dist/playground/rustExecutableGraph.d.ts +85 -0
  133. package/dist/playground/rustExecutableGraph.js +946 -0
  134. package/dist/playground/rustWorkerLimits.d.ts +17 -0
  135. package/dist/playground/rustWorkerLimits.js +34 -0
  136. package/dist/playground/sandbox.d.ts +16 -10
  137. package/dist/playground/sharedBuffer.d.ts +6 -0
  138. package/dist/playground/sharedBuffer.js +12 -0
  139. package/dist/playground/sqlite.d.ts +38 -0
  140. package/dist/playground/sqlite.js +550 -0
  141. package/dist/playground/staticRuntimeModuleVersion.d.ts +1 -0
  142. package/dist/playground/staticRuntimeModuleVersion.js +2 -0
  143. package/dist/playground/staticRuntimePreflight.d.ts +13 -0
  144. package/dist/playground/staticRuntimePreflight.js +231 -0
  145. package/dist/playground/staticRuntimePreflightExecute.d.ts +8 -0
  146. package/dist/playground/staticRuntimePreflightExecute.js +66 -0
  147. package/dist/playground/staticRuntimePreflightProtocol.d.ts +68 -0
  148. package/dist/playground/staticRuntimePreflightProtocol.js +339 -0
  149. package/dist/playground/staticStdinRing.d.ts +45 -0
  150. package/dist/playground/staticStdinRing.js +158 -0
  151. package/dist/playground/staticWorkerRuntime.d.ts +154 -0
  152. package/dist/playground/staticWorkerRuntime.js +1917 -0
  153. package/dist/playground/stdinBuffer.d.ts +9 -7
  154. package/dist/playground/stdinBuffer.js +9 -18
  155. package/dist/playground/swift.d.ts +5 -0
  156. package/dist/playground/swift.js +17 -0
  157. package/dist/playground/tcl.d.ts +5 -0
  158. package/dist/playground/tcl.js +62 -0
  159. package/dist/playground/teavmConfig.d.ts +1 -1
  160. package/dist/playground/teavmConfig.js +2 -2
  161. package/dist/playground/tinygo.d.ts +48 -18
  162. package/dist/playground/tinygo.js +1202 -329
  163. package/dist/playground/tinygoExecutableGraph.d.ts +44 -0
  164. package/dist/playground/tinygoExecutableGraph.js +449 -0
  165. package/dist/playground/typescript.d.ts +55 -0
  166. package/dist/playground/typescript.js +924 -0
  167. package/dist/playground/wasm.d.ts +43 -0
  168. package/dist/playground/wasm.js +608 -0
  169. package/dist/playground/wasmAwkVersion.d.ts +59 -0
  170. package/dist/playground/wasmAwkVersion.js +31 -0
  171. package/dist/playground/wasmBashVersion.d.ts +63 -0
  172. package/dist/playground/wasmBashVersion.js +36 -0
  173. package/dist/playground/wasmBqnVersion.d.ts +24 -0
  174. package/dist/playground/wasmBqnVersion.js +24 -0
  175. package/dist/playground/wasmC3Version.d.ts +20 -0
  176. package/dist/playground/wasmC3Version.js +21 -0
  177. package/dist/playground/wasmClojureScriptVersion.d.ts +21 -0
  178. package/dist/playground/wasmClojureScriptVersion.js +21 -0
  179. package/dist/playground/wasmDIntegrity.d.ts +15 -0
  180. package/dist/playground/wasmDIntegrity.js +15 -0
  181. package/dist/playground/wasmDVersion.d.ts +1 -0
  182. package/dist/playground/wasmDVersion.js +1 -0
  183. package/dist/playground/wasmDebugVersion.d.ts +6 -0
  184. package/dist/playground/wasmDebugVersion.js +6 -0
  185. package/dist/playground/wasmDotnetVersion.d.ts +1 -0
  186. package/dist/playground/wasmDotnetVersion.js +1 -0
  187. package/dist/playground/wasmElixirVersion.d.ts +21 -1
  188. package/dist/playground/wasmElixirVersion.js +21 -1
  189. package/dist/playground/wasmForthVersion.d.ts +18 -0
  190. package/dist/playground/wasmForthVersion.js +18 -0
  191. package/dist/playground/wasmFortranExecutionAssets.d.ts +15 -0
  192. package/dist/playground/wasmFortranExecutionAssets.js +15 -0
  193. package/dist/playground/wasmFortranVersion.d.ts +1 -0
  194. package/dist/playground/wasmFortranVersion.js +1 -0
  195. package/dist/playground/wasmGleamVersion.d.ts +5 -0
  196. package/dist/playground/wasmGleamVersion.js +5 -0
  197. package/dist/playground/wasmGoVersion.d.ts +1 -1
  198. package/dist/playground/wasmGoVersion.js +1 -1
  199. package/dist/playground/wasmHaskellVersion.d.ts +1 -0
  200. package/dist/playground/wasmHaskellVersion.js +1 -0
  201. package/dist/playground/wasmJVersion.d.ts +24 -0
  202. package/dist/playground/wasmJVersion.js +24 -0
  203. package/dist/playground/wasmJanetVersion.d.ts +53 -0
  204. package/dist/playground/wasmJanetVersion.js +30 -0
  205. package/dist/playground/wasmJuliaVersion.d.ts +71 -0
  206. package/dist/playground/wasmJuliaVersion.js +39 -0
  207. package/dist/playground/wasmLfortranVersion.d.ts +28 -0
  208. package/dist/playground/wasmLfortranVersion.js +29 -0
  209. package/dist/playground/wasmLispVersion.d.ts +1 -0
  210. package/dist/playground/wasmLispVersion.js +1 -0
  211. package/dist/playground/wasmLuaVersion.d.ts +1 -0
  212. package/dist/playground/wasmLuaVersion.js +1 -0
  213. package/dist/playground/wasmNimVersion.d.ts +125 -0
  214. package/dist/playground/wasmNimVersion.js +66 -0
  215. package/dist/playground/wasmObjectiveCVersion.d.ts +27 -0
  216. package/dist/playground/wasmObjectiveCVersion.js +27 -0
  217. package/dist/playground/wasmOcamlVersion.d.ts +12 -1
  218. package/dist/playground/wasmOcamlVersion.js +12 -1
  219. package/dist/playground/wasmOctaveVersion.d.ts +1 -0
  220. package/dist/playground/wasmOctaveVersion.js +1 -0
  221. package/dist/playground/wasmPascalVersion.d.ts +61 -0
  222. package/dist/playground/wasmPascalVersion.js +34 -0
  223. package/dist/playground/wasmPerlVersion.d.ts +71 -0
  224. package/dist/playground/wasmPerlVersion.js +39 -0
  225. package/dist/playground/wasmPrologVersion.d.ts +31 -0
  226. package/dist/playground/wasmPrologVersion.js +31 -0
  227. package/dist/playground/wasmRVersion.d.ts +1 -0
  228. package/dist/playground/wasmRVersion.js +1 -0
  229. package/dist/playground/wasmRustVersion.d.ts +1306 -1
  230. package/dist/playground/wasmRustVersion.js +1458 -1
  231. package/dist/playground/wasmSwiftVersion.d.ts +1 -0
  232. package/dist/playground/wasmSwiftVersion.js +1 -0
  233. package/dist/playground/wasmTclVersion.d.ts +85 -0
  234. package/dist/playground/wasmTclVersion.js +46 -0
  235. package/dist/playground/wasmTinyGoVersion.d.ts +98 -1
  236. package/dist/playground/wasmTinyGoVersion.js +107 -1
  237. package/dist/playground/wasmTypeScriptVersion.d.ts +5 -0
  238. package/dist/playground/wasmTypeScriptVersion.js +5 -0
  239. package/dist/playground/wasmWatVersion.d.ts +1 -0
  240. package/dist/playground/wasmWatVersion.js +1 -0
  241. package/dist/playground/wasmZigVersion.d.ts +13 -0
  242. package/dist/playground/wasmZigVersion.js +13 -0
  243. package/dist/playground/wat.d.ts +44 -0
  244. package/dist/playground/wat.js +622 -0
  245. package/dist/playground/worker/assemblyscript.js +339 -0
  246. package/dist/playground/worker/assets.d.ts +7 -0
  247. package/dist/playground/worker/assets.js +288 -39
  248. package/dist/playground/worker/bash.js +338 -0
  249. package/dist/playground/worker/bashNestedBootstrap.d.ts +6 -0
  250. package/dist/playground/worker/bashNestedBootstrap.js +59 -0
  251. package/dist/playground/worker/bashRuntime.d.ts +89 -0
  252. package/dist/playground/worker/bashRuntime.js +982 -0
  253. package/dist/playground/worker/clang.js +92 -13
  254. package/dist/playground/worker/cobol.js +107 -0
  255. package/dist/playground/worker/d.js +199 -0
  256. package/dist/playground/worker/dotnet.js +141 -0
  257. package/dist/playground/worker/duckdb.d.ts +1 -0
  258. package/dist/playground/worker/duckdb.js +136 -0
  259. package/dist/playground/worker/elixir.js +307 -41
  260. package/dist/playground/worker/fortran.d.ts +1 -0
  261. package/dist/playground/worker/fortran.js +295 -0
  262. package/dist/playground/worker/go.js +246 -40
  263. package/dist/playground/worker/haskell.d.ts +7 -0
  264. package/dist/playground/worker/haskell.js +465 -0
  265. package/dist/playground/worker/java.js +59 -20
  266. package/dist/playground/worker/lisp.d.ts +1 -0
  267. package/dist/playground/worker/lisp.js +195 -0
  268. package/dist/playground/worker/lua.d.ts +1 -0
  269. package/dist/playground/worker/lua.js +163 -0
  270. package/dist/playground/worker/objectivec.d.ts +1 -0
  271. package/dist/playground/worker/objectivec.js +10 -0
  272. package/dist/playground/worker/ocaml.js +206 -58
  273. package/dist/playground/worker/php.d.ts +1 -0
  274. package/dist/playground/worker/php.js +261 -0
  275. package/dist/playground/worker/python.js +201 -44
  276. package/dist/playground/worker/r.d.ts +1 -0
  277. package/dist/playground/worker/r.js +192 -0
  278. package/dist/playground/worker/ruby.d.ts +1 -0
  279. package/dist/playground/worker/ruby.js +248 -0
  280. package/dist/playground/worker/runtimeAssetFetch.d.ts +15 -0
  281. package/dist/playground/worker/runtimeAssetFetch.js +375 -0
  282. package/dist/playground/worker/rust.js +546 -20
  283. package/dist/playground/worker/sqlite.d.ts +1 -0
  284. package/dist/playground/worker/sqlite.js +112 -0
  285. package/dist/playground/worker/staticRuntimePreflight.d.ts +1 -0
  286. package/dist/playground/worker/staticRuntimePreflight.js +56 -0
  287. package/dist/playground/worker/tinygo.js +34 -9
  288. package/dist/playground/worker/typescript.d.ts +1 -0
  289. package/dist/playground/worker/typescript.js +251 -0
  290. package/dist/playground/worker/wasm.d.ts +1 -0
  291. package/dist/playground/worker/wasm.js +273 -0
  292. package/dist/playground/worker/wat.d.ts +1 -0
  293. package/dist/playground/worker/wat.js +188 -0
  294. package/dist/playground/worker/zig.d.ts +8 -0
  295. package/dist/playground/worker/zig.js +578 -0
  296. package/dist/playground/workerProgress.d.ts +15 -0
  297. package/dist/playground/workerProgress.js +72 -0
  298. package/dist/playground/workerSession.d.ts +28 -0
  299. package/dist/playground/workerSession.js +164 -0
  300. package/dist/playground/zig.d.ts +46 -0
  301. package/dist/playground/zig.js +690 -0
  302. package/dist/playground/zigAssets.d.ts +6 -0
  303. package/dist/playground/zigAssets.js +49 -0
  304. package/package.json +234 -105
  305. package/dist/clang/app.d.ts +0 -75
  306. package/dist/clang/app.js +0 -744
  307. package/dist/clang/apply.d.ts +0 -2
  308. package/dist/clang/apply.js +0 -11
  309. package/dist/clang/color.d.ts +0 -3
  310. package/dist/clang/color.js +0 -3
  311. package/dist/clang/encode.d.ts +0 -4
  312. package/dist/clang/encode.js +0 -20
  313. package/dist/clang/error.d.ts +0 -14
  314. package/dist/clang/error.js +0 -27
  315. package/dist/clang/gccCompat.d.ts +0 -15
  316. package/dist/clang/gccCompat.js +0 -767
  317. package/dist/clang/index.d.ts +0 -85
  318. package/dist/clang/index.js +0 -1077
  319. package/dist/clang/memory/index.d.ts +0 -4
  320. package/dist/clang/memory/index.js +0 -4
  321. package/dist/clang/memory/memFs.d.ts +0 -35
  322. package/dist/clang/memory/memFs.js +0 -132
  323. package/dist/clang/memory/memory.d.ts +0 -22
  324. package/dist/clang/memory/memory.js +0 -73
  325. package/dist/clang/memory/tar.d.ts +0 -2
  326. package/dist/clang/memory/tar.js +0 -59
  327. package/dist/clang/url.d.ts +0 -4
  328. package/dist/clang/url.js +0 -5
  329. package/dist/clang/wasm.d.ts +0 -4
  330. package/dist/clang/wasm.js +0 -50
  331. package/dist/clangd/config.d.ts +0 -18
  332. package/dist/clangd/config.js +0 -14
  333. package/dist/clangd/jsonStream.d.ts +0 -9
  334. package/dist/clangd/jsonStream.js +0 -48
  335. package/dist/clangd/session.d.ts +0 -18
  336. package/dist/clangd/session.js +0 -112
  337. package/dist/clangd/worker.js +0 -131
  338. package/dist/debug/controller.svelte.d.ts +0 -43
  339. package/dist/debug/controller.svelte.js +0 -268
  340. package/dist/debug/editor/index.d.ts +0 -2
  341. package/dist/debug/editor/index.js +0 -1
  342. package/dist/debug/editor/monaco.d.ts +0 -26
  343. package/dist/debug/editor/monaco.js +0 -128
  344. package/dist/debug/expression.d.ts +0 -26
  345. package/dist/debug/expression.js +0 -547
  346. package/dist/debug/index.d.ts +0 -8
  347. package/dist/debug/index.js +0 -5
  348. package/dist/debug/language/cpp.d.ts +0 -2
  349. package/dist/debug/language/cpp.js +0 -7
  350. package/dist/debug/language/index.d.ts +0 -3
  351. package/dist/debug/language/index.js +0 -2
  352. package/dist/debug/language/python.d.ts +0 -2
  353. package/dist/debug/language/python.js +0 -14
  354. package/dist/debug/language/types.d.ts +0 -6
  355. package/dist/debug/locals.d.ts +0 -2
  356. package/dist/debug/locals.js +0 -8
  357. package/dist/lsp/cpp/server.d.ts +0 -2
  358. package/dist/lsp/cpp/server.js +0 -68
  359. package/dist/lsp/index.d.ts +0 -5
  360. package/dist/lsp/index.js +0 -4
  361. package/dist/lsp/python/main.worker.js +0 -92
  362. package/dist/lsp/python/package/arcturus_python_lsp/__init__.py +0 -3
  363. package/dist/lsp/python/package/arcturus_python_lsp/server.py +0 -462
  364. package/dist/lsp/python/server.d.ts +0 -2
  365. package/dist/lsp/python/server.js +0 -54
  366. package/dist/lsp/registry.d.ts +0 -2
  367. package/dist/lsp/registry.js +0 -12
  368. package/dist/lsp/runtime.d.ts +0 -5
  369. package/dist/lsp/runtime.js +0 -31
  370. package/dist/lsp/types.d.ts +0 -17
  371. package/dist/terminal/Terminal.svelte +0 -422
  372. package/dist/terminal/Terminal.svelte.d.ts +0 -26
  373. package/dist/terminal/index.d.ts +0 -7
  374. package/dist/terminal/index.js +0 -5
  375. package/dist/terminal/plugin/index.d.ts +0 -9
  376. package/dist/terminal/plugin/index.js +0 -19
  377. package/dist/terminal/theme.d.ts +0 -49
  378. package/dist/terminal/theme.js +0 -49
  379. package/dist/terminal/types.d.ts +0 -18
  380. package/dist/utils/vscodeJsonrpcBrowser.d.ts +0 -5
  381. package/dist/utils/vscodeJsonrpcBrowser.js +0 -4
  382. /package/dist/{clangd/worker.d.ts → playground/worker/assemblyscript.d.ts} +0 -0
  383. /package/dist/{debug/language/types.js → playground/worker/bash.d.ts} +0 -0
  384. /package/dist/{lsp/python/main.worker.d.ts → playground/worker/cobol.d.ts} +0 -0
  385. /package/dist/{lsp/types.js → playground/worker/d.d.ts} +0 -0
  386. /package/dist/{terminal/types.js → playground/worker/dotnet.d.ts} +0 -0
@@ -1,19 +1,30 @@
1
1
  import { WorkerAssetBridge } from './assetBridge';
2
- import { resolveRuntimeAssetConfig } from './assets';
2
+ import { resolveDebugRuntimeUrls, resolveRuntimeAssetConfig } from './assets';
3
+ import { LldbSandboxSession } from './lldbSession';
4
+ import { normalizeDwarfWorkspacePath } from '@wasm-idle/llvm-core/clang';
5
+ import { resolveExecutionLimits } from '@wasm-idle/core';
3
6
  import { resolveSandboxExecutionArgs } from './options';
4
7
  import { bufferedSequence, flushBufferedEof, flushQueuedStdin, resetBufferedStdin, waitForBufferedSequenceChange } from './stdinBuffer';
8
+ import { createWasmIdleSharedBuffer, requireSharedArrayBuffer } from './sharedBuffer';
9
+ import { WorkerSession } from './workerSession';
10
+ import { reportWorkerInputReady, reportWorkerProgress } from './workerProgress';
5
11
  const debugBreakpointBufferInts = 1028;
12
+ function normalizeLldbSourcePath(sourcePath, fallback) {
13
+ const normalized = normalizeDwarfWorkspacePath(sourcePath?.replace(/^\/workspace\//u, '') || fallback) ||
14
+ fallback;
15
+ return `/workspace/${normalized}`;
16
+ }
6
17
  class Clang {
7
18
  language;
8
19
  ts = Date.now();
9
20
  output = null;
10
21
  ondebug;
11
22
  worker = null;
12
- buffer = new SharedArrayBuffer(1024);
13
- debugBuffer = new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT * debugBreakpointBufferInts);
14
- watchBuffer = new SharedArrayBuffer(1024);
15
- watchResultBuffer = new SharedArrayBuffer(1024);
16
- interruptBuffer = new SharedArrayBuffer(1);
23
+ buffer = createWasmIdleSharedBuffer(1024);
24
+ debugBuffer = createWasmIdleSharedBuffer(Int32Array.BYTES_PER_ELEMENT * debugBreakpointBufferInts);
25
+ watchBuffer = createWasmIdleSharedBuffer(1024);
26
+ watchResultBuffer = createWasmIdleSharedBuffer(1024);
27
+ interruptBuffer = createWasmIdleSharedBuffer(1);
17
28
  pendingInput = [];
18
29
  begin = 0;
19
30
  elapse = 0;
@@ -23,33 +34,85 @@ class Clang {
23
34
  pendingEof = false;
24
35
  exit = true;
25
36
  assetBridge = null;
26
- activeReject = null;
37
+ debugRuntimeBaseUrl = '';
38
+ debugManifestUrl = '';
39
+ debugManifestReceipt;
40
+ lldbSession;
41
+ debugMode = 'none';
42
+ lldbBreakpoints = new Map();
43
+ debugEvaluationQueue = Promise.resolve();
44
+ workerSession = new WorkerSession({
45
+ label: 'Clang',
46
+ onDispose: (worker) => {
47
+ this.disposeWorkerAssetBridge(worker);
48
+ if (this.worker === worker)
49
+ delete this.worker;
50
+ this.exit = true;
51
+ this.waitingForInput = false;
52
+ this.pendingEof = false;
53
+ this.ondebug?.({ type: 'stop' });
54
+ void this.lldbSession?.disconnect();
55
+ this.lldbSession = undefined;
56
+ }
57
+ });
58
+ disposeWorkerAssetBridge(worker) {
59
+ if (this.worker !== worker)
60
+ return;
61
+ const assetBridge = this.assetBridge;
62
+ this.assetBridge = null;
63
+ try {
64
+ assetBridge?.dispose();
65
+ }
66
+ catch {
67
+ // Asset cleanup must not replace the worker operation result.
68
+ }
69
+ }
27
70
  constructor(language) {
28
71
  this.language = language;
29
72
  }
30
- load(runtimeAssets = '', code = '', log = true, args = [], _options = {}, progress) {
31
- return new Promise(async (resolve) => {
73
+ load(runtimeAssets = '', code = '', log = true, args = [], options = {}, progress) {
74
+ let limits;
75
+ try {
76
+ limits = resolveExecutionLimits(options.limits);
77
+ }
78
+ catch (error) {
79
+ return Promise.reject(error);
80
+ }
81
+ return this.workerSession.load(async (resolve, reject, operation) => {
32
82
  this.log = log;
33
83
  this.pendingInput = [];
34
84
  this.waitingForInput = false;
35
85
  this.pendingEof = false;
36
86
  const assetConfig = resolveRuntimeAssetConfig('clang', runtimeAssets, typeof window !== 'undefined' ? window.location.href : '');
37
- const needsWorkerReset = !this.worker || !this.assetBridge || !this.assetBridge.matches(assetConfig);
87
+ const debugRuntime = resolveDebugRuntimeUrls(runtimeAssets, typeof window !== 'undefined' ? window.location.href : '');
88
+ this.debugRuntimeBaseUrl = debugRuntime.baseUrl;
89
+ this.debugManifestUrl = debugRuntime.manifestUrl;
90
+ this.debugManifestReceipt = debugRuntime.manifestReceipt;
91
+ const needsWorkerReset = !this.worker ||
92
+ !this.assetBridge ||
93
+ !this.assetBridge.matches(assetConfig, limits.maxAssetBytes);
38
94
  if (needsWorkerReset && this.worker) {
39
- this.worker.terminate();
40
- delete this.worker;
41
- this.assetBridge = null;
95
+ this.workerSession.reset();
42
96
  }
43
97
  if (!this.worker) {
44
- this.worker = new (await import('./worker/clang?worker')).default();
45
- this.assetBridge = new WorkerAssetBridge(this.worker, 'clang', assetConfig, progress);
98
+ const { default: ClangWorker } = await import('./worker/clang?worker');
99
+ if (!this.workerSession.isActive(operation))
100
+ return;
101
+ const worker = new ClangWorker();
102
+ if (!this.workerSession.attach(worker, operation))
103
+ return;
104
+ this.worker = worker;
105
+ this.assetBridge = new WorkerAssetBridge(this.worker, 'clang', assetConfig, progress, limits.maxAssetBytes);
46
106
  this.worker.onmessage = (event) => {
107
+ if (!this.workerSession.isActive(operation))
108
+ return;
47
109
  if (this.assetBridge?.handleMessage(event))
48
110
  return;
49
- if (event.data?.progress != null)
50
- progress?.set?.(event.data.progress);
111
+ reportWorkerProgress(progress, event.data?.progress);
51
112
  if (event.data?.load)
52
113
  resolve();
114
+ if (event.data?.error)
115
+ reject(event.data.error);
53
116
  };
54
117
  this.worker.postMessage({
55
118
  load: true,
@@ -58,23 +121,33 @@ class Clang {
58
121
  args,
59
122
  assets: {
60
123
  baseUrl: assetConfig.baseUrl,
124
+ maxAssetBytes: limits.maxAssetBytes,
61
125
  useAssetBridge: assetConfig.useAssetBridge
62
- }
126
+ },
127
+ maxAssetBytes: limits.maxAssetBytes
63
128
  });
64
129
  }
65
130
  else {
66
- this.assetBridge?.rebind(this.worker, assetConfig, progress);
131
+ this.assetBridge?.rebind(this.worker, assetConfig, progress, limits.maxAssetBytes);
67
132
  this.worker.postMessage({ log });
68
133
  resolve();
69
134
  }
70
135
  });
71
136
  }
72
137
  write(input) {
138
+ if (this.lldbSession) {
139
+ void this.lldbSession.write(input);
140
+ return;
141
+ }
73
142
  this.pendingInput.push(input);
74
143
  this.pendingEof = false;
75
144
  this.flushPendingInput();
76
145
  }
77
146
  eof() {
147
+ if (this.lldbSession) {
148
+ void this.lldbSession.eof();
149
+ return;
150
+ }
78
151
  this.pendingEof = true;
79
152
  this.flushPendingInput();
80
153
  }
@@ -92,36 +165,108 @@ class Clang {
92
165
  }
93
166
  }
94
167
  run(code, prepare, log = this.log, prog, args = [], options = {}) {
168
+ const debugMode = options.debugMode || (options.debug ? 'trace' : 'none');
169
+ this.debugMode = debugMode;
170
+ if (debugMode !== 'none')
171
+ requireSharedArrayBuffer(`${this.language} debugging`);
95
172
  this.exit = false;
96
- return new Promise(async (resolve, reject) => {
173
+ return new Promise((resolve, reject) => {
97
174
  if (!this.worker)
98
175
  return reject('Worker not loaded');
99
- this.activeReject = reject;
176
+ const operation = this.workerSession.beginRun(this.worker, reject);
100
177
  const { compileArgs, programArgs } = resolveSandboxExecutionArgs(this.language, args, options);
101
- this.setBreakpoints(options.debug ? [...(options.breakpoints || [])] : []);
178
+ const sourcePath = normalizeLldbSourcePath(options.debugPath || options.activePath, this.language === 'C' ? 'main.c' : 'main.cc');
179
+ this.lldbBreakpoints.clear();
180
+ if (debugMode === 'lldb') {
181
+ for (const sourceBreakpoints of options.sourceBreakpoints || []) {
182
+ this.setBreakpoints(sourceBreakpoints.lines, sourceBreakpoints.sourcePath);
183
+ }
184
+ this.setBreakpoints([...(options.breakpoints || [])], sourcePath);
185
+ }
186
+ else {
187
+ this.setBreakpoints([...(options.breakpoints || [])], sourcePath);
188
+ }
102
189
  const interrupt = new Uint8Array(this.interruptBuffer), _uid = ++this.uid;
103
190
  const handler = (event) => {
191
+ if (!this.workerSession.isActive(operation))
192
+ return;
104
193
  if (this.assetBridge?.handleMessage(event))
105
194
  return;
106
195
  if (!this.worker)
107
196
  return reject('Worker not loaded');
108
197
  if (_uid !== this.uid)
109
198
  return (this.worker.onmessage = null);
110
- const { id, output, results, log, error, buffer, progress, debugEvent } = event.data;
199
+ const { id, output, results, log, error, buffer, progress, debugEvent, lldbArtifact } = event.data;
111
200
  if (buffer) {
112
201
  this.waitingForInput = true;
202
+ if (!prepare) {
203
+ reportWorkerInputReady(prog, `${this.language} runtime ready for input`);
204
+ }
113
205
  this.flushPendingInput();
114
206
  }
115
207
  if (output)
116
208
  this.output(output);
117
209
  if (debugEvent)
118
210
  this.ondebug?.(debugEvent);
211
+ if (lldbArtifact) {
212
+ const compilerWorker = this.worker;
213
+ const lldbSession = new LldbSandboxSession({
214
+ manifestUrl: this.debugManifestUrl,
215
+ manifestReceipt: this.debugManifestReceipt,
216
+ runtimeBaseUrl: this.debugRuntimeBaseUrl,
217
+ artifact: lldbArtifact,
218
+ sourcePath,
219
+ breakpoints: [...(options.breakpoints || [])],
220
+ sourceBreakpoints: Array.from(this.lldbBreakpoints, ([sourcePath, lines]) => ({
221
+ sourcePath,
222
+ lines: [...lines]
223
+ })),
224
+ pauseOnEntry: !!options.pauseOnEntry,
225
+ pauseAtMain: true,
226
+ programArgs,
227
+ stdin: options.stdin,
228
+ onDebugEvent: (debugEvent) => this.ondebug?.(debugEvent),
229
+ onOutput: (debugOutput) => this.output(debugOutput)
230
+ });
231
+ this.lldbSession = lldbSession;
232
+ for (const input of this.pendingInput.splice(0))
233
+ void lldbSession.write(input);
234
+ if (this.pendingEof) {
235
+ this.pendingEof = false;
236
+ void lldbSession.eof();
237
+ }
238
+ if (compilerWorker && this.workerSession.release(compilerWorker)) {
239
+ this.disposeWorkerAssetBridge(compilerWorker);
240
+ if (this.worker === compilerWorker)
241
+ delete this.worker;
242
+ }
243
+ void lldbSession.start().then((result) => {
244
+ if (!this.workerSession.isActive(operation))
245
+ return;
246
+ if (this.lldbSession === lldbSession)
247
+ this.lldbSession = undefined;
248
+ this.elapse = Date.now() - this.begin;
249
+ this.exit = true;
250
+ this.workerSession.complete(operation);
251
+ resolve(result);
252
+ }, (sessionError) => {
253
+ if (!this.workerSession.isActive(operation))
254
+ return;
255
+ if (this.lldbSession === lldbSession)
256
+ this.lldbSession = undefined;
257
+ this.elapse = Date.now() - this.begin;
258
+ this.exit = true;
259
+ this.workerSession.complete(operation);
260
+ reject(sessionError);
261
+ });
262
+ return;
263
+ }
119
264
  if (results) {
120
265
  this.elapse = Date.now() - this.begin;
121
266
  this.exit = true;
122
267
  this.waitingForInput = false;
123
268
  this.pendingEof = false;
124
- this.activeReject = null;
269
+ this.workerSession.complete(operation);
125
270
  this.ondebug?.({ type: 'stop' });
126
271
  resolve(results);
127
272
  }
@@ -131,13 +276,12 @@ class Clang {
131
276
  this.elapse = Date.now() - this.begin;
132
277
  this.waitingForInput = false;
133
278
  this.pendingEof = false;
134
- this.activeReject = null;
279
+ this.workerSession.complete(operation);
135
280
  this.exit = true;
136
281
  this.ondebug?.({ type: 'stop' });
137
282
  reject(error);
138
283
  }
139
- if (progress)
140
- prog?.set?.(progress);
284
+ reportWorkerProgress(prog, progress);
141
285
  };
142
286
  interrupt[0] = 0;
143
287
  this.worker.onmessage = handler;
@@ -151,26 +295,43 @@ class Clang {
151
295
  watchResultBuffer: this.watchResultBuffer,
152
296
  interrupt: this.interruptBuffer,
153
297
  context: {},
298
+ stdin: options.stdin,
154
299
  log,
155
300
  language: this.language,
156
301
  compileArgs,
157
302
  programArgs,
303
+ activePath: options.activePath,
304
+ workspaceFiles: options.workspaceFiles,
158
305
  cppVersion: options.cppVersion,
159
306
  cVersion: options.cVersion,
160
- debug: !!options.debug,
307
+ debugMode,
308
+ debug: debugMode === 'trace',
161
309
  breakpoints: [...(options.breakpoints || [])],
162
310
  pauseOnEntry: !!options.pauseOnEntry
163
311
  });
164
312
  });
165
313
  }
166
314
  debugCommand(command) {
315
+ if (this.lldbSession)
316
+ return this.lldbSession.debugCommand(command);
167
317
  const control = new Int32Array(this.debugBuffer);
168
318
  Atomics.store(control, 1, command === 'stepInto' ? 2 : command === 'nextLine' ? 3 : command === 'stepOut' ? 4 : 1);
169
319
  Atomics.add(control, 0, 1);
170
320
  Atomics.notify(control, 0);
171
321
  this.ondebug?.({ type: 'resume', command });
172
322
  }
173
- setBreakpoints(lines) {
323
+ debugPause() {
324
+ return this.lldbSession?.pause();
325
+ }
326
+ setBreakpoints(lines, sourcePath) {
327
+ const resolvedSourcePath = normalizeLldbSourcePath(sourcePath, this.language === 'C' ? 'main.c' : 'main.cc');
328
+ if (this.lldbSession) {
329
+ return this.lldbSession.setBreakpoints(lines, resolvedSourcePath);
330
+ }
331
+ if (this.debugMode === 'lldb') {
332
+ this.lldbBreakpoints.set(resolvedSourcePath, [...lines]);
333
+ return;
334
+ }
174
335
  const control = new Int32Array(this.debugBuffer);
175
336
  const next = [...new Set(lines.filter((line) => Number.isInteger(line) && line > 0))]
176
337
  .sort((left, right) => left - right)
@@ -181,25 +342,56 @@ class Clang {
181
342
  Atomics.store(control, 3, next.length);
182
343
  Atomics.add(control, 2, 1);
183
344
  }
184
- async debugEvaluate(expression) {
185
- if (!this.worker)
186
- throw new Error('Worker not loaded');
187
- resetBufferedStdin(this.watchResultBuffer);
188
- const previousSequence = bufferedSequence(this.watchResultBuffer);
189
- flushQueuedStdin([expression], this.watchBuffer);
190
- const control = new Int32Array(this.debugBuffer);
191
- Atomics.store(control, 1, 5);
192
- Atomics.add(control, 0, 1);
193
- Atomics.notify(control, 0);
194
- return ((await waitForBufferedSequenceChange(this.watchResultBuffer, previousSequence, 5000)) ??
195
- '?');
345
+ debugEvaluate(expression) {
346
+ if (this.lldbSession)
347
+ return this.lldbSession.evaluate(expression);
348
+ const evaluation = this.debugEvaluationQueue.then(async () => {
349
+ if (!this.worker)
350
+ throw new Error('Worker not loaded');
351
+ resetBufferedStdin(this.watchResultBuffer);
352
+ const previousSequence = bufferedSequence(this.watchResultBuffer);
353
+ flushQueuedStdin([expression], this.watchBuffer);
354
+ const control = new Int32Array(this.debugBuffer);
355
+ Atomics.store(control, 1, 5);
356
+ Atomics.add(control, 0, 1);
357
+ Atomics.notify(control, 0);
358
+ return ((await waitForBufferedSequenceChange(this.watchResultBuffer, previousSequence, 5000)) ?? '?');
359
+ });
360
+ this.debugEvaluationQueue = evaluation.then(() => undefined, () => undefined);
361
+ return evaluation;
362
+ }
363
+ debugVariables(variablesReference, start, count) {
364
+ return this.lldbSession?.variables(variablesReference, start, count) ?? Promise.resolve([]);
365
+ }
366
+ debugScopes(frameId) {
367
+ return this.lldbSession?.scopes(frameId) ?? Promise.resolve([]);
368
+ }
369
+ debugFrameScopes(frameId) {
370
+ return this.lldbSession?.frameScopes(frameId) ?? Promise.resolve([]);
371
+ }
372
+ debugFrameName(frameId) {
373
+ return this.lldbSession?.formattedFrameName(frameId) ?? Promise.resolve(null);
374
+ }
375
+ debugReadMemory(memoryReference, offset, count) {
376
+ return (this.lldbSession?.readMemory(memoryReference, offset, count) ?? Promise.resolve(null));
377
+ }
378
+ debugWriteMemory(memoryReference, offset, data, allowPartial = false) {
379
+ return (this.lldbSession?.writeMemory(memoryReference, offset, data, allowPartial) ??
380
+ Promise.resolve(null));
381
+ }
382
+ debugDataBreakpointInfo(arguments_) {
383
+ return this.lldbSession?.dataBreakpointInfo(arguments_) ?? Promise.resolve(null);
384
+ }
385
+ debugSetDataBreakpoints(breakpoints) {
386
+ return this.lldbSession?.setDataBreakpoints(breakpoints) ?? Promise.resolve([]);
196
387
  }
197
388
  kill() {
198
- this.terminate();
389
+ return this.terminate();
199
390
  }
200
- terminate() {
201
- this.activeReject?.('Process terminated');
202
- this.activeReject = null;
391
+ async terminate() {
392
+ const lldbSession = this.lldbSession;
393
+ this.lldbSession = undefined;
394
+ const disconnecting = lldbSession?.disconnect();
203
395
  this.waitingForInput = false;
204
396
  this.pendingEof = false;
205
397
  this.uid += 1;
@@ -207,13 +399,12 @@ class Clang {
207
399
  const control = new Int32Array(this.debugBuffer);
208
400
  Atomics.add(control, 0, 1);
209
401
  Atomics.notify(control, 0);
210
- this.worker?.terminate?.();
211
- delete this.worker;
212
- this.assetBridge = null;
402
+ this.workerSession.terminate();
213
403
  this.exit = true;
404
+ await disconnecting;
214
405
  }
215
406
  async clear() {
216
- this.terminate();
407
+ await this.terminate();
217
408
  this.pendingInput = [];
218
409
  this.waitingForInput = false;
219
410
  this.pendingEof = false;
@@ -226,9 +417,7 @@ class Clang {
226
417
  debugBuffer.fill(0);
227
418
  await new Promise((resolve) => setTimeout(resolve, 200));
228
419
  if (!this.exit) {
229
- this.worker?.terminate?.();
230
- delete this.worker;
231
- this.assetBridge = null;
420
+ this.workerSession.terminate();
232
421
  this.exit = true;
233
422
  }
234
423
  }
@@ -0,0 +1,32 @@
1
+ export declare const BUNDLED_CLANG_ASSET_INTEGRITY: Readonly<{
2
+ 'runtime-manifest.v1.json': Readonly<{
3
+ bytes: number;
4
+ sha256: string;
5
+ uncompressedBytes: number;
6
+ uncompressedSha256: string;
7
+ }>;
8
+ 'bin/memfs.wasm.gz': Readonly<{
9
+ bytes: number;
10
+ sha256: string;
11
+ uncompressedBytes: number;
12
+ uncompressedSha256: string;
13
+ }>;
14
+ 'bin/clang.wasm.gz': Readonly<{
15
+ bytes: number;
16
+ sha256: string;
17
+ uncompressedBytes: number;
18
+ uncompressedSha256: string;
19
+ }>;
20
+ 'bin/lld.wasm.gz': Readonly<{
21
+ bytes: number;
22
+ sha256: string;
23
+ uncompressedBytes: number;
24
+ uncompressedSha256: string;
25
+ }>;
26
+ 'bin/sysroot.tar.gz': Readonly<{
27
+ bytes: number;
28
+ sha256: string;
29
+ uncompressedBytes: number;
30
+ uncompressedSha256: string;
31
+ }>;
32
+ }>;
@@ -0,0 +1,8 @@
1
+ const integrityEntry = (bytes, sha256, uncompressedBytes = bytes, uncompressedSha256 = sha256) => Object.freeze({ bytes, sha256, uncompressedBytes, uncompressedSha256 });
2
+ export const BUNDLED_CLANG_ASSET_INTEGRITY = Object.freeze({
3
+ 'runtime-manifest.v1.json': integrityEntry(876, '1420808d0391ff2d8a2fdf2a9f6bbce8f728e06b1ed1651029ed80b226101444'),
4
+ 'bin/memfs.wasm.gz': integrityEntry(18_974, 'd86f141eacd58a93511fbfb7c4e81d498eb7106a8a57df1bea7d33df3ce1f403', 345_442, '2c72ee42bd9430029dda8c6bafc9f37143f6fe88d5f1ea950a70259ab748bcfe'),
5
+ 'bin/clang.wasm.gz': integrityEntry(15_721_977, 'b1174438d9a67b7ff11e623541b9a0572c024a9e798084b9b021dd9da2da0874', 44_159_206, '60747a8272f337195c961fb7b7140f0789360267845016f1abb026f056aad083'),
6
+ 'bin/lld.wasm.gz': integrityEntry(7_837_837, 'f842a9b5df3c6d326f0260bfd313c11c2e22bc8b8ae0387deede9a4af55779cd', 20_795_796, '14f08c475b24ef45313cab7a086693525955c2c000b833faaaf48ad35b2521f8'),
7
+ 'bin/sysroot.tar.gz': integrityEntry(5_059_892, '68437624a81c465b93895615e7afd3f235ff256de17dc1927b124e783614e3e4', 19_312_640, '963478e663d6ee2a3ae418ce7427f4535fb59831bb933f95938ccb2253cbb388')
8
+ });
@@ -0,0 +1,5 @@
1
+ import { StaticWorkerRuntimeSandbox } from './staticWorkerRuntime';
2
+ declare class ClojureScript extends StaticWorkerRuntimeSandbox {
3
+ constructor();
4
+ }
5
+ export default ClojureScript;
@@ -0,0 +1,59 @@
1
+ import { resolveClojureScriptRuntimeAssetConfig } from './assets';
2
+ import { preflightStaticRuntimeAssetsInWorker } from './staticRuntimePreflight';
3
+ import { StaticWorkerRuntimeSandbox } from './staticWorkerRuntime';
4
+ import { RuntimeConfigurationError } from '@wasm-idle/core';
5
+ class ClojureScript extends StaticWorkerRuntimeSandbox {
6
+ constructor() {
7
+ super({
8
+ languageId: 'CLOJURESCRIPT',
9
+ displayName: 'ClojureScript',
10
+ defaultActivePath: 'main.cljs',
11
+ stdin: {
12
+ mode: 'streaming',
13
+ sourceHintPattern: /\b(?:wasm-idle\.runtime\/)?(?:read-line|stdin)\b|\bread-line\b/
14
+ },
15
+ inlineVerifiedWorker: true,
16
+ runtimePreflightDelivery: 'transfer-owned',
17
+ resolveRuntimeAssets(runtimeAssets, currentUrl) {
18
+ const resolved = resolveClojureScriptRuntimeAssetConfig(runtimeAssets, currentUrl);
19
+ const profile = resolved.preflightProfile;
20
+ if (!/^[a-f0-9]{64}$/u.test(resolved.manifestFingerprint || '') ||
21
+ profile.manifestFingerprint !== resolved.manifestFingerprint ||
22
+ !resolved.workerReceipt) {
23
+ throw new RuntimeConfigurationError('ClojureScript runtime requires a manifest fingerprint and worker receipt.', { runtimeId: 'CLOJURESCRIPT' });
24
+ }
25
+ return resolved;
26
+ },
27
+ async preflightRuntimeAssets(urls, context) {
28
+ const profile = urls.preflightProfile;
29
+ const loadedByAsset = new Map();
30
+ const totalDownloadBytes = (profile.manifestReceipt?.bytes ?? 0) + (profile.compilerReceipt?.bytes ?? 0);
31
+ const payload = await preflightStaticRuntimeAssetsInWorker({
32
+ runtimeId: 'CLOJURESCRIPT',
33
+ displayName: 'ClojureScript',
34
+ baseUrl: urls.baseUrl,
35
+ manifestUrl: urls.manifestUrl || '',
36
+ profile,
37
+ limits: context.limits,
38
+ signal: context.signal,
39
+ reportProgress(progress) {
40
+ if (progress.kind === 'asset') {
41
+ loadedByAsset.set(progress.progress.assetKey, progress.progress.loadedBytes);
42
+ const loadedBytes = [...loadedByAsset.values()].reduce((total, loaded) => total + loaded, 0);
43
+ const fraction = totalDownloadBytes > 0
44
+ ? loadedBytes / totalDownloadBytes
45
+ : 0;
46
+ context.reportProgress(0.04 + Math.min(1, fraction) * 0.11, `Preflighting ClojureScript asset ${progress.progress.assetKey}`);
47
+ return;
48
+ }
49
+ const { loadedBytes, totalBytes } = progress;
50
+ const fraction = totalBytes > 0 ? loadedBytes / totalBytes : 0;
51
+ context.reportProgress(0.15 + Math.min(1, fraction) * 0.02, 'Decompressing verified ClojureScript compiler');
52
+ }
53
+ });
54
+ return context.createOwnedDelivery(payload);
55
+ }
56
+ });
57
+ }
58
+ }
59
+ export default ClojureScript;
@@ -0,0 +1,26 @@
1
+ import type { ClojureScriptRuntimePreflightProfile } from './assets';
2
+ import { type ExecutionLimits, type RuntimeAssetPreflightProgress } from '@wasm-idle/core';
3
+ export declare const CLOJURESCRIPT_PREFLIGHT_PROTOCOL: "wasm-idle-clojurescript-preflight";
4
+ export declare const CLOJURESCRIPT_PREFLIGHT_PROTOCOL_VERSION: 1;
5
+ export declare const CLOJURESCRIPT_PREFLIGHT_RUNTIME_ID: "CLOJURESCRIPT";
6
+ export interface ClojureScriptRuntimePreflightRequest {
7
+ readonly baseUrl: string;
8
+ readonly manifestUrl: string;
9
+ readonly profile: ClojureScriptRuntimePreflightProfile;
10
+ readonly limits?: Partial<ExecutionLimits>;
11
+ readonly signal?: AbortSignal;
12
+ readonly fetch?: typeof globalThis.fetch;
13
+ readonly reportProgress?: (progress: RuntimeAssetPreflightProgress) => void;
14
+ readonly reportDecompressionProgress?: (loadedBytes: number, totalBytes: number) => void;
15
+ }
16
+ export interface ClojureScriptRuntimePreflightPayload {
17
+ readonly protocol: typeof CLOJURESCRIPT_PREFLIGHT_PROTOCOL;
18
+ readonly protocolVersion: typeof CLOJURESCRIPT_PREFLIGHT_PROTOCOL_VERSION;
19
+ readonly profileId: string;
20
+ readonly sourceRevision: string;
21
+ readonly integrationRevision: string;
22
+ readonly manifestFingerprint: string;
23
+ readonly manifestBytes: Uint8Array;
24
+ readonly compilerBytes: Uint8Array;
25
+ }
26
+ export declare function preflightClojureScriptRuntimeAssets(request: ClojureScriptRuntimePreflightRequest): Promise<ClojureScriptRuntimePreflightPayload>;