@nestia/migrate 0.6.3 → 0.7.0-dev.20240201

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 (36) hide show
  1. package/lib/IMigrateConfig.d.ts +1 -0
  2. package/lib/MigrateApplication.d.ts +3 -15
  3. package/lib/MigrateApplication.js +21 -62
  4. package/lib/MigrateApplication.js.map +1 -1
  5. package/lib/bundles/NEST_TEMPLATE.d.ts +5 -0
  6. package/{src/bundles/TEMPLATE.ts → lib/bundles/NEST_TEMPLATE.js} +71 -27
  7. package/lib/bundles/NEST_TEMPLATE.js.map +1 -0
  8. package/lib/bundles/SDK_TEMPLATE.d.ts +5 -0
  9. package/lib/bundles/SDK_TEMPLATE.js +61 -0
  10. package/lib/bundles/SDK_TEMPLATE.js.map +1 -0
  11. package/lib/bundles/TEMPLATE.d.ts +1 -1
  12. package/lib/bundles/TEMPLATE.js +23 -23
  13. package/lib/bundles/TEMPLATE.js.map +1 -1
  14. package/lib/executable/bundle.js +70 -51
  15. package/lib/executable/bundle.js.map +1 -1
  16. package/lib/executable/migrate.js +2 -62
  17. package/lib/executable/migrate.js.map +1 -1
  18. package/lib/internal/MigrateCli.d.ts +3 -0
  19. package/lib/internal/MigrateCli.js +59 -0
  20. package/lib/internal/MigrateCli.js.map +1 -0
  21. package/lib/internal/{MigrateArguments.d.ts → MigrateCommander.d.ts} +2 -1
  22. package/lib/internal/{MigrateArguments.js → MigrateCommander.js} +23 -20
  23. package/lib/internal/MigrateCommander.js.map +1 -0
  24. package/lib/programmers/ApiProgrammer.js +47 -2
  25. package/lib/programmers/ApiProgrammer.js.map +1 -1
  26. package/package.json +3 -2
  27. package/src/IMigrateConfig.ts +1 -0
  28. package/src/MigrateApplication.ts +20 -67
  29. package/src/bundles/NEST_TEMPLATE.ts +202 -0
  30. package/src/bundles/SDK_TEMPLATE.ts +57 -0
  31. package/src/executable/bundle.ts +80 -50
  32. package/src/executable/migrate.ts +2 -60
  33. package/src/internal/MigrateCommander.ts +52 -0
  34. package/src/internal/{MigrateArguments.ts → MigrateInquirer.ts} +12 -7
  35. package/src/programmers/ApiProgrammer.ts +60 -2
  36. package/lib/internal/MigrateArguments.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/executable/migrate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,4CAAoB;AACpB,gDAAwB;AAExB,8DAA2D;AAE3D,sDAAmD;AAEnD,MAAM,KAAK,GAAG;;;;;;CAMb,CAAC;AAEF,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,IAAI,GAAG,CAAO,IAAc,EAAiB,EAAE;IACnD,MAAM,OAAO,GAAG,CAAC,GAAuB,EAAE,EAAE,CAC1C,GAAG,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,MAAM,KAAK,GAAuB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,MAAM,GAAuB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,qBAAqB;IACrB,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAE7D,4BAA4B;IAC5B,MAAM,MAAM,GAAW,OAAO,CAAC,MAAM,GAAG,KAAK,CAAE,CAAC;IAChD,IAAI,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,IAAI,CAAC,iCAAiC,CAAC,CAAC;SAC9D,IAAI,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,KAAK;QACtC,IAAI,CAAC,qDAAqD,CAAC,CAAC;SACzD,IAAI,YAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK;QAClD,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAExD,eAAe;IACf,MAAM,OAAO,GAAa,CAAC,GAAG,EAAE;QAC9B,IAAI,YAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,KAAK;YAChC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QACtD,MAAM,KAAK,GAAa,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,KAAK;YAAE,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAW,YAAE,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,OAAO,GAAa,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,EAAE,CAAC;IAEL,cAAc;IACd,MAAM,GAAG,GAAuB,IAAI,uCAAkB,CACpD;QACE,QAAQ,EAAE,KAAK;KAChB,EACD,OAAO,CACR,CAAC;IACF,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE3B,cAAc;IACd,yBAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC,CAAA,CAAC;AACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACxC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/executable/migrate.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AAEpD,uBAAU,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC9B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare namespace MigrateCli {
2
+ const main: () => Promise<void>;
3
+ }
@@ -0,0 +1,59 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.MigrateCli = void 0;
16
+ const fs_1 = __importDefault(require("fs"));
17
+ const path_1 = __importDefault(require("path"));
18
+ const FileArchiver_1 = require("../archivers/FileArchiver");
19
+ const module_1 = require("../module");
20
+ const MigrateCommander_1 = require("./MigrateCommander");
21
+ var MigrateCli;
22
+ (function (MigrateCli) {
23
+ MigrateCli.main = () => __awaiter(this, void 0, void 0, function* () {
24
+ const resolve = (str) => str ? path_1.default.resolve(str).split("\\").join("/") : undefined;
25
+ const options = yield MigrateCommander_1.MigrateCommander.parse();
26
+ // VALIDATE OUTPUT DIRECTORY
27
+ const parent = resolve(options.output + "/..");
28
+ if (fs_1.default.existsSync(options.output))
29
+ halt("Output directory alreay exists.");
30
+ else if (fs_1.default.existsSync(parent) === false)
31
+ halt("Output directory's parent directory does not exist.");
32
+ else if (fs_1.default.statSync(parent).isDirectory() === false)
33
+ halt("Output directory's parent is not a directory.");
34
+ // READ SWAGGER
35
+ const swagger = (() => {
36
+ if (fs_1.default.existsSync(options.input) === false)
37
+ halt("Unable to find the input swagger.json file.");
38
+ const stats = fs_1.default.statSync(options.input);
39
+ if (stats.isFile() === false)
40
+ halt("The input swagger.json is not a file.");
41
+ const content = fs_1.default.readFileSync(options.input, "utf-8");
42
+ const swagger = JSON.parse(content);
43
+ return swagger;
44
+ })();
45
+ const app = new module_1.MigrateApplication(swagger);
46
+ const files = options.mode === "nest"
47
+ ? app.nest(options.simulate)
48
+ : app.sdk(options.simulate);
49
+ yield FileArchiver_1.FileArchiver.archive({
50
+ mkdir: fs_1.default.promises.mkdir,
51
+ writeFile: (file, content) => fs_1.default.promises.writeFile(file, content, "utf-8"),
52
+ })(options.output)(files);
53
+ });
54
+ const halt = (desc) => {
55
+ console.error(desc);
56
+ process.exit(-1);
57
+ };
58
+ })(MigrateCli || (exports.MigrateCli = MigrateCli = {}));
59
+ //# sourceMappingURL=MigrateCli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MigrateCli.js","sourceRoot":"","sources":["../../src/internal/MigrateCli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAExB,4DAAyD;AACzD,sCAA+C;AAG/C,yDAAsD;AAEtD,IAAiB,UAAU,CA0C1B;AA1CD,WAAiB,UAAU;IACZ,eAAI,GAAG,GAAwB,EAAE;QAC5C,MAAM,OAAO,GAAG,CAAC,GAAuB,EAAE,EAAE,CAC1C,GAAG,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5D,MAAM,OAAO,GAA6B,MAAM,mCAAgB,CAAC,KAAK,EAAE,CAAC;QAEzE,4BAA4B;QAC5B,MAAM,MAAM,GAAW,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAE,CAAC;QACxD,IAAI,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,iCAAiC,CAAC,CAAC;aACtE,IAAI,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,KAAK;YACtC,IAAI,CAAC,qDAAqD,CAAC,CAAC;aACzD,IAAI,YAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK;YAClD,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAExD,eAAe;QACf,MAAM,OAAO,GAAa,CAAC,GAAG,EAAE;YAC9B,IAAI,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK;gBACxC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YACtD,MAAM,KAAK,GAAa,YAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,KAAK;gBAC1B,IAAI,CAAC,uCAAuC,CAAC,CAAC;YAChD,MAAM,OAAO,GAAW,YAAE,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAChE,MAAM,OAAO,GAAa,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC9C,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,EAAE,CAAC;QAEL,MAAM,GAAG,GAAuB,IAAI,2BAAkB,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,KAAK,GACT,OAAO,CAAC,IAAI,KAAK,MAAM;YACrB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC5B,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,2BAAY,CAAC,OAAO,CAAC;YACzB,KAAK,EAAE,YAAE,CAAC,QAAQ,CAAC,KAAK;YACxB,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAC3B,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;SAChD,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC,CAAA,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAS,EAAE;QACnC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC,EA1CgB,UAAU,0BAAV,UAAU,QA0C1B"}
@@ -1,6 +1,7 @@
1
- export declare namespace MigrateArguments {
1
+ export declare namespace MigrateCommander {
2
2
  interface IOutput {
3
3
  mode: "nest" | "sdk";
4
+ simulate: boolean;
4
5
  input: string;
5
6
  output: string;
6
7
  }
@@ -12,31 +12,30 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
12
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.MigrateArguments = void 0;
15
+ exports.MigrateCommander = void 0;
16
16
  const commander_1 = __importDefault(require("commander"));
17
17
  const inquirer_1 = __importDefault(require("inquirer"));
18
- var MigrateArguments;
19
- (function (MigrateArguments) {
20
- MigrateArguments.parse = () => __awaiter(this, void 0, void 0, function* () {
18
+ var MigrateCommander;
19
+ (function (MigrateCommander) {
20
+ MigrateCommander.parse = () => __awaiter(this, void 0, void 0, function* () {
21
21
  // PREPARE ASSETS
22
- commander_1.default.program.option("--node [nest/sdk]", "migration mode");
22
+ commander_1.default.program.option("--mode [nest/sdk]", "migration mode");
23
23
  commander_1.default.program.option("--input [swagger.json]", "location of target swagger.json file");
24
24
  commander_1.default.program.option("--output [directory]", "output directory path");
25
+ commander_1.default.program.option("--simulate", "Mockup simulator");
25
26
  // INTERNAL PROCEDURES
26
27
  const questioned = { value: false };
27
- const action = (closure) => {
28
- return new Promise((resolve, reject) => {
29
- commander_1.default.program.action((options) => __awaiter(this, void 0, void 0, function* () {
30
- try {
31
- resolve(yield closure(options));
32
- }
33
- catch (exp) {
34
- reject(exp);
35
- }
36
- }));
37
- commander_1.default.program.parseAsync().catch(reject);
38
- });
39
- };
28
+ const action = (closure) => new Promise((resolve, reject) => {
29
+ commander_1.default.program.action((options) => __awaiter(this, void 0, void 0, function* () {
30
+ try {
31
+ resolve(yield closure(options));
32
+ }
33
+ catch (exp) {
34
+ reject(exp);
35
+ }
36
+ }));
37
+ commander_1.default.program.parseAsync().catch(reject);
38
+ });
40
39
  const select = (name) => (message) => (choices, filter) => __awaiter(this, void 0, void 0, function* () {
41
40
  questioned.value = true;
42
41
  return (yield inquirer_1.default.createPromptModule()({
@@ -60,8 +59,12 @@ var MigrateArguments;
60
59
  (_a = partial.mode) !== null && _a !== void 0 ? _a : (partial.mode = yield select("mode")("Migration mode")(["NestJS", "SDK"], (value) => (value === "NestJS" ? "nest" : "sdk")));
61
60
  (_b = partial.input) !== null && _b !== void 0 ? _b : (partial.input = yield input("input")("Swagger file location"));
62
61
  (_c = partial.output) !== null && _c !== void 0 ? _c : (partial.output = yield input("output")("Output directory path"));
62
+ if (partial.simulate)
63
+ partial.simulate = partial.simulate === "true";
64
+ else
65
+ partial.simulate = yield select("simulate")("Mokup Simulator")(["true", "false"], (str) => str === "Y");
63
66
  return partial;
64
67
  }));
65
68
  });
66
- })(MigrateArguments || (exports.MigrateArguments = MigrateArguments = {}));
67
- //# sourceMappingURL=MigrateArguments.js.map
69
+ })(MigrateCommander || (exports.MigrateCommander = MigrateCommander = {}));
70
+ //# sourceMappingURL=MigrateCommander.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MigrateCommander.js","sourceRoot":"","sources":["../../src/internal/MigrateCommander.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,17 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.ApiProgrammer = void 0;
4
7
  const tstl_1 = require("tstl");
8
+ const typescript_1 = __importDefault(require("typescript"));
5
9
  const Escaper_1 = require("typia/lib/utils/Escaper");
6
10
  const FilePrinter_1 = require("../utils/FilePrinter");
7
11
  const StringUtil_1 = require("../utils/StringUtil");
8
12
  const ApiFileProgrammer_1 = require("./ApiFileProgrammer");
13
+ const DtoProgrammer_1 = require("./DtoProgrammer");
14
+ const ImportProgrammer_1 = require("./ImportProgrammer");
9
15
  var ApiProgrammer;
10
16
  (function (ApiProgrammer) {
11
17
  ApiProgrammer.write = (program) => {
@@ -41,6 +47,13 @@ var ApiProgrammer;
41
47
  props.children.add(last.value.namespace.at(-1));
42
48
  last.value = props;
43
49
  });
50
+ const top = dict.take([], () => ({
51
+ namespace: [],
52
+ children: new Set(),
53
+ entries: [],
54
+ }));
55
+ if (namespace.length)
56
+ top.children.add(namespace[0]);
44
57
  }
45
58
  for (const { second: props } of dict)
46
59
  props.entries.forEach((entry, i) => (entry.alias = StringUtil_1.StringUtil.escapeDuplicate([
@@ -50,13 +63,45 @@ var ApiProgrammer;
50
63
  ...(entry.route.query ? [entry.route.query.key] : []),
51
64
  ...props.entries.filter((_, j) => i !== j).map((e) => e.alias),
52
65
  ])(entry.alias)));
53
- return [...dict].map(({ second: props }) => ({
54
- location: `src/api/functional/${props.namespace.join("/")}`,
66
+ const output = [...dict].map(({ second: props }) => ({
67
+ location: `src/${program.config.mode === "nest" ? "api/" : ""}functional/${props.namespace.join("/")}`,
55
68
  file: "index.ts",
56
69
  content: FilePrinter_1.FilePrinter.write({
57
70
  statements: ApiFileProgrammer_1.ApiFileProgrammer.write(program.config)(program.swagger.components)(props),
58
71
  }),
59
72
  }));
73
+ if (program.config.mode === "sdk")
74
+ output.push(...[...DtoProgrammer_1.DtoProgrammer.write(program.swagger.components).entries()].map(([key, value]) => ({
75
+ location: "src/structures",
76
+ file: `${key}.ts`,
77
+ content: FilePrinter_1.FilePrinter.write({
78
+ statements: writeDtoFile(key, value),
79
+ }),
80
+ })));
81
+ return output;
82
+ };
83
+ const writeDtoFile = (key, modulo) => {
84
+ const importer = new ImportProgrammer_1.ImportProgrammer();
85
+ const statements = iterate(importer)(modulo);
86
+ if (statements.length === 0)
87
+ return [];
88
+ return [
89
+ ...importer.toStatements((name) => `./${name}`, key),
90
+ ...(importer.empty() ? [] : [FilePrinter_1.FilePrinter.enter()]),
91
+ ...statements,
92
+ ];
93
+ };
94
+ const iterate = (importer) => (modulo) => {
95
+ const output = [];
96
+ if (modulo.programmer !== null)
97
+ output.push(modulo.programmer(importer));
98
+ if (modulo.children.size) {
99
+ const internal = [];
100
+ for (const child of modulo.children.values())
101
+ internal.push(...iterate(importer)(child));
102
+ output.push(typescript_1.default.factory.createModuleDeclaration([typescript_1.default.factory.createModifier(typescript_1.default.SyntaxKind.ExportKeyword)], typescript_1.default.factory.createIdentifier(modulo.name), typescript_1.default.factory.createModuleBlock(internal), typescript_1.default.NodeFlags.Namespace));
103
+ }
104
+ return output;
60
105
  };
61
106
  })(ApiProgrammer || (exports.ApiProgrammer = ApiProgrammer = {}));
62
107
  //# sourceMappingURL=ApiProgrammer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApiProgrammer.js","sourceRoot":"","sources":["../../src/programmers/ApiProgrammer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApiProgrammer.js","sourceRoot":"","sources":["../../src/programmers/ApiProgrammer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestia/migrate",
3
- "version": "0.6.3",
3
+ "version": "0.7.0-dev.20240201",
4
4
  "description": "Migration program from swagger to NestJS",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -9,8 +9,9 @@
9
9
  },
10
10
  "scripts": {
11
11
  "build": "rimraf lib && tsc",
12
+ "bundle": "ts-node src/executable/bundle.ts",
12
13
  "dev": "npm run build -- --watch",
13
- "prepare": "ts-patch install && typia patch && ts-node src/executable/bundle.ts",
14
+ "prepare": "ts-patch install && typia patch && npm run bundle",
14
15
  "test": "node lib/test"
15
16
  },
16
17
  "repository": {
@@ -1,3 +1,4 @@
1
1
  export interface IMigrateConfig {
2
+ mode: "nest" | "sdk";
2
3
  simulate: boolean;
3
4
  }
@@ -1,82 +1,35 @@
1
- import cp from "child_process";
2
- import fs from "fs";
3
1
  import typia from "typia";
4
2
 
5
- import { IMigrateConfig } from "./IMigrateConfig";
6
3
  import { MigrateAnalyzer } from "./analyzers/MigrateAnalyzer";
7
- import { FileArchiver } from "./archivers/FileArchiver";
8
- import { TEMPLATE } from "./bundles/TEMPLATE";
4
+ import { NEST_TEMPLATE } from "./bundles/NEST_TEMPLATE";
5
+ import { SDK_TEMPLATE } from "./bundles/SDK_TEMPLATE";
9
6
  import { ApiProgrammer } from "./programmers/ApiProgrammer";
10
7
  import { NestProgrammer } from "./programmers/NestProgrammer";
11
8
  import { IMigrateFile } from "./structures/IMigrateFile";
12
- import { IMigrateProgram } from "./structures/IMigrateProgram";
13
9
  import { ISwagger } from "./structures/ISwagger";
14
10
 
15
11
  export class MigrateApplication {
16
- public readonly swagger: ISwagger;
17
- private program: IMigrateProgram | null;
18
- private files: IMigrateFile[] | null;
19
-
20
- public constructor(
21
- public readonly config: IMigrateConfig,
22
- swagger: ISwagger,
23
- ) {
24
- this.swagger = typia.assert(swagger);
25
- this.program = null;
26
- this.files = null;
27
- }
28
-
29
- public analyze(): IMigrateProgram {
30
- if (this.program === null)
31
- this.program = MigrateAnalyzer.analyze(this.config)(this.swagger);
32
- return this.program;
12
+ public constructor(public readonly swagger: ISwagger) {
13
+ typia.assert(swagger);
33
14
  }
34
15
 
35
- public write(): IMigrateFile[] {
36
- if (this.files === null) {
37
- this.program ??= this.analyze();
38
- this.files = [
39
- ...ApiProgrammer.write(this.program),
40
- ...NestProgrammer.write(this.program),
41
- ];
42
- }
43
- return this.files;
16
+ public nest(simulate: boolean): IMigrateFile[] {
17
+ const program = MigrateAnalyzer.analyze({
18
+ mode: "nest",
19
+ simulate,
20
+ })(this.swagger);
21
+ return [
22
+ ...NEST_TEMPLATE,
23
+ ...NestProgrammer.write(program),
24
+ ...ApiProgrammer.write(program),
25
+ ];
44
26
  }
45
27
 
46
- public async generate(output: string): Promise<void> {
47
- const files: IMigrateFile[] = this.write();
48
- const archiver = FileArchiver.archive({
49
- mkdir: fs.promises.mkdir,
50
- writeFile: (file, content) =>
51
- fs.promises.writeFile(file, content, "utf8"),
52
- })(output);
53
- try {
54
- cp.execSync(
55
- `git clone https://github.com/samchon/nestia-template "${output}"`,
56
- { stdio: "ignore" },
57
- );
58
- try {
59
- for (const path of [
60
- "/.git",
61
- "/src/api",
62
- "/src/controllers",
63
- "/src/providers",
64
- "/test/features",
65
- ])
66
- fs.rmSync(`${output}${path}`, {
67
- recursive: true,
68
- force: true,
69
- });
70
- } catch {}
71
- } catch (exp) {
72
- await archiver(TEMPLATE);
73
- }
74
- await archiver(files);
75
- }
76
- }
77
- export namespace NestiaMigrateApplication {
78
- export interface IArchiver {
79
- mkdir: (path: string) => void;
80
- writeFile: (path: string, content: string) => void;
28
+ public sdk(simulate: boolean): IMigrateFile[] {
29
+ const program = MigrateAnalyzer.analyze({
30
+ mode: "sdk",
31
+ simulate,
32
+ })(this.swagger);
33
+ return [...SDK_TEMPLATE, ...ApiProgrammer.write(program)];
81
34
  }
82
35
  }