@nestia/core 1.0.19 → 1.1.0-dev.20230413
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 +1 -23
- package/lib/decorators/DynamicModule.d.ts +23 -23
- package/lib/decorators/DynamicModule.js +103 -103
- package/lib/decorators/EncryptedBody.d.ts +23 -23
- package/lib/decorators/EncryptedBody.js +125 -125
- package/lib/decorators/EncryptedController.d.ts +31 -31
- package/lib/decorators/EncryptedController.js +41 -41
- package/lib/decorators/EncryptedModule.d.ts +49 -49
- package/lib/decorators/EncryptedModule.js +161 -161
- package/lib/decorators/EncryptedRoute.d.ts +78 -78
- package/lib/decorators/EncryptedRoute.js +216 -216
- package/lib/decorators/PlainBody.d.ts +22 -22
- package/lib/decorators/PlainBody.js +82 -82
- package/lib/decorators/TypedBody.d.ts +16 -16
- package/lib/decorators/TypedBody.js +94 -94
- package/lib/decorators/TypedParam.d.ts +25 -25
- package/lib/decorators/TypedParam.js +61 -61
- package/lib/decorators/TypedQuery.d.ts +14 -14
- package/lib/decorators/TypedQuery.js +99 -99
- package/lib/decorators/TypedQuery.js.map +1 -1
- package/lib/decorators/TypedRoute.d.ts +72 -72
- package/lib/decorators/TypedRoute.js +185 -185
- package/lib/decorators/internal/EncryptedConstant.d.ts +1 -1
- package/lib/decorators/internal/EncryptedConstant.js +7 -7
- package/lib/decorators/internal/TransformError.d.ts +1 -1
- package/lib/decorators/internal/TransformError.js +10 -10
- package/lib/decorators/internal/get_path_and_stringify.d.ts +1 -1
- package/lib/decorators/internal/get_path_and_stringify.js +78 -78
- package/lib/decorators/internal/headers_to_object.d.ts +3 -3
- package/lib/decorators/internal/headers_to_object.js +49 -49
- package/lib/decorators/internal/load_controller.d.ts +2 -2
- package/lib/decorators/internal/load_controller.js +151 -152
- package/lib/decorators/internal/load_controller.js.map +1 -1
- package/lib/decorators/internal/route_error.d.ts +3 -3
- package/lib/decorators/internal/route_error.js +86 -86
- package/lib/decorators/internal/validate_request_body.d.ts +2 -2
- package/lib/decorators/internal/validate_request_body.js +57 -57
- package/lib/index.d.ts +3 -3
- package/lib/index.js +31 -31
- package/lib/module.d.ts +12 -12
- package/lib/module.js +28 -28
- package/lib/options/INestiaTransformOptions.d.ts +4 -4
- package/lib/options/INestiaTransformOptions.js +2 -2
- package/lib/options/INestiaTransformProject.d.ts +5 -5
- package/lib/options/INestiaTransformProject.js +2 -2
- package/lib/options/IRequestBodyValidator.d.ts +16 -16
- package/lib/options/IRequestBodyValidator.js +2 -2
- package/lib/options/IResponseBodyStringifier.d.ts +20 -20
- package/lib/options/IResponseBodyStringifier.js +2 -2
- package/lib/programmers/TypedBodyProgrammer.d.ts +5 -5
- package/lib/programmers/TypedBodyProgrammer.js +45 -45
- package/lib/programmers/TypedQueryProgrammer.d.ts +5 -5
- package/lib/programmers/TypedQueryProgrammer.js +260 -165
- package/lib/programmers/TypedQueryProgrammer.js.map +1 -1
- package/lib/programmers/TypedRouteProgrammer.d.ts +5 -5
- package/lib/programmers/TypedRouteProgrammer.js +47 -47
- package/lib/transform.d.ts +3 -3
- package/lib/transform.js +20 -20
- package/lib/transformers/FileTransformer.d.ts +5 -5
- package/lib/transformers/FileTransformer.js +32 -32
- package/lib/transformers/MethodDecoratorTransformer.d.ts +5 -5
- package/lib/transformers/MethodDecoratorTransformer.js +87 -87
- package/lib/transformers/MethodTransformer.d.ts +5 -5
- package/lib/transformers/MethodTransformer.js +54 -54
- package/lib/transformers/MethodTransformer.js.map +1 -1
- package/lib/transformers/NodeTransformer.d.ts +5 -5
- package/lib/transformers/NodeTransformer.js +20 -20
- package/lib/transformers/ParameterDecoratorTransformer.d.ts +5 -5
- package/lib/transformers/ParameterDecoratorTransformer.js +53 -53
- package/lib/transformers/ParameterTransformer.d.ts +5 -5
- package/lib/transformers/ParameterTransformer.js +33 -33
- package/lib/transformers/ParameterTransformer.js.map +1 -1
- package/lib/typings/Creator.d.ts +3 -3
- package/lib/typings/Creator.js +2 -2
- package/lib/utils/ExceptionManager.d.ts +64 -64
- package/lib/utils/ExceptionManager.js +112 -112
- package/lib/utils/Singleton.d.ts +1 -1
- package/lib/utils/Singleton.js +23 -23
- package/package.json +7 -5
- package/src/decorators/TypedQuery.ts +10 -8
- package/src/programmers/TypedQueryProgrammer.ts +104 -33
- package/src/transformers/MethodTransformer.ts +1 -1
- package/src/transformers/ParameterTransformer.ts +1 -1
|
@@ -57,32 +57,73 @@ export namespace TypedQueryProgrammer {
|
|
|
57
57
|
for (const property of object.properties) {
|
|
58
58
|
const key: Metadata = property.key;
|
|
59
59
|
const value: Metadata = property.value;
|
|
60
|
+
validate(object)(key)(value, 0);
|
|
61
|
+
}
|
|
62
|
+
return object;
|
|
63
|
+
};
|
|
60
64
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
65
|
+
const validate =
|
|
66
|
+
(obj: MetadataObject) =>
|
|
67
|
+
(key: Metadata) =>
|
|
68
|
+
(value: Metadata, depth: number): string[] => {
|
|
69
|
+
if (value.nullable)
|
|
70
|
+
throw new Error(
|
|
71
|
+
ErrorMessages.property(obj)(key)(
|
|
72
|
+
"nullable type is not allowed. Use undefindable type instead.",
|
|
73
|
+
),
|
|
74
|
+
);
|
|
75
|
+
else if (depth === 1 && value.required === false)
|
|
76
|
+
throw new Error(
|
|
77
|
+
ErrorMessages.property(obj)(key)(
|
|
78
|
+
"optional type is not allowed in array.",
|
|
79
|
+
),
|
|
80
|
+
);
|
|
81
|
+
else if (
|
|
82
|
+
value.maps.length ||
|
|
83
|
+
value.sets.length ||
|
|
84
|
+
value.objects.length
|
|
85
|
+
)
|
|
86
|
+
throw new Error(
|
|
87
|
+
ErrorMessages.property(obj)(key)(
|
|
88
|
+
"object type is not allowed",
|
|
89
|
+
),
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
const atom: string[] = [];
|
|
93
|
+
for (const type of value.atomics) atom.push(type);
|
|
94
|
+
for (const { type } of value.constants) atom.push(type);
|
|
95
|
+
|
|
96
|
+
if (depth === 0) {
|
|
97
|
+
if (atom.length && (value.arrays.length || value.arrays.length))
|
|
79
98
|
throw new Error(
|
|
80
|
-
ErrorMessages.property(
|
|
81
|
-
"
|
|
99
|
+
ErrorMessages.property(obj)(key)(
|
|
100
|
+
"union type is not allowed",
|
|
82
101
|
),
|
|
83
102
|
);
|
|
84
|
-
|
|
85
|
-
|
|
103
|
+
for (const elem of value.arrays)
|
|
104
|
+
atom.push(...validate(obj)(key)(elem, depth + 1));
|
|
105
|
+
for (const tuple of value.tuples)
|
|
106
|
+
for (const elem of tuple)
|
|
107
|
+
atom.push(...validate(obj)(key)(elem, depth + 1));
|
|
108
|
+
} else if (value.arrays.length || value.tuples.length)
|
|
109
|
+
throw new Error(
|
|
110
|
+
ErrorMessages.property(obj)(key)(
|
|
111
|
+
"double-array type is not allowed",
|
|
112
|
+
),
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
const size: number = new Set(atom).size;
|
|
116
|
+
if (size === 0)
|
|
117
|
+
throw new Error(
|
|
118
|
+
ErrorMessages.property(obj)(key)("unknown type"),
|
|
119
|
+
);
|
|
120
|
+
else if (size > 1)
|
|
121
|
+
throw new Error(
|
|
122
|
+
ErrorMessages.property(obj)(key)(
|
|
123
|
+
"union type is not allowed",
|
|
124
|
+
),
|
|
125
|
+
);
|
|
126
|
+
return atom;
|
|
86
127
|
};
|
|
87
128
|
|
|
88
129
|
const decode =
|
|
@@ -143,20 +184,50 @@ export namespace TypedQueryProgrammer {
|
|
|
143
184
|
const key: string = property.key.constants[0]!.values[0] as string;
|
|
144
185
|
const value: Metadata = property.value;
|
|
145
186
|
|
|
146
|
-
const type: Atomic.Literal = value.atomics
|
|
147
|
-
|
|
187
|
+
const [type, isArray]: [Atomic.Literal, boolean] = value.atomics
|
|
188
|
+
.length
|
|
189
|
+
? [value.atomics[0], false]
|
|
148
190
|
: value.constants.length
|
|
149
|
-
? value.constants[0]!.type
|
|
150
|
-
:
|
|
191
|
+
? [value.constants[0]!.type, false]
|
|
192
|
+
: (() => {
|
|
193
|
+
const meta = value.arrays[0] ?? value.tuples[0][0];
|
|
194
|
+
return meta.atomics.length
|
|
195
|
+
? [meta.atomics[0], true]
|
|
196
|
+
: [meta.constants[0]!.type, true];
|
|
197
|
+
})();
|
|
151
198
|
return ts.factory.createPropertyAssignment(
|
|
152
199
|
key,
|
|
153
|
-
|
|
154
|
-
ts.factory.createCallExpression(
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
200
|
+
isArray
|
|
201
|
+
? ts.factory.createCallExpression(
|
|
202
|
+
IdentifierFactory.join(
|
|
203
|
+
ts.factory.createCallExpression(
|
|
204
|
+
ts.factory.createIdentifier("input.getAll"),
|
|
205
|
+
undefined,
|
|
206
|
+
[ts.factory.createStringLiteral(key)],
|
|
207
|
+
),
|
|
208
|
+
"map",
|
|
209
|
+
),
|
|
210
|
+
undefined,
|
|
211
|
+
[
|
|
212
|
+
ts.factory.createArrowFunction(
|
|
213
|
+
undefined,
|
|
214
|
+
undefined,
|
|
215
|
+
[IdentifierFactory.parameter("elem")],
|
|
216
|
+
undefined,
|
|
217
|
+
undefined,
|
|
218
|
+
decode_value(importer)(type)(
|
|
219
|
+
ts.factory.createIdentifier("elem"),
|
|
220
|
+
),
|
|
221
|
+
),
|
|
222
|
+
],
|
|
223
|
+
)
|
|
224
|
+
: decode_value(importer)(type)(
|
|
225
|
+
ts.factory.createCallExpression(
|
|
226
|
+
ts.factory.createIdentifier("input.get"),
|
|
227
|
+
undefined,
|
|
228
|
+
[ts.factory.createStringLiteral(key)],
|
|
229
|
+
),
|
|
230
|
+
),
|
|
160
231
|
);
|
|
161
232
|
};
|
|
162
233
|
|
|
@@ -43,7 +43,7 @@ export namespace MethodTransformer {
|
|
|
43
43
|
method.body,
|
|
44
44
|
);
|
|
45
45
|
// eslint-disable-next-line
|
|
46
|
-
return ts.factory.updateMethodDeclaration(
|
|
46
|
+
return (ts.factory.updateMethodDeclaration as any)(
|
|
47
47
|
method,
|
|
48
48
|
decorators.map((deco) =>
|
|
49
49
|
MethodDecoratorTransformer.transform(project, escaped, deco),
|
|
@@ -37,7 +37,7 @@ export namespace ParameterTransformer {
|
|
|
37
37
|
param.initializer,
|
|
38
38
|
);
|
|
39
39
|
// eslint-disable-next-line
|
|
40
|
-
return ts.factory.updateParameterDeclaration(
|
|
40
|
+
return (ts.factory.updateParameterDeclaration as any)(
|
|
41
41
|
param,
|
|
42
42
|
decorators.map((deco) =>
|
|
43
43
|
ParameterDecoratorTransformer.transform(project, type, deco),
|