@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/fi.ts ADDED
@@ -0,0 +1,487 @@
1
+ /**
2
+ * Suomenkieliset Evolu Type -virheiden muotoilijat.
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 `Arvo ${safelyStringifyUnknownValue(error.value)} ei ole tyyppiä ${typeOf}.`;
76
+ };
77
+
78
+ const formatPlainObjectRootError = (
79
+ reason:
80
+ ObjectNotObjectError["reason"] | ObjectUnexpectedPrototypeError["reason"],
81
+ ): string =>
82
+ reason.kind === "NotObject"
83
+ ? `Arvo ${safelyStringifyUnknownValue(reason.value)} ei ole objekti.`
84
+ : "Arvo on objekti, mutta Object Outputin on oltava tavallinen objekti tai sillä on oltava null-prototyyppi.";
85
+
86
+ /** Muotoilee NeverError-virheen suomeksi. */
87
+ export const formatNeverError: TypeErrorFormatter<NeverError> = (error) =>
88
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ei kelpaa Never-tyypille.`;
89
+
90
+ /** Muotoilee String TypeOfError -virheen suomeksi. */
91
+ export const formatStringError: TypeErrorFormatter<TypeOfError<"String">> =
92
+ formatTypeOfError;
93
+
94
+ /** Muotoilee TemplateLiteralError-virheen suomeksi. */
95
+ export const formatTemplateLiteralError: TypeErrorFormatter<
96
+ TemplateLiteralError
97
+ > = (error) =>
98
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ei vastaa template literal -mallia.`;
99
+
100
+ /** Muotoilee Number TypeOfError -virheen suomeksi. */
101
+ export const formatNumberError: TypeErrorFormatter<TypeOfError<"Number">> =
102
+ formatTypeOfError;
103
+
104
+ /** Muotoilee BigInt TypeOfError -virheen suomeksi. */
105
+ export const formatBigIntError: TypeErrorFormatter<TypeOfError<"BigInt">> =
106
+ formatTypeOfError;
107
+
108
+ /** Muotoilee Boolean TypeOfError -virheen suomeksi. */
109
+ export const formatBooleanError: TypeErrorFormatter<TypeOfError<"Boolean">> =
110
+ formatTypeOfError;
111
+
112
+ /** Muotoilee Symbol TypeOfError -virheen suomeksi. */
113
+ export const formatSymbolError: TypeErrorFormatter<TypeOfError<"Symbol">> =
114
+ formatTypeOfError;
115
+
116
+ /** Muotoilee Function TypeOfError -virheen suomeksi. */
117
+ export const formatFunctionError: TypeErrorFormatter<TypeOfError<"Function">> =
118
+ formatTypeOfError;
119
+
120
+ /** Muotoilee EvoluTypeError-virheen suomeksi. */
121
+ export const formatEvoluTypeError: TypeErrorFormatter<EvoluTypeError> = (
122
+ error,
123
+ ) => `Arvo ${safelyStringifyUnknownValue(error.value)} ei ole Evolu Type.`;
124
+
125
+ /** Muotoilee ObjectTagError-virheen suomeksi. */
126
+ export const formatObjectTagError: TypeErrorFormatter<ObjectTagError> = (
127
+ error,
128
+ ) =>
129
+ `Arvolla ${safelyStringifyUnknownValue(error.value)} ei ole odotettua objektitunnistetta ${safelyStringifyUnknownValue(error.expected)}.`;
130
+
131
+ /** Muotoilee InstanceOfError-virheen suomeksi. */
132
+ export const formatInstanceOfError: TypeErrorFormatter<InstanceOfError> = (
133
+ error,
134
+ ) =>
135
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ei ole luokan ${error.constructorName} instanssi.`;
136
+
137
+ /** Muotoilee LiteralError-virheen suomeksi. */
138
+ export const formatLiteralError: TypeErrorFormatter<LiteralError> = (error) =>
139
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ei ole täsmälleen sama kuin odotettu literaali: ${globalThis.String(error.expected)}.`;
140
+
141
+ /** Muotoilee UnionError-virheen suomeksi. */
142
+ export const formatUnionError: TypeErrorFormatter<UnionError> = () =>
143
+ "Arvo ei vastaa mitään sallittua varianttia.";
144
+
145
+ /** Muotoilee DateIsoError-virheen suomeksi. */
146
+ export const formatDateIsoError: TypeErrorFormatter<DateIsoError> = (error) =>
147
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ei ole kanoninen ISO-päivämäärä- ja aikamerkkijono.`;
148
+
149
+ /** Muotoilee DateIsoFromDateError-virheen suomeksi. */
150
+ export const formatDateIsoFromDateError: TypeErrorFormatter<
151
+ DateIsoFromDateError
152
+ > = () => "Date-arvoa ei voida esittää DateIso-muodossa.";
153
+
154
+ /** Muotoilee DecimalStringError-virheen suomeksi. */
155
+ export const formatDecimalStringError: TypeErrorFormatter<
156
+ DecimalStringError
157
+ > = (error) =>
158
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava kanoninen desimaalimerkkijono.`;
159
+
160
+ /** Muotoilee Int64Error-virheen suomeksi. */
161
+ export const formatInt64Error: TypeErrorFormatter<Int64Error> = (error) =>
162
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ei ole kelvollinen etumerkillinen 64-bittinen kokonaisluku (Int64).`;
163
+
164
+ /** Muotoilee UInt64Error-virheen suomeksi. */
165
+ export const formatUInt64Error: TypeErrorFormatter<UInt64Error> = (error) =>
166
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ei ole kelvollinen etumerkitön 64-bittinen kokonaisluku (UInt64).`;
167
+
168
+ /** Muotoilee Int64StringError-virheen suomeksi. */
169
+ export const formatInt64StringError: TypeErrorFormatter<Int64StringError> = (
170
+ error,
171
+ ) =>
172
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ei ole kelvollinen Int64-merkkijono.`;
173
+
174
+ /** Muotoilee CapitalizedError-virheen suomeksi. */
175
+ export const formatCapitalizedError: TypeErrorFormatter<CapitalizedError> = (
176
+ error,
177
+ ) =>
178
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on alettava isolla kirjaimella.`;
179
+
180
+ /** Muotoilee TrimmedError-virheen suomeksi. */
181
+ export const formatTrimmedError: TypeErrorFormatter<TrimmedError> = (error) =>
182
+ `Arvon ${safelyStringifyUnknownValue(error.value)} alussa tai lopussa ei saa olla tyhjiä merkkejä.`;
183
+
184
+ /** Muotoilee MinLengthError-virheen suomeksi. */
185
+ export const formatMinLengthError: TypeErrorFormatter<MinLengthError> = (
186
+ error,
187
+ ) =>
188
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ei täytä vähimmäispituutta ${error.min}.`;
189
+
190
+ /** Muotoilee MaxLengthError-virheen suomeksi. */
191
+ export const formatMaxLengthError: TypeErrorFormatter<MaxLengthError> = (
192
+ error,
193
+ ) =>
194
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ylittää enimmäispituuden ${error.max}.`;
195
+
196
+ /** Muotoilee LengthError-virheen suomeksi. */
197
+ export const formatLengthError: TypeErrorFormatter<LengthError> = (error) =>
198
+ `Arvon ${safelyStringifyUnknownValue(error.value)} pituuden on oltava täsmälleen ${error.exact}.`;
199
+
200
+ /** Muotoilee RegexError-virheen suomeksi. */
201
+ export const formatRegexError: TypeErrorFormatter<RegexError> = (error) =>
202
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ei vastaa säännöllistä lauseketta /${error.source}/${error.flags}.`;
203
+
204
+ /** Muotoilee Base64UrlError-virheen suomeksi. */
205
+ export const formatBase64UrlError: TypeErrorFormatter<Base64UrlError> = (
206
+ error,
207
+ ) =>
208
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ei ole kelvollinen Base64Url-merkkijono.`;
209
+
210
+ /** Muotoilee NameError-virheen suomeksi. */
211
+ export const formatNameError: TypeErrorFormatter<NameError> = (error) =>
212
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ei ole kelvollinen Name.`;
213
+
214
+ /** Muotoilee MnemonicError-virheen suomeksi. */
215
+ export const formatMnemonicError: TypeErrorFormatter<MnemonicError> = (error) =>
216
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ei ole kelvollinen englanninkielinen BIP39-muistisanasarja.`;
217
+
218
+ /** Muotoilee IdError-virheen suomeksi. */
219
+ export const formatIdError: TypeErrorFormatter<IdError> = (error) =>
220
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ei ole kelvollinen Id.`;
221
+
222
+ /** Muotoilee TableIdError-virheen suomeksi. */
223
+ export const formatTableIdError: TypeErrorFormatter<TableIdError> = (error) =>
224
+ `Arvo ${safelyStringifyUnknownValue(error.value)} ei ole kelvollinen Id taululle ${error.table}.`;
225
+
226
+ /** Muotoilee NonNegativeError-virheen suomeksi. */
227
+ export const formatNonNegativeError: TypeErrorFormatter<NonNegativeError> = (
228
+ error,
229
+ ) =>
230
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava epänegatiivinen (>= 0).`;
231
+
232
+ /** Muotoilee NonNegativeDecimalStringError-virheen suomeksi. */
233
+ export const formatNonNegativeDecimalStringError: TypeErrorFormatter<
234
+ NonNegativeDecimalStringError
235
+ > = (error) =>
236
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava epänegatiivinen desimaalimerkkijono.`;
237
+
238
+ /** Muotoilee PositiveError-virheen suomeksi. */
239
+ export const formatPositiveError: TypeErrorFormatter<PositiveError> = (error) =>
240
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava positiivinen (> 0).`;
241
+
242
+ /** Muotoilee PositiveDecimalStringError-virheen suomeksi. */
243
+ export const formatPositiveDecimalStringError: TypeErrorFormatter<
244
+ PositiveDecimalStringError
245
+ > = (error) =>
246
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava positiivinen desimaalimerkkijono.`;
247
+
248
+ /** Muotoilee NonPositiveError-virheen suomeksi. */
249
+ export const formatNonPositiveError: TypeErrorFormatter<NonPositiveError> = (
250
+ error,
251
+ ) =>
252
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava ei-positiivinen (<= 0).`;
253
+
254
+ /** Muotoilee NonPositiveDecimalStringError-virheen suomeksi. */
255
+ export const formatNonPositiveDecimalStringError: TypeErrorFormatter<
256
+ NonPositiveDecimalStringError
257
+ > = (error) =>
258
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava ei-positiivinen desimaalimerkkijono.`;
259
+
260
+ /** Muotoilee NegativeError-virheen suomeksi. */
261
+ export const formatNegativeError: TypeErrorFormatter<NegativeError> = (error) =>
262
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava negatiivinen (< 0).`;
263
+
264
+ /** Muotoilee NegativeDecimalStringError-virheen suomeksi. */
265
+ export const formatNegativeDecimalStringError: TypeErrorFormatter<
266
+ NegativeDecimalStringError
267
+ > = (error) =>
268
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava negatiivinen desimaalimerkkijono.`;
269
+
270
+ /** Muotoilee IntError-virheen suomeksi. */
271
+ export const formatIntError: TypeErrorFormatter<IntError> = (error) =>
272
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava turvallinen kokonaisluku.`;
273
+
274
+ /** Muotoilee GreaterThanError-virheen suomeksi. */
275
+ export const formatGreaterThanError: TypeErrorFormatter<GreaterThanError> = (
276
+ error,
277
+ ) =>
278
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava suurempi kuin ${error.min}.`;
279
+
280
+ /** Muotoilee GreaterThanOrEqualToError-virheen suomeksi. */
281
+ export const formatGreaterThanOrEqualToError: TypeErrorFormatter<
282
+ GreaterThanOrEqualToError
283
+ > = (error) =>
284
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava suurempi tai yhtä suuri kuin ${error.min}.`;
285
+
286
+ /** Muotoilee LessThanError-virheen suomeksi. */
287
+ export const formatLessThanError: TypeErrorFormatter<LessThanError> = (error) =>
288
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava pienempi kuin ${error.max}.`;
289
+
290
+ /** Muotoilee LessThanOrEqualToError-virheen suomeksi. */
291
+ export const formatLessThanOrEqualToError: TypeErrorFormatter<
292
+ LessThanOrEqualToError
293
+ > = (error) =>
294
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava pienempi tai yhtä suuri kuin ${error.max}.`;
295
+
296
+ /** Muotoilee NonNaNError-virheen suomeksi. */
297
+ export const formatNonNaNError: TypeErrorFormatter<NonNaNError> = () =>
298
+ "Arvo ei saa olla NaN.";
299
+
300
+ /** Muotoilee FiniteError-virheen suomeksi. */
301
+ export const formatFiniteError: TypeErrorFormatter<FiniteError> = (error) =>
302
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava äärellinen.`;
303
+
304
+ /** Muotoilee MultipleOfError-virheen suomeksi. */
305
+ export const formatMultipleOfError: TypeErrorFormatter<MultipleOfError> = (
306
+ error,
307
+ ) =>
308
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava luvun ${error.divisor} monikerta.`;
309
+
310
+ /** Muotoilee BetweenError-virheen suomeksi. */
311
+ export const formatBetweenError: TypeErrorFormatter<BetweenError> = (error) =>
312
+ `Arvon ${safelyStringifyUnknownValue(error.value)} on oltava välillä ${error.min}–${error.max}, rajat mukaan lukien.`;
313
+
314
+ /** Muotoilee ArrayError-virheen suomeksi. */
315
+ export const formatArrayError: TypeErrorFormatter<ArrayError> = (error) => {
316
+ if (error.reason.kind === "NotArray") {
317
+ return `Arvo ${safelyStringifyUnknownValue(error.reason.value)} ei ole taulukko.`;
318
+ }
319
+ const issue = error.reason.issues[0];
320
+
321
+ switch (issue.kind) {
322
+ case "Hole":
323
+ return `Taulukon indeksistä ${issue.index} puuttuu alkio.`;
324
+ case "Accessor":
325
+ return `Taulukon indeksissä ${issue.index} olevan alkion on oltava dataominaisuus.`;
326
+ case "ExcessProperty":
327
+ return "Ylimääräinen Array-ominaisuus ei ole sallittu. Poista se tai käytä toista Typeä.";
328
+ case "Element":
329
+ return `Taulukon indeksissä ${issue.index} oleva alkio on virheellinen.`;
330
+ }
331
+ };
332
+
333
+ /** Muotoilee SetError-virheen suomeksi. */
334
+ export const formatSetError: TypeErrorFormatter<SetError> = (error) => {
335
+ if (error.reason.kind === "NotSet") {
336
+ return `Arvo ${safelyStringifyUnknownValue(error.reason.value)} ei ole Set.`;
337
+ }
338
+ if (error.reason.kind === "UnexpectedPrototype") {
339
+ return "Arvo on Set-aliluokan instanssi, mutta Set Outputin on oltava suora Set-instanssi.";
340
+ }
341
+
342
+ const issue = error.reason.issues[0];
343
+
344
+ switch (issue.kind) {
345
+ case "ExcessProperty":
346
+ return `Ylimääräinen Set-ominaisuus ${safelyStringifyUnknownValue(issue.key)} ei ole sallittu.`;
347
+ case "Element":
348
+ return `Setin indeksissä ${issue.index} oleva alkio on virheellinen.`;
349
+ }
350
+ };
351
+
352
+ /** Muotoilee TupleError-virheen suomeksi. */
353
+ export const formatTupleError: TypeErrorFormatter<
354
+ TupleError | TupleElementsError<TypeError>
355
+ > = (error) => {
356
+ if (error.reason.kind === "NotArray") {
357
+ return `Arvo ${safelyStringifyUnknownValue(error.reason.value)} ei ole tuple.`;
358
+ }
359
+ if (error.reason.kind === "InvalidLength") {
360
+ return `Tuplen on sisällettävä täsmälleen ${error.reason.expected} alkiota, mutta arvo sisältää ${error.reason.actual}.`;
361
+ }
362
+
363
+ const issue = error.reason.issues[0];
364
+
365
+ switch (issue.kind) {
366
+ case "Hole":
367
+ return `Tuplen indeksistä ${issue.index} puuttuu alkio.`;
368
+ case "Accessor":
369
+ return `Tuplen indeksissä ${issue.index} olevan alkion on oltava dataominaisuus.`;
370
+ case "ExcessProperty":
371
+ return "Ylimääräinen Tuple-ominaisuus ei ole sallittu. Poista se tai käytä toista Typeä.";
372
+ case "Element":
373
+ return `Tuplen indeksissä ${issue.index} oleva alkio on virheellinen.`;
374
+ }
375
+ };
376
+
377
+ /** Muotoilee RecordError-virheen suomeksi. */
378
+ export const formatRecordError: TypeErrorFormatter<RecordError> = (error) => {
379
+ if (error.reason.kind === "NotRecord") {
380
+ return `Arvo ${safelyStringifyUnknownValue(error.reason.value)} ei ole Record.`;
381
+ }
382
+ if (error.reason.kind === "NotPlainRecord") {
383
+ return "Arvo on objekti, mutta Record Outputin on oltava tavallinen objekti tai sillä on oltava null-prototyyppi.";
384
+ }
385
+
386
+ const issue = error.reason.issues[0];
387
+
388
+ switch (issue.kind) {
389
+ case "Key":
390
+ return `Ominaisuusavain ${safelyStringifyUnknownValue(issue.key)} on virheellinen.`;
391
+ case "Value":
392
+ return `Ominaisuuden ${safelyStringifyUnknownValue(issue.key)} arvo on virheellinen.`;
393
+ case "Accessor":
394
+ return `Record-ominaisuuden ${safelyStringifyUnknownValue(issue.key)} on oltava dataominaisuus.`;
395
+ case "NonEnumerable":
396
+ return `Record-ominaisuuden ${safelyStringifyUnknownValue(issue.key)} on oltava lueteltava.`;
397
+ case "Collision":
398
+ return `Record-avaimet ${safelyStringifyUnknownValue(issue.previousKey)} ja ${safelyStringifyUnknownValue(issue.key)} dekoodautuvat samaksi avaimeksi ${safelyStringifyUnknownValue(issue.outputKey)}.`;
399
+ }
400
+ };
401
+
402
+ /** Muotoilee ObjectError-virheen suomeksi. */
403
+ export const formatObjectError: TypeErrorFormatter<ObjectError> = (error) => {
404
+ if (error.reason.kind !== "Properties") {
405
+ return formatPlainObjectRootError(error.reason);
406
+ }
407
+
408
+ const key = Reflect.ownKeys(error.reason.errors).at(0);
409
+ assertNonNullable(key);
410
+ const propertyError = error.reason.errors[key];
411
+ assertNonNullable(propertyError);
412
+
413
+ if (propertyError.type === "ObjectPropertyAccess") {
414
+ switch ((propertyError as ObjectPropertyAccessError).reason) {
415
+ case "Accessor":
416
+ return "Object-ominaisuuden on oltava dataominaisuus. Muunna accessor-arvot tavalliseksi dataksi ennen tämän Typen käyttöä tai käytä toista Typeä.";
417
+ case "NonEnumerable":
418
+ return "Object-ominaisuuden on oltava lueteltava. Tee siitä lueteltava tai käytä toista Typeä.";
419
+ }
420
+ }
421
+ if (propertyError.type === "ObjectMissingProperty") {
422
+ return `Pakollinen ominaisuus ${safelyStringifyUnknownValue(key)} puuttuu.`;
423
+ }
424
+ if (typeof key === "symbol") {
425
+ return "Object-ominaisuuden avaimen on oltava merkkijono. Poista symboliominaisuus tai käytä toista Typeä.";
426
+ }
427
+ if (propertyError.type === "ObjectExcessProperty") {
428
+ return `Ominaisuus ${safelyStringifyUnknownValue(key)} ei ole sallittu. Poista se tai käytä toista Typeä.`;
429
+ }
430
+ return `Ominaisuus ${safelyStringifyUnknownValue(key)} on virheellinen.`;
431
+ };
432
+
433
+ /** Muotoilee DiscriminatedUnionError-virheen suomeksi. */
434
+ export const formatDiscriminatedUnionError: TypeErrorFormatter<
435
+ DiscriminatedUnionError
436
+ > = (error) => {
437
+ switch (error.reason.kind) {
438
+ case "Object":
439
+ return formatPlainObjectRootError(error.reason.error.reason);
440
+ case "PropertyAccess": {
441
+ const property = `Diskriminaattoriominaisuuden ${safelyStringifyUnknownValue(error.reason.key)}`;
442
+ if (error.reason.reason === "Accessor") {
443
+ return `${property} on oltava dataominaisuus.`;
444
+ }
445
+ if (error.reason.reason === "Inherited") {
446
+ return `${property} on oltava objektin oma ominaisuus.`;
447
+ }
448
+ return `${property} on oltava lueteltava.`;
449
+ }
450
+ case "Discriminator":
451
+ return `Diskriminaattoriominaisuudella ${safelyStringifyUnknownValue(error.reason.key)} on odottamaton arvo ${safelyStringifyUnknownValue(error.reason.value)}.`;
452
+ case "Member":
453
+ return `Valittu variantti ${safelyStringifyUnknownValue(error.reason.discriminator)} on virheellinen.`;
454
+ }
455
+ };
456
+
457
+ /** Muotoilee JsonValueError-virheen suomeksi. */
458
+ export const formatJsonValueError: TypeErrorFormatter<JsonValueError> = (
459
+ error,
460
+ ) => {
461
+ const issue = error.reason.issues[0];
462
+
463
+ switch (issue.kind) {
464
+ case "InvalidType":
465
+ return `Arvo ${safelyStringifyUnknownValue(issue.value)} ei ole JSON-arvo.`;
466
+ case "NonFiniteNumber":
467
+ return "JSON-luvun on oltava äärellinen.";
468
+ case "UnexpectedPrototype":
469
+ return "Arvo on objekti, mutta JsonValue-objektin on oltava tavallinen objekti tai sillä on oltava null-prototyyppi.";
470
+ case "Accessor":
471
+ return "JSON-ominaisuuden on oltava dataominaisuus. Muunna accessor-arvot tavalliseksi dataksi ennen tämän Typen käyttöä tai käytä toista Typeä.";
472
+ case "NonEnumerable":
473
+ return "JSON-objektin ominaisuuden on oltava lueteltava. Poista se tai käytä toista Typeä.";
474
+ case "SymbolProperty":
475
+ return "JSON-objektin ominaisuusavaimen on oltava merkkijono. Poista symboliominaisuus tai käytä toista Typeä.";
476
+ case "Hole":
477
+ return "JSON-taulukosta puuttuu alkio.";
478
+ case "ExcessProperty":
479
+ return "Ylimääräinen JSON-taulukon ominaisuus ei ole sallittu. Poista se tai käytä toista Typeä.";
480
+ case "CircularReference":
481
+ return "JsonValue ei saa sisältää syklisiä viittauksia.";
482
+ }
483
+ };
484
+
485
+ /** Muotoilee JsonError-virheen suomeksi. */
486
+ export const formatJsonError: TypeErrorFormatter<JsonError> = (error) =>
487
+ `Arvoa ${safelyStringifyUnknownValue(error.value)} ei voida jäsentää JsonValue-arvoksi.`;