plutin 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 (237) hide show
  1. package/dist/base-controller-cec5714c.d.ts +46 -0
  2. package/dist/core/decorators/controller-http-decorator.cjs +752 -0
  3. package/dist/core/decorators/controller-http-decorator.cjs.map +1 -0
  4. package/dist/core/decorators/controller-http-decorator.d.cts +13 -0
  5. package/dist/core/decorators/controller-http-decorator.d.ts +13 -0
  6. package/dist/core/decorators/controller-http-decorator.js +735 -0
  7. package/dist/core/decorators/controller-http-decorator.js.map +1 -0
  8. package/dist/core/decorators/dependency-container.cjs +92 -0
  9. package/dist/core/decorators/dependency-container.cjs.map +1 -0
  10. package/dist/core/decorators/dependency-container.d.cts +22 -0
  11. package/dist/core/decorators/dependency-container.d.ts +22 -0
  12. package/dist/core/decorators/dependency-container.js +69 -0
  13. package/dist/core/decorators/dependency-container.js.map +1 -0
  14. package/dist/core/entities/aggregate-root.cjs +99 -0
  15. package/dist/core/entities/aggregate-root.cjs.map +1 -0
  16. package/dist/core/entities/aggregate-root.d.cts +8 -0
  17. package/dist/core/entities/aggregate-root.d.ts +8 -0
  18. package/dist/core/entities/aggregate-root.js +74 -0
  19. package/dist/core/entities/aggregate-root.js.map +1 -0
  20. package/dist/core/entities/common-dto.cjs +19 -0
  21. package/dist/core/entities/common-dto.cjs.map +1 -0
  22. package/dist/core/entities/common-dto.d.cts +10 -0
  23. package/dist/core/entities/common-dto.d.ts +10 -0
  24. package/dist/core/entities/common-dto.js +1 -0
  25. package/dist/core/entities/common-dto.js.map +1 -0
  26. package/dist/core/entities/domain-event.cjs +19 -0
  27. package/dist/core/entities/domain-event.cjs.map +1 -0
  28. package/dist/core/entities/domain-event.d.cts +6 -0
  29. package/dist/core/entities/domain-event.d.ts +6 -0
  30. package/dist/core/entities/domain-event.js +1 -0
  31. package/dist/core/entities/domain-event.js.map +1 -0
  32. package/dist/core/entities/entity.cjs +92 -0
  33. package/dist/core/entities/entity.cjs.map +1 -0
  34. package/dist/core/entities/entity.d.cts +17 -0
  35. package/dist/core/entities/entity.d.ts +17 -0
  36. package/dist/core/entities/entity.js +67 -0
  37. package/dist/core/entities/entity.js.map +1 -0
  38. package/dist/core/entities/optional.cjs +19 -0
  39. package/dist/core/entities/optional.cjs.map +1 -0
  40. package/dist/core/entities/optional.d.cts +3 -0
  41. package/dist/core/entities/optional.d.ts +3 -0
  42. package/dist/core/entities/optional.js +1 -0
  43. package/dist/core/entities/optional.js.map +1 -0
  44. package/dist/core/entities/unique-entity-id.cjs +50 -0
  45. package/dist/core/entities/unique-entity-id.cjs.map +1 -0
  46. package/dist/core/entities/unique-entity-id.d.cts +9 -0
  47. package/dist/core/entities/unique-entity-id.d.ts +9 -0
  48. package/dist/core/entities/unique-entity-id.js +27 -0
  49. package/dist/core/entities/unique-entity-id.js.map +1 -0
  50. package/dist/core/entities/value-object.cjs +40 -0
  51. package/dist/core/entities/value-object.cjs.map +1 -0
  52. package/dist/core/entities/value-object.d.cts +6 -0
  53. package/dist/core/entities/value-object.d.ts +6 -0
  54. package/dist/core/entities/value-object.js +17 -0
  55. package/dist/core/entities/value-object.js.map +1 -0
  56. package/dist/core/entities/watched-list.cjs +121 -0
  57. package/dist/core/entities/watched-list.cjs.map +1 -0
  58. package/dist/core/entities/watched-list.d.cts +27 -0
  59. package/dist/core/entities/watched-list.d.ts +27 -0
  60. package/dist/core/entities/watched-list.js +98 -0
  61. package/dist/core/entities/watched-list.js.map +1 -0
  62. package/dist/core/entities/watched-list.test.cjs +186 -0
  63. package/dist/core/entities/watched-list.test.cjs.map +1 -0
  64. package/dist/core/entities/watched-list.test.d.cts +2 -0
  65. package/dist/core/entities/watched-list.test.d.ts +2 -0
  66. package/dist/core/entities/watched-list.test.js +185 -0
  67. package/dist/core/entities/watched-list.test.js.map +1 -0
  68. package/dist/core/errors/api-common-error.cjs +38 -0
  69. package/dist/core/errors/api-common-error.cjs.map +1 -0
  70. package/dist/core/errors/api-common-error.d.cts +28 -0
  71. package/dist/core/errors/api-common-error.d.ts +28 -0
  72. package/dist/core/errors/api-common-error.js +13 -0
  73. package/dist/core/errors/api-common-error.js.map +1 -0
  74. package/dist/core/errors/application-error.cjs +54 -0
  75. package/dist/core/errors/application-error.cjs.map +1 -0
  76. package/dist/core/errors/application-error.d.cts +8 -0
  77. package/dist/core/errors/application-error.d.ts +8 -0
  78. package/dist/core/errors/application-error.js +33 -0
  79. package/dist/core/errors/application-error.js.map +1 -0
  80. package/dist/core/errors/conflict-error.cjs +56 -0
  81. package/dist/core/errors/conflict-error.cjs.map +1 -0
  82. package/dist/core/errors/conflict-error.d.cts +13 -0
  83. package/dist/core/errors/conflict-error.d.ts +13 -0
  84. package/dist/core/errors/conflict-error.js +35 -0
  85. package/dist/core/errors/conflict-error.js.map +1 -0
  86. package/dist/core/errors/domain-error.cjs +54 -0
  87. package/dist/core/errors/domain-error.cjs.map +1 -0
  88. package/dist/core/errors/domain-error.d.cts +8 -0
  89. package/dist/core/errors/domain-error.d.ts +8 -0
  90. package/dist/core/errors/domain-error.js +33 -0
  91. package/dist/core/errors/domain-error.js.map +1 -0
  92. package/dist/core/errors/http-client-error.cjs +54 -0
  93. package/dist/core/errors/http-client-error.cjs.map +1 -0
  94. package/dist/core/errors/http-client-error.d.cts +8 -0
  95. package/dist/core/errors/http-client-error.d.ts +8 -0
  96. package/dist/core/errors/http-client-error.js +33 -0
  97. package/dist/core/errors/http-client-error.js.map +1 -0
  98. package/dist/core/errors/infra-error.cjs +54 -0
  99. package/dist/core/errors/infra-error.cjs.map +1 -0
  100. package/dist/core/errors/infra-error.d.cts +8 -0
  101. package/dist/core/errors/infra-error.d.ts +8 -0
  102. package/dist/core/errors/infra-error.js +33 -0
  103. package/dist/core/errors/infra-error.js.map +1 -0
  104. package/dist/core/errors/validation-error.cjs +55 -0
  105. package/dist/core/errors/validation-error.cjs.map +1 -0
  106. package/dist/core/errors/validation-error.d.cts +8 -0
  107. package/dist/core/errors/validation-error.d.ts +8 -0
  108. package/dist/core/errors/validation-error.js +34 -0
  109. package/dist/core/errors/validation-error.js.map +1 -0
  110. package/dist/core/http/base-controller.cjs +731 -0
  111. package/dist/core/http/base-controller.cjs.map +1 -0
  112. package/dist/core/http/base-controller.d.cts +1 -0
  113. package/dist/core/http/base-controller.d.ts +1 -0
  114. package/dist/core/http/base-controller.js +720 -0
  115. package/dist/core/http/base-controller.js.map +1 -0
  116. package/dist/core/http/dto-response.cjs +19 -0
  117. package/dist/core/http/dto-response.cjs.map +1 -0
  118. package/dist/core/http/dto-response.d.cts +10 -0
  119. package/dist/core/http/dto-response.d.ts +10 -0
  120. package/dist/core/http/dto-response.js +1 -0
  121. package/dist/core/http/dto-response.js.map +1 -0
  122. package/dist/core/http/error-notifier.cjs +19 -0
  123. package/dist/core/http/error-notifier.cjs.map +1 -0
  124. package/dist/core/http/error-notifier.d.cts +1 -0
  125. package/dist/core/http/error-notifier.d.ts +1 -0
  126. package/dist/core/http/error-notifier.js +1 -0
  127. package/dist/core/http/error-notifier.js.map +1 -0
  128. package/dist/core/http/get-take-and-skip.cjs +40 -0
  129. package/dist/core/http/get-take-and-skip.cjs.map +1 -0
  130. package/dist/core/http/get-take-and-skip.d.cts +6 -0
  131. package/dist/core/http/get-take-and-skip.d.ts +6 -0
  132. package/dist/core/http/get-take-and-skip.js +17 -0
  133. package/dist/core/http/get-take-and-skip.js.map +1 -0
  134. package/dist/core/http/health-connections.cjs +42 -0
  135. package/dist/core/http/health-connections.cjs.map +1 -0
  136. package/dist/core/http/health-connections.d.cts +16 -0
  137. package/dist/core/http/health-connections.d.ts +16 -0
  138. package/dist/core/http/health-connections.js +23 -0
  139. package/dist/core/http/health-connections.js.map +1 -0
  140. package/dist/core/http/http.cjs +19 -0
  141. package/dist/core/http/http.cjs.map +1 -0
  142. package/dist/core/http/http.d.cts +10 -0
  143. package/dist/core/http/http.d.ts +10 -0
  144. package/dist/core/http/http.js +1 -0
  145. package/dist/core/http/http.js.map +1 -0
  146. package/dist/core/http/pagination.cjs +19 -0
  147. package/dist/core/http/pagination.cjs.map +1 -0
  148. package/dist/core/http/pagination.d.cts +9 -0
  149. package/dist/core/http/pagination.d.ts +9 -0
  150. package/dist/core/http/pagination.js +1 -0
  151. package/dist/core/http/pagination.js.map +1 -0
  152. package/dist/core/http/validator.cjs +19 -0
  153. package/dist/core/http/validator.cjs.map +1 -0
  154. package/dist/core/http/validator.d.cts +11 -0
  155. package/dist/core/http/validator.d.ts +11 -0
  156. package/dist/core/http/validator.js +1 -0
  157. package/dist/core/http/validator.js.map +1 -0
  158. package/dist/core/index.cjs +957 -0
  159. package/dist/core/index.cjs.map +1 -0
  160. package/dist/core/index.d.cts +18 -0
  161. package/dist/core/index.d.ts +18 -0
  162. package/dist/core/index.js +933 -0
  163. package/dist/core/index.js.map +1 -0
  164. package/dist/infra/adapters/http/express-adapter.cjs +577 -0
  165. package/dist/infra/adapters/http/express-adapter.cjs.map +1 -0
  166. package/dist/infra/adapters/http/express-adapter.d.cts +15 -0
  167. package/dist/infra/adapters/http/express-adapter.d.ts +15 -0
  168. package/dist/infra/adapters/http/express-adapter.js +556 -0
  169. package/dist/infra/adapters/http/express-adapter.js.map +1 -0
  170. package/dist/infra/adapters/http/fastify-adapter.cjs +562 -0
  171. package/dist/infra/adapters/http/fastify-adapter.cjs.map +1 -0
  172. package/dist/infra/adapters/http/fastify-adapter.d.cts +14 -0
  173. package/dist/infra/adapters/http/fastify-adapter.d.ts +14 -0
  174. package/dist/infra/adapters/http/fastify-adapter.js +541 -0
  175. package/dist/infra/adapters/http/fastify-adapter.js.map +1 -0
  176. package/dist/infra/adapters/http/response-error-code.cjs +35 -0
  177. package/dist/infra/adapters/http/response-error-code.cjs.map +1 -0
  178. package/dist/infra/adapters/http/response-error-code.d.cts +6 -0
  179. package/dist/infra/adapters/http/response-error-code.d.ts +6 -0
  180. package/dist/infra/adapters/http/response-error-code.js +10 -0
  181. package/dist/infra/adapters/http/response-error-code.js.map +1 -0
  182. package/dist/infra/adapters/http/validate-controller-metadata.cjs +42 -0
  183. package/dist/infra/adapters/http/validate-controller-metadata.cjs.map +1 -0
  184. package/dist/infra/adapters/http/validate-controller-metadata.d.cts +11 -0
  185. package/dist/infra/adapters/http/validate-controller-metadata.d.ts +11 -0
  186. package/dist/infra/adapters/http/validate-controller-metadata.js +19 -0
  187. package/dist/infra/adapters/http/validate-controller-metadata.js.map +1 -0
  188. package/dist/infra/adapters/notifications/discord.cjs +86 -0
  189. package/dist/infra/adapters/notifications/discord.cjs.map +1 -0
  190. package/dist/infra/adapters/notifications/discord.d.cts +14 -0
  191. package/dist/infra/adapters/notifications/discord.d.ts +14 -0
  192. package/dist/infra/adapters/notifications/discord.js +65 -0
  193. package/dist/infra/adapters/notifications/discord.js.map +1 -0
  194. package/dist/infra/adapters/notifications/in-memory.cjs +40 -0
  195. package/dist/infra/adapters/notifications/in-memory.cjs.map +1 -0
  196. package/dist/infra/adapters/notifications/in-memory.d.cts +8 -0
  197. package/dist/infra/adapters/notifications/in-memory.d.ts +8 -0
  198. package/dist/infra/adapters/notifications/in-memory.js +21 -0
  199. package/dist/infra/adapters/notifications/in-memory.js.map +1 -0
  200. package/dist/infra/adapters/notifications/sentry.cjs +129 -0
  201. package/dist/infra/adapters/notifications/sentry.cjs.map +1 -0
  202. package/dist/infra/adapters/notifications/sentry.d.cts +13 -0
  203. package/dist/infra/adapters/notifications/sentry.d.ts +13 -0
  204. package/dist/infra/adapters/notifications/sentry.js +96 -0
  205. package/dist/infra/adapters/notifications/sentry.js.map +1 -0
  206. package/dist/infra/adapters/validators/zod/index.cjs +179 -0
  207. package/dist/infra/adapters/validators/zod/index.cjs.map +1 -0
  208. package/dist/infra/adapters/validators/zod/index.d.cts +19 -0
  209. package/dist/infra/adapters/validators/zod/index.d.ts +19 -0
  210. package/dist/infra/adapters/validators/zod/index.js +154 -0
  211. package/dist/infra/adapters/validators/zod/index.js.map +1 -0
  212. package/dist/infra/adapters/validators/zod/zod-map-error.cjs +79 -0
  213. package/dist/infra/adapters/validators/zod/zod-map-error.cjs.map +1 -0
  214. package/dist/infra/adapters/validators/zod/zod-map-error.d.cts +15 -0
  215. package/dist/infra/adapters/validators/zod/zod-map-error.d.ts +15 -0
  216. package/dist/infra/adapters/validators/zod/zod-map-error.js +60 -0
  217. package/dist/infra/adapters/validators/zod/zod-map-error.js.map +1 -0
  218. package/dist/infra/adapters/validators/zod/zod-validator.cjs +178 -0
  219. package/dist/infra/adapters/validators/zod/zod-validator.cjs.map +1 -0
  220. package/dist/infra/adapters/validators/zod/zod-validator.d.cts +13 -0
  221. package/dist/infra/adapters/validators/zod/zod-validator.d.ts +13 -0
  222. package/dist/infra/adapters/validators/zod/zod-validator.js +153 -0
  223. package/dist/infra/adapters/validators/zod/zod-validator.js.map +1 -0
  224. package/dist/infra/env/index.cjs +473 -0
  225. package/dist/infra/env/index.cjs.map +1 -0
  226. package/dist/infra/env/index.d.cts +10 -0
  227. package/dist/infra/env/index.d.ts +10 -0
  228. package/dist/infra/env/index.js +456 -0
  229. package/dist/infra/env/index.js.map +1 -0
  230. package/dist/infra/index.cjs +781 -0
  231. package/dist/infra/index.cjs.map +1 -0
  232. package/dist/infra/index.d.cts +5 -0
  233. package/dist/infra/index.d.ts +5 -0
  234. package/dist/infra/index.js +752 -0
  235. package/dist/infra/index.js.map +1 -0
  236. package/package.json +82 -0
  237. package/readme.md +56 -0
@@ -0,0 +1,96 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // src/infra/adapters/notifications/sentry.ts
5
+ import * as Sentry from "@sentry/node";
6
+
7
+ // src/core/decorators/dependency-container.ts
8
+ import "reflect-metadata";
9
+ function Inject(token) {
10
+ return (target, _propertyKey, parameterIndex) => {
11
+ const constructor = typeof target === "function" ? target : target.constructor;
12
+ const existingInjectedParams = Reflect.getOwnMetadata("inject:params", constructor) || {};
13
+ existingInjectedParams[parameterIndex] = token;
14
+ Reflect.defineMetadata("inject:params", existingInjectedParams, constructor);
15
+ };
16
+ }
17
+ __name(Inject, "Inject");
18
+
19
+ // src/infra/adapters/notifications/sentry.ts
20
+ function _ts_decorate(decorators, target, key, desc) {
21
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
22
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
23
+ r = Reflect.decorate(decorators, target, key, desc);
24
+ else
25
+ for (var i = decorators.length - 1; i >= 0; i--)
26
+ if (d = decorators[i])
27
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
28
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
29
+ }
30
+ __name(_ts_decorate, "_ts_decorate");
31
+ function _ts_metadata(k, v) {
32
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
33
+ return Reflect.metadata(k, v);
34
+ }
35
+ __name(_ts_metadata, "_ts_metadata");
36
+ function _ts_param(paramIndex, decorator) {
37
+ return function(target, key) {
38
+ decorator(target, key, paramIndex);
39
+ };
40
+ }
41
+ __name(_ts_param, "_ts_param");
42
+ var SentryNotifier = class {
43
+ static {
44
+ __name(this, "SentryNotifier");
45
+ }
46
+ options;
47
+ constructor(options) {
48
+ this.options = options;
49
+ Sentry.init({
50
+ dsn: this.options.dsn,
51
+ environment: this.options.environment,
52
+ attachStacktrace: true,
53
+ tracesSampleRate: this.options.environment === "production" ? 0.1 : 1,
54
+ maxBreadcrumbs: 100,
55
+ debug: this.options.environment !== "production"
56
+ });
57
+ }
58
+ async notify(error, context) {
59
+ Sentry.withScope((scope) => {
60
+ scope.setLevel("error");
61
+ if (context?.env)
62
+ scope.setTag("env", context.env);
63
+ if (context?.user) {
64
+ scope.setUser({
65
+ id: context.user.id,
66
+ username: context.user.name,
67
+ email: context.user.email
68
+ });
69
+ }
70
+ if (context?.request) {
71
+ const { body, query, params, headers, method, url, requestId } = context.request;
72
+ scope.setContext("http", {
73
+ method,
74
+ requestId,
75
+ url,
76
+ headers,
77
+ query,
78
+ body,
79
+ params
80
+ });
81
+ }
82
+ Sentry.captureException(error);
83
+ });
84
+ }
85
+ };
86
+ SentryNotifier = _ts_decorate([
87
+ _ts_param(0, Inject("SentryConfig")),
88
+ _ts_metadata("design:type", Function),
89
+ _ts_metadata("design:paramtypes", [
90
+ typeof SentryOptions === "undefined" ? Object : SentryOptions
91
+ ])
92
+ ], SentryNotifier);
93
+ export {
94
+ SentryNotifier
95
+ };
96
+ //# sourceMappingURL=sentry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/infra/adapters/notifications/sentry.ts","../../../../src/core/decorators/dependency-container.ts"],"sourcesContent":["import * as Sentry from '@sentry/node'\nimport type { ContextError } from 'core/http/base-controller'\n\nimport { Inject } from '../../../core/decorators/dependency-container'\nimport IErrorNotifier from '../../../core/http/error-notifier'\n\ntype SentryOptions = {\n dsn: string\n environment: string\n}\n\nexport class SentryNotifier implements IErrorNotifier {\n constructor(@Inject('SentryConfig') private readonly options: SentryOptions) {\n Sentry.init({\n dsn: this.options.dsn,\n environment: this.options.environment,\n attachStacktrace: true,\n tracesSampleRate: this.options.environment === 'production' ? 0.1 : 1.0,\n maxBreadcrumbs: 100,\n debug: this.options.environment !== 'production',\n })\n }\n\n async notify(error: Error, context: ContextError): Promise<void> {\n Sentry.withScope((scope) => {\n scope.setLevel('error')\n\n if (context?.env) scope.setTag('env', context.env)\n\n if (context?.user) {\n scope.setUser({\n id: context.user.id,\n username: context.user.name,\n email: context.user.email,\n })\n }\n\n if (context?.request) {\n const { body, query, params, headers, method, url, requestId } =\n context.request\n\n scope.setContext('http', {\n method,\n requestId,\n url,\n headers,\n query,\n body,\n params,\n })\n }\n\n Sentry.captureException(error)\n })\n }\n}\n","import 'reflect-metadata'\n\ntype Class<T = any> = new (...args: any[]) => T\n\ntype Registration =\n | { type: 'class'; myClass: Class; singleton: boolean }\n | { type: 'value'; value: any }\n\nexport default class DependencyContainer {\n static registry = new Map<string, Registration>()\n static singletons = new Map<string, any>()\n\n static register<T>(\n token: string,\n myClass: Class<T>,\n options: { singleton: boolean }\n ) {\n this.registry.set(token, {\n type: 'class',\n myClass,\n singleton: options.singleton,\n })\n }\n\n static registerValue<T>(token: string, value: T) {\n this.registry.set(token, { type: 'value', value })\n }\n\n static resolve<T>(target: Class<T>): T {\n const paramTypes = Reflect.getMetadata('design:paramtypes', target) || []\n\n const injectMetadata: Record<number, string> =\n Reflect.getOwnMetadata('inject:params', target) || {}\n\n const params = paramTypes.map((_: any, index: number) => {\n const token = injectMetadata[index]\n\n if (!token) {\n throw new Error(\n `Missing @Inject token for parameter index ${index} in ${target.name}`\n )\n }\n\n return this.resolveToken(token)\n })\n\n return new target(...params)\n }\n\n static resolveToken(token: string): any {\n const registration = this.registry.get(token)\n\n if (!registration) {\n throw new Error(\n `\"${token}\" not registered. Please register it in the container.`\n )\n }\n\n if (registration.type === 'value') {\n return registration.value\n }\n\n const { myClass, singleton } = registration\n\n if (singleton) {\n if (!this.singletons.has(token)) {\n const instance = this.resolve(myClass)\n this.singletons.set(token, instance)\n }\n return this.singletons.get(token)\n }\n\n return this.resolve(myClass)\n }\n}\n\nexport function Inject(token: string): ParameterDecorator {\n return (\n target: object,\n _propertyKey: string | symbol | undefined,\n parameterIndex: number\n ): void => {\n const constructor =\n typeof target === 'function' ? target : target.constructor\n\n const existingInjectedParams: Record<number, string> =\n Reflect.getOwnMetadata('inject:params', constructor) || {}\n\n existingInjectedParams[parameterIndex] = token\n\n Reflect.defineMetadata('inject:params', existingInjectedParams, constructor)\n }\n}\n"],"mappings":";;;;AAAA,YAAYA,YAAY;;;ACAxB,OAAO;AA4EA,SAASC,OAAOC,OAAa;AAClC,SAAO,CACLC,QACAC,cACAC,mBAAAA;AAEA,UAAMC,cACJ,OAAOH,WAAW,aAAaA,SAASA,OAAOG;AAEjD,UAAMC,yBACJC,QAAQC,eAAe,iBAAiBH,WAAAA,KAAgB,CAAC;AAE3DC,2BAAuBF,cAAAA,IAAkBH;AAEzCM,YAAQE,eAAe,iBAAiBH,wBAAwBD,WAAAA;EAClE;AACF;AAhBgBL;;;;;;;;;;;;;;;;;;;;;;;;;ADjET,IAAMU,iBAAN,MAAMA;SAAAA;;;;EACXC,YAAqDC,SAAwB;SAAxBA,UAAAA;AACnDC,IAAOC,YAAK;MACVC,KAAK,KAAKH,QAAQG;MAClBC,aAAa,KAAKJ,QAAQI;MAC1BC,kBAAkB;MAClBC,kBAAkB,KAAKN,QAAQI,gBAAgB,eAAe,MAAM;MACpEG,gBAAgB;MAChBC,OAAO,KAAKR,QAAQI,gBAAgB;IACtC,CAAA;EACF;EAEA,MAAMK,OAAOC,OAAcC,SAAsC;AAC/DV,IAAOW,iBAAU,CAACC,UAAAA;AAChBA,YAAMC,SAAS,OAAA;AAEf,UAAIH,SAASI;AAAKF,cAAMG,OAAO,OAAOL,QAAQI,GAAG;AAEjD,UAAIJ,SAASM,MAAM;AACjBJ,cAAMK,QAAQ;UACZC,IAAIR,QAAQM,KAAKE;UACjBC,UAAUT,QAAQM,KAAKI;UACvBC,OAAOX,QAAQM,KAAKK;QACtB,CAAA;MACF;AAEA,UAAIX,SAASY,SAAS;AACpB,cAAM,EAAEC,MAAMC,OAAOC,QAAQC,SAASC,QAAQC,KAAKC,UAAS,IAC1DnB,QAAQY;AAEVV,cAAMkB,WAAW,QAAQ;UACvBH;UACAE;UACAD;UACAF;UACAF;UACAD;UACAE;QACF,CAAA;MACF;AAEAzB,MAAO+B,wBAAiBtB,KAAAA;IAC1B,CAAA;EACF;AACF;;;;;;;;","names":["Sentry","Inject","token","target","_propertyKey","parameterIndex","constructor","existingInjectedParams","Reflect","getOwnMetadata","defineMetadata","SentryNotifier","constructor","options","Sentry","init","dsn","environment","attachStacktrace","tracesSampleRate","maxBreadcrumbs","debug","notify","error","context","withScope","scope","setLevel","env","setTag","user","setUser","id","username","name","email","request","body","query","params","headers","method","url","requestId","setContext","captureException"]}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/infra/adapters/validators/zod/index.ts
22
+ var zod_exports = {};
23
+ __export(zod_exports, {
24
+ default: () => ZodValidator,
25
+ zodValidator: () => zodValidator
26
+ });
27
+ module.exports = __toCommonJS(zod_exports);
28
+
29
+ // src/core/errors/api-common-error.ts
30
+ var ApiErrorEnum = /* @__PURE__ */ function(ApiErrorEnum2) {
31
+ ApiErrorEnum2["DOMAIN"] = "ERR001";
32
+ ApiErrorEnum2["APPLICATION"] = "ERR002";
33
+ ApiErrorEnum2["INFRA"] = "ERR003";
34
+ ApiErrorEnum2["HTTP_CLIENT"] = "ERR004";
35
+ ApiErrorEnum2["VALIDATOR"] = "ERR005";
36
+ return ApiErrorEnum2;
37
+ }({});
38
+
39
+ // src/core/errors/validation-error.ts
40
+ var ValidationError = class extends Error {
41
+ static {
42
+ __name(this, "ValidationError");
43
+ }
44
+ props;
45
+ constructor(errors) {
46
+ super("Validation Error");
47
+ this.props = {
48
+ code: 400,
49
+ errorCode: ApiErrorEnum.VALIDATOR,
50
+ message: "Validation Error",
51
+ occurredAt: /* @__PURE__ */ new Date(),
52
+ errors
53
+ };
54
+ }
55
+ };
56
+
57
+ // src/infra/adapters/validators/zod/zod-map-error.ts
58
+ var ZodMapError = class {
59
+ static {
60
+ __name(this, "ZodMapError");
61
+ }
62
+ static mapCommon(error) {
63
+ return {
64
+ type: error.code,
65
+ path: error.path.join("."),
66
+ property: error.path.pop(),
67
+ propertyType: error.expected,
68
+ receivedValue: error.received,
69
+ message: error.message
70
+ };
71
+ }
72
+ static mapInvalidUnion(error) {
73
+ const [errors] = error.unionErrors.flat().map((err) => err.issues.map((item) => this.mapCommon(item)));
74
+ return errors;
75
+ }
76
+ static mapInvalidType(error) {
77
+ return [
78
+ this.mapCommon(error)
79
+ ];
80
+ }
81
+ static mapErrorsFactory(error) {
82
+ if (error.code === "invalid_union") {
83
+ return this.mapInvalidUnion(error);
84
+ }
85
+ return this.mapInvalidType(error);
86
+ }
87
+ static mapErrors(errors) {
88
+ const standardizedErrors = /* @__PURE__ */ new Map();
89
+ errors.flat().forEach((error) => {
90
+ const keyError = standardizedErrors.get(error.path[0]);
91
+ if (keyError) {
92
+ if (!keyError.propertyErrors) {
93
+ keyError.propertyErrors = [];
94
+ }
95
+ keyError.propertyErrors.push(...this.mapErrorsFactory(error));
96
+ return;
97
+ }
98
+ standardizedErrors.set(error.path[0], {
99
+ location: error.path[0],
100
+ propertyErrors: Array.from([
101
+ ...this.mapErrorsFactory(error)
102
+ ])
103
+ });
104
+ });
105
+ return Array.from(standardizedErrors, ([, arr]) => ({
106
+ ...arr
107
+ })).flat();
108
+ }
109
+ };
110
+
111
+ // src/infra/adapters/validators/zod/zod-validator.ts
112
+ function zodValidator(schema) {
113
+ return async (request) => {
114
+ const validator = new ZodValidator(schema);
115
+ const validatedRequest = await validator.validate(request);
116
+ return validatedRequest;
117
+ };
118
+ }
119
+ __name(zodValidator, "zodValidator");
120
+
121
+ // src/infra/adapters/validators/zod/index.ts
122
+ var ZodValidator = class {
123
+ static {
124
+ __name(this, "ZodValidator");
125
+ }
126
+ zodSchema;
127
+ constructor(zodSchema) {
128
+ this.zodSchema = zodSchema;
129
+ }
130
+ async validate(requestHttp) {
131
+ const errors = [];
132
+ const { data: headersData = {}, error: headersErrors = {} } = requestHttp.headers ? await this.zodSchema.shape.headers.safeParseAsync(requestHttp.headers, {
133
+ path: [
134
+ "headers"
135
+ ]
136
+ }) : {};
137
+ if (headersErrors?.errors) {
138
+ errors.push(headersErrors?.errors);
139
+ }
140
+ const { data: paramsData = {}, error: paramsErrors = {} } = requestHttp.params ? await this.zodSchema.shape.params.safeParseAsync(requestHttp.params, {
141
+ path: [
142
+ "params"
143
+ ]
144
+ }) : {};
145
+ if (paramsErrors?.errors) {
146
+ errors.push(paramsErrors?.errors);
147
+ }
148
+ const { data: queryData = {}, error: queryErrors = {} } = requestHttp.query ? await this.zodSchema.shape.query.safeParseAsync(requestHttp.query, {
149
+ path: [
150
+ "query"
151
+ ]
152
+ }) : {};
153
+ if (queryErrors?.errors) {
154
+ errors.push(queryErrors?.errors);
155
+ }
156
+ const { data: bodyData = {}, error: bodyErrors = {} } = requestHttp.body ? await this.zodSchema.shape.body.safeParseAsync(requestHttp.body, {
157
+ path: [
158
+ "body"
159
+ ]
160
+ }) : {};
161
+ if (bodyErrors?.errors) {
162
+ errors.push(bodyErrors?.errors);
163
+ }
164
+ if (errors.length) {
165
+ throw new ValidationError(ZodMapError.mapErrors(errors));
166
+ }
167
+ return {
168
+ body: bodyData,
169
+ headers: headersData,
170
+ params: paramsData,
171
+ query: queryData
172
+ };
173
+ }
174
+ };
175
+ // Annotate the CommonJS export names for ESM import in node:
176
+ 0 && (module.exports = {
177
+ zodValidator
178
+ });
179
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/infra/adapters/validators/zod/index.ts","../../../../../src/core/errors/api-common-error.ts","../../../../../src/core/errors/validation-error.ts","../../../../../src/infra/adapters/validators/zod/zod-map-error.ts","../../../../../src/infra/adapters/validators/zod/zod-validator.ts"],"sourcesContent":["import { ZodEffects, type ZodError, ZodObject } from 'zod'\n\nimport ValidationError from '../../../../core/errors/validation-error'\nimport IValidationHTTP, { RequestHttp } from '../../../../core/http/validator'\nimport ZodMapError from './zod-map-error'\nimport { zodValidator } from './zod-validator'\n\ntype SchemaDefinition = {\n headers: ZodObject<Record<string, any>>\n params: ZodObject<Record<string, any>>\n query: ZodObject<Record<string, any>>\n body:\n | ZodObject<Record<string, any>>\n | ZodEffects<ZodObject<Record<string, any>>>\n}\n\ntype ZodSchemaObject = ZodObject<SchemaDefinition>\n\nexport default class ZodValidator implements IValidationHTTP {\n constructor(private zodSchema: ZodSchemaObject) {}\n\n async validate<T>(requestHttp: RequestHttp): Promise<T> {\n const errors = []\n\n const {\n data: headersData = {},\n error: headersErrors = {} as ZodError<{ errors: ZodError[] }>,\n } = requestHttp.headers\n ? await this.zodSchema.shape.headers.safeParseAsync(requestHttp.headers, {\n path: ['headers'],\n })\n : {}\n\n if (headersErrors?.errors) {\n errors.push(headersErrors?.errors)\n }\n\n const {\n data: paramsData = {},\n error: paramsErrors = {} as ZodError<{ errors: ZodError[] }>,\n } = requestHttp.params\n ? await this.zodSchema.shape.params.safeParseAsync(requestHttp.params, {\n path: ['params'],\n })\n : {}\n\n if (paramsErrors?.errors) {\n errors.push(paramsErrors?.errors)\n }\n\n const {\n data: queryData = {},\n error: queryErrors = {} as ZodError<{ errors: ZodError[] }>,\n } = requestHttp.query\n ? await this.zodSchema.shape.query.safeParseAsync(requestHttp.query, {\n path: ['query'],\n })\n : {}\n\n if (queryErrors?.errors) {\n errors.push(queryErrors?.errors)\n }\n\n const {\n data: bodyData = {},\n error: bodyErrors = {} as ZodError<{ errors: ZodError[] }>,\n } = requestHttp.body\n ? await this.zodSchema.shape.body.safeParseAsync(requestHttp.body, {\n path: ['body'],\n })\n : {}\n\n if (bodyErrors?.errors) {\n errors.push(bodyErrors?.errors)\n }\n\n if (errors.length) {\n throw new ValidationError(ZodMapError.mapErrors(errors))\n }\n\n return {\n body: bodyData,\n headers: headersData,\n params: paramsData,\n query: queryData,\n } as T\n }\n}\n\nexport { zodValidator }\n","export type PropertiesError = {\n receivedValue?: any\n type: string\n message: string\n property: string | number | undefined\n propertyType?: string\n path?: string\n}\n\nexport type CommonError = {\n location: string\n propertyErrors?: PropertiesError[]\n}\n\nexport type ApiCommonError = {\n code: number\n occurredAt: Date\n message: string\n errorCode: string\n errors?: CommonError[]\n}\n\nexport enum ApiErrorEnum {\n DOMAIN = 'ERR001',\n APPLICATION = 'ERR002',\n INFRA = 'ERR003',\n HTTP_CLIENT = 'ERR004',\n VALIDATOR = 'ERR005',\n}\n","import {\n type ApiCommonError,\n ApiErrorEnum,\n type CommonError,\n} from './api-common-error'\n\nexport default class ValidationError extends Error {\n props: ApiCommonError\n\n constructor(errors: CommonError[]) {\n super('Validation Error')\n this.props = {\n code: 400,\n errorCode: ApiErrorEnum.VALIDATOR,\n message: 'Validation Error',\n occurredAt: new Date(),\n errors,\n }\n }\n}\n","import type { ZodIssue } from 'zod'\n\nimport type {\n CommonError,\n PropertiesError,\n} from '../../../../core/errors/api-common-error'\n\ntype ZodError = ZodIssue & {\n expected: string\n received: string\n}\n\ntype ZodInvalidUnion = ZodError & {\n code: 'invalid_union'\n}\n\nexport default class ZodMapError {\n private static mapCommon(error: ZodError): PropertiesError {\n return {\n type: error.code,\n path: error.path.join('.'),\n property: error.path.pop(),\n propertyType: error.expected,\n receivedValue: error.received,\n message: error.message,\n }\n }\n\n private static mapInvalidUnion(error: ZodInvalidUnion): PropertiesError[] {\n const [errors] = error.unionErrors\n .flat()\n .map((err) => err.issues.map((item: any) => this.mapCommon(item)))\n\n return errors\n }\n\n private static mapInvalidType(error: ZodError): PropertiesError[] {\n return [this.mapCommon(error)]\n }\n\n private static mapErrorsFactory(error: ZodError): PropertiesError[] {\n if (error.code === 'invalid_union') {\n return this.mapInvalidUnion(error)\n }\n\n return this.mapInvalidType(error)\n }\n\n static mapErrors(errors: ZodIssue[][]) {\n const standardizedErrors = new Map<string | number, CommonError>()\n\n errors.flat().forEach((error) => {\n const keyError = standardizedErrors.get(error.path[0])\n\n if (keyError) {\n if (!keyError.propertyErrors) {\n keyError.propertyErrors = []\n }\n\n keyError.propertyErrors.push(\n ...this.mapErrorsFactory(error as ZodError)\n )\n\n return\n }\n\n standardizedErrors.set(error.path[0], {\n location: error.path[0],\n propertyErrors: Array.from([\n ...this.mapErrorsFactory(error as ZodError),\n ]),\n } as CommonError)\n })\n\n return Array.from(standardizedErrors, ([, arr]) => ({\n ...arr,\n })).flat()\n }\n}\n","import { z } from 'zod'\n\nimport { Request } from '../../../../core/http/base-controller'\nimport ZodValidator from './index'\n\nexport type ZodSchema = z.ZodObject<{\n headers: z.ZodObject<Record<string, any>>\n params: z.ZodObject<Record<string, any>>\n query: z.ZodObject<Record<string, any>>\n body:\n | z.ZodObject<Record<string, any>>\n | z.ZodEffects<z.ZodObject<Record<string, any>>>\n}>\n\nexport type MiddlewareFunction = (request: Request) => Promise<Request>\n\nexport function zodValidator(schema: ZodSchema): MiddlewareFunction {\n return async (request: Request): Promise<Request> => {\n const validator = new ZodValidator(schema)\n const validatedRequest = await validator.validate<Request>(request)\n return validatedRequest\n }\n}\n"],"mappings":"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","names":["ApiErrorEnum","ValidationError","Error","props","constructor","errors","code","errorCode","ApiErrorEnum","VALIDATOR","message","occurredAt","Date","ZodMapError","mapCommon","error","type","code","path","join","property","pop","propertyType","expected","receivedValue","received","message","mapInvalidUnion","errors","unionErrors","flat","map","err","issues","item","mapInvalidType","mapErrorsFactory","mapErrors","standardizedErrors","Map","forEach","keyError","get","propertyErrors","push","set","location","Array","from","arr","zodValidator","schema","request","validator","ZodValidator","validatedRequest","validate","ZodValidator","constructor","zodSchema","validate","requestHttp","errors","data","headersData","error","headersErrors","headers","shape","safeParseAsync","path","push","paramsData","paramsErrors","params","queryData","queryErrors","query","bodyData","bodyErrors","body","length","ValidationError","ZodMapError","mapErrors"]}
@@ -0,0 +1,19 @@
1
+ import { ZodObject, ZodEffects } from 'zod';
2
+ import IValidationHTTP, { RequestHttp } from '../../../../core/http/validator.cjs';
3
+ export { zodValidator } from './zod-validator.cjs';
4
+ import '../../../../base-controller-cec5714c.js';
5
+
6
+ type SchemaDefinition = {
7
+ headers: ZodObject<Record<string, any>>;
8
+ params: ZodObject<Record<string, any>>;
9
+ query: ZodObject<Record<string, any>>;
10
+ body: ZodObject<Record<string, any>> | ZodEffects<ZodObject<Record<string, any>>>;
11
+ };
12
+ type ZodSchemaObject = ZodObject<SchemaDefinition>;
13
+ declare class ZodValidator implements IValidationHTTP {
14
+ private zodSchema;
15
+ constructor(zodSchema: ZodSchemaObject);
16
+ validate<T>(requestHttp: RequestHttp): Promise<T>;
17
+ }
18
+
19
+ export { ZodValidator as default };
@@ -0,0 +1,19 @@
1
+ import { ZodObject, ZodEffects } from 'zod';
2
+ import IValidationHTTP, { RequestHttp } from '../../../../core/http/validator.js';
3
+ export { zodValidator } from './zod-validator.js';
4
+ import '../../../../base-controller-cec5714c.js';
5
+
6
+ type SchemaDefinition = {
7
+ headers: ZodObject<Record<string, any>>;
8
+ params: ZodObject<Record<string, any>>;
9
+ query: ZodObject<Record<string, any>>;
10
+ body: ZodObject<Record<string, any>> | ZodEffects<ZodObject<Record<string, any>>>;
11
+ };
12
+ type ZodSchemaObject = ZodObject<SchemaDefinition>;
13
+ declare class ZodValidator implements IValidationHTTP {
14
+ private zodSchema;
15
+ constructor(zodSchema: ZodSchemaObject);
16
+ validate<T>(requestHttp: RequestHttp): Promise<T>;
17
+ }
18
+
19
+ export { ZodValidator as default };
@@ -0,0 +1,154 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // src/core/errors/api-common-error.ts
5
+ var ApiErrorEnum = /* @__PURE__ */ function(ApiErrorEnum2) {
6
+ ApiErrorEnum2["DOMAIN"] = "ERR001";
7
+ ApiErrorEnum2["APPLICATION"] = "ERR002";
8
+ ApiErrorEnum2["INFRA"] = "ERR003";
9
+ ApiErrorEnum2["HTTP_CLIENT"] = "ERR004";
10
+ ApiErrorEnum2["VALIDATOR"] = "ERR005";
11
+ return ApiErrorEnum2;
12
+ }({});
13
+
14
+ // src/core/errors/validation-error.ts
15
+ var ValidationError = class extends Error {
16
+ static {
17
+ __name(this, "ValidationError");
18
+ }
19
+ props;
20
+ constructor(errors) {
21
+ super("Validation Error");
22
+ this.props = {
23
+ code: 400,
24
+ errorCode: ApiErrorEnum.VALIDATOR,
25
+ message: "Validation Error",
26
+ occurredAt: /* @__PURE__ */ new Date(),
27
+ errors
28
+ };
29
+ }
30
+ };
31
+
32
+ // src/infra/adapters/validators/zod/zod-map-error.ts
33
+ var ZodMapError = class {
34
+ static {
35
+ __name(this, "ZodMapError");
36
+ }
37
+ static mapCommon(error) {
38
+ return {
39
+ type: error.code,
40
+ path: error.path.join("."),
41
+ property: error.path.pop(),
42
+ propertyType: error.expected,
43
+ receivedValue: error.received,
44
+ message: error.message
45
+ };
46
+ }
47
+ static mapInvalidUnion(error) {
48
+ const [errors] = error.unionErrors.flat().map((err) => err.issues.map((item) => this.mapCommon(item)));
49
+ return errors;
50
+ }
51
+ static mapInvalidType(error) {
52
+ return [
53
+ this.mapCommon(error)
54
+ ];
55
+ }
56
+ static mapErrorsFactory(error) {
57
+ if (error.code === "invalid_union") {
58
+ return this.mapInvalidUnion(error);
59
+ }
60
+ return this.mapInvalidType(error);
61
+ }
62
+ static mapErrors(errors) {
63
+ const standardizedErrors = /* @__PURE__ */ new Map();
64
+ errors.flat().forEach((error) => {
65
+ const keyError = standardizedErrors.get(error.path[0]);
66
+ if (keyError) {
67
+ if (!keyError.propertyErrors) {
68
+ keyError.propertyErrors = [];
69
+ }
70
+ keyError.propertyErrors.push(...this.mapErrorsFactory(error));
71
+ return;
72
+ }
73
+ standardizedErrors.set(error.path[0], {
74
+ location: error.path[0],
75
+ propertyErrors: Array.from([
76
+ ...this.mapErrorsFactory(error)
77
+ ])
78
+ });
79
+ });
80
+ return Array.from(standardizedErrors, ([, arr]) => ({
81
+ ...arr
82
+ })).flat();
83
+ }
84
+ };
85
+
86
+ // src/infra/adapters/validators/zod/zod-validator.ts
87
+ function zodValidator(schema) {
88
+ return async (request) => {
89
+ const validator = new ZodValidator(schema);
90
+ const validatedRequest = await validator.validate(request);
91
+ return validatedRequest;
92
+ };
93
+ }
94
+ __name(zodValidator, "zodValidator");
95
+
96
+ // src/infra/adapters/validators/zod/index.ts
97
+ var ZodValidator = class {
98
+ static {
99
+ __name(this, "ZodValidator");
100
+ }
101
+ zodSchema;
102
+ constructor(zodSchema) {
103
+ this.zodSchema = zodSchema;
104
+ }
105
+ async validate(requestHttp) {
106
+ const errors = [];
107
+ const { data: headersData = {}, error: headersErrors = {} } = requestHttp.headers ? await this.zodSchema.shape.headers.safeParseAsync(requestHttp.headers, {
108
+ path: [
109
+ "headers"
110
+ ]
111
+ }) : {};
112
+ if (headersErrors?.errors) {
113
+ errors.push(headersErrors?.errors);
114
+ }
115
+ const { data: paramsData = {}, error: paramsErrors = {} } = requestHttp.params ? await this.zodSchema.shape.params.safeParseAsync(requestHttp.params, {
116
+ path: [
117
+ "params"
118
+ ]
119
+ }) : {};
120
+ if (paramsErrors?.errors) {
121
+ errors.push(paramsErrors?.errors);
122
+ }
123
+ const { data: queryData = {}, error: queryErrors = {} } = requestHttp.query ? await this.zodSchema.shape.query.safeParseAsync(requestHttp.query, {
124
+ path: [
125
+ "query"
126
+ ]
127
+ }) : {};
128
+ if (queryErrors?.errors) {
129
+ errors.push(queryErrors?.errors);
130
+ }
131
+ const { data: bodyData = {}, error: bodyErrors = {} } = requestHttp.body ? await this.zodSchema.shape.body.safeParseAsync(requestHttp.body, {
132
+ path: [
133
+ "body"
134
+ ]
135
+ }) : {};
136
+ if (bodyErrors?.errors) {
137
+ errors.push(bodyErrors?.errors);
138
+ }
139
+ if (errors.length) {
140
+ throw new ValidationError(ZodMapError.mapErrors(errors));
141
+ }
142
+ return {
143
+ body: bodyData,
144
+ headers: headersData,
145
+ params: paramsData,
146
+ query: queryData
147
+ };
148
+ }
149
+ };
150
+ export {
151
+ ZodValidator as default,
152
+ zodValidator
153
+ };
154
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/core/errors/api-common-error.ts","../../../../../src/core/errors/validation-error.ts","../../../../../src/infra/adapters/validators/zod/zod-map-error.ts","../../../../../src/infra/adapters/validators/zod/zod-validator.ts","../../../../../src/infra/adapters/validators/zod/index.ts"],"sourcesContent":["export type PropertiesError = {\n receivedValue?: any\n type: string\n message: string\n property: string | number | undefined\n propertyType?: string\n path?: string\n}\n\nexport type CommonError = {\n location: string\n propertyErrors?: PropertiesError[]\n}\n\nexport type ApiCommonError = {\n code: number\n occurredAt: Date\n message: string\n errorCode: string\n errors?: CommonError[]\n}\n\nexport enum ApiErrorEnum {\n DOMAIN = 'ERR001',\n APPLICATION = 'ERR002',\n INFRA = 'ERR003',\n HTTP_CLIENT = 'ERR004',\n VALIDATOR = 'ERR005',\n}\n","import {\n type ApiCommonError,\n ApiErrorEnum,\n type CommonError,\n} from './api-common-error'\n\nexport default class ValidationError extends Error {\n props: ApiCommonError\n\n constructor(errors: CommonError[]) {\n super('Validation Error')\n this.props = {\n code: 400,\n errorCode: ApiErrorEnum.VALIDATOR,\n message: 'Validation Error',\n occurredAt: new Date(),\n errors,\n }\n }\n}\n","import type { ZodIssue } from 'zod'\n\nimport type {\n CommonError,\n PropertiesError,\n} from '../../../../core/errors/api-common-error'\n\ntype ZodError = ZodIssue & {\n expected: string\n received: string\n}\n\ntype ZodInvalidUnion = ZodError & {\n code: 'invalid_union'\n}\n\nexport default class ZodMapError {\n private static mapCommon(error: ZodError): PropertiesError {\n return {\n type: error.code,\n path: error.path.join('.'),\n property: error.path.pop(),\n propertyType: error.expected,\n receivedValue: error.received,\n message: error.message,\n }\n }\n\n private static mapInvalidUnion(error: ZodInvalidUnion): PropertiesError[] {\n const [errors] = error.unionErrors\n .flat()\n .map((err) => err.issues.map((item: any) => this.mapCommon(item)))\n\n return errors\n }\n\n private static mapInvalidType(error: ZodError): PropertiesError[] {\n return [this.mapCommon(error)]\n }\n\n private static mapErrorsFactory(error: ZodError): PropertiesError[] {\n if (error.code === 'invalid_union') {\n return this.mapInvalidUnion(error)\n }\n\n return this.mapInvalidType(error)\n }\n\n static mapErrors(errors: ZodIssue[][]) {\n const standardizedErrors = new Map<string | number, CommonError>()\n\n errors.flat().forEach((error) => {\n const keyError = standardizedErrors.get(error.path[0])\n\n if (keyError) {\n if (!keyError.propertyErrors) {\n keyError.propertyErrors = []\n }\n\n keyError.propertyErrors.push(\n ...this.mapErrorsFactory(error as ZodError)\n )\n\n return\n }\n\n standardizedErrors.set(error.path[0], {\n location: error.path[0],\n propertyErrors: Array.from([\n ...this.mapErrorsFactory(error as ZodError),\n ]),\n } as CommonError)\n })\n\n return Array.from(standardizedErrors, ([, arr]) => ({\n ...arr,\n })).flat()\n }\n}\n","import { z } from 'zod'\n\nimport { Request } from '../../../../core/http/base-controller'\nimport ZodValidator from './index'\n\nexport type ZodSchema = z.ZodObject<{\n headers: z.ZodObject<Record<string, any>>\n params: z.ZodObject<Record<string, any>>\n query: z.ZodObject<Record<string, any>>\n body:\n | z.ZodObject<Record<string, any>>\n | z.ZodEffects<z.ZodObject<Record<string, any>>>\n}>\n\nexport type MiddlewareFunction = (request: Request) => Promise<Request>\n\nexport function zodValidator(schema: ZodSchema): MiddlewareFunction {\n return async (request: Request): Promise<Request> => {\n const validator = new ZodValidator(schema)\n const validatedRequest = await validator.validate<Request>(request)\n return validatedRequest\n }\n}\n","import { ZodEffects, type ZodError, ZodObject } from 'zod'\n\nimport ValidationError from '../../../../core/errors/validation-error'\nimport IValidationHTTP, { RequestHttp } from '../../../../core/http/validator'\nimport ZodMapError from './zod-map-error'\nimport { zodValidator } from './zod-validator'\n\ntype SchemaDefinition = {\n headers: ZodObject<Record<string, any>>\n params: ZodObject<Record<string, any>>\n query: ZodObject<Record<string, any>>\n body:\n | ZodObject<Record<string, any>>\n | ZodEffects<ZodObject<Record<string, any>>>\n}\n\ntype ZodSchemaObject = ZodObject<SchemaDefinition>\n\nexport default class ZodValidator implements IValidationHTTP {\n constructor(private zodSchema: ZodSchemaObject) {}\n\n async validate<T>(requestHttp: RequestHttp): Promise<T> {\n const errors = []\n\n const {\n data: headersData = {},\n error: headersErrors = {} as ZodError<{ errors: ZodError[] }>,\n } = requestHttp.headers\n ? await this.zodSchema.shape.headers.safeParseAsync(requestHttp.headers, {\n path: ['headers'],\n })\n : {}\n\n if (headersErrors?.errors) {\n errors.push(headersErrors?.errors)\n }\n\n const {\n data: paramsData = {},\n error: paramsErrors = {} as ZodError<{ errors: ZodError[] }>,\n } = requestHttp.params\n ? await this.zodSchema.shape.params.safeParseAsync(requestHttp.params, {\n path: ['params'],\n })\n : {}\n\n if (paramsErrors?.errors) {\n errors.push(paramsErrors?.errors)\n }\n\n const {\n data: queryData = {},\n error: queryErrors = {} as ZodError<{ errors: ZodError[] }>,\n } = requestHttp.query\n ? await this.zodSchema.shape.query.safeParseAsync(requestHttp.query, {\n path: ['query'],\n })\n : {}\n\n if (queryErrors?.errors) {\n errors.push(queryErrors?.errors)\n }\n\n const {\n data: bodyData = {},\n error: bodyErrors = {} as ZodError<{ errors: ZodError[] }>,\n } = requestHttp.body\n ? await this.zodSchema.shape.body.safeParseAsync(requestHttp.body, {\n path: ['body'],\n })\n : {}\n\n if (bodyErrors?.errors) {\n errors.push(bodyErrors?.errors)\n }\n\n if (errors.length) {\n throw new ValidationError(ZodMapError.mapErrors(errors))\n }\n\n return {\n body: bodyData,\n headers: headersData,\n params: paramsData,\n query: queryData,\n } as T\n }\n}\n\nexport { zodValidator }\n"],"mappings":"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","names":["ApiErrorEnum","ValidationError","Error","props","constructor","errors","code","errorCode","ApiErrorEnum","VALIDATOR","message","occurredAt","Date","ZodMapError","mapCommon","error","type","code","path","join","property","pop","propertyType","expected","receivedValue","received","message","mapInvalidUnion","errors","unionErrors","flat","map","err","issues","item","mapInvalidType","mapErrorsFactory","mapErrors","standardizedErrors","Map","forEach","keyError","get","propertyErrors","push","set","location","Array","from","arr","zodValidator","schema","request","validator","ZodValidator","validatedRequest","validate","ZodValidator","constructor","zodSchema","validate","requestHttp","errors","data","headersData","error","headersErrors","headers","shape","safeParseAsync","path","push","paramsData","paramsErrors","params","queryData","queryErrors","query","bodyData","bodyErrors","body","length","ValidationError","ZodMapError","mapErrors"]}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // src/infra/adapters/validators/zod/zod-map-error.ts
22
+ var zod_map_error_exports = {};
23
+ __export(zod_map_error_exports, {
24
+ default: () => ZodMapError
25
+ });
26
+ module.exports = __toCommonJS(zod_map_error_exports);
27
+ var ZodMapError = class {
28
+ static {
29
+ __name(this, "ZodMapError");
30
+ }
31
+ static mapCommon(error) {
32
+ return {
33
+ type: error.code,
34
+ path: error.path.join("."),
35
+ property: error.path.pop(),
36
+ propertyType: error.expected,
37
+ receivedValue: error.received,
38
+ message: error.message
39
+ };
40
+ }
41
+ static mapInvalidUnion(error) {
42
+ const [errors] = error.unionErrors.flat().map((err) => err.issues.map((item) => this.mapCommon(item)));
43
+ return errors;
44
+ }
45
+ static mapInvalidType(error) {
46
+ return [
47
+ this.mapCommon(error)
48
+ ];
49
+ }
50
+ static mapErrorsFactory(error) {
51
+ if (error.code === "invalid_union") {
52
+ return this.mapInvalidUnion(error);
53
+ }
54
+ return this.mapInvalidType(error);
55
+ }
56
+ static mapErrors(errors) {
57
+ const standardizedErrors = /* @__PURE__ */ new Map();
58
+ errors.flat().forEach((error) => {
59
+ const keyError = standardizedErrors.get(error.path[0]);
60
+ if (keyError) {
61
+ if (!keyError.propertyErrors) {
62
+ keyError.propertyErrors = [];
63
+ }
64
+ keyError.propertyErrors.push(...this.mapErrorsFactory(error));
65
+ return;
66
+ }
67
+ standardizedErrors.set(error.path[0], {
68
+ location: error.path[0],
69
+ propertyErrors: Array.from([
70
+ ...this.mapErrorsFactory(error)
71
+ ])
72
+ });
73
+ });
74
+ return Array.from(standardizedErrors, ([, arr]) => ({
75
+ ...arr
76
+ })).flat();
77
+ }
78
+ };
79
+ //# sourceMappingURL=zod-map-error.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/infra/adapters/validators/zod/zod-map-error.ts"],"sourcesContent":["import type { ZodIssue } from 'zod'\n\nimport type {\n CommonError,\n PropertiesError,\n} from '../../../../core/errors/api-common-error'\n\ntype ZodError = ZodIssue & {\n expected: string\n received: string\n}\n\ntype ZodInvalidUnion = ZodError & {\n code: 'invalid_union'\n}\n\nexport default class ZodMapError {\n private static mapCommon(error: ZodError): PropertiesError {\n return {\n type: error.code,\n path: error.path.join('.'),\n property: error.path.pop(),\n propertyType: error.expected,\n receivedValue: error.received,\n message: error.message,\n }\n }\n\n private static mapInvalidUnion(error: ZodInvalidUnion): PropertiesError[] {\n const [errors] = error.unionErrors\n .flat()\n .map((err) => err.issues.map((item: any) => this.mapCommon(item)))\n\n return errors\n }\n\n private static mapInvalidType(error: ZodError): PropertiesError[] {\n return [this.mapCommon(error)]\n }\n\n private static mapErrorsFactory(error: ZodError): PropertiesError[] {\n if (error.code === 'invalid_union') {\n return this.mapInvalidUnion(error)\n }\n\n return this.mapInvalidType(error)\n }\n\n static mapErrors(errors: ZodIssue[][]) {\n const standardizedErrors = new Map<string | number, CommonError>()\n\n errors.flat().forEach((error) => {\n const keyError = standardizedErrors.get(error.path[0])\n\n if (keyError) {\n if (!keyError.propertyErrors) {\n keyError.propertyErrors = []\n }\n\n keyError.propertyErrors.push(\n ...this.mapErrorsFactory(error as ZodError)\n )\n\n return\n }\n\n standardizedErrors.set(error.path[0], {\n location: error.path[0],\n propertyErrors: Array.from([\n ...this.mapErrorsFactory(error as ZodError),\n ]),\n } as CommonError)\n })\n\n return Array.from(standardizedErrors, ([, arr]) => ({\n ...arr,\n })).flat()\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAgBA;;;;;AAAA,IAAqBA,cAArB,MAAqBA;EAArB,OAAqBA;;;EACnB,OAAeC,UAAUC,OAAkC;AACzD,WAAO;MACLC,MAAMD,MAAME;MACZC,MAAMH,MAAMG,KAAKC,KAAK,GAAA;MACtBC,UAAUL,MAAMG,KAAKG,IAAG;MACxBC,cAAcP,MAAMQ;MACpBC,eAAeT,MAAMU;MACrBC,SAASX,MAAMW;IACjB;EACF;EAEA,OAAeC,gBAAgBZ,OAA2C;AACxE,UAAM,CAACa,MAAAA,IAAUb,MAAMc,YACpBC,KAAI,EACJC,IAAI,CAACC,QAAQA,IAAIC,OAAOF,IAAI,CAACG,SAAc,KAAKpB,UAAUoB,IAAAA,CAAAA,CAAAA;AAE7D,WAAON;EACT;EAEA,OAAeO,eAAepB,OAAoC;AAChE,WAAO;MAAC,KAAKD,UAAUC,KAAAA;;EACzB;EAEA,OAAeqB,iBAAiBrB,OAAoC;AAClE,QAAIA,MAAME,SAAS,iBAAiB;AAClC,aAAO,KAAKU,gBAAgBZ,KAAAA;IAC9B;AAEA,WAAO,KAAKoB,eAAepB,KAAAA;EAC7B;EAEA,OAAOsB,UAAUT,QAAsB;AACrC,UAAMU,qBAAqB,oBAAIC,IAAAA;AAE/BX,WAAOE,KAAI,EAAGU,QAAQ,CAACzB,UAAAA;AACrB,YAAM0B,WAAWH,mBAAmBI,IAAI3B,MAAMG,KAAK,CAAA,CAAE;AAErD,UAAIuB,UAAU;AACZ,YAAI,CAACA,SAASE,gBAAgB;AAC5BF,mBAASE,iBAAiB,CAAA;QAC5B;AAEAF,iBAASE,eAAeC,KAAI,GACvB,KAAKR,iBAAiBrB,KAAAA,CAAAA;AAG3B;MACF;AAEAuB,yBAAmBO,IAAI9B,MAAMG,KAAK,CAAA,GAAI;QACpC4B,UAAU/B,MAAMG,KAAK,CAAA;QACrByB,gBAAgBI,MAAMC,KAAK;aACtB,KAAKZ,iBAAiBrB,KAAAA;SAC1B;MACH,CAAA;IACF,CAAA;AAEA,WAAOgC,MAAMC,KAAKV,oBAAoB,CAAC,CAAA,EAAGW,GAAAA,OAAU;MAClD,GAAGA;IACL,EAAA,EAAInB,KAAI;EACV;AACF;","names":["ZodMapError","mapCommon","error","type","code","path","join","property","pop","propertyType","expected","receivedValue","received","message","mapInvalidUnion","errors","unionErrors","flat","map","err","issues","item","mapInvalidType","mapErrorsFactory","mapErrors","standardizedErrors","Map","forEach","keyError","get","propertyErrors","push","set","location","Array","from","arr"]}
@@ -0,0 +1,15 @@
1
+ import { ZodIssue } from 'zod';
2
+ import { PropertiesError } from '../../../../core/errors/api-common-error.cjs';
3
+
4
+ declare class ZodMapError {
5
+ private static mapCommon;
6
+ private static mapInvalidUnion;
7
+ private static mapInvalidType;
8
+ private static mapErrorsFactory;
9
+ static mapErrors(errors: ZodIssue[][]): {
10
+ location: string;
11
+ propertyErrors?: PropertiesError[];
12
+ }[];
13
+ }
14
+
15
+ export { ZodMapError as default };
@@ -0,0 +1,15 @@
1
+ import { ZodIssue } from 'zod';
2
+ import { PropertiesError } from '../../../../core/errors/api-common-error.js';
3
+
4
+ declare class ZodMapError {
5
+ private static mapCommon;
6
+ private static mapInvalidUnion;
7
+ private static mapInvalidType;
8
+ private static mapErrorsFactory;
9
+ static mapErrors(errors: ZodIssue[][]): {
10
+ location: string;
11
+ propertyErrors?: PropertiesError[];
12
+ }[];
13
+ }
14
+
15
+ export { ZodMapError as default };