@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,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isNil = isNil;
4
+ exports.isPrimitive = isPrimitive;
5
+ exports.isPlainObject = isPlainObject;
6
+ exports.isClassRef = isClassRef;
7
+ exports.isType = isType;
8
+ exports.isTypeRef = isTypeRef;
9
+ exports.extractType = extractType;
10
+ exports.extractTypeRef = extractTypeRef;
11
+ exports.extractRoute = extractRoute;
12
+ exports.extractString = extractString;
13
+ exports.extractNumber = extractNumber;
14
+ exports.extractObject = extractObject;
15
+ exports.extractFalse = extractFalse;
16
+ exports.reduceArgs = reduceArgs;
17
+ exports.extractAndResolveClassRef = extractAndResolveClassRef;
18
+ exports.resolveClassRef = resolveClassRef;
19
+ const lodash_1 = require("lodash");
20
+ function isNil(value) {
21
+ return value === null || value === undefined;
22
+ }
23
+ function isPrimitive(value) {
24
+ return [String, Number, Boolean, Array, Object, Date].includes(value);
25
+ }
26
+ function isPlainObject(value) {
27
+ return typeof value === 'object' && !isNil(value) && value.constructor && value.constructor === Object;
28
+ }
29
+ function isClassRef(value) {
30
+ return typeof value === 'function' && !isPrimitive(value) && /^\s*class\s+/.test(value.toString());
31
+ }
32
+ function isType(value) {
33
+ return isClassRef(value) || (0, lodash_1.isFunction)(value) || Array.isArray(value) || typeof value === 'string';
34
+ }
35
+ function isTypeRef(value) {
36
+ return !!resolveClassRef(value);
37
+ }
38
+ function extractType(args, startIndex, endIndex) {
39
+ return reduceArgs(args, startIndex, endIndex).find(arg => isType(arg)) || null;
40
+ }
41
+ function extractTypeRef(args, startIndex, endIndex) {
42
+ return reduceArgs(args, startIndex, endIndex).find(arg => isTypeRef(arg)) || null;
43
+ }
44
+ function extractRoute(args, startIndex, endIndex) {
45
+ return reduceArgs(args, startIndex, endIndex).find(arg => !isNil(arg) && (Array.isArray(arg) || typeof arg === 'string')) || null;
46
+ }
47
+ function extractString(args, startIndex, endIndex) {
48
+ return reduceArgs(args, startIndex, endIndex).find(arg => typeof arg === 'string') || null;
49
+ }
50
+ function extractNumber(args, startIndex, endIndex) {
51
+ return reduceArgs(args, startIndex, endIndex).find(arg => typeof arg === 'number') || null;
52
+ }
53
+ function extractObject(args, startIndex, endIndex) {
54
+ return reduceArgs(args, startIndex, endIndex).find(arg => isPlainObject(arg)) || null;
55
+ }
56
+ function extractFalse(args, startIndex, endIndex) {
57
+ return reduceArgs(args, startIndex, endIndex).includes(false);
58
+ }
59
+ function reduceArgs(args, startIndex, endIndex) {
60
+ return args.filter((_, i) => (startIndex === undefined || i >= startIndex) && (endIndex === undefined || i < endIndex));
61
+ }
62
+ function extractAndResolveClassRef(args, startIndex, endIndex) {
63
+ const typeRef = extractTypeRef(args, startIndex, endIndex);
64
+ return typeRef ? resolveClassRef(typeRef) : null;
65
+ }
66
+ function resolveClassRef(value) {
67
+ if (Array.isArray(value)) {
68
+ const refs = value.map(ref => resolveClassRef(ref)).filter(ref => !!ref);
69
+ return refs.length ? refs : null;
70
+ }
71
+ if (isClassRef(value)) {
72
+ return value;
73
+ }
74
+ if (!isNil(value) && !isClassRef(value) && typeof value === 'function') {
75
+ return resolveClassRef(value());
76
+ }
77
+ return null;
78
+ }
79
+ //# sourceMappingURL=type.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.utils.js","sourceRoot":"","sources":["../../../lib/utils/type.utils.ts"],"names":[],"mappings":"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"}