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,13 +1,34 @@
1
1
  import { waitForBufferedStdin } from '../stdinBuffer';
2
+ import { verifyRuntimeAssetIntegrity } from '@wasm-idle/core';
3
+ import { fetchRuntimeAssetBytes } from './runtimeAssetFetch';
4
+ const MAX_OCAML_MANIFEST_BYTES = 4 * 1024 * 1024;
5
+ const MAX_OCAML_RUNTIME_ENTRY_BYTES = 32 * 1024 * 1024;
6
+ const DEFAULT_MAX_OCAML_ASSET_BYTES = 128 * 1024 * 1024;
7
+ const textDecoder = new TextDecoder();
2
8
  let moduleUrl = '';
3
9
  let manifestUrl = '';
4
- let loadedModuleUrl = '';
5
- let loadedManifestUrl = '';
10
+ let moduleReceipt = null;
11
+ let manifestReceipt = null;
12
+ let maxAssetBytes = DEFAULT_MAX_OCAML_ASSET_BYTES;
13
+ let loadedModuleIdentity = '';
14
+ let loadedManifestIdentity = '';
15
+ let loadedManifestMaxAssetBytes = 0;
6
16
  let compilerPromise = null;
7
17
  let manifestPromise = null;
8
18
  let compiledResult = null;
9
19
  let compiledCacheKey = '';
10
20
  let stdinBufferOcaml = null;
21
+ function requireOuterAssetReceipt(value, label) {
22
+ if (!value ||
23
+ !Number.isSafeInteger(value.bytes) ||
24
+ value.bytes <= 0 ||
25
+ typeof value.sha256 !== 'string' ||
26
+ !/^[a-f0-9]{64}$/u.test(value.sha256)) {
27
+ throw new TypeError(`OCaml ${label} receipt is invalid`);
28
+ }
29
+ return Object.freeze({ bytes: value.bytes, sha256: value.sha256 });
30
+ }
31
+ const outerAssetIdentity = (url, receipt) => JSON.stringify([url, receipt.bytes, receipt.sha256]);
11
32
  function appendTrailingNewline(text) {
12
33
  return text.endsWith('\n') ? text : `${text}\n`;
13
34
  }
@@ -34,21 +55,27 @@ function rewriteAbsoluteBundleUrl(url, currentManifestUrl) {
34
55
  const basePath = manifestLocation.pathname.replace(/\/wasm-of-js-of-ocaml\/browser-native-bundle\/browser-native-manifest\.v1\.json$/, '');
35
56
  return new URL(`${basePath}${url}`, manifestLocation.origin).toString();
36
57
  }
58
+ function rewriteManifestAsset(asset, currentManifestUrl) {
59
+ return {
60
+ ...asset,
61
+ url: rewriteAbsoluteBundleUrl(asset.url, currentManifestUrl)
62
+ };
63
+ }
37
64
  function rewriteManifest(manifest, currentManifestUrl) {
38
65
  return {
39
66
  ...manifest,
40
- findlibConf: rewriteAbsoluteBundleUrl(manifest.findlibConf, currentManifestUrl),
67
+ findlibConf: rewriteManifestAsset(manifest.findlibConf, currentManifestUrl),
41
68
  tools: {
42
- ocamlc: rewriteAbsoluteBundleUrl(manifest.tools.ocamlc, currentManifestUrl),
43
- js_of_ocaml: rewriteAbsoluteBundleUrl(manifest.tools.js_of_ocaml, currentManifestUrl),
44
- wasm_of_ocaml: rewriteAbsoluteBundleUrl(manifest.tools.wasm_of_ocaml, currentManifestUrl)
69
+ ocamlc: rewriteManifestAsset(manifest.tools.ocamlc, currentManifestUrl),
70
+ js_of_ocaml: rewriteManifestAsset(manifest.tools.js_of_ocaml, currentManifestUrl),
71
+ wasm_of_ocaml: rewriteManifestAsset(manifest.tools.wasm_of_ocaml, currentManifestUrl)
45
72
  },
46
73
  ...(manifest.binaryenTools
47
74
  ? {
48
75
  binaryenTools: {
49
- wasm_opt: rewriteAbsoluteBundleUrl(manifest.binaryenTools.wasm_opt, currentManifestUrl),
50
- wasm_merge: rewriteAbsoluteBundleUrl(manifest.binaryenTools.wasm_merge, currentManifestUrl),
51
- wasm_metadce: rewriteAbsoluteBundleUrl(manifest.binaryenTools.wasm_metadce, currentManifestUrl)
76
+ wasm_opt: rewriteManifestAsset(manifest.binaryenTools.wasm_opt, currentManifestUrl),
77
+ wasm_merge: rewriteManifestAsset(manifest.binaryenTools.wasm_merge, currentManifestUrl),
78
+ wasm_metadce: rewriteManifestAsset(manifest.binaryenTools.wasm_metadce, currentManifestUrl)
52
79
  }
53
80
  }
54
81
  : {}),
@@ -74,18 +101,58 @@ function rewriteManifest(manifest, currentManifestUrl) {
74
101
  }))
75
102
  };
76
103
  }
77
- async function loadCompiler(nextModuleUrl) {
104
+ function prepareVerifiedModuleSource(bytes, nextModuleUrl) {
105
+ const source = textDecoder.decode(bytes);
106
+ const withAbsoluteImports = source.replace(/(\bfrom\s+|\bimport\s*(?:\(\s*)?)(['"])(\.{1,2}\/[^'"]+)\2/gu, (_match, prefix, quote, specifier) => `${prefix}${quote}${new URL(specifier, nextModuleUrl).href}${quote}`);
107
+ return withAbsoluteImports.replace(/\bimport\.meta\.url\b/gu, JSON.stringify(nextModuleUrl));
108
+ }
109
+ async function loadCompiler(nextModuleUrl, nextReceipt, nextMaxAssetBytes) {
78
110
  if (!nextModuleUrl) {
79
111
  throw new Error('OCaml runtime is not configured. Set runtimeAssets.ocaml.moduleUrl and runtimeAssets.ocaml.manifestUrl or sync the bundled wasm-of-js-of-ocaml assets.');
80
112
  }
81
- if (loadedModuleUrl === nextModuleUrl && compilerPromise) {
113
+ if (nextReceipt.bytes > nextMaxAssetBytes) {
114
+ throw new Error(`OCaml module exceeds the ${nextMaxAssetBytes} byte limit`);
115
+ }
116
+ const identity = outerAssetIdentity(nextModuleUrl, nextReceipt);
117
+ if (loadedModuleIdentity === identity && compilerPromise) {
82
118
  return await compilerPromise;
83
119
  }
84
- loadedModuleUrl = nextModuleUrl;
120
+ loadedModuleIdentity = identity;
85
121
  compiledResult = null;
86
122
  compiledCacheKey = '';
87
123
  compilerPromise = (async () => {
88
- const module = (await import(/* @vite-ignore */ nextModuleUrl));
124
+ const bytes = await fetchRuntimeAssetBytes({
125
+ url: nextModuleUrl,
126
+ label: 'OCaml runtime module',
127
+ cache: 'no-store',
128
+ maxAssetBytes: nextReceipt.bytes
129
+ });
130
+ await verifyRuntimeAssetIntegrity({
131
+ asset: nextModuleUrl,
132
+ bytes,
133
+ expected: nextReceipt,
134
+ runtimeId: 'OCAML'
135
+ });
136
+ if (typeof URL.createObjectURL !== 'function' ||
137
+ typeof URL.revokeObjectURL !== 'function') {
138
+ throw new Error('OCaml runtime requires Blob URL support');
139
+ }
140
+ const verifiedModuleUrl = URL.createObjectURL(new Blob([prepareVerifiedModuleSource(bytes, nextModuleUrl)], {
141
+ type: 'text/javascript'
142
+ }));
143
+ let module;
144
+ try {
145
+ module = (await import(
146
+ /* @vite-ignore */ verifiedModuleUrl));
147
+ }
148
+ finally {
149
+ try {
150
+ URL.revokeObjectURL(verifiedModuleUrl);
151
+ }
152
+ catch {
153
+ // Blob URL cleanup must not replace the verified module import outcome.
154
+ }
155
+ }
89
156
  if (typeof module.compile !== 'function') {
90
157
  throw new Error('wasm-of-js-of-ocaml bundle must export compile');
91
158
  }
@@ -96,22 +163,79 @@ async function loadCompiler(nextModuleUrl) {
96
163
  })();
97
164
  return await compilerPromise;
98
165
  }
99
- async function loadManifest(nextManifestUrl) {
166
+ function resolveMaxAssetBytes(value) {
167
+ const resolved = value ?? DEFAULT_MAX_OCAML_ASSET_BYTES;
168
+ if (!Number.isSafeInteger(resolved) || resolved <= 0) {
169
+ throw new TypeError('OCaml runtime maxAssetBytes must be a positive safe integer');
170
+ }
171
+ return resolved;
172
+ }
173
+ function assertManifestAssetLimit(manifest, limit) {
174
+ const declaredAssets = [
175
+ ['findlib.conf', manifest.findlibConf?.bytes],
176
+ ['ocamlc', manifest.tools?.ocamlc?.bytes],
177
+ ['js_of_ocaml', manifest.tools?.js_of_ocaml?.bytes],
178
+ ['wasm_of_ocaml', manifest.tools?.wasm_of_ocaml?.bytes],
179
+ ...Object.entries(manifest.binaryenTools || {}).map(([name, asset]) => [name, asset?.bytes]),
180
+ ...(manifest.runtimePack
181
+ ? [
182
+ ['runtime pack index', manifest.runtimePack.indexBytes],
183
+ [
184
+ 'runtime pack compressed payload',
185
+ manifest.runtimePack.compressedBytes
186
+ ],
187
+ ['runtime pack expanded payload', manifest.runtimePack.totalBytes]
188
+ ]
189
+ : []),
190
+ ...(manifest.ocamlLibFiles || []).map((file) => [file.path, file.size]),
191
+ ...(manifest.packages || []).flatMap((manifestPackage) => (manifestPackage.files || []).map((file) => [file.path, file.size]))
192
+ ];
193
+ for (const [label, declaredBytes] of declaredAssets) {
194
+ if (Number.isSafeInteger(declaredBytes) && declaredBytes > limit) {
195
+ throw new Error(`OCaml runtime asset ${label} exceeds the ${limit} byte limit`);
196
+ }
197
+ }
198
+ }
199
+ async function loadManifest(nextManifestUrl, nextReceipt, nextMaxAssetBytes) {
100
200
  if (!nextManifestUrl) {
101
201
  throw new Error('OCaml runtime is not configured. Set runtimeAssets.ocaml.moduleUrl and runtimeAssets.ocaml.manifestUrl or sync the bundled wasm-of-js-of-ocaml assets.');
102
202
  }
103
- if (loadedManifestUrl === nextManifestUrl && manifestPromise) {
203
+ const manifestLimit = Math.min(MAX_OCAML_MANIFEST_BYTES, nextMaxAssetBytes);
204
+ if (nextReceipt.bytes > manifestLimit) {
205
+ throw new Error(`OCaml manifest exceeds the ${manifestLimit} byte limit`);
206
+ }
207
+ const identity = outerAssetIdentity(nextManifestUrl, nextReceipt);
208
+ if (loadedManifestIdentity === identity &&
209
+ loadedManifestMaxAssetBytes === nextMaxAssetBytes &&
210
+ manifestPromise) {
104
211
  return await manifestPromise;
105
212
  }
106
- loadedManifestUrl = nextManifestUrl;
213
+ loadedManifestIdentity = identity;
214
+ loadedManifestMaxAssetBytes = nextMaxAssetBytes;
107
215
  compiledResult = null;
108
216
  compiledCacheKey = '';
109
217
  manifestPromise = (async () => {
110
- const response = await fetch(nextManifestUrl, { cache: 'no-store' });
111
- if (!response.ok) {
112
- throw new Error(`failed to fetch OCaml manifest: ${response.status}`);
218
+ const bytes = await fetchRuntimeAssetBytes({
219
+ url: nextManifestUrl,
220
+ label: 'OCaml manifest',
221
+ cache: 'no-store',
222
+ maxAssetBytes: nextReceipt.bytes
223
+ });
224
+ await verifyRuntimeAssetIntegrity({
225
+ asset: nextManifestUrl,
226
+ bytes,
227
+ expected: nextReceipt,
228
+ runtimeId: 'OCAML'
229
+ });
230
+ let manifest;
231
+ try {
232
+ manifest = JSON.parse(textDecoder.decode(bytes));
233
+ }
234
+ catch {
235
+ throw new Error('OCaml manifest is not valid JSON');
113
236
  }
114
- return rewriteManifest((await response.json()), nextManifestUrl);
237
+ assertManifestAssetLimit(manifest, nextMaxAssetBytes);
238
+ return rewriteManifest(manifest, nextManifestUrl);
115
239
  })();
116
240
  return await manifestPromise;
117
241
  }
@@ -122,7 +246,7 @@ function getJsArtifact(result) {
122
246
  }
123
247
  return programArtifact;
124
248
  }
125
- async function executeCompileResult(result, log = false) {
249
+ async function executeCompileResult(result, log = false, stdin) {
126
250
  const programArtifact = getJsArtifact(result);
127
251
  const assetFiles = result.artifacts.filter((artifact) => artifact.kind === 'wasm' || artifact.kind === 'asset');
128
252
  const assetResolverKey = '__wasm_of_js_of_ocaml_resolve_asset';
@@ -131,7 +255,8 @@ async function executeCompileResult(result, log = false) {
131
255
  const sourceDir = programArtifact.path.replace(/\/[^/]+$/, '');
132
256
  const createdObjectUrls = [];
133
257
  const stdinEncoder = new TextEncoder();
134
- let stdinChunkOcaml = new Uint8Array(0);
258
+ const hasExplicitStdinOcaml = typeof stdin === 'string';
259
+ let stdinChunkOcaml = hasExplicitStdinOcaml ? stdinEncoder.encode(stdin) : new Uint8Array(0);
135
260
  let stdinChunkOffsetOcaml = 0;
136
261
  const originalConsole = globalThis.console;
137
262
  const originalFetch = globalThis.fetch.bind(globalThis);
@@ -145,11 +270,11 @@ async function executeCompileResult(result, log = false) {
145
270
  const hadModule = Object.prototype.hasOwnProperty.call(runtimeGlobal, 'module');
146
271
  const hadExports = Object.prototype.hasOwnProperty.call(runtimeGlobal, 'exports');
147
272
  const hadFs = Object.prototype.hasOwnProperty.call(runtimeGlobal, 'fs');
148
- const originalProcess = runtimeGlobal.process;
149
- const originalRequire = runtimeGlobal.require;
150
- const originalModule = runtimeGlobal.module;
151
- const originalExports = runtimeGlobal.exports;
152
- const originalFs = runtimeGlobal.fs;
273
+ const originalProcess = runtimeGlobal['process'];
274
+ const originalRequire = runtimeGlobal['require'];
275
+ const originalModule = runtimeGlobal['module'];
276
+ const originalExports = runtimeGlobal['exports'];
277
+ const originalFs = runtimeGlobal['fs'];
153
278
  const hadStdinHook = Object.prototype.hasOwnProperty.call(runtimeGlobal, stdinHookKey);
154
279
  const originalStdinHook = runtimeGlobal[stdinHookKey];
155
280
  const assetEntries = assetFiles
@@ -199,6 +324,8 @@ async function executeCompileResult(result, log = false) {
199
324
  return new Uint8Array(0);
200
325
  }
201
326
  while (stdinChunkOffsetOcaml >= stdinChunkOcaml.length) {
327
+ if (hasExplicitStdinOcaml)
328
+ return null;
202
329
  const chunk = waitForBufferedStdin(stdinBufferOcaml, () => postMessage({ buffer: true }));
203
330
  if (chunk == null) {
204
331
  stdinChunkOcaml = new Uint8Array(0);
@@ -257,7 +384,7 @@ async function executeCompileResult(result, log = false) {
257
384
  }
258
385
  return await originalFetch(input, init);
259
386
  });
260
- runtimeGlobal.process = undefined;
387
+ runtimeGlobal['process'] = undefined;
261
388
  runtimeGlobal[stdinHookKey] = (requestedBytes = Number.MAX_SAFE_INTEGER) => {
262
389
  const encoded = readOcamlStdinBytes(requestedBytes);
263
390
  if (encoded == null) {
@@ -282,15 +409,15 @@ async function executeCompileResult(result, log = false) {
282
409
  return encoded.byteLength;
283
410
  }
284
411
  };
285
- runtimeGlobal.fs = stdinFsShim;
286
- runtimeGlobal.require = (specifier) => {
412
+ runtimeGlobal['fs'] = stdinFsShim;
413
+ runtimeGlobal['require'] = (specifier) => {
287
414
  if (specifier === 'fs' || specifier === 'node:fs') {
288
415
  return stdinFsShim;
289
416
  }
290
417
  throw new Error(`unsupported OCaml runtime require: ${specifier}`);
291
418
  };
292
- runtimeGlobal.module = { exports: {} };
293
- runtimeGlobal.exports = runtimeGlobal.module.exports;
419
+ runtimeGlobal['module'] = { exports: {} };
420
+ runtimeGlobal['exports'] = runtimeGlobal['module'].exports;
294
421
  try {
295
422
  let normalizedSource = normalizeAssetLoader(programArtifact.data, runtimePromiseKey);
296
423
  const stdinReadReplacement = 'read($1,$2,$3,$4){var e=globalThis.__wasmIdleOcamlReadStdin?globalThis.__wasmIdleOcamlReadStdin($3):null;if(e==null)return 0;var h=e.length,f=new Uint8Array(h),i=0;for(;i<h;i++)f[i]=e.charCodeAt(i);var g=f.length<$3?f.length:$3;$1.set(f.subarray(0,g),$2);return g}';
@@ -322,34 +449,34 @@ async function executeCompileResult(result, log = false) {
322
449
  delete globalThis[runtimePromiseKey];
323
450
  delete globalThis[assetResolverKey];
324
451
  if (!hadProcess) {
325
- delete runtimeGlobal.process;
452
+ delete runtimeGlobal['process'];
326
453
  }
327
454
  else {
328
- runtimeGlobal.process = originalProcess;
455
+ runtimeGlobal['process'] = originalProcess;
329
456
  }
330
457
  if (!hadRequire) {
331
- delete runtimeGlobal.require;
458
+ delete runtimeGlobal['require'];
332
459
  }
333
460
  else {
334
- runtimeGlobal.require = originalRequire;
461
+ runtimeGlobal['require'] = originalRequire;
335
462
  }
336
463
  if (!hadModule) {
337
- delete runtimeGlobal.module;
464
+ delete runtimeGlobal['module'];
338
465
  }
339
466
  else {
340
- runtimeGlobal.module = originalModule;
467
+ runtimeGlobal['module'] = originalModule;
341
468
  }
342
469
  if (!hadExports) {
343
- delete runtimeGlobal.exports;
470
+ delete runtimeGlobal['exports'];
344
471
  }
345
472
  else {
346
- runtimeGlobal.exports = originalExports;
473
+ runtimeGlobal['exports'] = originalExports;
347
474
  }
348
475
  if (!hadFs) {
349
- delete runtimeGlobal.fs;
476
+ delete runtimeGlobal['fs'];
350
477
  }
351
478
  else {
352
- runtimeGlobal.fs = originalFs;
479
+ runtimeGlobal['fs'] = originalFs;
353
480
  }
354
481
  if (!hadStdinHook) {
355
482
  delete runtimeGlobal[stdinHookKey];
@@ -363,39 +490,60 @@ async function executeCompileResult(result, log = false) {
363
490
  }
364
491
  }
365
492
  self.onmessage = async (event) => {
366
- const { load, moduleUrl: nextModuleUrl, manifestUrl: nextManifestUrl, code, prepare, target = 'wasm', wasmBinaryenMode = 'fast', log = true, buffer } = event.data;
493
+ let log = true;
367
494
  try {
368
- if (load) {
369
- moduleUrl = nextModuleUrl;
370
- manifestUrl = nextManifestUrl;
371
- await Promise.all([loadCompiler(moduleUrl), loadManifest(manifestUrl)]);
495
+ if (event.data.load) {
496
+ moduleUrl = event.data.moduleUrl;
497
+ manifestUrl = event.data.manifestUrl;
498
+ moduleReceipt = requireOuterAssetReceipt(event.data.moduleReceipt, 'module');
499
+ manifestReceipt = requireOuterAssetReceipt(event.data.manifestReceipt, 'manifest');
500
+ maxAssetBytes = resolveMaxAssetBytes(event.data.maxAssetBytes);
501
+ await loadManifest(manifestUrl, manifestReceipt, maxAssetBytes);
502
+ await loadCompiler(moduleUrl, moduleReceipt, maxAssetBytes);
372
503
  postMessage({ load: true });
373
504
  return;
374
505
  }
506
+ const { code, prepare, target = 'wasm', wasmBinaryenMode = 'fast', log: configuredLog = true, buffer, stdin, activePath = 'main.ml', workspaceFiles = [] } = event.data;
507
+ log = configuredLog;
375
508
  stdinBufferOcaml = buffer ? new Int32Array(buffer) : null;
376
509
  if (log) {
377
510
  console.log(`[wasm-idle:ocaml-worker] compile start prepare=${prepare} target=${target} binaryen=${wasmBinaryenMode}`);
378
511
  }
379
512
  postMessage({ progress: { stage: 'compile-bootstrap', percent: 10 } });
380
- const [compilerModule, manifest] = await Promise.all([
381
- loadCompiler(moduleUrl),
382
- loadManifest(manifestUrl)
383
- ]);
513
+ if (!moduleReceipt || !manifestReceipt) {
514
+ throw new Error('OCaml runtime outer asset receipts are not loaded');
515
+ }
516
+ const manifest = await loadManifest(manifestUrl, manifestReceipt, maxAssetBytes);
517
+ const compilerModule = await loadCompiler(moduleUrl, moduleReceipt, maxAssetBytes);
384
518
  postMessage({ progress: { stage: 'compile-ready', percent: 25 } });
385
- const compileKey = `${target}\n${wasmBinaryenMode}\n${code}`;
519
+ const files = Object.fromEntries([
520
+ ...workspaceFiles.map((file) => [file.path, file.content]),
521
+ [activePath, code]
522
+ ]);
523
+ const compileKey = JSON.stringify({
524
+ target,
525
+ wasmBinaryenMode,
526
+ entry: activePath,
527
+ files
528
+ });
386
529
  let compiledFresh = false;
387
530
  if (!compiledResult || compiledCacheKey !== compileKey) {
388
531
  const result = await compilerModule.compile({
389
- files: {
390
- 'main.ml': code
391
- },
392
- entry: 'main.ml',
532
+ files,
533
+ entry: activePath,
393
534
  target,
394
535
  effectsMode: 'cps',
395
536
  wasmBinaryenMode
396
537
  }, {
397
538
  system: compilerModule.createBrowserWorkerSystemDispatcher({
398
- manifest
539
+ manifest,
540
+ runtimeAssets: {
541
+ limits: {
542
+ maxAssetBytes,
543
+ maxMetadataBytes: Math.min(MAX_OCAML_MANIFEST_BYTES, maxAssetBytes),
544
+ maxEntryBytes: Math.min(MAX_OCAML_RUNTIME_ENTRY_BYTES, maxAssetBytes)
545
+ }
546
+ }
399
547
  }),
400
548
  toolchainRoot: '/static/toolchain'
401
549
  });
@@ -439,7 +587,7 @@ self.onmessage = async (event) => {
439
587
  return;
440
588
  }
441
589
  postMessage({ progress: { stage: 'runtime-start', percent: 95 } });
442
- await executeCompileResult(result, log);
590
+ await executeCompileResult(result, log, stdin);
443
591
  }
444
592
  catch (error) {
445
593
  if (log) {
@@ -0,0 +1 @@
1
+ export {};