create-jen-app 1.2.2 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/index.js +1 -6
- package/package.json +2 -2
- package/templates/static/.esbuild/jen.config.js +18 -0
- package/templates/static/README.md +63 -67
- package/templates/static/build.js +4 -6
- package/templates/static/jen.config.ts +3 -5
- package/templates/static/jenjs.d.ts +3 -3
- package/templates/static/lib/api/(hello).d.ts +5 -5
- package/templates/static/lib/api/(hello).js +7 -7
- package/templates/static/lib/auth/cookie-utils.d.ts +20 -11
- package/templates/static/lib/auth/cookie-utils.js +66 -69
- package/templates/static/lib/auth/jwt.d.ts +28 -0
- package/templates/static/lib/auth/jwt.js +50 -6
- package/templates/static/lib/auth/session.d.ts +34 -34
- package/templates/static/lib/auth/session.js +79 -81
- package/templates/static/lib/build/asset-hashing.js +4 -4
- package/templates/static/lib/build/asset-manifest.js +4 -4
- package/templates/static/lib/build/build.d.ts +20 -0
- package/templates/static/lib/build/build.js +43 -6
- package/templates/static/lib/build/island-hydration.js +2 -2
- package/templates/static/lib/build/minifier.js +12 -12
- package/templates/static/lib/build/page-renderer.d.ts +2 -2
- package/templates/static/lib/build/page-renderer.js +3 -3
- package/templates/static/lib/build/production-build.d.ts +1 -1
- package/templates/static/lib/build/production-build.js +4 -4
- package/templates/static/lib/build/ssg-pipeline.d.ts +1 -1
- package/templates/static/lib/build/ssg-pipeline.js +19 -19
- package/templates/static/lib/build-tools/build-site.d.ts +3 -3
- package/templates/static/lib/build-tools/build-site.js +27 -30
- package/templates/static/lib/cache/index.d.ts +8 -0
- package/templates/static/lib/cache/index.js +8 -0
- package/templates/static/lib/cache/memory.d.ts +31 -4
- package/templates/static/lib/cache/memory.js +38 -12
- package/templates/static/lib/cache/redis.d.ts +43 -4
- package/templates/static/lib/cache/redis.js +59 -14
- package/templates/static/lib/cli/banner.d.ts +5 -1
- package/templates/static/lib/cli/banner.js +18 -14
- package/templates/static/lib/cli/templates/ssg/jen.config.js +29 -29
- package/templates/static/lib/cli/templates/ssg/site/index.js +6 -1
- package/templates/static/lib/cli/templates/ssr/jen.config.js +29 -29
- package/templates/static/lib/cli/templates/ssr/site/index.js +6 -1
- package/templates/static/lib/compilers/esbuild-plugins.js +96 -98
- package/templates/static/lib/compilers/svelte.d.ts +10 -10
- package/templates/static/lib/compilers/svelte.js +31 -31
- package/templates/static/lib/compilers/vue.d.ts +8 -8
- package/templates/static/lib/compilers/vue.js +76 -68
- package/templates/static/lib/core/config.d.ts +217 -50
- package/templates/static/lib/core/http.d.ts +55 -2
- package/templates/static/lib/core/http.js +66 -20
- package/templates/static/lib/core/middleware-hooks.d.ts +204 -31
- package/templates/static/lib/core/middleware-hooks.js +86 -41
- package/templates/static/lib/core/paths.d.ts +42 -4
- package/templates/static/lib/core/paths.js +34 -2
- package/templates/static/lib/core/routes/match.d.ts +51 -3
- package/templates/static/lib/core/routes/match.js +44 -11
- package/templates/static/lib/core/routes/scan.d.ts +49 -5
- package/templates/static/lib/core/routes/scan.js +174 -115
- package/templates/static/lib/core/types.d.ts +148 -13
- package/templates/static/lib/css/compiler.d.ts +16 -13
- package/templates/static/lib/css/compiler.js +62 -58
- package/templates/static/lib/db/connector.d.ts +27 -1
- package/templates/static/lib/db/connector.js +37 -11
- package/templates/static/lib/db/drivers/jdb.d.ts +13 -9
- package/templates/static/lib/db/drivers/jdb.js +41 -39
- package/templates/static/lib/db/drivers/sql.d.ts +16 -12
- package/templates/static/lib/db/drivers/sql.js +152 -135
- package/templates/static/lib/db/index.d.ts +20 -12
- package/templates/static/lib/db/index.js +41 -41
- package/templates/static/lib/db/types.d.ts +22 -18
- package/templates/static/lib/graphql/index.d.ts +47 -0
- package/templates/static/lib/graphql/index.js +50 -3
- package/templates/static/lib/graphql/resolvers.d.ts +51 -11
- package/templates/static/lib/graphql/resolvers.js +22 -6
- package/templates/static/lib/graphql/schema.d.ts +34 -0
- package/templates/static/lib/graphql/schema.js +34 -2
- package/templates/static/lib/i18n/en.json +2 -2
- package/templates/static/lib/i18n/es.json +2 -2
- package/templates/static/lib/i18n/index.d.ts +4 -4
- package/templates/static/lib/i18n/index.js +10 -10
- package/templates/static/lib/import/jen-import.d.ts +39 -10
- package/templates/static/lib/import/jen-import.js +130 -80
- package/templates/static/lib/index.d.ts +42 -11
- package/templates/static/lib/index.js +21 -8
- package/templates/static/lib/jdb/engine.d.ts +35 -6
- package/templates/static/lib/jdb/engine.js +260 -144
- package/templates/static/lib/jdb/index.d.ts +32 -0
- package/templates/static/lib/jdb/index.js +32 -0
- package/templates/static/lib/jdb/types.d.ts +212 -30
- package/templates/static/lib/jdb/utils.d.ts +60 -0
- package/templates/static/lib/jdb/utils.js +159 -107
- package/templates/static/lib/middleware/builtins/body-parser.d.ts +15 -0
- package/templates/static/lib/middleware/builtins/body-parser.js +53 -35
- package/templates/static/lib/middleware/builtins/cors.d.ts +8 -6
- package/templates/static/lib/middleware/builtins/cors.js +52 -48
- package/templates/static/lib/middleware/builtins/logger.d.ts +18 -0
- package/templates/static/lib/middleware/builtins/logger.js +31 -13
- package/templates/static/lib/middleware/builtins/rate-limit.d.ts +19 -2
- package/templates/static/lib/middleware/builtins/rate-limit.js +75 -55
- package/templates/static/lib/middleware/builtins/request-id.d.ts +18 -0
- package/templates/static/lib/middleware/builtins/request-id.js +26 -5
- package/templates/static/lib/middleware/builtins/security-headers.d.ts +18 -0
- package/templates/static/lib/middleware/builtins/security-headers.js +51 -20
- package/templates/static/lib/middleware/context.d.ts +102 -15
- package/templates/static/lib/middleware/context.js +121 -30
- package/templates/static/lib/middleware/decorators.d.ts +18 -1
- package/templates/static/lib/middleware/decorators.js +83 -34
- package/templates/static/lib/middleware/errors/handler.js +22 -24
- package/templates/static/lib/middleware/errors/http-error.d.ts +3 -3
- package/templates/static/lib/middleware/errors/http-error.js +8 -8
- package/templates/static/lib/middleware/kernel.d.ts +67 -4
- package/templates/static/lib/middleware/kernel.js +80 -17
- package/templates/static/lib/middleware/pipeline.d.ts +51 -2
- package/templates/static/lib/middleware/pipeline.js +143 -45
- package/templates/static/lib/middleware/registry.d.ts +67 -8
- package/templates/static/lib/middleware/registry.js +83 -22
- package/templates/static/lib/middleware/response.d.ts +73 -11
- package/templates/static/lib/middleware/response.js +104 -40
- package/templates/static/lib/middleware/utils/matcher.js +11 -12
- package/templates/static/lib/native/bundle.d.ts +13 -8
- package/templates/static/lib/native/bundle.js +14 -14
- package/templates/static/lib/native/dev-server.d.ts +11 -4
- package/templates/static/lib/native/dev-server.js +14 -12
- package/templates/static/lib/native/index.d.ts +20 -20
- package/templates/static/lib/native/index.js +23 -21
- package/templates/static/lib/native/optimizer.d.ts +14 -10
- package/templates/static/lib/native/optimizer.js +14 -14
- package/templates/static/lib/native/style-compiler.d.ts +17 -8
- package/templates/static/lib/native/style-compiler.js +9 -9
- package/templates/static/lib/plugin/loader.d.ts +8 -6
- package/templates/static/lib/plugin/loader.js +25 -31
- package/templates/static/lib/runtime/client-runtime.d.ts +15 -0
- package/templates/static/lib/runtime/client-runtime.js +23 -9
- package/templates/static/lib/runtime/hmr.d.ts +23 -1
- package/templates/static/lib/runtime/hmr.js +27 -5
- package/templates/static/lib/runtime/hydrate.d.ts +17 -0
- package/templates/static/lib/runtime/hydrate.js +48 -21
- package/templates/static/lib/runtime/island-hydration-client.d.ts +5 -2
- package/templates/static/lib/runtime/island-hydration-client.js +122 -91
- package/templates/static/lib/runtime/islands.d.ts +82 -27
- package/templates/static/lib/runtime/islands.js +92 -54
- package/templates/static/lib/runtime/render.d.ts +36 -9
- package/templates/static/lib/runtime/render.js +208 -130
- package/templates/static/lib/server/api-routes.d.ts +96 -28
- package/templates/static/lib/server/api-routes.js +214 -156
- package/templates/static/lib/server/api.d.ts +3 -3
- package/templates/static/lib/server/api.js +93 -92
- package/templates/static/lib/server/app.d.ts +37 -3
- package/templates/static/lib/server/app.js +328 -254
- package/templates/static/lib/server/runtimeServe.d.ts +56 -0
- package/templates/static/lib/server/runtimeServe.js +130 -69
- package/templates/static/lib/server/ssr.d.ts +161 -0
- package/templates/static/lib/server/ssr.js +219 -0
- package/templates/static/lib/shared/log.d.ts +47 -3
- package/templates/static/lib/shared/log.js +60 -10
- package/templates/static/server.js +4 -6
- package/templates/static/site/(home).tsx +30 -12
- package/templates/static/site/styles/global.scss +89 -78
- package/templates/static/tsconfig.json +39 -39
- 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/LICENSE +0 -21
- 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
|
@@ -1,44 +1,112 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
2
|
/**
|
|
3
|
-
* API route handler context.
|
|
3
|
+
* API route handler execution context.
|
|
4
|
+
* Contains request data and response objects passed to all API handler functions.
|
|
4
5
|
*/
|
|
5
6
|
export interface ApiRouteContext {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
/** Node.js IncomingMessage with raw request properties. */
|
|
8
|
+
req: IncomingMessage;
|
|
9
|
+
/** Node.js ServerResponse for writing response. */
|
|
10
|
+
res: ServerResponse;
|
|
11
|
+
/** Request URL object with pathname, search, query parameters. */
|
|
12
|
+
url: URL;
|
|
13
|
+
/** HTTP method in uppercase (GET, POST, PUT, DELETE, PATCH, etc.). */
|
|
14
|
+
method: string;
|
|
15
|
+
/** Query string parameters parsed from URL (?key=value). */
|
|
16
|
+
query: Record<string, string>;
|
|
17
|
+
/** Parsed request body (JSON if Content-Type is application/json, else raw string). */
|
|
18
|
+
body: any;
|
|
19
|
+
/** Route path parameters extracted from dynamic segments (e.g., [id], [slug]). */
|
|
20
|
+
params: Record<string, string>;
|
|
13
21
|
}
|
|
14
22
|
/**
|
|
15
|
-
* API handler function.
|
|
16
|
-
*
|
|
23
|
+
* API handler function executed for a specific HTTP method.
|
|
24
|
+
* Receives context with request data and response object.
|
|
25
|
+
*
|
|
26
|
+
* Return value is automatically serialized:
|
|
27
|
+
* - Response: Sent as-is with status and headers
|
|
28
|
+
* - string: Sent as text/plain; charset=utf-8
|
|
29
|
+
* - object: Sent as application/json (JSON.stringify'd)
|
|
30
|
+
* - null: Sent as JSON null
|
|
31
|
+
*
|
|
32
|
+
* Handler can also manually set response (res.write/res.end) and return null;
|
|
33
|
+
* the framework will not double-send if res.writableEnded is true.
|
|
34
|
+
*
|
|
35
|
+
* @param ctx - Execution context with request and response objects
|
|
36
|
+
* @returns Result value or promise resolving to result
|
|
17
37
|
*/
|
|
18
|
-
export type ApiHandler = (
|
|
38
|
+
export type ApiHandler = (
|
|
39
|
+
ctx: ApiRouteContext,
|
|
40
|
+
) =>
|
|
41
|
+
| Promise<Response | string | Record<string, any> | null>
|
|
42
|
+
| Response
|
|
43
|
+
| string
|
|
44
|
+
| Record<string, any>
|
|
45
|
+
| null;
|
|
19
46
|
/**
|
|
20
|
-
* API route module.
|
|
21
|
-
*
|
|
47
|
+
* API route module interface.
|
|
48
|
+
* Exported from api/*.ts files as named exports for each HTTP method.
|
|
49
|
+
*
|
|
50
|
+
* Example api/users/[id].ts:
|
|
51
|
+
* export const GET = async (ctx) => {
|
|
52
|
+
* return { userId: ctx.params.id, ...userData };
|
|
53
|
+
* };
|
|
54
|
+
* export const DELETE = async (ctx) => {
|
|
55
|
+
* deleteUser(ctx.params.id);
|
|
56
|
+
* return { status: "deleted" };
|
|
57
|
+
* };
|
|
58
|
+
*
|
|
59
|
+
* Supported methods:
|
|
60
|
+
* - GET: Retrieve data
|
|
61
|
+
* - POST: Create new resource
|
|
62
|
+
* - PUT: Replace resource
|
|
63
|
+
* - DELETE: Remove resource
|
|
64
|
+
* - PATCH: Partial update
|
|
65
|
+
* - HEAD: Like GET but no body
|
|
66
|
+
* - OPTIONS: Describe available methods
|
|
22
67
|
*/
|
|
23
68
|
export interface ApiRouteModule {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
69
|
+
GET?: ApiHandler;
|
|
70
|
+
POST?: ApiHandler;
|
|
71
|
+
PUT?: ApiHandler;
|
|
72
|
+
DELETE?: ApiHandler;
|
|
73
|
+
PATCH?: ApiHandler;
|
|
74
|
+
HEAD?: ApiHandler;
|
|
75
|
+
OPTIONS?: ApiHandler;
|
|
31
76
|
}
|
|
32
77
|
/**
|
|
33
|
-
*
|
|
34
|
-
* Returns true if handled (success or error),
|
|
78
|
+
* Attempt to route and handle an API request.
|
|
79
|
+
* Returns true if the request was handled (success or error response sent),
|
|
80
|
+
* false if no matching API route exists (caller should try next handler).
|
|
81
|
+
*
|
|
82
|
+
* Routing:
|
|
83
|
+
* - /api/endpoint → site/api/endpoint.ts
|
|
84
|
+
* - /api/users/123 → site/api/users/[id].ts (dynamic params supported)
|
|
85
|
+
* - /api/ (no segments) → 404
|
|
86
|
+
*
|
|
87
|
+
* Resolution order:
|
|
88
|
+
* 1. Try exact file match (e.g., /api/hello → api/hello.ts)
|
|
89
|
+
* 2. Try dynamic route match (e.g., /api/123 → api/[id].ts)
|
|
90
|
+
*
|
|
91
|
+
* Process:
|
|
92
|
+
* 1. Validate request starts with /api/
|
|
93
|
+
* 2. Resolve route file (exact or dynamic match)
|
|
94
|
+
* 3. Transpile if TypeScript
|
|
95
|
+
* 4. Load module and find handler for HTTP method
|
|
96
|
+
* 5. Parse request body
|
|
97
|
+
* 6. Call handler with context
|
|
98
|
+
* 7. Serialize response (Response, string, or object)
|
|
99
|
+
*
|
|
100
|
+
* All errors send JSON response with error message.
|
|
101
|
+
* HTTP 405 (Method Not Allowed) if method handler not exported.
|
|
102
|
+
* HTTP 404 if no matching route file.
|
|
103
|
+
* HTTP 500 if handler throws or transpilation fails.
|
|
35
104
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* /api/users/123 → site/api/users/[id].ts
|
|
105
|
+
* @param opts - Options containing request, response, and site directory
|
|
106
|
+
* @returns true if handled, false if no API route found
|
|
39
107
|
*/
|
|
40
108
|
export declare function tryHandleApiRoute(opts: {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
109
|
+
req: IncomingMessage;
|
|
110
|
+
res: ServerResponse;
|
|
111
|
+
siteDir: string;
|
|
44
112
|
}): Promise<boolean>;
|
|
@@ -19,178 +19,236 @@ import { existsSync } from "node:fs";
|
|
|
19
19
|
import { join, basename } from "node:path";
|
|
20
20
|
import esbuild from "esbuild";
|
|
21
21
|
import { pathToFileURL } from "node:url";
|
|
22
|
+
/** Cache directory for transpiled API routes. */
|
|
22
23
|
const apiCacheDir = join(process.cwd(), "node_modules", ".jen", "api-cache");
|
|
23
24
|
/**
|
|
24
|
-
* Transpile API route file
|
|
25
|
+
* Transpile a TypeScript API route file to JavaScript.
|
|
26
|
+
* Uses esbuild to convert TS → JS, bundle dependencies, and output as ESM.
|
|
27
|
+
* The transpiled file is cached in node_modules/.jen/api-cache with a timestamp
|
|
28
|
+
* in the filename to allow side-by-side versions if the file changes.
|
|
29
|
+
*
|
|
30
|
+
* Bundles the route with external dependencies excluded (preact, jenjs).
|
|
31
|
+
* This enables tree-shaking of server-only exports like loader().
|
|
32
|
+
*
|
|
33
|
+
* @param filePath - Absolute path to .ts file
|
|
34
|
+
* @returns Path to transpiled .mjs file in cache directory
|
|
35
|
+
* @throws If esbuild fails to transpile
|
|
25
36
|
*/
|
|
26
37
|
async function transpileApiRoute(filePath) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
const outfile = join(
|
|
39
|
+
apiCacheDir,
|
|
40
|
+
basename(filePath).replace(/\.ts$/, `.${Date.now()}.mjs`),
|
|
41
|
+
);
|
|
42
|
+
await esbuild.build({
|
|
43
|
+
entryPoints: [filePath],
|
|
44
|
+
outfile,
|
|
45
|
+
format: "esm",
|
|
46
|
+
platform: "node",
|
|
47
|
+
target: "es2022",
|
|
48
|
+
bundle: true,
|
|
49
|
+
external: ["preact", "preact-render-to-string", "jenjs"],
|
|
50
|
+
write: true,
|
|
51
|
+
});
|
|
52
|
+
return outfile;
|
|
39
53
|
}
|
|
40
54
|
/**
|
|
41
|
-
*
|
|
42
|
-
* Returns true if handled (success or error),
|
|
55
|
+
* Attempt to route and handle an API request.
|
|
56
|
+
* Returns true if the request was handled (success or error response sent),
|
|
57
|
+
* false if no matching API route exists (caller should try next handler).
|
|
58
|
+
*
|
|
59
|
+
* Routing:
|
|
60
|
+
* - /api/endpoint → site/api/endpoint.ts
|
|
61
|
+
* - /api/users/123 → site/api/users/[id].ts (dynamic params supported)
|
|
62
|
+
* - /api/ (no segments) → 404
|
|
63
|
+
*
|
|
64
|
+
* Resolution order:
|
|
65
|
+
* 1. Try exact file match (e.g., /api/hello → api/hello.ts)
|
|
66
|
+
* 2. Try dynamic route match (e.g., /api/123 → api/[id].ts)
|
|
67
|
+
*
|
|
68
|
+
* Process:
|
|
69
|
+
* 1. Validate request starts with /api/
|
|
70
|
+
* 2. Resolve route file (exact or dynamic match)
|
|
71
|
+
* 3. Transpile if TypeScript
|
|
72
|
+
* 4. Load module and find handler for HTTP method
|
|
73
|
+
* 5. Parse request body
|
|
74
|
+
* 6. Call handler with context
|
|
75
|
+
* 7. Serialize response (Response, string, or object)
|
|
76
|
+
*
|
|
77
|
+
* All errors send JSON response with error message.
|
|
78
|
+
* HTTP 405 (Method Not Allowed) if method handler not exported.
|
|
79
|
+
* HTTP 404 if no matching route file.
|
|
80
|
+
* HTTP 500 if handler throws or transpilation fails.
|
|
43
81
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* /api/users/123 → site/api/users/[id].ts
|
|
82
|
+
* @param opts - Options containing request, response, and site directory
|
|
83
|
+
* @returns true if handled, false if no API route found
|
|
47
84
|
*/
|
|
48
85
|
export async function tryHandleApiRoute(opts) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
const { req, res, siteDir } = opts;
|
|
87
|
+
const url = new URL(
|
|
88
|
+
req.url ?? "/",
|
|
89
|
+
`http://${req.headers.host ?? "localhost"}`,
|
|
90
|
+
);
|
|
91
|
+
const method = (req.method ?? "GET").toUpperCase();
|
|
92
|
+
// Only handle /api/* requests
|
|
93
|
+
if (!url.pathname.startsWith("/api/")) return false;
|
|
94
|
+
// Extract path segments after /api/ prefix
|
|
95
|
+
const pathParts = url.pathname
|
|
96
|
+
.slice("/api/".length)
|
|
97
|
+
.split("/")
|
|
98
|
+
.filter(Boolean);
|
|
99
|
+
// /api/ with no segments is 404
|
|
100
|
+
if (pathParts.length === 0) {
|
|
101
|
+
res.statusCode = 404;
|
|
102
|
+
res.setHeader("content-type", "application/json; charset=utf-8");
|
|
103
|
+
res.end(JSON.stringify({ error: "API route not found" }));
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
// Resolve route file (exact match or dynamic)
|
|
107
|
+
let apiFile = null;
|
|
108
|
+
let routeParams = {};
|
|
109
|
+
// Try exact file match: /api/hello/world → api/hello/world.ts
|
|
110
|
+
const exactPath = join(
|
|
111
|
+
process.cwd(),
|
|
112
|
+
siteDir,
|
|
113
|
+
"api",
|
|
114
|
+
`${pathParts.join("/")}.ts`,
|
|
115
|
+
);
|
|
116
|
+
if (existsSync(exactPath)) {
|
|
117
|
+
apiFile = exactPath;
|
|
118
|
+
} else {
|
|
119
|
+
// Try dynamic route match: /api/users/123 → api/users/[id].ts
|
|
120
|
+
const basePath = join(process.cwd(), siteDir, "api");
|
|
121
|
+
for (let i = pathParts.length; i >= 1; i--) {
|
|
122
|
+
const staticSegments = pathParts.slice(0, i);
|
|
123
|
+
const dynamicSegments = pathParts.slice(i);
|
|
124
|
+
// Simple approach: check api/[param].ts for /api/123
|
|
125
|
+
// TODO: Support nested dynamic routes like api/users/[id]/posts/[postId].ts
|
|
126
|
+
if (staticSegments.length === 0 && dynamicSegments.length === 1) {
|
|
127
|
+
const paramFile = join(basePath, `[${dynamicSegments[0]}].ts`);
|
|
128
|
+
if (existsSync(paramFile)) {
|
|
129
|
+
apiFile = paramFile;
|
|
130
|
+
routeParams[dynamicSegments[0]] = dynamicSegments[0];
|
|
131
|
+
break;
|
|
90
132
|
}
|
|
133
|
+
}
|
|
91
134
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
135
|
+
}
|
|
136
|
+
if (!apiFile) {
|
|
137
|
+
res.statusCode = 404;
|
|
138
|
+
res.setHeader("content-type", "application/json; charset=utf-8");
|
|
139
|
+
res.end(JSON.stringify({ error: "API route not found" }));
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
// Transpile TypeScript to JavaScript
|
|
143
|
+
let moduleUrl = apiFile;
|
|
144
|
+
if (apiFile.endsWith(".ts")) {
|
|
145
|
+
moduleUrl = await transpileApiRoute(apiFile);
|
|
146
|
+
}
|
|
147
|
+
// Load module and get method handlers
|
|
148
|
+
let mod;
|
|
149
|
+
try {
|
|
150
|
+
// Cache-busting query param ensures fresh module (important in dev mode)
|
|
151
|
+
mod = await import(pathToFileURL(moduleUrl).href + `?t=${Date.now()}`);
|
|
152
|
+
} catch (err) {
|
|
153
|
+
res.statusCode = 500;
|
|
154
|
+
res.setHeader("content-type", "application/json; charset=utf-8");
|
|
155
|
+
res.end(
|
|
156
|
+
JSON.stringify({
|
|
157
|
+
error: "Failed to load API route",
|
|
158
|
+
details: err.message,
|
|
159
|
+
}),
|
|
160
|
+
);
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
// Get handler for the HTTP method
|
|
164
|
+
const handler = mod[method];
|
|
165
|
+
if (!handler) {
|
|
166
|
+
res.statusCode = 405;
|
|
167
|
+
res.setHeader("content-type", "application/json; charset=utf-8");
|
|
168
|
+
res.setHeader("allow", Object.keys(mod).join(", "));
|
|
169
|
+
res.end(JSON.stringify({ error: `${method} not allowed` }));
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
// Parse request body
|
|
173
|
+
const body = await readRequestBody(req);
|
|
174
|
+
// Build handler context
|
|
175
|
+
const ctx = {
|
|
176
|
+
req,
|
|
177
|
+
res,
|
|
178
|
+
url,
|
|
179
|
+
method,
|
|
180
|
+
query: Object.fromEntries(url.searchParams.entries()),
|
|
181
|
+
body,
|
|
182
|
+
params: routeParams,
|
|
183
|
+
};
|
|
184
|
+
// Execute handler and serialize response
|
|
185
|
+
try {
|
|
186
|
+
const result = await handler(ctx);
|
|
187
|
+
// If handler manually wrote response, don't double-send
|
|
188
|
+
if (res.writableEnded) return true;
|
|
189
|
+
// Serialize Response object
|
|
190
|
+
if (result instanceof Response) {
|
|
191
|
+
res.statusCode = result.status;
|
|
192
|
+
result.headers.forEach((v, k) => res.setHeader(k, v));
|
|
193
|
+
const buf = Buffer.from(await result.arrayBuffer());
|
|
194
|
+
res.end(buf);
|
|
195
|
+
return true;
|
|
116
196
|
}
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
res.end(JSON.stringify({ error: `${method} not allowed` }));
|
|
124
|
-
return true;
|
|
125
|
-
}
|
|
126
|
-
// Read body
|
|
127
|
-
const body = await readRequestBody(req);
|
|
128
|
-
// Build context
|
|
129
|
-
const ctx = {
|
|
130
|
-
req,
|
|
131
|
-
res,
|
|
132
|
-
url,
|
|
133
|
-
method,
|
|
134
|
-
query: Object.fromEntries(url.searchParams.entries()),
|
|
135
|
-
body,
|
|
136
|
-
params: routeParams,
|
|
137
|
-
};
|
|
138
|
-
// Execute handler
|
|
139
|
-
try {
|
|
140
|
-
const result = await handler(ctx);
|
|
141
|
-
// Handler already sent response
|
|
142
|
-
if (res.writableEnded)
|
|
143
|
-
return true;
|
|
144
|
-
// Handle Response
|
|
145
|
-
if (result instanceof Response) {
|
|
146
|
-
res.statusCode = result.status;
|
|
147
|
-
result.headers.forEach((v, k) => res.setHeader(k, v));
|
|
148
|
-
const buf = Buffer.from(await result.arrayBuffer());
|
|
149
|
-
res.end(buf);
|
|
150
|
-
return true;
|
|
151
|
-
}
|
|
152
|
-
// Handle string
|
|
153
|
-
if (typeof result === "string") {
|
|
154
|
-
res.statusCode = 200;
|
|
155
|
-
res.setHeader("content-type", "text/plain; charset=utf-8");
|
|
156
|
-
res.end(result);
|
|
157
|
-
return true;
|
|
158
|
-
}
|
|
159
|
-
// Handle object (JSON)
|
|
160
|
-
res.statusCode = 200;
|
|
161
|
-
res.setHeader("content-type", "application/json; charset=utf-8");
|
|
162
|
-
res.end(JSON.stringify(result ?? null));
|
|
163
|
-
return true;
|
|
164
|
-
}
|
|
165
|
-
catch (err) {
|
|
166
|
-
res.statusCode = 500;
|
|
167
|
-
res.setHeader("content-type", "application/json; charset=utf-8");
|
|
168
|
-
res.end(JSON.stringify({ error: "Internal server error", details: err.message }));
|
|
169
|
-
return true;
|
|
197
|
+
// Serialize string as plain text
|
|
198
|
+
if (typeof result === "string") {
|
|
199
|
+
res.statusCode = 200;
|
|
200
|
+
res.setHeader("content-type", "text/plain; charset=utf-8");
|
|
201
|
+
res.end(result);
|
|
202
|
+
return true;
|
|
170
203
|
}
|
|
204
|
+
// Serialize object as JSON (null is valid)
|
|
205
|
+
res.statusCode = 200;
|
|
206
|
+
res.setHeader("content-type", "application/json; charset=utf-8");
|
|
207
|
+
res.end(JSON.stringify(result ?? null));
|
|
208
|
+
return true;
|
|
209
|
+
} catch (err) {
|
|
210
|
+
res.statusCode = 500;
|
|
211
|
+
res.setHeader("content-type", "application/json; charset=utf-8");
|
|
212
|
+
res.end(
|
|
213
|
+
JSON.stringify({ error: "Internal server error", details: err.message }),
|
|
214
|
+
);
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
171
217
|
}
|
|
172
218
|
/**
|
|
173
|
-
*
|
|
219
|
+
* Parse request body based on Content-Type header.
|
|
220
|
+
* Reads all chunks from the request stream and deserializes based on content type.
|
|
221
|
+
*
|
|
222
|
+
* - GET/HEAD: Returns null (no body expected)
|
|
223
|
+
* - JSON (application/json): Parses and returns object; falls back to { __raw } if invalid JSON
|
|
224
|
+
* - Other: Returns { __raw } with raw body string
|
|
225
|
+
*
|
|
226
|
+
* This function is shared between different request handlers in the framework.
|
|
227
|
+
*
|
|
228
|
+
* @param req - Node.js IncomingMessage to read body from
|
|
229
|
+
* @returns Parsed body object or null
|
|
174
230
|
*/
|
|
175
231
|
async function readRequestBody(req) {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
232
|
+
const method = (req.method ?? "GET").toUpperCase();
|
|
233
|
+
// Methods without bodies per HTTP spec
|
|
234
|
+
if (method === "GET" || method === "HEAD") return null;
|
|
235
|
+
// Read all body chunks
|
|
236
|
+
const chunks = [];
|
|
237
|
+
for await (const chunk of req) {
|
|
238
|
+
chunks.push(Buffer.from(chunk));
|
|
239
|
+
}
|
|
240
|
+
if (chunks.length === 0) return null;
|
|
241
|
+
const raw = Buffer.concat(chunks).toString("utf8");
|
|
242
|
+
const ct = (req.headers["content-type"] ?? "").toString();
|
|
243
|
+
// Try to parse JSON
|
|
244
|
+
if (ct.includes("application/json")) {
|
|
245
|
+
try {
|
|
246
|
+
return JSON.parse(raw);
|
|
247
|
+
} catch {
|
|
248
|
+
// Return raw body if JSON parsing fails
|
|
249
|
+
return { __raw: raw };
|
|
194
250
|
}
|
|
195
|
-
|
|
251
|
+
}
|
|
252
|
+
// Return raw body for non-JSON content
|
|
253
|
+
return { __raw: raw };
|
|
196
254
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
2
|
export declare function tryHandleApiRoute(opts: {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
req: IncomingMessage;
|
|
4
|
+
res: ServerResponse;
|
|
5
|
+
siteDir: string;
|
|
6
6
|
}): Promise<boolean>;
|