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,10 +1,54 @@
1
1
  const decoder = new TextDecoder();
2
+ const DEFAULT_MAX_ASSET_BYTES = 128 * 1024 * 1024;
3
+ const DEFAULT_STREAM_BUFFER_BYTES = 64 * 1024;
4
+ const MAX_DIRECT_ASSET_ALLOWLIST_ENTRIES = 4096;
5
+ const MAX_DIRECT_RUNTIME_ASSET_ALLOWLIST_ENTRIES = 64;
6
+ const MAX_DIRECT_ASSET_NAME_LENGTH = 1024;
7
+ const directAssetNamePattern = /^[A-Za-z0-9][A-Za-z0-9._+-]*$/u;
2
8
  const originalFetch = globalThis.fetch.bind(globalThis);
3
9
  const NativeXMLHttpRequest = globalThis.XMLHttpRequest;
4
10
  let activeConfig = null;
11
+ let activeDirectAssetBaseUrl = null;
12
+ let activeDirectAssetUrls = new Map();
5
13
  let interceptorsInstalled = false;
6
14
  let nextAssetRequestId = 0;
7
15
  const pendingAssetRequests = new Map();
16
+ const cancelResponseBody = (response, reason) => {
17
+ try {
18
+ void Promise.resolve(response.body?.cancel(reason)).catch(() => undefined);
19
+ }
20
+ catch {
21
+ // Preserve the validation or HTTP failure that caused cancellation.
22
+ }
23
+ };
24
+ const configuredBaseUrl = () => {
25
+ if (!activeConfig)
26
+ return null;
27
+ const locationOrigin = globalThis.location?.origin;
28
+ const locationHref = globalThis.location?.href;
29
+ const fallbackBaseUrl = locationOrigin && locationOrigin !== 'null'
30
+ ? `${locationOrigin}/`
31
+ : locationHref?.startsWith('blob:')
32
+ ? locationHref.slice('blob:'.length)
33
+ : locationHref || 'http://localhost/';
34
+ let baseUrl;
35
+ try {
36
+ baseUrl = new URL(activeConfig.baseUrl, fallbackBaseUrl);
37
+ }
38
+ catch {
39
+ throw new Error(`Runtime asset base URL is invalid: ${activeConfig.baseUrl}`);
40
+ }
41
+ if (baseUrl.protocol !== 'http:' && baseUrl.protocol !== 'https:') {
42
+ throw new Error(`Runtime asset base URL must use HTTP(S): ${activeConfig.baseUrl}`);
43
+ }
44
+ if (baseUrl.username || baseUrl.password || baseUrl.hash || baseUrl.search) {
45
+ throw new Error(`Runtime asset base URL must not include credentials, a query, or a fragment: ${activeConfig.baseUrl}`);
46
+ }
47
+ if (!baseUrl.pathname.endsWith('/')) {
48
+ baseUrl.pathname += '/';
49
+ }
50
+ return baseUrl;
51
+ };
8
52
  const responseBuffer = (bytes) => {
9
53
  const buffer = bytes.buffer;
10
54
  return bytes.byteOffset === 0 && bytes.byteLength === buffer.byteLength
@@ -12,18 +56,60 @@ const responseBuffer = (bytes) => {
12
56
  : buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
13
57
  };
14
58
  const trackedAssetUrl = (input) => {
15
- if (!activeConfig)
59
+ const baseUrl = configuredBaseUrl();
60
+ if (!baseUrl)
16
61
  return null;
17
- if (typeof input === 'string')
18
- return new URL(input, activeConfig.baseUrl).href;
19
- if (input instanceof URL)
20
- return input.href;
21
- return input.url;
62
+ try {
63
+ if (typeof input === 'string')
64
+ return new URL(input, baseUrl).href;
65
+ if (input instanceof URL)
66
+ return input.href;
67
+ return input.url;
68
+ }
69
+ catch {
70
+ return null;
71
+ }
72
+ };
73
+ const isDirectAssetScopeUrl = (url) => {
74
+ if (!activeDirectAssetBaseUrl)
75
+ return false;
76
+ let assetUrl;
77
+ try {
78
+ assetUrl = new URL(url);
79
+ }
80
+ catch {
81
+ return false;
82
+ }
83
+ return (assetUrl.protocol === activeDirectAssetBaseUrl.protocol &&
84
+ assetUrl.origin === activeDirectAssetBaseUrl.origin &&
85
+ assetUrl.pathname.startsWith(activeDirectAssetBaseUrl.pathname));
22
86
  };
23
87
  const trackedAssetName = (url) => {
24
- if (!activeConfig || !url.startsWith(activeConfig.baseUrl))
88
+ const baseUrl = configuredBaseUrl();
89
+ if (!baseUrl)
25
90
  return null;
26
- return url.slice(activeConfig.baseUrl.length);
91
+ let assetUrl;
92
+ try {
93
+ assetUrl = new URL(url, baseUrl);
94
+ }
95
+ catch {
96
+ return null;
97
+ }
98
+ if (assetUrl.protocol !== 'http:' && assetUrl.protocol !== 'https:')
99
+ return null;
100
+ if (assetUrl.username || assetUrl.password || assetUrl.hash)
101
+ return null;
102
+ if (/%2f|%5c/iu.test(assetUrl.pathname))
103
+ return null;
104
+ const directAsset = activeDirectAssetUrls.get(assetUrl.href);
105
+ if (directAsset)
106
+ return directAsset;
107
+ if (isDirectAssetScopeUrl(assetUrl.href))
108
+ return null;
109
+ if (assetUrl.origin !== baseUrl.origin || !assetUrl.pathname.startsWith(baseUrl.pathname)) {
110
+ return null;
111
+ }
112
+ return `${assetUrl.pathname.slice(baseUrl.pathname.length)}${assetUrl.search}`;
27
113
  };
28
114
  const isTrackedAssetUrl = (url) => trackedAssetName(url) !== null;
29
115
  const loadAssetFromBridge = async (asset) => {
@@ -38,14 +124,61 @@ const loadAssetFromBridge = async (asset) => {
38
124
  });
39
125
  });
40
126
  };
41
- const loadAssetFromUrl = async (url, asset) => {
42
- const response = await originalFetch(url);
43
- if (!response.ok)
44
- throw new Error(`Failed to load ${asset}: ${response.status}`);
45
- const total = Number(response.headers.get('content-length') || 0) || undefined;
127
+ const loadAssetFromUrl = async (url, asset, integrity) => {
128
+ const requestUrl = trackedAssetUrl(url);
129
+ if (!requestUrl || trackedAssetName(requestUrl) !== asset || !activeConfig) {
130
+ throw new Error('Untracked runtime asset request');
131
+ }
132
+ const maxAssetBytes = activeConfig.maxAssetBytes ?? DEFAULT_MAX_ASSET_BYTES;
133
+ const response = await originalFetch(requestUrl, {
134
+ credentials: 'omit',
135
+ redirect: 'error',
136
+ referrerPolicy: 'no-referrer',
137
+ ...(integrity ? { integrity } : {})
138
+ });
139
+ if (response.url) {
140
+ let responseUrl;
141
+ try {
142
+ responseUrl = new URL(response.url);
143
+ }
144
+ catch {
145
+ const error = new Error(`Runtime asset response URL is invalid: ${response.url}`);
146
+ cancelResponseBody(response, error);
147
+ throw error;
148
+ }
149
+ if (responseUrl.href !== requestUrl) {
150
+ const error = new Error(`Runtime asset response URL mismatch: expected ${requestUrl}, received ${responseUrl.href}`);
151
+ cancelResponseBody(response, error);
152
+ throw error;
153
+ }
154
+ }
155
+ if (!response.ok) {
156
+ const error = new Error(`Failed to load ${asset}: ${response.status}`);
157
+ cancelResponseBody(response, error);
158
+ throw error;
159
+ }
160
+ const rawContentLength = response.headers.get('content-length');
161
+ let total;
162
+ if (rawContentLength !== null) {
163
+ const parsedContentLength = Number(rawContentLength);
164
+ if (!/^\d+$/u.test(rawContentLength.trim()) || !Number.isSafeInteger(parsedContentLength)) {
165
+ const error = new Error(`Runtime asset ${asset} has an invalid Content-Length`);
166
+ cancelResponseBody(response, error);
167
+ throw error;
168
+ }
169
+ total = parsedContentLength || undefined;
170
+ }
171
+ if (total !== undefined && total > maxAssetBytes) {
172
+ const error = new Error(`Runtime asset ${asset} exceeds the ${maxAssetBytes} byte limit`);
173
+ cancelResponseBody(response, error);
174
+ throw error;
175
+ }
46
176
  const mimeType = response.headers.get('content-type') || undefined;
47
177
  if (!response.body) {
48
178
  const bytes = new Uint8Array(await response.arrayBuffer());
179
+ if (bytes.byteLength > maxAssetBytes) {
180
+ throw new Error(`Runtime asset ${asset} exceeds the ${maxAssetBytes} byte limit`);
181
+ }
49
182
  self.postMessage({
50
183
  assetProgress: {
51
184
  asset,
@@ -56,31 +189,68 @@ const loadAssetFromUrl = async (url, asset) => {
56
189
  return { bytes, mimeType };
57
190
  }
58
191
  const reader = response.body.getReader();
192
+ let readerCancelled = false;
193
+ const cancelReader = (reason) => {
194
+ if (readerCancelled)
195
+ return;
196
+ readerCancelled = true;
197
+ try {
198
+ void Promise.resolve(reader.cancel(reason)).catch(() => undefined);
199
+ }
200
+ catch {
201
+ // Preserve the stream or size-limit failure that caused cancellation.
202
+ }
203
+ };
59
204
  let receivedLength = 0;
60
- const chunks = [];
61
- while (true) {
62
- const { done, value } = await reader.read();
63
- if (done)
64
- break;
65
- if (!value)
66
- continue;
67
- const chunk = Uint8Array.from(value);
68
- chunks.push(chunk);
69
- receivedLength += chunk.byteLength;
70
- self.postMessage({
71
- assetProgress: {
72
- asset,
73
- loaded: receivedLength,
74
- total
205
+ let bytes;
206
+ let releaseFailure;
207
+ try {
208
+ bytes = new Uint8Array(total || Math.min(DEFAULT_STREAM_BUFFER_BYTES, maxAssetBytes));
209
+ while (true) {
210
+ const { done, value } = await reader.read();
211
+ if (done)
212
+ break;
213
+ if (!value)
214
+ continue;
215
+ const nextLength = receivedLength + value.byteLength;
216
+ if (nextLength > maxAssetBytes) {
217
+ const error = new Error(`Runtime asset ${asset} exceeds the ${maxAssetBytes} byte limit`);
218
+ cancelReader(error);
219
+ throw error;
75
220
  }
76
- });
221
+ if (nextLength > bytes.byteLength) {
222
+ const nextCapacity = Math.min(maxAssetBytes, Math.max(nextLength, bytes.byteLength * 2));
223
+ const grown = new Uint8Array(nextCapacity);
224
+ grown.set(bytes.subarray(0, receivedLength));
225
+ bytes = grown;
226
+ }
227
+ bytes.set(value, receivedLength);
228
+ receivedLength = nextLength;
229
+ self.postMessage({
230
+ assetProgress: {
231
+ asset,
232
+ loaded: receivedLength,
233
+ total
234
+ }
235
+ });
236
+ }
237
+ }
238
+ catch (error) {
239
+ cancelReader(error);
240
+ throw error;
77
241
  }
78
- const bytes = new Uint8Array(receivedLength);
79
- let position = 0;
80
- for (const chunk of chunks) {
81
- bytes.set(chunk, position);
82
- position += chunk.byteLength;
242
+ finally {
243
+ try {
244
+ reader.releaseLock();
245
+ }
246
+ catch (error) {
247
+ releaseFailure = { error };
248
+ }
83
249
  }
250
+ if (releaseFailure)
251
+ throw releaseFailure.error;
252
+ if (receivedLength !== bytes.byteLength)
253
+ bytes = bytes.slice(0, receivedLength);
84
254
  self.postMessage({
85
255
  assetProgress: {
86
256
  asset,
@@ -90,13 +260,13 @@ const loadAssetFromUrl = async (url, asset) => {
90
260
  });
91
261
  return { bytes, mimeType };
92
262
  };
93
- async function loadTrackedAsset(url) {
263
+ async function loadTrackedAsset(url, integrity) {
94
264
  const asset = trackedAssetName(url);
95
265
  if (!asset || !activeConfig)
96
266
  throw new Error('Untracked runtime asset request');
97
267
  return activeConfig.useAssetBridge
98
268
  ? await loadAssetFromBridge(asset)
99
- : await loadAssetFromUrl(url, asset);
269
+ : await loadAssetFromUrl(url, asset, integrity);
100
270
  }
101
271
  function createTrackedResponse(asset) {
102
272
  return new Response(responseBuffer(asset.bytes), {
@@ -125,6 +295,9 @@ function installTrackedFetch() {
125
295
  open(method, url) {
126
296
  const resolvedUrl = trackedAssetUrl(url);
127
297
  if (!resolvedUrl || !isTrackedAssetUrl(resolvedUrl)) {
298
+ if (resolvedUrl && isDirectAssetScopeUrl(resolvedUrl)) {
299
+ throw new Error('Untracked runtime asset request');
300
+ }
128
301
  const nativeUrl = resolvedUrl || (url instanceof URL ? url.href : String(url));
129
302
  this.native = new NativeXMLHttpRequest();
130
303
  this.native.responseType = this.responseType;
@@ -222,16 +395,88 @@ function installRuntimeAssetInterceptors() {
222
395
  interceptorsInstalled = true;
223
396
  globalThis.fetch = (async (input, init) => {
224
397
  const resolvedUrl = trackedAssetUrl(input);
225
- if (!resolvedUrl || !isTrackedAssetUrl(resolvedUrl))
398
+ if (!resolvedUrl || !isTrackedAssetUrl(resolvedUrl)) {
399
+ if (resolvedUrl && isDirectAssetScopeUrl(resolvedUrl)) {
400
+ throw new Error('Untracked runtime asset request');
401
+ }
226
402
  return originalFetch(input, init);
227
- return createTrackedResponse(await loadTrackedAsset(resolvedUrl));
403
+ }
404
+ const requestIntegrity = init?.integrity ??
405
+ (typeof Request !== 'undefined' && input instanceof Request
406
+ ? input.integrity
407
+ : undefined);
408
+ return createTrackedResponse(await loadTrackedAsset(resolvedUrl, typeof requestIntegrity === 'string' ? requestIntegrity : undefined));
228
409
  });
229
410
  installTrackedFetch();
230
411
  }
231
412
  export function configureWorkerRuntimeAssets(config) {
413
+ if (config?.maxAssetBytes !== undefined &&
414
+ (!Number.isSafeInteger(config.maxAssetBytes) || config.maxAssetBytes <= 0)) {
415
+ throw new TypeError('Runtime asset maxAssetBytes must be a positive safe integer');
416
+ }
417
+ activeDirectAssetBaseUrl = null;
418
+ activeDirectAssetUrls = new Map();
232
419
  activeConfig = config;
233
420
  installRuntimeAssetInterceptors();
234
421
  }
422
+ export function configureWorkerRuntimeAssetAllowlist(allowlist) {
423
+ if (!activeConfig)
424
+ throw new Error('Runtime asset config unavailable');
425
+ if (activeConfig.useAssetBridge) {
426
+ throw new Error('Direct runtime asset allowlists require direct asset loading');
427
+ }
428
+ if (allowlist === null) {
429
+ activeDirectAssetBaseUrl = null;
430
+ activeDirectAssetUrls = new Map();
431
+ return;
432
+ }
433
+ if (!Array.isArray(allowlist.assets)) {
434
+ throw new TypeError('Direct runtime asset allowlist must be an array');
435
+ }
436
+ if (allowlist.assets.length > MAX_DIRECT_ASSET_ALLOWLIST_ENTRIES) {
437
+ throw new Error('Direct runtime asset allowlist has too many entries');
438
+ }
439
+ const runtimeAssets = allowlist.runtimeAssets ?? [];
440
+ if (!Array.isArray(runtimeAssets)) {
441
+ throw new TypeError('Direct core runtime asset allowlist must be an array');
442
+ }
443
+ if (runtimeAssets.length > MAX_DIRECT_RUNTIME_ASSET_ALLOWLIST_ENTRIES) {
444
+ throw new Error('Direct core runtime asset allowlist has too many entries');
445
+ }
446
+ let baseUrl;
447
+ try {
448
+ baseUrl = new URL(allowlist.baseUrl);
449
+ }
450
+ catch {
451
+ throw new Error(`Direct runtime asset base URL is invalid: ${allowlist.baseUrl}`);
452
+ }
453
+ if (baseUrl.protocol !== 'http:' && baseUrl.protocol !== 'https:') {
454
+ throw new Error(`Direct runtime asset base URL must use HTTP(S): ${allowlist.baseUrl}`);
455
+ }
456
+ if (baseUrl.username || baseUrl.password || baseUrl.hash || baseUrl.search) {
457
+ throw new Error(`Direct runtime asset base URL must not include credentials, a query, or a fragment: ${allowlist.baseUrl}`);
458
+ }
459
+ if (!baseUrl.pathname.endsWith('/'))
460
+ baseUrl.pathname += '/';
461
+ const addAssets = (urls, assets, rootUrl) => {
462
+ for (const asset of assets) {
463
+ if (typeof asset !== 'string' ||
464
+ asset.length > MAX_DIRECT_ASSET_NAME_LENGTH ||
465
+ !directAssetNamePattern.test(asset)) {
466
+ throw new Error(`Direct runtime asset name is unsafe: ${String(asset)}`);
467
+ }
468
+ urls.set(new URL(asset, rootUrl).href, asset);
469
+ }
470
+ };
471
+ const urls = new Map();
472
+ addAssets(urls, allowlist.assets, baseUrl);
473
+ const runtimeBaseUrl = configuredBaseUrl();
474
+ if (!runtimeBaseUrl)
475
+ throw new Error('Runtime asset config unavailable');
476
+ addAssets(urls, runtimeAssets, runtimeBaseUrl);
477
+ activeDirectAssetBaseUrl = baseUrl;
478
+ activeDirectAssetUrls = urls;
479
+ }
235
480
  export function handleWorkerAssetMessage(data) {
236
481
  const response = data?.assetResponse;
237
482
  if (!response)
@@ -253,5 +498,9 @@ export function handleWorkerAssetMessage(data) {
253
498
  export async function loadWorkerRuntimeAsset(asset) {
254
499
  if (!activeConfig)
255
500
  throw new Error('Runtime asset config unavailable');
256
- return await loadTrackedAsset(new URL(asset, activeConfig.baseUrl).href);
501
+ const assetUrl = trackedAssetUrl(asset);
502
+ if (!assetUrl || !isTrackedAssetUrl(assetUrl)) {
503
+ throw new Error('Untracked runtime asset request');
504
+ }
505
+ return await loadTrackedAsset(assetUrl);
257
506
  }