toiljs 0.0.3 → 0.0.5

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 (360) hide show
  1. package/.idea/prettier.xml +1 -0
  2. package/as-pect.config.js +1 -1
  3. package/build/backend/.tsbuildinfo +1 -1
  4. package/build/backend/index.js +1 -2
  5. package/build/cli/.tsbuildinfo +1 -1
  6. package/build/cli/configure.d.ts +15 -0
  7. package/build/cli/configure.js +201 -0
  8. package/build/cli/create.d.ts +4 -0
  9. package/build/cli/create.js +169 -56
  10. package/build/cli/features.d.ts +23 -0
  11. package/build/cli/features.js +85 -0
  12. package/build/cli/index.js +42 -2
  13. package/build/cli/proc.d.ts +1 -0
  14. package/build/cli/proc.js +11 -0
  15. package/build/cli/ui.js +1 -2
  16. package/build/cli/validate.d.ts +4 -0
  17. package/build/cli/validate.js +19 -0
  18. package/build/client/.tsbuildinfo +1 -1
  19. package/build/client/Link.d.ts +8 -0
  20. package/build/client/Link.js +44 -0
  21. package/build/client/NavLink.d.ts +14 -0
  22. package/build/client/NavLink.js +37 -0
  23. package/build/client/Router.d.ts +7 -0
  24. package/build/client/Router.js +55 -0
  25. package/build/client/error-boundary.d.ts +16 -0
  26. package/build/client/error-boundary.js +19 -0
  27. package/build/client/head.d.ts +26 -0
  28. package/build/client/head.js +87 -0
  29. package/build/client/hooks.d.ts +17 -0
  30. package/build/client/hooks.js +48 -0
  31. package/build/client/index.d.ts +14 -2
  32. package/build/client/index.js +8 -1
  33. package/build/client/lazy.d.ts +16 -0
  34. package/build/client/lazy.js +53 -0
  35. package/build/client/match.js +7 -0
  36. package/build/client/mount.d.ts +2 -0
  37. package/build/client/mount.js +13 -0
  38. package/build/client/navigation.d.ts +13 -0
  39. package/build/client/navigation.js +97 -0
  40. package/build/client/params-context.d.ts +2 -0
  41. package/build/client/params-context.js +2 -0
  42. package/build/client/prefetch.d.ts +11 -0
  43. package/build/client/prefetch.js +100 -0
  44. package/build/client/scroll.d.ts +8 -0
  45. package/build/client/scroll.js +36 -0
  46. package/build/client/types.d.ts +27 -0
  47. package/build/client/types.js +1 -0
  48. package/build/compiler/.tsbuildinfo +1 -1
  49. package/build/compiler/config.d.ts +2 -0
  50. package/build/compiler/config.js +4 -1
  51. package/build/compiler/docs.d.ts +10 -0
  52. package/build/compiler/docs.js +59 -0
  53. package/build/compiler/generate.d.ts +1 -0
  54. package/build/compiler/generate.js +139 -21
  55. package/build/compiler/index.d.ts +5 -2
  56. package/build/compiler/index.js +5 -3
  57. package/build/compiler/plugin.js +2 -1
  58. package/build/compiler/routes.js +5 -1
  59. package/build/compiler/vite.d.ts +1 -1
  60. package/build/compiler/vite.js +17 -1
  61. package/build/io/.tsbuildinfo +1 -1
  62. package/build/io/BinaryWriter.js +2 -2
  63. package/eslint.config.js +1 -1
  64. package/examples/basic/.toil/docs/cli.md +3 -0
  65. package/examples/basic/.toil/docs/client.md +3 -0
  66. package/examples/basic/.toil/docs/index.md +3 -0
  67. package/examples/basic/.toil/docs/routing.md +3 -0
  68. package/examples/basic/.toil/docs/server.md +3 -0
  69. package/examples/basic/.toil/docs/styling.md +3 -0
  70. package/examples/basic/.toil/entry.tsx +3 -8
  71. package/examples/basic/.toil/globals.ts +6 -0
  72. package/examples/basic/.toil/index.html +16 -12
  73. package/examples/basic/.toil/public/images/.gitkeep +1 -0
  74. package/examples/basic/.toil/public/images/logo.svg +37 -0
  75. package/examples/basic/.toil/public/robots.txt +2 -0
  76. package/examples/basic/.toil/routes.ts +9 -7
  77. package/examples/basic/build/client/assets/404-Bq0jNTUo.js +1 -0
  78. package/examples/basic/build/client/assets/_...slug_-CXKf6qnB.js +1 -0
  79. package/examples/basic/build/client/assets/_id_-BadAyQnb.js +1 -0
  80. package/examples/basic/build/client/assets/about-BOhoEcEO.js +1 -0
  81. package/examples/basic/build/client/assets/get-started-BIXpcjkT.js +9 -0
  82. package/examples/basic/build/client/assets/index-BmqcTaBB.js +1 -0
  83. package/examples/basic/build/client/assets/io-DEVjjaJj.js +1 -0
  84. package/examples/basic/build/client/assets/layout-DJegirdz.js +1 -0
  85. package/examples/basic/build/client/assets/react-DEQrz1q7.js +9 -0
  86. package/examples/basic/build/client/assets/rolldown-runtime-KL5VtC6j.js +1 -0
  87. package/examples/basic/build/client/assets/routes-BYWn6TxK.js +1 -0
  88. package/examples/basic/build/client/css/style.css +2 -0
  89. package/examples/basic/build/client/images/.gitkeep +1 -0
  90. package/examples/basic/build/client/images/logo.svg +37 -0
  91. package/examples/basic/build/client/index.html +17 -0
  92. package/examples/basic/build/client/robots.txt +2 -0
  93. package/examples/basic/client/404.tsx +2 -5
  94. package/examples/basic/client/components/.gitkeep +1 -0
  95. package/examples/basic/client/components/Footer.tsx +8 -0
  96. package/examples/basic/client/layout.tsx +39 -26
  97. package/examples/basic/client/public/images/.gitkeep +1 -0
  98. package/examples/basic/client/public/images/logo.svg +37 -0
  99. package/examples/basic/client/public/index.html +15 -0
  100. package/examples/basic/client/public/robots.txt +2 -0
  101. package/examples/basic/client/routes/about.tsx +1 -3
  102. package/examples/basic/client/routes/blog/[id].tsx +2 -4
  103. package/examples/basic/client/routes/docs/[...slug].tsx +3 -6
  104. package/examples/basic/client/routes/get-started.tsx +84 -0
  105. package/examples/basic/client/routes/index.tsx +74 -7
  106. package/examples/basic/client/routes/io.tsx +3 -7
  107. package/examples/basic/client/styles/main.css +461 -0
  108. package/examples/basic/client/toil.tsx +7 -0
  109. package/examples/basic/node_modules/.bin/toilinit +16 -0
  110. package/examples/basic/node_modules/.bin/toilinit.cmd +17 -0
  111. package/examples/basic/node_modules/.bin/toilinit.ps1 +28 -0
  112. package/examples/basic/node_modules/.bin/toilscript +16 -0
  113. package/examples/basic/node_modules/.bin/toilscript.cmd +17 -0
  114. package/examples/basic/node_modules/.bin/toilscript.ps1 +28 -0
  115. package/examples/basic/node_modules/.bin/wasm-as +16 -0
  116. package/examples/basic/node_modules/.bin/wasm-as.cmd +17 -0
  117. package/examples/basic/node_modules/.bin/wasm-as.ps1 +28 -0
  118. package/examples/basic/node_modules/.bin/wasm-ctor-eval +16 -0
  119. package/examples/basic/node_modules/.bin/wasm-ctor-eval.cmd +17 -0
  120. package/examples/basic/node_modules/.bin/wasm-ctor-eval.ps1 +28 -0
  121. package/examples/basic/node_modules/.bin/wasm-dis +16 -0
  122. package/examples/basic/node_modules/.bin/wasm-dis.cmd +17 -0
  123. package/examples/basic/node_modules/.bin/wasm-dis.ps1 +28 -0
  124. package/examples/basic/node_modules/.bin/wasm-merge +16 -0
  125. package/examples/basic/node_modules/.bin/wasm-merge.cmd +17 -0
  126. package/examples/basic/node_modules/.bin/wasm-merge.ps1 +28 -0
  127. package/examples/basic/node_modules/.bin/wasm-metadce +16 -0
  128. package/examples/basic/node_modules/.bin/wasm-metadce.cmd +17 -0
  129. package/examples/basic/node_modules/.bin/wasm-metadce.ps1 +28 -0
  130. package/examples/basic/node_modules/.bin/wasm-opt +16 -0
  131. package/examples/basic/node_modules/.bin/wasm-opt.cmd +17 -0
  132. package/examples/basic/node_modules/.bin/wasm-opt.ps1 +28 -0
  133. package/examples/basic/node_modules/.bin/wasm-reduce +16 -0
  134. package/examples/basic/node_modules/.bin/wasm-reduce.cmd +17 -0
  135. package/examples/basic/node_modules/.bin/wasm-reduce.ps1 +28 -0
  136. package/examples/basic/node_modules/.bin/wasm-shell +16 -0
  137. package/examples/basic/node_modules/.bin/wasm-shell.cmd +17 -0
  138. package/examples/basic/node_modules/.bin/wasm-shell.ps1 +28 -0
  139. package/examples/basic/node_modules/.bin/wasm2js +16 -0
  140. package/examples/basic/node_modules/.bin/wasm2js.cmd +17 -0
  141. package/examples/basic/node_modules/.bin/wasm2js.ps1 +28 -0
  142. package/examples/basic/node_modules/.package-lock.json +49 -1
  143. package/examples/basic/node_modules/.vite/deps/_metadata.json +9 -9
  144. package/examples/basic/node_modules/binaryen/LICENSE +201 -0
  145. package/examples/basic/node_modules/binaryen/README.md +1362 -0
  146. package/examples/basic/node_modules/binaryen/bin/package.json +3 -0
  147. package/examples/basic/node_modules/binaryen/bin/wasm-as +0 -0
  148. package/examples/basic/node_modules/binaryen/bin/wasm-ctor-eval +0 -0
  149. package/examples/basic/node_modules/binaryen/bin/wasm-dis +0 -0
  150. package/examples/basic/node_modules/binaryen/bin/wasm-merge +0 -0
  151. package/examples/basic/node_modules/binaryen/bin/wasm-metadce +0 -0
  152. package/examples/basic/node_modules/binaryen/bin/wasm-opt +0 -0
  153. package/examples/basic/node_modules/binaryen/bin/wasm-reduce +0 -0
  154. package/examples/basic/node_modules/binaryen/bin/wasm-shell +0 -0
  155. package/examples/basic/node_modules/binaryen/bin/wasm2js +0 -0
  156. package/examples/basic/node_modules/binaryen/index.d.ts +2371 -0
  157. package/examples/basic/node_modules/binaryen/index.js +30552 -0
  158. package/examples/basic/node_modules/binaryen/package.json +50 -0
  159. package/examples/basic/node_modules/long/LICENSE +202 -0
  160. package/examples/basic/node_modules/long/README.md +286 -0
  161. package/examples/basic/node_modules/long/index.d.ts +2 -0
  162. package/examples/basic/node_modules/long/index.js +1581 -0
  163. package/examples/basic/node_modules/long/package.json +58 -0
  164. package/examples/basic/node_modules/long/types.d.ts +474 -0
  165. package/examples/basic/node_modules/long/umd/index.d.ts +3 -0
  166. package/examples/basic/node_modules/long/umd/index.js +1622 -0
  167. package/examples/basic/node_modules/long/umd/package.json +3 -0
  168. package/examples/basic/node_modules/long/umd/types.d.ts +474 -0
  169. package/examples/basic/node_modules/toilscript/LICENSE +201 -0
  170. package/examples/basic/node_modules/toilscript/NOTICE +94 -0
  171. package/examples/basic/node_modules/toilscript/README.md +66 -0
  172. package/examples/basic/node_modules/toilscript/bin/toilinit.js +468 -0
  173. package/examples/basic/node_modules/toilscript/bin/toilscript.js +35 -0
  174. package/examples/basic/node_modules/toilscript/dist/cli.d.ts +4 -0
  175. package/examples/basic/node_modules/toilscript/dist/cli.generated.d.ts +10027 -0
  176. package/examples/basic/node_modules/toilscript/dist/cli.js +24474 -0
  177. package/examples/basic/node_modules/toilscript/dist/cli.js.map +7 -0
  178. package/examples/basic/node_modules/toilscript/dist/importmap.json +9 -0
  179. package/examples/basic/node_modules/toilscript/dist/toilscript.d.ts +4 -0
  180. package/examples/basic/node_modules/toilscript/dist/toilscript.generated.d.ts +11242 -0
  181. package/examples/basic/node_modules/toilscript/dist/toilscript.js +337 -0
  182. package/examples/basic/node_modules/toilscript/dist/toilscript.js.map +7 -0
  183. package/examples/basic/node_modules/toilscript/dist/transform.cjs +1 -0
  184. package/examples/basic/node_modules/toilscript/dist/transform.d.ts +1 -0
  185. package/examples/basic/node_modules/toilscript/dist/transform.js +1 -0
  186. package/examples/basic/node_modules/toilscript/dist/web.js +22 -0
  187. package/examples/basic/node_modules/toilscript/lib/binaryen.d.ts +2 -0
  188. package/examples/basic/node_modules/toilscript/lib/binaryen.js +2 -0
  189. package/examples/basic/node_modules/toilscript/package.json +115 -0
  190. package/examples/basic/node_modules/toilscript/std/README.md +6 -0
  191. package/examples/basic/node_modules/toilscript/std/assembly/array.ts +550 -0
  192. package/examples/basic/node_modules/toilscript/std/assembly/arraybuffer.ts +77 -0
  193. package/examples/basic/node_modules/toilscript/std/assembly/atomics.ts +127 -0
  194. package/examples/basic/node_modules/toilscript/std/assembly/bindings/asyncify.ts +16 -0
  195. package/examples/basic/node_modules/toilscript/std/assembly/bindings/dom.ts +291 -0
  196. package/examples/basic/node_modules/toilscript/std/assembly/bindings/node.ts +6 -0
  197. package/examples/basic/node_modules/toilscript/std/assembly/bitflags.ts +53 -0
  198. package/examples/basic/node_modules/toilscript/std/assembly/builtins.ts +2650 -0
  199. package/examples/basic/node_modules/toilscript/std/assembly/byteslice.ts +177 -0
  200. package/examples/basic/node_modules/toilscript/std/assembly/compat.ts +2 -0
  201. package/examples/basic/node_modules/toilscript/std/assembly/console.ts +42 -0
  202. package/examples/basic/node_modules/toilscript/std/assembly/crypto.ts +9 -0
  203. package/examples/basic/node_modules/toilscript/std/assembly/dataview.ts +181 -0
  204. package/examples/basic/node_modules/toilscript/std/assembly/date.ts +375 -0
  205. package/examples/basic/node_modules/toilscript/std/assembly/diagnostics.ts +11 -0
  206. package/examples/basic/node_modules/toilscript/std/assembly/encoding.ts +151 -0
  207. package/examples/basic/node_modules/toilscript/std/assembly/endian.ts +45 -0
  208. package/examples/basic/node_modules/toilscript/std/assembly/error.ts +44 -0
  209. package/examples/basic/node_modules/toilscript/std/assembly/fixedarray.ts +173 -0
  210. package/examples/basic/node_modules/toilscript/std/assembly/fixedmap.ts +326 -0
  211. package/examples/basic/node_modules/toilscript/std/assembly/fixedset.ts +275 -0
  212. package/examples/basic/node_modules/toilscript/std/assembly/function.ts +42 -0
  213. package/examples/basic/node_modules/toilscript/std/assembly/index.d.ts +2892 -0
  214. package/examples/basic/node_modules/toilscript/std/assembly/iterator.ts +35 -0
  215. package/examples/basic/node_modules/toilscript/std/assembly/map.ts +269 -0
  216. package/examples/basic/node_modules/toilscript/std/assembly/math.ts +3289 -0
  217. package/examples/basic/node_modules/toilscript/std/assembly/memory.ts +123 -0
  218. package/examples/basic/node_modules/toilscript/std/assembly/number.ts +388 -0
  219. package/examples/basic/node_modules/toilscript/std/assembly/object.ts +36 -0
  220. package/examples/basic/node_modules/toilscript/std/assembly/performance.ts +9 -0
  221. package/examples/basic/node_modules/toilscript/std/assembly/pointer.ts +80 -0
  222. package/examples/basic/node_modules/toilscript/std/assembly/polyfills.ts +27 -0
  223. package/examples/basic/node_modules/toilscript/std/assembly/process.ts +50 -0
  224. package/examples/basic/node_modules/toilscript/std/assembly/reference.ts +48 -0
  225. package/examples/basic/node_modules/toilscript/std/assembly/regexp.ts +12 -0
  226. package/examples/basic/node_modules/toilscript/std/assembly/rt/README.md +83 -0
  227. package/examples/basic/node_modules/toilscript/std/assembly/rt/common.ts +81 -0
  228. package/examples/basic/node_modules/toilscript/std/assembly/rt/index-incremental.ts +2 -0
  229. package/examples/basic/node_modules/toilscript/std/assembly/rt/index-memory.ts +1 -0
  230. package/examples/basic/node_modules/toilscript/std/assembly/rt/index-minimal.ts +2 -0
  231. package/examples/basic/node_modules/toilscript/std/assembly/rt/index-stub.ts +1 -0
  232. package/examples/basic/node_modules/toilscript/std/assembly/rt/index.d.ts +37 -0
  233. package/examples/basic/node_modules/toilscript/std/assembly/rt/itcms.ts +419 -0
  234. package/examples/basic/node_modules/toilscript/std/assembly/rt/memory-runtime.ts +94 -0
  235. package/examples/basic/node_modules/toilscript/std/assembly/rt/rtrace.ts +15 -0
  236. package/examples/basic/node_modules/toilscript/std/assembly/rt/stub.ts +133 -0
  237. package/examples/basic/node_modules/toilscript/std/assembly/rt/tcms.ts +254 -0
  238. package/examples/basic/node_modules/toilscript/std/assembly/rt/tlsf.ts +592 -0
  239. package/examples/basic/node_modules/toilscript/std/assembly/rt.ts +90 -0
  240. package/examples/basic/node_modules/toilscript/std/assembly/set.ts +225 -0
  241. package/examples/basic/node_modules/toilscript/std/assembly/shared/feature.ts +68 -0
  242. package/examples/basic/node_modules/toilscript/std/assembly/shared/runtime.ts +13 -0
  243. package/examples/basic/node_modules/toilscript/std/assembly/shared/target.ts +11 -0
  244. package/examples/basic/node_modules/toilscript/std/assembly/shared/tsconfig.json +11 -0
  245. package/examples/basic/node_modules/toilscript/std/assembly/shared/typeinfo.ts +72 -0
  246. package/examples/basic/node_modules/toilscript/std/assembly/staticarray.ts +423 -0
  247. package/examples/basic/node_modules/toilscript/std/assembly/string.ts +850 -0
  248. package/examples/basic/node_modules/toilscript/std/assembly/symbol.ts +114 -0
  249. package/examples/basic/node_modules/toilscript/std/assembly/table.ts +16 -0
  250. package/examples/basic/node_modules/toilscript/std/assembly/toilscript.ts +16 -0
  251. package/examples/basic/node_modules/toilscript/std/assembly/tsconfig.json +6 -0
  252. package/examples/basic/node_modules/toilscript/std/assembly/typedarray.ts +1954 -0
  253. package/examples/basic/node_modules/toilscript/std/assembly/uri.ts +17 -0
  254. package/examples/basic/node_modules/toilscript/std/assembly/util/bytes.ts +107 -0
  255. package/examples/basic/node_modules/toilscript/std/assembly/util/casemap.ts +497 -0
  256. package/examples/basic/node_modules/toilscript/std/assembly/util/error.ts +58 -0
  257. package/examples/basic/node_modules/toilscript/std/assembly/util/hash.ts +117 -0
  258. package/examples/basic/node_modules/toilscript/std/assembly/util/math.ts +1922 -0
  259. package/examples/basic/node_modules/toilscript/std/assembly/util/memory.ts +290 -0
  260. package/examples/basic/node_modules/toilscript/std/assembly/util/number.ts +873 -0
  261. package/examples/basic/node_modules/toilscript/std/assembly/util/sort.ts +313 -0
  262. package/examples/basic/node_modules/toilscript/std/assembly/util/string.ts +1202 -0
  263. package/examples/basic/node_modules/toilscript/std/assembly/util/uri.ts +275 -0
  264. package/examples/basic/node_modules/toilscript/std/assembly/vector.ts +4 -0
  265. package/examples/basic/node_modules/toilscript/std/assembly.json +16 -0
  266. package/examples/basic/node_modules/toilscript/std/portable/index.d.ts +461 -0
  267. package/examples/basic/node_modules/toilscript/std/portable/index.js +416 -0
  268. package/examples/basic/node_modules/toilscript/std/portable.json +11 -0
  269. package/examples/basic/node_modules/toilscript/std/types/assembly/index.d.ts +1 -0
  270. package/examples/basic/node_modules/toilscript/std/types/assembly/package.json +3 -0
  271. package/examples/basic/node_modules/toilscript/std/types/portable/index.d.ts +1 -0
  272. package/examples/basic/node_modules/toilscript/std/types/portable/package.json +3 -0
  273. package/examples/basic/node_modules/toilscript/tsconfig-base.json +13 -0
  274. package/examples/basic/node_modules/toilscript/util/README.md +23 -0
  275. package/examples/basic/node_modules/toilscript/util/browser/fs.js +1 -0
  276. package/examples/basic/node_modules/toilscript/util/browser/module.js +5 -0
  277. package/examples/basic/node_modules/toilscript/util/browser/path.js +520 -0
  278. package/examples/basic/node_modules/toilscript/util/browser/process.js +59 -0
  279. package/examples/basic/node_modules/toilscript/util/browser/url.js +23 -0
  280. package/examples/basic/node_modules/toilscript/util/cpu.d.ts +9 -0
  281. package/examples/basic/node_modules/toilscript/util/cpu.js +42 -0
  282. package/examples/basic/node_modules/toilscript/util/find.d.ts +6 -0
  283. package/examples/basic/node_modules/toilscript/util/find.js +20 -0
  284. package/examples/basic/node_modules/toilscript/util/node.d.ts +21 -0
  285. package/examples/basic/node_modules/toilscript/util/node.js +34 -0
  286. package/examples/basic/node_modules/toilscript/util/options.d.ts +70 -0
  287. package/examples/basic/node_modules/toilscript/util/options.js +262 -0
  288. package/examples/basic/node_modules/toilscript/util/terminal.d.ts +52 -0
  289. package/examples/basic/node_modules/toilscript/util/terminal.js +35 -0
  290. package/examples/basic/node_modules/toilscript/util/text.d.ts +26 -0
  291. package/examples/basic/node_modules/toilscript/util/text.js +114 -0
  292. package/examples/basic/node_modules/toilscript/util/tsconfig.json +9 -0
  293. package/examples/basic/node_modules/toilscript/util/web.d.ts +11 -0
  294. package/examples/basic/node_modules/toilscript/util/web.js +33 -0
  295. package/examples/basic/package-lock.json +50 -1
  296. package/examples/basic/package.json +5 -2
  297. package/examples/basic/server/index.ts +3 -0
  298. package/examples/basic/server/main.ts +6 -0
  299. package/examples/basic/server/tsconfig.json +7 -0
  300. package/examples/basic/toil-env.d.ts +20 -1
  301. package/examples/basic/toil.config.ts +2 -5
  302. package/examples/basic/toilconfig.json +30 -0
  303. package/package.json +1 -1
  304. package/presets/eslint.js +2 -7
  305. package/presets/no-uint8array-tostring.js +4 -5
  306. package/presets/prettier.json +8 -1
  307. package/src/backend/index.ts +11 -18
  308. package/src/cli/configure.ts +272 -0
  309. package/src/cli/create.ts +228 -67
  310. package/src/cli/features.ts +128 -0
  311. package/src/cli/index.ts +44 -3
  312. package/src/cli/proc.ts +20 -0
  313. package/src/cli/ui.ts +4 -6
  314. package/src/cli/validate.ts +31 -0
  315. package/src/client/Link.tsx +99 -0
  316. package/src/client/NavLink.tsx +86 -0
  317. package/src/client/Router.tsx +95 -0
  318. package/src/client/error-boundary.tsx +43 -0
  319. package/src/client/head.ts +140 -0
  320. package/src/client/hooks.ts +115 -0
  321. package/src/client/index.ts +35 -5
  322. package/src/client/lazy.ts +93 -0
  323. package/src/client/match.ts +11 -3
  324. package/src/client/mount.tsx +28 -0
  325. package/src/client/navigation.ts +142 -0
  326. package/src/client/params-context.ts +10 -0
  327. package/src/client/prefetch.ts +130 -0
  328. package/src/client/scroll.ts +53 -0
  329. package/src/client/types.ts +36 -0
  330. package/src/compiler/config.ts +15 -8
  331. package/src/compiler/docs.ts +87 -0
  332. package/src/compiler/generate.ts +180 -33
  333. package/src/compiler/index.ts +7 -4
  334. package/src/compiler/plugin.ts +3 -1
  335. package/src/compiler/routes.ts +13 -7
  336. package/src/compiler/vite.ts +28 -5
  337. package/src/io/BinaryReader.ts +1 -5
  338. package/src/io/BinaryWriter.ts +3 -3
  339. package/src/server/index.ts +3 -4
  340. package/src/server/tsconfig.json +4 -0
  341. package/test/configure.test.ts +90 -0
  342. package/test/features.test.ts +111 -0
  343. package/test/head.test.ts +35 -0
  344. package/test/io.test.ts +8 -0
  345. package/test/navlink.test.ts +28 -0
  346. package/test/routes.test.ts +15 -0
  347. package/test/validate.test.ts +42 -0
  348. package/vitest.config.ts +1 -1
  349. package/examples/basic/dist/assets/404-D1bS2aH_.js +0 -1
  350. package/examples/basic/dist/assets/_...slug_-wR3shlWn.js +0 -1
  351. package/examples/basic/dist/assets/_id_-EWYvHfi2.js +0 -1
  352. package/examples/basic/dist/assets/about-Ddvj1tjF.js +0 -1
  353. package/examples/basic/dist/assets/index-CdG0me90.js +0 -1
  354. package/examples/basic/dist/assets/io-CODNJU57.js +0 -1
  355. package/examples/basic/dist/assets/layout-C15ZTPYI.js +0 -1
  356. package/examples/basic/dist/assets/react-JbAfoxYe.js +0 -9
  357. package/examples/basic/dist/assets/rolldown-runtime-1VNLd2iN.js +0 -1
  358. package/examples/basic/dist/assets/routes-GoydenoY.js +0 -1
  359. package/examples/basic/dist/index.html +0 -12
  360. package/src/client/runtime.tsx +0 -190
@@ -0,0 +1,177 @@
1
+ /// <reference path="./rt/index.d.ts" />
2
+
3
+ import { Pointer } from "./pointer";
4
+ import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";
5
+
6
+ // Zero-alloc memory view: pointer + length with bounds-checked endian-aware reads/writes.
7
+ // Unlike DataView, does not own an ArrayBuffer — the viewed memory is unowned/raw.
8
+
9
+ @final
10
+ export class ByteSlice {
11
+ readonly ptr: usize;
12
+ readonly length: i32;
13
+
14
+ constructor(ptr: usize, length: i32) {
15
+ if (length < 0) throw new RangeError(E_INVALIDLENGTH);
16
+ this.ptr = ptr;
17
+ this.length = length;
18
+ }
19
+
20
+ // --- Unsigned reads ---
21
+
22
+ @inline getU8(offset: i32): u8 {
23
+ if (<u32>offset >= <u32>this.length) throw new RangeError(E_INDEXOUTOFRANGE);
24
+ return load<u8>(this.ptr + <usize>offset);
25
+ }
26
+
27
+ @inline getU16(offset: i32, be: bool = true): u16 {
28
+ if ((offset >>> 31) | i32(offset + 2 > this.length)) throw new RangeError(E_INDEXOUTOFRANGE);
29
+ let v = load<u16>(this.ptr + <usize>offset);
30
+ return be ? bswap<u16>(v) : v;
31
+ }
32
+
33
+ @inline getU32(offset: i32, be: bool = true): u32 {
34
+ if ((offset >>> 31) | i32(offset + 4 > this.length)) throw new RangeError(E_INDEXOUTOFRANGE);
35
+ let v = load<u32>(this.ptr + <usize>offset);
36
+ return be ? bswap<u32>(v) : v;
37
+ }
38
+
39
+ @inline getU64(offset: i32, be: bool = true): u64 {
40
+ if ((offset >>> 31) | i32(offset + 8 > this.length)) throw new RangeError(E_INDEXOUTOFRANGE);
41
+ let v = load<u64>(this.ptr + <usize>offset);
42
+ return be ? bswap<u64>(v) : v;
43
+ }
44
+
45
+ // --- Signed reads ---
46
+
47
+ @inline getI8(offset: i32): i8 {
48
+ if (<u32>offset >= <u32>this.length) throw new RangeError(E_INDEXOUTOFRANGE);
49
+ return load<i8>(this.ptr + <usize>offset);
50
+ }
51
+
52
+ @inline getI16(offset: i32, be: bool = true): i16 {
53
+ if ((offset >>> 31) | i32(offset + 2 > this.length)) throw new RangeError(E_INDEXOUTOFRANGE);
54
+ let v = load<i16>(this.ptr + <usize>offset);
55
+ return be ? <i16>bswap<u16>(<u16>v) : v;
56
+ }
57
+
58
+ @inline getI32(offset: i32, be: bool = true): i32 {
59
+ if ((offset >>> 31) | i32(offset + 4 > this.length)) throw new RangeError(E_INDEXOUTOFRANGE);
60
+ let v = load<i32>(this.ptr + <usize>offset);
61
+ return be ? <i32>bswap<u32>(<u32>v) : v;
62
+ }
63
+
64
+ @inline getI64(offset: i32, be: bool = true): i64 {
65
+ if ((offset >>> 31) | i32(offset + 8 > this.length)) throw new RangeError(E_INDEXOUTOFRANGE);
66
+ let v = load<i64>(this.ptr + <usize>offset);
67
+ return be ? <i64>bswap<u64>(<u64>v) : v;
68
+ }
69
+
70
+ // --- Unsigned writes ---
71
+
72
+ @inline setU8(offset: i32, value: u8): void {
73
+ if (<u32>offset >= <u32>this.length) throw new RangeError(E_INDEXOUTOFRANGE);
74
+ store<u8>(this.ptr + <usize>offset, value);
75
+ }
76
+
77
+ @inline setU16(offset: i32, value: u16, be: bool = true): void {
78
+ if ((offset >>> 31) | i32(offset + 2 > this.length)) throw new RangeError(E_INDEXOUTOFRANGE);
79
+ store<u16>(this.ptr + <usize>offset, be ? bswap<u16>(value) : value);
80
+ }
81
+
82
+ @inline setU32(offset: i32, value: u32, be: bool = true): void {
83
+ if ((offset >>> 31) | i32(offset + 4 > this.length)) throw new RangeError(E_INDEXOUTOFRANGE);
84
+ store<u32>(this.ptr + <usize>offset, be ? bswap<u32>(value) : value);
85
+ }
86
+
87
+ @inline setU64(offset: i32, value: u64, be: bool = true): void {
88
+ if ((offset >>> 31) | i32(offset + 8 > this.length)) throw new RangeError(E_INDEXOUTOFRANGE);
89
+ store<u64>(this.ptr + <usize>offset, be ? bswap<u64>(value) : value);
90
+ }
91
+
92
+ // --- Signed writes ---
93
+
94
+ @inline setI8(offset: i32, value: i8): void {
95
+ if (<u32>offset >= <u32>this.length) throw new RangeError(E_INDEXOUTOFRANGE);
96
+ store<i8>(this.ptr + <usize>offset, value);
97
+ }
98
+
99
+ @inline setI16(offset: i32, value: i16, be: bool = true): void {
100
+ if ((offset >>> 31) | i32(offset + 2 > this.length)) throw new RangeError(E_INDEXOUTOFRANGE);
101
+ store<i16>(this.ptr + <usize>offset, be ? <i16>bswap<u16>(<u16>value) : value);
102
+ }
103
+
104
+ @inline setI32(offset: i32, value: i32, be: bool = true): void {
105
+ if ((offset >>> 31) | i32(offset + 4 > this.length)) throw new RangeError(E_INDEXOUTOFRANGE);
106
+ store<i32>(this.ptr + <usize>offset, be ? <i32>bswap<u32>(<u32>value) : value);
107
+ }
108
+
109
+ @inline setI64(offset: i32, value: i64, be: bool = true): void {
110
+ if ((offset >>> 31) | i32(offset + 8 > this.length)) throw new RangeError(E_INDEXOUTOFRANGE);
111
+ store<i64>(this.ptr + <usize>offset, be ? <i64>bswap<u64>(<u64>value) : value);
112
+ }
113
+
114
+ // --- Byte indexing operators ---
115
+
116
+ @operator("[]") private __get(index: i32): u8 {
117
+ if (<u32>index >= <u32>this.length) throw new RangeError(E_INDEXOUTOFRANGE);
118
+ return load<u8>(this.ptr + <usize>index);
119
+ }
120
+
121
+ @operator("[]=") private __set(index: i32, value: u8): void {
122
+ if (<u32>index >= <u32>this.length) throw new RangeError(E_INDEXOUTOFRANGE);
123
+ store<u8>(this.ptr + <usize>index, value);
124
+ }
125
+
126
+ // --- Bulk operations ---
127
+
128
+ slice(start: i32, end: i32 = this.length): ByteSlice {
129
+ let len = this.length;
130
+ if (start < 0) start = max(len + start, 0);
131
+ if (end < 0) end = max(len + end, 0);
132
+ start = min(start, len);
133
+ end = min(end, len);
134
+ let newLen = max(end - start, 0);
135
+ return new ByteSlice(this.ptr + <usize>start, newLen);
136
+ }
137
+
138
+ copyTo(dst: ByteSlice, dstOff: i32 = 0, srcOff: i32 = 0, count: i32 = this.length - srcOff): void {
139
+ if (
140
+ (count >>> 31) |
141
+ (srcOff >>> 31) | i32(srcOff + count > this.length) |
142
+ (dstOff >>> 31) | i32(dstOff + count > dst.length)
143
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
144
+ memory.copy(dst.ptr + <usize>dstOff, this.ptr + <usize>srcOff, <usize>count);
145
+ }
146
+
147
+ fill(value: u8, start: i32 = 0, end: i32 = this.length): void {
148
+ let len = this.length;
149
+ if (start < 0) start = max(len + start, 0);
150
+ if (end < 0) end = max(len + end, 0);
151
+ start = min(start, len);
152
+ end = min(end, len);
153
+ if (start < end) {
154
+ memory.fill(this.ptr + <usize>start, value, <usize>(end - start));
155
+ }
156
+ }
157
+
158
+ equals(other: ByteSlice): bool {
159
+ if (this.length != other.length) return false;
160
+ if (this.length == 0) return true;
161
+ return memory.compare(this.ptr, other.ptr, <usize>this.length) == 0;
162
+ }
163
+
164
+ toPointer<T>(): Pointer<T> {
165
+ return new Pointer<T>(this.ptr);
166
+ }
167
+
168
+ toString(): string {
169
+ return "[object ByteSlice]";
170
+ }
171
+
172
+ // RT integration — ptr is raw usize, not managed
173
+
174
+ @unsafe private __visit(_cookie: u32): void {
175
+ // no-op: ptr is raw, not a managed reference
176
+ }
177
+ }
@@ -0,0 +1,2 @@
1
+ export type ReturnType<T> = returnof<T>;
2
+ export type NonNullable<T> = nonnull<T>;
@@ -0,0 +1,42 @@
1
+ import {
2
+ console as binding
3
+ } from "./bindings/dom";
4
+
5
+ export namespace console {
6
+
7
+ export function assert<T>(condition: T, message: string = ""): void {
8
+ binding.assert(!!condition, message);
9
+ }
10
+
11
+ export function log(message: string = ""): void {
12
+ binding.log(message);
13
+ }
14
+
15
+ export function debug(message: string = ""): void {
16
+ binding.debug(message);
17
+ }
18
+
19
+ export function info(message: string = ""): void {
20
+ binding.info(message);
21
+ }
22
+
23
+ export function warn(message: string = ""): void {
24
+ binding.warn(message);
25
+ }
26
+
27
+ export function error(message: string = ""): void {
28
+ binding.error(message);
29
+ }
30
+
31
+ export function time(label: string = "default"): void {
32
+ binding.time(label);
33
+ }
34
+
35
+ export function timeLog(label: string = "default"): void {
36
+ binding.timeLog(label);
37
+ }
38
+
39
+ export function timeEnd(label: string = "default"): void {
40
+ binding.timeEnd(label);
41
+ }
42
+ }
@@ -0,0 +1,9 @@
1
+ import {
2
+ crypto as crypto_binding
3
+ } from "bindings/dom";
4
+
5
+ export namespace crypto {
6
+ export function getRandomValues(array: Uint8Array): void {
7
+ crypto_binding.getRandomValues(array);
8
+ }
9
+ }
@@ -0,0 +1,181 @@
1
+ import { BLOCK_MAXSIZE } from "./rt/common";
2
+ import { ArrayBuffer } from "./arraybuffer";
3
+ import { E_INDEXOUTOFRANGE, E_INVALIDLENGTH } from "./util/error";
4
+
5
+ // TODO: there is probably a smarter way to check byteOffset for accesses larger than 1 byte
6
+
7
+ export class DataView {
8
+
9
+ readonly buffer: ArrayBuffer;
10
+ @unsafe readonly dataStart: usize;
11
+ readonly byteLength: i32;
12
+
13
+ get byteOffset(): i32 {
14
+ return <i32>(this.dataStart - changetype<usize>(this.buffer));
15
+ }
16
+
17
+ constructor(
18
+ buffer: ArrayBuffer,
19
+ byteOffset: i32 = 0,
20
+ byteLength: i32 = buffer.byteLength
21
+ ) {
22
+ if (
23
+ i32(<u32>byteLength > <u32>BLOCK_MAXSIZE) |
24
+ i32(<u32>byteOffset + byteLength > <u32>buffer.byteLength)
25
+ ) throw new RangeError(E_INVALIDLENGTH);
26
+ this.buffer = buffer; // links
27
+ let dataStart = changetype<usize>(buffer) + <usize>byteOffset;
28
+ this.dataStart = dataStart;
29
+ this.byteLength = byteLength;
30
+ }
31
+
32
+ getFloat32(byteOffset: i32, littleEndian: bool = false): f32 {
33
+ if (
34
+ (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
35
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
36
+ return littleEndian
37
+ ? load<f32>(this.dataStart + <usize>byteOffset)
38
+ : reinterpret<f32>(bswap<u32>(load<u32>(this.dataStart + <usize>byteOffset)));
39
+ }
40
+
41
+ getFloat64(byteOffset: i32, littleEndian: bool = false): f64 {
42
+ if (
43
+ (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
44
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
45
+ return littleEndian
46
+ ? load<f64>(this.dataStart + <usize>byteOffset)
47
+ : reinterpret<f64>(bswap<u64>(load<u64>(this.dataStart + <usize>byteOffset)));
48
+ }
49
+
50
+ getInt8(byteOffset: i32): i8 {
51
+ if (<u32>byteOffset >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
52
+ return load<i8>(this.dataStart + <usize>byteOffset);
53
+ }
54
+
55
+ getInt16(byteOffset: i32, littleEndian: bool = false): i16 {
56
+ if (
57
+ (byteOffset >>> 31) | i32(byteOffset + 2 > this.byteLength)
58
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
59
+ let result: i16 = load<i16>(this.dataStart + <usize>byteOffset);
60
+ return littleEndian ? result : bswap<u16>(result);
61
+ }
62
+
63
+ getInt32(byteOffset: i32, littleEndian: bool = false): i32 {
64
+ if (
65
+ (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
66
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
67
+ let result: i32 = load<i32>(this.dataStart + <usize>byteOffset);
68
+ return littleEndian ? result : bswap<u32>(result);
69
+ }
70
+
71
+ getUint8(byteOffset: i32): u8 {
72
+ if (<u32>byteOffset >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
73
+ return load<u8>(this.dataStart + <usize>byteOffset);
74
+ }
75
+
76
+ getUint16(byteOffset: i32, littleEndian: bool = false): u16 {
77
+ if (
78
+ (byteOffset >>> 31) | i32(byteOffset + 2 > this.byteLength)
79
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
80
+ let result: u16 = load<u16>(this.dataStart + <usize>byteOffset);
81
+ return littleEndian ? result : bswap<u16>(result);
82
+ }
83
+
84
+ getUint32(byteOffset: i32, littleEndian: bool = false): u32 {
85
+ if (
86
+ (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
87
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
88
+ let result: u32 = load<u32>(this.dataStart + <usize>byteOffset);
89
+ return littleEndian ? result : bswap<u32>(result);
90
+ }
91
+
92
+ setFloat32(byteOffset: i32, value: f32, littleEndian: bool = false): void {
93
+ if (
94
+ (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
95
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
96
+ if (littleEndian) store<f32>(this.dataStart + <usize>byteOffset, value);
97
+ else store<u32>(this.dataStart + <usize>byteOffset, bswap<u32>(reinterpret<u32>(value)));
98
+ }
99
+
100
+ setFloat64(byteOffset: i32, value: f64, littleEndian: bool = false): void {
101
+ if (
102
+ (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
103
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
104
+ if (littleEndian) store<f64>(this.dataStart + <usize>byteOffset, value);
105
+ else store<u64>(this.dataStart + <usize>byteOffset, bswap<u64>(reinterpret<u64>(value)));
106
+ }
107
+
108
+ setInt8(byteOffset: i32, value: i8): void {
109
+ if (<u32>byteOffset >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
110
+ store<i8>(this.dataStart + <usize>byteOffset, value);
111
+ }
112
+
113
+ setInt16(byteOffset: i32, value: i16, littleEndian: bool = false): void {
114
+ if (
115
+ (byteOffset >>> 31) | i32(byteOffset + 2 > this.byteLength)
116
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
117
+ store<i16>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u16>(value));
118
+ }
119
+
120
+ setInt32(byteOffset: i32, value: i32, littleEndian: bool = false): void {
121
+ if (
122
+ (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
123
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
124
+ store<i32>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u32>(value));
125
+ }
126
+
127
+ setUint8(byteOffset: i32, value: u8): void {
128
+ if (<u32>byteOffset >= <u32>this.byteLength) throw new RangeError(E_INDEXOUTOFRANGE);
129
+ store<u8>(this.dataStart + <usize>byteOffset, value);
130
+ }
131
+
132
+ setUint16(byteOffset: i32, value: u16, littleEndian: bool = false): void {
133
+ if (
134
+ (byteOffset >>> 31) | i32(byteOffset + 2 > this.byteLength)
135
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
136
+ store<u16>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u16>(value));
137
+ }
138
+
139
+ setUint32(byteOffset: i32, value: u32, littleEndian: bool = false): void {
140
+ if (
141
+ (byteOffset >>> 31) | i32(byteOffset + 4 > this.byteLength)
142
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
143
+ store<u32>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u32>(value));
144
+ }
145
+
146
+ // Non-standard additions that make sense in WebAssembly, but won't work in JS:
147
+
148
+ getInt64(byteOffset: i32, littleEndian: bool = false): i64 {
149
+ if (
150
+ (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
151
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
152
+ let result: i64 = load<i64>(this.dataStart + <usize>byteOffset);
153
+ return littleEndian ? result : bswap<u64>(result);
154
+ }
155
+
156
+ getUint64(byteOffset: i32, littleEndian: bool = false): u64 {
157
+ if (
158
+ (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
159
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
160
+ let result = load<u64>(this.dataStart + <usize>byteOffset);
161
+ return littleEndian ? result : bswap<u64>(result);
162
+ }
163
+
164
+ setInt64(byteOffset: i32, value: i64, littleEndian: bool = false): void {
165
+ if (
166
+ (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
167
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
168
+ store<i64>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u64>(value));
169
+ }
170
+
171
+ setUint64(byteOffset: i32, value: u64, littleEndian: bool = false): void {
172
+ if (
173
+ (byteOffset >>> 31) | i32(byteOffset + 8 > this.byteLength)
174
+ ) throw new RangeError(E_INDEXOUTOFRANGE);
175
+ store<u64>(this.dataStart + <usize>byteOffset, littleEndian ? value : bswap<u64>(value));
176
+ }
177
+
178
+ toString(): string {
179
+ return "[object DataView]";
180
+ }
181
+ }