elysia 1.4.28 → 2.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rolldown/runtime.js +29 -0
- package/dist/_virtual/_rolldown/runtime.mjs +38 -0
- package/dist/adapter/bun/index.d.ts +7 -6
- package/dist/adapter/bun/index.js +219 -380
- package/dist/adapter/bun/index.mjs +217 -382
- package/dist/adapter/constants.d.ts +6 -0
- package/dist/adapter/constants.js +10 -0
- package/dist/adapter/constants.mjs +9 -0
- package/dist/adapter/default-headers.d.ts +4 -0
- package/dist/adapter/default-headers.js +7 -0
- package/dist/adapter/default-headers.mjs +5 -0
- package/dist/adapter/index.d.ts +8 -1
- package/dist/adapter/index.js +7 -14
- package/dist/adapter/index.mjs +5 -0
- package/dist/adapter/origin.d.ts +63 -0
- package/dist/adapter/origin.js +64 -0
- package/dist/adapter/origin.mjs +62 -0
- package/dist/adapter/response-ownership.d.ts +5 -0
- package/dist/adapter/response-ownership.js +13 -0
- package/dist/adapter/response-ownership.mjs +10 -0
- package/dist/adapter/skip-clone.d.ts +4 -0
- package/dist/adapter/skip-clone.js +7 -0
- package/dist/adapter/skip-clone.mjs +5 -0
- package/dist/adapter/types.d.ts +50 -125
- package/dist/adapter/types.js +1 -14
- package/dist/adapter/types.mjs +1 -0
- package/dist/adapter/utils.d.ts +47 -19
- package/dist/adapter/utils.js +561 -311
- package/dist/adapter/utils.mjs +551 -283
- package/dist/adapter/web-standard/handler.d.ts +11 -9
- package/dist/adapter/web-standard/handler.js +146 -415
- package/dist/adapter/web-standard/handler.mjs +144 -400
- package/dist/adapter/web-standard/index.d.ts +5 -2
- package/dist/adapter/web-standard/index.js +68 -161
- package/dist/adapter/web-standard/index.mjs +68 -146
- package/dist/adapter/web-standard/utils.d.ts +4 -0
- package/dist/adapter/web-standard/utils.js +153 -0
- package/dist/adapter/web-standard/utils.mjs +152 -0
- package/dist/base.d.ts +898 -0
- package/dist/base.js +1564 -0
- package/dist/base.mjs +1561 -0
- package/dist/compile/analysis-cache.d.ts +6 -0
- package/dist/compile/analysis-cache.js +12 -0
- package/dist/compile/analysis-cache.mjs +11 -0
- package/dist/compile/aot-capture.d.ts +24 -0
- package/dist/compile/aot-capture.js +376 -0
- package/dist/compile/aot-capture.mjs +365 -0
- package/dist/compile/aot-emit.d.ts +29 -0
- package/dist/compile/aot-emit.js +107 -0
- package/dist/compile/aot-emit.mjs +101 -0
- package/dist/compile/aot-reconstruct.d.ts +30 -0
- package/dist/compile/aot-reconstruct.js +156 -0
- package/dist/compile/aot-reconstruct.mjs +147 -0
- package/dist/compile/aot.d.ts +287 -0
- package/dist/compile/aot.js +220 -0
- package/dist/compile/aot.mjs +200 -0
- package/dist/compile/handler/descriptor.d.ts +77 -0
- package/dist/compile/handler/descriptor.js +199 -0
- package/dist/compile/handler/descriptor.mjs +194 -0
- package/dist/compile/handler/frozen-validator.d.ts +39 -0
- package/dist/compile/handler/frozen-validator.js +319 -0
- package/dist/compile/handler/frozen-validator.mjs +313 -0
- package/dist/compile/handler/index.d.ts +19 -0
- package/dist/compile/handler/index.js +379 -0
- package/dist/compile/handler/index.mjs +371 -0
- package/dist/compile/handler/jit.d.ts +43 -0
- package/dist/compile/handler/jit.js +536 -0
- package/dist/compile/handler/jit.mjs +532 -0
- package/dist/compile/handler/params.d.ts +28 -0
- package/dist/compile/handler/params.js +78 -0
- package/dist/compile/handler/params.mjs +76 -0
- package/dist/compile/handler/reconstruct.d.ts +12 -0
- package/dist/compile/handler/reconstruct.js +50 -0
- package/dist/compile/handler/reconstruct.mjs +49 -0
- package/dist/compile/handler/utils.d.ts +45 -0
- package/dist/compile/handler/utils.js +514 -0
- package/dist/compile/handler/utils.mjs +498 -0
- package/dist/compile/jit-probe.d.ts +15 -0
- package/dist/compile/jit-probe.js +28 -0
- package/dist/compile/jit-probe.mjs +26 -0
- package/dist/compile/lexer.d.ts +7 -0
- package/dist/compile/lexer.js +53 -0
- package/dist/compile/lexer.mjs +48 -0
- package/dist/compile/utils.d.ts +8 -0
- package/dist/compile/utils.js +23 -0
- package/dist/compile/utils.mjs +19 -0
- package/dist/compiled.d.ts +17 -0
- package/dist/compiled.js +20 -0
- package/dist/compiled.mjs +16 -0
- package/dist/constants.d.ts +137 -0
- package/dist/constants.js +96 -0
- package/dist/constants.mjs +88 -0
- package/dist/context.d.ts +86 -129
- package/dist/context.js +110 -13
- package/dist/context.mjs +108 -0
- package/dist/cookie/config.d.ts +31 -0
- package/dist/cookie/config.js +98 -0
- package/dist/cookie/config.mjs +95 -0
- package/dist/cookie/cookie.d.ts +26 -0
- package/dist/cookie/cookie.js +105 -0
- package/dist/cookie/cookie.mjs +104 -0
- package/dist/cookie/crypto.d.ts +20 -0
- package/dist/cookie/crypto.js +168 -0
- package/dist/cookie/crypto.mjs +151 -0
- package/dist/cookie/error.d.ts +17 -0
- package/dist/cookie/error.js +25 -0
- package/dist/cookie/error.mjs +24 -0
- package/dist/cookie/index.d.ts +7 -0
- package/dist/cookie/index.js +13 -0
- package/dist/cookie/index.mjs +7 -0
- package/dist/cookie/lib.d.ts +7 -0
- package/dist/cookie/lib.js +76 -0
- package/dist/cookie/lib.mjs +74 -0
- package/dist/cookie/serialize.d.ts +6 -0
- package/dist/cookie/serialize.js +32 -0
- package/dist/cookie/serialize.mjs +31 -0
- package/dist/cookie/types.d.ts +113 -0
- package/dist/cookie/types.js +1 -0
- package/dist/cookie/types.mjs +1 -0
- package/dist/cookie/utils.d.ts +25 -0
- package/dist/cookie/utils.js +182 -0
- package/dist/cookie/utils.mjs +171 -0
- package/dist/error.d.ts +226 -188
- package/dist/error.js +519 -357
- package/dist/error.mjs +503 -327
- package/dist/generation.d.ts +30 -0
- package/dist/generation.js +23 -0
- package/dist/generation.mjs +17 -0
- package/dist/handler/error.d.ts +7 -0
- package/dist/handler/error.js +105 -0
- package/dist/handler/error.mjs +104 -0
- package/dist/handler/fetch.d.ts +8 -0
- package/dist/handler/fetch.js +371 -0
- package/dist/handler/fetch.mjs +367 -0
- package/dist/handler/index.d.ts +2 -0
- package/dist/handler/index.js +5 -0
- package/dist/handler/index.mjs +3 -0
- package/dist/handler/utils.d.ts +15 -0
- package/dist/handler/utils.js +48 -0
- package/dist/handler/utils.mjs +42 -0
- package/dist/index.d.ts +23 -2198
- package/dist/index.js +62 -1948
- package/dist/index.mjs +20 -1986
- package/dist/memory.d.ts +4 -0
- package/dist/memory.js +17 -0
- package/dist/memory.mjs +16 -0
- package/dist/package.js +11 -0
- package/dist/package.mjs +5 -0
- package/dist/parse-query.d.ts +7 -9
- package/dist/parse-query.js +154 -164
- package/dist/parse-query.mjs +150 -133
- package/dist/plugin/aot/bun.d.ts +26 -0
- package/dist/plugin/aot/bun.js +35 -0
- package/dist/plugin/aot/bun.mjs +34 -0
- package/dist/plugin/aot/core.d.ts +291 -0
- package/dist/plugin/aot/core.js +505 -0
- package/dist/plugin/aot/core.mjs +481 -0
- package/dist/plugin/aot/esbuild.d.ts +28 -0
- package/dist/plugin/aot/esbuild.js +48 -0
- package/dist/plugin/aot/esbuild.mjs +46 -0
- package/dist/plugin/aot/hooks.d.ts +28 -0
- package/dist/plugin/aot/hooks.js +114 -0
- package/dist/plugin/aot/hooks.mjs +112 -0
- package/dist/plugin/aot/rspack-loader.d.ts +23 -0
- package/dist/plugin/aot/rspack-loader.js +44 -0
- package/dist/plugin/aot/rspack-loader.mjs +40 -0
- package/dist/plugin/aot/rspack.d.ts +23 -0
- package/dist/plugin/aot/rspack.js +85 -0
- package/dist/plugin/aot/rspack.mjs +82 -0
- package/dist/plugin/aot/source.d.ts +60 -0
- package/dist/plugin/aot/source.js +422 -0
- package/dist/plugin/aot/source.mjs +418 -0
- package/dist/plugin/aot/treeshake.d.ts +4 -0
- package/dist/plugin/aot/treeshake.js +95 -0
- package/dist/plugin/aot/treeshake.mjs +94 -0
- package/dist/plugin/aot/unplugin.d.ts +50 -0
- package/dist/plugin/aot/unplugin.js +64 -0
- package/dist/plugin/aot/unplugin.mjs +62 -0
- package/dist/plugin/aot/vite.d.ts +30 -0
- package/dist/plugin/aot/vite.js +34 -0
- package/dist/plugin/aot/vite.mjs +33 -0
- package/dist/plugin/aot/worker.d.ts +1 -0
- package/dist/plugin/aot/worker.js +28 -0
- package/dist/plugin/aot/worker.mjs +27 -0
- package/dist/plugin/auto-head.d.ts +6 -0
- package/dist/plugin/auto-head.js +38 -0
- package/dist/plugin/auto-head.mjs +36 -0
- package/dist/plugin/trace.d.ts +10 -0
- package/dist/plugin/trace.js +39 -0
- package/dist/plugin/trace.mjs +36 -0
- package/dist/plugin/websocket.d.ts +6 -0
- package/dist/plugin/websocket.js +61 -0
- package/dist/plugin/websocket.mjs +60 -0
- package/dist/route-table.d.ts +28 -0
- package/dist/route-table.js +64 -0
- package/dist/route-table.mjs +61 -0
- package/dist/schema-snapshot.d.ts +9 -0
- package/dist/schema-snapshot.js +271 -0
- package/dist/schema-snapshot.mjs +269 -0
- package/dist/sucrose.d.ts +28 -63
- package/dist/sucrose.js +814 -306
- package/dist/sucrose.mjs +805 -274
- package/dist/trace.d.ts +145 -130
- package/dist/trace.js +387 -135
- package/dist/trace.mjs +385 -113
- package/dist/type/bridge-live.d.ts +15 -0
- package/dist/type/bridge-live.js +39 -0
- package/dist/type/bridge-live.mjs +17 -0
- package/dist/type/bridge.d.ts +56 -0
- package/dist/type/bridge.js +180 -0
- package/dist/type/bridge.mjs +63 -0
- package/dist/type/coerce-plan.d.ts +38 -0
- package/dist/type/coerce-plan.js +107 -0
- package/dist/type/coerce-plan.mjs +98 -0
- package/dist/type/coerce.d.ts +43 -0
- package/dist/type/coerce.js +351 -0
- package/dist/type/coerce.mjs +339 -0
- package/dist/type/compat.d.ts +8 -0
- package/dist/type/compat.js +46 -0
- package/dist/type/compat.mjs +44 -0
- package/dist/type/constants.d.ts +25 -0
- package/dist/type/constants.js +36 -0
- package/dist/type/constants.mjs +32 -0
- package/dist/type/elysia/accelerate.d.ts +6 -0
- package/dist/type/elysia/accelerate.js +12 -0
- package/dist/type/elysia/accelerate.mjs +10 -0
- package/dist/type/elysia/array-buffer.d.ts +6 -0
- package/dist/type/elysia/array-buffer.js +27 -0
- package/dist/type/elysia/array-buffer.mjs +25 -0
- package/dist/type/elysia/array-string.d.ts +7 -0
- package/dist/type/elysia/array-string.js +28 -0
- package/dist/type/elysia/array-string.mjs +26 -0
- package/dist/type/elysia/array.d.ts +6 -0
- package/dist/type/elysia/array.js +32 -0
- package/dist/type/elysia/array.mjs +31 -0
- package/dist/type/elysia/boolean-string.d.ts +6 -0
- package/dist/type/elysia/boolean-string.js +24 -0
- package/dist/type/elysia/boolean-string.mjs +22 -0
- package/dist/type/elysia/boolean.d.ts +6 -0
- package/dist/type/elysia/boolean.js +20 -0
- package/dist/type/elysia/boolean.mjs +18 -0
- package/dist/type/elysia/cookie.d.ts +15 -0
- package/dist/type/elysia/cookie.js +51 -0
- package/dist/type/elysia/cookie.mjs +50 -0
- package/dist/type/elysia/date.d.ts +7 -0
- package/dist/type/elysia/date.js +98 -0
- package/dist/type/elysia/date.mjs +96 -0
- package/dist/type/elysia/file-type.d.ts +25 -0
- package/dist/type/elysia/file-type.js +81 -0
- package/dist/type/elysia/file-type.mjs +71 -0
- package/dist/type/elysia/file.d.ts +9 -0
- package/dist/type/elysia/file.js +64 -0
- package/dist/type/elysia/file.mjs +48 -0
- package/dist/type/elysia/files.d.ts +8 -0
- package/dist/type/elysia/files.js +45 -0
- package/dist/type/elysia/files.mjs +43 -0
- package/dist/type/elysia/form.d.ts +8 -0
- package/dist/type/elysia/form.js +17 -0
- package/dist/type/elysia/form.mjs +15 -0
- package/dist/type/elysia/integer-string.d.ts +7 -0
- package/dist/type/elysia/integer-string.js +40 -0
- package/dist/type/elysia/integer-string.mjs +38 -0
- package/dist/type/elysia/integer.d.ts +6 -0
- package/dist/type/elysia/integer.js +20 -0
- package/dist/type/elysia/integer.mjs +18 -0
- package/dist/type/elysia/intersect.d.ts +6 -0
- package/dist/type/elysia/intersect.js +20 -0
- package/dist/type/elysia/intersect.mjs +19 -0
- package/dist/type/elysia/maybe-empty.d.ts +7 -0
- package/dist/type/elysia/maybe-empty.js +21 -0
- package/dist/type/elysia/maybe-empty.mjs +19 -0
- package/dist/type/elysia/no-validate.d.ts +6 -0
- package/dist/type/elysia/no-validate.js +9 -0
- package/dist/type/elysia/no-validate.mjs +8 -0
- package/dist/type/elysia/nullable.d.ts +7 -0
- package/dist/type/elysia/nullable.js +15 -0
- package/dist/type/elysia/nullable.mjs +13 -0
- package/dist/type/elysia/number.d.ts +6 -0
- package/dist/type/elysia/number.js +20 -0
- package/dist/type/elysia/number.mjs +18 -0
- package/dist/type/elysia/numeric-enum.d.ts +11 -0
- package/dist/type/elysia/numeric-enum.js +26 -0
- package/dist/type/elysia/numeric-enum.mjs +24 -0
- package/dist/type/elysia/numeric.d.ts +7 -0
- package/dist/type/elysia/numeric.js +62 -0
- package/dist/type/elysia/numeric.mjs +60 -0
- package/dist/type/elysia/object-string.d.ts +7 -0
- package/dist/type/elysia/object-string.js +28 -0
- package/dist/type/elysia/object-string.mjs +26 -0
- package/dist/type/elysia/object.d.ts +6 -0
- package/dist/type/elysia/object.js +47 -0
- package/dist/type/elysia/object.mjs +46 -0
- package/dist/type/elysia/optional.d.ts +6 -0
- package/dist/type/elysia/optional.js +22 -0
- package/dist/type/elysia/optional.mjs +21 -0
- package/dist/type/elysia/string.d.ts +6 -0
- package/dist/type/elysia/string.js +43 -0
- package/dist/type/elysia/string.mjs +41 -0
- package/dist/type/elysia/uint8-array.d.ts +6 -0
- package/dist/type/elysia/uint8-array.js +27 -0
- package/dist/type/elysia/uint8-array.mjs +25 -0
- package/dist/type/elysia/union-enum.d.ts +8 -0
- package/dist/type/elysia/union-enum.js +31 -0
- package/dist/type/elysia/union-enum.mjs +29 -0
- package/dist/type/elysia/union.d.ts +6 -0
- package/dist/type/elysia/union.js +20 -0
- package/dist/type/elysia/union.mjs +19 -0
- package/dist/type/elysia/utils.d.ts +53 -0
- package/dist/type/elysia/utils.js +98 -0
- package/dist/type/elysia/utils.mjs +88 -0
- package/dist/type/exports.d.ts +36 -0
- package/dist/type/exports.js +68 -0
- package/dist/type/exports.mjs +36 -0
- package/dist/type/index.d.ts +13 -0
- package/dist/type/index.js +81 -0
- package/dist/type/index.mjs +68 -0
- package/dist/type/shared.d.ts +27 -0
- package/dist/type/shared.js +171 -0
- package/dist/type/shared.mjs +161 -0
- package/dist/type/types.d.ts +206 -0
- package/dist/type/types.js +1 -0
- package/dist/type/types.mjs +1 -0
- package/dist/type/utils.d.ts +7 -0
- package/dist/type/utils.js +43 -0
- package/dist/type/utils.mjs +41 -0
- package/dist/type/validator/clean-safe.d.ts +8 -0
- package/dist/type/validator/clean-safe.js +82 -0
- package/dist/type/validator/clean-safe.mjs +77 -0
- package/dist/type/validator/custom-error.d.ts +10 -0
- package/dist/type/validator/custom-error.js +191 -0
- package/dist/type/validator/custom-error.mjs +188 -0
- package/dist/type/validator/default-precompute.d.ts +26 -0
- package/dist/type/validator/default-precompute.js +432 -0
- package/dist/type/validator/default-precompute.mjs +421 -0
- package/dist/type/validator/exact-mirror.d.ts +7 -0
- package/dist/type/validator/exact-mirror.js +19 -0
- package/dist/type/validator/exact-mirror.mjs +15 -0
- package/dist/type/validator/frozen-check.d.ts +11 -0
- package/dist/type/validator/frozen-check.js +20 -0
- package/dist/type/validator/frozen-check.mjs +19 -0
- package/dist/type/validator/index.d.ts +32 -0
- package/dist/type/validator/index.js +657 -0
- package/dist/type/validator/index.mjs +651 -0
- package/dist/type/validator/string-codec-aot.d.ts +8 -0
- package/dist/type/validator/string-codec-aot.js +68 -0
- package/dist/type/validator/string-codec-aot.mjs +66 -0
- package/dist/type/validator/validator-cache.d.ts +26 -0
- package/dist/type/validator/validator-cache.js +247 -0
- package/dist/type/validator/validator-cache.mjs +242 -0
- package/dist/types.d.ts +938 -1235
- package/dist/types.js +1 -14
- package/dist/types.mjs +1 -0
- package/dist/universal/constants.d.ts +6 -0
- package/dist/universal/constants.js +19 -0
- package/dist/universal/constants.mjs +15 -0
- package/dist/universal/env.d.ts +5 -1
- package/dist/universal/env.js +12 -26
- package/dist/universal/env.mjs +10 -5
- package/dist/universal/file.d.ts +55 -86
- package/dist/universal/file.js +116 -157
- package/dist/universal/file.mjs +111 -132
- package/dist/universal/index.d.ts +5 -3
- package/dist/universal/index.js +8 -27
- package/dist/universal/index.mjs +4 -5
- package/dist/universal/is-production.d.ts +5 -0
- package/dist/universal/is-production.js +10 -0
- package/dist/universal/is-production.mjs +8 -0
- package/dist/universal/server.d.ts +318 -313
- package/dist/universal/server.js +1 -14
- package/dist/universal/server.mjs +1 -0
- package/dist/utils.d.ts +162 -191
- package/dist/utils.js +732 -693
- package/dist/utils.mjs +683 -631
- package/dist/validator/index.d.ts +63 -0
- package/dist/validator/index.js +299 -0
- package/dist/validator/index.mjs +296 -0
- package/dist/validator/route.d.ts +32 -0
- package/dist/validator/route.js +51 -0
- package/dist/validator/route.mjs +50 -0
- package/dist/ws/context.d.ts +49 -0
- package/dist/ws/context.js +152 -0
- package/dist/ws/context.mjs +150 -0
- package/dist/ws/index.d.ts +5 -77
- package/dist/ws/index.js +11 -180
- package/dist/ws/index.mjs +5 -157
- package/dist/ws/parser.d.ts +5 -0
- package/dist/ws/parser.js +69 -0
- package/dist/ws/parser.mjs +66 -0
- package/dist/ws/route.d.ts +16 -0
- package/dist/ws/route.js +560 -0
- package/dist/ws/route.mjs +554 -0
- package/dist/ws/types.d.ts +154 -57
- package/dist/ws/types.js +1 -14
- package/dist/ws/types.mjs +1 -0
- package/package.json +179 -120
- package/bunfig.toml +0 -2
- package/dist/adapter/bun/compose.d.ts +0 -3
- package/dist/adapter/bun/compose.js +0 -90
- package/dist/adapter/bun/compose.mjs +0 -74
- package/dist/adapter/bun/handler-native.d.ts +0 -3
- package/dist/adapter/bun/handler-native.js +0 -42
- package/dist/adapter/bun/handler-native.mjs +0 -22
- package/dist/adapter/bun/handler.d.ts +0 -7
- package/dist/adapter/bun/handler.js +0 -363
- package/dist/adapter/bun/handler.mjs +0 -346
- package/dist/adapter/cloudflare-worker/index.d.ts +0 -20
- package/dist/adapter/cloudflare-worker/index.js +0 -59
- package/dist/adapter/cloudflare-worker/index.mjs +0 -39
- package/dist/compose.d.ts +0 -30
- package/dist/compose.js +0 -1324
- package/dist/compose.mjs +0 -1336
- package/dist/cookies.d.ts +0 -158
- package/dist/cookies.js +0 -250
- package/dist/cookies.mjs +0 -221
- package/dist/dynamic-handle.d.ts +0 -15
- package/dist/dynamic-handle.js +0 -521
- package/dist/dynamic-handle.mjs +0 -509
- package/dist/formats.d.ts +0 -79
- package/dist/formats.js +0 -153
- package/dist/formats.mjs +0 -132
- package/dist/manifest.d.ts +0 -0
- package/dist/manifest.js +0 -1
- package/dist/manifest.mjs +0 -0
- package/dist/replace-schema.d.ts +0 -60
- package/dist/replace-schema.js +0 -140
- package/dist/replace-schema.mjs +0 -115
- package/dist/schema.d.ts +0 -107
- package/dist/schema.js +0 -833
- package/dist/schema.mjs +0 -814
- package/dist/type-system/format.d.ts +0 -55
- package/dist/type-system/format.js +0 -197
- package/dist/type-system/format.mjs +0 -175
- package/dist/type-system/index.d.ts +0 -45
- package/dist/type-system/index.js +0 -406
- package/dist/type-system/index.mjs +0 -394
- package/dist/type-system/types.d.ts +0 -155
- package/dist/type-system/types.js +0 -14
- package/dist/type-system/types.mjs +0 -0
- package/dist/type-system/utils.d.ts +0 -62
- package/dist/type-system/utils.js +0 -141
- package/dist/type-system/utils.mjs +0 -111
- package/dist/universal/request.d.ts +0 -29
- package/dist/universal/request.js +0 -126
- package/dist/universal/request.mjs +0 -105
- package/dist/universal/types.d.ts +0 -124
- package/dist/universal/types.js +0 -41
- package/dist/universal/types.mjs +0 -19
- package/dist/universal/utils.d.ts +0 -3
- package/dist/universal/utils.js +0 -41
- package/dist/universal/utils.mjs +0 -18
- package/dist/ws/bun.d.ts +0 -419
- package/dist/ws/bun.js +0 -14
- package/dist/ws/bun.mjs +0 -0
- package/knip.json +0 -22
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
import { flattenChain, isNotEmpty, nullObject, requestId } from "../utils.mjs";
|
|
2
|
+
import { isProduction } from "../universal/is-production.mjs";
|
|
3
|
+
import { NotFound, PROBLEM_JSON, internalServerErrorResponse } from "../error.mjs";
|
|
4
|
+
import { handleSet, materializeSetHeaders } from "../adapter/utils.mjs";
|
|
5
|
+
import { NOT_FOUND_BODY, emptyResponse, getAsyncIndexes, getNotFound } from "./utils.mjs";
|
|
6
|
+
import { origin } from "../adapter/origin.mjs";
|
|
7
|
+
import { defaultAdapter } from "../adapter/constants.mjs";
|
|
8
|
+
import { createContext } from "../context.mjs";
|
|
9
|
+
import { createErrorHandler } from "./error.mjs";
|
|
10
|
+
import decodeComponent from "deuri";
|
|
11
|
+
|
|
12
|
+
//#region src/handler/fetch.ts
|
|
13
|
+
function extractPath(url, context, pathStart) {
|
|
14
|
+
const s = url.indexOf("/", pathStart);
|
|
15
|
+
const q = context.qi = url.indexOf("?", s);
|
|
16
|
+
return context.path = q === -1 ? url.slice(s) : url.substring(s, q);
|
|
17
|
+
}
|
|
18
|
+
function notFound(context) {
|
|
19
|
+
const set = context.set;
|
|
20
|
+
if (set.cookie || isNotEmpty(set.headers)) {
|
|
21
|
+
handleSet(set);
|
|
22
|
+
if (!set.headers["content-type"]) materializeSetHeaders(set)["content-type"] = PROBLEM_JSON;
|
|
23
|
+
return new Response(NOT_FOUND_BODY, {
|
|
24
|
+
status: 404,
|
|
25
|
+
headers: set.headers
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return getNotFound();
|
|
29
|
+
}
|
|
30
|
+
function decodeParams(params) {
|
|
31
|
+
for (const key in params) {
|
|
32
|
+
const value = params[key];
|
|
33
|
+
if (value.indexOf("%") !== -1) params[key] = decodeComponent(value) ?? value;
|
|
34
|
+
}
|
|
35
|
+
return params;
|
|
36
|
+
}
|
|
37
|
+
const notFoundBody = Object.freeze({ code: "NOT_FOUND" });
|
|
38
|
+
function finalizeError(context, handleError, afterResponse, error) {
|
|
39
|
+
if (error === notFoundBody) error = new NotFound();
|
|
40
|
+
let resp;
|
|
41
|
+
try {
|
|
42
|
+
resp = handleError(context, error);
|
|
43
|
+
} catch (errorPipelineThrow) {
|
|
44
|
+
if (!isProduction()) console.error(errorPipelineThrow);
|
|
45
|
+
resp = internalServerErrorResponse(error);
|
|
46
|
+
}
|
|
47
|
+
if (resp instanceof Promise) return resp.then((r) => {
|
|
48
|
+
afterResponse?.(context);
|
|
49
|
+
return r;
|
|
50
|
+
}, (errorPipelineThrow) => {
|
|
51
|
+
if (!isProduction()) console.error(errorPipelineThrow);
|
|
52
|
+
const r = internalServerErrorResponse(error);
|
|
53
|
+
afterResponse?.(context);
|
|
54
|
+
return r;
|
|
55
|
+
});
|
|
56
|
+
afterResponse?.(context);
|
|
57
|
+
return resp;
|
|
58
|
+
}
|
|
59
|
+
const catchError = (context, handleError, afterResponse) => (error) => finalizeError(context, handleError, afterResponse, error);
|
|
60
|
+
function dispatchResult(result, context, handleError, afterResponse) {
|
|
61
|
+
if (result instanceof Promise) return result.catch(catchError(context, handleError, afterResponse));
|
|
62
|
+
if (typeof result?.then === "function") return Promise.resolve(result).catch(catchError(context, handleError, afterResponse));
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
function findRoute(context, request, map, router, hasError, handleError, afterResponse, strictPath, hasWS, hasDynamicWS) {
|
|
66
|
+
const path = context.path;
|
|
67
|
+
if (hasWS && request.method === "GET") {
|
|
68
|
+
const handler = map["WS"]?.[path];
|
|
69
|
+
const found = handler === void 0 && hasDynamicWS ? router?.find("WS", path) : void 0;
|
|
70
|
+
if (handler !== void 0 || found) {
|
|
71
|
+
const upgrade = request.headers.get("upgrade");
|
|
72
|
+
if (upgrade && upgrade.toLowerCase() === "websocket") {
|
|
73
|
+
if (handler) {
|
|
74
|
+
const r = handler(context);
|
|
75
|
+
return r instanceof Promise ? r.catch(catchError(context, handleError, afterResponse)) : r;
|
|
76
|
+
}
|
|
77
|
+
context.params = path.indexOf("%") === -1 ? found.params : decodeParams(found.params);
|
|
78
|
+
const r = found.store(context);
|
|
79
|
+
return r instanceof Promise ? r.catch(catchError(context, handleError, afterResponse)) : r;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const method = request.method;
|
|
84
|
+
const methodMap = map[method];
|
|
85
|
+
let handler = methodMap?.[path];
|
|
86
|
+
if (!handler) if (!strictPath && path.length > 1 && path.charCodeAt(path.length - 1) === 47) {
|
|
87
|
+
const loose = path.slice(0, -1);
|
|
88
|
+
handler = methodMap?.[loose];
|
|
89
|
+
if (!handler) {
|
|
90
|
+
const anyMap = map["*"];
|
|
91
|
+
handler = anyMap?.[path] ?? anyMap?.[loose];
|
|
92
|
+
}
|
|
93
|
+
} else handler = map["*"]?.[path];
|
|
94
|
+
if (handler) return dispatchResult(handler(context), context, handleError, afterResponse);
|
|
95
|
+
const found = router?.find(method, path) ?? router?.find("*", path);
|
|
96
|
+
if (found) {
|
|
97
|
+
context.params = path.indexOf("%") === -1 ? found.params : decodeParams(found.params);
|
|
98
|
+
return dispatchResult(found.store(context), context, handleError, afterResponse);
|
|
99
|
+
}
|
|
100
|
+
if (hasError) return finalizeError(context, handleError, afterResponse, notFoundBody);
|
|
101
|
+
afterResponse?.(context, 404);
|
|
102
|
+
return notFound(context);
|
|
103
|
+
}
|
|
104
|
+
function createFetchHandler(app) {
|
|
105
|
+
const Context = createContext(app);
|
|
106
|
+
const map = app["~map"] ?? nullObject();
|
|
107
|
+
const router = app["~router"];
|
|
108
|
+
const hasWS = !!app["~hasWS"];
|
|
109
|
+
const hasDynamicWS = hasWS && !!app["~hasDynamicWS"];
|
|
110
|
+
const strictPath = !!app["~config"]?.strictPath;
|
|
111
|
+
const pathStart = app["~config"]?.handler?.standardHostname === false ? 7 : 11;
|
|
112
|
+
const hook = flattenChain(app["~hookChain"]);
|
|
113
|
+
const hasError = !!hook?.error;
|
|
114
|
+
const abortSignal = app["~config"]?.abortSignal !== false;
|
|
115
|
+
/**
|
|
116
|
+
* Arm `context['~sig']` unless this request is provably the untouched
|
|
117
|
+
* `Request` the Bun adapter received, in which case materializing
|
|
118
|
+
* `request.signal` is deferred to the first suspension
|
|
119
|
+
* @see `../adapter/origin`
|
|
120
|
+
*
|
|
121
|
+
* Anything without provenance, `app.handle`, every non-Bun adapter, or a
|
|
122
|
+
* `.wrap()` HOC that substituted or delayed the request, falls back to
|
|
123
|
+
* today's eager behaviour
|
|
124
|
+
*/
|
|
125
|
+
const armEager = (request, context) => {
|
|
126
|
+
if (!abortSignal || request === origin.request) return false;
|
|
127
|
+
return (context["~sig"] = request.signal).aborted;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Post-suspension check: arm if nobody has yet, then read. Only emitted on
|
|
131
|
+
* lanes that actually awaited, so a deferred request that never suspends
|
|
132
|
+
* never reaches it.
|
|
133
|
+
*/
|
|
134
|
+
const armedAbort = (request, context) => abortSignal && (context["~sig"] ??= request.signal).aborted === true;
|
|
135
|
+
const baseMapResponse = (app["~config"]?.adapter ?? defaultAdapter).response.map;
|
|
136
|
+
const mapResponseHooks = hook?.mapResponse;
|
|
137
|
+
const mapResponse = mapResponseHooks?.length ? (response, set, context) => {
|
|
138
|
+
if (!context) return baseMapResponse(response, set, void 0, true);
|
|
139
|
+
context.responseValue = response;
|
|
140
|
+
const request = context.request;
|
|
141
|
+
const run = (i) => {
|
|
142
|
+
for (; i < mapResponseHooks.length; i++) {
|
|
143
|
+
const result = mapResponseHooks[i](context);
|
|
144
|
+
if (result instanceof Promise) return result.then((resolved) => {
|
|
145
|
+
if (resolved !== void 0) return baseMapResponse(resolved, set, request, true);
|
|
146
|
+
return run(i + 1);
|
|
147
|
+
});
|
|
148
|
+
if (result !== void 0) return baseMapResponse(result, set, request, true);
|
|
149
|
+
}
|
|
150
|
+
return baseMapResponse(response, set, request, true);
|
|
151
|
+
};
|
|
152
|
+
return run(0);
|
|
153
|
+
} : (response, set, context) => baseMapResponse(response, set, context?.request, true);
|
|
154
|
+
const handleError = createErrorHandler(hook?.error, mapResponse, void 0, app["~config"]?.allowUnsafeValidationDetails);
|
|
155
|
+
const traceHandlers = hook?.trace;
|
|
156
|
+
const hasTrace = !!traceHandlers?.length;
|
|
157
|
+
const traceProvider = hasTrace ? app["~resolvedCapability"]("trace") : void 0;
|
|
158
|
+
const tracePhases = hasTrace ? traceProvider.unionTracePhases(traceHandlers) : null;
|
|
159
|
+
const traceRequestPhase = hasTrace && (tracePhases === null || tracePhases.has("request"));
|
|
160
|
+
const traceAfterResponsePhase = hasTrace && (tracePhases === null || tracePhases.has("afterResponse"));
|
|
161
|
+
const tracerFactories = hasTrace ? traceHandlers.map((fn) => traceProvider.createTracer(fn)) : void 0;
|
|
162
|
+
const afterResponses = hook?.afterResponse;
|
|
163
|
+
const afterResponse = (context, status) => {
|
|
164
|
+
if (context._arf) return;
|
|
165
|
+
const queue = context["~afterResponse"];
|
|
166
|
+
if (!afterResponses?.length && !traceAfterResponsePhase && !queue?.length) return;
|
|
167
|
+
context._arf = true;
|
|
168
|
+
if (status !== void 0) context.set.status = status;
|
|
169
|
+
queueMicrotask(async () => {
|
|
170
|
+
if (afterResponses?.length || queue?.length) materializeSetHeaders(context.set);
|
|
171
|
+
if (afterResponses) for (let i = 0; i < afterResponses.length; i++) try {
|
|
172
|
+
await afterResponses[i](context);
|
|
173
|
+
} catch (e) {
|
|
174
|
+
console.error(e);
|
|
175
|
+
}
|
|
176
|
+
if (queue) for (let i = 0; i < queue.length; i++) try {
|
|
177
|
+
await queue[i](context);
|
|
178
|
+
} catch (e) {
|
|
179
|
+
console.error(e);
|
|
180
|
+
}
|
|
181
|
+
if (traceAfterResponsePhase) {
|
|
182
|
+
let cache = context.trace;
|
|
183
|
+
if (!cache && tracerFactories) {
|
|
184
|
+
context.rid ??= requestId();
|
|
185
|
+
cache = tracerFactories.map((f) => f(context));
|
|
186
|
+
context.trace = cache;
|
|
187
|
+
}
|
|
188
|
+
if (cache) for (let i = 0; i < cache.length; i++) {
|
|
189
|
+
const fast = cache[i].b(7, afterResponses?.length ?? 0);
|
|
190
|
+
if (fast) {
|
|
191
|
+
cache[i].r(fast);
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
cache[i].begin(7, {
|
|
195
|
+
id: context.rid ?? "",
|
|
196
|
+
event: "afterResponse",
|
|
197
|
+
name: "afterResponse",
|
|
198
|
+
begin: performance.now(),
|
|
199
|
+
total: afterResponses?.length ?? 0
|
|
200
|
+
}).resolve();
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
};
|
|
205
|
+
app["~finalizeError"] = (context, error) => finalizeError(context, handleError, afterResponse, error);
|
|
206
|
+
if (traceRequestPhase) {
|
|
207
|
+
const onRequests = hook?.request ?? [];
|
|
208
|
+
const asyncIndexes = onRequests.length ? getAsyncIndexes(onRequests) : void 0;
|
|
209
|
+
return async (request, server) => {
|
|
210
|
+
const context = new Context(request);
|
|
211
|
+
materializeSetHeaders(context.set);
|
|
212
|
+
if (armEager(request, context)) return emptyResponse.clone();
|
|
213
|
+
extractPath(request.url, context, pathStart);
|
|
214
|
+
context.server = server ?? null;
|
|
215
|
+
context.rid = requestId();
|
|
216
|
+
const traceLength = tracerFactories.length;
|
|
217
|
+
const trace = new Array(traceLength);
|
|
218
|
+
for (let i = 0; i < traceLength; i++) trace[i] = tracerFactories[i](context);
|
|
219
|
+
context.trace = trace;
|
|
220
|
+
const requestReports = new Array(traceLength);
|
|
221
|
+
for (let i = 0; i < traceLength; i++) requestReports[i] = trace[i].b(0, onRequests.length) || trace[i].begin(0, {
|
|
222
|
+
id: context.rid,
|
|
223
|
+
event: "request",
|
|
224
|
+
name: "request",
|
|
225
|
+
begin: performance.now(),
|
|
226
|
+
total: onRequests.length
|
|
227
|
+
});
|
|
228
|
+
try {
|
|
229
|
+
const endReports = new Array(traceLength);
|
|
230
|
+
for (let i = 0; i < onRequests.length; i++) {
|
|
231
|
+
for (let j = 0; j < traceLength; j++) endReports[j] = requestReports[j].resolveChild?.shift?.()?.({
|
|
232
|
+
id: context.rid,
|
|
233
|
+
event: "request",
|
|
234
|
+
name: onRequests[i].name || "anonymous",
|
|
235
|
+
begin: performance.now()
|
|
236
|
+
});
|
|
237
|
+
const result = asyncIndexes?.[i] ? await onRequests[i](context) : onRequests[i](context);
|
|
238
|
+
for (let i = 0; i < traceLength; i++) endReports[i]?.();
|
|
239
|
+
if (armedAbort(request, context)) {
|
|
240
|
+
for (let j = 0; j < traceLength; j++) trace[j].r(requestReports[j]);
|
|
241
|
+
return emptyResponse.clone();
|
|
242
|
+
}
|
|
243
|
+
if (result !== void 0) {
|
|
244
|
+
for (let j = 0; j < traceLength; j++) trace[j].r(requestReports[j]);
|
|
245
|
+
const response = await mapResponse(result, context.set, context);
|
|
246
|
+
afterResponse?.(context);
|
|
247
|
+
return response;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
for (let i = 0; i < traceLength; i++) trace[i].r(requestReports[i]);
|
|
251
|
+
return await findRoute(context, request, map, router, hasError, handleError, afterResponse, strictPath, hasWS, hasDynamicWS);
|
|
252
|
+
} catch (error) {
|
|
253
|
+
for (let i = 0; i < traceLength; i++) trace[i].r(requestReports[i], error);
|
|
254
|
+
return finalizeError(context, handleError, afterResponse, error);
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
if (hook?.request) {
|
|
259
|
+
const onRequests = hook.request;
|
|
260
|
+
const asyncIndexes = getAsyncIndexes(onRequests);
|
|
261
|
+
if (asyncIndexes) return async (request, server) => {
|
|
262
|
+
const context = new Context(request);
|
|
263
|
+
materializeSetHeaders(context.set);
|
|
264
|
+
if (armEager(request, context)) return emptyResponse.clone();
|
|
265
|
+
extractPath(request.url, context, pathStart);
|
|
266
|
+
context.server = server ?? null;
|
|
267
|
+
try {
|
|
268
|
+
for (let i = 0; i < onRequests.length; i++) {
|
|
269
|
+
let result = asyncIndexes?.[i] ? await onRequests[i](context) : onRequests[i](context);
|
|
270
|
+
if (result instanceof Promise) result = await result;
|
|
271
|
+
if (armedAbort(request, context)) return emptyResponse.clone();
|
|
272
|
+
if (result !== void 0) {
|
|
273
|
+
const response = await mapResponse(result, context.set, context);
|
|
274
|
+
afterResponse?.(context);
|
|
275
|
+
return response;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return findRoute(context, request, map, router, hasError, handleError, afterResponse, strictPath, hasWS, hasDynamicWS);
|
|
279
|
+
} catch (error) {
|
|
280
|
+
return finalizeError(context, handleError, afterResponse, error);
|
|
281
|
+
}
|
|
282
|
+
};
|
|
283
|
+
return (request, server) => {
|
|
284
|
+
const context = new Context(request);
|
|
285
|
+
materializeSetHeaders(context.set);
|
|
286
|
+
if (armEager(request, context)) return emptyResponse.clone();
|
|
287
|
+
extractPath(request.url, context, pathStart);
|
|
288
|
+
context.server = server ?? null;
|
|
289
|
+
try {
|
|
290
|
+
for (let i = 0; i < onRequests.length; i++) {
|
|
291
|
+
const result = onRequests[i](context);
|
|
292
|
+
if (abortSignal && context["~sig"]?.aborted) return emptyResponse.clone();
|
|
293
|
+
if (result !== void 0) {
|
|
294
|
+
const response = mapResponse(result, context.set, context);
|
|
295
|
+
if (response instanceof Promise) return response.then((response) => {
|
|
296
|
+
afterResponse?.(context);
|
|
297
|
+
return response;
|
|
298
|
+
}, catchError(context, handleError, afterResponse));
|
|
299
|
+
afterResponse?.(context);
|
|
300
|
+
return response;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return findRoute(context, request, map, router, hasError, handleError, afterResponse, strictPath, hasWS, hasDynamicWS);
|
|
304
|
+
} catch (error) {
|
|
305
|
+
return finalizeError(context, handleError, afterResponse, error);
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
return (request, server) => {
|
|
310
|
+
const context = new Context(request);
|
|
311
|
+
const path = extractPath(request.url, context, pathStart);
|
|
312
|
+
context.server = server ?? null;
|
|
313
|
+
const method = request.method;
|
|
314
|
+
if (hasWS && method === "GET") {
|
|
315
|
+
const handler = map["WS"]?.[path];
|
|
316
|
+
const found = handler === void 0 && hasDynamicWS ? router?.find("WS", path) : void 0;
|
|
317
|
+
if (handler !== void 0 || found) {
|
|
318
|
+
const upgrade = request.headers.get("upgrade");
|
|
319
|
+
if (upgrade && upgrade.toLowerCase() === "websocket") try {
|
|
320
|
+
if (handler) {
|
|
321
|
+
const r = handler(context);
|
|
322
|
+
return r instanceof Promise ? r.catch(catchError(context, handleError, afterResponse)) : r;
|
|
323
|
+
}
|
|
324
|
+
context.params = path.indexOf("%") === -1 ? found.params : decodeParams(found.params);
|
|
325
|
+
const r = found.store(context);
|
|
326
|
+
return r instanceof Promise ? r.catch(catchError(context, handleError, afterResponse)) : r;
|
|
327
|
+
} catch (error) {
|
|
328
|
+
return finalizeError(context, handleError, afterResponse, error);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
try {
|
|
333
|
+
const methodMap = map[method];
|
|
334
|
+
let handler = methodMap?.[path];
|
|
335
|
+
if (handler) return dispatchResult(handler(context), context, handleError, afterResponse);
|
|
336
|
+
if (!strictPath && path.length > 1 && path.charCodeAt(path.length - 1) === 47) {
|
|
337
|
+
const loose = path.slice(0, -1);
|
|
338
|
+
handler = methodMap?.[loose];
|
|
339
|
+
if (!handler) {
|
|
340
|
+
const anyMap = map["*"];
|
|
341
|
+
handler = anyMap?.[path] ?? anyMap?.[loose];
|
|
342
|
+
}
|
|
343
|
+
} else handler = map["*"]?.[path];
|
|
344
|
+
if (handler) return dispatchResult(handler(context), context, handleError, afterResponse);
|
|
345
|
+
const result = router?.find(method, path) ?? router?.find("*", path);
|
|
346
|
+
if (result) {
|
|
347
|
+
context.params = path.indexOf("%") === -1 ? result.params : decodeParams(result.params);
|
|
348
|
+
return dispatchResult(result.store(context), context, handleError, afterResponse);
|
|
349
|
+
}
|
|
350
|
+
} catch (error) {
|
|
351
|
+
return finalizeError(context, handleError, afterResponse, error);
|
|
352
|
+
}
|
|
353
|
+
if (hasError) return finalizeError(context, handleError, afterResponse, notFoundBody);
|
|
354
|
+
afterResponse?.(context, 404);
|
|
355
|
+
return notFound(context);
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
function applyHoc(app, fetch) {
|
|
359
|
+
const hoc = app["~ext"]?.hoc;
|
|
360
|
+
if (!hoc?.length) return fetch;
|
|
361
|
+
let handler = fetch;
|
|
362
|
+
for (let i = hoc.length - 1; i >= 0; i--) handler = hoc[i](handler);
|
|
363
|
+
return handler;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
//#endregion
|
|
367
|
+
export { applyHoc, createFetchHandler };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MaybePromise } from "../types.js";
|
|
2
|
+
import { Context } from "../context.js";
|
|
3
|
+
import { AnyElysia } from "../base.js";
|
|
4
|
+
|
|
5
|
+
//#region src/handler/utils.d.ts
|
|
6
|
+
declare const emptyResponse: Response | {
|
|
7
|
+
clone: () => Response;
|
|
8
|
+
};
|
|
9
|
+
declare const NOT_FOUND_BODY: string;
|
|
10
|
+
declare const getNotFound: () => Response;
|
|
11
|
+
declare function forwardError<T>(value: T): T;
|
|
12
|
+
declare function finalizeRouteError(app: AnyElysia, context: Partial<Context>, error: unknown): MaybePromise<Response>;
|
|
13
|
+
declare function getAsyncIndexes(onRequests: Function[]): (true | undefined)[] | undefined;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { NOT_FOUND_BODY, emptyResponse, finalizeRouteError, forwardError, getAsyncIndexes, getNotFound };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_universal_constants = require('../universal/constants.js');
|
|
3
|
+
const require_error = require('../error.js');
|
|
4
|
+
const require_compile_utils = require('../compile/utils.js');
|
|
5
|
+
|
|
6
|
+
//#region src/handler/utils.ts
|
|
7
|
+
const emptyResponse = require_universal_constants.isCloudflareWorker ? { clone: () => new Response(null) } : new Response(null);
|
|
8
|
+
function cachedResponse(body, status, headers) {
|
|
9
|
+
let cached;
|
|
10
|
+
return () => require_universal_constants.isCloudflareWorker ? new Response(body, {
|
|
11
|
+
status,
|
|
12
|
+
headers
|
|
13
|
+
}) : (cached ??= new Response(body, {
|
|
14
|
+
status,
|
|
15
|
+
headers
|
|
16
|
+
})).clone();
|
|
17
|
+
}
|
|
18
|
+
const NOT_FOUND_BODY = JSON.stringify({
|
|
19
|
+
type: "not-found",
|
|
20
|
+
title: "Not Found",
|
|
21
|
+
status: 404
|
|
22
|
+
});
|
|
23
|
+
const getNotFound = cachedResponse(NOT_FOUND_BODY, 404, { "content-type": require_error.PROBLEM_JSON });
|
|
24
|
+
function forwardError(value) {
|
|
25
|
+
if (value instanceof Error) throw value;
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
function finalizeRouteError(app, context, error) {
|
|
29
|
+
const finalize = app["~finalizeError"];
|
|
30
|
+
if (!finalize) throw error;
|
|
31
|
+
return finalize(context, error);
|
|
32
|
+
}
|
|
33
|
+
function getAsyncIndexes(onRequests) {
|
|
34
|
+
let asyncIndexes;
|
|
35
|
+
for (let i = 0; i < onRequests.length; i++) if (require_compile_utils.isAsyncFunction(onRequests[i]) || require_compile_utils.mayReturnPromise(onRequests[i])) {
|
|
36
|
+
asyncIndexes ??= new Array(onRequests.length);
|
|
37
|
+
asyncIndexes[i] = true;
|
|
38
|
+
}
|
|
39
|
+
return asyncIndexes;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
//#endregion
|
|
43
|
+
exports.NOT_FOUND_BODY = NOT_FOUND_BODY;
|
|
44
|
+
exports.emptyResponse = emptyResponse;
|
|
45
|
+
exports.finalizeRouteError = finalizeRouteError;
|
|
46
|
+
exports.forwardError = forwardError;
|
|
47
|
+
exports.getAsyncIndexes = getAsyncIndexes;
|
|
48
|
+
exports.getNotFound = getNotFound;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { isCloudflareWorker } from "../universal/constants.mjs";
|
|
2
|
+
import { PROBLEM_JSON } from "../error.mjs";
|
|
3
|
+
import { isAsyncFunction, mayReturnPromise } from "../compile/utils.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/handler/utils.ts
|
|
6
|
+
const emptyResponse = isCloudflareWorker ? { clone: () => new Response(null) } : new Response(null);
|
|
7
|
+
function cachedResponse(body, status, headers) {
|
|
8
|
+
let cached;
|
|
9
|
+
return () => isCloudflareWorker ? new Response(body, {
|
|
10
|
+
status,
|
|
11
|
+
headers
|
|
12
|
+
}) : (cached ??= new Response(body, {
|
|
13
|
+
status,
|
|
14
|
+
headers
|
|
15
|
+
})).clone();
|
|
16
|
+
}
|
|
17
|
+
const NOT_FOUND_BODY = JSON.stringify({
|
|
18
|
+
type: "not-found",
|
|
19
|
+
title: "Not Found",
|
|
20
|
+
status: 404
|
|
21
|
+
});
|
|
22
|
+
const getNotFound = cachedResponse(NOT_FOUND_BODY, 404, { "content-type": PROBLEM_JSON });
|
|
23
|
+
function forwardError(value) {
|
|
24
|
+
if (value instanceof Error) throw value;
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
function finalizeRouteError(app, context, error) {
|
|
28
|
+
const finalize = app["~finalizeError"];
|
|
29
|
+
if (!finalize) throw error;
|
|
30
|
+
return finalize(context, error);
|
|
31
|
+
}
|
|
32
|
+
function getAsyncIndexes(onRequests) {
|
|
33
|
+
let asyncIndexes;
|
|
34
|
+
for (let i = 0; i < onRequests.length; i++) if (isAsyncFunction(onRequests[i]) || mayReturnPromise(onRequests[i])) {
|
|
35
|
+
asyncIndexes ??= new Array(onRequests.length);
|
|
36
|
+
asyncIndexes[i] = true;
|
|
37
|
+
}
|
|
38
|
+
return asyncIndexes;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
export { NOT_FOUND_BODY, emptyResponse, finalizeRouteError, forwardError, getAsyncIndexes, getNotFound };
|