Skip to content

Commit 85c28b3

Browse files
committed
🔧 fix: #1165
1 parent 63e305b commit 85c28b3

File tree

3 files changed

+71
-109
lines changed

3 files changed

+71
-109
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ Improvement:
3434
- recompile automatically after async modules is mounted
3535
- support macro on when hook has function
3636
- support resolve macro on ws
37+
- [#1146](https://github.com/elysiajs/elysia/pull/1146) add support to return web API's File from handler
38+
- [#1165](https://github.com/elysiajs/elysia/pull/1165) skip non-numeric status codes in response schema validation
3739

3840
Bug fix:
3941
- `Response` returned from `onError` is using octet stream

src/index.ts

Lines changed: 67 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { Memoirist } from 'memoirist'
22
import {
3+
Kind,
34
type TObject,
45
type Static,
56
type TSchema,
67
type TModule,
78
type TRef,
8-
type TProperties,
9-
Kind
9+
type TProperties
1010
} from '@sinclair/typebox'
1111

1212
import type { Context } from './context'
@@ -4692,14 +4692,15 @@ export default class Elysia<
46924692
Ephemeral['standaloneSchema'] &
46934693
Volatile['standaloneSchema'],
46944694
const Macro extends Metadata['macro'],
4695+
const Decorator extends Singleton & {
4696+
derive: Ephemeral['derive'] & Volatile['derive']
4697+
resolve: Ephemeral['resolve'] &
4698+
Volatile['resolve'] &
4699+
MacroToContext<Metadata['macroFn'], Macro>
4700+
},
46954701
const Handle extends InlineHandler<
46964702
NoInfer<Schema>,
4697-
Singleton & {
4698-
derive: Ephemeral['derive'] & Volatile['derive']
4699-
resolve: Ephemeral['resolve'] &
4700-
Volatile['resolve'] &
4701-
MacroToContext<Metadata['macroFn'], Macro>
4702-
},
4703+
Decorator,
47034704
JoinPath<BasePath, Path>
47044705
>
47054706
>(
@@ -4708,12 +4709,7 @@ export default class Elysia<
47084709
hook?: LocalHook<
47094710
LocalSchema,
47104711
Schema,
4711-
Singleton & {
4712-
derive: Ephemeral['derive'] & Volatile['derive']
4713-
resolve: Ephemeral['resolve'] &
4714-
Volatile['resolve'] &
4715-
MacroToContext<Metadata['macroFn'], Macro>
4716-
},
4712+
Decorator,
47174713
Definitions['error'],
47184714
Macro,
47194715
keyof Metadata['parser']
@@ -4782,14 +4778,15 @@ export default class Elysia<
47824778
Ephemeral['standaloneSchema'] &
47834779
Volatile['standaloneSchema'],
47844780
const Macro extends Metadata['macro'],
4781+
const Decorator extends Singleton & {
4782+
derive: Ephemeral['derive'] & Volatile['derive']
4783+
resolve: Ephemeral['resolve'] &
4784+
Volatile['resolve'] &
4785+
MacroToContext<Metadata['macroFn'], Macro>
4786+
},
47854787
const Handle extends InlineHandler<
47864788
NoInfer<Schema>,
4787-
Singleton & {
4788-
derive: Ephemeral['derive'] & Volatile['derive']
4789-
resolve: Ephemeral['resolve'] &
4790-
Volatile['resolve'] &
4791-
MacroToContext<Metadata['macroFn'], Macro>
4792-
},
4789+
Decorator,
47934790
JoinPath<BasePath, Path>
47944791
>
47954792
>(
@@ -4798,12 +4795,7 @@ export default class Elysia<
47984795
hook?: LocalHook<
47994796
LocalSchema,
48004797
Schema,
4801-
Singleton & {
4802-
derive: Ephemeral['derive'] & Volatile['derive']
4803-
resolve: Ephemeral['resolve'] &
4804-
Volatile['resolve'] &
4805-
MacroToContext<Metadata['macroFn'], Macro>
4806-
},
4798+
Decorator,
48074799
Definitions['error'],
48084800
Macro,
48094801
keyof Metadata['parser']
@@ -4872,14 +4864,15 @@ export default class Elysia<
48724864
Ephemeral['standaloneSchema'] &
48734865
Volatile['standaloneSchema'],
48744866
const Macro extends Metadata['macro'],
4867+
const Decorator extends Singleton & {
4868+
derive: Ephemeral['derive'] & Volatile['derive']
4869+
resolve: Ephemeral['resolve'] &
4870+
Volatile['resolve'] &
4871+
MacroToContext<Metadata['macroFn'], Macro>
4872+
},
48754873
const Handle extends InlineHandler<
48764874
NoInfer<Schema>,
4877-
Singleton & {
4878-
derive: Ephemeral['derive'] & Volatile['derive']
4879-
resolve: Ephemeral['resolve'] &
4880-
Volatile['resolve'] &
4881-
MacroToContext<Metadata['macroFn'], Macro>
4882-
},
4875+
Decorator,
48834876
JoinPath<BasePath, Path>
48844877
>
48854878
>(
@@ -4888,12 +4881,7 @@ export default class Elysia<
48884881
hook?: LocalHook<
48894882
LocalSchema,
48904883
Schema,
4891-
Singleton & {
4892-
derive: Ephemeral['derive'] & Volatile['derive']
4893-
resolve: Ephemeral['resolve'] &
4894-
Volatile['resolve'] &
4895-
MacroToContext<Metadata['macroFn'], Macro>
4896-
},
4884+
Decorator,
48974885
Definitions['error'],
48984886
Macro,
48994887
keyof Metadata['parser']
@@ -4962,14 +4950,15 @@ export default class Elysia<
49624950
Ephemeral['standaloneSchema'] &
49634951
Volatile['standaloneSchema'],
49644952
const Macro extends Metadata['macro'],
4953+
const Decorator extends Singleton & {
4954+
derive: Ephemeral['derive'] & Volatile['derive']
4955+
resolve: Ephemeral['resolve'] &
4956+
Volatile['resolve'] &
4957+
MacroToContext<Metadata['macroFn'], Macro>
4958+
},
49654959
const Handle extends InlineHandler<
49664960
NoInfer<Schema>,
4967-
Singleton & {
4968-
derive: Ephemeral['derive'] & Volatile['derive']
4969-
resolve: Ephemeral['resolve'] &
4970-
Volatile['resolve'] &
4971-
MacroToContext<Metadata['macroFn'], Macro>
4972-
},
4961+
Decorator,
49734962
JoinPath<BasePath, Path>
49744963
>
49754964
>(
@@ -4978,12 +4967,7 @@ export default class Elysia<
49784967
hook?: LocalHook<
49794968
LocalSchema,
49804969
Schema,
4981-
Singleton & {
4982-
derive: Ephemeral['derive'] & Volatile['derive']
4983-
resolve: Ephemeral['resolve'] &
4984-
Volatile['resolve'] &
4985-
MacroToContext<Metadata['macroFn'], Macro>
4986-
},
4970+
Decorator,
49874971
Definitions['error'],
49884972
Macro,
49894973
keyof Metadata['parser']
@@ -5052,14 +5036,15 @@ export default class Elysia<
50525036
Ephemeral['standaloneSchema'] &
50535037
Volatile['standaloneSchema'],
50545038
const Macro extends Metadata['macro'],
5039+
const Decorator extends Singleton & {
5040+
derive: Ephemeral['derive'] & Volatile['derive']
5041+
resolve: Ephemeral['resolve'] &
5042+
Volatile['resolve'] &
5043+
MacroToContext<Metadata['macroFn'], Macro>
5044+
},
50555045
const Handle extends InlineHandler<
50565046
NoInfer<Schema>,
5057-
Singleton & {
5058-
derive: Ephemeral['derive'] & Volatile['derive']
5059-
resolve: Ephemeral['resolve'] &
5060-
Volatile['resolve'] &
5061-
MacroToContext<Metadata['macroFn'], Macro>
5062-
},
5047+
Decorator,
50635048
JoinPath<BasePath, Path>
50645049
>
50655050
>(
@@ -5068,12 +5053,7 @@ export default class Elysia<
50685053
hook?: LocalHook<
50695054
LocalSchema,
50705055
Schema,
5071-
Singleton & {
5072-
derive: Ephemeral['derive'] & Volatile['derive']
5073-
resolve: Ephemeral['resolve'] &
5074-
Volatile['resolve'] &
5075-
MacroToContext<Metadata['macroFn'], Macro>
5076-
},
5056+
Decorator,
50775057
Definitions['error'],
50785058
Macro,
50795059
keyof Metadata['parser']
@@ -5142,14 +5122,15 @@ export default class Elysia<
51425122
Ephemeral['standaloneSchema'] &
51435123
Volatile['standaloneSchema'],
51445124
const Macro extends Metadata['macro'],
5125+
const Decorator extends Singleton & {
5126+
derive: Ephemeral['derive'] & Volatile['derive']
5127+
resolve: Ephemeral['resolve'] &
5128+
Volatile['resolve'] &
5129+
MacroToContext<Metadata['macroFn'], Macro>
5130+
},
51455131
const Handle extends InlineHandler<
51465132
NoInfer<Schema>,
5147-
Singleton & {
5148-
derive: Ephemeral['derive'] & Volatile['derive']
5149-
resolve: Ephemeral['resolve'] &
5150-
Volatile['resolve'] &
5151-
MacroToContext<Metadata['macroFn'], Macro>
5152-
},
5133+
Decorator,
51535134
JoinPath<BasePath, Path>
51545135
>
51555136
>(
@@ -5158,12 +5139,7 @@ export default class Elysia<
51585139
hook?: LocalHook<
51595140
LocalSchema,
51605141
Schema,
5161-
Singleton & {
5162-
derive: Ephemeral['derive'] & Volatile['derive']
5163-
resolve: Ephemeral['resolve'] &
5164-
Volatile['resolve'] &
5165-
MacroToContext<Metadata['macroFn'], Macro>
5166-
},
5142+
Decorator,
51675143
Definitions['error'],
51685144
Macro,
51695145
keyof Metadata['parser']
@@ -5232,14 +5208,15 @@ export default class Elysia<
52325208
Ephemeral['standaloneSchema'] &
52335209
Volatile['standaloneSchema'],
52345210
const Macro extends Metadata['macro'],
5211+
const Decorator extends Singleton & {
5212+
derive: Ephemeral['derive'] & Volatile['derive']
5213+
resolve: Ephemeral['resolve'] &
5214+
Volatile['resolve'] &
5215+
MacroToContext<Metadata['macroFn'], Macro>
5216+
},
52355217
const Handle extends InlineHandler<
52365218
NoInfer<Schema>,
5237-
Singleton & {
5238-
derive: Ephemeral['derive'] & Volatile['derive']
5239-
resolve: Ephemeral['resolve'] &
5240-
Volatile['resolve'] &
5241-
MacroToContext<Metadata['macroFn'], Macro>
5242-
},
5219+
Decorator,
52435220
JoinPath<BasePath, Path>
52445221
>
52455222
>(
@@ -5248,12 +5225,7 @@ export default class Elysia<
52485225
hook?: LocalHook<
52495226
LocalSchema,
52505227
Schema,
5251-
Singleton & {
5252-
derive: Ephemeral['derive'] & Volatile['derive']
5253-
resolve: Ephemeral['resolve'] &
5254-
Volatile['resolve'] &
5255-
MacroToContext<Metadata['macroFn'], Macro>
5256-
},
5228+
Decorator,
52575229
Definitions['error'],
52585230
Macro,
52595231
keyof Metadata['parser']
@@ -5323,14 +5295,15 @@ export default class Elysia<
53235295
Ephemeral['standaloneSchema'] &
53245296
Volatile['standaloneSchema'],
53255297
const Macro extends Metadata['macro'],
5298+
const Decorator extends Singleton & {
5299+
derive: Ephemeral['derive'] & Volatile['derive']
5300+
resolve: Ephemeral['resolve'] &
5301+
Volatile['resolve'] &
5302+
MacroToContext<Metadata['macroFn'], Macro>
5303+
},
53265304
const Handle extends InlineHandler<
53275305
NoInfer<Schema>,
5328-
Singleton & {
5329-
derive: Ephemeral['derive'] & Volatile['derive']
5330-
resolve: Ephemeral['resolve'] &
5331-
Volatile['resolve'] &
5332-
MacroToContext<Metadata['macroFn'], Macro>
5333-
},
5306+
Decorator,
53345307
JoinPath<BasePath, Path>
53355308
>
53365309
>(
@@ -5340,12 +5313,7 @@ export default class Elysia<
53405313
hook?: LocalHook<
53415314
LocalSchema,
53425315
Schema,
5343-
Singleton & {
5344-
derive: Ephemeral['derive'] & Volatile['derive']
5345-
resolve: Ephemeral['resolve'] &
5346-
Volatile['resolve'] &
5347-
MacroToContext<Metadata['macroFn'], Macro>
5348-
},
5316+
Decorator,
53495317
Definitions['error'],
53505318
Macro,
53515319
keyof Metadata['parser']
@@ -5419,17 +5387,7 @@ export default class Elysia<
54195387
const Macro extends Metadata['macro']
54205388
>(
54215389
path: Path,
5422-
options: WSLocalHook<
5423-
LocalSchema,
5424-
Schema,
5425-
Singleton & {
5426-
derive: Ephemeral['derive'] & Volatile['derive']
5427-
resolve: Ephemeral['resolve'] &
5428-
Volatile['resolve'] &
5429-
MacroToContext<Metadata['macroFn'], Macro>
5430-
},
5431-
Macro
5432-
>
5390+
options: WSLocalHook<LocalSchema, Schema, Decorator, Macro>
54335391
): Elysia<
54345392
BasePath,
54355393
Singleton,

src/schema.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,6 +1141,8 @@ export const getResponseSchemaValidator = (
11411141
const record: Record<number, ElysiaTypeCheck<any>> = {}
11421142

11431143
Object.keys(maybeSchemaOrRecord).forEach((status): TSchema | undefined => {
1144+
if (isNaN(+status)) return
1145+
11441146
const maybeNameOrSchema = maybeSchemaOrRecord[+status]
11451147

11461148
if (typeof maybeNameOrSchema === 'string') {

0 commit comments

Comments
 (0)