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
package/dist/dynamic-handle.mjs
DELETED
|
@@ -1,509 +0,0 @@
|
|
|
1
|
-
import { TransformDecodeError } from "@sinclair/typebox/value";
|
|
2
|
-
import { parseCookie } from "./cookies.mjs";
|
|
3
|
-
import {
|
|
4
|
-
ElysiaCustomStatusResponse,
|
|
5
|
-
NotFoundError,
|
|
6
|
-
status,
|
|
7
|
-
ValidationError
|
|
8
|
-
} from "./error.mjs";
|
|
9
|
-
import { parseQuery } from "./parse-query.mjs";
|
|
10
|
-
import { getSchemaProperties } from "./schema.mjs";
|
|
11
|
-
import { hasSetImmediate, redirect, StatusMap, signCookie } from "./utils.mjs";
|
|
12
|
-
const ARRAY_INDEX_REGEX = /^(.+)\[(\d+)\]$/, DANGEROUS_KEYS = /* @__PURE__ */ new Set(["__proto__", "constructor", "prototype"]), isDangerousKey = (key) => {
|
|
13
|
-
if (DANGEROUS_KEYS.has(key)) return !0;
|
|
14
|
-
const match = key.match(ARRAY_INDEX_REGEX);
|
|
15
|
-
return match ? DANGEROUS_KEYS.has(match[1]) : !1;
|
|
16
|
-
}, parseArrayKey = (key) => {
|
|
17
|
-
const match = key.match(ARRAY_INDEX_REGEX);
|
|
18
|
-
return match ? {
|
|
19
|
-
name: match[1],
|
|
20
|
-
index: parseInt(match[2], 10)
|
|
21
|
-
} : null;
|
|
22
|
-
}, parseObjectString = (entry) => {
|
|
23
|
-
if (!(typeof entry != "string" || entry.charCodeAt(0) !== 123))
|
|
24
|
-
try {
|
|
25
|
-
const parsed = JSON.parse(entry);
|
|
26
|
-
if (parsed && typeof parsed == "object" && !Array.isArray(parsed))
|
|
27
|
-
return parsed;
|
|
28
|
-
} catch {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
}, setNestedValue = (obj, path, value) => {
|
|
32
|
-
const keys = path.split("."), lastKey = keys.pop();
|
|
33
|
-
if (isDangerousKey(lastKey) || keys.some(isDangerousKey)) return;
|
|
34
|
-
let current = obj;
|
|
35
|
-
for (const key of keys) {
|
|
36
|
-
const arrayInfo2 = parseArrayKey(key);
|
|
37
|
-
if (arrayInfo2) {
|
|
38
|
-
Array.isArray(current[arrayInfo2.name]) || (current[arrayInfo2.name] = []);
|
|
39
|
-
const existing = current[arrayInfo2.name][arrayInfo2.index], isFile = typeof File < "u" && existing instanceof File;
|
|
40
|
-
(!existing || typeof existing != "object" || Array.isArray(existing) || isFile) && (current[arrayInfo2.name][arrayInfo2.index] = parseObjectString(existing) ?? {}), current = current[arrayInfo2.name][arrayInfo2.index];
|
|
41
|
-
} else
|
|
42
|
-
(!current[key] || typeof current[key] != "object") && (current[key] = {}), current = current[key];
|
|
43
|
-
}
|
|
44
|
-
const arrayInfo = parseArrayKey(lastKey);
|
|
45
|
-
arrayInfo ? (Array.isArray(current[arrayInfo.name]) || (current[arrayInfo.name] = []), current[arrayInfo.name][arrayInfo.index] = value) : current[lastKey] = value;
|
|
46
|
-
}, normalizeFormValue = (value) => {
|
|
47
|
-
if (value.length === 1) {
|
|
48
|
-
const stringValue2 = value[0];
|
|
49
|
-
if (typeof stringValue2 == "string" && (stringValue2.charCodeAt(0) === 123 || stringValue2.charCodeAt(0) === 91))
|
|
50
|
-
try {
|
|
51
|
-
const parsed2 = JSON.parse(stringValue2);
|
|
52
|
-
if (parsed2 && typeof parsed2 == "object")
|
|
53
|
-
return parsed2;
|
|
54
|
-
} catch {
|
|
55
|
-
}
|
|
56
|
-
return value[0];
|
|
57
|
-
}
|
|
58
|
-
const stringValue = value.find(
|
|
59
|
-
(entry) => typeof entry == "string"
|
|
60
|
-
);
|
|
61
|
-
if (!stringValue || typeof File > "u") return value;
|
|
62
|
-
const files = value.filter((entry) => entry instanceof File);
|
|
63
|
-
if (!files.length || stringValue.charCodeAt(0) !== 123) return value;
|
|
64
|
-
let parsed;
|
|
65
|
-
try {
|
|
66
|
-
parsed = JSON.parse(stringValue);
|
|
67
|
-
} catch {
|
|
68
|
-
return value;
|
|
69
|
-
}
|
|
70
|
-
return typeof parsed != "object" || parsed === null ? value : (!("file" in parsed) && files.length === 1 ? parsed.file = files[0] : !("files" in parsed) && files.length > 1 && (parsed.files = files), parsed);
|
|
71
|
-
}, injectDefaultValues = (typeChecker, obj) => {
|
|
72
|
-
let schema = typeChecker.schema;
|
|
73
|
-
if (!schema) return;
|
|
74
|
-
schema.$defs?.[schema.$ref] && (schema = schema.$defs[schema.$ref]);
|
|
75
|
-
const properties = getSchemaProperties(schema);
|
|
76
|
-
if (properties)
|
|
77
|
-
for (const [key, keySchema] of Object.entries(properties))
|
|
78
|
-
obj[key] ??= keySchema.default;
|
|
79
|
-
}, createDynamicHandler = (app) => {
|
|
80
|
-
const { mapResponse, mapEarlyResponse } = app["~adapter"].handler, defaultHeader = app.setHeaders;
|
|
81
|
-
return async (request) => {
|
|
82
|
-
const url = request.url, s = url.indexOf("/", 11), qi = url.indexOf("?", s + 1), path = qi === -1 ? url.substring(s) : url.substring(s, qi), set = {
|
|
83
|
-
cookie: {},
|
|
84
|
-
status: 200,
|
|
85
|
-
headers: defaultHeader ? { ...defaultHeader } : {}
|
|
86
|
-
}, context = Object.assign(
|
|
87
|
-
{},
|
|
88
|
-
// @ts-expect-error
|
|
89
|
-
app.singleton.decorator,
|
|
90
|
-
{
|
|
91
|
-
set,
|
|
92
|
-
// @ts-expect-error
|
|
93
|
-
store: app.singleton.store,
|
|
94
|
-
request,
|
|
95
|
-
path,
|
|
96
|
-
qi,
|
|
97
|
-
error: status,
|
|
98
|
-
status,
|
|
99
|
-
redirect
|
|
100
|
-
}
|
|
101
|
-
);
|
|
102
|
-
let hooks;
|
|
103
|
-
try {
|
|
104
|
-
if (app.event.request)
|
|
105
|
-
for (let i = 0; i < app.event.request.length; i++) {
|
|
106
|
-
const onRequest = app.event.request[i].fn;
|
|
107
|
-
let response2 = onRequest(context);
|
|
108
|
-
if (response2 instanceof Promise && (response2 = await response2), response2 = mapEarlyResponse(response2, set), response2) return context.response = response2;
|
|
109
|
-
}
|
|
110
|
-
const methodKey = request.method === "GET" && request.headers.get("upgrade")?.toLowerCase() === "websocket" ? "WS" : request.method, handler = app.router.dynamic.find(request.method, path) ?? app.router.dynamic.find(methodKey, path) ?? app.router.dynamic.find("ALL", path);
|
|
111
|
-
if (!handler)
|
|
112
|
-
throw context.query = qi === -1 ? {} : parseQuery(url.substring(qi + 1)), new NotFoundError();
|
|
113
|
-
const { handle, validator, content, route } = handler.store;
|
|
114
|
-
if (hooks = handler.store.hooks, hooks.config?.mount)
|
|
115
|
-
return await hooks.config.mount(request);
|
|
116
|
-
let body;
|
|
117
|
-
if (request.method !== "GET" && request.method !== "HEAD")
|
|
118
|
-
if (content)
|
|
119
|
-
switch (content) {
|
|
120
|
-
case "application/json":
|
|
121
|
-
body = await request.json();
|
|
122
|
-
break;
|
|
123
|
-
case "text/plain":
|
|
124
|
-
body = await request.text();
|
|
125
|
-
break;
|
|
126
|
-
case "application/x-www-form-urlencoded":
|
|
127
|
-
body = parseQuery(await request.text());
|
|
128
|
-
break;
|
|
129
|
-
case "application/octet-stream":
|
|
130
|
-
body = await request.arrayBuffer();
|
|
131
|
-
break;
|
|
132
|
-
case "multipart/form-data": {
|
|
133
|
-
body = {};
|
|
134
|
-
const form = await request.formData();
|
|
135
|
-
for (const key of form.keys()) {
|
|
136
|
-
if (body[key]) continue;
|
|
137
|
-
const value = form.getAll(key), finalValue = normalizeFormValue(value);
|
|
138
|
-
key.includes(".") || key.includes("[") ? setNestedValue(body, key, finalValue) : body[key] = finalValue;
|
|
139
|
-
}
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
let contentType;
|
|
145
|
-
if (request.body && (contentType = request.headers.get("content-type")), contentType) {
|
|
146
|
-
const index = contentType.indexOf(";");
|
|
147
|
-
if (index !== -1 && (contentType = contentType.slice(0, index)), context.contentType = contentType, hooks.parse)
|
|
148
|
-
for (let i = 0; i < hooks.parse.length; i++) {
|
|
149
|
-
const hook = hooks.parse[i].fn;
|
|
150
|
-
if (typeof hook == "string")
|
|
151
|
-
switch (hook) {
|
|
152
|
-
case "json":
|
|
153
|
-
case "application/json":
|
|
154
|
-
body = await request.json();
|
|
155
|
-
break;
|
|
156
|
-
case "text":
|
|
157
|
-
case "text/plain":
|
|
158
|
-
body = await request.text();
|
|
159
|
-
break;
|
|
160
|
-
case "urlencoded":
|
|
161
|
-
case "application/x-www-form-urlencoded":
|
|
162
|
-
body = parseQuery(
|
|
163
|
-
await request.text()
|
|
164
|
-
);
|
|
165
|
-
break;
|
|
166
|
-
case "arrayBuffer":
|
|
167
|
-
case "application/octet-stream":
|
|
168
|
-
body = await request.arrayBuffer();
|
|
169
|
-
break;
|
|
170
|
-
case "formdata":
|
|
171
|
-
case "multipart/form-data": {
|
|
172
|
-
body = {};
|
|
173
|
-
const form = await request.formData();
|
|
174
|
-
for (const key of form.keys()) {
|
|
175
|
-
if (body[key]) continue;
|
|
176
|
-
const value = form.getAll(key), finalValue = normalizeFormValue(value);
|
|
177
|
-
key.includes(".") || key.includes("[") ? setNestedValue(body, key, finalValue) : body[key] = finalValue;
|
|
178
|
-
}
|
|
179
|
-
break;
|
|
180
|
-
}
|
|
181
|
-
default: {
|
|
182
|
-
const parser = app["~parser"][hook];
|
|
183
|
-
if (parser) {
|
|
184
|
-
let temp = parser(
|
|
185
|
-
context,
|
|
186
|
-
contentType
|
|
187
|
-
);
|
|
188
|
-
if (temp instanceof Promise && (temp = await temp), temp) {
|
|
189
|
-
body = temp;
|
|
190
|
-
break;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
break;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
let temp = hook(context, contentType);
|
|
198
|
-
if (temp instanceof Promise && (temp = await temp), temp) {
|
|
199
|
-
body = temp;
|
|
200
|
-
break;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
if (delete context.contentType, body === void 0)
|
|
205
|
-
switch (contentType) {
|
|
206
|
-
case "application/json":
|
|
207
|
-
body = await request.json();
|
|
208
|
-
break;
|
|
209
|
-
case "text/plain":
|
|
210
|
-
body = await request.text();
|
|
211
|
-
break;
|
|
212
|
-
case "application/x-www-form-urlencoded":
|
|
213
|
-
body = parseQuery(await request.text());
|
|
214
|
-
break;
|
|
215
|
-
case "application/octet-stream":
|
|
216
|
-
body = await request.arrayBuffer();
|
|
217
|
-
break;
|
|
218
|
-
case "multipart/form-data": {
|
|
219
|
-
body = {};
|
|
220
|
-
const form = await request.formData();
|
|
221
|
-
for (const key of form.keys()) {
|
|
222
|
-
if (body[key]) continue;
|
|
223
|
-
const value = form.getAll(key), finalValue = normalizeFormValue(value);
|
|
224
|
-
key.includes(".") || key.includes("[") ? setNestedValue(body, key, finalValue) : body[key] = finalValue;
|
|
225
|
-
}
|
|
226
|
-
break;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
context.route = route, context.body = body, context.params = handler?.params || void 0, context.query = qi === -1 ? {} : parseQuery(url.substring(qi + 1)), context.headers = {};
|
|
232
|
-
for (const [key, value] of request.headers.entries())
|
|
233
|
-
context.headers[key] = value;
|
|
234
|
-
const cookieMeta = {
|
|
235
|
-
domain: app.config.cookie?.domain ?? // @ts-expect-error
|
|
236
|
-
validator?.cookie?.config.domain,
|
|
237
|
-
expires: app.config.cookie?.expires ?? // @ts-expect-error
|
|
238
|
-
validator?.cookie?.config.expires,
|
|
239
|
-
httpOnly: app.config.cookie?.httpOnly ?? // @ts-expect-error
|
|
240
|
-
validator?.cookie?.config.httpOnly,
|
|
241
|
-
maxAge: app.config.cookie?.maxAge ?? // @ts-expect-error
|
|
242
|
-
validator?.cookie?.config.maxAge,
|
|
243
|
-
// @ts-expect-error
|
|
244
|
-
path: app.config.cookie?.path ?? validator?.cookie?.config.path,
|
|
245
|
-
priority: app.config.cookie?.priority ?? // @ts-expect-error
|
|
246
|
-
validator?.cookie?.config.priority,
|
|
247
|
-
partitioned: app.config.cookie?.partitioned ?? // @ts-expect-error
|
|
248
|
-
validator?.cookie?.config.partitioned,
|
|
249
|
-
sameSite: app.config.cookie?.sameSite ?? // @ts-expect-error
|
|
250
|
-
validator?.cookie?.config.sameSite,
|
|
251
|
-
secure: app.config.cookie?.secure ?? // @ts-expect-error
|
|
252
|
-
validator?.cookie?.config.secure,
|
|
253
|
-
secrets: app.config.cookie?.secrets ?? // @ts-expect-error
|
|
254
|
-
validator?.cookie?.config.secrets,
|
|
255
|
-
// @ts-expect-error
|
|
256
|
-
sign: app.config.cookie?.sign ?? validator?.cookie?.config.sign
|
|
257
|
-
}, cookieHeaderValue = request.headers.get("cookie");
|
|
258
|
-
context.cookie = await parseCookie(
|
|
259
|
-
context.set,
|
|
260
|
-
cookieHeaderValue,
|
|
261
|
-
cookieMeta
|
|
262
|
-
);
|
|
263
|
-
const headerValidator = validator?.createHeaders?.();
|
|
264
|
-
headerValidator && injectDefaultValues(headerValidator, context.headers);
|
|
265
|
-
const paramsValidator = validator?.createParams?.();
|
|
266
|
-
paramsValidator && injectDefaultValues(paramsValidator, context.params);
|
|
267
|
-
const queryValidator = validator?.createQuery?.();
|
|
268
|
-
if (queryValidator && injectDefaultValues(queryValidator, context.query), hooks.transform)
|
|
269
|
-
for (let i = 0; i < hooks.transform.length; i++) {
|
|
270
|
-
const hook = hooks.transform[i];
|
|
271
|
-
let response2 = hook.fn(context);
|
|
272
|
-
if (response2 instanceof Promise && (response2 = await response2), response2 instanceof ElysiaCustomStatusResponse) {
|
|
273
|
-
const result = mapEarlyResponse(response2, context.set);
|
|
274
|
-
if (result)
|
|
275
|
-
return context.response = result;
|
|
276
|
-
}
|
|
277
|
-
hook.subType === "derive" && Object.assign(context, response2);
|
|
278
|
-
}
|
|
279
|
-
if (validator) {
|
|
280
|
-
if (headerValidator) {
|
|
281
|
-
const _header = structuredClone(context.headers);
|
|
282
|
-
for (const [key, value] of request.headers)
|
|
283
|
-
_header[key] = value;
|
|
284
|
-
if (validator.headers.Check(_header) === !1)
|
|
285
|
-
throw new ValidationError(
|
|
286
|
-
"header",
|
|
287
|
-
validator.headers,
|
|
288
|
-
_header
|
|
289
|
-
);
|
|
290
|
-
} else validator.headers?.Decode && (context.headers = validator.headers.Decode(context.headers));
|
|
291
|
-
if (paramsValidator?.Check(context.params) === !1)
|
|
292
|
-
throw new ValidationError(
|
|
293
|
-
"params",
|
|
294
|
-
validator.params,
|
|
295
|
-
context.params
|
|
296
|
-
);
|
|
297
|
-
if (validator.params?.Decode && (context.params = validator.params.Decode(context.params)), validator.query?.schema) {
|
|
298
|
-
let schema = validator.query.schema;
|
|
299
|
-
schema.$defs?.[schema.$ref] && (schema = schema.$defs[schema.$ref]);
|
|
300
|
-
const properties = getSchemaProperties(schema);
|
|
301
|
-
if (properties)
|
|
302
|
-
for (const property of Object.keys(properties)) {
|
|
303
|
-
const value = properties[property];
|
|
304
|
-
(value.type === "array" || value.items?.type === "string") && typeof context.query[property] == "string" && context.query[property] && (context.query[property] = context.query[property].split(","));
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
if (queryValidator?.Check(context.query) === !1)
|
|
308
|
-
throw new ValidationError(
|
|
309
|
-
"query",
|
|
310
|
-
validator.query,
|
|
311
|
-
context.query
|
|
312
|
-
);
|
|
313
|
-
if (validator.query?.Decode && (context.query = validator.query.Decode(context.query)), validator.createCookie?.()) {
|
|
314
|
-
let cookieValue = {};
|
|
315
|
-
for (const [key, value] of Object.entries(context.cookie))
|
|
316
|
-
cookieValue[key] = value.value;
|
|
317
|
-
if (validator.cookie.Check(cookieValue) === !1)
|
|
318
|
-
throw new ValidationError(
|
|
319
|
-
"cookie",
|
|
320
|
-
validator.cookie,
|
|
321
|
-
cookieValue
|
|
322
|
-
);
|
|
323
|
-
validator.cookie?.Decode && (cookieValue = validator.cookie.Decode(
|
|
324
|
-
cookieValue
|
|
325
|
-
));
|
|
326
|
-
}
|
|
327
|
-
if (validator.createBody?.()?.Check(body) === !1)
|
|
328
|
-
throw new ValidationError("body", validator.body, body);
|
|
329
|
-
if (validator.body?.Decode) {
|
|
330
|
-
let decoded = validator.body.Decode(body);
|
|
331
|
-
decoded instanceof Promise && (decoded = await decoded), context.body = decoded?.value ?? decoded;
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
if (hooks.beforeHandle)
|
|
335
|
-
for (let i = 0; i < hooks.beforeHandle.length; i++) {
|
|
336
|
-
const hook = hooks.beforeHandle[i];
|
|
337
|
-
let response2 = hook.fn(context);
|
|
338
|
-
if (response2 instanceof Promise && (response2 = await response2), response2 instanceof ElysiaCustomStatusResponse) {
|
|
339
|
-
const result = mapEarlyResponse(response2, context.set);
|
|
340
|
-
if (result)
|
|
341
|
-
return context.response = result;
|
|
342
|
-
}
|
|
343
|
-
if (hook.subType === "resolve") {
|
|
344
|
-
Object.assign(context, response2);
|
|
345
|
-
continue;
|
|
346
|
-
}
|
|
347
|
-
if (response2 !== void 0) {
|
|
348
|
-
if (context.response = response2, hooks.afterHandle)
|
|
349
|
-
for (let i2 = 0; i2 < hooks.afterHandle.length; i2++) {
|
|
350
|
-
let newResponse = hooks.afterHandle[i2].fn(
|
|
351
|
-
context
|
|
352
|
-
);
|
|
353
|
-
newResponse instanceof Promise && (newResponse = await newResponse), newResponse && (response2 = newResponse);
|
|
354
|
-
}
|
|
355
|
-
const result = mapEarlyResponse(response2, context.set);
|
|
356
|
-
if (result) return context.response = result;
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
let response = typeof handle == "function" ? handle(context) : handle;
|
|
360
|
-
if (response instanceof Promise && (response = await response), hooks.afterHandle?.length) {
|
|
361
|
-
context.response = response;
|
|
362
|
-
for (let i = 0; i < hooks.afterHandle.length; i++) {
|
|
363
|
-
let response2 = hooks.afterHandle[i].fn(
|
|
364
|
-
context
|
|
365
|
-
);
|
|
366
|
-
response2 instanceof Promise && (response2 = await response2);
|
|
367
|
-
const isCustomStatuResponse = response2 instanceof ElysiaCustomStatusResponse, status2 = isCustomStatuResponse ? response2.code : set.status ? typeof set.status == "string" ? StatusMap[set.status] : set.status : 200;
|
|
368
|
-
isCustomStatuResponse && (set.status = status2, response2 = response2.response);
|
|
369
|
-
const responseValidator = validator?.createResponse?.()?.[status2];
|
|
370
|
-
if (responseValidator?.Check(response2) === !1)
|
|
371
|
-
if (responseValidator?.Clean)
|
|
372
|
-
try {
|
|
373
|
-
const temp = responseValidator.Clean(response2);
|
|
374
|
-
if (responseValidator?.Check(temp) === !1)
|
|
375
|
-
throw new ValidationError(
|
|
376
|
-
"response",
|
|
377
|
-
responseValidator,
|
|
378
|
-
response2
|
|
379
|
-
);
|
|
380
|
-
response2 = temp;
|
|
381
|
-
} catch (error) {
|
|
382
|
-
throw error instanceof ValidationError ? error : new ValidationError(
|
|
383
|
-
"response",
|
|
384
|
-
responseValidator,
|
|
385
|
-
response2
|
|
386
|
-
);
|
|
387
|
-
}
|
|
388
|
-
else
|
|
389
|
-
throw new ValidationError(
|
|
390
|
-
"response",
|
|
391
|
-
responseValidator,
|
|
392
|
-
response2
|
|
393
|
-
);
|
|
394
|
-
if (responseValidator?.Encode && (context.response = response2 = responseValidator.Encode(response2)), responseValidator?.Clean)
|
|
395
|
-
try {
|
|
396
|
-
context.response = response2 = responseValidator.Clean(response2);
|
|
397
|
-
} catch {
|
|
398
|
-
}
|
|
399
|
-
const result = mapEarlyResponse(response2, context.set);
|
|
400
|
-
if (result !== void 0) return context.response = result;
|
|
401
|
-
}
|
|
402
|
-
} else {
|
|
403
|
-
const isCustomStatuResponse = response instanceof ElysiaCustomStatusResponse, status2 = isCustomStatuResponse ? response.code : set.status ? typeof set.status == "string" ? StatusMap[set.status] : set.status : 200;
|
|
404
|
-
isCustomStatuResponse && (set.status = status2, response = response.response);
|
|
405
|
-
const responseValidator = validator?.createResponse?.()?.[status2];
|
|
406
|
-
if (responseValidator?.Check(response) === !1)
|
|
407
|
-
if (responseValidator?.Clean)
|
|
408
|
-
try {
|
|
409
|
-
const temp = responseValidator.Clean(response);
|
|
410
|
-
if (responseValidator?.Check(temp) === !1)
|
|
411
|
-
throw new ValidationError(
|
|
412
|
-
"response",
|
|
413
|
-
responseValidator,
|
|
414
|
-
response
|
|
415
|
-
);
|
|
416
|
-
response = temp;
|
|
417
|
-
} catch (error) {
|
|
418
|
-
throw error instanceof ValidationError ? error : new ValidationError(
|
|
419
|
-
"response",
|
|
420
|
-
responseValidator,
|
|
421
|
-
response
|
|
422
|
-
);
|
|
423
|
-
}
|
|
424
|
-
else
|
|
425
|
-
throw new ValidationError(
|
|
426
|
-
"response",
|
|
427
|
-
responseValidator,
|
|
428
|
-
response
|
|
429
|
-
);
|
|
430
|
-
if (responseValidator?.Encode && (response = responseValidator.Encode(response)), responseValidator?.Clean)
|
|
431
|
-
try {
|
|
432
|
-
response = responseValidator.Clean(response);
|
|
433
|
-
} catch {
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
if (context.set.cookie && cookieMeta?.sign) {
|
|
437
|
-
const secret = cookieMeta.secrets ? typeof cookieMeta.secrets == "string" ? cookieMeta.secrets : cookieMeta.secrets[0] : void 0;
|
|
438
|
-
if (cookieMeta.sign === !0) {
|
|
439
|
-
if (secret)
|
|
440
|
-
for (const [key, cookie] of Object.entries(
|
|
441
|
-
context.set.cookie
|
|
442
|
-
))
|
|
443
|
-
context.set.cookie[key].value = await signCookie(
|
|
444
|
-
cookie.value,
|
|
445
|
-
secret
|
|
446
|
-
);
|
|
447
|
-
} else {
|
|
448
|
-
const properties = getSchemaProperties(validator?.cookie?.schema);
|
|
449
|
-
if (secret)
|
|
450
|
-
for (const name of cookieMeta.sign)
|
|
451
|
-
!properties || !(name in properties) || context.set.cookie[name]?.value && (context.set.cookie[name].value = await signCookie(
|
|
452
|
-
context.set.cookie[name].value,
|
|
453
|
-
secret
|
|
454
|
-
));
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
return mapResponse(context.response = response, context.set);
|
|
458
|
-
} catch (error) {
|
|
459
|
-
const reportedError = error instanceof TransformDecodeError && error.error ? error.error : error;
|
|
460
|
-
return app.handleError(context, reportedError);
|
|
461
|
-
} finally {
|
|
462
|
-
const afterResponses = hooks ? hooks.afterResponse : app.event.afterResponse;
|
|
463
|
-
afterResponses && (hasSetImmediate ? setImmediate(async () => {
|
|
464
|
-
for (const afterResponse of afterResponses)
|
|
465
|
-
await afterResponse.fn(context);
|
|
466
|
-
}) : Promise.resolve().then(async () => {
|
|
467
|
-
for (const afterResponse of afterResponses)
|
|
468
|
-
await afterResponse.fn(context);
|
|
469
|
-
}));
|
|
470
|
-
}
|
|
471
|
-
};
|
|
472
|
-
}, createDynamicErrorHandler = (app) => {
|
|
473
|
-
const { mapResponse } = app["~adapter"].handler;
|
|
474
|
-
return async (context, error) => {
|
|
475
|
-
const errorContext = Object.assign(context, { error, code: error.code });
|
|
476
|
-
if (errorContext.set = context.set, // @ts-expect-error
|
|
477
|
-
typeof error?.toResponse == "function" && !(error instanceof ValidationError) && !(error instanceof TransformDecodeError))
|
|
478
|
-
try {
|
|
479
|
-
let raw = error.toResponse();
|
|
480
|
-
typeof raw?.then == "function" && (raw = await raw), raw instanceof Response && (context.set.status = raw.status), context.response = raw;
|
|
481
|
-
} catch {
|
|
482
|
-
}
|
|
483
|
-
if (!context.response && app.event.error)
|
|
484
|
-
for (let i = 0; i < app.event.error.length; i++) {
|
|
485
|
-
let response = app.event.error[i].fn(errorContext);
|
|
486
|
-
if (response instanceof Promise && (response = await response), response != null)
|
|
487
|
-
return context.response = mapResponse(
|
|
488
|
-
response,
|
|
489
|
-
context.set
|
|
490
|
-
);
|
|
491
|
-
}
|
|
492
|
-
if (context.response) {
|
|
493
|
-
if (app.event.mapResponse)
|
|
494
|
-
for (let i = 0; i < app.event.mapResponse.length; i++) {
|
|
495
|
-
let response = app.event.mapResponse[i].fn(errorContext);
|
|
496
|
-
response instanceof Promise && (response = await response), response != null && (context.response = response);
|
|
497
|
-
}
|
|
498
|
-
return mapResponse(context.response, context.set);
|
|
499
|
-
}
|
|
500
|
-
return context.set.status = error.status ?? 500, mapResponse(
|
|
501
|
-
typeof error.cause == "string" ? error.cause : error.message,
|
|
502
|
-
context.set
|
|
503
|
-
);
|
|
504
|
-
};
|
|
505
|
-
};
|
|
506
|
-
export {
|
|
507
|
-
createDynamicErrorHandler,
|
|
508
|
-
createDynamicHandler
|
|
509
|
-
};
|
package/dist/formats.d.ts
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ? Fork of ajv-formats without ajv as dependencies
|
|
3
|
-
*
|
|
4
|
-
* @see https://github.com/ajv-validator/ajv-formats/blob/master/src/formats.ts
|
|
5
|
-
**/
|
|
6
|
-
export type FormatName = 'date' | 'time' | 'date-time' | 'iso-time' | 'iso-date-time' | 'duration' | 'uri' | 'uri-reference' | 'uri-template' | 'url' | 'email' | 'hostname' | 'ipv4' | 'ipv6' | 'regex' | 'uuid' | 'json-pointer' | 'json-pointer-uri-fragment' | 'relative-json-pointer' | 'byte' | 'int32' | 'int64' | 'float' | 'double' | 'password' | 'binary';
|
|
7
|
-
export declare const fullFormats: {
|
|
8
|
-
readonly date: typeof date;
|
|
9
|
-
readonly time: (str: string) => boolean;
|
|
10
|
-
readonly 'date-time': (str: string) => boolean;
|
|
11
|
-
readonly 'iso-time': (str: string) => boolean;
|
|
12
|
-
readonly 'iso-date-time': (str: string) => boolean;
|
|
13
|
-
readonly duration: RegExp;
|
|
14
|
-
readonly uri: typeof uri;
|
|
15
|
-
readonly 'uri-reference': RegExp;
|
|
16
|
-
readonly 'uri-template': RegExp;
|
|
17
|
-
readonly url: RegExp;
|
|
18
|
-
readonly email: RegExp;
|
|
19
|
-
readonly hostname: RegExp;
|
|
20
|
-
readonly ipv4: RegExp;
|
|
21
|
-
readonly ipv6: RegExp;
|
|
22
|
-
readonly regex: typeof regex;
|
|
23
|
-
readonly uuid: RegExp;
|
|
24
|
-
readonly 'json-pointer': RegExp;
|
|
25
|
-
readonly 'json-pointer-uri-fragment': RegExp;
|
|
26
|
-
readonly 'relative-json-pointer': RegExp;
|
|
27
|
-
readonly byte: typeof byte;
|
|
28
|
-
readonly int32: {
|
|
29
|
-
readonly type: "number";
|
|
30
|
-
readonly validate: typeof validateInt32;
|
|
31
|
-
};
|
|
32
|
-
readonly int64: {
|
|
33
|
-
readonly type: "number";
|
|
34
|
-
readonly validate: typeof validateInt64;
|
|
35
|
-
};
|
|
36
|
-
readonly float: {
|
|
37
|
-
readonly type: "number";
|
|
38
|
-
readonly validate: typeof validateNumber;
|
|
39
|
-
};
|
|
40
|
-
readonly double: {
|
|
41
|
-
readonly type: "number";
|
|
42
|
-
readonly validate: typeof validateNumber;
|
|
43
|
-
};
|
|
44
|
-
readonly password: true;
|
|
45
|
-
readonly binary: true;
|
|
46
|
-
};
|
|
47
|
-
declare function date(str: string): boolean;
|
|
48
|
-
declare function uri(str: string): boolean;
|
|
49
|
-
declare function byte(str: string): boolean;
|
|
50
|
-
declare function validateInt32(value: number): boolean;
|
|
51
|
-
declare function validateInt64(value: number): boolean;
|
|
52
|
-
declare function validateNumber(): boolean;
|
|
53
|
-
declare function regex(str: string): boolean;
|
|
54
|
-
export {};
|
|
55
|
-
/**
|
|
56
|
-
* @license
|
|
57
|
-
*
|
|
58
|
-
* MIT License
|
|
59
|
-
*
|
|
60
|
-
* Copyright (c) 2020 Evgeny Poberezkin
|
|
61
|
-
*
|
|
62
|
-
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
63
|
-
* of this software and associated documentation files (the "Software"), to deal
|
|
64
|
-
* in the Software without restriction, including without limitation the rights
|
|
65
|
-
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
66
|
-
* copies of the Software, and to permit persons to whom the Software is
|
|
67
|
-
* furnished to do so, subject to the following conditions:
|
|
68
|
-
*
|
|
69
|
-
* The above copyright notice and this permission notice shall be included in all
|
|
70
|
-
* copies or substantial portions of the Software.
|
|
71
|
-
*
|
|
72
|
-
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
73
|
-
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
74
|
-
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
75
|
-
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
76
|
-
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
77
|
-
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
78
|
-
* SOFTWARE.
|
|
79
|
-
*/
|