nestia 4.3.2 → 4.4.0-dev.20230807
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 +18 -6
- package/bin/NestiaSetupWizard.js +20 -8
- package/bin/NestiaSetupWizard.js.map +1 -1
- package/bin/internal/ArgumentParser.js +5 -4
- package/bin/internal/ArgumentParser.js.map +1 -1
- package/package.json +5 -5
- package/src/NestiaSetupWizard.ts +22 -8
- package/src/internal/ArgumentParser.ts +11 -6
package/README.md
CHANGED
|
@@ -11,21 +11,27 @@ 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
|
|
15
|
+
- SDK library generator for clients
|
|
16
|
+
- Mockup Simulator for client applications
|
|
16
17
|
- Automatic E2E test functions generator
|
|
18
|
+
- `@nestia/migrate`: migration from Swagger to NestJS
|
|
17
19
|
- `nestia`: just CLI (command line interface) tool
|
|
18
20
|
|
|
19
21
|
> **Note**
|
|
20
22
|
>
|
|
21
23
|
> - **Only one line** required, with pure TypeScript type
|
|
22
|
-
> -
|
|
23
|
-
>
|
|
24
|
-
>
|
|
24
|
+
> - Enhance performance **30x** up
|
|
25
|
+
> - Runtime validator is **20,000x faster** than `class-validator`
|
|
26
|
+
> - JSON serialization is **200x faster** than `class-transformer`
|
|
27
|
+
> - Software Development Kit
|
|
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
|
|
25
31
|
|
|
26
32
|

|
|
27
33
|
|
|
28
|
-
> 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
|
|
29
35
|
|
|
30
36
|
|
|
31
37
|
|
|
@@ -46,9 +52,9 @@ Check out the document in the [website](https://nestia.io/docs/):
|
|
|
46
52
|
### 🏠 Home
|
|
47
53
|
- [Introduction](https://nestia.io/docs/)
|
|
48
54
|
- [Setup](https://nestia.io/docs/setup/)
|
|
55
|
+
- [Pure TypeScript](https://nestia.io/docs/pure)
|
|
49
56
|
|
|
50
57
|
### 📖 Features
|
|
51
|
-
- [Pure TypeScript](https://nestia.io/docs/pure)
|
|
52
58
|
- Core Library
|
|
53
59
|
- [TypedRoute](https://nestia.io/docs/core/TypedRoute/)
|
|
54
60
|
- [TypedBody](https://nestia.io/docs/core/TypedBody/)
|
|
@@ -58,3 +64,9 @@ Check out the document in the [website](https://nestia.io/docs/):
|
|
|
58
64
|
- [Swagger Documents](https://nestia.io/docs/sdk/swagger/)
|
|
59
65
|
- [SDK Library](https://nestia.io/docs/sdk/sdk/)
|
|
60
66
|
- [E2E Functions](https://nestia.io/docs/sdk/e2e/)
|
|
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)
|
package/bin/NestiaSetupWizard.js
CHANGED
|
@@ -30,23 +30,35 @@ var NestiaSetupWizard;
|
|
|
30
30
|
pack.install({ dev: true, modulo: "ts-node", version: "latest" });
|
|
31
31
|
pack.install({ dev: true, modulo: "typescript", version: "latest" });
|
|
32
32
|
(_a = args.project) !== null && _a !== void 0 ? _a : (args.project = (() => {
|
|
33
|
-
|
|
33
|
+
const runner = pack.manager === "npm" ? "npx" : pack.manager;
|
|
34
|
+
CommandExecutor_1.CommandExecutor.run(`${runner} tsc --init`);
|
|
34
35
|
return (args.project = "tsconfig.json");
|
|
35
36
|
})());
|
|
36
37
|
// SETUP TRANSFORMER
|
|
37
38
|
yield pack.save((data) => {
|
|
38
39
|
var _a;
|
|
40
|
+
// COMPOSE POSTINSTALL COMMAND
|
|
39
41
|
(_a = data.scripts) !== null && _a !== void 0 ? _a : (data.scripts = {});
|
|
40
|
-
if (typeof data.scripts.
|
|
41
|
-
data.scripts.
|
|
42
|
-
if (data.scripts.
|
|
43
|
-
data.scripts.
|
|
44
|
-
"ts-patch install && " + data.scripts.
|
|
42
|
+
if (typeof data.scripts.postinstall === "string" &&
|
|
43
|
+
data.scripts.postinstall.trim().length) {
|
|
44
|
+
if (data.scripts.postinstall.indexOf("ts-patch install") === -1)
|
|
45
|
+
data.scripts.postinstall =
|
|
46
|
+
"ts-patch install && " + data.scripts.postinstall;
|
|
45
47
|
}
|
|
46
48
|
else
|
|
47
|
-
data.scripts.
|
|
49
|
+
data.scripts.postinstall = "ts-patch install";
|
|
50
|
+
// FOR OLDER VERSIONS
|
|
51
|
+
if (typeof data.scripts.prepare === "string") {
|
|
52
|
+
data.scripts.prepare = data.scripts.prepare
|
|
53
|
+
.split("&&")
|
|
54
|
+
.map((str) => str.trim())
|
|
55
|
+
.filter((str) => str.indexOf("ts-patch install") === -1)
|
|
56
|
+
.join(" && ");
|
|
57
|
+
if (data.scripts.prepare.length === 0)
|
|
58
|
+
delete data.scripts.prepare;
|
|
59
|
+
}
|
|
48
60
|
});
|
|
49
|
-
CommandExecutor_1.CommandExecutor.run(
|
|
61
|
+
CommandExecutor_1.CommandExecutor.run(`${pack.manager} run postinstall`);
|
|
50
62
|
// INSTALL AND CONFIGURE TYPIA + NESTIA
|
|
51
63
|
pack.install({ dev: false, modulo: "typia", version: "latest" });
|
|
52
64
|
pack.install({ dev: false, modulo: "@nestia/core", version: "latest" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NestiaSetupWizard.js","sourceRoot":"","sources":["../src/NestiaSetupWizard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8DAA2D;AAC3D,gEAA6D;AAC7D,8DAA2D;AAC3D,sEAAmE;AAEnE,IAAiB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"NestiaSetupWizard.js","sourceRoot":"","sources":["../src/NestiaSetupWizard.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ var ArgumentParser;
|
|
|
21
21
|
function parse(pack) {
|
|
22
22
|
return __awaiter(this, void 0, void 0, function* () {
|
|
23
23
|
// PREPARE ASSETS
|
|
24
|
-
commander_1.default.program.option("--manager [manager", "package manager");
|
|
24
|
+
commander_1.default.program.option("--manager [manager]", "package manager");
|
|
25
25
|
commander_1.default.program.option("--project [project]", "tsconfig.json file location");
|
|
26
26
|
// INTERNAL PROCEDURES
|
|
27
27
|
const questioned = { value: false };
|
|
@@ -38,13 +38,14 @@ var ArgumentParser;
|
|
|
38
38
|
commander_1.default.program.parseAsync().catch(reject);
|
|
39
39
|
});
|
|
40
40
|
};
|
|
41
|
-
const select = (name) => (message) => (choices) => __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
const select = (name) => (message) => (choices, filter) => __awaiter(this, void 0, void 0, function* () {
|
|
42
42
|
questioned.value = true;
|
|
43
43
|
return (yield inquirer_1.default.createPromptModule()({
|
|
44
44
|
type: "list",
|
|
45
45
|
name: name,
|
|
46
46
|
message: message,
|
|
47
47
|
choices: choices,
|
|
48
|
+
filter,
|
|
48
49
|
}))[name];
|
|
49
50
|
});
|
|
50
51
|
const configure = () => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -73,8 +74,8 @@ var ArgumentParser;
|
|
|
73
74
|
(_a = options.manager) !== null && _a !== void 0 ? _a : (options.manager = yield select("manager")("Package Manager")([
|
|
74
75
|
"npm",
|
|
75
76
|
"pnpm",
|
|
76
|
-
"yarn",
|
|
77
|
-
]));
|
|
77
|
+
"yarn (berry is not supported)",
|
|
78
|
+
], (value) => value.split(" ")[0]));
|
|
78
79
|
pack.manager = options.manager;
|
|
79
80
|
(_b = options.project) !== null && _b !== void 0 ? _b : (options.project = yield configure());
|
|
80
81
|
if (questioned.value)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArgumentParser.js","sourceRoot":"","sources":["../../src/internal/ArgumentParser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0DAAkC;AAClC,4CAAoB;AACpB,wDAAgC;AAIhC,IAAiB,cAAc,
|
|
1
|
+
{"version":3,"file":"ArgumentParser.js","sourceRoot":"","sources":["../../src/internal/ArgumentParser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0DAAkC;AAClC,4CAAoB;AACpB,wDAAgC;AAIhC,IAAiB,cAAc,CA2F9B;AA3FD,WAAiB,cAAc;IAM3B,SAAsB,KAAK,CAAC,IAAoB;;YAC5C,iBAAiB;YACjB,mBAAS,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;YACnE,mBAAS,CAAC,OAAO,CAAC,MAAM,CACpB,qBAAqB,EACrB,6BAA6B,CAChC,CAAC;YAEF,sBAAsB;YACtB,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,CACX,OAA8D,EAChE,EAAE;gBACA,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC/C,mBAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAO,OAAO,EAAE,EAAE;wBACvC,IAAI;4BACA,OAAO,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;yBACnC;wBAAC,OAAO,GAAG,EAAE;4BACV,MAAM,CAAC,GAAG,CAAC,CAAC;yBACf;oBACL,CAAC,CAAA,CAAC,CAAC;oBACH,mBAAS,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YACF,MAAM,MAAM,GACR,CAAC,IAAY,EAAE,EAAE,CACjB,CAAC,OAAe,EAAE,EAAE,CACpB,CACI,OAAiB,EACjB,MAAkC,EACnB,EAAE;gBACjB,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;gBACxB,OAAO,CACH,MAAM,kBAAQ,CAAC,kBAAkB,EAAE,CAAC;oBAChC,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI;oBACV,OAAO,EAAE,OAAO;oBAChB,OAAO,EAAE,OAAO;oBAChB,MAAM;iBACT,CAAC,CACL,CAAC,IAAI,CAAC,CAAC;YACZ,CAAC,CAAA,CAAC;YACN,MAAM,SAAS,GAAG,GAAS,EAAE;gBACzB,MAAM,QAAQ,GAAa,MAAM,CAC7B,MAAM,YAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAC3C;qBACI,MAAM,CACH,CAAC,GAAG,EAAE,EAAE,CACJ,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU;oBAClC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,OAAO,CAChD;qBACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACX,CAAC,KAAK,eAAe;oBACjB,CAAC,CAAC,CAAC,CAAC;oBACJ,CAAC,CAAC,CAAC,KAAK,eAAe;wBACvB,CAAC,CAAC,CAAC;wBACH,CAAC,CAAC,CAAC,GAAG,CAAC;4BACP,CAAC,CAAC,CAAC,CAAC;4BACJ,CAAC,CAAC,CAAC,CACV,CAAC;gBACN,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;oBACvB,IAAI,OAAO,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,SAAS;wBAChC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;oBAC5D,OAAO,IAAI,CAAC;iBACf;qBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACrD,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC1D,CAAC,CAAA,CAAC;YAEF,eAAe;YACf,OAAO,MAAM,CAAC,CAAO,OAAO,EAAE,EAAE;;gBAC5B,MAAA,OAAO,CAAC,OAAO,oCAAf,OAAO,CAAC,OAAO,GAAK,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAC1D;oBACI,KAAc;oBACd,MAAe;oBACf,+BAAyC;iBAC5C,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAW,CAC3C,EAAC;gBACF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;gBAC/B,MAAA,OAAO,CAAC,OAAO,oCAAf,OAAO,CAAC,OAAO,GAAK,MAAM,SAAS,EAAE,EAAC;gBAEtC,IAAI,UAAU,CAAC,KAAK;oBAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACtC,OAAO,OAAqB,CAAC;YACjC,CAAC,CAAA,CAAC,CAAC;QACP,CAAC;KAAA;IApFqB,oBAAK,QAoF1B,CAAA;AACL,CAAC,EA3FgB,cAAc,8BAAd,cAAc,QA2F9B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nestia",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.0-dev.20230807",
|
|
4
4
|
"description": "Nestia CLI tool",
|
|
5
5
|
"main": "bin/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"scripts": {
|
|
10
10
|
"build": "rimraf bin && tsc",
|
|
11
11
|
"prettier": "prettier ./src/**/*.ts --write",
|
|
12
|
-
"package:next": "npm publish --access public --tag next"
|
|
12
|
+
"package:next": "npm run build && npm publish --access public --tag next"
|
|
13
13
|
},
|
|
14
14
|
"repository": {
|
|
15
15
|
"type": "git",
|
|
@@ -36,14 +36,14 @@
|
|
|
36
36
|
"inquirer": "^8.2.5"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@nestia/core": "^1.
|
|
40
|
-
"@nestia/sdk": "^1.
|
|
39
|
+
"@nestia/core": "^1.6.1",
|
|
40
|
+
"@nestia/sdk": "^1.6.1",
|
|
41
41
|
"@trivago/prettier-plugin-sort-imports": "^4.1.1",
|
|
42
42
|
"@types/inquirer": "^9.0.3",
|
|
43
43
|
"@types/node": "^18.11.16",
|
|
44
44
|
"prettier": "^2.8.7",
|
|
45
45
|
"rimraf": "^3.0.2",
|
|
46
|
-
"typescript": "^5.1.
|
|
46
|
+
"typescript": "^5.1.6"
|
|
47
47
|
},
|
|
48
48
|
"files": [
|
|
49
49
|
"bin",
|
package/src/NestiaSetupWizard.ts
CHANGED
|
@@ -20,23 +20,37 @@ export namespace NestiaSetupWizard {
|
|
|
20
20
|
pack.install({ dev: true, modulo: "ts-node", version: "latest" });
|
|
21
21
|
pack.install({ dev: true, modulo: "typescript", version: "latest" });
|
|
22
22
|
args.project ??= (() => {
|
|
23
|
-
|
|
23
|
+
const runner: string =
|
|
24
|
+
pack.manager === "npm" ? "npx" : pack.manager;
|
|
25
|
+
CommandExecutor.run(`${runner} tsc --init`);
|
|
24
26
|
return (args.project = "tsconfig.json");
|
|
25
27
|
})();
|
|
26
28
|
|
|
27
29
|
// SETUP TRANSFORMER
|
|
28
30
|
await pack.save((data) => {
|
|
31
|
+
// COMPOSE POSTINSTALL COMMAND
|
|
29
32
|
data.scripts ??= {};
|
|
30
33
|
if (
|
|
31
|
-
typeof data.scripts.
|
|
32
|
-
data.scripts.
|
|
34
|
+
typeof data.scripts.postinstall === "string" &&
|
|
35
|
+
data.scripts.postinstall.trim().length
|
|
33
36
|
) {
|
|
34
|
-
if (data.scripts.
|
|
35
|
-
data.scripts.
|
|
36
|
-
"ts-patch install && " + data.scripts.
|
|
37
|
-
} else data.scripts.
|
|
37
|
+
if (data.scripts.postinstall.indexOf("ts-patch install") === -1)
|
|
38
|
+
data.scripts.postinstall =
|
|
39
|
+
"ts-patch install && " + data.scripts.postinstall;
|
|
40
|
+
} else data.scripts.postinstall = "ts-patch install";
|
|
41
|
+
|
|
42
|
+
// FOR OLDER VERSIONS
|
|
43
|
+
if (typeof data.scripts.prepare === "string") {
|
|
44
|
+
data.scripts.prepare = data.scripts.prepare
|
|
45
|
+
.split("&&")
|
|
46
|
+
.map((str) => str.trim())
|
|
47
|
+
.filter((str) => str.indexOf("ts-patch install") === -1)
|
|
48
|
+
.join(" && ");
|
|
49
|
+
if (data.scripts.prepare.length === 0)
|
|
50
|
+
delete data.scripts.prepare;
|
|
51
|
+
}
|
|
38
52
|
});
|
|
39
|
-
CommandExecutor.run(
|
|
53
|
+
CommandExecutor.run(`${pack.manager} run postinstall`);
|
|
40
54
|
|
|
41
55
|
// INSTALL AND CONFIGURE TYPIA + NESTIA
|
|
42
56
|
pack.install({ dev: false, modulo: "typia", version: "latest" });
|
|
@@ -12,7 +12,7 @@ export namespace ArgumentParser {
|
|
|
12
12
|
|
|
13
13
|
export async function parse(pack: PackageManager): Promise<IArguments> {
|
|
14
14
|
// PREPARE ASSETS
|
|
15
|
-
commander.program.option("--manager [manager", "package manager");
|
|
15
|
+
commander.program.option("--manager [manager]", "package manager");
|
|
16
16
|
commander.program.option(
|
|
17
17
|
"--project [project]",
|
|
18
18
|
"tsconfig.json file location",
|
|
@@ -39,6 +39,7 @@ export namespace ArgumentParser {
|
|
|
39
39
|
(message: string) =>
|
|
40
40
|
async <Choice extends string>(
|
|
41
41
|
choices: Choice[],
|
|
42
|
+
filter?: (value: string) => Choice,
|
|
42
43
|
): Promise<Choice> => {
|
|
43
44
|
questioned.value = true;
|
|
44
45
|
return (
|
|
@@ -47,6 +48,7 @@ export namespace ArgumentParser {
|
|
|
47
48
|
name: name,
|
|
48
49
|
message: message,
|
|
49
50
|
choices: choices,
|
|
51
|
+
filter,
|
|
50
52
|
})
|
|
51
53
|
)[name];
|
|
52
54
|
};
|
|
@@ -78,11 +80,14 @@ export namespace ArgumentParser {
|
|
|
78
80
|
|
|
79
81
|
// DO CONSTRUCT
|
|
80
82
|
return action(async (options) => {
|
|
81
|
-
options.manager ??= await select("manager")("Package Manager")(
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
83
|
+
options.manager ??= await select("manager")("Package Manager")(
|
|
84
|
+
[
|
|
85
|
+
"npm" as const,
|
|
86
|
+
"pnpm" as const,
|
|
87
|
+
"yarn (berry is not supported)" as "yarn",
|
|
88
|
+
],
|
|
89
|
+
(value) => value.split(" ")[0] as "yarn",
|
|
90
|
+
);
|
|
86
91
|
pack.manager = options.manager;
|
|
87
92
|
options.project ??= await configure();
|
|
88
93
|
|