@nestia/sdk 3.11.0-dev.20240813-10 → 3.11.0-dev.20240814

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 (135) hide show
  1. package/assets/bundle/api/Resolved.ts +1 -0
  2. package/assets/bundle/api/module.ts +1 -0
  3. package/lib/NestiaSdkApplication.d.ts +1 -0
  4. package/lib/NestiaSdkApplication.js +24 -26
  5. package/lib/NestiaSdkApplication.js.map +1 -1
  6. package/lib/analyses/ReflectControllerAnalyzer.js +2 -0
  7. package/lib/analyses/ReflectControllerAnalyzer.js.map +1 -1
  8. package/lib/analyses/ReflectHttpOperationAnalyzer.js +10 -1
  9. package/lib/analyses/ReflectHttpOperationAnalyzer.js.map +1 -1
  10. package/lib/analyses/ReflectHttpOperationExceptionAnalyzer.d.ts +15 -0
  11. package/lib/analyses/ReflectHttpOperationExceptionAnalyzer.js +50 -0
  12. package/lib/analyses/ReflectHttpOperationExceptionAnalyzer.js.map +1 -0
  13. package/lib/analyses/ReflectHttpOperationParameterAnalyzer.js +14 -9
  14. package/lib/analyses/ReflectHttpOperationParameterAnalyzer.js.map +1 -1
  15. package/lib/analyses/ReflectHttpOperationResponseAnalyzer.js +2 -1
  16. package/lib/analyses/ReflectHttpOperationResponseAnalyzer.js.map +1 -1
  17. package/lib/analyses/ReflectWebSocketOperationAnalyzer.js +3 -2
  18. package/lib/analyses/ReflectWebSocketOperationAnalyzer.js.map +1 -1
  19. package/lib/analyses/TypedHttpRouteAnalyzer.js +3 -1
  20. package/lib/analyses/TypedHttpRouteAnalyzer.js.map +1 -1
  21. package/lib/executable/internal/NestiaSdkCommand.d.ts +1 -0
  22. package/lib/executable/internal/NestiaSdkCommand.js +3 -2
  23. package/lib/executable/internal/NestiaSdkCommand.js.map +1 -1
  24. package/lib/executable/sdk.js +3 -0
  25. package/lib/executable/sdk.js.map +1 -1
  26. package/lib/generates/CloneGenerator.d.ts +4 -0
  27. package/lib/generates/CloneGenerator.js +62 -60
  28. package/lib/generates/CloneGenerator.js.map +1 -1
  29. package/lib/generates/SdkGenerator.js +4 -3
  30. package/lib/generates/SdkGenerator.js.map +1 -1
  31. package/lib/generates/SwaggerGenerator.js +60 -8
  32. package/lib/generates/SwaggerGenerator.js.map +1 -1
  33. package/lib/generates/internal/E2eFileProgrammer.js +11 -3
  34. package/lib/generates/internal/E2eFileProgrammer.js.map +1 -1
  35. package/lib/generates/internal/ImportDictionary.js +1 -1
  36. package/lib/generates/internal/ImportDictionary.js.map +1 -1
  37. package/lib/generates/internal/SdkAliasCollection.d.ts +5 -1
  38. package/lib/generates/internal/SdkAliasCollection.js +24 -8
  39. package/lib/generates/internal/SdkAliasCollection.js.map +1 -1
  40. package/lib/generates/internal/SdkFileProgrammer.js +1 -1
  41. package/lib/generates/internal/SdkFileProgrammer.js.map +1 -1
  42. package/lib/generates/internal/SdkHttpCloneProgrammer.d.ts +11 -0
  43. package/lib/generates/internal/SdkHttpCloneProgrammer.js +75 -142
  44. package/lib/generates/internal/SdkHttpCloneProgrammer.js.map +1 -1
  45. package/lib/generates/internal/SdkHttpCloneReferencer.d.ts +4 -0
  46. package/lib/generates/internal/SdkHttpCloneReferencer.js +62 -0
  47. package/lib/generates/internal/SdkHttpCloneReferencer.js.map +1 -0
  48. package/lib/generates/internal/SdkHttpFunctionProgrammer.js +26 -13
  49. package/lib/generates/internal/SdkHttpFunctionProgrammer.js.map +1 -1
  50. package/lib/generates/internal/SdkHttpNamespaceProgrammer.js +17 -8
  51. package/lib/generates/internal/SdkHttpNamespaceProgrammer.js.map +1 -1
  52. package/lib/generates/internal/SdkHttpRouteProgrammer.js +2 -2
  53. package/lib/generates/internal/SdkHttpRouteProgrammer.js.map +1 -1
  54. package/lib/generates/internal/SdkHttpSimulationProgrammer.js +8 -5
  55. package/lib/generates/internal/SdkHttpSimulationProgrammer.js.map +1 -1
  56. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js +12 -5
  57. package/lib/generates/internal/SdkWebSocketNamespaceProgrammer.js.map +1 -1
  58. package/lib/generates/internal/SdkWebSocketRouteProgrammer.js +3 -3
  59. package/lib/generates/internal/SdkWebSocketRouteProgrammer.js.map +1 -1
  60. package/lib/generates/internal/SwaggerOperationComposer.js +19 -1
  61. package/lib/generates/internal/SwaggerOperationComposer.js.map +1 -1
  62. package/lib/generates/internal/SwaggerOperationParameterComposer.js +3 -3
  63. package/lib/generates/internal/SwaggerOperationParameterComposer.js.map +1 -1
  64. package/lib/structures/IReflectHttpOperation.d.ts +1 -1
  65. package/lib/structures/IReflectHttpOperationException.d.ts +2 -2
  66. package/lib/structures/ITypedApplication.d.ts +2 -0
  67. package/lib/transform.js +2 -2
  68. package/lib/transform.js.map +1 -1
  69. package/lib/transformers/IOperationMetadata.d.ts +6 -1
  70. package/lib/transformers/{ISdkTransformerContext.d.ts → ISdkOperationTransformerContext.d.ts} +1 -1
  71. package/lib/transformers/{ISdkTransformerContext.js → ISdkOperationTransformerContext.js} +1 -1
  72. package/lib/transformers/ISdkOperationTransformerContext.js.map +1 -0
  73. package/lib/transformers/SdkOperationProgrammer.d.ts +13 -0
  74. package/lib/transformers/{SdkMetadataProgrammer.js → SdkOperationProgrammer.js} +36 -55
  75. package/lib/transformers/SdkOperationProgrammer.js.map +1 -0
  76. package/lib/transformers/SdkOperationTransformer.d.ts +4 -0
  77. package/lib/transformers/{SdkTransformer.js → SdkOperationTransformer.js} +56 -16
  78. package/lib/transformers/SdkOperationTransformer.js.map +1 -0
  79. package/lib/utils/MetadataUtil.d.ts +4 -0
  80. package/lib/utils/MetadataUtil.js +34 -0
  81. package/lib/utils/MetadataUtil.js.map +1 -0
  82. package/lib/utils/StringUtil.d.ts +1 -0
  83. package/lib/utils/StringUtil.js +6 -0
  84. package/lib/utils/StringUtil.js.map +1 -1
  85. package/lib/validators/HttpHeadersValidator.d.ts +5 -0
  86. package/lib/validators/HttpHeadersValidator.js +29 -0
  87. package/lib/validators/HttpHeadersValidator.js.map +1 -0
  88. package/lib/validators/HttpQueryValidator.d.ts +5 -0
  89. package/lib/validators/HttpQueryValidator.js +29 -0
  90. package/lib/validators/HttpQueryValidator.js.map +1 -0
  91. package/package.json +8 -8
  92. package/src/NestiaSdkApplication.ts +20 -30
  93. package/src/analyses/ReflectControllerAnalyzer.ts +2 -0
  94. package/src/analyses/ReflectHttpOperationAnalyzer.ts +10 -1
  95. package/src/analyses/ReflectHttpOperationExceptionAnalyzer.ts +71 -0
  96. package/src/analyses/ReflectHttpOperationParameterAnalyzer.ts +37 -8
  97. package/src/analyses/ReflectHttpOperationResponseAnalyzer.ts +8 -0
  98. package/src/analyses/ReflectWebSocketOperationAnalyzer.ts +10 -2
  99. package/src/analyses/TypedHttpRouteAnalyzer.ts +4 -1
  100. package/src/executable/internal/NestiaSdkCommand.ts +3 -2
  101. package/src/executable/sdk.ts +2 -0
  102. package/src/generates/CloneGenerator.ts +61 -60
  103. package/src/generates/SdkGenerator.ts +3 -3
  104. package/src/generates/SwaggerGenerator.ts +84 -10
  105. package/src/generates/internal/E2eFileProgrammer.ts +13 -3
  106. package/src/generates/internal/ImportDictionary.ts +1 -1
  107. package/src/generates/internal/SdkAliasCollection.ts +32 -10
  108. package/src/generates/internal/SdkFileProgrammer.ts +1 -1
  109. package/src/generates/internal/SdkHttpCloneProgrammer.ts +118 -144
  110. package/src/generates/internal/SdkHttpCloneReferencer.ts +71 -0
  111. package/src/generates/internal/SdkHttpFunctionProgrammer.ts +31 -16
  112. package/src/generates/internal/SdkHttpNamespaceProgrammer.ts +252 -230
  113. package/src/generates/internal/SdkHttpRouteProgrammer.ts +2 -2
  114. package/src/generates/internal/SdkHttpSimulationProgrammer.ts +30 -24
  115. package/src/generates/internal/SdkWebSocketNamespaceProgrammer.ts +14 -6
  116. package/src/generates/internal/SdkWebSocketRouteProgrammer.ts +6 -8
  117. package/src/generates/internal/SwaggerOperationComposer.ts +25 -0
  118. package/src/generates/internal/SwaggerOperationParameterComposer.ts +3 -0
  119. package/src/structures/IReflectHttpOperation.ts +1 -4
  120. package/src/structures/IReflectHttpOperationException.ts +2 -2
  121. package/src/structures/ITypedApplication.ts +3 -0
  122. package/src/transform.ts +2 -2
  123. package/src/transformers/IOperationMetadata.ts +7 -1
  124. package/src/transformers/{ISdkTransformerContext.ts → ISdkOperationTransformerContext.ts} +1 -1
  125. package/src/transformers/{SdkMetadataProgrammer.ts → SdkOperationProgrammer.ts} +40 -62
  126. package/src/transformers/{SdkTransformer.ts → SdkOperationTransformer.ts} +88 -16
  127. package/src/utils/MetadataUtil.ts +26 -0
  128. package/src/utils/StringUtil.ts +8 -0
  129. package/src/validators/HttpHeadersValidator.ts +34 -0
  130. package/src/validators/HttpQueryValidator.ts +34 -0
  131. package/lib/transformers/ISdkTransformerContext.js.map +0 -1
  132. package/lib/transformers/SdkMetadataProgrammer.d.ts +0 -11
  133. package/lib/transformers/SdkMetadataProgrammer.js.map +0 -1
  134. package/lib/transformers/SdkTransformer.d.ts +0 -4
  135. package/lib/transformers/SdkTransformer.js.map +0 -1
@@ -1,16 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SdkMetadataProgrammer = void 0;
3
+ exports.SdkOperationProgrammer = void 0;
4
4
  const CommentFactory_1 = require("typia/lib/factories/CommentFactory");
5
5
  const MetadataFactory_1 = require("typia/lib/factories/MetadataFactory");
6
6
  const TypeFactory_1 = require("typia/lib/factories/TypeFactory");
7
7
  const Escaper_1 = require("typia/lib/utils/Escaper");
8
8
  const ImportAnalyzer_1 = require("../analyses/ImportAnalyzer");
9
- var SdkMetadataProgrammer;
10
- (function (SdkMetadataProgrammer) {
11
- SdkMetadataProgrammer.write = (p) => {
12
- var _a, _b;
13
- const signature = p.context.checker.getSignatureFromDeclaration(p.node);
9
+ const MetadataUtil_1 = require("../utils/MetadataUtil");
10
+ var SdkOperationProgrammer;
11
+ (function (SdkOperationProgrammer) {
12
+ SdkOperationProgrammer.write = (p) => {
13
+ var _a, _b, _c;
14
14
  return {
15
15
  parameters: p.node.parameters.map((parameter, index) => writeParameter({
16
16
  context: p.context,
@@ -23,18 +23,30 @@ var SdkMetadataProgrammer;
23
23
  generics: p.generics,
24
24
  type: getReturnType({
25
25
  checker: p.context.checker,
26
- signature,
26
+ signature: p.context.checker.getSignatureFromDeclaration(p.node),
27
27
  }),
28
28
  }),
29
- exceptions: {}, // @todo
30
- description: (_a = (signature && getDescription(signature))) !== null && _a !== void 0 ? _a : null,
31
- jsDocTags: (_b = signature === null || signature === void 0 ? void 0 : signature.getJsDocTags()) !== null && _b !== void 0 ? _b : [],
29
+ exceptions: p.exceptions.map((e) => writeResponse({
30
+ context: p.context,
31
+ generics: p.generics,
32
+ type: p.context.checker.getTypeFromTypeNode(e),
33
+ })),
34
+ jsDocTags: (_b = (_a = p.symbol) === null || _a === void 0 ? void 0 : _a.getJsDocTags()) !== null && _b !== void 0 ? _b : [],
35
+ description: p.symbol
36
+ ? (_c = CommentFactory_1.CommentFactory.description(p.symbol)) !== null && _c !== void 0 ? _c : null
37
+ : null,
32
38
  };
33
39
  };
34
40
  const writeParameter = (props) => {
35
41
  var _a, _b, _c, _d;
36
42
  const symbol = props.context.checker.getSymbolAtLocation(props.parameter);
37
- return Object.assign(Object.assign({}, writeType(Object.assign(Object.assign({}, props), { type: (_b = props.context.checker.getTypeFromTypeNode((_a = props.parameter.type) !== null && _a !== void 0 ? _a : TypeFactory_1.TypeFactory.keyword("any"))) !== null && _b !== void 0 ? _b : null, required: props.parameter.questionToken === undefined }))), { name: props.parameter.name.getText(), index: props.index, description: (_c = (symbol && CommentFactory_1.CommentFactory.description(symbol))) !== null && _c !== void 0 ? _c : null, jsDocTags: (_d = symbol === null || symbol === void 0 ? void 0 : symbol.getJsDocTags()) !== null && _d !== void 0 ? _d : [] });
43
+ const common = writeType({
44
+ context: props.context,
45
+ generics: props.generics,
46
+ type: (_b = props.context.checker.getTypeFromTypeNode((_a = props.parameter.type) !== null && _a !== void 0 ? _a : TypeFactory_1.TypeFactory.keyword("any"))) !== null && _b !== void 0 ? _b : null,
47
+ required: props.parameter.questionToken === undefined,
48
+ });
49
+ return Object.assign(Object.assign({}, common), { name: props.parameter.name.getText(), index: props.index, description: (_c = (symbol && CommentFactory_1.CommentFactory.description(symbol))) !== null && _c !== void 0 ? _c : null, jsDocTags: (_d = symbol === null || symbol === void 0 ? void 0 : symbol.getJsDocTags()) !== null && _d !== void 0 ? _d : [] });
38
50
  };
39
51
  const writeResponse = (props) => writeType(Object.assign(Object.assign({}, props), { required: true }));
40
52
  const writeType = (p) => {
@@ -99,51 +111,29 @@ var SdkMetadataProgrammer;
99
111
  };
100
112
  };
101
113
  const getReturnType = (p) => {
102
- var _a, _b, _c, _d;
103
- const type = (_b = (_a = p.signature) === null || _a === void 0 ? void 0 : _a.getReturnType()) !== null && _b !== void 0 ? _b : null;
114
+ var _a, _b, _c;
115
+ const type = (_a = (p.signature && p.checker.getReturnTypeOfSignature(p.signature))) !== null && _a !== void 0 ? _a : null;
104
116
  if (type === null)
105
117
  return null;
106
- else if (((_c = type.symbol) === null || _c === void 0 ? void 0 : _c.name) === "Promise") {
118
+ else if (((_b = type.symbol) === null || _b === void 0 ? void 0 : _b.name) === "Promise") {
107
119
  const generic = p.checker.getTypeArguments(type);
108
- return (_d = generic[0]) !== null && _d !== void 0 ? _d : null;
120
+ return (_c = generic[0]) !== null && _c !== void 0 ? _c : null;
109
121
  }
110
122
  return type;
111
123
  };
112
- })(SdkMetadataProgrammer || (exports.SdkMetadataProgrammer = SdkMetadataProgrammer = {}));
113
- const iterateVisited = (metdata) => {
124
+ })(SdkOperationProgrammer || (exports.SdkOperationProgrammer = SdkOperationProgrammer = {}));
125
+ const iterateVisited = (metadata) => {
114
126
  const names = new Set();
115
- const visited = new WeakSet();
116
- const iterate = (metadata) => {
117
- if (visited.has(metadata))
118
- return;
119
- visited.add(metadata);
120
- for (const alias of metadata.aliases) {
127
+ MetadataUtil_1.MetadataUtil.visit((m) => {
128
+ for (const alias of m.aliases)
121
129
  names.add(alias.name);
122
- iterate(alias.value);
123
- }
124
- for (const array of metadata.arrays) {
130
+ for (const array of m.arrays)
125
131
  names.add(array.type.name);
126
- iterate(array.type.value);
127
- }
128
- for (const tuple of metadata.tuples) {
132
+ for (const tuple of m.tuples)
129
133
  names.add(tuple.type.name);
130
- tuple.type.elements.map(iterate);
131
- }
132
- for (const object of metadata.objects) {
134
+ for (const object of m.objects)
133
135
  names.add(object.name);
134
- object.properties.map((p) => {
135
- iterate(p.key);
136
- iterate(p.value);
137
- });
138
- }
139
- if (metadata.escaped) {
140
- iterate(metadata.escaped.original);
141
- iterate(metadata.escaped.returns);
142
- }
143
- if (metadata.rest)
144
- iterate(metadata.rest);
145
- };
146
- iterate(metdata);
136
+ })(metadata);
147
137
  return names;
148
138
  };
149
139
  const join = ({ object, key, }) => {
@@ -155,13 +145,4 @@ const join = ({ object, key, }) => {
155
145
  return `${object.name}.${key}`;
156
146
  return `${object.name}[${JSON.stringify(key)}]`;
157
147
  };
158
- const getDescription = (signature) => {
159
- const content = signature
160
- .getDocumentationComment(undefined)
161
- .filter((c) => c.kind === "text")
162
- .map((c) => c.text);
163
- return content.length
164
- ? content.map((line) => line.split("\r\n").join("\n")).join("\n")
165
- : null;
166
- };
167
- //# sourceMappingURL=SdkMetadataProgrammer.js.map
148
+ //# sourceMappingURL=SdkOperationProgrammer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SdkOperationProgrammer.js","sourceRoot":"","sources":["../../src/transformers/SdkOperationProgrammer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import ts from "typescript";
2
+ export declare namespace SdkOperationTransformer {
3
+ const iterateFile: (checker: ts.TypeChecker) => (api: ts.TransformationContext) => (file: ts.SourceFile) => ts.SourceFile;
4
+ }
@@ -3,23 +3,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SdkTransformer = void 0;
6
+ exports.SdkOperationTransformer = void 0;
7
+ const path_1 = __importDefault(require("path"));
7
8
  const tstl_1 = require("tstl");
8
9
  const typescript_1 = __importDefault(require("typescript"));
9
10
  const LiteralFactory_1 = require("typia/lib/factories/LiteralFactory");
10
11
  const MetadataCollection_1 = require("typia/lib/factories/MetadataCollection");
11
12
  const TypeFactory_1 = require("typia/lib/factories/TypeFactory");
12
13
  const GenericAnalyzer_1 = require("../analyses/GenericAnalyzer");
13
- const SdkMetadataProgrammer_1 = require("./SdkMetadataProgrammer");
14
- var SdkTransformer;
15
- (function (SdkTransformer) {
16
- SdkTransformer.transformFile = (checker) => (api) => {
14
+ const SdkOperationProgrammer_1 = require("./SdkOperationProgrammer");
15
+ var SdkOperationTransformer;
16
+ (function (SdkOperationTransformer) {
17
+ SdkOperationTransformer.iterateFile = (checker) => (api) => {
17
18
  const context = {
18
19
  checker,
19
20
  api,
20
- collection: new MetadataCollection_1.MetadataCollection({
21
- replace: MetadataCollection_1.MetadataCollection.replace,
22
- }),
21
+ collection: collection.get(),
23
22
  };
24
23
  return (file) => {
25
24
  if (file.isDeclarationFile === true)
@@ -28,7 +27,7 @@ var SdkTransformer;
28
27
  done: false,
29
28
  visited: new tstl_1.HashSet(),
30
29
  };
31
- file = typescript_1.default.visitEachChild(file, (node) => transformNode({
30
+ file = typescript_1.default.visitEachChild(file, (node) => iterateNode({
32
31
  context,
33
32
  visitor,
34
33
  node,
@@ -41,13 +40,29 @@ var SdkTransformer;
41
40
  ]);
42
41
  };
43
42
  };
44
- const transformNode = (props) => typescript_1.default.isClassDeclaration(props.node)
45
- ? transformClass(Object.assign(Object.assign({}, props), { node: props.node }))
46
- : props.node;
43
+ const iterateNode = (props) => typescript_1.default.visitEachChild(transformNode(props), (child) => iterateNode(Object.assign(Object.assign({}, props), { node: child })), props.context.api);
44
+ const transformNode = (props) => {
45
+ return typescript_1.default.isClassDeclaration(props.node)
46
+ ? transformClass(Object.assign(Object.assign({}, props), { node: props.node }))
47
+ : props.node;
48
+ };
47
49
  const transformClass = (props) => {
48
50
  const generics = GenericAnalyzer_1.GenericAnalyzer.analyze(props.context.checker, props.node);
51
+ // TO AVOID COMMENT COMPILATION BUG
52
+ const symbolDict = new Map();
53
+ const classType = props.context.checker.getTypeAtLocation(props.node);
54
+ for (const symbol of classType.getProperties()) {
55
+ const declaration = (symbol.declarations ||
56
+ [])[0];
57
+ if (!declaration || !typescript_1.default.isMethodDeclaration(declaration))
58
+ continue;
59
+ const identifier = declaration.name;
60
+ if (!typescript_1.default.isIdentifier(identifier))
61
+ continue;
62
+ symbolDict.set(identifier.escapedText.toString(), symbol);
63
+ }
49
64
  return typescript_1.default.factory.updateClassDeclaration(props.node, props.node.modifiers, props.node.name, props.node.typeParameters, props.node.heritageClauses, props.node.members.map((m) => typescript_1.default.isMethodDeclaration(m)
50
- ? transformMethod(Object.assign(Object.assign({}, props), { generics, class: props.node, node: m }))
65
+ ? transformMethod(Object.assign(Object.assign({}, props), { generics, class: props.node, node: m, symbol: symbolDict.get(m.name.getText()) }))
51
66
  : m));
52
67
  };
53
68
  const transformMethod = (props) => {
@@ -64,7 +79,10 @@ var SdkTransformer;
64
79
  return props.node;
65
80
  else
66
81
  props.visitor.visited.insert(key);
67
- const metadata = SdkMetadataProgrammer_1.SdkMetadataProgrammer.write(props);
82
+ const metadata = SdkOperationProgrammer_1.SdkOperationProgrammer.write(Object.assign(Object.assign({}, props), { exceptions: getExceptionTypes({
83
+ checker: props.context.checker,
84
+ decorators,
85
+ }) }));
68
86
  return typescript_1.default.factory.updateMethodDeclaration(props.node, [
69
87
  ...((_c = props.node.modifiers) !== null && _c !== void 0 ? _c : []),
70
88
  typescript_1.default.factory.createDecorator(typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("__OperationMetadata.OperationMetadata"), undefined, [
@@ -72,7 +90,25 @@ var SdkTransformer;
72
90
  ])),
73
91
  ], props.node.asteriskToken, props.node.name, props.node.questionToken, props.node.typeParameters, props.node.parameters, props.node.type, props.node.body);
74
92
  };
75
- })(SdkTransformer || (exports.SdkTransformer = SdkTransformer = {}));
93
+ const getExceptionTypes = (props) => props.decorators
94
+ .map((deco) => {
95
+ var _a, _b, _c;
96
+ if (false === typescript_1.default.isCallExpression(deco.expression))
97
+ return null;
98
+ const signature = props.checker.getResolvedSignature(deco.expression);
99
+ if (signature === undefined)
100
+ return null;
101
+ else if (!signature.declaration)
102
+ return null;
103
+ const location = path_1.default.resolve((_b = (_a = signature.declaration.getSourceFile()) === null || _a === void 0 ? void 0 : _a.fileName) !== null && _b !== void 0 ? _b : "");
104
+ if (location.includes(TYPED_EXCEPTION_PATH) === false)
105
+ return null;
106
+ else if (((_c = deco.expression.typeArguments) === null || _c === void 0 ? void 0 : _c.length) !== 1)
107
+ return null;
108
+ return deco.expression.typeArguments[0];
109
+ })
110
+ .filter((t) => t !== null);
111
+ })(SdkOperationTransformer || (exports.SdkOperationTransformer = SdkOperationTransformer = {}));
76
112
  class MethodKey {
77
113
  constructor(className, methodName) {
78
114
  this.className = className;
@@ -85,4 +121,8 @@ class MethodKey {
85
121
  return (0, tstl_1.hash)(this.className, this.methodName);
86
122
  }
87
123
  }
88
- //# sourceMappingURL=SdkTransformer.js.map
124
+ const TYPED_EXCEPTION_PATH = path_1.default.join("@nestia", "core", "lib", "decorators", `TypedException.d.ts`);
125
+ const collection = new tstl_1.Singleton(() => new MetadataCollection_1.MetadataCollection({
126
+ replace: MetadataCollection_1.MetadataCollection.replace,
127
+ }));
128
+ //# sourceMappingURL=SdkOperationTransformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SdkOperationTransformer.js","sourceRoot":"","sources":["../../src/transformers/SdkOperationTransformer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Metadata as metadata } from "typia/lib/schemas/metadata/Metadata";
2
+ export declare namespace MetadataUtil {
3
+ const visit: (closure: (m: metadata) => unknown) => (metadata: metadata) => void;
4
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetadataUtil = void 0;
4
+ var MetadataUtil;
5
+ (function (MetadataUtil) {
6
+ MetadataUtil.visit = (closure) => {
7
+ const visited = new WeakSet();
8
+ const iterate = (metadata) => {
9
+ if (visited.has(metadata))
10
+ return;
11
+ visited.add(metadata);
12
+ closure(metadata);
13
+ for (const alias of metadata.aliases)
14
+ iterate(alias.value);
15
+ for (const array of metadata.arrays)
16
+ iterate(array.type.value);
17
+ for (const tuple of metadata.tuples)
18
+ tuple.type.elements.map(iterate);
19
+ for (const object of metadata.objects)
20
+ object.properties.forEach((p) => {
21
+ iterate(p.key);
22
+ iterate(p.value);
23
+ });
24
+ if (metadata.escaped) {
25
+ iterate(metadata.escaped.original);
26
+ iterate(metadata.escaped.returns);
27
+ }
28
+ if (metadata.rest)
29
+ iterate(metadata.rest);
30
+ };
31
+ return iterate;
32
+ };
33
+ })(MetadataUtil || (exports.MetadataUtil = MetadataUtil = {}));
34
+ //# sourceMappingURL=MetadataUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetadataUtil.js","sourceRoot":"","sources":["../../src/utils/MetadataUtil.ts"],"names":[],"mappings":";;;AAEA,IAAiB,YAAY,CAuB5B;AAvBD,WAAiB,YAAY;IACd,kBAAK,GAAG,CAAC,OAAiC,EAAE,EAAE;QACzD,MAAM,OAAO,GAAsB,IAAI,OAAO,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,CAAC,QAAkB,EAAQ,EAAE;YAC3C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO;YAClC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,OAAO,CAAC,QAAQ,CAAC,CAAC;YAClB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,OAAO;gBAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC3D,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM;gBAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/D,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtE,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO;gBACnC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC9B,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACf,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC;YACL,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;YACD,IAAI,QAAQ,CAAC,IAAI;gBAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC,EAvBgB,YAAY,4BAAZ,YAAY,QAuB5B"}
@@ -1,4 +1,5 @@
1
1
  export declare namespace StringUtil {
2
2
  const capitalize: (text: string) => string;
3
3
  const escapeDuplicate: (keep: string[]) => (change: string) => string;
4
+ const isImplicit: (str: string) => boolean;
4
5
  }
@@ -5,5 +5,11 @@ var StringUtil;
5
5
  (function (StringUtil) {
6
6
  StringUtil.capitalize = (text) => text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();
7
7
  StringUtil.escapeDuplicate = (keep) => (change) => keep.includes(change) ? StringUtil.escapeDuplicate(keep)(`_${change}`) : change;
8
+ StringUtil.isImplicit = (str) => str === "object" ||
9
+ str === "__type" ||
10
+ str === "__object" ||
11
+ str.startsWith("__type.") ||
12
+ str.startsWith("__object.") ||
13
+ str.includes("readonly [");
8
14
  })(StringUtil || (exports.StringUtil = StringUtil = {}));
9
15
  //# sourceMappingURL=StringUtil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StringUtil.js","sourceRoot":"","sources":["../../src/utils/StringUtil.ts"],"names":[],"mappings":";;;AAAA,IAAiB,UAAU,CAQ1B;AARD,WAAiB,UAAU;IACZ,qBAAU,GAAG,CAAC,IAAY,EAAU,EAAE,CACjD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAEhD,0BAAe,GAC1B,CAAC,IAAc,EAAE,EAAE,CACnB,CAAC,MAAc,EAAU,EAAE,CACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAA,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3E,CAAC,EARgB,UAAU,0BAAV,UAAU,QAQ1B"}
1
+ {"version":3,"file":"StringUtil.js","sourceRoot":"","sources":["../../src/utils/StringUtil.ts"],"names":[],"mappings":";;;AAAA,IAAiB,UAAU,CAgB1B;AAhBD,WAAiB,UAAU;IACZ,qBAAU,GAAG,CAAC,IAAY,EAAU,EAAE,CACjD,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAEhD,0BAAe,GAC1B,CAAC,IAAc,EAAE,EAAE,CACnB,CAAC,MAAc,EAAU,EAAE,CACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAA,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAE5D,qBAAU,GAAG,CAAC,GAAW,EAAE,EAAE,CACxC,GAAG,KAAK,QAAQ;QAChB,GAAG,KAAK,QAAQ;QAChB,GAAG,KAAK,UAAU;QAClB,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;QACzB,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC;QAC3B,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC/B,CAAC,EAhBgB,UAAU,0BAAV,UAAU,QAgB1B"}
@@ -0,0 +1,5 @@
1
+ import { MetadataFactory } from "typia/lib/factories/MetadataFactory";
2
+ import { Metadata } from "typia/lib/schemas/metadata/Metadata";
3
+ export declare namespace HttpHeadersValidator {
4
+ const validate: (meta: Metadata, explore: MetadataFactory.IExplore) => string[];
5
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HttpHeadersValidator = void 0;
4
+ const MetadataArrayType_1 = require("typia/lib/schemas/metadata/MetadataArrayType");
5
+ var HttpHeadersValidator;
6
+ (function (HttpHeadersValidator) {
7
+ HttpHeadersValidator.validate = (meta, explore) => {
8
+ const errors = [];
9
+ const insert = (msg) => errors.push(msg);
10
+ if (explore.top === true) {
11
+ const expected = meta.atomics.length +
12
+ meta.templates.length +
13
+ meta.constants.map((c) => c.values.length).reduce((a, b) => a + b, 0) +
14
+ meta.arrays.length;
15
+ if (meta.size() !== expected)
16
+ insert("Only atomic or array of atomic types are allowed.");
17
+ }
18
+ else if (explore.nested !== null &&
19
+ explore.nested instanceof MetadataArrayType_1.MetadataArrayType) {
20
+ const expected = meta.atomics.length +
21
+ meta.templates.length +
22
+ meta.constants.map((c) => c.values.length).reduce((a, b) => a + b, 0);
23
+ if (meta.size() !== expected)
24
+ insert("Only atomic types are allowed in array.");
25
+ }
26
+ return errors;
27
+ };
28
+ })(HttpHeadersValidator || (exports.HttpHeadersValidator = HttpHeadersValidator = {}));
29
+ //# sourceMappingURL=HttpHeadersValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpHeadersValidator.js","sourceRoot":"","sources":["../../src/validators/HttpHeadersValidator.ts"],"names":[],"mappings":";;;AAEA,oFAAiF;AAEjF,IAAiB,oBAAoB,CA6BpC;AA7BD,WAAiB,oBAAoB;IACtB,6BAAQ,GAAG,CACtB,IAAc,EACd,OAAiC,EACvB,EAAE;QACZ,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEjD,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,QAAQ,GACZ,IAAI,CAAC,OAAO,CAAC,MAAM;gBACnB,IAAI,CAAC,SAAS,CAAC,MAAM;gBACrB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACrE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACrB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ;gBAC1B,MAAM,CAAC,mDAAmD,CAAC,CAAC;QAChE,CAAC;aAAM,IACL,OAAO,CAAC,MAAM,KAAK,IAAI;YACvB,OAAO,CAAC,MAAM,YAAY,qCAAiB,EAC3C,CAAC;YACD,MAAM,QAAQ,GACZ,IAAI,CAAC,OAAO,CAAC,MAAM;gBACnB,IAAI,CAAC,SAAS,CAAC,MAAM;gBACrB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACxE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ;gBAC1B,MAAM,CAAC,yCAAyC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC,EA7BgB,oBAAoB,oCAApB,oBAAoB,QA6BpC"}
@@ -0,0 +1,5 @@
1
+ import { MetadataFactory } from "typia/lib/factories/MetadataFactory";
2
+ import { Metadata } from "typia/lib/schemas/metadata/Metadata";
3
+ export declare namespace HttpQueryValidator {
4
+ const validate: (meta: Metadata, explore: MetadataFactory.IExplore) => string[];
5
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HttpQueryValidator = void 0;
4
+ const MetadataArrayType_1 = require("typia/lib/schemas/metadata/MetadataArrayType");
5
+ var HttpQueryValidator;
6
+ (function (HttpQueryValidator) {
7
+ HttpQueryValidator.validate = (meta, explore) => {
8
+ const errors = [];
9
+ const insert = (msg) => errors.push(msg);
10
+ if (explore.top === true) {
11
+ const expected = meta.atomics.length +
12
+ meta.templates.length +
13
+ meta.constants.map((c) => c.values.length).reduce((a, b) => a + b, 0) +
14
+ meta.arrays.length;
15
+ if (meta.size() !== expected)
16
+ insert("Only atomic or array of atomic types are allowed.");
17
+ }
18
+ else if (explore.nested !== null &&
19
+ explore.nested instanceof MetadataArrayType_1.MetadataArrayType) {
20
+ const expected = meta.atomics.length +
21
+ meta.templates.length +
22
+ meta.constants.map((c) => c.values.length).reduce((a, b) => a + b, 0);
23
+ if (meta.size() !== expected)
24
+ insert("Only atomic types are allowed in array.");
25
+ }
26
+ return errors;
27
+ };
28
+ })(HttpQueryValidator || (exports.HttpQueryValidator = HttpQueryValidator = {}));
29
+ //# sourceMappingURL=HttpQueryValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpQueryValidator.js","sourceRoot":"","sources":["../../src/validators/HttpQueryValidator.ts"],"names":[],"mappings":";;;AAEA,oFAAiF;AAEjF,IAAiB,kBAAkB,CA6BlC;AA7BD,WAAiB,kBAAkB;IACpB,2BAAQ,GAAG,CACtB,IAAc,EACd,OAAiC,EACvB,EAAE;QACZ,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEjD,IAAI,OAAO,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,QAAQ,GACZ,IAAI,CAAC,OAAO,CAAC,MAAM;gBACnB,IAAI,CAAC,SAAS,CAAC,MAAM;gBACrB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACrE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACrB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ;gBAC1B,MAAM,CAAC,mDAAmD,CAAC,CAAC;QAChE,CAAC;aAAM,IACL,OAAO,CAAC,MAAM,KAAK,IAAI;YACvB,OAAO,CAAC,MAAM,YAAY,qCAAiB,EAC3C,CAAC;YACD,MAAM,QAAQ,GACZ,IAAI,CAAC,OAAO,CAAC,MAAM;gBACnB,IAAI,CAAC,SAAS,CAAC,MAAM;gBACrB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACxE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ;gBAC1B,MAAM,CAAC,yCAAyC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC,EA7BgB,kBAAkB,kCAAlB,kBAAkB,QA6BlC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestia/sdk",
3
- "version": "3.11.0-dev.20240813-10",
3
+ "version": "3.11.0-dev.20240814",
4
4
  "description": "Nestia SDK and Swagger generator",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -32,9 +32,9 @@
32
32
  },
33
33
  "homepage": "https://nestia.io",
34
34
  "dependencies": {
35
- "@nestia/core": "^3.11.0-dev.20240813-10",
36
- "@nestia/fetcher": "^3.11.0-dev.20240813-10",
37
- "@samchon/openapi": "^0.4.3",
35
+ "@nestia/core": "^3.11.0-dev.20240814",
36
+ "@nestia/fetcher": "^3.11.0-dev.20240814",
37
+ "@samchon/openapi": "^0.4.5",
38
38
  "@wrtnio/openai-function-schema": "^0.2.3",
39
39
  "cli": "^1.0.1",
40
40
  "get-function-location": "^2.0.0",
@@ -45,16 +45,16 @@
45
45
  "tsconfck": "^2.1.2",
46
46
  "tsconfig-paths": "^4.1.1",
47
47
  "tstl": "^3.0.0",
48
- "typia": "^6.8.0-dev.20240812"
48
+ "typia": "^6.8.0"
49
49
  },
50
50
  "peerDependencies": {
51
- "@nestia/core": ">=3.11.0-dev.20240813-10",
52
- "@nestia/fetcher": ">=3.11.0-dev.20240813-10",
51
+ "@nestia/core": ">=3.11.0-dev.20240814",
52
+ "@nestia/fetcher": ">=3.11.0-dev.20240814",
53
53
  "@nestjs/common": ">=7.0.1",
54
54
  "@nestjs/core": ">=7.0.1",
55
55
  "reflect-metadata": ">=0.1.12",
56
56
  "ts-node": ">=10.6.0",
57
- "typia": ">=6.8.0-dev.20240812 <7.0.0"
57
+ "typia": ">=6.8.0 <7.0.0"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@trivago/prettier-plugin-sort-imports": "^4.3.0",
@@ -27,6 +27,24 @@ import { VersioningStrategy } from "./utils/VersioningStrategy";
27
27
  export class NestiaSdkApplication {
28
28
  public constructor(private readonly config: INestiaConfig) {}
29
29
 
30
+ public async all(): Promise<void> {
31
+ if (
32
+ !this.config.output &&
33
+ !this.config.swagger?.output &&
34
+ !this.config.openai?.output
35
+ )
36
+ throw new Error("Error on NestiaApplication.all(): nothing to generate.");
37
+ print_title("Nestia All Generator");
38
+ await this.generate({
39
+ generate: async (app) => {
40
+ if (this.config.output) await SdkGenerator.generate(app);
41
+ if (this.config.e2e) await E2eGenerator.generate(app);
42
+ if (this.config.swagger) await SwaggerGenerator.generate(app);
43
+ if (this.config.openai) await OpenAiGenerator.generate(app);
44
+ },
45
+ });
46
+ }
47
+
30
48
  public async e2e(): Promise<void> {
31
49
  if (!this.config.output)
32
50
  throw new Error(
@@ -234,6 +252,7 @@ export class NestiaSdkApplication {
234
252
  if (props.validate !== undefined)
235
253
  props.validate({
236
254
  project,
255
+ collection,
237
256
  routes,
238
257
  });
239
258
  if (project.errors.length)
@@ -243,6 +262,7 @@ export class NestiaSdkApplication {
243
262
  });
244
263
  await props.generate({
245
264
  project,
265
+ collection,
246
266
  routes,
247
267
  });
248
268
  }
@@ -254,22 +274,6 @@ const print_title = (str: string): void => {
254
274
  console.log("-----------------------------------------------------------");
255
275
  };
256
276
 
257
- // const is_implicit_return_typed = (route: ITypedHttpRoute): boolean => {
258
- // const name: string = route.output.typeName;
259
- // if (name === "void") return false;
260
- // else if (name.indexOf("readonly [") !== -1) return true;
261
-
262
- // const pos: number = name.indexOf("__object");
263
- // if (pos === -1) return false;
264
-
265
- // const before: number = pos - 1;
266
- // const after: number = pos + "__object".length;
267
- // for (const i of [before, after])
268
- // if (name[i] === undefined) continue;
269
- // else if (VARIABLE.test(name[i])) return false;
270
- // return true;
271
- // };
272
-
273
277
  const report = (props: {
274
278
  type: "error" | "warning";
275
279
  errors: IReflectOperationError[];
@@ -311,20 +315,6 @@ const report = (props: {
311
315
  ].join("");
312
316
  console.log(message);
313
317
  }
314
-
315
- // for (const [file, cMap] of map) {
316
- // for (const [controller, fMap] of cMap)
317
- // for (const [func, messages] of fMap) {
318
- // const location: string = path.relative(process.cwd(), file);
319
- // console.log(
320
- // `${location} - ${
321
- // func !== null ? `${controller}.${func}()` : controller
322
- // }`,
323
- // );
324
- // for (const msg of messages) console.log(` - ${msg}`);
325
- // console.log("");
326
- // }
327
- // }
328
318
  };
329
319
 
330
320
  const wrapPaths = (paths: string[]): string[] =>
@@ -72,6 +72,8 @@ export namespace ReflectControllerAnalyzer {
72
72
  key,
73
73
  );
74
74
  if (metadata === undefined) continue;
75
+ else if (metadata.jsDocTags.some((tag) => tag.name === "ignore"))
76
+ continue;
75
77
  const next: ReflectHttpOperationAnalyzer.IProps = {
76
78
  project: props.project,
77
79
  controller: controller,
@@ -11,6 +11,7 @@ import { IOperationMetadata } from "../transformers/IOperationMetadata";
11
11
  import { ArrayUtil } from "../utils/ArrayUtil";
12
12
  import { ImportAnalyzer } from "./ImportAnalyzer";
13
13
  import { PathAnalyzer } from "./PathAnalyzer";
14
+ import { ReflectHttpOperationExceptionAnalyzer } from "./ReflectHttpOperationExceptionAnalyzer";
14
15
  import { ReflectHttpOperationParameterAnalyzer } from "./ReflectHttpOperationParameterAnalyzer";
15
16
  import { ReflectHttpOperationResponseAnalyzer } from "./ReflectHttpOperationResponseAnalyzer";
16
17
  import { ReflectMetadataAnalyzer } from "./ReflectMetadataAnalyzer";
@@ -91,7 +92,14 @@ export namespace ReflectHttpOperationAnalyzer {
91
92
  parameters,
92
93
  success,
93
94
  security: ReflectMetadataAnalyzer.securities(props.function),
94
- exceptions: {} as any,
95
+ exceptions: ReflectHttpOperationExceptionAnalyzer.analyze({
96
+ controller: props.controller,
97
+ function: props.function,
98
+ functionName: props.name,
99
+ httpMethod: method,
100
+ metadata: props.metadata,
101
+ errors,
102
+ }),
95
103
  tags: Reflect.getMetadata("swagger/apiUseTags", props.function) ?? [],
96
104
  imports: ImportAnalyzer.unique(
97
105
  [
@@ -99,6 +107,7 @@ export namespace ReflectHttpOperationAnalyzer {
99
107
  .filter((x) => parameters.some((y) => x.index === y.index))
100
108
  .map((x) => x.imports),
101
109
  ...props.metadata.success.imports,
110
+ ...Object.values(props.metadata.exceptions).map((e) => e.imports),
102
111
  ].flat(),
103
112
  ),
104
113
  description: props.metadata.description,