@nestia/migrate 0.2.9 → 0.2.11

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.
@@ -50,7 +50,7 @@ exports.TEMPLATE = [
50
50
  {
51
51
  "location": "",
52
52
  "file": "package.json",
53
- "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.6.2\",\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.4.0\",\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.6.2\",\r\n \"serialize-error\": \"^4.1.0\",\r\n \"tstl\": \"^2.5.13\",\r\n \"typia\": \"^4.2.1\",\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"
53
+ "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.6.4\",\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.4.0\",\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.6.4\",\r\n \"serialize-error\": \"^4.1.0\",\r\n \"tstl\": \"^2.5.13\",\r\n \"typia\": \"^4.2.3\",\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"
54
54
  },
55
55
  {
56
56
  "location": "/packages/api",
@@ -60,7 +60,7 @@ exports.TEMPLATE = [
60
60
  {
61
61
  "location": "/packages/api",
62
62
  "file": "package.json",
63
- "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.6.2\",\r\n \"typia\": \"^4.2.1\"\r\n }\r\n}\r\n"
63
+ "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.6.4\",\r\n \"typia\": \"^4.2.3\"\r\n }\r\n}\r\n"
64
64
  },
65
65
  {
66
66
  "location": "/packages/api",
@@ -8,10 +8,10 @@ const SchemaProgrammer_1 = require("./SchemaProgrammer");
8
8
  var RouteProgrammer;
9
9
  (function (RouteProgrammer) {
10
10
  RouteProgrammer.analyze = (swagger) => (props) => (route) => {
11
- var _a, _b, _c, _d, _e;
11
+ var _a, _b, _c, _d, _e, _f;
12
12
  const body = emplaceBodySchema(emplaceReference(swagger)("body"))(route.requestBody);
13
- const response = emplaceBodySchema(emplaceReference(swagger)("response"))((_b = (_a = route.responses) === null || _a === void 0 ? void 0 : _a["201"]) !== null && _b !== void 0 ? _b : (_c = route.responses) === null || _c === void 0 ? void 0 : _c["200"]);
14
- if (body === false || response === false) {
13
+ const success = emplaceBodySchema(emplaceReference(swagger)("response"))((_b = (_a = route.responses) === null || _a === void 0 ? void 0 : _a["201"]) !== null && _b !== void 0 ? _b : (_c = route.responses) === null || _c === void 0 ? void 0 : _c["200"]);
14
+ if (body === false || success === false) {
15
15
  console.log(`Failed to migrate ${props.method.toUpperCase()} ${props.path}: @nestia/migrate supports only application/json or text/plain format yet.`);
16
16
  return null;
17
17
  }
@@ -138,7 +138,24 @@ var RouteProgrammer;
138
138
  }),
139
139
  query,
140
140
  body,
141
- response,
141
+ success,
142
+ exceptions: Object.fromEntries(Object.entries((_f = route.responses) !== null && _f !== void 0 ? _f : {})
143
+ .filter(([key, value]) => {
144
+ var _a;
145
+ return key !== "200" &&
146
+ key !== "201" &&
147
+ !!((_a = value.content) === null || _a === void 0 ? void 0 : _a["application/json"]);
148
+ })
149
+ .map(([key, value]) => {
150
+ var _a, _b, _c;
151
+ return [
152
+ key,
153
+ {
154
+ description: value.description,
155
+ schema: (_c = (_b = (_a = value.content) === null || _a === void 0 ? void 0 : _a["application/json"]) === null || _b === void 0 ? void 0 : _b.schema) !== null && _c !== void 0 ? _c : {},
156
+ },
157
+ ];
158
+ })),
142
159
  description: describe(route),
143
160
  "x-nestia-jsDocTags": route["x-nestia-jsDocTags"],
144
161
  };
@@ -221,16 +238,16 @@ var RouteProgrammer;
221
238
  return { $ref: `#/components/schemas/${name}` };
222
239
  };
223
240
  RouteProgrammer.write = (importer) => (components) => (references) => (route) => {
224
- var _a, _b;
225
- const output = route.response
226
- ? SchemaProgrammer_1.SchemaProgrammer.write(components)(references)(route.response.schema)
241
+ var _a, _b, _c;
242
+ const output = route.success
243
+ ? SchemaProgrammer_1.SchemaProgrammer.write(components)(references)(route.success.schema)
227
244
  : "void";
228
245
  const methoder = (composer) => `${composer(StringUtil_1.StringUtil.capitalize(route.method))}(${JSON.stringify(route.path)})`;
229
- const decorator = ((_a = route.response) === null || _a === void 0 ? void 0 : _a["x-nestia-encrypted"]) === true
246
+ const decorator = ((_a = route.success) === null || _a === void 0 ? void 0 : _a["x-nestia-encrypted"]) === true
230
247
  ? [
231
248
  `@${importer("@nestia/core")("EncryptedRoute")}.${methoder((str) => str)}`,
232
249
  ]
233
- : ((_b = route.response) === null || _b === void 0 ? void 0 : _b.type) === "text/plain"
250
+ : ((_b = route.success) === null || _b === void 0 ? void 0 : _b.type) === "text/plain"
234
251
  ? [
235
252
  `@${importer("@nestjs/common")("Header")}("Content-Type", "text/plain")`,
236
253
  `@${methoder((str) => importer("@nestjs/common")(str))}`,
@@ -242,6 +259,8 @@ var RouteProgrammer;
242
259
  : [
243
260
  `@${importer("@nestia/core")("TypedRoute")}.${methoder((str) => str)}`,
244
261
  ];
262
+ for (const [key, value] of Object.entries((_c = route.exceptions) !== null && _c !== void 0 ? _c : {}))
263
+ decorator.push(`@${importer("@nestia/core")("TypedException")}<${SchemaProgrammer_1.SchemaProgrammer.write(components)(references)(value.schema)}>(${isNaN(Number(key)) ? JSON.stringify(key) : key}, ${JSON.stringify(value.description)})`);
245
264
  const content = [
246
265
  ...(route.description
247
266
  ? [
@@ -1 +1 @@
1
- {"version":3,"file":"RouteProgrammer.js","sourceRoot":"","sources":["../../src/programmers/RouteProgrammer.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAOlD,8DAA2D;AAC3D,oDAAiD;AACjD,yDAAsD;AAEtD,IAAiB,eAAe,CA4a/B;AA5aD,WAAiB,eAAe;IACf,uBAAO,GAChB,CAAC,OAAiB,EAAE,EAAE,CACtB,CAAC,KAAuC,EAAE,EAAE,CAC5C,CAAC,KAAoB,EAAwB,EAAE;;QAC3C,MAAM,IAAI,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAC7D,KAAK,CAAC,WAAW,CACpB,CAAC;QACF,MAAM,QAAQ,GAAG,iBAAiB,CAC9B,gBAAgB,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CACxC,CAAC,MAAA,MAAA,KAAK,CAAC,SAAS,0CAAG,KAAK,CAAC,mCAAI,MAAA,KAAK,CAAC,SAAS,0CAAG,KAAK,CAAC,CAAC,CAAC;QACxD,IAAI,IAAI,KAAK,KAAK,IAAI,QAAQ,KAAK,KAAK,EAAE;YACtC,OAAO,CAAC,GAAG,CACP,qBAAqB,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,IAC3C,KAAK,CAAC,IACV,4EAA4E,CAC/E,CAAC;YACF,OAAO,IAAI,CAAC;SACf;aAAM,IACH,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,KAAK,EAC7D;YACE,OAAO,CAAC,GAAG,CACP,qBAAqB,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,IAC3C,KAAK,CAAC,IACV,sCAAsC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAC7E,CAAC;YACF,OAAO,IAAI,CAAC;SACf;QAED,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;;YACtD,MAAM,UAAU,GAAG,CAAC,MAAA,KAAK,CAAC,UAAU,mCAAI,EAAE,CAAC,CAAC,MAAM,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CACvB,CAAC;YACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAEzC,MAAM,OAAO,GAAG,UAAU;iBACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;;gBACP,OAAA,iCAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC9B,CAAC,CAAC,CAAC,CAAC,MAAM;oBACV,CAAC,CAAC,iCAAe,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;wBACrC,iCAAe,CAAC,QAAQ,CACpB,MAAA,CAAC,MAAA,OAAO,CAAC,UAAU,CAAC,OAAO,mCAAI,EAAE,CAAC,CAC9B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CACjB,uBAAuB,EACvB,EAAE,CACL,CACJ,mCAAI,EAAE,CACV;wBACH,CAAC,CAAC,CAAC,CAAC,MAAM;wBACV,CAAC,CAAC,IAAK,CAAA;aAAA,CACd;iBACA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CACF,iCAAe,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;gBACnC,iCAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;gBAClC,iCAAe,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;gBACnC,iCAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;gBAClC,iCAAe,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CACxC,CAAC;YACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAC/C,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;iBACjB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBACvB,MAAM,IAAI,KAAK,CACX,qDAAqD,IAAI,oDAAoD,uBAAU,CAAC,UAAU,CAC9H,KAAK,CAAC,MAAM,CACf,KAAK,KAAK,CAAC,IAAI,IAAI,CACvB,CAAC;YAEN,MAAM,GAAG,GAAkC,OAAO,CAAC,CAAC,CAAC;gBACjD,CAAC,CAAC,iCAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAClC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBACZ,CAAC,CAAE,CAAC,MAAA,OAAO,CAAC,UAAU,CAAC,OAAO,mCAAI,EAAE,CAAC,CAE3B,OAAO,CAAC,CAAC,CACZ,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CACnB;gBAClC,CAAC,CAAC,IAAI,CAAC;YACX,MAAM,MAAM,GAA6B;gBACrC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;;oBACjB,OAAA,iCAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;wBACvB,CAAC,CAAC,CAAC;wBACH,CAAC,CAAE,MAAA,OAAO,CAAC,UAAU,CAAC,OAAO,0CACvB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAClB,CAAA;iBAAA,CACtC;gBACD;oBACI,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC;wBAC3B,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;;4BAAC,OAAA;gCACrB,CAAC,CAAC,IAAI;gEAEC,CAAC,CAAC,MAAM,KACX,WAAW,EACP,MAAA,CAAC,CAAC,MAAM,CAAC,WAAW,mCAAI,CAAC,CAAC,WAAW;6BAEhD,CAAA;yBAAA,CAAC;wBACF,GAAG,CAAC,GAAG;4BACH,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAA,GAAG,CAAC,UAAU,mCAAI,EAAE,CAAC;4BACtC,CAAC,CAAC,EAAE,CAAC;qBACZ,CAAC;oBACF,QAAQ,EAAE;wBACN,GAAG,UAAU;6BACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;6BACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC;wBACxB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAA,GAAG,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACrC;iBACJ;aACJ,CAAC;YACF,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;gBAC1B,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CACrB,uBAAU,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC;oBACpC,GAAG;oBACH,uBAAU,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CACnD,CAAC;oBACE,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC;wBAC3B,GAAG,IAAI,GAAG,CACN,MAAM;6BACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;;4BACP,OAAA,MAAM,CAAC,OAAO,CACV,MAAA,CAAC,CAAC,UAAU,mCAAI,EAAE,CACrB,CAAC,GAAG,CACD,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE;;gCACf,OAAA;oCACI,IAAI;oCACJ,gCACO,MAAM,KACT,WAAW,EACP,MAAA,MAAM,CAAC,WAAW,mCAClB,MAAM,CAAC,WAAW,GACP;iCACb,CAAA;6BAAA,CACjB,CAAA;yBAAA,CACJ;6BACA,IAAI,EAAE,CACd;qBACJ,CAAC;oBACF,QAAQ,EAAE;wBACN,GAAG,IAAI,GAAG,CACN,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,QAAQ,mCAAI,EAAE,CAAA,EAAA,CAAC,CAAC,IAAI,EAAE,CAC7C;qBACJ;iBACJ,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,MAAM,cAAc,GAAa,uBAAU,CAAC,sBAAsB,CAC9D,KAAK,CAAC,IAAI,CACb;aACI,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;aACjD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACT,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;YACV,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YAClC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CACzB,CAAC;QACN,IACI,cAAc,CAAC,MAAM;YACrB,CAAC,MAAA,KAAK,CAAC,UAAU,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,MAAM,EAChE;YACE,OAAO,CAAC,GAAG,CACP,qBAAqB,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,IAC3C,KAAK,CAAC,IACV,iEAAiE,CACpE,CAAC;YACF,OAAO,IAAI,CAAC;SACf;QACD,OAAO;YACH,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO;YACP,UAAU,EAAE,CAAC,MAAA,KAAK,CAAC,UAAU,mCAAI,EAAE,CAAC;iBAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC;iBAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;;gBAAC,OAAA,CAAC;oBACZ,GAAG,EAAE,CAAC,GAAG,EAAE;wBACP,IAAI,GAAG,GAAW,uBAAU,CAAC,SAAS,CAClC,cAAc,CAAC,CAAC,CAAC,CACpB,CAAC;wBACF,IAAI,iBAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;4BAAE,OAAO,GAAG,CAAC;wBAEtC,OAAO,IAAI,EAAE;4BACT,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;4BAChB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC;gCACtC,OAAO,GAAG,CAAC;yBAClB;oBACL,CAAC,CAAC,EAAE;oBACJ,MAAM,kCACC,CAAC,CAAC,MAAM,KACX,WAAW,EAAE,MAAA,CAAC,CAAC,MAAM,CAAC,WAAW,mCAAI,CAAC,CAAC,WAAW,GACrD;iBACJ,CAAC,CAAA;aAAA,CAAC;YACP,KAAK;YACL,IAAI;YACJ,QAAQ;YACR,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC;YAC5B,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,CAAC;SACpD,CAAC;IACN,CAAC,CAAC;IAEN,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAsB,EAAE;;QAC1D,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE;YACzB,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;gBAC1C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,IAAI,WAAW,GAAuB,KAAK,CAAC,WAAW,CAAC;QACxD,IAAI,KAAK,CAAC,OAAO,EAAE;YACf,MAAM,OAAO,GAAW,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC/C,CAAC,CAAC,KAAK,CAAC,OAAO;gBACf,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;YAC1B,IACI,WAAW,KAAK,SAAS;gBACzB,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBACvC,CAAC,CAAA,MAAA,KAAK,CAAC,oBAAoB,CAAC,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;gBAE/D,WAAW,GAAG,GAAG,OAAO,KAAK,WAAW,EAAE,CAAC;SAClD;QACD,IAAI,KAAK,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;QAClE,IAAI,KAAK,CAAC,UAAU;YAAE,GAAG,CAAC,aAAa,CAAC,CAAC;QACzC,KAAK,MAAM,QAAQ,IAAI,MAAA,KAAK,CAAC,QAAQ,mCAAI,EAAE;YACvC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACjD,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvD,KAAK,MAAM,QAAQ,IAAI,MAAA,KAAK,CAAC,oBAAoB,CAAC,mCAAI,EAAE;YACpD,IAAI,MAAA,QAAQ,CAAC,IAAI,0CAAE,MAAM;gBACrB,GAAG,CACC,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI;qBAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;qBACxB,IAAI,CAAC,EAAE,CAAC,EAAE,CAClB,CAAC;;gBACD,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAClC,OAAO,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM;YACtB,CAAC,CAAC,WAAW,CAAC,MAAM;gBAChB,CAAC,CAAC,GAAG,WAAW,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC/C,CAAC,CAAC,WAAW;YACjB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,MAAsB,EAAW,EAAE,CAC3D,iCAAe,CAAC,WAAW,CAAC,MAAM,CAAC;QACnC,iCAAe,CAAC,SAAS,CAAC,MAAM,CAAC;QACjC,iCAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;QAChC,iCAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;QAChC,iCAAe,CAAC,SAAS,CAAC,MAAM,CAAC;QACjC,CAAC,iCAAe,CAAC,OAAO,CAAC,MAAM,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC3C,CAAC,iCAAe,CAAC,OAAO,CAAC,MAAM,CAAC;YAC5B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC3C,CAAC,iCAAe,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAE1E,MAAM,iBAAiB,GACnB,CAAC,QAA+D,EAAE,EAAE,CACpE,CAAC,IAIA,EAAsC,EAAE;QACrC,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,CAAA;YAAE,OAAO,IAAI,CAAC;QAEhC,MAAM,OAAO,GACT,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5B,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI;YAC/B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAC3B,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAC1C,CAAC;QAEF,IAAI,IAAI,EAAE;YACN,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,OAAO;gBACH,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC;oBAC9B,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACtB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,CAAC;aACnD,CAAC;SACL;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QAC9D,IAAI,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;QACpE,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;IAEN,MAAM,gBAAgB,GAClB,CAAC,OAAiB,EAAE,EAAE,CACtB,CAAC,IAAY,EAAE,EAAE,CACjB,CAAC,MAAsB,EAA6B,EAAE;;;QAClD,YAAA,OAAO,CAAC,UAAU,EAAC,OAAO,uCAAP,OAAO,GAAK,EAAE,EAAC;QAClC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QAC1C,OAAO,EAAE,IAAI,EAAE,wBAAwB,IAAI,EAAE,EAAE,CAAC;IACpD,CAAC,CAAC;IAEO,qBAAK,GACd,CAAC,QAA0D,EAAE,EAAE,CAC/D,CAAC,UAA8B,EAAE,EAAE,CACnC,CAAC,UAAuC,EAAE,EAAE,CAC5C,CAAC,KAAoB,EAAU,EAAE;;QAC7B,MAAM,MAAM,GAAW,KAAK,CAAC,QAAQ;YACjC,CAAC,CAAC,mCAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAC1C,KAAK,CAAC,QAAQ,CAAC,MAAM,CACxB;YACH,CAAC,CAAC,MAAM,CAAC;QAEb,MAAM,QAAQ,GAAG,CAAC,QAAkC,EAAE,EAAE,CACpD,GAAG,QAAQ,CACP,uBAAU,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CACtC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACvC,MAAM,SAAS,GACX,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAG,oBAAoB,CAAC,MAAK,IAAI;YAC3C,CAAC,CAAC;gBACI,IAAI,QAAQ,CAAC,cAAc,CAAC,CACxB,gBAAgB,CACnB,IAAI,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;aAChC;YACH,CAAC,CAAC,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,MAAK,YAAY;gBACvC,CAAC,CAAC;oBACI,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAC1B,QAAQ,CACX,gCAAgC;oBACjC,IAAI,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CACjB,QAAQ,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAClC,EAAE;iBACN;gBACH,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM;oBACzB,CAAC,CAAC;wBACI,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,GAAG,QAAQ,CAC7C,GAAG,EAAE,CAAC,EAAE,CACX,EAAE;qBACN;oBACH,CAAC,CAAC;wBACI,IAAI,QAAQ,CAAC,cAAc,CAAC,CACxB,YAAY,CACf,IAAI,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;qBAChC,CAAC;QACZ,MAAM,OAAO,GAAa;YACtB,GAAG,CAAC,KAAK,CAAC,WAAW;gBACjB,CAAC,CAAC;oBACI,KAAK;oBACL,GAAG,KAAK,CAAC,WAAW;yBACf,KAAK,CAAC,IAAI,CAAC;yBACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC;oBAChC,KAAK;iBACR;gBACH,CAAC,CAAC,EAAE,CAAC;YACT,GAAG,SAAS;YACZ,gBAAgB,KAAK,CAAC,IAAI,GAAG;YAC7B,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CACnB,CAAC,KAAK,EAAE,EAAE,CACN,OAAO,cAAc,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAC5D;YACD,GAAG,CAAC,KAAK,CAAC,OAAO;gBACb,CAAC,CAAC;oBACI,QAAQ,QAAQ,CAAC,cAAc,CAAC,CAC5B,cAAc,CACjB,eAAe,mCAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAC9C,UAAU,CACb,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG;iBACtB;gBACH,CAAC,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,KAAK,CAAC,KAAK;gBACX,CAAC,CAAC;oBACI,QAAQ,QAAQ,CAAC,cAAc,CAAC,CAC5B,YAAY,CACf,aAAa,mCAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAC5C,UAAU,CACb,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG;iBACpB;gBACH,CAAC,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,KAAK,CAAC,IAAI;gBACV,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,IAAI;oBACvC,CAAC,CAAC;wBACI,QAAQ,QAAQ,CAAC,cAAc,CAAC,CAC5B,eAAe,CAClB,YAAY,mCAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAC3C,UAAU,CACb,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;qBAC1B;oBACH,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,kBAAkB;wBACxC,CAAC,CAAC;4BACI,QAAQ,QAAQ,CAAC,cAAc,CAAC,CAC5B,WAAW,CACd,YAAY,mCAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAC3C,UAAU,CACb,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;yBAC1B;wBACH,CAAC,CAAC;4BACI,QAAQ,QAAQ,CAAC,cAAc,CAAC,CAC5B,WAAW,CACd,kBAAkB;yBACtB;gBACP,CAAC,CAAC,EAAE,CAAC;YACT,cAAc,MAAM,KAAK;YACzB,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CACnB,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,uBAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAC/C;YACD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpC,GAAG,CAAC,MAAM,KAAK,MAAM;gBACjB,CAAC,CAAC;oBACI,cAAc,QAAQ,CAAC,OAAO,CAAC,CAC3B,QAAQ,CACX,IAAI,MAAM,MAAM;iBACpB;gBACH,CAAC,CAAC,EAAE,CAAC;YACT,GAAG;SACN,CAAC;QACF,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEN,MAAM,cAAc,GAChB,CAAC,UAA8B,EAAE,EAAE,CACnC,CAAC,QAA2D,EAAE,EAAE,CAChE,CAAC,EAAE,GAAG,EAAE,MAAM,EAA4B,EAAU,EAAE;QAClD,MAAM,QAAQ,GAAG,uBAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,MAAM,GACR,iCAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;YAChC,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;YAClD,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,IAAI,CAAC;QACf,OAAO,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,SAAS,CAC/D,GAAG,CACN,GACG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAC7C,KAAK,QAAQ,KAAK,mCAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACvE,CAAC,CAAC;AACV,CAAC,EA5agB,eAAe,+BAAf,eAAe,QA4a/B;AAED,MAAM,iBAAiB,GAAgB,IAAI,GAAG,CAAC;IAC3C,KAAK;IACL,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;CACT,CAAC,CAAC"}
1
+ {"version":3,"file":"RouteProgrammer.js","sourceRoot":"","sources":["../../src/programmers/RouteProgrammer.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,8 @@ export interface IMigrateRoute {
8
8
  headers: ISwaggerSchema | null;
9
9
  query: ISwaggerSchema | null;
10
10
  body: IMigrateRoute.IBody | null;
11
- response: IMigrateRoute.IBody | null;
11
+ success: IMigrateRoute.IBody | null;
12
+ exceptions: Record<string, IMigrateRoute.IException>;
12
13
  description?: string;
13
14
  "x-nestia-jsDocTags"?: IJsDocTagInfo[];
14
15
  }
@@ -23,4 +24,8 @@ export declare namespace IMigrateRoute {
23
24
  schema: ISwaggerSchema;
24
25
  "x-nestia-encrypted"?: boolean;
25
26
  }
27
+ interface IException {
28
+ description?: string;
29
+ schema: ISwaggerSchema;
30
+ }
26
31
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestia/migrate",
3
- "version": "0.2.9",
3
+ "version": "0.2.11",
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.6.2",
34
- "@nestia/fetcher": "^1.6.2",
33
+ "@nestia/core": "^1.6.4",
34
+ "@nestia/fetcher": "^1.6.4",
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.2.1"
48
+ "typia": "^4.2.3"
49
49
  },
50
50
  "files": [
51
51
  "lib",
@@ -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.6.2\",\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.4.0\",\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.6.2\",\r\n \"serialize-error\": \"^4.1.0\",\r\n \"tstl\": \"^2.5.13\",\r\n \"typia\": \"^4.2.1\",\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.6.4\",\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.4.0\",\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.6.4\",\r\n \"serialize-error\": \"^4.1.0\",\r\n \"tstl\": \"^2.5.13\",\r\n \"typia\": \"^4.2.3\",\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.6.2\",\r\n \"typia\": \"^4.2.1\"\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.6.4\",\r\n \"typia\": \"^4.2.3\"\r\n }\r\n}\r\n"
61
61
  },
62
62
  {
63
63
  "location": "/packages/api",
@@ -17,10 +17,10 @@ export namespace RouteProgrammer {
17
17
  const body = emplaceBodySchema(emplaceReference(swagger)("body"))(
18
18
  route.requestBody,
19
19
  );
20
- const response = emplaceBodySchema(
20
+ const success = emplaceBodySchema(
21
21
  emplaceReference(swagger)("response"),
22
22
  )(route.responses?.["201"] ?? route.responses?.["200"]);
23
- if (body === false || response === false) {
23
+ if (body === false || success === false) {
24
24
  console.log(
25
25
  `Failed to migrate ${props.method.toUpperCase()} ${
26
26
  props.path
@@ -203,7 +203,25 @@ export namespace RouteProgrammer {
203
203
  })),
204
204
  query,
205
205
  body,
206
- response,
206
+ success,
207
+ exceptions: Object.fromEntries(
208
+ Object.entries(route.responses ?? {})
209
+ .filter(
210
+ ([key, value]) =>
211
+ key !== "200" &&
212
+ key !== "201" &&
213
+ !!value.content?.["application/json"],
214
+ )
215
+ .map(([key, value]) => [
216
+ key,
217
+ {
218
+ description: value.description,
219
+ schema:
220
+ value.content?.["application/json"]
221
+ ?.schema ?? {},
222
+ },
223
+ ]),
224
+ ),
207
225
  description: describe(route),
208
226
  "x-nestia-jsDocTags": route["x-nestia-jsDocTags"],
209
227
  };
@@ -308,9 +326,9 @@ export namespace RouteProgrammer {
308
326
  (components: ISwaggerComponents) =>
309
327
  (references: ISwaggerSchema.IReference[]) =>
310
328
  (route: IMigrateRoute): string => {
311
- const output: string = route.response
329
+ const output: string = route.success
312
330
  ? SchemaProgrammer.write(components)(references)(
313
- route.response.schema,
331
+ route.success.schema,
314
332
  )
315
333
  : "void";
316
334
 
@@ -319,13 +337,13 @@ export namespace RouteProgrammer {
319
337
  StringUtil.capitalize(route.method),
320
338
  )}(${JSON.stringify(route.path)})`;
321
339
  const decorator: string[] =
322
- route.response?.["x-nestia-encrypted"] === true
340
+ route.success?.["x-nestia-encrypted"] === true
323
341
  ? [
324
342
  `@${importer("@nestia/core")(
325
343
  "EncryptedRoute",
326
344
  )}.${methoder((str) => str)}`,
327
345
  ]
328
- : route.response?.type === "text/plain"
346
+ : route.success?.type === "text/plain"
329
347
  ? [
330
348
  `@${importer("@nestjs/common")(
331
349
  "Header",
@@ -345,6 +363,17 @@ export namespace RouteProgrammer {
345
363
  "TypedRoute",
346
364
  )}.${methoder((str) => str)}`,
347
365
  ];
366
+ for (const [key, value] of Object.entries(route.exceptions ?? {}))
367
+ decorator.push(
368
+ `@${importer("@nestia/core")(
369
+ "TypedException",
370
+ )}<${SchemaProgrammer.write(components)(references)(
371
+ value.schema,
372
+ )}>(${
373
+ isNaN(Number(key)) ? JSON.stringify(key) : key
374
+ }, ${JSON.stringify(value.description)})`,
375
+ );
376
+
348
377
  const content: string[] = [
349
378
  ...(route.description
350
379
  ? [
@@ -10,7 +10,8 @@ export interface IMigrateRoute {
10
10
  headers: ISwaggerSchema | null;
11
11
  query: ISwaggerSchema | null;
12
12
  body: IMigrateRoute.IBody | null;
13
- response: IMigrateRoute.IBody | null;
13
+ success: IMigrateRoute.IBody | null;
14
+ exceptions: Record<string, IMigrateRoute.IException>;
14
15
  description?: string;
15
16
  "x-nestia-jsDocTags"?: IJsDocTagInfo[];
16
17
  }
@@ -25,4 +26,8 @@ export namespace IMigrateRoute {
25
26
  schema: ISwaggerSchema;
26
27
  "x-nestia-encrypted"?: boolean;
27
28
  }
29
+ export interface IException {
30
+ description?: string;
31
+ schema: ISwaggerSchema;
32
+ }
28
33
  }