@nestia/migrate 0.9.7 → 0.11.0

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 (57) hide show
  1. package/lib/MigrateApplication.d.ts +3 -1
  2. package/lib/MigrateApplication.js +1558 -1507
  3. package/lib/MigrateApplication.js.map +1 -1
  4. package/lib/analyzers/MigrateMethodAnalyzer.js +31 -18
  5. package/lib/analyzers/MigrateMethodAnalyzer.js.map +1 -1
  6. package/lib/bundles/NEST_TEMPLATE.js +1 -1
  7. package/lib/internal/MigrateCommander.js +1 -1
  8. package/lib/internal/MigrateCommander.js.map +1 -1
  9. package/lib/programmers/MigrateSchemaProgrammer.js +1 -1
  10. package/lib/programmers/MigrateSchemaProgrammer.js.map +1 -1
  11. package/lib/structures/ISwaggerComponents.d.ts +5 -1
  12. package/lib/structures/ISwaggerRoute.d.ts +4 -33
  13. package/lib/structures/ISwaggerRouteBodyContent.d.ts +14 -0
  14. package/lib/structures/ISwaggerRouteBodyContent.js +3 -0
  15. package/lib/structures/ISwaggerRouteBodyContent.js.map +1 -0
  16. package/lib/structures/ISwaggerRouteHeader.js +2 -0
  17. package/lib/structures/ISwaggerRouteHeader.js.map +1 -0
  18. package/lib/structures/ISwaggerRouteRequestBody.d.ts +11 -0
  19. package/lib/structures/ISwaggerRouteRequestBody.js +3 -0
  20. package/lib/structures/ISwaggerRouteRequestBody.js.map +1 -0
  21. package/lib/structures/ISwaggerRouteResponse.d.ts +10 -0
  22. package/lib/structures/ISwaggerRouteResponse.js +3 -0
  23. package/lib/structures/ISwaggerRouteResponse.js.map +1 -0
  24. package/lib/structures/ISwaggerV20.d.ts +8 -0
  25. package/lib/structures/ISwaggerV20.js +3 -0
  26. package/lib/structures/ISwaggerV20.js.map +1 -0
  27. package/lib/structures/ISwaggerV31.d.ts +9 -0
  28. package/lib/structures/ISwaggerV31.js +3 -0
  29. package/lib/structures/ISwaggerV31.js.map +1 -0
  30. package/lib/utils/OpenApiConverter.d.ts +7 -0
  31. package/lib/utils/OpenApiConverter.js +3132 -0
  32. package/lib/utils/OpenApiConverter.js.map +1 -0
  33. package/lib/utils/SwaggerComponentsExplorer.d.ts +9 -0
  34. package/lib/utils/SwaggerComponentsExplorer.js +29 -0
  35. package/lib/utils/SwaggerComponentsExplorer.js.map +1 -0
  36. package/lib/utils/SwaggerTypeChecker.d.ts +0 -2
  37. package/lib/utils/SwaggerTypeChecker.js +0 -6
  38. package/lib/utils/SwaggerTypeChecker.js.map +1 -1
  39. package/package.json +78 -74
  40. package/src/MigrateApplication.ts +17 -8
  41. package/src/analyzers/MigrateMethodAnalyzer.ts +59 -19
  42. package/src/bundles/NEST_TEMPLATE.ts +1 -1
  43. package/src/internal/MigrateCommander.ts +1 -1
  44. package/src/programmers/MigrateSchemaProgrammer.ts +4 -1
  45. package/src/structures/ISwagger.ts +23 -23
  46. package/src/structures/ISwaggerComponents.ts +5 -1
  47. package/src/structures/ISwaggerRoute.ts +7 -36
  48. package/src/structures/ISwaggerRouteBodyContent.ts +15 -0
  49. package/src/structures/ISwaggerRouteHeader.ts +0 -0
  50. package/src/structures/ISwaggerRouteRequestBody.ts +12 -0
  51. package/src/structures/ISwaggerRouteResponse.ts +11 -0
  52. package/src/structures/ISwaggerV20.ts +10 -0
  53. package/src/structures/ISwaggerV31.ts +10 -0
  54. package/src/utils/OpenApiConverter.ts +20 -0
  55. package/src/utils/SwaggerComponentsExplorer.ts +43 -0
  56. package/src/utils/SwaggerTypeChecker.ts +0 -12
  57. /package/{src/structures/ISwaggerRouteHeaders.ts → lib/structures/ISwaggerRouteHeader.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenApiConverter.js","sourceRoot":"","sources":["../../src/utils/OpenApiConverter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ISwaggerComponents } from "../module";
2
+ import { ISwaggerRouteParameter } from "../structures/ISwaggerRouteParameter";
3
+ import { ISwaggerRouteRequestBody } from "../structures/ISwaggerRouteRequestBody";
4
+ import { ISwaggerRouteResponse } from "../structures/ISwaggerRouteResponse";
5
+ export declare namespace SwaggerComponentsExplorer {
6
+ const getParameter: (components: ISwaggerComponents) => (schema: ISwaggerRouteParameter | ISwaggerRouteParameter.IReference) => ISwaggerRouteParameter | null;
7
+ const getRequestBody: (components: ISwaggerComponents) => (schema: ISwaggerRouteRequestBody | ISwaggerRouteRequestBody.IReference) => ISwaggerRouteRequestBody | null;
8
+ const getResponse: (components: ISwaggerComponents) => (schema: ISwaggerRouteResponse | ISwaggerRouteResponse.IReference) => ISwaggerRouteResponse | null;
9
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SwaggerComponentsExplorer = void 0;
4
+ const SwaggerTypeChecker_1 = require("./SwaggerTypeChecker");
5
+ var SwaggerComponentsExplorer;
6
+ (function (SwaggerComponentsExplorer) {
7
+ SwaggerComponentsExplorer.getParameter = (components) => (schema) => {
8
+ var _a, _b;
9
+ return SwaggerTypeChecker_1.SwaggerTypeChecker.isReference(schema) &&
10
+ schema.$ref.startsWith("#/components/parameters/")
11
+ ? (_b = (_a = components.parameters) === null || _a === void 0 ? void 0 : _a[schema.$ref.replace("#/components/parameters/", "")]) !== null && _b !== void 0 ? _b : null
12
+ : schema;
13
+ };
14
+ SwaggerComponentsExplorer.getRequestBody = (components) => (schema) => {
15
+ var _a, _b;
16
+ return SwaggerTypeChecker_1.SwaggerTypeChecker.isReference(schema) &&
17
+ schema.$ref.startsWith("#/components/requestBodies/")
18
+ ? (_b = (_a = components.requestBodies) === null || _a === void 0 ? void 0 : _a[schema.$ref.replace("#/components/requestBodies/", "")]) !== null && _b !== void 0 ? _b : null
19
+ : schema;
20
+ };
21
+ SwaggerComponentsExplorer.getResponse = (components) => (schema) => {
22
+ var _a, _b;
23
+ return SwaggerTypeChecker_1.SwaggerTypeChecker.isReference(schema) &&
24
+ schema.$ref.startsWith("#/components/responses/")
25
+ ? (_b = (_a = components.responses) === null || _a === void 0 ? void 0 : _a[schema.$ref.replace("#/components/responses/", "")]) !== null && _b !== void 0 ? _b : null
26
+ : schema;
27
+ };
28
+ })(SwaggerComponentsExplorer || (exports.SwaggerComponentsExplorer = SwaggerComponentsExplorer = {}));
29
+ //# sourceMappingURL=SwaggerComponentsExplorer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwaggerComponentsExplorer.js","sourceRoot":"","sources":["../../src/utils/SwaggerComponentsExplorer.ts"],"names":[],"mappings":";;;AAIA,6DAA0D;AAE1D,IAAiB,yBAAyB,CAoCzC;AApCD,WAAiB,yBAAyB;IAC3B,sCAAY,GACvB,CAAC,UAA8B,EAAE,EAAE,CACnC,CACE,MAAkE,EACnC,EAAE;;QACjC,OAAA,uCAAkB,CAAC,WAAW,CAAC,MAAM,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC;YAChD,CAAC,CAAC,MAAA,MAAA,UAAU,CAAC,UAAU,0CACnB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CACpD,mCAAI,IAAI;YACX,CAAC,CAAE,MAAiC,CAAA;KAAA,CAAC;IAE9B,wCAAc,GACzB,CAAC,UAA8B,EAAE,EAAE,CACnC,CACE,MAAsE,EACrC,EAAE;;QACnC,OAAA,uCAAkB,CAAC,WAAW,CAAC,MAAM,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC;YACnD,CAAC,CAAC,MAAA,MAAA,UAAU,CAAC,aAAa,0CACtB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CACvD,mCAAI,IAAI;YACX,CAAC,CAAE,MAAmC,CAAA;KAAA,CAAC;IAEhC,qCAAW,GACtB,CAAC,UAA8B,EAAE,EAAE,CACnC,CACE,MAAgE,EAClC,EAAE;;QAChC,OAAA,uCAAkB,CAAC,WAAW,CAAC,MAAM,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC;YAC/C,CAAC,CAAC,MAAA,MAAA,UAAU,CAAC,SAAS,0CAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CACnD,mCAAI,IAAI;YACX,CAAC,CAAE,MAAgC,CAAA;KAAA,CAAC;AAC5C,CAAC,EApCgB,yBAAyB,yCAAzB,yBAAyB,QAoCzC"}
@@ -1,5 +1,4 @@
1
1
  import { ISwaggerComponents } from "../structures/ISwaggerComponents";
2
- import { ISwaggerRouteParameter } from "../structures/ISwaggerRouteParameter";
3
2
  import { ISwaggerSchema } from "../structures/ISwaggerSchema";
4
3
  export declare namespace SwaggerTypeChecker {
5
4
  const isAnyOf: (schema: ISwaggerSchema) => schema is ISwaggerSchema.IAnyOf;
@@ -14,5 +13,4 @@ export declare namespace SwaggerTypeChecker {
14
13
  const isReference: (schema: ISwaggerSchema) => schema is ISwaggerSchema.IReference;
15
14
  const isUnknown: (schema: ISwaggerSchema) => schema is ISwaggerSchema.IUnknown;
16
15
  const isNullable: (components: ISwaggerComponents) => (schema: ISwaggerSchema) => boolean;
17
- const getParameter: (components: ISwaggerComponents) => (schema: ISwaggerRouteParameter | ISwaggerRouteParameter.IReference) => ISwaggerRouteParameter | null;
18
16
  }
@@ -30,11 +30,5 @@ var SwaggerTypeChecker;
30
30
  }
31
31
  return schema.nullable === true;
32
32
  };
33
- SwaggerTypeChecker.getParameter = (components) => (schema) => {
34
- var _a, _b;
35
- return SwaggerTypeChecker.isReference(schema) && schema.$ref.startsWith("#/components/parameters/")
36
- ? (_b = (_a = components.parameters) === null || _a === void 0 ? void 0 : _a[schema.$ref.replace("#/components/parameters/", "")]) !== null && _b !== void 0 ? _b : null
37
- : schema;
38
- };
39
33
  })(SwaggerTypeChecker || (exports.SwaggerTypeChecker = SwaggerTypeChecker = {}));
40
34
  //# sourceMappingURL=SwaggerTypeChecker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SwaggerTypeChecker.js","sourceRoot":"","sources":["../../src/utils/SwaggerTypeChecker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SwaggerTypeChecker.js","sourceRoot":"","sources":["../../src/utils/SwaggerTypeChecker.ts"],"names":[],"mappings":";;;AAGA,IAAiB,kBAAkB,CA+DlC;AA/DD,WAAiB,kBAAkB;IACpB,0BAAO,GAAG,CACrB,MAAsB,EACW,EAAE,CAAE,MAAc,CAAC,KAAK,KAAK,SAAS,CAAC;IAE7D,0BAAO,GAAG,CACrB,MAAsB,EACW,EAAE,CAAE,MAAc,CAAC,KAAK,KAAK,SAAS,CAAC;IAE7D,6BAAU,GAAG,CACxB,MAAsB,EACc,EAAE,CAAE,MAAc,CAAC,IAAI,KAAK,MAAM,CAAC;IAE5D,4BAAS,GAAG,CACvB,MAAsB,EACa,EAAE,CAAE,MAAc,CAAC,IAAI,KAAK,SAAS,CAAC;IAE9D,4BAAS,GAAG,CACvB,MAAsB,EACa,EAAE,CAAE,MAAc,CAAC,IAAI,KAAK,SAAS,CAAC;IAE9D,2BAAQ,GAAG,CACtB,MAAsB,EACY,EAAE,CAAE,MAAc,CAAC,IAAI,KAAK,QAAQ,CAAC;IAE5D,2BAAQ,GAAG,CACtB,MAAsB,EACY,EAAE,CAAE,MAAc,CAAC,IAAI,KAAK,QAAQ,CAAC;IAE5D,0BAAO,GAAG,CACrB,MAAsB,EACW,EAAE,CAAE,MAAc,CAAC,IAAI,KAAK,OAAO,CAAC;IAE1D,2BAAQ,GAAG,CACtB,MAAsB,EACY,EAAE,CAAE,MAAc,CAAC,IAAI,KAAK,QAAQ,CAAC;IAE5D,8BAAW,GAAG,CACzB,MAAsB,EACe,EAAE,CAAE,MAAc,CAAC,IAAI,KAAK,SAAS,CAAC;IAEhE,4BAAS,GAAG,CACvB,MAAsB,EACa,EAAE,CACpC,MAAc,CAAC,IAAI,KAAK,SAAS;QAClC,CAAC,mBAAA,OAAO,CAAC,MAAM,CAAC;QAChB,CAAC,mBAAA,OAAO,CAAC,MAAM,CAAC;QAChB,CAAC,mBAAA,WAAW,CAAC,MAAM,CAAC,CAAC;IAEV,6BAAU,GACrB,CAAC,UAA8B,EAAE,EAAE,CACnC,CAAC,MAAsB,EAAW,EAAE;;QAClC,IAAI,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAA,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;aAC9C,IAAI,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;YACzC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAA,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;aAC9C,IAAI,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,CAAC,MAAA,UAAU,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YAC/C,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAA,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;QACvE,CAAC;QACD,OAAQ,MAAiC,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC9D,CAAC,CAAC;AACN,CAAC,EA/DgB,kBAAkB,kCAAlB,kBAAkB,QA+DlC"}
package/package.json CHANGED
@@ -1,74 +1,78 @@
1
- {
2
- "name": "@nestia/migrate",
3
- "version": "0.9.7",
4
- "description": "Migration program from swagger to NestJS",
5
- "main": "lib/index.js",
6
- "typings": "lib/index.d.ts",
7
- "bin": {
8
- "@nestia/migrate": "lib/executable/migrate.js"
9
- },
10
- "scripts": {
11
- "build": "rimraf lib && tsc",
12
- "bundle": "ts-node src/executable/bundle.ts",
13
- "dev": "npm run build -- --watch",
14
- "package:next": "npm publish --access public --tag next",
15
- "prepare": "ts-patch install && typia patch && npm run bundle",
16
- "test": "node lib/test"
17
- },
18
- "repository": {
19
- "type": "git",
20
- "url": "https://github.com/samchon/nestia"
21
- },
22
- "keywords": [
23
- "migration",
24
- "swagger",
25
- "NestJS",
26
- "nestia",
27
- "SDK",
28
- "Mockup Simulator"
29
- ],
30
- "author": "Jeongho Nam",
31
- "license": "MIT",
32
- "bugs": {
33
- "url": "https://github.com/samchon/nestia/issues"
34
- },
35
- "homepage": "https://nestia.io",
36
- "devDependencies": {
37
- "@nestia/core": "^2.5.15",
38
- "@nestia/e2e": "^0.4.1",
39
- "@nestia/fetcher": "^2.5.15",
40
- "@nestjs/common": "^10.3.3",
41
- "@nestjs/core": "^10.3.3",
42
- "@nestjs/platform-express": "^10.3.3",
43
- "@nestjs/platform-fastify": "^10.3.3",
44
- "@trivago/prettier-plugin-sort-imports": "^4.3.0",
45
- "@types/express": "^4.17.21",
46
- "@types/inquirer": "^9.0.7",
47
- "@types/node": "^20.3.3",
48
- "dotenv": "^16.3.1",
49
- "dotenv-expand": "^10.0.0",
50
- "rimraf": "^5.0.1",
51
- "serialize-error": "^4.1.0",
52
- "source-map-support": "^0.5.21",
53
- "ts-node": "^10.9.1",
54
- "ts-patch": "^3.1.0",
55
- "typescript-transform-paths": "^3.4.6"
56
- },
57
- "dependencies": {
58
- "commander": "10.0.0",
59
- "inquirer": "8.2.5",
60
- "prettier": "^3.2.5",
61
- "tstl": "^2.5.13",
62
- "typescript": "^5.4.2",
63
- "typia": "^5.5.7"
64
- },
65
- "files": [
66
- "lib",
67
- "src",
68
- "!lib/test",
69
- "!src/test",
70
- "package.json",
71
- "README.md",
72
- "LICENSE"
73
- ]
74
- }
1
+ {
2
+ "name": "@nestia/migrate",
3
+ "version": "0.11.0",
4
+ "description": "Migration program from swagger to NestJS",
5
+ "main": "lib/index.js",
6
+ "typings": "lib/index.d.ts",
7
+ "bin": {
8
+ "@nestia/migrate": "lib/executable/migrate.js"
9
+ },
10
+ "scripts": {
11
+ "build": "rimraf lib && tsc",
12
+ "bundle": "ts-node src/executable/bundle.ts",
13
+ "dev": "npm run build -- --watch",
14
+ "package:next": "npm publish --access public --tag next",
15
+ "prepare": "ts-patch install && typia patch && npm run bundle",
16
+ "test": "node lib/test"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/samchon/nestia"
21
+ },
22
+ "keywords": [
23
+ "migration",
24
+ "swagger",
25
+ "NestJS",
26
+ "nestia",
27
+ "SDK",
28
+ "Mockup Simulator"
29
+ ],
30
+ "author": "Jeongho Nam",
31
+ "license": "MIT",
32
+ "bugs": {
33
+ "url": "https://github.com/samchon/nestia/issues"
34
+ },
35
+ "homepage": "https://nestia.io",
36
+ "devDependencies": {
37
+ "@nestia/core": "^2.6.0",
38
+ "@nestia/e2e": "^0.4.1",
39
+ "@nestia/fetcher": "^2.6.0",
40
+ "@nestjs/common": "^10.3.5",
41
+ "@nestjs/core": "^10.3.5",
42
+ "@nestjs/platform-express": "^10.3.5",
43
+ "@nestjs/platform-fastify": "^10.3.5",
44
+ "@trivago/prettier-plugin-sort-imports": "^4.3.0",
45
+ "@types/express": "^4.17.21",
46
+ "@types/inquirer": "^9.0.7",
47
+ "@types/node": "^20.3.3",
48
+ "@types/swagger2openapi": "^7.0.4",
49
+ "dotenv": "^16.3.1",
50
+ "dotenv-expand": "^10.0.0",
51
+ "rimraf": "^5.0.1",
52
+ "serialize-error": "^4.1.0",
53
+ "source-map-support": "^0.5.21",
54
+ "ts-node": "^10.9.1",
55
+ "ts-patch": "^3.1.0",
56
+ "typescript-transform-paths": "^3.4.6"
57
+ },
58
+ "dependencies": {
59
+ "@apiture/openapi-down-convert": "^0.13.0",
60
+ "commander": "10.0.0",
61
+ "inquirer": "8.2.5",
62
+ "openapi-types": "^12.1.3",
63
+ "prettier": "^3.2.5",
64
+ "swagger2openapi": "^7.0.8",
65
+ "tstl": "^2.5.13",
66
+ "typescript": "^5.4.2",
67
+ "typia": "^5.5.7"
68
+ },
69
+ "files": [
70
+ "lib",
71
+ "src",
72
+ "!lib/test",
73
+ "!src/test",
74
+ "package.json",
75
+ "README.md",
76
+ "LICENSE"
77
+ ]
78
+ }
@@ -10,19 +10,28 @@ import { MigrateNestProgrammer } from "./programmers/MigrateNestProgrammer";
10
10
  import { IMigrateFile } from "./structures/IMigrateFile";
11
11
  import { IMigrateProgram } from "./structures/IMigrateProgram";
12
12
  import { ISwagger } from "./structures/ISwagger";
13
+ import { ISwaggerV20 } from "./structures/ISwaggerV20";
14
+ import { ISwaggerV31 } from "./structures/ISwaggerV31";
15
+ import { OpenApiConverter } from "./utils/OpenApiConverter";
13
16
 
14
17
  export class MigrateApplication {
15
18
  private constructor(public readonly swagger: ISwagger) {}
16
19
 
17
- public static create(swagger: ISwagger): IValidation<MigrateApplication> {
20
+ public static async create(
21
+ swagger: ISwagger | ISwaggerV20 | ISwaggerV31,
22
+ ): Promise<IValidation<MigrateApplication>> {
23
+ swagger = typia.is<ISwaggerV20.IVersion>(swagger)
24
+ ? await OpenApiConverter.v2_0(swagger)
25
+ : typia.is<ISwaggerV31.IVersion>(swagger)
26
+ ? OpenApiConverter.v3_1(swagger)
27
+ : swagger;
18
28
  const result = typia.validate<ISwagger>(swagger);
19
- if (result.success)
20
- return {
21
- success: true,
22
- data: new MigrateApplication(swagger),
23
- errors: [],
24
- };
25
- return result;
29
+ if (result.success === false) return result;
30
+ return {
31
+ success: true,
32
+ data: new MigrateApplication(swagger),
33
+ errors: [],
34
+ };
26
35
  }
27
36
 
28
37
  public nest(config: MigrateApplication.IConfig): MigrateApplication.IOutput {
@@ -5,9 +5,12 @@ import { IMigrateProgram } from "../structures/IMigrateProgram";
5
5
  import { IMigrateRoute } from "../structures/IMigrateRoute";
6
6
  import { ISwagger } from "../structures/ISwagger";
7
7
  import { ISwaggerRoute } from "../structures/ISwaggerRoute";
8
+ import { ISwaggerRouteBodyContent } from "../structures/ISwaggerRouteBodyContent";
8
9
  import { ISwaggerRouteParameter } from "../structures/ISwaggerRouteParameter";
10
+ import { ISwaggerRouteResponse } from "../structures/ISwaggerRouteResponse";
9
11
  import { ISwaggerSchema } from "../structures/ISwaggerSchema";
10
12
  import { StringUtil } from "../utils/StringUtil";
13
+ import { SwaggerComponentsExplorer } from "../utils/SwaggerComponentsExplorer";
11
14
  import { SwaggerTypeChecker } from "../utils/SwaggerTypeChecker";
12
15
 
13
16
  export namespace MigrateMethodAnalzyer {
@@ -21,19 +24,46 @@ export namespace MigrateMethodAnalzyer {
21
24
  const success = emplaceBodySchema("response")(
22
25
  emplaceReference(props.swagger)("response"),
23
26
  )(
24
- route.responses?.["201"] ??
25
- route.responses?.["200"] ??
26
- route.responses?.default,
27
+ (() => {
28
+ const response =
29
+ route.responses?.["201"] ??
30
+ route.responses?.["200"] ??
31
+ route.responses?.default;
32
+ if (response === undefined) return undefined;
33
+ SwaggerComponentsExplorer.getResponse(props.swagger.components)(
34
+ response,
35
+ ) ?? undefined;
36
+ })(),
27
37
  );
28
38
 
29
39
  const failures: string[] = [];
30
40
  for (const p of route.parameters ?? [])
31
41
  if (
32
- SwaggerTypeChecker.getParameter(props.swagger.components)(p) === null
42
+ SwaggerComponentsExplorer.getParameter(props.swagger.components)(
43
+ p,
44
+ ) === null
33
45
  )
34
46
  failures.push(
35
47
  `parameter "${(p as ISwaggerRouteParameter.IReference).$ref}" is not defined in "components.parameters".`,
36
48
  );
49
+ for (const value of Object.values(route.responses ?? {}))
50
+ if (
51
+ SwaggerComponentsExplorer.getResponse(props.swagger.components)(
52
+ value,
53
+ ) === null
54
+ )
55
+ failures.push(
56
+ `response "${(value as ISwaggerRouteResponse.IReference).$ref}" is not defined in "components.responses".`,
57
+ );
58
+ if (
59
+ route.requestBody &&
60
+ SwaggerComponentsExplorer.getRequestBody(props.swagger.components)(
61
+ route.requestBody,
62
+ ) === null
63
+ )
64
+ failures.push(
65
+ `requestBody "${(route.requestBody as ISwaggerRouteParameter.IReference).$ref}" is not defined in "components.requestBodies".`,
66
+ );
37
67
  if (body === false)
38
68
  failures.push(
39
69
  `supports only "application/json", "application/x-www-form-urlencoded", "multipart/form-data" and "text/plain" content type in the request body.`,
@@ -51,12 +81,15 @@ export namespace MigrateMethodAnalzyer {
51
81
  const parameters: ISwaggerRouteParameter[] = (route.parameters ?? [])
52
82
  .filter(
53
83
  (p) =>
54
- SwaggerTypeChecker.getParameter(props.swagger.components)(p)
55
- ?.in === type,
84
+ SwaggerComponentsExplorer.getParameter(props.swagger.components)(
85
+ p,
86
+ )?.in === type,
56
87
  )
57
88
  .map(
58
89
  (p) =>
59
- SwaggerTypeChecker.getParameter(props.swagger.components)(p)!,
90
+ SwaggerComponentsExplorer.getParameter(props.swagger.components)(
91
+ p,
92
+ )!,
60
93
  );
61
94
  if (parameters.length === 0) return null;
62
95
 
@@ -170,8 +203,8 @@ export namespace MigrateMethodAnalzyer {
170
203
  parameterNames.length !==
171
204
  (route.parameters ?? []).filter(
172
205
  (p) =>
173
- SwaggerTypeChecker.getParameter(props.swagger.components)(p)?.in ===
174
- "path",
206
+ SwaggerComponentsExplorer.getParameter(props.swagger.components)(p)
207
+ ?.in === "path",
175
208
  ).length
176
209
  )
177
210
  failures.push(
@@ -200,7 +233,7 @@ export namespace MigrateMethodAnalzyer {
200
233
  : null,
201
234
  parameters: (route.parameters ?? [])
202
235
  .map((p) =>
203
- SwaggerTypeChecker.getParameter(props.swagger.components)(p),
236
+ SwaggerComponentsExplorer.getParameter(props.swagger.components)(p),
204
237
  )
205
238
  .filter((p) => p !== null && p.in === "path")
206
239
  .map((p, i) => ({
@@ -234,15 +267,22 @@ export namespace MigrateMethodAnalzyer {
234
267
  key !== "200" &&
235
268
  key !== "201" &&
236
269
  key !== "default" &&
237
- !!value.content?.["application/json"],
270
+ !!SwaggerComponentsExplorer.getResponse(
271
+ props.swagger.components,
272
+ )(value)?.content?.["application/json"],
238
273
  )
239
- .map(([key, value]) => [
240
- key,
241
- {
242
- description: value.description,
243
- schema: value.content?.["application/json"]?.schema ?? {},
244
- },
245
- ]),
274
+ .map(([key, value]) => {
275
+ const r = SwaggerComponentsExplorer.getResponse(
276
+ props.swagger.components,
277
+ )(value)!;
278
+ return [
279
+ key,
280
+ {
281
+ description: r.description,
282
+ schema: r.content?.["application/json"]?.schema ?? {},
283
+ },
284
+ ];
285
+ }),
246
286
  ),
247
287
  deprecated: route.deprecated ?? false,
248
288
  comment: () => describe(props.swagger)(route),
@@ -314,7 +354,7 @@ export namespace MigrateMethodAnalzyer {
314
354
  (emplacer: (schema: ISwaggerSchema) => ISwaggerSchema.IReference) =>
315
355
  (meta?: {
316
356
  description?: string;
317
- content?: ISwaggerRoute.IContent;
357
+ content?: ISwaggerRouteBodyContent;
318
358
  "x-nestia-encrypted"?: boolean;
319
359
  }): false | null | IMigrateRoute.IBody => {
320
360
  if (!meta?.content) return null;
@@ -47,7 +47,7 @@ export const NEST_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 \"test\": \"node bin/test\",\r\n \"test:webpack\": \"npm run webpack && node bin/test/webpack.js\",\r\n \"------------------------BUILDS------------------------\": \"\",\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 \"prepare\": \"ts-patch install && typia patch\",\r\n \"prettier\": \"prettier src --write && prettier test --write\",\r\n \"------------------------WEBPACK------------------------\": \"\",\r\n \"webpack\": \"rimraf dist && webpack\",\r\n \"webpack:start\": \"cd dist && node dist/server\",\r\n \"------------------------DEPLOYS------------------------\": \"\",\r\n \"package:api\": \"npm run build:swagger && npm run build:api && cd packages/api && npm publish\",\r\n \"start\": \"node lib/executable/server\",\r\n \"start:swagger\": \"ts-node src/executable/swagger.ts\"\r\n },\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/samchon/nestia-start\"\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-start/issues\"\r\n },\r\n \"homepage\": \"https://github.com/samchon/nestia-start#readme\",\r\n \"devDependencies\": {\r\n \"@nestia/e2e\": \"^0.4.2\",\r\n \"@nestia/sdk\": \"^2.5.16\",\r\n \"@trivago/prettier-plugin-sort-imports\": \"^4.3.0\",\r\n \"@types/cli\": \"^0.11.21\",\r\n \"@types/express\": \"^4.17.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\": \"^6.19.1\",\r\n \"@typescript-eslint/parser\": \"^6.19.1\",\r\n \"chalk\": \"^4.1.0\",\r\n \"cli\": \"^1.0.1\",\r\n \"copy-webpack-plugin\": \"^11.0.0\",\r\n \"eslint-plugin-deprecation\": \"^2.0.0\",\r\n \"express\": \"^4.18.2\",\r\n \"nestia\": \"^5.3.0\",\r\n \"prettier\": \"^3.2.4\",\r\n \"prettier-plugin-prisma\": \"^5.0.0\",\r\n \"rimraf\": \"^3.0.2\",\r\n \"source-map-support\": \"^0.5.21\",\r\n \"swagger-ui-express\": \"^5.0.0\",\r\n \"ts-loader\": \"^9.5.1\",\r\n \"ts-node\": \"^10.9.1\",\r\n \"ts-patch\": \"^3.0.2\",\r\n \"typescript\": \"^5.3.2\",\r\n \"typescript-transform-paths\": \"^3.4.6\",\r\n \"webpack\": \"^5.89.0\",\r\n \"webpack-cli\": \"^5.1.4\",\r\n \"write-file-webpack-plugin\": \"^4.5.1\"\r\n },\r\n \"dependencies\": {\r\n \"@nestia/core\": \"^2.5.16\",\r\n \"@nestia/fetcher\": \"^2.5.16\",\r\n \"@nestjs/common\": \"^10.3.4\",\r\n \"@nestjs/core\": \"^10.3.4\",\r\n \"@nestjs/platform-express\": \"^10.3.4\",\r\n \"commander\": \"10.0.0\",\r\n \"dotenv\": \"^16.3.1\",\r\n \"dotenv-expand\": \"^10.0.0\",\r\n \"inquirer\": \"8.2.5\",\r\n \"serialize-error\": \"^4.1.0\",\r\n \"tstl\": \"^2.5.13\",\r\n \"typia\": \"^5.5.7\",\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}"
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 \"test\": \"node bin/test\",\r\n \"test:webpack\": \"npm run webpack && node bin/test/webpack.js\",\r\n \"------------------------BUILDS------------------------\": \"\",\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 \"prepare\": \"ts-patch install && typia patch\",\r\n \"prettier\": \"prettier src --write && prettier test --write\",\r\n \"------------------------WEBPACK------------------------\": \"\",\r\n \"webpack\": \"rimraf dist && webpack\",\r\n \"webpack:start\": \"cd dist && node dist/server\",\r\n \"------------------------DEPLOYS------------------------\": \"\",\r\n \"package:api\": \"npm run build:swagger && npm run build:api && cd packages/api && npm publish\",\r\n \"start\": \"node lib/executable/server\",\r\n \"start:swagger\": \"ts-node src/executable/swagger.ts\"\r\n },\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/samchon/nestia-start\"\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-start/issues\"\r\n },\r\n \"homepage\": \"https://github.com/samchon/nestia-start#readme\",\r\n \"devDependencies\": {\r\n \"@nestia/e2e\": \"^0.4.2\",\r\n \"@nestia/sdk\": \"^2.5.16\",\r\n \"@trivago/prettier-plugin-sort-imports\": \"^4.3.0\",\r\n \"@types/cli\": \"^0.11.21\",\r\n \"@types/express\": \"^4.17.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\": \"^6.19.1\",\r\n \"@typescript-eslint/parser\": \"^6.19.1\",\r\n \"chalk\": \"^4.1.0\",\r\n \"cli\": \"^1.0.1\",\r\n \"copy-webpack-plugin\": \"^11.0.0\",\r\n \"eslint-plugin-deprecation\": \"^2.0.0\",\r\n \"express\": \"^4.18.2\",\r\n \"nestia\": \"^5.3.0\",\r\n \"prettier\": \"^3.2.4\",\r\n \"prettier-plugin-prisma\": \"^5.0.0\",\r\n \"rimraf\": \"^3.0.2\",\r\n \"source-map-support\": \"^0.5.21\",\r\n \"swagger-ui-express\": \"^5.0.0\",\r\n \"ts-loader\": \"^9.5.1\",\r\n \"ts-node\": \"^10.9.1\",\r\n \"ts-patch\": \"^3.0.2\",\r\n \"typescript\": \"^5.3.2\",\r\n \"typescript-transform-paths\": \"^3.4.6\",\r\n \"webpack\": \"^5.89.0\",\r\n \"webpack-cli\": \"^5.1.4\",\r\n \"write-file-webpack-plugin\": \"^4.5.1\"\r\n },\r\n \"dependencies\": {\r\n \"@nestia/core\": \"^2.5.16\",\r\n \"@nestia/fetcher\": \"^2.5.16\",\r\n \"@nestjs/common\": \"^10.3.5\",\r\n \"@nestjs/core\": \"^10.3.5\",\r\n \"@nestjs/platform-express\": \"^10.3.5\",\r\n \"commander\": \"10.0.0\",\r\n \"dotenv\": \"^16.3.1\",\r\n \"dotenv-expand\": \"^10.0.0\",\r\n \"inquirer\": \"8.2.5\",\r\n \"serialize-error\": \"^4.1.0\",\r\n \"tstl\": \"^2.5.13\",\r\n \"typia\": \"^5.5.7\",\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}"
51
51
  },
52
52
  {
53
53
  "location": "packages/api",
@@ -35,7 +35,7 @@ export namespace MigrateCommander {
35
35
  })();
36
36
 
37
37
  const result: IValidation<MigrateApplication> =
38
- MigrateApplication.create(swagger);
38
+ await MigrateApplication.create(swagger);
39
39
  if (result.success === false) {
40
40
  console.log(result.errors);
41
41
  throw new Error(
@@ -239,7 +239,10 @@ export namespace MigrateSchemaProgrammer {
239
239
  const name: string = schema.$ref.split("/").at(-1)!;
240
240
  return name === ""
241
241
  ? TypeFactory.keyword("any")
242
- : importer.dto(schema.$ref.split("/").at(-1)!, components.namespace);
242
+ : importer.dto(
243
+ schema.$ref.split("/").at(-1)!,
244
+ components["x-nestia-namespace"],
245
+ );
243
246
  };
244
247
 
245
248
  /* -----------------------------------------------------------
@@ -1,23 +1,23 @@
1
- import { ISwaggerComponents } from "./ISwaggerComponents";
2
- import { ISwaggerInfo } from "./ISwaggerInfo";
3
- import { ISwaggerRoute } from "./ISwaggerRoute";
4
-
5
- export interface ISwagger {
6
- openapi: `3.0.${number}`;
7
- info: ISwaggerInfo;
8
- servers: ISwagger.IServer[];
9
-
10
- components: ISwaggerComponents;
11
- paths: Record<string, ISwagger.IPath>;
12
- security?: Record<string, string[]>[];
13
- }
14
- export namespace ISwagger {
15
- export interface IServer {
16
- url: string;
17
- description?: string;
18
- }
19
- export type IPath = Record<
20
- "get" | "post" | "patch" | "put" | "delete",
21
- ISwaggerRoute | undefined
22
- >;
23
- }
1
+ import { ISwaggerComponents } from "./ISwaggerComponents";
2
+ import { ISwaggerInfo } from "./ISwaggerInfo";
3
+ import { ISwaggerRoute } from "./ISwaggerRoute";
4
+
5
+ export interface ISwagger {
6
+ openapi: `3.0.${number}`;
7
+ info: ISwaggerInfo;
8
+ servers: ISwagger.IServer[];
9
+
10
+ components: ISwaggerComponents;
11
+ paths: Record<string, ISwagger.IPath>;
12
+ security?: Record<string, string[]>[];
13
+ }
14
+ export namespace ISwagger {
15
+ export interface IServer {
16
+ url: string;
17
+ description?: string;
18
+ }
19
+ export type IPath = Record<
20
+ "get" | "post" | "patch" | "put" | "delete",
21
+ ISwaggerRoute | undefined
22
+ >;
23
+ }
@@ -1,10 +1,14 @@
1
1
  import { ISwaggerRouteParameter } from "./ISwaggerRouteParameter";
2
+ import { ISwaggerRouteRequestBody } from "./ISwaggerRouteRequestBody";
3
+ import { ISwaggerRouteResponse } from "./ISwaggerRouteResponse";
2
4
  import { ISwaggerSchema } from "./ISwaggerSchema";
3
5
  import { ISwaggerSecurityScheme } from "./ISwaggerSecurityScheme";
4
6
 
5
7
  export interface ISwaggerComponents {
6
8
  parameters?: Record<string, ISwaggerRouteParameter>;
9
+ requestBodies?: Record<string, ISwaggerRouteRequestBody>;
10
+ responses?: Record<string, ISwaggerRouteResponse>;
7
11
  schemas?: Record<string, ISwaggerSchema>;
8
12
  securitySchemes?: Record<string, ISwaggerSecurityScheme>;
9
- namespace?: string;
13
+ "x-nestia-namespace"?: string;
10
14
  }
@@ -1,12 +1,16 @@
1
1
  import { IJsDocTagInfo } from "typia/lib/schemas/metadata/IJsDocTagInfo";
2
2
 
3
3
  import { ISwaggerRouteParameter } from "./ISwaggerRouteParameter";
4
- import { ISwaggerSchema } from "./ISwaggerSchema";
4
+ import { ISwaggerRouteRequestBody } from "./ISwaggerRouteRequestBody";
5
+ import { ISwaggerRouteResponse } from "./ISwaggerRouteResponse";
5
6
 
6
7
  export interface ISwaggerRoute {
7
8
  parameters?: (ISwaggerRouteParameter | ISwaggerRouteParameter.IReference)[];
8
- requestBody?: ISwaggerRoute.IRequestBody;
9
- responses?: ISwaggerRoute.IResponseBody;
9
+ requestBody?: ISwaggerRouteRequestBody;
10
+ responses?: Record<
11
+ string,
12
+ ISwaggerRouteResponse | ISwaggerRouteResponse.IReference
13
+ >;
10
14
  summary?: string;
11
15
  description?: string;
12
16
  deprecated?: boolean;
@@ -14,36 +18,3 @@ export interface ISwaggerRoute {
14
18
  tags?: string[];
15
19
  "x-nestia-jsDocTags"?: IJsDocTagInfo[];
16
20
  }
17
- export namespace ISwaggerRoute {
18
- export interface IRequestBody {
19
- description?: string;
20
- content: IContent;
21
- required?: boolean;
22
- "x-nestia-encrypted"?: boolean;
23
- }
24
- export type IResponseBody = Record<
25
- string,
26
- {
27
- description?: string;
28
- content?: IContent;
29
- "x-nestia-encrypted"?: boolean;
30
- }
31
- >;
32
- export interface IContent {
33
- "text/plain"?: {
34
- schema: ISwaggerSchema;
35
- };
36
- "application/json"?: {
37
- schema: ISwaggerSchema;
38
- };
39
- "application/x-www-form-urlencoded"?: {
40
- schema: ISwaggerSchema;
41
- };
42
- "multipart/form-data"?: {
43
- schema: ISwaggerSchema;
44
- };
45
- "*/*"?: {
46
- schema: ISwaggerSchema;
47
- };
48
- }
49
- }
@@ -0,0 +1,15 @@
1
+ import { ISwaggerSchema } from "./ISwaggerSchema";
2
+
3
+ export interface ISwaggerRouteBodyContent {
4
+ "text/plain"?: ISwaggerRouteBodyContent.IMediaType;
5
+ "application/json"?: ISwaggerRouteBodyContent.IMediaType;
6
+ "application/x-www-form-urlencoded"?: ISwaggerRouteBodyContent.IMediaType;
7
+ "multipart/form-data"?: ISwaggerRouteBodyContent.IMediaType;
8
+ "*/*"?: ISwaggerRouteBodyContent.IMediaType;
9
+ }
10
+ export namespace ISwaggerRouteBodyContent {
11
+ export interface IMediaType {
12
+ schema?: ISwaggerSchema;
13
+ "x-nestia-encrypted"?: boolean;
14
+ }
15
+ }
File without changes
@@ -0,0 +1,12 @@
1
+ import { ISwaggerRouteBodyContent } from "./ISwaggerRouteBodyContent";
2
+
3
+ export interface ISwaggerRouteRequestBody {
4
+ description?: string;
5
+ required?: boolean;
6
+ content?: ISwaggerRouteBodyContent;
7
+ }
8
+ export namespace ISwaggerRouteRequestBody {
9
+ export interface IReference {
10
+ $ref: `#/components/requestBodies/${string}`;
11
+ }
12
+ }