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
|
@@ -18,22 +18,85 @@
|
|
|
18
18
|
import { Pipeline } from "./pipeline.js";
|
|
19
19
|
import { MiddlewareRegistry } from "./registry.js";
|
|
20
20
|
import { Context } from "./context.js";
|
|
21
|
+
/**
|
|
22
|
+
* Core HTTP request handler that manages middleware execution and request context.
|
|
23
|
+
*
|
|
24
|
+
* The Kernel implements a middleware pipeline pattern:
|
|
25
|
+
* 1. Receives Node.js req and res objects
|
|
26
|
+
* 2. Wraps them in a Context object with helper methods and properties
|
|
27
|
+
* 3. Composes registered middlewares into a callable pipeline
|
|
28
|
+
* 4. Executes the pipeline with the context for request processing
|
|
29
|
+
*
|
|
30
|
+
* Middlewares can:
|
|
31
|
+
* - Access/modify request and response via ctx.req, ctx.res, ctx.response
|
|
32
|
+
* - Read/set cookies, headers, query params, route params
|
|
33
|
+
* - Store and retrieve shared state in ctx.state
|
|
34
|
+
* - Call ctx.response.json() or other response builders
|
|
35
|
+
* - Control flow via next() to continue to next middleware
|
|
36
|
+
*/
|
|
21
37
|
export class Kernel {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Array of global middleware functions that run for every request.
|
|
40
|
+
* Middlewares are stored in order of registration (use() calls).
|
|
41
|
+
* Executed sequentially in Pipeline.compose().
|
|
42
|
+
*/
|
|
43
|
+
globalMiddleware = [];
|
|
44
|
+
constructor() {}
|
|
45
|
+
/**
|
|
46
|
+
* Registers a middleware function to run for all requests.
|
|
47
|
+
* Middleware can be a function, a class constructor, or an object with handle() method.
|
|
48
|
+
*
|
|
49
|
+
* @param mw Middleware function: (ctx, next) => Promise<void>
|
|
50
|
+
* Or class with: new MyMiddleware().handle(ctx, next)
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* kernel.use(async (ctx, next) => {
|
|
54
|
+
* console.log(`${ctx.req.method} ${ctx.url.pathname}`);
|
|
55
|
+
* await next();
|
|
56
|
+
* });
|
|
57
|
+
*/
|
|
58
|
+
use(mw) {
|
|
59
|
+
this.globalMiddleware.push(mw);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Processes an HTTP request through the global middleware pipeline.
|
|
63
|
+
* Creates a Context wrapping the request/response, composes middlewares, and executes them.
|
|
64
|
+
*
|
|
65
|
+
* @param req Node.js IncomingMessage (HTTP request object)
|
|
66
|
+
* @param res Node.js ServerResponse (HTTP response object)
|
|
67
|
+
*
|
|
68
|
+
* @returns Promise that resolves when middleware chain completes
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* const server = createServer((req, res) => {
|
|
72
|
+
* kernel.handle(req, res);
|
|
73
|
+
* });
|
|
74
|
+
*/
|
|
75
|
+
async handle(req, res) {
|
|
76
|
+
const ctx = new Context(req, res);
|
|
77
|
+
const fn = Pipeline.compose(this.globalMiddleware);
|
|
78
|
+
await fn(ctx, async () => {});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Processes a request through global middleware plus a registered middleware group.
|
|
82
|
+
* Retrieves middleware from the registry by group name and composes them with global middleware.
|
|
83
|
+
* Useful for route-specific or feature-specific middleware chains.
|
|
84
|
+
*
|
|
85
|
+
* @param req Node.js IncomingMessage
|
|
86
|
+
* @param res Node.js ServerResponse
|
|
87
|
+
* @param groupName Name of the middleware group registered in MiddlewareRegistry
|
|
88
|
+
*
|
|
89
|
+
* @returns Promise that resolves when complete middleware chain executes
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* // Given a group named "apiMiddleware" with auth and logging
|
|
93
|
+
* await kernel.handleWithGroup(req, res, "apiMiddleware");
|
|
94
|
+
*/
|
|
95
|
+
async handleWithGroup(req, res, groupName) {
|
|
96
|
+
const ctx = new Context(req, res);
|
|
97
|
+
const registry = MiddlewareRegistry.get();
|
|
98
|
+
const groupMw = registry.getGroup(groupName);
|
|
99
|
+
const fn = Pipeline.compose([...this.globalMiddleware, ...groupMw]);
|
|
100
|
+
await fn(ctx, async () => {});
|
|
101
|
+
}
|
|
39
102
|
}
|
|
@@ -1,4 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Middleware composition and execution engine.
|
|
3
|
+
* Composes multiple middleware functions into a single callable function.
|
|
4
|
+
* Supports functions, class constructors, and objects with handle() methods.
|
|
5
|
+
*
|
|
6
|
+
* The Pipeline implements the "cascade" or "onion" middleware pattern:
|
|
7
|
+
* - Middlewares are executed sequentially in order
|
|
8
|
+
* - Each middleware receives a next() function to pass control to the next handler
|
|
9
|
+
* - Execution returns through each middleware in reverse order
|
|
10
|
+
* - Early termination is possible by not calling next()
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const middlewares = [
|
|
14
|
+
* (ctx, next) => { console.log("1 start"); next().then(() => console.log("1 end")); },
|
|
15
|
+
* (ctx, next) => { console.log("2 start"); next().then(() => console.log("2 end")); },
|
|
16
|
+
* ];
|
|
17
|
+
* // Logs: "1 start", "2 start", "2 end", "1 end" (onion pattern)
|
|
18
|
+
*/
|
|
1
19
|
export class Pipeline {
|
|
2
|
-
|
|
3
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Composes an array of middleware into a single callable function.
|
|
22
|
+
* The composed function accepts (context, finalNext) and executes middlewares in sequence.
|
|
23
|
+
*
|
|
24
|
+
* Middleware resolution:
|
|
25
|
+
* - Functions are passed through as-is
|
|
26
|
+
* - Class constructors (functions with prototype.handle) are instantiated and their handle() bound
|
|
27
|
+
* - Objects with handle() methods have handle() bound to them
|
|
28
|
+
*
|
|
29
|
+
* @param middleware Array of middleware to compose
|
|
30
|
+
* @returns Composed function: async (context, next) => Promise<void>
|
|
31
|
+
*
|
|
32
|
+
* @throws {TypeError} If middleware is not an array
|
|
33
|
+
* @throws {TypeError} If a middleware is not a function, class, or object with handle()
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* const composed = Pipeline.compose([authMiddleware, loggingMiddleware]);
|
|
37
|
+
* await composed(ctx, () => console.log("done"));
|
|
38
|
+
*/
|
|
39
|
+
static compose(middleware: any): (context: any, next: any) => any;
|
|
40
|
+
/**
|
|
41
|
+
* Resolves a middleware to a callable (context, next) => Promise function.
|
|
42
|
+
* Supports three forms:
|
|
43
|
+
* 1. Function: Used directly
|
|
44
|
+
* 2. Class constructor with handle() method: Instantiated and bound
|
|
45
|
+
* 3. Object with handle() method: handle() method is bound
|
|
46
|
+
*
|
|
47
|
+
* @param mw Middleware in one of the above forms
|
|
48
|
+
* @returns Callable (context, next) => Promise function
|
|
49
|
+
*
|
|
50
|
+
* @throws {TypeError} If mw is not a recognized middleware type
|
|
51
|
+
*/
|
|
52
|
+
static resolveMiddleware(mw: any): any;
|
|
4
53
|
}
|
|
@@ -15,53 +15,151 @@
|
|
|
15
15
|
* You should have received a copy of the GNU General Public License
|
|
16
16
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
|
+
/**
|
|
19
|
+
* Middleware composition and execution engine.
|
|
20
|
+
* Composes multiple middleware functions into a single callable function.
|
|
21
|
+
* Supports functions, class constructors, and objects with handle() methods.
|
|
22
|
+
*
|
|
23
|
+
* The Pipeline implements the "cascade" or "onion" middleware pattern:
|
|
24
|
+
* - Middlewares are executed sequentially in order
|
|
25
|
+
* - Each middleware receives a next() function to pass control to the next handler
|
|
26
|
+
* - Execution returns through each middleware in reverse order
|
|
27
|
+
* - Early termination is possible by not calling next()
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* const middlewares = [
|
|
31
|
+
* (ctx, next) => { console.log("1 start"); next().then(() => console.log("1 end")); },
|
|
32
|
+
* (ctx, next) => { console.log("2 start"); next().then(() => console.log("2 end")); },
|
|
33
|
+
* ];
|
|
34
|
+
* // Logs: "1 start", "2 start", "2 end", "1 end" (onion pattern)
|
|
35
|
+
*/
|
|
18
36
|
export class Pipeline {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
37
|
+
/**
|
|
38
|
+
* Composes an array of middleware into a single callable function.
|
|
39
|
+
* The composed function accepts (context, finalNext) and executes middlewares in sequence.
|
|
40
|
+
*
|
|
41
|
+
* Middleware resolution:
|
|
42
|
+
* - Functions are passed through as-is
|
|
43
|
+
* - Class constructors (functions with prototype.handle) are instantiated and their handle() bound
|
|
44
|
+
* - Objects with handle() methods have handle() bound to them
|
|
45
|
+
*
|
|
46
|
+
* @param middleware Array of middleware to compose
|
|
47
|
+
* @returns Composed function: async (context, next) => Promise<void>
|
|
48
|
+
*
|
|
49
|
+
* @throws {TypeError} If middleware is not an array
|
|
50
|
+
* @throws {TypeError} If a middleware is not a function, class, or object with handle()
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* const composed = Pipeline.compose([authMiddleware, loggingMiddleware]);
|
|
54
|
+
* await composed(ctx, () => console.log("done"));
|
|
55
|
+
*/
|
|
56
|
+
static compose(middleware) {
|
|
57
|
+
if (!Array.isArray(middleware))
|
|
58
|
+
throw new TypeError("Middleware stack must be an array!");
|
|
59
|
+
/**
|
|
60
|
+
* Resolve each middleware to a callable function.
|
|
61
|
+
* Handles functions, class constructors, and objects with handle() methods.
|
|
62
|
+
*/
|
|
63
|
+
const handlers = middleware.map((mw) => this.resolveMiddleware(mw));
|
|
64
|
+
/**
|
|
65
|
+
* Returns the composed middleware function that executes the pipeline.
|
|
66
|
+
* Uses the dispatch() pattern to enforce single-next-call and maintain order.
|
|
67
|
+
*
|
|
68
|
+
* @param context Request context object passed to each middleware
|
|
69
|
+
* @param next Final handler called after all middlewares
|
|
70
|
+
* @returns Promise that resolves when entire pipeline completes
|
|
71
|
+
*/
|
|
72
|
+
return function (context, next) {
|
|
73
|
+
/**
|
|
74
|
+
* Tracks the current dispatch index to detect "next() called multiple times".
|
|
75
|
+
* This prevents middleware from accidentally calling next() twice,
|
|
76
|
+
* which would cause handlers to execute in wrong order.
|
|
77
|
+
*/
|
|
78
|
+
let index = -1;
|
|
79
|
+
/**
|
|
80
|
+
* Dispatches (executes) the middleware at index i.
|
|
81
|
+
* Enforces that next() can only be called once by checking index increment.
|
|
82
|
+
*
|
|
83
|
+
* @param i Index of the middleware to execute
|
|
84
|
+
* @returns Promise from the middleware or final next() handler
|
|
85
|
+
*/
|
|
86
|
+
function dispatch(i) {
|
|
87
|
+
if (i <= index)
|
|
88
|
+
return Promise.reject(new Error("next() called multiple times"));
|
|
89
|
+
index = i;
|
|
90
|
+
let fn = handlers[i];
|
|
91
|
+
/**
|
|
92
|
+
* If we've exhausted all middlewares, call the final next() handler.
|
|
93
|
+
* This allows code after Pipeline.compose() to run.
|
|
94
|
+
*/
|
|
95
|
+
if (i === handlers.length) {
|
|
96
|
+
fn = next;
|
|
97
|
+
}
|
|
98
|
+
if (!fn) return Promise.resolve();
|
|
99
|
+
try {
|
|
100
|
+
/**
|
|
101
|
+
* Execute the middleware function, passing:
|
|
102
|
+
* - context: the request context object
|
|
103
|
+
* - dispatch.bind(null, i + 1): the next() function for chaining
|
|
104
|
+
*
|
|
105
|
+
* Promise.resolve() wraps non-promise returns for consistency.
|
|
106
|
+
*/
|
|
107
|
+
return Promise.resolve(fn(context, dispatch.bind(null, i + 1)));
|
|
108
|
+
} catch (err) {
|
|
109
|
+
return Promise.reject(err);
|
|
61
110
|
}
|
|
62
|
-
|
|
63
|
-
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Start the pipeline at the first middleware (index 0).
|
|
114
|
+
*/
|
|
115
|
+
return dispatch(0);
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Resolves a middleware to a callable (context, next) => Promise function.
|
|
120
|
+
* Supports three forms:
|
|
121
|
+
* 1. Function: Used directly
|
|
122
|
+
* 2. Class constructor with handle() method: Instantiated and bound
|
|
123
|
+
* 3. Object with handle() method: handle() method is bound
|
|
124
|
+
*
|
|
125
|
+
* @param mw Middleware in one of the above forms
|
|
126
|
+
* @returns Callable (context, next) => Promise function
|
|
127
|
+
*
|
|
128
|
+
* @throws {TypeError} If mw is not a recognized middleware type
|
|
129
|
+
*/
|
|
130
|
+
static resolveMiddleware(mw) {
|
|
131
|
+
if (typeof mw === "function") {
|
|
132
|
+
/**
|
|
133
|
+
* Check if this is a class constructor with a handle() method.
|
|
134
|
+
* Constructors have a prototype property with methods defined on it.
|
|
135
|
+
*/
|
|
136
|
+
if (
|
|
137
|
+
"prototype" in mw &&
|
|
138
|
+
mw.prototype &&
|
|
139
|
+
typeof mw.prototype.handle === "function"
|
|
140
|
+
) {
|
|
141
|
+
try {
|
|
142
|
+
const instance = new mw();
|
|
143
|
+
return instance.handle.bind(instance);
|
|
144
|
+
} catch (e) {
|
|
145
|
+
/**
|
|
146
|
+
* If instantiation fails (constructor requires params),
|
|
147
|
+
* assume it's a simple function middleware and use it directly.
|
|
148
|
+
*/
|
|
149
|
+
return mw;
|
|
64
150
|
}
|
|
65
|
-
|
|
151
|
+
}
|
|
152
|
+
return mw;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Check for object with handle() method.
|
|
156
|
+
* Useful for class instances or middleware objects.
|
|
157
|
+
*/
|
|
158
|
+
if (typeof mw === "object" && mw !== null && "handle" in mw) {
|
|
159
|
+
return mw.handle.bind(mw);
|
|
66
160
|
}
|
|
161
|
+
throw new TypeError(
|
|
162
|
+
"Middleware must be a function, a class constructor, or an object with a handle() method",
|
|
163
|
+
);
|
|
164
|
+
}
|
|
67
165
|
}
|
|
@@ -1,10 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global registry for named middleware and middleware groups.
|
|
3
|
+
* Enables reusable middleware composition patterns where middlewares are registered once
|
|
4
|
+
* and then referenced by name in groups or applied globally.
|
|
5
|
+
*
|
|
6
|
+
* The registry follows the singleton pattern to maintain a single shared instance
|
|
7
|
+
* throughout the application lifecycle.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const registry = MiddlewareRegistry.get();
|
|
11
|
+
* registry.register('auth', authMiddleware);
|
|
12
|
+
* registry.register('logger', loggingMiddleware);
|
|
13
|
+
* registry.group('api', ['auth', 'logger']);
|
|
14
|
+
* // Later, get the group to apply to routes
|
|
15
|
+
* const apiMw = registry.getGroup('api'); // [authMiddleware, loggingMiddleware]
|
|
16
|
+
*/
|
|
1
17
|
export class MiddlewareRegistry {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
18
|
+
static instance: any;
|
|
19
|
+
/**
|
|
20
|
+
* Gets or creates the singleton registry instance.
|
|
21
|
+
* All calls to this method return the same instance, ensuring a single registry.
|
|
22
|
+
*
|
|
23
|
+
* @returns The singleton MiddlewareRegistry instance.
|
|
24
|
+
*/
|
|
25
|
+
static get(): any;
|
|
26
|
+
middleware: Map<any, any>;
|
|
27
|
+
groups: Map<any, any>;
|
|
28
|
+
/**
|
|
29
|
+
* Registers a middleware function with a name.
|
|
30
|
+
* Named middleware can be referenced in groups or applied individually.
|
|
31
|
+
*
|
|
32
|
+
* @param name Unique identifier for the middleware.
|
|
33
|
+
* @param mw The middleware function to register.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* registry.register('cors', corsMiddleware);
|
|
37
|
+
*/
|
|
38
|
+
register(name: any, mw: any): void;
|
|
39
|
+
/**
|
|
40
|
+
* Retrieves a registered middleware by name.
|
|
41
|
+
*
|
|
42
|
+
* @param name The name of the middleware to retrieve.
|
|
43
|
+
* @returns The middleware function, or undefined if not found.
|
|
44
|
+
*/
|
|
45
|
+
get(name: any): any;
|
|
46
|
+
/**
|
|
47
|
+
* Defines a group of middleware by names.
|
|
48
|
+
* Groups allow composing multiple middleware into a named set that can be applied together.
|
|
49
|
+
*
|
|
50
|
+
* @param groupName The name of the group.
|
|
51
|
+
* @param middlewareNames Array of registered middleware names to include in the group.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* registry.group('secure', ['auth', 'rateLimit', 'securityHeaders']);
|
|
55
|
+
*/
|
|
56
|
+
group(groupName: any, middlewareNames: any): void;
|
|
57
|
+
/**
|
|
58
|
+
* Retrieves all middleware functions in a named group.
|
|
59
|
+
* Resolves group names to actual middleware functions.
|
|
60
|
+
* Skips missing middleware names gracefully.
|
|
61
|
+
*
|
|
62
|
+
* @param groupName The name of the group to retrieve.
|
|
63
|
+
* @returns Array of middleware functions in the group (in order).
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* const middlewares = registry.getGroup('secure'); // [authFn, rateLimitFn, securityHeadersFn]
|
|
67
|
+
*/
|
|
68
|
+
getGroup(groupName: any): any;
|
|
10
69
|
}
|
|
@@ -15,27 +15,88 @@
|
|
|
15
15
|
* You should have received a copy of the GNU General Public License
|
|
16
16
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
17
|
*/
|
|
18
|
+
/**
|
|
19
|
+
* Global registry for named middleware and middleware groups.
|
|
20
|
+
* Enables reusable middleware composition patterns where middlewares are registered once
|
|
21
|
+
* and then referenced by name in groups or applied globally.
|
|
22
|
+
*
|
|
23
|
+
* The registry follows the singleton pattern to maintain a single shared instance
|
|
24
|
+
* throughout the application lifecycle.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* const registry = MiddlewareRegistry.get();
|
|
28
|
+
* registry.register('auth', authMiddleware);
|
|
29
|
+
* registry.register('logger', loggingMiddleware);
|
|
30
|
+
* registry.group('api', ['auth', 'logger']);
|
|
31
|
+
* // Later, get the group to apply to routes
|
|
32
|
+
* const apiMw = registry.getGroup('api'); // [authMiddleware, loggingMiddleware]
|
|
33
|
+
*/
|
|
18
34
|
export class MiddlewareRegistry {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
// Singleton instance shared across the application.
|
|
36
|
+
static instance;
|
|
37
|
+
// Map of named middleware functions.
|
|
38
|
+
middleware = new Map();
|
|
39
|
+
// Map of middleware group definitions (groups contain names of registered middleware).
|
|
40
|
+
groups = new Map();
|
|
41
|
+
constructor() {}
|
|
42
|
+
/**
|
|
43
|
+
* Gets or creates the singleton registry instance.
|
|
44
|
+
* All calls to this method return the same instance, ensuring a single registry.
|
|
45
|
+
*
|
|
46
|
+
* @returns The singleton MiddlewareRegistry instance.
|
|
47
|
+
*/
|
|
48
|
+
static get() {
|
|
49
|
+
if (!this.instance) this.instance = new MiddlewareRegistry();
|
|
50
|
+
return this.instance;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Registers a middleware function with a name.
|
|
54
|
+
* Named middleware can be referenced in groups or applied individually.
|
|
55
|
+
*
|
|
56
|
+
* @param name Unique identifier for the middleware.
|
|
57
|
+
* @param mw The middleware function to register.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* registry.register('cors', corsMiddleware);
|
|
61
|
+
*/
|
|
62
|
+
register(name, mw) {
|
|
63
|
+
this.middleware.set(name, mw);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Retrieves a registered middleware by name.
|
|
67
|
+
*
|
|
68
|
+
* @param name The name of the middleware to retrieve.
|
|
69
|
+
* @returns The middleware function, or undefined if not found.
|
|
70
|
+
*/
|
|
71
|
+
get(name) {
|
|
72
|
+
return this.middleware.get(name);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Defines a group of middleware by names.
|
|
76
|
+
* Groups allow composing multiple middleware into a named set that can be applied together.
|
|
77
|
+
*
|
|
78
|
+
* @param groupName The name of the group.
|
|
79
|
+
* @param middlewareNames Array of registered middleware names to include in the group.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* registry.group('secure', ['auth', 'rateLimit', 'securityHeaders']);
|
|
83
|
+
*/
|
|
84
|
+
group(groupName, middlewareNames) {
|
|
85
|
+
this.groups.set(groupName, middlewareNames);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Retrieves all middleware functions in a named group.
|
|
89
|
+
* Resolves group names to actual middleware functions.
|
|
90
|
+
* Skips missing middleware names gracefully.
|
|
91
|
+
*
|
|
92
|
+
* @param groupName The name of the group to retrieve.
|
|
93
|
+
* @returns Array of middleware functions in the group (in order).
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* const middlewares = registry.getGroup('secure'); // [authFn, rateLimitFn, securityHeadersFn]
|
|
97
|
+
*/
|
|
98
|
+
getGroup(groupName) {
|
|
99
|
+
const names = this.groups.get(groupName) || [];
|
|
100
|
+
return names.map((n) => this.get(n)).filter((m) => !!m);
|
|
101
|
+
}
|
|
41
102
|
}
|
|
@@ -1,13 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fluent builder for constructing HTTP responses.
|
|
3
|
+
* Provides a chainable API for setting status codes, headers, body, and content type.
|
|
4
|
+
* Delegates actual response sending to the underlying Node.js ServerResponse.
|
|
5
|
+
*
|
|
6
|
+
* This builder is used in the Context to provide convenient response composition
|
|
7
|
+
* without manually managing headers and response state.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ctx.response
|
|
11
|
+
* .status(201)
|
|
12
|
+
* .header('X-Custom', 'value')
|
|
13
|
+
* .json({ id: 123, name: 'Alice' })
|
|
14
|
+
* .send();
|
|
15
|
+
*/
|
|
1
16
|
export class ResponseBuilder {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Initializes a ResponseBuilder with the given ServerResponse.
|
|
19
|
+
*
|
|
20
|
+
* @param res The Node.js ServerResponse object to write to.
|
|
21
|
+
*/
|
|
22
|
+
constructor(res: any);
|
|
23
|
+
statusCode: number;
|
|
24
|
+
headers: {};
|
|
25
|
+
body: null;
|
|
26
|
+
res: any;
|
|
27
|
+
/**
|
|
28
|
+
* Sets the HTTP status code for the response.
|
|
29
|
+
*
|
|
30
|
+
* @param code The HTTP status code (e.g., 200, 404, 500).
|
|
31
|
+
* @returns This ResponseBuilder instance for method chaining.
|
|
32
|
+
*/
|
|
33
|
+
status(code: any): this;
|
|
34
|
+
/**
|
|
35
|
+
* Adds an HTTP response header.
|
|
36
|
+
* Multiple calls with the same key overwrite previous values.
|
|
37
|
+
*
|
|
38
|
+
* @param key The header name.
|
|
39
|
+
* @param value The header value.
|
|
40
|
+
* @returns This ResponseBuilder instance for method chaining.
|
|
41
|
+
*/
|
|
42
|
+
header(key: any, value: any): this;
|
|
43
|
+
/**
|
|
44
|
+
* Sets the response body to a JSON-serialized object and sets Content-Type header.
|
|
45
|
+
* Automatically sets Content-Type to application/json.
|
|
46
|
+
*
|
|
47
|
+
* @param data The object to serialize as JSON.
|
|
48
|
+
* @returns This ResponseBuilder instance for method chaining.
|
|
49
|
+
*/
|
|
50
|
+
json(data: any): this;
|
|
51
|
+
/**
|
|
52
|
+
* Sets the response body to HTML content and sets Content-Type header.
|
|
53
|
+
* Automatically sets Content-Type to text/html.
|
|
54
|
+
*
|
|
55
|
+
* @param html The HTML string to send.
|
|
56
|
+
* @returns This ResponseBuilder instance for method chaining.
|
|
57
|
+
*/
|
|
58
|
+
html(html: any): this;
|
|
59
|
+
/**
|
|
60
|
+
* Sets the response body to plain text and sets Content-Type header.
|
|
61
|
+
* Automatically sets Content-Type to text/plain.
|
|
62
|
+
*
|
|
63
|
+
* @param text The plain text string to send.
|
|
64
|
+
* @returns This ResponseBuilder instance for method chaining.
|
|
65
|
+
*/
|
|
66
|
+
text(text: any): this;
|
|
67
|
+
/**
|
|
68
|
+
* Sends the response to the client.
|
|
69
|
+
* Writes the status code, headers, and body to the underlying ServerResponse.
|
|
70
|
+
* Does nothing if the response has already been sent (writableEnded is true).
|
|
71
|
+
*
|
|
72
|
+
* @returns Void. The underlying res.end() return value is not propagated.
|
|
73
|
+
*/
|
|
74
|
+
send(): void;
|
|
13
75
|
}
|