@evolu/common 8.8.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.
- package/dist/src/Assert.d.ts +21 -1
- package/dist/src/Assert.d.ts.map +1 -1
- package/dist/src/Assert.js +31 -27
- package/dist/src/Bytes.d.ts +647 -0
- package/dist/src/Bytes.d.ts.map +1 -0
- package/dist/src/{Binary.js → Bytes.js} +266 -16
- package/dist/src/Config.d.ts +142 -0
- package/dist/src/Config.d.ts.map +1 -0
- package/dist/src/Config.js +181 -0
- package/dist/src/Fs.d.ts +302 -0
- package/dist/src/Fs.d.ts.map +1 -0
- package/dist/src/Fs.js +111 -0
- package/dist/src/Number.d.ts +50 -7
- package/dist/src/Number.d.ts.map +1 -1
- package/dist/src/Number.js +47 -8
- package/dist/src/Object.d.ts +32 -0
- package/dist/src/Object.d.ts.map +1 -1
- package/dist/src/Object.js +41 -0
- package/dist/src/Polyfills.d.ts +6 -0
- package/dist/src/Polyfills.d.ts.map +1 -1
- package/dist/src/Polyfills.js +6 -0
- package/dist/src/Sqlite.js +1 -1
- package/dist/src/Time.d.ts +74 -12
- package/dist/src/Time.d.ts.map +1 -1
- package/dist/src/Time.js +40 -2
- package/dist/src/Type.d.ts +1451 -79
- package/dist/src/Type.d.ts.map +1 -1
- package/dist/src/Type.js +1303 -96
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/intl/_en.d.ts +24 -1
- package/dist/src/intl/_en.d.ts.map +1 -1
- package/dist/src/intl/_en.js +20 -0
- package/dist/src/intl/ar.d.ts +24 -1
- package/dist/src/intl/ar.d.ts.map +1 -1
- package/dist/src/intl/ar.js +20 -0
- package/dist/src/intl/bn.d.ts +24 -1
- package/dist/src/intl/bn.d.ts.map +1 -1
- package/dist/src/intl/bn.js +20 -0
- package/dist/src/intl/ca.d.ts +24 -1
- package/dist/src/intl/ca.d.ts.map +1 -1
- package/dist/src/intl/ca.js +20 -0
- package/dist/src/intl/cs.d.ts +24 -1
- package/dist/src/intl/cs.d.ts.map +1 -1
- package/dist/src/intl/cs.js +20 -0
- package/dist/src/intl/da.d.ts +24 -1
- package/dist/src/intl/da.d.ts.map +1 -1
- package/dist/src/intl/da.js +20 -0
- package/dist/src/intl/de.d.ts +24 -1
- package/dist/src/intl/de.d.ts.map +1 -1
- package/dist/src/intl/de.js +20 -0
- package/dist/src/intl/el.d.ts +24 -1
- package/dist/src/intl/el.d.ts.map +1 -1
- package/dist/src/intl/el.js +20 -0
- package/dist/src/intl/es.d.ts +24 -1
- package/dist/src/intl/es.d.ts.map +1 -1
- package/dist/src/intl/es.js +20 -0
- package/dist/src/intl/fa.d.ts +24 -1
- package/dist/src/intl/fa.d.ts.map +1 -1
- package/dist/src/intl/fa.js +20 -0
- package/dist/src/intl/fi.d.ts +24 -1
- package/dist/src/intl/fi.d.ts.map +1 -1
- package/dist/src/intl/fi.js +20 -0
- package/dist/src/intl/fil.d.ts +24 -1
- package/dist/src/intl/fil.d.ts.map +1 -1
- package/dist/src/intl/fil.js +20 -0
- package/dist/src/intl/fr.d.ts +24 -1
- package/dist/src/intl/fr.d.ts.map +1 -1
- package/dist/src/intl/fr.js +20 -0
- package/dist/src/intl/he.d.ts +24 -1
- package/dist/src/intl/he.d.ts.map +1 -1
- package/dist/src/intl/he.js +20 -0
- package/dist/src/intl/hi.d.ts +24 -1
- package/dist/src/intl/hi.d.ts.map +1 -1
- package/dist/src/intl/hi.js +20 -0
- package/dist/src/intl/hr.d.ts +24 -1
- package/dist/src/intl/hr.d.ts.map +1 -1
- package/dist/src/intl/hr.js +20 -0
- package/dist/src/intl/hu.d.ts +22 -1
- package/dist/src/intl/hu.d.ts.map +1 -1
- package/dist/src/intl/hu.js +18 -0
- package/dist/src/intl/id.d.ts +24 -1
- package/dist/src/intl/id.d.ts.map +1 -1
- package/dist/src/intl/id.js +20 -0
- package/dist/src/intl/it.d.ts +24 -1
- package/dist/src/intl/it.d.ts.map +1 -1
- package/dist/src/intl/it.js +20 -0
- package/dist/src/intl/ja.d.ts +24 -1
- package/dist/src/intl/ja.d.ts.map +1 -1
- package/dist/src/intl/ja.js +20 -0
- package/dist/src/intl/ko.d.ts +24 -1
- package/dist/src/intl/ko.d.ts.map +1 -1
- package/dist/src/intl/ko.js +20 -0
- package/dist/src/intl/ml.d.ts +24 -1
- package/dist/src/intl/ml.d.ts.map +1 -1
- package/dist/src/intl/ml.js +20 -0
- package/dist/src/intl/mr.d.ts +24 -1
- package/dist/src/intl/mr.d.ts.map +1 -1
- package/dist/src/intl/mr.js +20 -0
- package/dist/src/intl/ms.d.ts +24 -1
- package/dist/src/intl/ms.d.ts.map +1 -1
- package/dist/src/intl/ms.js +20 -0
- package/dist/src/intl/nb.d.ts +22 -1
- package/dist/src/intl/nb.d.ts.map +1 -1
- package/dist/src/intl/nb.js +18 -0
- package/dist/src/intl/nl.d.ts +24 -1
- package/dist/src/intl/nl.d.ts.map +1 -1
- package/dist/src/intl/nl.js +20 -0
- package/dist/src/intl/pa.d.ts +24 -1
- package/dist/src/intl/pa.d.ts.map +1 -1
- package/dist/src/intl/pa.js +20 -0
- package/dist/src/intl/pl.d.ts +23 -0
- package/dist/src/intl/pl.d.ts.map +1 -1
- package/dist/src/intl/pl.js +20 -0
- package/dist/src/intl/pt-BR.d.ts +24 -1
- package/dist/src/intl/pt-BR.d.ts.map +1 -1
- package/dist/src/intl/pt-BR.js +20 -0
- package/dist/src/intl/pt.d.ts +24 -1
- package/dist/src/intl/pt.d.ts.map +1 -1
- package/dist/src/intl/pt.js +20 -0
- package/dist/src/intl/ro.d.ts +24 -1
- package/dist/src/intl/ro.d.ts.map +1 -1
- package/dist/src/intl/ro.js +20 -0
- package/dist/src/intl/sk.d.ts +24 -1
- package/dist/src/intl/sk.d.ts.map +1 -1
- package/dist/src/intl/sk.js +20 -0
- package/dist/src/intl/sl.d.ts +24 -1
- package/dist/src/intl/sl.d.ts.map +1 -1
- package/dist/src/intl/sl.js +20 -0
- package/dist/src/intl/sv.d.ts +24 -1
- package/dist/src/intl/sv.d.ts.map +1 -1
- package/dist/src/intl/sv.js +20 -0
- package/dist/src/intl/sw.d.ts +21 -0
- package/dist/src/intl/sw.d.ts.map +1 -1
- package/dist/src/intl/sw.js +18 -0
- package/dist/src/intl/ta.d.ts +24 -1
- package/dist/src/intl/ta.d.ts.map +1 -1
- package/dist/src/intl/ta.js +20 -0
- package/dist/src/intl/te.d.ts +24 -1
- package/dist/src/intl/te.d.ts.map +1 -1
- package/dist/src/intl/te.js +20 -0
- package/dist/src/intl/th.d.ts +24 -1
- package/dist/src/intl/th.d.ts.map +1 -1
- package/dist/src/intl/th.js +20 -0
- package/dist/src/intl/tr.d.ts +24 -1
- package/dist/src/intl/tr.d.ts.map +1 -1
- package/dist/src/intl/tr.js +20 -0
- package/dist/src/intl/uk.d.ts +80 -57
- package/dist/src/intl/uk.d.ts.map +1 -1
- package/dist/src/intl/uk.js +174 -149
- package/dist/src/intl/ur.d.ts +24 -1
- package/dist/src/intl/ur.d.ts.map +1 -1
- package/dist/src/intl/ur.js +20 -0
- package/dist/src/intl/vi.d.ts +24 -1
- package/dist/src/intl/vi.d.ts.map +1 -1
- package/dist/src/intl/vi.js +20 -0
- package/dist/src/intl/zh-CN.d.ts +24 -1
- package/dist/src/intl/zh-CN.d.ts.map +1 -1
- package/dist/src/intl/zh-CN.js +20 -0
- package/dist/src/intl/zh-TW.d.ts +24 -1
- package/dist/src/intl/zh-TW.d.ts.map +1 -1
- package/dist/src/intl/zh-TW.js +20 -0
- package/dist/src/local-first/Protocol.d.ts +1 -1
- package/dist/src/local-first/Protocol.d.ts.map +1 -1
- package/dist/src/local-first/Protocol.js +1 -1
- package/dist/src/local-first/Schema.d.ts +10 -0
- package/dist/src/local-first/Schema.d.ts.map +1 -1
- package/dist/src/local-first/Storage.js +1 -1
- package/dist/src/local-first/Timestamp.js +1 -1
- package/package.json +1 -1
- package/src/Assert.test.ts +51 -0
- package/src/Assert.ts +56 -4
- package/src/{Binary.test.ts → Bytes.test.ts} +286 -1
- package/src/{Binary.ts → Bytes.ts} +652 -21
- package/src/Config.test.ts +672 -0
- package/src/Config.ts +410 -0
- package/src/Fs.test.ts +105 -0
- package/src/Fs.ts +414 -0
- package/src/Number.test.ts +82 -18
- package/src/Number.ts +76 -8
- package/src/Object.test.ts +115 -1
- package/src/Object.ts +44 -0
- package/src/Polyfills.ts +6 -0
- package/src/Sqlite.ts +1 -1
- package/src/Time.test.ts +82 -11
- package/src/Time.ts +141 -16
- package/src/Type.test.ts +3114 -157
- package/src/Type.ts +2553 -196
- package/src/index.ts +3 -1
- package/src/intl/_en.ts +70 -0
- package/src/intl/ar.ts +71 -0
- package/src/intl/bn.ts +70 -0
- package/src/intl/ca.ts +70 -0
- package/src/intl/cs.ts +70 -0
- package/src/intl/da.ts +70 -0
- package/src/intl/de.ts +70 -0
- package/src/intl/el.ts +70 -0
- package/src/intl/es.ts +70 -0
- package/src/intl/fa.ts +70 -0
- package/src/intl/fi.ts +70 -0
- package/src/intl/fil.ts +70 -0
- package/src/intl/fr.ts +70 -0
- package/src/intl/he.ts +70 -0
- package/src/intl/hi.ts +70 -0
- package/src/intl/hr.ts +70 -0
- package/src/intl/hu.ts +69 -0
- package/src/intl/id.ts +70 -0
- package/src/intl/intl.test.ts +819 -1
- package/src/intl/it.ts +70 -0
- package/src/intl/ja.ts +70 -0
- package/src/intl/ko.ts +68 -0
- package/src/intl/ml.ts +70 -0
- package/src/intl/mr.ts +70 -0
- package/src/intl/ms.ts +71 -0
- package/src/intl/nb.ts +69 -0
- package/src/intl/nl.ts +70 -0
- package/src/intl/pa.ts +70 -0
- package/src/intl/pl.ts +63 -0
- package/src/intl/pt-BR.ts +70 -0
- package/src/intl/pt.ts +71 -0
- package/src/intl/ro.ts +70 -0
- package/src/intl/sk.ts +71 -0
- package/src/intl/sl.ts +70 -0
- package/src/intl/sv.ts +70 -0
- package/src/intl/sw.ts +62 -0
- package/src/intl/ta.ts +70 -0
- package/src/intl/te.ts +70 -0
- package/src/intl/th.ts +68 -0
- package/src/intl/tr.ts +70 -0
- package/src/intl/uk.ts +228 -155
- package/src/intl/ur.ts +70 -0
- package/src/intl/vi.ts +70 -0
- package/src/intl/zh-CN.ts +68 -0
- package/src/intl/zh-TW.ts +68 -0
- package/src/local-first/Protocol.test.ts +1 -1
- package/src/local-first/Protocol.ts +1 -1
- package/src/local-first/Schema.ts +11 -0
- package/src/local-first/Storage.ts +1 -1
- package/src/local-first/Timestamp.ts +1 -1
- package/dist/src/Binary.d.ts +0 -254
- package/dist/src/Binary.d.ts.map +0 -1
package/src/intl/uk.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,
|
|
@@ -66,356 +76,401 @@ import type {
|
|
|
66
76
|
UnionError,
|
|
67
77
|
} from "../Type.ts";
|
|
68
78
|
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
return `A value ${safelyStringifyUnknownValue(error.value)} is not a ${typeOf}.`;
|
|
79
|
+
const typeOfNames = {
|
|
80
|
+
String: "рядком",
|
|
81
|
+
Number: "числом",
|
|
82
|
+
BigInt: "значенням BigInt",
|
|
83
|
+
Boolean: "логічним значенням",
|
|
84
|
+
Symbol: "символом",
|
|
85
|
+
Function: "функцією",
|
|
77
86
|
};
|
|
78
87
|
|
|
88
|
+
const formatTypeOfError = (
|
|
89
|
+
error: TypeOfError<keyof typeof typeOfNames>,
|
|
90
|
+
): string =>
|
|
91
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є ${typeOfNames[error.expected]}.`;
|
|
92
|
+
|
|
79
93
|
const formatPlainObjectRootError = (
|
|
80
94
|
reason:
|
|
81
95
|
ObjectNotObjectError["reason"] | ObjectUnexpectedPrototypeError["reason"],
|
|
82
96
|
): string =>
|
|
83
97
|
reason.kind === "NotObject"
|
|
84
|
-
?
|
|
85
|
-
: "
|
|
98
|
+
? `Значення ${safelyStringifyUnknownValue(reason.value)} не є об’єктом.`
|
|
99
|
+
: "Значення є об’єктом, але вихідне значення Object має бути простим об’єктом або мати прототип null.";
|
|
86
100
|
|
|
87
|
-
/**
|
|
101
|
+
/** Форматує NeverError українською. */
|
|
88
102
|
export const formatNeverError: TypeErrorFormatter<NeverError> = (error) =>
|
|
89
|
-
|
|
103
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є допустимим для типу Never.`;
|
|
90
104
|
|
|
91
|
-
/**
|
|
105
|
+
/** Форматує String TypeOfError українською. */
|
|
92
106
|
export const formatStringError: TypeErrorFormatter<TypeOfError<"String">> =
|
|
93
107
|
formatTypeOfError;
|
|
94
108
|
|
|
95
|
-
/**
|
|
109
|
+
/** Форматує TemplateLiteralError українською. */
|
|
96
110
|
export const formatTemplateLiteralError: TypeErrorFormatter<
|
|
97
111
|
TemplateLiteralError
|
|
98
112
|
> = (error) =>
|
|
99
|
-
|
|
113
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не відповідає шаблонному літералу.`;
|
|
100
114
|
|
|
101
|
-
/**
|
|
115
|
+
/** Форматує Number TypeOfError українською. */
|
|
102
116
|
export const formatNumberError: TypeErrorFormatter<TypeOfError<"Number">> =
|
|
103
117
|
formatTypeOfError;
|
|
104
118
|
|
|
105
|
-
/**
|
|
119
|
+
/** Форматує BigInt TypeOfError українською. */
|
|
106
120
|
export const formatBigIntError: TypeErrorFormatter<TypeOfError<"BigInt">> =
|
|
107
121
|
formatTypeOfError;
|
|
108
122
|
|
|
109
|
-
/**
|
|
123
|
+
/** Форматує Boolean TypeOfError українською. */
|
|
110
124
|
export const formatBooleanError: TypeErrorFormatter<TypeOfError<"Boolean">> =
|
|
111
125
|
formatTypeOfError;
|
|
112
126
|
|
|
113
|
-
/**
|
|
127
|
+
/** Форматує BooleanFromStringError українською. */
|
|
128
|
+
export const formatBooleanFromStringError: TypeErrorFormatter<
|
|
129
|
+
BooleanFromStringError
|
|
130
|
+
> = (error) =>
|
|
131
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є логічним значенням. Використовуйте true або false.`;
|
|
132
|
+
|
|
133
|
+
/** Форматує Symbol TypeOfError українською. */
|
|
114
134
|
export const formatSymbolError: TypeErrorFormatter<TypeOfError<"Symbol">> =
|
|
115
135
|
formatTypeOfError;
|
|
116
136
|
|
|
117
|
-
/**
|
|
137
|
+
/** Форматує Function TypeOfError українською. */
|
|
118
138
|
export const formatFunctionError: TypeErrorFormatter<TypeOfError<"Function">> =
|
|
119
139
|
formatTypeOfError;
|
|
120
140
|
|
|
121
|
-
/**
|
|
141
|
+
/** Форматує EvoluTypeError українською. */
|
|
122
142
|
export const formatEvoluTypeError: TypeErrorFormatter<EvoluTypeError> = (
|
|
123
143
|
error,
|
|
124
|
-
) =>
|
|
125
|
-
`A value ${safelyStringifyUnknownValue(error.value)} is not an Evolu Type.`;
|
|
144
|
+
) => `Значення ${safelyStringifyUnknownValue(error.value)} не є Evolu Type.`;
|
|
126
145
|
|
|
127
|
-
/**
|
|
146
|
+
/** Форматує ObjectTagError українською. */
|
|
128
147
|
export const formatObjectTagError: TypeErrorFormatter<ObjectTagError> = (
|
|
129
148
|
error,
|
|
130
149
|
) =>
|
|
131
|
-
|
|
150
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не має очікуваного тегу об’єкта ${safelyStringifyUnknownValue(error.expected)}.`;
|
|
132
151
|
|
|
133
|
-
/**
|
|
152
|
+
/** Форматує InstanceOfError українською. */
|
|
134
153
|
export const formatInstanceOfError: TypeErrorFormatter<InstanceOfError> = (
|
|
135
154
|
error,
|
|
136
155
|
) =>
|
|
137
|
-
|
|
156
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є екземпляром ${error.constructorName}.`;
|
|
138
157
|
|
|
139
|
-
/**
|
|
158
|
+
/** Форматує LiteralError українською. */
|
|
140
159
|
export const formatLiteralError: TypeErrorFormatter<LiteralError> = (error) =>
|
|
141
|
-
|
|
160
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не дорівнює строго очікуваному літералу: ${String(error.expected)}.`;
|
|
142
161
|
|
|
143
|
-
/**
|
|
162
|
+
/** Форматує UnionError українською. */
|
|
144
163
|
export const formatUnionError: TypeErrorFormatter<UnionError> = () =>
|
|
145
|
-
"
|
|
164
|
+
"Значення не відповідає жодному з допустимих варіантів.";
|
|
146
165
|
|
|
147
|
-
/**
|
|
166
|
+
/** Форматує DateIsoError українською. */
|
|
148
167
|
export const formatDateIsoError: TypeErrorFormatter<DateIsoError> = (error) =>
|
|
149
|
-
|
|
168
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є канонічним рядком дати й часу ISO.`;
|
|
150
169
|
|
|
151
|
-
/**
|
|
170
|
+
/** Форматує DateIsoFromDateError українською. */
|
|
152
171
|
export const formatDateIsoFromDateError: TypeErrorFormatter<
|
|
153
172
|
DateIsoFromDateError
|
|
154
|
-
> = () => "
|
|
173
|
+
> = () => "Дату неможливо подати як DateIso.";
|
|
155
174
|
|
|
156
|
-
/**
|
|
175
|
+
/** Форматує DecimalStringError українською. */
|
|
157
176
|
export const formatDecimalStringError: TypeErrorFormatter<
|
|
158
177
|
DecimalStringError
|
|
159
178
|
> = (error) =>
|
|
160
|
-
|
|
179
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути канонічним десятковим рядком.`;
|
|
161
180
|
|
|
162
|
-
/**
|
|
181
|
+
/** Форматує Int64Error українською. */
|
|
163
182
|
export const formatInt64Error: TypeErrorFormatter<Int64Error> = (error) =>
|
|
164
|
-
|
|
183
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є допустимим 64-бітним цілим числом зі знаком (Int64).`;
|
|
165
184
|
|
|
166
|
-
/**
|
|
185
|
+
/** Форматує UInt64Error українською. */
|
|
167
186
|
export const formatUInt64Error: TypeErrorFormatter<UInt64Error> = (error) =>
|
|
168
|
-
|
|
187
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є допустимим 64-бітним цілим числом без знака (UInt64).`;
|
|
169
188
|
|
|
170
|
-
/**
|
|
189
|
+
/** Форматує Int64StringError українською. */
|
|
171
190
|
export const formatInt64StringError: TypeErrorFormatter<Int64StringError> = (
|
|
172
191
|
error,
|
|
173
192
|
) =>
|
|
174
|
-
|
|
193
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є допустимим рядком Int64.`;
|
|
175
194
|
|
|
176
|
-
/** Formats
|
|
195
|
+
/** Formats an IdentifierError in Ukrainian. */
|
|
196
|
+
export const formatIdentifierError: TypeErrorFormatter<IdentifierError> = (
|
|
197
|
+
error,
|
|
198
|
+
) =>
|
|
199
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є ідентифікатором у форматі ${error.casing}.`;
|
|
200
|
+
|
|
201
|
+
/** Форматує CapitalizedError українською. */
|
|
177
202
|
export const formatCapitalizedError: TypeErrorFormatter<CapitalizedError> = (
|
|
178
203
|
error,
|
|
179
204
|
) =>
|
|
180
|
-
|
|
205
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має починатися з великої літери.`;
|
|
206
|
+
|
|
207
|
+
/** Formats an UncapitalizedError in Ukrainian. */
|
|
208
|
+
export const formatUncapitalizedError: TypeErrorFormatter<
|
|
209
|
+
UncapitalizedError
|
|
210
|
+
> = (error) =>
|
|
211
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не повинно починатися з великої літери.`;
|
|
212
|
+
|
|
213
|
+
/** Formats an UppercasedError in Ukrainian. */
|
|
214
|
+
export const formatUppercasedError: TypeErrorFormatter<UppercasedError> = (
|
|
215
|
+
error,
|
|
216
|
+
) =>
|
|
217
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути записане великими літерами.`;
|
|
218
|
+
|
|
219
|
+
/** Formats a LowercasedError in Ukrainian. */
|
|
220
|
+
export const formatLowercasedError: TypeErrorFormatter<LowercasedError> = (
|
|
221
|
+
error,
|
|
222
|
+
) =>
|
|
223
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути записане малими літерами.`;
|
|
181
224
|
|
|
182
|
-
/**
|
|
225
|
+
/** Форматує TrimmedError українською. */
|
|
183
226
|
export const formatTrimmedError: TypeErrorFormatter<TrimmedError> = (error) =>
|
|
184
|
-
|
|
227
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не має містити пробілів на початку та в кінці.`;
|
|
185
228
|
|
|
186
|
-
/** Formats a
|
|
229
|
+
/** Formats a StartsWithError in Ukrainian. */
|
|
230
|
+
export const formatStartsWithError: TypeErrorFormatter<StartsWithError> = (
|
|
231
|
+
error,
|
|
232
|
+
) =>
|
|
233
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має починатися з ${safelyStringifyUnknownValue(error.prefix)}.`;
|
|
234
|
+
|
|
235
|
+
/** Форматує MinLengthError українською. */
|
|
187
236
|
export const formatMinLengthError: TypeErrorFormatter<MinLengthError> = (
|
|
188
237
|
error,
|
|
189
238
|
) =>
|
|
190
|
-
|
|
239
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} коротше за мінімальну довжину ${error.min}.`;
|
|
191
240
|
|
|
192
|
-
/**
|
|
241
|
+
/** Форматує MaxLengthError українською. */
|
|
193
242
|
export const formatMaxLengthError: TypeErrorFormatter<MaxLengthError> = (
|
|
194
243
|
error,
|
|
195
244
|
) =>
|
|
196
|
-
|
|
245
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} перевищує максимальну довжину ${error.max}.`;
|
|
197
246
|
|
|
198
|
-
/**
|
|
247
|
+
/** Форматує LengthError українською. */
|
|
199
248
|
export const formatLengthError: TypeErrorFormatter<LengthError> = (error) =>
|
|
200
|
-
|
|
249
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не має необхідної довжини ${error.exact}.`;
|
|
201
250
|
|
|
202
|
-
/**
|
|
251
|
+
/** Форматує RegexError українською. */
|
|
203
252
|
export const formatRegexError: TypeErrorFormatter<RegexError> = (error) =>
|
|
204
|
-
|
|
253
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не відповідає /${error.source}/${error.flags}.`;
|
|
205
254
|
|
|
206
|
-
/**
|
|
255
|
+
/** Форматує Base64UrlError українською. */
|
|
207
256
|
export const formatBase64UrlError: TypeErrorFormatter<Base64UrlError> = (
|
|
208
257
|
error,
|
|
209
258
|
) =>
|
|
210
|
-
|
|
259
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є допустимим рядком Base64Url.`;
|
|
211
260
|
|
|
212
|
-
/**
|
|
261
|
+
/** Форматує NameError українською. */
|
|
213
262
|
export const formatNameError: TypeErrorFormatter<NameError> = (error) =>
|
|
214
|
-
|
|
263
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є допустимим Name.`;
|
|
215
264
|
|
|
216
|
-
/**
|
|
265
|
+
/** Форматує MnemonicError українською. */
|
|
217
266
|
export const formatMnemonicError: TypeErrorFormatter<MnemonicError> = (error) =>
|
|
218
|
-
|
|
267
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є допустимою англійською мнемонічною фразою BIP39.`;
|
|
219
268
|
|
|
220
|
-
/**
|
|
269
|
+
/** Форматує IdError українською. */
|
|
221
270
|
export const formatIdError: TypeErrorFormatter<IdError> = (error) =>
|
|
222
|
-
|
|
271
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є допустимим Id.`;
|
|
223
272
|
|
|
224
|
-
/**
|
|
273
|
+
/** Форматує TableIdError українською. */
|
|
225
274
|
export const formatTableIdError: TypeErrorFormatter<TableIdError> = (error) =>
|
|
226
|
-
|
|
275
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є допустимим Id для таблиці ${error.table}.`;
|
|
227
276
|
|
|
228
|
-
/**
|
|
277
|
+
/** Форматує NonNegativeError українською. */
|
|
229
278
|
export const formatNonNegativeError: TypeErrorFormatter<NonNegativeError> = (
|
|
230
279
|
error,
|
|
231
280
|
) =>
|
|
232
|
-
|
|
281
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути невід’ємним (>= 0).`;
|
|
233
282
|
|
|
234
|
-
/**
|
|
283
|
+
/** Форматує NonNegativeDecimalStringError українською. */
|
|
235
284
|
export const formatNonNegativeDecimalStringError: TypeErrorFormatter<
|
|
236
285
|
NonNegativeDecimalStringError
|
|
237
286
|
> = (error) =>
|
|
238
|
-
|
|
287
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути невід’ємним десятковим рядком.`;
|
|
239
288
|
|
|
240
|
-
/**
|
|
289
|
+
/** Форматує PositiveError українською. */
|
|
241
290
|
export const formatPositiveError: TypeErrorFormatter<PositiveError> = (error) =>
|
|
242
|
-
|
|
291
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути додатним (> 0).`;
|
|
243
292
|
|
|
244
|
-
/**
|
|
293
|
+
/** Форматує PositiveDecimalStringError українською. */
|
|
245
294
|
export const formatPositiveDecimalStringError: TypeErrorFormatter<
|
|
246
295
|
PositiveDecimalStringError
|
|
247
296
|
> = (error) =>
|
|
248
|
-
|
|
297
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути додатним десятковим рядком.`;
|
|
249
298
|
|
|
250
|
-
/**
|
|
299
|
+
/** Форматує NonPositiveError українською. */
|
|
251
300
|
export const formatNonPositiveError: TypeErrorFormatter<NonPositiveError> = (
|
|
252
301
|
error,
|
|
253
302
|
) =>
|
|
254
|
-
|
|
303
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути недодатним (<= 0).`;
|
|
255
304
|
|
|
256
|
-
/**
|
|
305
|
+
/** Форматує NonPositiveDecimalStringError українською. */
|
|
257
306
|
export const formatNonPositiveDecimalStringError: TypeErrorFormatter<
|
|
258
307
|
NonPositiveDecimalStringError
|
|
259
308
|
> = (error) =>
|
|
260
|
-
|
|
309
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути недодатним десятковим рядком.`;
|
|
261
310
|
|
|
262
|
-
/**
|
|
311
|
+
/** Форматує NegativeError українською. */
|
|
263
312
|
export const formatNegativeError: TypeErrorFormatter<NegativeError> = (error) =>
|
|
264
|
-
|
|
313
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути від’ємним (< 0).`;
|
|
265
314
|
|
|
266
|
-
/**
|
|
315
|
+
/** Форматує NegativeDecimalStringError українською. */
|
|
267
316
|
export const formatNegativeDecimalStringError: TypeErrorFormatter<
|
|
268
317
|
NegativeDecimalStringError
|
|
269
318
|
> = (error) =>
|
|
270
|
-
|
|
319
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути від’ємним десятковим рядком.`;
|
|
271
320
|
|
|
272
|
-
/**
|
|
321
|
+
/** Форматує IntError українською. */
|
|
273
322
|
export const formatIntError: TypeErrorFormatter<IntError> = (error) =>
|
|
274
|
-
|
|
323
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути безпечним цілим числом.`;
|
|
275
324
|
|
|
276
|
-
/**
|
|
325
|
+
/** Форматує IntFromStringError українською. */
|
|
326
|
+
export const formatIntFromStringError: TypeErrorFormatter<
|
|
327
|
+
IntFromStringError
|
|
328
|
+
> = (error) =>
|
|
329
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є десятковим цілим числом.`;
|
|
330
|
+
|
|
331
|
+
/** Форматує GreaterThanError українською. */
|
|
277
332
|
export const formatGreaterThanError: TypeErrorFormatter<GreaterThanError> = (
|
|
278
333
|
error,
|
|
279
334
|
) =>
|
|
280
|
-
|
|
335
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути більшим за ${error.min}.`;
|
|
281
336
|
|
|
282
|
-
/**
|
|
337
|
+
/** Форматує GreaterThanOrEqualToError українською. */
|
|
283
338
|
export const formatGreaterThanOrEqualToError: TypeErrorFormatter<
|
|
284
339
|
GreaterThanOrEqualToError
|
|
285
340
|
> = (error) =>
|
|
286
|
-
|
|
341
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути більшим або рівним ${error.min}.`;
|
|
287
342
|
|
|
288
|
-
/**
|
|
343
|
+
/** Форматує LessThanError українською. */
|
|
289
344
|
export const formatLessThanError: TypeErrorFormatter<LessThanError> = (error) =>
|
|
290
|
-
|
|
345
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути меншим за ${error.max}.`;
|
|
291
346
|
|
|
292
|
-
/**
|
|
347
|
+
/** Форматує LessThanOrEqualToError українською. */
|
|
293
348
|
export const formatLessThanOrEqualToError: TypeErrorFormatter<
|
|
294
349
|
LessThanOrEqualToError
|
|
295
350
|
> = (error) =>
|
|
296
|
-
|
|
351
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути меншим або рівним ${error.max}.`;
|
|
297
352
|
|
|
298
|
-
/**
|
|
353
|
+
/** Форматує NonNaNError українською. */
|
|
299
354
|
export const formatNonNaNError: TypeErrorFormatter<NonNaNError> = () =>
|
|
300
|
-
"
|
|
355
|
+
"Значення не має бути NaN.";
|
|
301
356
|
|
|
302
|
-
/**
|
|
357
|
+
/** Форматує FiniteError українською. */
|
|
303
358
|
export const formatFiniteError: TypeErrorFormatter<FiniteError> = (error) =>
|
|
304
|
-
|
|
359
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути скінченним.`;
|
|
305
360
|
|
|
306
|
-
/**
|
|
361
|
+
/** Форматує MultipleOfError українською. */
|
|
307
362
|
export const formatMultipleOfError: TypeErrorFormatter<MultipleOfError> = (
|
|
308
363
|
error,
|
|
309
364
|
) =>
|
|
310
|
-
|
|
365
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути кратним ${error.divisor}.`;
|
|
311
366
|
|
|
312
|
-
/**
|
|
367
|
+
/** Форматує BetweenError українською. */
|
|
313
368
|
export const formatBetweenError: TypeErrorFormatter<BetweenError> = (error) =>
|
|
314
|
-
|
|
369
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} має бути в межах від ${error.min} до ${error.max} включно.`;
|
|
315
370
|
|
|
316
|
-
/**
|
|
371
|
+
/** Форматує ArrayError українською. */
|
|
317
372
|
export const formatArrayError: TypeErrorFormatter<ArrayError> = (error) => {
|
|
318
373
|
if (error.reason.kind === "NotArray") {
|
|
319
|
-
return
|
|
374
|
+
return `Значення ${safelyStringifyUnknownValue(error.reason.value)} не є масивом.`;
|
|
320
375
|
}
|
|
321
376
|
const issue = error.reason.issues[0];
|
|
322
377
|
|
|
323
378
|
switch (issue.kind) {
|
|
324
379
|
case "Hole":
|
|
325
|
-
return
|
|
380
|
+
return `Елемент масиву з індексом ${issue.index} відсутній.`;
|
|
326
381
|
case "Accessor":
|
|
327
|
-
return
|
|
382
|
+
return `Елемент масиву з індексом ${issue.index} має бути властивістю даних.`;
|
|
328
383
|
case "ExcessProperty":
|
|
329
|
-
return "
|
|
384
|
+
return "Зайва властивість Array не допускається. Видаліть її або використайте інший Type.";
|
|
330
385
|
case "Element":
|
|
331
|
-
return
|
|
386
|
+
return `Елемент масиву з індексом ${issue.index} недійсний.`;
|
|
332
387
|
}
|
|
333
388
|
};
|
|
334
389
|
|
|
335
|
-
/**
|
|
390
|
+
/** Форматує SetError українською. */
|
|
336
391
|
export const formatSetError: TypeErrorFormatter<SetError> = (error) => {
|
|
337
392
|
if (error.reason.kind === "NotSet") {
|
|
338
|
-
return
|
|
393
|
+
return `Значення ${safelyStringifyUnknownValue(error.reason.value)} не є Set.`;
|
|
339
394
|
}
|
|
340
395
|
const issue = error.reason.issues[0];
|
|
341
396
|
|
|
342
397
|
switch (issue.kind) {
|
|
343
398
|
case "ExcessProperty":
|
|
344
|
-
return
|
|
399
|
+
return `Зайва властивість Set ${safelyStringifyUnknownValue(issue.key)} не допускається.`;
|
|
345
400
|
case "Element":
|
|
346
|
-
return
|
|
401
|
+
return `Елемент Set з індексом ${issue.index} недійсний.`;
|
|
347
402
|
}
|
|
348
403
|
};
|
|
349
404
|
|
|
350
|
-
/**
|
|
405
|
+
/** Форматує MapError українською. */
|
|
351
406
|
export const formatMapError: TypeErrorFormatter<MapError> = (error) => {
|
|
352
407
|
if (error.reason.kind === "NotMap") {
|
|
353
|
-
return
|
|
408
|
+
return `Значення ${safelyStringifyUnknownValue(error.reason.value)} не є Map.`;
|
|
354
409
|
}
|
|
355
410
|
const issue = error.reason.issues[0];
|
|
356
411
|
|
|
357
412
|
switch (issue.kind) {
|
|
358
413
|
case "ExcessProperty":
|
|
359
|
-
return
|
|
414
|
+
return `Зайва властивість Map ${safelyStringifyUnknownValue(issue.key)} не допускається.`;
|
|
360
415
|
case "Key":
|
|
361
416
|
case "Value":
|
|
362
|
-
return
|
|
417
|
+
return `Елемент Map з індексом ${issue.index} недійсний.`;
|
|
363
418
|
case "Collision":
|
|
364
|
-
return
|
|
419
|
+
return `Ключі Map ${safelyStringifyUnknownValue(issue.previousKey)} та ${safelyStringifyUnknownValue(issue.key)} декодуються в той самий ключ ${safelyStringifyUnknownValue(issue.outputKey)}.`;
|
|
365
420
|
}
|
|
366
421
|
};
|
|
367
422
|
|
|
368
|
-
/**
|
|
423
|
+
/** Форматує TupleError українською. */
|
|
369
424
|
export const formatTupleError: TypeErrorFormatter<
|
|
370
425
|
TupleError | TupleElementsError<TypeError>
|
|
371
426
|
> = (error) => {
|
|
372
427
|
if (error.reason.kind === "NotArray") {
|
|
373
|
-
return
|
|
428
|
+
return `Значення ${safelyStringifyUnknownValue(error.reason.value)} не є кортежем.`;
|
|
374
429
|
}
|
|
375
430
|
if (error.reason.kind === "InvalidLength") {
|
|
376
|
-
return `
|
|
431
|
+
return `Tuple має містити рівно ${error.reason.expected} елементів, але значення містить ${error.reason.actual}.`;
|
|
377
432
|
}
|
|
378
433
|
|
|
379
434
|
const issue = error.reason.issues[0];
|
|
380
435
|
|
|
381
436
|
switch (issue.kind) {
|
|
382
437
|
case "Hole":
|
|
383
|
-
return
|
|
438
|
+
return `Елемент Tuple з індексом ${issue.index} відсутній.`;
|
|
384
439
|
case "Accessor":
|
|
385
|
-
return
|
|
440
|
+
return `Елемент Tuple з індексом ${issue.index} має бути властивістю даних.`;
|
|
386
441
|
case "ExcessProperty":
|
|
387
|
-
return "
|
|
442
|
+
return "Зайва властивість Tuple не допускається. Видаліть її або використайте інший Type.";
|
|
388
443
|
case "Element":
|
|
389
|
-
return
|
|
444
|
+
return `Елемент Tuple з індексом ${issue.index} недійсний.`;
|
|
390
445
|
}
|
|
391
446
|
};
|
|
392
447
|
|
|
393
|
-
/**
|
|
448
|
+
/** Форматує RecordError українською. */
|
|
394
449
|
export const formatRecordError: TypeErrorFormatter<RecordError> = (error) => {
|
|
395
450
|
if (error.reason.kind === "NotRecord") {
|
|
396
|
-
return
|
|
451
|
+
return `Значення ${safelyStringifyUnknownValue(error.reason.value)} не є Record.`;
|
|
397
452
|
}
|
|
398
453
|
if (error.reason.kind === "NotPlainRecord") {
|
|
399
|
-
return "
|
|
454
|
+
return "Значення є об’єктом, але вихідне значення Record має бути простим об’єктом або мати прототип null.";
|
|
400
455
|
}
|
|
401
456
|
|
|
402
457
|
const issue = error.reason.issues[0];
|
|
403
458
|
|
|
404
459
|
switch (issue.kind) {
|
|
405
460
|
case "Key":
|
|
406
|
-
return
|
|
461
|
+
return `Ключ властивості ${safelyStringifyUnknownValue(issue.key)} недійсний.`;
|
|
407
462
|
case "Value":
|
|
408
|
-
return
|
|
463
|
+
return `Значення властивості ${safelyStringifyUnknownValue(issue.key)} недійсне.`;
|
|
409
464
|
case "Accessor":
|
|
410
|
-
return
|
|
465
|
+
return `Властивість Record ${safelyStringifyUnknownValue(issue.key)} має бути властивістю даних.`;
|
|
411
466
|
case "NonEnumerable":
|
|
412
|
-
return
|
|
467
|
+
return `Властивість Record ${safelyStringifyUnknownValue(issue.key)} має бути перелічуваною.`;
|
|
413
468
|
case "Collision":
|
|
414
|
-
return
|
|
469
|
+
return `Ключі Record ${safelyStringifyUnknownValue(issue.previousKey)} та ${safelyStringifyUnknownValue(issue.key)} декодуються в той самий ключ ${safelyStringifyUnknownValue(issue.outputKey)}.`;
|
|
415
470
|
}
|
|
416
471
|
};
|
|
417
472
|
|
|
418
|
-
/**
|
|
473
|
+
/** Форматує ObjectError українською. */
|
|
419
474
|
export const formatObjectError: TypeErrorFormatter<ObjectError> = (error) => {
|
|
420
475
|
if (error.reason.kind !== "Properties") {
|
|
421
476
|
return formatPlainObjectRootError(error.reason);
|
|
@@ -429,24 +484,24 @@ export const formatObjectError: TypeErrorFormatter<ObjectError> = (error) => {
|
|
|
429
484
|
if (propertyError.type === "ObjectPropertyAccess") {
|
|
430
485
|
switch ((propertyError as ObjectPropertyAccessError).reason) {
|
|
431
486
|
case "Accessor":
|
|
432
|
-
return "
|
|
487
|
+
return "Властивість Object має бути властивістю даних. Матеріалізуйте значення аксесорів у прості дані перед використанням цього Type або використайте інший Type.";
|
|
433
488
|
case "NonEnumerable":
|
|
434
|
-
return "
|
|
489
|
+
return "Властивість Object має бути перелічуваною. Зробіть її перелічуваною або використайте інший Type.";
|
|
435
490
|
}
|
|
436
491
|
}
|
|
437
492
|
if (propertyError.type === "ObjectMissingProperty") {
|
|
438
|
-
return
|
|
493
|
+
return `Обов’язкова властивість ${safelyStringifyUnknownValue(key)} відсутня.`;
|
|
439
494
|
}
|
|
440
495
|
if (typeof key === "symbol") {
|
|
441
|
-
return "
|
|
496
|
+
return "Ключ властивості Object має бути рядком. Видаліть символьну властивість або використайте інший Type.";
|
|
442
497
|
}
|
|
443
498
|
if (propertyError.type === "ObjectExcessProperty") {
|
|
444
|
-
return
|
|
499
|
+
return `Властивість ${safelyStringifyUnknownValue(key)} не допускається. Видаліть її або використайте інший Type.`;
|
|
445
500
|
}
|
|
446
|
-
return
|
|
501
|
+
return `Властивість ${safelyStringifyUnknownValue(key)} недійсна.`;
|
|
447
502
|
};
|
|
448
503
|
|
|
449
|
-
/**
|
|
504
|
+
/** Форматує DiscriminatedUnionError українською. */
|
|
450
505
|
export const formatDiscriminatedUnionError: TypeErrorFormatter<
|
|
451
506
|
DiscriminatedUnionError
|
|
452
507
|
> = (error) => {
|
|
@@ -454,23 +509,23 @@ export const formatDiscriminatedUnionError: TypeErrorFormatter<
|
|
|
454
509
|
case "Object":
|
|
455
510
|
return formatPlainObjectRootError(error.reason.error.reason);
|
|
456
511
|
case "PropertyAccess": {
|
|
457
|
-
const property =
|
|
512
|
+
const property = `Властивість-дискримінатор ${safelyStringifyUnknownValue(error.reason.key)}`;
|
|
458
513
|
if (error.reason.reason === "Accessor") {
|
|
459
|
-
return `${property}
|
|
514
|
+
return `${property} має бути властивістю даних.`;
|
|
460
515
|
}
|
|
461
516
|
if (error.reason.reason === "Inherited") {
|
|
462
|
-
return `${property}
|
|
517
|
+
return `${property} має бути власною властивістю.`;
|
|
463
518
|
}
|
|
464
|
-
return `${property}
|
|
519
|
+
return `${property} має бути перелічуваною.`;
|
|
465
520
|
}
|
|
466
521
|
case "Discriminator":
|
|
467
|
-
return
|
|
522
|
+
return `Властивість-дискримінатор ${safelyStringifyUnknownValue(error.reason.key)} має неочікуване значення ${safelyStringifyUnknownValue(error.reason.value)}.`;
|
|
468
523
|
case "Member":
|
|
469
|
-
return
|
|
524
|
+
return `Вибраний варіант ${safelyStringifyUnknownValue(error.reason.discriminator)} недійсний.`;
|
|
470
525
|
}
|
|
471
526
|
};
|
|
472
527
|
|
|
473
|
-
/**
|
|
528
|
+
/** Форматує JsonValueError українською. */
|
|
474
529
|
export const formatJsonValueError: TypeErrorFormatter<JsonValueError> = (
|
|
475
530
|
error,
|
|
476
531
|
) => {
|
|
@@ -478,26 +533,44 @@ export const formatJsonValueError: TypeErrorFormatter<JsonValueError> = (
|
|
|
478
533
|
|
|
479
534
|
switch (issue.kind) {
|
|
480
535
|
case "InvalidType":
|
|
481
|
-
return
|
|
536
|
+
return `Значення ${safelyStringifyUnknownValue(issue.value)} не є значенням JSON.`;
|
|
482
537
|
case "NonFiniteNumber":
|
|
483
|
-
return "
|
|
538
|
+
return "Число JSON має бути скінченним.";
|
|
484
539
|
case "UnexpectedPrototype":
|
|
485
|
-
return "
|
|
540
|
+
return "Значення є об’єктом, але об’єкт JsonValue має бути простим об’єктом або мати прототип null.";
|
|
486
541
|
case "Accessor":
|
|
487
|
-
return "
|
|
542
|
+
return "Властивість JSON має бути властивістю даних. Матеріалізуйте значення аксесорів у прості дані перед використанням цього Type або використайте інший Type.";
|
|
488
543
|
case "NonEnumerable":
|
|
489
|
-
return "
|
|
544
|
+
return "Властивість об’єкта JSON має бути перелічуваною. Видаліть її або використайте інший Type.";
|
|
490
545
|
case "SymbolProperty":
|
|
491
|
-
return "
|
|
546
|
+
return "Ключ властивості об’єкта JSON має бути рядком. Видаліть символьну властивість або використайте інший Type.";
|
|
492
547
|
case "Hole":
|
|
493
|
-
return "
|
|
548
|
+
return "Елемент масиву JSON відсутній.";
|
|
494
549
|
case "ExcessProperty":
|
|
495
|
-
return "
|
|
550
|
+
return "Зайва властивість масиву JSON не допускається. Видаліть її або використайте інший Type.";
|
|
496
551
|
case "CircularReference":
|
|
497
|
-
return "
|
|
552
|
+
return "JsonValue не має містити циклічних посилань.";
|
|
498
553
|
}
|
|
499
554
|
};
|
|
500
555
|
|
|
501
|
-
/**
|
|
556
|
+
/** Форматує JsonError українською. */
|
|
502
557
|
export const formatJsonError: TypeErrorFormatter<JsonError> = (error) =>
|
|
503
|
-
|
|
558
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} неможливо розібрати як JsonValue.`;
|
|
559
|
+
|
|
560
|
+
/** Formats a {@link ByteSizeLiteralError}. */
|
|
561
|
+
export const formatByteSizeLiteralError: TypeErrorFormatter<
|
|
562
|
+
ByteSizeLiteralError
|
|
563
|
+
> = (error) =>
|
|
564
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є літералом розміру в байтах. Використовуйте значення на кшталт "512KiB" або "1MiB".`;
|
|
565
|
+
|
|
566
|
+
/** Formats a {@link DurationLiteralError}. */
|
|
567
|
+
export const formatDurationLiteralError: TypeErrorFormatter<
|
|
568
|
+
DurationLiteralError
|
|
569
|
+
> = (error) =>
|
|
570
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є літералом тривалості. Використовуйте значення на кшталт "500ms" або "1.5s".`;
|
|
571
|
+
|
|
572
|
+
/** Formats a {@link PercentageLiteralError}. */
|
|
573
|
+
export const formatPercentageLiteralError: TypeErrorFormatter<
|
|
574
|
+
PercentageLiteralError
|
|
575
|
+
> = (error) =>
|
|
576
|
+
`Значення ${safelyStringifyUnknownValue(error.value)} не є відсотковим літералом. Використовуйте значення на кшталт "50%" або "12.5%".`;
|