create-jen-app 1.2.1 → 1.2.3

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 (589) hide show
  1. package/README.md +3 -1
  2. package/dist/index.js +1 -6
  3. package/package.json +2 -2
  4. package/templates/static/.esbuild/jen.config.js +18 -0
  5. package/templates/static/README.md +63 -67
  6. package/templates/static/build.js +4 -6
  7. package/templates/static/jen.config.ts +3 -5
  8. package/templates/static/jenjs.d.ts +3 -3
  9. package/templates/static/lib/api/(hello).d.ts +5 -5
  10. package/templates/static/lib/api/(hello).js +7 -7
  11. package/templates/static/lib/auth/cookie-utils.d.ts +20 -11
  12. package/templates/static/lib/auth/cookie-utils.js +66 -69
  13. package/templates/static/lib/auth/jwt.d.ts +28 -0
  14. package/templates/static/lib/auth/jwt.js +50 -6
  15. package/templates/static/lib/auth/session.d.ts +34 -34
  16. package/templates/static/lib/auth/session.js +79 -81
  17. package/templates/static/lib/build/asset-hashing.js +4 -4
  18. package/templates/static/lib/build/asset-manifest.js +4 -4
  19. package/templates/static/lib/build/build.d.ts +20 -0
  20. package/templates/static/lib/build/build.js +43 -6
  21. package/templates/static/lib/build/island-hydration.js +2 -2
  22. package/templates/static/lib/build/minifier.js +12 -12
  23. package/templates/static/lib/build/page-renderer.d.ts +2 -2
  24. package/templates/static/lib/build/page-renderer.js +3 -3
  25. package/templates/static/lib/build/production-build.d.ts +1 -1
  26. package/templates/static/lib/build/production-build.js +4 -4
  27. package/templates/static/lib/build/ssg-pipeline.d.ts +1 -1
  28. package/templates/static/lib/build/ssg-pipeline.js +19 -19
  29. package/templates/static/lib/build-tools/build-site.d.ts +3 -3
  30. package/templates/static/lib/build-tools/build-site.js +27 -30
  31. package/templates/static/lib/cache/index.d.ts +8 -0
  32. package/templates/static/lib/cache/index.js +8 -0
  33. package/templates/static/lib/cache/memory.d.ts +31 -4
  34. package/templates/static/lib/cache/memory.js +38 -12
  35. package/templates/static/lib/cache/redis.d.ts +43 -4
  36. package/templates/static/lib/cache/redis.js +59 -14
  37. package/templates/static/lib/cli/banner.d.ts +5 -1
  38. package/templates/static/lib/cli/banner.js +18 -14
  39. package/templates/static/lib/cli/templates/ssg/jen.config.js +29 -29
  40. package/templates/static/lib/cli/templates/ssg/site/index.js +6 -1
  41. package/templates/static/lib/cli/templates/ssr/jen.config.js +29 -29
  42. package/templates/static/lib/cli/templates/ssr/site/index.js +6 -1
  43. package/templates/static/lib/compilers/esbuild-plugins.js +96 -98
  44. package/templates/static/lib/compilers/svelte.d.ts +10 -10
  45. package/templates/static/lib/compilers/svelte.js +31 -31
  46. package/templates/static/lib/compilers/vue.d.ts +8 -8
  47. package/templates/static/lib/compilers/vue.js +76 -68
  48. package/templates/static/lib/core/config.d.ts +217 -50
  49. package/templates/static/lib/core/http.d.ts +55 -2
  50. package/templates/static/lib/core/http.js +66 -20
  51. package/templates/static/lib/core/middleware-hooks.d.ts +204 -31
  52. package/templates/static/lib/core/middleware-hooks.js +86 -41
  53. package/templates/static/lib/core/paths.d.ts +42 -4
  54. package/templates/static/lib/core/paths.js +34 -2
  55. package/templates/static/lib/core/routes/match.d.ts +51 -3
  56. package/templates/static/lib/core/routes/match.js +44 -11
  57. package/templates/static/lib/core/routes/scan.d.ts +49 -5
  58. package/templates/static/lib/core/routes/scan.js +174 -115
  59. package/templates/static/lib/core/types.d.ts +148 -13
  60. package/templates/static/lib/css/compiler.d.ts +16 -13
  61. package/templates/static/lib/css/compiler.js +62 -58
  62. package/templates/static/lib/db/connector.d.ts +27 -1
  63. package/templates/static/lib/db/connector.js +37 -11
  64. package/templates/static/lib/db/drivers/jdb.d.ts +13 -9
  65. package/templates/static/lib/db/drivers/jdb.js +41 -39
  66. package/templates/static/lib/db/drivers/sql.d.ts +16 -12
  67. package/templates/static/lib/db/drivers/sql.js +152 -135
  68. package/templates/static/lib/db/index.d.ts +20 -12
  69. package/templates/static/lib/db/index.js +41 -41
  70. package/templates/static/lib/db/types.d.ts +22 -18
  71. package/templates/static/lib/graphql/index.d.ts +47 -0
  72. package/templates/static/lib/graphql/index.js +50 -3
  73. package/templates/static/lib/graphql/resolvers.d.ts +51 -11
  74. package/templates/static/lib/graphql/resolvers.js +22 -6
  75. package/templates/static/lib/graphql/schema.d.ts +34 -0
  76. package/templates/static/lib/graphql/schema.js +34 -2
  77. package/templates/static/lib/i18n/en.json +2 -2
  78. package/templates/static/lib/i18n/es.json +2 -2
  79. package/templates/static/lib/i18n/index.d.ts +4 -4
  80. package/templates/static/lib/i18n/index.js +10 -10
  81. package/templates/static/lib/import/jen-import.d.ts +39 -10
  82. package/templates/static/lib/import/jen-import.js +130 -80
  83. package/templates/static/lib/index.d.ts +42 -11
  84. package/templates/static/lib/index.js +21 -8
  85. package/templates/static/lib/jdb/engine.d.ts +35 -6
  86. package/templates/static/lib/jdb/engine.js +260 -144
  87. package/templates/static/lib/jdb/index.d.ts +32 -0
  88. package/templates/static/lib/jdb/index.js +32 -0
  89. package/templates/static/lib/jdb/types.d.ts +212 -30
  90. package/templates/static/lib/jdb/utils.d.ts +60 -0
  91. package/templates/static/lib/jdb/utils.js +159 -107
  92. package/templates/static/lib/middleware/builtins/body-parser.d.ts +15 -0
  93. package/templates/static/lib/middleware/builtins/body-parser.js +53 -35
  94. package/templates/static/lib/middleware/builtins/cors.d.ts +8 -6
  95. package/templates/static/lib/middleware/builtins/cors.js +52 -48
  96. package/templates/static/lib/middleware/builtins/logger.d.ts +18 -0
  97. package/templates/static/lib/middleware/builtins/logger.js +31 -13
  98. package/templates/static/lib/middleware/builtins/rate-limit.d.ts +19 -2
  99. package/templates/static/lib/middleware/builtins/rate-limit.js +75 -55
  100. package/templates/static/lib/middleware/builtins/request-id.d.ts +18 -0
  101. package/templates/static/lib/middleware/builtins/request-id.js +26 -5
  102. package/templates/static/lib/middleware/builtins/security-headers.d.ts +18 -0
  103. package/templates/static/lib/middleware/builtins/security-headers.js +51 -20
  104. package/templates/static/lib/middleware/context.d.ts +102 -15
  105. package/templates/static/lib/middleware/context.js +121 -30
  106. package/templates/static/lib/middleware/decorators.d.ts +18 -1
  107. package/templates/static/lib/middleware/decorators.js +83 -34
  108. package/templates/static/lib/middleware/errors/handler.js +22 -24
  109. package/templates/static/lib/middleware/errors/http-error.d.ts +3 -3
  110. package/templates/static/lib/middleware/errors/http-error.js +8 -8
  111. package/templates/static/lib/middleware/kernel.d.ts +67 -4
  112. package/templates/static/lib/middleware/kernel.js +80 -17
  113. package/templates/static/lib/middleware/pipeline.d.ts +51 -2
  114. package/templates/static/lib/middleware/pipeline.js +143 -45
  115. package/templates/static/lib/middleware/registry.d.ts +67 -8
  116. package/templates/static/lib/middleware/registry.js +83 -22
  117. package/templates/static/lib/middleware/response.d.ts +73 -11
  118. package/templates/static/lib/middleware/response.js +104 -40
  119. package/templates/static/lib/middleware/utils/matcher.js +11 -12
  120. package/templates/static/lib/native/bundle.d.ts +13 -8
  121. package/templates/static/lib/native/bundle.js +14 -14
  122. package/templates/static/lib/native/dev-server.d.ts +11 -4
  123. package/templates/static/lib/native/dev-server.js +14 -12
  124. package/templates/static/lib/native/index.d.ts +20 -20
  125. package/templates/static/lib/native/index.js +23 -21
  126. package/templates/static/lib/native/optimizer.d.ts +14 -10
  127. package/templates/static/lib/native/optimizer.js +14 -14
  128. package/templates/static/lib/native/style-compiler.d.ts +17 -8
  129. package/templates/static/lib/native/style-compiler.js +9 -9
  130. package/templates/static/lib/plugin/loader.d.ts +8 -6
  131. package/templates/static/lib/plugin/loader.js +25 -31
  132. package/templates/static/lib/runtime/client-runtime.d.ts +15 -0
  133. package/templates/static/lib/runtime/client-runtime.js +23 -9
  134. package/templates/static/lib/runtime/hmr.d.ts +23 -1
  135. package/templates/static/lib/runtime/hmr.js +27 -5
  136. package/templates/static/lib/runtime/hydrate.d.ts +17 -0
  137. package/templates/static/lib/runtime/hydrate.js +48 -21
  138. package/templates/static/lib/runtime/island-hydration-client.d.ts +5 -2
  139. package/templates/static/lib/runtime/island-hydration-client.js +122 -91
  140. package/templates/static/lib/runtime/islands.d.ts +82 -27
  141. package/templates/static/lib/runtime/islands.js +92 -54
  142. package/templates/static/lib/runtime/render.d.ts +36 -9
  143. package/templates/static/lib/runtime/render.js +208 -130
  144. package/templates/static/lib/server/api-routes.d.ts +96 -28
  145. package/templates/static/lib/server/api-routes.js +214 -156
  146. package/templates/static/lib/server/api.d.ts +3 -3
  147. package/templates/static/lib/server/api.js +93 -92
  148. package/templates/static/lib/server/app.d.ts +37 -3
  149. package/templates/static/lib/server/app.js +328 -254
  150. package/templates/static/lib/server/runtimeServe.d.ts +56 -0
  151. package/templates/static/lib/server/runtimeServe.js +130 -69
  152. package/templates/static/lib/server/ssr.d.ts +161 -0
  153. package/templates/static/lib/server/ssr.js +219 -0
  154. package/templates/static/lib/shared/log.d.ts +47 -3
  155. package/templates/static/lib/shared/log.js +60 -10
  156. package/templates/static/package.json +5 -1
  157. package/templates/static/server.js +4 -6
  158. package/templates/static/site/(home).tsx +30 -12
  159. package/templates/static/site/styles/global.scss +89 -78
  160. package/templates/static/tsconfig.json +39 -39
  161. package/templates/static/node_modules/.bin/esbuild +0 -16
  162. package/templates/static/node_modules/.bin/esbuild.cmd +0 -17
  163. package/templates/static/node_modules/.bin/esbuild.ps1 +0 -28
  164. package/templates/static/node_modules/.bin/tsc +0 -16
  165. package/templates/static/node_modules/.bin/tsc.cmd +0 -17
  166. package/templates/static/node_modules/.bin/tsc.ps1 +0 -28
  167. package/templates/static/node_modules/.bin/tsserver +0 -16
  168. package/templates/static/node_modules/.bin/tsserver.cmd +0 -17
  169. package/templates/static/node_modules/.bin/tsserver.ps1 +0 -28
  170. package/templates/static/node_modules/.jen/cache/B__Jen.js_packages_create-jen-app_templates_static_site_(home).tsx.mjs +0 -14
  171. package/templates/static/node_modules/.jen/cache/B__Jen.js_packages_create-jen-app_yo_site_(home).tsx.mjs +0 -11
  172. package/templates/static/node_modules/.package-lock.json +0 -585
  173. package/templates/static/node_modules/@esbuild/win32-x64/README.md +0 -3
  174. package/templates/static/node_modules/@esbuild/win32-x64/esbuild.exe +0 -0
  175. package/templates/static/node_modules/@esbuild/win32-x64/package.json +0 -20
  176. package/templates/static/node_modules/@jenjs/master/README.md +0 -24
  177. package/templates/static/node_modules/@jenjs/master/index.js +0 -3655
  178. package/templates/static/node_modules/@jenjs/master/package.json +0 -36
  179. package/templates/static/node_modules/@polka/url/build.js +0 -49
  180. package/templates/static/node_modules/@polka/url/build.mjs +0 -47
  181. package/templates/static/node_modules/@polka/url/index.d.ts +0 -11
  182. package/templates/static/node_modules/@polka/url/package.json +0 -30
  183. package/templates/static/node_modules/@polka/url/readme.md +0 -68
  184. package/templates/static/node_modules/@types/node/LICENSE +0 -21
  185. package/templates/static/node_modules/@types/node/README.md +0 -15
  186. package/templates/static/node_modules/@types/node/assert/strict.d.ts +0 -111
  187. package/templates/static/node_modules/@types/node/assert.d.ts +0 -1078
  188. package/templates/static/node_modules/@types/node/async_hooks.d.ts +0 -603
  189. package/templates/static/node_modules/@types/node/buffer.buffer.d.ts +0 -472
  190. package/templates/static/node_modules/@types/node/buffer.d.ts +0 -1934
  191. package/templates/static/node_modules/@types/node/child_process.d.ts +0 -1476
  192. package/templates/static/node_modules/@types/node/cluster.d.ts +0 -578
  193. package/templates/static/node_modules/@types/node/compatibility/disposable.d.ts +0 -14
  194. package/templates/static/node_modules/@types/node/compatibility/index.d.ts +0 -9
  195. package/templates/static/node_modules/@types/node/compatibility/indexable.d.ts +0 -20
  196. package/templates/static/node_modules/@types/node/compatibility/iterators.d.ts +0 -20
  197. package/templates/static/node_modules/@types/node/console.d.ts +0 -452
  198. package/templates/static/node_modules/@types/node/constants.d.ts +0 -21
  199. package/templates/static/node_modules/@types/node/crypto.d.ts +0 -4545
  200. package/templates/static/node_modules/@types/node/dgram.d.ts +0 -600
  201. package/templates/static/node_modules/@types/node/diagnostics_channel.d.ts +0 -578
  202. package/templates/static/node_modules/@types/node/dns/promises.d.ts +0 -503
  203. package/templates/static/node_modules/@types/node/dns.d.ts +0 -923
  204. package/templates/static/node_modules/@types/node/domain.d.ts +0 -170
  205. package/templates/static/node_modules/@types/node/events.d.ts +0 -976
  206. package/templates/static/node_modules/@types/node/fs/promises.d.ts +0 -1295
  207. package/templates/static/node_modules/@types/node/fs.d.ts +0 -4461
  208. package/templates/static/node_modules/@types/node/globals.d.ts +0 -172
  209. package/templates/static/node_modules/@types/node/globals.typedarray.d.ts +0 -38
  210. package/templates/static/node_modules/@types/node/http.d.ts +0 -2089
  211. package/templates/static/node_modules/@types/node/http2.d.ts +0 -2644
  212. package/templates/static/node_modules/@types/node/https.d.ts +0 -579
  213. package/templates/static/node_modules/@types/node/index.d.ts +0 -97
  214. package/templates/static/node_modules/@types/node/inspector.d.ts +0 -253
  215. package/templates/static/node_modules/@types/node/inspector.generated.d.ts +0 -4052
  216. package/templates/static/node_modules/@types/node/module.d.ts +0 -891
  217. package/templates/static/node_modules/@types/node/net.d.ts +0 -1057
  218. package/templates/static/node_modules/@types/node/os.d.ts +0 -506
  219. package/templates/static/node_modules/@types/node/package.json +0 -145
  220. package/templates/static/node_modules/@types/node/path.d.ts +0 -200
  221. package/templates/static/node_modules/@types/node/perf_hooks.d.ts +0 -968
  222. package/templates/static/node_modules/@types/node/process.d.ts +0 -2089
  223. package/templates/static/node_modules/@types/node/punycode.d.ts +0 -117
  224. package/templates/static/node_modules/@types/node/querystring.d.ts +0 -152
  225. package/templates/static/node_modules/@types/node/readline/promises.d.ts +0 -161
  226. package/templates/static/node_modules/@types/node/readline.d.ts +0 -594
  227. package/templates/static/node_modules/@types/node/repl.d.ts +0 -428
  228. package/templates/static/node_modules/@types/node/sea.d.ts +0 -153
  229. package/templates/static/node_modules/@types/node/sqlite.d.ts +0 -721
  230. package/templates/static/node_modules/@types/node/stream/consumers.d.ts +0 -38
  231. package/templates/static/node_modules/@types/node/stream/promises.d.ts +0 -90
  232. package/templates/static/node_modules/@types/node/stream/web.d.ts +0 -622
  233. package/templates/static/node_modules/@types/node/stream.d.ts +0 -1664
  234. package/templates/static/node_modules/@types/node/string_decoder.d.ts +0 -67
  235. package/templates/static/node_modules/@types/node/test.d.ts +0 -2163
  236. package/templates/static/node_modules/@types/node/timers/promises.d.ts +0 -108
  237. package/templates/static/node_modules/@types/node/timers.d.ts +0 -287
  238. package/templates/static/node_modules/@types/node/tls.d.ts +0 -1319
  239. package/templates/static/node_modules/@types/node/trace_events.d.ts +0 -197
  240. package/templates/static/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -468
  241. package/templates/static/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -34
  242. package/templates/static/node_modules/@types/node/ts5.6/index.d.ts +0 -97
  243. package/templates/static/node_modules/@types/node/tty.d.ts +0 -208
  244. package/templates/static/node_modules/@types/node/url.d.ts +0 -984
  245. package/templates/static/node_modules/@types/node/util.d.ts +0 -2606
  246. package/templates/static/node_modules/@types/node/v8.d.ts +0 -920
  247. package/templates/static/node_modules/@types/node/vm.d.ts +0 -1000
  248. package/templates/static/node_modules/@types/node/wasi.d.ts +0 -181
  249. package/templates/static/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -34
  250. package/templates/static/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
  251. package/templates/static/node_modules/@types/node/web-globals/events.d.ts +0 -97
  252. package/templates/static/node_modules/@types/node/web-globals/fetch.d.ts +0 -55
  253. package/templates/static/node_modules/@types/node/web-globals/navigator.d.ts +0 -22
  254. package/templates/static/node_modules/@types/node/web-globals/storage.d.ts +0 -24
  255. package/templates/static/node_modules/@types/node/worker_threads.d.ts +0 -784
  256. package/templates/static/node_modules/@types/node/zlib.d.ts +0 -683
  257. package/templates/static/node_modules/esbuild/LICENSE.md +0 -21
  258. package/templates/static/node_modules/esbuild/README.md +0 -3
  259. package/templates/static/node_modules/esbuild/bin/esbuild +0 -223
  260. package/templates/static/node_modules/esbuild/install.js +0 -289
  261. package/templates/static/node_modules/esbuild/lib/main.d.ts +0 -716
  262. package/templates/static/node_modules/esbuild/lib/main.js +0 -2242
  263. package/templates/static/node_modules/esbuild/package.json +0 -49
  264. package/templates/static/node_modules/mrmime/index.d.ts +0 -2
  265. package/templates/static/node_modules/mrmime/index.js +0 -449
  266. package/templates/static/node_modules/mrmime/index.mjs +0 -448
  267. package/templates/static/node_modules/mrmime/license +0 -21
  268. package/templates/static/node_modules/mrmime/package.json +0 -44
  269. package/templates/static/node_modules/mrmime/readme.md +0 -130
  270. package/templates/static/node_modules/preact/LICENSE +0 -21
  271. package/templates/static/node_modules/preact/README.md +0 -185
  272. package/templates/static/node_modules/preact/compat/client.d.ts +0 -13
  273. package/templates/static/node_modules/preact/compat/client.js +0 -21
  274. package/templates/static/node_modules/preact/compat/client.mjs +0 -24
  275. package/templates/static/node_modules/preact/compat/dist/compat.js +0 -2
  276. package/templates/static/node_modules/preact/compat/dist/compat.js.map +0 -1
  277. package/templates/static/node_modules/preact/compat/dist/compat.mjs +0 -2
  278. package/templates/static/node_modules/preact/compat/dist/compat.module.js +0 -2
  279. package/templates/static/node_modules/preact/compat/dist/compat.module.js.map +0 -1
  280. package/templates/static/node_modules/preact/compat/dist/compat.umd.js +0 -2
  281. package/templates/static/node_modules/preact/compat/dist/compat.umd.js.map +0 -1
  282. package/templates/static/node_modules/preact/compat/jsx-dev-runtime.js +0 -3
  283. package/templates/static/node_modules/preact/compat/jsx-dev-runtime.mjs +0 -3
  284. package/templates/static/node_modules/preact/compat/jsx-runtime.js +0 -3
  285. package/templates/static/node_modules/preact/compat/jsx-runtime.mjs +0 -3
  286. package/templates/static/node_modules/preact/compat/package.json +0 -55
  287. package/templates/static/node_modules/preact/compat/scheduler.js +0 -15
  288. package/templates/static/node_modules/preact/compat/scheduler.mjs +0 -23
  289. package/templates/static/node_modules/preact/compat/server.browser.js +0 -11
  290. package/templates/static/node_modules/preact/compat/server.js +0 -36
  291. package/templates/static/node_modules/preact/compat/server.mjs +0 -17
  292. package/templates/static/node_modules/preact/compat/src/Children.js +0 -21
  293. package/templates/static/node_modules/preact/compat/src/PureComponent.js +0 -16
  294. package/templates/static/node_modules/preact/compat/src/forwardRef.js +0 -44
  295. package/templates/static/node_modules/preact/compat/src/hooks.js +0 -70
  296. package/templates/static/node_modules/preact/compat/src/index.d.ts +0 -351
  297. package/templates/static/node_modules/preact/compat/src/index.js +0 -238
  298. package/templates/static/node_modules/preact/compat/src/internal.d.ts +0 -48
  299. package/templates/static/node_modules/preact/compat/src/memo.js +0 -35
  300. package/templates/static/node_modules/preact/compat/src/portals.js +0 -78
  301. package/templates/static/node_modules/preact/compat/src/render.js +0 -313
  302. package/templates/static/node_modules/preact/compat/src/suspense-list.d.ts +0 -16
  303. package/templates/static/node_modules/preact/compat/src/suspense-list.js +0 -127
  304. package/templates/static/node_modules/preact/compat/src/suspense.d.ts +0 -19
  305. package/templates/static/node_modules/preact/compat/src/suspense.js +0 -291
  306. package/templates/static/node_modules/preact/compat/src/util.js +0 -33
  307. package/templates/static/node_modules/preact/compat/test-utils.js +0 -1
  308. package/templates/static/node_modules/preact/compat/test-utils.mjs +0 -1
  309. package/templates/static/node_modules/preact/debug/dist/debug.js +0 -2
  310. package/templates/static/node_modules/preact/debug/dist/debug.js.map +0 -1
  311. package/templates/static/node_modules/preact/debug/dist/debug.mjs +0 -2
  312. package/templates/static/node_modules/preact/debug/dist/debug.module.js +0 -2
  313. package/templates/static/node_modules/preact/debug/dist/debug.module.js.map +0 -1
  314. package/templates/static/node_modules/preact/debug/dist/debug.umd.js +0 -2
  315. package/templates/static/node_modules/preact/debug/dist/debug.umd.js.map +0 -1
  316. package/templates/static/node_modules/preact/debug/package.json +0 -27
  317. package/templates/static/node_modules/preact/debug/src/check-props.js +0 -54
  318. package/templates/static/node_modules/preact/debug/src/component-stack.js +0 -146
  319. package/templates/static/node_modules/preact/debug/src/constants.js +0 -3
  320. package/templates/static/node_modules/preact/debug/src/debug.js +0 -593
  321. package/templates/static/node_modules/preact/debug/src/index.d.ts +0 -23
  322. package/templates/static/node_modules/preact/debug/src/index.js +0 -12
  323. package/templates/static/node_modules/preact/debug/src/internal.d.ts +0 -82
  324. package/templates/static/node_modules/preact/debug/src/util.js +0 -15
  325. package/templates/static/node_modules/preact/devtools/dist/devtools.js +0 -2
  326. package/templates/static/node_modules/preact/devtools/dist/devtools.js.map +0 -1
  327. package/templates/static/node_modules/preact/devtools/dist/devtools.mjs +0 -2
  328. package/templates/static/node_modules/preact/devtools/dist/devtools.module.js +0 -2
  329. package/templates/static/node_modules/preact/devtools/dist/devtools.module.js.map +0 -1
  330. package/templates/static/node_modules/preact/devtools/dist/devtools.umd.js +0 -2
  331. package/templates/static/node_modules/preact/devtools/dist/devtools.umd.js.map +0 -1
  332. package/templates/static/node_modules/preact/devtools/package.json +0 -25
  333. package/templates/static/node_modules/preact/devtools/src/devtools.js +0 -21
  334. package/templates/static/node_modules/preact/devtools/src/index.d.ts +0 -8
  335. package/templates/static/node_modules/preact/devtools/src/index.js +0 -15
  336. package/templates/static/node_modules/preact/dist/preact.js +0 -2
  337. package/templates/static/node_modules/preact/dist/preact.js.map +0 -1
  338. package/templates/static/node_modules/preact/dist/preact.min.js +0 -2
  339. package/templates/static/node_modules/preact/dist/preact.min.js.map +0 -1
  340. package/templates/static/node_modules/preact/dist/preact.min.module.js +0 -2
  341. package/templates/static/node_modules/preact/dist/preact.min.module.js.map +0 -1
  342. package/templates/static/node_modules/preact/dist/preact.min.umd.js +0 -2
  343. package/templates/static/node_modules/preact/dist/preact.min.umd.js.map +0 -1
  344. package/templates/static/node_modules/preact/dist/preact.mjs +0 -2
  345. package/templates/static/node_modules/preact/dist/preact.module.js +0 -2
  346. package/templates/static/node_modules/preact/dist/preact.module.js.map +0 -1
  347. package/templates/static/node_modules/preact/dist/preact.umd.js +0 -2
  348. package/templates/static/node_modules/preact/dist/preact.umd.js.map +0 -1
  349. package/templates/static/node_modules/preact/hooks/dist/hooks.js +0 -2
  350. package/templates/static/node_modules/preact/hooks/dist/hooks.js.map +0 -1
  351. package/templates/static/node_modules/preact/hooks/dist/hooks.mjs +0 -2
  352. package/templates/static/node_modules/preact/hooks/dist/hooks.module.js +0 -2
  353. package/templates/static/node_modules/preact/hooks/dist/hooks.module.js.map +0 -1
  354. package/templates/static/node_modules/preact/hooks/dist/hooks.umd.js +0 -2
  355. package/templates/static/node_modules/preact/hooks/dist/hooks.umd.js.map +0 -1
  356. package/templates/static/node_modules/preact/hooks/package.json +0 -35
  357. package/templates/static/node_modules/preact/hooks/src/index.d.ts +0 -145
  358. package/templates/static/node_modules/preact/hooks/src/index.js +0 -555
  359. package/templates/static/node_modules/preact/hooks/src/internal.d.ts +0 -103
  360. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.js +0 -2
  361. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.js.map +0 -1
  362. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.mjs +0 -2
  363. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js +0 -2
  364. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js.map +0 -1
  365. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.umd.js +0 -2
  366. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.umd.js.map +0 -1
  367. package/templates/static/node_modules/preact/jsx-runtime/package.json +0 -28
  368. package/templates/static/node_modules/preact/jsx-runtime/src/index.d.ts +0 -62
  369. package/templates/static/node_modules/preact/jsx-runtime/src/index.js +0 -206
  370. package/templates/static/node_modules/preact/jsx-runtime/src/utils.js +0 -36
  371. package/templates/static/node_modules/preact/package.json +0 -258
  372. package/templates/static/node_modules/preact/src/cjs.js +0 -3
  373. package/templates/static/node_modules/preact/src/clone-element.js +0 -48
  374. package/templates/static/node_modules/preact/src/component.js +0 -249
  375. package/templates/static/node_modules/preact/src/constants.js +0 -22
  376. package/templates/static/node_modules/preact/src/create-context.js +0 -60
  377. package/templates/static/node_modules/preact/src/create-element.js +0 -97
  378. package/templates/static/node_modules/preact/src/diff/catch-error.js +0 -46
  379. package/templates/static/node_modules/preact/src/diff/children.js +0 -451
  380. package/templates/static/node_modules/preact/src/diff/index.js +0 -684
  381. package/templates/static/node_modules/preact/src/diff/props.js +0 -173
  382. package/templates/static/node_modules/preact/src/dom.d.ts +0 -2476
  383. package/templates/static/node_modules/preact/src/index-5.d.ts +0 -399
  384. package/templates/static/node_modules/preact/src/index.d.ts +0 -402
  385. package/templates/static/node_modules/preact/src/index.js +0 -13
  386. package/templates/static/node_modules/preact/src/internal.d.ts +0 -190
  387. package/templates/static/node_modules/preact/src/jsx.d.ts +0 -2878
  388. package/templates/static/node_modules/preact/src/options.js +0 -16
  389. package/templates/static/node_modules/preact/src/render.js +0 -78
  390. package/templates/static/node_modules/preact/src/util.js +0 -28
  391. package/templates/static/node_modules/preact/test-utils/dist/testUtils.js +0 -2
  392. package/templates/static/node_modules/preact/test-utils/dist/testUtils.js.map +0 -1
  393. package/templates/static/node_modules/preact/test-utils/dist/testUtils.mjs +0 -2
  394. package/templates/static/node_modules/preact/test-utils/dist/testUtils.module.js +0 -2
  395. package/templates/static/node_modules/preact/test-utils/dist/testUtils.module.js.map +0 -1
  396. package/templates/static/node_modules/preact/test-utils/dist/testUtils.umd.js +0 -2
  397. package/templates/static/node_modules/preact/test-utils/dist/testUtils.umd.js.map +0 -1
  398. package/templates/static/node_modules/preact/test-utils/package.json +0 -28
  399. package/templates/static/node_modules/preact/test-utils/src/index.d.ts +0 -3
  400. package/templates/static/node_modules/preact/test-utils/src/index.js +0 -129
  401. package/templates/static/node_modules/preact-render-to-string/LICENSE +0 -21
  402. package/templates/static/node_modules/preact-render-to-string/README.md +0 -149
  403. package/templates/static/node_modules/preact-render-to-string/dist/commonjs.js +0 -2
  404. package/templates/static/node_modules/preact-render-to-string/dist/index.d.ts +0 -17
  405. package/templates/static/node_modules/preact-render-to-string/dist/index.js +0 -6
  406. package/templates/static/node_modules/preact-render-to-string/dist/index.js.map +0 -1
  407. package/templates/static/node_modules/preact-render-to-string/dist/index.mjs +0 -2
  408. package/templates/static/node_modules/preact-render-to-string/dist/index.module.js +0 -2
  409. package/templates/static/node_modules/preact-render-to-string/dist/index.module.js.map +0 -1
  410. package/templates/static/node_modules/preact-render-to-string/dist/index.umd.js +0 -2
  411. package/templates/static/node_modules/preact-render-to-string/dist/index.umd.js.map +0 -1
  412. package/templates/static/node_modules/preact-render-to-string/dist/internal.d.ts +0 -35
  413. package/templates/static/node_modules/preact-render-to-string/dist/jsx/commonjs.js +0 -2
  414. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.js +0 -4
  415. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.js.map +0 -1
  416. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.mjs +0 -2
  417. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.module.js +0 -2
  418. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.module.js.map +0 -1
  419. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.umd.js +0 -2
  420. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.umd.js.map +0 -1
  421. package/templates/static/node_modules/preact-render-to-string/dist/jsx.d.ts +0 -24
  422. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.js +0 -2
  423. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.js.map +0 -1
  424. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.mjs +0 -2
  425. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.module.js +0 -2
  426. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.module.js.map +0 -1
  427. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.umd.js +0 -2
  428. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.umd.js.map +0 -1
  429. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.js +0 -884
  430. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.js.map +0 -1
  431. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.mjs +0 -884
  432. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.module.js +0 -884
  433. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.module.js.map +0 -1
  434. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.umd.js +0 -888
  435. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.umd.js.map +0 -1
  436. package/templates/static/node_modules/preact-render-to-string/dist/stream-node.d.ts +0 -19
  437. package/templates/static/node_modules/preact-render-to-string/dist/stream.d.ts +0 -10
  438. package/templates/static/node_modules/preact-render-to-string/jsx.d.ts +0 -24
  439. package/templates/static/node_modules/preact-render-to-string/jsx.js +0 -1
  440. package/templates/static/node_modules/preact-render-to-string/package.json +0 -152
  441. package/templates/static/node_modules/preact-render-to-string/src/index.d.ts +0 -17
  442. package/templates/static/node_modules/preact-render-to-string/src/index.js +0 -764
  443. package/templates/static/node_modules/preact-render-to-string/src/internal.d.ts +0 -35
  444. package/templates/static/node_modules/preact-render-to-string/src/jsx.d.ts +0 -24
  445. package/templates/static/node_modules/preact-render-to-string/src/jsx.js +0 -102
  446. package/templates/static/node_modules/preact-render-to-string/src/lib/chunked.js +0 -97
  447. package/templates/static/node_modules/preact-render-to-string/src/lib/client.js +0 -62
  448. package/templates/static/node_modules/preact-render-to-string/src/lib/constants.js +0 -20
  449. package/templates/static/node_modules/preact-render-to-string/src/lib/polyfills.js +0 -8
  450. package/templates/static/node_modules/preact-render-to-string/src/lib/util.js +0 -208
  451. package/templates/static/node_modules/preact-render-to-string/src/pretty.js +0 -491
  452. package/templates/static/node_modules/preact-render-to-string/src/stream-node.d.ts +0 -19
  453. package/templates/static/node_modules/preact-render-to-string/src/stream-node.js +0 -84
  454. package/templates/static/node_modules/preact-render-to-string/src/stream.d.ts +0 -10
  455. package/templates/static/node_modules/preact-render-to-string/src/stream.js +0 -43
  456. package/templates/static/node_modules/preact-render-to-string/typings.json +0 -5
  457. package/templates/static/node_modules/sirv/build.js +0 -197
  458. package/templates/static/node_modules/sirv/build.mjs +0 -197
  459. package/templates/static/node_modules/sirv/index.d.mts +0 -29
  460. package/templates/static/node_modules/sirv/index.d.ts +0 -33
  461. package/templates/static/node_modules/sirv/package.json +0 -40
  462. package/templates/static/node_modules/sirv/readme.md +0 -238
  463. package/templates/static/node_modules/totalist/dist/index.js +0 -24
  464. package/templates/static/node_modules/totalist/dist/index.mjs +0 -22
  465. package/templates/static/node_modules/totalist/index.d.ts +0 -3
  466. package/templates/static/node_modules/totalist/license +0 -21
  467. package/templates/static/node_modules/totalist/package.json +0 -55
  468. package/templates/static/node_modules/totalist/readme.md +0 -109
  469. package/templates/static/node_modules/totalist/sync/index.d.ts +0 -3
  470. package/templates/static/node_modules/totalist/sync/index.js +0 -17
  471. package/templates/static/node_modules/totalist/sync/index.mjs +0 -15
  472. package/templates/static/node_modules/typescript/bin/tsc +0 -2
  473. package/templates/static/node_modules/typescript/bin/tsserver +0 -2
  474. package/templates/static/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
  475. package/templates/static/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
  476. package/templates/static/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
  477. package/templates/static/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
  478. package/templates/static/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
  479. package/templates/static/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
  480. package/templates/static/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
  481. package/templates/static/node_modules/typescript/lib/lib.d.ts +0 -22
  482. package/templates/static/node_modules/typescript/lib/lib.decorators.d.ts +0 -384
  483. package/templates/static/node_modules/typescript/lib/lib.decorators.legacy.d.ts +0 -22
  484. package/templates/static/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +0 -41
  485. package/templates/static/node_modules/typescript/lib/lib.dom.d.ts +0 -39429
  486. package/templates/static/node_modules/typescript/lib/lib.dom.iterable.d.ts +0 -571
  487. package/templates/static/node_modules/typescript/lib/lib.es2015.collection.d.ts +0 -147
  488. package/templates/static/node_modules/typescript/lib/lib.es2015.core.d.ts +0 -597
  489. package/templates/static/node_modules/typescript/lib/lib.es2015.d.ts +0 -28
  490. package/templates/static/node_modules/typescript/lib/lib.es2015.generator.d.ts +0 -77
  491. package/templates/static/node_modules/typescript/lib/lib.es2015.iterable.d.ts +0 -605
  492. package/templates/static/node_modules/typescript/lib/lib.es2015.promise.d.ts +0 -81
  493. package/templates/static/node_modules/typescript/lib/lib.es2015.proxy.d.ts +0 -128
  494. package/templates/static/node_modules/typescript/lib/lib.es2015.reflect.d.ts +0 -144
  495. package/templates/static/node_modules/typescript/lib/lib.es2015.symbol.d.ts +0 -46
  496. package/templates/static/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -326
  497. package/templates/static/node_modules/typescript/lib/lib.es2016.array.include.d.ts +0 -116
  498. package/templates/static/node_modules/typescript/lib/lib.es2016.d.ts +0 -21
  499. package/templates/static/node_modules/typescript/lib/lib.es2016.full.d.ts +0 -23
  500. package/templates/static/node_modules/typescript/lib/lib.es2016.intl.d.ts +0 -31
  501. package/templates/static/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +0 -21
  502. package/templates/static/node_modules/typescript/lib/lib.es2017.d.ts +0 -26
  503. package/templates/static/node_modules/typescript/lib/lib.es2017.date.d.ts +0 -31
  504. package/templates/static/node_modules/typescript/lib/lib.es2017.full.d.ts +0 -23
  505. package/templates/static/node_modules/typescript/lib/lib.es2017.intl.d.ts +0 -44
  506. package/templates/static/node_modules/typescript/lib/lib.es2017.object.d.ts +0 -49
  507. package/templates/static/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +0 -135
  508. package/templates/static/node_modules/typescript/lib/lib.es2017.string.d.ts +0 -45
  509. package/templates/static/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +0 -53
  510. package/templates/static/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -77
  511. package/templates/static/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +0 -53
  512. package/templates/static/node_modules/typescript/lib/lib.es2018.d.ts +0 -24
  513. package/templates/static/node_modules/typescript/lib/lib.es2018.full.d.ts +0 -24
  514. package/templates/static/node_modules/typescript/lib/lib.es2018.intl.d.ts +0 -83
  515. package/templates/static/node_modules/typescript/lib/lib.es2018.promise.d.ts +0 -30
  516. package/templates/static/node_modules/typescript/lib/lib.es2018.regexp.d.ts +0 -37
  517. package/templates/static/node_modules/typescript/lib/lib.es2019.array.d.ts +0 -79
  518. package/templates/static/node_modules/typescript/lib/lib.es2019.d.ts +0 -24
  519. package/templates/static/node_modules/typescript/lib/lib.es2019.full.d.ts +0 -24
  520. package/templates/static/node_modules/typescript/lib/lib.es2019.intl.d.ts +0 -23
  521. package/templates/static/node_modules/typescript/lib/lib.es2019.object.d.ts +0 -33
  522. package/templates/static/node_modules/typescript/lib/lib.es2019.string.d.ts +0 -37
  523. package/templates/static/node_modules/typescript/lib/lib.es2019.symbol.d.ts +0 -24
  524. package/templates/static/node_modules/typescript/lib/lib.es2020.bigint.d.ts +0 -765
  525. package/templates/static/node_modules/typescript/lib/lib.es2020.d.ts +0 -27
  526. package/templates/static/node_modules/typescript/lib/lib.es2020.date.d.ts +0 -42
  527. package/templates/static/node_modules/typescript/lib/lib.es2020.full.d.ts +0 -24
  528. package/templates/static/node_modules/typescript/lib/lib.es2020.intl.d.ts +0 -474
  529. package/templates/static/node_modules/typescript/lib/lib.es2020.number.d.ts +0 -28
  530. package/templates/static/node_modules/typescript/lib/lib.es2020.promise.d.ts +0 -47
  531. package/templates/static/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +0 -99
  532. package/templates/static/node_modules/typescript/lib/lib.es2020.string.d.ts +0 -44
  533. package/templates/static/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -41
  534. package/templates/static/node_modules/typescript/lib/lib.es2021.d.ts +0 -23
  535. package/templates/static/node_modules/typescript/lib/lib.es2021.full.d.ts +0 -24
  536. package/templates/static/node_modules/typescript/lib/lib.es2021.intl.d.ts +0 -166
  537. package/templates/static/node_modules/typescript/lib/lib.es2021.promise.d.ts +0 -48
  538. package/templates/static/node_modules/typescript/lib/lib.es2021.string.d.ts +0 -33
  539. package/templates/static/node_modules/typescript/lib/lib.es2021.weakref.d.ts +0 -78
  540. package/templates/static/node_modules/typescript/lib/lib.es2022.array.d.ts +0 -121
  541. package/templates/static/node_modules/typescript/lib/lib.es2022.d.ts +0 -25
  542. package/templates/static/node_modules/typescript/lib/lib.es2022.error.d.ts +0 -75
  543. package/templates/static/node_modules/typescript/lib/lib.es2022.full.d.ts +0 -24
  544. package/templates/static/node_modules/typescript/lib/lib.es2022.intl.d.ts +0 -145
  545. package/templates/static/node_modules/typescript/lib/lib.es2022.object.d.ts +0 -26
  546. package/templates/static/node_modules/typescript/lib/lib.es2022.regexp.d.ts +0 -39
  547. package/templates/static/node_modules/typescript/lib/lib.es2022.string.d.ts +0 -25
  548. package/templates/static/node_modules/typescript/lib/lib.es2023.array.d.ts +0 -924
  549. package/templates/static/node_modules/typescript/lib/lib.es2023.collection.d.ts +0 -21
  550. package/templates/static/node_modules/typescript/lib/lib.es2023.d.ts +0 -22
  551. package/templates/static/node_modules/typescript/lib/lib.es2023.full.d.ts +0 -24
  552. package/templates/static/node_modules/typescript/lib/lib.es2023.intl.d.ts +0 -56
  553. package/templates/static/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +0 -65
  554. package/templates/static/node_modules/typescript/lib/lib.es2024.collection.d.ts +0 -29
  555. package/templates/static/node_modules/typescript/lib/lib.es2024.d.ts +0 -26
  556. package/templates/static/node_modules/typescript/lib/lib.es2024.full.d.ts +0 -24
  557. package/templates/static/node_modules/typescript/lib/lib.es2024.object.d.ts +0 -29
  558. package/templates/static/node_modules/typescript/lib/lib.es2024.promise.d.ts +0 -35
  559. package/templates/static/node_modules/typescript/lib/lib.es2024.regexp.d.ts +0 -25
  560. package/templates/static/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +0 -68
  561. package/templates/static/node_modules/typescript/lib/lib.es2024.string.d.ts +0 -29
  562. package/templates/static/node_modules/typescript/lib/lib.es5.d.ts +0 -4601
  563. package/templates/static/node_modules/typescript/lib/lib.es6.d.ts +0 -23
  564. package/templates/static/node_modules/typescript/lib/lib.esnext.array.d.ts +0 -35
  565. package/templates/static/node_modules/typescript/lib/lib.esnext.collection.d.ts +0 -96
  566. package/templates/static/node_modules/typescript/lib/lib.esnext.d.ts +0 -29
  567. package/templates/static/node_modules/typescript/lib/lib.esnext.decorators.d.ts +0 -28
  568. package/templates/static/node_modules/typescript/lib/lib.esnext.disposable.d.ts +0 -193
  569. package/templates/static/node_modules/typescript/lib/lib.esnext.error.d.ts +0 -24
  570. package/templates/static/node_modules/typescript/lib/lib.esnext.float16.d.ts +0 -445
  571. package/templates/static/node_modules/typescript/lib/lib.esnext.full.d.ts +0 -24
  572. package/templates/static/node_modules/typescript/lib/lib.esnext.intl.d.ts +0 -21
  573. package/templates/static/node_modules/typescript/lib/lib.esnext.iterator.d.ts +0 -148
  574. package/templates/static/node_modules/typescript/lib/lib.esnext.promise.d.ts +0 -34
  575. package/templates/static/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +0 -25
  576. package/templates/static/node_modules/typescript/lib/lib.scripthost.d.ts +0 -322
  577. package/templates/static/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +0 -41
  578. package/templates/static/node_modules/typescript/lib/lib.webworker.d.ts +0 -13150
  579. package/templates/static/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +0 -23
  580. package/templates/static/node_modules/typescript/lib/lib.webworker.iterable.d.ts +0 -340
  581. package/templates/static/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
  582. package/templates/static/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
  583. package/templates/static/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
  584. package/templates/static/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
  585. package/templates/static/node_modules/typescript/lib/tsc.js +0 -8
  586. package/templates/static/node_modules/typescript/lib/tsserver.js +0 -8
  587. package/templates/static/node_modules/typescript/lib/tsserverlibrary.d.ts +0 -17
  588. package/templates/static/node_modules/typescript/lib/tsserverlibrary.js +0 -21
  589. package/templates/static/node_modules/typescript/lib/typescript.d.ts +0 -11437
@@ -16,74 +16,112 @@
16
16
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
17
  */
18
18
  /**
19
- * Mark a component as an interactive island.
20
- * Wraps component with hydration metadata.
19
+ * Mark a component as an interactive island for partial hydration.
20
+ * Islands are components that require client-side interactivity while the rest of the page
21
+ * remains static HTML. This enables efficient selective hydration.
22
+ *
23
+ * How it works:
24
+ * - Marks component with metadata (__island, __hydrationStrategy)
25
+ * - Server renderer detects marked components and emits HTML comments with island metadata
26
+ * - Client JavaScript discovers islands from HTML comments and hydrates based on strategy
21
27
  *
22
28
  * Usage in route:
23
29
  * import { Island } from "jenjs";
24
- * const Counter = Island(CounterImpl, "load");
25
- *
26
- * Then use in JSX: <Counter count={5} />
30
+ * import CounterImpl from "./counter.tsx";
31
+ * export default function Page() {
32
+ * const Counter = Island(CounterImpl, "load");
33
+ * return <Counter count={5} />;
34
+ * }
27
35
  *
28
- * Server will:
29
- * - Render the component to HTML
30
- * - Emit hydration markers
31
- * - Include serialized props
36
+ * Strategies:
37
+ * - "load": Best for above-the-fold critical interactive components
38
+ * - "idle": Good for secondary interactive elements (lighter priority)
39
+ * - "visible": Best for below-the-fold components; hydrates only when scrolled into view
32
40
  *
33
- * Client will:
34
- * - Discover islands from markers
35
- * - Hydrate based on strategy
41
+ * @param Component - The Preact component to mark as an island.
42
+ * @param strategy - Hydration timing strategy.
43
+ * @returns The same component with island metadata attached.
36
44
  */
37
45
  export function Island(Component, strategy) {
38
- // Mark component metadata for server-side detection
39
- Component.__island = true;
40
- Component.__hydrationStrategy = strategy;
41
- return Component;
46
+ // Mark component metadata for server-side detection during SSR
47
+ Component.__island = true;
48
+ Component.__hydrationStrategy = strategy;
49
+ return Component;
42
50
  }
43
51
  /**
44
- * Generate island hydration markers for server-rendered HTML.
45
- * Call this after SSR to inject island metadata.
52
+ * Generate an HTML comment marker that encodes island metadata.
53
+ * Server renderer calls this after rendering each island component.
54
+ * The marker is embedded in the HTML and later parsed by the client.
55
+ *
56
+ * Format: <!--__ISLAND_{STRATEGY}__:{id}:{componentPath}:{propsJson}-->
57
+ * Example: <!--__ISLAND_LOAD__:island-1:./counter.js:{"count":5}-->
58
+ *
59
+ * Note: '<' in JSON is escaped to '\\u003c' to prevent breaking HTML parsing
60
+ * (literal '<' in props could confuse the HTML parser or regex extraction).
61
+ *
62
+ * @param id - Unique identifier for the island (e.g., "island-1", "counter-2").
63
+ * @param componentPath - Path to the component module.
64
+ * @param strategy - Hydration timing strategy.
65
+ * @param props - Component props object (will be JSON.stringify'd).
66
+ * @returns HTML comment string encoding the island metadata.
46
67
  */
47
68
  export function createIslandMarker(id, componentPath, strategy, props) {
48
- const propsJson = JSON.stringify(props).replace(/</g, "\\u003c");
49
- return `<!--__ISLAND_${strategy.toUpperCase()}__:${id}:${componentPath}:${propsJson}-->`;
69
+ const propsJson = JSON.stringify(props).replace(/</g, "\\u003c");
70
+ return `<!--__ISLAND_${strategy.toUpperCase()}__:${id}:${componentPath}:${propsJson}-->`;
50
71
  }
51
72
  /**
52
- * Extract islands from server-rendered HTML.
53
- * Called by client to discover islands and their hydration strategy.
73
+ * Extract island metadata from server-rendered HTML.
74
+ * Client-side function that parses island markers from HTML comments.
75
+ * Called during page initialization to discover which components need hydration.
76
+ *
77
+ * Parsing strategy:
78
+ * - Regex finds HTML comments matching the island marker format
79
+ * - Extracts strategy, id, componentPath, and props from comment
80
+ * - Validates all fields are present and props are valid JSON
81
+ * - Logs warnings for invalid markers but continues processing remaining islands
82
+ *
83
+ * Return value includes only valid, parseable islands; invalid ones are skipped.
84
+ *
85
+ * @param html - Server-rendered HTML string (typically document.body.innerHTML or full page HTML).
86
+ * @returns Array of detected islands with complete metadata ready for hydration.
54
87
  */
55
88
  export function extractIslandsFromHtml(html) {
56
- const islands = [];
57
- // Match: <!--__ISLAND_LOAD__:id:componentPath:props-->
58
- const regex = /<!--__ISLAND_(LOAD|IDLE|VISIBLE)__:([^:]+):([^:]+):(.+?)-->/g;
59
- let match;
60
- while ((match = regex.exec(html)) !== null) {
61
- const strategy = match[1].toLowerCase();
62
- const id = match[2];
63
- const componentPath = match[3];
64
- const propsStr = match[4].replace(/\\u003c/g, "<");
65
- // Validate island ID and component path
66
- if (!id || !componentPath) {
67
- console.warn('Invalid island marker: missing id or componentPath');
68
- continue;
69
- }
70
- try {
71
- // Validate props is valid JSON
72
- const props = JSON.parse(propsStr);
73
- if (typeof props !== 'object' || props === null) {
74
- console.warn(`Invalid props for island ${id}: expected object, got ${typeof props}`);
75
- continue;
76
- }
77
- islands.push({
78
- id,
79
- component: componentPath,
80
- strategy,
81
- props,
82
- });
83
- }
84
- catch (err) {
85
- console.warn(`Failed to parse props for island ${id}:`, err instanceof Error ? err.message : String(err));
86
- }
89
+ const islands = [];
90
+ // Regex to match: <!--__ISLAND_{LOAD|IDLE|VISIBLE}__:id:componentPath:propsJson-->
91
+ const regex = /<!--__ISLAND_(LOAD|IDLE|VISIBLE)__:([^:]+):([^:]+):(.+?)-->/g;
92
+ let match;
93
+ while ((match = regex.exec(html)) !== null) {
94
+ const strategy = match[1].toLowerCase();
95
+ const id = match[2];
96
+ const componentPath = match[3];
97
+ // Unescape '<' back to literal character
98
+ const propsStr = match[4].replace(/\\u003c/g, "<");
99
+ // Validate required fields
100
+ if (!id || !componentPath) {
101
+ console.warn("Invalid island marker: missing id or componentPath");
102
+ continue;
103
+ }
104
+ try {
105
+ // Parse props JSON and validate it's an object
106
+ const props = JSON.parse(propsStr);
107
+ if (typeof props !== "object" || props === null) {
108
+ console.warn(
109
+ `Invalid props for island ${id}: expected object, got ${typeof props}`,
110
+ );
111
+ continue;
112
+ }
113
+ islands.push({
114
+ id,
115
+ component: componentPath,
116
+ strategy,
117
+ props,
118
+ });
119
+ } catch (err) {
120
+ console.warn(
121
+ `Failed to parse props for island ${id}:`,
122
+ err instanceof Error ? err.message : String(err),
123
+ );
87
124
  }
88
- return islands;
125
+ }
126
+ return islands;
89
127
  }
@@ -1,13 +1,40 @@
1
1
  import type { FrameworkConfig } from "../core/config.js";
2
2
  import type { RouteEntry } from "../core/routes/scan.js";
3
+ /**
4
+ * Renders a route module to a complete HTML document.
5
+ * This function handles the entire server-side rendering pipeline:
6
+ * 1. Compiles TypeScript/JSX/Vue/Svelte to JavaScript if needed
7
+ * 2. Imports the compiled route module
8
+ * 3. Executes route-level middleware
9
+ * 4. Calls the loader to fetch data
10
+ * 5. Renders the component to HTML using Preact
11
+ * 6. Wraps the component HTML in a full document with hydration metadata if enabled
12
+ *
13
+ * Compilation is performed at request-time in development (for fast iteration) and at build-time in production.
14
+ * The route module must export a default Preact component and may optionally export a loader function,
15
+ * middleware, a Head component, and hydration strategy metadata.
16
+ *
17
+ * @param opts Configuration and context for rendering.
18
+ * @param opts.config The framework configuration.
19
+ * @param opts.route The route entry being rendered.
20
+ * @param opts.req The Node.js IncomingMessage (optional for SSG).
21
+ * @param opts.res The Node.js ServerResponse (optional for SSG).
22
+ * @param opts.url The parsed request URL.
23
+ * @param opts.params Dynamic route parameters extracted from the URL.
24
+ * @param opts.query Query string parameters.
25
+ * @param opts.headers HTTP request headers.
26
+ * @param opts.cookies Parsed cookies from the request.
27
+ * @returns The complete HTML document as a string.
28
+ * @throws Error if the route module fails to compile, import, or render.
29
+ */
3
30
  export declare function renderRouteToHtml(opts: {
4
- config: FrameworkConfig;
5
- route: RouteEntry;
6
- req?: any;
7
- res?: any;
8
- url: URL;
9
- params: Record<string, string>;
10
- query: Record<string, string>;
11
- headers: Record<string, string>;
12
- cookies: Record<string, string>;
31
+ config: FrameworkConfig;
32
+ route: RouteEntry;
33
+ req?: any;
34
+ res?: any;
35
+ url: URL;
36
+ params: Record<string, string>;
37
+ query: Record<string, string>;
38
+ headers: Record<string, string>;
39
+ cookies: Record<string, string>;
13
40
  }): Promise<string>;
@@ -15,7 +15,10 @@
15
15
  * You should have received a copy of the GNU General Public License
16
16
  * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
17
  */
18
- import { createRouteMiddlewareContext, executeRouteMiddleware, } from "../core/middleware-hooks.js";
18
+ import {
19
+ createRouteMiddlewareContext,
20
+ executeRouteMiddleware,
21
+ } from "../core/middleware-hooks.js";
19
22
  import { createIslandMarker } from "./islands.js";
20
23
  import { h } from "preact";
21
24
  import renderToString from "preact-render-to-string";
@@ -23,148 +26,221 @@ import { pathToFileURL } from "node:url";
23
26
  import { join } from "node:path";
24
27
  import { mkdirSync, existsSync } from "node:fs";
25
28
  import esbuild from "esbuild";
26
- import { vueEsbuildPlugin, svelteEsbuildPlugin } from "../compilers/esbuild-plugins.js";
29
+ import {
30
+ vueEsbuildPlugin,
31
+ svelteEsbuildPlugin,
32
+ } from "../compilers/esbuild-plugins.js";
33
+ /**
34
+ * Escapes HTML special characters to prevent injection attacks.
35
+ * Used when serializing user data or dynamic values into HTML attributes or script content.
36
+ *
37
+ * @param s The string to escape.
38
+ * @returns The escaped string safe for inclusion in HTML.
39
+ */
27
40
  function escapeHtml(s) {
28
- return s
29
- .replaceAll("&", "&amp;")
30
- .replaceAll("<", "&lt;")
31
- .replaceAll(">", "&gt;")
32
- .replaceAll('"', "&quot;")
33
- .replaceAll("'", "&#39;");
41
+ return s
42
+ .replaceAll("&", "&amp;")
43
+ .replaceAll("<", "&lt;")
44
+ .replaceAll(">", "&gt;")
45
+ .replaceAll('"', "&quot;")
46
+ .replaceAll("'", "&#39;");
34
47
  }
48
+ /**
49
+ * Resolves the cache directory path for compiled route modules.
50
+ * Transpiled TypeScript/JSX/Vue/Svelte routes are cached to avoid repeated compilation.
51
+ * Cache is stored in node_modules/.jen/cache to leverage .gitignore and keep the workspace clean.
52
+ * Path names are flattened to avoid nested directory creation issues on Windows.
53
+ *
54
+ * @param filePath The absolute path to the original source file.
55
+ * @returns The absolute path to the cached compiled output file.
56
+ */
35
57
  function getCachePath(filePath) {
36
- const cacheDir = join(process.cwd(), "node_modules", ".jen", "cache");
37
- if (!existsSync(cacheDir)) {
38
- mkdirSync(cacheDir, { recursive: true });
39
- }
40
- // Flatten path to avoid directory structure issues
41
- const flatName = filePath.replace(/[\\/:]/g, "_").replace(/^_+/, "");
42
- return join(cacheDir, flatName + ".mjs");
58
+ const cacheDir = join(process.cwd(), "node_modules", ".jen", "cache");
59
+ if (!existsSync(cacheDir)) {
60
+ mkdirSync(cacheDir, { recursive: true });
61
+ }
62
+ // Flatten path to avoid directory structure issues.
63
+ const flatName = filePath.replace(/[\\/:]/g, "_").replace(/^_+/, "");
64
+ return join(cacheDir, flatName + ".mjs");
43
65
  }
66
+ /**
67
+ * Renders a route module to a complete HTML document.
68
+ * This function handles the entire server-side rendering pipeline:
69
+ * 1. Compiles TypeScript/JSX/Vue/Svelte to JavaScript if needed
70
+ * 2. Imports the compiled route module
71
+ * 3. Executes route-level middleware
72
+ * 4. Calls the loader to fetch data
73
+ * 5. Renders the component to HTML using Preact
74
+ * 6. Wraps the component HTML in a full document with hydration metadata if enabled
75
+ *
76
+ * Compilation is performed at request-time in development (for fast iteration) and at build-time in production.
77
+ * The route module must export a default Preact component and may optionally export a loader function,
78
+ * middleware, a Head component, and hydration strategy metadata.
79
+ *
80
+ * @param opts Configuration and context for rendering.
81
+ * @param opts.config The framework configuration.
82
+ * @param opts.route The route entry being rendered.
83
+ * @param opts.req The Node.js IncomingMessage (optional for SSG).
84
+ * @param opts.res The Node.js ServerResponse (optional for SSG).
85
+ * @param opts.url The parsed request URL.
86
+ * @param opts.params Dynamic route parameters extracted from the URL.
87
+ * @param opts.query Query string parameters.
88
+ * @param opts.headers HTTP request headers.
89
+ * @param opts.cookies Parsed cookies from the request.
90
+ * @returns The complete HTML document as a string.
91
+ * @throws Error if the route module fails to compile, import, or render.
92
+ */
44
93
  export async function renderRouteToHtml(opts) {
45
- const { config, route, url, params, query, headers, cookies } = opts;
46
- // Transpile route file if needed
47
- let moduleUrl = route.filePath;
48
- const ext = route.filePath.slice(-4).toLowerCase();
49
- const requiresTranspile = [".tsx", ".ts", ".vue", ".svelte"].some((e) => route.filePath.toLowerCase().endsWith(e));
50
- if (requiresTranspile) {
51
- const outfile = getCachePath(route.filePath);
52
- await esbuild.build({
53
- entryPoints: [route.filePath],
54
- outfile,
55
- format: "esm",
56
- platform: "node", // Use node platform for SSR to support built-ins
57
- target: "es2022",
58
- bundle: true, // Bundle to resolve local imports (simple)
59
- external: ["preact", "preact-render-to-string", "jenjs"], // Keep framework externals
60
- write: true,
61
- plugins: [vueEsbuildPlugin(), svelteEsbuildPlugin()],
62
- });
63
- moduleUrl = outfile;
94
+ const { config, route, url, params, query, headers, cookies } = opts;
95
+ // Transpile route file if needed. TypeScript and JSX require compilation to JavaScript.
96
+ // Vue and Svelte components also need transpilation to Preact-compatible JavaScript.
97
+ let moduleUrl = route.filePath;
98
+ const ext = route.filePath.slice(-4).toLowerCase();
99
+ const requiresTranspile = [".tsx", ".ts", ".vue", ".svelte"].some((e) =>
100
+ route.filePath.toLowerCase().endsWith(e),
101
+ );
102
+ if (requiresTranspile) {
103
+ const outfile = getCachePath(route.filePath);
104
+ await esbuild.build({
105
+ entryPoints: [route.filePath],
106
+ outfile,
107
+ format: "esm",
108
+ platform: "node", // Node platform for SSR supports built-ins like fs, path, etc.
109
+ target: "es2022",
110
+ bundle: true, // Bundle all local imports into a single file for simplicity.
111
+ external: ["preact", "preact-render-to-string", "jenjs"], // Keep framework imports external.
112
+ write: true,
113
+ plugins: [vueEsbuildPlugin(), svelteEsbuildPlugin()],
114
+ });
115
+ moduleUrl = outfile;
116
+ }
117
+ // Cache busting via query parameter ensures fresh module evaluation even if file is unchanged.
118
+ // This is critical because esbuild may use cached builds and we need the latest code for SSR.
119
+ let mod;
120
+ try {
121
+ mod = await import(pathToFileURL(moduleUrl).href + "?t=" + Date.now());
122
+ } catch (err) {
123
+ throw new Error(
124
+ `Failed to import route module ${route.filePath}: ${err instanceof Error ? err.message : String(err)}`,
125
+ );
126
+ }
127
+ // Execute route middleware if present. Middleware runs only in server context (not during SSG with empty req/res).
128
+ // Middleware can access the request, manipulate context data, or short-circuit rendering by throwing redirect/json signals.
129
+ let middlewareData = {};
130
+ if (opts.req && opts.res) {
131
+ const middlewareCtx = createRouteMiddlewareContext({
132
+ req: opts.req,
133
+ res: opts.res,
134
+ url,
135
+ params,
136
+ query,
137
+ headers,
138
+ cookies,
139
+ });
140
+ const middlewares = [];
141
+ if (mod.middleware) {
142
+ if (Array.isArray(mod.middleware)) {
143
+ middlewares.push(...mod.middleware);
144
+ } else {
145
+ middlewares.push(mod.middleware);
146
+ }
64
147
  }
65
- // Cache busting for dynamic import
66
- let mod;
67
148
  try {
68
- mod = await import(pathToFileURL(moduleUrl).href + "?t=" + Date.now());
149
+ await executeRouteMiddleware(middlewares, middlewareCtx);
150
+ middlewareData = middlewareCtx.data || {};
151
+ } catch (err) {
152
+ // Middleware may throw special error messages to signal redirect or JSON responses.
153
+ // These are handled by the caller and should not be caught here.
154
+ if (err.message === "__REDIRECT__" || err.message === "__JSON__") {
155
+ throw err;
156
+ }
157
+ throw err;
69
158
  }
70
- catch (err) {
71
- throw new Error(`Failed to import route module ${route.filePath}: ${err instanceof Error ? err.message : String(err)}`);
159
+ }
160
+ // Build the loader context with request data and middleware results.
161
+ // The loader receives both raw request data and enriched data from middleware.
162
+ const loaderCtx = {
163
+ url,
164
+ params,
165
+ query,
166
+ headers,
167
+ cookies,
168
+ data: middlewareData, // Pass middleware data to loader.
169
+ };
170
+ // Call the optional loader function to fetch/prepare data for the page.
171
+ // Loader results are passed as props to the page component.
172
+ let data = null;
173
+ if (typeof mod.loader === "function") {
174
+ data = await mod.loader(loaderCtx);
175
+ }
176
+ if (!mod.default) {
177
+ throw new Error(
178
+ `Route module ${route.filePath} does not export a default component`,
179
+ );
180
+ }
181
+ const Page = mod.default;
182
+ // Check if hydration is disabled. Set to false for purely static pages with no client-side interactivity.
183
+ const shouldHydrate = mod.hydrate !== false;
184
+ const app = h(Page, { data, params, query });
185
+ // Render the page component to a static HTML string.
186
+ // Preact rendering at this stage is purely static; hydration happens on the client.
187
+ let bodyHtml = renderToString(app);
188
+ // Check for island components that need selective hydration on the client.
189
+ // Islands are opt-in interactive components within otherwise static pages.
190
+ // Each island is marked with __island and __hydrationStrategy metadata and will be hydrated by the client.
191
+ for (const [key, value] of Object.entries(mod)) {
192
+ if (
193
+ typeof value === "function" &&
194
+ value.__island &&
195
+ value.__hydrationStrategy
196
+ ) {
197
+ const strategy = value.__hydrationStrategy;
198
+ const componentPath = route.filePath;
199
+ const islandId = `island-${Math.random().toString(36).slice(2, 9)}`;
200
+ const marker = createIslandMarker(islandId, componentPath, strategy, {});
201
+ // Inject marker before closing app div.
202
+ bodyHtml = bodyHtml.replace("</div>", `${marker}</div>`);
72
203
  }
73
- // Execute route middleware if present (only in server context)
74
- let middlewareData = {};
75
- if (opts.req && opts.res) {
76
- const middlewareCtx = createRouteMiddlewareContext({
77
- req: opts.req,
78
- res: opts.res,
79
- url,
80
- params,
81
- query,
82
- headers,
83
- cookies,
84
- });
85
- const middlewares = [];
86
- if (mod.middleware) {
87
- if (Array.isArray(mod.middleware)) {
88
- middlewares.push(...mod.middleware);
89
- }
90
- else {
91
- middlewares.push(mod.middleware);
92
- }
93
- }
94
- try {
95
- await executeRouteMiddleware(middlewares, middlewareCtx);
96
- middlewareData = middlewareCtx.data || {};
97
- }
98
- catch (err) {
99
- if (err.message === "__REDIRECT__" || err.message === "__JSON__") {
100
- // Already sent response
101
- throw err;
102
- }
103
- throw err;
104
- }
105
- }
106
- const loaderCtx = {
107
- url,
108
- params,
109
- query,
110
- headers,
111
- cookies,
112
- data: middlewareData, // Pass middleware data to loader
113
- };
114
- let data = null;
115
- if (typeof mod.loader === "function") {
116
- data = await mod.loader(loaderCtx);
117
- }
118
- if (!mod.default) {
119
- throw new Error(`Route module ${route.filePath} does not export a default component`);
120
- }
121
- const Page = mod.default;
122
- // Check if hydration is disabled
123
- const shouldHydrate = mod.hydrate !== false;
124
- const app = h(Page, { data, params, query });
125
- let bodyHtml = renderToString(app);
126
- // If this module exports island components, add hydration markers
127
- // Look for components marked with __island metadata
128
- for (const [key, value] of Object.entries(mod)) {
129
- if (typeof value === "function" &&
130
- value.__island &&
131
- value.__hydrationStrategy) {
132
- const strategy = value.__hydrationStrategy;
133
- const componentPath = route.filePath;
134
- const islandId = `island-${Math.random().toString(36).slice(2, 9)}`;
135
- const marker = createIslandMarker(islandId, componentPath, strategy, {});
136
- // Mark location in HTML for client to find
137
- // Note: In a real implementation, we'd track island renders more carefully
138
- }
139
- }
140
- const headParts = [];
141
- headParts.push(...config.inject.head);
142
- if (mod.Head) {
143
- try {
144
- const headNode = h(mod.Head, { data, params, query });
145
- const headHtml = renderToString(headNode);
146
- headParts.push(headHtml);
147
- }
148
- catch (err) {
149
- console.error(`Failed to render Head component for ${route.filePath}:`, err instanceof Error ? err.message : String(err));
150
- }
204
+ }
205
+ // Collect all head elements from configuration and the route's Head component.
206
+ // Head components allow per-route customization of meta tags, title, links, etc.
207
+ const headParts = [];
208
+ headParts.push(...config.inject.head);
209
+ if (mod.Head) {
210
+ try {
211
+ const headNode = h(mod.Head, { data, params, query });
212
+ const headHtml = renderToString(headNode);
213
+ headParts.push(headHtml);
214
+ } catch (err) {
215
+ console.error(
216
+ `Failed to render Head component for ${route.filePath}:`,
217
+ err instanceof Error ? err.message : String(err),
218
+ );
151
219
  }
152
- headParts.push(`<link rel="stylesheet" href="/styles.css">`);
153
- // Build HTML
154
- let html = `<!doctype html>
220
+ }
221
+ // Global stylesheet link is always injected. This file is compiled from SCSS in development and build time.
222
+ headParts.push(`<link rel="stylesheet" href="/styles.css">`);
223
+ // Build the complete HTML document with semantic structure.
224
+ // The div#app is the mount point for hydration on the client.
225
+ let html = `<!doctype html>
155
226
  <html>
156
227
  <head>
157
228
  ${headParts.join("\n")}
158
229
  </head>
159
230
  <body>
160
231
  <div id="app">${bodyHtml}</div>`;
161
- // Only inject hydration script if enabled
162
- if (shouldHydrate) {
163
- // Serialize framework data with proper escaping
164
- // Escape </script to prevent script injection
165
- const frameworkDataStr = JSON.stringify({ data, params, query }, null, 2).replace(/<\/script/gi, "<\\/script");
166
- const hydrateFile = `/__hydrate?file=${encodeURIComponent(route.filePath)}`;
167
- html += `
232
+ // Only inject hydration script if enabled for this route.
233
+ // Hydration-disabled routes are purely static and require no JavaScript.
234
+ if (shouldHydrate) {
235
+ // Serialize loader and route data for the client. Must escape </script to prevent injection attacks.
236
+ // The client uses this data to reconstruct the component tree and populate props.
237
+ const frameworkDataStr = JSON.stringify(
238
+ { data, params, query },
239
+ null,
240
+ 2,
241
+ ).replace(/<\/script/gi, "<\\/script");
242
+ const hydrateFile = `/__hydrate?file=${encodeURIComponent(route.filePath)}`;
243
+ html += `
168
244
  <script id="__FRAMEWORK_DATA__" type="application/json">
169
245
  ${frameworkDataStr}
170
246
  </script>
@@ -174,10 +250,12 @@ ${headParts.join("\n")}
174
250
  hydrateClient(${JSON.stringify(hydrateFile)});
175
251
  initializeIslands();
176
252
  </script>`;
177
- }
178
- html += `
253
+ }
254
+ // Inject any additional scripts or markup configured to run at the end of body.
255
+ // Useful for analytics, telemetry, or polyfills that should load after DOM is ready.
256
+ html += `
179
257
  ${config.inject.bodyEnd.join("\n")}
180
258
  </body>
181
259
  </html>`;
182
- return html;
260
+ return html;
183
261
  }