@evolu/common 8.9.0 → 8.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/dist/src/Bytes.d.ts +647 -0
  2. package/dist/src/Bytes.d.ts.map +1 -0
  3. package/dist/src/{Binary.js → Bytes.js} +266 -16
  4. package/dist/src/Config.d.ts +142 -0
  5. package/dist/src/Config.d.ts.map +1 -0
  6. package/dist/src/Config.js +181 -0
  7. package/dist/src/Fs.d.ts +302 -0
  8. package/dist/src/Fs.d.ts.map +1 -0
  9. package/dist/src/Fs.js +111 -0
  10. package/dist/src/Number.d.ts +50 -7
  11. package/dist/src/Number.d.ts.map +1 -1
  12. package/dist/src/Number.js +47 -8
  13. package/dist/src/Object.d.ts +32 -0
  14. package/dist/src/Object.d.ts.map +1 -1
  15. package/dist/src/Object.js +41 -0
  16. package/dist/src/Sqlite.js +1 -1
  17. package/dist/src/Time.d.ts +74 -12
  18. package/dist/src/Time.d.ts.map +1 -1
  19. package/dist/src/Time.js +40 -2
  20. package/dist/src/Type.d.ts +1451 -79
  21. package/dist/src/Type.d.ts.map +1 -1
  22. package/dist/src/Type.js +1303 -96
  23. package/dist/src/index.d.ts +3 -1
  24. package/dist/src/index.d.ts.map +1 -1
  25. package/dist/src/index.js +3 -1
  26. package/dist/src/intl/_en.d.ts +24 -1
  27. package/dist/src/intl/_en.d.ts.map +1 -1
  28. package/dist/src/intl/_en.js +20 -0
  29. package/dist/src/intl/ar.d.ts +24 -1
  30. package/dist/src/intl/ar.d.ts.map +1 -1
  31. package/dist/src/intl/ar.js +20 -0
  32. package/dist/src/intl/bn.d.ts +24 -1
  33. package/dist/src/intl/bn.d.ts.map +1 -1
  34. package/dist/src/intl/bn.js +20 -0
  35. package/dist/src/intl/ca.d.ts +24 -1
  36. package/dist/src/intl/ca.d.ts.map +1 -1
  37. package/dist/src/intl/ca.js +20 -0
  38. package/dist/src/intl/cs.d.ts +24 -1
  39. package/dist/src/intl/cs.d.ts.map +1 -1
  40. package/dist/src/intl/cs.js +20 -0
  41. package/dist/src/intl/da.d.ts +24 -1
  42. package/dist/src/intl/da.d.ts.map +1 -1
  43. package/dist/src/intl/da.js +20 -0
  44. package/dist/src/intl/de.d.ts +24 -1
  45. package/dist/src/intl/de.d.ts.map +1 -1
  46. package/dist/src/intl/de.js +20 -0
  47. package/dist/src/intl/el.d.ts +24 -1
  48. package/dist/src/intl/el.d.ts.map +1 -1
  49. package/dist/src/intl/el.js +20 -0
  50. package/dist/src/intl/es.d.ts +24 -1
  51. package/dist/src/intl/es.d.ts.map +1 -1
  52. package/dist/src/intl/es.js +20 -0
  53. package/dist/src/intl/fa.d.ts +24 -1
  54. package/dist/src/intl/fa.d.ts.map +1 -1
  55. package/dist/src/intl/fa.js +20 -0
  56. package/dist/src/intl/fi.d.ts +24 -1
  57. package/dist/src/intl/fi.d.ts.map +1 -1
  58. package/dist/src/intl/fi.js +20 -0
  59. package/dist/src/intl/fil.d.ts +24 -1
  60. package/dist/src/intl/fil.d.ts.map +1 -1
  61. package/dist/src/intl/fil.js +20 -0
  62. package/dist/src/intl/fr.d.ts +24 -1
  63. package/dist/src/intl/fr.d.ts.map +1 -1
  64. package/dist/src/intl/fr.js +20 -0
  65. package/dist/src/intl/he.d.ts +24 -1
  66. package/dist/src/intl/he.d.ts.map +1 -1
  67. package/dist/src/intl/he.js +20 -0
  68. package/dist/src/intl/hi.d.ts +24 -1
  69. package/dist/src/intl/hi.d.ts.map +1 -1
  70. package/dist/src/intl/hi.js +20 -0
  71. package/dist/src/intl/hr.d.ts +24 -1
  72. package/dist/src/intl/hr.d.ts.map +1 -1
  73. package/dist/src/intl/hr.js +20 -0
  74. package/dist/src/intl/hu.d.ts +22 -1
  75. package/dist/src/intl/hu.d.ts.map +1 -1
  76. package/dist/src/intl/hu.js +18 -0
  77. package/dist/src/intl/id.d.ts +24 -1
  78. package/dist/src/intl/id.d.ts.map +1 -1
  79. package/dist/src/intl/id.js +20 -0
  80. package/dist/src/intl/it.d.ts +24 -1
  81. package/dist/src/intl/it.d.ts.map +1 -1
  82. package/dist/src/intl/it.js +20 -0
  83. package/dist/src/intl/ja.d.ts +24 -1
  84. package/dist/src/intl/ja.d.ts.map +1 -1
  85. package/dist/src/intl/ja.js +20 -0
  86. package/dist/src/intl/ko.d.ts +24 -1
  87. package/dist/src/intl/ko.d.ts.map +1 -1
  88. package/dist/src/intl/ko.js +20 -0
  89. package/dist/src/intl/ml.d.ts +24 -1
  90. package/dist/src/intl/ml.d.ts.map +1 -1
  91. package/dist/src/intl/ml.js +20 -0
  92. package/dist/src/intl/mr.d.ts +24 -1
  93. package/dist/src/intl/mr.d.ts.map +1 -1
  94. package/dist/src/intl/mr.js +20 -0
  95. package/dist/src/intl/ms.d.ts +24 -1
  96. package/dist/src/intl/ms.d.ts.map +1 -1
  97. package/dist/src/intl/ms.js +20 -0
  98. package/dist/src/intl/nb.d.ts +22 -1
  99. package/dist/src/intl/nb.d.ts.map +1 -1
  100. package/dist/src/intl/nb.js +18 -0
  101. package/dist/src/intl/nl.d.ts +24 -1
  102. package/dist/src/intl/nl.d.ts.map +1 -1
  103. package/dist/src/intl/nl.js +20 -0
  104. package/dist/src/intl/pa.d.ts +24 -1
  105. package/dist/src/intl/pa.d.ts.map +1 -1
  106. package/dist/src/intl/pa.js +20 -0
  107. package/dist/src/intl/pl.d.ts +23 -0
  108. package/dist/src/intl/pl.d.ts.map +1 -1
  109. package/dist/src/intl/pl.js +20 -0
  110. package/dist/src/intl/pt-BR.d.ts +24 -1
  111. package/dist/src/intl/pt-BR.d.ts.map +1 -1
  112. package/dist/src/intl/pt-BR.js +20 -0
  113. package/dist/src/intl/pt.d.ts +24 -1
  114. package/dist/src/intl/pt.d.ts.map +1 -1
  115. package/dist/src/intl/pt.js +20 -0
  116. package/dist/src/intl/ro.d.ts +24 -1
  117. package/dist/src/intl/ro.d.ts.map +1 -1
  118. package/dist/src/intl/ro.js +20 -0
  119. package/dist/src/intl/sk.d.ts +24 -1
  120. package/dist/src/intl/sk.d.ts.map +1 -1
  121. package/dist/src/intl/sk.js +20 -0
  122. package/dist/src/intl/sl.d.ts +24 -1
  123. package/dist/src/intl/sl.d.ts.map +1 -1
  124. package/dist/src/intl/sl.js +20 -0
  125. package/dist/src/intl/sv.d.ts +24 -1
  126. package/dist/src/intl/sv.d.ts.map +1 -1
  127. package/dist/src/intl/sv.js +20 -0
  128. package/dist/src/intl/sw.d.ts +21 -0
  129. package/dist/src/intl/sw.d.ts.map +1 -1
  130. package/dist/src/intl/sw.js +18 -0
  131. package/dist/src/intl/ta.d.ts +24 -1
  132. package/dist/src/intl/ta.d.ts.map +1 -1
  133. package/dist/src/intl/ta.js +20 -0
  134. package/dist/src/intl/te.d.ts +24 -1
  135. package/dist/src/intl/te.d.ts.map +1 -1
  136. package/dist/src/intl/te.js +20 -0
  137. package/dist/src/intl/th.d.ts +24 -1
  138. package/dist/src/intl/th.d.ts.map +1 -1
  139. package/dist/src/intl/th.js +20 -0
  140. package/dist/src/intl/tr.d.ts +24 -1
  141. package/dist/src/intl/tr.d.ts.map +1 -1
  142. package/dist/src/intl/tr.js +20 -0
  143. package/dist/src/intl/uk.d.ts +80 -57
  144. package/dist/src/intl/uk.d.ts.map +1 -1
  145. package/dist/src/intl/uk.js +174 -149
  146. package/dist/src/intl/ur.d.ts +24 -1
  147. package/dist/src/intl/ur.d.ts.map +1 -1
  148. package/dist/src/intl/ur.js +20 -0
  149. package/dist/src/intl/vi.d.ts +24 -1
  150. package/dist/src/intl/vi.d.ts.map +1 -1
  151. package/dist/src/intl/vi.js +20 -0
  152. package/dist/src/intl/zh-CN.d.ts +24 -1
  153. package/dist/src/intl/zh-CN.d.ts.map +1 -1
  154. package/dist/src/intl/zh-CN.js +20 -0
  155. package/dist/src/intl/zh-TW.d.ts +24 -1
  156. package/dist/src/intl/zh-TW.d.ts.map +1 -1
  157. package/dist/src/intl/zh-TW.js +20 -0
  158. package/dist/src/local-first/Protocol.d.ts +1 -1
  159. package/dist/src/local-first/Protocol.d.ts.map +1 -1
  160. package/dist/src/local-first/Protocol.js +1 -1
  161. package/dist/src/local-first/Schema.d.ts +10 -0
  162. package/dist/src/local-first/Schema.d.ts.map +1 -1
  163. package/dist/src/local-first/Storage.js +1 -1
  164. package/dist/src/local-first/Timestamp.js +1 -1
  165. package/package.json +1 -1
  166. package/src/{Binary.test.ts → Bytes.test.ts} +286 -1
  167. package/src/{Binary.ts → Bytes.ts} +652 -21
  168. package/src/Config.test.ts +672 -0
  169. package/src/Config.ts +410 -0
  170. package/src/Fs.test.ts +105 -0
  171. package/src/Fs.ts +414 -0
  172. package/src/Number.test.ts +82 -18
  173. package/src/Number.ts +76 -8
  174. package/src/Object.test.ts +115 -1
  175. package/src/Object.ts +44 -0
  176. package/src/Sqlite.ts +1 -1
  177. package/src/Time.test.ts +82 -11
  178. package/src/Time.ts +141 -16
  179. package/src/Type.test.ts +3114 -157
  180. package/src/Type.ts +2553 -196
  181. package/src/index.ts +3 -1
  182. package/src/intl/_en.ts +70 -0
  183. package/src/intl/ar.ts +71 -0
  184. package/src/intl/bn.ts +70 -0
  185. package/src/intl/ca.ts +70 -0
  186. package/src/intl/cs.ts +70 -0
  187. package/src/intl/da.ts +70 -0
  188. package/src/intl/de.ts +70 -0
  189. package/src/intl/el.ts +70 -0
  190. package/src/intl/es.ts +70 -0
  191. package/src/intl/fa.ts +70 -0
  192. package/src/intl/fi.ts +70 -0
  193. package/src/intl/fil.ts +70 -0
  194. package/src/intl/fr.ts +70 -0
  195. package/src/intl/he.ts +70 -0
  196. package/src/intl/hi.ts +70 -0
  197. package/src/intl/hr.ts +70 -0
  198. package/src/intl/hu.ts +69 -0
  199. package/src/intl/id.ts +70 -0
  200. package/src/intl/intl.test.ts +819 -1
  201. package/src/intl/it.ts +70 -0
  202. package/src/intl/ja.ts +70 -0
  203. package/src/intl/ko.ts +68 -0
  204. package/src/intl/ml.ts +70 -0
  205. package/src/intl/mr.ts +70 -0
  206. package/src/intl/ms.ts +71 -0
  207. package/src/intl/nb.ts +69 -0
  208. package/src/intl/nl.ts +70 -0
  209. package/src/intl/pa.ts +70 -0
  210. package/src/intl/pl.ts +63 -0
  211. package/src/intl/pt-BR.ts +70 -0
  212. package/src/intl/pt.ts +71 -0
  213. package/src/intl/ro.ts +70 -0
  214. package/src/intl/sk.ts +71 -0
  215. package/src/intl/sl.ts +70 -0
  216. package/src/intl/sv.ts +70 -0
  217. package/src/intl/sw.ts +62 -0
  218. package/src/intl/ta.ts +70 -0
  219. package/src/intl/te.ts +70 -0
  220. package/src/intl/th.ts +68 -0
  221. package/src/intl/tr.ts +70 -0
  222. package/src/intl/uk.ts +228 -155
  223. package/src/intl/ur.ts +70 -0
  224. package/src/intl/vi.ts +70 -0
  225. package/src/intl/zh-CN.ts +68 -0
  226. package/src/intl/zh-TW.ts +68 -0
  227. package/src/local-first/Protocol.test.ts +1 -1
  228. package/src/local-first/Protocol.ts +1 -1
  229. package/src/local-first/Schema.ts +11 -0
  230. package/src/local-first/Storage.ts +1 -1
  231. package/src/local-first/Timestamp.ts +1 -1
  232. package/dist/src/Binary.d.ts +0 -254
  233. package/dist/src/Binary.d.ts.map +0 -1
package/src/intl/pt-BR.ts CHANGED
@@ -4,13 +4,21 @@
4
4
  * @module
5
5
  */
6
6
 
7
+ import type { DurationLiteralError } from "../Time.ts";
8
+ import type { PercentageLiteralError } from "../Number.ts";
9
+ import type { ByteSizeLiteralError } from "../Bytes.ts";
7
10
  import { assertNonNullable } from "../Assert.ts";
8
11
  import { safelyStringifyUnknownValue } from "../String.ts";
9
12
  import type {
10
13
  ArrayError,
11
14
  Base64UrlError,
15
+ BooleanFromStringError,
12
16
  BetweenError,
17
+ IdentifierError,
13
18
  CapitalizedError,
19
+ UncapitalizedError,
20
+ UppercasedError,
21
+ LowercasedError,
14
22
  DateIsoError,
15
23
  DateIsoFromDateError,
16
24
  DecimalStringError,
@@ -23,6 +31,7 @@ import type {
23
31
  Int64Error,
24
32
  Int64StringError,
25
33
  IntError,
34
+ IntFromStringError,
26
35
  IdError,
27
36
  JsonError,
28
37
  JsonValueError,
@@ -56,6 +65,7 @@ import type {
56
65
  SetError,
57
66
  TableIdError,
58
67
  TemplateLiteralError,
68
+ StartsWithError,
59
69
  TrimmedError,
60
70
  TupleElementsError,
61
71
  TupleError,
@@ -110,6 +120,12 @@ export const formatBigIntError: TypeErrorFormatter<TypeOfError<"BigInt">> =
110
120
  export const formatBooleanError: TypeErrorFormatter<TypeOfError<"Boolean">> =
111
121
  formatTypeOfError;
112
122
 
123
+ /** Formata um BooleanFromStringError em português brasileiro. */
124
+ export const formatBooleanFromStringError: TypeErrorFormatter<
125
+ BooleanFromStringError
126
+ > = (error) =>
127
+ `O valor ${safelyStringifyUnknownValue(error.value)} não é um booleano. Use true ou false.`;
128
+
113
129
  /** Formata um TypeOfError de Symbol em português brasileiro. */
114
130
  export const formatSymbolError: TypeErrorFormatter<TypeOfError<"Symbol">> =
115
131
  formatTypeOfError;
@@ -172,16 +188,46 @@ export const formatInt64StringError: TypeErrorFormatter<Int64StringError> = (
172
188
  ) =>
173
189
  `O valor ${safelyStringifyUnknownValue(error.value)} não é uma string Int64 válida.`;
174
190
 
191
+ /** Formats an IdentifierError in Brazilian Portuguese. */
192
+ export const formatIdentifierError: TypeErrorFormatter<IdentifierError> = (
193
+ error,
194
+ ) =>
195
+ `O valor ${safelyStringifyUnknownValue(error.value)} não é um identificador ${error.casing}.`;
196
+
175
197
  /** Formata um CapitalizedError em português brasileiro. */
176
198
  export const formatCapitalizedError: TypeErrorFormatter<CapitalizedError> = (
177
199
  error,
178
200
  ) =>
179
201
  `O valor ${safelyStringifyUnknownValue(error.value)} deve começar com letra maiúscula.`;
180
202
 
203
+ /** Formats an UncapitalizedError in Brazilian Portuguese. */
204
+ export const formatUncapitalizedError: TypeErrorFormatter<
205
+ UncapitalizedError
206
+ > = (error) =>
207
+ `O valor ${safelyStringifyUnknownValue(error.value)} não deve começar com uma letra maiúscula.`;
208
+
209
+ /** Formats an UppercasedError in Brazilian Portuguese. */
210
+ export const formatUppercasedError: TypeErrorFormatter<UppercasedError> = (
211
+ error,
212
+ ) =>
213
+ `O valor ${safelyStringifyUnknownValue(error.value)} deve estar em letras maiúsculas.`;
214
+
215
+ /** Formats a LowercasedError in Brazilian Portuguese. */
216
+ export const formatLowercasedError: TypeErrorFormatter<LowercasedError> = (
217
+ error,
218
+ ) =>
219
+ `O valor ${safelyStringifyUnknownValue(error.value)} deve estar em letras minúsculas.`;
220
+
181
221
  /** Formata um TrimmedError em português brasileiro. */
182
222
  export const formatTrimmedError: TypeErrorFormatter<TrimmedError> = (error) =>
183
223
  `O valor ${safelyStringifyUnknownValue(error.value)} deve estar sem espaços nas extremidades.`;
184
224
 
225
+ /** Formats a StartsWithError in Brazilian Portuguese. */
226
+ export const formatStartsWithError: TypeErrorFormatter<StartsWithError> = (
227
+ error,
228
+ ) =>
229
+ `O valor ${safelyStringifyUnknownValue(error.value)} deve começar com ${safelyStringifyUnknownValue(error.prefix)}.`;
230
+
185
231
  /** Formata um MinLengthError em português brasileiro. */
186
232
  export const formatMinLengthError: TypeErrorFormatter<MinLengthError> = (
187
233
  error,
@@ -272,6 +318,12 @@ export const formatNegativeDecimalStringError: TypeErrorFormatter<
272
318
  export const formatIntError: TypeErrorFormatter<IntError> = (error) =>
273
319
  `O valor ${safelyStringifyUnknownValue(error.value)} deve ser um inteiro seguro.`;
274
320
 
321
+ /** Formata um IntFromStringError em português brasileiro. */
322
+ export const formatIntFromStringError: TypeErrorFormatter<
323
+ IntFromStringError
324
+ > = (error) =>
325
+ `O valor ${safelyStringifyUnknownValue(error.value)} não é um inteiro decimal.`;
326
+
275
327
  /** Formata um GreaterThanError em português brasileiro. */
276
328
  export const formatGreaterThanError: TypeErrorFormatter<GreaterThanError> = (
277
329
  error,
@@ -500,3 +552,21 @@ export const formatJsonValueError: TypeErrorFormatter<JsonValueError> = (
500
552
  /** Formata um JsonError em português brasileiro. */
501
553
  export const formatJsonError: TypeErrorFormatter<JsonError> = (error) =>
502
554
  `O valor ${safelyStringifyUnknownValue(error.value)} não pode ser analisado como um JsonValue.`;
555
+
556
+ /** Formats a {@link ByteSizeLiteralError}. */
557
+ export const formatByteSizeLiteralError: TypeErrorFormatter<
558
+ ByteSizeLiteralError
559
+ > = (error) =>
560
+ `O valor ${safelyStringifyUnknownValue(error.value)} não é um literal de tamanho em bytes. Use um valor como "512KiB" ou "1MiB".`;
561
+
562
+ /** Formats a {@link DurationLiteralError}. */
563
+ export const formatDurationLiteralError: TypeErrorFormatter<
564
+ DurationLiteralError
565
+ > = (error) =>
566
+ `O valor ${safelyStringifyUnknownValue(error.value)} não é um literal de duração. Use um valor como "500ms" ou "1.5s".`;
567
+
568
+ /** Formats a {@link PercentageLiteralError}. */
569
+ export const formatPercentageLiteralError: TypeErrorFormatter<
570
+ PercentageLiteralError
571
+ > = (error) =>
572
+ `O valor ${safelyStringifyUnknownValue(error.value)} não é um literal de porcentagem. Use um valor como "50%" ou "12.5%".`;
package/src/intl/pt.ts CHANGED
@@ -4,13 +4,21 @@
4
4
  * @module
5
5
  */
6
6
 
7
+ import type { DurationLiteralError } from "../Time.ts";
8
+ import type { PercentageLiteralError } from "../Number.ts";
9
+ import type { ByteSizeLiteralError } from "../Bytes.ts";
7
10
  import { assertNonNullable } from "../Assert.ts";
8
11
  import { safelyStringifyUnknownValue } from "../String.ts";
9
12
  import type {
10
13
  ArrayError,
11
14
  Base64UrlError,
15
+ BooleanFromStringError,
12
16
  BetweenError,
17
+ IdentifierError,
13
18
  CapitalizedError,
19
+ UncapitalizedError,
20
+ UppercasedError,
21
+ LowercasedError,
14
22
  DateIsoError,
15
23
  DateIsoFromDateError,
16
24
  DecimalStringError,
@@ -23,6 +31,7 @@ import type {
23
31
  Int64Error,
24
32
  Int64StringError,
25
33
  IntError,
34
+ IntFromStringError,
26
35
  IdError,
27
36
  JsonError,
28
37
  JsonValueError,
@@ -56,6 +65,7 @@ import type {
56
65
  SetError,
57
66
  TableIdError,
58
67
  TemplateLiteralError,
68
+ StartsWithError,
59
69
  TrimmedError,
60
70
  TupleElementsError,
61
71
  TupleError,
@@ -114,6 +124,12 @@ export const formatSymbolError: TypeErrorFormatter<TypeOfError<"Symbol">> =
114
124
  export const formatFunctionError: TypeErrorFormatter<TypeOfError<"Function">> =
115
125
  formatTypeOfError;
116
126
 
127
+ /** Formata um BooleanFromStringError em português. */
128
+ export const formatBooleanFromStringError: TypeErrorFormatter<
129
+ BooleanFromStringError
130
+ > = (error) =>
131
+ `O valor ${safelyStringifyUnknownValue(error.value)} não é um booleano. Utilize true ou false.`;
132
+
117
133
  /** Formata um EvoluTypeError em português. */
118
134
  export const formatEvoluTypeError: TypeErrorFormatter<EvoluTypeError> = (
119
135
  error,
@@ -158,14 +174,45 @@ export const formatInt64StringError: TypeErrorFormatter<Int64StringError> = (
158
174
  error,
159
175
  ) =>
160
176
  `O valor ${safelyStringifyUnknownValue(error.value)} não é uma cadeia de carateres Int64 válida.`;
177
+
178
+ /** Formats an IdentifierError in Portuguese. */
179
+ export const formatIdentifierError: TypeErrorFormatter<IdentifierError> = (
180
+ error,
181
+ ) =>
182
+ `O valor ${safelyStringifyUnknownValue(error.value)} não é um identificador ${error.casing}.`;
183
+
161
184
  /** Formata um CapitalizedError em português. */
162
185
  export const formatCapitalizedError: TypeErrorFormatter<CapitalizedError> = (
163
186
  error,
164
187
  ) =>
165
188
  `O valor ${safelyStringifyUnknownValue(error.value)} tem de começar por maiúscula.`;
189
+
190
+ /** Formats an UncapitalizedError in Portuguese. */
191
+ export const formatUncapitalizedError: TypeErrorFormatter<
192
+ UncapitalizedError
193
+ > = (error) =>
194
+ `O valor ${safelyStringifyUnknownValue(error.value)} não pode começar por uma letra maiúscula.`;
195
+
196
+ /** Formats an UppercasedError in Portuguese. */
197
+ export const formatUppercasedError: TypeErrorFormatter<UppercasedError> = (
198
+ error,
199
+ ) =>
200
+ `O valor ${safelyStringifyUnknownValue(error.value)} tem de estar em maiúsculas.`;
201
+
202
+ /** Formats a LowercasedError in Portuguese. */
203
+ export const formatLowercasedError: TypeErrorFormatter<LowercasedError> = (
204
+ error,
205
+ ) =>
206
+ `O valor ${safelyStringifyUnknownValue(error.value)} tem de estar em minúsculas.`;
166
207
  /** Formata um TrimmedError em português. */
167
208
  export const formatTrimmedError: TypeErrorFormatter<TrimmedError> = (error) =>
168
209
  `O valor ${safelyStringifyUnknownValue(error.value)} tem de estar sem espaços no início ou no fim.`;
210
+ /** Formats a StartsWithError in Portuguese. */
211
+ export const formatStartsWithError: TypeErrorFormatter<StartsWithError> = (
212
+ error,
213
+ ) =>
214
+ `O valor ${safelyStringifyUnknownValue(error.value)} tem de começar por ${safelyStringifyUnknownValue(error.prefix)}.`;
215
+
169
216
  /** Formata um MinLengthError em português. */
170
217
  export const formatMinLengthError: TypeErrorFormatter<MinLengthError> = (
171
218
  error,
@@ -271,6 +318,12 @@ export const formatMultipleOfError: TypeErrorFormatter<MultipleOfError> = (
271
318
  export const formatBetweenError: TypeErrorFormatter<BetweenError> = (error) =>
272
319
  `O valor ${safelyStringifyUnknownValue(error.value)} tem de estar entre ${error.min} e ${error.max}, inclusive.`;
273
320
 
321
+ /** Formata um IntFromStringError em português. */
322
+ export const formatIntFromStringError: TypeErrorFormatter<
323
+ IntFromStringError
324
+ > = (error) =>
325
+ `O valor ${safelyStringifyUnknownValue(error.value)} não é um inteiro decimal.`;
326
+
274
327
  /** Formata um ArrayError em português. */
275
328
  export const formatArrayError: TypeErrorFormatter<ArrayError> = (error) => {
276
329
  if (error.reason.kind === "NotArray") {
@@ -437,3 +490,21 @@ export const formatJsonValueError: TypeErrorFormatter<JsonValueError> = (
437
490
  /** Formata um JsonError em português. */
438
491
  export const formatJsonError: TypeErrorFormatter<JsonError> = (error) =>
439
492
  `O valor ${safelyStringifyUnknownValue(error.value)} não pode ser analisado como JsonValue.`;
493
+
494
+ /** Formats a {@link ByteSizeLiteralError}. */
495
+ export const formatByteSizeLiteralError: TypeErrorFormatter<
496
+ ByteSizeLiteralError
497
+ > = (error) =>
498
+ `O valor ${safelyStringifyUnknownValue(error.value)} não é um literal de tamanho em bytes. Utilize um valor como "512KiB" ou "1MiB".`;
499
+
500
+ /** Formats a {@link DurationLiteralError}. */
501
+ export const formatDurationLiteralError: TypeErrorFormatter<
502
+ DurationLiteralError
503
+ > = (error) =>
504
+ `O valor ${safelyStringifyUnknownValue(error.value)} não é um literal de duração. Utilize um valor como "500ms" ou "1.5s".`;
505
+
506
+ /** Formats a {@link PercentageLiteralError}. */
507
+ export const formatPercentageLiteralError: TypeErrorFormatter<
508
+ PercentageLiteralError
509
+ > = (error) =>
510
+ `O valor ${safelyStringifyUnknownValue(error.value)} não é um literal de percentagem. Utilize um valor como "50%" ou "12.5%".`;
package/src/intl/ro.ts CHANGED
@@ -4,13 +4,21 @@
4
4
  * @module
5
5
  */
6
6
 
7
+ import type { DurationLiteralError } from "../Time.ts";
8
+ import type { PercentageLiteralError } from "../Number.ts";
9
+ import type { ByteSizeLiteralError } from "../Bytes.ts";
7
10
  import { assertNonNullable } from "../Assert.ts";
8
11
  import { safelyStringifyUnknownValue } from "../String.ts";
9
12
  import type {
10
13
  ArrayError,
11
14
  Base64UrlError,
15
+ BooleanFromStringError,
12
16
  BetweenError,
17
+ IdentifierError,
13
18
  CapitalizedError,
19
+ UncapitalizedError,
20
+ UppercasedError,
21
+ LowercasedError,
14
22
  DateIsoError,
15
23
  DateIsoFromDateError,
16
24
  DecimalStringError,
@@ -23,6 +31,7 @@ import type {
23
31
  Int64Error,
24
32
  Int64StringError,
25
33
  IntError,
34
+ IntFromStringError,
26
35
  IdError,
27
36
  JsonError,
28
37
  JsonValueError,
@@ -56,6 +65,7 @@ import type {
56
65
  SetError,
57
66
  TableIdError,
58
67
  TemplateLiteralError,
68
+ StartsWithError,
59
69
  TrimmedError,
60
70
  TupleElementsError,
61
71
  TupleError,
@@ -110,6 +120,12 @@ export const formatBigIntError: TypeErrorFormatter<TypeOfError<"BigInt">> =
110
120
  export const formatBooleanError: TypeErrorFormatter<TypeOfError<"Boolean">> =
111
121
  formatTypeOfError;
112
122
 
123
+ /** Formatează un BooleanFromStringError în română. */
124
+ export const formatBooleanFromStringError: TypeErrorFormatter<
125
+ BooleanFromStringError
126
+ > = (error) =>
127
+ `Valoarea ${safelyStringifyUnknownValue(error.value)} nu este o valoare booleană. Folosiți true sau false.`;
128
+
113
129
  /** Formatează un Symbol TypeOfError în română. */
114
130
  export const formatSymbolError: TypeErrorFormatter<TypeOfError<"Symbol">> =
115
131
  formatTypeOfError;
@@ -173,16 +189,46 @@ export const formatInt64StringError: TypeErrorFormatter<Int64StringError> = (
173
189
  ) =>
174
190
  `Valoarea ${safelyStringifyUnknownValue(error.value)} nu este un șir Int64 valid.`;
175
191
 
192
+ /** Formats an IdentifierError in Romanian. */
193
+ export const formatIdentifierError: TypeErrorFormatter<IdentifierError> = (
194
+ error,
195
+ ) =>
196
+ `Valoarea ${safelyStringifyUnknownValue(error.value)} nu este un identificator ${error.casing}.`;
197
+
176
198
  /** Formatează un CapitalizedError în română. */
177
199
  export const formatCapitalizedError: TypeErrorFormatter<CapitalizedError> = (
178
200
  error,
179
201
  ) =>
180
202
  `Valoarea ${safelyStringifyUnknownValue(error.value)} trebuie să înceapă cu literă mare.`;
181
203
 
204
+ /** Formats an UncapitalizedError in Romanian. */
205
+ export const formatUncapitalizedError: TypeErrorFormatter<
206
+ UncapitalizedError
207
+ > = (error) =>
208
+ `Valoarea ${safelyStringifyUnknownValue(error.value)} nu trebuie să înceapă cu o literă mare.`;
209
+
210
+ /** Formats an UppercasedError in Romanian. */
211
+ export const formatUppercasedError: TypeErrorFormatter<UppercasedError> = (
212
+ error,
213
+ ) =>
214
+ `Valoarea ${safelyStringifyUnknownValue(error.value)} trebuie să fie scrisă cu majuscule.`;
215
+
216
+ /** Formats a LowercasedError in Romanian. */
217
+ export const formatLowercasedError: TypeErrorFormatter<LowercasedError> = (
218
+ error,
219
+ ) =>
220
+ `Valoarea ${safelyStringifyUnknownValue(error.value)} trebuie să fie scrisă cu minuscule.`;
221
+
182
222
  /** Formatează un TrimmedError în română. */
183
223
  export const formatTrimmedError: TypeErrorFormatter<TrimmedError> = (error) =>
184
224
  `Valoarea ${safelyStringifyUnknownValue(error.value)} trebuie să fie fără spații la început sau la sfârșit.`;
185
225
 
226
+ /** Formats a StartsWithError in Romanian. */
227
+ export const formatStartsWithError: TypeErrorFormatter<StartsWithError> = (
228
+ error,
229
+ ) =>
230
+ `Valoarea ${safelyStringifyUnknownValue(error.value)} trebuie să înceapă cu ${safelyStringifyUnknownValue(error.prefix)}.`;
231
+
186
232
  /** Formatează un MinLengthError în română. */
187
233
  export const formatMinLengthError: TypeErrorFormatter<MinLengthError> = (
188
234
  error,
@@ -273,6 +319,12 @@ export const formatNegativeDecimalStringError: TypeErrorFormatter<
273
319
  export const formatIntError: TypeErrorFormatter<IntError> = (error) =>
274
320
  `Valoarea ${safelyStringifyUnknownValue(error.value)} trebuie să fie un număr întreg sigur.`;
275
321
 
322
+ /** Formatează un IntFromStringError în română. */
323
+ export const formatIntFromStringError: TypeErrorFormatter<
324
+ IntFromStringError
325
+ > = (error) =>
326
+ `Valoarea ${safelyStringifyUnknownValue(error.value)} nu este un întreg zecimal.`;
327
+
276
328
  /** Formatează un GreaterThanError în română. */
277
329
  export const formatGreaterThanError: TypeErrorFormatter<GreaterThanError> = (
278
330
  error,
@@ -501,3 +553,21 @@ export const formatJsonValueError: TypeErrorFormatter<JsonValueError> = (
501
553
  /** Formatează un JsonError în română. */
502
554
  export const formatJsonError: TypeErrorFormatter<JsonError> = (error) =>
503
555
  `Valoarea ${safelyStringifyUnknownValue(error.value)} nu poate fi analizată ca JsonValue.`;
556
+
557
+ /** Formats a {@link ByteSizeLiteralError}. */
558
+ export const formatByteSizeLiteralError: TypeErrorFormatter<
559
+ ByteSizeLiteralError
560
+ > = (error) =>
561
+ `Valoarea ${safelyStringifyUnknownValue(error.value)} nu este un literal de dimensiune în octeți. Folosiți o valoare precum "512KiB" sau "1MiB".`;
562
+
563
+ /** Formats a {@link DurationLiteralError}. */
564
+ export const formatDurationLiteralError: TypeErrorFormatter<
565
+ DurationLiteralError
566
+ > = (error) =>
567
+ `Valoarea ${safelyStringifyUnknownValue(error.value)} nu este un literal de durată. Folosiți o valoare precum "500ms" sau "1.5s".`;
568
+
569
+ /** Formats a {@link PercentageLiteralError}. */
570
+ export const formatPercentageLiteralError: TypeErrorFormatter<
571
+ PercentageLiteralError
572
+ > = (error) =>
573
+ `Valoarea ${safelyStringifyUnknownValue(error.value)} nu este un literal de procentaj. Folosiți o valoare precum "50%" sau "12.5%".`;
package/src/intl/sk.ts CHANGED
@@ -4,13 +4,21 @@
4
4
  * @module
5
5
  */
6
6
 
7
+ import type { DurationLiteralError } from "../Time.ts";
8
+ import type { PercentageLiteralError } from "../Number.ts";
9
+ import type { ByteSizeLiteralError } from "../Bytes.ts";
7
10
  import { assertNonNullable } from "../Assert.ts";
8
11
  import { safelyStringifyUnknownValue } from "../String.ts";
9
12
  import type {
10
13
  ArrayError,
11
14
  Base64UrlError,
15
+ BooleanFromStringError,
12
16
  BetweenError,
17
+ IdentifierError,
13
18
  CapitalizedError,
19
+ UncapitalizedError,
20
+ UppercasedError,
21
+ LowercasedError,
14
22
  DateIsoError,
15
23
  DateIsoFromDateError,
16
24
  DecimalStringError,
@@ -23,6 +31,7 @@ import type {
23
31
  Int64Error,
24
32
  Int64StringError,
25
33
  IntError,
34
+ IntFromStringError,
26
35
  IdError,
27
36
  JsonError,
28
37
  JsonValueError,
@@ -56,6 +65,7 @@ import type {
56
65
  SetError,
57
66
  TableIdError,
58
67
  TemplateLiteralError,
68
+ StartsWithError,
59
69
  TrimmedError,
60
70
  TupleElementsError,
61
71
  TupleError,
@@ -152,14 +162,45 @@ export const formatInt64StringError: TypeErrorFormatter<Int64StringError> = (
152
162
  error,
153
163
  ) =>
154
164
  `Hodnota ${safelyStringifyUnknownValue(error.value)} musí byť platný reťazec Int64.`;
165
+
166
+ /** Formats an IdentifierError in Slovak. */
167
+ export const formatIdentifierError: TypeErrorFormatter<IdentifierError> = (
168
+ error,
169
+ ) =>
170
+ `Hodnota ${safelyStringifyUnknownValue(error.value)} nie je identifikátor vo formáte ${error.casing}.`;
171
+
155
172
  /** Formats a CapitalizedError in Slovak. */
156
173
  export const formatCapitalizedError: TypeErrorFormatter<CapitalizedError> = (
157
174
  error,
158
175
  ) =>
159
176
  `Reťazec ${safelyStringifyUnknownValue(error.value)} musí začínať veľkým písmenom.`;
177
+
178
+ /** Formats an UncapitalizedError in Slovak. */
179
+ export const formatUncapitalizedError: TypeErrorFormatter<
180
+ UncapitalizedError
181
+ > = (error) =>
182
+ `Hodnota ${safelyStringifyUnknownValue(error.value)} nesmie začínať veľkým písmenom.`;
183
+
184
+ /** Formats an UppercasedError in Slovak. */
185
+ export const formatUppercasedError: TypeErrorFormatter<UppercasedError> = (
186
+ error,
187
+ ) =>
188
+ `Hodnota ${safelyStringifyUnknownValue(error.value)} musí byť napísaná veľkými písmenami.`;
189
+
190
+ /** Formats a LowercasedError in Slovak. */
191
+ export const formatLowercasedError: TypeErrorFormatter<LowercasedError> = (
192
+ error,
193
+ ) =>
194
+ `Hodnota ${safelyStringifyUnknownValue(error.value)} musí byť napísaná malými písmenami.`;
160
195
  /** Formats a TrimmedError in Slovak. */
161
196
  export const formatTrimmedError: TypeErrorFormatter<TrimmedError> = (error) =>
162
197
  `Reťazec ${safelyStringifyUnknownValue(error.value)} nesmie obsahovať medzery na začiatku ani na konci.`;
198
+ /** Formats a StartsWithError in Slovak. */
199
+ export const formatStartsWithError: TypeErrorFormatter<StartsWithError> = (
200
+ error,
201
+ ) =>
202
+ `Hodnota ${safelyStringifyUnknownValue(error.value)} musí začínať na ${safelyStringifyUnknownValue(error.prefix)}.`;
203
+
163
204
  /** Formats a MinLengthError in Slovak. */
164
205
  export const formatMinLengthError: TypeErrorFormatter<MinLengthError> = (
165
206
  error,
@@ -267,6 +308,18 @@ export const formatMultipleOfError: TypeErrorFormatter<MultipleOfError> = (
267
308
  export const formatBetweenError: TypeErrorFormatter<BetweenError> = (error) =>
268
309
  `Hodnota ${safelyStringifyUnknownValue(error.value)} musí byť v rozsahu od ${error.min} do ${error.max} vrátane.`;
269
310
 
311
+ /** Formats a BooleanFromStringError in Slovak. */
312
+ export const formatBooleanFromStringError: TypeErrorFormatter<
313
+ BooleanFromStringError
314
+ > = (error) =>
315
+ `Hodnota ${safelyStringifyUnknownValue(error.value)} musí byť true alebo false.`;
316
+
317
+ /** Formats an IntFromStringError in Slovak. */
318
+ export const formatIntFromStringError: TypeErrorFormatter<
319
+ IntFromStringError
320
+ > = (error) =>
321
+ `Hodnota ${safelyStringifyUnknownValue(error.value)} musí byť celé číslo v desiatkovom zápise.`;
322
+
270
323
  /** Formats an ArrayError in Slovak. */
271
324
  export const formatArrayError: TypeErrorFormatter<ArrayError> = (error) => {
272
325
  if (error.reason.kind === "NotArray")
@@ -425,3 +478,21 @@ export const formatJsonValueError: TypeErrorFormatter<JsonValueError> = (
425
478
  /** Formats a JsonError in Slovak. */
426
479
  export const formatJsonError: TypeErrorFormatter<JsonError> = (error) =>
427
480
  `Hodnotu ${safelyStringifyUnknownValue(error.value)} nemožno analyzovať ako JsonValue.`;
481
+
482
+ /** Formats a {@link ByteSizeLiteralError}. */
483
+ export const formatByteSizeLiteralError: TypeErrorFormatter<
484
+ ByteSizeLiteralError
485
+ > = (error) =>
486
+ `Hodnota ${safelyStringifyUnknownValue(error.value)} nie je literál veľkosti v bajtoch. Použite hodnotu ako "512KiB" alebo "1MiB".`;
487
+
488
+ /** Formats a {@link DurationLiteralError}. */
489
+ export const formatDurationLiteralError: TypeErrorFormatter<
490
+ DurationLiteralError
491
+ > = (error) =>
492
+ `Hodnota ${safelyStringifyUnknownValue(error.value)} nie je literál trvania. Použite hodnotu ako "500ms" alebo "1.5s".`;
493
+
494
+ /** Formats a {@link PercentageLiteralError}. */
495
+ export const formatPercentageLiteralError: TypeErrorFormatter<
496
+ PercentageLiteralError
497
+ > = (error) =>
498
+ `Hodnota ${safelyStringifyUnknownValue(error.value)} nie je percentuálny literál. Použite hodnotu ako "50%" alebo "12.5%".`;
package/src/intl/sl.ts CHANGED
@@ -4,13 +4,21 @@
4
4
  * @module
5
5
  */
6
6
 
7
+ import type { DurationLiteralError } from "../Time.ts";
8
+ import type { PercentageLiteralError } from "../Number.ts";
9
+ import type { ByteSizeLiteralError } from "../Bytes.ts";
7
10
  import { assertNonNullable } from "../Assert.ts";
8
11
  import { safelyStringifyUnknownValue } from "../String.ts";
9
12
  import type {
10
13
  ArrayError,
11
14
  Base64UrlError,
15
+ BooleanFromStringError,
12
16
  BetweenError,
17
+ IdentifierError,
13
18
  CapitalizedError,
19
+ UncapitalizedError,
20
+ UppercasedError,
21
+ LowercasedError,
14
22
  DateIsoError,
15
23
  DateIsoFromDateError,
16
24
  DecimalStringError,
@@ -23,6 +31,7 @@ import type {
23
31
  Int64Error,
24
32
  Int64StringError,
25
33
  IntError,
34
+ IntFromStringError,
26
35
  IdError,
27
36
  JsonError,
28
37
  JsonValueError,
@@ -56,6 +65,7 @@ import type {
56
65
  SetError,
57
66
  TableIdError,
58
67
  TemplateLiteralError,
68
+ StartsWithError,
59
69
  TrimmedError,
60
70
  TupleElementsError,
61
71
  TupleError,
@@ -110,6 +120,12 @@ export const formatBigIntError: TypeErrorFormatter<TypeOfError<"BigInt">> =
110
120
  export const formatBooleanError: TypeErrorFormatter<TypeOfError<"Boolean">> =
111
121
  formatTypeOfError;
112
122
 
123
+ /** Formats a BooleanFromStringError in Slovene. */
124
+ export const formatBooleanFromStringError: TypeErrorFormatter<
125
+ BooleanFromStringError
126
+ > = (error) =>
127
+ `Vrednost ${safelyStringifyUnknownValue(error.value)} ni logična vrednost. Uporabite true ali false.`;
128
+
113
129
  /** Formats a Symbol TypeOfError in Slovene. */
114
130
  export const formatSymbolError: TypeErrorFormatter<TypeOfError<"Symbol">> =
115
131
  formatTypeOfError;
@@ -172,16 +188,46 @@ export const formatInt64StringError: TypeErrorFormatter<Int64StringError> = (
172
188
  ) =>
173
189
  `Vrednost ${safelyStringifyUnknownValue(error.value)} ni veljaven niz Int64.`;
174
190
 
191
+ /** Formats an IdentifierError in Slovenian. */
192
+ export const formatIdentifierError: TypeErrorFormatter<IdentifierError> = (
193
+ error,
194
+ ) =>
195
+ `Vrednost ${safelyStringifyUnknownValue(error.value)} ni identifikator v obliki ${error.casing}.`;
196
+
175
197
  /** Formats a CapitalizedError in Slovene. */
176
198
  export const formatCapitalizedError: TypeErrorFormatter<CapitalizedError> = (
177
199
  error,
178
200
  ) =>
179
201
  `Vrednost ${safelyStringifyUnknownValue(error.value)} se mora začeti z veliko začetnico.`;
180
202
 
203
+ /** Formats an UncapitalizedError in Slovenian. */
204
+ export const formatUncapitalizedError: TypeErrorFormatter<
205
+ UncapitalizedError
206
+ > = (error) =>
207
+ `Vrednost ${safelyStringifyUnknownValue(error.value)} se ne sme začeti z veliko črko.`;
208
+
209
+ /** Formats an UppercasedError in Slovenian. */
210
+ export const formatUppercasedError: TypeErrorFormatter<UppercasedError> = (
211
+ error,
212
+ ) =>
213
+ `Vrednost ${safelyStringifyUnknownValue(error.value)} mora biti zapisana z velikimi črkami.`;
214
+
215
+ /** Formats a LowercasedError in Slovenian. */
216
+ export const formatLowercasedError: TypeErrorFormatter<LowercasedError> = (
217
+ error,
218
+ ) =>
219
+ `Vrednost ${safelyStringifyUnknownValue(error.value)} mora biti zapisana z malimi črkami.`;
220
+
181
221
  /** Formats a TrimmedError in Slovene. */
182
222
  export const formatTrimmedError: TypeErrorFormatter<TrimmedError> = (error) =>
183
223
  `Vrednost ${safelyStringifyUnknownValue(error.value)} mora biti brez presledkov na začetku in koncu.`;
184
224
 
225
+ /** Formats a StartsWithError in Slovene. */
226
+ export const formatStartsWithError: TypeErrorFormatter<StartsWithError> = (
227
+ error,
228
+ ) =>
229
+ `Vrednost ${safelyStringifyUnknownValue(error.value)} se mora začeti z ${safelyStringifyUnknownValue(error.prefix)}.`;
230
+
185
231
  /** Formats a MinLengthError in Slovene. */
186
232
  export const formatMinLengthError: TypeErrorFormatter<MinLengthError> = (
187
233
  error,
@@ -272,6 +318,12 @@ export const formatNegativeDecimalStringError: TypeErrorFormatter<
272
318
  export const formatIntError: TypeErrorFormatter<IntError> = (error) =>
273
319
  `Vrednost ${safelyStringifyUnknownValue(error.value)} mora biti varno celo število.`;
274
320
 
321
+ /** Formats an IntFromStringError in Slovene. */
322
+ export const formatIntFromStringError: TypeErrorFormatter<
323
+ IntFromStringError
324
+ > = (error) =>
325
+ `Vrednost ${safelyStringifyUnknownValue(error.value)} ni decimalno celo število.`;
326
+
275
327
  /** Formats a GreaterThanError in Slovene. */
276
328
  export const formatGreaterThanError: TypeErrorFormatter<GreaterThanError> = (
277
329
  error,
@@ -500,3 +552,21 @@ export const formatJsonValueError: TypeErrorFormatter<JsonValueError> = (
500
552
  /** Formats a JsonError in Slovene. */
501
553
  export const formatJsonError: TypeErrorFormatter<JsonError> = (error) =>
502
554
  `Vrednosti ${safelyStringifyUnknownValue(error.value)} ni mogoče razčleniti v JsonValue.`;
555
+
556
+ /** Formats a {@link ByteSizeLiteralError}. */
557
+ export const formatByteSizeLiteralError: TypeErrorFormatter<
558
+ ByteSizeLiteralError
559
+ > = (error) =>
560
+ `Vrednost ${safelyStringifyUnknownValue(error.value)} ni literal velikosti v bajtih. Uporabite vrednost, kot je "512KiB" ali "1MiB".`;
561
+
562
+ /** Formats a {@link DurationLiteralError}. */
563
+ export const formatDurationLiteralError: TypeErrorFormatter<
564
+ DurationLiteralError
565
+ > = (error) =>
566
+ `Vrednost ${safelyStringifyUnknownValue(error.value)} ni literal trajanja. Uporabite vrednost, kot je "500ms" ali "1.5s".`;
567
+
568
+ /** Formats a {@link PercentageLiteralError}. */
569
+ export const formatPercentageLiteralError: TypeErrorFormatter<
570
+ PercentageLiteralError
571
+ > = (error) =>
572
+ `Vrednost ${safelyStringifyUnknownValue(error.value)} ni odstotni literal. Uporabite vrednost, kot je "50%" ali "12.5%".`;