@nestia/core 1.0.2 → 1.0.3
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 +10 -6
- package/lib/decorators/DynamicModule.d.ts +2 -1
- package/lib/decorators/DynamicModule.js +14 -2
- package/lib/decorators/DynamicModule.js.map +1 -1
- package/lib/decorators/EncryptedModule.d.ts +2 -1
- package/lib/decorators/EncryptedModule.js +15 -2
- package/lib/decorators/EncryptedModule.js.map +1 -1
- package/lib/executable/internal/CoreSetupWizard.js +2 -2
- package/lib/executable/internal/CoreSetupWizard.js.map +1 -1
- package/package.json +2 -2
- package/src/decorators/DynamicModule.ts +6 -2
- package/src/decorators/EncryptedModule.ts +3 -1
- package/src/executable/internal/CoreSetupWizard.ts +2 -4
package/README.md
CHANGED
|
@@ -7,17 +7,19 @@
|
|
|
7
7
|
|
|
8
8
|
Super-fast validation decorators for NestJS.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
- 15,000x faster request body validation
|
|
11
|
+
- 10x faster JSON response, even type safe
|
|
12
|
+
- Do not need DTO class definition, just fine with interface
|
|
11
13
|
|
|
12
|
-
|
|
14
|
+
`@nestia/core` is a transformer library of NestJS, supporting super-fast validation decorators, by wrapping [typia](https://github.com/samchon/typia). Comparing validation speed with `class-validator`, [typia](https://github.com/samchon/typia) is maximum **15,000x times faster** and it is even much safer.
|
|
13
15
|
|
|
14
|
-
|
|
16
|
+
Furthermore, `@nestia/core` can use pure interface typed DTO with **only one line**. With `@nestia/core`, you don't need any extra dedication like defining JSON schema (`@nestjs/swagger`), or using class definition with decorator function calls (`class-validator`). Just enjoy the superfast decorators with pure TypeScript type.
|
|
15
17
|
|
|
16
18
|
```typescript
|
|
17
19
|
import { Controller } from "@nestjs/common";
|
|
18
20
|
import { TypedBody, TypedRoute } from "@nestia/core";
|
|
19
21
|
|
|
20
|
-
import { IBbsArticle } from "@bbs-api/structures/IBbsArticle";
|
|
22
|
+
import type { IBbsArticle } from "@bbs-api/structures/IBbsArticle";
|
|
21
23
|
|
|
22
24
|
@Controller("bbs/articles")
|
|
23
25
|
export class BbsArticlesController {
|
|
@@ -29,8 +31,10 @@ export class BbsArticlesController {
|
|
|
29
31
|
*/
|
|
30
32
|
@TypedRoute.Post() // 10x faster and safer JSON.stringify()
|
|
31
33
|
public async store(
|
|
32
|
-
@TypedBody() input: IBbsArticle.IStore //
|
|
33
|
-
): Promise<IBbsArticle>;
|
|
34
|
+
@TypedBody() input: IBbsArticle.IStore // super-fast validator
|
|
35
|
+
): Promise<IBbsArticle>;
|
|
36
|
+
// do not need DTO class definition,
|
|
37
|
+
// just fine with interface
|
|
34
38
|
}
|
|
35
39
|
```
|
|
36
40
|
|
|
@@ -1,4 +1,15 @@
|
|
|
1
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
|
+
};
|
|
2
13
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
14
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
15
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -47,7 +58,8 @@ var common_1 = require("@nestjs/common");
|
|
|
47
58
|
var load_controller_1 = require("./internal/load_controller");
|
|
48
59
|
var DynamicModule;
|
|
49
60
|
(function (DynamicModule) {
|
|
50
|
-
function mount(path) {
|
|
61
|
+
function mount(path, options) {
|
|
62
|
+
if (options === void 0) { options = {}; }
|
|
51
63
|
return __awaiter(this, void 0, void 0, function () {
|
|
52
64
|
var controllers, NestiaModule;
|
|
53
65
|
return __generator(this, function (_a) {
|
|
@@ -59,7 +71,7 @@ var DynamicModule;
|
|
|
59
71
|
function NestiaModule() {
|
|
60
72
|
}
|
|
61
73
|
NestiaModule = __decorate([
|
|
62
|
-
(0, common_1.Module)({ controllers: controllers })
|
|
74
|
+
(0, common_1.Module)(__assign(__assign({}, options), { controllers: controllers }))
|
|
63
75
|
], NestiaModule);
|
|
64
76
|
return NestiaModule;
|
|
65
77
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicModule.js","sourceRoot":"","sources":["../../src/decorators/DynamicModule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DynamicModule.js","sourceRoot":"","sources":["../../src/decorators/DynamicModule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAwC;AAIxC,8DAA8D;AAE9D,IAAiB,aAAa,CAa7B;AAbD,WAAiB,aAAa;IAC1B,SAAsB,KAAK,CACvB,IAAY,EACZ,OAAiD;QAAjD,wBAAA,EAAA,YAAiD;;;;;4BAGV,qBAAM,IAAA,kCAAgB,EAAC,IAAI,CAAC,EAAA;;wBAA7D,WAAW,GAAsB,SAA4B;;4BAInE;4BAAoB,CAAC;4BAAf,YAAY;gCADjB,IAAA,eAAM,wBAAM,OAAO,KAAE,WAAW,aAAA,IAAG;+BAC9B,YAAY,CAAG;4BAAD,mBAAC;yBAAA,AAArB;wBACA,sBAAO,YAAY,EAAC;;;;KACvB;IAXqB,mBAAK,QAW1B,CAAA;AACL,CAAC,EAbgB,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAa7B"}
|
|
@@ -42,7 +42,8 @@ export declare namespace EncryptedModule {
|
|
|
42
42
|
*
|
|
43
43
|
* @param path Directory path of the controller classes
|
|
44
44
|
* @param password Encryption password or its getter function
|
|
45
|
+
* @param options Additional options except controller
|
|
45
46
|
* @returns Class decorated module instance
|
|
46
47
|
*/
|
|
47
|
-
function dynamic(path: string, password: IEncryptionPassword | IEncryptionPassword.Closure): Promise<object>;
|
|
48
|
+
function dynamic(path: string, password: IEncryptionPassword | IEncryptionPassword.Closure, options?: Omit<ModuleMetadata, "controllers">): Promise<object>;
|
|
48
49
|
}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
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
|
+
};
|
|
2
13
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
14
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
15
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -121,9 +132,11 @@ exports.EncryptedModule = EncryptedModule;
|
|
|
121
132
|
*
|
|
122
133
|
* @param path Directory path of the controller classes
|
|
123
134
|
* @param password Encryption password or its getter function
|
|
135
|
+
* @param options Additional options except controller
|
|
124
136
|
* @returns Class decorated module instance
|
|
125
137
|
*/
|
|
126
|
-
function dynamic(path, password) {
|
|
138
|
+
function dynamic(path, password, options) {
|
|
139
|
+
if (options === void 0) { options = {}; }
|
|
127
140
|
return __awaiter(this, void 0, void 0, function () {
|
|
128
141
|
var controllers, NestiaModule;
|
|
129
142
|
return __generator(this, function (_a) {
|
|
@@ -135,7 +148,7 @@ exports.EncryptedModule = EncryptedModule;
|
|
|
135
148
|
function NestiaModule() {
|
|
136
149
|
}
|
|
137
150
|
NestiaModule = __decorate([
|
|
138
|
-
EncryptedModule({ controllers: controllers }, password)
|
|
151
|
+
EncryptedModule(__assign(__assign({}, options), { controllers: controllers }), password)
|
|
139
152
|
], NestiaModule);
|
|
140
153
|
return NestiaModule;
|
|
141
154
|
}());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EncryptedModule.js","sourceRoot":"","sources":["../../src/decorators/EncryptedModule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"EncryptedModule.js","sourceRoot":"","sources":["../../src/decorators/EncryptedModule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yCAAwD;AAGxD,kEAAuE;AACvE,8DAA8D;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,SAAgB,eAAe,CAC3B,QAAwB,EACxB,QAA2D;IAE3D,OAAO,UAAU,MAAW;;QACxB,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS;YAAE,OAAO;;YAE/C,KAAgB,IAAA,KAAA,SAAA,QAAQ,CAAC,WAAW,CAAA,gBAAA;gBAA/B,IAAM,CAAC,WAAA;gBACR,IAAI,OAAO,CAAC,WAAW,CAAC,2CAAuB,EAAE,CAAC,CAAC,KAAK,KAAK;oBACzD,OAAO,CAAC,cAAc,CAAC,2CAAuB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;aAAA;;;;;;;;;IACzE,CAAC,CAAC;AACN,CAAC;AAZD,0CAYC;AAED,WAAiB,eAAe;IAC5B;;;;;;;;;;;;OAYG;IACH,SAAsB,OAAO,CACzB,IAAY,EACZ,QAA2D,EAC3D,OAAiD;QAAjD,wBAAA,EAAA,YAAiD;;;;;4BAGV,qBAAM,IAAA,kCAAgB,EAAC,IAAI,CAAC,EAAA;;wBAA7D,WAAW,GAAsB,SAA4B;;4BAInE;4BAAoB,CAAC;4BAAf,YAAY;gCADjB,eAAe,uBAAM,OAAO,KAAE,WAAW,aAAA,KAAI,QAAQ,CAAC;+BACjD,YAAY,CAAG;4BAAD,mBAAC;yBAAA,AAArB;wBACA,sBAAO,YAAY,EAAC;;;;KACvB;IAZqB,uBAAO,UAY5B,CAAA;AACL,CAAC,EA3BgB,eAAe,GAAf,uBAAe,KAAf,uBAAe,QA2B/B"}
|
|
@@ -205,9 +205,9 @@ var CoreSetupWizard;
|
|
|
205
205
|
// DO CONFIGURE
|
|
206
206
|
options.strict = true;
|
|
207
207
|
if (core === undefined)
|
|
208
|
-
plugins.push(Comment.parse("{\n \"transform\": \"@nestia/core/lib/transform\",\n /**\n * Validate request body.\n * \n * - \"assert\": Use typia.assert() function\n * - \"is\": Use typia.is() function\n * - \"validate\": Use typia.validate() function\n */\n \"validate\": \"assert\",\n\n /**\n * Validate JSON typed response body.\n * \n * - null: Just use JSON.stringify() function, without boosting\n * - \"stringify\": Use typia.stringify() function, but dangerous\n * - \"assert\": Use typia.assertStringify() function\n * - \"is\": Use typia.isStringify() function\n * - \"validate\": Use typia.validateStringify() function\n */\n \"stringify\": \"is\"
|
|
208
|
+
plugins.push(Comment.parse("{\n \"transform\": \"@nestia/core/lib/transform\",\n /**\n * Validate request body.\n * \n * - \"assert\": Use typia.assert() function\n * - \"is\": Use typia.is() function\n * - \"validate\": Use typia.validate() function\n */\n \"validate\": \"assert\",\n\n /**\n * Validate JSON typed response body.\n * \n * - null: Just use JSON.stringify() function, without boosting\n * - \"stringify\": Use typia.stringify() function, but dangerous\n * - \"assert\": Use typia.assertStringify() function\n * - \"is\": Use typia.isStringify() function\n * - \"validate\": Use typia.validateStringify() function\n */\n \"stringify\": \"is\"\n }"));
|
|
209
209
|
if (typia === undefined)
|
|
210
|
-
plugins.push(Comment.parse("{\n \"transform\": \"typia/lib/transform\"
|
|
210
|
+
plugins.push(Comment.parse("{\n \"transform\": \"typia/lib/transform\"\n }"));
|
|
211
211
|
return [4 /*yield*/, fs_1.default.promises.writeFile("tsconfig.json", Comment.stringify(config, null, 2))];
|
|
212
212
|
case 4:
|
|
213
213
|
_c.sent();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreSetupWizard.js","sourceRoot":"","sources":["../../../src/executable/internal/CoreSetupWizard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAA+B;AAE/B,0CAAoB;AAEpB,IAAiB,eAAe,
|
|
1
|
+
{"version":3,"file":"CoreSetupWizard.js","sourceRoot":"","sources":["../../../src/executable/internal/CoreSetupWizard.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.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Super-fast validation decorators of NestJS",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"raw-body": "*",
|
|
59
59
|
"reflect-metadata": "*",
|
|
60
60
|
"rxjs": "*",
|
|
61
|
-
"typia": "^3.4.
|
|
61
|
+
"typia": "^3.4.15"
|
|
62
62
|
},
|
|
63
63
|
"peerDependencies": {
|
|
64
64
|
"ttypescript": ">= 1.5.15",
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { Module } from "@nestjs/common";
|
|
2
|
+
import { ModuleMetadata } from "@nestjs/common/interfaces";
|
|
2
3
|
|
|
3
4
|
import { Creator } from "../typings/Creator";
|
|
4
5
|
import { load_controllers } from "./internal/load_controller";
|
|
5
6
|
|
|
6
7
|
export namespace DynamicModule {
|
|
7
|
-
export async function mount(
|
|
8
|
+
export async function mount(
|
|
9
|
+
path: string,
|
|
10
|
+
options: Omit<ModuleMetadata, "controllers"> = {},
|
|
11
|
+
): Promise<object> {
|
|
8
12
|
// LOAD CONTROLLERS
|
|
9
13
|
const controllers: Creator<object>[] = await load_controllers(path);
|
|
10
14
|
|
|
11
15
|
// RETURN WITH DECORATING
|
|
12
|
-
@Module({ controllers })
|
|
16
|
+
@Module({ ...options, controllers })
|
|
13
17
|
class NestiaModule {}
|
|
14
18
|
return NestiaModule;
|
|
15
19
|
}
|
|
@@ -60,17 +60,19 @@ export namespace EncryptedModule {
|
|
|
60
60
|
*
|
|
61
61
|
* @param path Directory path of the controller classes
|
|
62
62
|
* @param password Encryption password or its getter function
|
|
63
|
+
* @param options Additional options except controller
|
|
63
64
|
* @returns Class decorated module instance
|
|
64
65
|
*/
|
|
65
66
|
export async function dynamic(
|
|
66
67
|
path: string,
|
|
67
68
|
password: IEncryptionPassword | IEncryptionPassword.Closure,
|
|
69
|
+
options: Omit<ModuleMetadata, "controllers"> = {},
|
|
68
70
|
): Promise<object> {
|
|
69
71
|
// LOAD CONTROLLERS
|
|
70
72
|
const controllers: Creator<object>[] = await load_controllers(path);
|
|
71
73
|
|
|
72
74
|
// RETURNS WITH DECORATING
|
|
73
|
-
@EncryptedModule({ controllers }, password)
|
|
75
|
+
@EncryptedModule({ ...options, controllers }, password)
|
|
74
76
|
class NestiaModule {}
|
|
75
77
|
return NestiaModule;
|
|
76
78
|
}
|
|
@@ -145,15 +145,13 @@ export namespace CoreSetupWizard {
|
|
|
145
145
|
* - "is": Use typia.isStringify() function
|
|
146
146
|
* - "validate": Use typia.validateStringify() function
|
|
147
147
|
*/
|
|
148
|
-
"stringify": "is"
|
|
148
|
+
"stringify": "is"
|
|
149
149
|
}`) as Comment.CommentObject,
|
|
150
150
|
);
|
|
151
151
|
if (typia === undefined)
|
|
152
152
|
plugins.push(
|
|
153
153
|
Comment.parse(`{
|
|
154
|
-
"transform": "typia/lib/transform"
|
|
155
|
-
"numeric": true, // check isNaN() and isFinite()
|
|
156
|
-
"functional": false, // validate function type
|
|
154
|
+
"transform": "typia/lib/transform"
|
|
157
155
|
}`) as Comment.CommentObject,
|
|
158
156
|
);
|
|
159
157
|
await fs.promises.writeFile(
|