@ethalium/nestjs-openapi 0.0.1

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 (203) hide show
  1. package/constants/metadata.constants.d.ts +65 -0
  2. package/constants/metadata.constants.js +19 -0
  3. package/constants/metadata.constants.js.map +1 -0
  4. package/decorators/body.decorator.d.ts +4 -0
  5. package/decorators/body.decorator.js +15 -0
  6. package/decorators/body.decorator.js.map +1 -0
  7. package/decorators/controller.decorator.d.ts +4 -0
  8. package/decorators/controller.decorator.js +23 -0
  9. package/decorators/controller.decorator.js.map +1 -0
  10. package/decorators/error.decorator.d.ts +6 -0
  11. package/decorators/error.decorator.js +15 -0
  12. package/decorators/error.decorator.js.map +1 -0
  13. package/decorators/errors/bad-gateway.decorator.d.ts +4 -0
  14. package/decorators/errors/bad-gateway.decorator.js +9 -0
  15. package/decorators/errors/bad-gateway.decorator.js.map +1 -0
  16. package/decorators/errors/bad-request.decorator.d.ts +4 -0
  17. package/decorators/errors/bad-request.decorator.js +9 -0
  18. package/decorators/errors/bad-request.decorator.js.map +1 -0
  19. package/decorators/errors/forbidden.decorator.d.ts +4 -0
  20. package/decorators/errors/forbidden.decorator.js +9 -0
  21. package/decorators/errors/forbidden.decorator.js.map +1 -0
  22. package/decorators/errors/gateway-timeout.decorator.d.ts +4 -0
  23. package/decorators/errors/gateway-timeout.decorator.js +9 -0
  24. package/decorators/errors/gateway-timeout.decorator.js.map +1 -0
  25. package/decorators/errors/gone.decorator.d.ts +4 -0
  26. package/decorators/errors/gone.decorator.js +9 -0
  27. package/decorators/errors/gone.decorator.js.map +1 -0
  28. package/decorators/errors/internal-server-error.decorator.d.ts +4 -0
  29. package/decorators/errors/internal-server-error.decorator.js +9 -0
  30. package/decorators/errors/internal-server-error.decorator.js.map +1 -0
  31. package/decorators/errors/method-not-allowed.decorator.d.ts +4 -0
  32. package/decorators/errors/method-not-allowed.decorator.js +9 -0
  33. package/decorators/errors/method-not-allowed.decorator.js.map +1 -0
  34. package/decorators/errors/not-acceptable.decorator.d.ts +4 -0
  35. package/decorators/errors/not-acceptable.decorator.js +9 -0
  36. package/decorators/errors/not-acceptable.decorator.js.map +1 -0
  37. package/decorators/errors/not-found.decorator.d.ts +4 -0
  38. package/decorators/errors/not-found.decorator.js +9 -0
  39. package/decorators/errors/not-found.decorator.js.map +1 -0
  40. package/decorators/errors/not-implemented.decorator.d.ts +4 -0
  41. package/decorators/errors/not-implemented.decorator.js +9 -0
  42. package/decorators/errors/not-implemented.decorator.js.map +1 -0
  43. package/decorators/errors/payload-too-large.decorator.d.ts +4 -0
  44. package/decorators/errors/payload-too-large.decorator.js +9 -0
  45. package/decorators/errors/payload-too-large.decorator.js.map +1 -0
  46. package/decorators/errors/payment-required.decorator.d.ts +4 -0
  47. package/decorators/errors/payment-required.decorator.js +9 -0
  48. package/decorators/errors/payment-required.decorator.js.map +1 -0
  49. package/decorators/errors/precondition-failed.decorator.d.ts +4 -0
  50. package/decorators/errors/precondition-failed.decorator.js +9 -0
  51. package/decorators/errors/precondition-failed.decorator.js.map +1 -0
  52. package/decorators/errors/request-timeout.decorator.d.ts +4 -0
  53. package/decorators/errors/request-timeout.decorator.js +9 -0
  54. package/decorators/errors/request-timeout.decorator.js.map +1 -0
  55. package/decorators/errors/service-unavailable.decorator.d.ts +4 -0
  56. package/decorators/errors/service-unavailable.decorator.js +9 -0
  57. package/decorators/errors/service-unavailable.decorator.js.map +1 -0
  58. package/decorators/errors/too-many-requests.decorator.d.ts +4 -0
  59. package/decorators/errors/too-many-requests.decorator.js +9 -0
  60. package/decorators/errors/too-many-requests.decorator.js.map +1 -0
  61. package/decorators/errors/unauthorized.decorator.d.ts +4 -0
  62. package/decorators/errors/unauthorized.decorator.js +9 -0
  63. package/decorators/errors/unauthorized.decorator.js.map +1 -0
  64. package/decorators/errors/unprocessable-entity.decorator.d.ts +4 -0
  65. package/decorators/errors/unprocessable-entity.decorator.js +9 -0
  66. package/decorators/errors/unprocessable-entity.decorator.js.map +1 -0
  67. package/decorators/errors/unsupported-media-type.decorator.d.ts +4 -0
  68. package/decorators/errors/unsupported-media-type.decorator.js +9 -0
  69. package/decorators/errors/unsupported-media-type.decorator.js.map +1 -0
  70. package/decorators/header.decorator.d.ts +5 -0
  71. package/decorators/header.decorator.js +22 -0
  72. package/decorators/header.decorator.js.map +1 -0
  73. package/decorators/param.decorator.d.ts +5 -0
  74. package/decorators/param.decorator.js +22 -0
  75. package/decorators/param.decorator.js.map +1 -0
  76. package/decorators/properties/all-of.decorator.d.ts +8 -0
  77. package/decorators/properties/all-of.decorator.js +28 -0
  78. package/decorators/properties/all-of.decorator.js.map +1 -0
  79. package/decorators/properties/any-of.decorator.d.ts +8 -0
  80. package/decorators/properties/any-of.decorator.js +28 -0
  81. package/decorators/properties/any-of.decorator.js.map +1 -0
  82. package/decorators/properties/boolean.decorator.d.ts +5 -0
  83. package/decorators/properties/boolean.decorator.js +23 -0
  84. package/decorators/properties/boolean.decorator.js.map +1 -0
  85. package/decorators/properties/enum.decorator.d.ts +6 -0
  86. package/decorators/properties/enum.decorator.js +24 -0
  87. package/decorators/properties/enum.decorator.js.map +1 -0
  88. package/decorators/properties/number.decorator.d.ts +5 -0
  89. package/decorators/properties/number.decorator.js +23 -0
  90. package/decorators/properties/number.decorator.js.map +1 -0
  91. package/decorators/properties/object.decorator.d.ts +6 -0
  92. package/decorators/properties/object.decorator.js +28 -0
  93. package/decorators/properties/object.decorator.js.map +1 -0
  94. package/decorators/properties/one-of.decorator.d.ts +8 -0
  95. package/decorators/properties/one-of.decorator.js +28 -0
  96. package/decorators/properties/one-of.decorator.js.map +1 -0
  97. package/decorators/properties/string.decorator.d.ts +5 -0
  98. package/decorators/properties/string.decorator.js +23 -0
  99. package/decorators/properties/string.decorator.js.map +1 -0
  100. package/decorators/properties/type.decorator.d.ts +6 -0
  101. package/decorators/properties/type.decorator.js +26 -0
  102. package/decorators/properties/type.decorator.js.map +1 -0
  103. package/decorators/property.decorator.d.ts +6 -0
  104. package/decorators/property.decorator.js +20 -0
  105. package/decorators/property.decorator.js.map +1 -0
  106. package/decorators/query.decorator.d.ts +5 -0
  107. package/decorators/query.decorator.js +22 -0
  108. package/decorators/query.decorator.js.map +1 -0
  109. package/decorators/request.decorator.d.ts +2 -0
  110. package/decorators/request.decorator.js +39 -0
  111. package/decorators/request.decorator.js.map +1 -0
  112. package/decorators/response.decorator.d.ts +7 -0
  113. package/decorators/response.decorator.js +34 -0
  114. package/decorators/response.decorator.js.map +1 -0
  115. package/decorators/route.decorator.d.ts +5 -0
  116. package/decorators/route.decorator.js +45 -0
  117. package/decorators/route.decorator.js.map +1 -0
  118. package/decorators/routes/delete.decorator.d.ts +4 -0
  119. package/decorators/routes/delete.decorator.js +9 -0
  120. package/decorators/routes/delete.decorator.js.map +1 -0
  121. package/decorators/routes/get.decorator.d.ts +4 -0
  122. package/decorators/routes/get.decorator.js +9 -0
  123. package/decorators/routes/get.decorator.js.map +1 -0
  124. package/decorators/routes/patch.decorator.d.ts +4 -0
  125. package/decorators/routes/patch.decorator.js +9 -0
  126. package/decorators/routes/patch.decorator.js.map +1 -0
  127. package/decorators/routes/post.decorator.d.ts +4 -0
  128. package/decorators/routes/post.decorator.js +9 -0
  129. package/decorators/routes/post.decorator.js.map +1 -0
  130. package/decorators/routes/put.decorator.d.ts +4 -0
  131. package/decorators/routes/put.decorator.js +9 -0
  132. package/decorators/routes/put.decorator.js.map +1 -0
  133. package/decorators/tag-group.decorator.d.ts +4 -0
  134. package/decorators/tag-group.decorator.js +15 -0
  135. package/decorators/tag-group.decorator.js.map +1 -0
  136. package/decorators/tag.decorator.d.ts +5 -0
  137. package/decorators/tag.decorator.js +26 -0
  138. package/decorators/tag.decorator.js.map +1 -0
  139. package/index.d.ts +66 -0
  140. package/index.js +83 -0
  141. package/index.js.map +1 -0
  142. package/interfaces/body.interface.d.ts +5 -0
  143. package/interfaces/body.interface.js +3 -0
  144. package/interfaces/body.interface.js.map +1 -0
  145. package/interfaces/common.interface.d.ts +36 -0
  146. package/interfaces/common.interface.js +3 -0
  147. package/interfaces/common.interface.js.map +1 -0
  148. package/interfaces/controller.interface.d.ts +4 -0
  149. package/interfaces/controller.interface.js +3 -0
  150. package/interfaces/controller.interface.js.map +1 -0
  151. package/interfaces/document.interface.d.ts +31 -0
  152. package/interfaces/document.interface.js +3 -0
  153. package/interfaces/document.interface.js.map +1 -0
  154. package/interfaces/header.interface.d.ts +7 -0
  155. package/interfaces/header.interface.js +3 -0
  156. package/interfaces/header.interface.js.map +1 -0
  157. package/interfaces/param.interface.d.ts +13 -0
  158. package/interfaces/param.interface.js +3 -0
  159. package/interfaces/param.interface.js.map +1 -0
  160. package/interfaces/property.interface.d.ts +2 -0
  161. package/interfaces/property.interface.js +3 -0
  162. package/interfaces/property.interface.js.map +1 -0
  163. package/interfaces/query.interface.d.ts +14 -0
  164. package/interfaces/query.interface.js +3 -0
  165. package/interfaces/query.interface.js.map +1 -0
  166. package/interfaces/request.interface.d.ts +12 -0
  167. package/interfaces/request.interface.js +3 -0
  168. package/interfaces/request.interface.js.map +1 -0
  169. package/interfaces/route.interface.d.ts +14 -0
  170. package/interfaces/route.interface.js +3 -0
  171. package/interfaces/route.interface.js.map +1 -0
  172. package/openapi.builder.d.ts +30 -0
  173. package/openapi.builder.js +346 -0
  174. package/openapi.builder.js.map +1 -0
  175. package/openapi.module.d.ts +8 -0
  176. package/openapi.module.js +29 -0
  177. package/openapi.module.js.map +1 -0
  178. package/openapi.scanner.d.ts +30 -0
  179. package/openapi.scanner.js +61 -0
  180. package/openapi.scanner.js.map +1 -0
  181. package/package.json +75 -0
  182. package/tsconfig.lib.tsbuildinfo +1 -0
  183. package/utils/class.utils.d.ts +13 -0
  184. package/utils/class.utils.js +55 -0
  185. package/utils/class.utils.js.map +1 -0
  186. package/utils/common.utils.d.ts +3 -0
  187. package/utils/common.utils.js +48 -0
  188. package/utils/common.utils.js.map +1 -0
  189. package/utils/decorator.utils.d.ts +37 -0
  190. package/utils/decorator.utils.js +85 -0
  191. package/utils/decorator.utils.js.map +1 -0
  192. package/utils/document-builder.utils.d.ts +70 -0
  193. package/utils/document-builder.utils.js +36 -0
  194. package/utils/document-builder.utils.js.map +1 -0
  195. package/utils/metadata.utils.d.ts +28 -0
  196. package/utils/metadata.utils.js +100 -0
  197. package/utils/metadata.utils.js.map +1 -0
  198. package/utils/schema.utils.d.ts +9 -0
  199. package/utils/schema.utils.js +58 -0
  200. package/utils/schema.utils.js.map +1 -0
  201. package/utils/type.utils.d.ts +20 -0
  202. package/utils/type.utils.js +79 -0
  203. package/utils/type.utils.js.map +1 -0
@@ -0,0 +1,13 @@
1
+ export type ClassEntry = ClassEntryMethod | ClassEntryProperty;
2
+ export interface ClassEntryMethod {
3
+ kind: 'method';
4
+ target: any;
5
+ descriptor: PropertyDescriptor;
6
+ propertyKey: string | symbol;
7
+ }
8
+ export interface ClassEntryProperty {
9
+ kind: 'property' | 'prototype-property';
10
+ target: any;
11
+ propertyKey: string | symbol;
12
+ }
13
+ export declare function getAllClassEntries(instance: any): ClassEntry[];
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAllClassEntries = getAllClassEntries;
4
+ function getAllClassEntries(instance) {
5
+ if (!instance) {
6
+ return [];
7
+ }
8
+ const ctor = instance.constructor;
9
+ const rootProto = ctor?.prototype;
10
+ if (!ctor || !rootProto) {
11
+ return [];
12
+ }
13
+ const entries = [];
14
+ const mostDerivedProtoKeys = new Set([
15
+ ...Object.getOwnPropertyNames(rootProto),
16
+ ...Object.getOwnPropertySymbols(rootProto),
17
+ ]);
18
+ for (const propertyKey of [Object.getOwnPropertyNames(instance), Object.getOwnPropertySymbols(instance)].flat(9)) {
19
+ entries.push({
20
+ kind: 'property',
21
+ target: rootProto,
22
+ propertyKey: propertyKey,
23
+ });
24
+ }
25
+ let proto = rootProto;
26
+ while (proto && proto !== Object.prototype) {
27
+ for (const propertyKey of [Object.getOwnPropertyNames(proto), Object.getOwnPropertySymbols(proto)].flat()) {
28
+ if (propertyKey === 'constructor' || propertyKey === 'prototype') {
29
+ continue;
30
+ }
31
+ const descriptor = Object.getOwnPropertyDescriptor(proto, propertyKey);
32
+ if (!descriptor) {
33
+ continue;
34
+ }
35
+ if (typeof descriptor.value === 'function') {
36
+ entries.push({
37
+ kind: 'method',
38
+ target: proto,
39
+ propertyKey: propertyKey,
40
+ descriptor: descriptor,
41
+ });
42
+ }
43
+ else {
44
+ entries.push({
45
+ kind: 'property',
46
+ target: proto,
47
+ propertyKey: propertyKey,
48
+ });
49
+ }
50
+ }
51
+ proto = Object.getPrototypeOf(proto);
52
+ }
53
+ return entries;
54
+ }
55
+ //# sourceMappingURL=class.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class.utils.js","sourceRoot":"","sources":["../../../lib/utils/class.utils.ts"],"names":[],"mappings":";;AAuBA,gDAwEC;AAxED,SAAgB,kBAAkB,CAAC,QAAa;IAE9C,IAAG,CAAC,QAAQ,EAAC,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAGD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,CAAC;IAGlC,IAAG,CAAC,IAAI,IAAI,CAAC,SAAS,EAAC,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAGD,MAAM,OAAO,GAAiB,EAAE,CAAC;IAGjC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAkB;QACpD,GAAG,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC;QACxC,GAAG,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC;KAC3C,CAAC,CAAC;IAGH,KAAK,MAAM,WAAW,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACjH,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,WAAW;SACzB,CAAC,CAAC;IACL,CAAC;IAGD,IAAI,KAAK,GAAQ,SAAS,CAAC;IAC3B,OAAO,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,EAAE,CAAC;QAC3C,KAAK,MAAM,WAAW,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAE1G,IAAG,WAAW,KAAK,aAAa,IAAI,WAAW,KAAK,WAAW,EAAC,CAAC;gBAC/D,SAAS;YACX,CAAC;YAGD,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAGvE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,SAAS;YACX,CAAC;YAGD,IAAG,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAC,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,KAAK;oBACb,WAAW,EAAE,WAAW;oBACxB,UAAU,EAAE,UAAU;iBACvB,CAAC,CAAC;YACL,CAAC;iBAAI,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,KAAK;oBACb,WAAW,EAAE,WAAW;iBACzB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAGD,OAAO,OAAO,CAAC;AAEjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function pascalCase(input: string): string;
2
+ export declare function createSlug(value: string): string;
3
+ export declare function uniqueMergeBy<T extends Record<string, any>, K extends keyof T = keyof T>(key: K, items: T[]): T[];
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pascalCase = pascalCase;
4
+ exports.createSlug = createSlug;
5
+ exports.uniqueMergeBy = uniqueMergeBy;
6
+ function pascalCase(input) {
7
+ if (!input)
8
+ return '';
9
+ return input
10
+ .replace(/[\s_-]+/g, ' ')
11
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
12
+ .split(' ')
13
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
14
+ .join('');
15
+ }
16
+ function createSlug(value) {
17
+ return value
18
+ .normalize('NFD')
19
+ .replace(/[\u0300-\u036f]/g, '')
20
+ .replace(/ä/g, 'ae')
21
+ .replace(/ö/g, 'oe')
22
+ .replace(/ü/g, 'ue')
23
+ .replace(/ß/g, 'ss')
24
+ .replace(/[^a-zA-Z0-9\s-]/g, '')
25
+ .trim()
26
+ .replace(/\s+/g, '-')
27
+ .replace(/-+/g, '-')
28
+ .toLowerCase();
29
+ }
30
+ function uniqueMergeBy(key, items) {
31
+ const dedupe = (a) => [...new Set(a)];
32
+ return Array.from(items.flat().reduce((map, item) => {
33
+ const id = item[key];
34
+ const data = map.get(id);
35
+ if (!data) {
36
+ const copy = { ...item };
37
+ Object.keys(copy).forEach(p => Array.isArray(copy[p]) && (copy[p] = dedupe(copy[p])));
38
+ return map.set(id, copy);
39
+ }
40
+ Object.keys(item).forEach(p => {
41
+ const incoming = item[p];
42
+ data[p] = Array.isArray(incoming) ? dedupe([...(Array.isArray(data[p]) ? data[p] : []), ...incoming]) : (data[p] ?? incoming);
43
+ });
44
+ return map;
45
+ }, new Map())
46
+ .values());
47
+ }
48
+ //# sourceMappingURL=common.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.utils.js","sourceRoot":"","sources":["../../../lib/utils/common.utils.ts"],"names":[],"mappings":";;AAAA,gCAUC;AAED,gCAaC;AAED,sCAiBC;AA5CD,SAAgB,UAAU,CAAC,KAAa;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,KAAK;SACT,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,IAAI,CAAC,EAAE,CACV,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAC3D;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAgB,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK;SACT,SAAS,CAAC,KAAK,CAAC;SAChB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;SACnB,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;SACnB,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;SACnB,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;SACnB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,IAAI,EAAE;SACN,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAgB,aAAa,CAA6D,GAAM,EAAE,KAAU;IAC1G,MAAM,MAAM,GAAG,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QAChD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtF,OAAO,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,IAAY,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC;QACxI,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,IAAI,GAAG,EAAW,CAAC;SACrB,MAAM,EAAE,CAAC,CAAA;AACd,CAAC"}
@@ -0,0 +1,37 @@
1
+ import 'reflect-metadata';
2
+ export type AnyDecorator = ClassDecorator | MethodDecorator | PropertyDecorator | ParameterDecorator;
3
+ export type DecoratorKind = 'class' | 'method' | 'property' | 'parameter';
4
+ export type DecoratorFactory<TInput = void, TDecorator = AnyDecorator> = (input: TInput) => TDecorator;
5
+ export interface DecoratorContext<TInput = void> {
6
+ kind: DecoratorKind;
7
+ target: any;
8
+ decorateArgs: [targetOrDescriptorValue?: any, propertyKey?: string | symbol];
9
+ propertyKey?: string | symbol;
10
+ propertyDescriptor?: PropertyDescriptor;
11
+ parameterIndex?: number;
12
+ data: TInput;
13
+ }
14
+ export interface DecoratorOptions<TInput = void, TTransformed = TInput> {
15
+ transform?: (ctx: DecoratorContext<TInput>) => TTransformed;
16
+ decorators?: (ctx: DecoratorContext<TTransformed>, store: AnyDecorator[]) => AnyDecorator[] | any;
17
+ metadata?: (ctx: DecoratorContext<TTransformed>) => Array<{
18
+ key: string;
19
+ value: any;
20
+ }> | undefined;
21
+ onApply?: (ctx: DecoratorContext<TTransformed>) => void;
22
+ }
23
+ export interface ListDecoratorOptions<TInput, TTransformed = TInput> {
24
+ metadataKey: string;
25
+ transform?: (ctx: DecoratorContext<TTransformed[]>) => TTransformed[];
26
+ unique?: boolean;
27
+ decorators?: (ctx: DecoratorContext<TTransformed[]>, store: AnyDecorator[]) => AnyDecorator[];
28
+ onApply?: (ctx: DecoratorContext<TTransformed[]>) => void;
29
+ }
30
+ export declare function detectDecoratorKind(target: any, propertyKey?: string | symbol, propertyDescriptor?: PropertyDescriptor | number): DecoratorKind;
31
+ export declare function buildDecoratorContext<TValue = any>(args: any[], data: TValue): DecoratorContext<TValue>;
32
+ export declare function createDecorator<TInput = void, TTransformed = TInput>(opts: DecoratorOptions<TInput, TTransformed>): DecoratorFactory<TInput>;
33
+ export declare function createClassDecorator<TInput = void, TTransformed = TInput>(opts: DecoratorOptions<TInput, TTransformed>): DecoratorFactory<TInput, ClassDecorator>;
34
+ export declare function createMethodDecorator<TInput = void, TTransformed = TInput>(opts: DecoratorOptions<TInput, TTransformed>): DecoratorFactory<TInput, MethodDecorator>;
35
+ export declare function createPropertyDecorator<TInput = void, TTransformed = TInput>(opts: DecoratorOptions<TInput, TTransformed>): DecoratorFactory<TInput, PropertyDecorator>;
36
+ export declare function createParamDecorator<TInput = void, TTransformed = TInput>(opts: DecoratorOptions<TInput, TTransformed>): DecoratorFactory<TInput, ParameterDecorator>;
37
+ export declare function createListDecorator<TInput, TTransformed = TInput>(opts: ListDecoratorOptions<TInput, TTransformed>): (input: TInput[]) => AnyDecorator;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.detectDecoratorKind = detectDecoratorKind;
4
+ exports.buildDecoratorContext = buildDecoratorContext;
5
+ exports.createDecorator = createDecorator;
6
+ exports.createClassDecorator = createClassDecorator;
7
+ exports.createMethodDecorator = createMethodDecorator;
8
+ exports.createPropertyDecorator = createPropertyDecorator;
9
+ exports.createParamDecorator = createParamDecorator;
10
+ exports.createListDecorator = createListDecorator;
11
+ require("reflect-metadata");
12
+ const metadata_utils_1 = require("./metadata.utils");
13
+ function detectDecoratorKind(target, propertyKey, propertyDescriptor) {
14
+ if (target && propertyKey && propertyDescriptor) {
15
+ return 'class';
16
+ }
17
+ if (typeof propertyDescriptor === 'number') {
18
+ return 'parameter';
19
+ }
20
+ if (propertyDescriptor && typeof propertyDescriptor === 'object') {
21
+ return 'method';
22
+ }
23
+ return 'property';
24
+ }
25
+ function buildDecoratorContext(args, data) {
26
+ const [target, propertyKey, descriptor] = args;
27
+ const kind = detectDecoratorKind(args);
28
+ return {
29
+ kind: kind,
30
+ target: target,
31
+ decorateArgs: (0, metadata_utils_1.getMetadataDecorateArgs)(target, propertyKey, descriptor),
32
+ propertyKey: propertyKey,
33
+ propertyDescriptor: kind === 'method' ? descriptor : undefined,
34
+ parameterIndex: kind === 'parameter' ? descriptor : undefined,
35
+ data: data,
36
+ };
37
+ }
38
+ function createDecorator(opts) {
39
+ return (input) => {
40
+ return (...args) => {
41
+ const ctx = buildDecoratorContext(args, input);
42
+ ctx.data = opts.transform ? opts.transform(ctx) : input;
43
+ const decoratorStore = [];
44
+ const decoratorFuncResult = opts.decorators?.(ctx, decoratorStore) ?? null;
45
+ const decorators = Array.isArray(decoratorFuncResult) ? decoratorFuncResult : decoratorStore;
46
+ opts.metadata?.(ctx)?.map(meta => (0, metadata_utils_1.setMetadata)(meta.key, meta.value, ctx.target, ctx.propertyKey));
47
+ opts.onApply?.(ctx);
48
+ decorators.map(d => d(...args));
49
+ return args[2];
50
+ };
51
+ };
52
+ }
53
+ function createClassDecorator(opts) {
54
+ return createDecorator(opts);
55
+ }
56
+ function createMethodDecorator(opts) {
57
+ return createDecorator(opts);
58
+ }
59
+ function createPropertyDecorator(opts) {
60
+ return createDecorator(opts);
61
+ }
62
+ function createParamDecorator(opts) {
63
+ return createDecorator(opts);
64
+ }
65
+ function createListDecorator(opts) {
66
+ return (input) => {
67
+ return (...args) => {
68
+ const ctx = buildDecoratorContext(args, input);
69
+ ctx.data = opts.transform ? opts.transform(ctx) : input;
70
+ const decoratorStore = [];
71
+ const decoratorFuncResult = opts.decorators?.(ctx, decoratorStore) ?? null;
72
+ const decorators = Array.isArray(decoratorFuncResult) ? decoratorFuncResult : decoratorStore;
73
+ if (opts.unique) {
74
+ (0, metadata_utils_1.addMetadataUniqueItems)(opts.metadataKey, ctx.data, ...ctx.decorateArgs);
75
+ }
76
+ else {
77
+ (0, metadata_utils_1.addMetadataItems)(opts.metadataKey, ctx.data, ...ctx.decorateArgs);
78
+ }
79
+ opts.onApply?.(ctx);
80
+ decorators.map(d => d(...args));
81
+ return args[2];
82
+ };
83
+ };
84
+ }
85
+ //# sourceMappingURL=decorator.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorator.utils.js","sourceRoot":"","sources":["../../../lib/utils/decorator.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { DocumentBuilder } from "@nestjs/swagger";
2
+ import { ExtensionLocation, ParameterObject, SecuritySchemeObject, ServerVariableObject } from "@nestjs/swagger/dist/interfaces/open-api-spec.interface";
3
+ import { ApiResponseOptions } from "@nestjs/swagger/dist/decorators/api-response.decorator";
4
+ import { OpenApiDocument } from "../interfaces/document.interface";
5
+ export interface IOpenApiDocumentBuilder {
6
+ openApiVersion?: string;
7
+ title?: string;
8
+ description?: string;
9
+ version?: string;
10
+ termsOfService?: string;
11
+ basePath?: string;
12
+ contact?: IOpenApiDocumentBuilderContact;
13
+ license?: IOpenApiDocumentBuilderLicense;
14
+ servers?: IOpenApiDocumentBuilderServer[];
15
+ externalDoc?: IOpenApiDocumentBuilderExternalDoc;
16
+ extensions?: IOpenApiDocumentBuilderExtension[];
17
+ securities?: IOpenApiDocumentBuilderSecurity[];
18
+ globalResponses?: ApiResponseOptions[];
19
+ globalParameters?: Array<Omit<ParameterObject, 'example' | 'examples'>>;
20
+ auth?: IOpenApiDocumentBuilderAuth;
21
+ }
22
+ export interface IOpenApiDocumentBuilderContact {
23
+ name: string;
24
+ url: string;
25
+ email: string;
26
+ }
27
+ export interface IOpenApiDocumentBuilderLicense {
28
+ name: string;
29
+ url: string;
30
+ }
31
+ export interface IOpenApiDocumentBuilderServer {
32
+ url: string;
33
+ description?: string;
34
+ variables?: Record<string, ServerVariableObject>;
35
+ serverExtraProperties?: Record<string, any>;
36
+ }
37
+ export interface IOpenApiDocumentBuilderExternalDoc {
38
+ url: string;
39
+ description: string;
40
+ }
41
+ export interface IOpenApiDocumentBuilderExtension<T = any> {
42
+ key: string;
43
+ properties: T;
44
+ location?: ExtensionLocation;
45
+ }
46
+ export interface IOpenApiDocumentBuilderSecurity {
47
+ name: string;
48
+ options: SecuritySchemeObject;
49
+ requirements?: string[];
50
+ }
51
+ export interface IOpenApiDocumentBuilderAuth {
52
+ basic?: true | IOpenApiDocumentBuilderAuthSimple | IOpenApiDocumentBuilderAuthSimple[];
53
+ bearer?: true | IOpenApiDocumentBuilderAuthSimple | IOpenApiDocumentBuilderAuthSimple[];
54
+ oauth2?: true | IOpenApiDocumentBuilderAuthSimple | IOpenApiDocumentBuilderAuthSimple[];
55
+ apiKey?: true | IOpenApiDocumentBuilderAuthSimple | IOpenApiDocumentBuilderAuthSimple[];
56
+ cookie?: true | IOpenApiDocumentBuilderAuthCookie | IOpenApiDocumentBuilderAuthCookie[];
57
+ }
58
+ export interface IOpenApiDocumentBuilderAuthSimple {
59
+ name?: string;
60
+ options?: SecuritySchemeObject;
61
+ }
62
+ export interface IOpenApiDocumentBuilderAuthCookie {
63
+ cookieName?: string;
64
+ options?: SecuritySchemeObject;
65
+ securityName?: string;
66
+ }
67
+ export declare class OpenApiDocumentBuilder extends DocumentBuilder {
68
+ constructor(options?: IOpenApiDocumentBuilder);
69
+ protected get documentObject(): Omit<OpenApiDocument, 'paths'>;
70
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenApiDocumentBuilder = void 0;
4
+ const swagger_1 = require("@nestjs/swagger");
5
+ class OpenApiDocumentBuilder extends swagger_1.DocumentBuilder {
6
+ constructor(options) {
7
+ super();
8
+ options?.openApiVersion && this.setOpenAPIVersion(options.openApiVersion);
9
+ options?.title && this.setTitle(options.title);
10
+ options?.description && this.setDescription(options.description);
11
+ options?.version && this.setVersion(options.version);
12
+ options?.termsOfService && this.setTermsOfService(options.termsOfService);
13
+ options?.basePath && this.setBasePath(options.basePath);
14
+ options?.contact && this.setContact(options.contact.name, options.contact.url, options.contact.email);
15
+ options?.license && this.setLicense(options.license.name, options.license.url);
16
+ options?.servers && options.servers.map(server => this.addServer(server.url, server.description, server.variables, server.serverExtraProperties));
17
+ options?.externalDoc && this.setExternalDoc(options?.externalDoc.description, options.externalDoc.url);
18
+ options?.extensions && options.extensions.map(extension => this.addExtension(extension.key, extension.properties, extension.location));
19
+ options?.securities && options.securities.map(security => {
20
+ this.addSecurity(security.name, security.options);
21
+ security.requirements && this.addSecurityRequirements(security.name, security.requirements);
22
+ });
23
+ options?.globalResponses && this.addGlobalResponse(...options.globalResponses);
24
+ options?.globalParameters && this.addGlobalParameters(...options.globalParameters);
25
+ options?.auth?.basic && (Array.isArray(options.auth.basic) ? options.auth.basic : [options.auth.basic === true ? {} : options.auth.basic]).map(auth => this.addBasicAuth(auth.options, auth.name));
26
+ options?.auth?.bearer && (Array.isArray(options.auth.bearer) ? options.auth.bearer : [options.auth.bearer === true ? {} : options.auth.bearer]).map(auth => this.addBearerAuth(auth.options, auth.name));
27
+ options?.auth?.oauth2 && (Array.isArray(options.auth.oauth2) ? options.auth.oauth2 : [options.auth.oauth2 === true ? {} : options.auth.oauth2]).map(auth => this.addOAuth2(auth.options, auth.name));
28
+ options?.auth?.apiKey && (Array.isArray(options.auth.apiKey) ? options.auth.apiKey : [options.auth.apiKey === true ? {} : options.auth.apiKey]).map(auth => this.addApiKey(auth.options, auth.name));
29
+ options?.auth?.cookie && (Array.isArray(options.auth.cookie) ? options.auth.cookie : [options.auth.cookie === true ? {} : options.auth.cookie]).map(auth => this.addCookieAuth(auth.cookieName, auth.options, auth.securityName));
30
+ }
31
+ get documentObject() {
32
+ return this.document;
33
+ }
34
+ }
35
+ exports.OpenApiDocumentBuilder = OpenApiDocumentBuilder;
36
+ //# sourceMappingURL=document-builder.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-builder.utils.js","sourceRoot":"","sources":["../../../lib/utils/document-builder.utils.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AAyEhD,MAAa,sBAAuB,SAAQ,yBAAe;IAEzD,YAAY,OAAiC;QAC3C,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,cAAc,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC1E,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACjE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrD,OAAO,EAAE,cAAc,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC1E,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxD,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/E,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAClJ,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACvG,OAAO,EAAE,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvI,OAAO,EAAE,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACvD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClD,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,eAAe,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;QAC/E,OAAO,EAAE,gBAAgB,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACnF,OAAO,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnM,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzM,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrM,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrM,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACpO,CAAC;IAOD,IAAc,cAAc;QAC1B,OAAQ,IAAY,CAAC,QAAQ,CAAC;IAChC,CAAC;CAEF;AArCD,wDAqCC"}
@@ -0,0 +1,28 @@
1
+ export declare function getMetadataTarget(target: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor | number): any;
2
+ export declare function getMetadataDecorateArgs(target: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor | number): [target: any, propertyKey?: string | symbol];
3
+ export declare function setMetadata<T = any>(key: string | symbol, value: T, target: any, propertyKey?: string | symbol): T;
4
+ export declare function getMetadata<T = any>(key: string | symbol, target: any, propertyKey?: string | symbol): T | null;
5
+ export declare function setMetadataItems<T = any>(key: string | symbol, items: T[], target: any, propertyKey?: string | symbol): T[];
6
+ export declare function addMetadataItems<T = any>(key: string | symbol, items: T[], target: any, propertyKey?: string | symbol): T[];
7
+ export declare function addMetadataUniqueItems<T = any>(key: string | symbol, items: T[], target: any, propertyKey?: string | symbol, uniqueKey?: string): T[];
8
+ export declare function getMetadataItems<T = any>(key: string | symbol, target: any, propertyKey?: string | symbol): T[];
9
+ export declare function MetadataAccessor<T = any>(metadataKey?: string | symbol): {
10
+ readonly key: string | symbol;
11
+ get(target: any, propertyKey?: string | symbol): T | null;
12
+ set(value: T, target: any, propertyKey?: string | symbol): T;
13
+ };
14
+ export declare function MetadataMapAccessor<T = any, K extends keyof T = keyof T>(metadataKey?: string | symbol): {
15
+ readonly key: string | symbol;
16
+ getAll(target: any, propertyKey?: string | symbol): T | null;
17
+ setAll(value: any, target: any, propertyKey?: string | symbol): T;
18
+ get(name: K, target: any, propertyKey?: string | symbol): T[K] | null;
19
+ set(name: K, value: T[K], target: any, propertyKey?: string | symbol): T[K];
20
+ };
21
+ export declare function MetadataListAccessor<T = any>(metadataKey?: string | symbol, uniqueKey?: keyof T): {
22
+ readonly key: string | symbol;
23
+ get(target: any, propertyKey?: string | symbol): T[];
24
+ set(items: T, target: any, propertyKey?: string | symbol): T;
25
+ set(items: T[], target: any, propertyKey?: string | symbol): T[];
26
+ add(items: T, target: any, propertyKey?: string | symbol): T;
27
+ add(items: T[], target: any, propertyKey?: string | symbol): T[];
28
+ };
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMetadataTarget = getMetadataTarget;
4
+ exports.getMetadataDecorateArgs = getMetadataDecorateArgs;
5
+ exports.setMetadata = setMetadata;
6
+ exports.getMetadata = getMetadata;
7
+ exports.setMetadataItems = setMetadataItems;
8
+ exports.addMetadataItems = addMetadataItems;
9
+ exports.addMetadataUniqueItems = addMetadataUniqueItems;
10
+ exports.getMetadataItems = getMetadataItems;
11
+ exports.MetadataAccessor = MetadataAccessor;
12
+ exports.MetadataMapAccessor = MetadataMapAccessor;
13
+ exports.MetadataListAccessor = MetadataListAccessor;
14
+ const lodash_1 = require("lodash");
15
+ function getMetadataTarget(target, propertyKey, descriptor) {
16
+ target = propertyKey ? target : typeof target === 'function' ? target : target.constructor;
17
+ return descriptor && typeof descriptor === 'object' && 'value' in descriptor ? descriptor.value : target;
18
+ }
19
+ function getMetadataDecorateArgs(target, propertyKey, descriptor) {
20
+ if (descriptor && typeof descriptor === 'object') {
21
+ return [getMetadataTarget(target, propertyKey, descriptor)];
22
+ }
23
+ return propertyKey ? [getMetadataTarget(target, propertyKey), propertyKey] : [getMetadataTarget(target, propertyKey)];
24
+ }
25
+ function setMetadata(key, value, target, propertyKey) {
26
+ Reflect.defineMetadata(key, value, target, propertyKey);
27
+ return value;
28
+ }
29
+ function getMetadata(key, target, propertyKey) {
30
+ return Reflect.getMetadata(key, target, propertyKey) || null;
31
+ }
32
+ function setMetadataItems(key, items, target, propertyKey) {
33
+ setMetadata(key, items, target, propertyKey);
34
+ return items;
35
+ }
36
+ function addMetadataItems(key, items, target, propertyKey) {
37
+ const current = getMetadataItems(key, target, propertyKey);
38
+ return setMetadataItems(key, [...current, ...items], target, propertyKey);
39
+ }
40
+ function addMetadataUniqueItems(key, items, target, propertyKey, uniqueKey) {
41
+ const current = getMetadataItems(key, target, propertyKey);
42
+ if (uniqueKey) {
43
+ items = [...current, ...items].reverse();
44
+ items = (0, lodash_1.uniqBy)(items, uniqueKey);
45
+ }
46
+ return setMetadataItems(key, Array.from(new Set([...current, ...items])), target, propertyKey);
47
+ }
48
+ function getMetadataItems(key, target, propertyKey) {
49
+ const value = getMetadata(key, target, propertyKey);
50
+ return Array.isArray(value) ? value : [];
51
+ }
52
+ function MetadataAccessor(metadataKey) {
53
+ return new class MetadataAccessor {
54
+ key = metadataKey || Symbol();
55
+ get(target, propertyKey) {
56
+ return getMetadata(this.key, target, propertyKey) || null;
57
+ }
58
+ set(value, target, propertyKey) {
59
+ return setMetadata(this.key, value, target, propertyKey);
60
+ }
61
+ };
62
+ }
63
+ function MetadataMapAccessor(metadataKey) {
64
+ return new class MetadataMapAccessor {
65
+ key = metadataKey || Symbol();
66
+ getAll(target, propertyKey) {
67
+ return getMetadata(this.key, target, propertyKey) || null;
68
+ }
69
+ setAll(value, target, propertyKey) {
70
+ return setMetadata(this.key, value, target, propertyKey);
71
+ }
72
+ get(name, target, propertyKey) {
73
+ const obj = this.getAll(target, propertyKey) || {};
74
+ return obj[name] || null;
75
+ }
76
+ set(name, value, target, propertyKey) {
77
+ const obj = this.getAll(target, propertyKey) || {};
78
+ obj[name] = value;
79
+ this.setAll(obj, target, propertyKey);
80
+ return value;
81
+ }
82
+ };
83
+ }
84
+ function MetadataListAccessor(metadataKey, uniqueKey) {
85
+ return new class MetadataListAccessor {
86
+ key = metadataKey || Symbol();
87
+ get(target, propertyKey) {
88
+ return getMetadataItems(this.key, target, propertyKey);
89
+ }
90
+ set(items, target, propertyKey) {
91
+ setMetadataItems(this.key, Array.isArray(items) ? items : [items], target, propertyKey);
92
+ return items;
93
+ }
94
+ add(items, target, propertyKey) {
95
+ addMetadataUniqueItems(this.key, Array.isArray(items) ? items : [items], target, propertyKey, uniqueKey);
96
+ return items;
97
+ }
98
+ };
99
+ }
100
+ //# sourceMappingURL=metadata.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.utils.js","sourceRoot":"","sources":["../../../lib/utils/metadata.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { IOpenApiTypeRefSingle } from "../interfaces/common.interface";
2
+ import { ReferenceObject, SchemaObject } from "@nestjs/swagger/dist/interfaces/open-api-spec.interface";
3
+ import { Type } from "@nestjs/common";
4
+ import { ApiResponseOptions } from "@nestjs/swagger/dist/decorators/api-response.decorator";
5
+ export declare function createSchemaRefs(refs: Array<IOpenApiTypeRefSingle | SchemaObject | ReferenceObject>, options?: {
6
+ onClassRef?: (ref: Type<unknown>) => void;
7
+ }): Array<SchemaObject | ReferenceObject>;
8
+ export declare function createSchemaFromPrimitive(item: any): SchemaObject | null;
9
+ export declare function generateSchemaType(options: ApiResponseOptions): string | null;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSchemaRefs = createSchemaRefs;
4
+ exports.createSchemaFromPrimitive = createSchemaFromPrimitive;
5
+ exports.generateSchemaType = generateSchemaType;
6
+ const type_utils_1 = require("./type.utils");
7
+ const swagger_1 = require("@nestjs/swagger");
8
+ function createSchemaRefs(refs, options) {
9
+ return refs
10
+ .map(ref => {
11
+ if ((0, type_utils_1.isPlainObject)(ref)) {
12
+ return ref;
13
+ }
14
+ if ((0, type_utils_1.isPrimitive)(ref)) {
15
+ return createSchemaFromPrimitive(ref);
16
+ }
17
+ const classRef = (0, type_utils_1.resolveClassRef)(ref);
18
+ if (classRef) {
19
+ options?.onClassRef?.(classRef);
20
+ return { $ref: (0, swagger_1.getSchemaPath)(classRef) };
21
+ }
22
+ return null;
23
+ })
24
+ .filter(_ => !!_);
25
+ }
26
+ function createSchemaFromPrimitive(item) {
27
+ switch (true) {
28
+ case item === String: return { type: 'string' };
29
+ case item === Number: return { type: 'number' };
30
+ case item === Boolean: return { type: 'boolean' };
31
+ case item === Array: return { type: 'array' };
32
+ case item === Object: return { type: 'object' };
33
+ case item === Date: return { type: 'string', format: 'date-time' };
34
+ default: return null;
35
+ }
36
+ }
37
+ function generateSchemaType(options) {
38
+ if ((0, type_utils_1.isPlainObject)(options)) {
39
+ const { type, isArray, schema } = options;
40
+ if (type && isArray === true) {
41
+ return 'array';
42
+ }
43
+ if ((0, type_utils_1.isClassRef)(type)) {
44
+ return 'object';
45
+ }
46
+ if (typeof type === 'function') {
47
+ return type.name;
48
+ }
49
+ if (typeof type === 'string') {
50
+ return type;
51
+ }
52
+ if ((0, type_utils_1.isPlainObject)(schema) && 'type' in schema && typeof schema.type === 'string') {
53
+ return schema.type;
54
+ }
55
+ }
56
+ return null;
57
+ }
58
+ //# sourceMappingURL=schema.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.utils.js","sourceRoot":"","sources":["../../../lib/utils/schema.utils.ts"],"names":[],"mappings":";;AAOA,4CA4BC;AAED,8DAUC;AAED,gDAiCC;AAhFD,6CAAqF;AAErF,6CAA8C;AAG9C,SAAgB,gBAAgB,CAAC,IAA+D,EAAE,OAEjG;IACC,OAAO,IAAI;SACR,GAAG,CAAC,GAAG,CAAC,EAAE;QAGT,IAAG,IAAA,0BAAa,EAAC,GAAG,CAAC,EAAC,CAAC;YACrB,OAAO,GAAG,CAAC;QACb,CAAC;QAGD,IAAG,IAAA,wBAAW,EAAC,GAAG,CAAC,EAAC,CAAC;YACnB,OAAO,yBAAyB,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;QAGD,MAAM,QAAQ,GAAG,IAAA,4BAAe,EAAC,GAAG,CAAC,CAAC;QACtC,IAAG,QAAQ,EAAC,CAAC;YACX,OAAO,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;YAChC,OAAO,EAAE,IAAI,EAAE,IAAA,uBAAa,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,CAAC;QAGD,OAAO,IAAI,CAAC;IAEd,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAQ,CAAC;AAC7B,CAAC;AAED,SAAgB,yBAAyB,CAAC,IAAS;IACjD,QAAO,IAAI,EAAE,CAAC;QACZ,KAAK,IAAI,KAAK,MAAO,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACjD,KAAK,IAAI,KAAK,MAAO,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACjD,KAAK,IAAI,KAAK,OAAQ,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACnD,KAAK,IAAI,KAAK,KAAM,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC/C,KAAK,IAAI,KAAK,MAAO,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACjD,KAAK,IAAI,KAAK,IAAK,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACpE,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB,CAAC,OAA2B;IAC5D,IAAG,IAAA,0BAAa,EAAC,OAAO,CAAC,EAAC,CAAC;QAGzB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAc,CAAC;QAGjD,IAAG,IAAI,IAAI,OAAO,KAAK,IAAI,EAAC,CAAC;YAC3B,OAAO,OAAO,CAAC;QACjB,CAAC;QAGD,IAAG,IAAA,uBAAU,EAAC,IAAI,CAAC,EAAC,CAAC;YACnB,OAAO,QAAQ,CAAC;QAClB,CAAC;QAGD,IAAG,OAAO,IAAI,KAAK,UAAU,EAAC,CAAC;YAC7B,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QAGD,IAAG,OAAO,IAAI,KAAK,QAAQ,EAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAGD,IAAG,IAAA,0BAAa,EAAC,MAAM,CAAC,IAAI,MAAM,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAC,CAAC;YAC/E,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;IAEH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { Type } from "@nestjs/common";
2
+ import { IOpenApiRouteLike, IOpenApiType, IOpenApiTypeRef, IOpenApiTypeRefList, IOpenApiTypeRefSingle } from "../interfaces/common.interface";
3
+ export declare function isNil(value: any): value is null | undefined;
4
+ export declare function isPrimitive(value: any): value is String | Number | Boolean | Array<any> | Object | Date;
5
+ export declare function isPlainObject(value: any): value is Object;
6
+ export declare function isClassRef<T = unknown>(value: any): value is Type<T>;
7
+ export declare function isType(value: any): value is IOpenApiType;
8
+ export declare function isTypeRef<T = unknown>(value: any): value is IOpenApiTypeRef<T>;
9
+ export declare function extractType(args: any[], startIndex?: number, endIndex?: number): IOpenApiType | null;
10
+ export declare function extractTypeRef<T = unknown>(args: any[], startIndex?: number, endIndex?: number): IOpenApiTypeRef<T> | null;
11
+ export declare function extractRoute(args: any[], startIndex?: number, endIndex?: number): IOpenApiRouteLike | null;
12
+ export declare function extractString(args: any[], startIndex?: number, endIndex?: number): string | null;
13
+ export declare function extractNumber(args: any[], startIndex?: number, endIndex?: number): number | null;
14
+ export declare function extractObject<T = any>(args: any[], startIndex?: number, endIndex?: number): T | null;
15
+ export declare function extractFalse(args: any[], startIndex?: number, endIndex?: number): boolean;
16
+ export declare function reduceArgs(args: any[], startIndex?: number, endIndex?: number): any[];
17
+ export declare function extractAndResolveClassRef<T = unknown>(args: any[], startIndex?: number, endIndex?: number): Type<T> | Type<T>[] | null;
18
+ export declare function resolveClassRef<T = unknown>(value: IOpenApiTypeRefSingle<T>): Type<T> | null;
19
+ export declare function resolveClassRef<T = unknown>(value: IOpenApiTypeRefList<T>): Type<T>[] | null;
20
+ export declare function resolveClassRef<T = unknown>(value: IOpenApiTypeRef<T>): Type<T> | Type<T>[] | null;