typia 3.5.0 → 3.5.1-dev.20220216

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 (33) hide show
  1. package/README.md +13 -21
  2. package/lib/executable/internal/ArgumentParser.d.ts +9 -0
  3. package/lib/executable/internal/ArgumentParser.js +265 -0
  4. package/lib/executable/internal/ArgumentParser.js.map +1 -0
  5. package/lib/executable/internal/CommandExecutor.d.ts +3 -0
  6. package/lib/executable/internal/CommandExecutor.js +17 -0
  7. package/lib/executable/internal/CommandExecutor.js.map +1 -0
  8. package/lib/executable/internal/PackageManager.d.ts +27 -0
  9. package/lib/executable/internal/PackageManager.js +141 -0
  10. package/lib/executable/internal/PackageManager.js.map +1 -0
  11. package/lib/executable/internal/PluginConfigurator.d.ts +5 -0
  12. package/lib/executable/internal/PluginConfigurator.js +158 -0
  13. package/lib/executable/internal/PluginConfigurator.js.map +1 -0
  14. package/lib/executable/typia.js +43 -22
  15. package/lib/executable/typia.js.map +1 -1
  16. package/lib/transform.d.ts +2 -1
  17. package/lib/transform.js +2 -0
  18. package/lib/transform.js.map +1 -1
  19. package/package.json +10 -5
  20. package/src/executable/internal/ArgumentParser.ts +143 -0
  21. package/src/executable/internal/CommandExecutor.ts +8 -0
  22. package/src/executable/internal/PackageManager.ts +99 -0
  23. package/src/executable/internal/PluginConfigurator.ts +96 -0
  24. package/src/executable/typia.ts +40 -17
  25. package/src/transform.ts +2 -1
  26. package/lib/executable/internal/CommandParser.d.ts +0 -3
  27. package/lib/executable/internal/CommandParser.js +0 -21
  28. package/lib/executable/internal/CommandParser.js.map +0 -1
  29. package/lib/executable/internal/TypiaSetupWizard.d.ts +0 -8
  30. package/lib/executable/internal/TypiaSetupWizard.js +0 -244
  31. package/lib/executable/internal/TypiaSetupWizard.js.map +0 -1
  32. package/src/executable/internal/CommandParser.ts +0 -15
  33. package/src/executable/internal/TypiaSetupWizard.ts +0 -182
package/README.md CHANGED
@@ -24,9 +24,9 @@ export function assertStringify<T>(input: T): string; // safe and faster
24
24
  // +) stringify, isStringify, validateStringify
25
25
 
26
26
  // MISC
27
- export function random<T>(): T; // generate random data
28
- export function clone<T>(input: T): Primitive<T>;
29
- export function prune<T extends object>(input: T): void;
27
+ export function random<T>(): Primitive<T>; // generate random data
28
+ export function clone<T>(input: T): Primitive<T>; // hard copy
29
+ export function prune<T extends object>(input: T): void; // erase extra props
30
30
  // +) isClone, assertClone, validateClone
31
31
  // +) isPrune, assertPrune, validatePrune
32
32
  ```
@@ -67,18 +67,7 @@ npx typia setup
67
67
 
68
68
  Just type `npx typia setup`, that's all.
69
69
 
70
- Also, you can specify package manager or target `tsconfig.json` file like below:
71
-
72
- ```bash
73
- npx typia setup --manager npm
74
- npx typia setup --manager pnpm
75
- npx typia setup --manager yarn
76
-
77
- npx typia setup --project tsconfig.json
78
- npx typia setup --project tsconfig.test.json
79
- ```
80
-
81
- After the setup, you can compile `typia` utilization code by using `ttsc` ([`ttypescript`](https://github.com/cevek/ttypescript)) command. If you want to run your TypeScript file directly through `ts-node`, add `-C ttypescript` argument like below:
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.
82
71
 
83
72
  ```bash
84
73
  # COMPILE THROUGH TTYPESCRIPT
@@ -97,12 +86,12 @@ If you want to install and setup `typia` manually, read [Guide Documents - Setup
97
86
  - [vite](https://github.com/samchon/typia/wiki/Setup#vite)
98
87
  - [webpack](https://github.com/samchon/typia/wiki/Setup#webpack)
99
88
 
100
- Also, by [Guide Documents - Setup](https://github.com/samchon/typia/wiki/Setup) section, you can learn how to use pure TypeScript compiler `tsc` through [`ts-patch`](https://github.com/nonara/ts-patch), instead of using the `ttypescript` compiler with `ttsc` command.
101
-
102
89
  ### Vite
103
90
  When you want to setup `typia` on your frontend project with [`vite`](https://vitejs.dev/), just configure `vite.config.ts` like below.
104
91
 
105
- For reference, don't forget running [Setup Wizard](#setup-wizard) before.
92
+ Also, don't forget running [Setup Wizard](#setup-wizard) before.
93
+
94
+ If you've chosen [ts-patch](https://github.com/nonara/ts-patch) compiler, just call only `typescript()` function.
106
95
 
107
96
  ```typescript
108
97
  import { defineConfig } from "vite";
@@ -114,9 +103,12 @@ import ttsc from "ttypescript";
114
103
  export default defineConfig({
115
104
  plugins: [
116
105
  react(),
106
+ // when using "ttypescript"
117
107
  typescript({
118
108
  typescript: ttsc,
119
- })
109
+ }),
110
+ // otherwise using "ts-patch"
111
+ typescript()
120
112
  ]
121
113
  });
122
114
  ```
@@ -218,9 +210,9 @@ export function createAssertStringify<T>(): (input: T) => string;
218
210
  - `assertParse()`: parse JSON string safely with type validation
219
211
  - `isStringify()`: maximum 10x faster JSON stringify fuction even type safe
220
212
 
221
- ![JSON string conversion speed](https://github.com/samchon/typia/raw/master/benchmark/results/AMD%20Ryzen%207%205800H%20with%20Radeon%20Graphics/images/stringify.svg)
213
+ ![JSON string conversion speed](https://raw.githubusercontent.com/samchon/typia/master/benchmark/results/AMD%20Ryzen%207%206800HS%20with%20Radeon%20Graphics/images/stringify.svg)
222
214
 
223
- > Measured on [AMD R7 5800H](https://github.com/samchon/typia/tree/master/benchmark/results/AMD%20Ryzen%207%205800H%20with%20Radeon%20Graphics#stringify)
215
+ > Measured on [AMD R7 6800HS](https://github.com/samchon/typia/tree/master/benchmark/results/AMD%20Ryzen%207%206800HS%20with%20Radeon%20Graphics)
224
216
 
225
217
  ### Miscellaneous
226
218
  ```typescript
@@ -0,0 +1,9 @@
1
+ import { PackageManager } from "./PackageManager";
2
+ export declare namespace ArgumentParser {
3
+ interface IArguments {
4
+ compiler: "ts-patch" | "ttypescript";
5
+ manager: "npm" | "pnpm" | "yarn";
6
+ project: string | null;
7
+ }
8
+ function parse(pack: PackageManager): Promise<IArguments>;
9
+ }
@@ -0,0 +1,265 @@
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 fs_1 = __importDefault(require("fs"));
67
+ var path_1 = __importDefault(require("path"));
68
+ var ArgumentParser;
69
+ (function (ArgumentParser) {
70
+ function parse(pack) {
71
+ return __awaiter(this, void 0, void 0, function () {
72
+ var newbie, output;
73
+ var _this = this;
74
+ return __generator(this, function (_a) {
75
+ switch (_a.label) {
76
+ case 0:
77
+ newbie = {
78
+ commander: pack.install({
79
+ dev: true,
80
+ modulo: "commander",
81
+ silent: true,
82
+ }),
83
+ inquirer: pack.install({
84
+ dev: true,
85
+ modulo: "inquirer",
86
+ version: "8.2.5",
87
+ silent: true,
88
+ }),
89
+ };
90
+ return [4, (function () { return __awaiter(_this, void 0, void 0, function () {
91
+ var error_1;
92
+ return __generator(this, function (_a) {
93
+ switch (_a.label) {
94
+ case 0:
95
+ _a.trys.push([0, 2, , 3]);
96
+ return [4, _Parse(pack)];
97
+ case 1: return [2, _a.sent()];
98
+ case 2:
99
+ error_1 = _a.sent();
100
+ return [2, error_1];
101
+ case 3: return [2];
102
+ }
103
+ });
104
+ }); })()];
105
+ case 1:
106
+ output = _a.sent();
107
+ if (newbie.commander)
108
+ pack.erase({ modulo: "commander", silent: true });
109
+ if (newbie.inquirer)
110
+ pack.erase({ modulo: "inquirer", silent: true });
111
+ if (output instanceof Error)
112
+ throw output;
113
+ return [2, output];
114
+ }
115
+ });
116
+ });
117
+ }
118
+ ArgumentParser.parse = parse;
119
+ function _Parse(pack) {
120
+ return __awaiter(this, void 0, void 0, function () {
121
+ var createPromptModule, program, questioned, action, select, configure;
122
+ var _this = this;
123
+ return __generator(this, function (_a) {
124
+ var _b, _c;
125
+ switch (_a.label) {
126
+ case 0: return [4, (_b = path_1.default.join(pack.directory, "node_modules", "inquirer"), Promise.resolve().then(function () { return __importStar(require(_b)); }))];
127
+ case 1:
128
+ createPromptModule = (_a.sent()).createPromptModule;
129
+ return [4, (_c = path_1.default.join(pack.directory, "node_modules", "commander"), Promise.resolve().then(function () { return __importStar(require(_c)); }))];
130
+ case 2:
131
+ program = (_a.sent()).program;
132
+ program.option("--compiler [compiler]", "compiler type");
133
+ program.option("--manager [manager", "package manager");
134
+ program.option("--project [project]", "tsconfig.json file location");
135
+ questioned = { value: false };
136
+ action = function (closure) {
137
+ return new Promise(function (resolve, reject) {
138
+ program.action(function (options) { return __awaiter(_this, void 0, void 0, function () {
139
+ var _a, exp_1;
140
+ return __generator(this, function (_b) {
141
+ switch (_b.label) {
142
+ case 0:
143
+ _b.trys.push([0, 2, , 3]);
144
+ _a = resolve;
145
+ return [4, closure(options)];
146
+ case 1:
147
+ _a.apply(void 0, [_b.sent()]);
148
+ return [3, 3];
149
+ case 2:
150
+ exp_1 = _b.sent();
151
+ reject(exp_1);
152
+ return [3, 3];
153
+ case 3: return [2];
154
+ }
155
+ });
156
+ }); });
157
+ program.parseAsync().catch(reject);
158
+ });
159
+ };
160
+ select = function (name) {
161
+ return function (message) {
162
+ return function (choices) { return __awaiter(_this, void 0, void 0, function () {
163
+ return __generator(this, function (_a) {
164
+ switch (_a.label) {
165
+ case 0:
166
+ questioned.value = true;
167
+ return [4, createPromptModule()({
168
+ type: "list",
169
+ name: name,
170
+ message: message,
171
+ choices: choices,
172
+ })];
173
+ case 1: return [2, (_a.sent())[name]];
174
+ }
175
+ });
176
+ }); };
177
+ };
178
+ };
179
+ configure = function () { return __awaiter(_this, void 0, void 0, function () {
180
+ var fileList;
181
+ return __generator(this, function (_a) {
182
+ switch (_a.label) {
183
+ case 0: return [4, fs_1.default.promises.readdir(pack.directory)];
184
+ case 1: return [4, (_a.sent()).filter(function (str) {
185
+ return str.substring(0, 8) === "tsconfig" &&
186
+ str.substring(str.length - 5) === ".json";
187
+ })];
188
+ case 2:
189
+ fileList = _a.sent();
190
+ if (fileList.length === 0) {
191
+ if (process.cwd() !== pack.directory)
192
+ throw new Error("No tsconfig.json file.");
193
+ return [2, null];
194
+ }
195
+ else if (fileList.length === 1)
196
+ return [2, fileList[0]];
197
+ return [2, select("tsconfig")("tsconfig.json file")(fileList)];
198
+ }
199
+ });
200
+ }); };
201
+ return [2, action(function (options) { return __awaiter(_this, void 0, void 0, function () {
202
+ var _a, _b, _c, _d, _e;
203
+ var _f, _g, _h;
204
+ return __generator(this, function (_j) {
205
+ switch (_j.label) {
206
+ case 0:
207
+ if (!(options.compiler === undefined)) return [3, 2];
208
+ console.log(COMPILER_DESCRIPTION);
209
+ _a = options;
210
+ return [4, select("compiler")("Compiler")(((_f = pack.data.scripts) === null || _f === void 0 ? void 0 : _f.build) === "nest build"
211
+ ? ["ts-patch", "ttypescript"]
212
+ : ["ttypescript", "ts-patch"])];
213
+ case 1:
214
+ _a.compiler = _j.sent();
215
+ _j.label = 2;
216
+ case 2:
217
+ if (!((_g = options.manager) !== null && _g !== void 0)) return [3, 3];
218
+ _b = _g;
219
+ return [3, 5];
220
+ case 3:
221
+ _c = options;
222
+ return [4, select("manager")("Package Manager")([
223
+ "npm",
224
+ "pnpm",
225
+ "yarn",
226
+ ])];
227
+ case 4:
228
+ _b = (_c.manager = _j.sent());
229
+ _j.label = 5;
230
+ case 5:
231
+ _b;
232
+ pack.manager = options.manager;
233
+ if (!((_h = options.project) !== null && _h !== void 0)) return [3, 6];
234
+ _d = _h;
235
+ return [3, 8];
236
+ case 6:
237
+ _e = options;
238
+ return [4, configure()];
239
+ case 7:
240
+ _d = (_e.project = _j.sent());
241
+ _j.label = 8;
242
+ case 8:
243
+ _d;
244
+ if (questioned.value)
245
+ console.log("");
246
+ return [2, options];
247
+ }
248
+ });
249
+ }); })];
250
+ }
251
+ });
252
+ });
253
+ }
254
+ })(ArgumentParser = exports.ArgumentParser || (exports.ArgumentParser = {}));
255
+ var COMPILER_DESCRIPTION = [
256
+ "About compiler, if you adapt \"ttypescript\", you should use \"ttsc\" instead.",
257
+ "",
258
+ "Otherwise, you choose \"ts-patch\", you can use the original \"tsc\" command.",
259
+ "However, the \"ts-patch\" hacks \"node_modules/typescript\" source code.",
260
+ "Also, whenever update \"typescript\", you've to run \"npm run prepare\" command.",
261
+ "",
262
+ "By the way, when using \"@nest/cli\", you must just choose \"ts-patch\".",
263
+ "",
264
+ ].join("\n");
265
+ //# sourceMappingURL=ArgumentParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArgumentParser.js","sourceRoot":"","sources":["../../../src/executable/internal/ArgumentParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare namespace CommandExecutor {
2
+ function run(str: string, silent: boolean): void;
3
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CommandExecutor = void 0;
7
+ var child_process_1 = __importDefault(require("child_process"));
8
+ var CommandExecutor;
9
+ (function (CommandExecutor) {
10
+ function run(str, silent) {
11
+ if (silent === false)
12
+ console.log(str);
13
+ child_process_1.default.execSync(str, { stdio: "ignore" });
14
+ }
15
+ CommandExecutor.run = run;
16
+ })(CommandExecutor = exports.CommandExecutor || (exports.CommandExecutor = {}));
17
+ //# sourceMappingURL=CommandExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandExecutor.js","sourceRoot":"","sources":["../../../src/executable/internal/CommandExecutor.ts"],"names":[],"mappings":";;;;;;AAAA,gEAA+B;AAE/B,IAAiB,eAAe,CAK/B;AALD,WAAiB,eAAe;IAC5B,SAAgB,GAAG,CAAC,GAAW,EAAE,MAAe;QAC5C,IAAI,MAAM,KAAK,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,uBAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1C,CAAC;IAHe,mBAAG,MAGlB,CAAA;AACL,CAAC,EALgB,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAK/B"}
@@ -0,0 +1,27 @@
1
+ export declare class PackageManager {
2
+ readonly directory: string;
3
+ data: Package.Data;
4
+ manager: string;
5
+ get file(): string;
6
+ static mount(): Promise<PackageManager>;
7
+ save(modifier: (data: Package.Data) => void): Promise<void>;
8
+ install(props: {
9
+ dev: boolean;
10
+ silent?: boolean;
11
+ modulo: string;
12
+ version?: string;
13
+ }): boolean;
14
+ erase(props: {
15
+ modulo: string;
16
+ silent?: boolean;
17
+ }): void;
18
+ private constructor();
19
+ private static load;
20
+ }
21
+ export declare namespace Package {
22
+ interface Data {
23
+ scripts?: Record<string, string>;
24
+ dependencies?: Record<string, string>;
25
+ devDependencies?: Record<string, string>;
26
+ }
27
+ }
@@ -0,0 +1,141 @@
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.PackageManager = void 0;
43
+ var fs_1 = __importDefault(require("fs"));
44
+ var path_1 = __importDefault(require("path"));
45
+ var CommandExecutor_1 = require("./CommandExecutor");
46
+ var PackageManager = (function () {
47
+ function PackageManager(directory, data) {
48
+ this.directory = directory;
49
+ this.data = data;
50
+ this.manager = "npm";
51
+ }
52
+ Object.defineProperty(PackageManager.prototype, "file", {
53
+ get: function () {
54
+ return path_1.default.join(this.directory, "package.json");
55
+ },
56
+ enumerable: false,
57
+ configurable: true
58
+ });
59
+ PackageManager.mount = function () {
60
+ return __awaiter(this, void 0, void 0, function () {
61
+ var location, _a, _b;
62
+ return __generator(this, function (_c) {
63
+ switch (_c.label) {
64
+ case 0: return [4, find(process.cwd())];
65
+ case 1:
66
+ location = _c.sent();
67
+ if (location === null)
68
+ throw new Error("Failed to find package.json file");
69
+ _a = PackageManager.bind;
70
+ _b = [void 0, location];
71
+ return [4, this.load(path_1.default.join(location, "package.json"))];
72
+ case 2: return [2, new (_a.apply(PackageManager, _b.concat([_c.sent()])))()];
73
+ }
74
+ });
75
+ });
76
+ };
77
+ PackageManager.prototype.save = function (modifier) {
78
+ return __awaiter(this, void 0, void 0, function () {
79
+ var content;
80
+ return __generator(this, function (_a) {
81
+ switch (_a.label) {
82
+ case 0: return [4, fs_1.default.promises.readFile(this.file, "utf8")];
83
+ case 1:
84
+ content = _a.sent();
85
+ this.data = JSON.parse(content);
86
+ modifier(this.data);
87
+ return [2, fs_1.default.promises.writeFile(this.file, JSON.stringify(this.data, null, 2), "utf8")];
88
+ }
89
+ });
90
+ });
91
+ };
92
+ PackageManager.prototype.install = function (props) {
93
+ var _a;
94
+ var container = props.dev
95
+ ? this.data.devDependencies
96
+ : this.data.dependencies;
97
+ if (!!(container === null || container === void 0 ? void 0 : container[props.modulo]) &&
98
+ fs_1.default.existsSync(path_1.default.join(this.directory, "node_modules", props.modulo)))
99
+ return false;
100
+ var middle = this.manager === "yarn"
101
+ ? "add".concat(props.dev ? " -D" : "")
102
+ : "install ".concat(props.dev ? "--save-dev" : "--save");
103
+ CommandExecutor_1.CommandExecutor.run("".concat(this.manager, " ").concat(middle, " ").concat(props.modulo, "@").concat((_a = props.version) !== null && _a !== void 0 ? _a : "latest"), !!props.silent);
104
+ return true;
105
+ };
106
+ PackageManager.prototype.erase = function (props) {
107
+ var middle = this.manager === "yarn" ? "remove" : "uninstall";
108
+ CommandExecutor_1.CommandExecutor.run("".concat(this.manager, " ").concat(middle, " ").concat(props.modulo), !!props.silent);
109
+ };
110
+ PackageManager.load = function (file) {
111
+ return __awaiter(this, void 0, void 0, function () {
112
+ var content;
113
+ return __generator(this, function (_a) {
114
+ switch (_a.label) {
115
+ case 0: return [4, fs_1.default.promises.readFile(file, "utf8")];
116
+ case 1:
117
+ content = _a.sent();
118
+ return [2, JSON.parse(content)];
119
+ }
120
+ });
121
+ });
122
+ };
123
+ return PackageManager;
124
+ }());
125
+ exports.PackageManager = PackageManager;
126
+ function find(directory, depth) {
127
+ if (directory === void 0) { directory = process.cwd(); }
128
+ if (depth === void 0) { depth = 0; }
129
+ return __awaiter(this, void 0, void 0, function () {
130
+ var location;
131
+ return __generator(this, function (_a) {
132
+ location = path_1.default.join(directory, "package.json");
133
+ if (fs_1.default.existsSync(location))
134
+ return [2, directory];
135
+ else if (depth > 1)
136
+ return [2, null];
137
+ return [2, find(path_1.default.join(directory, ".."), depth + 1)];
138
+ });
139
+ });
140
+ }
141
+ //# sourceMappingURL=PackageManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PackageManager.js","sourceRoot":"","sources":["../../../src/executable/internal/PackageManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { ArgumentParser } from "./ArgumentParser";
2
+ import { PackageManager } from "./PackageManager";
3
+ export declare namespace PluginConfigurator {
4
+ function configure(pack: PackageManager, args: ArgumentParser.IArguments): Promise<void>;
5
+ }