web_api_base 2.6.0 → 2.6.2
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/decorators/controllers/ControllerDecorators.d.ts +2 -2
- package/dist/decorators/controllers/ControllerDecorators.js +11 -3
- package/dist/decorators/controllers/ControllerDecorators.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +11 -12
- package/dist/jest.config.d.ts +0 -0
- package/dist/jest.config.js +0 -12
- package/dist/jest.config.js.map +0 -1
|
@@ -10,7 +10,7 @@ export default class ControllersDecorators {
|
|
|
10
10
|
private static ArgumentsHandlerKeyMetadata;
|
|
11
11
|
private static ControllerMidlewaresKeyMetadata;
|
|
12
12
|
private static ActionsMidlewaresKeyMetadata;
|
|
13
|
-
static Route(route
|
|
13
|
+
static Route(route?: string): (target: Function) => void;
|
|
14
14
|
static Use(midleware: IMidleware): (target: Function) => void;
|
|
15
15
|
static GetMidlewares(controller: IController): IMidleware[];
|
|
16
16
|
static Before(midleware: IMidleware): (target: Object, methodName: string, propertyDescriptor: PropertyDescriptor) => void;
|
|
@@ -18,7 +18,7 @@ export default class ControllersDecorators {
|
|
|
18
18
|
static GetRoute(controller: IController): string | undefined;
|
|
19
19
|
static Verb(verb: HTTPVerbs): (target: Object, methodName: string, propertyDescriptor: PropertyDescriptor) => void;
|
|
20
20
|
static GetVerb(target: IController, methodName: string): HTTPVerbs | undefined;
|
|
21
|
-
static Action(actionName
|
|
21
|
+
static Action(actionName?: String): (target: Object, methodName: string, propertyDescriptor: PropertyDescriptor) => void;
|
|
22
22
|
static GetAction(target: IController, methodName: string): string | undefined;
|
|
23
23
|
static Argument<T>(argName1: string): (target: Object, methodName: string, propertyDescriptor: PropertyDescriptor) => void;
|
|
24
24
|
static Argument<T, U>(argName1: string, argName2?: string): (target: Object, methodName: string, propertyDescriptor: PropertyDescriptor) => void;
|
|
@@ -6,7 +6,8 @@ class ControllersDecorators {
|
|
|
6
6
|
}
|
|
7
7
|
static Route(route) {
|
|
8
8
|
return function (target) {
|
|
9
|
-
|
|
9
|
+
let value = route !== null && route !== void 0 ? route : target.name.toLocaleLowerCase().replace("controller", "");
|
|
10
|
+
Reflect.defineMetadata(ControllersDecorators.RouteKeyMetadata, value, target);
|
|
10
11
|
};
|
|
11
12
|
}
|
|
12
13
|
static Use(midleware) {
|
|
@@ -34,7 +35,11 @@ class ControllersDecorators {
|
|
|
34
35
|
return (_a = this.GetMetaData(ControllersDecorators.ActionsMidlewaresKeyMetadata, controller, methodName)) !== null && _a !== void 0 ? _a : [];
|
|
35
36
|
}
|
|
36
37
|
static GetRoute(controller) {
|
|
37
|
-
|
|
38
|
+
let meta = Reflect.getMetadata(ControllersDecorators.RouteKeyMetadata, controller.constructor);
|
|
39
|
+
if (meta && meta[0] != '/') {
|
|
40
|
+
return `/${meta}`;
|
|
41
|
+
}
|
|
42
|
+
return meta;
|
|
38
43
|
}
|
|
39
44
|
static Verb(verb) {
|
|
40
45
|
return function (target, methodName, propertyDescriptor) {
|
|
@@ -47,11 +52,14 @@ class ControllersDecorators {
|
|
|
47
52
|
}
|
|
48
53
|
static Action(actionName) {
|
|
49
54
|
return function (target, methodName, propertyDescriptor) {
|
|
50
|
-
ControllersDecorators.SetMetaData(ControllersDecorators.ActionNameKeyMetadata, target, methodName, actionName);
|
|
55
|
+
ControllersDecorators.SetMetaData(ControllersDecorators.ActionNameKeyMetadata, target, methodName, actionName !== null && actionName !== void 0 ? actionName : methodName.toLocaleLowerCase());
|
|
51
56
|
};
|
|
52
57
|
}
|
|
53
58
|
static GetAction(target, methodName) {
|
|
54
59
|
let meta = this.GetMetaData(ControllersDecorators.ActionNameKeyMetadata, target, methodName);
|
|
60
|
+
if (meta && meta[0] != '/') {
|
|
61
|
+
return `/${meta}`;
|
|
62
|
+
}
|
|
55
63
|
return meta;
|
|
56
64
|
}
|
|
57
65
|
static Argument(argName1, argName2, argName3, argName4, argName5, argName6) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControllerDecorators.js","sourceRoot":"","sources":["../../../decorators/controllers/ControllerDecorators.ts"],"names":[],"mappings":";;AACA,4BAA0B;AAM1B,MAAqB,qBAAqB;IAEtC;IAGA,CAAC;IAUM,MAAM,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"ControllerDecorators.js","sourceRoot":"","sources":["../../../decorators/controllers/ControllerDecorators.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ import IMidleware from "./midlewares/IMidleware";
|
|
|
13
13
|
export declare function Use(midleware: IMidleware): (target: Function) => void;
|
|
14
14
|
export declare function Run(midleware: IMidleware): (target: Object, methodName: string, propertyDescriptor: PropertyDescriptor) => void;
|
|
15
15
|
export declare function Action(actionName: String): (target: Object, methodName: string, propertyDescriptor: PropertyDescriptor) => void;
|
|
16
|
-
export declare function Route(route
|
|
16
|
+
export declare function Route(route?: string): (target: Function) => void;
|
|
17
17
|
export declare function Verb(verb: HTTPVerbs): (target: Object, methodName: string, propertyDescriptor: PropertyDescriptor) => void;
|
|
18
18
|
export declare function Inject(): (target: Object, property: string | symbol) => void;
|
|
19
19
|
export declare function InjectAbstract(object: Function): (target: Object, property: string | symbol) => void;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAsD;AAA7C,2HAAA,OAAO,OAAe;AAC/B,uEAAiF;AAAxE,qJAAA,OAAO,OAA4B;AAE5C,sFAAiG;AAAxF,8IAAA,OAAO,OAAyB;AACzC,oEAAmE;AAA1D,gHAAA,cAAc,OAAA;AAEvB,yDAAwD;AAA/C,sGAAA,SAAS,OAAA;AAElB,2EAAqF;AAA5E,qIAAA,OAAO,OAAoB;AAQpC,yGAAkF;AAClF,8FAAsE;AAItE,SAAgB,GAAG,CAAC,SAAsB;IAEtC,OAAO,8BAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC;AAHD,kBAGC;AAAC,CAAC;AAEH,SAAgB,GAAG,CAAC,SAAsB;IAEtC,OAAO,8BAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAHD,kBAGC;AAAC,CAAC;AAEH,SAAgB,MAAM,CAAC,UAAmB;IAEtC,OAAO,8BAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACpD,CAAC;AAHD,wBAGC;AAAC,CAAC;AAEH,SAAgB,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAsD;AAA7C,2HAAA,OAAO,OAAe;AAC/B,uEAAiF;AAAxE,qJAAA,OAAO,OAA4B;AAE5C,sFAAiG;AAAxF,8IAAA,OAAO,OAAyB;AACzC,oEAAmE;AAA1D,gHAAA,cAAc,OAAA;AAEvB,yDAAwD;AAA/C,sGAAA,SAAS,OAAA;AAElB,2EAAqF;AAA5E,qIAAA,OAAO,OAAoB;AAQpC,yGAAkF;AAClF,8FAAsE;AAItE,SAAgB,GAAG,CAAC,SAAsB;IAEtC,OAAO,8BAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC;AAHD,kBAGC;AAAC,CAAC;AAEH,SAAgB,GAAG,CAAC,SAAsB;IAEtC,OAAO,8BAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAHD,kBAGC;AAAC,CAAC;AAEH,SAAgB,MAAM,CAAC,UAAmB;IAEtC,OAAO,8BAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACpD,CAAC;AAHD,wBAGC;AAAC,CAAC;AAEH,SAAgB,KAAK,CAAC,KAAe;IAEjC,OAAO,8BAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC;AAHD,sBAGC;AAAC,CAAC;AAGH,SAAgB,IAAI,CAAC,IAAgB;IAGjC,OAAO,8BAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAJD,oBAIC;AAAC,CAAC;AAEH,SAAgB,MAAM;IAElB,OAAO,0BAAgB,CAAC,UAAU,EAAE,CAAC;AACzC,CAAC;AAHD,wBAGC;AAED,SAAgB,cAAc,CAAC,MAAiB;IAE5C,OAAO,0BAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAHD,wCAGC;AAQD,SAAgB,QAAQ,CAAiB,QAAiB,EAAE,QAAkB,EAAE,QAAkB,EAAE,QAAkB,EAAE,QAAkB;IAEtI,OAAO,8BAAqB,CAAC,QAAQ,CAAiB,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC5G,CAAC;AAHD,4BAGC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "web_api_base",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.2",
|
|
4
4
|
"description": "web api base",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -16,22 +16,21 @@
|
|
|
16
16
|
"author": "adriano.marino1992@gmail.com",
|
|
17
17
|
"repository": "https://github.com/adrianomarino1992/web_api_base.git",
|
|
18
18
|
"license": "ISC",
|
|
19
|
-
"dependencies": {
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"cors": "^2.8.5",
|
|
21
|
+
"express": "^4.18.2",
|
|
22
|
+
"platform-folders": "^0.6.0",
|
|
23
|
+
"reflect-metadata": "^0.1.13"
|
|
24
|
+
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
20
27
|
"@types/express": "^4.17.15",
|
|
21
28
|
"@types/jest": "^29.2.4",
|
|
22
29
|
"@types/node": "^18.11.17",
|
|
23
30
|
"@types/reflect-metadata": "^0.1.0",
|
|
24
|
-
"cors": "^2.8.5",
|
|
25
|
-
"express": "^4.18.2",
|
|
26
|
-
"formidable": "^2.1.1",
|
|
27
31
|
"jest": "^29.3.1",
|
|
28
|
-
"platform-folders": "^0.6.0",
|
|
29
|
-
"reflect-metadata": "^0.1.13",
|
|
30
32
|
"ts-jest": "^29.0.3",
|
|
31
|
-
"ts-node": "^10.9.1"
|
|
32
|
-
|
|
33
|
-
},
|
|
34
|
-
"devDependencies": {
|
|
35
|
-
"@types/formidable": "^2.0.5"
|
|
33
|
+
"ts-node": "^10.9.1"
|
|
34
|
+
|
|
36
35
|
}
|
|
37
36
|
}
|
package/dist/jest.config.d.ts
DELETED
|
File without changes
|
package/dist/jest.config.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
|
|
3
|
-
module.exports = {
|
|
4
|
-
preset: 'ts-jest',
|
|
5
|
-
testEnvironment: 'node',
|
|
6
|
-
collectCoverage: true,
|
|
7
|
-
testPathIgnorePatterns: [
|
|
8
|
-
"__tests__/classes",
|
|
9
|
-
"__test__/*/*.d.ts"
|
|
10
|
-
]
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=jest.config.js.map
|
package/dist/jest.config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jest.config.js","sourceRoot":"","sources":["../jest.config.ts"],"names":[],"mappings":";AAAA,gEAAgE;AAChE,MAAM,CAAC,OAAO,GAAG;IACf,MAAM,EAAE,SAAS;IACjB,eAAe,EAAE,MAAM;IACvB,eAAe,EAAE,IAAI;IACrB,sBAAsB,EAAG;QACvB,mBAAmB;QACnB,mBAAmB;KACpB;CAEF,CAAC"}
|