typia 3.5.2 → 3.6.0-dev.20230219

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.
Files changed (132) hide show
  1. package/README.md +18 -2
  2. package/lib/executable/TypiaGenerateWizard.d.ts +8 -0
  3. package/lib/executable/TypiaGenerateWizard.js +182 -0
  4. package/lib/executable/TypiaGenerateWizard.js.map +1 -0
  5. package/lib/executable/TypiaSetupWizard.d.ts +8 -0
  6. package/lib/executable/TypiaSetupWizard.js +218 -0
  7. package/lib/executable/TypiaSetupWizard.js.map +1 -0
  8. package/lib/executable/setup/ArgumentParser.d.ts +7 -0
  9. package/lib/executable/setup/ArgumentParser.js +155 -0
  10. package/lib/executable/setup/ArgumentParser.js.map +1 -0
  11. package/lib/executable/{internal → setup}/CommandExecutor.d.ts +0 -0
  12. package/lib/executable/{internal → setup}/CommandExecutor.js +0 -0
  13. package/lib/executable/setup/CommandExecutor.js.map +1 -0
  14. package/lib/executable/{internal → setup}/PackageManager.d.ts +0 -0
  15. package/lib/executable/{internal → setup}/PackageManager.js +0 -0
  16. package/lib/executable/setup/PackageManager.js.map +1 -0
  17. package/lib/executable/setup/PluginConfigurator.d.ts +5 -0
  18. package/lib/executable/{internal → setup}/PluginConfigurator.js +1 -0
  19. package/lib/executable/setup/PluginConfigurator.js.map +1 -0
  20. package/lib/executable/typia.js +13 -56
  21. package/lib/executable/typia.js.map +1 -1
  22. package/lib/factories/IdentifierFactory.d.ts +1 -1
  23. package/lib/factories/IdentifierFactory.js +3 -3
  24. package/lib/factories/IdentifierFactory.js.map +1 -1
  25. package/lib/factories/TypeFactory.d.ts +1 -0
  26. package/lib/factories/TypeFactory.js +15 -0
  27. package/lib/factories/TypeFactory.js.map +1 -1
  28. package/lib/generate/TypiaGenerator.d.ts +8 -0
  29. package/lib/generate/TypiaGenerator.js +211 -0
  30. package/lib/generate/TypiaGenerator.js.map +1 -0
  31. package/lib/module.d.ts +14 -8
  32. package/lib/module.js +2 -1
  33. package/lib/module.js.map +1 -1
  34. package/lib/programmers/AssertCloneProgrammer.js +8 -2
  35. package/lib/programmers/AssertCloneProgrammer.js.map +1 -1
  36. package/lib/programmers/AssertParseProgrammer.js +7 -1
  37. package/lib/programmers/AssertParseProgrammer.js.map +1 -1
  38. package/lib/programmers/AssertProgrammer.js +6 -2
  39. package/lib/programmers/AssertProgrammer.js.map +1 -1
  40. package/lib/programmers/AssertPruneProgrammer.js +5 -1
  41. package/lib/programmers/AssertPruneProgrammer.js.map +1 -1
  42. package/lib/programmers/AssertStringifyProgrammer.js +5 -1
  43. package/lib/programmers/AssertStringifyProgrammer.js.map +1 -1
  44. package/lib/programmers/CheckerProgrammer.js +8 -1
  45. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  46. package/lib/programmers/CloneProgrammer.js +13 -0
  47. package/lib/programmers/CloneProgrammer.js.map +1 -1
  48. package/lib/programmers/FeatureProgrammer.d.ts +6 -1
  49. package/lib/programmers/FeatureProgrammer.js +35 -26
  50. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  51. package/lib/programmers/IsCloneProgrammer.js +10 -1
  52. package/lib/programmers/IsCloneProgrammer.js.map +1 -1
  53. package/lib/programmers/IsParseProgrammer.js +8 -2
  54. package/lib/programmers/IsParseProgrammer.js.map +1 -1
  55. package/lib/programmers/IsProgrammer.js +1 -1
  56. package/lib/programmers/IsProgrammer.js.map +1 -1
  57. package/lib/programmers/IsPruneProgrammer.js +5 -1
  58. package/lib/programmers/IsPruneProgrammer.js.map +1 -1
  59. package/lib/programmers/IsStringifyProgrammer.js +8 -1
  60. package/lib/programmers/IsStringifyProgrammer.js.map +1 -1
  61. package/lib/programmers/PruneProgrammer.js +8 -0
  62. package/lib/programmers/PruneProgrammer.js.map +1 -1
  63. package/lib/programmers/RandomProgrammer.js +4 -3
  64. package/lib/programmers/RandomProgrammer.js.map +1 -1
  65. package/lib/programmers/StringifyProgrammer.js +9 -1
  66. package/lib/programmers/StringifyProgrammer.js.map +1 -1
  67. package/lib/programmers/ValidateCloneProgrammer.js +10 -2
  68. package/lib/programmers/ValidateCloneProgrammer.js.map +1 -1
  69. package/lib/programmers/ValidateParseProgrammer.js +9 -1
  70. package/lib/programmers/ValidateParseProgrammer.js.map +1 -1
  71. package/lib/programmers/ValidateProgrammer.js +12 -4
  72. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  73. package/lib/programmers/ValidatePruneProgrammer.js +7 -1
  74. package/lib/programmers/ValidatePruneProgrammer.js.map +1 -1
  75. package/lib/programmers/ValidateStringifyProgrammer.js +8 -2
  76. package/lib/programmers/ValidateStringifyProgrammer.js.map +1 -1
  77. package/lib/programmers/helpers/FunctionImporeter.js +2 -1
  78. package/lib/programmers/helpers/FunctionImporeter.js.map +1 -1
  79. package/lib/programmers/internal/check_everything.js +4 -1
  80. package/lib/programmers/internal/check_everything.js.map +1 -1
  81. package/lib/programmers/internal/check_union_array_like.js +4 -1
  82. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  83. package/lib/programmers/internal/feature_object_entries.d.ts +2 -1
  84. package/lib/programmers/internal/feature_object_entries.js +28 -23
  85. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  86. package/lib/transformers/CallExpressionTransformer.js +4 -1
  87. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  88. package/package.json +1 -1
  89. package/src/executable/TypiaGenerateWizard.ts +86 -0
  90. package/src/executable/{internal/ArgumentParser.ts → TypiaSetupWizard.ts} +58 -59
  91. package/src/executable/setup/ArgumentParser.ts +89 -0
  92. package/src/executable/{internal → setup}/CommandExecutor.ts +0 -0
  93. package/src/executable/{internal → setup}/PackageManager.ts +0 -0
  94. package/src/executable/{internal → setup}/PluginConfigurator.ts +4 -3
  95. package/src/executable/typia.ts +15 -46
  96. package/src/factories/IdentifierFactory.ts +3 -2
  97. package/src/factories/TypeFactory.ts +28 -0
  98. package/src/generate/TypiaGenerator.ts +126 -0
  99. package/src/module.ts +23 -11
  100. package/src/programmers/AssertCloneProgrammer.ts +22 -3
  101. package/src/programmers/AssertParseProgrammer.ts +14 -2
  102. package/src/programmers/AssertProgrammer.ts +15 -213
  103. package/src/programmers/AssertPruneProgrammer.ts +9 -2
  104. package/src/programmers/AssertStringifyProgrammer.ts +12 -2
  105. package/src/programmers/CheckerProgrammer.ts +15 -2
  106. package/src/programmers/CloneProgrammer.ts +14 -0
  107. package/src/programmers/FeatureProgrammer.ts +64 -26
  108. package/src/programmers/IsCloneProgrammer.ts +17 -2
  109. package/src/programmers/IsParseProgrammer.ts +18 -3
  110. package/src/programmers/IsProgrammer.ts +3 -1
  111. package/src/programmers/IsPruneProgrammer.ts +16 -2
  112. package/src/programmers/IsStringifyProgrammer.ts +15 -2
  113. package/src/programmers/PruneProgrammer.ts +7 -0
  114. package/src/programmers/RandomProgrammer.ts +15 -1
  115. package/src/programmers/StringifyProgrammer.ts +8 -1
  116. package/src/programmers/ValidateCloneProgrammer.ts +23 -6
  117. package/src/programmers/ValidateParseProgrammer.ts +16 -2
  118. package/src/programmers/ValidateProgrammer.ts +44 -5
  119. package/src/programmers/ValidatePruneProgrammer.ts +14 -2
  120. package/src/programmers/ValidateStringifyProgrammer.ts +21 -6
  121. package/src/programmers/helpers/FunctionImporeter.ts +10 -1
  122. package/src/programmers/internal/check_everything.ts +8 -5
  123. package/src/programmers/internal/check_union_array_like.ts +7 -1
  124. package/src/programmers/internal/feature_object_entries.ts +6 -1
  125. package/src/transformers/CallExpressionTransformer.ts +8 -1
  126. package/lib/executable/internal/ArgumentParser.d.ts +0 -9
  127. package/lib/executable/internal/ArgumentParser.js +0 -265
  128. package/lib/executable/internal/ArgumentParser.js.map +0 -1
  129. package/lib/executable/internal/CommandExecutor.js.map +0 -1
  130. package/lib/executable/internal/PackageManager.js.map +0 -1
  131. package/lib/executable/internal/PluginConfigurator.d.ts +0 -5
  132. package/lib/executable/internal/PluginConfigurator.js.map +0 -1
package/README.md CHANGED
@@ -25,7 +25,7 @@ export function assertStringify<T>(input: T): string; // safe and faster
25
25
 
26
26
  // MISC
27
27
  export function random<T>(): Primitive<T>; // generate random data
28
- export function clone<T>(input: T): Primitive<T>; // hard copy
28
+ export function clone<T>(input: T): Primitive<T>; // deep clone
29
29
  export function prune<T extends object>(input: T): void; // erase extra props
30
30
  // +) isClone, assertClone, validateClone
31
31
  // +) isPrune, assertPrune, validatePrune
@@ -67,7 +67,7 @@ npx typia setup
67
67
 
68
68
  Just type `npx typia setup`, that's all.
69
69
 
70
- If you've installed [ttypescript](https://github.com/cevek/ttypescript) build during setup, you have to compile `typia` utilization code through `ttsc` command instead of `tsc`. Otherwise, you've chosen [ts-patch](https://github.com/nonara/ts-patch), you can use original `tsc` command.
70
+ If you've installed [ttypescript](https://github.com/cevek/ttypescript) during setup, you should compile `typia` utilization code through `ttsc` command, instead of `tsc`.
71
71
 
72
72
  ```bash
73
73
  # COMPILE THROUGH TTYPESCRIPT
@@ -77,6 +77,20 @@ npx ttsc
77
77
  npx ts-node -C ttypescript src/index.ts
78
78
  ```
79
79
 
80
+ Otherwise, you've chosen [ts-patch](https://github.com/nonara/ts-patch), you can use original `tsc` command. However, [ts-patch](https://github.com/nonara/ts-patch) hacks `node_modules/typescript` source code. Also, whenever update `typescript` version, you've to run `npm run prepare` command repeatedly.
81
+
82
+ By the way, when using `@nest/cli`, you must just choose [ts-patch](https://github.com/nonara/ts-patch)
83
+
84
+ ```bash
85
+ # USE ORIGINAL TSC COMMAND
86
+ tsc
87
+ npx ts-node src/index.ts
88
+
89
+ # WHENVER UPDATE
90
+ npm install --save-dev typescript@latest
91
+ npm run prepare
92
+ ```
93
+
80
94
  ### Manual Setup
81
95
  If you want to install and setup `typia` manually, read [Guide Documents - Setup](https://github.com/samchon/typia/wiki/Setup).
82
96
 
@@ -219,6 +233,8 @@ export function createAssertStringify<T>(): (input: T) => string;
219
233
  export function random<T>(): Primitive<T>; // random data generator
220
234
  export function clone<T>(input: T): Primitive<T>; // deep copy
221
235
  export function prune<T>(input: T): void; // remove superfluous properties
236
+ // +) isClone, assertClone, validateClone
237
+ // +) isPrune, assertPrune, validatePrune
222
238
  ```
223
239
 
224
240
  When you need test data, just generate it through `typia.random<T>()`.
@@ -0,0 +1,8 @@
1
+ export declare namespace TypiaGenerateWizard {
2
+ function generate(): Promise<void>;
3
+ interface IArguments {
4
+ input: string;
5
+ output: string;
6
+ project: string;
7
+ }
8
+ }
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.TypiaGenerateWizard = void 0;
43
+ var fs_1 = __importDefault(require("fs"));
44
+ var TypiaGenerator_1 = require("../generate/TypiaGenerator");
45
+ var ArgumentParser_1 = require("./setup/ArgumentParser");
46
+ var PackageManager_1 = require("./setup/PackageManager");
47
+ var TypiaGenerateWizard;
48
+ (function (TypiaGenerateWizard) {
49
+ var _this = this;
50
+ function generate() {
51
+ return __awaiter(this, void 0, void 0, function () {
52
+ var pack, options;
53
+ return __generator(this, function (_a) {
54
+ switch (_a.label) {
55
+ case 0:
56
+ console.log("----------------------------------------");
57
+ console.log(" Typia Generate Wizard");
58
+ console.log("----------------------------------------");
59
+ return [4, PackageManager_1.PackageManager.mount()];
60
+ case 1:
61
+ pack = _a.sent();
62
+ return [4, ArgumentParser_1.ArgumentParser.parse(pack)(false)(inquiry)];
63
+ case 2:
64
+ options = _a.sent();
65
+ return [4, TypiaGenerator_1.TypiaGenerator.generate(options)];
66
+ case 3:
67
+ _a.sent();
68
+ return [2];
69
+ }
70
+ });
71
+ });
72
+ }
73
+ TypiaGenerateWizard.generate = generate;
74
+ var inquiry = function (_pack, command, prompt, action) { return __awaiter(_this, void 0, void 0, function () {
75
+ var questioned, input, select, configure;
76
+ var _this = this;
77
+ return __generator(this, function (_a) {
78
+ command.option("--input <path>", "input directory");
79
+ command.option("--output <directory>", "output directory");
80
+ command.option("--project [project]", "tsconfig.json file location");
81
+ questioned = { value: false };
82
+ input = function (name) { return function (message) { return __awaiter(_this, void 0, void 0, function () {
83
+ var result;
84
+ return __generator(this, function (_a) {
85
+ switch (_a.label) {
86
+ case 0: return [4, prompt()({
87
+ type: "input",
88
+ name: name,
89
+ message: message,
90
+ default: "",
91
+ })];
92
+ case 1:
93
+ result = _a.sent();
94
+ return [2, result[name]];
95
+ }
96
+ });
97
+ }); }; };
98
+ select = function (name) {
99
+ return function (message) {
100
+ return function (choices) { return __awaiter(_this, void 0, void 0, function () {
101
+ return __generator(this, function (_a) {
102
+ switch (_a.label) {
103
+ case 0:
104
+ questioned.value = true;
105
+ return [4, prompt()({
106
+ type: "list",
107
+ name: name,
108
+ message: message,
109
+ choices: choices,
110
+ })];
111
+ case 1: return [2, (_a.sent())[name]];
112
+ }
113
+ });
114
+ }); };
115
+ };
116
+ };
117
+ configure = function () { return __awaiter(_this, void 0, void 0, function () {
118
+ var fileList;
119
+ return __generator(this, function (_a) {
120
+ switch (_a.label) {
121
+ case 0: return [4, fs_1.default.promises.readdir(process.cwd())];
122
+ case 1: return [4, (_a.sent()).filter(function (str) {
123
+ return str.substring(0, 8) === "tsconfig" &&
124
+ str.substring(str.length - 5) === ".json";
125
+ })];
126
+ case 2:
127
+ fileList = _a.sent();
128
+ if (fileList.length === 0)
129
+ throw new Error("Unable to find \"tsconfig.json\" file.");
130
+ else if (fileList.length === 1)
131
+ return [2, fileList[0]];
132
+ return [2, select("tsconfig")("TS Config File")(fileList)];
133
+ }
134
+ });
135
+ }); };
136
+ return [2, action(function (options) { return __awaiter(_this, void 0, void 0, function () {
137
+ var _a, _b, _c, _d, _e, _f;
138
+ var _g, _h, _j;
139
+ return __generator(this, function (_k) {
140
+ switch (_k.label) {
141
+ case 0:
142
+ if (!((_g = options.input) !== null && _g !== void 0)) return [3, 1];
143
+ _a = _g;
144
+ return [3, 3];
145
+ case 1:
146
+ _b = options;
147
+ return [4, input("input")("input directory")];
148
+ case 2:
149
+ _a = (_b.input = _k.sent());
150
+ _k.label = 3;
151
+ case 3:
152
+ _a;
153
+ if (!((_h = options.output) !== null && _h !== void 0)) return [3, 4];
154
+ _c = _h;
155
+ return [3, 6];
156
+ case 4:
157
+ _d = options;
158
+ return [4, input("output")("output directory")];
159
+ case 5:
160
+ _c = (_d.output = _k.sent());
161
+ _k.label = 6;
162
+ case 6:
163
+ _c;
164
+ if (!((_j = options.project) !== null && _j !== void 0)) return [3, 7];
165
+ _e = _j;
166
+ return [3, 9];
167
+ case 7:
168
+ _f = options;
169
+ return [4, configure()];
170
+ case 8:
171
+ _e = (_f.project = _k.sent());
172
+ _k.label = 9;
173
+ case 9:
174
+ _e;
175
+ return [2, options];
176
+ }
177
+ });
178
+ }); })];
179
+ });
180
+ }); };
181
+ })(TypiaGenerateWizard = exports.TypiaGenerateWizard || (exports.TypiaGenerateWizard = {}));
182
+ //# sourceMappingURL=TypiaGenerateWizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypiaGenerateWizard.js","sourceRoot":"","sources":["../../src/executable/TypiaGenerateWizard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare namespace TypiaSetupWizard {
2
+ interface IArguments {
3
+ compiler: "ts-patch" | "ttypescript";
4
+ manager: "npm" | "pnpm" | "yarn";
5
+ project: string | null;
6
+ }
7
+ function setup(): Promise<void>;
8
+ }
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.TypiaSetupWizard = void 0;
43
+ var fs_1 = __importDefault(require("fs"));
44
+ var path_1 = __importDefault(require("path"));
45
+ var ArgumentParser_1 = require("./setup/ArgumentParser");
46
+ var CommandExecutor_1 = require("./setup/CommandExecutor");
47
+ var PackageManager_1 = require("./setup/PackageManager");
48
+ var PluginConfigurator_1 = require("./setup/PluginConfigurator");
49
+ var TypiaSetupWizard;
50
+ (function (TypiaSetupWizard) {
51
+ var _this = this;
52
+ function setup() {
53
+ var _a;
54
+ return __awaiter(this, void 0, void 0, function () {
55
+ var pack, args;
56
+ return __generator(this, function (_b) {
57
+ switch (_b.label) {
58
+ case 0:
59
+ console.log("----------------------------------------");
60
+ console.log(" Typia Setup Wizard");
61
+ console.log("----------------------------------------");
62
+ return [4, PackageManager_1.PackageManager.mount()];
63
+ case 1:
64
+ pack = _b.sent();
65
+ return [4, ArgumentParser_1.ArgumentParser.parse(pack)(true)(inquiry)];
66
+ case 2:
67
+ args = _b.sent();
68
+ pack.install({ dev: true, modulo: "typescript" });
69
+ (_a = args.project) !== null && _a !== void 0 ? _a : (args.project = (function () {
70
+ CommandExecutor_1.CommandExecutor.run("npx tsc --init", false);
71
+ return (args.project = "tsconfig.json");
72
+ })());
73
+ pack.install({ dev: true, modulo: "ts-node" });
74
+ pack.install({ dev: true, modulo: args.compiler });
75
+ if (!(args.compiler === "ts-patch")) return [3, 4];
76
+ return [4, pack.save(function (data) {
77
+ var _a;
78
+ (_a = data.scripts) !== null && _a !== void 0 ? _a : (data.scripts = {});
79
+ if (typeof data.scripts.prepare === "string" &&
80
+ data.scripts.prepare.indexOf("ts-patch install") === -1)
81
+ data.scripts.prepare =
82
+ "ts-patch install && " + data.scripts.prepare;
83
+ else
84
+ data.scripts.prepare = "ts-patch install";
85
+ })];
86
+ case 3:
87
+ _b.sent();
88
+ CommandExecutor_1.CommandExecutor.run("npm run prepare", false);
89
+ _b.label = 4;
90
+ case 4:
91
+ pack.install({ dev: false, modulo: "typia" });
92
+ return [4, PluginConfigurator_1.PluginConfigurator.configure(pack, args)];
93
+ case 5:
94
+ _b.sent();
95
+ return [2];
96
+ }
97
+ });
98
+ });
99
+ }
100
+ TypiaSetupWizard.setup = setup;
101
+ var inquiry = function (pack, command, prompt, action) { return __awaiter(_this, void 0, void 0, function () {
102
+ var questioned, select, configure;
103
+ var _this = this;
104
+ return __generator(this, function (_a) {
105
+ command.option("--compiler [compiler]", "compiler type");
106
+ command.option("--manager [manager", "package manager");
107
+ command.option("--project [project]", "tsconfig.json file location");
108
+ questioned = { value: false };
109
+ select = function (name) {
110
+ return function (message) {
111
+ return function (choices) { return __awaiter(_this, void 0, void 0, function () {
112
+ return __generator(this, function (_a) {
113
+ switch (_a.label) {
114
+ case 0:
115
+ questioned.value = true;
116
+ return [4, prompt()({
117
+ type: "list",
118
+ name: name,
119
+ message: message,
120
+ choices: choices,
121
+ })];
122
+ case 1: return [2, (_a.sent())[name]];
123
+ }
124
+ });
125
+ }); };
126
+ };
127
+ };
128
+ configure = function () { return __awaiter(_this, void 0, void 0, function () {
129
+ var fileList;
130
+ return __generator(this, function (_a) {
131
+ switch (_a.label) {
132
+ case 0: return [4, fs_1.default.promises.readdir(process.cwd())];
133
+ case 1: return [4, (_a.sent()).filter(function (str) {
134
+ return str.substring(0, 8) === "tsconfig" &&
135
+ str.substring(str.length - 5) === ".json";
136
+ })];
137
+ case 2:
138
+ fileList = _a.sent();
139
+ if (fileList.length === 0) {
140
+ if (process.cwd() !== pack.directory)
141
+ throw new Error("Unable to find \"tsconfig.json\" file.");
142
+ return [2, null];
143
+ }
144
+ else if (fileList.length === 1)
145
+ return [2, fileList[0]];
146
+ return [2, select("tsconfig")("TS Config File")(fileList)];
147
+ }
148
+ });
149
+ }); };
150
+ return [2, action(function (options) { return __awaiter(_this, void 0, void 0, function () {
151
+ var _a, _b, _c, _d, _e;
152
+ var _f, _g;
153
+ return __generator(this, function (_h) {
154
+ switch (_h.label) {
155
+ case 0:
156
+ if (!(options.compiler === undefined)) return [3, 2];
157
+ console.log(COMPILER_DESCRIPTION);
158
+ _a = options;
159
+ return [4, select("compiler")("Compiler")(is_nest_cli(pack)
160
+ ? ["ts-patch", "ttypescript"]
161
+ : ["ttypescript", "ts-patch"])];
162
+ case 1:
163
+ _a.compiler = _h.sent();
164
+ _h.label = 2;
165
+ case 2:
166
+ if (!((_f = options.manager) !== null && _f !== void 0)) return [3, 3];
167
+ _b = _f;
168
+ return [3, 5];
169
+ case 3:
170
+ _c = options;
171
+ return [4, select("manager")("Package Manager")([
172
+ "npm",
173
+ "pnpm",
174
+ "yarn",
175
+ ])];
176
+ case 4:
177
+ _b = (_c.manager = _h.sent());
178
+ _h.label = 5;
179
+ case 5:
180
+ _b;
181
+ pack.manager = options.manager;
182
+ if (!((_g = options.project) !== null && _g !== void 0)) return [3, 6];
183
+ _d = _g;
184
+ return [3, 8];
185
+ case 6:
186
+ _e = options;
187
+ return [4, configure()];
188
+ case 7:
189
+ _d = (_e.project = _h.sent());
190
+ _h.label = 8;
191
+ case 8:
192
+ _d;
193
+ if (questioned.value)
194
+ console.log("");
195
+ return [2, options];
196
+ }
197
+ });
198
+ }); })];
199
+ });
200
+ }); };
201
+ function is_nest_cli(pack) {
202
+ var _a;
203
+ return ((typeof ((_a = pack.data.scripts) === null || _a === void 0 ? void 0 : _a.build) === "string" &&
204
+ pack.data.scripts.build.indexOf("nest build") !== -1) ||
205
+ fs_1.default.existsSync(path_1.default.join(pack.directory, "nest-cli.json")));
206
+ }
207
+ })(TypiaSetupWizard = exports.TypiaSetupWizard || (exports.TypiaSetupWizard = {}));
208
+ var COMPILER_DESCRIPTION = [
209
+ "About compiler, if you adapt \"ttypescript\", you should use \"ttsc\" instead.",
210
+ "",
211
+ "Otherwise, you choose \"ts-patch\", you can use the original \"tsc\" command.",
212
+ "However, the \"ts-patch\" hacks \"node_modules/typescript\" source code.",
213
+ "Also, whenever update \"typescript\", you've to run \"npm run prepare\" command.",
214
+ "",
215
+ "By the way, when using \"@nest/cli\", you must just choose \"ts-patch\".",
216
+ "",
217
+ ].join("\n");
218
+ //# sourceMappingURL=TypiaSetupWizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypiaSetupWizard.js","sourceRoot":"","sources":["../../src/executable/TypiaSetupWizard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type CommanderModule from "commander";
2
+ import type * as InquirerModule from "inquirer";
3
+ import { PackageManager } from "./PackageManager";
4
+ export declare namespace ArgumentParser {
5
+ type Inquiry<T> = (pack: PackageManager, command: CommanderModule.Command, prompt: (opt?: InquirerModule.StreamOptions) => InquirerModule.PromptModule, action: (closure: (options: Partial<T>) => Promise<T>) => Promise<T>) => Promise<T>;
6
+ const parse: (pack: PackageManager) => (erase: boolean) => <T>(inquiry: (pack: PackageManager, command: CommanderModule.Command, prompt: (opt?: InquirerModule.StreamOptions) => InquirerModule.PromptModule, action: (closure: (options: Partial<T>) => Promise<T>) => Promise<T>) => Promise<T>) => Promise<T>;
7
+ }
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __generator = (this && this.__generator) || function (thisArg, body) {
35
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
36
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
37
+ function verb(n) { return function (v) { return step([n, v]); }; }
38
+ function step(op) {
39
+ if (f) throw new TypeError("Generator is already executing.");
40
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
41
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
42
+ if (y = 0, t) op = [op[0] & 2, t.value];
43
+ switch (op[0]) {
44
+ case 0: case 1: t = op; break;
45
+ case 4: _.label++; return { value: op[1], done: false };
46
+ case 5: _.label++; y = op[1]; op = [0]; continue;
47
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
48
+ default:
49
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
50
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
51
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
52
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
53
+ if (t[2]) _.ops.pop();
54
+ _.trys.pop(); continue;
55
+ }
56
+ op = body.call(thisArg, _);
57
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
58
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
59
+ }
60
+ };
61
+ var __importDefault = (this && this.__importDefault) || function (mod) {
62
+ return (mod && mod.__esModule) ? mod : { "default": mod };
63
+ };
64
+ Object.defineProperty(exports, "__esModule", { value: true });
65
+ exports.ArgumentParser = void 0;
66
+ var path_1 = __importDefault(require("path"));
67
+ var ArgumentParser;
68
+ (function (ArgumentParser) {
69
+ var _this = this;
70
+ ArgumentParser.parse = function (pack) {
71
+ return function (erase) {
72
+ return function (inquiry) { return __awaiter(_this, void 0, void 0, function () {
73
+ var newbie, command, prompt, action, output;
74
+ var _this = this;
75
+ return __generator(this, function (_a) {
76
+ var _b, _c;
77
+ switch (_a.label) {
78
+ case 0:
79
+ newbie = {
80
+ commander: pack.install({
81
+ dev: true,
82
+ modulo: "commander",
83
+ version: "10.0.0",
84
+ silent: true,
85
+ }),
86
+ inquirer: pack.install({
87
+ dev: true,
88
+ modulo: "inquirer",
89
+ version: "8.2.5",
90
+ silent: true,
91
+ }),
92
+ };
93
+ return [4, (_b = path_1.default.join(pack.directory, "node_modules", "commander"), Promise.resolve().then(function () { return __importStar(require(_b)); }))];
94
+ case 1:
95
+ command = (_a.sent()).program;
96
+ return [4, (_c = path_1.default.join(pack.directory, "node_modules", "inquirer"), Promise.resolve().then(function () { return __importStar(require(_c)); }))];
97
+ case 2:
98
+ prompt = (_a.sent()).createPromptModule;
99
+ action = function (closure) {
100
+ return new Promise(function (resolve, reject) {
101
+ command.action(function (options) { return __awaiter(_this, void 0, void 0, function () {
102
+ var _a, exp_1;
103
+ return __generator(this, function (_b) {
104
+ switch (_b.label) {
105
+ case 0:
106
+ _b.trys.push([0, 2, , 3]);
107
+ _a = resolve;
108
+ return [4, closure(options)];
109
+ case 1:
110
+ _a.apply(void 0, [_b.sent()]);
111
+ return [3, 3];
112
+ case 2:
113
+ exp_1 = _b.sent();
114
+ reject(exp_1);
115
+ return [3, 3];
116
+ case 3: return [2];
117
+ }
118
+ });
119
+ }); });
120
+ command.parseAsync().catch(reject);
121
+ });
122
+ };
123
+ return [4, (function () { return __awaiter(_this, void 0, void 0, function () {
124
+ var error_1;
125
+ return __generator(this, function (_a) {
126
+ switch (_a.label) {
127
+ case 0:
128
+ _a.trys.push([0, 2, , 3]);
129
+ return [4, inquiry(pack, command, prompt, action)];
130
+ case 1: return [2, _a.sent()];
131
+ case 2:
132
+ error_1 = _a.sent();
133
+ return [2, error_1];
134
+ case 3: return [2];
135
+ }
136
+ });
137
+ }); })()];
138
+ case 3:
139
+ output = _a.sent();
140
+ if (erase === true) {
141
+ if (newbie.commander)
142
+ pack.erase({ modulo: "commander", silent: true });
143
+ if (newbie.inquirer)
144
+ pack.erase({ modulo: "inquirer", silent: true });
145
+ }
146
+ if (output instanceof Error)
147
+ throw output;
148
+ return [2, output];
149
+ }
150
+ });
151
+ }); };
152
+ };
153
+ };
154
+ })(ArgumentParser = exports.ArgumentParser || (exports.ArgumentParser = {}));
155
+ //# sourceMappingURL=ArgumentParser.js.map