@e22m4u/ts-rest-router 0.1.2 → 0.2.1
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/README.md +171 -74
- package/dist/cjs/index.cjs +352 -362
- package/dist/esm/controller-registry.js +37 -32
- package/dist/esm/debuggable-service.d.ts +10 -1
- package/dist/esm/debuggable-service.js +14 -3
- package/dist/esm/decorators/after-action/after-action-decorator.d.ts +9 -0
- package/dist/esm/decorators/{before/before-decorator.js → after-action/after-action-decorator.js} +7 -7
- package/dist/esm/decorators/{before/before-decorator.spec.js → after-action/after-action-decorator.spec.js} +19 -19
- package/dist/esm/decorators/{after/after-metadata.d.ts → after-action/after-action-metadata.d.ts} +4 -4
- package/dist/esm/decorators/after-action/after-action-metadata.js +5 -0
- package/dist/esm/decorators/{after/after-reflector.d.ts → after-action/after-action-reflector.d.ts} +5 -5
- package/dist/esm/decorators/{after/after-reflector.js → after-action/after-action-reflector.js} +6 -6
- package/dist/esm/decorators/{before/before-reflector.spec.js → after-action/after-action-reflector.spec.js} +23 -24
- package/dist/esm/decorators/after-action/index.d.ts +3 -0
- package/dist/esm/decorators/after-action/index.js +3 -0
- package/dist/esm/decorators/before-action/before-action-decorator.d.ts +9 -0
- package/dist/esm/decorators/{after/after-decorator.js → before-action/before-action-decorator.js} +7 -7
- package/dist/esm/decorators/{after/after-decorator.spec.js → before-action/before-action-decorator.spec.js} +19 -19
- package/dist/esm/decorators/{before/before-metadata.d.ts → before-action/before-action-metadata.d.ts} +4 -4
- package/dist/esm/decorators/before-action/before-action-metadata.js +5 -0
- package/dist/esm/decorators/{before/before-reflector.d.ts → before-action/before-action-reflector.d.ts} +5 -5
- package/dist/esm/decorators/{before/before-reflector.js → before-action/before-action-reflector.js} +6 -6
- package/dist/esm/decorators/{after/after-reflector.spec.js → before-action/before-action-reflector.spec.js} +23 -24
- package/dist/esm/decorators/before-action/index.d.ts +3 -0
- package/dist/esm/decorators/before-action/index.js +3 -0
- package/dist/esm/decorators/index.d.ts +4 -4
- package/dist/esm/decorators/index.js +4 -4
- package/dist/esm/decorators/request-context/request-context-decorator.d.ts +4 -4
- package/dist/esm/decorators/request-context/request-context-decorator.js +4 -4
- package/dist/esm/decorators/request-context/request-context-decorator.spec.js +6 -0
- package/dist/esm/decorators/request-context/request-context-reflector.spec.js +0 -1
- package/dist/esm/decorators/request-data/request-data-decorator.d.ts +10 -10
- package/dist/esm/decorators/request-data/request-data-decorator.js +10 -10
- package/dist/esm/decorators/request-data/request-data-decorator.spec.js +44 -32
- package/dist/esm/decorators/request-data/request-data-metadata.d.ts +1 -1
- package/dist/esm/decorators/request-data/request-data-reflector.spec.js +0 -1
- package/dist/esm/decorators/rest-action/index.d.ts +3 -0
- package/dist/esm/decorators/rest-action/index.js +3 -0
- package/dist/esm/decorators/rest-action/rest-action-decorator.d.ts +57 -0
- package/dist/esm/decorators/rest-action/rest-action-decorator.js +52 -0
- package/dist/esm/decorators/rest-action/rest-action-decorator.spec.js +401 -0
- package/dist/esm/decorators/{action/action-metadata.d.ts → rest-action/rest-action-metadata.d.ts} +6 -6
- package/dist/esm/decorators/rest-action/rest-action-metadata.js +5 -0
- package/dist/esm/decorators/rest-action/rest-action-reflector.d.ts +22 -0
- package/dist/esm/decorators/{action/action-reflector.js → rest-action/rest-action-reflector.js} +6 -6
- package/dist/esm/decorators/{action/action-reflector.spec.js → rest-action/rest-action-reflector.spec.js} +13 -14
- package/dist/esm/decorators/rest-controller/index.d.ts +3 -0
- package/dist/esm/decorators/rest-controller/index.js +3 -0
- package/dist/esm/decorators/rest-controller/rest-controller-decorator.d.ts +14 -0
- package/dist/esm/decorators/{controller/controller-decorator.js → rest-controller/rest-controller-decorator.js} +5 -5
- package/dist/esm/decorators/{controller/controller-decorator.spec.js → rest-controller/rest-controller-decorator.spec.js} +15 -15
- package/dist/esm/decorators/{controller/controller-metadata.d.ts → rest-controller/rest-controller-metadata.d.ts} +5 -5
- package/dist/esm/decorators/rest-controller/rest-controller-metadata.js +5 -0
- package/dist/esm/decorators/rest-controller/rest-controller-reflector.d.ts +20 -0
- package/dist/esm/decorators/rest-controller/rest-controller-reflector.js +24 -0
- package/dist/esm/decorators/{controller/controller-reflector.spec.js → rest-controller/rest-controller-reflector.spec.js} +12 -13
- package/dist/esm/errors/not-a-controller-error.js +1 -1
- package/dist/esm/types.d.ts +0 -10
- package/dist/esm/utils/index.d.ts +0 -1
- package/dist/esm/utils/index.js +0 -1
- package/eslint.config.js +1 -1
- package/package.json +15 -15
- package/src/controller-registry.spec.ts +192 -134
- package/src/controller-registry.ts +46 -39
- package/src/debuggable-service.spec.ts +0 -1
- package/src/debuggable-service.ts +17 -4
- package/src/decorators/{before/before-decorator.spec.ts → after-action/after-action-decorator.spec.ts} +19 -19
- package/src/decorators/{before/before-decorator.ts → after-action/after-action-decorator.ts} +9 -9
- package/src/decorators/{after/after-metadata.ts → after-action/after-action-metadata.ts} +5 -5
- package/src/decorators/{before/before-reflector.spec.ts → after-action/after-action-reflector.spec.ts} +33 -24
- package/src/decorators/{before/before-reflector.ts → after-action/after-action-reflector.ts} +13 -9
- package/src/decorators/after-action/index.ts +3 -0
- package/src/decorators/{after/after-decorator.spec.ts → before-action/before-action-decorator.spec.ts} +19 -19
- package/src/decorators/{after/after-decorator.ts → before-action/before-action-decorator.ts} +9 -9
- package/src/decorators/before-action/before-action-metadata.ts +17 -0
- package/src/decorators/{after/after-reflector.spec.ts → before-action/before-action-reflector.spec.ts} +40 -24
- package/src/decorators/{after/after-reflector.ts → before-action/before-action-reflector.ts} +18 -9
- package/src/decorators/before-action/index.ts +3 -0
- package/src/decorators/index.ts +4 -4
- package/src/decorators/request-context/request-context-decorator.spec.ts +7 -0
- package/src/decorators/request-context/request-context-decorator.ts +4 -4
- package/src/decorators/request-context/request-context-reflector.spec.ts +0 -1
- package/src/decorators/request-data/request-data-decorator.spec.ts +45 -32
- package/src/decorators/request-data/request-data-decorator.ts +10 -10
- package/src/decorators/request-data/request-data-metadata.ts +1 -1
- package/src/decorators/request-data/request-data-reflector.spec.ts +0 -1
- package/src/decorators/rest-action/index.ts +3 -0
- package/src/decorators/rest-action/rest-action-decorator.spec.ts +325 -0
- package/src/decorators/rest-action/rest-action-decorator.ts +166 -0
- package/src/decorators/{action/action-metadata.ts → rest-action/rest-action-metadata.ts} +7 -7
- package/src/decorators/{action/action-reflector.spec.ts → rest-action/rest-action-reflector.spec.ts} +13 -14
- package/src/decorators/rest-action/rest-action-reflector.ts +41 -0
- package/src/decorators/rest-controller/index.ts +3 -0
- package/src/decorators/{controller/controller-decorator.spec.ts → rest-controller/rest-controller-decorator.spec.ts} +16 -16
- package/src/decorators/{controller/controller-decorator.ts → rest-controller/rest-controller-decorator.ts} +14 -10
- package/src/decorators/{controller/controller-metadata.ts → rest-controller/rest-controller-metadata.ts} +6 -7
- package/src/decorators/{controller/controller-reflector.spec.ts → rest-controller/rest-controller-reflector.spec.ts} +21 -13
- package/src/decorators/rest-controller/rest-controller-reflector.ts +32 -0
- package/src/errors/not-a-controller-error.ts +4 -1
- package/src/types.ts +0 -10
- package/src/utils/index.ts +0 -1
- package/dist/esm/decorators/action/action-decorator.d.ts +0 -52
- package/dist/esm/decorators/action/action-decorator.js +0 -62
- package/dist/esm/decorators/action/action-decorator.spec.js +0 -59
- package/dist/esm/decorators/action/action-metadata.js +0 -5
- package/dist/esm/decorators/action/action-reflector.d.ts +0 -22
- package/dist/esm/decorators/action/index.d.ts +0 -3
- package/dist/esm/decorators/action/index.js +0 -3
- package/dist/esm/decorators/after/after-decorator.d.ts +0 -9
- package/dist/esm/decorators/after/after-metadata.js +0 -5
- package/dist/esm/decorators/after/index.d.ts +0 -3
- package/dist/esm/decorators/after/index.js +0 -3
- package/dist/esm/decorators/before/before-decorator.d.ts +0 -9
- package/dist/esm/decorators/before/before-metadata.js +0 -5
- package/dist/esm/decorators/before/index.d.ts +0 -3
- package/dist/esm/decorators/before/index.js +0 -3
- package/dist/esm/decorators/controller/controller-decorator.d.ts +0 -14
- package/dist/esm/decorators/controller/controller-metadata.js +0 -5
- package/dist/esm/decorators/controller/controller-reflector.d.ts +0 -20
- package/dist/esm/decorators/controller/controller-reflector.js +0 -24
- package/dist/esm/decorators/controller/index.d.ts +0 -3
- package/dist/esm/decorators/controller/index.js +0 -3
- package/dist/esm/utils/create-debugger.d.ts +0 -44
- package/dist/esm/utils/create-debugger.js +0 -81
- package/dist/esm/utils/create-debugger.spec.d.ts +0 -1
- package/dist/esm/utils/create-debugger.spec.js +0 -8
- package/src/decorators/action/action-decorator.spec.ts +0 -42
- package/src/decorators/action/action-decorator.ts +0 -98
- package/src/decorators/action/action-reflector.ts +0 -38
- package/src/decorators/action/index.ts +0 -3
- package/src/decorators/after/index.ts +0 -3
- package/src/decorators/before/before-metadata.ts +0 -17
- package/src/decorators/before/index.ts +0 -3
- package/src/decorators/controller/controller-reflector.ts +0 -28
- package/src/decorators/controller/index.ts +0 -3
- package/src/utils/create-debugger.spec.ts +0 -9
- package/src/utils/create-debugger.ts +0 -98
- /package/dist/esm/decorators/{action/action-decorator.spec.d.ts → after-action/after-action-decorator.spec.d.ts} +0 -0
- /package/dist/esm/decorators/{action/action-reflector.spec.d.ts → after-action/after-action-reflector.spec.d.ts} +0 -0
- /package/dist/esm/decorators/{after/after-decorator.spec.d.ts → before-action/before-action-decorator.spec.d.ts} +0 -0
- /package/dist/esm/decorators/{after/after-reflector.spec.d.ts → before-action/before-action-reflector.spec.d.ts} +0 -0
- /package/dist/esm/decorators/{before/before-decorator.spec.d.ts → rest-action/rest-action-decorator.spec.d.ts} +0 -0
- /package/dist/esm/decorators/{before/before-reflector.spec.d.ts → rest-action/rest-action-reflector.spec.d.ts} +0 -0
- /package/dist/esm/decorators/{controller/controller-decorator.spec.d.ts → rest-controller/rest-controller-decorator.spec.d.ts} +0 -0
- /package/dist/esm/decorators/{controller/controller-reflector.spec.d.ts → rest-controller/rest-controller-reflector.spec.d.ts} +0 -0
package/dist/esm/decorators/{after/after-decorator.js → before-action/before-action-decorator.js}
RENAMED
@@ -1,22 +1,22 @@
|
|
1
|
-
import { AfterReflector } from './after-reflector.js';
|
2
1
|
import { DecoratorTargetType } from '@e22m4u/ts-reflector';
|
3
2
|
import { getDecoratorTargetType } from '@e22m4u/ts-reflector';
|
3
|
+
import { BeforeActionReflector } from './before-action-reflector.js';
|
4
4
|
/**
|
5
|
-
*
|
5
|
+
* Before action decorator.
|
6
6
|
*
|
7
|
-
* @param
|
7
|
+
* @param middleware
|
8
8
|
*/
|
9
|
-
export function
|
9
|
+
export function beforeAction(middleware) {
|
10
10
|
return function (target, propertyKey, descriptor) {
|
11
11
|
const decoratorType = getDecoratorTargetType(target, propertyKey, descriptor);
|
12
12
|
if (decoratorType === DecoratorTargetType.CONSTRUCTOR) {
|
13
|
-
|
13
|
+
BeforeActionReflector.addMetadata({ middleware }, target);
|
14
14
|
}
|
15
15
|
else if (decoratorType === DecoratorTargetType.INSTANCE_METHOD) {
|
16
|
-
|
16
|
+
BeforeActionReflector.addMetadata({ propertyKey, middleware }, target.constructor, propertyKey);
|
17
17
|
}
|
18
18
|
else {
|
19
|
-
throw new Error('@
|
19
|
+
throw new Error('@beforeAction decorator is only supported on a class or an instance method.');
|
20
20
|
}
|
21
21
|
};
|
22
22
|
}
|
@@ -9,31 +9,31 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
};
|
10
10
|
/* eslint mocha/no-sibling-hooks: 0 */
|
11
11
|
import { expect } from 'chai';
|
12
|
-
import {
|
13
|
-
import {
|
12
|
+
import { beforeAction } from './before-action-decorator.js';
|
13
|
+
import { BeforeActionReflector } from './before-action-reflector.js';
|
14
14
|
const MIDDLEWARE_1 = () => undefined;
|
15
15
|
const MIDDLEWARE_2 = () => undefined;
|
16
16
|
const MIDDLEWARE_3 = () => undefined;
|
17
|
-
describe('
|
17
|
+
describe('beforeAction', function () {
|
18
18
|
describe('class target', function () {
|
19
19
|
it('sets given middleware to the target metadata', function () {
|
20
20
|
let Target = class Target {
|
21
21
|
method() { }
|
22
22
|
};
|
23
23
|
Target = __decorate([
|
24
|
-
|
24
|
+
beforeAction(MIDDLEWARE_1)
|
25
25
|
], Target);
|
26
|
-
const res =
|
26
|
+
const res = BeforeActionReflector.getMetadata(Target);
|
27
27
|
expect(res).to.be.eql([{ middleware: MIDDLEWARE_1 }]);
|
28
28
|
});
|
29
|
-
it('sets
|
29
|
+
it('sets multiple middlewares to the target metadata', function () {
|
30
30
|
let Target = class Target {
|
31
31
|
method() { }
|
32
32
|
};
|
33
33
|
Target = __decorate([
|
34
|
-
|
34
|
+
beforeAction([MIDDLEWARE_1, MIDDLEWARE_2])
|
35
35
|
], Target);
|
36
|
-
const res =
|
36
|
+
const res = BeforeActionReflector.getMetadata(Target);
|
37
37
|
expect(res).to.be.eql([{ middleware: [MIDDLEWARE_1, MIDDLEWARE_2] }]);
|
38
38
|
});
|
39
39
|
it('allows to use the decorator multiple times', function () {
|
@@ -41,10 +41,10 @@ describe('after', function () {
|
|
41
41
|
method() { }
|
42
42
|
};
|
43
43
|
Target = __decorate([
|
44
|
-
|
45
|
-
|
44
|
+
beforeAction(MIDDLEWARE_1),
|
45
|
+
beforeAction([MIDDLEWARE_2, MIDDLEWARE_3])
|
46
46
|
], Target);
|
47
|
-
const res =
|
47
|
+
const res = BeforeActionReflector.getMetadata(Target);
|
48
48
|
expect(res).to.be.eql([
|
49
49
|
{ middleware: MIDDLEWARE_1 },
|
50
50
|
{ middleware: [MIDDLEWARE_2, MIDDLEWARE_3] },
|
@@ -57,12 +57,12 @@ describe('after', function () {
|
|
57
57
|
method() { }
|
58
58
|
}
|
59
59
|
__decorate([
|
60
|
-
|
60
|
+
beforeAction(MIDDLEWARE_1),
|
61
61
|
__metadata("design:type", Function),
|
62
62
|
__metadata("design:paramtypes", []),
|
63
63
|
__metadata("design:returntype", void 0)
|
64
64
|
], Target.prototype, "method", null);
|
65
|
-
const res =
|
65
|
+
const res = BeforeActionReflector.getMetadata(Target, 'method');
|
66
66
|
expect(res).to.be.eql([
|
67
67
|
{
|
68
68
|
propertyKey: 'method',
|
@@ -70,17 +70,17 @@ describe('after', function () {
|
|
70
70
|
},
|
71
71
|
]);
|
72
72
|
});
|
73
|
-
it('sets
|
73
|
+
it('sets multiple middlewares to the target metadata', function () {
|
74
74
|
class Target {
|
75
75
|
method() { }
|
76
76
|
}
|
77
77
|
__decorate([
|
78
|
-
|
78
|
+
beforeAction([MIDDLEWARE_1, MIDDLEWARE_2]),
|
79
79
|
__metadata("design:type", Function),
|
80
80
|
__metadata("design:paramtypes", []),
|
81
81
|
__metadata("design:returntype", void 0)
|
82
82
|
], Target.prototype, "method", null);
|
83
|
-
const res =
|
83
|
+
const res = BeforeActionReflector.getMetadata(Target, 'method');
|
84
84
|
expect(res).to.be.eql([
|
85
85
|
{
|
86
86
|
propertyKey: 'method',
|
@@ -93,13 +93,13 @@ describe('after', function () {
|
|
93
93
|
method() { }
|
94
94
|
}
|
95
95
|
__decorate([
|
96
|
-
|
97
|
-
|
96
|
+
beforeAction(MIDDLEWARE_1),
|
97
|
+
beforeAction([MIDDLEWARE_2, MIDDLEWARE_3]),
|
98
98
|
__metadata("design:type", Function),
|
99
99
|
__metadata("design:paramtypes", []),
|
100
100
|
__metadata("design:returntype", void 0)
|
101
101
|
], Target.prototype, "method", null);
|
102
|
-
const res =
|
102
|
+
const res = BeforeActionReflector.getMetadata(Target, 'method');
|
103
103
|
expect(res).to.be.eql([
|
104
104
|
{
|
105
105
|
propertyKey: 'method',
|
@@ -1,13 +1,13 @@
|
|
1
1
|
import { MetadataKey } from '@e22m4u/ts-reflector';
|
2
2
|
import { RoutePreHandler } from '@e22m4u/js-trie-router';
|
3
3
|
/**
|
4
|
-
* Before metadata.
|
4
|
+
* Before action metadata.
|
5
5
|
*/
|
6
|
-
export type
|
6
|
+
export type BeforeActionMetadata = {
|
7
7
|
propertyKey?: string;
|
8
8
|
middleware: RoutePreHandler | RoutePreHandler[];
|
9
9
|
};
|
10
10
|
/**
|
11
|
-
* Before metadata key.
|
11
|
+
* Before action metadata key.
|
12
12
|
*/
|
13
|
-
export declare const
|
13
|
+
export declare const BEFORE_ACTION_METADATA_KEY: MetadataKey<BeforeActionMetadata[]>;
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import { Constructor } from '../../types.js';
|
2
|
-
import {
|
2
|
+
import { BeforeActionMetadata } from './before-action-metadata.js';
|
3
3
|
/**
|
4
|
-
* Before reflector.
|
4
|
+
* Before action reflector.
|
5
5
|
*/
|
6
|
-
export declare class
|
6
|
+
export declare class BeforeActionReflector {
|
7
7
|
/**
|
8
8
|
* Set metadata.
|
9
9
|
*
|
@@ -11,12 +11,12 @@ export declare class BeforeReflector {
|
|
11
11
|
* @param target
|
12
12
|
* @param propertyKey
|
13
13
|
*/
|
14
|
-
static addMetadata(metadata:
|
14
|
+
static addMetadata(metadata: BeforeActionMetadata, target: Constructor, propertyKey?: string): void;
|
15
15
|
/**
|
16
16
|
* Get metadata.
|
17
17
|
*
|
18
18
|
* @param target
|
19
19
|
* @param propertyKey
|
20
20
|
*/
|
21
|
-
static getMetadata(target: Constructor, propertyKey?: string):
|
21
|
+
static getMetadata(target: Constructor, propertyKey?: string): BeforeActionMetadata[];
|
22
22
|
}
|
package/dist/esm/decorators/{before/before-reflector.js → before-action/before-action-reflector.js}
RENAMED
@@ -1,9 +1,9 @@
|
|
1
1
|
import { Reflector } from '@e22m4u/ts-reflector';
|
2
|
-
import {
|
2
|
+
import { BEFORE_ACTION_METADATA_KEY } from './before-action-metadata.js';
|
3
3
|
/**
|
4
|
-
* Before reflector.
|
4
|
+
* Before action reflector.
|
5
5
|
*/
|
6
|
-
export class
|
6
|
+
export class BeforeActionReflector {
|
7
7
|
/**
|
8
8
|
* Set metadata.
|
9
9
|
*
|
@@ -12,9 +12,9 @@ export class BeforeReflector {
|
|
12
12
|
* @param propertyKey
|
13
13
|
*/
|
14
14
|
static addMetadata(metadata, target, propertyKey) {
|
15
|
-
const oldArray = Reflector.getOwnMetadata(
|
15
|
+
const oldArray = Reflector.getOwnMetadata(BEFORE_ACTION_METADATA_KEY, target, propertyKey) ?? [];
|
16
16
|
const newArray = [metadata, ...oldArray];
|
17
|
-
Reflector.defineMetadata(
|
17
|
+
Reflector.defineMetadata(BEFORE_ACTION_METADATA_KEY, newArray, target, propertyKey);
|
18
18
|
}
|
19
19
|
/**
|
20
20
|
* Get metadata.
|
@@ -23,7 +23,7 @@ export class BeforeReflector {
|
|
23
23
|
* @param propertyKey
|
24
24
|
*/
|
25
25
|
static getMetadata(target, propertyKey) {
|
26
|
-
const metadata = Reflector.getOwnMetadata(
|
26
|
+
const metadata = Reflector.getOwnMetadata(BEFORE_ACTION_METADATA_KEY, target, propertyKey);
|
27
27
|
return metadata ?? [];
|
28
28
|
}
|
29
29
|
}
|
@@ -1,12 +1,11 @@
|
|
1
1
|
import { expect } from 'chai';
|
2
|
-
import { describe } from 'mocha';
|
3
2
|
import { Reflector } from '@e22m4u/ts-reflector';
|
4
|
-
import {
|
5
|
-
import {
|
3
|
+
import { BeforeActionReflector } from './before-action-reflector.js';
|
4
|
+
import { BEFORE_ACTION_METADATA_KEY } from './before-action-metadata.js';
|
6
5
|
const MIDDLEWARE_1 = () => undefined;
|
7
6
|
const MIDDLEWARE_2 = () => undefined;
|
8
7
|
const MIDDLEWARE_3 = () => undefined;
|
9
|
-
describe('
|
8
|
+
describe('BeforeActionReflector', function () {
|
10
9
|
describe('class target', function () {
|
11
10
|
describe('addMetadata', function () {
|
12
11
|
it('adds a given value to the target metadata', function () {
|
@@ -14,9 +13,9 @@ describe('AfterReflector', function () {
|
|
14
13
|
}
|
15
14
|
const md1 = { middleware: MIDDLEWARE_1 };
|
16
15
|
const md2 = { middleware: [MIDDLEWARE_2, MIDDLEWARE_3] };
|
17
|
-
|
18
|
-
|
19
|
-
const res = Reflector.getOwnMetadata(
|
16
|
+
BeforeActionReflector.addMetadata(md1, Target);
|
17
|
+
BeforeActionReflector.addMetadata(md2, Target);
|
18
|
+
const res = Reflector.getOwnMetadata(BEFORE_ACTION_METADATA_KEY, Target);
|
20
19
|
expect(res).to.be.eql([md2, md1]);
|
21
20
|
});
|
22
21
|
});
|
@@ -24,7 +23,7 @@ describe('AfterReflector', function () {
|
|
24
23
|
it('returns an empty array if no metadata', function () {
|
25
24
|
class Target {
|
26
25
|
}
|
27
|
-
const res =
|
26
|
+
const res = BeforeActionReflector.getMetadata(Target);
|
28
27
|
expect(res).to.be.eql([]);
|
29
28
|
});
|
30
29
|
it('returns existing metadata by the target', function () {
|
@@ -33,8 +32,8 @@ describe('AfterReflector', function () {
|
|
33
32
|
const md1 = { middleware: MIDDLEWARE_1 };
|
34
33
|
const md2 = { middleware: [MIDDLEWARE_2, MIDDLEWARE_3] };
|
35
34
|
const mdArray = [md1, md2];
|
36
|
-
Reflector.defineMetadata(
|
37
|
-
const res =
|
35
|
+
Reflector.defineMetadata(BEFORE_ACTION_METADATA_KEY, mdArray, Target);
|
36
|
+
const res = BeforeActionReflector.getMetadata(Target);
|
38
37
|
expect(res).to.be.eql(mdArray);
|
39
38
|
});
|
40
39
|
});
|
@@ -46,9 +45,9 @@ describe('AfterReflector', function () {
|
|
46
45
|
}
|
47
46
|
const md1 = { middleware: MIDDLEWARE_1 };
|
48
47
|
const md2 = { middleware: [MIDDLEWARE_2, MIDDLEWARE_3] };
|
49
|
-
|
50
|
-
|
51
|
-
const res = Reflector.getOwnMetadata(
|
48
|
+
BeforeActionReflector.addMetadata(md1, Target, 'prop');
|
49
|
+
BeforeActionReflector.addMetadata(md2, Target, 'prop');
|
50
|
+
const res = Reflector.getOwnMetadata(BEFORE_ACTION_METADATA_KEY, Target, 'prop');
|
52
51
|
expect(res).to.be.eql([md2, md1]);
|
53
52
|
});
|
54
53
|
});
|
@@ -56,7 +55,7 @@ describe('AfterReflector', function () {
|
|
56
55
|
it('returns an empty array if no metadata', function () {
|
57
56
|
class Target {
|
58
57
|
}
|
59
|
-
const res =
|
58
|
+
const res = BeforeActionReflector.getMetadata(Target, 'prop');
|
60
59
|
expect(res).to.be.eql([]);
|
61
60
|
});
|
62
61
|
it('returns existing metadata by the target', function () {
|
@@ -65,8 +64,8 @@ describe('AfterReflector', function () {
|
|
65
64
|
const md1 = { middleware: MIDDLEWARE_1 };
|
66
65
|
const md2 = { middleware: [MIDDLEWARE_2, MIDDLEWARE_3] };
|
67
66
|
const mdArray = [md1, md2];
|
68
|
-
Reflector.defineMetadata(
|
69
|
-
const res =
|
67
|
+
Reflector.defineMetadata(BEFORE_ACTION_METADATA_KEY, mdArray, Target, 'prop');
|
68
|
+
const res = BeforeActionReflector.getMetadata(Target, 'prop');
|
70
69
|
expect(res).to.be.eql(mdArray);
|
71
70
|
});
|
72
71
|
});
|
@@ -77,10 +76,10 @@ describe('AfterReflector', function () {
|
|
77
76
|
}
|
78
77
|
const md1 = { middleware: MIDDLEWARE_1 };
|
79
78
|
const md2 = { middleware: MIDDLEWARE_2 };
|
80
|
-
|
81
|
-
|
82
|
-
const res1 = Reflector.getOwnMetadata(
|
83
|
-
const res2 = Reflector.getOwnMetadata(
|
79
|
+
BeforeActionReflector.addMetadata(md1, Target);
|
80
|
+
BeforeActionReflector.addMetadata(md2, Target, 'prop');
|
81
|
+
const res1 = Reflector.getOwnMetadata(BEFORE_ACTION_METADATA_KEY, Target);
|
82
|
+
const res2 = Reflector.getOwnMetadata(BEFORE_ACTION_METADATA_KEY, Target, 'prop');
|
84
83
|
expect(res1).to.be.eql([md1]);
|
85
84
|
expect(res2).to.be.eql([md2]);
|
86
85
|
});
|
@@ -91,10 +90,10 @@ describe('AfterReflector', function () {
|
|
91
90
|
}
|
92
91
|
const md1 = { middleware: MIDDLEWARE_1 };
|
93
92
|
const md2 = { middleware: MIDDLEWARE_2 };
|
94
|
-
Reflector.defineMetadata(
|
95
|
-
Reflector.defineMetadata(
|
96
|
-
const res1 =
|
97
|
-
const res2 =
|
93
|
+
Reflector.defineMetadata(BEFORE_ACTION_METADATA_KEY, [md1], Target);
|
94
|
+
Reflector.defineMetadata(BEFORE_ACTION_METADATA_KEY, [md2], Target, 'prop');
|
95
|
+
const res1 = BeforeActionReflector.getMetadata(Target);
|
96
|
+
const res2 = BeforeActionReflector.getMetadata(Target, 'prop');
|
98
97
|
expect(res1).to.be.eql([md1]);
|
99
98
|
expect(res2).to.be.eql([md2]);
|
100
99
|
});
|
@@ -1,6 +1,6 @@
|
|
1
|
-
export * from './
|
2
|
-
export * from './before/index.js';
|
3
|
-
export * from './action/index.js';
|
4
|
-
export * from './controller/index.js';
|
1
|
+
export * from './rest-action/index.js';
|
5
2
|
export * from './request-data/index.js';
|
3
|
+
export * from './after-action/index.js';
|
4
|
+
export * from './before-action/index.js';
|
5
|
+
export * from './rest-controller/index.js';
|
6
6
|
export * from './request-context/index.js';
|
@@ -1,6 +1,6 @@
|
|
1
|
-
export * from './
|
2
|
-
export * from './before/index.js';
|
3
|
-
export * from './action/index.js';
|
4
|
-
export * from './controller/index.js';
|
1
|
+
export * from './rest-action/index.js';
|
5
2
|
export * from './request-data/index.js';
|
3
|
+
export * from './after-action/index.js';
|
4
|
+
export * from './before-action/index.js';
|
5
|
+
export * from './rest-controller/index.js';
|
6
6
|
export * from './request-context/index.js';
|
@@ -7,10 +7,10 @@ import { RequestContext } from '@e22m4u/js-trie-router';
|
|
7
7
|
*/
|
8
8
|
export declare function requestContext<T extends object>(propertyName?: keyof RequestContext): (target: Prototype<T>, propertyKey: string, indexOrDescriptor: number) => void;
|
9
9
|
/**
|
10
|
-
*
|
10
|
+
* HttpRequest decorator.
|
11
11
|
*/
|
12
|
-
export declare function
|
12
|
+
export declare function httpRequest(): (target: Prototype<object>, propertyKey: string, indexOrDescriptor: number) => void;
|
13
13
|
/**
|
14
|
-
*
|
14
|
+
* HttpResponse decorator.
|
15
15
|
*/
|
16
|
-
export declare function
|
16
|
+
export declare function httpResponse(): (target: Prototype<object>, propertyKey: string, indexOrDescriptor: number) => void;
|
@@ -16,14 +16,14 @@ export function requestContext(propertyName) {
|
|
16
16
|
};
|
17
17
|
}
|
18
18
|
/**
|
19
|
-
*
|
19
|
+
* HttpRequest decorator.
|
20
20
|
*/
|
21
|
-
export function
|
21
|
+
export function httpRequest() {
|
22
22
|
return requestContext('req');
|
23
23
|
}
|
24
24
|
/**
|
25
|
-
*
|
25
|
+
* HttpResponse decorator.
|
26
26
|
*/
|
27
|
-
export function
|
27
|
+
export function httpResponse() {
|
28
28
|
return requestContext('res');
|
29
29
|
}
|
@@ -12,9 +12,15 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
};
|
13
13
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
14
14
|
import { expect } from 'chai';
|
15
|
+
import { httpRequest } from './request-context-decorator.js';
|
16
|
+
import { httpResponse } from './request-context-decorator.js';
|
15
17
|
import { requestContext } from './request-context-decorator.js';
|
16
18
|
import { RequestContextReflector } from './request-context-reflector.js';
|
17
19
|
describe('requestContext', function () {
|
20
|
+
it('has aliases', function () {
|
21
|
+
expect(httpRequest).to.be.instanceOf(Function);
|
22
|
+
expect(httpResponse).to.be.instanceOf(Function);
|
23
|
+
});
|
18
24
|
it('does not require options', function () {
|
19
25
|
class Target {
|
20
26
|
method(prop) { }
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import { expect } from 'chai';
|
2
|
-
import { describe } from 'mocha';
|
3
2
|
import { Reflector } from '@e22m4u/ts-reflector';
|
4
3
|
import { RequestContextReflector } from './request-context-reflector.js';
|
5
4
|
import { REQUEST_CONTEXT_METADATA_KEY } from './request-context-metadata.js';
|
@@ -15,18 +15,18 @@ export declare function requestData<T extends object>(options: RequestDataOption
|
|
15
15
|
/**
|
16
16
|
* Decorator aliases.
|
17
17
|
*/
|
18
|
-
export declare const
|
19
|
-
export declare const
|
20
|
-
export declare const
|
21
|
-
export declare const
|
22
|
-
export declare const
|
23
|
-
export declare const
|
24
|
-
export declare const
|
25
|
-
export declare const
|
26
|
-
export declare const
|
18
|
+
export declare const requestParams: () => (target: Prototype<object>, propertyKey: string, indexOrDescriptor: number) => void;
|
19
|
+
export declare const requestParam: (propertyKey: string, schemaOrType?: DataSchema | DataType) => (target: Prototype<object>, propertyKey: string, indexOrDescriptor: number) => void;
|
20
|
+
export declare const requestQueries: () => (target: Prototype<object>, propertyKey: string, indexOrDescriptor: number) => void;
|
21
|
+
export declare const requestQuery: (propertyKey: string, schemaOrType?: DataSchema | DataType) => (target: Prototype<object>, propertyKey: string, indexOrDescriptor: number) => void;
|
22
|
+
export declare const requestHeaders: () => (target: Prototype<object>, propertyKey: string, indexOrDescriptor: number) => void;
|
23
|
+
export declare const requestHeader: (propertyKey: string, schemaOrType?: DataSchema | DataType) => (target: Prototype<object>, propertyKey: string, indexOrDescriptor: number) => void;
|
24
|
+
export declare const requestCookies: () => (target: Prototype<object>, propertyKey: string, indexOrDescriptor: number) => void;
|
25
|
+
export declare const requestCookie: (propertyKey: string, schemaOrType?: DataSchema | DataType) => (target: Prototype<object>, propertyKey: string, indexOrDescriptor: number) => void;
|
26
|
+
export declare const requestField: (propertyKey: string, schemaOrType?: DataSchema | DataType) => (target: Prototype<object>, propertyKey: string, indexOrDescriptor: number) => void;
|
27
27
|
/**
|
28
28
|
* Request body decorator.
|
29
29
|
*
|
30
30
|
* @param schemaOrType
|
31
31
|
*/
|
32
|
-
export declare function
|
32
|
+
export declare function requestBody(schemaOrType?: DataSchema | DataType): (target: Prototype<object>, propertyKey: string, indexOrDescriptor: number) => void;
|
@@ -55,21 +55,21 @@ function createRequestDataPropertyDecoratorWithSource(source) {
|
|
55
55
|
/**
|
56
56
|
* Decorator aliases.
|
57
57
|
*/
|
58
|
-
export const
|
59
|
-
export const
|
60
|
-
export const
|
61
|
-
export const
|
62
|
-
export const
|
63
|
-
export const
|
64
|
-
export const
|
65
|
-
export const
|
66
|
-
export const
|
58
|
+
export const requestParams = createRequestDataDecoratorWithSource(RequestDataSource.PARAMS);
|
59
|
+
export const requestParam = createRequestDataPropertyDecoratorWithSource(RequestDataSource.PARAMS);
|
60
|
+
export const requestQueries = createRequestDataDecoratorWithSource(RequestDataSource.QUERY);
|
61
|
+
export const requestQuery = createRequestDataPropertyDecoratorWithSource(RequestDataSource.QUERY);
|
62
|
+
export const requestHeaders = createRequestDataDecoratorWithSource(RequestDataSource.HEADERS);
|
63
|
+
export const requestHeader = createRequestDataPropertyDecoratorWithSource(RequestDataSource.HEADERS);
|
64
|
+
export const requestCookies = createRequestDataDecoratorWithSource(RequestDataSource.COOKIE);
|
65
|
+
export const requestCookie = createRequestDataPropertyDecoratorWithSource(RequestDataSource.COOKIE);
|
66
|
+
export const requestField = createRequestDataPropertyDecoratorWithSource(RequestDataSource.BODY);
|
67
67
|
/**
|
68
68
|
* Request body decorator.
|
69
69
|
*
|
70
70
|
* @param schemaOrType
|
71
71
|
*/
|
72
|
-
export function
|
72
|
+
export function requestBody(schemaOrType) {
|
73
73
|
let schema;
|
74
74
|
if (typeof schemaOrType === 'object') {
|
75
75
|
schema = schemaOrType;
|