create-jen-app 1.2.3 → 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 (355) hide show
  1. package/dist/colors.js +0 -17
  2. package/dist/create.js +5 -17
  3. package/dist/generator.js +14 -31
  4. package/dist/index.js +6 -1
  5. package/package.json +1 -1
  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).js +9 -0
  11. package/templates/ssr-isr/lib/auth/cookie-utils.js +79 -0
  12. package/templates/ssr-isr/lib/auth/index.js +2 -0
  13. package/templates/ssr-isr/lib/auth/jwt.js +57 -0
  14. package/templates/ssr-isr/lib/auth/session.js +92 -0
  15. package/templates/ssr-isr/lib/build/asset-hashing.d.ts +10 -0
  16. package/templates/ssr-isr/lib/build/asset-hashing.js +25 -0
  17. package/templates/ssr-isr/lib/build/asset-manifest.d.ts +11 -0
  18. package/templates/ssr-isr/lib/build/asset-manifest.js +21 -0
  19. package/templates/{static → ssr-isr}/lib/build/build.d.ts +1 -1
  20. package/templates/ssr-isr/lib/build/build.js +141 -0
  21. package/templates/{static → ssr-isr}/lib/build/island-hydration.d.ts +8 -5
  22. package/templates/ssr-isr/lib/build/island-hydration.js +44 -0
  23. package/templates/ssr-isr/lib/build/minifier.d.ts +20 -0
  24. package/templates/ssr-isr/lib/build/minifier.js +46 -0
  25. package/templates/ssr-isr/lib/build/page-renderer.d.ts +17 -0
  26. package/templates/ssr-isr/lib/build/page-renderer.js +28 -0
  27. package/templates/ssr-isr/lib/build/production-build.d.ts +10 -0
  28. package/templates/ssr-isr/lib/build/production-build.js +13 -0
  29. package/templates/ssr-isr/lib/build/ssg-pipeline.d.ts +15 -0
  30. package/templates/ssr-isr/lib/build/ssg-pipeline.js +113 -0
  31. package/templates/ssr-isr/lib/build-tools/build-site.js +36 -0
  32. package/templates/ssr-isr/lib/cache/index.js +10 -0
  33. package/templates/ssr-isr/lib/cache/memory.js +40 -0
  34. package/templates/ssr-isr/lib/cache/redis.js +61 -0
  35. package/templates/ssr-isr/lib/cli/banner.js +28 -0
  36. package/templates/ssr-isr/lib/cli/templates/ssg/jen.config.js +32 -0
  37. package/templates/ssr-isr/lib/cli/templates/ssg/site/index.js +9 -0
  38. package/templates/ssr-isr/lib/cli/templates/ssr/jen.config.js +32 -0
  39. package/templates/ssr-isr/lib/cli/templates/ssr/site/index.js +9 -0
  40. package/templates/ssr-isr/lib/compilers/esbuild-plugins.js +111 -0
  41. package/templates/ssr-isr/lib/compilers/svelte.js +44 -0
  42. package/templates/ssr-isr/lib/compilers/vue.js +90 -0
  43. package/templates/ssr-isr/lib/core/http.js +71 -0
  44. package/templates/ssr-isr/lib/core/middleware-hooks.js +97 -0
  45. package/templates/ssr-isr/lib/core/paths.js +39 -0
  46. package/templates/ssr-isr/lib/core/routes/match.js +47 -0
  47. package/templates/ssr-isr/lib/core/routes/scan.js +190 -0
  48. package/templates/ssr-isr/lib/core/types.js +1 -0
  49. package/templates/ssr-isr/lib/css/compiler.js +74 -0
  50. package/templates/ssr-isr/lib/db/connector.js +42 -0
  51. package/templates/ssr-isr/lib/db/drivers/jdb.js +44 -0
  52. package/templates/ssr-isr/lib/db/drivers/sql.js +182 -0
  53. package/templates/ssr-isr/lib/db/index.js +48 -0
  54. package/templates/ssr-isr/lib/db/types.js +1 -0
  55. package/templates/ssr-isr/lib/graphql/index.js +52 -0
  56. package/templates/ssr-isr/lib/graphql/resolvers.js +25 -0
  57. package/templates/ssr-isr/lib/graphql/schema.js +35 -0
  58. package/templates/ssr-isr/lib/i18n/en.json +4 -0
  59. package/templates/ssr-isr/lib/i18n/es.json +4 -0
  60. package/templates/ssr-isr/lib/i18n/index.js +15 -0
  61. package/templates/ssr-isr/lib/import/jen-import.js +161 -0
  62. package/templates/ssr-isr/lib/index.js +116 -0
  63. package/templates/ssr-isr/lib/jdb/engine.js +275 -0
  64. package/templates/ssr-isr/lib/jdb/index.js +34 -0
  65. package/templates/ssr-isr/lib/jdb/types.js +1 -0
  66. package/templates/ssr-isr/lib/jdb/utils.js +176 -0
  67. package/templates/{static → ssr-isr}/lib/middleware/builtins/body-parser.js +0 -17
  68. package/templates/ssr-isr/lib/middleware/builtins/cors.js +54 -0
  69. package/templates/{static → ssr-isr}/lib/middleware/builtins/logger.js +0 -17
  70. package/templates/{static → ssr-isr}/lib/middleware/builtins/rate-limit.js +0 -17
  71. package/templates/{static → ssr-isr}/lib/middleware/builtins/request-id.js +0 -17
  72. package/templates/{static → ssr-isr}/lib/middleware/builtins/security-headers.js +0 -17
  73. package/templates/ssr-isr/lib/middleware/context.js +124 -0
  74. package/templates/{static → ssr-isr}/lib/middleware/decorators.js +0 -17
  75. package/templates/{static → ssr-isr}/lib/middleware/errors/handler.js +0 -17
  76. package/templates/ssr-isr/lib/middleware/errors/http-error.js +10 -0
  77. package/templates/ssr-isr/lib/middleware/kernel.js +85 -0
  78. package/templates/ssr-isr/lib/middleware/pipeline.js +148 -0
  79. package/templates/ssr-isr/lib/middleware/registry.js +85 -0
  80. package/templates/ssr-isr/lib/middleware/response.js +107 -0
  81. package/templates/ssr-isr/lib/middleware/types.d.ts +1 -0
  82. package/templates/ssr-isr/lib/middleware/types.js +1 -0
  83. package/templates/ssr-isr/lib/middleware/utils/matcher.js +13 -0
  84. package/templates/{static → ssr-isr}/lib/native/bundle.js +0 -17
  85. package/templates/{static → ssr-isr}/lib/native/dev-server.js +0 -17
  86. package/templates/{static → ssr-isr}/lib/native/index.js +0 -17
  87. package/templates/{static → ssr-isr}/lib/native/optimizer.js +0 -17
  88. package/templates/ssr-isr/lib/native/style-compiler.js +19 -0
  89. package/templates/ssr-isr/lib/plugin/loader.js +36 -0
  90. package/templates/ssr-isr/lib/runtime/client-runtime.js +25 -0
  91. package/templates/ssr-isr/lib/runtime/hmr.js +59 -0
  92. package/templates/ssr-isr/lib/runtime/hydrate.js +55 -0
  93. package/templates/ssr-isr/lib/runtime/island-hydration-client.js +146 -0
  94. package/templates/ssr-isr/lib/runtime/islands.js +110 -0
  95. package/templates/ssr-isr/lib/runtime/render.js +244 -0
  96. package/templates/ssr-isr/lib/server/api-routes.js +237 -0
  97. package/templates/ssr-isr/lib/server/api.js +108 -0
  98. package/templates/ssr-isr/lib/server/app.js +438 -0
  99. package/templates/ssr-isr/lib/server/runtimeServe.js +169 -0
  100. package/templates/ssr-isr/lib/server/ssr.js +202 -0
  101. package/templates/ssr-isr/lib/shared/log.js +64 -0
  102. package/templates/ssr-isr/package.json +23 -0
  103. package/templates/ssr-isr/server.js +128 -0
  104. package/templates/ssr-isr/site/pages/(index).tsx +11 -0
  105. package/templates/ssr-isr/site/styles/global.scss +37 -0
  106. package/templates/ssr-isr/tsconfig.json +39 -0
  107. package/templates/static/build.js +30 -18
  108. package/templates/static/jen.config.ts +0 -18
  109. package/templates/static/jenjs.d.ts +0 -18
  110. package/templates/static/lib/api/(hello).js +0 -17
  111. package/templates/static/lib/api/examples/files/[...slug].js +22 -0
  112. package/templates/static/lib/api/examples/hello.js +11 -0
  113. package/templates/static/lib/api/examples/posts/[id].js +37 -0
  114. package/templates/static/lib/api/examples/posts.js +37 -0
  115. package/templates/static/lib/api/examples/search.js +23 -0
  116. package/templates/static/lib/api/index.js +41 -0
  117. package/templates/static/lib/api/loader.js +234 -0
  118. package/templates/static/lib/api/router.js +259 -0
  119. package/templates/static/lib/assets/types.js +1 -0
  120. package/templates/static/lib/auth/cookie-utils.js +3 -16
  121. package/templates/static/lib/auth/index.js +0 -17
  122. package/templates/static/lib/auth/jwt.js +0 -17
  123. package/templates/static/lib/auth/session.js +0 -17
  124. package/templates/static/lib/build/asset-hashing.js +44 -36
  125. package/templates/static/lib/build/asset-manifest.js +16 -33
  126. package/templates/static/lib/build/build.js +270 -125
  127. package/templates/static/lib/build/bundle-analyzer-ui.js +417 -0
  128. package/templates/static/lib/build/bundle-analyzer.js +945 -0
  129. package/templates/static/lib/build/code-splitter.js +194 -0
  130. package/templates/static/lib/build/feature-analyzer.js +190 -0
  131. package/templates/static/lib/build/feature-gate.js +257 -0
  132. package/templates/static/lib/build/island-hydration.js +17 -35
  133. package/templates/static/lib/build/lazy-loader.js +322 -0
  134. package/templates/static/lib/build/minifier.js +40 -59
  135. package/templates/static/lib/build/page-renderer.js +23 -40
  136. package/templates/static/lib/build/production-build.js +9 -26
  137. package/templates/static/lib/build/rust-hashing.js +71 -0
  138. package/templates/static/lib/build/script-optimizer.js +285 -0
  139. package/templates/static/lib/build/ssg-pipeline.js +100 -106
  140. package/templates/static/lib/build/vercel-output.js +298 -0
  141. package/templates/static/lib/build-tools/build-site.js +0 -17
  142. package/templates/static/lib/cache/index.js +0 -17
  143. package/templates/static/lib/cache/memory.js +0 -17
  144. package/templates/static/lib/cache/redis.js +0 -17
  145. package/templates/static/lib/cli/banner.js +0 -17
  146. package/templates/static/lib/cli/templates/ssg/jen.config.js +0 -17
  147. package/templates/static/lib/cli/templates/ssr/jen.config.js +0 -17
  148. package/templates/static/lib/client/Image.js +42 -0
  149. package/templates/static/lib/client/Link.js +190 -0
  150. package/templates/static/lib/client/PWA.js +46 -0
  151. package/templates/static/lib/client/Seo.js +97 -0
  152. package/templates/static/lib/client/index.js +9 -0
  153. package/templates/static/lib/client/useNavigation.js +25 -0
  154. package/templates/static/lib/client/useRouter.js +64 -0
  155. package/templates/static/lib/client-routing/Link.js +17 -0
  156. package/templates/static/lib/client-routing/index.js +19 -0
  157. package/templates/static/lib/client-routing/router.js +151 -0
  158. package/templates/static/lib/client-routing/signal.js +147 -0
  159. package/templates/static/lib/compilers/esbuild-plugins.js +0 -17
  160. package/templates/static/lib/compilers/svelte.js +0 -17
  161. package/templates/static/lib/compilers/vue.js +0 -17
  162. package/templates/static/lib/core/config.js +0 -17
  163. package/templates/static/lib/core/feature-guard.js +136 -0
  164. package/templates/static/lib/core/features.js +99 -0
  165. package/templates/static/lib/core/http.js +0 -17
  166. package/templates/static/lib/core/layouts/index.js +10 -0
  167. package/templates/static/lib/core/layouts/render.js +158 -0
  168. package/templates/static/lib/core/layouts/scan.js +112 -0
  169. package/templates/static/lib/core/layouts/types.js +1 -0
  170. package/templates/static/lib/core/lifecycle.js +129 -0
  171. package/templates/static/lib/core/loader-schema.js +81 -0
  172. package/templates/static/lib/core/middleware-hooks.js +0 -17
  173. package/templates/static/lib/core/paths.js +0 -17
  174. package/templates/static/lib/core/routes/advanced.js +114 -0
  175. package/templates/static/lib/core/routes/handlers.js +181 -0
  176. package/templates/static/lib/core/routes/match.js +89 -17
  177. package/templates/static/lib/core/routes/orchestrator.js +171 -0
  178. package/templates/static/lib/core/routes/rendering-config.js +131 -0
  179. package/templates/static/lib/core/routes/scan.js +0 -17
  180. package/templates/static/lib/core/types.js +0 -17
  181. package/templates/static/lib/css/compiler.js +1 -18
  182. package/templates/static/lib/data-fetching/cache.js +223 -0
  183. package/templates/static/lib/data-fetching/client.js +202 -0
  184. package/templates/static/lib/data-fetching/feature-guard.js +29 -0
  185. package/templates/static/lib/data-fetching/graphql.js +265 -0
  186. package/templates/static/lib/data-fetching/index.js +57 -0
  187. package/templates/static/lib/data-fetching/rest.js +256 -0
  188. package/templates/static/lib/data-fetching/server.js +182 -0
  189. package/templates/static/lib/data-fetching/types.js +5 -0
  190. package/templates/static/lib/db/connector.js +0 -17
  191. package/templates/static/lib/db/drivers/jdb.js +0 -17
  192. package/templates/static/lib/db/drivers/sql.js +0 -17
  193. package/templates/static/lib/db/index.js +0 -17
  194. package/templates/static/lib/db/types.js +0 -17
  195. package/templates/static/lib/devtools/component-tree.js +106 -0
  196. package/templates/static/lib/devtools/devtools.js +638 -0
  197. package/templates/static/lib/devtools/event-bus.js +29 -0
  198. package/templates/static/lib/devtools/event-logger.js +67 -0
  199. package/templates/static/lib/devtools/index.js +9 -0
  200. package/templates/static/lib/devtools/integration.js +149 -0
  201. package/templates/static/lib/devtools/performance.js +84 -0
  202. package/templates/static/lib/devtools/persistence.js +57 -0
  203. package/templates/static/lib/devtools/plugins.js +97 -0
  204. package/templates/static/lib/devtools/search.js +89 -0
  205. package/templates/static/lib/devtools/ui.js +769 -0
  206. package/templates/static/lib/features/api/handler.js +10 -0
  207. package/templates/static/lib/features/api/index.js +5 -0
  208. package/templates/static/lib/features/api/types.js +4 -0
  209. package/templates/static/lib/features/middleware/compiled.js +7 -0
  210. package/templates/static/lib/features/middleware/index.js +5 -0
  211. package/templates/static/lib/features/middleware/types.js +4 -0
  212. package/templates/static/lib/fonts/index.js +46 -0
  213. package/templates/static/lib/fonts/inject.js +125 -0
  214. package/templates/static/lib/fonts/loader.js +196 -0
  215. package/templates/static/lib/fonts/types.js +1 -0
  216. package/templates/static/lib/graphql/index.js +1 -18
  217. package/templates/static/lib/graphql/resolvers.js +20 -13
  218. package/templates/static/lib/graphql/schema.js +0 -17
  219. package/templates/static/lib/i18n/index.js +7 -19
  220. package/templates/static/lib/import/jen-import.js +1 -18
  221. package/templates/static/lib/index.js +79 -125
  222. package/templates/static/lib/jdb/engine.js +0 -17
  223. package/templates/static/lib/jdb/index.js +1 -18
  224. package/templates/static/lib/jdb/types.js +0 -17
  225. package/templates/static/lib/jdb/utils.js +0 -17
  226. package/templates/static/lib/middleware/builtins/cors.js +3 -16
  227. package/templates/static/lib/middleware/context.js +0 -17
  228. package/templates/static/lib/middleware/kernel.js +117 -25
  229. package/templates/static/lib/middleware/pipeline.js +0 -17
  230. package/templates/static/lib/middleware/registry.js +0 -17
  231. package/templates/static/lib/middleware/response.js +0 -17
  232. package/templates/static/lib/plugin/examples/analytics-plugin.js +183 -0
  233. package/templates/static/lib/plugin/examples/cdn-upload-plugin.js +94 -0
  234. package/templates/static/lib/plugin/loader.js +0 -17
  235. package/templates/static/lib/plugin/plugin-manager.js +177 -0
  236. package/templates/static/lib/plugin/types.js +28 -0
  237. package/templates/static/lib/runtime/client-runtime.js +0 -17
  238. package/templates/static/lib/runtime/hmr.js +0 -17
  239. package/templates/static/lib/runtime/hydrate.js +0 -17
  240. package/templates/static/lib/runtime/island-hydration-client.js +0 -17
  241. package/templates/static/lib/runtime/islands.js +0 -17
  242. package/templates/static/lib/runtime/render.js +208 -50
  243. package/templates/static/lib/security/security-config.js +60 -0
  244. package/templates/static/lib/security/security-middleware.js +229 -0
  245. package/templates/static/lib/server/api-routes.js +153 -43
  246. package/templates/static/lib/server/api.js +0 -17
  247. package/templates/static/lib/server/app.js +539 -223
  248. package/templates/static/lib/server/isr.js +365 -0
  249. package/templates/static/lib/server/runtimeServe.js +31 -24
  250. package/templates/static/lib/server/ssr.js +98 -22
  251. package/templates/static/lib/server-actions/handler.js +180 -0
  252. package/templates/static/lib/server-actions/index.js +19 -0
  253. package/templates/static/lib/server-actions/middleware.js +146 -0
  254. package/templates/static/lib/server-actions/scan.js +152 -0
  255. package/templates/static/lib/server-actions/types.js +1 -0
  256. package/templates/static/lib/server-actions/validators.js +156 -0
  257. package/templates/static/lib/shared/log.js +19 -20
  258. package/templates/static/lib/telemetry/api/rate-limiter.js +32 -0
  259. package/templates/static/lib/telemetry/api/validator.js +67 -0
  260. package/templates/static/lib/telemetry/client.js +121 -0
  261. package/templates/static/lib/telemetry/tests/rate-limiter.test.js +46 -0
  262. package/templates/static/lib/telemetry/tests/validator.test.js +62 -0
  263. package/templates/static/lib/vendor/glob/glob.js +4766 -0
  264. package/templates/static/lib/vendor/preact/LICENSE +21 -0
  265. package/templates/static/lib/vendor/preact/preact.module.js +797 -0
  266. package/templates/static/lib/vendor/sass/sass.node.mjs +212 -0
  267. package/templates/static/package.json +4 -0
  268. package/templates/static/server.js +22 -22
  269. package/templates/static/site/(home).tsx +0 -18
  270. package/templates/static/tsconfig.json +5 -1
  271. package/templates/static/.esbuild/jen.config.js +0 -19
  272. package/templates/static/lib/build/asset-hashing.d.ts +0 -10
  273. package/templates/static/lib/build/asset-manifest.d.ts +0 -11
  274. package/templates/static/lib/build/minifier.d.ts +0 -20
  275. package/templates/static/lib/build/page-renderer.d.ts +0 -17
  276. package/templates/static/lib/build/production-build.d.ts +0 -10
  277. package/templates/static/lib/build/ssg-pipeline.d.ts +0 -15
  278. package/templates/static/lib/middleware/errors/http-error.js +0 -27
  279. package/templates/static/lib/middleware/types.js +0 -18
  280. package/templates/static/lib/middleware/utils/matcher.js +0 -30
  281. package/templates/static/lib/native/style-compiler.js +0 -36
  282. /package/templates/{static → ssr-isr}/lib/api/(hello).d.ts +0 -0
  283. /package/templates/{static → ssr-isr}/lib/auth/cookie-utils.d.ts +0 -0
  284. /package/templates/{static → ssr-isr}/lib/auth/index.d.ts +0 -0
  285. /package/templates/{static → ssr-isr}/lib/auth/jwt.d.ts +0 -0
  286. /package/templates/{static → ssr-isr}/lib/auth/session.d.ts +0 -0
  287. /package/templates/{static → ssr-isr}/lib/build-tools/build-site.d.ts +0 -0
  288. /package/templates/{static → ssr-isr}/lib/cache/index.d.ts +0 -0
  289. /package/templates/{static → ssr-isr}/lib/cache/memory.d.ts +0 -0
  290. /package/templates/{static → ssr-isr}/lib/cache/redis.d.ts +0 -0
  291. /package/templates/{static → ssr-isr}/lib/cli/banner.d.ts +0 -0
  292. /package/templates/{static → ssr-isr}/lib/cli/templates/ssg/jen.config.d.ts +0 -0
  293. /package/templates/{static → ssr-isr}/lib/cli/templates/ssg/site/index.d.ts +0 -0
  294. /package/templates/{static → ssr-isr}/lib/cli/templates/ssr/jen.config.d.ts +0 -0
  295. /package/templates/{static → ssr-isr}/lib/cli/templates/ssr/site/index.d.ts +0 -0
  296. /package/templates/{static → ssr-isr}/lib/compilers/esbuild-plugins.d.ts +0 -0
  297. /package/templates/{static → ssr-isr}/lib/compilers/svelte.d.ts +0 -0
  298. /package/templates/{static → ssr-isr}/lib/compilers/vue.d.ts +0 -0
  299. /package/templates/{static → ssr-isr}/lib/core/config.d.ts +0 -0
  300. /package/templates/{static/lib/middleware/types.d.ts → ssr-isr/lib/core/config.js} +0 -0
  301. /package/templates/{static → ssr-isr}/lib/core/http.d.ts +0 -0
  302. /package/templates/{static → ssr-isr}/lib/core/middleware-hooks.d.ts +0 -0
  303. /package/templates/{static → ssr-isr}/lib/core/paths.d.ts +0 -0
  304. /package/templates/{static → ssr-isr}/lib/core/routes/match.d.ts +0 -0
  305. /package/templates/{static → ssr-isr}/lib/core/routes/scan.d.ts +0 -0
  306. /package/templates/{static → ssr-isr}/lib/core/types.d.ts +0 -0
  307. /package/templates/{static → ssr-isr}/lib/css/compiler.d.ts +0 -0
  308. /package/templates/{static → ssr-isr}/lib/db/connector.d.ts +0 -0
  309. /package/templates/{static → ssr-isr}/lib/db/drivers/jdb.d.ts +0 -0
  310. /package/templates/{static → ssr-isr}/lib/db/drivers/sql.d.ts +0 -0
  311. /package/templates/{static → ssr-isr}/lib/db/index.d.ts +0 -0
  312. /package/templates/{static → ssr-isr}/lib/db/types.d.ts +0 -0
  313. /package/templates/{static → ssr-isr}/lib/graphql/index.d.ts +0 -0
  314. /package/templates/{static → ssr-isr}/lib/graphql/resolvers.d.ts +0 -0
  315. /package/templates/{static → ssr-isr}/lib/graphql/schema.d.ts +0 -0
  316. /package/templates/{static → ssr-isr}/lib/i18n/index.d.ts +0 -0
  317. /package/templates/{static → ssr-isr}/lib/import/jen-import.d.ts +0 -0
  318. /package/templates/{static → ssr-isr}/lib/index.d.ts +0 -0
  319. /package/templates/{static → ssr-isr}/lib/jdb/engine.d.ts +0 -0
  320. /package/templates/{static → ssr-isr}/lib/jdb/index.d.ts +0 -0
  321. /package/templates/{static → ssr-isr}/lib/jdb/types.d.ts +0 -0
  322. /package/templates/{static → ssr-isr}/lib/jdb/utils.d.ts +0 -0
  323. /package/templates/{static → ssr-isr}/lib/middleware/builtins/body-parser.d.ts +0 -0
  324. /package/templates/{static → ssr-isr}/lib/middleware/builtins/cors.d.ts +0 -0
  325. /package/templates/{static → ssr-isr}/lib/middleware/builtins/logger.d.ts +0 -0
  326. /package/templates/{static → ssr-isr}/lib/middleware/builtins/rate-limit.d.ts +0 -0
  327. /package/templates/{static → ssr-isr}/lib/middleware/builtins/request-id.d.ts +0 -0
  328. /package/templates/{static → ssr-isr}/lib/middleware/builtins/security-headers.d.ts +0 -0
  329. /package/templates/{static → ssr-isr}/lib/middleware/context.d.ts +0 -0
  330. /package/templates/{static → ssr-isr}/lib/middleware/decorators.d.ts +0 -0
  331. /package/templates/{static → ssr-isr}/lib/middleware/errors/handler.d.ts +0 -0
  332. /package/templates/{static → ssr-isr}/lib/middleware/errors/http-error.d.ts +0 -0
  333. /package/templates/{static → ssr-isr}/lib/middleware/kernel.d.ts +0 -0
  334. /package/templates/{static → ssr-isr}/lib/middleware/pipeline.d.ts +0 -0
  335. /package/templates/{static → ssr-isr}/lib/middleware/registry.d.ts +0 -0
  336. /package/templates/{static → ssr-isr}/lib/middleware/response.d.ts +0 -0
  337. /package/templates/{static → ssr-isr}/lib/middleware/utils/matcher.d.ts +0 -0
  338. /package/templates/{static → ssr-isr}/lib/native/bundle.d.ts +0 -0
  339. /package/templates/{static → ssr-isr}/lib/native/dev-server.d.ts +0 -0
  340. /package/templates/{static → ssr-isr}/lib/native/index.d.ts +0 -0
  341. /package/templates/{static → ssr-isr}/lib/native/optimizer.d.ts +0 -0
  342. /package/templates/{static → ssr-isr}/lib/native/style-compiler.d.ts +0 -0
  343. /package/templates/{static → ssr-isr}/lib/plugin/loader.d.ts +0 -0
  344. /package/templates/{static → ssr-isr}/lib/runtime/client-runtime.d.ts +0 -0
  345. /package/templates/{static → ssr-isr}/lib/runtime/hmr.d.ts +0 -0
  346. /package/templates/{static → ssr-isr}/lib/runtime/hydrate.d.ts +0 -0
  347. /package/templates/{static → ssr-isr}/lib/runtime/island-hydration-client.d.ts +0 -0
  348. /package/templates/{static → ssr-isr}/lib/runtime/islands.d.ts +0 -0
  349. /package/templates/{static → ssr-isr}/lib/runtime/render.d.ts +0 -0
  350. /package/templates/{static → ssr-isr}/lib/server/api-routes.d.ts +0 -0
  351. /package/templates/{static → ssr-isr}/lib/server/api.d.ts +0 -0
  352. /package/templates/{static → ssr-isr}/lib/server/app.d.ts +0 -0
  353. /package/templates/{static → ssr-isr}/lib/server/runtimeServe.d.ts +0 -0
  354. /package/templates/{static → ssr-isr}/lib/server/ssr.d.ts +0 -0
  355. /package/templates/{static → ssr-isr}/lib/shared/log.d.ts +0 -0
@@ -0,0 +1,10 @@
1
+ /*
2
+ * API Routes Handler
3
+ */
4
+ /**
5
+ * Handle API routes with HTTP method dispatching
6
+ */
7
+ export async function handleApiRoutes(context) {
8
+ // Stub implementation
9
+ // Routes are handled by the server middleware
10
+ }
@@ -0,0 +1,5 @@
1
+ /*
2
+ * API Routes Feature
3
+ * Handles HTTP method-based API endpoints
4
+ */
5
+ export { handleApiRoutes } from "./handler.js";
@@ -0,0 +1,4 @@
1
+ /*
2
+ * API Feature Types
3
+ */
4
+ export {};
@@ -0,0 +1,7 @@
1
+ /*
2
+ * Compiled Middleware Chain
3
+ */
4
+ /**
5
+ * Compiled middleware chain for optimized execution
6
+ */
7
+ export const compiledMiddlewareChain = [];
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Middleware Feature
3
+ * Express-style middleware pipeline
4
+ */
5
+ export { compiledMiddlewareChain } from "./compiled.js";
@@ -0,0 +1,4 @@
1
+ /*
2
+ * Middleware Feature Types
3
+ */
4
+ export {};
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Fonts module for Jen.js
3
+ * Provides support for local and Google Fonts with automatic injection
4
+ * into SSR/SSG/ISR rendered pages.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * // In jen.config.ts:
9
+ * import type { FrameworkConfig } from "jenjs";
10
+ *
11
+ * export default {
12
+ * fonts: {
13
+ * local: ["site/fonts/Inter-Regular.woff2"],
14
+ * google: ["Roboto:400,700"],
15
+ * preload: true,
16
+ * display: "swap"
17
+ * },
18
+ * // ... rest of config
19
+ * } satisfies FrameworkConfig;
20
+ * ```
21
+ *
22
+ * The fonts are automatically injected during build and server initialization.
23
+ * To customize injection behavior, use the low-level API:
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * // In build.js or custom script:
28
+ * import { extractFonts } from "../fonts/loader.js";
29
+ * import { fontServeMiddleware } from "../fonts/inject.js";
30
+ *
31
+ * // Get fonts without auto-injection
32
+ * const { googleFontLinks, localFontsCSS } = extractFonts(fontsConfig, ".jen");
33
+ *
34
+ * // Customize before injecting
35
+ * const customCSS = localFontsCSS.replace(/display: swap/g, "display: optional");
36
+ *
37
+ * // Serve fonts with custom middleware
38
+ * const serveFonts = fontServeMiddleware("./.jen/cache/fonts");
39
+ * ```
40
+ */
41
+ export { injectFonts, fontServeMiddleware } from "./inject.js";
42
+ export {
43
+ processFonts,
44
+ generateGoogleFontLinks,
45
+ extractFonts,
46
+ } from "./loader.js";
@@ -0,0 +1,125 @@
1
+ import { extractFonts } from "./loader.js";
2
+ /**
3
+ * Injects font-related HTML and CSS into the framework config.
4
+ * This is called automatically during build and server initialization.
5
+ * Modifies config.inject.head to include font links and CSS.
6
+ *
7
+ * Fully hackable: Call this function in custom build scripts to control
8
+ * exactly how fonts are injected, or skip it entirely for manual control.
9
+ *
10
+ * @param config Jen.js framework config (modified in place)
11
+ * @param cacheDir Cache directory for fonts (default: config.build?.cacheDir or ".jen")
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // In build.js or server.js, customize font injection:
16
+ * import { injectFonts } from "../fonts/inject.js";
17
+ * import type { FrameworkConfig } from "../core/config.js";
18
+ *
19
+ * export async function setupFonts(config: FrameworkConfig) {
20
+ * // Inject fonts with custom cache location
21
+ * injectFonts(config, "./my-custom-cache");
22
+ *
23
+ * // Further customize injected content
24
+ * config.inject.head = config.inject.head.map(tag => {
25
+ * if (tag.includes("fonts.googleapis.com")) {
26
+ * // Add crossorigin to Google Fonts link
27
+ * return tag.replace("<link", '<link crossorigin');
28
+ * }
29
+ * return tag;
30
+ * });
31
+ *
32
+ * return config;
33
+ * }
34
+ * ```
35
+ */
36
+ export function injectFonts(config, cacheDir) {
37
+ const fontsCacheDir = cacheDir ?? config.build?.cacheDir ?? ".jen";
38
+ const fonts = config.fonts;
39
+ if (!fonts) {
40
+ return; // No fonts configured
41
+ }
42
+ const { googleFontLinks, localFontsCSS } = extractFonts(fonts, fontsCacheDir);
43
+ // Initialize inject.head if not already present
44
+ if (!config.inject) {
45
+ config.inject = { head: [], bodyEnd: [] };
46
+ }
47
+ if (!config.inject.head) {
48
+ config.inject.head = [];
49
+ }
50
+ // Add Google Fonts link (if any)
51
+ if (googleFontLinks) {
52
+ config.inject.head.push(googleFontLinks);
53
+ }
54
+ // Add local fonts CSS as <style> tag (if any)
55
+ if (localFontsCSS) {
56
+ const styleTag = `<style>${localFontsCSS}</style>`;
57
+ config.inject.head.push(styleTag);
58
+ }
59
+ }
60
+ /**
61
+ * Middleware for serving local fonts with proper cache headers.
62
+ * Used in development and production servers to serve fonts with appropriate
63
+ * HTTP headers for long-term caching.
64
+ *
65
+ * @param cacheDir Cache directory where fonts are stored
66
+ * @returns Middleware function compatible with Node.js http.Server
67
+ *
68
+ * @example
69
+ * ```typescript
70
+ * import { fontServeMiddleware } from "../fonts/inject.js";
71
+ * import { createServer } from "node:http";
72
+ *
73
+ * const server = createServer();
74
+ * const fontsMiddleware = fontServeMiddleware("./.jen/cache/fonts");
75
+ *
76
+ * server.on("request", async (req, res) => {
77
+ * if (req.url?.startsWith("/fonts/")) {
78
+ * await fontsMiddleware(req, res);
79
+ * return;
80
+ * }
81
+ * // Handle other routes
82
+ * });
83
+ * ```
84
+ */
85
+ export function fontServeMiddleware(cacheDir) {
86
+ return async (req, res) => {
87
+ if (!req.url?.startsWith("/fonts/")) {
88
+ return false;
89
+ }
90
+ const { readFileSync, existsSync } = await import("node:fs");
91
+ const { basename, join } = await import("node:path");
92
+ const fontPath = basename(req.url);
93
+ // Security: Prevent directory traversal attacks
94
+ if (fontPath.includes("..") || fontPath.includes("/")) {
95
+ res.statusCode = 400;
96
+ res.end("Invalid font path");
97
+ return true;
98
+ }
99
+ const fullPath = join(cacheDir, fontPath);
100
+ if (!existsSync(fullPath)) {
101
+ return false; // Not a font file, let other middleware handle it
102
+ }
103
+ try {
104
+ const content = readFileSync(fullPath);
105
+ const ext = fontPath.split(".").pop()?.toLowerCase();
106
+ const mimeTypes = {
107
+ ttf: "font/ttf",
108
+ otf: "font/otf",
109
+ woff: "font/woff",
110
+ woff2: "font/woff2",
111
+ };
112
+ const mimeType = mimeTypes[ext || ""] || "application/octet-stream";
113
+ res.statusCode = 200;
114
+ res.setHeader("content-type", mimeType);
115
+ res.setHeader("cache-control", "public, max-age=31536000, immutable");
116
+ res.setHeader("access-control-allow-origin", "*");
117
+ res.end(content);
118
+ return true;
119
+ } catch (err) {
120
+ res.statusCode = 500;
121
+ res.end("Font serving error");
122
+ return true;
123
+ }
124
+ };
125
+ }
@@ -0,0 +1,196 @@
1
+ import { copyFileSync, existsSync, mkdirSync } from "node:fs";
2
+ import { basename, extname, join, resolve } from "node:path";
3
+ import { log } from "../shared/log.js";
4
+ /**
5
+ * Processes and copies local font files to cache directory.
6
+ * Generates @font-face CSS for each font file.
7
+ * Supports .ttf, .woff, .woff2, .otf formats.
8
+ *
9
+ * @param config Fonts configuration from jen.config
10
+ * @param cacheDir Directory to store cached fonts (usually .jen/cache/fonts)
11
+ * @returns CSS string with @font-face declarations for all local fonts
12
+ *
13
+ * @hackable Override or extend this in build scripts:
14
+ * ```typescript
15
+ * import { processFonts } from "../fonts/loader.js";
16
+ * const css = processFonts(config, customCacheDir);
17
+ * // Modify CSS as needed before injecting
18
+ * ```
19
+ */
20
+ export function processFonts(config, cacheDir) {
21
+ if (!config?.local || config.local.length === 0) {
22
+ return "";
23
+ }
24
+ const fontCacheDir = join(cacheDir, "fonts");
25
+ mkdirSync(fontCacheDir, { recursive: true });
26
+ let css = "";
27
+ const fontWeightMap = {
28
+ thin: "100",
29
+ hairline: "100",
30
+ extralight: "200",
31
+ light: "300",
32
+ normal: "400",
33
+ regular: "400",
34
+ medium: "500",
35
+ semibold: "600",
36
+ bold: "700",
37
+ extrabold: "800",
38
+ black: "900",
39
+ };
40
+ for (const fontPath of config.local) {
41
+ const fullPath = resolve(fontPath);
42
+ if (!existsSync(fullPath)) {
43
+ log.warn(`Font file not found: ${fontPath}`);
44
+ continue;
45
+ }
46
+ const filename = basename(fontPath);
47
+ const ext = extname(fontPath).toLowerCase();
48
+ const destPath = join(fontCacheDir, filename);
49
+ // Copy font file to cache
50
+ try {
51
+ copyFileSync(fullPath, destPath);
52
+ log.info(`Cached font: ${filename}`);
53
+ } catch (err) {
54
+ log.warn(`Failed to copy font ${filename}: ${err.message}`);
55
+ continue;
56
+ }
57
+ // Parse font properties from filename
58
+ // Convention: FontName-Weight-Style.ext or FontName-Weight.ext or FontName.ext
59
+ // Examples: Roboto-Regular.woff2, Roboto-Bold-Italic.woff2, Inter-700.woff2
60
+ const nameWithoutExt = filename.slice(0, -ext.length);
61
+ const parts = nameWithoutExt.split("-");
62
+ let fontName = parts[0];
63
+ let fontWeight = "400";
64
+ let fontStyle = "normal";
65
+ if (parts.length > 1) {
66
+ const weightPart = parts[1].toLowerCase();
67
+ const stylePart = parts[2]?.toLowerCase() ?? "";
68
+ // Map weight names to numeric values
69
+ if (fontWeightMap[weightPart]) {
70
+ fontWeight = fontWeightMap[weightPart];
71
+ } else if (/^\d+$/.test(weightPart)) {
72
+ fontWeight = weightPart;
73
+ }
74
+ // Detect italic/oblique
75
+ if (stylePart.includes("italic") || weightPart.includes("italic")) {
76
+ fontStyle = "italic";
77
+ } else if (
78
+ stylePart.includes("oblique") ||
79
+ weightPart.includes("oblique")
80
+ ) {
81
+ fontStyle = "oblique";
82
+ }
83
+ }
84
+ // Map format to correct font type
85
+ const formatMap = {
86
+ ".ttf": "truetype",
87
+ ".otf": "opentype",
88
+ ".woff": "woff",
89
+ ".woff2": "woff2",
90
+ };
91
+ const format = formatMap[ext] || "truetype";
92
+ const display = config.display ?? "swap";
93
+ // Generate @font-face rule
94
+ css += `@font-face {
95
+ font-family: "${fontName}";
96
+ src: url("/fonts/${filename}") format("${format}");
97
+ font-weight: ${fontWeight};
98
+ font-style: ${fontStyle};
99
+ font-display: ${display};
100
+ }
101
+ `;
102
+ }
103
+ return css;
104
+ }
105
+ /**
106
+ * Generates HTML link tags for Google Fonts.
107
+ * Parses font specifications like "Roboto:400,700" and constructs appropriate URLs.
108
+ * Includes preload links if enabled in config.
109
+ *
110
+ * @param config Fonts configuration from jen.config
111
+ * @returns HTML string with <link> tags for Google Fonts and optional preload links
112
+ *
113
+ * @hackable Override in config or extend in server.js:
114
+ * ```typescript
115
+ * // Custom variant handling or URL construction
116
+ * const links = generateGoogleFontLinks(config);
117
+ * // Modify before injection
118
+ * ```
119
+ */
120
+ export function generateGoogleFontLinks(config) {
121
+ if (!config?.google || config.google.length === 0) {
122
+ return "";
123
+ }
124
+ const display = config.display ?? "swap";
125
+ const params = new URLSearchParams();
126
+ // Normalize font specs and extract families
127
+ const families = config.google.map((spec) => {
128
+ const [family, weights] = spec.split(":");
129
+ if (weights) {
130
+ // Convert weight spec like "400,700" or "400,400i,600,700" to Google Fonts format
131
+ // "400" -> "wght@400", "400,700" -> "wght@400;700", "400i" -> "ital,wght@0,400; 1,400"
132
+ const variants = weights.split(",");
133
+ let italic = false;
134
+ let normalWeights = [];
135
+ let italicWeights = [];
136
+ for (const v of variants) {
137
+ if (v.includes("i")) {
138
+ italic = true;
139
+ italicWeights.push(v.replace("i", ""));
140
+ } else {
141
+ normalWeights.push(v);
142
+ }
143
+ }
144
+ let spec = `${family}`;
145
+ if (italic) {
146
+ spec += `:ital@1`;
147
+ if (italicWeights.length > 0)
148
+ spec += `,wght@${italicWeights.join(";")}`;
149
+ }
150
+ if (normalWeights.length > 0) {
151
+ spec += `:wght@${normalWeights.join(";")}`;
152
+ }
153
+ return spec;
154
+ }
155
+ return family;
156
+ });
157
+ params.set("family", families.join("&family="));
158
+ params.set("display", display);
159
+ const googleFontsUrl = `https://fonts.googleapis.com/css2?${params.toString()}`;
160
+ let html = `<link rel="stylesheet" href="${googleFontsUrl}">`;
161
+ // Add preload links if enabled (for critical fonts)
162
+ if (config.preload) {
163
+ const preloadFonts = config.google.slice(0, 2); // Preload first 2 fonts only for performance
164
+ for (const spec of preloadFonts) {
165
+ const [family] = spec.split(":");
166
+ // Preload the most common weight (400)
167
+ html += `\n<link rel="preconnect" href="https://fonts.googleapis.com">`;
168
+ html += `\n<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>`;
169
+ }
170
+ }
171
+ return html;
172
+ }
173
+ /**
174
+ * Extracts font links and CSS for injection into the HTML <head>.
175
+ * Combines local fonts (@font-face CSS) and Google Fonts (link tags).
176
+ * Fully hackable - can be extended in server.js or build scripts.
177
+ *
178
+ * @param config Fonts configuration from jen.config
179
+ * @param cacheDir Cache directory path for local fonts
180
+ * @returns Object with googleFontLinks and localFontsCSS for head injection
181
+ *
182
+ * @example
183
+ * ```typescript
184
+ * const { googleFontLinks, localFontsCSS } = extractFonts(config, ".jen/cache");
185
+ * // Add custom processing
186
+ * const modifiedCSS = localFontsCSS.replace(/display: swap/g, "display: optional");
187
+ * ```
188
+ */
189
+ export function extractFonts(config, cacheDir) {
190
+ const localFontsCSS = processFonts(config, cacheDir);
191
+ const googleFontLinks = generateGoogleFontLinks(config);
192
+ return {
193
+ googleFontLinks,
194
+ localFontsCSS,
195
+ };
196
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,20 +1,3 @@
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
  /**
19
2
  * GraphQL integration utilities for Jen.js applications.
20
3
  *
@@ -30,7 +13,7 @@
30
13
  *
31
14
  * @example
32
15
  * // In an API route:
33
- * import { runQuery } from '@src/graphql';
16
+ * import { runQuery } from '../graphql';
34
17
  *
35
18
  * export default {
36
19
  * handler: async (ctx) => {
@@ -1,19 +1,26 @@
1
- /*
2
- * This file is part of Jen.js.
3
- * Copyright (C) 2026 oopsio
1
+ /**
2
+ * GraphQL resolvers placeholder module.
3
+ *
4
+ * Jen.js provides basic example resolvers to demonstrate the pattern.
5
+ * Replace these with your actual resolvers that implement your application logic.
4
6
  *
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.
7
+ * Resolvers are functions that return the data for each field in your GraphQL schema.
8
+ * They have access to the parent value, arguments, context, and field info.
9
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.
10
+ * @example
11
+ * // Custom resolver with database integration:
12
+ * import { db } from '../jdb';
14
13
  *
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/>.
14
+ * export const resolvers = {
15
+ * users: async () => {
16
+ * const users = db.collection('users');
17
+ * return await users.find({});
18
+ * },
19
+ * createUser: async ({ name, email }: { name: string; email: string }) => {
20
+ * const users = db.collection('users');
21
+ * return await users.insert({ name, email });
22
+ * }
23
+ * };
17
24
  */
18
25
  /** In-memory user store for example resolvers. Replace with database queries. */
19
26
  const users = [];
@@ -1,20 +1,3 @@
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
  /**
19
2
  * GraphQL schema placeholder module.
20
3
  *
@@ -1,22 +1,10 @@
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
- import en from "./en.json";
19
- import es from "./es.json";
1
+ import { readFileSync } from "fs";
2
+ import { fileURLToPath } from "url";
3
+ import { dirname, join } from "path";
4
+ const __filename = fileURLToPath(import.meta.url);
5
+ const __dirname = dirname(__filename);
6
+ const en = JSON.parse(readFileSync(join(__dirname, "./en.json"), "utf-8"));
7
+ const es = JSON.parse(readFileSync(join(__dirname, "./es.json"), "utf-8"));
20
8
  const translations = { en, es };
21
9
  export class I18n {
22
10
  locale;
@@ -1,20 +1,3 @@
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 { buildSync } from "esbuild";
19
2
  import { pathToFileURL } from "node:url";
20
3
  import { join, resolve, extname } from "node:path";
@@ -170,7 +153,7 @@ export function clearImportCache() {
170
153
  * Can be used as an alternative to calling jenImport() directly.
171
154
  *
172
155
  * @example
173
- * import { jen } from '@src/import/jen-import';
156
+ * import { jen } from '../import/jen-import';
174
157
  * const Component = await jen.import('./Component.vue');
175
158
  */
176
159
  export const jen = {