@evolu/common 8.2.0 → 8.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/dist/src/Function.d.ts +1 -0
  2. package/dist/src/Function.d.ts.map +1 -1
  3. package/dist/src/Http.d.ts +9 -0
  4. package/dist/src/Http.d.ts.map +1 -1
  5. package/dist/src/Object.d.ts +1 -0
  6. package/dist/src/Object.d.ts.map +1 -1
  7. package/dist/src/RefCount.d.ts +1 -0
  8. package/dist/src/RefCount.d.ts.map +1 -1
  9. package/dist/src/Relation.d.ts +2 -0
  10. package/dist/src/Relation.d.ts.map +1 -1
  11. package/dist/src/Resource.d.ts +1 -0
  12. package/dist/src/Resource.d.ts.map +1 -1
  13. package/dist/src/Result.d.ts +383 -548
  14. package/dist/src/Result.d.ts.map +1 -1
  15. package/dist/src/Result.js +296 -46
  16. package/dist/src/StackTrace.d.ts +1 -0
  17. package/dist/src/StackTrace.d.ts.map +1 -1
  18. package/dist/src/Task.d.ts +985 -1069
  19. package/dist/src/Task.d.ts.map +1 -1
  20. package/dist/src/Task.js +1007 -156
  21. package/dist/src/Time.d.ts +1 -0
  22. package/dist/src/Time.d.ts.map +1 -1
  23. package/dist/src/Type.d.ts +1322 -793
  24. package/dist/src/Type.d.ts.map +1 -1
  25. package/dist/src/Type.js +1192 -244
  26. package/dist/src/intl/_en.d.ts +126 -0
  27. package/dist/src/intl/_en.d.ts.map +1 -0
  28. package/dist/src/intl/_en.js +267 -0
  29. package/dist/src/intl/ar.d.ts +117 -0
  30. package/dist/src/intl/ar.d.ts.map +1 -0
  31. package/dist/src/intl/ar.js +245 -0
  32. package/dist/src/intl/bn.d.ts +117 -0
  33. package/dist/src/intl/bn.d.ts.map +1 -0
  34. package/dist/src/intl/bn.js +258 -0
  35. package/dist/src/intl/ca.d.ts +117 -0
  36. package/dist/src/intl/ca.d.ts.map +1 -0
  37. package/dist/src/intl/ca.js +258 -0
  38. package/dist/src/intl/cs.d.ts +20 -7
  39. package/dist/src/intl/cs.d.ts.map +1 -1
  40. package/dist/src/intl/cs.js +54 -27
  41. package/dist/src/intl/da.d.ts +117 -0
  42. package/dist/src/intl/da.d.ts.map +1 -0
  43. package/dist/src/intl/da.js +258 -0
  44. package/dist/src/intl/de.d.ts +117 -0
  45. package/dist/src/intl/de.d.ts.map +1 -0
  46. package/dist/src/intl/de.js +258 -0
  47. package/dist/src/intl/el.d.ts +117 -0
  48. package/dist/src/intl/el.d.ts.map +1 -0
  49. package/dist/src/intl/el.js +265 -0
  50. package/dist/src/intl/es.d.ts +117 -0
  51. package/dist/src/intl/es.d.ts.map +1 -0
  52. package/dist/src/intl/es.js +258 -0
  53. package/dist/src/intl/fa.d.ts +117 -0
  54. package/dist/src/intl/fa.d.ts.map +1 -0
  55. package/dist/src/intl/fa.js +258 -0
  56. package/dist/src/intl/fi.d.ts +117 -0
  57. package/dist/src/intl/fi.d.ts.map +1 -0
  58. package/dist/src/intl/fi.js +258 -0
  59. package/dist/src/intl/fil.d.ts +117 -0
  60. package/dist/src/intl/fil.d.ts.map +1 -0
  61. package/dist/src/intl/fil.js +258 -0
  62. package/dist/src/intl/fr.d.ts +117 -0
  63. package/dist/src/intl/fr.d.ts.map +1 -0
  64. package/dist/src/intl/fr.js +258 -0
  65. package/dist/src/intl/he.d.ts +117 -0
  66. package/dist/src/intl/he.d.ts.map +1 -0
  67. package/dist/src/intl/he.js +258 -0
  68. package/dist/src/intl/hi.d.ts +117 -0
  69. package/dist/src/intl/hi.d.ts.map +1 -0
  70. package/dist/src/intl/hi.js +258 -0
  71. package/dist/src/intl/hr.d.ts +117 -0
  72. package/dist/src/intl/hr.d.ts.map +1 -0
  73. package/dist/src/intl/hr.js +265 -0
  74. package/dist/src/intl/hu.d.ts +63 -0
  75. package/dist/src/intl/hu.d.ts.map +1 -0
  76. package/dist/src/intl/hu.js +204 -0
  77. package/dist/src/intl/id.d.ts +117 -0
  78. package/dist/src/intl/id.d.ts.map +1 -0
  79. package/dist/src/intl/id.js +258 -0
  80. package/dist/src/intl/index.d.ts +42 -0
  81. package/dist/src/intl/index.d.ts.map +1 -1
  82. package/dist/src/intl/index.js +42 -0
  83. package/dist/src/intl/it.d.ts +117 -0
  84. package/dist/src/intl/it.d.ts.map +1 -0
  85. package/dist/src/intl/it.js +258 -0
  86. package/dist/src/intl/ja.d.ts +117 -0
  87. package/dist/src/intl/ja.d.ts.map +1 -0
  88. package/dist/src/intl/ja.js +258 -0
  89. package/dist/src/intl/ko.d.ts +117 -0
  90. package/dist/src/intl/ko.d.ts.map +1 -0
  91. package/dist/src/intl/ko.js +258 -0
  92. package/dist/src/intl/ml.d.ts +117 -0
  93. package/dist/src/intl/ml.d.ts.map +1 -0
  94. package/dist/src/intl/ml.js +258 -0
  95. package/dist/src/intl/mr.d.ts +117 -0
  96. package/dist/src/intl/mr.d.ts.map +1 -0
  97. package/dist/src/intl/mr.js +258 -0
  98. package/dist/src/intl/ms.d.ts +117 -0
  99. package/dist/src/intl/ms.d.ts.map +1 -0
  100. package/dist/src/intl/ms.js +245 -0
  101. package/dist/src/intl/nb.d.ts +63 -0
  102. package/dist/src/intl/nb.d.ts.map +1 -0
  103. package/dist/src/intl/nb.js +191 -0
  104. package/dist/src/intl/nl.d.ts +117 -0
  105. package/dist/src/intl/nl.d.ts.map +1 -0
  106. package/dist/src/intl/nl.js +258 -0
  107. package/dist/src/intl/pa.d.ts +117 -0
  108. package/dist/src/intl/pa.d.ts.map +1 -0
  109. package/dist/src/intl/pa.js +258 -0
  110. package/dist/src/intl/pl.d.ts +117 -0
  111. package/dist/src/intl/pl.d.ts.map +1 -0
  112. package/dist/src/intl/pl.js +242 -0
  113. package/dist/src/intl/pt-BR.d.ts +117 -0
  114. package/dist/src/intl/pt-BR.d.ts.map +1 -0
  115. package/dist/src/intl/pt-BR.js +258 -0
  116. package/dist/src/intl/pt.d.ts +117 -0
  117. package/dist/src/intl/pt.d.ts.map +1 -0
  118. package/dist/src/intl/pt.js +246 -0
  119. package/dist/src/intl/ro.d.ts +117 -0
  120. package/dist/src/intl/ro.d.ts.map +1 -0
  121. package/dist/src/intl/ro.js +258 -0
  122. package/dist/src/intl/sk.d.ts +117 -0
  123. package/dist/src/intl/sk.d.ts.map +1 -0
  124. package/dist/src/intl/sk.js +244 -0
  125. package/dist/src/intl/sl.d.ts +117 -0
  126. package/dist/src/intl/sl.d.ts.map +1 -0
  127. package/dist/src/intl/sl.js +258 -0
  128. package/dist/src/intl/sv.d.ts +117 -0
  129. package/dist/src/intl/sv.d.ts.map +1 -0
  130. package/dist/src/intl/sv.js +258 -0
  131. package/dist/src/intl/sw.d.ts +63 -0
  132. package/dist/src/intl/sw.d.ts.map +1 -0
  133. package/dist/src/intl/sw.js +191 -0
  134. package/dist/src/intl/ta.d.ts +117 -0
  135. package/dist/src/intl/ta.d.ts.map +1 -0
  136. package/dist/src/intl/ta.js +258 -0
  137. package/dist/src/intl/te.d.ts +117 -0
  138. package/dist/src/intl/te.d.ts.map +1 -0
  139. package/dist/src/intl/te.js +258 -0
  140. package/dist/src/intl/th.d.ts +117 -0
  141. package/dist/src/intl/th.d.ts.map +1 -0
  142. package/dist/src/intl/th.js +258 -0
  143. package/dist/src/intl/tr.d.ts +117 -0
  144. package/dist/src/intl/tr.d.ts.map +1 -0
  145. package/dist/src/intl/tr.js +255 -0
  146. package/dist/src/intl/uk.d.ts +117 -0
  147. package/dist/src/intl/uk.d.ts.map +1 -0
  148. package/dist/src/intl/uk.js +258 -0
  149. package/dist/src/intl/ur.d.ts +117 -0
  150. package/dist/src/intl/ur.d.ts.map +1 -0
  151. package/dist/src/intl/ur.js +245 -0
  152. package/dist/src/intl/vi.d.ts +117 -0
  153. package/dist/src/intl/vi.d.ts.map +1 -0
  154. package/dist/src/intl/vi.js +255 -0
  155. package/dist/src/intl/zh-CN.d.ts +117 -0
  156. package/dist/src/intl/zh-CN.d.ts.map +1 -0
  157. package/dist/src/intl/zh-CN.js +258 -0
  158. package/dist/src/intl/zh-TW.d.ts +117 -0
  159. package/dist/src/intl/zh-TW.d.ts.map +1 -0
  160. package/dist/src/intl/zh-TW.js +258 -0
  161. package/dist/src/local-first/Owner.d.ts +156 -62
  162. package/dist/src/local-first/Owner.d.ts.map +1 -1
  163. package/dist/src/local-first/Owner.js +119 -20
  164. package/package.json +1 -1
  165. package/src/Function.ts +2 -0
  166. package/src/Http.ts +9 -0
  167. package/src/Object.ts +2 -0
  168. package/src/RefCount.ts +2 -0
  169. package/src/Relation.ts +4 -0
  170. package/src/Resource.ts +2 -0
  171. package/src/Result.ts +397 -560
  172. package/src/StackTrace.ts +2 -0
  173. package/src/Task.ts +1143 -1222
  174. package/src/Time.ts +2 -0
  175. package/src/Type.ts +1759 -794
  176. package/src/intl/_en.ts +497 -0
  177. package/src/intl/ar.ts +417 -0
  178. package/src/intl/bn.ts +486 -0
  179. package/src/intl/ca.ts +488 -0
  180. package/src/intl/cs.ts +95 -31
  181. package/src/intl/da.ts +488 -0
  182. package/src/intl/de.ts +488 -0
  183. package/src/intl/el.ts +494 -0
  184. package/src/intl/es.ts +488 -0
  185. package/src/intl/fa.ts +487 -0
  186. package/src/intl/fi.ts +487 -0
  187. package/src/intl/fil.ts +488 -0
  188. package/src/intl/fr.ts +488 -0
  189. package/src/intl/he.ts +486 -0
  190. package/src/intl/hi.ts +487 -0
  191. package/src/intl/hr.ts +494 -0
  192. package/src/intl/hu.ts +387 -0
  193. package/src/intl/id.ts +487 -0
  194. package/src/intl/index.ts +42 -0
  195. package/src/intl/it.ts +488 -0
  196. package/src/intl/ja.ts +488 -0
  197. package/src/intl/ko.ts +487 -0
  198. package/src/intl/ml.ts +487 -0
  199. package/src/intl/mr.ts +487 -0
  200. package/src/intl/ms.ts +410 -0
  201. package/src/intl/nb.ts +364 -0
  202. package/src/intl/nl.ts +488 -0
  203. package/src/intl/pa.ts +487 -0
  204. package/src/intl/pl.ts +450 -0
  205. package/src/intl/pt-BR.ts +487 -0
  206. package/src/intl/pt.ts +424 -0
  207. package/src/intl/ro.ts +488 -0
  208. package/src/intl/sk.ts +412 -0
  209. package/src/intl/sl.ts +487 -0
  210. package/src/intl/sv.ts +488 -0
  211. package/src/intl/sw.ts +324 -0
  212. package/src/intl/ta.ts +487 -0
  213. package/src/intl/te.ts +487 -0
  214. package/src/intl/th.ts +484 -0
  215. package/src/intl/tr.ts +487 -0
  216. package/src/intl/uk.ts +488 -0
  217. package/src/intl/ur.ts +410 -0
  218. package/src/intl/vi.ts +435 -0
  219. package/src/intl/zh-CN.ts +482 -0
  220. package/src/intl/zh-TW.ts +482 -0
  221. package/src/local-first/Owner.ts +156 -62
package/src/intl/es.ts ADDED
@@ -0,0 +1,488 @@
1
+ /**
2
+ * Formateadores de errores de Evolu Type en español.
3
+ *
4
+ * @module
5
+ */
6
+
7
+ import { assertNonNullable } from "../Assert.ts";
8
+ import { safelyStringifyUnknownValue } from "../String.ts";
9
+ import type {
10
+ ArrayError,
11
+ Base64UrlError,
12
+ BetweenError,
13
+ CapitalizedError,
14
+ DateIsoError,
15
+ DateIsoFromDateError,
16
+ DecimalStringError,
17
+ DiscriminatedUnionError,
18
+ EvoluTypeError,
19
+ FiniteError,
20
+ GreaterThanError,
21
+ GreaterThanOrEqualToError,
22
+ InstanceOfError,
23
+ Int64Error,
24
+ Int64StringError,
25
+ IntError,
26
+ IdError,
27
+ JsonError,
28
+ JsonValueError,
29
+ LengthError,
30
+ LessThanError,
31
+ LessThanOrEqualToError,
32
+ LiteralError,
33
+ MaxLengthError,
34
+ MinLengthError,
35
+ MnemonicError,
36
+ MultipleOfError,
37
+ NegativeDecimalStringError,
38
+ NegativeError,
39
+ NameError,
40
+ NeverError,
41
+ NonNaNError,
42
+ NonNegativeDecimalStringError,
43
+ NonNegativeError,
44
+ NonPositiveDecimalStringError,
45
+ NonPositiveError,
46
+ ObjectError,
47
+ ObjectNotObjectError,
48
+ ObjectPropertyAccessError,
49
+ ObjectTagError,
50
+ ObjectUnexpectedPrototypeError,
51
+ PositiveDecimalStringError,
52
+ PositiveError,
53
+ RecordError,
54
+ RegexError,
55
+ SetError,
56
+ TableIdError,
57
+ TemplateLiteralError,
58
+ TrimmedError,
59
+ TupleElementsError,
60
+ TupleError,
61
+ TypeError,
62
+ TypeErrorFormatter,
63
+ TypeOfError,
64
+ UInt64Error,
65
+ UnionError,
66
+ } from "../Type.ts";
67
+
68
+ const formatTypeOfError = (
69
+ error: TypeOfError<
70
+ "String" | "Number" | "BigInt" | "Boolean" | "Symbol" | "Function"
71
+ >,
72
+ ): string => {
73
+ const typeOf = error.expected.toLowerCase();
74
+
75
+ return `El valor ${safelyStringifyUnknownValue(error.value)} no es de tipo ${typeOf}.`;
76
+ };
77
+
78
+ const formatPlainObjectRootError = (
79
+ reason:
80
+ ObjectNotObjectError["reason"] | ObjectUnexpectedPrototypeError["reason"],
81
+ ): string =>
82
+ reason.kind === "NotObject"
83
+ ? `El valor ${safelyStringifyUnknownValue(reason.value)} no es un objeto.`
84
+ : "El valor es un objeto, pero un Output de Object debe ser un objeto plano o tener un prototipo null.";
85
+
86
+ /** Formatea NeverError en español. */
87
+ export const formatNeverError: TypeErrorFormatter<NeverError> = (error) =>
88
+ `El valor ${safelyStringifyUnknownValue(error.value)} no es válido para el tipo Never.`;
89
+
90
+ /** Formatea String TypeOfError en español. */
91
+ export const formatStringError: TypeErrorFormatter<TypeOfError<"String">> =
92
+ formatTypeOfError;
93
+
94
+ /** Formatea TemplateLiteralError en español. */
95
+ export const formatTemplateLiteralError: TypeErrorFormatter<
96
+ TemplateLiteralError
97
+ > = (error) =>
98
+ `El valor ${safelyStringifyUnknownValue(error.value)} no coincide con el literal de plantilla.`;
99
+
100
+ /** Formatea Number TypeOfError en español. */
101
+ export const formatNumberError: TypeErrorFormatter<TypeOfError<"Number">> =
102
+ formatTypeOfError;
103
+
104
+ /** Formatea BigInt TypeOfError en español. */
105
+ export const formatBigIntError: TypeErrorFormatter<TypeOfError<"BigInt">> =
106
+ formatTypeOfError;
107
+
108
+ /** Formatea Boolean TypeOfError en español. */
109
+ export const formatBooleanError: TypeErrorFormatter<TypeOfError<"Boolean">> =
110
+ formatTypeOfError;
111
+
112
+ /** Formatea Symbol TypeOfError en español. */
113
+ export const formatSymbolError: TypeErrorFormatter<TypeOfError<"Symbol">> =
114
+ formatTypeOfError;
115
+
116
+ /** Formatea Function TypeOfError en español. */
117
+ export const formatFunctionError: TypeErrorFormatter<TypeOfError<"Function">> =
118
+ formatTypeOfError;
119
+
120
+ /** Formatea EvoluTypeError en español. */
121
+ export const formatEvoluTypeError: TypeErrorFormatter<EvoluTypeError> = (
122
+ error,
123
+ ) =>
124
+ `El valor ${safelyStringifyUnknownValue(error.value)} no es un Evolu Type.`;
125
+
126
+ /** Formatea ObjectTagError en español. */
127
+ export const formatObjectTagError: TypeErrorFormatter<ObjectTagError> = (
128
+ error,
129
+ ) =>
130
+ `El valor ${safelyStringifyUnknownValue(error.value)} no tiene la etiqueta de objeto esperada ${safelyStringifyUnknownValue(error.expected)}.`;
131
+
132
+ /** Formatea InstanceOfError en español. */
133
+ export const formatInstanceOfError: TypeErrorFormatter<InstanceOfError> = (
134
+ error,
135
+ ) =>
136
+ `El valor ${safelyStringifyUnknownValue(error.value)} no es una instancia de ${error.constructorName}.`;
137
+
138
+ /** Formatea LiteralError en español. */
139
+ export const formatLiteralError: TypeErrorFormatter<LiteralError> = (error) =>
140
+ `El valor ${safelyStringifyUnknownValue(error.value)} no es estrictamente igual al literal esperado: ${globalThis.String(error.expected)}.`;
141
+
142
+ /** Formatea UnionError en español. */
143
+ export const formatUnionError: TypeErrorFormatter<UnionError> = () =>
144
+ "El valor no coincide con ninguna variante permitida.";
145
+
146
+ /** Formatea DateIsoError en español. */
147
+ export const formatDateIsoError: TypeErrorFormatter<DateIsoError> = (error) =>
148
+ `El valor ${safelyStringifyUnknownValue(error.value)} no es una cadena canónica de fecha y hora ISO.`;
149
+
150
+ /** Formatea DateIsoFromDateError en español. */
151
+ export const formatDateIsoFromDateError: TypeErrorFormatter<
152
+ DateIsoFromDateError
153
+ > = () => "El Date no se puede representar como DateIso.";
154
+
155
+ /** Formatea DecimalStringError en español. */
156
+ export const formatDecimalStringError: TypeErrorFormatter<
157
+ DecimalStringError
158
+ > = (error) =>
159
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser una cadena decimal canónica.`;
160
+
161
+ /** Formatea Int64Error en español. */
162
+ export const formatInt64Error: TypeErrorFormatter<Int64Error> = (error) =>
163
+ `El valor ${safelyStringifyUnknownValue(error.value)} no es un entero con signo de 64 bits válido (Int64).`;
164
+
165
+ /** Formatea UInt64Error en español. */
166
+ export const formatUInt64Error: TypeErrorFormatter<UInt64Error> = (error) =>
167
+ `El valor ${safelyStringifyUnknownValue(error.value)} no es un entero sin signo de 64 bits válido (UInt64).`;
168
+
169
+ /** Formatea Int64StringError en español. */
170
+ export const formatInt64StringError: TypeErrorFormatter<Int64StringError> = (
171
+ error,
172
+ ) =>
173
+ `El valor ${safelyStringifyUnknownValue(error.value)} no es una cadena Int64 válida.`;
174
+
175
+ /** Formatea CapitalizedError en español. */
176
+ export const formatCapitalizedError: TypeErrorFormatter<CapitalizedError> = (
177
+ error,
178
+ ) =>
179
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe empezar con mayúscula.`;
180
+
181
+ /** Formatea TrimmedError en español. */
182
+ export const formatTrimmedError: TypeErrorFormatter<TrimmedError> = (error) =>
183
+ `El valor ${safelyStringifyUnknownValue(error.value)} no debe tener espacios en blanco al principio ni al final.`;
184
+
185
+ /** Formatea MinLengthError en español. */
186
+ export const formatMinLengthError: TypeErrorFormatter<MinLengthError> = (
187
+ error,
188
+ ) =>
189
+ `El valor ${safelyStringifyUnknownValue(error.value)} no alcanza la longitud mínima de ${error.min}.`;
190
+
191
+ /** Formatea MaxLengthError en español. */
192
+ export const formatMaxLengthError: TypeErrorFormatter<MaxLengthError> = (
193
+ error,
194
+ ) =>
195
+ `El valor ${safelyStringifyUnknownValue(error.value)} supera la longitud máxima de ${error.max}.`;
196
+
197
+ /** Formatea LengthError en español. */
198
+ export const formatLengthError: TypeErrorFormatter<LengthError> = (error) =>
199
+ `El valor ${safelyStringifyUnknownValue(error.value)} no tiene la longitud requerida de ${error.exact}.`;
200
+
201
+ /** Formatea RegexError en español. */
202
+ export const formatRegexError: TypeErrorFormatter<RegexError> = (error) =>
203
+ `El valor ${safelyStringifyUnknownValue(error.value)} no coincide con /${error.source}/${error.flags}.`;
204
+
205
+ /** Formatea Base64UrlError en español. */
206
+ export const formatBase64UrlError: TypeErrorFormatter<Base64UrlError> = (
207
+ error,
208
+ ) =>
209
+ `El valor ${safelyStringifyUnknownValue(error.value)} no es una cadena Base64Url válida.`;
210
+
211
+ /** Formatea NameError en español. */
212
+ export const formatNameError: TypeErrorFormatter<NameError> = (error) =>
213
+ `El valor ${safelyStringifyUnknownValue(error.value)} no es un Name válido.`;
214
+
215
+ /** Formatea MnemonicError en español. */
216
+ export const formatMnemonicError: TypeErrorFormatter<MnemonicError> = (error) =>
217
+ `El valor ${safelyStringifyUnknownValue(error.value)} no es un mnemónico BIP39 en inglés válido.`;
218
+
219
+ /** Formatea IdError en español. */
220
+ export const formatIdError: TypeErrorFormatter<IdError> = (error) =>
221
+ `El valor ${safelyStringifyUnknownValue(error.value)} no es un Id válido.`;
222
+
223
+ /** Formatea TableIdError en español. */
224
+ export const formatTableIdError: TypeErrorFormatter<TableIdError> = (error) =>
225
+ `El valor ${safelyStringifyUnknownValue(error.value)} no es un Id válido para la tabla ${error.table}.`;
226
+
227
+ /** Formatea NonNegativeError en español. */
228
+ export const formatNonNegativeError: TypeErrorFormatter<NonNegativeError> = (
229
+ error,
230
+ ) =>
231
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser no negativo (>= 0).`;
232
+
233
+ /** Formatea NonNegativeDecimalStringError en español. */
234
+ export const formatNonNegativeDecimalStringError: TypeErrorFormatter<
235
+ NonNegativeDecimalStringError
236
+ > = (error) =>
237
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser una cadena decimal no negativa.`;
238
+
239
+ /** Formatea PositiveError en español. */
240
+ export const formatPositiveError: TypeErrorFormatter<PositiveError> = (error) =>
241
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser positivo (> 0).`;
242
+
243
+ /** Formatea PositiveDecimalStringError en español. */
244
+ export const formatPositiveDecimalStringError: TypeErrorFormatter<
245
+ PositiveDecimalStringError
246
+ > = (error) =>
247
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser una cadena decimal positiva.`;
248
+
249
+ /** Formatea NonPositiveError en español. */
250
+ export const formatNonPositiveError: TypeErrorFormatter<NonPositiveError> = (
251
+ error,
252
+ ) =>
253
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser no positivo (<= 0).`;
254
+
255
+ /** Formatea NonPositiveDecimalStringError en español. */
256
+ export const formatNonPositiveDecimalStringError: TypeErrorFormatter<
257
+ NonPositiveDecimalStringError
258
+ > = (error) =>
259
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser una cadena decimal no positiva.`;
260
+
261
+ /** Formatea NegativeError en español. */
262
+ export const formatNegativeError: TypeErrorFormatter<NegativeError> = (error) =>
263
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser negativo (< 0).`;
264
+
265
+ /** Formatea NegativeDecimalStringError en español. */
266
+ export const formatNegativeDecimalStringError: TypeErrorFormatter<
267
+ NegativeDecimalStringError
268
+ > = (error) =>
269
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser una cadena decimal negativa.`;
270
+
271
+ /** Formatea IntError en español. */
272
+ export const formatIntError: TypeErrorFormatter<IntError> = (error) =>
273
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser un entero seguro.`;
274
+
275
+ /** Formatea GreaterThanError en español. */
276
+ export const formatGreaterThanError: TypeErrorFormatter<GreaterThanError> = (
277
+ error,
278
+ ) =>
279
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser mayor que ${error.min}.`;
280
+
281
+ /** Formatea GreaterThanOrEqualToError en español. */
282
+ export const formatGreaterThanOrEqualToError: TypeErrorFormatter<
283
+ GreaterThanOrEqualToError
284
+ > = (error) =>
285
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser mayor o igual que ${error.min}.`;
286
+
287
+ /** Formatea LessThanError en español. */
288
+ export const formatLessThanError: TypeErrorFormatter<LessThanError> = (error) =>
289
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser menor que ${error.max}.`;
290
+
291
+ /** Formatea LessThanOrEqualToError en español. */
292
+ export const formatLessThanOrEqualToError: TypeErrorFormatter<
293
+ LessThanOrEqualToError
294
+ > = (error) =>
295
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser menor o igual que ${error.max}.`;
296
+
297
+ /** Formatea NonNaNError en español. */
298
+ export const formatNonNaNError: TypeErrorFormatter<NonNaNError> = () =>
299
+ "El valor no debe ser NaN.";
300
+
301
+ /** Formatea FiniteError en español. */
302
+ export const formatFiniteError: TypeErrorFormatter<FiniteError> = (error) =>
303
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser finito.`;
304
+
305
+ /** Formatea MultipleOfError en español. */
306
+ export const formatMultipleOfError: TypeErrorFormatter<MultipleOfError> = (
307
+ error,
308
+ ) =>
309
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe ser múltiplo de ${error.divisor}.`;
310
+
311
+ /** Formatea BetweenError en español. */
312
+ export const formatBetweenError: TypeErrorFormatter<BetweenError> = (error) =>
313
+ `El valor ${safelyStringifyUnknownValue(error.value)} debe estar entre ${error.min} y ${error.max}, ambos inclusive.`;
314
+
315
+ /** Formatea ArrayError en español. */
316
+ export const formatArrayError: TypeErrorFormatter<ArrayError> = (error) => {
317
+ if (error.reason.kind === "NotArray") {
318
+ return `El valor ${safelyStringifyUnknownValue(error.reason.value)} no es un array.`;
319
+ }
320
+ const issue = error.reason.issues[0];
321
+
322
+ switch (issue.kind) {
323
+ case "Hole":
324
+ return `Falta un elemento del array en el índice ${issue.index}.`;
325
+ case "Accessor":
326
+ return `El elemento del array en el índice ${issue.index} debe ser una propiedad de datos.`;
327
+ case "ExcessProperty":
328
+ return "No se permite una propiedad adicional de Array. Elimínala o usa un Type diferente.";
329
+ case "Element":
330
+ return `El elemento del array en el índice ${issue.index} no es válido.`;
331
+ }
332
+ };
333
+
334
+ /** Formatea SetError en español. */
335
+ export const formatSetError: TypeErrorFormatter<SetError> = (error) => {
336
+ if (error.reason.kind === "NotSet") {
337
+ return `El valor ${safelyStringifyUnknownValue(error.reason.value)} no es un Set.`;
338
+ }
339
+ if (error.reason.kind === "UnexpectedPrototype") {
340
+ return "El valor es una instancia de una subclase de Set, pero un Output de Set debe ser una instancia directa de Set.";
341
+ }
342
+
343
+ const issue = error.reason.issues[0];
344
+
345
+ switch (issue.kind) {
346
+ case "ExcessProperty":
347
+ return `No se permite la propiedad adicional de Set ${safelyStringifyUnknownValue(issue.key)}.`;
348
+ case "Element":
349
+ return `El elemento de Set en el índice ${issue.index} no es válido.`;
350
+ }
351
+ };
352
+
353
+ /** Formatea TupleError en español. */
354
+ export const formatTupleError: TypeErrorFormatter<
355
+ TupleError | TupleElementsError<TypeError>
356
+ > = (error) => {
357
+ if (error.reason.kind === "NotArray") {
358
+ return `El valor ${safelyStringifyUnknownValue(error.reason.value)} no es una tupla.`;
359
+ }
360
+ if (error.reason.kind === "InvalidLength") {
361
+ return `Un Tuple debe contener exactamente ${error.reason.expected} elementos, pero el valor contiene ${error.reason.actual}.`;
362
+ }
363
+
364
+ const issue = error.reason.issues[0];
365
+
366
+ switch (issue.kind) {
367
+ case "Hole":
368
+ return `Falta un elemento de Tuple en el índice ${issue.index}.`;
369
+ case "Accessor":
370
+ return `El elemento de Tuple en el índice ${issue.index} debe ser una propiedad de datos.`;
371
+ case "ExcessProperty":
372
+ return "No se permite una propiedad adicional de Tuple. Elimínala o usa un Type diferente.";
373
+ case "Element":
374
+ return `El elemento de Tuple en el índice ${issue.index} no es válido.`;
375
+ }
376
+ };
377
+
378
+ /** Formatea RecordError en español. */
379
+ export const formatRecordError: TypeErrorFormatter<RecordError> = (error) => {
380
+ if (error.reason.kind === "NotRecord") {
381
+ return `El valor ${safelyStringifyUnknownValue(error.reason.value)} no es un Record.`;
382
+ }
383
+ if (error.reason.kind === "NotPlainRecord") {
384
+ return "El valor es un objeto, pero un Output de Record debe ser un objeto plano o tener un prototipo null.";
385
+ }
386
+
387
+ const issue = error.reason.issues[0];
388
+
389
+ switch (issue.kind) {
390
+ case "Key":
391
+ return `La clave de propiedad ${safelyStringifyUnknownValue(issue.key)} no es válida.`;
392
+ case "Value":
393
+ return `El valor de la propiedad ${safelyStringifyUnknownValue(issue.key)} no es válido.`;
394
+ case "Accessor":
395
+ return `La propiedad de Record ${safelyStringifyUnknownValue(issue.key)} debe ser una propiedad de datos.`;
396
+ case "NonEnumerable":
397
+ return `La propiedad de Record ${safelyStringifyUnknownValue(issue.key)} debe ser enumerable.`;
398
+ case "Collision":
399
+ return `Las claves de Record ${safelyStringifyUnknownValue(issue.previousKey)} y ${safelyStringifyUnknownValue(issue.key)} se decodifican como la misma clave ${safelyStringifyUnknownValue(issue.outputKey)}.`;
400
+ }
401
+ };
402
+
403
+ /** Formatea ObjectError en español. */
404
+ export const formatObjectError: TypeErrorFormatter<ObjectError> = (error) => {
405
+ if (error.reason.kind !== "Properties") {
406
+ return formatPlainObjectRootError(error.reason);
407
+ }
408
+
409
+ const key = Reflect.ownKeys(error.reason.errors).at(0);
410
+ assertNonNullable(key);
411
+ const propertyError = error.reason.errors[key];
412
+ assertNonNullable(propertyError);
413
+
414
+ if (propertyError.type === "ObjectPropertyAccess") {
415
+ switch ((propertyError as ObjectPropertyAccessError).reason) {
416
+ case "Accessor":
417
+ return "Una propiedad de Object debe ser una propiedad de datos. Materializa los valores de los accesores como datos simples antes de usar este Type o usa un Type diferente.";
418
+ case "NonEnumerable":
419
+ return "Una propiedad de Object debe ser enumerable. Hazla enumerable o usa un Type diferente.";
420
+ }
421
+ }
422
+ if (propertyError.type === "ObjectMissingProperty") {
423
+ return `Falta la propiedad requerida ${safelyStringifyUnknownValue(key)}.`;
424
+ }
425
+ if (typeof key === "symbol") {
426
+ return "La clave de una propiedad de Object debe ser una cadena. Elimina la propiedad symbol o usa un Type diferente.";
427
+ }
428
+ if (propertyError.type === "ObjectExcessProperty") {
429
+ return `La propiedad ${safelyStringifyUnknownValue(key)} no está permitida. Elimínala o usa un Type diferente.`;
430
+ }
431
+ return `La propiedad ${safelyStringifyUnknownValue(key)} no es válida.`;
432
+ };
433
+
434
+ /** Formatea DiscriminatedUnionError en español. */
435
+ export const formatDiscriminatedUnionError: TypeErrorFormatter<
436
+ DiscriminatedUnionError
437
+ > = (error) => {
438
+ switch (error.reason.kind) {
439
+ case "Object":
440
+ return formatPlainObjectRootError(error.reason.error.reason);
441
+ case "PropertyAccess": {
442
+ const property = `La propiedad discriminadora ${safelyStringifyUnknownValue(error.reason.key)}`;
443
+ if (error.reason.reason === "Accessor") {
444
+ return `${property} debe ser una propiedad de datos.`;
445
+ }
446
+ if (error.reason.reason === "Inherited") {
447
+ return `${property} debe ser una propiedad propia.`;
448
+ }
449
+ return `${property} debe ser enumerable.`;
450
+ }
451
+ case "Discriminator":
452
+ return `La propiedad discriminadora ${safelyStringifyUnknownValue(error.reason.key)} tiene un valor inesperado ${safelyStringifyUnknownValue(error.reason.value)}.`;
453
+ case "Member":
454
+ return `La variante seleccionada ${safelyStringifyUnknownValue(error.reason.discriminator)} no es válida.`;
455
+ }
456
+ };
457
+
458
+ /** Formatea JsonValueError en español. */
459
+ export const formatJsonValueError: TypeErrorFormatter<JsonValueError> = (
460
+ error,
461
+ ) => {
462
+ const issue = error.reason.issues[0];
463
+
464
+ switch (issue.kind) {
465
+ case "InvalidType":
466
+ return `El valor ${safelyStringifyUnknownValue(issue.value)} no es un valor JSON.`;
467
+ case "NonFiniteNumber":
468
+ return "Un número JSON debe ser finito.";
469
+ case "UnexpectedPrototype":
470
+ return "El valor es un objeto, pero un objeto JsonValue debe ser un objeto plano o tener un prototipo null.";
471
+ case "Accessor":
472
+ return "Una propiedad JSON debe ser una propiedad de datos. Materializa los valores de los accesores como datos simples antes de usar este Type o usa un Type diferente.";
473
+ case "NonEnumerable":
474
+ return "Una propiedad de un objeto JSON debe ser enumerable. Elimínala o usa un Type diferente.";
475
+ case "SymbolProperty":
476
+ return "La clave de una propiedad de un objeto JSON debe ser una cadena. Elimina la propiedad symbol o usa un Type diferente.";
477
+ case "Hole":
478
+ return "Falta un elemento del array JSON.";
479
+ case "ExcessProperty":
480
+ return "No se permite una propiedad adicional de un array JSON. Elimínala o usa un Type diferente.";
481
+ case "CircularReference":
482
+ return "Un JsonValue no debe contener referencias circulares.";
483
+ }
484
+ };
485
+
486
+ /** Formatea JsonError en español. */
487
+ export const formatJsonError: TypeErrorFormatter<JsonError> = (error) =>
488
+ `El valor ${safelyStringifyUnknownValue(error.value)} no se puede analizar como JsonValue.`;