@imolko/ultra-v8n 1.0.1-beta

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 (162) hide show
  1. package/README.md +1 -0
  2. package/dist-browser/errors/builtin-codes.d.ts +51 -0
  3. package/dist-browser/errors/builtin-codes.d.ts.map +1 -0
  4. package/dist-browser/errors/builtin-codes.js +60 -0
  5. package/dist-browser/errors/builtin-codes.js.map +1 -0
  6. package/dist-browser/errors/builtin.errors.d.ts +243 -0
  7. package/dist-browser/errors/builtin.errors.d.ts.map +1 -0
  8. package/dist-browser/errors/builtin.errors.js +106 -0
  9. package/dist-browser/errors/builtin.errors.js.map +1 -0
  10. package/dist-browser/errors/index.d.ts +11 -0
  11. package/dist-browser/errors/index.d.ts.map +1 -0
  12. package/dist-browser/errors/index.js +11 -0
  13. package/dist-browser/errors/index.js.map +1 -0
  14. package/dist-browser/errors/parse-error.decorator.d.ts +19 -0
  15. package/dist-browser/errors/parse-error.decorator.d.ts.map +1 -0
  16. package/dist-browser/errors/parse-error.decorator.js +45 -0
  17. package/dist-browser/errors/parse-error.decorator.js.map +1 -0
  18. package/dist-browser/errors/v8n-built-in-parse-error-class-factory.d.ts +15 -0
  19. package/dist-browser/errors/v8n-built-in-parse-error-class-factory.d.ts.map +1 -0
  20. package/dist-browser/errors/v8n-built-in-parse-error-class-factory.js +5 -0
  21. package/dist-browser/errors/v8n-built-in-parse-error-class-factory.js.map +1 -0
  22. package/dist-browser/errors/v8n-custom-parse-error-class-factory.d.ts +15 -0
  23. package/dist-browser/errors/v8n-custom-parse-error-class-factory.d.ts.map +1 -0
  24. package/dist-browser/errors/v8n-custom-parse-error-class-factory.js +5 -0
  25. package/dist-browser/errors/v8n-custom-parse-error-class-factory.js.map +1 -0
  26. package/dist-browser/errors/v8n-issue-integration.d.ts +7 -0
  27. package/dist-browser/errors/v8n-issue-integration.d.ts.map +1 -0
  28. package/dist-browser/errors/v8n-issue-integration.js +2 -0
  29. package/dist-browser/errors/v8n-issue-integration.js.map +1 -0
  30. package/dist-browser/errors/v8n-issue-params.d.ts +7 -0
  31. package/dist-browser/errors/v8n-issue-params.d.ts.map +1 -0
  32. package/dist-browser/errors/v8n-issue-params.js +2 -0
  33. package/dist-browser/errors/v8n-issue-params.js.map +1 -0
  34. package/dist-browser/errors/v8n-issue.d.ts +16 -0
  35. package/dist-browser/errors/v8n-issue.d.ts.map +1 -0
  36. package/dist-browser/errors/v8n-issue.js +2 -0
  37. package/dist-browser/errors/v8n-issue.js.map +1 -0
  38. package/dist-browser/errors/v8n-parse-base-error.d.ts +9 -0
  39. package/dist-browser/errors/v8n-parse-base-error.d.ts.map +1 -0
  40. package/dist-browser/errors/v8n-parse-base-error.js +28 -0
  41. package/dist-browser/errors/v8n-parse-base-error.js.map +1 -0
  42. package/dist-browser/errors/v8n-parser-error-class-factory.d.ts +35 -0
  43. package/dist-browser/errors/v8n-parser-error-class-factory.d.ts.map +1 -0
  44. package/dist-browser/errors/v8n-parser-error-class-factory.js +48 -0
  45. package/dist-browser/errors/v8n-parser-error-class-factory.js.map +1 -0
  46. package/dist-browser/index.d.ts +7 -0
  47. package/dist-browser/index.d.ts.map +1 -0
  48. package/dist-browser/index.js +7 -0
  49. package/dist-browser/index.js.map +1 -0
  50. package/dist-browser/utils/convert-zod-issue-to-v8n-error.d.ts +11 -0
  51. package/dist-browser/utils/convert-zod-issue-to-v8n-error.d.ts.map +1 -0
  52. package/dist-browser/utils/convert-zod-issue-to-v8n-error.js +89 -0
  53. package/dist-browser/utils/convert-zod-issue-to-v8n-error.js.map +1 -0
  54. package/dist-browser/utils/index.d.ts +3 -0
  55. package/dist-browser/utils/index.d.ts.map +1 -0
  56. package/dist-browser/utils/index.js +3 -0
  57. package/dist-browser/utils/index.js.map +1 -0
  58. package/dist-browser/utils/is-object-json.d.ts +8 -0
  59. package/dist-browser/utils/is-object-json.d.ts.map +1 -0
  60. package/dist-browser/utils/is-object-json.js +16 -0
  61. package/dist-browser/utils/is-object-json.js.map +1 -0
  62. package/dist-browser/utils/message-template.d.ts +30 -0
  63. package/dist-browser/utils/message-template.d.ts.map +1 -0
  64. package/dist-browser/utils/message-template.js +55 -0
  65. package/dist-browser/utils/message-template.js.map +1 -0
  66. package/dist-browser/utils/zod-switch.d.ts +11 -0
  67. package/dist-browser/utils/zod-switch.d.ts.map +1 -0
  68. package/dist-browser/utils/zod-switch.js +45 -0
  69. package/dist-browser/utils/zod-switch.js.map +1 -0
  70. package/dist-browser/utils/zod-wrapper.d.ts +15 -0
  71. package/dist-browser/utils/zod-wrapper.d.ts.map +1 -0
  72. package/dist-browser/utils/zod-wrapper.js +62 -0
  73. package/dist-browser/utils/zod-wrapper.js.map +1 -0
  74. package/dist-browser/validatable-fn.type.d.ts +10 -0
  75. package/dist-browser/validatable-fn.type.d.ts.map +1 -0
  76. package/dist-browser/validatable-fn.type.js +2 -0
  77. package/dist-browser/validatable-fn.type.js.map +1 -0
  78. package/dist-browser/validate-zod-schema.d.ts +25 -0
  79. package/dist-browser/validate-zod-schema.d.ts.map +1 -0
  80. package/dist-browser/validate-zod-schema.js +39 -0
  81. package/dist-browser/validate-zod-schema.js.map +1 -0
  82. package/dist-node/errors/builtin-codes.d.ts +51 -0
  83. package/dist-node/errors/builtin-codes.d.ts.map +1 -0
  84. package/dist-node/errors/builtin-codes.js +65 -0
  85. package/dist-node/errors/builtin-codes.js.map +1 -0
  86. package/dist-node/errors/builtin.errors.d.ts +243 -0
  87. package/dist-node/errors/builtin.errors.d.ts.map +1 -0
  88. package/dist-node/errors/builtin.errors.js +109 -0
  89. package/dist-node/errors/builtin.errors.js.map +1 -0
  90. package/dist-node/errors/index.d.ts +11 -0
  91. package/dist-node/errors/index.d.ts.map +1 -0
  92. package/dist-node/errors/index.js +27 -0
  93. package/dist-node/errors/index.js.map +1 -0
  94. package/dist-node/errors/parse-error.decorator.d.ts +19 -0
  95. package/dist-node/errors/parse-error.decorator.d.ts.map +1 -0
  96. package/dist-node/errors/parse-error.decorator.js +51 -0
  97. package/dist-node/errors/parse-error.decorator.js.map +1 -0
  98. package/dist-node/errors/v8n-built-in-parse-error-class-factory.d.ts +15 -0
  99. package/dist-node/errors/v8n-built-in-parse-error-class-factory.d.ts.map +1 -0
  100. package/dist-node/errors/v8n-built-in-parse-error-class-factory.js +9 -0
  101. package/dist-node/errors/v8n-built-in-parse-error-class-factory.js.map +1 -0
  102. package/dist-node/errors/v8n-custom-parse-error-class-factory.d.ts +15 -0
  103. package/dist-node/errors/v8n-custom-parse-error-class-factory.d.ts.map +1 -0
  104. package/dist-node/errors/v8n-custom-parse-error-class-factory.js +9 -0
  105. package/dist-node/errors/v8n-custom-parse-error-class-factory.js.map +1 -0
  106. package/dist-node/errors/v8n-issue-integration.d.ts +7 -0
  107. package/dist-node/errors/v8n-issue-integration.d.ts.map +1 -0
  108. package/dist-node/errors/v8n-issue-integration.js +3 -0
  109. package/dist-node/errors/v8n-issue-integration.js.map +1 -0
  110. package/dist-node/errors/v8n-issue-params.d.ts +7 -0
  111. package/dist-node/errors/v8n-issue-params.d.ts.map +1 -0
  112. package/dist-node/errors/v8n-issue-params.js +3 -0
  113. package/dist-node/errors/v8n-issue-params.js.map +1 -0
  114. package/dist-node/errors/v8n-issue.d.ts +16 -0
  115. package/dist-node/errors/v8n-issue.d.ts.map +1 -0
  116. package/dist-node/errors/v8n-issue.js +3 -0
  117. package/dist-node/errors/v8n-issue.js.map +1 -0
  118. package/dist-node/errors/v8n-parse-base-error.d.ts +9 -0
  119. package/dist-node/errors/v8n-parse-base-error.d.ts.map +1 -0
  120. package/dist-node/errors/v8n-parse-base-error.js +32 -0
  121. package/dist-node/errors/v8n-parse-base-error.js.map +1 -0
  122. package/dist-node/errors/v8n-parser-error-class-factory.d.ts +35 -0
  123. package/dist-node/errors/v8n-parser-error-class-factory.d.ts.map +1 -0
  124. package/dist-node/errors/v8n-parser-error-class-factory.js +52 -0
  125. package/dist-node/errors/v8n-parser-error-class-factory.js.map +1 -0
  126. package/dist-node/index.d.ts +7 -0
  127. package/dist-node/index.d.ts.map +1 -0
  128. package/dist-node/index.js +23 -0
  129. package/dist-node/index.js.map +1 -0
  130. package/dist-node/utils/convert-zod-issue-to-v8n-error.d.ts +11 -0
  131. package/dist-node/utils/convert-zod-issue-to-v8n-error.d.ts.map +1 -0
  132. package/dist-node/utils/convert-zod-issue-to-v8n-error.js +93 -0
  133. package/dist-node/utils/convert-zod-issue-to-v8n-error.js.map +1 -0
  134. package/dist-node/utils/index.d.ts +3 -0
  135. package/dist-node/utils/index.d.ts.map +1 -0
  136. package/dist-node/utils/index.js +19 -0
  137. package/dist-node/utils/index.js.map +1 -0
  138. package/dist-node/utils/is-object-json.d.ts +8 -0
  139. package/dist-node/utils/is-object-json.d.ts.map +1 -0
  140. package/dist-node/utils/is-object-json.js +20 -0
  141. package/dist-node/utils/is-object-json.js.map +1 -0
  142. package/dist-node/utils/message-template.d.ts +30 -0
  143. package/dist-node/utils/message-template.d.ts.map +1 -0
  144. package/dist-node/utils/message-template.js +59 -0
  145. package/dist-node/utils/message-template.js.map +1 -0
  146. package/dist-node/utils/zod-switch.d.ts +11 -0
  147. package/dist-node/utils/zod-switch.d.ts.map +1 -0
  148. package/dist-node/utils/zod-switch.js +49 -0
  149. package/dist-node/utils/zod-switch.js.map +1 -0
  150. package/dist-node/utils/zod-wrapper.d.ts +15 -0
  151. package/dist-node/utils/zod-wrapper.d.ts.map +1 -0
  152. package/dist-node/utils/zod-wrapper.js +66 -0
  153. package/dist-node/utils/zod-wrapper.js.map +1 -0
  154. package/dist-node/validatable-fn.type.d.ts +10 -0
  155. package/dist-node/validatable-fn.type.d.ts.map +1 -0
  156. package/dist-node/validatable-fn.type.js +3 -0
  157. package/dist-node/validatable-fn.type.js.map +1 -0
  158. package/dist-node/validate-zod-schema.d.ts +25 -0
  159. package/dist-node/validate-zod-schema.d.ts.map +1 -0
  160. package/dist-node/validate-zod-schema.js +43 -0
  161. package/dist-node/validate-zod-schema.js.map +1 -0
  162. package/package.json +51 -0
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertZodIssueToV8nError = void 0;
4
+ const is_object_json_1 = require("./is-object-json");
5
+ const errors_1 = require("../errors");
6
+ /**
7
+ * Dado un string que contiene un json con un error custom,
8
+ * conviert el zodIssue en el custom Error
9
+ * cuyo code coincide con el que está en el string
10
+ *
11
+ * Se utiliza para extender un message que contiene un error custom
12
+ * y expresarlo como un Error Custom
13
+ *
14
+ * El mecahismo para manejar los errores custom, es colocar
15
+ * la serialización de las propiedades en la propiedad messag
16
+ * del zodIssue.
17
+ *
18
+ * La serialización se realiza con el método v8n() dentro de los errores custom.
19
+ *
20
+ * @param errorSerialized string con el error serializado
21
+ * @param originalPath Path que se encontraba en el error original
22
+ * @param originalExtended Parámetros extendidos en el error original
23
+ * @returns
24
+ */
25
+ const handleCustomError = (errorSerialized, originalPath, originalExtended) => {
26
+ const parsedIssue = JSON.parse(errorSerialized);
27
+ if (!parsedIssue.code) {
28
+ throw new Error('code is required in the parsed JSON');
29
+ }
30
+ /**
31
+ * Buscamos el constructor para el código de error,
32
+ * en la lista de errores custom registrados con el decorador @V8nCustomParseError
33
+ */
34
+ const internalConstructor = (0, errors_1.getInternalErrorFromCode)(parsedIssue.code);
35
+ if (!internalConstructor) {
36
+ throw new Error(`Internal error ${parsedIssue.code} not found`);
37
+ }
38
+ const internalIssue = {
39
+ message: parsedIssue.message,
40
+ path: [...originalPath, ...(parsedIssue.path || [])],
41
+ stack: new Error().stack || '',
42
+ extended: { ...parsedIssue.extended, ...originalExtended },
43
+ };
44
+ /** Creamos el error con los parámetros suministrados */
45
+ return new internalConstructor(internalIssue);
46
+ };
47
+ /**
48
+ * Convierte un issue de zod en un error de Validación.
49
+ *
50
+ * @param code código del error built-in
51
+ * @param message message que se quiere colocar al error
52
+ * @param path path del error
53
+ * @param extended parámetros extendidos para el error
54
+ * @returns Un error de v8n
55
+ */
56
+ const handleBuiltInError = (code, message, path, extended) => {
57
+ const internalCode = errors_1.ZodIssueToV8nError.get(code);
58
+ if (!internalCode) {
59
+ throw new Error(`Internal code ${code} not found`);
60
+ }
61
+ const internalConstructor = (0, errors_1.getInternalErrorFromCode)(internalCode);
62
+ if (!internalConstructor) {
63
+ throw new Error(`Internal error ${internalCode} not found`);
64
+ }
65
+ const internalIssue = {
66
+ message: message,
67
+ path: [...path],
68
+ stack: new Error().stack || '',
69
+ extended: { ...extended },
70
+ };
71
+ /** Creamos el error con los parámetros suministrados */
72
+ return new internalConstructor(internalIssue);
73
+ };
74
+ /**
75
+ * Convierte un zodIssue en un error de V8n,
76
+ * apto para ser manejado en validations
77
+ *
78
+ * @param iss
79
+ * @returns
80
+ */
81
+ const convertZodIssueToV8nError = (iss) => {
82
+ /** Extraemos las propiedades */
83
+ const { code: code, message: message, path: path,
84
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
85
+ fatal: fatal, ...extended } = iss;
86
+ /** Verificamos si el mensaje contiene un error serializado */
87
+ if ((0, is_object_json_1.isObjectJSON)(message)) {
88
+ return handleCustomError(message, path, extended);
89
+ }
90
+ return handleBuiltInError(code, message, path, extended);
91
+ };
92
+ exports.convertZodIssueToV8nError = convertZodIssueToV8nError;
93
+ //# sourceMappingURL=convert-zod-issue-to-v8n-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-zod-issue-to-v8n-error.js","sourceRoot":"","sources":["../../src/utils/convert-zod-issue-to-v8n-error.ts"],"names":[],"mappings":";;;AACA,qDAAgD;AAEhD,sCAKmB;AAGnB;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,iBAAiB,GAAG,CACxB,eAAuB,EACvB,YAAiC,EACjC,gBAAqC,EACb,EAAE;IAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAmC,CAAC;IAClF,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD;;;OAGG;IACH,MAAM,mBAAmB,GAAG,IAAA,iCAAwB,EAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACvE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,kBAAkB,WAAW,CAAC,IAAI,YAAY,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,aAAa,GAAmB;QACpC,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,IAAI,EAAE,CAAC,GAAG,YAAY,EAAE,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACpD,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE;QAC9B,QAAQ,EAAE,EAAE,GAAG,WAAW,CAAC,QAAQ,EAAE,GAAG,gBAAgB,EAAE;KAC3D,CAAC;IACF,wDAAwD;IACxD,OAAO,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,kBAAkB,GAAG,CACzB,IAAY,EACZ,OAAe,EACf,IAAyB,EACzB,QAA6B,EACL,EAAE;IAC1B,MAAM,YAAY,GAAG,2BAAkB,CAAC,GAAG,CAAC,IAAW,CAAC,CAAC;IACzD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,YAAY,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,mBAAmB,GAAG,IAAA,iCAAwB,EAAC,YAAY,CAAC,CAAC;IACnE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,kBAAkB,YAAY,YAAY,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,aAAa,GAAmB;QACpC,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QACf,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE;QAC9B,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE;KAC1B,CAAC;IACF,wDAAwD;IACxD,OAAO,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF;;;;;;GAMG;AACI,MAAM,yBAAyB,GAAG,CAAC,GAAa,EAA0B,EAAE;IACjF,gCAAgC;IAChC,MAAM,EACJ,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI;IACV,6DAA6D;IAC7D,KAAK,EAAE,KAAK,EACZ,GAAG,QAAQ,EACZ,GAAG,GAAG,CAAC;IACR,8DAA8D;IAC9D,IAAI,IAAA,6BAAY,EAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAA;AAC1D,CAAC,CAAA;AAfY,QAAA,yBAAyB,6BAerC"}
@@ -0,0 +1,3 @@
1
+ export * from './zod-wrapper';
2
+ export * from './zod-switch';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./zod-wrapper"), exports);
18
+ __exportStar(require("./zod-switch"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,+CAA6B"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Verifica si un string, contiene un objeto serializado como json.
3
+ *
4
+ * @param candidate valor que potencialmente contiene un objeto en json
5
+ * @returns true si el candidate es un objeto serializado como json
6
+ */
7
+ export declare const isObjectJSON: (candidate: string) => boolean;
8
+ //# sourceMappingURL=is-object-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-object-json.d.ts","sourceRoot":"","sources":["../../src/utils/is-object-json.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,YAAY,cAAe,MAAM,KAAG,OAOhD,CAAA"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isObjectJSON = void 0;
4
+ /**
5
+ * Verifica si un string, contiene un objeto serializado como json.
6
+ *
7
+ * @param candidate valor que potencialmente contiene un objeto en json
8
+ * @returns true si el candidate es un objeto serializado como json
9
+ */
10
+ const isObjectJSON = (candidate) => {
11
+ try {
12
+ const parsed = JSON.parse(candidate);
13
+ return typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed);
14
+ }
15
+ catch (e) {
16
+ return false;
17
+ }
18
+ };
19
+ exports.isObjectJSON = isObjectJSON;
20
+ //# sourceMappingURL=is-object-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-object-json.js","sourceRoot":"","sources":["../../src/utils/is-object-json.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACI,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAW,EAAE;IACzD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAA;AAPY,QAAA,YAAY,gBAOxB"}
@@ -0,0 +1,30 @@
1
+ export declare class V8nMessageTemplate {
2
+ private static readonly regex;
3
+ /**
4
+ * Interpolamos el template con los valores pasados.
5
+ * En caso de que no se encuentre un valor para una llave, se deja el valor original.
6
+ * Para controlar la forma de escape del signo $, solo se considera el signo $ que aparece delante de ${}.
7
+ * En la cercanía de una expresión ${}, cada par de $ que aparecen delante son sustituidos por un solo $.
8
+ * Y si la cantidad de $ es impar, se interpola la expresión ${} y se reduce la cantidad de $ a la mitad.
9
+ * Si la cantidad de $ es par, se reduce la cantidad de $ a la mitad y no se interpola la expresión ${}.
10
+ *
11
+ * Si el objeto de valores contiene { abc: "xyz" }, al interpolar, se deben obtener los siguientes valores:
12
+ * Ejemplo: ${abc} -> xyz
13
+ * Ejemplo: $${abc} -> ${abc}
14
+ * Ejemplo: $$${abc} -> $xyz
15
+ * Ejemplo: $$$${abc} -> $${abc}
16
+ * Ejemplo: $$$$${abc} -> $$xyz
17
+ * Ejemplo: $$$$$${abc} -> $$${abc}
18
+ * Y así sucesivamente.
19
+ */
20
+ static interpolate(template: string, values: {
21
+ [key: string]: unknown;
22
+ }): string;
23
+ /**
24
+ * Evalua si el string incluye informacion de template.
25
+ * @param template El string que se quiere evcaluar si incluye informacion de template.
26
+ * @returns Si el string incluye informacion de template.
27
+ */
28
+ static hasVariable(template: string): boolean;
29
+ }
30
+ //# sourceMappingURL=message-template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-template.d.ts","sourceRoot":"","sources":["../../src/utils/message-template.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAA6B;IAC1D;;;;;;;;;;;;;;;;OAgBG;WACW,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,MAAM;IA0BvF;;;;OAIG;WACW,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGrD"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.V8nMessageTemplate = void 0;
4
+ class V8nMessageTemplate {
5
+ static regex = /(\$+)(\{\s*(\w+)\s*\})/g;
6
+ /**
7
+ * Interpolamos el template con los valores pasados.
8
+ * En caso de que no se encuentre un valor para una llave, se deja el valor original.
9
+ * Para controlar la forma de escape del signo $, solo se considera el signo $ que aparece delante de ${}.
10
+ * En la cercanía de una expresión ${}, cada par de $ que aparecen delante son sustituidos por un solo $.
11
+ * Y si la cantidad de $ es impar, se interpola la expresión ${} y se reduce la cantidad de $ a la mitad.
12
+ * Si la cantidad de $ es par, se reduce la cantidad de $ a la mitad y no se interpola la expresión ${}.
13
+ *
14
+ * Si el objeto de valores contiene { abc: "xyz" }, al interpolar, se deben obtener los siguientes valores:
15
+ * Ejemplo: ${abc} -> xyz
16
+ * Ejemplo: $${abc} -> ${abc}
17
+ * Ejemplo: $$${abc} -> $xyz
18
+ * Ejemplo: $$$${abc} -> $${abc}
19
+ * Ejemplo: $$$$${abc} -> $$xyz
20
+ * Ejemplo: $$$$$${abc} -> $$${abc}
21
+ * Y así sucesivamente.
22
+ */
23
+ static interpolate(template, values) {
24
+ const matches = template.matchAll(this.regex);
25
+ let result = '';
26
+ let lastIndex = 0;
27
+ for (const match of matches) {
28
+ if (match) {
29
+ const [fullMatch, $, brackedKey, key] = match;
30
+ if ($.length % 2 === 0) {
31
+ result += template.substring(lastIndex, match.index) + '$'.repeat($.length / 2) + brackedKey;
32
+ }
33
+ else {
34
+ const value = values[key];
35
+ if (value !== undefined) {
36
+ result += template.substring(lastIndex, match.index) + '$'.repeat(($.length - 1) / 2) + (typeof value !== 'string' ? JSON.stringify(value) : value);
37
+ }
38
+ else {
39
+ result += template.substring(lastIndex, match.index) + '$'.repeat(1 + (($.length - 1) / 2)) + brackedKey;
40
+ }
41
+ }
42
+ const matchIndex = match.index === undefined ? 0 : match.index;
43
+ lastIndex = matchIndex + fullMatch.length;
44
+ }
45
+ }
46
+ result += template.substring(lastIndex);
47
+ return result;
48
+ }
49
+ /**
50
+ * Evalua si el string incluye informacion de template.
51
+ * @param template El string que se quiere evcaluar si incluye informacion de template.
52
+ * @returns Si el string incluye informacion de template.
53
+ */
54
+ static hasVariable(template) {
55
+ return this.regex.test(template);
56
+ }
57
+ }
58
+ exports.V8nMessageTemplate = V8nMessageTemplate;
59
+ //# sourceMappingURL=message-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-template.js","sourceRoot":"","sources":["../../src/utils/message-template.ts"],"names":[],"mappings":";;;AAAA,MAAa,kBAAkB;IACrB,MAAM,CAAU,KAAK,GAAG,yBAAyB,CAAC;IAC1D;;;;;;;;;;;;;;;;OAgBG;IACI,MAAM,CAAC,WAAW,CAAC,QAAgB,EAAE,MAAkC;QAC5E,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC9C,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvB,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;gBAC/F,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBACxB,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBACtJ,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;oBAC3G,CAAC;gBACH,CAAC;gBACD,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC/D,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;YAC5C,CAAC;QAEH,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,WAAW,CAAC,QAAgB;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;;AApDH,gDAqDC"}
@@ -0,0 +1,11 @@
1
+ import { z, ZodType, ZodTypeAny } from 'zod';
2
+ export interface ZodSwitchDef<T extends ZodTypeAny, B extends ZodTypeAny = ZodType<unknown>> extends z.ZodTypeDef {
3
+ getSchema: (value: B['_output']) => T;
4
+ base: B;
5
+ typeName: 'ZodSwitch';
6
+ }
7
+ export declare class ZodSwitch<T extends ZodTypeAny, B extends ZodTypeAny> extends ZodType<T['_output'], ZodSwitchDef<T, B>, T['_input']> {
8
+ _parse(input: z.ParseInput): z.ParseReturnType<any>;
9
+ static create<T extends ZodTypeAny, B extends ZodTypeAny>(base: B, getSchema: (value: B['_output']) => T): ZodSwitch<T, B>;
10
+ }
11
+ //# sourceMappingURL=zod-switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-switch.d.ts","sourceRoot":"","sources":["../../src/utils/zod-switch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAE7C,MAAM,WAAW,YAAY,CAC3B,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CACvC,SAAQ,CAAC,CAAC,UAAU;IACpB,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,WAAW,CAAC;CACvB;AACD,qBAAa,SAAS,CACpB,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,UAAU,CACpB,SAAQ,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC9D,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC;IAgCnD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,UAAU,EACtD,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACpC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;CAOnB"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZodSwitch = void 0;
4
+ const zod_1 = require("zod");
5
+ class ZodSwitch extends zod_1.ZodType {
6
+ _parse(input) {
7
+ const { ctx } = this._processInputParams(input);
8
+ if (ctx.common.async) {
9
+ const handleAsync = async () => {
10
+ const inResult = await this._def.base._parseAsync({
11
+ data: ctx.data,
12
+ path: ctx.path,
13
+ parent: ctx,
14
+ });
15
+ if (inResult.status !== 'valid')
16
+ return zod_1.z.INVALID;
17
+ return this._def.getSchema(inResult.value)._parseAsync({
18
+ data: inResult.value,
19
+ path: ctx.path,
20
+ parent: ctx,
21
+ });
22
+ };
23
+ return handleAsync();
24
+ }
25
+ else {
26
+ const inResult = this._def.base._parseSync({
27
+ data: ctx.data,
28
+ path: ctx.path,
29
+ parent: ctx,
30
+ });
31
+ if (inResult.status !== 'valid')
32
+ return zod_1.z.INVALID;
33
+ return this._def.getSchema(inResult.value)._parseSync({
34
+ data: inResult.value,
35
+ path: ctx.path,
36
+ parent: ctx,
37
+ });
38
+ }
39
+ }
40
+ static create(base, getSchema) {
41
+ return new ZodSwitch({
42
+ base,
43
+ getSchema,
44
+ typeName: 'ZodSwitch',
45
+ });
46
+ }
47
+ }
48
+ exports.ZodSwitch = ZodSwitch;
49
+ //# sourceMappingURL=zod-switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-switch.js","sourceRoot":"","sources":["../../src/utils/zod-switch.ts"],"names":[],"mappings":";;;AAAA,6BAA6C;AAU7C,MAAa,SAGX,SAAQ,aAAsD;IAC9D,MAAM,CAAC,KAAmB;QACxB,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;gBAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;oBAChD,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAC;gBACH,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO;oBAAE,OAAO,OAAC,CAAC,OAAO,CAAC;gBAClD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;oBACrD,IAAI,EAAE,QAAQ,CAAC,KAAK;oBACpB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAC;YACL,CAAC,CAAC;YACF,OAAO,WAAW,EAAE,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;gBACzC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO;gBAAE,OAAO,OAAC,CAAC,OAAO,CAAC;YAClD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;gBACpD,IAAI,EAAE,QAAQ,CAAC,KAAK;gBACpB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,CAAC,MAAM,CACX,IAAO,EACP,SAAqC;QAErC,OAAO,IAAI,SAAS,CAAC;YACnB,IAAI;YACJ,SAAS;YACT,QAAQ,EAAE,WAAW;SACtB,CAAC,CAAC;IACL,CAAC;CACF;AA9CD,8BA8CC"}
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Se encarga de ejecutar una función en tryCatch
4
+ * y convierte el resultado en un ZodTransform.
5
+ *
6
+ * Si el resultado es exitoso devuelve el valor de la función.
7
+ *
8
+ * Si el resultado genera un error, agrega el error como
9
+ * error custom en el contexto de Zod.
10
+ *
11
+ * @param fn función que se quiere aplicar en el try catch
12
+ * @returns valor de la función o llamada al ctx.addIssue
13
+ */
14
+ export declare const zodWrapper: <ValueType, ReturnType>(fn: (value: ValueType) => ReturnType) => (value: ValueType, ctx: z.RefinementCtx) => ReturnType;
15
+ //# sourceMappingURL=zod-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-wrapper.d.ts","sourceRoot":"","sources":["../../src/utils/zod-wrapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsCxB;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,8BAGjB,CAAC,KAAK,EAAE,SAAS,KAAK,UAAU,aAAa,SAAS,OAAO,EAAE,aAAa,KAAG,UAUpF,CAAA"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.zodWrapper = void 0;
4
+ const ultra_result_1 = require("@imolko/ultra-result");
5
+ const __1 = require("..");
6
+ const zod_1 = require("zod");
7
+ const extractLastWord = (path) => {
8
+ return path.split('/').pop() || '';
9
+ };
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ const convertErrorToIssue = (rawError) => {
12
+ if (rawError instanceof __1.V8nParseBaseError) {
13
+ const code = extractLastWord(rawError.type);
14
+ const serialized = JSON.stringify({
15
+ code,
16
+ message: { ...rawError }
17
+ });
18
+ const zodIssue = {
19
+ code: 'custom',
20
+ message: serialized,
21
+ path: [],
22
+ };
23
+ return zodIssue;
24
+ }
25
+ if (rawError instanceof ultra_result_1.ErrorBase) {
26
+ const result = {
27
+ code: 'custom',
28
+ message: rawError.title,
29
+ params: { ...rawError },
30
+ path: []
31
+ };
32
+ return result;
33
+ }
34
+ const defaultIssue = {
35
+ code: 'custom',
36
+ message: rawError.message,
37
+ path: []
38
+ };
39
+ return defaultIssue;
40
+ };
41
+ /**
42
+ * Se encarga de ejecutar una función en tryCatch
43
+ * y convierte el resultado en un ZodTransform.
44
+ *
45
+ * Si el resultado es exitoso devuelve el valor de la función.
46
+ *
47
+ * Si el resultado genera un error, agrega el error como
48
+ * error custom en el contexto de Zod.
49
+ *
50
+ * @param fn función que se quiere aplicar en el try catch
51
+ * @returns valor de la función o llamada al ctx.addIssue
52
+ */
53
+ const zodWrapper = (fn) => (value, ctx) => {
54
+ try {
55
+ const result = fn(value);
56
+ return result;
57
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
+ }
59
+ catch (error) {
60
+ const issue = convertErrorToIssue(error);
61
+ ctx.addIssue(issue);
62
+ return zod_1.z.NEVER;
63
+ }
64
+ };
65
+ exports.zodWrapper = zodWrapper;
66
+ //# sourceMappingURL=zod-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod-wrapper.js","sourceRoot":"","sources":["../../src/utils/zod-wrapper.ts"],"names":[],"mappings":";;;AAAA,uDAAiD;AACjD,0BAAiD;AACjD,6BAAwB;AAExB,MAAM,eAAe,GAAG,CAAC,IAAY,EAAU,EAAE;IAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;AACrC,CAAC,CAAA;AAED,8DAA8D;AAC9D,MAAM,mBAAmB,GAAG,CAAC,QAAa,EAAY,EAAE;IACtD,IAAI,QAAQ,YAAY,qBAAiB,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI;YACJ,OAAO,EAAE,EAAC,GAAG,QAAQ,EAAC;SACvB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAa;YACzB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,EAAE;SACT,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,QAAQ,YAAY,wBAAS,EAAE,CAAC;QAClC,MAAM,MAAM,GAAa;YACvB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,QAAQ,CAAC,KAAK;YACvB,MAAM,EAAE,EAAC,GAAG,QAAQ,EAAC;YACrB,IAAI,EAAE,EAAE;SACT,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,YAAY,GAAa;QAC7B,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,IAAI,EAAE,EAAE;KACT,CAAA;IACD,OAAO,YAAY,CAAC;AACtB,CAAC,CAAA;AAED;;;;;;;;;;;GAWG;AACI,MAAM,UAAU,GAAG,CAGxB,EAAoC,EAAE,EAAE,CAAC,CAAC,KAAgB,EAAE,GAAoB,EAAc,EAAE;IAChG,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,MAAoB,CAAC;QAC9B,8DAA8D;IAC9D,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACzC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,OAAC,CAAC,KAAK,CAAC;IAChB,CAAC;AACH,CAAC,CAAA;AAbY,QAAA,UAAU,cAatB"}
@@ -0,0 +1,10 @@
1
+ import { z } from 'zod';
2
+ import { Validation } from '@imolko/ultra-result';
3
+ /**
4
+ * Define la forma o tipo de una funcion que puede ser decorada con el decorador v8nparse
5
+ */
6
+ export type ValidatableFn<E = any, T = any> = (...args: any[]) => Validation<E, T>;
7
+ type ArrayOfLengthOne<T> = [T];
8
+ export type ValidatableOneParameterFn<RulesType extends z.ZodSchema, Errors, Type> = (...args: ArrayOfLengthOne<z.input<RulesType>>) => Validation<Errors, Type>;
9
+ export {};
10
+ //# sourceMappingURL=validatable-fn.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validatable-fn.type.d.ts","sourceRoot":"","sources":["../src/validatable-fn.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD;;GAEG;AAEH,MAAM,MAAM,aAAa,CAAC,CAAC,GAAC,GAAG,EAAE,CAAC,GAAC,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE/E,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAG/B,MAAM,MAAM,yBAAyB,CAAC,SAAS,SAAS,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=validatable-fn.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validatable-fn.type.js","sourceRoot":"","sources":["../src/validatable-fn.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import { ZodSchema, ZodTypeDef } from 'zod';
2
+ import { Validation } from '@imolko/ultra-result';
3
+ /**z
4
+ * Dado un zodSchema y un contenido, se encarga
5
+ * de parsear el contenido con el zodSchema
6
+ * y devuelve un Validation.
7
+ *
8
+ * Permite utilizar los schemas de zod para definir las reglas,
9
+ * y utilizar Validation para entregar el resultado.
10
+ *
11
+ * Se recomienda establecer los tipos en la llamada a la función
12
+ * ya que no se pueden inferir directamente
13
+ *
14
+ * Si se presentan issues con el parseo de Zod, se convierten en errores
15
+ * y se devuelve un invalid con dichos errores.
16
+ *
17
+ * Si no se presentan issues con el parseo de zod,
18
+ * se devuelve un valid con el resultado del parseo
19
+ *
20
+ * @param zSchema: schema que se quiere validar
21
+ * @param content: contenido que se quiere parsear
22
+ * @returns Validation<ErrorType, ReturnType>
23
+ */
24
+ export declare const validateZodSchema: <ErrorType, ReturnType, ContentPayload = unknown>(zSchema: ZodSchema<ReturnType, ZodTypeDef, ContentPayload>, content: ContentPayload) => Validation<ErrorType, ReturnType>;
25
+ //# sourceMappingURL=validate-zod-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-zod-schema.d.ts","sourceRoot":"","sources":["../src/validate-zod-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,SAAS,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACtD,OAAO,EAAa,UAAU,EAAkB,MAAM,sBAAsB,CAAC;AAI7E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,iBAAiB,6DAA8D,UAAU,UAAU,EAAE,UAAU,EAAE,cAAc,CAAC,WAAW,cAAc,KAAG,WAAW,SAAS,EAAE,UAAU,CAYxM,CAAA"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateZodSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const ultra_result_1 = require("@imolko/ultra-result");
6
+ const convert_zod_issue_to_v8n_error_1 = require("./utils/convert-zod-issue-to-v8n-error");
7
+ /**z
8
+ * Dado un zodSchema y un contenido, se encarga
9
+ * de parsear el contenido con el zodSchema
10
+ * y devuelve un Validation.
11
+ *
12
+ * Permite utilizar los schemas de zod para definir las reglas,
13
+ * y utilizar Validation para entregar el resultado.
14
+ *
15
+ * Se recomienda establecer los tipos en la llamada a la función
16
+ * ya que no se pueden inferir directamente
17
+ *
18
+ * Si se presentan issues con el parseo de Zod, se convierten en errores
19
+ * y se devuelve un invalid con dichos errores.
20
+ *
21
+ * Si no se presentan issues con el parseo de zod,
22
+ * se devuelve un valid con el resultado del parseo
23
+ *
24
+ * @param zSchema: schema que se quiere validar
25
+ * @param content: contenido que se quiere parsear
26
+ * @returns Validation<ErrorType, ReturnType>
27
+ */
28
+ const validateZodSchema = (zSchema, content) => {
29
+ try {
30
+ const result = zSchema.parse(content);
31
+ return (0, ultra_result_1.valid)(result);
32
+ }
33
+ catch (zodError) {
34
+ /** Si el error no es del tipo ZodError, no se puede parsear */
35
+ if (!(zodError instanceof zod_1.ZodError)) {
36
+ throw zodError;
37
+ }
38
+ const issues = zodError.issues.map(convert_zod_issue_to_v8n_error_1.convertZodIssueToV8nError);
39
+ return (0, ultra_result_1.invalid)(issues);
40
+ }
41
+ };
42
+ exports.validateZodSchema = validateZodSchema;
43
+ //# sourceMappingURL=validate-zod-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-zod-schema.js","sourceRoot":"","sources":["../src/validate-zod-schema.ts"],"names":[],"mappings":";;;AAAA,6BAAsD;AACtD,uDAA6E;AAE7E,2FAAmF;AAEnF;;;;;;;;;;;;;;;;;;;;GAoBG;AACI,MAAM,iBAAiB,GAAG,CAAkD,OAA0D,EAAE,OAAuB,EAAqC,EAAE;IAC3M,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,IAAA,oBAAK,EAAa,MAAoB,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,QAAQ,EAAE,CAAC;QAClB,+DAA+D;QAC/D,IAAI,CAAC,CAAC,QAAQ,YAAY,cAAQ,CAAC,EAAE,CAAC;YACpC,MAAM,QAAQ,CAAC;QACjB,CAAC;QACD,MAAM,MAAM,GAAmC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,0DAAyB,CAAC,CAAA;QAC7F,OAAO,IAAA,sBAAO,EAAY,MAAgC,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC,CAAA;AAZY,QAAA,iBAAiB,qBAY7B"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@imolko/ultra-v8n",
3
+ "version": "1.0.1-beta",
4
+ "description": "Librería para el manejo de errores y validaciones que extiende el funcionamiento de zod",
5
+ "keywords": [
6
+ "results",
7
+ "resultados"
8
+ ],
9
+ "license": "MIT",
10
+ "author": {
11
+ "name": "Roberto Matute",
12
+ "email": "robertomatute@imolko.com"
13
+ },
14
+ "contributors": [
15
+ {
16
+ "name": "Jesús David Pérez",
17
+ "email": "jesusdpp96@gmail.com"
18
+ }
19
+ ],
20
+ "main": "dist-node/index.js",
21
+ "module": "dist-browser/index.js",
22
+ "types": "dist-node/index.d.ts",
23
+ "files": [
24
+ "dist-node",
25
+ "dist-browser"
26
+ ],
27
+ "homepage": "https://gitlab.com/imolko/ultra-v8n",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://gitlab.com/imolko/ultra-v8n"
31
+ },
32
+ "scripts": {
33
+ "clean": "rm -rf dist-browser dist-node",
34
+ "build-browser": "tsc -p tsconfig.browser.json",
35
+ "build-node": "tsc -p tsconfig.json",
36
+ "build": "npm run clean && npm run build-node && npm run build-browser",
37
+ "test": "jest"
38
+ },
39
+ "devDependencies": {
40
+ "@types/jest": "29.5.14",
41
+ "jest": "29.7.0",
42
+ "ts-jest": "^29.2.5",
43
+ "tslib": "2.8.1",
44
+ "typescript": "5.4.5"
45
+ },
46
+ "dependencies": {
47
+ "reflect-metadata": "0.1.13",
48
+ "@imolko/ultra-result": "2.0.0",
49
+ "zod": "3.23.8"
50
+ }
51
+ }