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,51 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_type_bridge = require('../type/bridge.js');
|
|
3
|
+
const require_type_constants = require('../type/constants.js');
|
|
4
|
+
const require_validator_index = require('./index.js');
|
|
5
|
+
|
|
6
|
+
//#region src/validator/route.ts
|
|
7
|
+
const isTb = (schema) => "~kind" in schema;
|
|
8
|
+
function pickMerge(schemas, key) {
|
|
9
|
+
if (!schemas) return;
|
|
10
|
+
const result = [];
|
|
11
|
+
for (let i = 0; i < schemas.length; i++) {
|
|
12
|
+
const v = schemas[i][key];
|
|
13
|
+
if (v) result.push(v);
|
|
14
|
+
}
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
const FILE_TYPES = [require_type_constants.ELYSIA_TYPES.File, require_type_constants.ELYSIA_TYPES.Files];
|
|
18
|
+
const coerceFile = (schema) => require_type_bridge.mayHaveFileType(schema) && require_type_bridge.hasTypes(FILE_TYPES, schema) ? require_type_bridge.coerceFormData() : require_type_bridge.coerceBody();
|
|
19
|
+
const SLOTS = [
|
|
20
|
+
["body", coerceFile],
|
|
21
|
+
["headers", require_type_bridge.coerceStringToStructure],
|
|
22
|
+
["query", require_type_bridge.coerceQuery],
|
|
23
|
+
["params", require_type_bridge.coerceRoot],
|
|
24
|
+
["cookie", require_type_bridge.coerceStringToStructure]
|
|
25
|
+
];
|
|
26
|
+
var RouteValidator = class {
|
|
27
|
+
constructor(route, options) {
|
|
28
|
+
if (!route) return;
|
|
29
|
+
const mergeSchemas = options?.schemas;
|
|
30
|
+
for (const [slot, coerce] of SLOTS) {
|
|
31
|
+
const merge = pickMerge(mergeSchemas, slot);
|
|
32
|
+
if (!route[slot] && !merge?.length) continue;
|
|
33
|
+
const reference = require_validator_index.Validator.reference(route[slot] ?? merge[0], options?.models);
|
|
34
|
+
const coerces = isTb(reference) ? coerce(reference) : merge?.find(isTb) ? coerce(merge.find(isTb)) : void 0;
|
|
35
|
+
this[slot] = require_validator_index.Validator.create(route[slot], {
|
|
36
|
+
...options,
|
|
37
|
+
slot,
|
|
38
|
+
schemas: merge,
|
|
39
|
+
coerces
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
const responseMerge = pickMerge(mergeSchemas, "response");
|
|
43
|
+
this.response = require_validator_index.Validator.response(route.response, {
|
|
44
|
+
...options,
|
|
45
|
+
schemas: responseMerge
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
//#endregion
|
|
51
|
+
exports.RouteValidator = RouteValidator;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { coerceBody, coerceFormData, coerceQuery, coerceRoot, coerceStringToStructure, hasTypes, mayHaveFileType } from "../type/bridge.mjs";
|
|
2
|
+
import { ELYSIA_TYPES } from "../type/constants.mjs";
|
|
3
|
+
import { Validator } from "./index.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/validator/route.ts
|
|
6
|
+
const isTb = (schema) => "~kind" in schema;
|
|
7
|
+
function pickMerge(schemas, key) {
|
|
8
|
+
if (!schemas) return;
|
|
9
|
+
const result = [];
|
|
10
|
+
for (let i = 0; i < schemas.length; i++) {
|
|
11
|
+
const v = schemas[i][key];
|
|
12
|
+
if (v) result.push(v);
|
|
13
|
+
}
|
|
14
|
+
return result;
|
|
15
|
+
}
|
|
16
|
+
const FILE_TYPES = [ELYSIA_TYPES.File, ELYSIA_TYPES.Files];
|
|
17
|
+
const coerceFile = (schema) => mayHaveFileType(schema) && hasTypes(FILE_TYPES, schema) ? coerceFormData() : coerceBody();
|
|
18
|
+
const SLOTS = [
|
|
19
|
+
["body", coerceFile],
|
|
20
|
+
["headers", coerceStringToStructure],
|
|
21
|
+
["query", coerceQuery],
|
|
22
|
+
["params", coerceRoot],
|
|
23
|
+
["cookie", coerceStringToStructure]
|
|
24
|
+
];
|
|
25
|
+
var RouteValidator = class {
|
|
26
|
+
constructor(route, options) {
|
|
27
|
+
if (!route) return;
|
|
28
|
+
const mergeSchemas = options?.schemas;
|
|
29
|
+
for (const [slot, coerce] of SLOTS) {
|
|
30
|
+
const merge = pickMerge(mergeSchemas, slot);
|
|
31
|
+
if (!route[slot] && !merge?.length) continue;
|
|
32
|
+
const reference = Validator.reference(route[slot] ?? merge[0], options?.models);
|
|
33
|
+
const coerces = isTb(reference) ? coerce(reference) : merge?.find(isTb) ? coerce(merge.find(isTb)) : void 0;
|
|
34
|
+
this[slot] = Validator.create(route[slot], {
|
|
35
|
+
...options,
|
|
36
|
+
slot,
|
|
37
|
+
schemas: merge,
|
|
38
|
+
coerces
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
const responseMerge = pickMerge(mergeSchemas, "response");
|
|
42
|
+
this.response = Validator.response(route.response, {
|
|
43
|
+
...options,
|
|
44
|
+
schemas: responseMerge
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
//#endregion
|
|
50
|
+
export { RouteValidator };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { RouteSchema } from "../types.js";
|
|
2
|
+
import { BufferSource, FlattenResponse, ServerWebSocket, ServerWebSocketSendStatus, WSResponseValidator, WSValidatorLike, WebSocketReadyState } from "./types.js";
|
|
3
|
+
|
|
4
|
+
//#region src/ws/context.d.ts
|
|
5
|
+
interface WSConnectionData {
|
|
6
|
+
id: string | undefined;
|
|
7
|
+
open?: (elysia: ElysiaWS<any>) => void | Promise<void>;
|
|
8
|
+
message?: (elysia: ElysiaWS<any>, rawMessage: string | Buffer) => void | Promise<void>;
|
|
9
|
+
drain?: (elysia: ElysiaWS<any>) => void | Promise<void>;
|
|
10
|
+
close?: (elysia: ElysiaWS<any>, code: number, reason: string) => void | Promise<void>;
|
|
11
|
+
ping?: (elysia: ElysiaWS<any>, data: Buffer) => void | Promise<void>;
|
|
12
|
+
pong?: (elysia: ElysiaWS<any>, data: Buffer) => void | Promise<void>;
|
|
13
|
+
closeHandlerInvoked?: boolean;
|
|
14
|
+
elysia?: ElysiaWS<any>;
|
|
15
|
+
context?: Record<string, unknown>;
|
|
16
|
+
resumeWaiters?: Set<() => void>;
|
|
17
|
+
validator?: WSResponseValidator;
|
|
18
|
+
defaultValidator?: WSValidatorLike;
|
|
19
|
+
}
|
|
20
|
+
declare class ElysiaWS<Route extends RouteSchema = {}> {
|
|
21
|
+
#private;
|
|
22
|
+
raw: ServerWebSocket<WSConnectionData>;
|
|
23
|
+
body: Route['body'];
|
|
24
|
+
constructor(raw: ServerWebSocket<WSConnectionData>, context?: Record<string, unknown>);
|
|
25
|
+
get ws(): this;
|
|
26
|
+
readonly sendText: ServerWebSocket['sendText'];
|
|
27
|
+
readonly sendBinary: ServerWebSocket['sendBinary'];
|
|
28
|
+
readonly terminate: ServerWebSocket['terminate'];
|
|
29
|
+
readonly publishText: ServerWebSocket['publishText'];
|
|
30
|
+
readonly publishBinary: ServerWebSocket['publishBinary'];
|
|
31
|
+
readonly subscribe: ServerWebSocket['subscribe'];
|
|
32
|
+
readonly unsubscribe: ServerWebSocket['unsubscribe'];
|
|
33
|
+
readonly isSubscribed: ServerWebSocket['isSubscribed'];
|
|
34
|
+
readonly cork: ServerWebSocket['cork'];
|
|
35
|
+
readonly remoteAddress: string;
|
|
36
|
+
readonly binaryType: 'nodebuffer' | 'arraybuffer' | 'uint8array' | undefined;
|
|
37
|
+
get send(): (data: FlattenResponse<Route['response']> | BufferSource, compress?: boolean) => ServerWebSocketSendStatus;
|
|
38
|
+
get ping(): (data?: FlattenResponse<Route['response']> | BufferSource) => ServerWebSocketSendStatus;
|
|
39
|
+
get pong(): (data?: FlattenResponse<Route['response']> | BufferSource) => ServerWebSocketSendStatus;
|
|
40
|
+
get publish(): (topic: string, data: FlattenResponse<Route['response']> | BufferSource, compress?: boolean) => ServerWebSocketSendStatus;
|
|
41
|
+
get close(): (code?: number, reason?: string) => void;
|
|
42
|
+
get id(): string;
|
|
43
|
+
get readyState(): WebSocketReadyState;
|
|
44
|
+
get subscriptions(): string[];
|
|
45
|
+
get data(): WSConnectionData;
|
|
46
|
+
}
|
|
47
|
+
declare function isGeneratorObject(value: unknown): boolean;
|
|
48
|
+
//#endregion
|
|
49
|
+
export { ElysiaWS, WSConnectionData, isGeneratorObject };
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_utils = require('../utils.js');
|
|
3
|
+
const require_error = require('../error.js');
|
|
4
|
+
|
|
5
|
+
//#region src/ws/context.ts
|
|
6
|
+
function pickValidator(validators, defaultValidator, data) {
|
|
7
|
+
if (!validators) return;
|
|
8
|
+
if (data instanceof require_error.ElysiaStatus) return validators[data.status];
|
|
9
|
+
return defaultValidator;
|
|
10
|
+
}
|
|
11
|
+
function memoize(view, key, value) {
|
|
12
|
+
const self = view.raw.data.elysia ?? view;
|
|
13
|
+
Object.defineProperty(self, key, {
|
|
14
|
+
value,
|
|
15
|
+
enumerable: true,
|
|
16
|
+
writable: true,
|
|
17
|
+
configurable: true
|
|
18
|
+
});
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
var ElysiaWS = class {
|
|
22
|
+
constructor(raw, context) {
|
|
23
|
+
this.body = void 0;
|
|
24
|
+
this.raw = raw;
|
|
25
|
+
if (context) for (const key in context) {
|
|
26
|
+
if (key === "ws" || key === "body") continue;
|
|
27
|
+
this[key] = context[key];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
get ws() {
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
get send() {
|
|
34
|
+
const self = this.raw.data.elysia ?? this;
|
|
35
|
+
return memoize(this, "send", self.#send.bind(self));
|
|
36
|
+
}
|
|
37
|
+
get ping() {
|
|
38
|
+
const self = this.raw.data.elysia ?? this;
|
|
39
|
+
return memoize(this, "ping", self.#ping.bind(self));
|
|
40
|
+
}
|
|
41
|
+
get pong() {
|
|
42
|
+
const self = this.raw.data.elysia ?? this;
|
|
43
|
+
return memoize(this, "pong", self.#pong.bind(self));
|
|
44
|
+
}
|
|
45
|
+
get publish() {
|
|
46
|
+
const self = this.raw.data.elysia ?? this;
|
|
47
|
+
return memoize(this, "publish", self.#publish.bind(self));
|
|
48
|
+
}
|
|
49
|
+
get close() {
|
|
50
|
+
const self = this.raw.data.elysia ?? this;
|
|
51
|
+
return memoize(this, "close", self.#close.bind(self));
|
|
52
|
+
}
|
|
53
|
+
get id() {
|
|
54
|
+
return this.raw.data.id ??= require_utils.requestId();
|
|
55
|
+
}
|
|
56
|
+
get readyState() {
|
|
57
|
+
return this.raw.readyState;
|
|
58
|
+
}
|
|
59
|
+
get subscriptions() {
|
|
60
|
+
return this.raw.subscriptions;
|
|
61
|
+
}
|
|
62
|
+
get data() {
|
|
63
|
+
return this.raw.data;
|
|
64
|
+
}
|
|
65
|
+
#prepare(data) {
|
|
66
|
+
if (data === void 0) return null;
|
|
67
|
+
if (data instanceof require_error.ElysiaStatus) return JSON.stringify({
|
|
68
|
+
status: data.status,
|
|
69
|
+
error: data.response
|
|
70
|
+
});
|
|
71
|
+
if (typeof data === "object") return JSON.stringify(data);
|
|
72
|
+
return data;
|
|
73
|
+
}
|
|
74
|
+
#validatedOrError(data) {
|
|
75
|
+
const connectionData = this.raw.data;
|
|
76
|
+
const v = pickValidator(connectionData?.validator, connectionData?.defaultValidator, data);
|
|
77
|
+
if (!v) return;
|
|
78
|
+
const value = data instanceof require_error.ElysiaStatus ? data.response : data;
|
|
79
|
+
if (v.Check(value)) return;
|
|
80
|
+
return new require_error.ValidationError("message", value, v.Errors(value)).message;
|
|
81
|
+
}
|
|
82
|
+
#send(data, compress) {
|
|
83
|
+
if (data === void 0) return 0;
|
|
84
|
+
if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) return this.raw.send(data, compress);
|
|
85
|
+
const err = this.#validatedOrError(data);
|
|
86
|
+
if (err !== void 0) return this.raw.send(err);
|
|
87
|
+
return this.raw.send(this.#prepare(data), compress);
|
|
88
|
+
}
|
|
89
|
+
#ping(data) {
|
|
90
|
+
if (data === void 0) return this.raw.ping();
|
|
91
|
+
if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) return this.raw.ping(data);
|
|
92
|
+
const err = this.#validatedOrError(data);
|
|
93
|
+
if (err !== void 0) return this.raw.send(err);
|
|
94
|
+
return this.raw.ping(this.#prepare(data));
|
|
95
|
+
}
|
|
96
|
+
#pong(data) {
|
|
97
|
+
if (data === void 0) return this.raw.pong();
|
|
98
|
+
if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) return this.raw.pong(data);
|
|
99
|
+
const err = this.#validatedOrError(data);
|
|
100
|
+
if (err !== void 0) return this.raw.send(err);
|
|
101
|
+
return this.raw.pong(this.#prepare(data));
|
|
102
|
+
}
|
|
103
|
+
#publish(topic, data, compress) {
|
|
104
|
+
if (data === void 0) return 0;
|
|
105
|
+
if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) return this.raw.publish(topic, data, compress);
|
|
106
|
+
const err = this.#validatedOrError(data);
|
|
107
|
+
if (err !== void 0) return this.raw.send(err);
|
|
108
|
+
return this.raw.publish(topic, this.#prepare(data), compress);
|
|
109
|
+
}
|
|
110
|
+
#close(code, reason) {
|
|
111
|
+
const data = this.raw.data;
|
|
112
|
+
if (!data.closeHandlerInvoked && data.close) {
|
|
113
|
+
data.closeHandlerInvoked = true;
|
|
114
|
+
try {
|
|
115
|
+
const result = data.close(this, code ?? 1e3, reason ?? "");
|
|
116
|
+
if (result instanceof Promise) result.then(() => this.raw.close(code, reason)).catch(() => this.raw.close(code, reason));
|
|
117
|
+
return;
|
|
118
|
+
} catch {}
|
|
119
|
+
}
|
|
120
|
+
this.raw.close(code, reason);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
for (const key of [
|
|
124
|
+
"sendText",
|
|
125
|
+
"sendBinary",
|
|
126
|
+
"terminate",
|
|
127
|
+
"publishText",
|
|
128
|
+
"publishBinary",
|
|
129
|
+
"subscribe",
|
|
130
|
+
"unsubscribe",
|
|
131
|
+
"isSubscribed",
|
|
132
|
+
"cork",
|
|
133
|
+
"remoteAddress",
|
|
134
|
+
"binaryType"
|
|
135
|
+
]) Object.defineProperty(ElysiaWS.prototype, key, {
|
|
136
|
+
configurable: true,
|
|
137
|
+
enumerable: false,
|
|
138
|
+
get() {
|
|
139
|
+
const raw = this.raw;
|
|
140
|
+
const value = raw[key];
|
|
141
|
+
return memoize(this, key, typeof value === "function" ? value.bind(raw) : value);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
function isGeneratorObject(value) {
|
|
145
|
+
if (value == null || typeof value !== "object") return false;
|
|
146
|
+
const v = value;
|
|
147
|
+
return typeof v.next === "function" && (typeof v[Symbol.iterator] === "function" || typeof v[Symbol.asyncIterator] === "function");
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
//#endregion
|
|
151
|
+
exports.ElysiaWS = ElysiaWS;
|
|
152
|
+
exports.isGeneratorObject = isGeneratorObject;
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { requestId } from "../utils.mjs";
|
|
2
|
+
import { ElysiaStatus, ValidationError } from "../error.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/ws/context.ts
|
|
5
|
+
function pickValidator(validators, defaultValidator, data) {
|
|
6
|
+
if (!validators) return;
|
|
7
|
+
if (data instanceof ElysiaStatus) return validators[data.status];
|
|
8
|
+
return defaultValidator;
|
|
9
|
+
}
|
|
10
|
+
function memoize(view, key, value) {
|
|
11
|
+
const self = view.raw.data.elysia ?? view;
|
|
12
|
+
Object.defineProperty(self, key, {
|
|
13
|
+
value,
|
|
14
|
+
enumerable: true,
|
|
15
|
+
writable: true,
|
|
16
|
+
configurable: true
|
|
17
|
+
});
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
var ElysiaWS = class {
|
|
21
|
+
constructor(raw, context) {
|
|
22
|
+
this.body = void 0;
|
|
23
|
+
this.raw = raw;
|
|
24
|
+
if (context) for (const key in context) {
|
|
25
|
+
if (key === "ws" || key === "body") continue;
|
|
26
|
+
this[key] = context[key];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
get ws() {
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
get send() {
|
|
33
|
+
const self = this.raw.data.elysia ?? this;
|
|
34
|
+
return memoize(this, "send", self.#send.bind(self));
|
|
35
|
+
}
|
|
36
|
+
get ping() {
|
|
37
|
+
const self = this.raw.data.elysia ?? this;
|
|
38
|
+
return memoize(this, "ping", self.#ping.bind(self));
|
|
39
|
+
}
|
|
40
|
+
get pong() {
|
|
41
|
+
const self = this.raw.data.elysia ?? this;
|
|
42
|
+
return memoize(this, "pong", self.#pong.bind(self));
|
|
43
|
+
}
|
|
44
|
+
get publish() {
|
|
45
|
+
const self = this.raw.data.elysia ?? this;
|
|
46
|
+
return memoize(this, "publish", self.#publish.bind(self));
|
|
47
|
+
}
|
|
48
|
+
get close() {
|
|
49
|
+
const self = this.raw.data.elysia ?? this;
|
|
50
|
+
return memoize(this, "close", self.#close.bind(self));
|
|
51
|
+
}
|
|
52
|
+
get id() {
|
|
53
|
+
return this.raw.data.id ??= requestId();
|
|
54
|
+
}
|
|
55
|
+
get readyState() {
|
|
56
|
+
return this.raw.readyState;
|
|
57
|
+
}
|
|
58
|
+
get subscriptions() {
|
|
59
|
+
return this.raw.subscriptions;
|
|
60
|
+
}
|
|
61
|
+
get data() {
|
|
62
|
+
return this.raw.data;
|
|
63
|
+
}
|
|
64
|
+
#prepare(data) {
|
|
65
|
+
if (data === void 0) return null;
|
|
66
|
+
if (data instanceof ElysiaStatus) return JSON.stringify({
|
|
67
|
+
status: data.status,
|
|
68
|
+
error: data.response
|
|
69
|
+
});
|
|
70
|
+
if (typeof data === "object") return JSON.stringify(data);
|
|
71
|
+
return data;
|
|
72
|
+
}
|
|
73
|
+
#validatedOrError(data) {
|
|
74
|
+
const connectionData = this.raw.data;
|
|
75
|
+
const v = pickValidator(connectionData?.validator, connectionData?.defaultValidator, data);
|
|
76
|
+
if (!v) return;
|
|
77
|
+
const value = data instanceof ElysiaStatus ? data.response : data;
|
|
78
|
+
if (v.Check(value)) return;
|
|
79
|
+
return new ValidationError("message", value, v.Errors(value)).message;
|
|
80
|
+
}
|
|
81
|
+
#send(data, compress) {
|
|
82
|
+
if (data === void 0) return 0;
|
|
83
|
+
if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) return this.raw.send(data, compress);
|
|
84
|
+
const err = this.#validatedOrError(data);
|
|
85
|
+
if (err !== void 0) return this.raw.send(err);
|
|
86
|
+
return this.raw.send(this.#prepare(data), compress);
|
|
87
|
+
}
|
|
88
|
+
#ping(data) {
|
|
89
|
+
if (data === void 0) return this.raw.ping();
|
|
90
|
+
if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) return this.raw.ping(data);
|
|
91
|
+
const err = this.#validatedOrError(data);
|
|
92
|
+
if (err !== void 0) return this.raw.send(err);
|
|
93
|
+
return this.raw.ping(this.#prepare(data));
|
|
94
|
+
}
|
|
95
|
+
#pong(data) {
|
|
96
|
+
if (data === void 0) return this.raw.pong();
|
|
97
|
+
if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) return this.raw.pong(data);
|
|
98
|
+
const err = this.#validatedOrError(data);
|
|
99
|
+
if (err !== void 0) return this.raw.send(err);
|
|
100
|
+
return this.raw.pong(this.#prepare(data));
|
|
101
|
+
}
|
|
102
|
+
#publish(topic, data, compress) {
|
|
103
|
+
if (data === void 0) return 0;
|
|
104
|
+
if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) return this.raw.publish(topic, data, compress);
|
|
105
|
+
const err = this.#validatedOrError(data);
|
|
106
|
+
if (err !== void 0) return this.raw.send(err);
|
|
107
|
+
return this.raw.publish(topic, this.#prepare(data), compress);
|
|
108
|
+
}
|
|
109
|
+
#close(code, reason) {
|
|
110
|
+
const data = this.raw.data;
|
|
111
|
+
if (!data.closeHandlerInvoked && data.close) {
|
|
112
|
+
data.closeHandlerInvoked = true;
|
|
113
|
+
try {
|
|
114
|
+
const result = data.close(this, code ?? 1e3, reason ?? "");
|
|
115
|
+
if (result instanceof Promise) result.then(() => this.raw.close(code, reason)).catch(() => this.raw.close(code, reason));
|
|
116
|
+
return;
|
|
117
|
+
} catch {}
|
|
118
|
+
}
|
|
119
|
+
this.raw.close(code, reason);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
for (const key of [
|
|
123
|
+
"sendText",
|
|
124
|
+
"sendBinary",
|
|
125
|
+
"terminate",
|
|
126
|
+
"publishText",
|
|
127
|
+
"publishBinary",
|
|
128
|
+
"subscribe",
|
|
129
|
+
"unsubscribe",
|
|
130
|
+
"isSubscribed",
|
|
131
|
+
"cork",
|
|
132
|
+
"remoteAddress",
|
|
133
|
+
"binaryType"
|
|
134
|
+
]) Object.defineProperty(ElysiaWS.prototype, key, {
|
|
135
|
+
configurable: true,
|
|
136
|
+
enumerable: false,
|
|
137
|
+
get() {
|
|
138
|
+
const raw = this.raw;
|
|
139
|
+
const value = raw[key];
|
|
140
|
+
return memoize(this, key, typeof value === "function" ? value.bind(raw) : value);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
function isGeneratorObject(value) {
|
|
144
|
+
if (value == null || typeof value !== "object") return false;
|
|
145
|
+
const v = value;
|
|
146
|
+
return typeof v.next === "function" && (typeof v[Symbol.iterator] === "function" || typeof v[Symbol.asyncIterator] === "function");
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
//#endregion
|
|
150
|
+
export { ElysiaWS, isGeneratorObject };
|
package/dist/ws/index.d.ts
CHANGED
|
@@ -1,77 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
import type { MaybeArray, Prettify, RouteSchema } from '../types';
|
|
7
|
-
export declare const websocket: WebSocketHandler<any>;
|
|
8
|
-
type ElysiaServerWebSocket = Omit<ServerWebSocket<unknown>, 'send' | 'ping' | 'pong' | 'publish'>;
|
|
9
|
-
export declare class ElysiaWS<Context = unknown, Route extends RouteSchema = {}> implements ElysiaServerWebSocket {
|
|
10
|
-
raw: ServerWebSocket<{
|
|
11
|
-
id?: string;
|
|
12
|
-
validator?: TypeCheck<TSchema>;
|
|
13
|
-
}>;
|
|
14
|
-
data: Prettify<Omit<Context, 'body' | 'error' | 'status' | 'redirect'>>;
|
|
15
|
-
body: Route['body'];
|
|
16
|
-
constructor(raw: ServerWebSocket<{
|
|
17
|
-
id?: string;
|
|
18
|
-
validator?: TypeCheck<TSchema>;
|
|
19
|
-
}>, data: Prettify<Omit<Context, 'body' | 'error' | 'status' | 'redirect'>>, body?: Route['body']);
|
|
20
|
-
/**
|
|
21
|
-
* Sends a message to the client.
|
|
22
|
-
*
|
|
23
|
-
* @param data The data to send.
|
|
24
|
-
* @param compress Should the data be compressed? If the client does not support compression, this is ignored.
|
|
25
|
-
* @example
|
|
26
|
-
* ws.send("Hello!");
|
|
27
|
-
* ws.send("Compress this.", true);
|
|
28
|
-
* ws.send(new Uint8Array([1, 2, 3, 4]));
|
|
29
|
-
*/
|
|
30
|
-
send(data: FlattenResponse<Route['response']> | BufferSource, compress?: boolean): ServerWebSocketSendStatus;
|
|
31
|
-
/**
|
|
32
|
-
* Sends a ping.
|
|
33
|
-
*
|
|
34
|
-
* @param data The data to send
|
|
35
|
-
*/
|
|
36
|
-
ping(data?: FlattenResponse<Route['response']> | BufferSource): ServerWebSocketSendStatus;
|
|
37
|
-
/**
|
|
38
|
-
* Sends a pong.
|
|
39
|
-
*
|
|
40
|
-
* @param data The data to send
|
|
41
|
-
*/
|
|
42
|
-
pong(data?: FlattenResponse<Route['response']> | BufferSource): ServerWebSocketSendStatus;
|
|
43
|
-
/**
|
|
44
|
-
* Sends a message to subscribers of the topic.
|
|
45
|
-
*
|
|
46
|
-
* @param topic The topic name.
|
|
47
|
-
* @param data The data to send.
|
|
48
|
-
* @param compress Should the data be compressed? If the client does not support compression, this is ignored.
|
|
49
|
-
* @example
|
|
50
|
-
* ws.publish("chat", "Hello!");
|
|
51
|
-
* ws.publish("chat", "Compress this.", true);
|
|
52
|
-
* ws.publish("chat", new Uint8Array([1, 2, 3, 4]));
|
|
53
|
-
*/
|
|
54
|
-
publish(topic: string, data: FlattenResponse<Route['response']> | BufferSource, compress?: boolean): ServerWebSocketSendStatus;
|
|
55
|
-
sendText: ServerWebSocket['sendText'];
|
|
56
|
-
sendBinary: ServerWebSocket['sendBinary'];
|
|
57
|
-
close: ServerWebSocket['close'];
|
|
58
|
-
terminate: ServerWebSocket['terminate'];
|
|
59
|
-
publishText: ServerWebSocket['publishText'];
|
|
60
|
-
publishBinary: ServerWebSocket['publishBinary'];
|
|
61
|
-
subscribe: ServerWebSocket['subscribe'];
|
|
62
|
-
unsubscribe: ServerWebSocket['unsubscribe'];
|
|
63
|
-
isSubscribed: ServerWebSocket['isSubscribed'];
|
|
64
|
-
cork: ServerWebSocket['cork'];
|
|
65
|
-
remoteAddress: ServerWebSocket['remoteAddress'];
|
|
66
|
-
binaryType: ServerWebSocket['binaryType'];
|
|
67
|
-
subscriptions: ServerWebSocket['subscriptions'];
|
|
68
|
-
get readyState(): import("./bun").WebSocketReadyState;
|
|
69
|
-
validator?: TypeCheck<TSchema>;
|
|
70
|
-
['~types']?: {
|
|
71
|
-
validator: Prettify<Route>;
|
|
72
|
-
};
|
|
73
|
-
get id(): string;
|
|
74
|
-
}
|
|
75
|
-
export declare const createWSMessageParser: (parse: MaybeArray<WSParseHandler<any>>) => (ws: ServerWebSocket<any>, message: any) => Promise<any>;
|
|
76
|
-
export declare const createHandleWSResponse: (responseValidator: TypeCheck<any> | ElysiaTypeCheck<any> | undefined) => (ws: ServerWebSocket<any>, data: unknown) => unknown;
|
|
77
|
-
export type { WSLocalHook } from './types';
|
|
1
|
+
import { AnyWSLocalHook, BufferSource, ElysiaWSLike, FlattenResponse, ServerWebSocket, ServerWebSocketSendStatus, WSHandlerResult, WSLocalHook, WSMessageHandler, WSParseHandler, WSResponseValidator, WSValidatorLike, WebSocketCompressor, WebSocketHandler, WebSocketReadyState } from "./types.js";
|
|
2
|
+
import { ElysiaWS, WSConnectionData, isGeneratorObject } from "./context.js";
|
|
3
|
+
import { buildGlobalWSHandler, buildWSRoute } from "./route.js";
|
|
4
|
+
import { createMessageParser, defaultWSParse } from "./parser.js";
|
|
5
|
+
export { type AnyWSLocalHook, type BufferSource, ElysiaWS, type ElysiaWSLike, type FlattenResponse, type ServerWebSocket, type ServerWebSocketSendStatus, type WSConnectionData, type WSHandlerResult, type WSLocalHook, type WSMessageHandler, type WSParseHandler, type WSResponseValidator, type WSValidatorLike, type WebSocketCompressor, type WebSocketHandler, type WebSocketReadyState, buildGlobalWSHandler, buildWSRoute, createMessageParser, defaultWSParse, isGeneratorObject };
|