Skip to content

Commit 4c64b36

Browse files
authored
Merge pull request #679 from samchon/features/config
Close #672 - more validation options.
2 parents f01d227 + 4da547d commit 4c64b36

File tree

292 files changed

+11442
-803
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

292 files changed

+11442
-803
lines changed

packages/core/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@nestia/core",
3-
"version": "0.0.0-dev.20991231",
3+
"version": "2.3.5",
44
"description": "Super-fast validation decorators of NestJS",
55
"main": "lib/index.js",
66
"typings": "lib/index.d.ts",
@@ -34,7 +34,7 @@
3434
},
3535
"homepage": "https://nestia.io",
3636
"dependencies": {
37-
"@nestia/fetcher": "D:\\github\\samchon\\nestia\\packages\\fetcher\\nestia-fetcher-0.0.0-dev.20991231.tgz",
37+
"@nestia/fetcher": "^2.3.5",
3838
"@nestjs/common": ">=7.0.1",
3939
"@nestjs/core": ">=7.0.1",
4040
"@nestjs/platform-express": ">=7.0.1",
@@ -47,7 +47,7 @@
4747
"typia": "^5.2.5"
4848
},
4949
"peerDependencies": {
50-
"@nestia/fetcher": ">=0.0.0-dev.20991231",
50+
"@nestia/fetcher": ">=2.3.5",
5151
"@nestjs/common": ">=7.0.1",
5252
"@nestjs/core": ">=7.0.1",
5353
"@nestjs/platform-express": ">=7.0.1",
Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,17 @@
11
export interface INestiaTransformOptions {
2-
validate?: "assert" | "is" | "validate" | "assertEquals" | "equals" | "validateEquals";
2+
validate?: // NORMAL
3+
| "assert"
4+
| "is"
5+
| "validate"
6+
// STRICT
7+
| "assertEquals"
8+
| "equals"
9+
| "validateEquals"
10+
// CLONE
11+
| "assertClone"
12+
| "validateClone"
13+
// PRUNE
14+
| "assertPrune"
15+
| "validatePrune";
316
stringify?: "stringify" | "assert" | "is" | "validate" | null;
417
}

packages/core/src/programmers/TypedBodyProgrammer.ts

Lines changed: 52 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ import { JsonMetadataFactory } from "typia/lib/factories/JsonMetadataFactory";
44
import { AssertProgrammer } from "typia/lib/programmers/AssertProgrammer";
55
import { IsProgrammer } from "typia/lib/programmers/IsProgrammer";
66
import { ValidateProgrammer } from "typia/lib/programmers/ValidateProgrammer";
7+
import { MiscAssertCloneProgrammer } from "typia/lib/programmers/misc/MiscAssertCloneProgrammer";
8+
import { MiscAssertPruneProgrammer } from "typia/lib/programmers/misc/MiscAssertPruneProgrammer";
9+
import { MiscValidateCloneProgrammer } from "typia/lib/programmers/misc/MiscValidateCloneProgrammer";
10+
import { MiscValidatePruneProgrammer } from "typia/lib/programmers/misc/MiscValidatePruneProgrammer";
711
import { IProject } from "typia/lib/transformers/IProject";
812

913
import { INestiaTransformProject } from "../options/INestiaTransformProject";
@@ -20,7 +24,7 @@ export namespace TypedBodyProgrammer {
2024
)(type);
2125

2226
// GENERATE VALIDATION PLAN
23-
const parameter =
27+
const check =
2428
(key: IRequestBodyValidator<any>["type"]) =>
2529
(equals: boolean) =>
2630
(
@@ -49,19 +53,60 @@ export namespace TypedBodyProgrammer {
4953
})(modulo)(equals)(type),
5054
),
5155
]);
56+
const misc =
57+
(key: IRequestBodyValidator<any>["type"]) =>
58+
(
59+
programmer: (
60+
project: IProject,
61+
) => (
62+
modulo: ts.LeftHandSideExpression,
63+
) => (type: ts.Type) => ts.ArrowFunction,
64+
) =>
65+
ts.factory.createObjectLiteralExpression([
66+
ts.factory.createPropertyAssignment(
67+
ts.factory.createIdentifier("type"),
68+
ts.factory.createStringLiteral(key),
69+
),
70+
ts.factory.createPropertyAssignment(
71+
ts.factory.createIdentifier(key),
72+
programmer({
73+
...project,
74+
options: {
75+
numeric: false,
76+
finite: false,
77+
functional: false,
78+
},
79+
})(modulo)(type),
80+
),
81+
]);
5282

83+
//----
5384
// RETURNS
85+
//----
5486
const category = project.options.validate;
87+
// NORMAL
5588
if (category === "is")
56-
return parameter("is")(false)(IsProgrammer.write);
89+
return check("is")(false)(IsProgrammer.write);
5790
else if (category === "validate")
58-
return parameter("validate")(false)(ValidateProgrammer.write);
91+
return check("validate")(false)(ValidateProgrammer.write);
92+
// STRICT
5993
else if (category === "validateEquals")
60-
return parameter("validate")(true)(ValidateProgrammer.write);
94+
return check("validate")(true)(ValidateProgrammer.write);
6195
else if (category === "equals")
62-
return parameter("is")(true)(AssertProgrammer.write);
96+
return check("is")(true)(IsProgrammer.write);
6397
else if (category === "assertEquals")
64-
return parameter("assert")(true)(AssertProgrammer.write);
65-
return parameter("assert")(false)(AssertProgrammer.write);
98+
return check("assert")(true)(AssertProgrammer.write);
99+
// CLONE
100+
else if (category === "assertClone")
101+
return misc("assert")(MiscAssertCloneProgrammer.write);
102+
else if (category === "validateClone")
103+
return misc("validate")(MiscValidateCloneProgrammer.write);
104+
// PRUNE
105+
else if (category === "assertPrune")
106+
return misc("assert")(MiscAssertPruneProgrammer.write);
107+
else if (category === "validatePrune")
108+
return misc("validate")(MiscValidatePruneProgrammer.write);
109+
// DEFAULT
110+
return check("assert")(false)(AssertProgrammer.write);
66111
};
67112
}

packages/core/src/programmers/TypedHeadersProgrammer.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,12 @@ export namespace TypedHeadersProgrammer {
4545
const category = project.options.validate;
4646
if (category === "is" || category === "equals")
4747
return parameter("is")(HttpIsHeadersProgrammer.write);
48-
else if (category === "validate" || category === "validateEquals")
48+
else if (
49+
category === "validate" ||
50+
category === "validateEquals" ||
51+
category === "validateClone" ||
52+
category === "validatePrune"
53+
)
4954
return parameter("validate")(
5055
HttpValidateHeadersProgrammer.write,
5156
);

packages/core/src/programmers/TypedQueryBodyProgrammer.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,12 @@ export namespace TypedQueryBodyProgrammer {
4545
const category = project.options.validate;
4646
if (category === "is" || category === "equals")
4747
return parameter("is")(HttpIsQueryProgrammer.write);
48-
else if (category === "validate" || category === "validateEquals")
48+
else if (
49+
category === "validate" ||
50+
category === "validateEquals" ||
51+
category === "validateClone" ||
52+
category === "validatePrune"
53+
)
4954
return parameter("validate")(HttpValidateQueryProgrammer.write);
5055
return parameter("assert")(HttpAssertQueryProgrammer.write);
5156
};

packages/core/src/programmers/TypedQueryProgrammer.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,12 @@ export namespace TypedQueryProgrammer {
4545
const category = project.options.validate;
4646
if (category === "is" || category === "equals")
4747
return parameter("is")(HttpIsQueryProgrammer.write);
48-
else if (category === "validate" || category === "validateEquals")
48+
else if (
49+
category === "validate" ||
50+
category === "validateEquals" ||
51+
category === "validateClone" ||
52+
category === "validatePrune"
53+
)
4954
return parameter("validate")(HttpValidateQueryProgrammer.write);
5055
return parameter("assert")(HttpAssertQueryProgrammer.write);
5156
};

packages/fetcher/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@nestia/fetcher",
3-
"version": "0.0.0-dev.20991231",
3+
"version": "2.3.5",
44
"description": "Fetcher library of Nestia SDK",
55
"main": "lib/index.js",
66
"typings": "lib/index.d.ts",

packages/sdk/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@nestia/sdk",
3-
"version": "0.0.0-dev.20991231",
3+
"version": "2.3.5",
44
"description": "Nestia SDK and Swagger generator",
55
"main": "lib/index.js",
66
"typings": "lib/index.d.ts",
@@ -35,7 +35,7 @@
3535
},
3636
"homepage": "https://nestia.io",
3737
"dependencies": {
38-
"@nestia/fetcher": "D:\\github\\samchon\\nestia\\packages\\fetcher\\nestia-fetcher-0.0.0-dev.20991231.tgz",
38+
"@nestia/fetcher": "^2.3.5",
3939
"cli": "^1.0.1",
4040
"get-function-location": "^2.0.0",
4141
"glob": "^7.2.0",
@@ -47,7 +47,7 @@
4747
"typia": "^5.2.5"
4848
},
4949
"peerDependencies": {
50-
"@nestia/fetcher": ">=0.0.0-dev.20991231",
50+
"@nestia/fetcher": ">=2.3.5",
5151
"@nestjs/common": ">=7.0.1",
5252
"@nestjs/core": ">=7.0.1",
5353
"reflect-metadata": ">=0.1.12",

test/features/assertEquals/src/api/structures/IRequestDto.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.

test/features/assertEquals/src/controllers/RequestController.ts

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)