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.
- package/dist/colors.js +0 -17
- package/dist/create.js +5 -17
- package/dist/generator.js +14 -31
- package/dist/index.js +6 -1
- package/package.json +1 -1
- 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).js +9 -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.js +57 -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/{static → ssr-isr}/lib/build/build.d.ts +1 -1
- 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/ssr-isr/lib/build-tools/build-site.js +36 -0
- package/templates/ssr-isr/lib/cache/index.js +10 -0
- package/templates/ssr-isr/lib/cache/memory.js +40 -0
- package/templates/ssr-isr/lib/cache/redis.js +61 -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.js +44 -0
- package/templates/ssr-isr/lib/compilers/vue.js +90 -0
- package/templates/ssr-isr/lib/core/http.js +71 -0
- package/templates/ssr-isr/lib/core/middleware-hooks.js +97 -0
- package/templates/ssr-isr/lib/core/paths.js +39 -0
- package/templates/ssr-isr/lib/core/routes/match.js +47 -0
- package/templates/ssr-isr/lib/core/routes/scan.js +190 -0
- package/templates/ssr-isr/lib/core/types.js +1 -0
- package/templates/ssr-isr/lib/css/compiler.js +74 -0
- package/templates/ssr-isr/lib/db/connector.js +42 -0
- package/templates/ssr-isr/lib/db/drivers/jdb.js +44 -0
- package/templates/ssr-isr/lib/db/drivers/sql.js +182 -0
- package/templates/ssr-isr/lib/db/index.js +48 -0
- package/templates/ssr-isr/lib/db/types.js +1 -0
- package/templates/ssr-isr/lib/graphql/index.js +52 -0
- package/templates/ssr-isr/lib/graphql/resolvers.js +25 -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.js +15 -0
- package/templates/ssr-isr/lib/import/jen-import.js +161 -0
- package/templates/ssr-isr/lib/index.js +116 -0
- package/templates/ssr-isr/lib/jdb/engine.js +275 -0
- package/templates/ssr-isr/lib/jdb/index.js +34 -0
- package/templates/ssr-isr/lib/jdb/types.js +1 -0
- package/templates/ssr-isr/lib/jdb/utils.js +176 -0
- package/templates/{static → ssr-isr}/lib/middleware/builtins/body-parser.js +0 -17
- package/templates/ssr-isr/lib/middleware/builtins/cors.js +54 -0
- package/templates/{static → ssr-isr}/lib/middleware/builtins/logger.js +0 -17
- package/templates/{static → ssr-isr}/lib/middleware/builtins/rate-limit.js +0 -17
- package/templates/{static → ssr-isr}/lib/middleware/builtins/request-id.js +0 -17
- package/templates/{static → ssr-isr}/lib/middleware/builtins/security-headers.js +0 -17
- package/templates/ssr-isr/lib/middleware/context.js +124 -0
- package/templates/{static → ssr-isr}/lib/middleware/decorators.js +0 -17
- package/templates/{static → ssr-isr}/lib/middleware/errors/handler.js +0 -17
- package/templates/ssr-isr/lib/middleware/errors/http-error.js +10 -0
- package/templates/ssr-isr/lib/middleware/kernel.js +85 -0
- package/templates/ssr-isr/lib/middleware/pipeline.js +148 -0
- package/templates/ssr-isr/lib/middleware/registry.js +85 -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/{static → ssr-isr}/lib/native/bundle.js +0 -17
- package/templates/{static → ssr-isr}/lib/native/dev-server.js +0 -17
- package/templates/{static → ssr-isr}/lib/native/index.js +0 -17
- package/templates/{static → ssr-isr}/lib/native/optimizer.js +0 -17
- package/templates/ssr-isr/lib/native/style-compiler.js +19 -0
- package/templates/ssr-isr/lib/plugin/loader.js +36 -0
- package/templates/ssr-isr/lib/runtime/client-runtime.js +25 -0
- package/templates/ssr-isr/lib/runtime/hmr.js +59 -0
- package/templates/ssr-isr/lib/runtime/hydrate.js +55 -0
- package/templates/ssr-isr/lib/runtime/island-hydration-client.js +146 -0
- package/templates/ssr-isr/lib/runtime/islands.js +110 -0
- package/templates/ssr-isr/lib/runtime/render.js +244 -0
- package/templates/ssr-isr/lib/server/api-routes.js +237 -0
- package/templates/ssr-isr/lib/server/api.js +108 -0
- package/templates/ssr-isr/lib/server/app.js +438 -0
- package/templates/ssr-isr/lib/server/runtimeServe.js +169 -0
- package/templates/ssr-isr/lib/server/ssr.js +202 -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/build.js +30 -18
- package/templates/static/jen.config.ts +0 -18
- package/templates/static/jenjs.d.ts +0 -18
- package/templates/static/lib/api/(hello).js +0 -17
- 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 +3 -16
- package/templates/static/lib/auth/index.js +0 -17
- package/templates/static/lib/auth/jwt.js +0 -17
- package/templates/static/lib/auth/session.js +0 -17
- package/templates/static/lib/build/asset-hashing.js +44 -36
- package/templates/static/lib/build/asset-manifest.js +16 -33
- package/templates/static/lib/build/build.js +270 -125
- 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 +40 -59
- package/templates/static/lib/build/page-renderer.js +23 -40
- package/templates/static/lib/build/production-build.js +9 -26
- 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 +100 -106
- package/templates/static/lib/build/vercel-output.js +298 -0
- package/templates/static/lib/build-tools/build-site.js +0 -17
- package/templates/static/lib/cache/index.js +0 -17
- package/templates/static/lib/cache/memory.js +0 -17
- package/templates/static/lib/cache/redis.js +0 -17
- package/templates/static/lib/cli/banner.js +0 -17
- package/templates/static/lib/cli/templates/ssg/jen.config.js +0 -17
- package/templates/static/lib/cli/templates/ssr/jen.config.js +0 -17
- 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 +0 -17
- package/templates/static/lib/compilers/svelte.js +0 -17
- package/templates/static/lib/compilers/vue.js +0 -17
- 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 +0 -17
- 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 +0 -17
- package/templates/static/lib/core/paths.js +0 -17
- 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 +89 -17
- 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 +0 -17
- package/templates/static/lib/core/types.js +0 -17
- package/templates/static/lib/css/compiler.js +1 -18
- 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 +0 -17
- package/templates/static/lib/db/drivers/jdb.js +0 -17
- package/templates/static/lib/db/drivers/sql.js +0 -17
- package/templates/static/lib/db/index.js +0 -17
- 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 +1 -18
- package/templates/static/lib/graphql/resolvers.js +20 -13
- package/templates/static/lib/graphql/schema.js +0 -17
- package/templates/static/lib/i18n/index.js +7 -19
- package/templates/static/lib/import/jen-import.js +1 -18
- package/templates/static/lib/index.js +79 -125
- package/templates/static/lib/jdb/engine.js +0 -17
- package/templates/static/lib/jdb/index.js +1 -18
- package/templates/static/lib/jdb/types.js +0 -17
- package/templates/static/lib/jdb/utils.js +0 -17
- package/templates/static/lib/middleware/builtins/cors.js +3 -16
- package/templates/static/lib/middleware/context.js +0 -17
- package/templates/static/lib/middleware/kernel.js +117 -25
- package/templates/static/lib/middleware/pipeline.js +0 -17
- package/templates/static/lib/middleware/registry.js +0 -17
- package/templates/static/lib/middleware/response.js +0 -17
- 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 +0 -17
- 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 +0 -17
- package/templates/static/lib/runtime/hmr.js +0 -17
- package/templates/static/lib/runtime/hydrate.js +0 -17
- package/templates/static/lib/runtime/island-hydration-client.js +0 -17
- package/templates/static/lib/runtime/islands.js +0 -17
- package/templates/static/lib/runtime/render.js +208 -50
- 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 +153 -43
- package/templates/static/lib/server/api.js +0 -17
- package/templates/static/lib/server/app.js +539 -223
- package/templates/static/lib/server/isr.js +365 -0
- package/templates/static/lib/server/runtimeServe.js +31 -24
- package/templates/static/lib/server/ssr.js +98 -22
- 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 +19 -20
- 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/LICENSE +21 -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 +22 -22
- package/templates/static/site/(home).tsx +0 -18
- package/templates/static/tsconfig.json +5 -1
- package/templates/static/.esbuild/jen.config.js +0 -19
- 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/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/middleware/errors/http-error.js +0 -27
- package/templates/static/lib/middleware/types.js +0 -18
- package/templates/static/lib/middleware/utils/matcher.js +0 -30
- package/templates/static/lib/native/style-compiler.js +0 -36
- /package/templates/{static → ssr-isr}/lib/api/(hello).d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/auth/cookie-utils.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/auth/index.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/auth/jwt.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/auth/session.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/build-tools/build-site.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/cache/index.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/cache/memory.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/cache/redis.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/cli/banner.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 → ssr-isr}/lib/compilers/svelte.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/compilers/vue.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/core/config.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/core/http.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/core/middleware-hooks.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/core/paths.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/core/routes/match.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/core/routes/scan.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/core/types.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/css/compiler.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/db/connector.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/db/drivers/jdb.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/db/drivers/sql.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/db/index.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/db/types.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/graphql/index.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/graphql/resolvers.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/graphql/schema.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/i18n/index.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/import/jen-import.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/index.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/jdb/engine.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/jdb/index.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/jdb/types.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/jdb/utils.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/builtins/body-parser.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/builtins/cors.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/builtins/logger.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/builtins/rate-limit.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/builtins/request-id.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/builtins/security-headers.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/context.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/decorators.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/errors/handler.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/errors/http-error.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/kernel.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/pipeline.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/registry.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/response.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/middleware/utils/matcher.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/native/bundle.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/native/dev-server.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/native/index.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/native/optimizer.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/native/style-compiler.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/plugin/loader.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/runtime/client-runtime.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/runtime/hmr.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/runtime/hydrate.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/runtime/island-hydration-client.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/runtime/islands.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/runtime/render.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/server/api-routes.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/server/api.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/server/app.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/server/runtimeServe.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/server/ssr.d.ts +0 -0
- /package/templates/{static → ssr-isr}/lib/shared/log.d.ts +0 -0
|
@@ -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 '
|
|
16
|
+
* import { runQuery } from '../graphql';
|
|
34
17
|
*
|
|
35
18
|
* export default {
|
|
36
19
|
* handler: async (ctx) => {
|
|
@@ -1,19 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
*
|
|
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
|
-
*
|
|
6
|
-
*
|
|
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
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* GNU General Public License for more details.
|
|
10
|
+
* @example
|
|
11
|
+
* // Custom resolver with database integration:
|
|
12
|
+
* import { db } from '../jdb';
|
|
14
13
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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 '
|
|
156
|
+
* import { jen } from '../import/jen-import';
|
|
174
157
|
* const Component = await jen.import('./Component.vue');
|
|
175
158
|
*/
|
|
176
159
|
export const jen = {
|