@tc-libs/request 5.6.0 → 5.7.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/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tc-libs/request",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.7.1",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@tc-libs/constant": "5.
|
|
6
|
-
"@tc-libs/errors": "5.
|
|
7
|
-
"@tc-libs/helper": "5.
|
|
8
|
-
"@tc-libs/pagination": "5.
|
|
9
|
-
"@tc-libs/service": "5.
|
|
5
|
+
"@tc-libs/constant": "5.7.1",
|
|
6
|
+
"@tc-libs/errors": "5.7.1",
|
|
7
|
+
"@tc-libs/helper": "5.7.1",
|
|
8
|
+
"@tc-libs/pagination": "5.7.1",
|
|
9
|
+
"@tc-libs/service": "5.7.1",
|
|
10
10
|
"body-parser": "2.2.0",
|
|
11
11
|
"cors": "2.8.5",
|
|
12
12
|
"express": "5.0.1",
|
package/src/request.module.js
CHANGED
|
@@ -45,6 +45,36 @@ const providers = [
|
|
|
45
45
|
validations_1.MaxDateTodayConstraint,
|
|
46
46
|
validations_1.MaxBinaryFileConstraint,
|
|
47
47
|
];
|
|
48
|
+
// Con whitelist si ripulisce solo il body: i DTO delle query (PaginationQuery) non dichiarano page, perPage, search,
|
|
49
|
+
// ordinamento e filtri, che la whitelist toglierebbe prima delle pipe di @tc-libs/pagination
|
|
50
|
+
class RequestValidationPipe {
|
|
51
|
+
constructor(_body, _others) {
|
|
52
|
+
this._body = _body;
|
|
53
|
+
this._others = _others;
|
|
54
|
+
}
|
|
55
|
+
transform(value, metadata) {
|
|
56
|
+
return (metadata.type === 'body' ? this._body : this._others).transform(value, metadata);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function createValidationPipe({ request }) {
|
|
60
|
+
const options = {
|
|
61
|
+
transform: true,
|
|
62
|
+
skipNullProperties: false,
|
|
63
|
+
skipUndefinedProperties: false,
|
|
64
|
+
skipMissingProperties: false,
|
|
65
|
+
forbidUnknownValues: false,
|
|
66
|
+
errorHttpStatusCode: common_1.HttpStatus.UNPROCESSABLE_ENTITY,
|
|
67
|
+
exceptionFactory: async (errors) => new errors_1.Api422ValidationError(errors),
|
|
68
|
+
};
|
|
69
|
+
const others = new common_1.ValidationPipe(options);
|
|
70
|
+
if (!request.validation?.whitelist)
|
|
71
|
+
return others;
|
|
72
|
+
return new RequestValidationPipe(new common_1.ValidationPipe({
|
|
73
|
+
...options,
|
|
74
|
+
whitelist: true,
|
|
75
|
+
forbidNonWhitelisted: request.validation.forbidNonWhitelisted ?? false,
|
|
76
|
+
}), others);
|
|
77
|
+
}
|
|
48
78
|
let RequestModule = RequestModule_1 = class RequestModule {
|
|
49
79
|
static register(options, isGlobal) {
|
|
50
80
|
return {
|
|
@@ -57,15 +87,7 @@ let RequestModule = RequestModule_1 = class RequestModule {
|
|
|
57
87
|
},
|
|
58
88
|
{
|
|
59
89
|
provide: core_1.APP_PIPE,
|
|
60
|
-
useFactory: () =>
|
|
61
|
-
transform: true,
|
|
62
|
-
skipNullProperties: false,
|
|
63
|
-
skipUndefinedProperties: false,
|
|
64
|
-
skipMissingProperties: false,
|
|
65
|
-
forbidUnknownValues: false,
|
|
66
|
-
errorHttpStatusCode: common_1.HttpStatus.UNPROCESSABLE_ENTITY,
|
|
67
|
-
exceptionFactory: async (errors) => new errors_1.Api422ValidationError(errors),
|
|
68
|
-
}),
|
|
90
|
+
useFactory: () => createValidationPipe(options),
|
|
69
91
|
},
|
|
70
92
|
{
|
|
71
93
|
provide: core_1.APP_GUARD,
|
|
@@ -115,15 +137,8 @@ let RequestModule = RequestModule_1 = class RequestModule {
|
|
|
115
137
|
},
|
|
116
138
|
{
|
|
117
139
|
provide: core_1.APP_PIPE,
|
|
118
|
-
useFactory: () =>
|
|
119
|
-
|
|
120
|
-
skipNullProperties: false,
|
|
121
|
-
skipUndefinedProperties: false,
|
|
122
|
-
skipMissingProperties: false,
|
|
123
|
-
forbidUnknownValues: false,
|
|
124
|
-
errorHttpStatusCode: common_1.HttpStatus.UNPROCESSABLE_ENTITY,
|
|
125
|
-
exceptionFactory: async (errors) => new errors_1.Api422ValidationError(errors),
|
|
126
|
-
}),
|
|
140
|
+
useFactory: (requestOptions) => createValidationPipe(requestOptions),
|
|
141
|
+
inject: [request_module_options_1.REQUEST_MODULE_OPTIONS],
|
|
127
142
|
},
|
|
128
143
|
{
|
|
129
144
|
provide: core_1.APP_GUARD,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.module.js","sourceRoot":"","sources":["../../../../packages/request/src/request.module.ts"],"names":[],"mappings":";;;;;AAAA,4CAAwD;AACxD,
|
|
1
|
+
{"version":3,"file":"request.module.js","sourceRoot":"","sources":["../../../../packages/request/src/request.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,10 @@ export interface IRequestModuleRequestOptions {
|
|
|
34
34
|
allowMethod: string[];
|
|
35
35
|
allowHeader: string[];
|
|
36
36
|
};
|
|
37
|
+
validation?: {
|
|
38
|
+
whitelist?: boolean;
|
|
39
|
+
forbidNonWhitelisted?: boolean;
|
|
40
|
+
};
|
|
37
41
|
}
|
|
38
42
|
export interface RequestModuleOptions {
|
|
39
43
|
request: IRequestModuleRequestOptions;
|