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
@@ -0,0 +1,399 @@
1
+ import { AssetIntegrityError, AssetTooLargeError, CancelledError, RuntimeConfigurationError, TimeoutError, UnsupportedBrowserFeatureError, isWasmIdleError, preflightRuntimeAssets, resolveExecutionLimits, verifyRuntimeAssetIntegrity } from '@wasm-idle/core';
2
+ export const BQN_PREFLIGHT_PROTOCOL = 'wasm-idle-bqn-preflight';
3
+ export const BQN_PREFLIGHT_PROTOCOL_VERSION = 1;
4
+ export const BQN_PREFLIGHT_RUNTIME_ID = 'BQN';
5
+ const MAX_MANIFEST_BYTES = 64 * 1024;
6
+ const VERIFIED_WASM_STORAGE_PATH = 'BQN.wasm.gz.bin';
7
+ export async function preflightBqnRuntimeAssets(request) {
8
+ if (!request || typeof request !== 'object') {
9
+ throw new RuntimeConfigurationError('BQN runtime preflight request is required', {
10
+ phase: 'asset',
11
+ runtimeId: BQN_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('BQN runtime asset URLs are invalid', {
24
+ cause: error,
25
+ phase: 'asset',
26
+ runtimeId: BQN_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('BQN runtime base must be a credential-free HTTP(S) directory URL without a query or fragment', { phase: 'asset', runtimeId: BQN_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('BQN runtime manifest must be an HTTP(S) asset beneath the configured runtime base', { phase: 'asset', runtimeId: BQN_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('BQN runtime manifest path must be a normalized file beneath the runtime base', { phase: 'asset', runtimeId: BQN_PREFLIGHT_RUNTIME_ID });
50
+ }
51
+ if (manifestPath === 'BQN.js' || manifestPath === VERIFIED_WASM_STORAGE_PATH) {
52
+ throw new RuntimeConfigurationError('BQN runtime manifest and executable asset paths must be distinct', { phase: 'asset', runtimeId: BQN_PREFLIGHT_RUNTIME_ID });
53
+ }
54
+ const profile = request.profile;
55
+ if (!profile ||
56
+ typeof profile !== 'object' ||
57
+ typeof profile.profileId !== 'string' ||
58
+ !/^dzaima-cbqn-[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('BQN runtime preflight profile is invalid', {
64
+ phase: 'asset',
65
+ runtimeId: BQN_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(`BQN runtime ${label} preflight receipt is invalid`, {
79
+ phase: 'asset',
80
+ profileId: profile.profileId,
81
+ runtimeId: BQN_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('BQN runtime Wasm preflight receipt is invalid', {
97
+ phase: 'asset',
98
+ profileId: profile.profileId,
99
+ runtimeId: BQN_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(`BQN runtime ${label} exceeds the ${limit} byte limit`, {
116
+ actual: bytes,
117
+ limit,
118
+ phase: 'asset',
119
+ profileId: profile.profileId,
120
+ runtimeId: BQN_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: BQN_PREFLIGHT_RUNTIME_ID
129
+ });
130
+ }
131
+ const expectedManifestQuery = `?v=${profile.manifestFingerprint}`;
132
+ if (manifestUrl.search && manifestUrl.search !== expectedManifestQuery) {
133
+ throw new RuntimeConfigurationError('BQN runtime manifest query must be the pinned manifest fingerprint cache-buster', {
134
+ phase: 'asset',
135
+ profileId: profile.profileId,
136
+ runtimeId: BQN_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('BQN.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/bqn-preflight',
150
+ revision: profile.manifestFingerprint,
151
+ runtimes: [
152
+ {
153
+ runtimeId: BQN_PREFLIGHT_RUNTIME_ID,
154
+ identity: {
155
+ languageId: 'BQN',
156
+ implementationId: 'dzaima/CBQN',
157
+ implementationVersion: profile.sourceRevision,
158
+ profile: {
159
+ profileId: profile.profileId,
160
+ manifestSchemaVersion: 2,
161
+ manifestSha256: profile.manifestReceipt.sha256,
162
+ protocolVersion: BQN_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: 'BQN.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: 'bqn',
211
+ runtimeAssetKey: 'bqn',
212
+ documentationId: 'BQN',
213
+ syncTarget: 'sync:wasm-bqn',
214
+ browserTestId: 'browser:bqn'
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('BQN runtime preflight timed out', 'TimeoutError'));
228
+ }, limits.assetTimeoutMs);
229
+ try {
230
+ const preflight = await preflightRuntimeAssets({
231
+ manifest: registry,
232
+ runtimeId: BQN_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('BQN runtime preflight returned an incomplete asset set', {
250
+ phase: 'asset',
251
+ profileId: profile.profileId,
252
+ runtimeId: BQN_PREFLIGHT_RUNTIME_ID
253
+ });
254
+ }
255
+ if (wasmAsset.bytes[0] !== 0x1f || wasmAsset.bytes[1] !== 0x8b) {
256
+ throw new AssetIntegrityError('BQN runtime Wasm storage asset is not gzip data', {
257
+ profileId: profile.profileId,
258
+ runtimeId: BQN_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: BQN_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('BQN runtime Wasm gzip output exceeds its logical receipt', { profileId: profile.profileId, runtimeId: BQN_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('BQN runtime Wasm gzip decompression failed', {
308
+ cause: error,
309
+ profileId: profile.profileId,
310
+ runtimeId: BQN_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('BQN runtime Wasm gzip output is shorter than its logical receipt', {
324
+ profileId: profile.profileId,
325
+ runtimeId: BQN_PREFLIGHT_RUNTIME_ID
326
+ });
327
+ }
328
+ const logicalIntegrity = verifyRuntimeAssetIntegrity({
329
+ asset: 'BQN.wasm',
330
+ bytes: wasmBytes,
331
+ expected: wasmReceipt,
332
+ stage: 'uncompressed',
333
+ mimeType: 'application/wasm',
334
+ profileId: profile.profileId,
335
+ runtimeId: BQN_PREFLIGHT_RUNTIME_ID
336
+ });
337
+ await new Promise((resolve, reject) => {
338
+ let settled = false;
339
+ const rejectOnAbort = () => {
340
+ if (settled)
341
+ return;
342
+ settled = true;
343
+ controller.signal.removeEventListener('abort', rejectOnAbort);
344
+ reject(controller.signal.reason ??
345
+ new DOMException('BQN runtime integrity verification aborted', 'AbortError'));
346
+ };
347
+ controller.signal.addEventListener('abort', rejectOnAbort, { once: true });
348
+ void logicalIntegrity.then(() => {
349
+ if (settled)
350
+ return;
351
+ settled = true;
352
+ controller.signal.removeEventListener('abort', rejectOnAbort);
353
+ resolve();
354
+ }, (error) => {
355
+ if (settled)
356
+ return;
357
+ settled = true;
358
+ controller.signal.removeEventListener('abort', rejectOnAbort);
359
+ reject(error);
360
+ });
361
+ if (controller.signal.aborted)
362
+ rejectOnAbort();
363
+ });
364
+ return Object.freeze({
365
+ protocol: BQN_PREFLIGHT_PROTOCOL,
366
+ protocolVersion: BQN_PREFLIGHT_PROTOCOL_VERSION,
367
+ profileId: profile.profileId,
368
+ sourceRevision: profile.sourceRevision,
369
+ manifestFingerprint: profile.manifestFingerprint,
370
+ manifestBytes: Uint8Array.from(manifestAsset.bytes),
371
+ moduleBytes: Uint8Array.from(moduleAsset.bytes),
372
+ wasmBytes
373
+ });
374
+ }
375
+ catch (error) {
376
+ if (timedOut) {
377
+ throw new TimeoutError(`BQN runtime preflight timed out after ${limits.assetTimeoutMs} ms`, {
378
+ cause: error,
379
+ phase: 'asset',
380
+ profileId: profile.profileId,
381
+ runtimeId: BQN_PREFLIGHT_RUNTIME_ID,
382
+ timeoutMs: limits.assetTimeoutMs
383
+ });
384
+ }
385
+ if (request.signal?.aborted) {
386
+ throw new CancelledError('BQN runtime preflight cancelled', {
387
+ cause: request.signal.reason,
388
+ phase: 'asset',
389
+ profileId: profile.profileId,
390
+ runtimeId: BQN_PREFLIGHT_RUNTIME_ID
391
+ });
392
+ }
393
+ throw error;
394
+ }
395
+ finally {
396
+ clearTimeout(timeout);
397
+ request.signal?.removeEventListener('abort', abortFromCaller);
398
+ }
399
+ }
@@ -0,0 +1,15 @@
1
+ import { StaticWorkerRuntimeSandbox } from './staticWorkerRuntime';
2
+ export declare const C3_DEFAULT_WASM_MEMORY_BYTES: number;
3
+ /** Real c3c + builtin LLD; guest I/O is the documented env byte ABI. */
4
+ declare class C3 extends StaticWorkerRuntimeSandbox {
5
+ readonly defaultExecutionLimits: Readonly<{
6
+ maxWasmMemoryBytes: number;
7
+ }>;
8
+ readonly memoryEvidence: {
9
+ current: unknown;
10
+ };
11
+ constructor();
12
+ load(...args: Parameters<StaticWorkerRuntimeSandbox['load']>): Promise<void>;
13
+ run(...args: Parameters<StaticWorkerRuntimeSandbox['run']>): Promise<string | boolean>;
14
+ }
15
+ export default C3;
@@ -0,0 +1,154 @@
1
+ import { resolveC3BaseUrl } from './assets';
2
+ import { StaticWorkerRuntimeSandbox } from './staticWorkerRuntime';
3
+ import { bundledC3Profile as profile, bundledC3WorkerReceipt } from './wasmC3Version';
4
+ import { preflightRuntimeAssets, RuntimeConfigurationError } from '@wasm-idle/core';
5
+ export const C3_DEFAULT_WASM_MEMORY_BYTES = 1024 ** 3;
6
+ function c3ExecutionOptions(options = {}) {
7
+ if (options.compileArgs?.length)
8
+ throw new RuntimeConfigurationError('C3 uses fixed wasm32 compiler flags; compileArgs are unsupported.', { runtimeId: 'C3' });
9
+ return {
10
+ ...options,
11
+ limits: {
12
+ ...options.limits,
13
+ maxWasmMemoryBytes: options.limits?.maxWasmMemoryBytes ?? C3_DEFAULT_WASM_MEMORY_BYTES
14
+ }
15
+ };
16
+ }
17
+ const registry = {
18
+ schemaVersion: 2,
19
+ manifestId: 'wasm-idle/c3-preflight',
20
+ revision: profile.producerReceipt.sha256,
21
+ runtimes: [
22
+ {
23
+ runtimeId: 'C3',
24
+ identity: {
25
+ languageId: 'C3',
26
+ implementationId: 'c3c',
27
+ implementationVersion: '0.8.3',
28
+ profile: {
29
+ profileId: profile.profileId,
30
+ manifestSchemaVersion: 1,
31
+ manifestSha256: profile.producerReceipt.sha256,
32
+ protocolVersion: 1,
33
+ trustProfileId: 'wasm-idle-static-worker-v1',
34
+ trustProfileSchemaVersion: 1
35
+ }
36
+ },
37
+ capabilities: {
38
+ stdin: 'streaming',
39
+ workspace: true,
40
+ abort: true,
41
+ artifacts: false,
42
+ streamingOutput: true
43
+ },
44
+ workerLifetime: { mode: 'per-run' },
45
+ requiredBrowserFeatures: ['wasm'],
46
+ assetRoot: '.',
47
+ assets: [
48
+ [
49
+ 'compilerJavaScriptBytes',
50
+ 'c3c.mjs',
51
+ 'text/javascript',
52
+ profile.compilerJavaScriptReceipt
53
+ ],
54
+ ['compilerWasmBytes', 'c3c.wasm', 'application/wasm', profile.compilerWasmReceipt],
55
+ [
56
+ 'producerReceiptBytes',
57
+ 'producer-receipt.json',
58
+ 'application/json',
59
+ profile.producerReceipt
60
+ ]
61
+ ].map(([key, path, mediaType, receipt]) => {
62
+ const integrity = receipt;
63
+ return {
64
+ key: key,
65
+ path: path,
66
+ mediaType: mediaType,
67
+ compressedSha256: integrity.sha256,
68
+ uncompressedSha256: integrity.sha256,
69
+ compressedBytes: integrity.bytes,
70
+ uncompressedBytes: integrity.bytes,
71
+ encoding: 'identity'
72
+ };
73
+ }),
74
+ contracts: {
75
+ routeId: 'c3',
76
+ runtimeAssetKey: 'c3',
77
+ documentationId: 'C3',
78
+ syncTarget: 'sync:wasm-c3',
79
+ browserTestId: 'browser:c3'
80
+ }
81
+ }
82
+ ]
83
+ };
84
+ /** Real c3c + builtin LLD; guest I/O is the documented env byte ABI. */
85
+ class C3 extends StaticWorkerRuntimeSandbox {
86
+ defaultExecutionLimits = Object.freeze({
87
+ maxWasmMemoryBytes: C3_DEFAULT_WASM_MEMORY_BYTES
88
+ });
89
+ memoryEvidence;
90
+ constructor() {
91
+ const memoryEvidence = { current: undefined };
92
+ super({
93
+ displayName: 'C3',
94
+ languageId: 'C3',
95
+ defaultActivePath: 'main.c3',
96
+ workerLifetime: { mode: 'per-run' },
97
+ runtimePreflightDelivery: 'transfer-owned',
98
+ stdin: { mode: 'streaming', sourceHintPattern: /\breadByte\b/u },
99
+ inlineVerifiedWorker: true,
100
+ moduleWorker: true,
101
+ includeExecutionLimits: true,
102
+ enforcePhaseTimeouts: true,
103
+ onEvidence(evidence) {
104
+ memoryEvidence.current = evidence;
105
+ },
106
+ resolveRuntimeAssets(runtimeAssets, currentUrl) {
107
+ const baseUrl = resolveC3BaseUrl(runtimeAssets, currentUrl);
108
+ return {
109
+ baseUrl,
110
+ workerUrl: new URL('runner-worker.js', baseUrl).href,
111
+ manifestUrl: new URL('producer-receipt.json', baseUrl).href,
112
+ manifestFingerprint: profile.producerReceipt.sha256,
113
+ preflightKey: profile.producerReceipt.sha256,
114
+ workerReceipt: bundledC3WorkerReceipt
115
+ };
116
+ },
117
+ async preflightRuntimeAssets(urls, context) {
118
+ memoryEvidence.current = undefined;
119
+ const result = await preflightRuntimeAssets({
120
+ manifest: registry,
121
+ runtimeId: 'C3',
122
+ rootUrl: urls.baseUrl,
123
+ limits: context.limits,
124
+ signal: context.signal,
125
+ redirect: 'error',
126
+ requireExactResponseUrl: true,
127
+ maxTotalDeliveryBytes: profile.compilerJavaScriptReceipt.bytes +
128
+ profile.compilerWasmReceipt.bytes +
129
+ profile.producerReceipt.bytes,
130
+ reportProgress(progress) {
131
+ context.reportProgress(0.1, `Preflighting C3 ${progress.assetKey}`);
132
+ }
133
+ });
134
+ return context.createOwnedDelivery(Object.freeze({
135
+ protocol: 'wasm-idle-c3-preflight',
136
+ profileId: profile.profileId,
137
+ compilerJavaScriptBytes: result.assets.compilerJavaScriptBytes.bytes,
138
+ compilerWasmBytes: result.assets.compilerWasmBytes.bytes,
139
+ producerReceiptBytes: result.assets.producerReceiptBytes.bytes
140
+ }));
141
+ }
142
+ });
143
+ this.memoryEvidence = memoryEvidence;
144
+ }
145
+ async load(...args) {
146
+ args[4] = c3ExecutionOptions(args[4]);
147
+ return super.load(...args);
148
+ }
149
+ async run(...args) {
150
+ args[5] = c3ExecutionOptions(args[5]);
151
+ return super.run(...args);
152
+ }
153
+ }
154
+ export default C3;
@@ -1,19 +1,19 @@
1
- import type { DebugCommand, DebugSessionEvent, SandboxExecutionOptions } from './options';
1
+ import type { DebugCommand, DebugDataBreakpoint, DebugDataBreakpointInfoArguments, DebugSessionEvent, SandboxExecutionOptions } from './options';
2
2
  import { WorkerAssetBridge } from './assetBridge';
3
- import { type PlaygroundRuntimeAssets } from './assets';
3
+ import { type PlaygroundRuntimeAssets, type RuntimeAssetIntegrityEntry } from './assets';
4
4
  import type { Sandbox } from './sandbox';
5
- import type { Writable } from 'svelte/store';
5
+ import { type ProgressSink } from './workerProgress';
6
6
  declare class Clang implements Sandbox {
7
7
  language: 'C' | 'CPP';
8
8
  ts: number;
9
9
  output: any;
10
10
  ondebug?: (event: DebugSessionEvent) => void;
11
11
  worker?: Worker;
12
- buffer: SharedArrayBuffer;
13
- debugBuffer: SharedArrayBuffer;
14
- watchBuffer: SharedArrayBuffer;
15
- watchResultBuffer: SharedArrayBuffer;
16
- interruptBuffer: SharedArrayBuffer;
12
+ buffer: import("./sharedBuffer").WasmIdleSharedBuffer;
13
+ debugBuffer: import("./sharedBuffer").WasmIdleSharedBuffer;
14
+ watchBuffer: import("./sharedBuffer").WasmIdleSharedBuffer;
15
+ watchResultBuffer: import("./sharedBuffer").WasmIdleSharedBuffer;
16
+ interruptBuffer: import("./sharedBuffer").WasmIdleSharedBuffer;
17
17
  pendingInput: string[];
18
18
  begin: number;
19
19
  elapse: number;
@@ -23,22 +23,38 @@ declare class Clang implements Sandbox {
23
23
  pendingEof: boolean;
24
24
  exit: boolean;
25
25
  assetBridge: WorkerAssetBridge | null;
26
- activeReject: ((reason?: string) => void) | null;
26
+ debugRuntimeBaseUrl: string;
27
+ debugManifestUrl: string;
28
+ debugManifestReceipt?: Readonly<RuntimeAssetIntegrityEntry>;
29
+ private lldbSession?;
30
+ private debugMode;
31
+ private readonly lldbBreakpoints;
32
+ private debugEvaluationQueue;
33
+ private readonly workerSession;
34
+ private disposeWorkerAssetBridge;
27
35
  constructor(language: 'C' | 'CPP');
28
- load(runtimeAssets?: string | PlaygroundRuntimeAssets, code?: string, log?: boolean, args?: string[], _options?: SandboxExecutionOptions, progress?: {
29
- set?: (value: number) => void;
30
- } | import('svelte/store').Writable<number>): Promise<void>;
36
+ load(runtimeAssets?: string | PlaygroundRuntimeAssets, code?: string, log?: boolean, args?: string[], options?: SandboxExecutionOptions, progress?: ProgressSink): Promise<void>;
31
37
  write(input: string): void;
32
38
  eof(): void;
33
39
  private flushPendingInput;
34
- run(code: string, prepare: boolean, log?: boolean, prog?: Writable<number> | {
35
- set?: (value: number) => void;
36
- }, args?: string[], options?: SandboxExecutionOptions): Promise<boolean | string>;
37
- debugCommand(command: DebugCommand): void;
38
- setBreakpoints(lines: number[]): void;
40
+ run(code: string, prepare: boolean, log?: boolean, prog?: ProgressSink, args?: string[], options?: SandboxExecutionOptions): Promise<boolean | string>;
41
+ debugCommand(command: DebugCommand): Promise<void> | undefined;
42
+ debugPause(): Promise<void> | undefined;
43
+ setBreakpoints(lines: number[], sourcePath?: string): Promise<void> | undefined;
39
44
  debugEvaluate(expression: string): Promise<string>;
40
- kill(): void;
41
- terminate(): void;
45
+ debugVariables(variablesReference: number, start?: number, count?: number): Promise<import("@wasm-idle/core").DebugVariable[]>;
46
+ debugScopes(frameId: number): Promise<import("@wasm-idle/core").DebugScope[]>;
47
+ debugFrameScopes(frameId: number): Promise<import("@wasm-idle/core").DebugScope[]>;
48
+ debugFrameName(frameId: number): Promise<string | null>;
49
+ debugReadMemory(memoryReference: string, offset: number, count: number): Promise<import("@wasm-idle/core").DebugMemory | null>;
50
+ debugWriteMemory(memoryReference: string, offset: number, data: Uint8Array, allowPartial?: boolean): Promise<{
51
+ offset?: number;
52
+ bytesWritten: number;
53
+ } | null>;
54
+ debugDataBreakpointInfo(arguments_: DebugDataBreakpointInfoArguments): Promise<import("@wasm-idle/core").DebugDataBreakpointInfo | null>;
55
+ debugSetDataBreakpoints(breakpoints: DebugDataBreakpoint[]): Promise<import("@wasm-idle/core").DebugResolvedDataBreakpoint[]>;
56
+ kill(): Promise<void>;
57
+ terminate(): Promise<void>;
42
58
  clear(): Promise<void>;
43
59
  }
44
60
  export default Clang;