@nestia/core 1.4.2 → 1.4.4-dev.20230713
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 +12 -5
- package/lib/decorators/PlainBody.d.ts +1 -1
- package/lib/decorators/PlainBody.js +36 -31
- package/lib/decorators/PlainBody.js.map +1 -1
- package/lib/decorators/internal/TransformError.js +1 -1
- package/lib/decorators/internal/TransformError.js.map +1 -1
- package/lib/programmers/PlainBodyProgrammer.d.ts +5 -0
- package/lib/programmers/PlainBodyProgrammer.js +58 -0
- package/lib/programmers/PlainBodyProgrammer.js.map +1 -0
- package/lib/programmers/TypedParamProgrammer.js +12 -11
- package/lib/programmers/TypedParamProgrammer.js.map +1 -1
- package/lib/programmers/TypedQueryProgrammer.js +3 -3
- package/lib/programmers/TypedQueryProgrammer.js.map +1 -1
- package/lib/transformers/ParameterDecoratorTransformer.js +4 -0
- package/lib/transformers/ParameterDecoratorTransformer.js.map +1 -1
- package/package.json +3 -3
- package/src/decorators/PlainBody.ts +30 -5
- package/src/decorators/internal/TransformError.ts +1 -1
- package/src/programmers/PlainBodyProgrammer.ts +53 -0
- package/src/programmers/TypedParamProgrammer.ts +18 -17
- package/src/programmers/TypedQueryProgrammer.ts +3 -3
- package/src/transformers/ParameterDecoratorTransformer.ts +3 -0
package/README.md
CHANGED
|
@@ -11,10 +11,11 @@ Nestia is a set of helper libraries for NestJS, supporting below features:
|
|
|
11
11
|
|
|
12
12
|
- `@nestia/core`: super-fast decorators
|
|
13
13
|
- `@nestia/sdk`:
|
|
14
|
-
- SDK generator for clients
|
|
15
14
|
- Swagger generator evolved than ever
|
|
16
|
-
-
|
|
15
|
+
- SDK library generator for clients
|
|
17
16
|
- Mockup Simulator for client applications
|
|
17
|
+
- Automatic E2E test functions generator
|
|
18
|
+
- `@nestia/migrate`: migration from Swagger to NestJS
|
|
18
19
|
- `nestia`: just CLI (command line interface) tool
|
|
19
20
|
|
|
20
21
|
> **Note**
|
|
@@ -24,12 +25,13 @@ Nestia is a set of helper libraries for NestJS, supporting below features:
|
|
|
24
25
|
> - Runtime validator is **20,000x faster** than `class-validator`
|
|
25
26
|
> - JSON serialization is **200x faster** than `class-transformer`
|
|
26
27
|
> - Software Development Kit
|
|
27
|
-
> - SDK is
|
|
28
|
-
> - Mockup simulator
|
|
28
|
+
> - SDK is a collection of `fetch` functions with type definitions like [tRPC](https://trpc.io/)
|
|
29
|
+
> - Mockup simulator means embedded backend simulator in SDK
|
|
30
|
+
> - similar with [msw](https://mswjs.io/), but fully automated
|
|
29
31
|
|
|
30
32
|

|
|
31
33
|
|
|
32
|
-
> Left is server code, and right is client code utilizing SDK
|
|
34
|
+
> Left is NestJS server code, and right is client (frontend) code utilizing SDK
|
|
33
35
|
|
|
34
36
|
|
|
35
37
|
|
|
@@ -63,3 +65,8 @@ Check out the document in the [website](https://nestia.io/docs/):
|
|
|
63
65
|
- [SDK Library](https://nestia.io/docs/sdk/sdk/)
|
|
64
66
|
- [E2E Functions](https://nestia.io/docs/sdk/e2e/)
|
|
65
67
|
- [Mockup Simulator](https://nestia.io/docs/sdk/simulator/)
|
|
68
|
+
- [Swagger to NestJS](https://nestia.io/docs/migrate/)
|
|
69
|
+
|
|
70
|
+
### 🔗 Appendix
|
|
71
|
+
- [⇲ Benchmark Result](https://github.com/samchon/nestia/tree/master/benchmark/results/11th%20Gen%20Intel(R)%20Core(TM)%20i5-1135G7%20%40%202.40GHz)
|
|
72
|
+
- [⇲ `dev.to` Articles](https://dev.to/samchon/series/22751)
|
|
@@ -38,41 +38,46 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.PlainBody = void 0;
|
|
40
40
|
var common_1 = require("@nestjs/common");
|
|
41
|
+
var typia_1 = require("typia");
|
|
41
42
|
var get_text_body_1 = require("./internal/get_text_body");
|
|
43
|
+
var validate_request_body_1 = require("./internal/validate_request_body");
|
|
42
44
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* `PlainBody` is a decorator function getting full body text from the HTTP request.
|
|
46
|
-
*
|
|
47
|
-
* If you adjust the regular {@link Body} decorator function to the body parameter,
|
|
48
|
-
* you can't get the full body text because the {@link Body} tries to convert the
|
|
49
|
-
* body text to JSON object. Therefore, `@nestia/core` provides this `PlainBody`
|
|
50
|
-
* decorator function to get the full body text.
|
|
51
|
-
*
|
|
52
|
-
* ```typescript
|
|
53
|
-
* \@TypedRoute.Post("memo")
|
|
54
|
-
* public store
|
|
55
|
-
* (
|
|
56
|
-
* \@PlainBody() body: string
|
|
57
|
-
* ): void;
|
|
58
|
-
* ```
|
|
59
|
-
*
|
|
60
|
-
* @return Parameter decorator
|
|
61
|
-
* @author Jeongho Nam - https://github.com/samchon
|
|
45
|
+
* @internal
|
|
62
46
|
*/
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
47
|
+
function PlainBody(assert) {
|
|
48
|
+
var checker = assert
|
|
49
|
+
? (0, validate_request_body_1.validate_request_body)("PlainBody")({
|
|
50
|
+
type: "assert",
|
|
51
|
+
assert: assert,
|
|
52
|
+
})
|
|
53
|
+
: null;
|
|
54
|
+
return (0, common_1.createParamDecorator)(function PlainBody(_data, context) {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
56
|
+
var request, value, error;
|
|
57
|
+
return __generator(this, function (_a) {
|
|
58
|
+
switch (_a.label) {
|
|
59
|
+
case 0:
|
|
60
|
+
request = context
|
|
61
|
+
.switchToHttp()
|
|
62
|
+
.getRequest();
|
|
63
|
+
if (!isTextPlain(request.headers["content-type"]))
|
|
64
|
+
throw new common_1.BadRequestException("Request body type is not \"text/plain\".");
|
|
65
|
+
return [4 /*yield*/, (0, get_text_body_1.get_text_body)(request)];
|
|
66
|
+
case 1:
|
|
67
|
+
value = _a.sent();
|
|
68
|
+
if (checker) {
|
|
69
|
+
error = checker(value);
|
|
70
|
+
if (error !== null)
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
return [2 /*return*/, value];
|
|
74
|
+
}
|
|
75
|
+
});
|
|
73
76
|
});
|
|
74
|
-
});
|
|
75
|
-
}
|
|
77
|
+
})();
|
|
78
|
+
}
|
|
79
|
+
exports.PlainBody = PlainBody;
|
|
80
|
+
Object.assign(PlainBody, typia_1.assert);
|
|
76
81
|
var isTextPlain = function (text) {
|
|
77
82
|
return text !== undefined &&
|
|
78
83
|
text
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlainBody.js","sourceRoot":"","sources":["../../src/decorators/PlainBody.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAIwB;AAIxB,0DAAyD;
|
|
1
|
+
{"version":3,"file":"PlainBody.js","sourceRoot":"","sources":["../../src/decorators/PlainBody.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAIwB;AAIxB,+BAA+B;AAE/B,0DAAyD;AACzD,0EAAyE;AAyBzE;;GAEG;AACH,SAAgB,SAAS,CACrB,MAAmC;IAEnC,IAAM,OAAO,GAAG,MAAM;QAClB,CAAC,CAAC,IAAA,6CAAqB,EAAC,WAAW,CAAC,CAAC;YAC/B,IAAI,EAAE,QAAQ;YACd,MAAM,QAAA;SACT,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC;IACX,OAAO,IAAA,6BAAoB,EAAC,SAAe,SAAS,CAChD,KAAU,EACV,OAAyB;;;;;;wBAEnB,OAAO,GAAqC,OAAO;6BACpD,YAAY,EAAE;6BACd,UAAU,EAAE,CAAC;wBAClB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;4BAC7C,MAAM,IAAI,4BAAmB,CACzB,0CAAwC,CAC3C,CAAC;wBACgB,qBAAM,IAAA,6BAAa,EAAC,OAAO,CAAC,EAAA;;wBAA5C,KAAK,GAAW,SAA4B;wBAClD,IAAI,OAAO,EAAE;4BACH,KAAK,GAAiB,OAAO,CAAC,KAAK,CAAC,CAAC;4BAC3C,IAAI,KAAK,KAAK,IAAI;gCAAE,MAAM,KAAK,CAAC;yBACnC;wBACD,sBAAO,KAAK,EAAC;;;;KAChB,CAAC,EAAE,CAAC;AACT,CAAC;AA3BD,8BA2BC;AACD,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,cAAM,CAAC,CAAC;AAEjC,IAAM,WAAW,GAAG,UAAC,IAAa;IAC9B,OAAA,IAAI,KAAK,SAAS;QAClB,IAAI;aACC,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,CAAC,IAAI,EAAE,EAAV,CAAU,CAAC;aACxB,IAAI,CAAC,UAAC,GAAG,IAAK,OAAA,GAAG,KAAK,YAAY,EAApB,CAAoB,CAAC;AAJxC,CAIwC,CAAC"}
|
|
@@ -5,7 +5,7 @@ exports.TransformError = void 0;
|
|
|
5
5
|
* @internal
|
|
6
6
|
*/
|
|
7
7
|
function TransformError(method) {
|
|
8
|
-
return new Error("Error on nestia.core.".concat(method, "(): no transform has been configured. Run \"npx typia setup\" command."));
|
|
8
|
+
return new Error("Error on nestia.core.".concat(method, "(): no transform has been configured. Run \"npx typia setup\" command, or check if you're using non-standard TypeScript compiler like Babel or SWC."));
|
|
9
9
|
}
|
|
10
10
|
exports.TransformError = TransformError;
|
|
11
11
|
//# sourceMappingURL=TransformError.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransformError.js","sourceRoot":"","sources":["../../../src/decorators/internal/TransformError.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAc;IACzC,OAAO,IAAI,KAAK,CACZ,+BAAwB,MAAM,
|
|
1
|
+
{"version":3,"file":"TransformError.js","sourceRoot":"","sources":["../../../src/decorators/internal/TransformError.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAc;IACzC,OAAO,IAAI,KAAK,CACZ,+BAAwB,MAAM,wJAAmJ,CACpL,CAAC;AACN,CAAC;AAJD,wCAIC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import { INestiaTransformProject } from "../options/INestiaTransformProject";
|
|
3
|
+
export declare namespace PlainBodyProgrammer {
|
|
4
|
+
const generate: (project: INestiaTransformProject) => (modulo: ts.LeftHandSideExpression) => (type: ts.Type) => readonly ts.Expression[];
|
|
5
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.PlainBodyProgrammer = void 0;
|
|
15
|
+
var MetadataCollection_1 = require("typia/lib/factories/MetadataCollection");
|
|
16
|
+
var MetadataFactory_1 = require("typia/lib/factories/MetadataFactory");
|
|
17
|
+
var AssertProgrammer_1 = require("typia/lib/programmers/AssertProgrammer");
|
|
18
|
+
var PlainBodyProgrammer;
|
|
19
|
+
(function (PlainBodyProgrammer) {
|
|
20
|
+
PlainBodyProgrammer.generate = function (project) {
|
|
21
|
+
return function (modulo) {
|
|
22
|
+
return function (type) {
|
|
23
|
+
validate(MetadataFactory_1.MetadataFactory.analyze(project.checker)({
|
|
24
|
+
resolve: false,
|
|
25
|
+
constant: true,
|
|
26
|
+
absorb: true,
|
|
27
|
+
})(new MetadataCollection_1.MetadataCollection())(type));
|
|
28
|
+
return [
|
|
29
|
+
AssertProgrammer_1.AssertProgrammer.write(__assign(__assign({}, project), { options: {
|
|
30
|
+
numeric: false,
|
|
31
|
+
finite: false,
|
|
32
|
+
functional: false,
|
|
33
|
+
} }))(modulo)(false)(type),
|
|
34
|
+
];
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
})(PlainBodyProgrammer || (exports.PlainBodyProgrammer = PlainBodyProgrammer = {}));
|
|
39
|
+
var validate = function (metadata) {
|
|
40
|
+
var expected = (metadata.atomics.some(function (t) { return t === "string"; }) ? 1 : 0) +
|
|
41
|
+
metadata.templates.length +
|
|
42
|
+
metadata.constants
|
|
43
|
+
.filter(function (c) { return c.type === "string"; })
|
|
44
|
+
.map(function (c) { return c.values.length; })
|
|
45
|
+
.reduce(function (a, b) { return a + b; }, 0);
|
|
46
|
+
if (expected === 0 || expected !== metadata.size())
|
|
47
|
+
throw error("only string type is allowed");
|
|
48
|
+
else if (metadata.isRequired() === false)
|
|
49
|
+
throw error("do not allow undefindable type");
|
|
50
|
+
else if (metadata.nullable === true)
|
|
51
|
+
throw error("do not allow nullable type");
|
|
52
|
+
else if (metadata.any === true)
|
|
53
|
+
throw error("do not allow any type");
|
|
54
|
+
};
|
|
55
|
+
var error = function (msg) {
|
|
56
|
+
return new Error("Error on nestia.core.PlainBody(): ".concat(msg, "."));
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=PlainBodyProgrammer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlainBodyProgrammer.js","sourceRoot":"","sources":["../../src/programmers/PlainBodyProgrammer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAEA,6EAA4E;AAC5E,uEAAsE;AAEtE,2EAA0E;AAI1E,IAAiB,mBAAmB,CAuBnC;AAvBD,WAAiB,mBAAmB;IACnB,4BAAQ,GACjB,UAAC,OAAgC;QACjC,OAAA,UAAC,MAAiC;YAClC,OAAA,UAAC,IAAa;gBACV,QAAQ,CACJ,iCAAe,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBACrC,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,IAAI;iBACf,CAAC,CAAC,IAAI,uCAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,CACrC,CAAC;gBACF,OAAO;oBACH,mCAAgB,CAAC,KAAK,uBACf,OAAO,KACV,OAAO,EAAE;4BACL,OAAO,EAAE,KAAK;4BACd,MAAM,EAAE,KAAK;4BACb,UAAU,EAAE,KAAK;yBACpB,IACH,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;iBAC1B,CAAC;YACN,CAAC;QAlBD,CAkBC;IAnBD,CAmBC,CAAC;AACV,CAAC,EAvBgB,mBAAmB,mCAAnB,mBAAmB,QAuBnC;AAED,IAAM,QAAQ,GAAG,UAAC,QAAkB;IAChC,IAAM,QAAQ,GACV,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,KAAK,QAAQ,EAAd,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,QAAQ,CAAC,SAAS,CAAC,MAAM;QACzB,QAAQ,CAAC,SAAS;aACb,MAAM,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAnB,CAAmB,CAAC;aAClC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,MAAM,CAAC,MAAM,EAAf,CAAe,CAAC;aAC3B,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,EAAE,CAAC,CAAC,CAAC;IACpC,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE;QAC9C,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC1C,IAAI,QAAQ,CAAC,UAAU,EAAE,KAAK,KAAK;QACpC,MAAM,KAAK,CAAC,gCAAgC,CAAC,CAAC;SAC7C,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI;QAC/B,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;SACzC,IAAI,QAAQ,CAAC,GAAG,KAAK,IAAI;QAAE,MAAM,KAAK,CAAC,uBAAuB,CAAC,CAAC;AACzE,CAAC,CAAC;AAEF,IAAM,KAAK,GAAG,UAAC,GAAW;IACtB,OAAA,IAAI,KAAK,CAAC,4CAAqC,GAAG,MAAG,CAAC;AAAtD,CAAsD,CAAC"}
|
|
@@ -42,8 +42,8 @@ var TypedParamProgrammer;
|
|
|
42
42
|
resolve: false,
|
|
43
43
|
constant: true,
|
|
44
44
|
absorb: true,
|
|
45
|
-
validate: validate,
|
|
46
45
|
})(new MetadataCollection_1.MetadataCollection())(type);
|
|
46
|
+
validate(metadata);
|
|
47
47
|
var _a = __read(get_atomic_types(metadata), 1), atomic = _a[0];
|
|
48
48
|
// AUTO TYPE SPECIFICATION
|
|
49
49
|
if (parameters.length === 1)
|
|
@@ -61,7 +61,7 @@ var TypedParamProgrammer;
|
|
|
61
61
|
absorb: true,
|
|
62
62
|
})(new MetadataCollection_1.MetadataCollection())(checker.getTypeAtLocation(parameters[1]));
|
|
63
63
|
if (equals(atomic, specified) === false)
|
|
64
|
-
throw
|
|
64
|
+
throw error("different type between parameter and variable");
|
|
65
65
|
if (parameters.length === 2)
|
|
66
66
|
return [
|
|
67
67
|
parameters[0],
|
|
@@ -77,9 +77,9 @@ var TypedParamProgrammer;
|
|
|
77
77
|
absorb: true,
|
|
78
78
|
})(new MetadataCollection_1.MetadataCollection())(checker.getTypeAtLocation(parameters[2]));
|
|
79
79
|
if (nullable.getName() !== "true" && nullable.getName() !== "false")
|
|
80
|
-
throw
|
|
80
|
+
throw error("nullable value must be literal type");
|
|
81
81
|
else if (metadata.nullable !== (nullable.getName() === "true"))
|
|
82
|
-
throw
|
|
82
|
+
throw error("different type (nullable) between parameter and variable");
|
|
83
83
|
return parameters;
|
|
84
84
|
};
|
|
85
85
|
};
|
|
@@ -87,20 +87,21 @@ var TypedParamProgrammer;
|
|
|
87
87
|
})(TypedParamProgrammer || (exports.TypedParamProgrammer = TypedParamProgrammer = {}));
|
|
88
88
|
var validate = function (meta) {
|
|
89
89
|
if (meta.any)
|
|
90
|
-
throw
|
|
91
|
-
else if (meta.
|
|
92
|
-
throw
|
|
90
|
+
throw error("do not allow any type");
|
|
91
|
+
else if (meta.isRequired() === false)
|
|
92
|
+
throw error("do not allow undefindable type");
|
|
93
93
|
var atomics = get_atomic_types(meta);
|
|
94
94
|
var expected = meta.atomics.length +
|
|
95
|
+
meta.templates.length +
|
|
95
96
|
meta.constants.map(function (c) { return c.values.length; }).reduce(function (a, b) { return a + b; }, 0);
|
|
96
97
|
if (meta.size() !== expected || atomics.length === 0)
|
|
97
|
-
throw
|
|
98
|
+
throw error("only atomic or constant types is allowed");
|
|
98
99
|
else if (atomics.length > 1)
|
|
99
|
-
throw
|
|
100
|
+
throw error("do not allow union type");
|
|
100
101
|
};
|
|
101
|
-
var get_atomic_types = function (meta) { return __spreadArray([], __read(new Set(__spreadArray(__spreadArray([], __read(meta.atomics), false), __read(meta.constants.map(function (c) { return c.type; })), false))), false); };
|
|
102
|
+
var get_atomic_types = function (meta) { return __spreadArray([], __read(new Set(__spreadArray(__spreadArray(__spreadArray([], __read(meta.atomics), false), __read(meta.constants.map(function (c) { return c.type; })), false), __read((meta.templates.length ? ["string"] : [])), false))), false); };
|
|
102
103
|
var error = function (message) {
|
|
103
|
-
return "Error on nestia.core.TypedParam(): ".concat(message, ".");
|
|
104
|
+
return new Error("Error on nestia.core.TypedParam(): ".concat(message, "."));
|
|
104
105
|
};
|
|
105
106
|
var equals = function (atomic, p) {
|
|
106
107
|
var name = p.getName();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypedParamProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedParamProgrammer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA4B;AAE5B,6EAA4E;AAC5E,uEAAsE;AAKtE,IAAiB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"TypedParamProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedParamProgrammer.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,7 +81,7 @@ var TypedQueryProgrammer;
|
|
|
81
81
|
throw new Error(ErrorMessages.object(metadata)("only one object type is allowed."));
|
|
82
82
|
else if (metadata.nullable === true)
|
|
83
83
|
throw new Error(ErrorMessages.object(metadata)("query parameter cannot be null."));
|
|
84
|
-
else if (metadata.
|
|
84
|
+
else if (metadata.isRequired() === false)
|
|
85
85
|
throw new Error(ErrorMessages.object(metadata)("query parameter cannot be undefined."));
|
|
86
86
|
var object = metadata.objects[0];
|
|
87
87
|
try {
|
|
@@ -106,7 +106,7 @@ var TypedQueryProgrammer;
|
|
|
106
106
|
return function (key) {
|
|
107
107
|
return function (value, depth) {
|
|
108
108
|
var e_2, _a, e_3, _b, e_4, _c, e_5, _d, e_6, _e;
|
|
109
|
-
if (depth === 1 && value.
|
|
109
|
+
if (depth === 1 && value.isRequired() === false)
|
|
110
110
|
throw new Error(ErrorMessages.property(obj)(key)("optional type is not allowed in array."));
|
|
111
111
|
else if (value.maps.length ||
|
|
112
112
|
value.sets.length ||
|
|
@@ -142,7 +142,7 @@ var TypedQueryProgrammer;
|
|
|
142
142
|
if (depth === 0 && (value.arrays.length || value.arrays.length)) {
|
|
143
143
|
if (atom.length)
|
|
144
144
|
throw new Error(ErrorMessages.property(obj)(key)("union type is not allowed"));
|
|
145
|
-
else if (value.
|
|
145
|
+
else if (value.isRequired() === false)
|
|
146
146
|
throw new Error(ErrorMessages.property(obj)(key)("array type cannot be optional"));
|
|
147
147
|
try {
|
|
148
148
|
for (var _k = __values(value.arrays), _l = _k.next(); !_l.done; _l = _k.next()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypedQueryProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedQueryProgrammer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA4B;AAE5B,2EAA0E;AAC1E,6EAA4E;AAC5E,uEAAsE;AACtE,yEAAwE;AAIxE,2EAA0E;AAC1E,qFAAmF;AAKnF,IAAiB,oBAAoB,CA4NpC;AA5ND,WAAiB,oBAAoB;IACpB,6BAAQ,GACjB,UAAC,OAAgC;QACjC,OAAA,UAAC,MAAiC;YAClC,OAAA,UAAC,IAAa;gBACV,IAAM,MAAM,GAAmB,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;gBAChE,OAAO,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACjD,CAAC;QAHD,CAGC;IAJD,CAIC,CAAC;IAEN,IAAM,SAAS,GACX,UAAC,OAAuB;QACxB,OAAA,UAAC,IAAa;;YACV,IAAM,UAAU,GAAuB,IAAI,uCAAkB,EAAE,CAAC;YAChE,IAAM,QAAQ,GAAa,iCAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACxD,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,IAAI;aACf,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;gBACxD,MAAM,IAAI,KAAK,CACX,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAC1B,kCAAkC,CACrC,CACJ,CAAC;iBACD,IAAI,QAAQ,CAAC,QAAQ,KAAK,IAAI;gBAC/B,MAAM,IAAI,KAAK,CACX,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAC1B,iCAAiC,CACpC,CACJ,CAAC;iBACD,IAAI,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"TypedQueryProgrammer.js","sourceRoot":"","sources":["../../src/programmers/TypedQueryProgrammer.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.ParameterDecoratorTransformer = void 0;
|
|
7
7
|
var path_1 = __importDefault(require("path"));
|
|
8
8
|
var typescript_1 = __importDefault(require("typescript"));
|
|
9
|
+
var PlainBodyProgrammer_1 = require("../programmers/PlainBodyProgrammer");
|
|
9
10
|
var TypedBodyProgrammer_1 = require("../programmers/TypedBodyProgrammer");
|
|
10
11
|
var TypedParamProgrammer_1 = require("../programmers/TypedParamProgrammer");
|
|
11
12
|
var TypedQueryProgrammer_1 = require("../programmers/TypedQueryProgrammer");
|
|
@@ -63,6 +64,9 @@ var FUNCTORS = {
|
|
|
63
64
|
? parameters
|
|
64
65
|
: [TypedQueryProgrammer_1.TypedQueryProgrammer.generate(project)(modulo)(type)];
|
|
65
66
|
}; }; }; },
|
|
67
|
+
PlainBody: function (project) { return function (modulo) { return function () { return function (type) {
|
|
68
|
+
return PlainBodyProgrammer_1.PlainBodyProgrammer.generate(project)(modulo)(type);
|
|
69
|
+
}; }; }; },
|
|
66
70
|
};
|
|
67
71
|
var LIB_PATH = path_1.default.join("node_modules", "@nestia", "core", "lib", "decorators");
|
|
68
72
|
var SRC_PATH = path_1.default.resolve(path_1.default.join(__dirname, "..", "decorators"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParameterDecoratorTransformer.js","sourceRoot":"","sources":["../../src/transformers/ParameterDecoratorTransformer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ParameterDecoratorTransformer.js","sourceRoot":"","sources":["../../src/transformers/ParameterDecoratorTransformer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nestia/core",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.4-dev.20230713",
|
|
4
4
|
"description": "Super-fast validation decorators of NestJS",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"raw-body": ">= 2.0.0",
|
|
45
45
|
"reflect-metadata": ">= 0.1.12",
|
|
46
46
|
"rxjs": ">= 6.0.0",
|
|
47
|
-
"typia": "^4.1.
|
|
47
|
+
"typia": "^4.1.6"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"@nestia/fetcher": ">= 1.4.0",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"reflect-metadata": ">= 0.1.12",
|
|
57
57
|
"rxjs": ">= 6.0.0",
|
|
58
58
|
"typescript": ">= 4.7.4",
|
|
59
|
-
"typia": ">= 4.1.
|
|
59
|
+
"typia": ">= 4.1.6"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@trivago/prettier-plugin-sort-imports": "^4.0.0",
|
|
@@ -6,7 +6,10 @@ import {
|
|
|
6
6
|
import type express from "express";
|
|
7
7
|
import type { FastifyRequest } from "fastify";
|
|
8
8
|
|
|
9
|
+
import { assert } from "typia";
|
|
10
|
+
|
|
9
11
|
import { get_text_body } from "./internal/get_text_body";
|
|
12
|
+
import { validate_request_body } from "./internal/validate_request_body";
|
|
10
13
|
|
|
11
14
|
/**
|
|
12
15
|
* Plain body decorator.
|
|
@@ -29,8 +32,24 @@ import { get_text_body } from "./internal/get_text_body";
|
|
|
29
32
|
* @return Parameter decorator
|
|
30
33
|
* @author Jeongho Nam - https://github.com/samchon
|
|
31
34
|
*/
|
|
32
|
-
export
|
|
33
|
-
|
|
35
|
+
export function PlainBody(): ParameterDecorator;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
export function PlainBody(
|
|
41
|
+
assert?: (input: unknown) => string,
|
|
42
|
+
): ParameterDecorator {
|
|
43
|
+
const checker = assert
|
|
44
|
+
? validate_request_body("PlainBody")({
|
|
45
|
+
type: "assert",
|
|
46
|
+
assert,
|
|
47
|
+
})
|
|
48
|
+
: null;
|
|
49
|
+
return createParamDecorator(async function PlainBody(
|
|
50
|
+
_data: any,
|
|
51
|
+
context: ExecutionContext,
|
|
52
|
+
) {
|
|
34
53
|
const request: express.Request | FastifyRequest = context
|
|
35
54
|
.switchToHttp()
|
|
36
55
|
.getRequest();
|
|
@@ -38,9 +57,15 @@ export const PlainBody: () => ParameterDecorator = createParamDecorator(
|
|
|
38
57
|
throw new BadRequestException(
|
|
39
58
|
`Request body type is not "text/plain".`,
|
|
40
59
|
);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
);
|
|
60
|
+
const value: string = await get_text_body(request);
|
|
61
|
+
if (checker) {
|
|
62
|
+
const error: Error | null = checker(value);
|
|
63
|
+
if (error !== null) throw error;
|
|
64
|
+
}
|
|
65
|
+
return value;
|
|
66
|
+
})();
|
|
67
|
+
}
|
|
68
|
+
Object.assign(PlainBody, assert);
|
|
44
69
|
|
|
45
70
|
const isTextPlain = (text?: string): boolean =>
|
|
46
71
|
text !== undefined &&
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export function TransformError(method: string): Error {
|
|
5
5
|
return new Error(
|
|
6
|
-
`Error on nestia.core.${method}(): no transform has been configured. Run "npx typia setup" command.`,
|
|
6
|
+
`Error on nestia.core.${method}(): no transform has been configured. Run "npx typia setup" command, or check if you're using non-standard TypeScript compiler like Babel or SWC.`,
|
|
7
7
|
);
|
|
8
8
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
|
|
3
|
+
import { MetadataCollection } from "typia/lib/factories/MetadataCollection";
|
|
4
|
+
import { MetadataFactory } from "typia/lib/factories/MetadataFactory";
|
|
5
|
+
import { Metadata } from "typia/lib/metadata/Metadata";
|
|
6
|
+
import { AssertProgrammer } from "typia/lib/programmers/AssertProgrammer";
|
|
7
|
+
|
|
8
|
+
import { INestiaTransformProject } from "../options/INestiaTransformProject";
|
|
9
|
+
|
|
10
|
+
export namespace PlainBodyProgrammer {
|
|
11
|
+
export const generate =
|
|
12
|
+
(project: INestiaTransformProject) =>
|
|
13
|
+
(modulo: ts.LeftHandSideExpression) =>
|
|
14
|
+
(type: ts.Type): readonly ts.Expression[] => {
|
|
15
|
+
validate(
|
|
16
|
+
MetadataFactory.analyze(project.checker)({
|
|
17
|
+
resolve: false,
|
|
18
|
+
constant: true,
|
|
19
|
+
absorb: true,
|
|
20
|
+
})(new MetadataCollection())(type),
|
|
21
|
+
);
|
|
22
|
+
return [
|
|
23
|
+
AssertProgrammer.write({
|
|
24
|
+
...project,
|
|
25
|
+
options: {
|
|
26
|
+
numeric: false,
|
|
27
|
+
finite: false,
|
|
28
|
+
functional: false,
|
|
29
|
+
},
|
|
30
|
+
})(modulo)(false)(type),
|
|
31
|
+
];
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const validate = (metadata: Metadata): void => {
|
|
36
|
+
const expected: number =
|
|
37
|
+
(metadata.atomics.some((t) => t === "string") ? 1 : 0) +
|
|
38
|
+
metadata.templates.length +
|
|
39
|
+
metadata.constants
|
|
40
|
+
.filter((c) => c.type === "string")
|
|
41
|
+
.map((c) => c.values.length)
|
|
42
|
+
.reduce((a, b) => a + b, 0);
|
|
43
|
+
if (expected === 0 || expected !== metadata.size())
|
|
44
|
+
throw error(`only string type is allowed`);
|
|
45
|
+
else if (metadata.isRequired() === false)
|
|
46
|
+
throw error(`do not allow undefindable type`);
|
|
47
|
+
else if (metadata.nullable === true)
|
|
48
|
+
throw error(`do not allow nullable type`);
|
|
49
|
+
else if (metadata.any === true) throw error(`do not allow any type`);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
const error = (msg: string) =>
|
|
53
|
+
new Error(`Error on nestia.core.PlainBody(): ${msg}.`);
|
|
@@ -15,8 +15,8 @@ export namespace TypedParamProgrammer {
|
|
|
15
15
|
resolve: false,
|
|
16
16
|
constant: true,
|
|
17
17
|
absorb: true,
|
|
18
|
-
validate,
|
|
19
18
|
})(new MetadataCollection())(type);
|
|
19
|
+
validate(metadata);
|
|
20
20
|
const [atomic] = get_atomic_types(metadata);
|
|
21
21
|
|
|
22
22
|
// AUTO TYPE SPECIFICATION
|
|
@@ -38,9 +38,8 @@ export namespace TypedParamProgrammer {
|
|
|
38
38
|
checker.getTypeAtLocation(parameters[1]),
|
|
39
39
|
);
|
|
40
40
|
if (equals(atomic, specified) === false)
|
|
41
|
-
throw
|
|
42
|
-
|
|
43
|
-
);
|
|
41
|
+
throw error("different type between parameter and variable");
|
|
42
|
+
|
|
44
43
|
if (parameters.length === 2)
|
|
45
44
|
return [
|
|
46
45
|
parameters[0],
|
|
@@ -59,38 +58,40 @@ export namespace TypedParamProgrammer {
|
|
|
59
58
|
checker.getTypeAtLocation(parameters[2]),
|
|
60
59
|
);
|
|
61
60
|
if (nullable.getName() !== "true" && nullable.getName() !== "false")
|
|
62
|
-
throw
|
|
61
|
+
throw error("nullable value must be literal type");
|
|
63
62
|
else if (metadata.nullable !== (nullable.getName() === "true"))
|
|
64
|
-
throw
|
|
65
|
-
|
|
66
|
-
"different type (nullable) between parameter and variable",
|
|
67
|
-
),
|
|
63
|
+
throw error(
|
|
64
|
+
"different type (nullable) between parameter and variable",
|
|
68
65
|
);
|
|
69
66
|
return parameters;
|
|
70
67
|
};
|
|
71
68
|
}
|
|
72
69
|
|
|
73
70
|
const validate = (meta: Metadata) => {
|
|
74
|
-
if (meta.any) throw
|
|
75
|
-
else if (meta.
|
|
76
|
-
throw
|
|
71
|
+
if (meta.any) throw error("do not allow any type");
|
|
72
|
+
else if (meta.isRequired() === false)
|
|
73
|
+
throw error("do not allow undefindable type");
|
|
77
74
|
|
|
78
75
|
const atomics: string[] = get_atomic_types(meta);
|
|
79
76
|
const expected: number =
|
|
80
77
|
meta.atomics.length +
|
|
78
|
+
meta.templates.length +
|
|
81
79
|
meta.constants.map((c) => c.values.length).reduce((a, b) => a + b, 0);
|
|
82
80
|
if (meta.size() !== expected || atomics.length === 0)
|
|
83
|
-
throw
|
|
84
|
-
else if (atomics.length > 1)
|
|
85
|
-
throw new Error(error("do not allow union type"));
|
|
81
|
+
throw error("only atomic or constant types is allowed");
|
|
82
|
+
else if (atomics.length > 1) throw error("do not allow union type");
|
|
86
83
|
};
|
|
87
84
|
|
|
88
85
|
const get_atomic_types = (meta: Metadata): string[] => [
|
|
89
|
-
...new Set([
|
|
86
|
+
...new Set([
|
|
87
|
+
...meta.atomics,
|
|
88
|
+
...meta.constants.map((c) => c.type),
|
|
89
|
+
...(meta.templates.length ? ["string"] : []),
|
|
90
|
+
]),
|
|
90
91
|
];
|
|
91
92
|
|
|
92
93
|
const error = (message: string) =>
|
|
93
|
-
`Error on nestia.core.TypedParam(): ${message}
|
|
94
|
+
new Error(`Error on nestia.core.TypedParam(): ${message}.`);
|
|
94
95
|
|
|
95
96
|
const equals = (atomic: string, p: Metadata) => {
|
|
96
97
|
const name: string = p.getName();
|
|
@@ -43,7 +43,7 @@ export namespace TypedQueryProgrammer {
|
|
|
43
43
|
"query parameter cannot be null.",
|
|
44
44
|
),
|
|
45
45
|
);
|
|
46
|
-
else if (metadata.
|
|
46
|
+
else if (metadata.isRequired() === false)
|
|
47
47
|
throw new Error(
|
|
48
48
|
ErrorMessages.object(metadata)(
|
|
49
49
|
"query parameter cannot be undefined.",
|
|
@@ -63,7 +63,7 @@ export namespace TypedQueryProgrammer {
|
|
|
63
63
|
(obj: MetadataObject) =>
|
|
64
64
|
(key: Metadata) =>
|
|
65
65
|
(value: Metadata, depth: number): string[] => {
|
|
66
|
-
if (depth === 1 && value.
|
|
66
|
+
if (depth === 1 && value.isRequired() === false)
|
|
67
67
|
throw new Error(
|
|
68
68
|
ErrorMessages.property(obj)(key)(
|
|
69
69
|
"optional type is not allowed in array.",
|
|
@@ -91,7 +91,7 @@ export namespace TypedQueryProgrammer {
|
|
|
91
91
|
"union type is not allowed",
|
|
92
92
|
),
|
|
93
93
|
);
|
|
94
|
-
else if (value.
|
|
94
|
+
else if (value.isRequired() === false)
|
|
95
95
|
throw new Error(
|
|
96
96
|
ErrorMessages.property(obj)(key)(
|
|
97
97
|
"array type cannot be optional",
|
|
@@ -2,6 +2,7 @@ import path from "path";
|
|
|
2
2
|
import ts from "typescript";
|
|
3
3
|
|
|
4
4
|
import { INestiaTransformProject } from "../options/INestiaTransformProject";
|
|
5
|
+
import { PlainBodyProgrammer } from "../programmers/PlainBodyProgrammer";
|
|
5
6
|
import { TypedBodyProgrammer } from "../programmers/TypedBodyProgrammer";
|
|
6
7
|
import { TypedParamProgrammer } from "../programmers/TypedParamProgrammer";
|
|
7
8
|
import { TypedQueryProgrammer } from "../programmers/TypedQueryProgrammer";
|
|
@@ -82,6 +83,8 @@ const FUNCTORS: Record<string, Programmer> = {
|
|
|
82
83
|
parameters.length
|
|
83
84
|
? parameters
|
|
84
85
|
: [TypedQueryProgrammer.generate(project)(modulo)(type)],
|
|
86
|
+
PlainBody: (project) => (modulo) => () => (type) =>
|
|
87
|
+
PlainBodyProgrammer.generate(project)(modulo)(type),
|
|
85
88
|
};
|
|
86
89
|
|
|
87
90
|
const LIB_PATH = path.join(
|