Skip to content

Commit 7136acd

Browse files
authored
Merge pull request #20 from storyofams/fix/method-decorators-order
fix: execution order of method decorators
2 parents dac731c + 4ddea3c commit 7136acd

File tree

2 files changed

+5
-6
lines changed

2 files changed

+5
-6
lines changed

lib/e2e.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ class TestHandler {
5353
return { contentType, id, step, redirect, test: this.testField };
5454
}
5555

56-
@Post()
5756
@HttpCode(201)
57+
@Post()
5858
@SetHeader('X-Method', 'create')
5959
public create(@Header('Content-Type') contentType: string, @Body() body: CreateDto) {
6060
return { contentType, receivedBody: body, test: this.testField, instanceOf: body instanceof CreateDto };

lib/internals/handler.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,16 @@ export function Handler(method?: HttpVerb): MethodDecorator {
4242
}
4343

4444
return function (target: object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<any>) {
45-
const httpCode: number | undefined = Reflect.getMetadata(HTTP_CODE_TOKEN, target.constructor, propertyKey);
46-
const metaParameters: Array<MetaParameter> = (
47-
Reflect.getMetadata(PARAMETER_TOKEN, target.constructor, propertyKey) ?? []
48-
).sort((a: MetaParameter, b: MetaParameter) => a.index - b.index);
49-
5045
const originalHandler = descriptor.value;
5146
descriptor.value = async function (req: NextApiRequest, res: NextApiResponse) {
5247
if (req.method !== method) {
5348
return notFound(req, res);
5449
}
5550

51+
const httpCode: number | undefined = Reflect.getMetadata(HTTP_CODE_TOKEN, target.constructor, propertyKey);
52+
const metaParameters: Array<MetaParameter> = (
53+
Reflect.getMetadata(PARAMETER_TOKEN, target.constructor, propertyKey) ?? []
54+
).sort((a: MetaParameter, b: MetaParameter) => a.index - b.index);
5655
const classHeaders: Map<string, string> | undefined = Reflect.getMetadata(HEADER_TOKEN, target.constructor);
5756
const methodHeaders: Map<string, string> | undefined = Reflect.getMetadata(
5857
HEADER_TOKEN,

0 commit comments

Comments
 (0)