@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/ca.ts ADDED
@@ -0,0 +1,488 @@
1
+ /**
2
+ * Formatadors d'errors d'Evolu Type en català.
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 és de tipus ${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 és un objecte.`
84
+ : "El valor és un objecte, però l’Output d’Object ha de ser un objecte pla o tenir un prototip nul.";
85
+
86
+ /** Formata NeverError en català. */
87
+ export const formatNeverError: TypeErrorFormatter<NeverError> = (error) =>
88
+ `El valor ${safelyStringifyUnknownValue(error.value)} no és vàlid per al tipus Never.`;
89
+
90
+ /** Formata String TypeOfError en català. */
91
+ export const formatStringError: TypeErrorFormatter<TypeOfError<"String">> =
92
+ formatTypeOfError;
93
+
94
+ /** Formata TemplateLiteralError en català. */
95
+ export const formatTemplateLiteralError: TypeErrorFormatter<
96
+ TemplateLiteralError
97
+ > = (error) =>
98
+ `El valor ${safelyStringifyUnknownValue(error.value)} no coincideix amb el literal de plantilla.`;
99
+
100
+ /** Formata Number TypeOfError en català. */
101
+ export const formatNumberError: TypeErrorFormatter<TypeOfError<"Number">> =
102
+ formatTypeOfError;
103
+
104
+ /** Formata BigInt TypeOfError en català. */
105
+ export const formatBigIntError: TypeErrorFormatter<TypeOfError<"BigInt">> =
106
+ formatTypeOfError;
107
+
108
+ /** Formata Boolean TypeOfError en català. */
109
+ export const formatBooleanError: TypeErrorFormatter<TypeOfError<"Boolean">> =
110
+ formatTypeOfError;
111
+
112
+ /** Formata Symbol TypeOfError en català. */
113
+ export const formatSymbolError: TypeErrorFormatter<TypeOfError<"Symbol">> =
114
+ formatTypeOfError;
115
+
116
+ /** Formata Function TypeOfError en català. */
117
+ export const formatFunctionError: TypeErrorFormatter<TypeOfError<"Function">> =
118
+ formatTypeOfError;
119
+
120
+ /** Formata EvoluTypeError en català. */
121
+ export const formatEvoluTypeError: TypeErrorFormatter<EvoluTypeError> = (
122
+ error,
123
+ ) =>
124
+ `El valor ${safelyStringifyUnknownValue(error.value)} no és un Evolu Type.`;
125
+
126
+ /** Formata ObjectTagError en català. */
127
+ export const formatObjectTagError: TypeErrorFormatter<ObjectTagError> = (
128
+ error,
129
+ ) =>
130
+ `El valor ${safelyStringifyUnknownValue(error.value)} no té l’etiqueta d’objecte esperada ${safelyStringifyUnknownValue(error.expected)}.`;
131
+
132
+ /** Formata InstanceOfError en català. */
133
+ export const formatInstanceOfError: TypeErrorFormatter<InstanceOfError> = (
134
+ error,
135
+ ) =>
136
+ `El valor ${safelyStringifyUnknownValue(error.value)} no és una instància de ${error.constructorName}.`;
137
+
138
+ /** Formata LiteralError en català. */
139
+ export const formatLiteralError: TypeErrorFormatter<LiteralError> = (error) =>
140
+ `El valor ${safelyStringifyUnknownValue(error.value)} no és estrictament igual al literal esperat: ${globalThis.String(error.expected)}.`;
141
+
142
+ /** Formata UnionError en català. */
143
+ export const formatUnionError: TypeErrorFormatter<UnionError> = () =>
144
+ "El valor no coincideix amb cap variant permesa.";
145
+
146
+ /** Formata DateIsoError en català. */
147
+ export const formatDateIsoError: TypeErrorFormatter<DateIsoError> = (error) =>
148
+ `El valor ${safelyStringifyUnknownValue(error.value)} no és una cadena canònica de data i hora ISO.`;
149
+
150
+ /** Formata DateIsoFromDateError en català. */
151
+ export const formatDateIsoFromDateError: TypeErrorFormatter<
152
+ DateIsoFromDateError
153
+ > = () => "El Date no es pot representar com a DateIso.";
154
+
155
+ /** Formata DecimalStringError en català. */
156
+ export const formatDecimalStringError: TypeErrorFormatter<
157
+ DecimalStringError
158
+ > = (error) =>
159
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser una cadena decimal canònica.`;
160
+
161
+ /** Formata Int64Error en català. */
162
+ export const formatInt64Error: TypeErrorFormatter<Int64Error> = (error) =>
163
+ `El valor ${safelyStringifyUnknownValue(error.value)} no és un enter amb signe de 64 bits vàlid (Int64).`;
164
+
165
+ /** Formata UInt64Error en català. */
166
+ export const formatUInt64Error: TypeErrorFormatter<UInt64Error> = (error) =>
167
+ `El valor ${safelyStringifyUnknownValue(error.value)} no és un enter sense signe de 64 bits vàlid (UInt64).`;
168
+
169
+ /** Formata Int64StringError en català. */
170
+ export const formatInt64StringError: TypeErrorFormatter<Int64StringError> = (
171
+ error,
172
+ ) =>
173
+ `El valor ${safelyStringifyUnknownValue(error.value)} no és una cadena Int64 vàlida.`;
174
+
175
+ /** Formata CapitalizedError en català. */
176
+ export const formatCapitalizedError: TypeErrorFormatter<CapitalizedError> = (
177
+ error,
178
+ ) =>
179
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de començar amb majúscula.`;
180
+
181
+ /** Formata TrimmedError en català. */
182
+ export const formatTrimmedError: TypeErrorFormatter<TrimmedError> = (error) =>
183
+ `El valor ${safelyStringifyUnknownValue(error.value)} no pot tenir espais en blanc al principi ni al final.`;
184
+
185
+ /** Formata MinLengthError en català. */
186
+ export const formatMinLengthError: TypeErrorFormatter<MinLengthError> = (
187
+ error,
188
+ ) =>
189
+ `El valor ${safelyStringifyUnknownValue(error.value)} no compleix la longitud mínima de ${error.min}.`;
190
+
191
+ /** Formata MaxLengthError en català. */
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
+ /** Formata LengthError en català. */
198
+ export const formatLengthError: TypeErrorFormatter<LengthError> = (error) =>
199
+ `El valor ${safelyStringifyUnknownValue(error.value)} no té la longitud requerida de ${error.exact}.`;
200
+
201
+ /** Formata RegexError en català. */
202
+ export const formatRegexError: TypeErrorFormatter<RegexError> = (error) =>
203
+ `El valor ${safelyStringifyUnknownValue(error.value)} no coincideix amb /${error.source}/${error.flags}.`;
204
+
205
+ /** Formata Base64UrlError en català. */
206
+ export const formatBase64UrlError: TypeErrorFormatter<Base64UrlError> = (
207
+ error,
208
+ ) =>
209
+ `El valor ${safelyStringifyUnknownValue(error.value)} no és una cadena Base64Url vàlida.`;
210
+
211
+ /** Formata NameError en català. */
212
+ export const formatNameError: TypeErrorFormatter<NameError> = (error) =>
213
+ `El valor ${safelyStringifyUnknownValue(error.value)} no és un Name vàlid.`;
214
+
215
+ /** Formata MnemonicError en català. */
216
+ export const formatMnemonicError: TypeErrorFormatter<MnemonicError> = (error) =>
217
+ `El valor ${safelyStringifyUnknownValue(error.value)} no és una frase mnemotècnica BIP39 en anglès vàlida.`;
218
+
219
+ /** Formata IdError en català. */
220
+ export const formatIdError: TypeErrorFormatter<IdError> = (error) =>
221
+ `El valor ${safelyStringifyUnknownValue(error.value)} no és un Id vàlid.`;
222
+
223
+ /** Formata TableIdError en català. */
224
+ export const formatTableIdError: TypeErrorFormatter<TableIdError> = (error) =>
225
+ `El valor ${safelyStringifyUnknownValue(error.value)} no és un Id vàlid per a la taula ${error.table}.`;
226
+
227
+ /** Formata NonNegativeError en català. */
228
+ export const formatNonNegativeError: TypeErrorFormatter<NonNegativeError> = (
229
+ error,
230
+ ) =>
231
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser no negatiu (>= 0).`;
232
+
233
+ /** Formata NonNegativeDecimalStringError en català. */
234
+ export const formatNonNegativeDecimalStringError: TypeErrorFormatter<
235
+ NonNegativeDecimalStringError
236
+ > = (error) =>
237
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser una cadena decimal no negativa.`;
238
+
239
+ /** Formata PositiveError en català. */
240
+ export const formatPositiveError: TypeErrorFormatter<PositiveError> = (error) =>
241
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser positiu (> 0).`;
242
+
243
+ /** Formata PositiveDecimalStringError en català. */
244
+ export const formatPositiveDecimalStringError: TypeErrorFormatter<
245
+ PositiveDecimalStringError
246
+ > = (error) =>
247
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser una cadena decimal positiva.`;
248
+
249
+ /** Formata NonPositiveError en català. */
250
+ export const formatNonPositiveError: TypeErrorFormatter<NonPositiveError> = (
251
+ error,
252
+ ) =>
253
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser no positiu (<= 0).`;
254
+
255
+ /** Formata NonPositiveDecimalStringError en català. */
256
+ export const formatNonPositiveDecimalStringError: TypeErrorFormatter<
257
+ NonPositiveDecimalStringError
258
+ > = (error) =>
259
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser una cadena decimal no positiva.`;
260
+
261
+ /** Formata NegativeError en català. */
262
+ export const formatNegativeError: TypeErrorFormatter<NegativeError> = (error) =>
263
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser negatiu (< 0).`;
264
+
265
+ /** Formata NegativeDecimalStringError en català. */
266
+ export const formatNegativeDecimalStringError: TypeErrorFormatter<
267
+ NegativeDecimalStringError
268
+ > = (error) =>
269
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser una cadena decimal negativa.`;
270
+
271
+ /** Formata IntError en català. */
272
+ export const formatIntError: TypeErrorFormatter<IntError> = (error) =>
273
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser un enter segur.`;
274
+
275
+ /** Formata GreaterThanError en català. */
276
+ export const formatGreaterThanError: TypeErrorFormatter<GreaterThanError> = (
277
+ error,
278
+ ) =>
279
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser superior a ${error.min}.`;
280
+
281
+ /** Formata GreaterThanOrEqualToError en català. */
282
+ export const formatGreaterThanOrEqualToError: TypeErrorFormatter<
283
+ GreaterThanOrEqualToError
284
+ > = (error) =>
285
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser superior o igual a ${error.min}.`;
286
+
287
+ /** Formata LessThanError en català. */
288
+ export const formatLessThanError: TypeErrorFormatter<LessThanError> = (error) =>
289
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser inferior a ${error.max}.`;
290
+
291
+ /** Formata LessThanOrEqualToError en català. */
292
+ export const formatLessThanOrEqualToError: TypeErrorFormatter<
293
+ LessThanOrEqualToError
294
+ > = (error) =>
295
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser inferior o igual a ${error.max}.`;
296
+
297
+ /** Formata NonNaNError en català. */
298
+ export const formatNonNaNError: TypeErrorFormatter<NonNaNError> = () =>
299
+ "El valor no pot ser NaN.";
300
+
301
+ /** Formata FiniteError en català. */
302
+ export const formatFiniteError: TypeErrorFormatter<FiniteError> = (error) =>
303
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser finit.`;
304
+
305
+ /** Formata MultipleOfError en català. */
306
+ export const formatMultipleOfError: TypeErrorFormatter<MultipleOfError> = (
307
+ error,
308
+ ) =>
309
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha de ser múltiple de ${error.divisor}.`;
310
+
311
+ /** Formata BetweenError en català. */
312
+ export const formatBetweenError: TypeErrorFormatter<BetweenError> = (error) =>
313
+ `El valor ${safelyStringifyUnknownValue(error.value)} ha d’estar entre ${error.min} i ${error.max}, ambdós inclosos.`;
314
+
315
+ /** Formata ArrayError en català. */
316
+ export const formatArrayError: TypeErrorFormatter<ArrayError> = (error) => {
317
+ if (error.reason.kind === "NotArray") {
318
+ return `El valor ${safelyStringifyUnknownValue(error.reason.value)} no és un array.`;
319
+ }
320
+ const issue = error.reason.issues[0];
321
+
322
+ switch (issue.kind) {
323
+ case "Hole":
324
+ return `Falta un element de l’array a l’índex ${issue.index}.`;
325
+ case "Accessor":
326
+ return `L’element de l’array a l’índex ${issue.index} ha de ser una propietat de dades.`;
327
+ case "ExcessProperty":
328
+ return "No es permet una propietat Array addicional. Elimineu-la o utilitzeu un Type diferent.";
329
+ case "Element":
330
+ return `L’element de l’array a l’índex ${issue.index} no és vàlid.`;
331
+ }
332
+ };
333
+
334
+ /** Formata SetError en català. */
335
+ export const formatSetError: TypeErrorFormatter<SetError> = (error) => {
336
+ if (error.reason.kind === "NotSet") {
337
+ return `El valor ${safelyStringifyUnknownValue(error.reason.value)} no és un Set.`;
338
+ }
339
+ if (error.reason.kind === "UnexpectedPrototype") {
340
+ return "El valor és una instància d’una subclasse de Set, però l’Output de Set ha de ser una instància directa de Set.";
341
+ }
342
+
343
+ const issue = error.reason.issues[0];
344
+
345
+ switch (issue.kind) {
346
+ case "ExcessProperty":
347
+ return `No es permet la propietat Set addicional ${safelyStringifyUnknownValue(issue.key)}.`;
348
+ case "Element":
349
+ return `L’element de Set a l’índex ${issue.index} no és vàlid.`;
350
+ }
351
+ };
352
+
353
+ /** Formata TupleError en català. */
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 és una tupla.`;
359
+ }
360
+ if (error.reason.kind === "InvalidLength") {
361
+ return `Un Tuple ha de contenir exactament ${error.reason.expected} elements, però el valor en conté ${error.reason.actual}.`;
362
+ }
363
+
364
+ const issue = error.reason.issues[0];
365
+
366
+ switch (issue.kind) {
367
+ case "Hole":
368
+ return `Falta un element de Tuple a l’índex ${issue.index}.`;
369
+ case "Accessor":
370
+ return `L’element de Tuple a l’índex ${issue.index} ha de ser una propietat de dades.`;
371
+ case "ExcessProperty":
372
+ return "No es permet una propietat Tuple addicional. Elimineu-la o utilitzeu un Type diferent.";
373
+ case "Element":
374
+ return `L’element de Tuple a l’índex ${issue.index} no és vàlid.`;
375
+ }
376
+ };
377
+
378
+ /** Formata RecordError en català. */
379
+ export const formatRecordError: TypeErrorFormatter<RecordError> = (error) => {
380
+ if (error.reason.kind === "NotRecord") {
381
+ return `El valor ${safelyStringifyUnknownValue(error.reason.value)} no és un Record.`;
382
+ }
383
+ if (error.reason.kind === "NotPlainRecord") {
384
+ return "El valor és un objecte, però l’Output de Record ha de ser un objecte pla o tenir un prototip nul.";
385
+ }
386
+
387
+ const issue = error.reason.issues[0];
388
+
389
+ switch (issue.kind) {
390
+ case "Key":
391
+ return `La clau de propietat ${safelyStringifyUnknownValue(issue.key)} no és vàlida.`;
392
+ case "Value":
393
+ return `El valor de la propietat ${safelyStringifyUnknownValue(issue.key)} no és vàlid.`;
394
+ case "Accessor":
395
+ return `La propietat Record ${safelyStringifyUnknownValue(issue.key)} ha de ser una propietat de dades.`;
396
+ case "NonEnumerable":
397
+ return `La propietat Record ${safelyStringifyUnknownValue(issue.key)} ha de ser enumerable.`;
398
+ case "Collision":
399
+ return `Les claus de Record ${safelyStringifyUnknownValue(issue.previousKey)} i ${safelyStringifyUnknownValue(issue.key)} es descodifiquen a la mateixa clau ${safelyStringifyUnknownValue(issue.outputKey)}.`;
400
+ }
401
+ };
402
+
403
+ /** Formata ObjectError en català. */
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 propietat Object ha de ser una propietat de dades. Materialitzeu els valors dels accessors com a dades simples abans d’utilitzar aquest Type o utilitzeu un Type diferent.";
418
+ case "NonEnumerable":
419
+ return "Una propietat Object ha de ser enumerable. Feu-la enumerable o utilitzeu un Type diferent.";
420
+ }
421
+ }
422
+ if (propertyError.type === "ObjectMissingProperty") {
423
+ return `Falta la propietat obligatòria ${safelyStringifyUnknownValue(key)}.`;
424
+ }
425
+ if (typeof key === "symbol") {
426
+ return "La clau d’una propietat Object ha de ser una cadena. Elimineu la propietat symbol o utilitzeu un Type diferent.";
427
+ }
428
+ if (propertyError.type === "ObjectExcessProperty") {
429
+ return `La propietat ${safelyStringifyUnknownValue(key)} no està permesa. Elimineu-la o utilitzeu un Type diferent.`;
430
+ }
431
+ return `La propietat ${safelyStringifyUnknownValue(key)} no és vàlida.`;
432
+ };
433
+
434
+ /** Formata DiscriminatedUnionError en català. */
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 propietat discriminadora ${safelyStringifyUnknownValue(error.reason.key)}`;
443
+ if (error.reason.reason === "Accessor") {
444
+ return `${property} ha de ser una propietat de dades.`;
445
+ }
446
+ if (error.reason.reason === "Inherited") {
447
+ return `${property} ha de ser una propietat pròpia.`;
448
+ }
449
+ return `${property} ha de ser enumerable.`;
450
+ }
451
+ case "Discriminator":
452
+ return `La propietat discriminadora ${safelyStringifyUnknownValue(error.reason.key)} té un valor inesperat ${safelyStringifyUnknownValue(error.reason.value)}.`;
453
+ case "Member":
454
+ return `La variant seleccionada ${safelyStringifyUnknownValue(error.reason.discriminator)} no és vàlida.`;
455
+ }
456
+ };
457
+
458
+ /** Formata JsonValueError en català. */
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 és un valor JSON.`;
467
+ case "NonFiniteNumber":
468
+ return "Un nombre JSON ha de ser finit.";
469
+ case "UnexpectedPrototype":
470
+ return "El valor és un objecte, però un objecte JsonValue ha de ser un objecte pla o tenir un prototip nul.";
471
+ case "Accessor":
472
+ return "Una propietat JSON ha de ser una propietat de dades. Materialitzeu els valors dels accessors com a dades simples abans d’utilitzar aquest Type o utilitzeu un Type diferent.";
473
+ case "NonEnumerable":
474
+ return "Una propietat d’un objecte JSON ha de ser enumerable. Elimineu-la o utilitzeu un Type diferent.";
475
+ case "SymbolProperty":
476
+ return "La clau d’una propietat d’un objecte JSON ha de ser una cadena. Elimineu la propietat symbol o utilitzeu un Type diferent.";
477
+ case "Hole":
478
+ return "Falta un element de l’array JSON.";
479
+ case "ExcessProperty":
480
+ return "No es permet una propietat addicional de l’array JSON. Elimineu-la o utilitzeu un Type diferent.";
481
+ case "CircularReference":
482
+ return "Un JsonValue no pot contenir referències circulars.";
483
+ }
484
+ };
485
+
486
+ /** Formata JsonError en català. */
487
+ export const formatJsonError: TypeErrorFormatter<JsonError> = (error) =>
488
+ `El valor ${safelyStringifyUnknownValue(error.value)} no es pot analitzar com a JsonValue.`;