create-jen-app 1.2.2 → 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 (588) 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/server.js +4 -6
  157. package/templates/static/site/(home).tsx +30 -12
  158. package/templates/static/site/styles/global.scss +89 -78
  159. package/templates/static/tsconfig.json +39 -39
  160. package/templates/static/node_modules/.bin/esbuild +0 -16
  161. package/templates/static/node_modules/.bin/esbuild.cmd +0 -17
  162. package/templates/static/node_modules/.bin/esbuild.ps1 +0 -28
  163. package/templates/static/node_modules/.bin/tsc +0 -16
  164. package/templates/static/node_modules/.bin/tsc.cmd +0 -17
  165. package/templates/static/node_modules/.bin/tsc.ps1 +0 -28
  166. package/templates/static/node_modules/.bin/tsserver +0 -16
  167. package/templates/static/node_modules/.bin/tsserver.cmd +0 -17
  168. package/templates/static/node_modules/.bin/tsserver.ps1 +0 -28
  169. package/templates/static/node_modules/.jen/cache/B__Jen.js_packages_create-jen-app_templates_static_site_(home).tsx.mjs +0 -14
  170. package/templates/static/node_modules/.jen/cache/B__Jen.js_packages_create-jen-app_yo_site_(home).tsx.mjs +0 -11
  171. package/templates/static/node_modules/.package-lock.json +0 -585
  172. package/templates/static/node_modules/@esbuild/win32-x64/README.md +0 -3
  173. package/templates/static/node_modules/@esbuild/win32-x64/esbuild.exe +0 -0
  174. package/templates/static/node_modules/@esbuild/win32-x64/package.json +0 -20
  175. package/templates/static/node_modules/@jenjs/master/README.md +0 -24
  176. package/templates/static/node_modules/@jenjs/master/index.js +0 -3655
  177. package/templates/static/node_modules/@jenjs/master/package.json +0 -36
  178. package/templates/static/node_modules/@polka/url/build.js +0 -49
  179. package/templates/static/node_modules/@polka/url/build.mjs +0 -47
  180. package/templates/static/node_modules/@polka/url/index.d.ts +0 -11
  181. package/templates/static/node_modules/@polka/url/package.json +0 -30
  182. package/templates/static/node_modules/@polka/url/readme.md +0 -68
  183. package/templates/static/node_modules/@types/node/LICENSE +0 -21
  184. package/templates/static/node_modules/@types/node/README.md +0 -15
  185. package/templates/static/node_modules/@types/node/assert/strict.d.ts +0 -111
  186. package/templates/static/node_modules/@types/node/assert.d.ts +0 -1078
  187. package/templates/static/node_modules/@types/node/async_hooks.d.ts +0 -603
  188. package/templates/static/node_modules/@types/node/buffer.buffer.d.ts +0 -472
  189. package/templates/static/node_modules/@types/node/buffer.d.ts +0 -1934
  190. package/templates/static/node_modules/@types/node/child_process.d.ts +0 -1476
  191. package/templates/static/node_modules/@types/node/cluster.d.ts +0 -578
  192. package/templates/static/node_modules/@types/node/compatibility/disposable.d.ts +0 -14
  193. package/templates/static/node_modules/@types/node/compatibility/index.d.ts +0 -9
  194. package/templates/static/node_modules/@types/node/compatibility/indexable.d.ts +0 -20
  195. package/templates/static/node_modules/@types/node/compatibility/iterators.d.ts +0 -20
  196. package/templates/static/node_modules/@types/node/console.d.ts +0 -452
  197. package/templates/static/node_modules/@types/node/constants.d.ts +0 -21
  198. package/templates/static/node_modules/@types/node/crypto.d.ts +0 -4545
  199. package/templates/static/node_modules/@types/node/dgram.d.ts +0 -600
  200. package/templates/static/node_modules/@types/node/diagnostics_channel.d.ts +0 -578
  201. package/templates/static/node_modules/@types/node/dns/promises.d.ts +0 -503
  202. package/templates/static/node_modules/@types/node/dns.d.ts +0 -923
  203. package/templates/static/node_modules/@types/node/domain.d.ts +0 -170
  204. package/templates/static/node_modules/@types/node/events.d.ts +0 -976
  205. package/templates/static/node_modules/@types/node/fs/promises.d.ts +0 -1295
  206. package/templates/static/node_modules/@types/node/fs.d.ts +0 -4461
  207. package/templates/static/node_modules/@types/node/globals.d.ts +0 -172
  208. package/templates/static/node_modules/@types/node/globals.typedarray.d.ts +0 -38
  209. package/templates/static/node_modules/@types/node/http.d.ts +0 -2089
  210. package/templates/static/node_modules/@types/node/http2.d.ts +0 -2644
  211. package/templates/static/node_modules/@types/node/https.d.ts +0 -579
  212. package/templates/static/node_modules/@types/node/index.d.ts +0 -97
  213. package/templates/static/node_modules/@types/node/inspector.d.ts +0 -253
  214. package/templates/static/node_modules/@types/node/inspector.generated.d.ts +0 -4052
  215. package/templates/static/node_modules/@types/node/module.d.ts +0 -891
  216. package/templates/static/node_modules/@types/node/net.d.ts +0 -1057
  217. package/templates/static/node_modules/@types/node/os.d.ts +0 -506
  218. package/templates/static/node_modules/@types/node/package.json +0 -145
  219. package/templates/static/node_modules/@types/node/path.d.ts +0 -200
  220. package/templates/static/node_modules/@types/node/perf_hooks.d.ts +0 -968
  221. package/templates/static/node_modules/@types/node/process.d.ts +0 -2089
  222. package/templates/static/node_modules/@types/node/punycode.d.ts +0 -117
  223. package/templates/static/node_modules/@types/node/querystring.d.ts +0 -152
  224. package/templates/static/node_modules/@types/node/readline/promises.d.ts +0 -161
  225. package/templates/static/node_modules/@types/node/readline.d.ts +0 -594
  226. package/templates/static/node_modules/@types/node/repl.d.ts +0 -428
  227. package/templates/static/node_modules/@types/node/sea.d.ts +0 -153
  228. package/templates/static/node_modules/@types/node/sqlite.d.ts +0 -721
  229. package/templates/static/node_modules/@types/node/stream/consumers.d.ts +0 -38
  230. package/templates/static/node_modules/@types/node/stream/promises.d.ts +0 -90
  231. package/templates/static/node_modules/@types/node/stream/web.d.ts +0 -622
  232. package/templates/static/node_modules/@types/node/stream.d.ts +0 -1664
  233. package/templates/static/node_modules/@types/node/string_decoder.d.ts +0 -67
  234. package/templates/static/node_modules/@types/node/test.d.ts +0 -2163
  235. package/templates/static/node_modules/@types/node/timers/promises.d.ts +0 -108
  236. package/templates/static/node_modules/@types/node/timers.d.ts +0 -287
  237. package/templates/static/node_modules/@types/node/tls.d.ts +0 -1319
  238. package/templates/static/node_modules/@types/node/trace_events.d.ts +0 -197
  239. package/templates/static/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -468
  240. package/templates/static/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -34
  241. package/templates/static/node_modules/@types/node/ts5.6/index.d.ts +0 -97
  242. package/templates/static/node_modules/@types/node/tty.d.ts +0 -208
  243. package/templates/static/node_modules/@types/node/url.d.ts +0 -984
  244. package/templates/static/node_modules/@types/node/util.d.ts +0 -2606
  245. package/templates/static/node_modules/@types/node/v8.d.ts +0 -920
  246. package/templates/static/node_modules/@types/node/vm.d.ts +0 -1000
  247. package/templates/static/node_modules/@types/node/wasi.d.ts +0 -181
  248. package/templates/static/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -34
  249. package/templates/static/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
  250. package/templates/static/node_modules/@types/node/web-globals/events.d.ts +0 -97
  251. package/templates/static/node_modules/@types/node/web-globals/fetch.d.ts +0 -55
  252. package/templates/static/node_modules/@types/node/web-globals/navigator.d.ts +0 -22
  253. package/templates/static/node_modules/@types/node/web-globals/storage.d.ts +0 -24
  254. package/templates/static/node_modules/@types/node/worker_threads.d.ts +0 -784
  255. package/templates/static/node_modules/@types/node/zlib.d.ts +0 -683
  256. package/templates/static/node_modules/esbuild/LICENSE.md +0 -21
  257. package/templates/static/node_modules/esbuild/README.md +0 -3
  258. package/templates/static/node_modules/esbuild/bin/esbuild +0 -223
  259. package/templates/static/node_modules/esbuild/install.js +0 -289
  260. package/templates/static/node_modules/esbuild/lib/main.d.ts +0 -716
  261. package/templates/static/node_modules/esbuild/lib/main.js +0 -2242
  262. package/templates/static/node_modules/esbuild/package.json +0 -49
  263. package/templates/static/node_modules/mrmime/index.d.ts +0 -2
  264. package/templates/static/node_modules/mrmime/index.js +0 -449
  265. package/templates/static/node_modules/mrmime/index.mjs +0 -448
  266. package/templates/static/node_modules/mrmime/license +0 -21
  267. package/templates/static/node_modules/mrmime/package.json +0 -44
  268. package/templates/static/node_modules/mrmime/readme.md +0 -130
  269. package/templates/static/node_modules/preact/LICENSE +0 -21
  270. package/templates/static/node_modules/preact/README.md +0 -185
  271. package/templates/static/node_modules/preact/compat/client.d.ts +0 -13
  272. package/templates/static/node_modules/preact/compat/client.js +0 -21
  273. package/templates/static/node_modules/preact/compat/client.mjs +0 -24
  274. package/templates/static/node_modules/preact/compat/dist/compat.js +0 -2
  275. package/templates/static/node_modules/preact/compat/dist/compat.js.map +0 -1
  276. package/templates/static/node_modules/preact/compat/dist/compat.mjs +0 -2
  277. package/templates/static/node_modules/preact/compat/dist/compat.module.js +0 -2
  278. package/templates/static/node_modules/preact/compat/dist/compat.module.js.map +0 -1
  279. package/templates/static/node_modules/preact/compat/dist/compat.umd.js +0 -2
  280. package/templates/static/node_modules/preact/compat/dist/compat.umd.js.map +0 -1
  281. package/templates/static/node_modules/preact/compat/jsx-dev-runtime.js +0 -3
  282. package/templates/static/node_modules/preact/compat/jsx-dev-runtime.mjs +0 -3
  283. package/templates/static/node_modules/preact/compat/jsx-runtime.js +0 -3
  284. package/templates/static/node_modules/preact/compat/jsx-runtime.mjs +0 -3
  285. package/templates/static/node_modules/preact/compat/package.json +0 -55
  286. package/templates/static/node_modules/preact/compat/scheduler.js +0 -15
  287. package/templates/static/node_modules/preact/compat/scheduler.mjs +0 -23
  288. package/templates/static/node_modules/preact/compat/server.browser.js +0 -11
  289. package/templates/static/node_modules/preact/compat/server.js +0 -36
  290. package/templates/static/node_modules/preact/compat/server.mjs +0 -17
  291. package/templates/static/node_modules/preact/compat/src/Children.js +0 -21
  292. package/templates/static/node_modules/preact/compat/src/PureComponent.js +0 -16
  293. package/templates/static/node_modules/preact/compat/src/forwardRef.js +0 -44
  294. package/templates/static/node_modules/preact/compat/src/hooks.js +0 -70
  295. package/templates/static/node_modules/preact/compat/src/index.d.ts +0 -351
  296. package/templates/static/node_modules/preact/compat/src/index.js +0 -238
  297. package/templates/static/node_modules/preact/compat/src/internal.d.ts +0 -48
  298. package/templates/static/node_modules/preact/compat/src/memo.js +0 -35
  299. package/templates/static/node_modules/preact/compat/src/portals.js +0 -78
  300. package/templates/static/node_modules/preact/compat/src/render.js +0 -313
  301. package/templates/static/node_modules/preact/compat/src/suspense-list.d.ts +0 -16
  302. package/templates/static/node_modules/preact/compat/src/suspense-list.js +0 -127
  303. package/templates/static/node_modules/preact/compat/src/suspense.d.ts +0 -19
  304. package/templates/static/node_modules/preact/compat/src/suspense.js +0 -291
  305. package/templates/static/node_modules/preact/compat/src/util.js +0 -33
  306. package/templates/static/node_modules/preact/compat/test-utils.js +0 -1
  307. package/templates/static/node_modules/preact/compat/test-utils.mjs +0 -1
  308. package/templates/static/node_modules/preact/debug/dist/debug.js +0 -2
  309. package/templates/static/node_modules/preact/debug/dist/debug.js.map +0 -1
  310. package/templates/static/node_modules/preact/debug/dist/debug.mjs +0 -2
  311. package/templates/static/node_modules/preact/debug/dist/debug.module.js +0 -2
  312. package/templates/static/node_modules/preact/debug/dist/debug.module.js.map +0 -1
  313. package/templates/static/node_modules/preact/debug/dist/debug.umd.js +0 -2
  314. package/templates/static/node_modules/preact/debug/dist/debug.umd.js.map +0 -1
  315. package/templates/static/node_modules/preact/debug/package.json +0 -27
  316. package/templates/static/node_modules/preact/debug/src/check-props.js +0 -54
  317. package/templates/static/node_modules/preact/debug/src/component-stack.js +0 -146
  318. package/templates/static/node_modules/preact/debug/src/constants.js +0 -3
  319. package/templates/static/node_modules/preact/debug/src/debug.js +0 -593
  320. package/templates/static/node_modules/preact/debug/src/index.d.ts +0 -23
  321. package/templates/static/node_modules/preact/debug/src/index.js +0 -12
  322. package/templates/static/node_modules/preact/debug/src/internal.d.ts +0 -82
  323. package/templates/static/node_modules/preact/debug/src/util.js +0 -15
  324. package/templates/static/node_modules/preact/devtools/dist/devtools.js +0 -2
  325. package/templates/static/node_modules/preact/devtools/dist/devtools.js.map +0 -1
  326. package/templates/static/node_modules/preact/devtools/dist/devtools.mjs +0 -2
  327. package/templates/static/node_modules/preact/devtools/dist/devtools.module.js +0 -2
  328. package/templates/static/node_modules/preact/devtools/dist/devtools.module.js.map +0 -1
  329. package/templates/static/node_modules/preact/devtools/dist/devtools.umd.js +0 -2
  330. package/templates/static/node_modules/preact/devtools/dist/devtools.umd.js.map +0 -1
  331. package/templates/static/node_modules/preact/devtools/package.json +0 -25
  332. package/templates/static/node_modules/preact/devtools/src/devtools.js +0 -21
  333. package/templates/static/node_modules/preact/devtools/src/index.d.ts +0 -8
  334. package/templates/static/node_modules/preact/devtools/src/index.js +0 -15
  335. package/templates/static/node_modules/preact/dist/preact.js +0 -2
  336. package/templates/static/node_modules/preact/dist/preact.js.map +0 -1
  337. package/templates/static/node_modules/preact/dist/preact.min.js +0 -2
  338. package/templates/static/node_modules/preact/dist/preact.min.js.map +0 -1
  339. package/templates/static/node_modules/preact/dist/preact.min.module.js +0 -2
  340. package/templates/static/node_modules/preact/dist/preact.min.module.js.map +0 -1
  341. package/templates/static/node_modules/preact/dist/preact.min.umd.js +0 -2
  342. package/templates/static/node_modules/preact/dist/preact.min.umd.js.map +0 -1
  343. package/templates/static/node_modules/preact/dist/preact.mjs +0 -2
  344. package/templates/static/node_modules/preact/dist/preact.module.js +0 -2
  345. package/templates/static/node_modules/preact/dist/preact.module.js.map +0 -1
  346. package/templates/static/node_modules/preact/dist/preact.umd.js +0 -2
  347. package/templates/static/node_modules/preact/dist/preact.umd.js.map +0 -1
  348. package/templates/static/node_modules/preact/hooks/dist/hooks.js +0 -2
  349. package/templates/static/node_modules/preact/hooks/dist/hooks.js.map +0 -1
  350. package/templates/static/node_modules/preact/hooks/dist/hooks.mjs +0 -2
  351. package/templates/static/node_modules/preact/hooks/dist/hooks.module.js +0 -2
  352. package/templates/static/node_modules/preact/hooks/dist/hooks.module.js.map +0 -1
  353. package/templates/static/node_modules/preact/hooks/dist/hooks.umd.js +0 -2
  354. package/templates/static/node_modules/preact/hooks/dist/hooks.umd.js.map +0 -1
  355. package/templates/static/node_modules/preact/hooks/package.json +0 -35
  356. package/templates/static/node_modules/preact/hooks/src/index.d.ts +0 -145
  357. package/templates/static/node_modules/preact/hooks/src/index.js +0 -555
  358. package/templates/static/node_modules/preact/hooks/src/internal.d.ts +0 -103
  359. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.js +0 -2
  360. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.js.map +0 -1
  361. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.mjs +0 -2
  362. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js +0 -2
  363. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js.map +0 -1
  364. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.umd.js +0 -2
  365. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.umd.js.map +0 -1
  366. package/templates/static/node_modules/preact/jsx-runtime/package.json +0 -28
  367. package/templates/static/node_modules/preact/jsx-runtime/src/index.d.ts +0 -62
  368. package/templates/static/node_modules/preact/jsx-runtime/src/index.js +0 -206
  369. package/templates/static/node_modules/preact/jsx-runtime/src/utils.js +0 -36
  370. package/templates/static/node_modules/preact/package.json +0 -258
  371. package/templates/static/node_modules/preact/src/cjs.js +0 -3
  372. package/templates/static/node_modules/preact/src/clone-element.js +0 -48
  373. package/templates/static/node_modules/preact/src/component.js +0 -249
  374. package/templates/static/node_modules/preact/src/constants.js +0 -22
  375. package/templates/static/node_modules/preact/src/create-context.js +0 -60
  376. package/templates/static/node_modules/preact/src/create-element.js +0 -97
  377. package/templates/static/node_modules/preact/src/diff/catch-error.js +0 -46
  378. package/templates/static/node_modules/preact/src/diff/children.js +0 -451
  379. package/templates/static/node_modules/preact/src/diff/index.js +0 -684
  380. package/templates/static/node_modules/preact/src/diff/props.js +0 -173
  381. package/templates/static/node_modules/preact/src/dom.d.ts +0 -2476
  382. package/templates/static/node_modules/preact/src/index-5.d.ts +0 -399
  383. package/templates/static/node_modules/preact/src/index.d.ts +0 -402
  384. package/templates/static/node_modules/preact/src/index.js +0 -13
  385. package/templates/static/node_modules/preact/src/internal.d.ts +0 -190
  386. package/templates/static/node_modules/preact/src/jsx.d.ts +0 -2878
  387. package/templates/static/node_modules/preact/src/options.js +0 -16
  388. package/templates/static/node_modules/preact/src/render.js +0 -78
  389. package/templates/static/node_modules/preact/src/util.js +0 -28
  390. package/templates/static/node_modules/preact/test-utils/dist/testUtils.js +0 -2
  391. package/templates/static/node_modules/preact/test-utils/dist/testUtils.js.map +0 -1
  392. package/templates/static/node_modules/preact/test-utils/dist/testUtils.mjs +0 -2
  393. package/templates/static/node_modules/preact/test-utils/dist/testUtils.module.js +0 -2
  394. package/templates/static/node_modules/preact/test-utils/dist/testUtils.module.js.map +0 -1
  395. package/templates/static/node_modules/preact/test-utils/dist/testUtils.umd.js +0 -2
  396. package/templates/static/node_modules/preact/test-utils/dist/testUtils.umd.js.map +0 -1
  397. package/templates/static/node_modules/preact/test-utils/package.json +0 -28
  398. package/templates/static/node_modules/preact/test-utils/src/index.d.ts +0 -3
  399. package/templates/static/node_modules/preact/test-utils/src/index.js +0 -129
  400. package/templates/static/node_modules/preact-render-to-string/LICENSE +0 -21
  401. package/templates/static/node_modules/preact-render-to-string/README.md +0 -149
  402. package/templates/static/node_modules/preact-render-to-string/dist/commonjs.js +0 -2
  403. package/templates/static/node_modules/preact-render-to-string/dist/index.d.ts +0 -17
  404. package/templates/static/node_modules/preact-render-to-string/dist/index.js +0 -6
  405. package/templates/static/node_modules/preact-render-to-string/dist/index.js.map +0 -1
  406. package/templates/static/node_modules/preact-render-to-string/dist/index.mjs +0 -2
  407. package/templates/static/node_modules/preact-render-to-string/dist/index.module.js +0 -2
  408. package/templates/static/node_modules/preact-render-to-string/dist/index.module.js.map +0 -1
  409. package/templates/static/node_modules/preact-render-to-string/dist/index.umd.js +0 -2
  410. package/templates/static/node_modules/preact-render-to-string/dist/index.umd.js.map +0 -1
  411. package/templates/static/node_modules/preact-render-to-string/dist/internal.d.ts +0 -35
  412. package/templates/static/node_modules/preact-render-to-string/dist/jsx/commonjs.js +0 -2
  413. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.js +0 -4
  414. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.js.map +0 -1
  415. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.mjs +0 -2
  416. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.module.js +0 -2
  417. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.module.js.map +0 -1
  418. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.umd.js +0 -2
  419. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.umd.js.map +0 -1
  420. package/templates/static/node_modules/preact-render-to-string/dist/jsx.d.ts +0 -24
  421. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.js +0 -2
  422. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.js.map +0 -1
  423. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.mjs +0 -2
  424. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.module.js +0 -2
  425. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.module.js.map +0 -1
  426. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.umd.js +0 -2
  427. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.umd.js.map +0 -1
  428. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.js +0 -884
  429. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.js.map +0 -1
  430. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.mjs +0 -884
  431. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.module.js +0 -884
  432. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.module.js.map +0 -1
  433. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.umd.js +0 -888
  434. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.umd.js.map +0 -1
  435. package/templates/static/node_modules/preact-render-to-string/dist/stream-node.d.ts +0 -19
  436. package/templates/static/node_modules/preact-render-to-string/dist/stream.d.ts +0 -10
  437. package/templates/static/node_modules/preact-render-to-string/jsx.d.ts +0 -24
  438. package/templates/static/node_modules/preact-render-to-string/jsx.js +0 -1
  439. package/templates/static/node_modules/preact-render-to-string/package.json +0 -152
  440. package/templates/static/node_modules/preact-render-to-string/src/index.d.ts +0 -17
  441. package/templates/static/node_modules/preact-render-to-string/src/index.js +0 -764
  442. package/templates/static/node_modules/preact-render-to-string/src/internal.d.ts +0 -35
  443. package/templates/static/node_modules/preact-render-to-string/src/jsx.d.ts +0 -24
  444. package/templates/static/node_modules/preact-render-to-string/src/jsx.js +0 -102
  445. package/templates/static/node_modules/preact-render-to-string/src/lib/chunked.js +0 -97
  446. package/templates/static/node_modules/preact-render-to-string/src/lib/client.js +0 -62
  447. package/templates/static/node_modules/preact-render-to-string/src/lib/constants.js +0 -20
  448. package/templates/static/node_modules/preact-render-to-string/src/lib/polyfills.js +0 -8
  449. package/templates/static/node_modules/preact-render-to-string/src/lib/util.js +0 -208
  450. package/templates/static/node_modules/preact-render-to-string/src/pretty.js +0 -491
  451. package/templates/static/node_modules/preact-render-to-string/src/stream-node.d.ts +0 -19
  452. package/templates/static/node_modules/preact-render-to-string/src/stream-node.js +0 -84
  453. package/templates/static/node_modules/preact-render-to-string/src/stream.d.ts +0 -10
  454. package/templates/static/node_modules/preact-render-to-string/src/stream.js +0 -43
  455. package/templates/static/node_modules/preact-render-to-string/typings.json +0 -5
  456. package/templates/static/node_modules/sirv/build.js +0 -197
  457. package/templates/static/node_modules/sirv/build.mjs +0 -197
  458. package/templates/static/node_modules/sirv/index.d.mts +0 -29
  459. package/templates/static/node_modules/sirv/index.d.ts +0 -33
  460. package/templates/static/node_modules/sirv/package.json +0 -40
  461. package/templates/static/node_modules/sirv/readme.md +0 -238
  462. package/templates/static/node_modules/totalist/dist/index.js +0 -24
  463. package/templates/static/node_modules/totalist/dist/index.mjs +0 -22
  464. package/templates/static/node_modules/totalist/index.d.ts +0 -3
  465. package/templates/static/node_modules/totalist/license +0 -21
  466. package/templates/static/node_modules/totalist/package.json +0 -55
  467. package/templates/static/node_modules/totalist/readme.md +0 -109
  468. package/templates/static/node_modules/totalist/sync/index.d.ts +0 -3
  469. package/templates/static/node_modules/totalist/sync/index.js +0 -17
  470. package/templates/static/node_modules/totalist/sync/index.mjs +0 -15
  471. package/templates/static/node_modules/typescript/bin/tsc +0 -2
  472. package/templates/static/node_modules/typescript/bin/tsserver +0 -2
  473. package/templates/static/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
  474. package/templates/static/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
  475. package/templates/static/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
  476. package/templates/static/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
  477. package/templates/static/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
  478. package/templates/static/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
  479. package/templates/static/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
  480. package/templates/static/node_modules/typescript/lib/lib.d.ts +0 -22
  481. package/templates/static/node_modules/typescript/lib/lib.decorators.d.ts +0 -384
  482. package/templates/static/node_modules/typescript/lib/lib.decorators.legacy.d.ts +0 -22
  483. package/templates/static/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +0 -41
  484. package/templates/static/node_modules/typescript/lib/lib.dom.d.ts +0 -39429
  485. package/templates/static/node_modules/typescript/lib/lib.dom.iterable.d.ts +0 -571
  486. package/templates/static/node_modules/typescript/lib/lib.es2015.collection.d.ts +0 -147
  487. package/templates/static/node_modules/typescript/lib/lib.es2015.core.d.ts +0 -597
  488. package/templates/static/node_modules/typescript/lib/lib.es2015.d.ts +0 -28
  489. package/templates/static/node_modules/typescript/lib/lib.es2015.generator.d.ts +0 -77
  490. package/templates/static/node_modules/typescript/lib/lib.es2015.iterable.d.ts +0 -605
  491. package/templates/static/node_modules/typescript/lib/lib.es2015.promise.d.ts +0 -81
  492. package/templates/static/node_modules/typescript/lib/lib.es2015.proxy.d.ts +0 -128
  493. package/templates/static/node_modules/typescript/lib/lib.es2015.reflect.d.ts +0 -144
  494. package/templates/static/node_modules/typescript/lib/lib.es2015.symbol.d.ts +0 -46
  495. package/templates/static/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -326
  496. package/templates/static/node_modules/typescript/lib/lib.es2016.array.include.d.ts +0 -116
  497. package/templates/static/node_modules/typescript/lib/lib.es2016.d.ts +0 -21
  498. package/templates/static/node_modules/typescript/lib/lib.es2016.full.d.ts +0 -23
  499. package/templates/static/node_modules/typescript/lib/lib.es2016.intl.d.ts +0 -31
  500. package/templates/static/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +0 -21
  501. package/templates/static/node_modules/typescript/lib/lib.es2017.d.ts +0 -26
  502. package/templates/static/node_modules/typescript/lib/lib.es2017.date.d.ts +0 -31
  503. package/templates/static/node_modules/typescript/lib/lib.es2017.full.d.ts +0 -23
  504. package/templates/static/node_modules/typescript/lib/lib.es2017.intl.d.ts +0 -44
  505. package/templates/static/node_modules/typescript/lib/lib.es2017.object.d.ts +0 -49
  506. package/templates/static/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +0 -135
  507. package/templates/static/node_modules/typescript/lib/lib.es2017.string.d.ts +0 -45
  508. package/templates/static/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +0 -53
  509. package/templates/static/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -77
  510. package/templates/static/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +0 -53
  511. package/templates/static/node_modules/typescript/lib/lib.es2018.d.ts +0 -24
  512. package/templates/static/node_modules/typescript/lib/lib.es2018.full.d.ts +0 -24
  513. package/templates/static/node_modules/typescript/lib/lib.es2018.intl.d.ts +0 -83
  514. package/templates/static/node_modules/typescript/lib/lib.es2018.promise.d.ts +0 -30
  515. package/templates/static/node_modules/typescript/lib/lib.es2018.regexp.d.ts +0 -37
  516. package/templates/static/node_modules/typescript/lib/lib.es2019.array.d.ts +0 -79
  517. package/templates/static/node_modules/typescript/lib/lib.es2019.d.ts +0 -24
  518. package/templates/static/node_modules/typescript/lib/lib.es2019.full.d.ts +0 -24
  519. package/templates/static/node_modules/typescript/lib/lib.es2019.intl.d.ts +0 -23
  520. package/templates/static/node_modules/typescript/lib/lib.es2019.object.d.ts +0 -33
  521. package/templates/static/node_modules/typescript/lib/lib.es2019.string.d.ts +0 -37
  522. package/templates/static/node_modules/typescript/lib/lib.es2019.symbol.d.ts +0 -24
  523. package/templates/static/node_modules/typescript/lib/lib.es2020.bigint.d.ts +0 -765
  524. package/templates/static/node_modules/typescript/lib/lib.es2020.d.ts +0 -27
  525. package/templates/static/node_modules/typescript/lib/lib.es2020.date.d.ts +0 -42
  526. package/templates/static/node_modules/typescript/lib/lib.es2020.full.d.ts +0 -24
  527. package/templates/static/node_modules/typescript/lib/lib.es2020.intl.d.ts +0 -474
  528. package/templates/static/node_modules/typescript/lib/lib.es2020.number.d.ts +0 -28
  529. package/templates/static/node_modules/typescript/lib/lib.es2020.promise.d.ts +0 -47
  530. package/templates/static/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +0 -99
  531. package/templates/static/node_modules/typescript/lib/lib.es2020.string.d.ts +0 -44
  532. package/templates/static/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -41
  533. package/templates/static/node_modules/typescript/lib/lib.es2021.d.ts +0 -23
  534. package/templates/static/node_modules/typescript/lib/lib.es2021.full.d.ts +0 -24
  535. package/templates/static/node_modules/typescript/lib/lib.es2021.intl.d.ts +0 -166
  536. package/templates/static/node_modules/typescript/lib/lib.es2021.promise.d.ts +0 -48
  537. package/templates/static/node_modules/typescript/lib/lib.es2021.string.d.ts +0 -33
  538. package/templates/static/node_modules/typescript/lib/lib.es2021.weakref.d.ts +0 -78
  539. package/templates/static/node_modules/typescript/lib/lib.es2022.array.d.ts +0 -121
  540. package/templates/static/node_modules/typescript/lib/lib.es2022.d.ts +0 -25
  541. package/templates/static/node_modules/typescript/lib/lib.es2022.error.d.ts +0 -75
  542. package/templates/static/node_modules/typescript/lib/lib.es2022.full.d.ts +0 -24
  543. package/templates/static/node_modules/typescript/lib/lib.es2022.intl.d.ts +0 -145
  544. package/templates/static/node_modules/typescript/lib/lib.es2022.object.d.ts +0 -26
  545. package/templates/static/node_modules/typescript/lib/lib.es2022.regexp.d.ts +0 -39
  546. package/templates/static/node_modules/typescript/lib/lib.es2022.string.d.ts +0 -25
  547. package/templates/static/node_modules/typescript/lib/lib.es2023.array.d.ts +0 -924
  548. package/templates/static/node_modules/typescript/lib/lib.es2023.collection.d.ts +0 -21
  549. package/templates/static/node_modules/typescript/lib/lib.es2023.d.ts +0 -22
  550. package/templates/static/node_modules/typescript/lib/lib.es2023.full.d.ts +0 -24
  551. package/templates/static/node_modules/typescript/lib/lib.es2023.intl.d.ts +0 -56
  552. package/templates/static/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +0 -65
  553. package/templates/static/node_modules/typescript/lib/lib.es2024.collection.d.ts +0 -29
  554. package/templates/static/node_modules/typescript/lib/lib.es2024.d.ts +0 -26
  555. package/templates/static/node_modules/typescript/lib/lib.es2024.full.d.ts +0 -24
  556. package/templates/static/node_modules/typescript/lib/lib.es2024.object.d.ts +0 -29
  557. package/templates/static/node_modules/typescript/lib/lib.es2024.promise.d.ts +0 -35
  558. package/templates/static/node_modules/typescript/lib/lib.es2024.regexp.d.ts +0 -25
  559. package/templates/static/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +0 -68
  560. package/templates/static/node_modules/typescript/lib/lib.es2024.string.d.ts +0 -29
  561. package/templates/static/node_modules/typescript/lib/lib.es5.d.ts +0 -4601
  562. package/templates/static/node_modules/typescript/lib/lib.es6.d.ts +0 -23
  563. package/templates/static/node_modules/typescript/lib/lib.esnext.array.d.ts +0 -35
  564. package/templates/static/node_modules/typescript/lib/lib.esnext.collection.d.ts +0 -96
  565. package/templates/static/node_modules/typescript/lib/lib.esnext.d.ts +0 -29
  566. package/templates/static/node_modules/typescript/lib/lib.esnext.decorators.d.ts +0 -28
  567. package/templates/static/node_modules/typescript/lib/lib.esnext.disposable.d.ts +0 -193
  568. package/templates/static/node_modules/typescript/lib/lib.esnext.error.d.ts +0 -24
  569. package/templates/static/node_modules/typescript/lib/lib.esnext.float16.d.ts +0 -445
  570. package/templates/static/node_modules/typescript/lib/lib.esnext.full.d.ts +0 -24
  571. package/templates/static/node_modules/typescript/lib/lib.esnext.intl.d.ts +0 -21
  572. package/templates/static/node_modules/typescript/lib/lib.esnext.iterator.d.ts +0 -148
  573. package/templates/static/node_modules/typescript/lib/lib.esnext.promise.d.ts +0 -34
  574. package/templates/static/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +0 -25
  575. package/templates/static/node_modules/typescript/lib/lib.scripthost.d.ts +0 -322
  576. package/templates/static/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +0 -41
  577. package/templates/static/node_modules/typescript/lib/lib.webworker.d.ts +0 -13150
  578. package/templates/static/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +0 -23
  579. package/templates/static/node_modules/typescript/lib/lib.webworker.iterable.d.ts +0 -340
  580. package/templates/static/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
  581. package/templates/static/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
  582. package/templates/static/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
  583. package/templates/static/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
  584. package/templates/static/node_modules/typescript/lib/tsc.js +0 -8
  585. package/templates/static/node_modules/typescript/lib/tsserver.js +0 -8
  586. package/templates/static/node_modules/typescript/lib/tsserverlibrary.d.ts +0 -17
  587. package/templates/static/node_modules/typescript/lib/tsserverlibrary.js +0 -21
  588. 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
  }