create-jen-app 1.2.2 → 1.2.4

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 (861) hide show
  1. package/README.md +3 -1
  2. package/dist/colors.js +0 -17
  3. package/dist/create.js +5 -17
  4. package/dist/generator.js +14 -31
  5. package/package.json +2 -2
  6. package/templates/ssr-isr/README.md +77 -0
  7. package/templates/ssr-isr/build.js +118 -0
  8. package/templates/ssr-isr/jen.config.ts +109 -0
  9. package/templates/ssr-isr/jenjs.d.ts +22 -0
  10. package/templates/ssr-isr/lib/api/(hello).d.ts +7 -0
  11. package/templates/ssr-isr/lib/api/(hello).js +9 -0
  12. package/templates/ssr-isr/lib/auth/cookie-utils.d.ts +33 -0
  13. package/templates/ssr-isr/lib/auth/cookie-utils.js +79 -0
  14. package/templates/ssr-isr/lib/auth/index.js +2 -0
  15. package/templates/ssr-isr/lib/auth/jwt.d.ts +30 -0
  16. package/templates/ssr-isr/lib/auth/jwt.js +57 -0
  17. package/templates/ssr-isr/lib/auth/session.d.ts +44 -0
  18. package/templates/ssr-isr/lib/auth/session.js +92 -0
  19. package/templates/ssr-isr/lib/build/asset-hashing.d.ts +10 -0
  20. package/templates/ssr-isr/lib/build/asset-hashing.js +25 -0
  21. package/templates/ssr-isr/lib/build/asset-manifest.d.ts +11 -0
  22. package/templates/ssr-isr/lib/build/asset-manifest.js +21 -0
  23. package/templates/ssr-isr/lib/build/build.d.ts +24 -0
  24. package/templates/ssr-isr/lib/build/build.js +141 -0
  25. package/templates/{static → ssr-isr}/lib/build/island-hydration.d.ts +8 -5
  26. package/templates/ssr-isr/lib/build/island-hydration.js +44 -0
  27. package/templates/ssr-isr/lib/build/minifier.d.ts +20 -0
  28. package/templates/ssr-isr/lib/build/minifier.js +46 -0
  29. package/templates/ssr-isr/lib/build/page-renderer.d.ts +17 -0
  30. package/templates/ssr-isr/lib/build/page-renderer.js +28 -0
  31. package/templates/ssr-isr/lib/build/production-build.d.ts +10 -0
  32. package/templates/ssr-isr/lib/build/production-build.js +13 -0
  33. package/templates/ssr-isr/lib/build/ssg-pipeline.d.ts +15 -0
  34. package/templates/ssr-isr/lib/build/ssg-pipeline.js +113 -0
  35. package/templates/{static → ssr-isr}/lib/build-tools/build-site.d.ts +3 -3
  36. package/templates/ssr-isr/lib/build-tools/build-site.js +36 -0
  37. package/templates/ssr-isr/lib/cache/index.d.ts +10 -0
  38. package/templates/ssr-isr/lib/cache/index.js +10 -0
  39. package/templates/ssr-isr/lib/cache/memory.d.ts +33 -0
  40. package/templates/ssr-isr/lib/cache/memory.js +40 -0
  41. package/templates/ssr-isr/lib/cache/redis.d.ts +45 -0
  42. package/templates/ssr-isr/lib/cache/redis.js +61 -0
  43. package/templates/ssr-isr/lib/cli/banner.d.ts +5 -0
  44. package/templates/ssr-isr/lib/cli/banner.js +28 -0
  45. package/templates/ssr-isr/lib/cli/templates/ssg/jen.config.js +32 -0
  46. package/templates/ssr-isr/lib/cli/templates/ssg/site/index.js +9 -0
  47. package/templates/ssr-isr/lib/cli/templates/ssr/jen.config.js +32 -0
  48. package/templates/ssr-isr/lib/cli/templates/ssr/site/index.js +9 -0
  49. package/templates/ssr-isr/lib/compilers/esbuild-plugins.js +111 -0
  50. package/templates/ssr-isr/lib/compilers/svelte.d.ts +18 -0
  51. package/templates/ssr-isr/lib/compilers/svelte.js +44 -0
  52. package/templates/ssr-isr/lib/compilers/vue.d.ts +15 -0
  53. package/templates/ssr-isr/lib/compilers/vue.js +90 -0
  54. package/templates/ssr-isr/lib/core/config.d.ts +220 -0
  55. package/templates/ssr-isr/lib/core/http.d.ts +56 -0
  56. package/templates/ssr-isr/lib/core/http.js +71 -0
  57. package/templates/ssr-isr/lib/core/middleware-hooks.d.ts +219 -0
  58. package/templates/ssr-isr/lib/core/middleware-hooks.js +97 -0
  59. package/templates/ssr-isr/lib/core/paths.d.ts +44 -0
  60. package/templates/ssr-isr/lib/core/paths.js +39 -0
  61. package/templates/ssr-isr/lib/core/routes/match.d.ts +54 -0
  62. package/templates/ssr-isr/lib/core/routes/match.js +47 -0
  63. package/templates/ssr-isr/lib/core/routes/scan.d.ts +53 -0
  64. package/templates/ssr-isr/lib/core/routes/scan.js +190 -0
  65. package/templates/ssr-isr/lib/core/types.d.ts +153 -0
  66. package/templates/ssr-isr/lib/core/types.js +1 -0
  67. package/templates/ssr-isr/lib/css/compiler.d.ts +23 -0
  68. package/templates/ssr-isr/lib/css/compiler.js +74 -0
  69. package/templates/ssr-isr/lib/db/connector.d.ts +30 -0
  70. package/templates/ssr-isr/lib/db/connector.js +42 -0
  71. package/templates/ssr-isr/lib/db/drivers/jdb.d.ts +17 -0
  72. package/templates/ssr-isr/lib/db/drivers/jdb.js +44 -0
  73. package/templates/ssr-isr/lib/db/drivers/sql.d.ts +22 -0
  74. package/templates/ssr-isr/lib/db/drivers/sql.js +182 -0
  75. package/templates/ssr-isr/lib/db/index.d.ts +27 -0
  76. package/templates/ssr-isr/lib/db/index.js +48 -0
  77. package/templates/ssr-isr/lib/db/types.d.ts +33 -0
  78. package/templates/ssr-isr/lib/db/types.js +1 -0
  79. package/templates/ssr-isr/lib/graphql/index.d.ts +48 -0
  80. package/templates/ssr-isr/lib/graphql/index.js +52 -0
  81. package/templates/ssr-isr/lib/graphql/resolvers.d.ts +57 -0
  82. package/templates/ssr-isr/lib/graphql/resolvers.js +25 -0
  83. package/templates/ssr-isr/lib/graphql/schema.d.ts +35 -0
  84. package/templates/ssr-isr/lib/graphql/schema.js +35 -0
  85. package/templates/ssr-isr/lib/i18n/en.json +4 -0
  86. package/templates/ssr-isr/lib/i18n/es.json +4 -0
  87. package/templates/ssr-isr/lib/i18n/index.d.ts +8 -0
  88. package/templates/ssr-isr/lib/i18n/index.js +15 -0
  89. package/templates/ssr-isr/lib/import/jen-import.d.ts +56 -0
  90. package/templates/ssr-isr/lib/import/jen-import.js +161 -0
  91. package/templates/{static → ssr-isr}/lib/index.d.ts +42 -11
  92. package/templates/ssr-isr/lib/index.js +116 -0
  93. package/templates/ssr-isr/lib/jdb/engine.d.ts +38 -0
  94. package/templates/ssr-isr/lib/jdb/engine.js +275 -0
  95. package/templates/ssr-isr/lib/jdb/index.d.ts +34 -0
  96. package/templates/ssr-isr/lib/jdb/index.js +34 -0
  97. package/templates/ssr-isr/lib/jdb/types.d.ts +228 -0
  98. package/templates/ssr-isr/lib/jdb/types.js +1 -0
  99. package/templates/ssr-isr/lib/jdb/utils.d.ts +66 -0
  100. package/templates/ssr-isr/lib/jdb/utils.js +176 -0
  101. package/templates/ssr-isr/lib/middleware/builtins/body-parser.d.ts +16 -0
  102. package/templates/ssr-isr/lib/middleware/builtins/body-parser.js +56 -0
  103. package/templates/ssr-isr/lib/middleware/builtins/cors.d.ts +15 -0
  104. package/templates/ssr-isr/lib/middleware/builtins/cors.js +54 -0
  105. package/templates/ssr-isr/lib/middleware/builtins/logger.d.ts +19 -0
  106. package/templates/ssr-isr/lib/middleware/builtins/logger.js +34 -0
  107. package/templates/ssr-isr/lib/middleware/builtins/rate-limit.d.ts +22 -0
  108. package/templates/ssr-isr/lib/middleware/builtins/rate-limit.js +79 -0
  109. package/templates/ssr-isr/lib/middleware/builtins/request-id.d.ts +19 -0
  110. package/templates/ssr-isr/lib/middleware/builtins/request-id.js +29 -0
  111. package/templates/ssr-isr/lib/middleware/builtins/security-headers.d.ts +19 -0
  112. package/templates/ssr-isr/lib/middleware/builtins/security-headers.js +53 -0
  113. package/templates/ssr-isr/lib/middleware/context.d.ts +105 -0
  114. package/templates/ssr-isr/lib/middleware/context.js +124 -0
  115. package/templates/ssr-isr/lib/middleware/decorators.d.ts +19 -0
  116. package/templates/ssr-isr/lib/middleware/decorators.js +93 -0
  117. package/templates/ssr-isr/lib/middleware/errors/handler.js +46 -0
  118. package/templates/ssr-isr/lib/middleware/errors/http-error.d.ts +5 -0
  119. package/templates/ssr-isr/lib/middleware/errors/http-error.js +10 -0
  120. package/templates/ssr-isr/lib/middleware/kernel.d.ts +69 -0
  121. package/templates/ssr-isr/lib/middleware/kernel.js +85 -0
  122. package/templates/ssr-isr/lib/middleware/pipeline.d.ts +53 -0
  123. package/templates/ssr-isr/lib/middleware/pipeline.js +148 -0
  124. package/templates/ssr-isr/lib/middleware/registry.d.ts +69 -0
  125. package/templates/ssr-isr/lib/middleware/registry.js +85 -0
  126. package/templates/ssr-isr/lib/middleware/response.d.ts +75 -0
  127. package/templates/ssr-isr/lib/middleware/response.js +107 -0
  128. package/templates/ssr-isr/lib/middleware/types.d.ts +1 -0
  129. package/templates/ssr-isr/lib/middleware/types.js +1 -0
  130. package/templates/ssr-isr/lib/middleware/utils/matcher.js +13 -0
  131. package/templates/ssr-isr/lib/native/bundle.d.ts +24 -0
  132. package/templates/ssr-isr/lib/native/bundle.js +22 -0
  133. package/templates/ssr-isr/lib/native/dev-server.d.ts +13 -0
  134. package/templates/ssr-isr/lib/native/dev-server.js +23 -0
  135. package/templates/{static → ssr-isr}/lib/native/index.d.ts +20 -20
  136. package/templates/ssr-isr/lib/native/index.js +33 -0
  137. package/templates/ssr-isr/lib/native/optimizer.d.ts +21 -0
  138. package/templates/ssr-isr/lib/native/optimizer.js +20 -0
  139. package/templates/ssr-isr/lib/native/style-compiler.d.ts +19 -0
  140. package/templates/ssr-isr/lib/native/style-compiler.js +19 -0
  141. package/templates/ssr-isr/lib/plugin/loader.d.ts +10 -0
  142. package/templates/ssr-isr/lib/plugin/loader.js +36 -0
  143. package/templates/ssr-isr/lib/runtime/client-runtime.d.ts +16 -0
  144. package/templates/ssr-isr/lib/runtime/client-runtime.js +25 -0
  145. package/templates/ssr-isr/lib/runtime/hmr.d.ts +23 -0
  146. package/templates/ssr-isr/lib/runtime/hmr.js +59 -0
  147. package/templates/ssr-isr/lib/runtime/hydrate.d.ts +18 -0
  148. package/templates/ssr-isr/lib/runtime/hydrate.js +55 -0
  149. package/templates/ssr-isr/lib/runtime/island-hydration-client.d.ts +8 -0
  150. package/templates/ssr-isr/lib/runtime/island-hydration-client.js +146 -0
  151. package/templates/ssr-isr/lib/runtime/islands.d.ts +101 -0
  152. package/templates/ssr-isr/lib/runtime/islands.js +110 -0
  153. package/templates/ssr-isr/lib/runtime/render.d.ts +40 -0
  154. package/templates/ssr-isr/lib/runtime/render.js +244 -0
  155. package/templates/ssr-isr/lib/server/api-routes.d.ts +112 -0
  156. package/templates/ssr-isr/lib/server/api-routes.js +237 -0
  157. package/templates/{static → ssr-isr}/lib/server/api.d.ts +3 -3
  158. package/templates/ssr-isr/lib/server/api.js +108 -0
  159. package/templates/ssr-isr/lib/server/app.d.ts +44 -0
  160. package/templates/ssr-isr/lib/server/app.js +438 -0
  161. package/templates/ssr-isr/lib/server/runtimeServe.d.ts +60 -0
  162. package/templates/ssr-isr/lib/server/runtimeServe.js +169 -0
  163. package/templates/ssr-isr/lib/server/ssr.d.ts +161 -0
  164. package/templates/ssr-isr/lib/server/ssr.js +202 -0
  165. package/templates/ssr-isr/lib/shared/log.d.ts +49 -0
  166. package/templates/ssr-isr/lib/shared/log.js +64 -0
  167. package/templates/ssr-isr/package.json +23 -0
  168. package/templates/ssr-isr/server.js +128 -0
  169. package/templates/ssr-isr/site/pages/(index).tsx +11 -0
  170. package/templates/ssr-isr/site/styles/global.scss +37 -0
  171. package/templates/ssr-isr/tsconfig.json +39 -0
  172. package/templates/static/README.md +63 -67
  173. package/templates/static/build.js +31 -21
  174. package/templates/static/jen.config.ts +0 -20
  175. package/templates/static/jenjs.d.ts +0 -18
  176. package/templates/static/lib/api/(hello).js +7 -24
  177. package/templates/static/lib/api/examples/files/[...slug].js +22 -0
  178. package/templates/static/lib/api/examples/hello.js +11 -0
  179. package/templates/static/lib/api/examples/posts/[id].js +37 -0
  180. package/templates/static/lib/api/examples/posts.js +37 -0
  181. package/templates/static/lib/api/examples/search.js +23 -0
  182. package/templates/static/lib/api/index.js +41 -0
  183. package/templates/static/lib/api/loader.js +234 -0
  184. package/templates/static/lib/api/router.js +259 -0
  185. package/templates/static/lib/assets/types.js +1 -0
  186. package/templates/static/lib/auth/cookie-utils.js +69 -85
  187. package/templates/static/lib/auth/index.js +0 -17
  188. package/templates/static/lib/auth/jwt.js +48 -21
  189. package/templates/static/lib/auth/session.js +79 -98
  190. package/templates/static/lib/build/asset-hashing.js +47 -39
  191. package/templates/static/lib/build/asset-manifest.js +18 -35
  192. package/templates/static/lib/build/build.js +277 -95
  193. package/templates/static/lib/build/bundle-analyzer-ui.js +417 -0
  194. package/templates/static/lib/build/bundle-analyzer.js +945 -0
  195. package/templates/static/lib/build/code-splitter.js +194 -0
  196. package/templates/static/lib/build/feature-analyzer.js +190 -0
  197. package/templates/static/lib/build/feature-gate.js +257 -0
  198. package/templates/static/lib/build/island-hydration.js +17 -35
  199. package/templates/static/lib/build/lazy-loader.js +322 -0
  200. package/templates/static/lib/build/minifier.js +42 -61
  201. package/templates/static/lib/build/page-renderer.js +25 -42
  202. package/templates/static/lib/build/production-build.js +11 -28
  203. package/templates/static/lib/build/rust-hashing.js +71 -0
  204. package/templates/static/lib/build/script-optimizer.js +285 -0
  205. package/templates/static/lib/build/ssg-pipeline.js +107 -113
  206. package/templates/static/lib/build/vercel-output.js +298 -0
  207. package/templates/static/lib/build-tools/build-site.js +27 -47
  208. package/templates/static/lib/cache/index.js +6 -15
  209. package/templates/static/lib/cache/memory.js +37 -28
  210. package/templates/static/lib/cache/redis.js +56 -28
  211. package/templates/static/lib/cli/banner.js +18 -31
  212. package/templates/static/lib/cli/templates/ssg/jen.config.js +29 -46
  213. package/templates/static/lib/cli/templates/ssg/site/index.js +6 -1
  214. package/templates/static/lib/cli/templates/ssr/jen.config.js +29 -46
  215. package/templates/static/lib/cli/templates/ssr/site/index.js +6 -1
  216. package/templates/static/lib/client/Image.js +42 -0
  217. package/templates/static/lib/client/Link.js +190 -0
  218. package/templates/static/lib/client/PWA.js +46 -0
  219. package/templates/static/lib/client/Seo.js +97 -0
  220. package/templates/static/lib/client/index.js +9 -0
  221. package/templates/static/lib/client/useNavigation.js +25 -0
  222. package/templates/static/lib/client/useRouter.js +64 -0
  223. package/templates/static/lib/client-routing/Link.js +17 -0
  224. package/templates/static/lib/client-routing/index.js +19 -0
  225. package/templates/static/lib/client-routing/router.js +151 -0
  226. package/templates/static/lib/client-routing/signal.js +147 -0
  227. package/templates/static/lib/compilers/esbuild-plugins.js +96 -115
  228. package/templates/static/lib/compilers/svelte.js +31 -48
  229. package/templates/static/lib/compilers/vue.js +76 -85
  230. package/templates/static/lib/core/config.js +0 -17
  231. package/templates/static/lib/core/feature-guard.js +136 -0
  232. package/templates/static/lib/core/features.js +99 -0
  233. package/templates/static/lib/core/http.js +65 -36
  234. package/templates/static/lib/core/layouts/index.js +10 -0
  235. package/templates/static/lib/core/layouts/render.js +158 -0
  236. package/templates/static/lib/core/layouts/scan.js +112 -0
  237. package/templates/static/lib/core/layouts/types.js +1 -0
  238. package/templates/static/lib/core/lifecycle.js +129 -0
  239. package/templates/static/lib/core/loader-schema.js +81 -0
  240. package/templates/static/lib/core/middleware-hooks.js +86 -58
  241. package/templates/static/lib/core/paths.js +31 -16
  242. package/templates/static/lib/core/routes/advanced.js +114 -0
  243. package/templates/static/lib/core/routes/handlers.js +181 -0
  244. package/templates/static/lib/core/routes/match.js +129 -24
  245. package/templates/static/lib/core/routes/orchestrator.js +171 -0
  246. package/templates/static/lib/core/routes/rendering-config.js +131 -0
  247. package/templates/static/lib/core/routes/scan.js +174 -132
  248. package/templates/static/lib/core/types.js +0 -17
  249. package/templates/static/lib/css/compiler.js +63 -76
  250. package/templates/static/lib/data-fetching/cache.js +223 -0
  251. package/templates/static/lib/data-fetching/client.js +202 -0
  252. package/templates/static/lib/data-fetching/feature-guard.js +29 -0
  253. package/templates/static/lib/data-fetching/graphql.js +265 -0
  254. package/templates/static/lib/data-fetching/index.js +57 -0
  255. package/templates/static/lib/data-fetching/rest.js +256 -0
  256. package/templates/static/lib/data-fetching/server.js +182 -0
  257. package/templates/static/lib/data-fetching/types.js +5 -0
  258. package/templates/static/lib/db/connector.js +37 -28
  259. package/templates/static/lib/db/drivers/jdb.js +41 -56
  260. package/templates/static/lib/db/drivers/sql.js +152 -152
  261. package/templates/static/lib/db/index.js +42 -59
  262. package/templates/static/lib/db/types.js +0 -17
  263. package/templates/static/lib/devtools/component-tree.js +106 -0
  264. package/templates/static/lib/devtools/devtools.js +638 -0
  265. package/templates/static/lib/devtools/event-bus.js +29 -0
  266. package/templates/static/lib/devtools/event-logger.js +67 -0
  267. package/templates/static/lib/devtools/index.js +9 -0
  268. package/templates/static/lib/devtools/integration.js +149 -0
  269. package/templates/static/lib/devtools/performance.js +84 -0
  270. package/templates/static/lib/devtools/persistence.js +57 -0
  271. package/templates/static/lib/devtools/plugins.js +97 -0
  272. package/templates/static/lib/devtools/search.js +89 -0
  273. package/templates/static/lib/devtools/ui.js +769 -0
  274. package/templates/static/lib/features/api/handler.js +10 -0
  275. package/templates/static/lib/features/api/index.js +5 -0
  276. package/templates/static/lib/features/api/types.js +4 -0
  277. package/templates/static/lib/features/middleware/compiled.js +7 -0
  278. package/templates/static/lib/features/middleware/index.js +5 -0
  279. package/templates/static/lib/features/middleware/types.js +4 -0
  280. package/templates/static/lib/fonts/index.js +46 -0
  281. package/templates/static/lib/fonts/inject.js +125 -0
  282. package/templates/static/lib/fonts/loader.js +196 -0
  283. package/templates/static/lib/fonts/types.js +1 -0
  284. package/templates/static/lib/graphql/index.js +46 -16
  285. package/templates/static/lib/graphql/resolvers.js +42 -19
  286. package/templates/static/lib/graphql/schema.js +30 -15
  287. package/templates/static/lib/i18n/en.json +2 -2
  288. package/templates/static/lib/i18n/es.json +2 -2
  289. package/templates/static/lib/i18n/index.js +17 -29
  290. package/templates/static/lib/import/jen-import.js +130 -97
  291. package/templates/static/lib/index.js +82 -115
  292. package/templates/static/lib/jdb/engine.js +259 -160
  293. package/templates/static/lib/jdb/index.js +28 -13
  294. package/templates/static/lib/jdb/types.js +0 -17
  295. package/templates/static/lib/jdb/utils.js +159 -124
  296. package/templates/static/lib/middleware/builtins/cors.js +55 -64
  297. package/templates/static/lib/middleware/context.js +120 -46
  298. package/templates/static/lib/middleware/kernel.js +186 -31
  299. package/templates/static/lib/middleware/pipeline.js +140 -59
  300. package/templates/static/lib/middleware/registry.js +80 -36
  301. package/templates/static/lib/middleware/response.js +101 -54
  302. package/templates/static/lib/plugin/examples/analytics-plugin.js +183 -0
  303. package/templates/static/lib/plugin/examples/cdn-upload-plugin.js +94 -0
  304. package/templates/static/lib/plugin/loader.js +25 -48
  305. package/templates/static/lib/plugin/plugin-manager.js +177 -0
  306. package/templates/static/lib/plugin/types.js +28 -0
  307. package/templates/static/lib/runtime/client-runtime.js +19 -22
  308. package/templates/static/lib/runtime/hmr.js +23 -18
  309. package/templates/static/lib/runtime/hydrate.js +47 -37
  310. package/templates/static/lib/runtime/island-hydration-client.js +122 -108
  311. package/templates/static/lib/runtime/islands.js +92 -71
  312. package/templates/static/lib/runtime/render.js +385 -149
  313. package/templates/static/lib/security/security-config.js +60 -0
  314. package/templates/static/lib/security/security-middleware.js +229 -0
  315. package/templates/static/lib/server/api-routes.js +339 -171
  316. package/templates/static/lib/server/api.js +93 -109
  317. package/templates/static/lib/server/app.js +660 -270
  318. package/templates/static/lib/server/isr.js +365 -0
  319. package/templates/static/lib/server/runtimeServe.js +157 -89
  320. package/templates/static/lib/server/ssr.js +295 -0
  321. package/templates/static/lib/server-actions/handler.js +180 -0
  322. package/templates/static/lib/server-actions/index.js +19 -0
  323. package/templates/static/lib/server-actions/middleware.js +146 -0
  324. package/templates/static/lib/server-actions/scan.js +152 -0
  325. package/templates/static/lib/server-actions/types.js +1 -0
  326. package/templates/static/lib/server-actions/validators.js +156 -0
  327. package/templates/static/lib/shared/log.js +74 -25
  328. package/templates/static/lib/telemetry/api/rate-limiter.js +32 -0
  329. package/templates/static/lib/telemetry/api/validator.js +67 -0
  330. package/templates/static/lib/telemetry/client.js +121 -0
  331. package/templates/static/lib/telemetry/tests/rate-limiter.test.js +46 -0
  332. package/templates/static/lib/telemetry/tests/validator.test.js +62 -0
  333. package/templates/static/lib/vendor/glob/glob.js +4766 -0
  334. package/templates/static/lib/vendor/preact/preact.module.js +797 -0
  335. package/templates/static/lib/vendor/sass/sass.node.mjs +212 -0
  336. package/templates/static/package.json +4 -0
  337. package/templates/static/server.js +23 -25
  338. package/templates/static/site/(home).tsx +12 -12
  339. package/templates/static/site/styles/global.scss +89 -78
  340. package/templates/static/tsconfig.json +43 -39
  341. package/templates/static/.esbuild/jen.config.js +0 -1
  342. package/templates/static/lib/api/(hello).d.ts +0 -7
  343. package/templates/static/lib/auth/cookie-utils.d.ts +0 -24
  344. package/templates/static/lib/auth/jwt.d.ts +0 -2
  345. package/templates/static/lib/auth/session.d.ts +0 -44
  346. package/templates/static/lib/build/asset-hashing.d.ts +0 -10
  347. package/templates/static/lib/build/asset-manifest.d.ts +0 -11
  348. package/templates/static/lib/build/build.d.ts +0 -4
  349. package/templates/static/lib/build/minifier.d.ts +0 -20
  350. package/templates/static/lib/build/page-renderer.d.ts +0 -17
  351. package/templates/static/lib/build/production-build.d.ts +0 -10
  352. package/templates/static/lib/build/ssg-pipeline.d.ts +0 -15
  353. package/templates/static/lib/cache/index.d.ts +0 -2
  354. package/templates/static/lib/cache/memory.d.ts +0 -6
  355. package/templates/static/lib/cache/redis.d.ts +0 -6
  356. package/templates/static/lib/cli/banner.d.ts +0 -1
  357. package/templates/static/lib/compilers/svelte.d.ts +0 -18
  358. package/templates/static/lib/compilers/vue.d.ts +0 -15
  359. package/templates/static/lib/core/config.d.ts +0 -53
  360. package/templates/static/lib/core/http.d.ts +0 -3
  361. package/templates/static/lib/core/middleware-hooks.d.ts +0 -46
  362. package/templates/static/lib/core/paths.d.ts +0 -6
  363. package/templates/static/lib/core/routes/match.d.ts +0 -6
  364. package/templates/static/lib/core/routes/scan.d.ts +0 -9
  365. package/templates/static/lib/core/types.d.ts +0 -18
  366. package/templates/static/lib/css/compiler.d.ts +0 -20
  367. package/templates/static/lib/db/connector.d.ts +0 -4
  368. package/templates/static/lib/db/drivers/jdb.d.ts +0 -13
  369. package/templates/static/lib/db/drivers/sql.d.ts +0 -18
  370. package/templates/static/lib/db/index.d.ts +0 -19
  371. package/templates/static/lib/db/types.d.ts +0 -29
  372. package/templates/static/lib/graphql/index.d.ts +0 -1
  373. package/templates/static/lib/graphql/resolvers.d.ts +0 -17
  374. package/templates/static/lib/graphql/schema.d.ts +0 -1
  375. package/templates/static/lib/i18n/index.d.ts +0 -8
  376. package/templates/static/lib/import/jen-import.d.ts +0 -27
  377. package/templates/static/lib/jdb/engine.d.ts +0 -9
  378. package/templates/static/lib/jdb/index.d.ts +0 -2
  379. package/templates/static/lib/jdb/types.d.ts +0 -46
  380. package/templates/static/lib/jdb/utils.d.ts +0 -6
  381. package/templates/static/lib/middleware/builtins/body-parser.d.ts +0 -1
  382. package/templates/static/lib/middleware/builtins/body-parser.js +0 -55
  383. package/templates/static/lib/middleware/builtins/cors.d.ts +0 -13
  384. package/templates/static/lib/middleware/builtins/logger.d.ts +0 -1
  385. package/templates/static/lib/middleware/builtins/logger.js +0 -33
  386. package/templates/static/lib/middleware/builtins/rate-limit.d.ts +0 -5
  387. package/templates/static/lib/middleware/builtins/rate-limit.js +0 -76
  388. package/templates/static/lib/middleware/builtins/request-id.d.ts +0 -1
  389. package/templates/static/lib/middleware/builtins/request-id.js +0 -25
  390. package/templates/static/lib/middleware/builtins/security-headers.d.ts +0 -1
  391. package/templates/static/lib/middleware/builtins/security-headers.js +0 -39
  392. package/templates/static/lib/middleware/context.d.ts +0 -18
  393. package/templates/static/lib/middleware/decorators.d.ts +0 -2
  394. package/templates/static/lib/middleware/decorators.js +0 -61
  395. package/templates/static/lib/middleware/errors/handler.js +0 -65
  396. package/templates/static/lib/middleware/errors/http-error.d.ts +0 -5
  397. package/templates/static/lib/middleware/errors/http-error.js +0 -27
  398. package/templates/static/lib/middleware/kernel.d.ts +0 -6
  399. package/templates/static/lib/middleware/pipeline.d.ts +0 -4
  400. package/templates/static/lib/middleware/registry.d.ts +0 -10
  401. package/templates/static/lib/middleware/response.d.ts +0 -13
  402. package/templates/static/lib/middleware/types.js +0 -18
  403. package/templates/static/lib/middleware/utils/matcher.js +0 -31
  404. package/templates/static/lib/native/bundle.d.ts +0 -19
  405. package/templates/static/lib/native/bundle.js +0 -39
  406. package/templates/static/lib/native/dev-server.d.ts +0 -6
  407. package/templates/static/lib/native/dev-server.js +0 -38
  408. package/templates/static/lib/native/index.js +0 -48
  409. package/templates/static/lib/native/optimizer.d.ts +0 -17
  410. package/templates/static/lib/native/optimizer.js +0 -37
  411. package/templates/static/lib/native/style-compiler.d.ts +0 -10
  412. package/templates/static/lib/native/style-compiler.js +0 -36
  413. package/templates/static/lib/plugin/loader.d.ts +0 -8
  414. package/templates/static/lib/runtime/client-runtime.d.ts +0 -1
  415. package/templates/static/lib/runtime/hmr.d.ts +0 -1
  416. package/templates/static/lib/runtime/hydrate.d.ts +0 -1
  417. package/templates/static/lib/runtime/island-hydration-client.d.ts +0 -5
  418. package/templates/static/lib/runtime/islands.d.ts +0 -46
  419. package/templates/static/lib/runtime/render.d.ts +0 -13
  420. package/templates/static/lib/server/api-routes.d.ts +0 -44
  421. package/templates/static/lib/server/app.d.ts +0 -10
  422. package/templates/static/lib/server/runtimeServe.d.ts +0 -4
  423. package/templates/static/lib/shared/log.d.ts +0 -5
  424. package/templates/static/node_modules/.bin/esbuild +0 -16
  425. package/templates/static/node_modules/.bin/esbuild.cmd +0 -17
  426. package/templates/static/node_modules/.bin/esbuild.ps1 +0 -28
  427. package/templates/static/node_modules/.bin/tsc +0 -16
  428. package/templates/static/node_modules/.bin/tsc.cmd +0 -17
  429. package/templates/static/node_modules/.bin/tsc.ps1 +0 -28
  430. package/templates/static/node_modules/.bin/tsserver +0 -16
  431. package/templates/static/node_modules/.bin/tsserver.cmd +0 -17
  432. package/templates/static/node_modules/.bin/tsserver.ps1 +0 -28
  433. package/templates/static/node_modules/.jen/cache/B__Jen.js_packages_create-jen-app_templates_static_site_(home).tsx.mjs +0 -14
  434. package/templates/static/node_modules/.jen/cache/B__Jen.js_packages_create-jen-app_yo_site_(home).tsx.mjs +0 -11
  435. package/templates/static/node_modules/.package-lock.json +0 -585
  436. package/templates/static/node_modules/@esbuild/win32-x64/README.md +0 -3
  437. package/templates/static/node_modules/@esbuild/win32-x64/esbuild.exe +0 -0
  438. package/templates/static/node_modules/@esbuild/win32-x64/package.json +0 -20
  439. package/templates/static/node_modules/@jenjs/master/README.md +0 -24
  440. package/templates/static/node_modules/@jenjs/master/index.js +0 -3655
  441. package/templates/static/node_modules/@jenjs/master/package.json +0 -36
  442. package/templates/static/node_modules/@polka/url/build.js +0 -49
  443. package/templates/static/node_modules/@polka/url/build.mjs +0 -47
  444. package/templates/static/node_modules/@polka/url/index.d.ts +0 -11
  445. package/templates/static/node_modules/@polka/url/package.json +0 -30
  446. package/templates/static/node_modules/@polka/url/readme.md +0 -68
  447. package/templates/static/node_modules/@types/node/LICENSE +0 -21
  448. package/templates/static/node_modules/@types/node/README.md +0 -15
  449. package/templates/static/node_modules/@types/node/assert/strict.d.ts +0 -111
  450. package/templates/static/node_modules/@types/node/assert.d.ts +0 -1078
  451. package/templates/static/node_modules/@types/node/async_hooks.d.ts +0 -603
  452. package/templates/static/node_modules/@types/node/buffer.buffer.d.ts +0 -472
  453. package/templates/static/node_modules/@types/node/buffer.d.ts +0 -1934
  454. package/templates/static/node_modules/@types/node/child_process.d.ts +0 -1476
  455. package/templates/static/node_modules/@types/node/cluster.d.ts +0 -578
  456. package/templates/static/node_modules/@types/node/compatibility/disposable.d.ts +0 -14
  457. package/templates/static/node_modules/@types/node/compatibility/index.d.ts +0 -9
  458. package/templates/static/node_modules/@types/node/compatibility/indexable.d.ts +0 -20
  459. package/templates/static/node_modules/@types/node/compatibility/iterators.d.ts +0 -20
  460. package/templates/static/node_modules/@types/node/console.d.ts +0 -452
  461. package/templates/static/node_modules/@types/node/constants.d.ts +0 -21
  462. package/templates/static/node_modules/@types/node/crypto.d.ts +0 -4545
  463. package/templates/static/node_modules/@types/node/dgram.d.ts +0 -600
  464. package/templates/static/node_modules/@types/node/diagnostics_channel.d.ts +0 -578
  465. package/templates/static/node_modules/@types/node/dns/promises.d.ts +0 -503
  466. package/templates/static/node_modules/@types/node/dns.d.ts +0 -923
  467. package/templates/static/node_modules/@types/node/domain.d.ts +0 -170
  468. package/templates/static/node_modules/@types/node/events.d.ts +0 -976
  469. package/templates/static/node_modules/@types/node/fs/promises.d.ts +0 -1295
  470. package/templates/static/node_modules/@types/node/fs.d.ts +0 -4461
  471. package/templates/static/node_modules/@types/node/globals.d.ts +0 -172
  472. package/templates/static/node_modules/@types/node/globals.typedarray.d.ts +0 -38
  473. package/templates/static/node_modules/@types/node/http.d.ts +0 -2089
  474. package/templates/static/node_modules/@types/node/http2.d.ts +0 -2644
  475. package/templates/static/node_modules/@types/node/https.d.ts +0 -579
  476. package/templates/static/node_modules/@types/node/index.d.ts +0 -97
  477. package/templates/static/node_modules/@types/node/inspector.d.ts +0 -253
  478. package/templates/static/node_modules/@types/node/inspector.generated.d.ts +0 -4052
  479. package/templates/static/node_modules/@types/node/module.d.ts +0 -891
  480. package/templates/static/node_modules/@types/node/net.d.ts +0 -1057
  481. package/templates/static/node_modules/@types/node/os.d.ts +0 -506
  482. package/templates/static/node_modules/@types/node/package.json +0 -145
  483. package/templates/static/node_modules/@types/node/path.d.ts +0 -200
  484. package/templates/static/node_modules/@types/node/perf_hooks.d.ts +0 -968
  485. package/templates/static/node_modules/@types/node/process.d.ts +0 -2089
  486. package/templates/static/node_modules/@types/node/punycode.d.ts +0 -117
  487. package/templates/static/node_modules/@types/node/querystring.d.ts +0 -152
  488. package/templates/static/node_modules/@types/node/readline/promises.d.ts +0 -161
  489. package/templates/static/node_modules/@types/node/readline.d.ts +0 -594
  490. package/templates/static/node_modules/@types/node/repl.d.ts +0 -428
  491. package/templates/static/node_modules/@types/node/sea.d.ts +0 -153
  492. package/templates/static/node_modules/@types/node/sqlite.d.ts +0 -721
  493. package/templates/static/node_modules/@types/node/stream/consumers.d.ts +0 -38
  494. package/templates/static/node_modules/@types/node/stream/promises.d.ts +0 -90
  495. package/templates/static/node_modules/@types/node/stream/web.d.ts +0 -622
  496. package/templates/static/node_modules/@types/node/stream.d.ts +0 -1664
  497. package/templates/static/node_modules/@types/node/string_decoder.d.ts +0 -67
  498. package/templates/static/node_modules/@types/node/test.d.ts +0 -2163
  499. package/templates/static/node_modules/@types/node/timers/promises.d.ts +0 -108
  500. package/templates/static/node_modules/@types/node/timers.d.ts +0 -287
  501. package/templates/static/node_modules/@types/node/tls.d.ts +0 -1319
  502. package/templates/static/node_modules/@types/node/trace_events.d.ts +0 -197
  503. package/templates/static/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -468
  504. package/templates/static/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -34
  505. package/templates/static/node_modules/@types/node/ts5.6/index.d.ts +0 -97
  506. package/templates/static/node_modules/@types/node/tty.d.ts +0 -208
  507. package/templates/static/node_modules/@types/node/url.d.ts +0 -984
  508. package/templates/static/node_modules/@types/node/util.d.ts +0 -2606
  509. package/templates/static/node_modules/@types/node/v8.d.ts +0 -920
  510. package/templates/static/node_modules/@types/node/vm.d.ts +0 -1000
  511. package/templates/static/node_modules/@types/node/wasi.d.ts +0 -181
  512. package/templates/static/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -34
  513. package/templates/static/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
  514. package/templates/static/node_modules/@types/node/web-globals/events.d.ts +0 -97
  515. package/templates/static/node_modules/@types/node/web-globals/fetch.d.ts +0 -55
  516. package/templates/static/node_modules/@types/node/web-globals/navigator.d.ts +0 -22
  517. package/templates/static/node_modules/@types/node/web-globals/storage.d.ts +0 -24
  518. package/templates/static/node_modules/@types/node/worker_threads.d.ts +0 -784
  519. package/templates/static/node_modules/@types/node/zlib.d.ts +0 -683
  520. package/templates/static/node_modules/esbuild/LICENSE.md +0 -21
  521. package/templates/static/node_modules/esbuild/README.md +0 -3
  522. package/templates/static/node_modules/esbuild/bin/esbuild +0 -223
  523. package/templates/static/node_modules/esbuild/install.js +0 -289
  524. package/templates/static/node_modules/esbuild/lib/main.d.ts +0 -716
  525. package/templates/static/node_modules/esbuild/lib/main.js +0 -2242
  526. package/templates/static/node_modules/esbuild/package.json +0 -49
  527. package/templates/static/node_modules/mrmime/index.d.ts +0 -2
  528. package/templates/static/node_modules/mrmime/index.js +0 -449
  529. package/templates/static/node_modules/mrmime/index.mjs +0 -448
  530. package/templates/static/node_modules/mrmime/license +0 -21
  531. package/templates/static/node_modules/mrmime/package.json +0 -44
  532. package/templates/static/node_modules/mrmime/readme.md +0 -130
  533. package/templates/static/node_modules/preact/README.md +0 -185
  534. package/templates/static/node_modules/preact/compat/client.d.ts +0 -13
  535. package/templates/static/node_modules/preact/compat/client.js +0 -21
  536. package/templates/static/node_modules/preact/compat/client.mjs +0 -24
  537. package/templates/static/node_modules/preact/compat/dist/compat.js +0 -2
  538. package/templates/static/node_modules/preact/compat/dist/compat.js.map +0 -1
  539. package/templates/static/node_modules/preact/compat/dist/compat.mjs +0 -2
  540. package/templates/static/node_modules/preact/compat/dist/compat.module.js +0 -2
  541. package/templates/static/node_modules/preact/compat/dist/compat.module.js.map +0 -1
  542. package/templates/static/node_modules/preact/compat/dist/compat.umd.js +0 -2
  543. package/templates/static/node_modules/preact/compat/dist/compat.umd.js.map +0 -1
  544. package/templates/static/node_modules/preact/compat/jsx-dev-runtime.js +0 -3
  545. package/templates/static/node_modules/preact/compat/jsx-dev-runtime.mjs +0 -3
  546. package/templates/static/node_modules/preact/compat/jsx-runtime.js +0 -3
  547. package/templates/static/node_modules/preact/compat/jsx-runtime.mjs +0 -3
  548. package/templates/static/node_modules/preact/compat/package.json +0 -55
  549. package/templates/static/node_modules/preact/compat/scheduler.js +0 -15
  550. package/templates/static/node_modules/preact/compat/scheduler.mjs +0 -23
  551. package/templates/static/node_modules/preact/compat/server.browser.js +0 -11
  552. package/templates/static/node_modules/preact/compat/server.js +0 -36
  553. package/templates/static/node_modules/preact/compat/server.mjs +0 -17
  554. package/templates/static/node_modules/preact/compat/src/Children.js +0 -21
  555. package/templates/static/node_modules/preact/compat/src/PureComponent.js +0 -16
  556. package/templates/static/node_modules/preact/compat/src/forwardRef.js +0 -44
  557. package/templates/static/node_modules/preact/compat/src/hooks.js +0 -70
  558. package/templates/static/node_modules/preact/compat/src/index.d.ts +0 -351
  559. package/templates/static/node_modules/preact/compat/src/index.js +0 -238
  560. package/templates/static/node_modules/preact/compat/src/internal.d.ts +0 -48
  561. package/templates/static/node_modules/preact/compat/src/memo.js +0 -35
  562. package/templates/static/node_modules/preact/compat/src/portals.js +0 -78
  563. package/templates/static/node_modules/preact/compat/src/render.js +0 -313
  564. package/templates/static/node_modules/preact/compat/src/suspense-list.d.ts +0 -16
  565. package/templates/static/node_modules/preact/compat/src/suspense-list.js +0 -127
  566. package/templates/static/node_modules/preact/compat/src/suspense.d.ts +0 -19
  567. package/templates/static/node_modules/preact/compat/src/suspense.js +0 -291
  568. package/templates/static/node_modules/preact/compat/src/util.js +0 -33
  569. package/templates/static/node_modules/preact/compat/test-utils.js +0 -1
  570. package/templates/static/node_modules/preact/compat/test-utils.mjs +0 -1
  571. package/templates/static/node_modules/preact/debug/dist/debug.js +0 -2
  572. package/templates/static/node_modules/preact/debug/dist/debug.js.map +0 -1
  573. package/templates/static/node_modules/preact/debug/dist/debug.mjs +0 -2
  574. package/templates/static/node_modules/preact/debug/dist/debug.module.js +0 -2
  575. package/templates/static/node_modules/preact/debug/dist/debug.module.js.map +0 -1
  576. package/templates/static/node_modules/preact/debug/dist/debug.umd.js +0 -2
  577. package/templates/static/node_modules/preact/debug/dist/debug.umd.js.map +0 -1
  578. package/templates/static/node_modules/preact/debug/package.json +0 -27
  579. package/templates/static/node_modules/preact/debug/src/check-props.js +0 -54
  580. package/templates/static/node_modules/preact/debug/src/component-stack.js +0 -146
  581. package/templates/static/node_modules/preact/debug/src/constants.js +0 -3
  582. package/templates/static/node_modules/preact/debug/src/debug.js +0 -593
  583. package/templates/static/node_modules/preact/debug/src/index.d.ts +0 -23
  584. package/templates/static/node_modules/preact/debug/src/index.js +0 -12
  585. package/templates/static/node_modules/preact/debug/src/internal.d.ts +0 -82
  586. package/templates/static/node_modules/preact/debug/src/util.js +0 -15
  587. package/templates/static/node_modules/preact/devtools/dist/devtools.js +0 -2
  588. package/templates/static/node_modules/preact/devtools/dist/devtools.js.map +0 -1
  589. package/templates/static/node_modules/preact/devtools/dist/devtools.mjs +0 -2
  590. package/templates/static/node_modules/preact/devtools/dist/devtools.module.js +0 -2
  591. package/templates/static/node_modules/preact/devtools/dist/devtools.module.js.map +0 -1
  592. package/templates/static/node_modules/preact/devtools/dist/devtools.umd.js +0 -2
  593. package/templates/static/node_modules/preact/devtools/dist/devtools.umd.js.map +0 -1
  594. package/templates/static/node_modules/preact/devtools/package.json +0 -25
  595. package/templates/static/node_modules/preact/devtools/src/devtools.js +0 -21
  596. package/templates/static/node_modules/preact/devtools/src/index.d.ts +0 -8
  597. package/templates/static/node_modules/preact/devtools/src/index.js +0 -15
  598. package/templates/static/node_modules/preact/dist/preact.js +0 -2
  599. package/templates/static/node_modules/preact/dist/preact.js.map +0 -1
  600. package/templates/static/node_modules/preact/dist/preact.min.js +0 -2
  601. package/templates/static/node_modules/preact/dist/preact.min.js.map +0 -1
  602. package/templates/static/node_modules/preact/dist/preact.min.module.js +0 -2
  603. package/templates/static/node_modules/preact/dist/preact.min.module.js.map +0 -1
  604. package/templates/static/node_modules/preact/dist/preact.min.umd.js +0 -2
  605. package/templates/static/node_modules/preact/dist/preact.min.umd.js.map +0 -1
  606. package/templates/static/node_modules/preact/dist/preact.mjs +0 -2
  607. package/templates/static/node_modules/preact/dist/preact.module.js +0 -2
  608. package/templates/static/node_modules/preact/dist/preact.module.js.map +0 -1
  609. package/templates/static/node_modules/preact/dist/preact.umd.js +0 -2
  610. package/templates/static/node_modules/preact/dist/preact.umd.js.map +0 -1
  611. package/templates/static/node_modules/preact/hooks/dist/hooks.js +0 -2
  612. package/templates/static/node_modules/preact/hooks/dist/hooks.js.map +0 -1
  613. package/templates/static/node_modules/preact/hooks/dist/hooks.mjs +0 -2
  614. package/templates/static/node_modules/preact/hooks/dist/hooks.module.js +0 -2
  615. package/templates/static/node_modules/preact/hooks/dist/hooks.module.js.map +0 -1
  616. package/templates/static/node_modules/preact/hooks/dist/hooks.umd.js +0 -2
  617. package/templates/static/node_modules/preact/hooks/dist/hooks.umd.js.map +0 -1
  618. package/templates/static/node_modules/preact/hooks/package.json +0 -35
  619. package/templates/static/node_modules/preact/hooks/src/index.d.ts +0 -145
  620. package/templates/static/node_modules/preact/hooks/src/index.js +0 -555
  621. package/templates/static/node_modules/preact/hooks/src/internal.d.ts +0 -103
  622. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.js +0 -2
  623. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.js.map +0 -1
  624. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.mjs +0 -2
  625. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js +0 -2
  626. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js.map +0 -1
  627. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.umd.js +0 -2
  628. package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.umd.js.map +0 -1
  629. package/templates/static/node_modules/preact/jsx-runtime/package.json +0 -28
  630. package/templates/static/node_modules/preact/jsx-runtime/src/index.d.ts +0 -62
  631. package/templates/static/node_modules/preact/jsx-runtime/src/index.js +0 -206
  632. package/templates/static/node_modules/preact/jsx-runtime/src/utils.js +0 -36
  633. package/templates/static/node_modules/preact/package.json +0 -258
  634. package/templates/static/node_modules/preact/src/cjs.js +0 -3
  635. package/templates/static/node_modules/preact/src/clone-element.js +0 -48
  636. package/templates/static/node_modules/preact/src/component.js +0 -249
  637. package/templates/static/node_modules/preact/src/constants.js +0 -22
  638. package/templates/static/node_modules/preact/src/create-context.js +0 -60
  639. package/templates/static/node_modules/preact/src/create-element.js +0 -97
  640. package/templates/static/node_modules/preact/src/diff/catch-error.js +0 -46
  641. package/templates/static/node_modules/preact/src/diff/children.js +0 -451
  642. package/templates/static/node_modules/preact/src/diff/index.js +0 -684
  643. package/templates/static/node_modules/preact/src/diff/props.js +0 -173
  644. package/templates/static/node_modules/preact/src/dom.d.ts +0 -2476
  645. package/templates/static/node_modules/preact/src/index-5.d.ts +0 -399
  646. package/templates/static/node_modules/preact/src/index.d.ts +0 -402
  647. package/templates/static/node_modules/preact/src/index.js +0 -13
  648. package/templates/static/node_modules/preact/src/internal.d.ts +0 -190
  649. package/templates/static/node_modules/preact/src/jsx.d.ts +0 -2878
  650. package/templates/static/node_modules/preact/src/options.js +0 -16
  651. package/templates/static/node_modules/preact/src/render.js +0 -78
  652. package/templates/static/node_modules/preact/src/util.js +0 -28
  653. package/templates/static/node_modules/preact/test-utils/dist/testUtils.js +0 -2
  654. package/templates/static/node_modules/preact/test-utils/dist/testUtils.js.map +0 -1
  655. package/templates/static/node_modules/preact/test-utils/dist/testUtils.mjs +0 -2
  656. package/templates/static/node_modules/preact/test-utils/dist/testUtils.module.js +0 -2
  657. package/templates/static/node_modules/preact/test-utils/dist/testUtils.module.js.map +0 -1
  658. package/templates/static/node_modules/preact/test-utils/dist/testUtils.umd.js +0 -2
  659. package/templates/static/node_modules/preact/test-utils/dist/testUtils.umd.js.map +0 -1
  660. package/templates/static/node_modules/preact/test-utils/package.json +0 -28
  661. package/templates/static/node_modules/preact/test-utils/src/index.d.ts +0 -3
  662. package/templates/static/node_modules/preact/test-utils/src/index.js +0 -129
  663. package/templates/static/node_modules/preact-render-to-string/LICENSE +0 -21
  664. package/templates/static/node_modules/preact-render-to-string/README.md +0 -149
  665. package/templates/static/node_modules/preact-render-to-string/dist/commonjs.js +0 -2
  666. package/templates/static/node_modules/preact-render-to-string/dist/index.d.ts +0 -17
  667. package/templates/static/node_modules/preact-render-to-string/dist/index.js +0 -6
  668. package/templates/static/node_modules/preact-render-to-string/dist/index.js.map +0 -1
  669. package/templates/static/node_modules/preact-render-to-string/dist/index.mjs +0 -2
  670. package/templates/static/node_modules/preact-render-to-string/dist/index.module.js +0 -2
  671. package/templates/static/node_modules/preact-render-to-string/dist/index.module.js.map +0 -1
  672. package/templates/static/node_modules/preact-render-to-string/dist/index.umd.js +0 -2
  673. package/templates/static/node_modules/preact-render-to-string/dist/index.umd.js.map +0 -1
  674. package/templates/static/node_modules/preact-render-to-string/dist/internal.d.ts +0 -35
  675. package/templates/static/node_modules/preact-render-to-string/dist/jsx/commonjs.js +0 -2
  676. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.js +0 -4
  677. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.js.map +0 -1
  678. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.mjs +0 -2
  679. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.module.js +0 -2
  680. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.module.js.map +0 -1
  681. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.umd.js +0 -2
  682. package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.umd.js.map +0 -1
  683. package/templates/static/node_modules/preact-render-to-string/dist/jsx.d.ts +0 -24
  684. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.js +0 -2
  685. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.js.map +0 -1
  686. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.mjs +0 -2
  687. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.module.js +0 -2
  688. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.module.js.map +0 -1
  689. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.umd.js +0 -2
  690. package/templates/static/node_modules/preact-render-to-string/dist/stream/index.umd.js.map +0 -1
  691. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.js +0 -884
  692. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.js.map +0 -1
  693. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.mjs +0 -884
  694. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.module.js +0 -884
  695. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.module.js.map +0 -1
  696. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.umd.js +0 -888
  697. package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.umd.js.map +0 -1
  698. package/templates/static/node_modules/preact-render-to-string/dist/stream-node.d.ts +0 -19
  699. package/templates/static/node_modules/preact-render-to-string/dist/stream.d.ts +0 -10
  700. package/templates/static/node_modules/preact-render-to-string/jsx.d.ts +0 -24
  701. package/templates/static/node_modules/preact-render-to-string/jsx.js +0 -1
  702. package/templates/static/node_modules/preact-render-to-string/package.json +0 -152
  703. package/templates/static/node_modules/preact-render-to-string/src/index.d.ts +0 -17
  704. package/templates/static/node_modules/preact-render-to-string/src/index.js +0 -764
  705. package/templates/static/node_modules/preact-render-to-string/src/internal.d.ts +0 -35
  706. package/templates/static/node_modules/preact-render-to-string/src/jsx.d.ts +0 -24
  707. package/templates/static/node_modules/preact-render-to-string/src/jsx.js +0 -102
  708. package/templates/static/node_modules/preact-render-to-string/src/lib/chunked.js +0 -97
  709. package/templates/static/node_modules/preact-render-to-string/src/lib/client.js +0 -62
  710. package/templates/static/node_modules/preact-render-to-string/src/lib/constants.js +0 -20
  711. package/templates/static/node_modules/preact-render-to-string/src/lib/polyfills.js +0 -8
  712. package/templates/static/node_modules/preact-render-to-string/src/lib/util.js +0 -208
  713. package/templates/static/node_modules/preact-render-to-string/src/pretty.js +0 -491
  714. package/templates/static/node_modules/preact-render-to-string/src/stream-node.d.ts +0 -19
  715. package/templates/static/node_modules/preact-render-to-string/src/stream-node.js +0 -84
  716. package/templates/static/node_modules/preact-render-to-string/src/stream.d.ts +0 -10
  717. package/templates/static/node_modules/preact-render-to-string/src/stream.js +0 -43
  718. package/templates/static/node_modules/preact-render-to-string/typings.json +0 -5
  719. package/templates/static/node_modules/sirv/build.js +0 -197
  720. package/templates/static/node_modules/sirv/build.mjs +0 -197
  721. package/templates/static/node_modules/sirv/index.d.mts +0 -29
  722. package/templates/static/node_modules/sirv/index.d.ts +0 -33
  723. package/templates/static/node_modules/sirv/package.json +0 -40
  724. package/templates/static/node_modules/sirv/readme.md +0 -238
  725. package/templates/static/node_modules/totalist/dist/index.js +0 -24
  726. package/templates/static/node_modules/totalist/dist/index.mjs +0 -22
  727. package/templates/static/node_modules/totalist/index.d.ts +0 -3
  728. package/templates/static/node_modules/totalist/license +0 -21
  729. package/templates/static/node_modules/totalist/package.json +0 -55
  730. package/templates/static/node_modules/totalist/readme.md +0 -109
  731. package/templates/static/node_modules/totalist/sync/index.d.ts +0 -3
  732. package/templates/static/node_modules/totalist/sync/index.js +0 -17
  733. package/templates/static/node_modules/totalist/sync/index.mjs +0 -15
  734. package/templates/static/node_modules/typescript/bin/tsc +0 -2
  735. package/templates/static/node_modules/typescript/bin/tsserver +0 -2
  736. package/templates/static/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
  737. package/templates/static/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
  738. package/templates/static/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
  739. package/templates/static/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
  740. package/templates/static/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
  741. package/templates/static/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
  742. package/templates/static/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
  743. package/templates/static/node_modules/typescript/lib/lib.d.ts +0 -22
  744. package/templates/static/node_modules/typescript/lib/lib.decorators.d.ts +0 -384
  745. package/templates/static/node_modules/typescript/lib/lib.decorators.legacy.d.ts +0 -22
  746. package/templates/static/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +0 -41
  747. package/templates/static/node_modules/typescript/lib/lib.dom.d.ts +0 -39429
  748. package/templates/static/node_modules/typescript/lib/lib.dom.iterable.d.ts +0 -571
  749. package/templates/static/node_modules/typescript/lib/lib.es2015.collection.d.ts +0 -147
  750. package/templates/static/node_modules/typescript/lib/lib.es2015.core.d.ts +0 -597
  751. package/templates/static/node_modules/typescript/lib/lib.es2015.d.ts +0 -28
  752. package/templates/static/node_modules/typescript/lib/lib.es2015.generator.d.ts +0 -77
  753. package/templates/static/node_modules/typescript/lib/lib.es2015.iterable.d.ts +0 -605
  754. package/templates/static/node_modules/typescript/lib/lib.es2015.promise.d.ts +0 -81
  755. package/templates/static/node_modules/typescript/lib/lib.es2015.proxy.d.ts +0 -128
  756. package/templates/static/node_modules/typescript/lib/lib.es2015.reflect.d.ts +0 -144
  757. package/templates/static/node_modules/typescript/lib/lib.es2015.symbol.d.ts +0 -46
  758. package/templates/static/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -326
  759. package/templates/static/node_modules/typescript/lib/lib.es2016.array.include.d.ts +0 -116
  760. package/templates/static/node_modules/typescript/lib/lib.es2016.d.ts +0 -21
  761. package/templates/static/node_modules/typescript/lib/lib.es2016.full.d.ts +0 -23
  762. package/templates/static/node_modules/typescript/lib/lib.es2016.intl.d.ts +0 -31
  763. package/templates/static/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +0 -21
  764. package/templates/static/node_modules/typescript/lib/lib.es2017.d.ts +0 -26
  765. package/templates/static/node_modules/typescript/lib/lib.es2017.date.d.ts +0 -31
  766. package/templates/static/node_modules/typescript/lib/lib.es2017.full.d.ts +0 -23
  767. package/templates/static/node_modules/typescript/lib/lib.es2017.intl.d.ts +0 -44
  768. package/templates/static/node_modules/typescript/lib/lib.es2017.object.d.ts +0 -49
  769. package/templates/static/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +0 -135
  770. package/templates/static/node_modules/typescript/lib/lib.es2017.string.d.ts +0 -45
  771. package/templates/static/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +0 -53
  772. package/templates/static/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -77
  773. package/templates/static/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +0 -53
  774. package/templates/static/node_modules/typescript/lib/lib.es2018.d.ts +0 -24
  775. package/templates/static/node_modules/typescript/lib/lib.es2018.full.d.ts +0 -24
  776. package/templates/static/node_modules/typescript/lib/lib.es2018.intl.d.ts +0 -83
  777. package/templates/static/node_modules/typescript/lib/lib.es2018.promise.d.ts +0 -30
  778. package/templates/static/node_modules/typescript/lib/lib.es2018.regexp.d.ts +0 -37
  779. package/templates/static/node_modules/typescript/lib/lib.es2019.array.d.ts +0 -79
  780. package/templates/static/node_modules/typescript/lib/lib.es2019.d.ts +0 -24
  781. package/templates/static/node_modules/typescript/lib/lib.es2019.full.d.ts +0 -24
  782. package/templates/static/node_modules/typescript/lib/lib.es2019.intl.d.ts +0 -23
  783. package/templates/static/node_modules/typescript/lib/lib.es2019.object.d.ts +0 -33
  784. package/templates/static/node_modules/typescript/lib/lib.es2019.string.d.ts +0 -37
  785. package/templates/static/node_modules/typescript/lib/lib.es2019.symbol.d.ts +0 -24
  786. package/templates/static/node_modules/typescript/lib/lib.es2020.bigint.d.ts +0 -765
  787. package/templates/static/node_modules/typescript/lib/lib.es2020.d.ts +0 -27
  788. package/templates/static/node_modules/typescript/lib/lib.es2020.date.d.ts +0 -42
  789. package/templates/static/node_modules/typescript/lib/lib.es2020.full.d.ts +0 -24
  790. package/templates/static/node_modules/typescript/lib/lib.es2020.intl.d.ts +0 -474
  791. package/templates/static/node_modules/typescript/lib/lib.es2020.number.d.ts +0 -28
  792. package/templates/static/node_modules/typescript/lib/lib.es2020.promise.d.ts +0 -47
  793. package/templates/static/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +0 -99
  794. package/templates/static/node_modules/typescript/lib/lib.es2020.string.d.ts +0 -44
  795. package/templates/static/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -41
  796. package/templates/static/node_modules/typescript/lib/lib.es2021.d.ts +0 -23
  797. package/templates/static/node_modules/typescript/lib/lib.es2021.full.d.ts +0 -24
  798. package/templates/static/node_modules/typescript/lib/lib.es2021.intl.d.ts +0 -166
  799. package/templates/static/node_modules/typescript/lib/lib.es2021.promise.d.ts +0 -48
  800. package/templates/static/node_modules/typescript/lib/lib.es2021.string.d.ts +0 -33
  801. package/templates/static/node_modules/typescript/lib/lib.es2021.weakref.d.ts +0 -78
  802. package/templates/static/node_modules/typescript/lib/lib.es2022.array.d.ts +0 -121
  803. package/templates/static/node_modules/typescript/lib/lib.es2022.d.ts +0 -25
  804. package/templates/static/node_modules/typescript/lib/lib.es2022.error.d.ts +0 -75
  805. package/templates/static/node_modules/typescript/lib/lib.es2022.full.d.ts +0 -24
  806. package/templates/static/node_modules/typescript/lib/lib.es2022.intl.d.ts +0 -145
  807. package/templates/static/node_modules/typescript/lib/lib.es2022.object.d.ts +0 -26
  808. package/templates/static/node_modules/typescript/lib/lib.es2022.regexp.d.ts +0 -39
  809. package/templates/static/node_modules/typescript/lib/lib.es2022.string.d.ts +0 -25
  810. package/templates/static/node_modules/typescript/lib/lib.es2023.array.d.ts +0 -924
  811. package/templates/static/node_modules/typescript/lib/lib.es2023.collection.d.ts +0 -21
  812. package/templates/static/node_modules/typescript/lib/lib.es2023.d.ts +0 -22
  813. package/templates/static/node_modules/typescript/lib/lib.es2023.full.d.ts +0 -24
  814. package/templates/static/node_modules/typescript/lib/lib.es2023.intl.d.ts +0 -56
  815. package/templates/static/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +0 -65
  816. package/templates/static/node_modules/typescript/lib/lib.es2024.collection.d.ts +0 -29
  817. package/templates/static/node_modules/typescript/lib/lib.es2024.d.ts +0 -26
  818. package/templates/static/node_modules/typescript/lib/lib.es2024.full.d.ts +0 -24
  819. package/templates/static/node_modules/typescript/lib/lib.es2024.object.d.ts +0 -29
  820. package/templates/static/node_modules/typescript/lib/lib.es2024.promise.d.ts +0 -35
  821. package/templates/static/node_modules/typescript/lib/lib.es2024.regexp.d.ts +0 -25
  822. package/templates/static/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +0 -68
  823. package/templates/static/node_modules/typescript/lib/lib.es2024.string.d.ts +0 -29
  824. package/templates/static/node_modules/typescript/lib/lib.es5.d.ts +0 -4601
  825. package/templates/static/node_modules/typescript/lib/lib.es6.d.ts +0 -23
  826. package/templates/static/node_modules/typescript/lib/lib.esnext.array.d.ts +0 -35
  827. package/templates/static/node_modules/typescript/lib/lib.esnext.collection.d.ts +0 -96
  828. package/templates/static/node_modules/typescript/lib/lib.esnext.d.ts +0 -29
  829. package/templates/static/node_modules/typescript/lib/lib.esnext.decorators.d.ts +0 -28
  830. package/templates/static/node_modules/typescript/lib/lib.esnext.disposable.d.ts +0 -193
  831. package/templates/static/node_modules/typescript/lib/lib.esnext.error.d.ts +0 -24
  832. package/templates/static/node_modules/typescript/lib/lib.esnext.float16.d.ts +0 -445
  833. package/templates/static/node_modules/typescript/lib/lib.esnext.full.d.ts +0 -24
  834. package/templates/static/node_modules/typescript/lib/lib.esnext.intl.d.ts +0 -21
  835. package/templates/static/node_modules/typescript/lib/lib.esnext.iterator.d.ts +0 -148
  836. package/templates/static/node_modules/typescript/lib/lib.esnext.promise.d.ts +0 -34
  837. package/templates/static/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +0 -25
  838. package/templates/static/node_modules/typescript/lib/lib.scripthost.d.ts +0 -322
  839. package/templates/static/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +0 -41
  840. package/templates/static/node_modules/typescript/lib/lib.webworker.d.ts +0 -13150
  841. package/templates/static/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +0 -23
  842. package/templates/static/node_modules/typescript/lib/lib.webworker.iterable.d.ts +0 -340
  843. package/templates/static/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
  844. package/templates/static/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
  845. package/templates/static/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
  846. package/templates/static/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
  847. package/templates/static/node_modules/typescript/lib/tsc.js +0 -8
  848. package/templates/static/node_modules/typescript/lib/tsserver.js +0 -8
  849. package/templates/static/node_modules/typescript/lib/tsserverlibrary.d.ts +0 -17
  850. package/templates/static/node_modules/typescript/lib/tsserverlibrary.js +0 -21
  851. package/templates/static/node_modules/typescript/lib/typescript.d.ts +0 -11437
  852. /package/templates/{static → ssr-isr}/lib/auth/index.d.ts +0 -0
  853. /package/templates/{static → ssr-isr}/lib/cli/templates/ssg/jen.config.d.ts +0 -0
  854. /package/templates/{static → ssr-isr}/lib/cli/templates/ssg/site/index.d.ts +0 -0
  855. /package/templates/{static → ssr-isr}/lib/cli/templates/ssr/jen.config.d.ts +0 -0
  856. /package/templates/{static → ssr-isr}/lib/cli/templates/ssr/site/index.d.ts +0 -0
  857. /package/templates/{static → ssr-isr}/lib/compilers/esbuild-plugins.d.ts +0 -0
  858. /package/templates/{static/lib/middleware/types.d.ts → ssr-isr/lib/core/config.js} +0 -0
  859. /package/templates/{static → ssr-isr}/lib/middleware/errors/handler.d.ts +0 -0
  860. /package/templates/{static → ssr-isr}/lib/middleware/utils/matcher.d.ts +0 -0
  861. /package/templates/static/{node_modules → lib/vendor}/preact/LICENSE +0 -0
@@ -1,39 +1,194 @@
1
- /*
2
- * This file is part of Jen.js.
3
- * Copyright (C) 2026 oopsio
4
- *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU General Public License
16
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
- */
18
1
  import { Pipeline } from "./pipeline.js";
19
2
  import { MiddlewareRegistry } from "./registry.js";
20
3
  import { Context } from "./context.js";
4
+ import { log } from "../shared/log.js";
5
+ /**
6
+ * Core HTTP request handler that manages middleware execution and request context.
7
+ *
8
+ * The Kernel implements a middleware pipeline pattern:
9
+ * 1. Receives Node.js req and res objects
10
+ * 2. Wraps them in a Context object with helper methods and properties
11
+ * 3. Composes registered middlewares into a callable pipeline
12
+ * 4. Executes the pipeline with the context for request processing
13
+ *
14
+ * Middlewares can:
15
+ * - Access/modify request and response via ctx.req, ctx.res, ctx.response
16
+ * - Read/set cookies, headers, query params, route params
17
+ * - Store and retrieve shared state in ctx.state
18
+ * - Call ctx.response.json() or other response builders
19
+ * - Control flow via next() to continue to next middleware
20
+ */
21
21
  export class Kernel {
22
- globalMiddleware = [];
23
- constructor() { }
24
- use(mw) {
25
- this.globalMiddleware.push(mw);
22
+ /**
23
+ * Array of global middleware functions that run for every request.
24
+ * Middlewares are stored in order of registration (use() calls).
25
+ * Executed sequentially in Pipeline.compose().
26
+ */
27
+ globalMiddleware = [];
28
+ constructor() {}
29
+ /**
30
+ * Registers a middleware function to run for all requests.
31
+ * Middleware can be a function, a class constructor, or an object with handle() method.
32
+ *
33
+ * @param mw Middleware function: (ctx, next) => Promise<void>
34
+ * Or class with: new MyMiddleware().handle(ctx, next)
35
+ *
36
+ * @example
37
+ * kernel.use(async (ctx, next) => {
38
+ * console.log(`${ctx.req.method} ${ctx.url.pathname}`);
39
+ * await next();
40
+ * });
41
+ */
42
+ use(mw) {
43
+ this.globalMiddleware.push(mw);
44
+ }
45
+ /**
46
+ * Processes an HTTP request through the global middleware pipeline.
47
+ * Creates a Context wrapping the request/response, composes middlewares, and executes them.
48
+ * Catches any uncaught errors and sends a safe 500 response.
49
+ *
50
+ * @param req Node.js IncomingMessage (HTTP request object)
51
+ * @param res Node.js ServerResponse (HTTP response object)
52
+ *
53
+ * @returns Promise that resolves when middleware chain completes
54
+ *
55
+ * @example
56
+ * const server = createServer((req, res) => {
57
+ * kernel.handle(req, res);
58
+ * });
59
+ */
60
+ async handle(req, res) {
61
+ try {
62
+ const ctx = new Context(req, res);
63
+ const fn = Pipeline.compose(this.globalMiddleware);
64
+ await fn(ctx, async () => {});
65
+ } catch (err) {
66
+ // Uncaught error in middleware pipeline
67
+ log.error(`[Kernel] Uncaught error: ${err}`);
68
+ if (err && err.stack) {
69
+ log.error(`Stack: ${err.stack}`);
70
+ }
71
+ // If headers already sent, destroy socket
72
+ if (res.headersSent) {
73
+ log.error("[Kernel] Headers already sent, destroying socket");
74
+ if (res.socket && !res.socket.destroyed) {
75
+ res.socket.destroy();
76
+ }
77
+ return;
78
+ }
79
+ // Try to send a safe 500 response
80
+ try {
81
+ res.statusCode = 500;
82
+ res.setHeader("content-type", "text/html; charset=utf-8");
83
+ res.setHeader("cache-control", "no-store, no-cache, must-revalidate");
84
+ res.end(`<!DOCTYPE html>
85
+ <html lang="en">
86
+ <head>
87
+ <meta charset="UTF-8">
88
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
89
+ <title>500 - Internal Server Error</title>
90
+ <style>
91
+ body {
92
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
93
+ background: #f5f5f5;
94
+ margin: 0;
95
+ padding: 20px;
96
+ }
97
+ .container {
98
+ max-width: 600px;
99
+ margin: 60px auto;
100
+ background: white;
101
+ padding: 40px;
102
+ border-radius: 8px;
103
+ box-shadow: 0 2px 8px rgba(0,0,0,0.1);
104
+ }
105
+ h1 {
106
+ color: #d32f2f;
107
+ margin: 0 0 20px 0;
108
+ font-size: 32px;
109
+ }
110
+ p {
111
+ color: #666;
112
+ line-height: 1.6;
113
+ margin: 10px 0;
26
114
  }
27
- async handle(req, res) {
28
- const ctx = new Context(req, res);
29
- const fn = Pipeline.compose(this.globalMiddleware);
30
- await fn(ctx, async () => { });
115
+ </style>
116
+ </head>
117
+ <body>
118
+ <div class="container">
119
+ <h1>500 - Internal Server Error</h1>
120
+ <p>The server encountered an unexpected error while processing your request.</p>
121
+ <p>Our team has been notified. Please try again later.</p>
122
+ </div>
123
+ </body>
124
+ </html>`);
125
+ } catch (e) {
126
+ log.error(`[Kernel] Failed to send error response: ${e}`);
127
+ // Last resort: destroy socket
128
+ if (res.socket && !res.socket.destroyed) {
129
+ res.socket.destroy();
130
+ }
131
+ }
31
132
  }
32
- async handleWithGroup(req, res, groupName) {
33
- const ctx = new Context(req, res);
34
- const registry = MiddlewareRegistry.get();
35
- const groupMw = registry.getGroup(groupName);
36
- const fn = Pipeline.compose([...this.globalMiddleware, ...groupMw]);
37
- await fn(ctx, async () => { });
133
+ }
134
+ /**
135
+ * Processes a request through global middleware plus a registered middleware group.
136
+ * Retrieves middleware from the registry by group name and composes them with global middleware.
137
+ * Useful for route-specific or feature-specific middleware chains.
138
+ * Catches any uncaught errors and sends a safe 500 response.
139
+ *
140
+ * @param req Node.js IncomingMessage
141
+ * @param res Node.js ServerResponse
142
+ * @param groupName Name of the middleware group registered in MiddlewareRegistry
143
+ *
144
+ * @returns Promise that resolves when complete middleware chain executes
145
+ *
146
+ * @example
147
+ * // Given a group named "apiMiddleware" with auth and logging
148
+ * await kernel.handleWithGroup(req, res, "apiMiddleware");
149
+ */
150
+ async handleWithGroup(req, res, groupName) {
151
+ try {
152
+ const ctx = new Context(req, res);
153
+ const registry = MiddlewareRegistry.get();
154
+ const groupMw = registry.getGroup(groupName);
155
+ const fn = Pipeline.compose([...this.globalMiddleware, ...groupMw]);
156
+ await fn(ctx, async () => {});
157
+ } catch (err) {
158
+ // Uncaught error in middleware pipeline
159
+ log.error(
160
+ `[Kernel] Uncaught error in middleware group "${groupName}": ${err}`,
161
+ );
162
+ if (err && err.stack) {
163
+ log.error(`Stack: ${err.stack}`);
164
+ }
165
+ // If headers already sent, destroy socket
166
+ if (res.headersSent) {
167
+ log.error("[Kernel] Headers already sent, destroying socket");
168
+ if (res.socket && !res.socket.destroyed) {
169
+ res.socket.destroy();
170
+ }
171
+ return;
172
+ }
173
+ // Try to send a safe 500 response
174
+ try {
175
+ res.statusCode = 500;
176
+ res.setHeader("content-type", "application/json");
177
+ res.setHeader("cache-control", "no-store, no-cache, must-revalidate");
178
+ res.end(
179
+ JSON.stringify({
180
+ error: "Internal Server Error",
181
+ message:
182
+ "An unexpected error occurred while processing your request.",
183
+ }),
184
+ );
185
+ } catch (e) {
186
+ log.error(`[Kernel] Failed to send error response: ${e}`);
187
+ // Last resort: destroy socket
188
+ if (res.socket && !res.socket.destroyed) {
189
+ res.socket.destroy();
190
+ }
191
+ }
38
192
  }
193
+ }
39
194
  }
@@ -1,67 +1,148 @@
1
- /*
2
- * This file is part of Jen.js.
3
- * Copyright (C) 2026 oopsio
1
+ /**
2
+ * Middleware composition and execution engine.
3
+ * Composes multiple middleware functions into a single callable function.
4
+ * Supports functions, class constructors, and objects with handle() methods.
4
5
  *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
6
+ * The Pipeline implements the "cascade" or "onion" middleware pattern:
7
+ * - Middlewares are executed sequentially in order
8
+ * - Each middleware receives a next() function to pass control to the next handler
9
+ * - Execution returns through each middleware in reverse order
10
+ * - Early termination is possible by not calling next()
9
11
  *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU General Public License
16
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
12
+ * @example
13
+ * const middlewares = [
14
+ * (ctx, next) => { console.log("1 start"); next().then(() => console.log("1 end")); },
15
+ * (ctx, next) => { console.log("2 start"); next().then(() => console.log("2 end")); },
16
+ * ];
17
+ * // Logs: "1 start", "2 start", "2 end", "1 end" (onion pattern)
17
18
  */
18
19
  export class Pipeline {
19
- static compose(middleware) {
20
- if (!Array.isArray(middleware))
21
- throw new TypeError("Middleware stack must be an array!");
22
- const handlers = middleware.map((mw) => this.resolveMiddleware(mw));
23
- return function (context, next) {
24
- let index = -1;
25
- function dispatch(i) {
26
- if (i <= index)
27
- return Promise.reject(new Error("next() called multiple times"));
28
- index = i;
29
- let fn = handlers[i];
30
- if (i === handlers.length) {
31
- fn = next;
32
- }
33
- if (!fn)
34
- return Promise.resolve();
35
- try {
36
- return Promise.resolve(fn(context, dispatch.bind(null, i + 1)));
37
- }
38
- catch (err) {
39
- return Promise.reject(err);
40
- }
41
- }
42
- return dispatch(0);
43
- };
44
- }
45
- static resolveMiddleware(mw) {
46
- if (typeof mw === "function") {
47
- // Check if it's a class constructor (has prototype.handle)
48
- if ("prototype" in mw &&
49
- mw.prototype &&
50
- typeof mw.prototype.handle === "function") {
51
- try {
52
- const instance = new mw();
53
- return instance.handle.bind(instance);
54
- }
55
- catch (e) {
56
- // If instantiation fails, assume it's a simple function middleware
57
- return mw;
58
- }
59
- }
60
- return mw;
20
+ /**
21
+ * Composes an array of middleware into a single callable function.
22
+ * The composed function accepts (context, finalNext) and executes middlewares in sequence.
23
+ *
24
+ * Middleware resolution:
25
+ * - Functions are passed through as-is
26
+ * - Class constructors (functions with prototype.handle) are instantiated and their handle() bound
27
+ * - Objects with handle() methods have handle() bound to them
28
+ *
29
+ * @param middleware Array of middleware to compose
30
+ * @returns Composed function: async (context, next) => Promise<void>
31
+ *
32
+ * @throws {TypeError} If middleware is not an array
33
+ * @throws {TypeError} If a middleware is not a function, class, or object with handle()
34
+ *
35
+ * @example
36
+ * const composed = Pipeline.compose([authMiddleware, loggingMiddleware]);
37
+ * await composed(ctx, () => console.log("done"));
38
+ */
39
+ static compose(middleware) {
40
+ if (!Array.isArray(middleware))
41
+ throw new TypeError("Middleware stack must be an array!");
42
+ /**
43
+ * Resolve each middleware to a callable function.
44
+ * Handles functions, class constructors, and objects with handle() methods.
45
+ */
46
+ const handlers = middleware.map((mw) => this.resolveMiddleware(mw));
47
+ /**
48
+ * Returns the composed middleware function that executes the pipeline.
49
+ * Uses the dispatch() pattern to enforce single-next-call and maintain order.
50
+ *
51
+ * @param context Request context object passed to each middleware
52
+ * @param next Final handler called after all middlewares
53
+ * @returns Promise that resolves when entire pipeline completes
54
+ */
55
+ return function (context, next) {
56
+ /**
57
+ * Tracks the current dispatch index to detect "next() called multiple times".
58
+ * This prevents middleware from accidentally calling next() twice,
59
+ * which would cause handlers to execute in wrong order.
60
+ */
61
+ let index = -1;
62
+ /**
63
+ * Dispatches (executes) the middleware at index i.
64
+ * Enforces that next() can only be called once by checking index increment.
65
+ *
66
+ * @param i Index of the middleware to execute
67
+ * @returns Promise from the middleware or final next() handler
68
+ */
69
+ function dispatch(i) {
70
+ if (i <= index)
71
+ return Promise.reject(new Error("next() called multiple times"));
72
+ index = i;
73
+ let fn = handlers[i];
74
+ /**
75
+ * If we've exhausted all middlewares, call the final next() handler.
76
+ * This allows code after Pipeline.compose() to run.
77
+ */
78
+ if (i === handlers.length) {
79
+ fn = next;
61
80
  }
62
- if (typeof mw === "object" && mw !== null && "handle" in mw) {
63
- return mw.handle.bind(mw);
81
+ if (!fn) return Promise.resolve();
82
+ try {
83
+ /**
84
+ * Execute the middleware function, passing:
85
+ * - context: the request context object
86
+ * - dispatch.bind(null, i + 1): the next() function for chaining
87
+ *
88
+ * Promise.resolve() wraps non-promise returns for consistency.
89
+ */
90
+ return Promise.resolve(fn(context, dispatch.bind(null, i + 1)));
91
+ } catch (err) {
92
+ return Promise.reject(err);
64
93
  }
65
- throw new TypeError("Middleware must be a function, a class constructor, or an object with a handle() method");
94
+ }
95
+ /**
96
+ * Start the pipeline at the first middleware (index 0).
97
+ */
98
+ return dispatch(0);
99
+ };
100
+ }
101
+ /**
102
+ * Resolves a middleware to a callable (context, next) => Promise function.
103
+ * Supports three forms:
104
+ * 1. Function: Used directly
105
+ * 2. Class constructor with handle() method: Instantiated and bound
106
+ * 3. Object with handle() method: handle() method is bound
107
+ *
108
+ * @param mw Middleware in one of the above forms
109
+ * @returns Callable (context, next) => Promise function
110
+ *
111
+ * @throws {TypeError} If mw is not a recognized middleware type
112
+ */
113
+ static resolveMiddleware(mw) {
114
+ if (typeof mw === "function") {
115
+ /**
116
+ * Check if this is a class constructor with a handle() method.
117
+ * Constructors have a prototype property with methods defined on it.
118
+ */
119
+ if (
120
+ "prototype" in mw &&
121
+ mw.prototype &&
122
+ typeof mw.prototype.handle === "function"
123
+ ) {
124
+ try {
125
+ const instance = new mw();
126
+ return instance.handle.bind(instance);
127
+ } catch (e) {
128
+ /**
129
+ * If instantiation fails (constructor requires params),
130
+ * assume it's a simple function middleware and use it directly.
131
+ */
132
+ return mw;
133
+ }
134
+ }
135
+ return mw;
136
+ }
137
+ /**
138
+ * Check for object with handle() method.
139
+ * Useful for class instances or middleware objects.
140
+ */
141
+ if (typeof mw === "object" && mw !== null && "handle" in mw) {
142
+ return mw.handle.bind(mw);
66
143
  }
144
+ throw new TypeError(
145
+ "Middleware must be a function, a class constructor, or an object with a handle() method",
146
+ );
147
+ }
67
148
  }
@@ -1,41 +1,85 @@
1
- /*
2
- * This file is part of Jen.js.
3
- * Copyright (C) 2026 oopsio
1
+ /**
2
+ * Global registry for named middleware and middleware groups.
3
+ * Enables reusable middleware composition patterns where middlewares are registered once
4
+ * and then referenced by name in groups or applied globally.
4
5
  *
5
- * This program is free software: you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation, either version 3 of the License, or
8
- * (at your option) any later version.
6
+ * The registry follows the singleton pattern to maintain a single shared instance
7
+ * throughout the application lifecycle.
9
8
  *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU General Public License
16
- * along with this program. If not, see <https://www.gnu.org/licenses/>.
9
+ * @example
10
+ * const registry = MiddlewareRegistry.get();
11
+ * registry.register('auth', authMiddleware);
12
+ * registry.register('logger', loggingMiddleware);
13
+ * registry.group('api', ['auth', 'logger']);
14
+ * // Later, get the group to apply to routes
15
+ * const apiMw = registry.getGroup('api'); // [authMiddleware, loggingMiddleware]
17
16
  */
18
17
  export class MiddlewareRegistry {
19
- static instance;
20
- middleware = new Map();
21
- groups = new Map();
22
- constructor() { }
23
- static get() {
24
- if (!this.instance)
25
- this.instance = new MiddlewareRegistry();
26
- return this.instance;
27
- }
28
- register(name, mw) {
29
- this.middleware.set(name, mw);
30
- }
31
- get(name) {
32
- return this.middleware.get(name);
33
- }
34
- group(groupName, middlewareNames) {
35
- this.groups.set(groupName, middlewareNames);
36
- }
37
- getGroup(groupName) {
38
- const names = this.groups.get(groupName) || [];
39
- return names.map((n) => this.get(n)).filter((m) => !!m);
40
- }
18
+ // Singleton instance shared across the application.
19
+ static instance;
20
+ // Map of named middleware functions.
21
+ middleware = new Map();
22
+ // Map of middleware group definitions (groups contain names of registered middleware).
23
+ groups = new Map();
24
+ constructor() {}
25
+ /**
26
+ * Gets or creates the singleton registry instance.
27
+ * All calls to this method return the same instance, ensuring a single registry.
28
+ *
29
+ * @returns The singleton MiddlewareRegistry instance.
30
+ */
31
+ static get() {
32
+ if (!this.instance) this.instance = new MiddlewareRegistry();
33
+ return this.instance;
34
+ }
35
+ /**
36
+ * Registers a middleware function with a name.
37
+ * Named middleware can be referenced in groups or applied individually.
38
+ *
39
+ * @param name Unique identifier for the middleware.
40
+ * @param mw The middleware function to register.
41
+ *
42
+ * @example
43
+ * registry.register('cors', corsMiddleware);
44
+ */
45
+ register(name, mw) {
46
+ this.middleware.set(name, mw);
47
+ }
48
+ /**
49
+ * Retrieves a registered middleware by name.
50
+ *
51
+ * @param name The name of the middleware to retrieve.
52
+ * @returns The middleware function, or undefined if not found.
53
+ */
54
+ get(name) {
55
+ return this.middleware.get(name);
56
+ }
57
+ /**
58
+ * Defines a group of middleware by names.
59
+ * Groups allow composing multiple middleware into a named set that can be applied together.
60
+ *
61
+ * @param groupName The name of the group.
62
+ * @param middlewareNames Array of registered middleware names to include in the group.
63
+ *
64
+ * @example
65
+ * registry.group('secure', ['auth', 'rateLimit', 'securityHeaders']);
66
+ */
67
+ group(groupName, middlewareNames) {
68
+ this.groups.set(groupName, middlewareNames);
69
+ }
70
+ /**
71
+ * Retrieves all middleware functions in a named group.
72
+ * Resolves group names to actual middleware functions.
73
+ * Skips missing middleware names gracefully.
74
+ *
75
+ * @param groupName The name of the group to retrieve.
76
+ * @returns Array of middleware functions in the group (in order).
77
+ *
78
+ * @example
79
+ * const middlewares = registry.getGroup('secure'); // [authFn, rateLimitFn, securityHeadersFn]
80
+ */
81
+ getGroup(groupName) {
82
+ const names = this.groups.get(groupName) || [];
83
+ return names.map((n) => this.get(n)).filter((m) => !!m);
84
+ }
41
85
  }