@nestia/migrate 0.2.0 → 0.2.1-dev.20230803

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 (30) hide show
  1. package/lib/NestiaMigrateApplication.js +2 -2
  2. package/lib/NestiaMigrateApplication.js.map +1 -1
  3. package/lib/bundles/TEMPLATE.js +2 -2
  4. package/lib/programmers/ControllerProgrammer.d.ts +2 -1
  5. package/lib/programmers/ControllerProgrammer.js +12 -17
  6. package/lib/programmers/ControllerProgrammer.js.map +1 -1
  7. package/lib/programmers/DtoProgrammer.d.ts +2 -1
  8. package/lib/programmers/DtoProgrammer.js +5 -5
  9. package/lib/programmers/DtoProgrammer.js.map +1 -1
  10. package/lib/programmers/ImportProgrammer.d.ts +11 -0
  11. package/lib/programmers/ImportProgrammer.js +20 -0
  12. package/lib/programmers/ImportProgrammer.js.map +1 -0
  13. package/lib/programmers/MigrateProgrammer.d.ts +2 -1
  14. package/lib/programmers/MigrateProgrammer.js +3 -3
  15. package/lib/programmers/MigrateProgrammer.js.map +1 -1
  16. package/lib/programmers/RouteProgrammer.d.ts +2 -1
  17. package/lib/programmers/RouteProgrammer.js +45 -17
  18. package/lib/programmers/RouteProgrammer.js.map +1 -1
  19. package/lib/programmers/SchemaProgrammer.d.ts +2 -1
  20. package/lib/programmers/SchemaProgrammer.js +64 -42
  21. package/lib/programmers/SchemaProgrammer.js.map +1 -1
  22. package/package.json +4 -4
  23. package/src/NestiaMigrateApplication.ts +6 -2
  24. package/src/bundles/TEMPLATE.ts +2 -2
  25. package/src/programmers/ControllerProgrammer.ts +50 -54
  26. package/src/programmers/DtoProgrammer.ts +29 -25
  27. package/src/programmers/ImportProgrammer.ts +29 -0
  28. package/src/programmers/MigrateProgrammer.ts +17 -14
  29. package/src/programmers/RouteProgrammer.ts +99 -31
  30. package/src/programmers/SchemaProgrammer.ts +82 -40
@@ -5,39 +5,61 @@ const Escaper_1 = require("typia/lib/utils/Escaper");
5
5
  const JsonTypeChecker_1 = require("../utils/JsonTypeChecker");
6
6
  var SchemaProgrammer;
7
7
  (function (SchemaProgrammer) {
8
- SchemaProgrammer.write = (references) => (schema) => writeSchema(references)(() => () => { })(schema);
9
- const writeSchema = (references) => (tagger) => (schema) => {
8
+ SchemaProgrammer.write = (components) => (references) => (schema) => writeSchema(components)(references)(() => () => { })(true)(schema);
9
+ const writeSchema = (components) => (references) => (tagger) => (final) => (schema) => {
10
10
  // SPECIAL TYPES
11
11
  if (JsonTypeChecker_1.JsonTypeChecker.isUnknown(schema))
12
12
  return "any";
13
- else if (JsonTypeChecker_1.JsonTypeChecker.isAnyOf(schema))
14
- return schema.anyOf
15
- .map(writeSchema(references)(tagger))
16
- .join(" | ");
13
+ const type = (() => {
14
+ if (JsonTypeChecker_1.JsonTypeChecker.isAnyOf(schema))
15
+ return ("(" +
16
+ schema.anyOf
17
+ .map(writeSchema(components)(references)(tagger)(false))
18
+ .join(" | ") +
19
+ ")");
20
+ else if (JsonTypeChecker_1.JsonTypeChecker.isOneOf(schema))
21
+ return schema.oneOf
22
+ .map(writeSchema(components)(references)(tagger)(false))
23
+ .join(" | ");
24
+ // ATOMIC TYPES
25
+ else if (JsonTypeChecker_1.JsonTypeChecker.isBoolean(schema))
26
+ return writeBoolean(tagger)(schema);
27
+ else if (JsonTypeChecker_1.JsonTypeChecker.isInteger(schema))
28
+ return writeInteger(tagger)(schema);
29
+ else if (JsonTypeChecker_1.JsonTypeChecker.isNumber(schema))
30
+ return writeNumber(tagger)(schema);
31
+ else if (JsonTypeChecker_1.JsonTypeChecker.isString(schema))
32
+ return writeString(tagger)(schema);
33
+ // INSTANCE TYPES
34
+ else if (JsonTypeChecker_1.JsonTypeChecker.isArray(schema))
35
+ return writeArray(components)(references)(tagger)(schema);
36
+ else if (JsonTypeChecker_1.JsonTypeChecker.isObject(schema))
37
+ return writeObject(components)(references)(schema);
38
+ else if (JsonTypeChecker_1.JsonTypeChecker.isReference(schema)) {
39
+ references.push(schema);
40
+ return schema.$ref.replace(`#/components/schemas/`, ``);
41
+ }
42
+ else
43
+ return "any";
44
+ })();
45
+ if (type === "any" || final === false)
46
+ return type;
47
+ return isNullable(components)(schema) ? `${type} | null` : type;
48
+ };
49
+ const isNullable = (components) => (schema) => {
50
+ var _a;
51
+ if (JsonTypeChecker_1.JsonTypeChecker.isAnyOf(schema))
52
+ return schema.anyOf.some(isNullable(components));
17
53
  else if (JsonTypeChecker_1.JsonTypeChecker.isOneOf(schema))
18
- return schema.oneOf
19
- .map(writeSchema(references)(tagger))
20
- .join(" | ");
21
- // ATOMIC TYPES
22
- else if (JsonTypeChecker_1.JsonTypeChecker.isBoolean(schema))
23
- return writeBoolean(tagger)(schema);
24
- else if (JsonTypeChecker_1.JsonTypeChecker.isInteger(schema))
25
- return writeInteger(tagger)(schema);
26
- else if (JsonTypeChecker_1.JsonTypeChecker.isNumber(schema))
27
- return writeNumber(tagger)(schema);
28
- else if (JsonTypeChecker_1.JsonTypeChecker.isString(schema))
29
- return writeString(tagger)(schema);
30
- // INSTANCE TYPES
31
- else if (JsonTypeChecker_1.JsonTypeChecker.isArray(schema))
32
- return writeArray(references)(tagger)(schema);
33
- else if (JsonTypeChecker_1.JsonTypeChecker.isObject(schema))
34
- return writeObject(references)(schema);
54
+ return schema.oneOf.some(isNullable(components));
35
55
  else if (JsonTypeChecker_1.JsonTypeChecker.isReference(schema)) {
36
- references.push(schema);
37
- return schema.$ref.replace(`#/components/schemas/`, ``);
56
+ const $id = schema.$ref.replace("#/components/schemas/", "");
57
+ const target = ((_a = components.schemas) !== null && _a !== void 0 ? _a : {})[$id];
58
+ return target === undefined
59
+ ? false
60
+ : isNullable(components)(target);
38
61
  }
39
- // NOTHING
40
- return "any";
62
+ return schema.nullable === true;
41
63
  };
42
64
  const writeBoolean = (tagger) => (schema) => {
43
65
  if (schema.default)
@@ -78,49 +100,49 @@ var SchemaProgrammer;
78
100
  tagger("pattern")(schema.pattern);
79
101
  return "string";
80
102
  };
81
- const writeArray = (references) => (tagger) => (schema) => schema["x-typia-tuple"]
103
+ const writeArray = (components) => (references) => (tagger) => (schema) => schema["x-typia-tuple"]
82
104
  ? `[${schema["x-typia-tuple"].items
83
- .map(writeTupleElement(references))
105
+ .map(writeTupleElement(components)(references))
84
106
  .join(", ")}]`
85
- : `Array<${writeSchema(references)(tagger)(schema.items)}>`;
86
- const writeTupleElement = (references) => (schema) => {
87
- const name = writeSchema(references)(() => () => { })(schema);
107
+ : `Array<${writeSchema(components)(references)(tagger)(true)(schema.items)}>`;
108
+ const writeTupleElement = (components) => (references) => (schema) => {
109
+ const name = writeSchema(components)(references)(() => () => { })(true)(schema);
88
110
  return schema["x-typia-optional"]
89
111
  ? `${name}?`
90
112
  : schema["x-typia-rest"]
91
113
  ? `...${name}`
92
114
  : name;
93
115
  };
94
- const writeObject = (references) => (schema) => {
116
+ const writeObject = (components) => (references) => (schema) => {
95
117
  var _a;
96
118
  const entries = Object.entries((_a = schema.properties) !== null && _a !== void 0 ? _a : {});
97
119
  return typeof schema.additionalProperties === "object"
98
120
  ? entries.length
99
- ? `${writeStaticObject(references)(schema)} & ${writeDynamicObject(references)(schema.additionalProperties)}`
100
- : writeDynamicObject(references)(schema.additionalProperties)
101
- : writeStaticObject(references)(schema);
121
+ ? `${writeStaticObject(components)(references)(schema)} & ${writeDynamicObject(components)(references)(schema.additionalProperties)}`
122
+ : writeDynamicObject(components)(references)(schema.additionalProperties)
123
+ : writeStaticObject(components)(references)(schema);
102
124
  };
103
- const writeStaticObject = (references) => (schema) => {
125
+ const writeStaticObject = (components) => (references) => (schema) => {
104
126
  var _a;
105
127
  return [
106
128
  "{",
107
129
  ...Object.entries((_a = schema.properties) !== null && _a !== void 0 ? _a : {})
108
130
  .map(([key, value]) => {
109
131
  var _a;
110
- return writeProperty(references)(key)(((_a = schema.required) !== null && _a !== void 0 ? _a : []).some((r) => r === key))(value);
132
+ return writeProperty(components)(references)(key)(((_a = schema.required) !== null && _a !== void 0 ? _a : []).some((r) => r === key))(value);
111
133
  })
112
134
  .map(tab(4)),
113
135
  "}",
114
136
  ].join("\n");
115
137
  };
116
- const writeDynamicObject = (references) => (additional) => {
138
+ const writeDynamicObject = (components) => (references) => (additional) => {
117
139
  return [
118
140
  "{",
119
- tab(4)(writeProperty(references)("[key: string]", true)(true)(additional)),
141
+ tab(4)(writeProperty(components)(references)("[key: string]", true)(true)(additional)),
120
142
  "}",
121
143
  ].join("\n");
122
144
  };
123
- const writeProperty = (references) => (key, ensureVariable = false) => (required) => (schema) => {
145
+ const writeProperty = (components) => (references) => (key, ensureVariable = false) => (required) => (schema) => {
124
146
  var _a;
125
147
  const content = [];
126
148
  const tagger = (tag) => (value) => {
@@ -143,7 +165,7 @@ var SchemaProgrammer;
143
165
  if (schema.title)
144
166
  tagger("@title")(schema.title);
145
167
  // GET TYPE WITH SPECIAL TAGS
146
- const type = writeSchema(references)(tagger)(schema);
168
+ const type = writeSchema(components)(references)(tagger)(true)(schema);
147
169
  // ENDS WITH DEPRECATED TAG
148
170
  if (schema.deprecated)
149
171
  tagger("@deprecated")();
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaProgrammer.js","sourceRoot":"","sources":["../../src/programmers/SchemaProgrammer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SchemaProgrammer.js","sourceRoot":"","sources":["../../src/programmers/SchemaProgrammer.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.2.0",
3
+ "version": "0.2.1-dev.20230803",
4
4
  "description": "Migration program from swagger to NestJS",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -30,8 +30,8 @@
30
30
  },
31
31
  "homepage": "https://github.com/samchon/nestia#readme",
32
32
  "devDependencies": {
33
- "@nestia/core": "^1.5.1",
34
- "@nestia/fetcher": "^1.5.1",
33
+ "@nestia/core": "^1.5.3",
34
+ "@nestia/fetcher": "^1.5.3",
35
35
  "@trivago/prettier-plugin-sort-imports": "^4.1.1",
36
36
  "@types/node": "^20.3.3",
37
37
  "prettier": "^2.8.8",
@@ -45,7 +45,7 @@
45
45
  "typescript-transform-paths": "^3.4.6"
46
46
  },
47
47
  "dependencies": {
48
- "typia": "^4.1.13"
48
+ "typia": "^4.1.14"
49
49
  },
50
50
  "files": [
51
51
  "lib",
@@ -29,7 +29,9 @@ export class NestiaMigrateApplication {
29
29
  public write(): IMigrateFile[] {
30
30
  if (this.files === null) {
31
31
  const program: IMigrateProgram = this.analyze();
32
- this.files = MigrateProgrammer.write(program);
32
+ this.files = MigrateProgrammer.write(this.swagger.components)(
33
+ program,
34
+ );
33
35
  }
34
36
  return this.files;
35
37
  }
@@ -38,7 +40,9 @@ export class NestiaMigrateApplication {
38
40
  (archiver: NestiaMigrateApplication.IArchiver) =>
39
41
  (output: string): void => {
40
42
  const program: IMigrateProgram = this.analyze();
41
- const files: IMigrateFile[] = MigrateProgrammer.write(program);
43
+ const files: IMigrateFile[] = MigrateProgrammer.write(
44
+ this.swagger.components,
45
+ )(program);
42
46
 
43
47
  try {
44
48
  cp.execSync(
@@ -47,7 +47,7 @@ export const TEMPLATE = [
47
47
  {
48
48
  "location": "",
49
49
  "file": "package.json",
50
- "content": "{\r\n \"private\": true,\r\n \"name\": \"@ORGANIZATION/PROJECT\",\r\n \"version\": \"0.1.0\",\r\n \"description\": \"Starter kit of Nestia\",\r\n \"main\": \"lib/index.js\",\r\n \"scripts\": {\r\n \"----------------------------------------------\": \"\",\r\n \"build\": \"npm run build:sdk && npm run build:main && npm run build:test\",\r\n \"build:api\": \"rimraf packages/api/lib && npm run build:sdk && tsc -p packages/api/tsconfig.json\",\r\n \"build:main\": \"rimraf lib && tsc\",\r\n \"build:sdk\": \"rimraf src/api/functional && nestia sdk\",\r\n \"build:swagger\": \"npx nestia swagger\",\r\n \"build:test\": \"rimraf bin && tsc -p test/tsconfig.json\",\r\n \"dev\": \"npm run build:test -- --watch\",\r\n \"eslint\": \"eslint src && eslint test\",\r\n \"eslint:fix\": \"eslint --fix src && eslint --fix test\",\r\n \"package:api\": \"npm run build:swagger && npm run build:api && cd packages/api && npm publish\",\r\n \"prepare\": \"ts-patch install\",\r\n \"prettier\": \"prettier src --write && prettier test --write\",\r\n \"-----------------------------------------------\": \"\",\r\n \"start\": \"node lib/executable/server\",\r\n \"test\": \"node bin/test\",\r\n \"------------------------------------------------\": \"\"\r\n },\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/samchon/nestia-template\"\r\n },\r\n \"keywords\": [\r\n \"nestia\",\r\n \"template\",\r\n \"boilerplate\"\r\n ],\r\n \"author\": \"AUTHOR\",\r\n \"license\": \"MIT\",\r\n \"bugs\": {\r\n \"url\": \"https://github.com/samchon/nestia-template/issues\"\r\n },\r\n \"homepage\": \"https://github.com/samchon/nestia-template#readme\",\r\n \"devDependencies\": {\r\n \"@nestia/e2e\": \"^0.3.6\",\r\n \"@nestia/sdk\": \"^1.5.1\",\r\n \"@trivago/prettier-plugin-sort-imports\": \"^3.3.1\",\r\n \"@types/cli\": \"^0.11.21\",\r\n \"@types/inquirer\": \"^8.2.5\",\r\n \"@types/node\": \"^18.11.0\",\r\n \"@types/uuid\": \"^8.3.4\",\r\n \"@typescript-eslint/eslint-plugin\": \"^5.40.0\",\r\n \"@typescript-eslint/parser\": \"^5.40.0\",\r\n \"chalk\": \"^4.1.0\",\r\n \"cli\": \"^1.0.1\",\r\n \"eslint-plugin-deprecation\": \"^1.4.1\",\r\n \"nestia\": \"^4.3.2\",\r\n \"prettier\": \"^2.7.1\",\r\n \"rimraf\": \"^3.0.2\",\r\n \"source-map-support\": \"^0.5.21\",\r\n \"ts-node\": \"^10.9.1\",\r\n \"ts-patch\": \"^3.0.0\",\r\n \"typescript\": \"^5.1.3\",\r\n \"typescript-transform-paths\": \"^3.4.6\"\r\n },\r\n \"dependencies\": {\r\n \"@nestia/core\": \"^1.5.1\",\r\n \"serialize-error\": \"^4.1.0\",\r\n \"tstl\": \"^2.5.13\",\r\n \"typia\": \"^4.1.13\",\r\n \"uuid\": \"^9.0.0\"\r\n },\r\n \"stackblitz\": {\r\n \"startCommand\": \"npm run prepare && npm run build:test && npm run test\"\r\n }\r\n}\r\n"
50
+ "content": "{\r\n \"private\": true,\r\n \"name\": \"@ORGANIZATION/PROJECT\",\r\n \"version\": \"0.1.0\",\r\n \"description\": \"Starter kit of Nestia\",\r\n \"main\": \"lib/index.js\",\r\n \"scripts\": {\r\n \"----------------------------------------------\": \"\",\r\n \"build\": \"npm run build:sdk && npm run build:main && npm run build:test\",\r\n \"build:api\": \"rimraf packages/api/lib && npm run build:sdk && tsc -p packages/api/tsconfig.json\",\r\n \"build:main\": \"rimraf lib && tsc\",\r\n \"build:sdk\": \"rimraf src/api/functional && nestia sdk\",\r\n \"build:swagger\": \"npx nestia swagger\",\r\n \"build:test\": \"rimraf bin && tsc -p test/tsconfig.json\",\r\n \"dev\": \"npm run build:test -- --watch\",\r\n \"eslint\": \"eslint src && eslint test\",\r\n \"eslint:fix\": \"eslint --fix src && eslint --fix test\",\r\n \"package:api\": \"npm run build:swagger && npm run build:api && cd packages/api && npm publish\",\r\n \"prepare\": \"ts-patch install\",\r\n \"prettier\": \"prettier src --write && prettier test --write\",\r\n \"-----------------------------------------------\": \"\",\r\n \"start\": \"node lib/executable/server\",\r\n \"test\": \"node bin/test\",\r\n \"------------------------------------------------\": \"\"\r\n },\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/samchon/nestia-template\"\r\n },\r\n \"keywords\": [\r\n \"nestia\",\r\n \"template\",\r\n \"boilerplate\"\r\n ],\r\n \"author\": \"AUTHOR\",\r\n \"license\": \"MIT\",\r\n \"bugs\": {\r\n \"url\": \"https://github.com/samchon/nestia-template/issues\"\r\n },\r\n \"homepage\": \"https://github.com/samchon/nestia-template#readme\",\r\n \"devDependencies\": {\r\n \"@nestia/e2e\": \"^0.3.6\",\r\n \"@nestia/sdk\": \"^1.5.1\",\r\n \"@trivago/prettier-plugin-sort-imports\": \"^3.3.1\",\r\n \"@types/cli\": \"^0.11.21\",\r\n \"@types/inquirer\": \"^8.2.5\",\r\n \"@types/node\": \"^18.11.0\",\r\n \"@types/uuid\": \"^8.3.4\",\r\n \"@typescript-eslint/eslint-plugin\": \"^5.40.0\",\r\n \"@typescript-eslint/parser\": \"^5.40.0\",\r\n \"chalk\": \"^4.1.0\",\r\n \"cli\": \"^1.0.1\",\r\n \"eslint-plugin-deprecation\": \"^1.4.1\",\r\n \"nestia\": \"^4.3.2\",\r\n \"prettier\": \"^2.7.1\",\r\n \"rimraf\": \"^3.0.2\",\r\n \"source-map-support\": \"^0.5.21\",\r\n \"ts-node\": \"^10.9.1\",\r\n \"ts-patch\": \"^3.0.0\",\r\n \"typescript\": \"^5.1.3\",\r\n \"typescript-transform-paths\": \"^3.4.6\"\r\n },\r\n \"dependencies\": {\r\n \"@nestia/core\": \"^1.5.1\",\r\n \"serialize-error\": \"^4.1.0\",\r\n \"tstl\": \"^2.5.13\",\r\n \"typia\": \"^4.1.14\",\r\n \"uuid\": \"^9.0.0\"\r\n },\r\n \"stackblitz\": {\r\n \"startCommand\": \"npm run prepare && npm run build:test && npm run test\"\r\n }\r\n}\r\n"
51
51
  },
52
52
  {
53
53
  "location": "/packages/api",
@@ -57,7 +57,7 @@ export const TEMPLATE = [
57
57
  {
58
58
  "location": "/packages/api",
59
59
  "file": "package.json",
60
- "content": "{\r\n \"name\": \"@ORGANIZATION/PROJECT-api\",\r\n \"version\": \"0.0.0\",\r\n \"description\": \"API for PROJECT\",\r\n \"main\": \"lib/index.js\",\r\n \"typings\": \"lib/index.d.ts\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/samchon/nestia-template\"\r\n },\r\n \"author\": \"AUTHOR\",\r\n \"license\": \"MIT\",\r\n \"bugs\": {\r\n \"url\": \"https://github.com/samchon/nestia-template/issues\"\r\n },\r\n \"homepage\": \"https://github.com/samchon/nestia-template#readme\",\r\n \"dependencies\": {\r\n \"@nestia/fetcher\": \"^1.5.1\",\r\n \"typia\": \"^4.1.13\"\r\n }\r\n}\r\n"
60
+ "content": "{\r\n \"name\": \"@ORGANIZATION/PROJECT-api\",\r\n \"version\": \"0.0.0\",\r\n \"description\": \"API for PROJECT\",\r\n \"main\": \"lib/index.js\",\r\n \"typings\": \"lib/index.d.ts\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/samchon/nestia-template\"\r\n },\r\n \"author\": \"AUTHOR\",\r\n \"license\": \"MIT\",\r\n \"bugs\": {\r\n \"url\": \"https://github.com/samchon/nestia-template/issues\"\r\n },\r\n \"homepage\": \"https://github.com/samchon/nestia-template#readme\",\r\n \"dependencies\": {\r\n \"@nestia/fetcher\": \"^1.5.1\",\r\n \"typia\": \"^4.1.14\"\r\n }\r\n}\r\n"
61
61
  },
62
62
  {
63
63
  "location": "/packages/api",
@@ -2,8 +2,10 @@ import { IMigrateController } from "../structures/IMigrateController";
2
2
  import { IMigrateRoute } from "../structures/IMigrateRoute";
3
3
  import { ISwaggerSchema } from "../structures/ISwaggeSchema";
4
4
  import { ISwagger } from "../structures/ISwagger";
5
+ import { ISwaggerComponents } from "../structures/ISwaggerComponents";
5
6
  import { MapUtil } from "../utils/MapUtil";
6
7
  import { StringUtil } from "../utils/StringUtil";
8
+ import { ImportProgrammer } from "./ImportProgrammer";
7
9
  import { RouteProgrammer } from "./RouteProgrammer";
8
10
 
9
11
  export namespace ControllerProgrammer {
@@ -112,61 +114,55 @@ export namespace ControllerProgrammer {
112
114
  }
113
115
  };
114
116
 
115
- export const write = (controller: IMigrateController): string => {
116
- const references: ISwaggerSchema.IReference[] = [];
117
- const body: string = [
118
- `@Controller(${JSON.stringify(controller.path)})`,
119
- `export class ${controller.name} {`,
120
- controller.routes
121
- .map((r) =>
122
- RouteProgrammer.write(references)(r)
123
- .split("\n")
124
- .map((l) => ` ${l}`)
125
- .join("\n"),
126
- )
127
- .join("\n\n"),
128
- `}`,
129
- ].join("\n");
117
+ export const write =
118
+ (components: ISwaggerComponents) =>
119
+ (controller: IMigrateController): string => {
120
+ const importer: ImportProgrammer = new ImportProgrammer();
121
+ const references: ISwaggerSchema.IReference[] = [];
122
+ const body: string = [
123
+ `@${importer.add({
124
+ library: "@nestjs/common",
125
+ instance: "Controller",
126
+ })}(${JSON.stringify(controller.path)})`,
127
+ `export class ${controller.name} {`,
128
+ controller.routes
129
+ .map((r) =>
130
+ RouteProgrammer.write(
131
+ (library) => (instance) =>
132
+ importer.add({
133
+ library,
134
+ instance,
135
+ }),
136
+ )(components)(references)(r)
137
+ .split("\n")
138
+ .map((l) => ` ${l}`)
139
+ .join("\n"),
140
+ )
141
+ .join("\n\n"),
142
+ `}`,
143
+ ].join("\n");
130
144
 
131
- const core: boolean = controller.routes.some(
132
- (r) =>
133
- r.body !== null ||
134
- r.response === null ||
135
- r.response.type === "application/json",
136
- );
137
- const typia: boolean = controller.routes.some(
138
- (m) => m.response !== null,
139
- );
140
- const common: Set<string> = new Set(["Controller"]);
141
- for (const r of controller.routes)
142
- if (r.response?.type === "text/plain") {
143
- common.add("Header");
144
- common.add(StringUtil.capitalize(r.method));
145
- }
146
-
147
- const dtoImports: string[] = [
148
- ...new Set(
149
- references.map(
150
- (r) =>
151
- r.$ref
152
- .replace("#/components/schemas/", "")
153
- .split(".")[0],
145
+ const dtoImports: string[] = [
146
+ ...new Set(
147
+ references.map(
148
+ (r) =>
149
+ r.$ref
150
+ .replace("#/components/schemas/", "")
151
+ .split(".")[0],
152
+ ),
154
153
  ),
155
- ),
156
- ].map(
157
- (ref) =>
158
- `import { ${ref} } from "${"../".repeat(
159
- StringUtil.split(controller.location).length - 1,
160
- )}api/structures/${ref}"`,
161
- );
154
+ ].map(
155
+ (ref) =>
156
+ `import { ${ref} } from "${"../".repeat(
157
+ StringUtil.split(controller.location).length - 1,
158
+ )}api/structures/${ref}"`,
159
+ );
162
160
 
163
- return [
164
- ...(core ? [`import core from "@nestia/core";`] : []),
165
- `import { ${[...common].join(", ")} } from "@nestjs/common";`,
166
- ...(typia ? [`import typia from "typia";`] : []),
167
- "",
168
- ...(dtoImports.length ? [...dtoImports, ""] : []),
169
- body,
170
- ].join("\n");
171
- };
161
+ return [
162
+ importer.toScript(),
163
+ "",
164
+ ...(dtoImports.length ? [...dtoImports, ""] : []),
165
+ body,
166
+ ].join("\n");
167
+ };
172
168
  }
@@ -1,6 +1,7 @@
1
1
  import { IMigrateDto } from "../structures/IMigrateDto";
2
2
  import { ISwaggerSchema } from "../structures/ISwaggeSchema";
3
3
  import { ISwagger } from "../structures/ISwagger";
4
+ import { ISwaggerComponents } from "../structures/ISwaggerComponents";
4
5
  import { MapUtil } from "../utils/MapUtil";
5
6
  import { SchemaProgrammer } from "./SchemaProgrammer";
6
7
 
@@ -25,30 +26,33 @@ export namespace DtoProgrammer {
25
26
  return modulo;
26
27
  };
27
28
 
28
- export const write = (dto: IMigrateDto): string => {
29
- const references: ISwaggerSchema.IReference[] = [];
30
- const body: string = iterate(references)(dto);
31
- const imports: string[] = [
32
- ...new Set(
33
- references
34
- .map(
35
- (s) =>
36
- s.$ref
37
- .replace(`#/components/schemas/`, ``)
38
- .split(".")[0],
39
- )
40
- .filter((str) => str !== dto.name),
41
- ),
42
- ];
43
- const content: string[] = [
44
- ...imports.map((i) => `import { ${i} } from "./${i}";`),
45
- ...(imports.length ? [""] : []),
46
- body,
47
- ];
48
- return content.join("\n");
49
- };
29
+ export const write =
30
+ (components: ISwaggerComponents) =>
31
+ (dto: IMigrateDto): string => {
32
+ const references: ISwaggerSchema.IReference[] = [];
33
+ const body: string = iterate(components)(references)(dto);
34
+ const imports: string[] = [
35
+ ...new Set(
36
+ references
37
+ .map(
38
+ (s) =>
39
+ s.$ref
40
+ .replace(`#/components/schemas/`, ``)
41
+ .split(".")[0],
42
+ )
43
+ .filter((str) => str !== dto.name),
44
+ ),
45
+ ];
46
+ const content: string[] = [
47
+ ...imports.map((i) => `import { ${i} } from "./${i}";`),
48
+ ...(imports.length ? [""] : []),
49
+ body,
50
+ ];
51
+ return content.join("\n");
52
+ };
50
53
 
51
54
  const iterate =
55
+ (components: ISwaggerComponents) =>
52
56
  (references: ISwaggerSchema.IReference[]) =>
53
57
  (dto: IMigrateDto): string => {
54
58
  const content: string[] = [];
@@ -63,15 +67,15 @@ export namespace DtoProgrammer {
63
67
  ]
64
68
  : []),
65
69
  `export type ${dto.name} = ${SchemaProgrammer.write(
66
- references,
67
- )(dto.schema)}`,
70
+ components,
71
+ )(references)(dto.schema)}`,
68
72
  );
69
73
  }
70
74
  if (dto.children.length) {
71
75
  content.push(
72
76
  `export namespace ${dto.name} {`,
73
77
  ...dto.children.map((c) =>
74
- iterate(references)(c)
78
+ iterate(components)(references)(c)
75
79
  .split("\n")
76
80
  .map((l) => ` ${l}`)
77
81
  .join("\n"),
@@ -0,0 +1,29 @@
1
+ import { MapUtil } from "../utils/MapUtil";
2
+
3
+ export class ImportProgrammer {
4
+ private dict: Map<string, Set<string>> = new Map();
5
+
6
+ public add(props: ImportProgrammer.IProps): string {
7
+ MapUtil.take(this.dict)(props.library)(() => new Set()).add(
8
+ props.instance,
9
+ );
10
+ return props.instance;
11
+ }
12
+
13
+ public toScript(): string {
14
+ return [...this.dict.entries()]
15
+ .map(
16
+ ([library, properties]) =>
17
+ `import { ${[...properties].join(
18
+ ", ",
19
+ )} } from "${library}";`,
20
+ )
21
+ .join("\n");
22
+ }
23
+ }
24
+ export namespace ImportProgrammer {
25
+ export interface IProps {
26
+ library: string;
27
+ instance: string;
28
+ }
29
+ }
@@ -1,6 +1,7 @@
1
1
  import { IMigrateFile } from "../structures/IMigrateFile";
2
2
  import { IMigrateProgram } from "../structures/IMigrateProgram";
3
3
  import { ISwagger } from "../structures/ISwagger";
4
+ import { ISwaggerComponents } from "../structures/ISwaggerComponents";
4
5
  import { ControllerProgrammer } from "./ControllerProgrammer";
5
6
  import { DtoProgrammer } from "./DtoProgrammer";
6
7
 
@@ -14,18 +15,20 @@ export namespace MigrateProgrammer {
14
15
  };
15
16
  };
16
17
 
17
- export const write = (program: IMigrateProgram): IMigrateFile[] => {
18
- return [
19
- ...program.controllers.map((c) => ({
20
- location: c.location,
21
- file: `${c.name}.ts`,
22
- content: ControllerProgrammer.write(c),
23
- })),
24
- ...program.structures.map((s) => ({
25
- location: s.location,
26
- file: `${s.name}.ts`,
27
- content: DtoProgrammer.write(s),
28
- })),
29
- ];
30
- };
18
+ export const write =
19
+ (components: ISwaggerComponents) =>
20
+ (program: IMigrateProgram): IMigrateFile[] => {
21
+ return [
22
+ ...program.controllers.map((c) => ({
23
+ location: c.location,
24
+ file: `${c.name}.ts`,
25
+ content: ControllerProgrammer.write(components)(c),
26
+ })),
27
+ ...program.structures.map((s) => ({
28
+ location: s.location,
29
+ file: `${s.name}.ts`,
30
+ content: DtoProgrammer.write(components)(s),
31
+ })),
32
+ ];
33
+ };
31
34
  }