@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,74 +1,78 @@
1
- import { IPointer } from "tstl";
2
- import ts from "typescript";
3
-
4
- import { ISwaggerSchema } from "../structures/ISwaggeSchema";
5
- import { ISwaggerComponents } from "../structures/ISwaggerComponents";
6
- import { FilePrinter } from "../utils/FilePrinter";
7
- import { MapUtil } from "../utils/MapUtil";
8
- import { ImportProgrammer } from "./ImportProgrammer";
9
- import { SchemaProgrammer } from "./SchemaProgrammer";
10
-
11
- export namespace DtoProgrammer {
12
- export interface IModule {
13
- name: string;
14
- children: Map<string, IModule>;
15
- programmer:
16
- | null
17
- | ((importer: ImportProgrammer) => ts.TypeAliasDeclaration);
18
- }
19
-
20
- export const write = (
21
- components: ISwaggerComponents,
22
- ): Map<string, IModule> => {
23
- const dict: Map<string, IModule> = new Map();
24
- for (const [key, value] of Object.entries(components.schemas ?? {}))
25
- prepare(dict)(key)((importer) =>
26
- writeAlias(components)(importer)(key, value),
27
- );
28
- return dict;
29
- };
30
-
31
- const prepare =
32
- (dict: Map<string, IModule>) =>
33
- (name: string) =>
34
- (programmer: (importer: ImportProgrammer) => ts.TypeAliasDeclaration) => {
35
- const accessors: string[] = name.split(".");
36
- const modulo: IPointer<IModule> = { value: null! };
37
-
38
- accessors.forEach((acc, i) => {
39
- modulo.value = MapUtil.take(dict)(acc)(() => ({
40
- name: acc,
41
- children: new Map(),
42
- programmer: null,
43
- }));
44
- if (i === accessors.length - 1) modulo.value.programmer = programmer;
45
- dict = modulo.value.children;
46
- });
47
- return modulo!;
48
- };
49
-
50
- const writeAlias =
51
- (components: ISwaggerComponents) =>
52
- (importer: ImportProgrammer) =>
53
- (key: string, value: ISwaggerSchema) =>
54
- FilePrinter.description(
55
- ts.factory.createTypeAliasDeclaration(
56
- [ts.factory.createToken(ts.SyntaxKind.ExportKeyword)],
57
- key.split(".").at(-1)!,
58
- [],
59
- SchemaProgrammer.write(components)(importer)(value),
60
- ),
61
- writeComment(value),
62
- );
63
- }
64
-
65
- const writeComment = (schema: ISwaggerSchema): string =>
66
- [
67
- ...(schema.description?.length ? [schema.description] : []),
68
- ...(schema.description?.length &&
69
- (schema.title !== undefined || schema.deprecated === true)
70
- ? [""]
71
- : []),
72
- ...(schema.title !== undefined ? [`@title ${schema.title}`] : []),
73
- ...(schema.deprecated === true ? [`@deprecated`] : []),
74
- ].join("\n");
1
+ import { IPointer } from "tstl";
2
+ import ts from "typescript";
3
+
4
+ import { ISwaggerSchema } from "../structures/ISwaggeSchema";
5
+ import { ISwaggerComponents } from "../structures/ISwaggerComponents";
6
+ import { FilePrinter } from "../utils/FilePrinter";
7
+ import { MapUtil } from "../utils/MapUtil";
8
+ import { MigrateImportProgrammer } from "./MigrateImportProgrammer";
9
+ import { MigrateSchemaProgrammer } from "./MigrateSchemaProgrammer";
10
+
11
+ export namespace MigrateDtoProgrammer {
12
+ export interface IModule {
13
+ name: string;
14
+ children: Map<string, IModule>;
15
+ programmer:
16
+ | null
17
+ | ((importer: MigrateImportProgrammer) => ts.TypeAliasDeclaration);
18
+ }
19
+
20
+ export const write = (
21
+ components: ISwaggerComponents,
22
+ ): Map<string, IModule> => {
23
+ const dict: Map<string, IModule> = new Map();
24
+ for (const [key, value] of Object.entries(components.schemas ?? {}))
25
+ prepare(dict)(key)((importer) =>
26
+ writeAlias(components)(importer)(key, value),
27
+ );
28
+ return dict;
29
+ };
30
+
31
+ const prepare =
32
+ (dict: Map<string, IModule>) =>
33
+ (name: string) =>
34
+ (
35
+ programmer: (
36
+ importer: MigrateImportProgrammer,
37
+ ) => ts.TypeAliasDeclaration,
38
+ ) => {
39
+ const accessors: string[] = name.split(".");
40
+ const modulo: IPointer<IModule> = { value: null! };
41
+
42
+ accessors.forEach((acc, i) => {
43
+ modulo.value = MapUtil.take(dict)(acc)(() => ({
44
+ name: acc,
45
+ children: new Map(),
46
+ programmer: null,
47
+ }));
48
+ if (i === accessors.length - 1) modulo.value.programmer = programmer;
49
+ dict = modulo.value.children;
50
+ });
51
+ return modulo!;
52
+ };
53
+
54
+ const writeAlias =
55
+ (components: ISwaggerComponents) =>
56
+ (importer: MigrateImportProgrammer) =>
57
+ (key: string, value: ISwaggerSchema) =>
58
+ FilePrinter.description(
59
+ ts.factory.createTypeAliasDeclaration(
60
+ [ts.factory.createToken(ts.SyntaxKind.ExportKeyword)],
61
+ key.split(".").at(-1)!,
62
+ [],
63
+ MigrateSchemaProgrammer.write(components)(importer)(value),
64
+ ),
65
+ writeComment(value),
66
+ );
67
+ }
68
+
69
+ const writeComment = (schema: ISwaggerSchema): string =>
70
+ [
71
+ ...(schema.description?.length ? [schema.description] : []),
72
+ ...(schema.description?.length &&
73
+ (schema.title !== undefined || schema.deprecated === true)
74
+ ? [""]
75
+ : []),
76
+ ...(schema.title !== undefined ? [`@title ${schema.title}`] : []),
77
+ ...(schema.deprecated === true ? [`@deprecated`] : []),
78
+ ].join("\n");
@@ -1,114 +1,116 @@
1
- import ts from "typescript";
2
- import { ExpressionFactory } from "typia/lib/factories/ExpressionFactory";
3
-
4
- import { FilePrinter } from "../utils/FilePrinter";
5
- import { MapUtil } from "../utils/MapUtil";
6
-
7
- export class ImportProgrammer {
8
- private external_: Map<
9
- string,
10
- {
11
- default: string | null;
12
- instances: Set<string>;
13
- }
14
- > = new Map();
15
- private dtos_: Set<string> = new Set();
16
-
17
- public constructor() {}
18
-
19
- public empty(): boolean {
20
- return this.external_.size === 0 && this.dtos_.size === 0;
21
- }
22
-
23
- public external(props: ImportProgrammer.IProps): string {
24
- const element = MapUtil.take(this.external_)(props.library)(() => ({
25
- default: null,
26
- instances: new Set(),
27
- }));
28
- const name: string = props.name.split(".")[0];
29
- if (props.type === "default") element.default = props.name;
30
- else element.instances.add(name);
31
- return name;
32
- }
33
-
34
- public dto(name: string): ts.TypeReferenceNode {
35
- const file: string = name.split(".")[0];
36
- this.dtos_.add(file);
37
- return ts.factory.createTypeReferenceNode(name);
38
- }
39
-
40
- public tag(type: string, arg: number | string): ts.TypeReferenceNode {
41
- this.external({
42
- type: "instance",
43
- library: "typia",
44
- name: "tags",
45
- });
46
- return ts.factory.createTypeReferenceNode(`tags.${type}`, [
47
- ts.factory.createLiteralTypeNode(
48
- typeof arg === "string"
49
- ? ts.factory.createStringLiteral(arg)
50
- : ExpressionFactory.number(arg),
51
- ),
52
- ]);
53
- }
54
-
55
- public toStatements(
56
- dtoPath: (name: string) => string,
57
- current?: string,
58
- ): ts.Statement[] {
59
- return [
60
- ...[...this.external_.entries()].map(([library, props]) => {
61
- return ts.factory.createImportDeclaration(
62
- undefined,
63
- ts.factory.createImportClause(
64
- false,
65
- props.default !== null
66
- ? ts.factory.createIdentifier(props.default)
67
- : undefined,
68
- props.instances.size
69
- ? ts.factory.createNamedImports(
70
- [...props.instances].map((i) =>
71
- ts.factory.createImportSpecifier(
72
- false,
73
- undefined,
74
- ts.factory.createIdentifier(i),
75
- ),
76
- ),
77
- )
78
- : undefined,
79
- ),
80
- ts.factory.createStringLiteral(library),
81
- );
82
- }),
83
- ...(this.external_.size && this.dtos_.size ? [FilePrinter.enter()] : []),
84
- ...[...this.dtos_]
85
- .filter(
86
- current ? (name) => name !== current!.split(".")[0] : () => true,
87
- )
88
- .map((i) =>
89
- ts.factory.createImportDeclaration(
90
- undefined,
91
- ts.factory.createImportClause(
92
- false,
93
- undefined,
94
- ts.factory.createNamedImports([
95
- ts.factory.createImportSpecifier(
96
- false,
97
- undefined,
98
- ts.factory.createIdentifier(i),
99
- ),
100
- ]),
101
- ),
102
- ts.factory.createStringLiteral(dtoPath(i)),
103
- ),
104
- ),
105
- ];
106
- }
107
- }
108
- export namespace ImportProgrammer {
109
- export interface IProps {
110
- type: "default" | "instance";
111
- library: string;
112
- name: string;
113
- }
114
- }
1
+ import ts from "typescript";
2
+ import { ExpressionFactory } from "typia/lib/factories/ExpressionFactory";
3
+
4
+ import { FilePrinter } from "../utils/FilePrinter";
5
+ import { MapUtil } from "../utils/MapUtil";
6
+
7
+ export class MigrateImportProgrammer {
8
+ private external_: Map<
9
+ string,
10
+ {
11
+ default: string | null;
12
+ instances: Set<string>;
13
+ }
14
+ > = new Map();
15
+ private dtos_: Set<string> = new Set();
16
+
17
+ public constructor() {}
18
+
19
+ public empty(): boolean {
20
+ return this.external_.size === 0 && this.dtos_.size === 0;
21
+ }
22
+
23
+ public external(props: MigrateImportProgrammer.IProps): string {
24
+ const element = MapUtil.take(this.external_)(props.library)(() => ({
25
+ default: null,
26
+ instances: new Set(),
27
+ }));
28
+ const name: string = props.name.split(".")[0];
29
+ if (props.type === "default") element.default = props.name;
30
+ else element.instances.add(name);
31
+ return name;
32
+ }
33
+
34
+ public dto(name: string): ts.TypeReferenceNode {
35
+ const file: string = name.split(".")[0];
36
+ this.dtos_.add(file);
37
+ return ts.factory.createTypeReferenceNode(name);
38
+ }
39
+
40
+ public tag(type: string, arg: number | string): ts.TypeReferenceNode {
41
+ this.external({
42
+ type: "instance",
43
+ library: "typia",
44
+ name: "tags",
45
+ });
46
+ return ts.factory.createTypeReferenceNode(`tags.${type}`, [
47
+ ts.factory.createLiteralTypeNode(
48
+ typeof arg === "string"
49
+ ? ts.factory.createStringLiteral(arg)
50
+ : ExpressionFactory.number(arg),
51
+ ),
52
+ ]);
53
+ }
54
+
55
+ public toStatements(
56
+ dtoPath: (name: string) => string,
57
+ current?: string,
58
+ ): ts.Statement[] {
59
+ return [
60
+ ...[...this.external_.entries()].map(([library, props]) => {
61
+ return ts.factory.createImportDeclaration(
62
+ undefined,
63
+ ts.factory.createImportClause(
64
+ false,
65
+ props.default !== null
66
+ ? ts.factory.createIdentifier(props.default)
67
+ : undefined,
68
+ props.instances.size
69
+ ? ts.factory.createNamedImports(
70
+ [...props.instances].map((i) =>
71
+ ts.factory.createImportSpecifier(
72
+ false,
73
+ undefined,
74
+ ts.factory.createIdentifier(i),
75
+ ),
76
+ ),
77
+ )
78
+ : undefined,
79
+ ),
80
+ ts.factory.createStringLiteral(library),
81
+ );
82
+ }),
83
+ ...(this.external_.size && this.dtos_.size
84
+ ? [FilePrinter.newLine()]
85
+ : []),
86
+ ...[...this.dtos_]
87
+ .filter(
88
+ current ? (name) => name !== current!.split(".")[0] : () => true,
89
+ )
90
+ .map((i) =>
91
+ ts.factory.createImportDeclaration(
92
+ undefined,
93
+ ts.factory.createImportClause(
94
+ false,
95
+ undefined,
96
+ ts.factory.createNamedImports([
97
+ ts.factory.createImportSpecifier(
98
+ false,
99
+ undefined,
100
+ ts.factory.createIdentifier(i),
101
+ ),
102
+ ]),
103
+ ),
104
+ ts.factory.createStringLiteral(dtoPath(i)),
105
+ ),
106
+ ),
107
+ ];
108
+ }
109
+ }
110
+ export namespace MigrateImportProgrammer {
111
+ export interface IProps {
112
+ type: "default" | "instance";
113
+ library: string;
114
+ name: string;
115
+ }
116
+ }
@@ -1,48 +1,50 @@
1
- import ts from "typescript";
2
-
3
- import { IMigrateController } from "../structures/IMigrateController";
4
- import { ISwaggerComponents } from "../structures/ISwaggerComponents";
5
- import { FilePrinter } from "../utils/FilePrinter";
6
- import { StringUtil } from "../utils/StringUtil";
7
- import { ImportProgrammer } from "./ImportProgrammer";
8
- import { NestMethodProgrammer } from "./NestMethodProgrammer";
9
-
10
- export namespace NestControllerProgrammer {
11
- export const write =
12
- (components: ISwaggerComponents) =>
13
- (controller: IMigrateController): ts.Statement[] => {
14
- const importer: ImportProgrammer = new ImportProgrammer();
15
- const $class = ts.factory.createClassDeclaration(
16
- [
17
- ts.factory.createDecorator(
18
- ts.factory.createCallExpression(
19
- ts.factory.createIdentifier(
20
- importer.external({
21
- type: "instance",
22
- library: "@nestjs/common",
23
- name: "Controller",
24
- }),
25
- ),
26
- [],
27
- [ts.factory.createStringLiteral(controller.path)],
28
- ),
29
- ),
30
- ts.factory.createToken(ts.SyntaxKind.ExportKeyword),
31
- ],
32
- controller.name,
33
- [],
34
- [],
35
- controller.routes.map(NestMethodProgrammer.write(components)(importer)),
36
- );
37
- return [
38
- ...importer.toStatements(
39
- (ref) =>
40
- `${"../".repeat(
41
- StringUtil.splitWithNormalization(controller.location).length - 1,
42
- )}api/structures/${ref}`,
43
- ),
44
- ...(importer.empty() ? [] : [FilePrinter.enter()]),
45
- $class,
46
- ];
47
- };
48
- }
1
+ import ts from "typescript";
2
+
3
+ import { IMigrateController } from "../structures/IMigrateController";
4
+ import { ISwaggerComponents } from "../structures/ISwaggerComponents";
5
+ import { FilePrinter } from "../utils/FilePrinter";
6
+ import { StringUtil } from "../utils/StringUtil";
7
+ import { MigrateImportProgrammer } from "./MigrateImportProgrammer";
8
+ import { MigrateNestMethodProgrammer } from "./MigrateNestMethodProgrammer";
9
+
10
+ export namespace MigrateNestControllerProgrammer {
11
+ export const write =
12
+ (components: ISwaggerComponents) =>
13
+ (controller: IMigrateController): ts.Statement[] => {
14
+ const importer: MigrateImportProgrammer = new MigrateImportProgrammer();
15
+ const $class = ts.factory.createClassDeclaration(
16
+ [
17
+ ts.factory.createDecorator(
18
+ ts.factory.createCallExpression(
19
+ ts.factory.createIdentifier(
20
+ importer.external({
21
+ type: "instance",
22
+ library: "@nestjs/common",
23
+ name: "Controller",
24
+ }),
25
+ ),
26
+ [],
27
+ [ts.factory.createStringLiteral(controller.path)],
28
+ ),
29
+ ),
30
+ ts.factory.createToken(ts.SyntaxKind.ExportKeyword),
31
+ ],
32
+ controller.name,
33
+ [],
34
+ [],
35
+ controller.routes.map(
36
+ MigrateNestMethodProgrammer.write(components)(importer),
37
+ ),
38
+ );
39
+ return [
40
+ ...importer.toStatements(
41
+ (ref) =>
42
+ `${"../".repeat(
43
+ StringUtil.splitWithNormalization(controller.location).length - 1,
44
+ )}api/structures/${ref}`,
45
+ ),
46
+ ...(importer.empty() ? [] : [FilePrinter.newLine()]),
47
+ $class,
48
+ ];
49
+ };
50
+ }