@nestia/migrate 0.7.5 → 0.7.6

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 (114) hide show
  1. package/lib/MigrateApplication.d.ts +9 -2
  2. package/lib/MigrateApplication.js +14 -8
  3. package/lib/MigrateApplication.js.map +1 -1
  4. package/lib/analyzers/MigrateAnalyzer.js +2 -2
  5. package/lib/analyzers/MigrateAnalyzer.js.map +1 -1
  6. package/lib/analyzers/{ControllerAnalyzer.d.ts → MigrateControllerAnalyzer.d.ts} +1 -1
  7. package/lib/analyzers/{ControllerAnalyzer.js → MigrateControllerAnalyzer.js} +11 -9
  8. package/lib/analyzers/MigrateControllerAnalyzer.js.map +1 -0
  9. package/lib/analyzers/{MethodAnalyzer.d.ts → MigrateMethodAnalyzer.d.ts} +1 -1
  10. package/lib/analyzers/{MethodAnalyzer.js → MigrateMethodAnalyzer.js} +26 -25
  11. package/lib/analyzers/MigrateMethodAnalyzer.js.map +1 -0
  12. package/lib/archivers/{FileArchiver.d.ts → MigrateFileArchiver.d.ts} +1 -1
  13. package/lib/archivers/{FileArchiver.js → MigrateFileArchiver.js} +6 -6
  14. package/lib/archivers/MigrateFileArchiver.js.map +1 -0
  15. package/lib/bundles/SDK_TEMPLATE.js +0 -5
  16. package/lib/bundles/SDK_TEMPLATE.js.map +1 -1
  17. package/lib/executable/bundle.js +1 -0
  18. package/lib/executable/bundle.js.map +1 -1
  19. package/lib/internal/MigrateCommander.js +3 -3
  20. package/lib/internal/MigrateCommander.js.map +1 -1
  21. package/lib/programmers/{ApiFileProgrammer.d.ts → MigrateApiFileProgrammer.d.ts} +1 -1
  22. package/lib/programmers/MigrateApiFileProgrammer.js +28 -0
  23. package/lib/programmers/MigrateApiFileProgrammer.js.map +1 -0
  24. package/lib/programmers/{ApiFunctionProgrammer.d.ts → MigrateApiFunctionProgrammer.d.ts} +4 -4
  25. package/lib/programmers/{ApiFunctionProgrammer.js → MigrateApiFunctionProgrammer.js} +10 -10
  26. package/lib/programmers/MigrateApiFunctionProgrammer.js.map +1 -0
  27. package/lib/programmers/{ApiNamespaceProgrammer.d.ts → MigrateApiNamespaceProgrammer.d.ts} +3 -3
  28. package/lib/programmers/{ApiNamespaceProgrammer.js → MigrateApiNamespaceProgrammer.js} +19 -19
  29. package/lib/programmers/MigrateApiNamespaceProgrammer.js.map +1 -0
  30. package/lib/programmers/{ApiProgrammer.d.ts → MigrateApiProgrammer.d.ts} +1 -1
  31. package/lib/programmers/{ApiProgrammer.js → MigrateApiProgrammer.js} +25 -20
  32. package/lib/programmers/MigrateApiProgrammer.js.map +1 -0
  33. package/lib/programmers/{ApiSimulatationProgrammer.d.ts → MigrateApiSimulatationProgrammer.d.ts} +4 -4
  34. package/lib/programmers/{ApiSimulatationProgrammer.js → MigrateApiSimulatationProgrammer.js} +16 -16
  35. package/lib/programmers/MigrateApiSimulatationProgrammer.js.map +1 -0
  36. package/lib/programmers/{DtoProgrammer.d.ts → MigrateDtoProgrammer.d.ts} +3 -3
  37. package/lib/programmers/{DtoProgrammer.js → MigrateDtoProgrammer.js} +8 -8
  38. package/lib/programmers/MigrateDtoProgrammer.js.map +1 -0
  39. package/lib/programmers/{ImportProgrammer.d.ts → MigrateImportProgrammer.d.ts} +3 -3
  40. package/lib/programmers/{ImportProgrammer.js → MigrateImportProgrammer.js} +7 -5
  41. package/lib/programmers/MigrateImportProgrammer.js.map +1 -0
  42. package/lib/programmers/{NestControllerProgrammer.d.ts → MigrateNestControllerProgrammer.d.ts} +1 -1
  43. package/lib/programmers/{NestControllerProgrammer.js → MigrateNestControllerProgrammer.js} +11 -11
  44. package/lib/programmers/MigrateNestControllerProgrammer.js.map +1 -0
  45. package/lib/programmers/{NestMethodProgrammer.d.ts → MigrateNestMethodProgrammer.d.ts} +3 -3
  46. package/lib/programmers/{NestMethodProgrammer.js → MigrateNestMethodProgrammer.js} +13 -11
  47. package/lib/programmers/MigrateNestMethodProgrammer.js.map +1 -0
  48. package/lib/programmers/{NestModuleProgrammer.d.ts → MigrateNestModuleProgrammer.d.ts} +1 -1
  49. package/lib/programmers/{NestModuleProgrammer.js → MigrateNestModuleProgrammer.js} +8 -8
  50. package/lib/programmers/MigrateNestModuleProgrammer.js.map +1 -0
  51. package/lib/programmers/{NestProgrammer.d.ts → MigrateNestProgrammer.d.ts} +1 -1
  52. package/lib/programmers/{NestProgrammer.js → MigrateNestProgrammer.js} +17 -15
  53. package/lib/programmers/MigrateNestProgrammer.js.map +1 -0
  54. package/lib/programmers/{SchemaProgrammer.d.ts → MigrateSchemaProgrammer.d.ts} +3 -3
  55. package/lib/programmers/{SchemaProgrammer.js → MigrateSchemaProgrammer.js} +23 -23
  56. package/lib/programmers/MigrateSchemaProgrammer.js.map +1 -0
  57. package/lib/structures/IMigrateRoute.d.ts +1 -0
  58. package/lib/utils/FilePrinter.d.ts +1 -1
  59. package/lib/utils/FilePrinter.js +1 -1
  60. package/lib/utils/FilePrinter.js.map +1 -1
  61. package/lib/utils/{JsonTypeChecker.d.ts → SwaggerTypeChecker.d.ts} +1 -1
  62. package/lib/utils/SwaggerTypeChecker.js +34 -0
  63. package/lib/utils/SwaggerTypeChecker.js.map +1 -0
  64. package/package.json +68 -68
  65. package/src/IMigrateConfig.ts +4 -4
  66. package/src/MigrateApplication.ts +48 -35
  67. package/src/analyzers/MigrateAnalyzer.ts +13 -13
  68. package/src/analyzers/{ControllerAnalyzer.ts → MigrateControllerAnalyzer.ts} +122 -123
  69. package/src/analyzers/{MethodAnalyzer.ts → MigrateMethodAnalyzer.ts} +348 -347
  70. package/src/archivers/{FileArchiver.ts → MigrateFileArchiver.ts} +38 -38
  71. package/src/bundles/SDK_TEMPLATE.ts +0 -5
  72. package/src/executable/bundle.ts +109 -108
  73. package/src/executable/migrate.ts +7 -7
  74. package/src/internal/MigrateCommander.ts +51 -52
  75. package/src/internal/MigrateInquirer.ts +79 -79
  76. package/src/module.ts +4 -4
  77. package/src/programmers/{ApiFileProgrammer.ts → MigrateApiFileProgrammer.ts} +53 -53
  78. package/src/programmers/{ApiFunctionProgrammer.ts → MigrateApiFunctionProgrammer.ts} +203 -203
  79. package/src/programmers/{ApiNamespaceProgrammer.ts → MigrateApiNamespaceProgrammer.ts} +430 -418
  80. package/src/programmers/{ApiProgrammer.ts → MigrateApiProgrammer.ts} +132 -128
  81. package/src/programmers/{ApiSimulatationProgrammer.ts → MigrateApiSimulatationProgrammer.ts} +328 -328
  82. package/src/programmers/{DtoProgrammer.ts → MigrateDtoProgrammer.ts} +78 -74
  83. package/src/programmers/{ImportProgrammer.ts → MigrateImportProgrammer.ts} +116 -114
  84. package/src/programmers/{NestControllerProgrammer.ts → MigrateNestControllerProgrammer.ts} +50 -48
  85. package/src/programmers/{NestMethodProgrammer.ts → MigrateNestMethodProgrammer.ts} +249 -243
  86. package/src/programmers/{NestModuleProgrammer.ts → MigrateNestModuleProgrammer.ts} +62 -62
  87. package/src/programmers/{NestProgrammer.ts → MigrateNestProgrammer.ts} +74 -74
  88. package/src/programmers/{SchemaProgrammer.ts → MigrateSchemaProgrammer.ts} +257 -255
  89. package/src/structures/IMigrateProgram.ts +9 -9
  90. package/src/structures/IMigrateRoute.ts +46 -45
  91. package/src/structures/ISwaggeSchema.ts +90 -90
  92. package/src/structures/ISwaggerInfo.ts +80 -80
  93. package/src/utils/FilePrinter.ts +36 -36
  94. package/src/utils/SetupWizard.ts +12 -12
  95. package/src/utils/StringUtil.ts +60 -60
  96. package/src/utils/{JsonTypeChecker.ts → SwaggerTypeChecker.ts} +67 -67
  97. package/lib/analyzers/ControllerAnalyzer.js.map +0 -1
  98. package/lib/analyzers/MethodAnalyzer.js.map +0 -1
  99. package/lib/archivers/FileArchiver.js.map +0 -1
  100. package/lib/programmers/ApiFileProgrammer.js +0 -28
  101. package/lib/programmers/ApiFileProgrammer.js.map +0 -1
  102. package/lib/programmers/ApiFunctionProgrammer.js.map +0 -1
  103. package/lib/programmers/ApiNamespaceProgrammer.js.map +0 -1
  104. package/lib/programmers/ApiProgrammer.js.map +0 -1
  105. package/lib/programmers/ApiSimulatationProgrammer.js.map +0 -1
  106. package/lib/programmers/DtoProgrammer.js.map +0 -1
  107. package/lib/programmers/ImportProgrammer.js.map +0 -1
  108. package/lib/programmers/NestControllerProgrammer.js.map +0 -1
  109. package/lib/programmers/NestMethodProgrammer.js.map +0 -1
  110. package/lib/programmers/NestModuleProgrammer.js.map +0 -1
  111. package/lib/programmers/NestProgrammer.js.map +0 -1
  112. package/lib/programmers/SchemaProgrammer.js.map +0 -1
  113. package/lib/utils/JsonTypeChecker.js +0 -34
  114. package/lib/utils/JsonTypeChecker.js.map +0 -1
@@ -1,128 +1,132 @@
1
- import { HashMap, IPointer, hash } from "tstl";
2
- import ts from "typescript";
3
- import { Escaper } from "typia/lib/utils/Escaper";
4
-
5
- import { IMigrateProgram } from "../module";
6
- import { IMigrateFile } from "../structures/IMigrateFile";
7
- import { FilePrinter } from "../utils/FilePrinter";
8
- import { StringUtil } from "../utils/StringUtil";
9
- import { ApiFileProgrammer } from "./ApiFileProgrammer";
10
- import { DtoProgrammer } from "./DtoProgrammer";
11
- import { ImportProgrammer } from "./ImportProgrammer";
12
-
13
- export namespace ApiProgrammer {
14
- export const write = (program: IMigrateProgram): IMigrateFile[] => {
15
- const dict: HashMap<string[], ApiFileProgrammer.IProps> = new HashMap(
16
- (x) => hash(x.join(".")),
17
- (a, b) => a.join(".") === b.join("."),
18
- );
19
- for (const controller of program.controllers)
20
- for (const route of controller.routes) {
21
- const namespace: string[] = [
22
- ...controller.path.split("/"),
23
- ...route.path.split("/"),
24
- ]
25
- .filter((str) => !!str.length && str[0] !== ":")
26
- .map(StringUtil.normalize)
27
- .map((str) => (Escaper.variable(str) ? str : `_${str}`));
28
- const last: IPointer<ApiFileProgrammer.IProps> = {
29
- value: dict.take(namespace, () => ({
30
- namespace,
31
- children: new Set(),
32
- entries: [],
33
- })),
34
- };
35
- last.value.entries.push({
36
- controller,
37
- route,
38
- alias: route.name,
39
- });
40
- namespace.slice(0, -1).forEach((_i, i, array) => {
41
- const partial: string[] = namespace.slice(0, array.length - i);
42
- const props: ApiFileProgrammer.IProps = dict.take(partial, () => ({
43
- namespace: partial,
44
- children: new Set(),
45
- entries: [],
46
- }));
47
- props.children.add(last.value.namespace.at(-1)!);
48
- last.value = props;
49
- });
50
- const top = dict.take([], () => ({
51
- namespace: [],
52
- children: new Set(),
53
- entries: [],
54
- }));
55
- if (namespace.length) top.children.add(namespace[0]);
56
- }
57
- for (const { second: props } of dict)
58
- props.entries.forEach(
59
- (entry, i) =>
60
- (entry.alias = StringUtil.escapeDuplicate([
61
- ...props.children,
62
- ...entry.route.parameters.map((p) => p.key),
63
- ...(entry.route.body ? [entry.route.body.key] : []),
64
- ...(entry.route.query ? [entry.route.query.key] : []),
65
- ...props.entries.filter((_, j) => i !== j).map((e) => e.alias),
66
- ])(entry.alias)),
67
- );
68
-
69
- const output: IMigrateFile[] = [...dict].map(({ second: props }) => ({
70
- location: `src/${program.config.mode === "nest" ? "api/" : ""}functional/${props.namespace.join("/")}`,
71
- file: "index.ts",
72
- content: FilePrinter.write({
73
- statements: ApiFileProgrammer.write(program.config)(
74
- program.swagger.components,
75
- )(props),
76
- }),
77
- }));
78
- if (program.config.mode === "sdk")
79
- output.push(
80
- ...[...DtoProgrammer.write(program.swagger.components).entries()].map(
81
- ([key, value]) => ({
82
- location: "src/structures",
83
- file: `${key}.ts`,
84
- content: FilePrinter.write({
85
- statements: writeDtoFile(key, value),
86
- }),
87
- }),
88
- ),
89
- );
90
- return output;
91
- };
92
-
93
- const writeDtoFile = (
94
- key: string,
95
- modulo: DtoProgrammer.IModule,
96
- ): ts.Statement[] => {
97
- const importer = new ImportProgrammer();
98
- const statements: ts.Statement[] = iterate(importer)(modulo);
99
- if (statements.length === 0) return [];
100
-
101
- return [
102
- ...importer.toStatements((name) => `./${name}`, key),
103
- ...(importer.empty() ? [] : [FilePrinter.enter()]),
104
- ...statements,
105
- ];
106
- };
107
-
108
- const iterate =
109
- (importer: ImportProgrammer) =>
110
- (modulo: DtoProgrammer.IModule): ts.Statement[] => {
111
- const output: ts.Statement[] = [];
112
- if (modulo.programmer !== null) output.push(modulo.programmer(importer));
113
- if (modulo.children.size) {
114
- const internal: ts.Statement[] = [];
115
- for (const child of modulo.children.values())
116
- internal.push(...iterate(importer)(child));
117
- output.push(
118
- ts.factory.createModuleDeclaration(
119
- [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],
120
- ts.factory.createIdentifier(modulo.name),
121
- ts.factory.createModuleBlock(internal),
122
- ts.NodeFlags.Namespace,
123
- ),
124
- );
125
- }
126
- return output;
127
- };
128
- }
1
+ import { HashMap, IPointer, hash } from "tstl";
2
+ import ts from "typescript";
3
+ import { Escaper } from "typia/lib/utils/Escaper";
4
+
5
+ import { IMigrateProgram } from "../module";
6
+ import { IMigrateFile } from "../structures/IMigrateFile";
7
+ import { FilePrinter } from "../utils/FilePrinter";
8
+ import { StringUtil } from "../utils/StringUtil";
9
+ import { MigrateApiFileProgrammer } from "./MigrateApiFileProgrammer";
10
+ import { MigrateDtoProgrammer } from "./MigrateDtoProgrammer";
11
+ import { MigrateImportProgrammer } from "./MigrateImportProgrammer";
12
+
13
+ export namespace MigrateApiProgrammer {
14
+ export const write = (program: IMigrateProgram): IMigrateFile[] => {
15
+ const dict: HashMap<string[], MigrateApiFileProgrammer.IProps> =
16
+ new HashMap(
17
+ (x) => hash(x.join(".")),
18
+ (a, b) => a.join(".") === b.join("."),
19
+ );
20
+ for (const controller of program.controllers)
21
+ for (const route of controller.routes) {
22
+ const namespace: string[] = [
23
+ ...controller.path.split("/"),
24
+ ...route.path.split("/"),
25
+ ]
26
+ .filter((str) => !!str.length && str[0] !== ":")
27
+ .map(StringUtil.normalize)
28
+ .map((str) => (Escaper.variable(str) ? str : `_${str}`));
29
+ const last: IPointer<MigrateApiFileProgrammer.IProps> = {
30
+ value: dict.take(namespace, () => ({
31
+ namespace,
32
+ children: new Set(),
33
+ entries: [],
34
+ })),
35
+ };
36
+ last.value.entries.push({
37
+ controller,
38
+ route,
39
+ alias: route.name,
40
+ });
41
+ namespace.slice(0, -1).forEach((_i, i, array) => {
42
+ const partial: string[] = namespace.slice(0, array.length - i);
43
+ const props: MigrateApiFileProgrammer.IProps = dict.take(
44
+ partial,
45
+ () => ({
46
+ namespace: partial,
47
+ children: new Set(),
48
+ entries: [],
49
+ }),
50
+ );
51
+ props.children.add(last.value.namespace.at(-1)!);
52
+ last.value = props;
53
+ });
54
+ const top = dict.take([], () => ({
55
+ namespace: [],
56
+ children: new Set(),
57
+ entries: [],
58
+ }));
59
+ if (namespace.length) top.children.add(namespace[0]);
60
+ }
61
+ for (const { second: props } of dict)
62
+ props.entries.forEach((entry, i) => {
63
+ entry.alias = StringUtil.escapeDuplicate([
64
+ ...props.children,
65
+ ...entry.route.parameters.map((p) => p.key),
66
+ ...(entry.route.body ? [entry.route.body.key] : []),
67
+ ...(entry.route.query ? [entry.route.query.key] : []),
68
+ ...props.entries.filter((_, j) => i !== j).map((e) => e.alias),
69
+ ])(entry.alias);
70
+ entry.route.accessor = [...props.namespace, entry.alias];
71
+ });
72
+
73
+ const output: IMigrateFile[] = [...dict].map(({ second: props }) => ({
74
+ location: `src/${program.config.mode === "nest" ? "api/" : ""}functional/${props.namespace.join("/")}`,
75
+ file: "index.ts",
76
+ content: FilePrinter.write({
77
+ statements: MigrateApiFileProgrammer.write(program.config)(
78
+ program.swagger.components,
79
+ )(props),
80
+ }),
81
+ }));
82
+ if (program.config.mode === "sdk")
83
+ output.push(
84
+ ...[
85
+ ...MigrateDtoProgrammer.write(program.swagger.components).entries(),
86
+ ].map(([key, value]) => ({
87
+ location: "src/structures",
88
+ file: `${key}.ts`,
89
+ content: FilePrinter.write({
90
+ statements: writeDtoFile(key, value),
91
+ }),
92
+ })),
93
+ );
94
+ return output;
95
+ };
96
+
97
+ const writeDtoFile = (
98
+ key: string,
99
+ modulo: MigrateDtoProgrammer.IModule,
100
+ ): ts.Statement[] => {
101
+ const importer = new MigrateImportProgrammer();
102
+ const statements: ts.Statement[] = iterate(importer)(modulo);
103
+ if (statements.length === 0) return [];
104
+
105
+ return [
106
+ ...importer.toStatements((name) => `./${name}`, key),
107
+ ...(importer.empty() ? [] : [FilePrinter.newLine()]),
108
+ ...statements,
109
+ ];
110
+ };
111
+
112
+ const iterate =
113
+ (importer: MigrateImportProgrammer) =>
114
+ (modulo: MigrateDtoProgrammer.IModule): ts.Statement[] => {
115
+ const output: ts.Statement[] = [];
116
+ if (modulo.programmer !== null) output.push(modulo.programmer(importer));
117
+ if (modulo.children.size) {
118
+ const internal: ts.Statement[] = [];
119
+ for (const child of modulo.children.values())
120
+ internal.push(...iterate(importer)(child));
121
+ output.push(
122
+ ts.factory.createModuleDeclaration(
123
+ [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],
124
+ ts.factory.createIdentifier(modulo.name),
125
+ ts.factory.createModuleBlock(internal),
126
+ ts.NodeFlags.Namespace,
127
+ ),
128
+ );
129
+ }
130
+ return output;
131
+ };
132
+ }