@evolu/common 8.2.0 → 8.3.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 (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 +1285 -734
  24. package/dist/src/Type.d.ts.map +1 -1
  25. package/dist/src/Type.js +1057 -193
  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 +1598 -712
  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/sv.ts ADDED
@@ -0,0 +1,488 @@
1
+ /**
2
+ * Svenska Evolu Type-felformaterare.
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 `Värdet ${safelyStringifyUnknownValue(error.value)} har inte typen ${typeOf}.`;
76
+ };
77
+
78
+ const formatPlainObjectRootError = (
79
+ reason:
80
+ ObjectNotObjectError["reason"] | ObjectUnexpectedPrototypeError["reason"],
81
+ ): string =>
82
+ reason.kind === "NotObject"
83
+ ? `Värdet ${safelyStringifyUnknownValue(reason.value)} är inte ett objekt.`
84
+ : "Värdet är ett objekt, men en Object Output måste vara ett vanligt objekt eller ha en null-prototyp.";
85
+
86
+ /** Formaterar ett NeverError på svenska. */
87
+ export const formatNeverError: TypeErrorFormatter<NeverError> = (error) =>
88
+ `Värdet ${safelyStringifyUnknownValue(error.value)} är inte giltigt för typen Never.`;
89
+
90
+ /** Formaterar ett String TypeOfError på svenska. */
91
+ export const formatStringError: TypeErrorFormatter<TypeOfError<"String">> =
92
+ formatTypeOfError;
93
+
94
+ /** Formaterar ett TemplateLiteralError på svenska. */
95
+ export const formatTemplateLiteralError: TypeErrorFormatter<
96
+ TemplateLiteralError
97
+ > = (error) =>
98
+ `Värdet ${safelyStringifyUnknownValue(error.value)} matchar inte mallsträngen.`;
99
+
100
+ /** Formaterar ett Number TypeOfError på svenska. */
101
+ export const formatNumberError: TypeErrorFormatter<TypeOfError<"Number">> =
102
+ formatTypeOfError;
103
+
104
+ /** Formaterar ett BigInt TypeOfError på svenska. */
105
+ export const formatBigIntError: TypeErrorFormatter<TypeOfError<"BigInt">> =
106
+ formatTypeOfError;
107
+
108
+ /** Formaterar ett Boolean TypeOfError på svenska. */
109
+ export const formatBooleanError: TypeErrorFormatter<TypeOfError<"Boolean">> =
110
+ formatTypeOfError;
111
+
112
+ /** Formaterar ett Symbol TypeOfError på svenska. */
113
+ export const formatSymbolError: TypeErrorFormatter<TypeOfError<"Symbol">> =
114
+ formatTypeOfError;
115
+
116
+ /** Formaterar ett Function TypeOfError på svenska. */
117
+ export const formatFunctionError: TypeErrorFormatter<TypeOfError<"Function">> =
118
+ formatTypeOfError;
119
+
120
+ /** Formaterar ett EvoluTypeError på svenska. */
121
+ export const formatEvoluTypeError: TypeErrorFormatter<EvoluTypeError> = (
122
+ error,
123
+ ) =>
124
+ `Värdet ${safelyStringifyUnknownValue(error.value)} är inte en Evolu Type.`;
125
+
126
+ /** Formaterar ett ObjectTagError på svenska. */
127
+ export const formatObjectTagError: TypeErrorFormatter<ObjectTagError> = (
128
+ error,
129
+ ) =>
130
+ `Värdet ${safelyStringifyUnknownValue(error.value)} har inte den förväntade objekttaggen ${safelyStringifyUnknownValue(error.expected)}.`;
131
+
132
+ /** Formaterar ett InstanceOfError på svenska. */
133
+ export const formatInstanceOfError: TypeErrorFormatter<InstanceOfError> = (
134
+ error,
135
+ ) =>
136
+ `Värdet ${safelyStringifyUnknownValue(error.value)} är inte en instans av ${error.constructorName}.`;
137
+
138
+ /** Formaterar ett LiteralError på svenska. */
139
+ export const formatLiteralError: TypeErrorFormatter<LiteralError> = (error) =>
140
+ `Värdet ${safelyStringifyUnknownValue(error.value)} är inte strikt lika med det förväntade literalvärdet: ${globalThis.String(error.expected)}.`;
141
+
142
+ /** Formaterar ett UnionError på svenska. */
143
+ export const formatUnionError: TypeErrorFormatter<UnionError> = () =>
144
+ "Ett värde matchar ingen tillåten variant.";
145
+
146
+ /** Formaterar ett DateIsoError på svenska. */
147
+ export const formatDateIsoError: TypeErrorFormatter<DateIsoError> = (error) =>
148
+ `Värdet ${safelyStringifyUnknownValue(error.value)} är inte en kanonisk ISO-sträng för datum och tid.`;
149
+
150
+ /** Formaterar ett DateIsoFromDateError på svenska. */
151
+ export const formatDateIsoFromDateError: TypeErrorFormatter<
152
+ DateIsoFromDateError
153
+ > = () => "Date kan inte representeras som DateIso.";
154
+
155
+ /** Formaterar ett DecimalStringError på svenska. */
156
+ export const formatDecimalStringError: TypeErrorFormatter<
157
+ DecimalStringError
158
+ > = (error) =>
159
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara en kanonisk decimalsträng.`;
160
+
161
+ /** Formaterar ett Int64Error på svenska. */
162
+ export const formatInt64Error: TypeErrorFormatter<Int64Error> = (error) =>
163
+ `Värdet ${safelyStringifyUnknownValue(error.value)} är inte ett giltigt signerat 64-bitars heltal (Int64).`;
164
+
165
+ /** Formaterar ett UInt64Error på svenska. */
166
+ export const formatUInt64Error: TypeErrorFormatter<UInt64Error> = (error) =>
167
+ `Värdet ${safelyStringifyUnknownValue(error.value)} är inte ett giltigt osignerat 64-bitars heltal (UInt64).`;
168
+
169
+ /** Formaterar ett Int64StringError på svenska. */
170
+ export const formatInt64StringError: TypeErrorFormatter<Int64StringError> = (
171
+ error,
172
+ ) =>
173
+ `Värdet ${safelyStringifyUnknownValue(error.value)} är inte en giltig Int64-sträng.`;
174
+
175
+ /** Formaterar ett CapitalizedError på svenska. */
176
+ export const formatCapitalizedError: TypeErrorFormatter<CapitalizedError> = (
177
+ error,
178
+ ) =>
179
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste börja med stor bokstav.`;
180
+
181
+ /** Formaterar ett TrimmedError på svenska. */
182
+ export const formatTrimmedError: TypeErrorFormatter<TrimmedError> = (error) =>
183
+ `Värdet ${safelyStringifyUnknownValue(error.value)} får inte ha inledande eller avslutande blanksteg.`;
184
+
185
+ /** Formaterar ett MinLengthError på svenska. */
186
+ export const formatMinLengthError: TypeErrorFormatter<MinLengthError> = (
187
+ error,
188
+ ) =>
189
+ `Värdet ${safelyStringifyUnknownValue(error.value)} uppfyller inte minimilängden ${error.min}.`;
190
+
191
+ /** Formaterar ett MaxLengthError på svenska. */
192
+ export const formatMaxLengthError: TypeErrorFormatter<MaxLengthError> = (
193
+ error,
194
+ ) =>
195
+ `Värdet ${safelyStringifyUnknownValue(error.value)} överskrider maxlängden ${error.max}.`;
196
+
197
+ /** Formaterar ett LengthError på svenska. */
198
+ export const formatLengthError: TypeErrorFormatter<LengthError> = (error) =>
199
+ `Värdet ${safelyStringifyUnknownValue(error.value)} har inte den obligatoriska längden ${error.exact}.`;
200
+
201
+ /** Formaterar ett RegexError på svenska. */
202
+ export const formatRegexError: TypeErrorFormatter<RegexError> = (error) =>
203
+ `Värdet ${safelyStringifyUnknownValue(error.value)} matchar inte /${error.source}/${error.flags}.`;
204
+
205
+ /** Formaterar ett Base64UrlError på svenska. */
206
+ export const formatBase64UrlError: TypeErrorFormatter<Base64UrlError> = (
207
+ error,
208
+ ) =>
209
+ `Värdet ${safelyStringifyUnknownValue(error.value)} är inte en giltig Base64Url-sträng.`;
210
+
211
+ /** Formaterar ett NameError på svenska. */
212
+ export const formatNameError: TypeErrorFormatter<NameError> = (error) =>
213
+ `Värdet ${safelyStringifyUnknownValue(error.value)} är inte ett giltigt Name.`;
214
+
215
+ /** Formaterar ett MnemonicError på svenska. */
216
+ export const formatMnemonicError: TypeErrorFormatter<MnemonicError> = (error) =>
217
+ `Värdet ${safelyStringifyUnknownValue(error.value)} är inte en giltig engelsk BIP39-mnemonisk fras.`;
218
+
219
+ /** Formaterar ett IdError på svenska. */
220
+ export const formatIdError: TypeErrorFormatter<IdError> = (error) =>
221
+ `Värdet ${safelyStringifyUnknownValue(error.value)} är inte ett giltigt Id.`;
222
+
223
+ /** Formaterar ett TableIdError på svenska. */
224
+ export const formatTableIdError: TypeErrorFormatter<TableIdError> = (error) =>
225
+ `Värdet ${safelyStringifyUnknownValue(error.value)} är inte ett giltigt Id för tabellen ${error.table}.`;
226
+
227
+ /** Formaterar ett NonNegativeError på svenska. */
228
+ export const formatNonNegativeError: TypeErrorFormatter<NonNegativeError> = (
229
+ error,
230
+ ) =>
231
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara icke-negativt (>= 0).`;
232
+
233
+ /** Formaterar ett NonNegativeDecimalStringError på svenska. */
234
+ export const formatNonNegativeDecimalStringError: TypeErrorFormatter<
235
+ NonNegativeDecimalStringError
236
+ > = (error) =>
237
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara en icke-negativ decimalsträng.`;
238
+
239
+ /** Formaterar ett PositiveError på svenska. */
240
+ export const formatPositiveError: TypeErrorFormatter<PositiveError> = (error) =>
241
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara positivt (> 0).`;
242
+
243
+ /** Formaterar ett PositiveDecimalStringError på svenska. */
244
+ export const formatPositiveDecimalStringError: TypeErrorFormatter<
245
+ PositiveDecimalStringError
246
+ > = (error) =>
247
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara en positiv decimalsträng.`;
248
+
249
+ /** Formaterar ett NonPositiveError på svenska. */
250
+ export const formatNonPositiveError: TypeErrorFormatter<NonPositiveError> = (
251
+ error,
252
+ ) =>
253
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara icke-positivt (<= 0).`;
254
+
255
+ /** Formaterar ett NonPositiveDecimalStringError på svenska. */
256
+ export const formatNonPositiveDecimalStringError: TypeErrorFormatter<
257
+ NonPositiveDecimalStringError
258
+ > = (error) =>
259
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara en icke-positiv decimalsträng.`;
260
+
261
+ /** Formaterar ett NegativeError på svenska. */
262
+ export const formatNegativeError: TypeErrorFormatter<NegativeError> = (error) =>
263
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara negativt (< 0).`;
264
+
265
+ /** Formaterar ett NegativeDecimalStringError på svenska. */
266
+ export const formatNegativeDecimalStringError: TypeErrorFormatter<
267
+ NegativeDecimalStringError
268
+ > = (error) =>
269
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara en negativ decimalsträng.`;
270
+
271
+ /** Formaterar ett IntError på svenska. */
272
+ export const formatIntError: TypeErrorFormatter<IntError> = (error) =>
273
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara ett säkert heltal.`;
274
+
275
+ /** Formaterar ett GreaterThanError på svenska. */
276
+ export const formatGreaterThanError: TypeErrorFormatter<GreaterThanError> = (
277
+ error,
278
+ ) =>
279
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara större än ${error.min}.`;
280
+
281
+ /** Formaterar ett GreaterThanOrEqualToError på svenska. */
282
+ export const formatGreaterThanOrEqualToError: TypeErrorFormatter<
283
+ GreaterThanOrEqualToError
284
+ > = (error) =>
285
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara större än eller lika med ${error.min}.`;
286
+
287
+ /** Formaterar ett LessThanError på svenska. */
288
+ export const formatLessThanError: TypeErrorFormatter<LessThanError> = (error) =>
289
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara mindre än ${error.max}.`;
290
+
291
+ /** Formaterar ett LessThanOrEqualToError på svenska. */
292
+ export const formatLessThanOrEqualToError: TypeErrorFormatter<
293
+ LessThanOrEqualToError
294
+ > = (error) =>
295
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara mindre än eller lika med ${error.max}.`;
296
+
297
+ /** Formaterar ett NonNaNError på svenska. */
298
+ export const formatNonNaNError: TypeErrorFormatter<NonNaNError> = () =>
299
+ "Värdet får inte vara NaN.";
300
+
301
+ /** Formaterar ett FiniteError på svenska. */
302
+ export const formatFiniteError: TypeErrorFormatter<FiniteError> = (error) =>
303
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara ändligt.`;
304
+
305
+ /** Formaterar ett MultipleOfError på svenska. */
306
+ export const formatMultipleOfError: TypeErrorFormatter<MultipleOfError> = (
307
+ error,
308
+ ) =>
309
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste vara en multipel av ${error.divisor}.`;
310
+
311
+ /** Formaterar ett BetweenError på svenska. */
312
+ export const formatBetweenError: TypeErrorFormatter<BetweenError> = (error) =>
313
+ `Värdet ${safelyStringifyUnknownValue(error.value)} måste ligga mellan ${error.min} och ${error.max}, inklusive.`;
314
+
315
+ /** Formaterar ett ArrayError på svenska. */
316
+ export const formatArrayError: TypeErrorFormatter<ArrayError> = (error) => {
317
+ if (error.reason.kind === "NotArray") {
318
+ return `Värdet ${safelyStringifyUnknownValue(error.reason.value)} är inte en array.`;
319
+ }
320
+ const issue = error.reason.issues[0];
321
+
322
+ switch (issue.kind) {
323
+ case "Hole":
324
+ return `Ett arrayelement vid index ${issue.index} saknas.`;
325
+ case "Accessor":
326
+ return `Ett arrayelement vid index ${issue.index} måste vara en dataegenskap.`;
327
+ case "ExcessProperty":
328
+ return "En extra Array-egenskap är inte tillåten. Ta bort den eller använd en annan Type.";
329
+ case "Element":
330
+ return `Ett arrayelement vid index ${issue.index} är ogiltigt.`;
331
+ }
332
+ };
333
+
334
+ /** Formaterar ett SetError på svenska. */
335
+ export const formatSetError: TypeErrorFormatter<SetError> = (error) => {
336
+ if (error.reason.kind === "NotSet") {
337
+ return `Värdet ${safelyStringifyUnknownValue(error.reason.value)} är inte en Set.`;
338
+ }
339
+ if (error.reason.kind === "UnexpectedPrototype") {
340
+ return "Värdet är en instans av en Set-underklass, men en Set Output måste vara en direkt Set-instans.";
341
+ }
342
+
343
+ const issue = error.reason.issues[0];
344
+
345
+ switch (issue.kind) {
346
+ case "ExcessProperty":
347
+ return `En extra Set-egenskap ${safelyStringifyUnknownValue(issue.key)} är inte tillåten.`;
348
+ case "Element":
349
+ return `Ett Set-element vid index ${issue.index} är ogiltigt.`;
350
+ }
351
+ };
352
+
353
+ /** Formaterar ett TupleError på svenska. */
354
+ export const formatTupleError: TypeErrorFormatter<
355
+ TupleError | TupleElementsError<TypeError>
356
+ > = (error) => {
357
+ if (error.reason.kind === "NotArray") {
358
+ return `Värdet ${safelyStringifyUnknownValue(error.reason.value)} är inte en tuple.`;
359
+ }
360
+ if (error.reason.kind === "InvalidLength") {
361
+ return `En Tuple måste innehålla exakt ${error.reason.expected} element, men värdet innehåller ${error.reason.actual}.`;
362
+ }
363
+
364
+ const issue = error.reason.issues[0];
365
+
366
+ switch (issue.kind) {
367
+ case "Hole":
368
+ return `Ett Tuple-element vid index ${issue.index} saknas.`;
369
+ case "Accessor":
370
+ return `Ett Tuple-element vid index ${issue.index} måste vara en dataegenskap.`;
371
+ case "ExcessProperty":
372
+ return "En extra Tuple-egenskap är inte tillåten. Ta bort den eller använd en annan Type.";
373
+ case "Element":
374
+ return `Ett Tuple-element vid index ${issue.index} är ogiltigt.`;
375
+ }
376
+ };
377
+
378
+ /** Formaterar ett RecordError på svenska. */
379
+ export const formatRecordError: TypeErrorFormatter<RecordError> = (error) => {
380
+ if (error.reason.kind === "NotRecord") {
381
+ return `Värdet ${safelyStringifyUnknownValue(error.reason.value)} är inte en Record.`;
382
+ }
383
+ if (error.reason.kind === "NotPlainRecord") {
384
+ return "Värdet är ett objekt, men en Record Output måste vara ett vanligt objekt eller ha en null-prototyp.";
385
+ }
386
+
387
+ const issue = error.reason.issues[0];
388
+
389
+ switch (issue.kind) {
390
+ case "Key":
391
+ return `Egenskapsnyckeln ${safelyStringifyUnknownValue(issue.key)} är ogiltig.`;
392
+ case "Value":
393
+ return `Värdet för egenskapen ${safelyStringifyUnknownValue(issue.key)} är ogiltigt.`;
394
+ case "Accessor":
395
+ return `En Record-egenskap ${safelyStringifyUnknownValue(issue.key)} måste vara en dataegenskap.`;
396
+ case "NonEnumerable":
397
+ return `En Record-egenskap ${safelyStringifyUnknownValue(issue.key)} måste vara uppräkningsbar.`;
398
+ case "Collision":
399
+ return `Record-nycklarna ${safelyStringifyUnknownValue(issue.previousKey)} och ${safelyStringifyUnknownValue(issue.key)} avkodas till samma nyckel ${safelyStringifyUnknownValue(issue.outputKey)}.`;
400
+ }
401
+ };
402
+
403
+ /** Formaterar ett ObjectError på svenska. */
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 "En Object-egenskap måste vara en dataegenskap. Omvandla accessor-värden till vanliga data innan du använder denna Type eller använd en annan Type.";
418
+ case "NonEnumerable":
419
+ return "En Object-egenskap måste vara uppräkningsbar. Gör den uppräkningsbar eller använd en annan Type.";
420
+ }
421
+ }
422
+ if (propertyError.type === "ObjectMissingProperty") {
423
+ return `Den obligatoriska egenskapen ${safelyStringifyUnknownValue(key)} saknas.`;
424
+ }
425
+ if (typeof key === "symbol") {
426
+ return "En Object-egenskapsnyckel måste vara en sträng. Ta bort symbolegenskapen eller använd en annan Type.";
427
+ }
428
+ if (propertyError.type === "ObjectExcessProperty") {
429
+ return `Egenskapen ${safelyStringifyUnknownValue(key)} är inte tillåten. Ta bort den eller använd en annan Type.`;
430
+ }
431
+ return `Egenskapen ${safelyStringifyUnknownValue(key)} är ogiltigt.`;
432
+ };
433
+
434
+ /** Formaterar ett DiscriminatedUnionError på svenska. */
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 = `Diskriminatoregenskapen ${safelyStringifyUnknownValue(error.reason.key)}`;
443
+ if (error.reason.reason === "Accessor") {
444
+ return `${property} måste vara en dataegenskap.`;
445
+ }
446
+ if (error.reason.reason === "Inherited") {
447
+ return `${property} måste vara en egen egenskap.`;
448
+ }
449
+ return `${property} måste vara uppräkningsbar.`;
450
+ }
451
+ case "Discriminator":
452
+ return `Diskriminatoregenskapen ${safelyStringifyUnknownValue(error.reason.key)} har ett oväntat värde ${safelyStringifyUnknownValue(error.reason.value)}.`;
453
+ case "Member":
454
+ return `Den valda varianten ${safelyStringifyUnknownValue(error.reason.discriminator)} är ogiltigt.`;
455
+ }
456
+ };
457
+
458
+ /** Formaterar ett JsonValueError på svenska. */
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 `Värdet ${safelyStringifyUnknownValue(issue.value)} är inte ett JSON-värde.`;
467
+ case "NonFiniteNumber":
468
+ return "Ett JSON-tal måste vara ändligt.";
469
+ case "UnexpectedPrototype":
470
+ return "Värdet är ett objekt, men ett JsonValue-objekt måste vara ett vanligt objekt eller ha en null-prototyp.";
471
+ case "Accessor":
472
+ return "En JSON-egenskap måste vara en dataegenskap. Omvandla accessor-värden till vanliga data innan du använder denna Type eller använd en annan Type.";
473
+ case "NonEnumerable":
474
+ return "En JSON-objektegenskap måste vara uppräkningsbar. Ta bort den eller använd en annan Type.";
475
+ case "SymbolProperty":
476
+ return "En JSON-objektegenskapsnyckel måste vara en sträng. Ta bort symbolegenskapen eller använd en annan Type.";
477
+ case "Hole":
478
+ return "Ett JSON-arrayelement saknas.";
479
+ case "ExcessProperty":
480
+ return "En extra JSON-arrayegenskap är inte tillåten. Ta bort den eller använd en annan Type.";
481
+ case "CircularReference":
482
+ return "Ett JsonValue får inte innehålla cirkulära referenser.";
483
+ }
484
+ };
485
+
486
+ /** Formaterar ett JsonError på svenska. */
487
+ export const formatJsonError: TypeErrorFormatter<JsonError> = (error) =>
488
+ `Värdet ${safelyStringifyUnknownValue(error.value)} kan inte tolkas som ett JsonValue.`;