nestjs-openapi-next 1.0.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 (244) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +211 -0
  3. package/bun.lock +2154 -0
  4. package/dist/constants.d.ts +23 -0
  5. package/dist/constants.js +26 -0
  6. package/dist/decorators/api-basic.decorator.d.ts +1 -0
  7. package/dist/decorators/api-basic.decorator.js +7 -0
  8. package/dist/decorators/api-bearer.decorator.d.ts +1 -0
  9. package/dist/decorators/api-bearer.decorator.js +7 -0
  10. package/dist/decorators/api-body.decorator.d.ts +16 -0
  11. package/dist/decorators/api-body.decorator.js +22 -0
  12. package/dist/decorators/api-callbacks.decorator.d.ts +2 -0
  13. package/dist/decorators/api-callbacks.decorator.js +8 -0
  14. package/dist/decorators/api-consumes.decorator.d.ts +1 -0
  15. package/dist/decorators/api-consumes.decorator.js +8 -0
  16. package/dist/decorators/api-cookie.decorator.d.ts +1 -0
  17. package/dist/decorators/api-cookie.decorator.js +7 -0
  18. package/dist/decorators/api-default-getter.decorator.d.ts +2 -0
  19. package/dist/decorators/api-default-getter.decorator.js +12 -0
  20. package/dist/decorators/api-exclude-controller.decorator.d.ts +1 -0
  21. package/dist/decorators/api-exclude-controller.decorator.js +8 -0
  22. package/dist/decorators/api-exclude-endpoint.decorator.d.ts +1 -0
  23. package/dist/decorators/api-exclude-endpoint.decorator.js +10 -0
  24. package/dist/decorators/api-extension.decorator.d.ts +1 -0
  25. package/dist/decorators/api-extension.decorator.js +38 -0
  26. package/dist/decorators/api-extra-models.decorator.d.ts +1 -0
  27. package/dist/decorators/api-extra-models.decorator.js +17 -0
  28. package/dist/decorators/api-header.decorator.d.ts +7 -0
  29. package/dist/decorators/api-header.decorator.js +37 -0
  30. package/dist/decorators/api-hide-property.decorator.d.ts +1 -0
  31. package/dist/decorators/api-hide-property.decorator.js +6 -0
  32. package/dist/decorators/api-link.decorator.d.ts +7 -0
  33. package/dist/decorators/api-link.decorator.js +21 -0
  34. package/dist/decorators/api-oauth2.decorator.d.ts +1 -0
  35. package/dist/decorators/api-oauth2.decorator.js +7 -0
  36. package/dist/decorators/api-operation.decorator.d.ts +5 -0
  37. package/dist/decorators/api-operation.decorator.js +12 -0
  38. package/dist/decorators/api-param.decorator.d.ts +22 -0
  39. package/dist/decorators/api-param.decorator.js +17 -0
  40. package/dist/decorators/api-produces.decorator.d.ts +1 -0
  41. package/dist/decorators/api-produces.decorator.js +8 -0
  42. package/dist/decorators/api-property.decorator.d.ts +15 -0
  43. package/dist/decorators/api-property.decorator.js +48 -0
  44. package/dist/decorators/api-query-method.decorator.d.ts +1 -0
  45. package/dist/decorators/api-query-method.decorator.js +8 -0
  46. package/dist/decorators/api-query.decorator.d.ts +24 -0
  47. package/dist/decorators/api-query.decorator.js +25 -0
  48. package/dist/decorators/api-response.decorator.d.ts +39 -0
  49. package/dist/decorators/api-response.decorator.js +55 -0
  50. package/dist/decorators/api-schema.decorator.d.ts +6 -0
  51. package/dist/decorators/api-schema.decorator.js +8 -0
  52. package/dist/decorators/api-security-device-flow.decorator.d.ts +1 -0
  53. package/dist/decorators/api-security-device-flow.decorator.js +7 -0
  54. package/dist/decorators/api-security.decorator.d.ts +2 -0
  55. package/dist/decorators/api-security.decorator.js +25 -0
  56. package/dist/decorators/api-streaming-response.decorator.d.ts +7 -0
  57. package/dist/decorators/api-streaming-response.decorator.js +9 -0
  58. package/dist/decorators/api-tag-group.decorator.d.ts +11 -0
  59. package/dist/decorators/api-tag-group.decorator.js +13 -0
  60. package/dist/decorators/api-use-tags.decorator.d.ts +1 -0
  61. package/dist/decorators/api-use-tags.decorator.js +8 -0
  62. package/dist/decorators/helpers.d.ts +8 -0
  63. package/dist/decorators/helpers.js +123 -0
  64. package/dist/decorators/index.d.ts +28 -0
  65. package/dist/decorators/index.js +48 -0
  66. package/dist/document-builder.d.ts +29 -0
  67. package/dist/document-builder.js +142 -0
  68. package/dist/explorers/api-callbacks.explorer.d.ts +2 -0
  69. package/dist/explorers/api-callbacks.explorer.js +36 -0
  70. package/dist/explorers/api-consumes.explorer.d.ts +5 -0
  71. package/dist/explorers/api-consumes.explorer.js +11 -0
  72. package/dist/explorers/api-exclude-controller.explorer.d.ts +2 -0
  73. package/dist/explorers/api-exclude-controller.explorer.js +10 -0
  74. package/dist/explorers/api-exclude-endpoint.explorer.d.ts +2 -0
  75. package/dist/explorers/api-exclude-endpoint.explorer.js +6 -0
  76. package/dist/explorers/api-extra-models.explorer.d.ts +3 -0
  77. package/dist/explorers/api-extra-models.explorer.js +11 -0
  78. package/dist/explorers/api-headers.explorer.d.ts +7 -0
  79. package/dist/explorers/api-headers.explorer.js +9 -0
  80. package/dist/explorers/api-operation.explorer.d.ts +2 -0
  81. package/dist/explorers/api-operation.explorer.js +43 -0
  82. package/dist/explorers/api-parameters.explorer.d.ts +71 -0
  83. package/dist/explorers/api-parameters.explorer.js +47 -0
  84. package/dist/explorers/api-produces.explorer.d.ts +5 -0
  85. package/dist/explorers/api-produces.explorer.js +11 -0
  86. package/dist/explorers/api-response.explorer.d.ts +13 -0
  87. package/dist/explorers/api-response.explorer.js +103 -0
  88. package/dist/explorers/api-security.explorer.d.ts +5 -0
  89. package/dist/explorers/api-security.explorer.js +13 -0
  90. package/dist/explorers/api-use-tags.explorer.d.ts +5 -0
  91. package/dist/explorers/api-use-tags.explorer.js +18 -0
  92. package/dist/extra/swagger-shim.d.ts +100 -0
  93. package/dist/extra/swagger-shim.js +367 -0
  94. package/dist/fixtures/document.base.d.ts +2 -0
  95. package/dist/fixtures/document.base.js +16 -0
  96. package/dist/index.d.ts +7 -0
  97. package/dist/index.js +23 -0
  98. package/dist/interfaces/callback-object.interface.d.ts +12 -0
  99. package/dist/interfaces/callback-object.interface.js +2 -0
  100. package/dist/interfaces/denormalized-doc-resolvers.interface.d.ts +7 -0
  101. package/dist/interfaces/denormalized-doc-resolvers.interface.js +2 -0
  102. package/dist/interfaces/denormalized-doc.interface.d.ts +8 -0
  103. package/dist/interfaces/denormalized-doc.interface.js +2 -0
  104. package/dist/interfaces/enum-schema-attributes.interface.d.ts +2 -0
  105. package/dist/interfaces/enum-schema-attributes.interface.js +2 -0
  106. package/dist/interfaces/index.d.ts +3 -0
  107. package/dist/interfaces/index.js +18 -0
  108. package/dist/interfaces/module-route.interface.d.ts +2 -0
  109. package/dist/interfaces/module-route.interface.js +2 -0
  110. package/dist/interfaces/open-api-spec.interface.d.ts +252 -0
  111. package/dist/interfaces/open-api-spec.interface.js +2 -0
  112. package/dist/interfaces/schema-object-metadata.interface.d.ts +30 -0
  113. package/dist/interfaces/schema-object-metadata.interface.js +2 -0
  114. package/dist/interfaces/swagger-custom-options.interface.d.ts +24 -0
  115. package/dist/interfaces/swagger-custom-options.interface.js +2 -0
  116. package/dist/interfaces/swagger-document-options.interface.d.ts +10 -0
  117. package/dist/interfaces/swagger-document-options.interface.js +2 -0
  118. package/dist/interfaces/swagger-ui-init-options.interface.d.ts +7 -0
  119. package/dist/interfaces/swagger-ui-init-options.interface.js +2 -0
  120. package/dist/interfaces/swagger-ui-options.interface.d.ts +15 -0
  121. package/dist/interfaces/swagger-ui-options.interface.js +2 -0
  122. package/dist/plugin/compiler-plugin.d.ts +2 -0
  123. package/dist/plugin/compiler-plugin.js +30 -0
  124. package/dist/plugin/index.d.ts +2 -0
  125. package/dist/plugin/index.js +18 -0
  126. package/dist/plugin/merge-options.d.ts +17 -0
  127. package/dist/plugin/merge-options.js +37 -0
  128. package/dist/plugin/metadata-loader.d.ts +7 -0
  129. package/dist/plugin/metadata-loader.js +51 -0
  130. package/dist/plugin/plugin-constants.d.ts +3 -0
  131. package/dist/plugin/plugin-constants.js +6 -0
  132. package/dist/plugin/plugin-debug-logger.d.ts +5 -0
  133. package/dist/plugin/plugin-debug-logger.js +7 -0
  134. package/dist/plugin/utils/ast-utils.d.ts +30 -0
  135. package/dist/plugin/utils/ast-utils.js +273 -0
  136. package/dist/plugin/utils/is-filename-matched.util.d.ts +1 -0
  137. package/dist/plugin/utils/is-filename-matched.util.js +5 -0
  138. package/dist/plugin/utils/plugin-utils.d.ts +30 -0
  139. package/dist/plugin/utils/plugin-utils.js +307 -0
  140. package/dist/plugin/utils/type-reference-to-identifier.util.d.ts +7 -0
  141. package/dist/plugin/utils/type-reference-to-identifier.util.js +52 -0
  142. package/dist/plugin/visitors/abstract.visitor.d.ts +4 -0
  143. package/dist/plugin/visitors/abstract.visitor.js +30 -0
  144. package/dist/plugin/visitors/controller-class.visitor.d.ts +20 -0
  145. package/dist/plugin/visitors/controller-class.visitor.js +265 -0
  146. package/dist/plugin/visitors/model-class.visitor.d.ts +35 -0
  147. package/dist/plugin/visitors/model-class.visitor.js +514 -0
  148. package/dist/plugin/visitors/readonly.visitor.d.ts +21 -0
  149. package/dist/plugin/visitors/readonly.visitor.js +40 -0
  150. package/dist/services/constants.d.ts +1 -0
  151. package/dist/services/constants.js +4 -0
  152. package/dist/services/decorators-properties.d.ts +21 -0
  153. package/dist/services/decorators-properties.js +149 -0
  154. package/dist/services/mimetype-content-wrapper.d.ts +4 -0
  155. package/dist/services/mimetype-content-wrapper.js +11 -0
  156. package/dist/services/model-properties-accessor.d.ts +6 -0
  157. package/dist/services/model-properties-accessor.js +37 -0
  158. package/dist/services/parameter-metadata-accessor.d.ts +22 -0
  159. package/dist/services/parameter-metadata-accessor.js +41 -0
  160. package/dist/services/parameters-metadata-mapper.d.ts +9 -0
  161. package/dist/services/parameters-metadata-mapper.js +38 -0
  162. package/dist/services/response-object-factory.d.ts +28 -0
  163. package/dist/services/response-object-factory.js +120 -0
  164. package/dist/services/response-object-mapper.d.ts +39 -0
  165. package/dist/services/response-object-mapper.js +38 -0
  166. package/dist/services/schema-object-factory.d.ts +156 -0
  167. package/dist/services/schema-object-factory.js +471 -0
  168. package/dist/services/swagger-types-mapper.d.ts +260 -0
  169. package/dist/services/swagger-types-mapper.js +107 -0
  170. package/dist/storages/global-parameters.storage.d.ts +8 -0
  171. package/dist/storages/global-parameters.storage.js +22 -0
  172. package/dist/storages/global-responses.storage.d.ts +10 -0
  173. package/dist/storages/global-responses.storage.js +21 -0
  174. package/dist/swagger-explorer.d.ts +41 -0
  175. package/dist/swagger-explorer.js +326 -0
  176. package/dist/swagger-module.d.ts +27 -0
  177. package/dist/swagger-module.js +223 -0
  178. package/dist/swagger-scanner.d.ts +25 -0
  179. package/dist/swagger-scanner.js +116 -0
  180. package/dist/swagger-transformer.d.ts +4 -0
  181. package/dist/swagger-transformer.js +22 -0
  182. package/dist/swagger-ui/constants.d.ts +3 -0
  183. package/dist/swagger-ui/constants.js +132 -0
  184. package/dist/swagger-ui/helpers.d.ts +2 -0
  185. package/dist/swagger-ui/helpers.js +16 -0
  186. package/dist/swagger-ui/index.d.ts +1 -0
  187. package/dist/swagger-ui/index.js +17 -0
  188. package/dist/swagger-ui/swagger-ui.d.ts +4 -0
  189. package/dist/swagger-ui/swagger-ui.js +62 -0
  190. package/dist/type-helpers/index.d.ts +4 -0
  191. package/dist/type-helpers/index.js +20 -0
  192. package/dist/type-helpers/intersection-type.helper.d.ts +8 -0
  193. package/dist/type-helpers/intersection-type.helper.js +42 -0
  194. package/dist/type-helpers/mapped-types.utils.d.ts +2 -0
  195. package/dist/type-helpers/mapped-types.utils.js +31 -0
  196. package/dist/type-helpers/omit-type.helper.d.ts +2 -0
  197. package/dist/type-helpers/omit-type.helper.js +40 -0
  198. package/dist/type-helpers/partial-type.helper.d.ts +4 -0
  199. package/dist/type-helpers/partial-type.helper.js +49 -0
  200. package/dist/type-helpers/pick-type.helper.d.ts +2 -0
  201. package/dist/type-helpers/pick-type.helper.js +40 -0
  202. package/dist/types/swagger-enum.type.d.ts +1 -0
  203. package/dist/types/swagger-enum.type.js +2 -0
  204. package/dist/utils/assign-two-levels-deep.d.ts +1 -0
  205. package/dist/utils/assign-two-levels-deep.js +12 -0
  206. package/dist/utils/enum.utils.d.ts +9 -0
  207. package/dist/utils/enum.utils.js +65 -0
  208. package/dist/utils/extend-metadata.util.d.ts +2 -0
  209. package/dist/utils/extend-metadata.util.js +11 -0
  210. package/dist/utils/get-global-prefix.d.ts +2 -0
  211. package/dist/utils/get-global-prefix.js +7 -0
  212. package/dist/utils/get-schema-path.util.d.ts +4 -0
  213. package/dist/utils/get-schema-path.util.js +26 -0
  214. package/dist/utils/index.d.ts +1 -0
  215. package/dist/utils/index.js +17 -0
  216. package/dist/utils/is-body-parameter.util.d.ts +2 -0
  217. package/dist/utils/is-body-parameter.util.js +6 -0
  218. package/dist/utils/is-built-in-type.util.d.ts +2 -0
  219. package/dist/utils/is-built-in-type.util.js +8 -0
  220. package/dist/utils/is-date-ctor.util.d.ts +2 -0
  221. package/dist/utils/is-date-ctor.util.js +6 -0
  222. package/dist/utils/merge-and-uniq.util.d.ts +1 -0
  223. package/dist/utils/merge-and-uniq.util.js +7 -0
  224. package/dist/utils/normalize-rel-path.d.ts +1 -0
  225. package/dist/utils/normalize-rel-path.js +7 -0
  226. package/dist/utils/remove-undefined-keys.d.ts +5 -0
  227. package/dist/utils/remove-undefined-keys.js +11 -0
  228. package/dist/utils/resolve-path.util.d.ts +1 -0
  229. package/dist/utils/resolve-path.util.js +7 -0
  230. package/dist/utils/reverse-object-keys.util.d.ts +1 -0
  231. package/dist/utils/reverse-object-keys.util.js +11 -0
  232. package/dist/utils/sort-object-lexicographically.d.ts +5 -0
  233. package/dist/utils/sort-object-lexicographically.js +11 -0
  234. package/dist/utils/strip-last-slash.util.d.ts +1 -0
  235. package/dist/utils/strip-last-slash.util.js +8 -0
  236. package/dist/utils/validate-global-prefix.util.d.ts +1 -0
  237. package/dist/utils/validate-global-prefix.util.js +5 -0
  238. package/dist/utils/validate-path.util.d.ts +1 -0
  239. package/dist/utils/validate-path.util.js +5 -0
  240. package/eslint.config.mjs +47 -0
  241. package/nest-cli.json +6 -0
  242. package/package.json +116 -0
  243. package/plugin.js +10 -0
  244. package/tsconfig.build.json +21 -0
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiDefaultResponse = exports.ApiHttpVersionNotSupportedResponse = exports.ApiGatewayTimeoutResponse = exports.ApiServiceUnavailableResponse = exports.ApiBadGatewayResponse = exports.ApiNotImplementedResponse = exports.ApiInternalServerErrorResponse = exports.ApiTooManyRequestsResponse = exports.ApiPreconditionRequiredResponse = exports.ApiFailedDependencyResponse = exports.ApiUnprocessableEntityResponse = exports.ApiMisdirectedResponse = exports.ApiIAmATeapotResponse = exports.ApiExpectationFailedResponse = exports.ApiRequestedRangeNotSatisfiableResponse = exports.ApiUnsupportedMediaTypeResponse = exports.ApiUriTooLongResponse = exports.ApiPayloadTooLargeResponse = exports.ApiPreconditionFailedResponse = exports.ApiLengthRequiredResponse = exports.ApiGoneResponse = exports.ApiConflictResponse = exports.ApiRequestTimeoutResponse = exports.ApiProxyAuthenticationRequiredResponse = exports.ApiNotAcceptableResponse = exports.ApiMethodNotAllowedResponse = exports.ApiNotFoundResponse = exports.ApiForbiddenResponse = exports.ApiPaymentRequiredResponse = exports.ApiUnauthorizedResponse = exports.ApiBadRequestResponse = exports.ApiPermanentRedirectResponse = exports.ApiTemporaryRedirectResponse = exports.ApiNotModifiedResponse = exports.ApiSeeOtherResponse = exports.ApiFoundResponse = exports.ApiMovedPermanentlyResponse = exports.ApiAmbiguousResponse = exports.ApiPartialContentResponse = exports.ApiResetContentResponse = exports.ApiNoContentResponse = exports.ApiNonAuthoritativeInformationResponse = exports.ApiAcceptedResponse = exports.ApiCreatedResponse = exports.ApiOkResponse = exports.ApiEarlyhintsResponse = exports.ApiProcessingResponse = exports.ApiSwitchingProtocolsResponse = exports.ApiContinueResponse = void 0;
4
+ exports.ApiResponse = ApiResponse;
5
+ const common_1 = require("@nestjs/common");
6
+ const lodash_1 = require("lodash");
7
+ const constants_1 = require("../constants");
8
+ const helpers_1 = require("./helpers");
9
+ function ApiResponse(options, { overrideExisting } = { overrideExisting: true }) {
10
+ const apiResponseMetadata = options;
11
+ const [type, isArray] = (0, helpers_1.getTypeIsArrayTuple)(apiResponseMetadata.type, apiResponseMetadata.isArray);
12
+ apiResponseMetadata.type = type;
13
+ apiResponseMetadata.isArray = isArray;
14
+ options.description = options.description ? options.description : '';
15
+ const groupedMetadata = {
16
+ [options.status || 'default']: (0, lodash_1.omit)(options, 'status')
17
+ };
18
+ return (target, key, descriptor) => {
19
+ if (descriptor) {
20
+ const responses = Reflect.getMetadata(constants_1.DECORATORS.API_RESPONSE, descriptor.value);
21
+ if (responses && !overrideExisting) {
22
+ return descriptor;
23
+ }
24
+ Reflect.defineMetadata(constants_1.DECORATORS.API_RESPONSE, Object.assign(Object.assign({}, responses), groupedMetadata), descriptor.value);
25
+ return descriptor;
26
+ }
27
+ const responses = Reflect.getMetadata(constants_1.DECORATORS.API_RESPONSE, target);
28
+ if (responses && !overrideExisting) {
29
+ return descriptor;
30
+ }
31
+ Reflect.defineMetadata(constants_1.DECORATORS.API_RESPONSE, Object.assign(Object.assign({}, responses), groupedMetadata), target);
32
+ return target;
33
+ };
34
+ }
35
+ const decorators = {};
36
+ const statusList = Object.keys(common_1.HttpStatus)
37
+ .filter((key) => !isNaN(Number(common_1.HttpStatus[key])))
38
+ .map((key) => {
39
+ const functionName = key
40
+ .split('_')
41
+ .map((strToken) => `${strToken[0].toUpperCase()}${strToken.slice(1).toLowerCase()}`)
42
+ .join('');
43
+ return {
44
+ code: Number(common_1.HttpStatus[key]),
45
+ functionName: `Api${functionName}Response`
46
+ };
47
+ });
48
+ statusList.forEach(({ code, functionName }) => {
49
+ decorators[functionName] = function (options = {}) {
50
+ return ApiResponse(Object.assign(Object.assign({}, options), { status: code }));
51
+ };
52
+ });
53
+ exports.ApiContinueResponse = decorators.ApiContinueResponse, exports.ApiSwitchingProtocolsResponse = decorators.ApiSwitchingProtocolsResponse, exports.ApiProcessingResponse = decorators.ApiProcessingResponse, exports.ApiEarlyhintsResponse = decorators.ApiEarlyhintsResponse, exports.ApiOkResponse = decorators.ApiOkResponse, exports.ApiCreatedResponse = decorators.ApiCreatedResponse, exports.ApiAcceptedResponse = decorators.ApiAcceptedResponse, exports.ApiNonAuthoritativeInformationResponse = decorators.ApiNonAuthoritativeInformationResponse, exports.ApiNoContentResponse = decorators.ApiNoContentResponse, exports.ApiResetContentResponse = decorators.ApiResetContentResponse, exports.ApiPartialContentResponse = decorators.ApiPartialContentResponse, exports.ApiAmbiguousResponse = decorators.ApiAmbiguousResponse, exports.ApiMovedPermanentlyResponse = decorators.ApiMovedPermanentlyResponse, exports.ApiFoundResponse = decorators.ApiFoundResponse, exports.ApiSeeOtherResponse = decorators.ApiSeeOtherResponse, exports.ApiNotModifiedResponse = decorators.ApiNotModifiedResponse, exports.ApiTemporaryRedirectResponse = decorators.ApiTemporaryRedirectResponse, exports.ApiPermanentRedirectResponse = decorators.ApiPermanentRedirectResponse, exports.ApiBadRequestResponse = decorators.ApiBadRequestResponse, exports.ApiUnauthorizedResponse = decorators.ApiUnauthorizedResponse, exports.ApiPaymentRequiredResponse = decorators.ApiPaymentRequiredResponse, exports.ApiForbiddenResponse = decorators.ApiForbiddenResponse, exports.ApiNotFoundResponse = decorators.ApiNotFoundResponse, exports.ApiMethodNotAllowedResponse = decorators.ApiMethodNotAllowedResponse, exports.ApiNotAcceptableResponse = decorators.ApiNotAcceptableResponse, exports.ApiProxyAuthenticationRequiredResponse = decorators.ApiProxyAuthenticationRequiredResponse, exports.ApiRequestTimeoutResponse = decorators.ApiRequestTimeoutResponse, exports.ApiConflictResponse = decorators.ApiConflictResponse, exports.ApiGoneResponse = decorators.ApiGoneResponse, exports.ApiLengthRequiredResponse = decorators.ApiLengthRequiredResponse, exports.ApiPreconditionFailedResponse = decorators.ApiPreconditionFailedResponse, exports.ApiPayloadTooLargeResponse = decorators.ApiPayloadTooLargeResponse, exports.ApiUriTooLongResponse = decorators.ApiUriTooLongResponse, exports.ApiUnsupportedMediaTypeResponse = decorators.ApiUnsupportedMediaTypeResponse, exports.ApiRequestedRangeNotSatisfiableResponse = decorators.ApiRequestedRangeNotSatisfiableResponse, exports.ApiExpectationFailedResponse = decorators.ApiExpectationFailedResponse, exports.ApiIAmATeapotResponse = decorators.ApiIAmATeapotResponse, exports.ApiMisdirectedResponse = decorators.ApiMisdirectedResponse, exports.ApiUnprocessableEntityResponse = decorators.ApiUnprocessableEntityResponse, exports.ApiFailedDependencyResponse = decorators.ApiFailedDependencyResponse, exports.ApiPreconditionRequiredResponse = decorators.ApiPreconditionRequiredResponse, exports.ApiTooManyRequestsResponse = decorators.ApiTooManyRequestsResponse, exports.ApiInternalServerErrorResponse = decorators.ApiInternalServerErrorResponse, exports.ApiNotImplementedResponse = decorators.ApiNotImplementedResponse, exports.ApiBadGatewayResponse = decorators.ApiBadGatewayResponse, exports.ApiServiceUnavailableResponse = decorators.ApiServiceUnavailableResponse, exports.ApiGatewayTimeoutResponse = decorators.ApiGatewayTimeoutResponse, exports.ApiHttpVersionNotSupportedResponse = decorators.ApiHttpVersionNotSupportedResponse;
54
+ const ApiDefaultResponse = (options = {}) => ApiResponse(Object.assign(Object.assign({}, options), { status: 'default' }));
55
+ exports.ApiDefaultResponse = ApiDefaultResponse;
@@ -0,0 +1,6 @@
1
+ import { SchemaObjectMetadata } from '../interfaces/schema-object-metadata.interface';
2
+ export interface ApiSchemaOptions extends Pick<SchemaObjectMetadata, 'name'> {
3
+ name?: string;
4
+ description?: string;
5
+ }
6
+ export declare function ApiSchema(options?: ApiSchemaOptions): ClassDecorator;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiSchema = ApiSchema;
4
+ const constants_1 = require("../constants");
5
+ const helpers_1 = require("./helpers");
6
+ function ApiSchema(options) {
7
+ return (0, helpers_1.createClassDecorator)(constants_1.DECORATORS.API_SCHEMA, [options]);
8
+ }
@@ -0,0 +1 @@
1
+ export declare function ApiSecurityDeviceFlow(name: string, scopes: string[]): ClassDecorator & MethodDecorator;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiSecurityDeviceFlow = ApiSecurityDeviceFlow;
4
+ const api_security_decorator_1 = require("./api-security.decorator");
5
+ function ApiSecurityDeviceFlow(name, scopes) {
6
+ return (0, api_security_decorator_1.ApiSecurity)(name, scopes);
7
+ }
@@ -0,0 +1,2 @@
1
+ import { SecurityRequirementObject } from '../interfaces/open-api-spec.interface';
2
+ export declare function ApiSecurity(name: string | SecurityRequirementObject, requirements?: string[]): ClassDecorator & MethodDecorator;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiSecurity = ApiSecurity;
4
+ const lodash_1 = require("lodash");
5
+ const constants_1 = require("../constants");
6
+ const extend_metadata_util_1 = require("../utils/extend-metadata.util");
7
+ function ApiSecurity(name, requirements = []) {
8
+ let metadata;
9
+ if ((0, lodash_1.isString)(name)) {
10
+ metadata = [{ [name]: requirements }];
11
+ }
12
+ else {
13
+ metadata = [name];
14
+ }
15
+ return (target, key, descriptor) => {
16
+ if (descriptor) {
17
+ metadata = (0, extend_metadata_util_1.extendMetadata)(metadata, constants_1.DECORATORS.API_SECURITY, descriptor.value);
18
+ Reflect.defineMetadata(constants_1.DECORATORS.API_SECURITY, metadata, descriptor.value);
19
+ return descriptor;
20
+ }
21
+ metadata = (0, extend_metadata_util_1.extendMetadata)(metadata, constants_1.DECORATORS.API_SECURITY, target);
22
+ Reflect.defineMetadata(constants_1.DECORATORS.API_SECURITY, metadata, target);
23
+ return target;
24
+ };
25
+ }
@@ -0,0 +1,7 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { ApiResponseCommonMetadata } from './api-response.decorator';
3
+ export interface ApiStreamingResponseOptions extends Omit<ApiResponseCommonMetadata, 'type' | 'isArray' | 'content'> {
4
+ contentType: string;
5
+ type: () => Type<unknown> | Function | [Function] | string;
6
+ }
7
+ export declare function ApiStreamingResponse(options: ApiStreamingResponseOptions): MethodDecorator & ClassDecorator;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiStreamingResponse = ApiStreamingResponse;
4
+ const api_response_decorator_1 = require("./api-response.decorator");
5
+ function ApiStreamingResponse(options) {
6
+ var _a;
7
+ const resolvedType = (_a = options.type) === null || _a === void 0 ? void 0 : _a.call(options);
8
+ return (0, api_response_decorator_1.ApiResponse)(Object.assign(Object.assign({}, options), { type: resolvedType, isStreaming: true, contentType: options.contentType }));
9
+ }
@@ -0,0 +1,11 @@
1
+ import { TagObject } from '../interfaces/open-api-spec.interface';
2
+ export type ApiTagGroupKind = 'audience' | 'badge' | 'nav' | (string & {});
3
+ export interface ApiTagGroupOptions extends Pick<TagObject, 'name' | 'summary' | 'description' | 'externalDocs' | 'parent' | 'kind'> {
4
+ name: string;
5
+ summary?: string;
6
+ description?: string;
7
+ externalDocs?: TagObject['externalDocs'];
8
+ parent?: string;
9
+ kind?: ApiTagGroupKind;
10
+ }
11
+ export declare function ApiTagGroup(options: ApiTagGroupOptions): ClassDecorator;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiTagGroup = ApiTagGroup;
4
+ const constants_1 = require("../constants");
5
+ const api_use_tags_decorator_1 = require("./api-use-tags.decorator");
6
+ function ApiTagGroup(options) {
7
+ return (target) => {
8
+ const previous = Reflect.getMetadata(constants_1.DECORATORS.API_TAG_GROUP, target) || [];
9
+ Reflect.defineMetadata(constants_1.DECORATORS.API_TAG_GROUP, [...previous, options], target);
10
+ (0, api_use_tags_decorator_1.ApiTags)(options.name)(target);
11
+ return target;
12
+ };
13
+ }
@@ -0,0 +1 @@
1
+ export declare function ApiTags(...tags: string[]): MethodDecorator & ClassDecorator;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiTags = ApiTags;
4
+ const constants_1 = require("../constants");
5
+ const helpers_1 = require("./helpers");
6
+ function ApiTags(...tags) {
7
+ return (0, helpers_1.createMixedDecorator)(constants_1.DECORATORS.API_TAGS, tags);
8
+ }
@@ -0,0 +1,8 @@
1
+ export declare function createMethodDecorator<T = any>(metakey: string, metadata: T, { overrideExisting }?: {
2
+ overrideExisting: boolean;
3
+ }): MethodDecorator;
4
+ export declare function createClassDecorator<T extends Array<any> = any>(metakey: string, metadata?: T): ClassDecorator;
5
+ export declare function createPropertyDecorator<T extends Record<string, any> = any>(metakey: string, metadata: T, overrideExisting?: boolean): PropertyDecorator;
6
+ export declare function createMixedDecorator<T = any>(metakey: string, metadata: T): MethodDecorator & ClassDecorator;
7
+ export declare function createParamDecorator<T extends Record<string, any> = any>(metadata: T, initial: Partial<T>): MethodDecorator & ClassDecorator;
8
+ export declare function getTypeIsArrayTuple(input: Function | [Function] | undefined | string | Record<string, any>, isArrayFlag: boolean): [Function | undefined, boolean];
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMethodDecorator = createMethodDecorator;
4
+ exports.createClassDecorator = createClassDecorator;
5
+ exports.createPropertyDecorator = createPropertyDecorator;
6
+ exports.createMixedDecorator = createMixedDecorator;
7
+ exports.createParamDecorator = createParamDecorator;
8
+ exports.getTypeIsArrayTuple = getTypeIsArrayTuple;
9
+ const constants_1 = require("@nestjs/common/constants");
10
+ const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
11
+ const lodash_1 = require("lodash");
12
+ const constants_2 = require("../constants");
13
+ const plugin_constants_1 = require("../plugin/plugin-constants");
14
+ function createMethodDecorator(metakey, metadata, { overrideExisting } = { overrideExisting: true }) {
15
+ return (target, key, descriptor) => {
16
+ if (typeof metadata === 'object') {
17
+ const prevValue = Reflect.getMetadata(metakey, descriptor.value);
18
+ if (prevValue && !overrideExisting) {
19
+ return descriptor;
20
+ }
21
+ Reflect.defineMetadata(metakey, Object.assign(Object.assign({}, prevValue), metadata), descriptor.value);
22
+ return descriptor;
23
+ }
24
+ Reflect.defineMetadata(metakey, metadata, descriptor.value);
25
+ return descriptor;
26
+ };
27
+ }
28
+ function createClassDecorator(metakey, metadata = []) {
29
+ return (target) => {
30
+ const prevValue = Reflect.getMetadata(metakey, target) || [];
31
+ Reflect.defineMetadata(metakey, [...prevValue, ...metadata], target);
32
+ return target;
33
+ };
34
+ }
35
+ function createPropertyDecorator(metakey, metadata, overrideExisting = true) {
36
+ return (target, propertyKey) => {
37
+ var _a, _b, _c, _d;
38
+ const properties = Reflect.getMetadata(constants_2.DECORATORS.API_MODEL_PROPERTIES_ARRAY, target) || [];
39
+ const key = `:${propertyKey}`;
40
+ if (!properties.includes(key)) {
41
+ Reflect.defineMetadata(constants_2.DECORATORS.API_MODEL_PROPERTIES_ARRAY, [...properties, `:${propertyKey}`], target);
42
+ }
43
+ const existingMetadata = Reflect.getMetadata(metakey, target, propertyKey);
44
+ if (existingMetadata) {
45
+ const newMetadata = (0, lodash_1.pickBy)(metadata, (0, lodash_1.negate)(lodash_1.isUndefined));
46
+ const metadataToSave = overrideExisting
47
+ ? Object.assign(Object.assign({}, existingMetadata), newMetadata) : Object.assign(Object.assign({}, newMetadata), existingMetadata);
48
+ Reflect.defineMetadata(metakey, metadataToSave, target, propertyKey);
49
+ }
50
+ else {
51
+ const type = (_d = (_c = (_b = (_a = target === null || target === void 0 ? void 0 : target.constructor) === null || _a === void 0 ? void 0 : _a[plugin_constants_1.METADATA_FACTORY_NAME]) === null || _b === void 0 ? void 0 : _b.call(_a)[propertyKey]) === null || _c === void 0 ? void 0 : _c.type) !== null && _d !== void 0 ? _d : Reflect.getMetadata('design:type', target, propertyKey);
52
+ Reflect.defineMetadata(metakey, Object.assign({ type }, (0, lodash_1.pickBy)(metadata, (0, lodash_1.negate)(lodash_1.isUndefined))), target, propertyKey);
53
+ }
54
+ };
55
+ }
56
+ function createMixedDecorator(metakey, metadata) {
57
+ return (target, key, descriptor) => {
58
+ if (descriptor) {
59
+ let metadatas;
60
+ if (Array.isArray(metadata)) {
61
+ const previousMetadata = Reflect.getMetadata(metakey, descriptor.value) || [];
62
+ metadatas = [...previousMetadata, ...metadata];
63
+ }
64
+ else {
65
+ const previousMetadata = Reflect.getMetadata(metakey, descriptor.value) || {};
66
+ metadatas = Object.assign(Object.assign({}, previousMetadata), metadata);
67
+ }
68
+ Reflect.defineMetadata(metakey, metadatas, descriptor.value);
69
+ return descriptor;
70
+ }
71
+ let metadatas;
72
+ if (Array.isArray(metadata)) {
73
+ const previousMetadata = Reflect.getMetadata(metakey, target) || [];
74
+ metadatas = [...previousMetadata, ...metadata];
75
+ }
76
+ else {
77
+ const previousMetadata = Reflect.getMetadata(metakey, target) || {};
78
+ metadatas = Object.assign(Object.assign({}, previousMetadata), metadata);
79
+ }
80
+ Reflect.defineMetadata(metakey, metadatas, target);
81
+ return target;
82
+ };
83
+ }
84
+ function createParamDecorator(metadata, initial) {
85
+ return (target, key, descriptor) => {
86
+ const paramOptions = Object.assign(Object.assign({}, initial), (0, lodash_1.pickBy)(metadata, (0, lodash_1.negate)(lodash_1.isUndefined)));
87
+ if (descriptor) {
88
+ const parameters = Reflect.getMetadata(constants_2.DECORATORS.API_PARAMETERS, descriptor.value) || [];
89
+ Reflect.defineMetadata(constants_2.DECORATORS.API_PARAMETERS, [...parameters, paramOptions], descriptor.value);
90
+ return descriptor;
91
+ }
92
+ if (typeof target === 'object') {
93
+ return target;
94
+ }
95
+ const propertyKeys = Object.getOwnPropertyNames(target.prototype);
96
+ for (const propertyKey of propertyKeys) {
97
+ if ((0, shared_utils_1.isConstructor)(propertyKey)) {
98
+ continue;
99
+ }
100
+ const methodDescriptor = Object.getOwnPropertyDescriptor(target.prototype, propertyKey);
101
+ if (!methodDescriptor) {
102
+ continue;
103
+ }
104
+ const isApiMethod = Reflect.hasMetadata(constants_1.METHOD_METADATA, methodDescriptor.value);
105
+ if (!isApiMethod) {
106
+ continue;
107
+ }
108
+ const parameters = Reflect.getMetadata(constants_2.DECORATORS.API_PARAMETERS, methodDescriptor.value) || [];
109
+ Reflect.defineMetadata(constants_2.DECORATORS.API_PARAMETERS, [...parameters, paramOptions], methodDescriptor.value);
110
+ }
111
+ };
112
+ }
113
+ function getTypeIsArrayTuple(input, isArrayFlag) {
114
+ if (!input) {
115
+ return [input, isArrayFlag];
116
+ }
117
+ if (isArrayFlag) {
118
+ return [input, isArrayFlag];
119
+ }
120
+ const isInputArray = (0, lodash_1.isArray)(input);
121
+ const type = isInputArray ? input[0] : input;
122
+ return [type, isInputArray];
123
+ }
@@ -0,0 +1,28 @@
1
+ export * from './api-basic.decorator';
2
+ export * from './api-bearer.decorator';
3
+ export * from './api-body.decorator';
4
+ export * from './api-consumes.decorator';
5
+ export * from './api-cookie.decorator';
6
+ export * from './api-default-getter.decorator';
7
+ export * from './api-exclude-endpoint.decorator';
8
+ export * from './api-exclude-controller.decorator';
9
+ export * from './api-extra-models.decorator';
10
+ export * from './api-header.decorator';
11
+ export * from './api-hide-property.decorator';
12
+ export * from './api-link.decorator';
13
+ export * from './api-oauth2.decorator';
14
+ export * from './api-operation.decorator';
15
+ export * from './api-param.decorator';
16
+ export * from './api-produces.decorator';
17
+ export { ApiProperty, ApiPropertyOptional, ApiPropertyOptions, ApiResponseProperty } from './api-property.decorator';
18
+ export * from './api-query.decorator';
19
+ export * from './api-query-method.decorator';
20
+ export * from './api-response.decorator';
21
+ export * from './api-streaming-response.decorator';
22
+ export * from './api-security.decorator';
23
+ export * from './api-security-device-flow.decorator';
24
+ export * from './api-use-tags.decorator';
25
+ export * from './api-tag-group.decorator';
26
+ export * from './api-callbacks.decorator';
27
+ export * from './api-extension.decorator';
28
+ export * from './api-schema.decorator';
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ApiResponseProperty = exports.ApiPropertyOptional = exports.ApiProperty = void 0;
18
+ __exportStar(require("./api-basic.decorator"), exports);
19
+ __exportStar(require("./api-bearer.decorator"), exports);
20
+ __exportStar(require("./api-body.decorator"), exports);
21
+ __exportStar(require("./api-consumes.decorator"), exports);
22
+ __exportStar(require("./api-cookie.decorator"), exports);
23
+ __exportStar(require("./api-default-getter.decorator"), exports);
24
+ __exportStar(require("./api-exclude-endpoint.decorator"), exports);
25
+ __exportStar(require("./api-exclude-controller.decorator"), exports);
26
+ __exportStar(require("./api-extra-models.decorator"), exports);
27
+ __exportStar(require("./api-header.decorator"), exports);
28
+ __exportStar(require("./api-hide-property.decorator"), exports);
29
+ __exportStar(require("./api-link.decorator"), exports);
30
+ __exportStar(require("./api-oauth2.decorator"), exports);
31
+ __exportStar(require("./api-operation.decorator"), exports);
32
+ __exportStar(require("./api-param.decorator"), exports);
33
+ __exportStar(require("./api-produces.decorator"), exports);
34
+ var api_property_decorator_1 = require("./api-property.decorator");
35
+ Object.defineProperty(exports, "ApiProperty", { enumerable: true, get: function () { return api_property_decorator_1.ApiProperty; } });
36
+ Object.defineProperty(exports, "ApiPropertyOptional", { enumerable: true, get: function () { return api_property_decorator_1.ApiPropertyOptional; } });
37
+ Object.defineProperty(exports, "ApiResponseProperty", { enumerable: true, get: function () { return api_property_decorator_1.ApiResponseProperty; } });
38
+ __exportStar(require("./api-query.decorator"), exports);
39
+ __exportStar(require("./api-query-method.decorator"), exports);
40
+ __exportStar(require("./api-response.decorator"), exports);
41
+ __exportStar(require("./api-streaming-response.decorator"), exports);
42
+ __exportStar(require("./api-security.decorator"), exports);
43
+ __exportStar(require("./api-security-device-flow.decorator"), exports);
44
+ __exportStar(require("./api-use-tags.decorator"), exports);
45
+ __exportStar(require("./api-tag-group.decorator"), exports);
46
+ __exportStar(require("./api-callbacks.decorator"), exports);
47
+ __exportStar(require("./api-extension.decorator"), exports);
48
+ __exportStar(require("./api-schema.decorator"), exports);
@@ -0,0 +1,29 @@
1
+ import { ApiResponseOptions } from './decorators/api-response.decorator';
2
+ import { OpenAPIObject } from './interfaces';
3
+ import { ExtensionLocation, ExternalDocumentationObject, ParameterObject, SecurityRequirementObject, SecuritySchemeObject, ServerVariableObject } from './interfaces/open-api-spec.interface';
4
+ export declare class DocumentBuilder {
5
+ private readonly logger;
6
+ private readonly document;
7
+ setTitle(title: string): this;
8
+ setDescription(description: string): this;
9
+ setVersion(version: string): this;
10
+ setTermsOfService(termsOfService: string): this;
11
+ setContact(name: string, url: string, email: string): this;
12
+ setLicense(name: string, url: string): this;
13
+ setOpenAPIVersion(version: string): this;
14
+ addServer(url: string, description?: string, variables?: Record<string, ServerVariableObject>): this;
15
+ setExternalDoc(description: string, url: string): this;
16
+ setBasePath(path: string): this;
17
+ addTag(name: string, description?: string, externalDocs?: ExternalDocumentationObject, summary?: string): this;
18
+ addExtension(extensionKey: string, extensionProperties: any, location?: ExtensionLocation): this;
19
+ addSecurity(name: string, options: SecuritySchemeObject): this;
20
+ addGlobalResponse(...respones: ApiResponseOptions[]): this;
21
+ addGlobalParameters(...parameters: Omit<ParameterObject, 'example' | 'examples'>[]): this;
22
+ addSecurityRequirements(name: string | SecurityRequirementObject, requirements?: string[]): this;
23
+ addBearerAuth(options?: SecuritySchemeObject, name?: string): this;
24
+ addOAuth2(options?: SecuritySchemeObject, name?: string): this;
25
+ addApiKey(options?: SecuritySchemeObject, name?: string): this;
26
+ addBasicAuth(options?: SecuritySchemeObject, name?: string): this;
27
+ addCookieAuth(cookieName?: string, options?: SecuritySchemeObject, securityName?: string): this;
28
+ build(): Omit<OpenAPIObject, 'paths'>;
29
+ }
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DocumentBuilder = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ const lodash_1 = require("lodash");
6
+ const document_base_1 = require("./fixtures/document.base");
7
+ const global_parameters_storage_1 = require("./storages/global-parameters.storage");
8
+ const global_responses_storage_1 = require("./storages/global-responses.storage");
9
+ class DocumentBuilder {
10
+ constructor() {
11
+ this.logger = new common_1.Logger(DocumentBuilder.name);
12
+ this.document = (0, document_base_1.buildDocumentBase)();
13
+ }
14
+ setTitle(title) {
15
+ this.document.info.title = title;
16
+ return this;
17
+ }
18
+ setDescription(description) {
19
+ this.document.info.description = description;
20
+ return this;
21
+ }
22
+ setVersion(version) {
23
+ this.document.info.version = version;
24
+ return this;
25
+ }
26
+ setTermsOfService(termsOfService) {
27
+ this.document.info.termsOfService = termsOfService;
28
+ return this;
29
+ }
30
+ setContact(name, url, email) {
31
+ this.document.info.contact = { name, url, email };
32
+ return this;
33
+ }
34
+ setLicense(name, url) {
35
+ this.document.info.license = { name, url };
36
+ return this;
37
+ }
38
+ setOpenAPIVersion(version) {
39
+ if (version.match(/^\d\.\d\.\d$/)) {
40
+ this.document.openapi = version;
41
+ }
42
+ else {
43
+ this.logger.warn('The OpenApi version is invalid. Expecting format "x.x.x"');
44
+ }
45
+ return this;
46
+ }
47
+ addServer(url, description, variables) {
48
+ this.document.servers.push({ url, description, variables });
49
+ return this;
50
+ }
51
+ setExternalDoc(description, url) {
52
+ this.document.externalDocs = { description, url };
53
+ return this;
54
+ }
55
+ setBasePath(path) {
56
+ this.logger.warn('The "setBasePath" method has been deprecated. Now, a global prefix is populated automatically. If you want to ignore it, take a look here: https://docs.nestjs.com/recipes/swagger#global-prefix. Alternatively, you can use "addServer" method to set up multiple different paths.');
57
+ return this;
58
+ }
59
+ addTag(name, description = '', externalDocs, summary) {
60
+ this.document.tags = this.document.tags.concat((0, lodash_1.pickBy)({
61
+ name,
62
+ summary,
63
+ description,
64
+ externalDocs
65
+ }, (0, lodash_1.negate)(lodash_1.isUndefined)));
66
+ return this;
67
+ }
68
+ addExtension(extensionKey, extensionProperties, location = 'root') {
69
+ if (!extensionKey.startsWith('x-')) {
70
+ throw new Error('Extension key is not prefixed. Please ensure you prefix it with `x-`.');
71
+ }
72
+ if (location === 'root') {
73
+ this.document[extensionKey] = (0, lodash_1.clone)(extensionProperties);
74
+ }
75
+ else {
76
+ this.document[location][extensionKey] = (0, lodash_1.clone)(extensionProperties);
77
+ }
78
+ return this;
79
+ }
80
+ addSecurity(name, options) {
81
+ this.document.components.securitySchemes = Object.assign(Object.assign({}, (this.document.components.securitySchemes || {})), { [name]: options });
82
+ return this;
83
+ }
84
+ addGlobalResponse(...respones) {
85
+ const groupedByStatus = respones.reduce((acc, response) => {
86
+ const { status = 'default' } = response;
87
+ acc[status] = (0, lodash_1.omit)(response, 'status');
88
+ return acc;
89
+ }, {});
90
+ global_responses_storage_1.GlobalResponsesStorage.add(groupedByStatus);
91
+ return this;
92
+ }
93
+ addGlobalParameters(...parameters) {
94
+ global_parameters_storage_1.GlobalParametersStorage.add(...parameters);
95
+ return this;
96
+ }
97
+ addSecurityRequirements(name, requirements = []) {
98
+ let securityRequirement;
99
+ if ((0, lodash_1.isString)(name)) {
100
+ securityRequirement = { [name]: requirements };
101
+ }
102
+ else {
103
+ securityRequirement = name;
104
+ }
105
+ this.document.security = (this.document.security || []).concat(Object.assign({}, securityRequirement));
106
+ return this;
107
+ }
108
+ addBearerAuth(options = {
109
+ type: 'http'
110
+ }, name = 'bearer') {
111
+ this.addSecurity(name, Object.assign({ scheme: 'bearer', bearerFormat: 'JWT' }, options));
112
+ return this;
113
+ }
114
+ addOAuth2(options = {
115
+ type: 'oauth2'
116
+ }, name = 'oauth2') {
117
+ this.addSecurity(name, Object.assign({ type: 'oauth2', flows: {} }, options));
118
+ return this;
119
+ }
120
+ addApiKey(options = {
121
+ type: 'apiKey'
122
+ }, name = 'api_key') {
123
+ this.addSecurity(name, Object.assign({ type: 'apiKey', in: 'header', name }, options));
124
+ return this;
125
+ }
126
+ addBasicAuth(options = {
127
+ type: 'http'
128
+ }, name = 'basic') {
129
+ this.addSecurity(name, Object.assign({ type: 'http', scheme: 'basic' }, options));
130
+ return this;
131
+ }
132
+ addCookieAuth(cookieName = 'connect.sid', options = {
133
+ type: 'apiKey'
134
+ }, securityName = 'cookie') {
135
+ this.addSecurity(securityName, Object.assign({ type: 'apiKey', in: 'cookie', name: cookieName }, options));
136
+ return this;
137
+ }
138
+ build() {
139
+ return this.document;
140
+ }
141
+ }
142
+ exports.DocumentBuilder = DocumentBuilder;
@@ -0,0 +1,2 @@
1
+ import { Type } from '@nestjs/common';
2
+ export declare const exploreApiCallbacksMetadata: (instance: object, prototype: Type<unknown>, method: object) => any;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.exploreApiCallbacksMetadata = void 0;
4
+ const constants_1 = require("../constants");
5
+ const utils_1 = require("../utils");
6
+ const exploreApiCallbacksMetadata = (instance, prototype, method) => {
7
+ const callbacksData = Reflect.getMetadata(constants_1.DECORATORS.API_CALLBACKS, method);
8
+ if (!callbacksData)
9
+ return callbacksData;
10
+ return callbacksData.reduce((acc, callbackData) => {
11
+ const { name: eventName, callbackUrl, method: callbackMethod, requestBody, expectedResponse } = callbackData;
12
+ return Object.assign(Object.assign({}, acc), { [eventName]: {
13
+ [callbackUrl]: {
14
+ [callbackMethod]: {
15
+ requestBody: {
16
+ required: true,
17
+ content: {
18
+ 'application/json': {
19
+ schema: {
20
+ $ref: (0, utils_1.getSchemaPath)(requestBody.type)
21
+ }
22
+ }
23
+ }
24
+ },
25
+ responses: {
26
+ [expectedResponse.status]: {
27
+ description: expectedResponse.description ||
28
+ 'Your server returns this code if it accepts the callback'
29
+ }
30
+ }
31
+ }
32
+ }
33
+ } });
34
+ }, {});
35
+ };
36
+ exports.exploreApiCallbacksMetadata = exploreApiCallbacksMetadata;
@@ -0,0 +1,5 @@
1
+ import { Type } from '@nestjs/common';
2
+ export declare const exploreGlobalApiConsumesMetadata: (metatype: Type<unknown>) => {
3
+ consumes: any;
4
+ };
5
+ export declare const exploreApiConsumesMetadata: (instance: object, prototype: Type<unknown>, method: object) => string[] | undefined;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.exploreApiConsumesMetadata = exports.exploreGlobalApiConsumesMetadata = void 0;
4
+ const constants_1 = require("../constants");
5
+ const exploreGlobalApiConsumesMetadata = (metatype) => {
6
+ const consumes = Reflect.getMetadata(constants_1.DECORATORS.API_CONSUMES, metatype);
7
+ return consumes ? { consumes } : undefined;
8
+ };
9
+ exports.exploreGlobalApiConsumesMetadata = exploreGlobalApiConsumesMetadata;
10
+ const exploreApiConsumesMetadata = (instance, prototype, method) => Reflect.getMetadata(constants_1.DECORATORS.API_CONSUMES, method);
11
+ exports.exploreApiConsumesMetadata = exploreApiConsumesMetadata;
@@ -0,0 +1,2 @@
1
+ import { Type } from '@nestjs/common';
2
+ export declare const exploreApiExcludeControllerMetadata: (metatype: Type<unknown>) => boolean;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.exploreApiExcludeControllerMetadata = void 0;
4
+ const constants_1 = require("../constants");
5
+ const exploreApiExcludeControllerMetadata = (metatype) => {
6
+ var _a;
7
+ return ((_a = Reflect.getMetadata(constants_1.DECORATORS.API_EXCLUDE_CONTROLLER, metatype)) === null || _a === void 0 ? void 0 : _a[0]) ===
8
+ true;
9
+ };
10
+ exports.exploreApiExcludeControllerMetadata = exploreApiExcludeControllerMetadata;