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,192 @@
1
+ import { waitForBufferedStdin } from '../stdinBuffer';
2
+ const encoder = new TextEncoder();
3
+ let stdinBufferR = null;
4
+ let baseUrl = '';
5
+ let loadedBaseUrl = '';
6
+ let webRPromise = null;
7
+ function postProgress(percent) {
8
+ postMessage({ progress: { percent: Math.max(0, Math.min(100, percent)) } });
9
+ }
10
+ function rString(value) {
11
+ return JSON.stringify(value);
12
+ }
13
+ function normalizeWorkspacePath(path) {
14
+ const parts = [];
15
+ for (const part of path.replace(/^\/+/, '').split('/')) {
16
+ if (!part || part === '.')
17
+ continue;
18
+ if (part === '..') {
19
+ parts.pop();
20
+ continue;
21
+ }
22
+ if (part.includes('\0'))
23
+ continue;
24
+ parts.push(part);
25
+ }
26
+ return parts.join('/');
27
+ }
28
+ function dirname(path) {
29
+ const slashIndex = path.lastIndexOf('/');
30
+ return slashIndex === -1 ? '' : path.slice(0, slashIndex);
31
+ }
32
+ async function mkdirp(webR, path) {
33
+ const normalized = normalizeWorkspacePath(path);
34
+ if (!normalized)
35
+ return;
36
+ let current = '';
37
+ for (const part of normalized.split('/')) {
38
+ current += `/${part}`;
39
+ const info = await webR.FS.analyzePath(current).catch(() => null);
40
+ if (!info?.exists)
41
+ await webR.FS.mkdir(current);
42
+ }
43
+ }
44
+ async function writeWorkspaceFile(webR, path, content) {
45
+ const normalized = normalizeWorkspacePath(path);
46
+ if (!normalized)
47
+ return;
48
+ const fullPath = `/workspace/${normalized}`;
49
+ await mkdirp(webR, dirname(`workspace/${normalized}`));
50
+ await webR.FS.writeFile(fullPath, encoder.encode(content));
51
+ }
52
+ async function loadWebR(url, log = true) {
53
+ if (!url) {
54
+ throw new Error('R runtime is not configured. Set PUBLIC_WASM_R_BASE_URL or runtimeAssets.r.baseUrl.');
55
+ }
56
+ if (loadedBaseUrl === url && webRPromise) {
57
+ return await webRPromise;
58
+ }
59
+ loadedBaseUrl = url;
60
+ webRPromise?.then((runtime) => runtime.close()).catch(() => { });
61
+ webRPromise = (async () => {
62
+ postProgress(5);
63
+ const moduleUrl = `${url.endsWith('/') ? url : `${url}/`}webr.js`;
64
+ const { ChannelType, WebR: WebRConstructor } = (await import(
65
+ /* @vite-ignore */ moduleUrl));
66
+ const webR = new WebRConstructor({
67
+ baseUrl: url,
68
+ serviceWorkerUrl: url,
69
+ channelType: ChannelType.PostMessage,
70
+ interactive: false,
71
+ REnv: {
72
+ R_HOME: '/usr/lib/R',
73
+ R_ENABLE_JIT: '0'
74
+ }
75
+ });
76
+ await webR.init();
77
+ postProgress(90);
78
+ await mkdirp(webR, 'workspace');
79
+ await webR.evalRVoid('options(device = webr::canvas)');
80
+ if (log) {
81
+ console.log(`[wasm-idle:r-worker] webR ready baseUrl=${url}`);
82
+ }
83
+ postProgress(100);
84
+ return webR;
85
+ })();
86
+ return await webRPromise;
87
+ }
88
+ function codeMightReadStdin(code) {
89
+ return /\b(stdin|readLines|readline|scan)\s*\(/.test(code);
90
+ }
91
+ function readInitialStdin(code, initialStdin, log = true) {
92
+ if (typeof initialStdin === 'string')
93
+ return initialStdin;
94
+ if (!codeMightReadStdin(code))
95
+ return '';
96
+ const chunk = waitForBufferedStdin(stdinBufferR, () => postMessage({ buffer: true }));
97
+ if (log) {
98
+ console.log(chunk == null
99
+ ? '[wasm-idle:r-stdin] read(bytes=0, eof=true)'
100
+ : `[wasm-idle:r-stdin] read(bytes=${encoder.encode(chunk).byteLength}, text=${JSON.stringify(chunk)})`);
101
+ }
102
+ return chunk || '';
103
+ }
104
+ function buildRunnerSource(activePath, args) {
105
+ const argsSource = args.map(rString).join(', ');
106
+ return `
107
+ .wasm_idle_stdin_path <- "/workspace/.stdin"
108
+ stdin <- function() file(.wasm_idle_stdin_path, open = "r")
109
+ .wasm_idle_args <- c(${argsSource})
110
+ commandArgs <- function(trailingOnly = FALSE) {
111
+ if (trailingOnly) .wasm_idle_args else c("R", .wasm_idle_args)
112
+ }
113
+ source(${rString(`/workspace/${normalizeWorkspacePath(activePath)}`)}, local = TRUE, echo = FALSE, print.eval = FALSE)
114
+ `;
115
+ }
116
+ function emitCapturedOutput(output) {
117
+ for (const entry of output) {
118
+ if (entry.type === 'stdout' || entry.type === 'stderr') {
119
+ if (entry.data)
120
+ postMessage({ output: String(entry.data) });
121
+ continue;
122
+ }
123
+ const message = typeof entry.data === 'string'
124
+ ? entry.data
125
+ : typeof entry.data?.message === 'string'
126
+ ? entry.data.message
127
+ : '';
128
+ if (message)
129
+ postMessage({ output: `${message}\n` });
130
+ }
131
+ }
132
+ self.onmessage = async (event) => {
133
+ const { load, baseUrl: nextBaseUrl, buffer, code, prepare, args = [], stdin, activePath = 'main.R', workspaceFiles = [], log } = event.data;
134
+ try {
135
+ if (load) {
136
+ baseUrl = nextBaseUrl || '';
137
+ if (log) {
138
+ console.log(`[wasm-idle:r-worker] load baseUrl=${baseUrl}`);
139
+ }
140
+ await loadWebR(baseUrl, log);
141
+ postMessage({ load: true });
142
+ return;
143
+ }
144
+ stdinBufferR = new Int32Array(buffer);
145
+ const webR = await loadWebR(baseUrl, log);
146
+ if (prepare) {
147
+ await webR.evalRVoid(`parse(text = ${rString(code)})`, {
148
+ captureStreams: true,
149
+ captureConditions: true,
150
+ captureGraphics: false
151
+ });
152
+ postMessage({ results: true });
153
+ return;
154
+ }
155
+ await mkdirp(webR, 'workspace');
156
+ for (const file of workspaceFiles) {
157
+ await writeWorkspaceFile(webR, file.path, file.content);
158
+ }
159
+ await writeWorkspaceFile(webR, activePath, code);
160
+ await webR.FS.writeFile('/workspace/.stdin', encoder.encode(readInitialStdin(code, stdin, log)));
161
+ if (log) {
162
+ console.log(`[wasm-idle:r-worker] eval start bytes=${code.length} activePath=${activePath}`);
163
+ }
164
+ postMessage({
165
+ progress: {
166
+ kind: 'ready',
167
+ state: 'running',
168
+ reason: 'started',
169
+ label: 'R program started'
170
+ }
171
+ });
172
+ const captured = await webR.globalShelter.captureR(buildRunnerSource(activePath, args), {
173
+ captureStreams: true,
174
+ captureConditions: true,
175
+ captureGraphics: false,
176
+ withAutoprint: false,
177
+ throwJsException: true
178
+ });
179
+ emitCapturedOutput(captured.output || []);
180
+ await webR.globalShelter.purge();
181
+ if (log) {
182
+ console.log(`[wasm-idle:r-worker] eval settled output=${captured.output?.length || 0}`);
183
+ }
184
+ postMessage({ results: true });
185
+ }
186
+ catch (error) {
187
+ if (log) {
188
+ console.error('[wasm-idle:r-worker] failed', error);
189
+ }
190
+ postMessage({ error: error?.message || String(error) });
191
+ }
192
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,248 @@
1
+ import { waitForBufferedStdin } from '../stdinBuffer';
2
+ import { importRuntimeModule } from '../runtimeModule';
3
+ import { RUBY_RUNTIME_VERIFIED_WASM_URL, rewriteVerifiedRubyRuntimeModule, verifyRubyRuntimePreflightPayload } from '@wasm-idle/core';
4
+ const encoder = new TextEncoder();
5
+ let stdinBufferRuby = null;
6
+ let runtimeState = 'uninitialized';
7
+ let loadedRuntime = null;
8
+ async function loadRubyModule(runtimePreflight, maxAssetBytes) {
9
+ if (runtimeState !== 'uninitialized') {
10
+ throw new Error('Ruby runtime is already loaded.');
11
+ }
12
+ runtimeState = 'loading';
13
+ try {
14
+ const payload = await verifyRubyRuntimePreflightPayload(runtimePreflight, {
15
+ maxAssetBytes
16
+ });
17
+ const buffers = [payload.manifestBytes, payload.moduleJavaScriptBytes, payload.wasmBytes];
18
+ if (buffers.some((bytes) => !ArrayBuffer.isView(bytes) ||
19
+ Object.prototype.toString.call(bytes) !== '[object Uint8Array]' ||
20
+ !(bytes.buffer instanceof ArrayBuffer) ||
21
+ bytes.byteOffset !== 0 ||
22
+ bytes.byteLength !== bytes.buffer.byteLength) ||
23
+ new Set(buffers.map((bytes) => bytes.buffer)).size !== buffers.length) {
24
+ throw new TypeError('Ruby execution worker requires unique owned runtime preflight bytes');
25
+ }
26
+ const wasmBytes = payload.wasmBytes;
27
+ const moduleSource = rewriteVerifiedRubyRuntimeModule(payload);
28
+ if (typeof Blob !== 'function' ||
29
+ typeof URL.createObjectURL !== 'function' ||
30
+ typeof URL.revokeObjectURL !== 'function') {
31
+ throw new Error('Ruby runtime requires Blob module URL support.');
32
+ }
33
+ const verifiedModuleUrl = URL.createObjectURL(new Blob([moduleSource], { type: 'text/javascript' }));
34
+ let runtime;
35
+ let module;
36
+ try {
37
+ [runtime, module] = await Promise.all([
38
+ importRuntimeModule(verifiedModuleUrl),
39
+ WebAssembly.compile(wasmBytes)
40
+ ]);
41
+ }
42
+ finally {
43
+ try {
44
+ URL.revokeObjectURL(verifiedModuleUrl);
45
+ }
46
+ catch {
47
+ // Blob URL cleanup must not replace import or compilation outcomes.
48
+ }
49
+ }
50
+ if (!runtime.RubyVM ||
51
+ !runtime.consolePrinter ||
52
+ !runtime.wasiShim ||
53
+ runtime.rubyStdlibWasmUrl !== RUBY_RUNTIME_VERIFIED_WASM_URL) {
54
+ throw new Error('Ruby runtime module is missing required verified Ruby or WASI exports.');
55
+ }
56
+ loadedRuntime = { module, runtime };
57
+ runtimeState = 'ready';
58
+ return loadedRuntime;
59
+ }
60
+ catch (error) {
61
+ loadedRuntime = null;
62
+ runtimeState = 'uninitialized';
63
+ throw error;
64
+ }
65
+ }
66
+ function createRubyStdin(runtime, initialStdin, requestInput) {
67
+ const { Fd, Inode, wasi } = runtime.wasiShim;
68
+ return new (class extends Fd {
69
+ ino = Inode.issue_ino();
70
+ currentStdin = initialStdin;
71
+ pendingBytes = null;
72
+ fixedInitialStdin = initialStdin != null;
73
+ fd_fdstat_get() {
74
+ const fdstat = new wasi.Fdstat(wasi.FILETYPE_CHARACTER_DEVICE, 0);
75
+ fdstat.fs_rights_base = BigInt(wasi.RIGHTS_FD_READ);
76
+ return { ret: wasi.ERRNO_SUCCESS, fdstat };
77
+ }
78
+ fd_filestat_get() {
79
+ return {
80
+ ret: wasi.ERRNO_SUCCESS,
81
+ filestat: new wasi.Filestat(this.ino, wasi.FILETYPE_CHARACTER_DEVICE, 0n)
82
+ };
83
+ }
84
+ fd_read(size) {
85
+ let bytes = this.pendingBytes;
86
+ if (!bytes?.length) {
87
+ const chunk = this.readChunk();
88
+ if (chunk == null)
89
+ return { ret: wasi.ERRNO_SUCCESS, data: new Uint8Array() };
90
+ bytes = encoder.encode(chunk);
91
+ }
92
+ if (bytes.length <= size) {
93
+ this.pendingBytes = null;
94
+ return { ret: wasi.ERRNO_SUCCESS, data: bytes };
95
+ }
96
+ const head = bytes.slice(0, size);
97
+ this.pendingBytes = bytes.slice(size);
98
+ return { ret: wasi.ERRNO_SUCCESS, data: head };
99
+ }
100
+ readChunk() {
101
+ if (this.currentStdin != null) {
102
+ const chunk = this.currentStdin;
103
+ this.currentStdin = null;
104
+ return chunk;
105
+ }
106
+ if (this.fixedInitialStdin)
107
+ return null;
108
+ return requestInput();
109
+ }
110
+ })();
111
+ }
112
+ function insertWorkspaceFile(tree, path, content) {
113
+ const [head, ...rest] = path.split('/').filter(Boolean);
114
+ if (!head)
115
+ return;
116
+ if (!rest.length) {
117
+ tree.set(head, content);
118
+ return;
119
+ }
120
+ const existing = tree.get(head);
121
+ const child = existing instanceof Map ? existing : new Map();
122
+ tree.set(head, child);
123
+ insertWorkspaceFile(child, rest.join('/'), content);
124
+ }
125
+ function materializeWorkspaceTree(runtime, tree) {
126
+ const { Directory, File } = runtime.wasiShim;
127
+ const contents = new Map();
128
+ for (const [name, entry] of tree) {
129
+ contents.set(name, entry instanceof Map
130
+ ? new Directory(materializeWorkspaceTree(runtime, entry))
131
+ : new File(encoder.encode(entry), { readonly: true }));
132
+ }
133
+ return contents;
134
+ }
135
+ function workspaceContents(runtime, workspaceFiles) {
136
+ const tree = new Map();
137
+ for (const file of workspaceFiles) {
138
+ const normalizedPath = file.path.replace(/^\/+/, '');
139
+ if (!normalizedPath || normalizedPath.includes('\0'))
140
+ continue;
141
+ insertWorkspaceFile(tree, normalizedPath, file.content);
142
+ }
143
+ return materializeWorkspaceTree(runtime, tree);
144
+ }
145
+ self.onmessage = async (event) => {
146
+ const message = event.data;
147
+ const { load, runtimePreflight, maxAssetBytes, buffer, code, prepare, args = [], stdin, activePath = 'main.rb', workspaceFiles = [], log } = message;
148
+ try {
149
+ if (Object.prototype.hasOwnProperty.call(message, 'load')) {
150
+ const actualKeys = Object.keys(message).sort();
151
+ const expectedKeys = ['load', 'maxAssetBytes', 'runtimePreflight'];
152
+ if (load !== true ||
153
+ actualKeys.length !== expectedKeys.length ||
154
+ actualKeys.some((key, index) => key !== expectedKeys[index]) ||
155
+ !Number.isSafeInteger(maxAssetBytes) ||
156
+ maxAssetBytes <= 0) {
157
+ throw new Error('Ruby runtime load message has an invalid shape.');
158
+ }
159
+ postMessage({ progress: { percent: 5, stage: 'Loading Ruby runtime' } });
160
+ await loadRubyModule(runtimePreflight, maxAssetBytes);
161
+ postMessage({ progress: { percent: 100, stage: 'Ruby runtime ready' } });
162
+ postMessage({ load: true });
163
+ return;
164
+ }
165
+ stdinBufferRuby = new Int32Array(buffer);
166
+ if (runtimeState !== 'ready' || !loadedRuntime) {
167
+ throw new Error('Ruby runtime is not ready.');
168
+ }
169
+ runtimeState = 'running';
170
+ const { module: rubyModule, runtime } = loadedRuntime;
171
+ if (prepare) {
172
+ postMessage({ results: true });
173
+ runtimeState = 'ready';
174
+ return;
175
+ }
176
+ let stdout = '';
177
+ let stderr = '';
178
+ const printer = runtime.consolePrinter({
179
+ stdout(output) {
180
+ stdout += output;
181
+ if (output)
182
+ postMessage({ output });
183
+ },
184
+ stderr(output) {
185
+ stderr += output;
186
+ if (output)
187
+ postMessage({ output });
188
+ }
189
+ });
190
+ const hasInitialStdin = typeof stdin === 'string';
191
+ const rubyStdin = createRubyStdin(runtime, hasInitialStdin ? stdin : null, () => {
192
+ const chunk = waitForBufferedStdin(stdinBufferRuby, () => postMessage({ buffer: true }));
193
+ if (log) {
194
+ console.log(chunk == null
195
+ ? '[wasm-idle:ruby-stdin] read(bytes=0, eof=true)'
196
+ : `[wasm-idle:ruby-stdin] read(bytes=${encoder.encode(chunk).byteLength}, text=${JSON.stringify(chunk)})`);
197
+ }
198
+ return chunk;
199
+ });
200
+ const { File, OpenFile, PreopenDirectory, WASI } = runtime.wasiShim;
201
+ const fds = [
202
+ rubyStdin,
203
+ new OpenFile(new File([])),
204
+ new OpenFile(new File([])),
205
+ new PreopenDirectory('/', workspaceContents(runtime, workspaceFiles))
206
+ ];
207
+ const wasiInstance = new WASI(['ruby.wasm', ...args], ['USER=jungol'], fds, {
208
+ debug: false
209
+ });
210
+ const { vm } = await runtime.RubyVM.instantiateModule({
211
+ module: rubyModule,
212
+ wasip1: wasiInstance,
213
+ args: ['ruby.wasm', '-EUTF-8', '-e_=0', ...args],
214
+ addToImports(imports) {
215
+ printer.addToImports(imports);
216
+ },
217
+ setMemory(memory) {
218
+ printer.setMemory(memory);
219
+ }
220
+ });
221
+ if (log) {
222
+ console.log(`[wasm-idle:ruby-worker] eval start bytes=${code.length} activePath=${activePath}`);
223
+ }
224
+ postMessage({
225
+ progress: {
226
+ kind: 'ready',
227
+ state: 'running',
228
+ reason: 'started',
229
+ label: 'Ruby program started'
230
+ }
231
+ });
232
+ vm.eval(code);
233
+ if (log) {
234
+ console.log(`[wasm-idle:ruby-worker] eval settled stdout=${String(Boolean(stdout))} stderr=${String(Boolean(stderr))}`);
235
+ }
236
+ postMessage({ results: true });
237
+ }
238
+ catch (error) {
239
+ if (log) {
240
+ console.error('[wasm-idle:ruby-worker] failed', error);
241
+ }
242
+ postMessage({ error: error?.message || String(error) });
243
+ }
244
+ finally {
245
+ if (runtimeState === 'running')
246
+ runtimeState = 'ready';
247
+ }
248
+ };
@@ -0,0 +1,15 @@
1
+ export interface RuntimeAssetDownloadProgress {
2
+ loaded: number;
3
+ total?: number;
4
+ }
5
+ export interface RuntimeAssetFetchOptions {
6
+ url: string;
7
+ label: string;
8
+ cache?: RequestCache;
9
+ maxAssetBytes?: number;
10
+ onProgress?: (progress: RuntimeAssetDownloadProgress) => void;
11
+ signal?: AbortSignal;
12
+ }
13
+ export declare const DEFAULT_RUNTIME_ASSET_MAX_BYTES: number;
14
+ export declare function resolveRuntimeAssetUrl(value: string, label: string): URL;
15
+ export declare function fetchRuntimeAssetBytes({ url, label, cache, maxAssetBytes, onProgress, signal }: RuntimeAssetFetchOptions): Promise<Uint8Array<ArrayBuffer>>;