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,260 @@
1
+ import { ApiPropertyOptions } from '../decorators';
2
+ import { BaseParameterObject, ReferenceObject, SchemaObject } from '../interfaces/open-api-spec.interface';
3
+ import { ParamWithTypeMetadata } from './parameter-metadata-accessor';
4
+ type KeysToRemove = keyof ApiPropertyOptions | '$ref' | 'properties' | 'enumName' | 'enumSchema' | 'selfRequired';
5
+ export declare class SwaggerTypesMapper {
6
+ private readonly keysToRemove;
7
+ mapParamTypes(parameters: Array<ParamWithTypeMetadata | BaseParameterObject>): (Partial<BaseParameterObject> | Partial<ParamWithTypeMetadata> | {
8
+ schema: {
9
+ type: string;
10
+ items: any;
11
+ nullable?: boolean;
12
+ discriminator?: import("../interfaces/open-api-spec.interface").DiscriminatorObject;
13
+ readOnly?: boolean;
14
+ writeOnly?: boolean;
15
+ xml?: import("../interfaces/open-api-spec.interface").XmlObject;
16
+ externalDocs?: import("../interfaces/open-api-spec.interface").ExternalDocumentationObject;
17
+ example?: any;
18
+ examples?: any[] | Record<string, any>;
19
+ deprecated?: boolean;
20
+ allOf?: (SchemaObject | ReferenceObject)[];
21
+ oneOf?: (SchemaObject | ReferenceObject)[];
22
+ anyOf?: (SchemaObject | ReferenceObject)[];
23
+ not?: SchemaObject | ReferenceObject;
24
+ properties?: Record<string, SchemaObject | ReferenceObject>;
25
+ additionalProperties?: SchemaObject | ReferenceObject | boolean;
26
+ patternProperties?: Record<string, SchemaObject | ReferenceObject> | undefined;
27
+ description?: string;
28
+ format?: string;
29
+ default?: any;
30
+ title?: string;
31
+ multipleOf?: number;
32
+ maximum?: number;
33
+ exclusiveMaximum?: boolean;
34
+ minimum?: number;
35
+ exclusiveMinimum?: boolean;
36
+ maxLength?: number;
37
+ minLength?: number;
38
+ pattern?: string;
39
+ maxItems?: number;
40
+ minItems?: number;
41
+ uniqueItems?: boolean;
42
+ maxProperties?: number;
43
+ minProperties?: number;
44
+ required?: string[];
45
+ enum?: any[];
46
+ 'x-enumNames'?: string[];
47
+ };
48
+ } | {
49
+ schema: import("lodash").Dictionary<any>;
50
+ description?: string;
51
+ required?: boolean;
52
+ deprecated?: boolean;
53
+ allowEmptyValue?: boolean;
54
+ style?: import("../interfaces/open-api-spec.interface").ParameterStyle;
55
+ explode?: boolean;
56
+ allowReserved?: boolean;
57
+ examples?: Record<string, import("../interfaces/open-api-spec.interface").ExampleObject | ReferenceObject>;
58
+ example?: any;
59
+ content?: import("../interfaces/open-api-spec.interface").ContentObject;
60
+ } | {
61
+ schema: import("lodash").Dictionary<any>;
62
+ name?: string | number | object;
63
+ type?: import("@nestjs/common").Type<unknown>;
64
+ in?: import("../interfaces/open-api-spec.interface").ParameterLocation | "body" | "placeholder";
65
+ isArray?: boolean;
66
+ items?: SchemaObject;
67
+ required?: boolean;
68
+ enum?: unknown[];
69
+ enumName?: string;
70
+ enumSchema?: import("../interfaces/enum-schema-attributes.interface").EnumSchemaAttributes;
71
+ selfRequired?: boolean;
72
+ })[];
73
+ mapTypeToOpenAPIType(type: string | Function): string;
74
+ mapEnumArrayType(param: Record<string, any>, keysToRemove: KeysToRemove[]): {
75
+ schema: {
76
+ type: string;
77
+ items: any;
78
+ nullable?: boolean;
79
+ discriminator?: import("../interfaces/open-api-spec.interface").DiscriminatorObject;
80
+ readOnly?: boolean;
81
+ writeOnly?: boolean;
82
+ xml?: import("../interfaces/open-api-spec.interface").XmlObject;
83
+ externalDocs?: import("../interfaces/open-api-spec.interface").ExternalDocumentationObject;
84
+ example?: any;
85
+ examples?: any[] | Record<string, any>;
86
+ deprecated?: boolean;
87
+ allOf?: (SchemaObject | ReferenceObject)[];
88
+ oneOf?: (SchemaObject | ReferenceObject)[];
89
+ anyOf?: (SchemaObject | ReferenceObject)[];
90
+ not?: SchemaObject | ReferenceObject;
91
+ properties?: Record<string, SchemaObject | ReferenceObject>;
92
+ additionalProperties?: SchemaObject | ReferenceObject | boolean;
93
+ patternProperties?: Record<string, SchemaObject | ReferenceObject> | undefined;
94
+ description?: string;
95
+ format?: string;
96
+ default?: any;
97
+ title?: string;
98
+ multipleOf?: number;
99
+ maximum?: number;
100
+ exclusiveMaximum?: boolean;
101
+ minimum?: number;
102
+ exclusiveMinimum?: boolean;
103
+ maxLength?: number;
104
+ minLength?: number;
105
+ pattern?: string;
106
+ maxItems?: number;
107
+ minItems?: number;
108
+ uniqueItems?: boolean;
109
+ maxProperties?: number;
110
+ minProperties?: number;
111
+ required?: string[];
112
+ enum?: any[];
113
+ 'x-enumNames'?: string[];
114
+ };
115
+ };
116
+ mapArrayType(param: (ParamWithTypeMetadata & SchemaObject) | BaseParameterObject, keysToRemove: KeysToRemove[]): {
117
+ schema: {
118
+ type: string;
119
+ items: any;
120
+ nullable?: boolean;
121
+ discriminator?: import("../interfaces/open-api-spec.interface").DiscriminatorObject;
122
+ readOnly?: boolean;
123
+ writeOnly?: boolean;
124
+ xml?: import("../interfaces/open-api-spec.interface").XmlObject;
125
+ externalDocs?: import("../interfaces/open-api-spec.interface").ExternalDocumentationObject;
126
+ example?: any;
127
+ examples?: any[] | Record<string, any>;
128
+ deprecated?: boolean;
129
+ allOf?: (SchemaObject | ReferenceObject)[];
130
+ oneOf?: (SchemaObject | ReferenceObject)[];
131
+ anyOf?: (SchemaObject | ReferenceObject)[];
132
+ not?: SchemaObject | ReferenceObject;
133
+ properties?: Record<string, SchemaObject | ReferenceObject>;
134
+ additionalProperties?: SchemaObject | ReferenceObject | boolean;
135
+ patternProperties?: Record<string, SchemaObject | ReferenceObject> | undefined;
136
+ description?: string;
137
+ format?: string;
138
+ default?: any;
139
+ title?: string;
140
+ multipleOf?: number;
141
+ maximum?: number;
142
+ exclusiveMaximum?: boolean;
143
+ minimum?: number;
144
+ exclusiveMinimum?: boolean;
145
+ maxLength?: number;
146
+ minLength?: number;
147
+ pattern?: string;
148
+ maxItems?: number;
149
+ minItems?: number;
150
+ uniqueItems?: boolean;
151
+ maxProperties?: number;
152
+ minProperties?: number;
153
+ required?: string[];
154
+ enum?: any[];
155
+ 'x-enumNames'?: string[];
156
+ };
157
+ description?: string;
158
+ required?: boolean;
159
+ deprecated?: boolean;
160
+ allowEmptyValue?: boolean;
161
+ style?: import("../interfaces/open-api-spec.interface").ParameterStyle;
162
+ explode?: boolean;
163
+ allowReserved?: boolean;
164
+ examples?: Record<string, import("../interfaces/open-api-spec.interface").ExampleObject | ReferenceObject>;
165
+ example?: any;
166
+ content?: import("../interfaces/open-api-spec.interface").ContentObject;
167
+ } | {
168
+ schema: {
169
+ type: string;
170
+ items: any;
171
+ nullable?: boolean;
172
+ discriminator?: import("../interfaces/open-api-spec.interface").DiscriminatorObject;
173
+ readOnly?: boolean;
174
+ writeOnly?: boolean;
175
+ xml?: import("../interfaces/open-api-spec.interface").XmlObject;
176
+ externalDocs?: import("../interfaces/open-api-spec.interface").ExternalDocumentationObject;
177
+ example?: any;
178
+ examples?: any[] | Record<string, any>;
179
+ deprecated?: boolean;
180
+ allOf?: (SchemaObject | ReferenceObject)[];
181
+ oneOf?: (SchemaObject | ReferenceObject)[];
182
+ anyOf?: (SchemaObject | ReferenceObject)[];
183
+ not?: SchemaObject | ReferenceObject;
184
+ properties?: Record<string, SchemaObject | ReferenceObject>;
185
+ additionalProperties?: SchemaObject | ReferenceObject | boolean;
186
+ patternProperties?: Record<string, SchemaObject | ReferenceObject> | undefined;
187
+ description?: string;
188
+ format?: string;
189
+ default?: any;
190
+ title?: string;
191
+ multipleOf?: number;
192
+ maximum?: number;
193
+ exclusiveMaximum?: boolean;
194
+ minimum?: number;
195
+ exclusiveMinimum?: boolean;
196
+ maxLength?: number;
197
+ minLength?: number;
198
+ pattern?: string;
199
+ maxItems?: number;
200
+ minItems?: number;
201
+ uniqueItems?: boolean;
202
+ maxProperties?: number;
203
+ minProperties?: number;
204
+ required?: string[];
205
+ enum?: any[];
206
+ 'x-enumNames'?: string[];
207
+ };
208
+ name?: string | number | object;
209
+ type?: import("@nestjs/common").Type<unknown> & string;
210
+ in?: import("../interfaces/open-api-spec.interface").ParameterLocation | "body" | "placeholder";
211
+ isArray?: boolean;
212
+ items?: SchemaObject | (SchemaObject & ReferenceObject);
213
+ required?: boolean & string[];
214
+ enum?: unknown[] & any[];
215
+ enumName?: string;
216
+ enumSchema?: import("../interfaces/enum-schema-attributes.interface").EnumSchemaAttributes;
217
+ selfRequired?: boolean;
218
+ nullable?: boolean;
219
+ discriminator?: import("../interfaces/open-api-spec.interface").DiscriminatorObject;
220
+ readOnly?: boolean;
221
+ writeOnly?: boolean;
222
+ xml?: import("../interfaces/open-api-spec.interface").XmlObject;
223
+ externalDocs?: import("../interfaces/open-api-spec.interface").ExternalDocumentationObject;
224
+ example?: any;
225
+ examples?: any[] | Record<string, any>;
226
+ deprecated?: boolean;
227
+ allOf?: (SchemaObject | ReferenceObject)[];
228
+ oneOf?: (SchemaObject | ReferenceObject)[];
229
+ anyOf?: (SchemaObject | ReferenceObject)[];
230
+ not?: SchemaObject | ReferenceObject;
231
+ properties?: Record<string, SchemaObject | ReferenceObject>;
232
+ additionalProperties?: SchemaObject | ReferenceObject | boolean;
233
+ patternProperties?: Record<string, SchemaObject | ReferenceObject> | undefined;
234
+ description?: string;
235
+ format?: string;
236
+ default?: any;
237
+ title?: string;
238
+ multipleOf?: number;
239
+ maximum?: number;
240
+ exclusiveMaximum?: boolean;
241
+ minimum?: number;
242
+ exclusiveMinimum?: boolean;
243
+ maxLength?: number;
244
+ minLength?: number;
245
+ pattern?: string;
246
+ maxItems?: number;
247
+ minItems?: number;
248
+ uniqueItems?: boolean;
249
+ maxProperties?: number;
250
+ minProperties?: number;
251
+ 'x-enumNames'?: string[];
252
+ };
253
+ getSchemaOptionsKeys(): Array<keyof SchemaObject>;
254
+ private getSchemaOptions;
255
+ private isEnumArrayType;
256
+ private hasSchemaDefinition;
257
+ private hasRawContentDefinition;
258
+ private omitParamKeys;
259
+ }
260
+ export {};
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SwaggerTypesMapper = void 0;
4
+ const lodash_1 = require("lodash");
5
+ class SwaggerTypesMapper {
6
+ constructor() {
7
+ this.keysToRemove = [
8
+ 'isArray',
9
+ 'enum',
10
+ 'enumName',
11
+ 'enumSchema',
12
+ '$ref',
13
+ 'selfRequired',
14
+ ...this.getSchemaOptionsKeys()
15
+ ];
16
+ }
17
+ mapParamTypes(parameters) {
18
+ return parameters.map((param) => {
19
+ if (this.hasSchemaDefinition(param) ||
20
+ this.hasRawContentDefinition(param)) {
21
+ if (Array.isArray(param.required) && 'schema' in param) {
22
+ param.schema.required = param.required;
23
+ delete param.required;
24
+ }
25
+ if ('selfRequired' in param) {
26
+ param.required = param.selfRequired;
27
+ }
28
+ return this.omitParamKeys(param);
29
+ }
30
+ const { type } = param;
31
+ const typeName = type && (0, lodash_1.isFunction)(type)
32
+ ? this.mapTypeToOpenAPIType(type.name)
33
+ : this.mapTypeToOpenAPIType(type);
34
+ const paramWithTypeMetadata = (0, lodash_1.omitBy)(Object.assign(Object.assign({}, param), { type: typeName }), lodash_1.isUndefined);
35
+ if (this.isEnumArrayType(paramWithTypeMetadata)) {
36
+ return this.mapEnumArrayType(paramWithTypeMetadata, this.keysToRemove);
37
+ }
38
+ else if (paramWithTypeMetadata.isArray) {
39
+ return this.mapArrayType(paramWithTypeMetadata, this.keysToRemove);
40
+ }
41
+ return Object.assign(Object.assign({}, (0, lodash_1.omit)(param, this.keysToRemove)), { schema: (0, lodash_1.omitBy)(Object.assign(Object.assign(Object.assign({}, this.getSchemaOptions(param)), (param.schema || {})), { enum: paramWithTypeMetadata.enum, type: paramWithTypeMetadata.type, $ref: paramWithTypeMetadata.$ref }), lodash_1.isUndefined) });
42
+ });
43
+ }
44
+ mapTypeToOpenAPIType(type) {
45
+ if (!(type && type.charAt)) {
46
+ return;
47
+ }
48
+ return type.charAt(0).toLowerCase() + type.slice(1);
49
+ }
50
+ mapEnumArrayType(param, keysToRemove) {
51
+ return Object.assign(Object.assign({}, (0, lodash_1.omit)(param, keysToRemove)), { schema: Object.assign(Object.assign({}, this.getSchemaOptions(param)), { type: 'array', items: param.items }) });
52
+ }
53
+ mapArrayType(param, keysToRemove) {
54
+ const itemsModifierKeys = ['format', 'maximum', 'minimum', 'pattern'];
55
+ const items = param.items ||
56
+ (0, lodash_1.omitBy)(Object.assign(Object.assign({}, (param.schema || {})), { enum: param.enum, type: this.mapTypeToOpenAPIType(param.type) }), lodash_1.isUndefined);
57
+ const modifierProperties = (0, lodash_1.pick)(param, itemsModifierKeys);
58
+ return Object.assign(Object.assign({}, (0, lodash_1.omit)(param, keysToRemove)), { schema: Object.assign(Object.assign({}, (0, lodash_1.omit)(this.getSchemaOptions(param), [...itemsModifierKeys])), { type: 'array', items: (0, lodash_1.isString)(items.type)
59
+ ? Object.assign({ type: items.type }, modifierProperties) : Object.assign(Object.assign({}, items.type), modifierProperties) }) });
60
+ }
61
+ getSchemaOptionsKeys() {
62
+ return [
63
+ 'properties',
64
+ 'patternProperties',
65
+ 'additionalProperties',
66
+ 'minimum',
67
+ 'maximum',
68
+ 'maxProperties',
69
+ 'minItems',
70
+ 'minProperties',
71
+ 'maxItems',
72
+ 'minLength',
73
+ 'maxLength',
74
+ 'exclusiveMaximum',
75
+ 'exclusiveMinimum',
76
+ 'uniqueItems',
77
+ 'title',
78
+ 'format',
79
+ 'pattern',
80
+ 'nullable',
81
+ 'default',
82
+ 'example',
83
+ 'oneOf',
84
+ 'anyOf',
85
+ 'type',
86
+ 'items'
87
+ ];
88
+ }
89
+ getSchemaOptions(param) {
90
+ const schemaKeys = this.getSchemaOptionsKeys();
91
+ const optionsObject = schemaKeys.reduce((acc, key) => (Object.assign(Object.assign({}, acc), { [key]: param[key] })), {});
92
+ return (0, lodash_1.omitBy)(optionsObject, lodash_1.isUndefined);
93
+ }
94
+ isEnumArrayType(param) {
95
+ return param.isArray && param.items && param.items.enum;
96
+ }
97
+ hasSchemaDefinition(param) {
98
+ return !!param.schema;
99
+ }
100
+ hasRawContentDefinition(param) {
101
+ return 'content' in param;
102
+ }
103
+ omitParamKeys(param) {
104
+ return (0, lodash_1.omit)(param, this.keysToRemove);
105
+ }
106
+ }
107
+ exports.SwaggerTypesMapper = SwaggerTypesMapper;
@@ -0,0 +1,8 @@
1
+ import { ParameterObject } from '../interfaces/open-api-spec.interface';
2
+ export declare class GlobalParametersStorageHost {
3
+ private parameters;
4
+ add(...parameters: ParameterObject[]): void;
5
+ getAll(): ParameterObject[];
6
+ clear(): void;
7
+ }
8
+ export declare const GlobalParametersStorage: GlobalParametersStorageHost;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GlobalParametersStorage = exports.GlobalParametersStorageHost = void 0;
4
+ class GlobalParametersStorageHost {
5
+ constructor() {
6
+ this.parameters = new Array();
7
+ }
8
+ add(...parameters) {
9
+ this.parameters.push(...parameters);
10
+ }
11
+ getAll() {
12
+ return this.parameters;
13
+ }
14
+ clear() {
15
+ this.parameters = [];
16
+ }
17
+ }
18
+ exports.GlobalParametersStorageHost = GlobalParametersStorageHost;
19
+ const globalRef = global;
20
+ exports.GlobalParametersStorage = globalRef.SwaggerGlobalParametersStorage ||
21
+ (globalRef.SwaggerGlobalParametersStorage =
22
+ new GlobalParametersStorageHost());
@@ -0,0 +1,10 @@
1
+ import { ApiResponseOptions } from '../decorators';
2
+ type GlobalResponesMap = Record<string, Omit<ApiResponseOptions, 'status'>>;
3
+ export declare class GlobalResponsesStorageHost {
4
+ private responses;
5
+ add(responses: GlobalResponesMap): void;
6
+ getAll(): GlobalResponesMap;
7
+ clear(): void;
8
+ }
9
+ export declare const GlobalResponsesStorage: GlobalResponsesStorageHost;
10
+ export {};
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GlobalResponsesStorage = exports.GlobalResponsesStorageHost = void 0;
4
+ class GlobalResponsesStorageHost {
5
+ constructor() {
6
+ this.responses = {};
7
+ }
8
+ add(responses) {
9
+ this.responses = Object.assign(Object.assign({}, this.responses), responses);
10
+ }
11
+ getAll() {
12
+ return this.responses;
13
+ }
14
+ clear() {
15
+ this.responses = {};
16
+ }
17
+ }
18
+ exports.GlobalResponsesStorageHost = GlobalResponsesStorageHost;
19
+ const globalRef = global;
20
+ exports.GlobalResponsesStorage = globalRef.SwaggerGlobalResponsesStorage ||
21
+ (globalRef.SwaggerGlobalResponsesStorage = new GlobalResponsesStorageHost());
@@ -0,0 +1,41 @@
1
+ import { Controller } from '@nestjs/common/interfaces';
2
+ import { ApplicationConfig } from '@nestjs/core';
3
+ import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';
4
+ import { OperationIdFactory } from './interfaces';
5
+ import { DenormalizedDoc } from './interfaces/denormalized-doc.interface';
6
+ import { SchemaObject } from './interfaces/open-api-spec.interface';
7
+ import { SchemaObjectFactory } from './services/schema-object-factory';
8
+ export declare class SwaggerExplorer {
9
+ private readonly schemaObjectFactory;
10
+ private readonly options;
11
+ private readonly mimetypeContentWrapper;
12
+ private readonly metadataScanner;
13
+ private readonly schemas;
14
+ private operationIdFactory;
15
+ private routePathFactory?;
16
+ private linkNameFactory;
17
+ constructor(schemaObjectFactory: SchemaObjectFactory, options?: {
18
+ httpAdapterType?: string;
19
+ });
20
+ exploreController(wrapper: InstanceWrapper<Controller>, applicationConfig: ApplicationConfig, options: {
21
+ modulePath?: string;
22
+ globalPrefix?: string;
23
+ operationIdFactory?: OperationIdFactory;
24
+ linkNameFactory?: (controllerKey: string, methodKey: string, fieldKey: string) => string;
25
+ autoTagControllers?: boolean;
26
+ }): DenormalizedDoc[];
27
+ getSchemas(): Record<string, SchemaObject>;
28
+ private generateDenormalizedDocument;
29
+ private exploreGlobalMetadata;
30
+ private exploreRoutePathAndMethod;
31
+ private getOperationId;
32
+ private getRoutePathVersions;
33
+ private reflectControllerPath;
34
+ private validateRoutePath;
35
+ private mergeMetadata;
36
+ private deepMergeMetadata;
37
+ private mergeValues;
38
+ private migrateOperationSchema;
39
+ private registerExtraModels;
40
+ private getVersionMetadata;
41
+ }