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.
- package/README.md +3 -1
- package/dist/colors.js +0 -17
- package/dist/create.js +5 -17
- package/dist/generator.js +14 -31
- package/package.json +2 -2
- package/templates/ssr-isr/README.md +77 -0
- package/templates/ssr-isr/build.js +118 -0
- package/templates/ssr-isr/jen.config.ts +109 -0
- package/templates/ssr-isr/jenjs.d.ts +22 -0
- package/templates/ssr-isr/lib/api/(hello).d.ts +7 -0
- package/templates/ssr-isr/lib/api/(hello).js +9 -0
- package/templates/ssr-isr/lib/auth/cookie-utils.d.ts +33 -0
- package/templates/ssr-isr/lib/auth/cookie-utils.js +79 -0
- package/templates/ssr-isr/lib/auth/index.js +2 -0
- package/templates/ssr-isr/lib/auth/jwt.d.ts +30 -0
- package/templates/ssr-isr/lib/auth/jwt.js +57 -0
- package/templates/ssr-isr/lib/auth/session.d.ts +44 -0
- package/templates/ssr-isr/lib/auth/session.js +92 -0
- package/templates/ssr-isr/lib/build/asset-hashing.d.ts +10 -0
- package/templates/ssr-isr/lib/build/asset-hashing.js +25 -0
- package/templates/ssr-isr/lib/build/asset-manifest.d.ts +11 -0
- package/templates/ssr-isr/lib/build/asset-manifest.js +21 -0
- package/templates/ssr-isr/lib/build/build.d.ts +24 -0
- package/templates/ssr-isr/lib/build/build.js +141 -0
- package/templates/{static → ssr-isr}/lib/build/island-hydration.d.ts +8 -5
- package/templates/ssr-isr/lib/build/island-hydration.js +44 -0
- package/templates/ssr-isr/lib/build/minifier.d.ts +20 -0
- package/templates/ssr-isr/lib/build/minifier.js +46 -0
- package/templates/ssr-isr/lib/build/page-renderer.d.ts +17 -0
- package/templates/ssr-isr/lib/build/page-renderer.js +28 -0
- package/templates/ssr-isr/lib/build/production-build.d.ts +10 -0
- package/templates/ssr-isr/lib/build/production-build.js +13 -0
- package/templates/ssr-isr/lib/build/ssg-pipeline.d.ts +15 -0
- package/templates/ssr-isr/lib/build/ssg-pipeline.js +113 -0
- package/templates/{static → ssr-isr}/lib/build-tools/build-site.d.ts +3 -3
- package/templates/ssr-isr/lib/build-tools/build-site.js +36 -0
- package/templates/ssr-isr/lib/cache/index.d.ts +10 -0
- package/templates/ssr-isr/lib/cache/index.js +10 -0
- package/templates/ssr-isr/lib/cache/memory.d.ts +33 -0
- package/templates/ssr-isr/lib/cache/memory.js +40 -0
- package/templates/ssr-isr/lib/cache/redis.d.ts +45 -0
- package/templates/ssr-isr/lib/cache/redis.js +61 -0
- package/templates/ssr-isr/lib/cli/banner.d.ts +5 -0
- package/templates/ssr-isr/lib/cli/banner.js +28 -0
- package/templates/ssr-isr/lib/cli/templates/ssg/jen.config.js +32 -0
- package/templates/ssr-isr/lib/cli/templates/ssg/site/index.js +9 -0
- package/templates/ssr-isr/lib/cli/templates/ssr/jen.config.js +32 -0
- package/templates/ssr-isr/lib/cli/templates/ssr/site/index.js +9 -0
- package/templates/ssr-isr/lib/compilers/esbuild-plugins.js +111 -0
- package/templates/ssr-isr/lib/compilers/svelte.d.ts +18 -0
- package/templates/ssr-isr/lib/compilers/svelte.js +44 -0
- package/templates/ssr-isr/lib/compilers/vue.d.ts +15 -0
- package/templates/ssr-isr/lib/compilers/vue.js +90 -0
- package/templates/ssr-isr/lib/core/config.d.ts +220 -0
- package/templates/ssr-isr/lib/core/http.d.ts +56 -0
- package/templates/ssr-isr/lib/core/http.js +71 -0
- package/templates/ssr-isr/lib/core/middleware-hooks.d.ts +219 -0
- package/templates/ssr-isr/lib/core/middleware-hooks.js +97 -0
- package/templates/ssr-isr/lib/core/paths.d.ts +44 -0
- package/templates/ssr-isr/lib/core/paths.js +39 -0
- package/templates/ssr-isr/lib/core/routes/match.d.ts +54 -0
- package/templates/ssr-isr/lib/core/routes/match.js +47 -0
- package/templates/ssr-isr/lib/core/routes/scan.d.ts +53 -0
- package/templates/ssr-isr/lib/core/routes/scan.js +190 -0
- package/templates/ssr-isr/lib/core/types.d.ts +153 -0
- package/templates/ssr-isr/lib/core/types.js +1 -0
- package/templates/ssr-isr/lib/css/compiler.d.ts +23 -0
- package/templates/ssr-isr/lib/css/compiler.js +74 -0
- package/templates/ssr-isr/lib/db/connector.d.ts +30 -0
- package/templates/ssr-isr/lib/db/connector.js +42 -0
- package/templates/ssr-isr/lib/db/drivers/jdb.d.ts +17 -0
- package/templates/ssr-isr/lib/db/drivers/jdb.js +44 -0
- package/templates/ssr-isr/lib/db/drivers/sql.d.ts +22 -0
- package/templates/ssr-isr/lib/db/drivers/sql.js +182 -0
- package/templates/ssr-isr/lib/db/index.d.ts +27 -0
- package/templates/ssr-isr/lib/db/index.js +48 -0
- package/templates/ssr-isr/lib/db/types.d.ts +33 -0
- package/templates/ssr-isr/lib/db/types.js +1 -0
- package/templates/ssr-isr/lib/graphql/index.d.ts +48 -0
- package/templates/ssr-isr/lib/graphql/index.js +52 -0
- package/templates/ssr-isr/lib/graphql/resolvers.d.ts +57 -0
- package/templates/ssr-isr/lib/graphql/resolvers.js +25 -0
- package/templates/ssr-isr/lib/graphql/schema.d.ts +35 -0
- package/templates/ssr-isr/lib/graphql/schema.js +35 -0
- package/templates/ssr-isr/lib/i18n/en.json +4 -0
- package/templates/ssr-isr/lib/i18n/es.json +4 -0
- package/templates/ssr-isr/lib/i18n/index.d.ts +8 -0
- package/templates/ssr-isr/lib/i18n/index.js +15 -0
- package/templates/ssr-isr/lib/import/jen-import.d.ts +56 -0
- package/templates/ssr-isr/lib/import/jen-import.js +161 -0
- package/templates/{static → ssr-isr}/lib/index.d.ts +42 -11
- package/templates/ssr-isr/lib/index.js +116 -0
- package/templates/ssr-isr/lib/jdb/engine.d.ts +38 -0
- package/templates/ssr-isr/lib/jdb/engine.js +275 -0
- package/templates/ssr-isr/lib/jdb/index.d.ts +34 -0
- package/templates/ssr-isr/lib/jdb/index.js +34 -0
- package/templates/ssr-isr/lib/jdb/types.d.ts +228 -0
- package/templates/ssr-isr/lib/jdb/types.js +1 -0
- package/templates/ssr-isr/lib/jdb/utils.d.ts +66 -0
- package/templates/ssr-isr/lib/jdb/utils.js +176 -0
- package/templates/ssr-isr/lib/middleware/builtins/body-parser.d.ts +16 -0
- package/templates/ssr-isr/lib/middleware/builtins/body-parser.js +56 -0
- package/templates/ssr-isr/lib/middleware/builtins/cors.d.ts +15 -0
- package/templates/ssr-isr/lib/middleware/builtins/cors.js +54 -0
- package/templates/ssr-isr/lib/middleware/builtins/logger.d.ts +19 -0
- package/templates/ssr-isr/lib/middleware/builtins/logger.js +34 -0
- package/templates/ssr-isr/lib/middleware/builtins/rate-limit.d.ts +22 -0
- package/templates/ssr-isr/lib/middleware/builtins/rate-limit.js +79 -0
- package/templates/ssr-isr/lib/middleware/builtins/request-id.d.ts +19 -0
- package/templates/ssr-isr/lib/middleware/builtins/request-id.js +29 -0
- package/templates/ssr-isr/lib/middleware/builtins/security-headers.d.ts +19 -0
- package/templates/ssr-isr/lib/middleware/builtins/security-headers.js +53 -0
- package/templates/ssr-isr/lib/middleware/context.d.ts +105 -0
- package/templates/ssr-isr/lib/middleware/context.js +124 -0
- package/templates/ssr-isr/lib/middleware/decorators.d.ts +19 -0
- package/templates/ssr-isr/lib/middleware/decorators.js +93 -0
- package/templates/ssr-isr/lib/middleware/errors/handler.js +46 -0
- package/templates/ssr-isr/lib/middleware/errors/http-error.d.ts +5 -0
- package/templates/ssr-isr/lib/middleware/errors/http-error.js +10 -0
- package/templates/ssr-isr/lib/middleware/kernel.d.ts +69 -0
- package/templates/ssr-isr/lib/middleware/kernel.js +85 -0
- package/templates/ssr-isr/lib/middleware/pipeline.d.ts +53 -0
- package/templates/ssr-isr/lib/middleware/pipeline.js +148 -0
- package/templates/ssr-isr/lib/middleware/registry.d.ts +69 -0
- package/templates/ssr-isr/lib/middleware/registry.js +85 -0
- package/templates/ssr-isr/lib/middleware/response.d.ts +75 -0
- package/templates/ssr-isr/lib/middleware/response.js +107 -0
- package/templates/ssr-isr/lib/middleware/types.d.ts +1 -0
- package/templates/ssr-isr/lib/middleware/types.js +1 -0
- package/templates/ssr-isr/lib/middleware/utils/matcher.js +13 -0
- package/templates/ssr-isr/lib/native/bundle.d.ts +24 -0
- package/templates/ssr-isr/lib/native/bundle.js +22 -0
- package/templates/ssr-isr/lib/native/dev-server.d.ts +13 -0
- package/templates/ssr-isr/lib/native/dev-server.js +23 -0
- package/templates/{static → ssr-isr}/lib/native/index.d.ts +20 -20
- package/templates/ssr-isr/lib/native/index.js +33 -0
- package/templates/ssr-isr/lib/native/optimizer.d.ts +21 -0
- package/templates/ssr-isr/lib/native/optimizer.js +20 -0
- package/templates/ssr-isr/lib/native/style-compiler.d.ts +19 -0
- package/templates/ssr-isr/lib/native/style-compiler.js +19 -0
- package/templates/ssr-isr/lib/plugin/loader.d.ts +10 -0
- package/templates/ssr-isr/lib/plugin/loader.js +36 -0
- package/templates/ssr-isr/lib/runtime/client-runtime.d.ts +16 -0
- package/templates/ssr-isr/lib/runtime/client-runtime.js +25 -0
- package/templates/ssr-isr/lib/runtime/hmr.d.ts +23 -0
- package/templates/ssr-isr/lib/runtime/hmr.js +59 -0
- package/templates/ssr-isr/lib/runtime/hydrate.d.ts +18 -0
- package/templates/ssr-isr/lib/runtime/hydrate.js +55 -0
- package/templates/ssr-isr/lib/runtime/island-hydration-client.d.ts +8 -0
- package/templates/ssr-isr/lib/runtime/island-hydration-client.js +146 -0
- package/templates/ssr-isr/lib/runtime/islands.d.ts +101 -0
- package/templates/ssr-isr/lib/runtime/islands.js +110 -0
- package/templates/ssr-isr/lib/runtime/render.d.ts +40 -0
- package/templates/ssr-isr/lib/runtime/render.js +244 -0
- package/templates/ssr-isr/lib/server/api-routes.d.ts +112 -0
- package/templates/ssr-isr/lib/server/api-routes.js +237 -0
- package/templates/{static → ssr-isr}/lib/server/api.d.ts +3 -3
- package/templates/ssr-isr/lib/server/api.js +108 -0
- package/templates/ssr-isr/lib/server/app.d.ts +44 -0
- package/templates/ssr-isr/lib/server/app.js +438 -0
- package/templates/ssr-isr/lib/server/runtimeServe.d.ts +60 -0
- package/templates/ssr-isr/lib/server/runtimeServe.js +169 -0
- package/templates/ssr-isr/lib/server/ssr.d.ts +161 -0
- package/templates/ssr-isr/lib/server/ssr.js +202 -0
- package/templates/ssr-isr/lib/shared/log.d.ts +49 -0
- package/templates/ssr-isr/lib/shared/log.js +64 -0
- package/templates/ssr-isr/package.json +23 -0
- package/templates/ssr-isr/server.js +128 -0
- package/templates/ssr-isr/site/pages/(index).tsx +11 -0
- package/templates/ssr-isr/site/styles/global.scss +37 -0
- package/templates/ssr-isr/tsconfig.json +39 -0
- package/templates/static/README.md +63 -67
- package/templates/static/build.js +31 -21
- package/templates/static/jen.config.ts +0 -20
- package/templates/static/jenjs.d.ts +0 -18
- package/templates/static/lib/api/(hello).js +7 -24
- package/templates/static/lib/api/examples/files/[...slug].js +22 -0
- package/templates/static/lib/api/examples/hello.js +11 -0
- package/templates/static/lib/api/examples/posts/[id].js +37 -0
- package/templates/static/lib/api/examples/posts.js +37 -0
- package/templates/static/lib/api/examples/search.js +23 -0
- package/templates/static/lib/api/index.js +41 -0
- package/templates/static/lib/api/loader.js +234 -0
- package/templates/static/lib/api/router.js +259 -0
- package/templates/static/lib/assets/types.js +1 -0
- package/templates/static/lib/auth/cookie-utils.js +69 -85
- package/templates/static/lib/auth/index.js +0 -17
- package/templates/static/lib/auth/jwt.js +48 -21
- package/templates/static/lib/auth/session.js +79 -98
- package/templates/static/lib/build/asset-hashing.js +47 -39
- package/templates/static/lib/build/asset-manifest.js +18 -35
- package/templates/static/lib/build/build.js +277 -95
- package/templates/static/lib/build/bundle-analyzer-ui.js +417 -0
- package/templates/static/lib/build/bundle-analyzer.js +945 -0
- package/templates/static/lib/build/code-splitter.js +194 -0
- package/templates/static/lib/build/feature-analyzer.js +190 -0
- package/templates/static/lib/build/feature-gate.js +257 -0
- package/templates/static/lib/build/island-hydration.js +17 -35
- package/templates/static/lib/build/lazy-loader.js +322 -0
- package/templates/static/lib/build/minifier.js +42 -61
- package/templates/static/lib/build/page-renderer.js +25 -42
- package/templates/static/lib/build/production-build.js +11 -28
- package/templates/static/lib/build/rust-hashing.js +71 -0
- package/templates/static/lib/build/script-optimizer.js +285 -0
- package/templates/static/lib/build/ssg-pipeline.js +107 -113
- package/templates/static/lib/build/vercel-output.js +298 -0
- package/templates/static/lib/build-tools/build-site.js +27 -47
- package/templates/static/lib/cache/index.js +6 -15
- package/templates/static/lib/cache/memory.js +37 -28
- package/templates/static/lib/cache/redis.js +56 -28
- package/templates/static/lib/cli/banner.js +18 -31
- package/templates/static/lib/cli/templates/ssg/jen.config.js +29 -46
- package/templates/static/lib/cli/templates/ssg/site/index.js +6 -1
- package/templates/static/lib/cli/templates/ssr/jen.config.js +29 -46
- package/templates/static/lib/cli/templates/ssr/site/index.js +6 -1
- package/templates/static/lib/client/Image.js +42 -0
- package/templates/static/lib/client/Link.js +190 -0
- package/templates/static/lib/client/PWA.js +46 -0
- package/templates/static/lib/client/Seo.js +97 -0
- package/templates/static/lib/client/index.js +9 -0
- package/templates/static/lib/client/useNavigation.js +25 -0
- package/templates/static/lib/client/useRouter.js +64 -0
- package/templates/static/lib/client-routing/Link.js +17 -0
- package/templates/static/lib/client-routing/index.js +19 -0
- package/templates/static/lib/client-routing/router.js +151 -0
- package/templates/static/lib/client-routing/signal.js +147 -0
- package/templates/static/lib/compilers/esbuild-plugins.js +96 -115
- package/templates/static/lib/compilers/svelte.js +31 -48
- package/templates/static/lib/compilers/vue.js +76 -85
- package/templates/static/lib/core/config.js +0 -17
- package/templates/static/lib/core/feature-guard.js +136 -0
- package/templates/static/lib/core/features.js +99 -0
- package/templates/static/lib/core/http.js +65 -36
- package/templates/static/lib/core/layouts/index.js +10 -0
- package/templates/static/lib/core/layouts/render.js +158 -0
- package/templates/static/lib/core/layouts/scan.js +112 -0
- package/templates/static/lib/core/layouts/types.js +1 -0
- package/templates/static/lib/core/lifecycle.js +129 -0
- package/templates/static/lib/core/loader-schema.js +81 -0
- package/templates/static/lib/core/middleware-hooks.js +86 -58
- package/templates/static/lib/core/paths.js +31 -16
- package/templates/static/lib/core/routes/advanced.js +114 -0
- package/templates/static/lib/core/routes/handlers.js +181 -0
- package/templates/static/lib/core/routes/match.js +129 -24
- package/templates/static/lib/core/routes/orchestrator.js +171 -0
- package/templates/static/lib/core/routes/rendering-config.js +131 -0
- package/templates/static/lib/core/routes/scan.js +174 -132
- package/templates/static/lib/core/types.js +0 -17
- package/templates/static/lib/css/compiler.js +63 -76
- package/templates/static/lib/data-fetching/cache.js +223 -0
- package/templates/static/lib/data-fetching/client.js +202 -0
- package/templates/static/lib/data-fetching/feature-guard.js +29 -0
- package/templates/static/lib/data-fetching/graphql.js +265 -0
- package/templates/static/lib/data-fetching/index.js +57 -0
- package/templates/static/lib/data-fetching/rest.js +256 -0
- package/templates/static/lib/data-fetching/server.js +182 -0
- package/templates/static/lib/data-fetching/types.js +5 -0
- package/templates/static/lib/db/connector.js +37 -28
- package/templates/static/lib/db/drivers/jdb.js +41 -56
- package/templates/static/lib/db/drivers/sql.js +152 -152
- package/templates/static/lib/db/index.js +42 -59
- package/templates/static/lib/db/types.js +0 -17
- package/templates/static/lib/devtools/component-tree.js +106 -0
- package/templates/static/lib/devtools/devtools.js +638 -0
- package/templates/static/lib/devtools/event-bus.js +29 -0
- package/templates/static/lib/devtools/event-logger.js +67 -0
- package/templates/static/lib/devtools/index.js +9 -0
- package/templates/static/lib/devtools/integration.js +149 -0
- package/templates/static/lib/devtools/performance.js +84 -0
- package/templates/static/lib/devtools/persistence.js +57 -0
- package/templates/static/lib/devtools/plugins.js +97 -0
- package/templates/static/lib/devtools/search.js +89 -0
- package/templates/static/lib/devtools/ui.js +769 -0
- package/templates/static/lib/features/api/handler.js +10 -0
- package/templates/static/lib/features/api/index.js +5 -0
- package/templates/static/lib/features/api/types.js +4 -0
- package/templates/static/lib/features/middleware/compiled.js +7 -0
- package/templates/static/lib/features/middleware/index.js +5 -0
- package/templates/static/lib/features/middleware/types.js +4 -0
- package/templates/static/lib/fonts/index.js +46 -0
- package/templates/static/lib/fonts/inject.js +125 -0
- package/templates/static/lib/fonts/loader.js +196 -0
- package/templates/static/lib/fonts/types.js +1 -0
- package/templates/static/lib/graphql/index.js +46 -16
- package/templates/static/lib/graphql/resolvers.js +42 -19
- package/templates/static/lib/graphql/schema.js +30 -15
- package/templates/static/lib/i18n/en.json +2 -2
- package/templates/static/lib/i18n/es.json +2 -2
- package/templates/static/lib/i18n/index.js +17 -29
- package/templates/static/lib/import/jen-import.js +130 -97
- package/templates/static/lib/index.js +82 -115
- package/templates/static/lib/jdb/engine.js +259 -160
- package/templates/static/lib/jdb/index.js +28 -13
- package/templates/static/lib/jdb/types.js +0 -17
- package/templates/static/lib/jdb/utils.js +159 -124
- package/templates/static/lib/middleware/builtins/cors.js +55 -64
- package/templates/static/lib/middleware/context.js +120 -46
- package/templates/static/lib/middleware/kernel.js +186 -31
- package/templates/static/lib/middleware/pipeline.js +140 -59
- package/templates/static/lib/middleware/registry.js +80 -36
- package/templates/static/lib/middleware/response.js +101 -54
- package/templates/static/lib/plugin/examples/analytics-plugin.js +183 -0
- package/templates/static/lib/plugin/examples/cdn-upload-plugin.js +94 -0
- package/templates/static/lib/plugin/loader.js +25 -48
- package/templates/static/lib/plugin/plugin-manager.js +177 -0
- package/templates/static/lib/plugin/types.js +28 -0
- package/templates/static/lib/runtime/client-runtime.js +19 -22
- package/templates/static/lib/runtime/hmr.js +23 -18
- package/templates/static/lib/runtime/hydrate.js +47 -37
- package/templates/static/lib/runtime/island-hydration-client.js +122 -108
- package/templates/static/lib/runtime/islands.js +92 -71
- package/templates/static/lib/runtime/render.js +385 -149
- package/templates/static/lib/security/security-config.js +60 -0
- package/templates/static/lib/security/security-middleware.js +229 -0
- package/templates/static/lib/server/api-routes.js +339 -171
- package/templates/static/lib/server/api.js +93 -109
- package/templates/static/lib/server/app.js +660 -270
- package/templates/static/lib/server/isr.js +365 -0
- package/templates/static/lib/server/runtimeServe.js +157 -89
- package/templates/static/lib/server/ssr.js +295 -0
- package/templates/static/lib/server-actions/handler.js +180 -0
- package/templates/static/lib/server-actions/index.js +19 -0
- package/templates/static/lib/server-actions/middleware.js +146 -0
- package/templates/static/lib/server-actions/scan.js +152 -0
- package/templates/static/lib/server-actions/types.js +1 -0
- package/templates/static/lib/server-actions/validators.js +156 -0
- package/templates/static/lib/shared/log.js +74 -25
- package/templates/static/lib/telemetry/api/rate-limiter.js +32 -0
- package/templates/static/lib/telemetry/api/validator.js +67 -0
- package/templates/static/lib/telemetry/client.js +121 -0
- package/templates/static/lib/telemetry/tests/rate-limiter.test.js +46 -0
- package/templates/static/lib/telemetry/tests/validator.test.js +62 -0
- package/templates/static/lib/vendor/glob/glob.js +4766 -0
- package/templates/static/lib/vendor/preact/preact.module.js +797 -0
- package/templates/static/lib/vendor/sass/sass.node.mjs +212 -0
- package/templates/static/package.json +4 -0
- package/templates/static/server.js +23 -25
- package/templates/static/site/(home).tsx +12 -12
- package/templates/static/site/styles/global.scss +89 -78
- package/templates/static/tsconfig.json +43 -39
- package/templates/static/.esbuild/jen.config.js +0 -1
- package/templates/static/lib/api/(hello).d.ts +0 -7
- package/templates/static/lib/auth/cookie-utils.d.ts +0 -24
- package/templates/static/lib/auth/jwt.d.ts +0 -2
- package/templates/static/lib/auth/session.d.ts +0 -44
- package/templates/static/lib/build/asset-hashing.d.ts +0 -10
- package/templates/static/lib/build/asset-manifest.d.ts +0 -11
- package/templates/static/lib/build/build.d.ts +0 -4
- package/templates/static/lib/build/minifier.d.ts +0 -20
- package/templates/static/lib/build/page-renderer.d.ts +0 -17
- package/templates/static/lib/build/production-build.d.ts +0 -10
- package/templates/static/lib/build/ssg-pipeline.d.ts +0 -15
- package/templates/static/lib/cache/index.d.ts +0 -2
- package/templates/static/lib/cache/memory.d.ts +0 -6
- package/templates/static/lib/cache/redis.d.ts +0 -6
- package/templates/static/lib/cli/banner.d.ts +0 -1
- package/templates/static/lib/compilers/svelte.d.ts +0 -18
- package/templates/static/lib/compilers/vue.d.ts +0 -15
- package/templates/static/lib/core/config.d.ts +0 -53
- package/templates/static/lib/core/http.d.ts +0 -3
- package/templates/static/lib/core/middleware-hooks.d.ts +0 -46
- package/templates/static/lib/core/paths.d.ts +0 -6
- package/templates/static/lib/core/routes/match.d.ts +0 -6
- package/templates/static/lib/core/routes/scan.d.ts +0 -9
- package/templates/static/lib/core/types.d.ts +0 -18
- package/templates/static/lib/css/compiler.d.ts +0 -20
- package/templates/static/lib/db/connector.d.ts +0 -4
- package/templates/static/lib/db/drivers/jdb.d.ts +0 -13
- package/templates/static/lib/db/drivers/sql.d.ts +0 -18
- package/templates/static/lib/db/index.d.ts +0 -19
- package/templates/static/lib/db/types.d.ts +0 -29
- package/templates/static/lib/graphql/index.d.ts +0 -1
- package/templates/static/lib/graphql/resolvers.d.ts +0 -17
- package/templates/static/lib/graphql/schema.d.ts +0 -1
- package/templates/static/lib/i18n/index.d.ts +0 -8
- package/templates/static/lib/import/jen-import.d.ts +0 -27
- package/templates/static/lib/jdb/engine.d.ts +0 -9
- package/templates/static/lib/jdb/index.d.ts +0 -2
- package/templates/static/lib/jdb/types.d.ts +0 -46
- package/templates/static/lib/jdb/utils.d.ts +0 -6
- package/templates/static/lib/middleware/builtins/body-parser.d.ts +0 -1
- package/templates/static/lib/middleware/builtins/body-parser.js +0 -55
- package/templates/static/lib/middleware/builtins/cors.d.ts +0 -13
- package/templates/static/lib/middleware/builtins/logger.d.ts +0 -1
- package/templates/static/lib/middleware/builtins/logger.js +0 -33
- package/templates/static/lib/middleware/builtins/rate-limit.d.ts +0 -5
- package/templates/static/lib/middleware/builtins/rate-limit.js +0 -76
- package/templates/static/lib/middleware/builtins/request-id.d.ts +0 -1
- package/templates/static/lib/middleware/builtins/request-id.js +0 -25
- package/templates/static/lib/middleware/builtins/security-headers.d.ts +0 -1
- package/templates/static/lib/middleware/builtins/security-headers.js +0 -39
- package/templates/static/lib/middleware/context.d.ts +0 -18
- package/templates/static/lib/middleware/decorators.d.ts +0 -2
- package/templates/static/lib/middleware/decorators.js +0 -61
- package/templates/static/lib/middleware/errors/handler.js +0 -65
- package/templates/static/lib/middleware/errors/http-error.d.ts +0 -5
- package/templates/static/lib/middleware/errors/http-error.js +0 -27
- package/templates/static/lib/middleware/kernel.d.ts +0 -6
- package/templates/static/lib/middleware/pipeline.d.ts +0 -4
- package/templates/static/lib/middleware/registry.d.ts +0 -10
- package/templates/static/lib/middleware/response.d.ts +0 -13
- package/templates/static/lib/middleware/types.js +0 -18
- package/templates/static/lib/middleware/utils/matcher.js +0 -31
- package/templates/static/lib/native/bundle.d.ts +0 -19
- package/templates/static/lib/native/bundle.js +0 -39
- package/templates/static/lib/native/dev-server.d.ts +0 -6
- package/templates/static/lib/native/dev-server.js +0 -38
- package/templates/static/lib/native/index.js +0 -48
- package/templates/static/lib/native/optimizer.d.ts +0 -17
- package/templates/static/lib/native/optimizer.js +0 -37
- package/templates/static/lib/native/style-compiler.d.ts +0 -10
- package/templates/static/lib/native/style-compiler.js +0 -36
- package/templates/static/lib/plugin/loader.d.ts +0 -8
- package/templates/static/lib/runtime/client-runtime.d.ts +0 -1
- package/templates/static/lib/runtime/hmr.d.ts +0 -1
- package/templates/static/lib/runtime/hydrate.d.ts +0 -1
- package/templates/static/lib/runtime/island-hydration-client.d.ts +0 -5
- package/templates/static/lib/runtime/islands.d.ts +0 -46
- package/templates/static/lib/runtime/render.d.ts +0 -13
- package/templates/static/lib/server/api-routes.d.ts +0 -44
- package/templates/static/lib/server/app.d.ts +0 -10
- package/templates/static/lib/server/runtimeServe.d.ts +0 -4
- package/templates/static/lib/shared/log.d.ts +0 -5
- package/templates/static/node_modules/.bin/esbuild +0 -16
- package/templates/static/node_modules/.bin/esbuild.cmd +0 -17
- package/templates/static/node_modules/.bin/esbuild.ps1 +0 -28
- package/templates/static/node_modules/.bin/tsc +0 -16
- package/templates/static/node_modules/.bin/tsc.cmd +0 -17
- package/templates/static/node_modules/.bin/tsc.ps1 +0 -28
- package/templates/static/node_modules/.bin/tsserver +0 -16
- package/templates/static/node_modules/.bin/tsserver.cmd +0 -17
- package/templates/static/node_modules/.bin/tsserver.ps1 +0 -28
- package/templates/static/node_modules/.jen/cache/B__Jen.js_packages_create-jen-app_templates_static_site_(home).tsx.mjs +0 -14
- package/templates/static/node_modules/.jen/cache/B__Jen.js_packages_create-jen-app_yo_site_(home).tsx.mjs +0 -11
- package/templates/static/node_modules/.package-lock.json +0 -585
- package/templates/static/node_modules/@esbuild/win32-x64/README.md +0 -3
- package/templates/static/node_modules/@esbuild/win32-x64/esbuild.exe +0 -0
- package/templates/static/node_modules/@esbuild/win32-x64/package.json +0 -20
- package/templates/static/node_modules/@jenjs/master/README.md +0 -24
- package/templates/static/node_modules/@jenjs/master/index.js +0 -3655
- package/templates/static/node_modules/@jenjs/master/package.json +0 -36
- package/templates/static/node_modules/@polka/url/build.js +0 -49
- package/templates/static/node_modules/@polka/url/build.mjs +0 -47
- package/templates/static/node_modules/@polka/url/index.d.ts +0 -11
- package/templates/static/node_modules/@polka/url/package.json +0 -30
- package/templates/static/node_modules/@polka/url/readme.md +0 -68
- package/templates/static/node_modules/@types/node/LICENSE +0 -21
- package/templates/static/node_modules/@types/node/README.md +0 -15
- package/templates/static/node_modules/@types/node/assert/strict.d.ts +0 -111
- package/templates/static/node_modules/@types/node/assert.d.ts +0 -1078
- package/templates/static/node_modules/@types/node/async_hooks.d.ts +0 -603
- package/templates/static/node_modules/@types/node/buffer.buffer.d.ts +0 -472
- package/templates/static/node_modules/@types/node/buffer.d.ts +0 -1934
- package/templates/static/node_modules/@types/node/child_process.d.ts +0 -1476
- package/templates/static/node_modules/@types/node/cluster.d.ts +0 -578
- package/templates/static/node_modules/@types/node/compatibility/disposable.d.ts +0 -14
- package/templates/static/node_modules/@types/node/compatibility/index.d.ts +0 -9
- package/templates/static/node_modules/@types/node/compatibility/indexable.d.ts +0 -20
- package/templates/static/node_modules/@types/node/compatibility/iterators.d.ts +0 -20
- package/templates/static/node_modules/@types/node/console.d.ts +0 -452
- package/templates/static/node_modules/@types/node/constants.d.ts +0 -21
- package/templates/static/node_modules/@types/node/crypto.d.ts +0 -4545
- package/templates/static/node_modules/@types/node/dgram.d.ts +0 -600
- package/templates/static/node_modules/@types/node/diagnostics_channel.d.ts +0 -578
- package/templates/static/node_modules/@types/node/dns/promises.d.ts +0 -503
- package/templates/static/node_modules/@types/node/dns.d.ts +0 -923
- package/templates/static/node_modules/@types/node/domain.d.ts +0 -170
- package/templates/static/node_modules/@types/node/events.d.ts +0 -976
- package/templates/static/node_modules/@types/node/fs/promises.d.ts +0 -1295
- package/templates/static/node_modules/@types/node/fs.d.ts +0 -4461
- package/templates/static/node_modules/@types/node/globals.d.ts +0 -172
- package/templates/static/node_modules/@types/node/globals.typedarray.d.ts +0 -38
- package/templates/static/node_modules/@types/node/http.d.ts +0 -2089
- package/templates/static/node_modules/@types/node/http2.d.ts +0 -2644
- package/templates/static/node_modules/@types/node/https.d.ts +0 -579
- package/templates/static/node_modules/@types/node/index.d.ts +0 -97
- package/templates/static/node_modules/@types/node/inspector.d.ts +0 -253
- package/templates/static/node_modules/@types/node/inspector.generated.d.ts +0 -4052
- package/templates/static/node_modules/@types/node/module.d.ts +0 -891
- package/templates/static/node_modules/@types/node/net.d.ts +0 -1057
- package/templates/static/node_modules/@types/node/os.d.ts +0 -506
- package/templates/static/node_modules/@types/node/package.json +0 -145
- package/templates/static/node_modules/@types/node/path.d.ts +0 -200
- package/templates/static/node_modules/@types/node/perf_hooks.d.ts +0 -968
- package/templates/static/node_modules/@types/node/process.d.ts +0 -2089
- package/templates/static/node_modules/@types/node/punycode.d.ts +0 -117
- package/templates/static/node_modules/@types/node/querystring.d.ts +0 -152
- package/templates/static/node_modules/@types/node/readline/promises.d.ts +0 -161
- package/templates/static/node_modules/@types/node/readline.d.ts +0 -594
- package/templates/static/node_modules/@types/node/repl.d.ts +0 -428
- package/templates/static/node_modules/@types/node/sea.d.ts +0 -153
- package/templates/static/node_modules/@types/node/sqlite.d.ts +0 -721
- package/templates/static/node_modules/@types/node/stream/consumers.d.ts +0 -38
- package/templates/static/node_modules/@types/node/stream/promises.d.ts +0 -90
- package/templates/static/node_modules/@types/node/stream/web.d.ts +0 -622
- package/templates/static/node_modules/@types/node/stream.d.ts +0 -1664
- package/templates/static/node_modules/@types/node/string_decoder.d.ts +0 -67
- package/templates/static/node_modules/@types/node/test.d.ts +0 -2163
- package/templates/static/node_modules/@types/node/timers/promises.d.ts +0 -108
- package/templates/static/node_modules/@types/node/timers.d.ts +0 -287
- package/templates/static/node_modules/@types/node/tls.d.ts +0 -1319
- package/templates/static/node_modules/@types/node/trace_events.d.ts +0 -197
- package/templates/static/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -468
- package/templates/static/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -34
- package/templates/static/node_modules/@types/node/ts5.6/index.d.ts +0 -97
- package/templates/static/node_modules/@types/node/tty.d.ts +0 -208
- package/templates/static/node_modules/@types/node/url.d.ts +0 -984
- package/templates/static/node_modules/@types/node/util.d.ts +0 -2606
- package/templates/static/node_modules/@types/node/v8.d.ts +0 -920
- package/templates/static/node_modules/@types/node/vm.d.ts +0 -1000
- package/templates/static/node_modules/@types/node/wasi.d.ts +0 -181
- package/templates/static/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -34
- package/templates/static/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
- package/templates/static/node_modules/@types/node/web-globals/events.d.ts +0 -97
- package/templates/static/node_modules/@types/node/web-globals/fetch.d.ts +0 -55
- package/templates/static/node_modules/@types/node/web-globals/navigator.d.ts +0 -22
- package/templates/static/node_modules/@types/node/web-globals/storage.d.ts +0 -24
- package/templates/static/node_modules/@types/node/worker_threads.d.ts +0 -784
- package/templates/static/node_modules/@types/node/zlib.d.ts +0 -683
- package/templates/static/node_modules/esbuild/LICENSE.md +0 -21
- package/templates/static/node_modules/esbuild/README.md +0 -3
- package/templates/static/node_modules/esbuild/bin/esbuild +0 -223
- package/templates/static/node_modules/esbuild/install.js +0 -289
- package/templates/static/node_modules/esbuild/lib/main.d.ts +0 -716
- package/templates/static/node_modules/esbuild/lib/main.js +0 -2242
- package/templates/static/node_modules/esbuild/package.json +0 -49
- package/templates/static/node_modules/mrmime/index.d.ts +0 -2
- package/templates/static/node_modules/mrmime/index.js +0 -449
- package/templates/static/node_modules/mrmime/index.mjs +0 -448
- package/templates/static/node_modules/mrmime/license +0 -21
- package/templates/static/node_modules/mrmime/package.json +0 -44
- package/templates/static/node_modules/mrmime/readme.md +0 -130
- package/templates/static/node_modules/preact/README.md +0 -185
- package/templates/static/node_modules/preact/compat/client.d.ts +0 -13
- package/templates/static/node_modules/preact/compat/client.js +0 -21
- package/templates/static/node_modules/preact/compat/client.mjs +0 -24
- package/templates/static/node_modules/preact/compat/dist/compat.js +0 -2
- package/templates/static/node_modules/preact/compat/dist/compat.js.map +0 -1
- package/templates/static/node_modules/preact/compat/dist/compat.mjs +0 -2
- package/templates/static/node_modules/preact/compat/dist/compat.module.js +0 -2
- package/templates/static/node_modules/preact/compat/dist/compat.module.js.map +0 -1
- package/templates/static/node_modules/preact/compat/dist/compat.umd.js +0 -2
- package/templates/static/node_modules/preact/compat/dist/compat.umd.js.map +0 -1
- package/templates/static/node_modules/preact/compat/jsx-dev-runtime.js +0 -3
- package/templates/static/node_modules/preact/compat/jsx-dev-runtime.mjs +0 -3
- package/templates/static/node_modules/preact/compat/jsx-runtime.js +0 -3
- package/templates/static/node_modules/preact/compat/jsx-runtime.mjs +0 -3
- package/templates/static/node_modules/preact/compat/package.json +0 -55
- package/templates/static/node_modules/preact/compat/scheduler.js +0 -15
- package/templates/static/node_modules/preact/compat/scheduler.mjs +0 -23
- package/templates/static/node_modules/preact/compat/server.browser.js +0 -11
- package/templates/static/node_modules/preact/compat/server.js +0 -36
- package/templates/static/node_modules/preact/compat/server.mjs +0 -17
- package/templates/static/node_modules/preact/compat/src/Children.js +0 -21
- package/templates/static/node_modules/preact/compat/src/PureComponent.js +0 -16
- package/templates/static/node_modules/preact/compat/src/forwardRef.js +0 -44
- package/templates/static/node_modules/preact/compat/src/hooks.js +0 -70
- package/templates/static/node_modules/preact/compat/src/index.d.ts +0 -351
- package/templates/static/node_modules/preact/compat/src/index.js +0 -238
- package/templates/static/node_modules/preact/compat/src/internal.d.ts +0 -48
- package/templates/static/node_modules/preact/compat/src/memo.js +0 -35
- package/templates/static/node_modules/preact/compat/src/portals.js +0 -78
- package/templates/static/node_modules/preact/compat/src/render.js +0 -313
- package/templates/static/node_modules/preact/compat/src/suspense-list.d.ts +0 -16
- package/templates/static/node_modules/preact/compat/src/suspense-list.js +0 -127
- package/templates/static/node_modules/preact/compat/src/suspense.d.ts +0 -19
- package/templates/static/node_modules/preact/compat/src/suspense.js +0 -291
- package/templates/static/node_modules/preact/compat/src/util.js +0 -33
- package/templates/static/node_modules/preact/compat/test-utils.js +0 -1
- package/templates/static/node_modules/preact/compat/test-utils.mjs +0 -1
- package/templates/static/node_modules/preact/debug/dist/debug.js +0 -2
- package/templates/static/node_modules/preact/debug/dist/debug.js.map +0 -1
- package/templates/static/node_modules/preact/debug/dist/debug.mjs +0 -2
- package/templates/static/node_modules/preact/debug/dist/debug.module.js +0 -2
- package/templates/static/node_modules/preact/debug/dist/debug.module.js.map +0 -1
- package/templates/static/node_modules/preact/debug/dist/debug.umd.js +0 -2
- package/templates/static/node_modules/preact/debug/dist/debug.umd.js.map +0 -1
- package/templates/static/node_modules/preact/debug/package.json +0 -27
- package/templates/static/node_modules/preact/debug/src/check-props.js +0 -54
- package/templates/static/node_modules/preact/debug/src/component-stack.js +0 -146
- package/templates/static/node_modules/preact/debug/src/constants.js +0 -3
- package/templates/static/node_modules/preact/debug/src/debug.js +0 -593
- package/templates/static/node_modules/preact/debug/src/index.d.ts +0 -23
- package/templates/static/node_modules/preact/debug/src/index.js +0 -12
- package/templates/static/node_modules/preact/debug/src/internal.d.ts +0 -82
- package/templates/static/node_modules/preact/debug/src/util.js +0 -15
- package/templates/static/node_modules/preact/devtools/dist/devtools.js +0 -2
- package/templates/static/node_modules/preact/devtools/dist/devtools.js.map +0 -1
- package/templates/static/node_modules/preact/devtools/dist/devtools.mjs +0 -2
- package/templates/static/node_modules/preact/devtools/dist/devtools.module.js +0 -2
- package/templates/static/node_modules/preact/devtools/dist/devtools.module.js.map +0 -1
- package/templates/static/node_modules/preact/devtools/dist/devtools.umd.js +0 -2
- package/templates/static/node_modules/preact/devtools/dist/devtools.umd.js.map +0 -1
- package/templates/static/node_modules/preact/devtools/package.json +0 -25
- package/templates/static/node_modules/preact/devtools/src/devtools.js +0 -21
- package/templates/static/node_modules/preact/devtools/src/index.d.ts +0 -8
- package/templates/static/node_modules/preact/devtools/src/index.js +0 -15
- package/templates/static/node_modules/preact/dist/preact.js +0 -2
- package/templates/static/node_modules/preact/dist/preact.js.map +0 -1
- package/templates/static/node_modules/preact/dist/preact.min.js +0 -2
- package/templates/static/node_modules/preact/dist/preact.min.js.map +0 -1
- package/templates/static/node_modules/preact/dist/preact.min.module.js +0 -2
- package/templates/static/node_modules/preact/dist/preact.min.module.js.map +0 -1
- package/templates/static/node_modules/preact/dist/preact.min.umd.js +0 -2
- package/templates/static/node_modules/preact/dist/preact.min.umd.js.map +0 -1
- package/templates/static/node_modules/preact/dist/preact.mjs +0 -2
- package/templates/static/node_modules/preact/dist/preact.module.js +0 -2
- package/templates/static/node_modules/preact/dist/preact.module.js.map +0 -1
- package/templates/static/node_modules/preact/dist/preact.umd.js +0 -2
- package/templates/static/node_modules/preact/dist/preact.umd.js.map +0 -1
- package/templates/static/node_modules/preact/hooks/dist/hooks.js +0 -2
- package/templates/static/node_modules/preact/hooks/dist/hooks.js.map +0 -1
- package/templates/static/node_modules/preact/hooks/dist/hooks.mjs +0 -2
- package/templates/static/node_modules/preact/hooks/dist/hooks.module.js +0 -2
- package/templates/static/node_modules/preact/hooks/dist/hooks.module.js.map +0 -1
- package/templates/static/node_modules/preact/hooks/dist/hooks.umd.js +0 -2
- package/templates/static/node_modules/preact/hooks/dist/hooks.umd.js.map +0 -1
- package/templates/static/node_modules/preact/hooks/package.json +0 -35
- package/templates/static/node_modules/preact/hooks/src/index.d.ts +0 -145
- package/templates/static/node_modules/preact/hooks/src/index.js +0 -555
- package/templates/static/node_modules/preact/hooks/src/internal.d.ts +0 -103
- package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.js +0 -2
- package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.js.map +0 -1
- package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.mjs +0 -2
- package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js +0 -2
- package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js.map +0 -1
- package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.umd.js +0 -2
- package/templates/static/node_modules/preact/jsx-runtime/dist/jsxRuntime.umd.js.map +0 -1
- package/templates/static/node_modules/preact/jsx-runtime/package.json +0 -28
- package/templates/static/node_modules/preact/jsx-runtime/src/index.d.ts +0 -62
- package/templates/static/node_modules/preact/jsx-runtime/src/index.js +0 -206
- package/templates/static/node_modules/preact/jsx-runtime/src/utils.js +0 -36
- package/templates/static/node_modules/preact/package.json +0 -258
- package/templates/static/node_modules/preact/src/cjs.js +0 -3
- package/templates/static/node_modules/preact/src/clone-element.js +0 -48
- package/templates/static/node_modules/preact/src/component.js +0 -249
- package/templates/static/node_modules/preact/src/constants.js +0 -22
- package/templates/static/node_modules/preact/src/create-context.js +0 -60
- package/templates/static/node_modules/preact/src/create-element.js +0 -97
- package/templates/static/node_modules/preact/src/diff/catch-error.js +0 -46
- package/templates/static/node_modules/preact/src/diff/children.js +0 -451
- package/templates/static/node_modules/preact/src/diff/index.js +0 -684
- package/templates/static/node_modules/preact/src/diff/props.js +0 -173
- package/templates/static/node_modules/preact/src/dom.d.ts +0 -2476
- package/templates/static/node_modules/preact/src/index-5.d.ts +0 -399
- package/templates/static/node_modules/preact/src/index.d.ts +0 -402
- package/templates/static/node_modules/preact/src/index.js +0 -13
- package/templates/static/node_modules/preact/src/internal.d.ts +0 -190
- package/templates/static/node_modules/preact/src/jsx.d.ts +0 -2878
- package/templates/static/node_modules/preact/src/options.js +0 -16
- package/templates/static/node_modules/preact/src/render.js +0 -78
- package/templates/static/node_modules/preact/src/util.js +0 -28
- package/templates/static/node_modules/preact/test-utils/dist/testUtils.js +0 -2
- package/templates/static/node_modules/preact/test-utils/dist/testUtils.js.map +0 -1
- package/templates/static/node_modules/preact/test-utils/dist/testUtils.mjs +0 -2
- package/templates/static/node_modules/preact/test-utils/dist/testUtils.module.js +0 -2
- package/templates/static/node_modules/preact/test-utils/dist/testUtils.module.js.map +0 -1
- package/templates/static/node_modules/preact/test-utils/dist/testUtils.umd.js +0 -2
- package/templates/static/node_modules/preact/test-utils/dist/testUtils.umd.js.map +0 -1
- package/templates/static/node_modules/preact/test-utils/package.json +0 -28
- package/templates/static/node_modules/preact/test-utils/src/index.d.ts +0 -3
- package/templates/static/node_modules/preact/test-utils/src/index.js +0 -129
- package/templates/static/node_modules/preact-render-to-string/LICENSE +0 -21
- package/templates/static/node_modules/preact-render-to-string/README.md +0 -149
- package/templates/static/node_modules/preact-render-to-string/dist/commonjs.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/index.d.ts +0 -17
- package/templates/static/node_modules/preact-render-to-string/dist/index.js +0 -6
- package/templates/static/node_modules/preact-render-to-string/dist/index.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/index.mjs +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/index.module.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/index.module.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/index.umd.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/index.umd.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/internal.d.ts +0 -35
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/commonjs.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.js +0 -4
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.mjs +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.module.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.module.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.umd.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/jsx/index.umd.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/jsx.d.ts +0 -24
- package/templates/static/node_modules/preact-render-to-string/dist/stream/index.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/stream/index.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/stream/index.mjs +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/stream/index.module.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/stream/index.module.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/stream/index.umd.js +0 -2
- package/templates/static/node_modules/preact-render-to-string/dist/stream/index.umd.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.js +0 -884
- package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.mjs +0 -884
- package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.module.js +0 -884
- package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.module.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.umd.js +0 -888
- package/templates/static/node_modules/preact-render-to-string/dist/stream/node/index.umd.js.map +0 -1
- package/templates/static/node_modules/preact-render-to-string/dist/stream-node.d.ts +0 -19
- package/templates/static/node_modules/preact-render-to-string/dist/stream.d.ts +0 -10
- package/templates/static/node_modules/preact-render-to-string/jsx.d.ts +0 -24
- package/templates/static/node_modules/preact-render-to-string/jsx.js +0 -1
- package/templates/static/node_modules/preact-render-to-string/package.json +0 -152
- package/templates/static/node_modules/preact-render-to-string/src/index.d.ts +0 -17
- package/templates/static/node_modules/preact-render-to-string/src/index.js +0 -764
- package/templates/static/node_modules/preact-render-to-string/src/internal.d.ts +0 -35
- package/templates/static/node_modules/preact-render-to-string/src/jsx.d.ts +0 -24
- package/templates/static/node_modules/preact-render-to-string/src/jsx.js +0 -102
- package/templates/static/node_modules/preact-render-to-string/src/lib/chunked.js +0 -97
- package/templates/static/node_modules/preact-render-to-string/src/lib/client.js +0 -62
- package/templates/static/node_modules/preact-render-to-string/src/lib/constants.js +0 -20
- package/templates/static/node_modules/preact-render-to-string/src/lib/polyfills.js +0 -8
- package/templates/static/node_modules/preact-render-to-string/src/lib/util.js +0 -208
- package/templates/static/node_modules/preact-render-to-string/src/pretty.js +0 -491
- package/templates/static/node_modules/preact-render-to-string/src/stream-node.d.ts +0 -19
- package/templates/static/node_modules/preact-render-to-string/src/stream-node.js +0 -84
- package/templates/static/node_modules/preact-render-to-string/src/stream.d.ts +0 -10
- package/templates/static/node_modules/preact-render-to-string/src/stream.js +0 -43
- package/templates/static/node_modules/preact-render-to-string/typings.json +0 -5
- package/templates/static/node_modules/sirv/build.js +0 -197
- package/templates/static/node_modules/sirv/build.mjs +0 -197
- package/templates/static/node_modules/sirv/index.d.mts +0 -29
- package/templates/static/node_modules/sirv/index.d.ts +0 -33
- package/templates/static/node_modules/sirv/package.json +0 -40
- package/templates/static/node_modules/sirv/readme.md +0 -238
- package/templates/static/node_modules/totalist/dist/index.js +0 -24
- package/templates/static/node_modules/totalist/dist/index.mjs +0 -22
- package/templates/static/node_modules/totalist/index.d.ts +0 -3
- package/templates/static/node_modules/totalist/license +0 -21
- package/templates/static/node_modules/totalist/package.json +0 -55
- package/templates/static/node_modules/totalist/readme.md +0 -109
- package/templates/static/node_modules/totalist/sync/index.d.ts +0 -3
- package/templates/static/node_modules/totalist/sync/index.js +0 -17
- package/templates/static/node_modules/totalist/sync/index.mjs +0 -15
- package/templates/static/node_modules/typescript/bin/tsc +0 -2
- package/templates/static/node_modules/typescript/bin/tsserver +0 -2
- package/templates/static/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/lib.d.ts +0 -22
- package/templates/static/node_modules/typescript/lib/lib.decorators.d.ts +0 -384
- package/templates/static/node_modules/typescript/lib/lib.decorators.legacy.d.ts +0 -22
- package/templates/static/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +0 -41
- package/templates/static/node_modules/typescript/lib/lib.dom.d.ts +0 -39429
- package/templates/static/node_modules/typescript/lib/lib.dom.iterable.d.ts +0 -571
- package/templates/static/node_modules/typescript/lib/lib.es2015.collection.d.ts +0 -147
- package/templates/static/node_modules/typescript/lib/lib.es2015.core.d.ts +0 -597
- package/templates/static/node_modules/typescript/lib/lib.es2015.d.ts +0 -28
- package/templates/static/node_modules/typescript/lib/lib.es2015.generator.d.ts +0 -77
- package/templates/static/node_modules/typescript/lib/lib.es2015.iterable.d.ts +0 -605
- package/templates/static/node_modules/typescript/lib/lib.es2015.promise.d.ts +0 -81
- package/templates/static/node_modules/typescript/lib/lib.es2015.proxy.d.ts +0 -128
- package/templates/static/node_modules/typescript/lib/lib.es2015.reflect.d.ts +0 -144
- package/templates/static/node_modules/typescript/lib/lib.es2015.symbol.d.ts +0 -46
- package/templates/static/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -326
- package/templates/static/node_modules/typescript/lib/lib.es2016.array.include.d.ts +0 -116
- package/templates/static/node_modules/typescript/lib/lib.es2016.d.ts +0 -21
- package/templates/static/node_modules/typescript/lib/lib.es2016.full.d.ts +0 -23
- package/templates/static/node_modules/typescript/lib/lib.es2016.intl.d.ts +0 -31
- package/templates/static/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +0 -21
- package/templates/static/node_modules/typescript/lib/lib.es2017.d.ts +0 -26
- package/templates/static/node_modules/typescript/lib/lib.es2017.date.d.ts +0 -31
- package/templates/static/node_modules/typescript/lib/lib.es2017.full.d.ts +0 -23
- package/templates/static/node_modules/typescript/lib/lib.es2017.intl.d.ts +0 -44
- package/templates/static/node_modules/typescript/lib/lib.es2017.object.d.ts +0 -49
- package/templates/static/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +0 -135
- package/templates/static/node_modules/typescript/lib/lib.es2017.string.d.ts +0 -45
- package/templates/static/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +0 -53
- package/templates/static/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -77
- package/templates/static/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +0 -53
- package/templates/static/node_modules/typescript/lib/lib.es2018.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2018.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2018.intl.d.ts +0 -83
- package/templates/static/node_modules/typescript/lib/lib.es2018.promise.d.ts +0 -30
- package/templates/static/node_modules/typescript/lib/lib.es2018.regexp.d.ts +0 -37
- package/templates/static/node_modules/typescript/lib/lib.es2019.array.d.ts +0 -79
- package/templates/static/node_modules/typescript/lib/lib.es2019.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2019.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2019.intl.d.ts +0 -23
- package/templates/static/node_modules/typescript/lib/lib.es2019.object.d.ts +0 -33
- package/templates/static/node_modules/typescript/lib/lib.es2019.string.d.ts +0 -37
- package/templates/static/node_modules/typescript/lib/lib.es2019.symbol.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2020.bigint.d.ts +0 -765
- package/templates/static/node_modules/typescript/lib/lib.es2020.d.ts +0 -27
- package/templates/static/node_modules/typescript/lib/lib.es2020.date.d.ts +0 -42
- package/templates/static/node_modules/typescript/lib/lib.es2020.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2020.intl.d.ts +0 -474
- package/templates/static/node_modules/typescript/lib/lib.es2020.number.d.ts +0 -28
- package/templates/static/node_modules/typescript/lib/lib.es2020.promise.d.ts +0 -47
- package/templates/static/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +0 -99
- package/templates/static/node_modules/typescript/lib/lib.es2020.string.d.ts +0 -44
- package/templates/static/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -41
- package/templates/static/node_modules/typescript/lib/lib.es2021.d.ts +0 -23
- package/templates/static/node_modules/typescript/lib/lib.es2021.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2021.intl.d.ts +0 -166
- package/templates/static/node_modules/typescript/lib/lib.es2021.promise.d.ts +0 -48
- package/templates/static/node_modules/typescript/lib/lib.es2021.string.d.ts +0 -33
- package/templates/static/node_modules/typescript/lib/lib.es2021.weakref.d.ts +0 -78
- package/templates/static/node_modules/typescript/lib/lib.es2022.array.d.ts +0 -121
- package/templates/static/node_modules/typescript/lib/lib.es2022.d.ts +0 -25
- package/templates/static/node_modules/typescript/lib/lib.es2022.error.d.ts +0 -75
- package/templates/static/node_modules/typescript/lib/lib.es2022.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2022.intl.d.ts +0 -145
- package/templates/static/node_modules/typescript/lib/lib.es2022.object.d.ts +0 -26
- package/templates/static/node_modules/typescript/lib/lib.es2022.regexp.d.ts +0 -39
- package/templates/static/node_modules/typescript/lib/lib.es2022.string.d.ts +0 -25
- package/templates/static/node_modules/typescript/lib/lib.es2023.array.d.ts +0 -924
- package/templates/static/node_modules/typescript/lib/lib.es2023.collection.d.ts +0 -21
- package/templates/static/node_modules/typescript/lib/lib.es2023.d.ts +0 -22
- package/templates/static/node_modules/typescript/lib/lib.es2023.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2023.intl.d.ts +0 -56
- package/templates/static/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +0 -65
- package/templates/static/node_modules/typescript/lib/lib.es2024.collection.d.ts +0 -29
- package/templates/static/node_modules/typescript/lib/lib.es2024.d.ts +0 -26
- package/templates/static/node_modules/typescript/lib/lib.es2024.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.es2024.object.d.ts +0 -29
- package/templates/static/node_modules/typescript/lib/lib.es2024.promise.d.ts +0 -35
- package/templates/static/node_modules/typescript/lib/lib.es2024.regexp.d.ts +0 -25
- package/templates/static/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +0 -68
- package/templates/static/node_modules/typescript/lib/lib.es2024.string.d.ts +0 -29
- package/templates/static/node_modules/typescript/lib/lib.es5.d.ts +0 -4601
- package/templates/static/node_modules/typescript/lib/lib.es6.d.ts +0 -23
- package/templates/static/node_modules/typescript/lib/lib.esnext.array.d.ts +0 -35
- package/templates/static/node_modules/typescript/lib/lib.esnext.collection.d.ts +0 -96
- package/templates/static/node_modules/typescript/lib/lib.esnext.d.ts +0 -29
- package/templates/static/node_modules/typescript/lib/lib.esnext.decorators.d.ts +0 -28
- package/templates/static/node_modules/typescript/lib/lib.esnext.disposable.d.ts +0 -193
- package/templates/static/node_modules/typescript/lib/lib.esnext.error.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.esnext.float16.d.ts +0 -445
- package/templates/static/node_modules/typescript/lib/lib.esnext.full.d.ts +0 -24
- package/templates/static/node_modules/typescript/lib/lib.esnext.intl.d.ts +0 -21
- package/templates/static/node_modules/typescript/lib/lib.esnext.iterator.d.ts +0 -148
- package/templates/static/node_modules/typescript/lib/lib.esnext.promise.d.ts +0 -34
- package/templates/static/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +0 -25
- package/templates/static/node_modules/typescript/lib/lib.scripthost.d.ts +0 -322
- package/templates/static/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +0 -41
- package/templates/static/node_modules/typescript/lib/lib.webworker.d.ts +0 -13150
- package/templates/static/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +0 -23
- package/templates/static/node_modules/typescript/lib/lib.webworker.iterable.d.ts +0 -340
- package/templates/static/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
- package/templates/static/node_modules/typescript/lib/tsc.js +0 -8
- package/templates/static/node_modules/typescript/lib/tsserver.js +0 -8
- package/templates/static/node_modules/typescript/lib/tsserverlibrary.d.ts +0 -17
- package/templates/static/node_modules/typescript/lib/tsserverlibrary.js +0 -21
- package/templates/static/node_modules/typescript/lib/typescript.d.ts +0 -11437
- /package/templates/{static → ssr-isr}/lib/auth/index.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/cli/templates/ssg/jen.config.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/cli/templates/ssg/site/index.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/cli/templates/ssr/jen.config.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/cli/templates/ssr/site/index.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/compilers/esbuild-plugins.d.ts +0 -0
- /package/templates/{static/lib/middleware/types.d.ts → ssr-isr/lib/core/config.js} +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/errors/handler.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/utils/matcher.d.ts +0 -0
- /package/templates/static/{node_modules → lib/vendor}/preact/LICENSE +0 -0
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
import { existsSync, watch } from "node:fs";
|
|
2
|
+
import { join, extname } from "node:path";
|
|
3
|
+
import sirv from "sirv";
|
|
4
|
+
import { createScssCompiler } from "../css/compiler.js";
|
|
5
|
+
import { scanRoutes } from "../core/routes/scan.js";
|
|
6
|
+
import { matchRoute } from "../core/routes/match.js";
|
|
7
|
+
import { log } from "../shared/log.js";
|
|
8
|
+
import { Kernel } from "../middleware/kernel.js";
|
|
9
|
+
import { renderRouteToHtml } from "../runtime/render.js";
|
|
10
|
+
import { HMR_CLIENT_SCRIPT } from "../runtime/hmr.js";
|
|
11
|
+
import { headersToObject, parseCookies } from "../core/http.js";
|
|
12
|
+
import { tryHandleApiRoute } from "./api-routes.js";
|
|
13
|
+
import { resolve } from "node:path";
|
|
14
|
+
import {
|
|
15
|
+
buildHydrationModule,
|
|
16
|
+
runtimeHydrateModule,
|
|
17
|
+
invalidateCache,
|
|
18
|
+
} from "./runtimeServe.js";
|
|
19
|
+
import {
|
|
20
|
+
invalidateVueCache,
|
|
21
|
+
invalidateSvelteCache,
|
|
22
|
+
} from "../compilers/esbuild-plugins.js";
|
|
23
|
+
/**
|
|
24
|
+
* Creates and configures the main HTTP application handler.
|
|
25
|
+
*
|
|
26
|
+
* Initializes the middleware chain for handling requests in the following order:
|
|
27
|
+
* 1. Request logging
|
|
28
|
+
* 2. Internal runtime modules (hydration, HMR)
|
|
29
|
+
* 3. API route handling
|
|
30
|
+
* 4. Static dist directory serving (prod mode)
|
|
31
|
+
* 5. SCSS compilation (dev mode)
|
|
32
|
+
* 6. Site assets serving (dev mode)
|
|
33
|
+
* 7. Server-side rendering (SSR) of route pages
|
|
34
|
+
* 8. 404 fallback
|
|
35
|
+
*
|
|
36
|
+
* In development mode, sets up file watching on the site directory to enable:
|
|
37
|
+
* - Hot Module Replacement (HMR) via Server-Sent Events (SSE)
|
|
38
|
+
* - Hot CSS reload for SCSS changes
|
|
39
|
+
* - Full page reload for JavaScript/TypeScript/framework file changes
|
|
40
|
+
* - Module and compiler cache invalidation
|
|
41
|
+
*
|
|
42
|
+
* @param opts Configuration object
|
|
43
|
+
* @param opts.config Jen.js framework configuration with routes, directories, etc.
|
|
44
|
+
* @param opts.mode "dev" for development or "prod" for production
|
|
45
|
+
* @param opts.viteServer Optional Vite dev server instance for HMR (dev mode only)
|
|
46
|
+
*
|
|
47
|
+
* @returns Promise resolving to an object with handle() method for processing HTTP requests
|
|
48
|
+
*
|
|
49
|
+
* @throws {Error} If route scanning fails due to invalid route patterns
|
|
50
|
+
*/
|
|
51
|
+
export async function createApp(opts) {
|
|
52
|
+
const { config, mode, viteServer } = opts;
|
|
53
|
+
/**
|
|
54
|
+
* Set of active Server-Sent Events (SSE) connections for Hot Module Replacement.
|
|
55
|
+
* Clients maintain a persistent SSE connection to receive change notifications.
|
|
56
|
+
* Each response object in this set receives change events for CSS updates and full reloads.
|
|
57
|
+
*/
|
|
58
|
+
const hmrClients = new Set();
|
|
59
|
+
if (mode === "dev") {
|
|
60
|
+
const sitePath = join(process.cwd(), config.siteDir);
|
|
61
|
+
log.info(`[HMR] Watching ${sitePath} for changes...`);
|
|
62
|
+
/**
|
|
63
|
+
* Debounce timer prevents multiple rapid change notifications.
|
|
64
|
+
* Filesystem watchers often emit multiple events for a single file change.
|
|
65
|
+
* This delay coalesces rapid changes into a single notification (100ms threshold).
|
|
66
|
+
*/
|
|
67
|
+
let debounceTimer;
|
|
68
|
+
try {
|
|
69
|
+
watch(sitePath, { recursive: true }, (eventType, filename) => {
|
|
70
|
+
if (!filename) return;
|
|
71
|
+
/**
|
|
72
|
+
* Filter out files that should not trigger HMR notifications.
|
|
73
|
+
* Temporary files, build artifacts, and hidden files cause infinite loops
|
|
74
|
+
* or are not meant for hot reload.
|
|
75
|
+
*/
|
|
76
|
+
if (
|
|
77
|
+
filename.startsWith(".") ||
|
|
78
|
+
filename.includes("node_modules") ||
|
|
79
|
+
filename.endsWith("~") ||
|
|
80
|
+
filename.endsWith(".tmp") ||
|
|
81
|
+
filename.endsWith(".esbuild.mjs") || // Ignore build artifacts
|
|
82
|
+
filename.includes("\\.") || // Windows hidden files
|
|
83
|
+
filename.includes("/.") // Unix hidden files
|
|
84
|
+
) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
// Debounce to avoid double events
|
|
88
|
+
clearTimeout(debounceTimer);
|
|
89
|
+
debounceTimer = setTimeout(() => {
|
|
90
|
+
const ext = extname(filename);
|
|
91
|
+
// Normalize path
|
|
92
|
+
const fullPath = join(sitePath, filename);
|
|
93
|
+
log.info(`[HMR] Change detected: ${filename}`);
|
|
94
|
+
if (ext === ".css" || ext === ".scss") {
|
|
95
|
+
/**
|
|
96
|
+
* For CSS/SCSS changes, send a style-update event.
|
|
97
|
+
* This allows the client to reload CSS without full page reload,
|
|
98
|
+
* preserving component state and providing better developer experience.
|
|
99
|
+
*/
|
|
100
|
+
const cssName = filename.replace(/\.scss$/, ".css");
|
|
101
|
+
for (const client of hmrClients) {
|
|
102
|
+
client.write(
|
|
103
|
+
`event: style-update\ndata: ${JSON.stringify({ file: cssName })}\n\n`,
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
} else {
|
|
107
|
+
/**
|
|
108
|
+
* For JavaScript/TypeScript/component changes, invalidate build caches
|
|
109
|
+
* and send a full reload event.
|
|
110
|
+
* Cache invalidation ensures the latest code is loaded on next request.
|
|
111
|
+
*/
|
|
112
|
+
invalidateCache(fullPath);
|
|
113
|
+
if (ext === ".vue") invalidateVueCache(fullPath);
|
|
114
|
+
if (ext === ".svelte") invalidateSvelteCache(fullPath);
|
|
115
|
+
// Full reload for JS/TS/Vue/Svelte/Other
|
|
116
|
+
for (const client of hmrClients) {
|
|
117
|
+
client.write(`event: reload\ndata: {}\n\n`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}, 100);
|
|
121
|
+
});
|
|
122
|
+
} catch (err) {
|
|
123
|
+
log.warn(`[HMR] Watch failed: ${err}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Scans the site directory for route files and compiles route patterns.
|
|
128
|
+
* Routes are discovered by filename pattern and file extensions configured in config.
|
|
129
|
+
* See scanRoutes() for details on route naming conventions.
|
|
130
|
+
*/
|
|
131
|
+
const routes = scanRoutes(config);
|
|
132
|
+
log.info(`Routes discovered: ${routes.length}`);
|
|
133
|
+
for (const r of routes) log.info(` ${r.urlPath} -> ${r.filePath}`);
|
|
134
|
+
const serveAssets = sirv(join(process.cwd(), config.siteDir), {
|
|
135
|
+
dev: mode === "dev",
|
|
136
|
+
etag: true,
|
|
137
|
+
});
|
|
138
|
+
const serveDist = sirv(join(process.cwd(), config.distDir), {
|
|
139
|
+
dev: mode === "dev",
|
|
140
|
+
etag: true,
|
|
141
|
+
});
|
|
142
|
+
const middlewares = [
|
|
143
|
+
async (ctx, next) => {
|
|
144
|
+
log.info(`${ctx.req.method} ${ctx.url.pathname}`);
|
|
145
|
+
await next();
|
|
146
|
+
},
|
|
147
|
+
async (ctx, next) => {
|
|
148
|
+
// runtime internal modules
|
|
149
|
+
if (ctx.url.pathname === "/__runtime/hydrate.js") {
|
|
150
|
+
ctx.res.statusCode = 200;
|
|
151
|
+
ctx.res.setHeader(
|
|
152
|
+
"content-type",
|
|
153
|
+
"application/javascript; charset=utf-8",
|
|
154
|
+
);
|
|
155
|
+
ctx.res.end(runtimeHydrateModule());
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
if (ctx.url.pathname === "/__runtime/island-hydration-client.js") {
|
|
159
|
+
ctx.res.statusCode = 200;
|
|
160
|
+
ctx.res.setHeader(
|
|
161
|
+
"content-type",
|
|
162
|
+
"application/javascript; charset=utf-8",
|
|
163
|
+
);
|
|
164
|
+
const islandCode = `
|
|
165
|
+
import { hydrate } from "https://esm.sh/preact@10";
|
|
166
|
+
import { h } from "https://esm.sh/preact@10";
|
|
167
|
+
|
|
168
|
+
function extractIslands() {
|
|
169
|
+
const islands = [];
|
|
170
|
+
const html = document.documentElement.outerHTML;
|
|
171
|
+
const regex = /<!--__ISLAND_(LOAD|IDLE|VISIBLE)__:([^:]+):([^:]+):(.+?)-->/g;
|
|
172
|
+
let match;
|
|
173
|
+
while ((match = regex.exec(html)) !== null) {
|
|
174
|
+
const strategy = match[1].toLowerCase();
|
|
175
|
+
const id = match[2];
|
|
176
|
+
const component = match[3];
|
|
177
|
+
const propsStr = match[4].replace(/\\\\u003c/g, "<");
|
|
178
|
+
try {
|
|
179
|
+
islands.push({
|
|
180
|
+
id, component, strategy,
|
|
181
|
+
props: JSON.parse(propsStr),
|
|
182
|
+
});
|
|
183
|
+
} catch (e) {
|
|
184
|
+
console.warn('Failed to parse island ' + id);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return islands;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
async function hydrateIsland(island) {
|
|
191
|
+
const target = document.getElementById(island.id);
|
|
192
|
+
if (!target) {
|
|
193
|
+
console.warn('Island target #' + island.id + ' not found');
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
try {
|
|
197
|
+
const hydrationUrl = '/__hydrate?file=' + encodeURIComponent(island.component);
|
|
198
|
+
const mod = await import(hydrationUrl);
|
|
199
|
+
const Component = mod.default;
|
|
200
|
+
if (!Component) {
|
|
201
|
+
console.warn('Component not exported from ' + island.component);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
const app = h(Component, island.props);
|
|
205
|
+
hydrate(app, target);
|
|
206
|
+
} catch (err) {
|
|
207
|
+
console.error('Failed to hydrate island ' + island.id + ':', err);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
function hydrateWithStrategy(islands) {
|
|
212
|
+
for (const island of islands) {
|
|
213
|
+
switch (island.strategy) {
|
|
214
|
+
case 'load':
|
|
215
|
+
hydrateIsland(island);
|
|
216
|
+
break;
|
|
217
|
+
case 'idle':
|
|
218
|
+
if ('requestIdleCallback' in window) {
|
|
219
|
+
requestIdleCallback(() => hydrateIsland(island));
|
|
220
|
+
} else {
|
|
221
|
+
setTimeout(() => hydrateIsland(island), 2000);
|
|
222
|
+
}
|
|
223
|
+
break;
|
|
224
|
+
case 'visible':
|
|
225
|
+
if ('IntersectionObserver' in window) {
|
|
226
|
+
const target = document.getElementById(island.id);
|
|
227
|
+
if (target) {
|
|
228
|
+
const observer = new IntersectionObserver((entries) => {
|
|
229
|
+
if (entries[0].isIntersecting) {
|
|
230
|
+
hydrateIsland(island);
|
|
231
|
+
observer.disconnect();
|
|
232
|
+
}
|
|
233
|
+
}, { threshold: 0.1 });
|
|
234
|
+
observer.observe(target);
|
|
235
|
+
}
|
|
236
|
+
} else {
|
|
237
|
+
setTimeout(() => hydrateIsland(island), 3000);
|
|
238
|
+
}
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
export function initializeIslands() {
|
|
245
|
+
if (document.readyState === 'loading') {
|
|
246
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
247
|
+
const islands = extractIslands();
|
|
248
|
+
hydrateWithStrategy(islands);
|
|
249
|
+
});
|
|
250
|
+
} else {
|
|
251
|
+
const islands = extractIslands();
|
|
252
|
+
hydrateWithStrategy(islands);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
initializeIslands();
|
|
257
|
+
`;
|
|
258
|
+
ctx.res.end(islandCode);
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
// HMR Endpoint (SSE)
|
|
262
|
+
if (ctx.url.pathname === "/__hmr" && mode === "dev") {
|
|
263
|
+
ctx.res.statusCode = 200;
|
|
264
|
+
ctx.res.setHeader("content-type", "text/event-stream");
|
|
265
|
+
ctx.res.setHeader("cache-control", "no-cache");
|
|
266
|
+
ctx.res.setHeader("connection", "keep-alive");
|
|
267
|
+
ctx.res.write("data: connected\n\n");
|
|
268
|
+
hmrClients.add(ctx.res);
|
|
269
|
+
ctx.req.on("close", () => {
|
|
270
|
+
hmrClients.delete(ctx.res);
|
|
271
|
+
});
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
if (ctx.url.pathname === "/__hydrate") {
|
|
275
|
+
const file = ctx.url.searchParams.get("file");
|
|
276
|
+
if (!file) {
|
|
277
|
+
ctx.res.statusCode = 400;
|
|
278
|
+
ctx.res.end("missing file");
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
const js = buildHydrationModule(file);
|
|
282
|
+
ctx.res.statusCode = 200;
|
|
283
|
+
ctx.res.setHeader(
|
|
284
|
+
"content-type",
|
|
285
|
+
"application/javascript; charset=utf-8",
|
|
286
|
+
);
|
|
287
|
+
ctx.res.setHeader("cache-control", "no-store");
|
|
288
|
+
ctx.res.end(js);
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
await next();
|
|
292
|
+
},
|
|
293
|
+
async (ctx, next) => {
|
|
294
|
+
// API routes
|
|
295
|
+
const handled = await tryHandleApiRoute({
|
|
296
|
+
req: ctx.req,
|
|
297
|
+
res: ctx.res,
|
|
298
|
+
siteDir: config.siteDir,
|
|
299
|
+
});
|
|
300
|
+
if (handled) return;
|
|
301
|
+
await next();
|
|
302
|
+
},
|
|
303
|
+
async (ctx, next) => {
|
|
304
|
+
// dist
|
|
305
|
+
if (mode === "prod") {
|
|
306
|
+
await new Promise((resolve) => {
|
|
307
|
+
serveDist(ctx.req, ctx.res, () => resolve());
|
|
308
|
+
});
|
|
309
|
+
if (ctx.res.writableEnded || ctx.res.headersSent) return;
|
|
310
|
+
}
|
|
311
|
+
await next();
|
|
312
|
+
},
|
|
313
|
+
async (ctx, next) => {
|
|
314
|
+
// SCSS Compilation (Dev)
|
|
315
|
+
if (mode === "dev" && ctx.url.pathname.endsWith(".css")) {
|
|
316
|
+
let scssFile = null;
|
|
317
|
+
const basePath = resolve(process.cwd());
|
|
318
|
+
if (ctx.url.pathname === "/styles.css") {
|
|
319
|
+
// Global SCSS
|
|
320
|
+
if (config.css?.globalScss) {
|
|
321
|
+
// Already includes siteDir if needed, but add it if it doesn't
|
|
322
|
+
const scssPath = config.css.globalScss.startsWith(config.siteDir)
|
|
323
|
+
? config.css.globalScss
|
|
324
|
+
: join(config.siteDir, config.css.globalScss);
|
|
325
|
+
scssFile = join(basePath, scssPath);
|
|
326
|
+
console.log(
|
|
327
|
+
"[DEBUG CSS] Looking for global SCSS:",
|
|
328
|
+
scssFile,
|
|
329
|
+
"exists:",
|
|
330
|
+
existsSync(scssFile),
|
|
331
|
+
);
|
|
332
|
+
} else {
|
|
333
|
+
console.log("[DEBUG CSS] No config.css.globalScss found");
|
|
334
|
+
}
|
|
335
|
+
} else {
|
|
336
|
+
// Map /foo.css -> siteDir/foo.scss
|
|
337
|
+
const rel = ctx.url.pathname.slice(1);
|
|
338
|
+
const tryPath = join(
|
|
339
|
+
basePath,
|
|
340
|
+
config.siteDir,
|
|
341
|
+
rel.replace(/\.css$/, ".scss"),
|
|
342
|
+
);
|
|
343
|
+
if (existsSync(tryPath)) {
|
|
344
|
+
scssFile = tryPath;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
if (scssFile && existsSync(scssFile)) {
|
|
348
|
+
const compiler = createScssCompiler();
|
|
349
|
+
const result = compiler.compile({
|
|
350
|
+
inputPath: scssFile,
|
|
351
|
+
minified: false,
|
|
352
|
+
sourceMap: true,
|
|
353
|
+
});
|
|
354
|
+
if (result.error) {
|
|
355
|
+
ctx.res.statusCode = 500;
|
|
356
|
+
ctx.res.setHeader("content-type", "text/css");
|
|
357
|
+
ctx.res.end(
|
|
358
|
+
`/* SCSS Error: ${result.error.replace(/\*\//g, "* /")} */ body::before { position:fixed; top:0; left:0; width:100%; content: "SCSS Error: ${result.error
|
|
359
|
+
.replace(/\\/g, "\\\\")
|
|
360
|
+
.replace(
|
|
361
|
+
/"/g,
|
|
362
|
+
'\\"',
|
|
363
|
+
)}"; display: block; background: red; color: white; padding: 1em; z-index:9999; white-space: pre-wrap; }`,
|
|
364
|
+
);
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
ctx.res.statusCode = 200;
|
|
368
|
+
ctx.res.setHeader("content-type", "text/css");
|
|
369
|
+
ctx.res.end(result.css);
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
await next();
|
|
374
|
+
},
|
|
375
|
+
async (ctx, next) => {
|
|
376
|
+
// site assets in dev
|
|
377
|
+
if (mode === "dev") {
|
|
378
|
+
await new Promise((resolve) => {
|
|
379
|
+
serveAssets(ctx.req, ctx.res, () => resolve());
|
|
380
|
+
});
|
|
381
|
+
if (ctx.res.writableEnded || ctx.res.headersSent) return;
|
|
382
|
+
}
|
|
383
|
+
await next();
|
|
384
|
+
},
|
|
385
|
+
async (ctx, next) => {
|
|
386
|
+
// SSR
|
|
387
|
+
if (ctx.req.method !== "GET") return next();
|
|
388
|
+
const m = matchRoute(routes, ctx.url.pathname);
|
|
389
|
+
if (!m) return next();
|
|
390
|
+
const reqHeaders = headersToObject(ctx.req.headers);
|
|
391
|
+
const cookies = parseCookies(ctx.req);
|
|
392
|
+
const query = {};
|
|
393
|
+
for (const [k, v] of ctx.url.searchParams.entries()) query[k] = v;
|
|
394
|
+
try {
|
|
395
|
+
const html = await renderRouteToHtml({
|
|
396
|
+
config,
|
|
397
|
+
route: m.route,
|
|
398
|
+
req: ctx.req,
|
|
399
|
+
res: ctx.res,
|
|
400
|
+
url: ctx.url,
|
|
401
|
+
params: m.params,
|
|
402
|
+
query,
|
|
403
|
+
headers: reqHeaders,
|
|
404
|
+
cookies,
|
|
405
|
+
});
|
|
406
|
+
let finalHtml = html;
|
|
407
|
+
if (mode === "dev") {
|
|
408
|
+
// Inject HMR client
|
|
409
|
+
finalHtml = html.replace(
|
|
410
|
+
"</body>",
|
|
411
|
+
`<script>${HMR_CLIENT_SCRIPT}</script></body>`,
|
|
412
|
+
);
|
|
413
|
+
}
|
|
414
|
+
ctx.res.statusCode = 200;
|
|
415
|
+
ctx.res.setHeader("content-type", "text/html; charset=utf-8");
|
|
416
|
+
ctx.res.end(finalHtml);
|
|
417
|
+
} catch (err) {
|
|
418
|
+
// Middleware may have sent a response (redirect/json)
|
|
419
|
+
if (err.message === "__REDIRECT__" || err.message === "__JSON__") {
|
|
420
|
+
return; // Response already sent
|
|
421
|
+
}
|
|
422
|
+
throw err;
|
|
423
|
+
}
|
|
424
|
+
},
|
|
425
|
+
async (ctx) => {
|
|
426
|
+
ctx.res.statusCode = 404;
|
|
427
|
+
ctx.res.setHeader("content-type", "text/plain; charset=utf-8");
|
|
428
|
+
ctx.res.end("404 Not Found");
|
|
429
|
+
},
|
|
430
|
+
];
|
|
431
|
+
const kernel = new Kernel();
|
|
432
|
+
middlewares.forEach((m) => kernel.use(m));
|
|
433
|
+
return {
|
|
434
|
+
async handle(req, res) {
|
|
435
|
+
await kernel.handle(req, res);
|
|
436
|
+
},
|
|
437
|
+
};
|
|
438
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate the browser-safe hydration runtime code.
|
|
3
|
+
* Uses CDN-hosted Preact (esm.sh) for minimal payload and no bundler overhead.
|
|
4
|
+
* This runtime is injected into the page and provides hydration primitives.
|
|
5
|
+
*
|
|
6
|
+
* Note: In production, consider self-hosting the Preact bundle for better performance
|
|
7
|
+
* and reliability (no external CDN dependency).
|
|
8
|
+
*
|
|
9
|
+
* @returns ES module code string for browser hydration runtime
|
|
10
|
+
*/
|
|
11
|
+
export declare function runtimeHydrateModule(): string;
|
|
12
|
+
/**
|
|
13
|
+
* Clear cached compiled module for a file path.
|
|
14
|
+
* Called when a source file changes during development to ensure fresh compilation
|
|
15
|
+
* on next request.
|
|
16
|
+
*
|
|
17
|
+
* @param filePath - Absolute file path to invalidate
|
|
18
|
+
*/
|
|
19
|
+
export declare function invalidateCache(filePath: string): void;
|
|
20
|
+
/**
|
|
21
|
+
* Build a client-side hydration module for a route.
|
|
22
|
+
* Takes a route file path, extracts the default component export,
|
|
23
|
+
* transpiles to browser-executable JavaScript with Preact imports resolved.
|
|
24
|
+
*
|
|
25
|
+
* How it works:
|
|
26
|
+
* 1. Create a proxy file that re-exports only the default component
|
|
27
|
+
* This allows tree-shaking to remove server-only exports (loader, middleware, etc.)
|
|
28
|
+
* 2. Use esbuild buildSync to transpile and bundle with Preact
|
|
29
|
+
* 3. Cache the result with ETag for HTTP conditional requests
|
|
30
|
+
* 4. Return JS code or fallback to empty component on error
|
|
31
|
+
*
|
|
32
|
+
* Transpilation:
|
|
33
|
+
* - Format: ESM (for client-side import)
|
|
34
|
+
* - Platform: browser (not Node.js)
|
|
35
|
+
* - JSX: Automatic via Preact JSX runtime
|
|
36
|
+
* - Sourcemap: Inline for debugging in browser DevTools
|
|
37
|
+
* - External: Preact and runtime libs (assumed available in browser)
|
|
38
|
+
*
|
|
39
|
+
* Caching:
|
|
40
|
+
* - Cache is per-file-path; invalidated via invalidateCache() when file changes
|
|
41
|
+
* - ETag allows HTTP 304 Not Modified responses
|
|
42
|
+
* - Development mode trusts explicit invalidation (file watcher triggers it)
|
|
43
|
+
*
|
|
44
|
+
* Error handling:
|
|
45
|
+
* - Failed builds return empty Page component (graceful degradation)
|
|
46
|
+
* - Errors are logged but don't stop request
|
|
47
|
+
*
|
|
48
|
+
* @param routeIdOrPath - File path to route component (e.g., "./routes/index.tsx")
|
|
49
|
+
* Note: routeId support for future config-based resolution
|
|
50
|
+
* @returns ES module JavaScript code (browser-executable)
|
|
51
|
+
*/
|
|
52
|
+
export declare function buildHydrationModule(routeIdOrPath: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* Retrieve the ETag (cache hash) for a compiled hydration module.
|
|
55
|
+
* Used for HTTP conditional requests (If-None-Match, 304 Not Modified).
|
|
56
|
+
*
|
|
57
|
+
* @param filePath - Route file path
|
|
58
|
+
* @returns ETag hash string or null if not cached
|
|
59
|
+
*/
|
|
60
|
+
export declare function getHydrationEtag(filePath: string): string | null;
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { buildSync } from "esbuild";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
|
+
import { basename, dirname } from "node:path";
|
|
5
|
+
/**
|
|
6
|
+
* Cache for compiled hydration modules.
|
|
7
|
+
* Stores transpiled JS code and computed ETag hash per source file path.
|
|
8
|
+
* Cache is invalidated when files change (via invalidateCache).
|
|
9
|
+
*/
|
|
10
|
+
const cache = new Map();
|
|
11
|
+
/**
|
|
12
|
+
* Compute SHA-1 hash (ETag) for a string.
|
|
13
|
+
* Used for HTTP cache validation and deduplicating compiled output.
|
|
14
|
+
*
|
|
15
|
+
* @param s - String to hash
|
|
16
|
+
* @returns Hex-encoded SHA-1 hash
|
|
17
|
+
*/
|
|
18
|
+
function etagOf(s) {
|
|
19
|
+
return createHash("sha1").update(s).digest("hex");
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Generate the browser-safe hydration runtime code.
|
|
23
|
+
* Uses CDN-hosted Preact (esm.sh) for minimal payload and no bundler overhead.
|
|
24
|
+
* This runtime is injected into the page and provides hydration primitives.
|
|
25
|
+
*
|
|
26
|
+
* Note: In production, consider self-hosting the Preact bundle for better performance
|
|
27
|
+
* and reliability (no external CDN dependency).
|
|
28
|
+
*
|
|
29
|
+
* @returns ES module code string for browser hydration runtime
|
|
30
|
+
*/
|
|
31
|
+
export function runtimeHydrateModule() {
|
|
32
|
+
// Browser-safe runtime (ESM) using CDN preact (fast + zero bundler)
|
|
33
|
+
return `
|
|
34
|
+
import { hydrate } from "https://esm.sh/preact@10.25.4";
|
|
35
|
+
import { h } from "https://esm.sh/preact@10.25.4";
|
|
36
|
+
|
|
37
|
+
function getFrameworkData() {
|
|
38
|
+
const el = document.getElementById("__FRAMEWORK_DATA__");
|
|
39
|
+
if (!el) return null;
|
|
40
|
+
try { return JSON.parse(el.textContent || "null"); } catch { return null; }
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export async function hydrateClient(entryPath) {
|
|
44
|
+
const data = getFrameworkData();
|
|
45
|
+
const mod = await import(entryPath);
|
|
46
|
+
const Page = mod.default;
|
|
47
|
+
const app = h(Page, {
|
|
48
|
+
data: data?.data ?? null,
|
|
49
|
+
params: data?.params ?? {},
|
|
50
|
+
query: data?.query ?? {}
|
|
51
|
+
});
|
|
52
|
+
const root = document.getElementById("app");
|
|
53
|
+
if (!root) return;
|
|
54
|
+
hydrate(app, root);
|
|
55
|
+
}
|
|
56
|
+
`;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Clear cached compiled module for a file path.
|
|
60
|
+
* Called when a source file changes during development to ensure fresh compilation
|
|
61
|
+
* on next request.
|
|
62
|
+
*
|
|
63
|
+
* @param filePath - Absolute file path to invalidate
|
|
64
|
+
*/
|
|
65
|
+
export function invalidateCache(filePath) {
|
|
66
|
+
cache.delete(filePath);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Build a client-side hydration module for a route.
|
|
70
|
+
* Takes a route file path, extracts the default component export,
|
|
71
|
+
* transpiles to browser-executable JavaScript with Preact imports resolved.
|
|
72
|
+
*
|
|
73
|
+
* How it works:
|
|
74
|
+
* 1. Create a proxy file that re-exports only the default component
|
|
75
|
+
* This allows tree-shaking to remove server-only exports (loader, middleware, etc.)
|
|
76
|
+
* 2. Use esbuild buildSync to transpile and bundle with Preact
|
|
77
|
+
* 3. Cache the result with ETag for HTTP conditional requests
|
|
78
|
+
* 4. Return JS code or fallback to empty component on error
|
|
79
|
+
*
|
|
80
|
+
* Transpilation:
|
|
81
|
+
* - Format: ESM (for client-side import)
|
|
82
|
+
* - Platform: browser (not Node.js)
|
|
83
|
+
* - JSX: Automatic via Preact JSX runtime
|
|
84
|
+
* - Sourcemap: Inline for debugging in browser DevTools
|
|
85
|
+
* - External: Preact and runtime libs (assumed available in browser)
|
|
86
|
+
*
|
|
87
|
+
* Caching:
|
|
88
|
+
* - Cache is per-file-path; invalidated via invalidateCache() when file changes
|
|
89
|
+
* - ETag allows HTTP 304 Not Modified responses
|
|
90
|
+
* - Development mode trusts explicit invalidation (file watcher triggers it)
|
|
91
|
+
*
|
|
92
|
+
* Error handling:
|
|
93
|
+
* - Failed builds return empty Page component (graceful degradation)
|
|
94
|
+
* - Errors are logged but don't stop request
|
|
95
|
+
*
|
|
96
|
+
* @param routeIdOrPath - File path to route component (e.g., "./routes/index.tsx")
|
|
97
|
+
* Note: routeId support for future config-based resolution
|
|
98
|
+
* @returns ES module JavaScript code (browser-executable)
|
|
99
|
+
*/
|
|
100
|
+
export function buildHydrationModule(routeIdOrPath) {
|
|
101
|
+
// routeIdOrPath is a file path; future versions may support route IDs via config
|
|
102
|
+
let filePath = routeIdOrPath;
|
|
103
|
+
// Return fallback if file doesn't exist
|
|
104
|
+
if (!existsSync(filePath)) {
|
|
105
|
+
return `export default function Page(){ return null }`;
|
|
106
|
+
}
|
|
107
|
+
const key = filePath;
|
|
108
|
+
// Return cached result if available (invalidated by invalidateCache)
|
|
109
|
+
if (cache.has(key)) {
|
|
110
|
+
return cache.get(key).js;
|
|
111
|
+
}
|
|
112
|
+
// Create proxy file to enable tree-shaking of server-only exports (loader, middleware, etc.)
|
|
113
|
+
// The proxy re-exports only the default component, letting esbuild eliminate other exports
|
|
114
|
+
const fileName = basename(filePath);
|
|
115
|
+
const dir = dirname(filePath);
|
|
116
|
+
const proxyContent = `export { default } from "./${fileName}";`;
|
|
117
|
+
try {
|
|
118
|
+
// Transpile proxy with esbuild for browser-safe JavaScript
|
|
119
|
+
const jsOutput = buildSync({
|
|
120
|
+
stdin: {
|
|
121
|
+
contents: proxyContent,
|
|
122
|
+
resolveDir: dir, // Resolve imports relative to route directory
|
|
123
|
+
sourcefile: "hydration-proxy.tsx",
|
|
124
|
+
loader: "tsx", // Support TypeScript and JSX
|
|
125
|
+
},
|
|
126
|
+
format: "esm",
|
|
127
|
+
platform: "browser", // Browser-specific optimizations
|
|
128
|
+
bundle: true, // Inline dependencies (except external)
|
|
129
|
+
write: false, // Return code instead of writing file
|
|
130
|
+
sourcemap: "inline", // Include source map for debugging
|
|
131
|
+
jsx: "automatic", // Automatic JSX transform (Preact)
|
|
132
|
+
jsxImportSource: "preact",
|
|
133
|
+
define: {
|
|
134
|
+
"process.env.NODE_ENV": JSON.stringify("development"),
|
|
135
|
+
},
|
|
136
|
+
// Preact and runtime must be available in browser (loaded separately)
|
|
137
|
+
external: [
|
|
138
|
+
"preact",
|
|
139
|
+
"preact/hooks",
|
|
140
|
+
"preact/jsx-runtime",
|
|
141
|
+
"preact-render-to-string",
|
|
142
|
+
],
|
|
143
|
+
// TODO: Add plugin support for Vue/Svelte components
|
|
144
|
+
// plugins: [vueEsbuildPlugin(), svelteEsbuildPlugin()],
|
|
145
|
+
}).outputFiles?.[0]?.text;
|
|
146
|
+
if (!jsOutput) {
|
|
147
|
+
console.error("[HYDRATION] Failed to build module for:", filePath);
|
|
148
|
+
return `export default function Page(){ return null }`;
|
|
149
|
+
}
|
|
150
|
+
// Cache result with ETag
|
|
151
|
+
const etag = etagOf(jsOutput);
|
|
152
|
+
cache.set(key, { js: jsOutput, etag });
|
|
153
|
+
return jsOutput;
|
|
154
|
+
} catch (err) {
|
|
155
|
+
console.error("[HYDRATION] Build error for", filePath, ":", err);
|
|
156
|
+
return `export default function Page(){ return null }`;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Retrieve the ETag (cache hash) for a compiled hydration module.
|
|
161
|
+
* Used for HTTP conditional requests (If-None-Match, 304 Not Modified).
|
|
162
|
+
*
|
|
163
|
+
* @param filePath - Route file path
|
|
164
|
+
* @returns ETag hash string or null if not cached
|
|
165
|
+
*/
|
|
166
|
+
export function getHydrationEtag(filePath) {
|
|
167
|
+
const v = cache.get(filePath);
|
|
168
|
+
return v?.etag ?? null;
|
|
169
|
+
}
|