@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.
- package/dist/src/Function.d.ts +1 -0
- package/dist/src/Function.d.ts.map +1 -1
- package/dist/src/Http.d.ts +9 -0
- package/dist/src/Http.d.ts.map +1 -1
- package/dist/src/Object.d.ts +1 -0
- package/dist/src/Object.d.ts.map +1 -1
- package/dist/src/RefCount.d.ts +1 -0
- package/dist/src/RefCount.d.ts.map +1 -1
- package/dist/src/Relation.d.ts +2 -0
- package/dist/src/Relation.d.ts.map +1 -1
- package/dist/src/Resource.d.ts +1 -0
- package/dist/src/Resource.d.ts.map +1 -1
- package/dist/src/Result.d.ts +383 -548
- package/dist/src/Result.d.ts.map +1 -1
- package/dist/src/Result.js +296 -46
- package/dist/src/StackTrace.d.ts +1 -0
- package/dist/src/StackTrace.d.ts.map +1 -1
- package/dist/src/Task.d.ts +985 -1069
- package/dist/src/Task.d.ts.map +1 -1
- package/dist/src/Task.js +1007 -156
- package/dist/src/Time.d.ts +1 -0
- package/dist/src/Time.d.ts.map +1 -1
- package/dist/src/Type.d.ts +1285 -734
- package/dist/src/Type.d.ts.map +1 -1
- package/dist/src/Type.js +1057 -193
- package/dist/src/intl/_en.d.ts +126 -0
- package/dist/src/intl/_en.d.ts.map +1 -0
- package/dist/src/intl/_en.js +267 -0
- package/dist/src/intl/ar.d.ts +117 -0
- package/dist/src/intl/ar.d.ts.map +1 -0
- package/dist/src/intl/ar.js +245 -0
- package/dist/src/intl/bn.d.ts +117 -0
- package/dist/src/intl/bn.d.ts.map +1 -0
- package/dist/src/intl/bn.js +258 -0
- package/dist/src/intl/ca.d.ts +117 -0
- package/dist/src/intl/ca.d.ts.map +1 -0
- package/dist/src/intl/ca.js +258 -0
- package/dist/src/intl/cs.d.ts +20 -7
- package/dist/src/intl/cs.d.ts.map +1 -1
- package/dist/src/intl/cs.js +54 -27
- package/dist/src/intl/da.d.ts +117 -0
- package/dist/src/intl/da.d.ts.map +1 -0
- package/dist/src/intl/da.js +258 -0
- package/dist/src/intl/de.d.ts +117 -0
- package/dist/src/intl/de.d.ts.map +1 -0
- package/dist/src/intl/de.js +258 -0
- package/dist/src/intl/el.d.ts +117 -0
- package/dist/src/intl/el.d.ts.map +1 -0
- package/dist/src/intl/el.js +265 -0
- package/dist/src/intl/es.d.ts +117 -0
- package/dist/src/intl/es.d.ts.map +1 -0
- package/dist/src/intl/es.js +258 -0
- package/dist/src/intl/fa.d.ts +117 -0
- package/dist/src/intl/fa.d.ts.map +1 -0
- package/dist/src/intl/fa.js +258 -0
- package/dist/src/intl/fi.d.ts +117 -0
- package/dist/src/intl/fi.d.ts.map +1 -0
- package/dist/src/intl/fi.js +258 -0
- package/dist/src/intl/fil.d.ts +117 -0
- package/dist/src/intl/fil.d.ts.map +1 -0
- package/dist/src/intl/fil.js +258 -0
- package/dist/src/intl/fr.d.ts +117 -0
- package/dist/src/intl/fr.d.ts.map +1 -0
- package/dist/src/intl/fr.js +258 -0
- package/dist/src/intl/he.d.ts +117 -0
- package/dist/src/intl/he.d.ts.map +1 -0
- package/dist/src/intl/he.js +258 -0
- package/dist/src/intl/hi.d.ts +117 -0
- package/dist/src/intl/hi.d.ts.map +1 -0
- package/dist/src/intl/hi.js +258 -0
- package/dist/src/intl/hr.d.ts +117 -0
- package/dist/src/intl/hr.d.ts.map +1 -0
- package/dist/src/intl/hr.js +265 -0
- package/dist/src/intl/hu.d.ts +63 -0
- package/dist/src/intl/hu.d.ts.map +1 -0
- package/dist/src/intl/hu.js +204 -0
- package/dist/src/intl/id.d.ts +117 -0
- package/dist/src/intl/id.d.ts.map +1 -0
- package/dist/src/intl/id.js +258 -0
- package/dist/src/intl/index.d.ts +42 -0
- package/dist/src/intl/index.d.ts.map +1 -1
- package/dist/src/intl/index.js +42 -0
- package/dist/src/intl/it.d.ts +117 -0
- package/dist/src/intl/it.d.ts.map +1 -0
- package/dist/src/intl/it.js +258 -0
- package/dist/src/intl/ja.d.ts +117 -0
- package/dist/src/intl/ja.d.ts.map +1 -0
- package/dist/src/intl/ja.js +258 -0
- package/dist/src/intl/ko.d.ts +117 -0
- package/dist/src/intl/ko.d.ts.map +1 -0
- package/dist/src/intl/ko.js +258 -0
- package/dist/src/intl/ml.d.ts +117 -0
- package/dist/src/intl/ml.d.ts.map +1 -0
- package/dist/src/intl/ml.js +258 -0
- package/dist/src/intl/mr.d.ts +117 -0
- package/dist/src/intl/mr.d.ts.map +1 -0
- package/dist/src/intl/mr.js +258 -0
- package/dist/src/intl/ms.d.ts +117 -0
- package/dist/src/intl/ms.d.ts.map +1 -0
- package/dist/src/intl/ms.js +245 -0
- package/dist/src/intl/nb.d.ts +63 -0
- package/dist/src/intl/nb.d.ts.map +1 -0
- package/dist/src/intl/nb.js +191 -0
- package/dist/src/intl/nl.d.ts +117 -0
- package/dist/src/intl/nl.d.ts.map +1 -0
- package/dist/src/intl/nl.js +258 -0
- package/dist/src/intl/pa.d.ts +117 -0
- package/dist/src/intl/pa.d.ts.map +1 -0
- package/dist/src/intl/pa.js +258 -0
- package/dist/src/intl/pl.d.ts +117 -0
- package/dist/src/intl/pl.d.ts.map +1 -0
- package/dist/src/intl/pl.js +242 -0
- package/dist/src/intl/pt-BR.d.ts +117 -0
- package/dist/src/intl/pt-BR.d.ts.map +1 -0
- package/dist/src/intl/pt-BR.js +258 -0
- package/dist/src/intl/pt.d.ts +117 -0
- package/dist/src/intl/pt.d.ts.map +1 -0
- package/dist/src/intl/pt.js +246 -0
- package/dist/src/intl/ro.d.ts +117 -0
- package/dist/src/intl/ro.d.ts.map +1 -0
- package/dist/src/intl/ro.js +258 -0
- package/dist/src/intl/sk.d.ts +117 -0
- package/dist/src/intl/sk.d.ts.map +1 -0
- package/dist/src/intl/sk.js +244 -0
- package/dist/src/intl/sl.d.ts +117 -0
- package/dist/src/intl/sl.d.ts.map +1 -0
- package/dist/src/intl/sl.js +258 -0
- package/dist/src/intl/sv.d.ts +117 -0
- package/dist/src/intl/sv.d.ts.map +1 -0
- package/dist/src/intl/sv.js +258 -0
- package/dist/src/intl/sw.d.ts +63 -0
- package/dist/src/intl/sw.d.ts.map +1 -0
- package/dist/src/intl/sw.js +191 -0
- package/dist/src/intl/ta.d.ts +117 -0
- package/dist/src/intl/ta.d.ts.map +1 -0
- package/dist/src/intl/ta.js +258 -0
- package/dist/src/intl/te.d.ts +117 -0
- package/dist/src/intl/te.d.ts.map +1 -0
- package/dist/src/intl/te.js +258 -0
- package/dist/src/intl/th.d.ts +117 -0
- package/dist/src/intl/th.d.ts.map +1 -0
- package/dist/src/intl/th.js +258 -0
- package/dist/src/intl/tr.d.ts +117 -0
- package/dist/src/intl/tr.d.ts.map +1 -0
- package/dist/src/intl/tr.js +255 -0
- package/dist/src/intl/uk.d.ts +117 -0
- package/dist/src/intl/uk.d.ts.map +1 -0
- package/dist/src/intl/uk.js +258 -0
- package/dist/src/intl/ur.d.ts +117 -0
- package/dist/src/intl/ur.d.ts.map +1 -0
- package/dist/src/intl/ur.js +245 -0
- package/dist/src/intl/vi.d.ts +117 -0
- package/dist/src/intl/vi.d.ts.map +1 -0
- package/dist/src/intl/vi.js +255 -0
- package/dist/src/intl/zh-CN.d.ts +117 -0
- package/dist/src/intl/zh-CN.d.ts.map +1 -0
- package/dist/src/intl/zh-CN.js +258 -0
- package/dist/src/intl/zh-TW.d.ts +117 -0
- package/dist/src/intl/zh-TW.d.ts.map +1 -0
- package/dist/src/intl/zh-TW.js +258 -0
- package/dist/src/local-first/Owner.d.ts +156 -62
- package/dist/src/local-first/Owner.d.ts.map +1 -1
- package/dist/src/local-first/Owner.js +119 -20
- package/package.json +1 -1
- package/src/Function.ts +2 -0
- package/src/Http.ts +9 -0
- package/src/Object.ts +2 -0
- package/src/RefCount.ts +2 -0
- package/src/Relation.ts +4 -0
- package/src/Resource.ts +2 -0
- package/src/Result.ts +397 -560
- package/src/StackTrace.ts +2 -0
- package/src/Task.ts +1143 -1222
- package/src/Time.ts +2 -0
- package/src/Type.ts +1598 -712
- package/src/intl/_en.ts +497 -0
- package/src/intl/ar.ts +417 -0
- package/src/intl/bn.ts +486 -0
- package/src/intl/ca.ts +488 -0
- package/src/intl/cs.ts +95 -31
- package/src/intl/da.ts +488 -0
- package/src/intl/de.ts +488 -0
- package/src/intl/el.ts +494 -0
- package/src/intl/es.ts +488 -0
- package/src/intl/fa.ts +487 -0
- package/src/intl/fi.ts +487 -0
- package/src/intl/fil.ts +488 -0
- package/src/intl/fr.ts +488 -0
- package/src/intl/he.ts +486 -0
- package/src/intl/hi.ts +487 -0
- package/src/intl/hr.ts +494 -0
- package/src/intl/hu.ts +387 -0
- package/src/intl/id.ts +487 -0
- package/src/intl/index.ts +42 -0
- package/src/intl/it.ts +488 -0
- package/src/intl/ja.ts +488 -0
- package/src/intl/ko.ts +487 -0
- package/src/intl/ml.ts +487 -0
- package/src/intl/mr.ts +487 -0
- package/src/intl/ms.ts +410 -0
- package/src/intl/nb.ts +364 -0
- package/src/intl/nl.ts +488 -0
- package/src/intl/pa.ts +487 -0
- package/src/intl/pl.ts +450 -0
- package/src/intl/pt-BR.ts +487 -0
- package/src/intl/pt.ts +424 -0
- package/src/intl/ro.ts +488 -0
- package/src/intl/sk.ts +412 -0
- package/src/intl/sl.ts +487 -0
- package/src/intl/sv.ts +488 -0
- package/src/intl/sw.ts +324 -0
- package/src/intl/ta.ts +487 -0
- package/src/intl/te.ts +487 -0
- package/src/intl/th.ts +484 -0
- package/src/intl/tr.ts +487 -0
- package/src/intl/uk.ts +488 -0
- package/src/intl/ur.ts +410 -0
- package/src/intl/vi.ts +435 -0
- package/src/intl/zh-CN.ts +482 -0
- package/src/intl/zh-TW.ts +482 -0
- package/src/local-first/Owner.ts +156 -62
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bộ định dạng lỗi Evolu Type tiếng Việt.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { assertNonNullable } from "../Assert.js";
|
|
7
|
+
import { safelyStringifyUnknownValue } from "../String.js";
|
|
8
|
+
const formatTypeOfError = (error) => {
|
|
9
|
+
const typeOf = error.expected.toLowerCase();
|
|
10
|
+
return `Giá trị ${safelyStringifyUnknownValue(error.value)} không phải là ${typeOf}.`;
|
|
11
|
+
};
|
|
12
|
+
const formatPlainObjectRootError = (reason) => reason.kind === "NotObject"
|
|
13
|
+
? `Giá trị ${safelyStringifyUnknownValue(reason.value)} không phải là đối tượng.`
|
|
14
|
+
: "Giá trị là một đối tượng, nhưng Object Output phải là một đối tượng thuần hoặc có nguyên mẫu null.";
|
|
15
|
+
/** Định dạng NeverError bằng tiếng Việt. */
|
|
16
|
+
export const formatNeverError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không hợp lệ cho kiểu Never.`;
|
|
17
|
+
/** Định dạng String TypeOfError bằng tiếng Việt. */
|
|
18
|
+
export const formatStringError = formatTypeOfError;
|
|
19
|
+
/** Định dạng TemplateLiteralError bằng tiếng Việt. */
|
|
20
|
+
export const formatTemplateLiteralError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không khớp với mẫu chuỗi.`;
|
|
21
|
+
/** Định dạng Number TypeOfError bằng tiếng Việt. */
|
|
22
|
+
export const formatNumberError = formatTypeOfError;
|
|
23
|
+
/** Định dạng BigInt TypeOfError bằng tiếng Việt. */
|
|
24
|
+
export const formatBigIntError = formatTypeOfError;
|
|
25
|
+
/** Định dạng Boolean TypeOfError bằng tiếng Việt. */
|
|
26
|
+
export const formatBooleanError = formatTypeOfError;
|
|
27
|
+
/** Định dạng Symbol TypeOfError bằng tiếng Việt. */
|
|
28
|
+
export const formatSymbolError = formatTypeOfError;
|
|
29
|
+
/** Định dạng Function TypeOfError bằng tiếng Việt. */
|
|
30
|
+
export const formatFunctionError = formatTypeOfError;
|
|
31
|
+
/** Định dạng EvoluTypeError bằng tiếng Việt. */
|
|
32
|
+
export const formatEvoluTypeError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không phải là một Evolu Type.`;
|
|
33
|
+
/** Định dạng ObjectTagError bằng tiếng Việt. */
|
|
34
|
+
export const formatObjectTagError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không có thẻ đối tượng mong đợi ${safelyStringifyUnknownValue(error.expected)}.`;
|
|
35
|
+
/** Định dạng InstanceOfError bằng tiếng Việt. */
|
|
36
|
+
export const formatInstanceOfError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không phải là một thể hiện của ${error.constructorName}.`;
|
|
37
|
+
/** Định dạng LiteralError bằng tiếng Việt. */
|
|
38
|
+
export const formatLiteralError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không hoàn toàn bằng literal mong đợi: ${globalThis.String(error.expected)}.`;
|
|
39
|
+
/** Định dạng UnionError bằng tiếng Việt. */
|
|
40
|
+
export const formatUnionError = () => "Giá trị không khớp với bất kỳ biến thể nào được cho phép.";
|
|
41
|
+
/** Định dạng DateIsoError bằng tiếng Việt. */
|
|
42
|
+
export const formatDateIsoError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không phải là chuỗi ngày-giờ ISO chính tắc.`;
|
|
43
|
+
/** Định dạng DateIsoFromDateError bằng tiếng Việt. */
|
|
44
|
+
export const formatDateIsoFromDateError = () => "Date không thể được biểu diễn dưới dạng DateIso.";
|
|
45
|
+
/** Định dạng DecimalStringError bằng tiếng Việt. */
|
|
46
|
+
export const formatDecimalStringError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải là chuỗi thập phân chính tắc.`;
|
|
47
|
+
/** Định dạng Int64Error bằng tiếng Việt. */
|
|
48
|
+
export const formatInt64Error = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không phải là số nguyên 64-bit có dấu (Int64) hợp lệ.`;
|
|
49
|
+
/** Định dạng UInt64Error bằng tiếng Việt. */
|
|
50
|
+
export const formatUInt64Error = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không phải là số nguyên 64-bit không dấu (UInt64) hợp lệ.`;
|
|
51
|
+
/** Định dạng Int64StringError bằng tiếng Việt. */
|
|
52
|
+
export const formatInt64StringError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không phải là chuỗi Int64 hợp lệ.`;
|
|
53
|
+
/** Định dạng CapitalizedError bằng tiếng Việt. */
|
|
54
|
+
export const formatCapitalizedError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải viết hoa chữ cái đầu.`;
|
|
55
|
+
/** Định dạng TrimmedError bằng tiếng Việt. */
|
|
56
|
+
export const formatTrimmedError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải được cắt khoảng trắng đầu và cuối.`;
|
|
57
|
+
/** Định dạng MinLengthError bằng tiếng Việt. */
|
|
58
|
+
export const formatMinLengthError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không đạt độ dài tối thiểu là ${error.min}.`;
|
|
59
|
+
/** Định dạng MaxLengthError bằng tiếng Việt. */
|
|
60
|
+
export const formatMaxLengthError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} vượt quá độ dài tối đa là ${error.max}.`;
|
|
61
|
+
/** Định dạng LengthError bằng tiếng Việt. */
|
|
62
|
+
export const formatLengthError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không có độ dài bắt buộc là ${error.exact}.`;
|
|
63
|
+
/** Định dạng RegexError bằng tiếng Việt. */
|
|
64
|
+
export const formatRegexError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không khớp với /${error.source}/${error.flags}.`;
|
|
65
|
+
/** Định dạng Base64UrlError bằng tiếng Việt. */
|
|
66
|
+
export const formatBase64UrlError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không phải là chuỗi Base64Url hợp lệ.`;
|
|
67
|
+
/** Định dạng NameError bằng tiếng Việt. */
|
|
68
|
+
export const formatNameError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không phải là Name hợp lệ.`;
|
|
69
|
+
/** Định dạng MnemonicError bằng tiếng Việt. */
|
|
70
|
+
export const formatMnemonicError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không phải là cụm từ gợi nhớ BIP39 tiếng Anh hợp lệ.`;
|
|
71
|
+
/** Định dạng IdError bằng tiếng Việt. */
|
|
72
|
+
export const formatIdError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không phải là Id hợp lệ.`;
|
|
73
|
+
/** Định dạng TableIdError bằng tiếng Việt. */
|
|
74
|
+
export const formatTableIdError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không phải là Id hợp lệ cho bảng ${error.table}.`;
|
|
75
|
+
/** Định dạng NonNegativeError bằng tiếng Việt. */
|
|
76
|
+
export const formatNonNegativeError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải không âm (>= 0).`;
|
|
77
|
+
/** Định dạng NonNegativeDecimalStringError bằng tiếng Việt. */
|
|
78
|
+
export const formatNonNegativeDecimalStringError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải là chuỗi thập phân không âm.`;
|
|
79
|
+
/** Định dạng PositiveError bằng tiếng Việt. */
|
|
80
|
+
export const formatPositiveError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải dương (> 0).`;
|
|
81
|
+
/** Định dạng PositiveDecimalStringError bằng tiếng Việt. */
|
|
82
|
+
export const formatPositiveDecimalStringError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải là chuỗi thập phân dương.`;
|
|
83
|
+
/** Định dạng NonPositiveError bằng tiếng Việt. */
|
|
84
|
+
export const formatNonPositiveError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải không dương (<= 0).`;
|
|
85
|
+
/** Định dạng NonPositiveDecimalStringError bằng tiếng Việt. */
|
|
86
|
+
export const formatNonPositiveDecimalStringError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải là chuỗi thập phân không dương.`;
|
|
87
|
+
/** Định dạng NegativeError bằng tiếng Việt. */
|
|
88
|
+
export const formatNegativeError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải âm (< 0).`;
|
|
89
|
+
/** Định dạng NegativeDecimalStringError bằng tiếng Việt. */
|
|
90
|
+
export const formatNegativeDecimalStringError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải là chuỗi thập phân âm.`;
|
|
91
|
+
/** Định dạng IntError bằng tiếng Việt. */
|
|
92
|
+
export const formatIntError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải là số nguyên an toàn.`;
|
|
93
|
+
/** Định dạng GreaterThanError bằng tiếng Việt. */
|
|
94
|
+
export const formatGreaterThanError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải lớn hơn ${error.min}.`;
|
|
95
|
+
/** Định dạng GreaterThanOrEqualToError bằng tiếng Việt. */
|
|
96
|
+
export const formatGreaterThanOrEqualToError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải lớn hơn hoặc bằng ${error.min}.`;
|
|
97
|
+
/** Định dạng LessThanError bằng tiếng Việt. */
|
|
98
|
+
export const formatLessThanError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải nhỏ hơn ${error.max}.`;
|
|
99
|
+
/** Định dạng LessThanOrEqualToError bằng tiếng Việt. */
|
|
100
|
+
export const formatLessThanOrEqualToError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải nhỏ hơn hoặc bằng ${error.max}.`;
|
|
101
|
+
/** Định dạng NonNaNError bằng tiếng Việt. */
|
|
102
|
+
export const formatNonNaNError = () => "Giá trị không được là NaN.";
|
|
103
|
+
/** Định dạng FiniteError bằng tiếng Việt. */
|
|
104
|
+
export const formatFiniteError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải hữu hạn.`;
|
|
105
|
+
/** Định dạng MultipleOfError bằng tiếng Việt. */
|
|
106
|
+
export const formatMultipleOfError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải là bội số của ${error.divisor}.`;
|
|
107
|
+
/** Định dạng BetweenError bằng tiếng Việt. */
|
|
108
|
+
export const formatBetweenError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} phải nằm trong khoảng từ ${error.min} đến ${error.max}, kể cả hai đầu.`;
|
|
109
|
+
/** Định dạng ArrayError bằng tiếng Việt. */
|
|
110
|
+
export const formatArrayError = (error) => {
|
|
111
|
+
if (error.reason.kind === "NotArray") {
|
|
112
|
+
return `Giá trị ${safelyStringifyUnknownValue(error.reason.value)} không phải là mảng.`;
|
|
113
|
+
}
|
|
114
|
+
const issue = error.reason.issues[0];
|
|
115
|
+
switch (issue.kind) {
|
|
116
|
+
case "Hole":
|
|
117
|
+
return `Phần tử mảng tại chỉ mục ${issue.index} bị thiếu.`;
|
|
118
|
+
case "Accessor":
|
|
119
|
+
return `Phần tử mảng tại chỉ mục ${issue.index} phải là thuộc tính dữ liệu.`;
|
|
120
|
+
case "ExcessProperty":
|
|
121
|
+
return "Không cho phép thuộc tính Array dư thừa. Hãy xóa nó hoặc dùng Type khác.";
|
|
122
|
+
case "Element":
|
|
123
|
+
return `Phần tử mảng tại chỉ mục ${issue.index} không hợp lệ.`;
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
/** Định dạng SetError bằng tiếng Việt. */
|
|
127
|
+
export const formatSetError = (error) => {
|
|
128
|
+
if (error.reason.kind === "NotSet") {
|
|
129
|
+
return `Giá trị ${safelyStringifyUnknownValue(error.reason.value)} không phải là Set.`;
|
|
130
|
+
}
|
|
131
|
+
if (error.reason.kind === "UnexpectedPrototype") {
|
|
132
|
+
return "Giá trị là một thể hiện của lớp con Set, nhưng Set Output phải là một thể hiện Set trực tiếp.";
|
|
133
|
+
}
|
|
134
|
+
const issue = error.reason.issues[0];
|
|
135
|
+
switch (issue.kind) {
|
|
136
|
+
case "ExcessProperty":
|
|
137
|
+
return `Không cho phép thuộc tính Set dư thừa ${safelyStringifyUnknownValue(issue.key)}.`;
|
|
138
|
+
case "Element":
|
|
139
|
+
return `Phần tử Set tại chỉ mục ${issue.index} không hợp lệ.`;
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
/** Định dạng TupleError bằng tiếng Việt. */
|
|
143
|
+
export const formatTupleError = (error) => {
|
|
144
|
+
if (error.reason.kind === "NotArray") {
|
|
145
|
+
return `Giá trị ${safelyStringifyUnknownValue(error.reason.value)} không phải là tuple.`;
|
|
146
|
+
}
|
|
147
|
+
if (error.reason.kind === "InvalidLength") {
|
|
148
|
+
return `Tuple phải chứa đúng ${error.reason.expected} phần tử, nhưng giá trị chứa ${error.reason.actual}.`;
|
|
149
|
+
}
|
|
150
|
+
const issue = error.reason.issues[0];
|
|
151
|
+
switch (issue.kind) {
|
|
152
|
+
case "Hole":
|
|
153
|
+
return `Phần tử Tuple tại chỉ mục ${issue.index} bị thiếu.`;
|
|
154
|
+
case "Accessor":
|
|
155
|
+
return `Phần tử Tuple tại chỉ mục ${issue.index} phải là thuộc tính dữ liệu.`;
|
|
156
|
+
case "ExcessProperty":
|
|
157
|
+
return "Không cho phép thuộc tính Tuple dư thừa. Hãy xóa nó hoặc dùng Type khác.";
|
|
158
|
+
case "Element":
|
|
159
|
+
return `Phần tử Tuple tại chỉ mục ${issue.index} không hợp lệ.`;
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
/** Định dạng RecordError bằng tiếng Việt. */
|
|
163
|
+
export const formatRecordError = (error) => {
|
|
164
|
+
if (error.reason.kind === "NotRecord") {
|
|
165
|
+
return `Giá trị ${safelyStringifyUnknownValue(error.reason.value)} không phải là Record.`;
|
|
166
|
+
}
|
|
167
|
+
if (error.reason.kind === "NotPlainRecord") {
|
|
168
|
+
return "Giá trị là một đối tượng, nhưng Record Output phải là một đối tượng thuần hoặc có nguyên mẫu null.";
|
|
169
|
+
}
|
|
170
|
+
const issue = error.reason.issues[0];
|
|
171
|
+
switch (issue.kind) {
|
|
172
|
+
case "Key":
|
|
173
|
+
return `Khóa thuộc tính ${safelyStringifyUnknownValue(issue.key)} không hợp lệ.`;
|
|
174
|
+
case "Value":
|
|
175
|
+
return `Giá trị của thuộc tính ${safelyStringifyUnknownValue(issue.key)} không hợp lệ.`;
|
|
176
|
+
case "Accessor":
|
|
177
|
+
return `Thuộc tính Record ${safelyStringifyUnknownValue(issue.key)} phải là thuộc tính dữ liệu.`;
|
|
178
|
+
case "NonEnumerable":
|
|
179
|
+
return `Thuộc tính Record ${safelyStringifyUnknownValue(issue.key)} phải có thể liệt kê.`;
|
|
180
|
+
case "Collision":
|
|
181
|
+
return `Các khóa Record ${safelyStringifyUnknownValue(issue.previousKey)} và ${safelyStringifyUnknownValue(issue.key)} giải mã thành cùng một khóa ${safelyStringifyUnknownValue(issue.outputKey)}.`;
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
/** Định dạng ObjectError bằng tiếng Việt. */
|
|
185
|
+
export const formatObjectError = (error) => {
|
|
186
|
+
if (error.reason.kind !== "Properties")
|
|
187
|
+
return formatPlainObjectRootError(error.reason);
|
|
188
|
+
const key = Reflect.ownKeys(error.reason.errors).at(0);
|
|
189
|
+
assertNonNullable(key);
|
|
190
|
+
const propertyError = error.reason.errors[key];
|
|
191
|
+
assertNonNullable(propertyError);
|
|
192
|
+
if (propertyError.type === "ObjectPropertyAccess") {
|
|
193
|
+
switch (propertyError.reason) {
|
|
194
|
+
case "Accessor":
|
|
195
|
+
return "Thuộc tính Object phải là thuộc tính dữ liệu. Hãy hiện thực hóa giá trị accessor thành dữ liệu thuần trước khi dùng Type này hoặc dùng Type khác.";
|
|
196
|
+
case "NonEnumerable":
|
|
197
|
+
return "Thuộc tính Object phải có thể liệt kê. Hãy làm cho nó có thể liệt kê hoặc dùng Type khác.";
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (propertyError.type === "ObjectMissingProperty") {
|
|
201
|
+
return `Thiếu thuộc tính bắt buộc ${safelyStringifyUnknownValue(key)}.`;
|
|
202
|
+
}
|
|
203
|
+
if (typeof key === "symbol") {
|
|
204
|
+
return "Khóa thuộc tính Object phải là chuỗi. Hãy xóa thuộc tính symbol hoặc dùng Type khác.";
|
|
205
|
+
}
|
|
206
|
+
if (propertyError.type === "ObjectExcessProperty") {
|
|
207
|
+
return `Thuộc tính ${safelyStringifyUnknownValue(key)} không được phép. Hãy xóa nó hoặc dùng Type khác.`;
|
|
208
|
+
}
|
|
209
|
+
return `Thuộc tính ${safelyStringifyUnknownValue(key)} không hợp lệ.`;
|
|
210
|
+
};
|
|
211
|
+
/** Định dạng DiscriminatedUnionError bằng tiếng Việt. */
|
|
212
|
+
export const formatDiscriminatedUnionError = (error) => {
|
|
213
|
+
switch (error.reason.kind) {
|
|
214
|
+
case "Object":
|
|
215
|
+
return formatPlainObjectRootError(error.reason.error.reason);
|
|
216
|
+
case "PropertyAccess": {
|
|
217
|
+
const property = `Thuộc tính phân biệt ${safelyStringifyUnknownValue(error.reason.key)}`;
|
|
218
|
+
if (error.reason.reason === "Accessor")
|
|
219
|
+
return `${property} phải là thuộc tính dữ liệu.`;
|
|
220
|
+
if (error.reason.reason === "Inherited")
|
|
221
|
+
return `${property} phải là thuộc tính riêng.`;
|
|
222
|
+
return `${property} phải có thể liệt kê.`;
|
|
223
|
+
}
|
|
224
|
+
case "Discriminator":
|
|
225
|
+
return `Thuộc tính phân biệt ${safelyStringifyUnknownValue(error.reason.key)} có giá trị không mong đợi ${safelyStringifyUnknownValue(error.reason.value)}.`;
|
|
226
|
+
case "Member":
|
|
227
|
+
return `Biến thể đã chọn ${safelyStringifyUnknownValue(error.reason.discriminator)} không hợp lệ.`;
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
/** Định dạng JsonValueError bằng tiếng Việt. */
|
|
231
|
+
export const formatJsonValueError = (error) => {
|
|
232
|
+
const issue = error.reason.issues[0];
|
|
233
|
+
switch (issue.kind) {
|
|
234
|
+
case "InvalidType":
|
|
235
|
+
return `Giá trị ${safelyStringifyUnknownValue(issue.value)} không phải là giá trị JSON.`;
|
|
236
|
+
case "NonFiniteNumber":
|
|
237
|
+
return "Số JSON phải hữu hạn.";
|
|
238
|
+
case "UnexpectedPrototype":
|
|
239
|
+
return "Giá trị là một đối tượng, nhưng đối tượng JsonValue phải là đối tượng thuần hoặc có nguyên mẫu null.";
|
|
240
|
+
case "Accessor":
|
|
241
|
+
return "Thuộc tính JSON phải là thuộc tính dữ liệu. Hãy hiện thực hóa giá trị accessor thành dữ liệu thuần trước khi dùng Type này hoặc dùng Type khác.";
|
|
242
|
+
case "NonEnumerable":
|
|
243
|
+
return "Thuộc tính đối tượng JSON phải có thể liệt kê. Hãy xóa nó hoặc dùng Type khác.";
|
|
244
|
+
case "SymbolProperty":
|
|
245
|
+
return "Khóa thuộc tính đối tượng JSON phải là chuỗi. Hãy xóa thuộc tính symbol hoặc dùng Type khác.";
|
|
246
|
+
case "Hole":
|
|
247
|
+
return "Một phần tử mảng JSON bị thiếu.";
|
|
248
|
+
case "ExcessProperty":
|
|
249
|
+
return "Không cho phép thuộc tính mảng JSON dư thừa. Hãy xóa nó hoặc dùng Type khác.";
|
|
250
|
+
case "CircularReference":
|
|
251
|
+
return "JsonValue không được chứa tham chiếu vòng.";
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
/** Định dạng JsonError bằng tiếng Việt. */
|
|
255
|
+
export const formatJsonError = (error) => `Giá trị ${safelyStringifyUnknownValue(error.value)} không thể được phân tích thành JsonValue.`;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 简体中文 Evolu Type 错误格式化器。
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { ArrayError, Base64UrlError, BetweenError, CapitalizedError, DateIsoError, DateIsoFromDateError, DecimalStringError, DiscriminatedUnionError, EvoluTypeError, FiniteError, GreaterThanError, GreaterThanOrEqualToError, InstanceOfError, Int64Error, Int64StringError, IntError, IdError, JsonError, JsonValueError, LengthError, LessThanError, LessThanOrEqualToError, LiteralError, MaxLengthError, MinLengthError, MnemonicError, MultipleOfError, NegativeDecimalStringError, NegativeError, NameError, NeverError, NonNaNError, NonNegativeDecimalStringError, NonNegativeError, NonPositiveDecimalStringError, NonPositiveError, ObjectError, ObjectTagError, PositiveDecimalStringError, PositiveError, RecordError, RegexError, SetError, TableIdError, TemplateLiteralError, TrimmedError, TupleElementsError, TupleError, TypeError, TypeErrorFormatter, TypeOfError, UInt64Error, UnionError } from "../Type.ts";
|
|
7
|
+
/** 以简体中文格式化 NeverError。 */
|
|
8
|
+
export declare const formatNeverError: TypeErrorFormatter<NeverError>;
|
|
9
|
+
/** 以简体中文格式化 String TypeOfError。 */
|
|
10
|
+
export declare const formatStringError: TypeErrorFormatter<TypeOfError<"String">>;
|
|
11
|
+
/** 以简体中文格式化 TemplateLiteralError。 */
|
|
12
|
+
export declare const formatTemplateLiteralError: TypeErrorFormatter<TemplateLiteralError>;
|
|
13
|
+
/** 以简体中文格式化 Number TypeOfError。 */
|
|
14
|
+
export declare const formatNumberError: TypeErrorFormatter<TypeOfError<"Number">>;
|
|
15
|
+
/** 以简体中文格式化 BigInt TypeOfError。 */
|
|
16
|
+
export declare const formatBigIntError: TypeErrorFormatter<TypeOfError<"BigInt">>;
|
|
17
|
+
/** 以简体中文格式化 Boolean TypeOfError。 */
|
|
18
|
+
export declare const formatBooleanError: TypeErrorFormatter<TypeOfError<"Boolean">>;
|
|
19
|
+
/** 以简体中文格式化 Symbol TypeOfError。 */
|
|
20
|
+
export declare const formatSymbolError: TypeErrorFormatter<TypeOfError<"Symbol">>;
|
|
21
|
+
/** 以简体中文格式化 Function TypeOfError。 */
|
|
22
|
+
export declare const formatFunctionError: TypeErrorFormatter<TypeOfError<"Function">>;
|
|
23
|
+
/** Formats an EvoluTypeError。 */
|
|
24
|
+
export declare const formatEvoluTypeError: TypeErrorFormatter<EvoluTypeError>;
|
|
25
|
+
/** Formats an ObjectTagError。 */
|
|
26
|
+
export declare const formatObjectTagError: TypeErrorFormatter<ObjectTagError>;
|
|
27
|
+
/** Formats an InstanceOfError。 */
|
|
28
|
+
export declare const formatInstanceOfError: TypeErrorFormatter<InstanceOfError>;
|
|
29
|
+
/** 以简体中文格式化 LiteralError。 */
|
|
30
|
+
export declare const formatLiteralError: TypeErrorFormatter<LiteralError>;
|
|
31
|
+
/** 以简体中文格式化 UnionError。 */
|
|
32
|
+
export declare const formatUnionError: TypeErrorFormatter<UnionError>;
|
|
33
|
+
/** 以简体中文格式化 DateIsoError。 */
|
|
34
|
+
export declare const formatDateIsoError: TypeErrorFormatter<DateIsoError>;
|
|
35
|
+
/** 以简体中文格式化 DateIsoFromDateError。 */
|
|
36
|
+
export declare const formatDateIsoFromDateError: TypeErrorFormatter<DateIsoFromDateError>;
|
|
37
|
+
/** 以简体中文格式化 DecimalStringError。 */
|
|
38
|
+
export declare const formatDecimalStringError: TypeErrorFormatter<DecimalStringError>;
|
|
39
|
+
/** Formats an Int64Error。 */
|
|
40
|
+
export declare const formatInt64Error: TypeErrorFormatter<Int64Error>;
|
|
41
|
+
/** 以简体中文格式化 UInt64Error。 */
|
|
42
|
+
export declare const formatUInt64Error: TypeErrorFormatter<UInt64Error>;
|
|
43
|
+
/** Formats an Int64StringError。 */
|
|
44
|
+
export declare const formatInt64StringError: TypeErrorFormatter<Int64StringError>;
|
|
45
|
+
/** 以简体中文格式化 CapitalizedError。 */
|
|
46
|
+
export declare const formatCapitalizedError: TypeErrorFormatter<CapitalizedError>;
|
|
47
|
+
/** 以简体中文格式化 TrimmedError。 */
|
|
48
|
+
export declare const formatTrimmedError: TypeErrorFormatter<TrimmedError>;
|
|
49
|
+
/** 以简体中文格式化 MinLengthError。 */
|
|
50
|
+
export declare const formatMinLengthError: TypeErrorFormatter<MinLengthError>;
|
|
51
|
+
/** 以简体中文格式化 MaxLengthError。 */
|
|
52
|
+
export declare const formatMaxLengthError: TypeErrorFormatter<MaxLengthError>;
|
|
53
|
+
/** 以简体中文格式化 LengthError。 */
|
|
54
|
+
export declare const formatLengthError: TypeErrorFormatter<LengthError>;
|
|
55
|
+
/** 以简体中文格式化 RegexError。 */
|
|
56
|
+
export declare const formatRegexError: TypeErrorFormatter<RegexError>;
|
|
57
|
+
/** 以简体中文格式化 Base64UrlError。 */
|
|
58
|
+
export declare const formatBase64UrlError: TypeErrorFormatter<Base64UrlError>;
|
|
59
|
+
/** 以简体中文格式化 NameError。 */
|
|
60
|
+
export declare const formatNameError: TypeErrorFormatter<NameError>;
|
|
61
|
+
/** 以简体中文格式化 MnemonicError。 */
|
|
62
|
+
export declare const formatMnemonicError: TypeErrorFormatter<MnemonicError>;
|
|
63
|
+
/** Formats an IdError。 */
|
|
64
|
+
export declare const formatIdError: TypeErrorFormatter<IdError>;
|
|
65
|
+
/** 以简体中文格式化 TableIdError。 */
|
|
66
|
+
export declare const formatTableIdError: TypeErrorFormatter<TableIdError>;
|
|
67
|
+
/** 以简体中文格式化 NonNegativeError。 */
|
|
68
|
+
export declare const formatNonNegativeError: TypeErrorFormatter<NonNegativeError>;
|
|
69
|
+
/** 以简体中文格式化 NonNegativeDecimalStringError。 */
|
|
70
|
+
export declare const formatNonNegativeDecimalStringError: TypeErrorFormatter<NonNegativeDecimalStringError>;
|
|
71
|
+
/** 以简体中文格式化 PositiveError。 */
|
|
72
|
+
export declare const formatPositiveError: TypeErrorFormatter<PositiveError>;
|
|
73
|
+
/** 以简体中文格式化 PositiveDecimalStringError。 */
|
|
74
|
+
export declare const formatPositiveDecimalStringError: TypeErrorFormatter<PositiveDecimalStringError>;
|
|
75
|
+
/** 以简体中文格式化 NonPositiveError。 */
|
|
76
|
+
export declare const formatNonPositiveError: TypeErrorFormatter<NonPositiveError>;
|
|
77
|
+
/** 以简体中文格式化 NonPositiveDecimalStringError。 */
|
|
78
|
+
export declare const formatNonPositiveDecimalStringError: TypeErrorFormatter<NonPositiveDecimalStringError>;
|
|
79
|
+
/** 以简体中文格式化 NegativeError。 */
|
|
80
|
+
export declare const formatNegativeError: TypeErrorFormatter<NegativeError>;
|
|
81
|
+
/** 以简体中文格式化 NegativeDecimalStringError。 */
|
|
82
|
+
export declare const formatNegativeDecimalStringError: TypeErrorFormatter<NegativeDecimalStringError>;
|
|
83
|
+
/** Formats an IntError。 */
|
|
84
|
+
export declare const formatIntError: TypeErrorFormatter<IntError>;
|
|
85
|
+
/** 以简体中文格式化 GreaterThanError。 */
|
|
86
|
+
export declare const formatGreaterThanError: TypeErrorFormatter<GreaterThanError>;
|
|
87
|
+
/** 以简体中文格式化 GreaterThanOrEqualToError。 */
|
|
88
|
+
export declare const formatGreaterThanOrEqualToError: TypeErrorFormatter<GreaterThanOrEqualToError>;
|
|
89
|
+
/** 以简体中文格式化 LessThanError。 */
|
|
90
|
+
export declare const formatLessThanError: TypeErrorFormatter<LessThanError>;
|
|
91
|
+
/** 以简体中文格式化 LessThanOrEqualToError。 */
|
|
92
|
+
export declare const formatLessThanOrEqualToError: TypeErrorFormatter<LessThanOrEqualToError>;
|
|
93
|
+
/** 以简体中文格式化 NonNaNError。 */
|
|
94
|
+
export declare const formatNonNaNError: TypeErrorFormatter<NonNaNError>;
|
|
95
|
+
/** 以简体中文格式化 FiniteError。 */
|
|
96
|
+
export declare const formatFiniteError: TypeErrorFormatter<FiniteError>;
|
|
97
|
+
/** 以简体中文格式化 MultipleOfError。 */
|
|
98
|
+
export declare const formatMultipleOfError: TypeErrorFormatter<MultipleOfError>;
|
|
99
|
+
/** 以简体中文格式化 BetweenError。 */
|
|
100
|
+
export declare const formatBetweenError: TypeErrorFormatter<BetweenError>;
|
|
101
|
+
/** Formats an ArrayError。 */
|
|
102
|
+
export declare const formatArrayError: TypeErrorFormatter<ArrayError>;
|
|
103
|
+
/** 以简体中文格式化 SetError。 */
|
|
104
|
+
export declare const formatSetError: TypeErrorFormatter<SetError>;
|
|
105
|
+
/** 以简体中文格式化 TupleError。 */
|
|
106
|
+
export declare const formatTupleError: TypeErrorFormatter<TupleError | TupleElementsError<TypeError>>;
|
|
107
|
+
/** 以简体中文格式化 RecordError。 */
|
|
108
|
+
export declare const formatRecordError: TypeErrorFormatter<RecordError>;
|
|
109
|
+
/** Formats an ObjectError。 */
|
|
110
|
+
export declare const formatObjectError: TypeErrorFormatter<ObjectError>;
|
|
111
|
+
/** 以简体中文格式化 DiscriminatedUnionError。 */
|
|
112
|
+
export declare const formatDiscriminatedUnionError: TypeErrorFormatter<DiscriminatedUnionError>;
|
|
113
|
+
/** 以简体中文格式化 JsonValueError。 */
|
|
114
|
+
export declare const formatJsonValueError: TypeErrorFormatter<JsonValueError>;
|
|
115
|
+
/** 以简体中文格式化 JsonError。 */
|
|
116
|
+
export declare const formatJsonError: TypeErrorFormatter<JsonError>;
|
|
117
|
+
//# sourceMappingURL=zh-CN.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zh-CN.d.ts","sourceRoot":"","sources":["../../../src/intl/zh-CN.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,cAAc,EACd,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,aAAa,EACb,eAAe,EACf,0BAA0B,EAC1B,aAAa,EACb,SAAS,EACT,UAAU,EACV,WAAW,EACX,6BAA6B,EAC7B,gBAAgB,EAChB,6BAA6B,EAC7B,gBAAgB,EAChB,WAAW,EAGX,cAAc,EAEd,0BAA0B,EAC1B,aAAa,EACb,WAAW,EACX,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,WAAW,EACX,UAAU,EACX,MAAM,YAAY,CAAC;AAoBpB,2BAA2B;AAC3B,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,CAAC,UAAU,CACG,CAAC;AAEhE,mCAAmC;AACnC,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,CACrD,CAAC;AAEpB,qCAAqC;AACrC,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CACzD,oBAAoB,CAEqC,CAAC;AAE5D,mCAAmC;AACnC,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,CACrD,CAAC;AAEpB,mCAAmC;AACnC,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,CACrD,CAAC;AAEpB,oCAAoC;AACpC,eAAO,MAAM,kBAAkB,EAAE,kBAAkB,CAAC,WAAW,CAAC,SAAS,CAAC,CACvD,CAAC;AAEpB,mCAAmC;AACnC,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,CACrD,CAAC;AAEpB,qCAAqC;AACrC,eAAO,MAAM,mBAAmB,EAAE,kBAAkB,CAAC,WAAW,CAAC,UAAU,CAAC,CACzD,CAAC;AAEpB,iCAAiC;AACjC,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,cAAc,CAED,CAAC;AAEpE,iCAAiC;AACjC,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,cAAc,CAGwC,CAAC;AAE7G,kCAAkC;AAClC,eAAO,MAAM,qBAAqB,EAAE,kBAAkB,CAAC,eAAe,CAGY,CAAC;AAEnF,6BAA6B;AAC7B,eAAO,MAAM,kBAAkB,EAAE,kBAAkB,CAAC,YAAY,CACkC,CAAC;AAEnG,2BAA2B;AAC3B,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,CAAC,UAAU,CAC5C,CAAC;AAEjB,6BAA6B;AAC7B,eAAO,MAAM,kBAAkB,EAAE,kBAAkB,CAAC,YAAY,CACI,CAAC;AAErE,qCAAqC;AACrC,eAAO,MAAM,0BAA0B,EAAE,kBAAkB,CACzD,oBAAoB,CACS,CAAC;AAEhC,mCAAmC;AACnC,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,CACvD,kBAAkB,CAE2C,CAAC;AAEhE,6BAA6B;AAC7B,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,CAAC,UAAU,CACa,CAAC;AAE1E,4BAA4B;AAC5B,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,WAAW,CACY,CAAC;AAE3E,mCAAmC;AACnC,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,gBAAgB,CAEH,CAAC;AAEtE,iCAAiC;AACjC,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,gBAAgB,CAET,CAAC;AAEhE,6BAA6B;AAC7B,eAAO,MAAM,kBAAkB,EAAE,kBAAkB,CAAC,YAAY,CACL,CAAC;AAE5D,+BAA+B;AAC/B,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,cAAc,CAGG,CAAC;AAExE,+BAA+B;AAC/B,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,cAAc,CAGE,CAAC;AAEvE,4BAA4B;AAC5B,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,WAAW,CACa,CAAC;AAE5E,2BAA2B;AAC3B,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,CAAC,UAAU,CAC0B,CAAC;AAEvF,+BAA+B;AAC/B,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,cAAc,CAGE,CAAC;AAEvE,0BAA0B;AAC1B,eAAO,MAAM,eAAe,EAAE,kBAAkB,CAAC,SAAS,CACG,CAAC;AAE9D,8BAA8B;AAC9B,eAAO,MAAM,mBAAmB,EAAE,kBAAkB,CAAC,aAAa,CACE,CAAC;AAErE,0BAA0B;AAC1B,eAAO,MAAM,aAAa,EAAE,kBAAkB,CAAC,OAAO,CACK,CAAC;AAE5D,6BAA6B;AAC7B,eAAO,MAAM,kBAAkB,EAAE,kBAAkB,CAAC,YAAY,CACY,CAAC;AAE7E,iCAAiC;AACjC,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,gBAAgB,CAEN,CAAC;AAEnE,8CAA8C;AAC9C,eAAO,MAAM,mCAAmC,EAAE,kBAAkB,CAClE,6BAA6B,CAE+B,CAAC;AAE/D,8BAA8B;AAC9B,eAAO,MAAM,mBAAmB,EAAE,kBAAkB,CAAC,aAAa,CACL,CAAC;AAE9D,2CAA2C;AAC3C,eAAO,MAAM,gCAAgC,EAAE,kBAAkB,CAC/D,0BAA0B,CAEiC,CAAC;AAE9D,iCAAiC;AACjC,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,gBAAgB,CAEN,CAAC;AAEnE,8CAA8C;AAC9C,eAAO,MAAM,mCAAmC,EAAE,kBAAkB,CAClE,6BAA6B,CAE+B,CAAC;AAE/D,8BAA8B;AAC9B,eAAO,MAAM,mBAAmB,EAAE,kBAAkB,CAAC,aAAa,CACL,CAAC;AAE9D,2CAA2C;AAC3C,eAAO,MAAM,gCAAgC,EAAE,kBAAkB,CAC/D,0BAA0B,CAEiC,CAAC;AAE9D,2BAA2B;AAC3B,eAAO,MAAM,cAAc,EAAE,kBAAkB,CAAC,QAAQ,CACE,CAAC;AAE3D,iCAAiC;AACjC,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CAAC,gBAAgB,CAED,CAAC;AAExE,0CAA0C;AAC1C,eAAO,MAAM,+BAA+B,EAAE,kBAAkB,CAC9D,yBAAyB,CAE4C,CAAC;AAExE,8BAA8B;AAC9B,eAAO,MAAM,mBAAmB,EAAE,kBAAkB,CAAC,aAAa,CACE,CAAC;AAErE,uCAAuC;AACvC,eAAO,MAAM,4BAA4B,EAAE,kBAAkB,CAC3D,sBAAsB,CAE+C,CAAC;AAExE,4BAA4B;AAC5B,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,WAAW,CACjD,CAAC;AAEd,4BAA4B;AAC5B,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,WAAW,CACL,CAAC;AAE1D,gCAAgC;AAChC,eAAO,MAAM,qBAAqB,EAAE,kBAAkB,CAAC,eAAe,CAGK,CAAC;AAE5E,6BAA6B;AAC7B,eAAO,MAAM,kBAAkB,EAAE,kBAAkB,CAAC,YAAY,CAC2B,CAAC;AAE5F,6BAA6B;AAC7B,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,CAAC,UAAU,CAgB3D,CAAC;AAEF,yBAAyB;AACzB,eAAO,MAAM,cAAc,EAAE,kBAAkB,CAAC,QAAQ,CAgBvD,CAAC;AAEF,2BAA2B;AAC3B,eAAO,MAAM,gBAAgB,EAAE,kBAAkB,CAC/C,UAAU,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAqB3C,CAAC;AAEF,4BAA4B;AAC5B,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,WAAW,CAsB7D,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,iBAAiB,EAAE,kBAAkB,CAAC,WAAW,CA4B7D,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,6BAA6B,EAAE,kBAAkB,CAC5D,uBAAuB,CAoBxB,CAAC;AAEF,+BAA+B;AAC/B,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CAAC,cAAc,CAyBnE,CAAC;AAEF,0BAA0B;AAC1B,eAAO,MAAM,eAAe,EAAE,kBAAkB,CAAC,SAAS,CACQ,CAAC"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 简体中文 Evolu Type 错误格式化器。
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { assertNonNullable } from "../Assert.js";
|
|
7
|
+
import { safelyStringifyUnknownValue } from "../String.js";
|
|
8
|
+
const formatTypeOfError = (error) => {
|
|
9
|
+
const typeOf = error.expected.toLowerCase();
|
|
10
|
+
return `值 ${safelyStringifyUnknownValue(error.value)} 不是 ${typeOf} 类型。`;
|
|
11
|
+
};
|
|
12
|
+
const formatPlainObjectRootError = (reason) => reason.kind === "NotObject"
|
|
13
|
+
? `值 ${safelyStringifyUnknownValue(reason.value)} 不是对象。`
|
|
14
|
+
: "该值是对象,但 Object Output 必须是普通对象或具有 null 原型。";
|
|
15
|
+
/** 以简体中文格式化 NeverError。 */
|
|
16
|
+
export const formatNeverError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 对类型 Never 无效。`;
|
|
17
|
+
/** 以简体中文格式化 String TypeOfError。 */
|
|
18
|
+
export const formatStringError = formatTypeOfError;
|
|
19
|
+
/** 以简体中文格式化 TemplateLiteralError。 */
|
|
20
|
+
export const formatTemplateLiteralError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 不匹配模板字面量。`;
|
|
21
|
+
/** 以简体中文格式化 Number TypeOfError。 */
|
|
22
|
+
export const formatNumberError = formatTypeOfError;
|
|
23
|
+
/** 以简体中文格式化 BigInt TypeOfError。 */
|
|
24
|
+
export const formatBigIntError = formatTypeOfError;
|
|
25
|
+
/** 以简体中文格式化 Boolean TypeOfError。 */
|
|
26
|
+
export const formatBooleanError = formatTypeOfError;
|
|
27
|
+
/** 以简体中文格式化 Symbol TypeOfError。 */
|
|
28
|
+
export const formatSymbolError = formatTypeOfError;
|
|
29
|
+
/** 以简体中文格式化 Function TypeOfError。 */
|
|
30
|
+
export const formatFunctionError = formatTypeOfError;
|
|
31
|
+
/** Formats an EvoluTypeError。 */
|
|
32
|
+
export const formatEvoluTypeError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 不是 Evolu Type。`;
|
|
33
|
+
/** Formats an ObjectTagError。 */
|
|
34
|
+
export const formatObjectTagError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 不具有预期的对象标签 ${safelyStringifyUnknownValue(error.expected)}。`;
|
|
35
|
+
/** Formats an InstanceOfError。 */
|
|
36
|
+
export const formatInstanceOfError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 不是 ${error.constructorName} 的实例。`;
|
|
37
|
+
/** 以简体中文格式化 LiteralError。 */
|
|
38
|
+
export const formatLiteralError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 不严格等于预期字面量:${globalThis.String(error.expected)}。`;
|
|
39
|
+
/** 以简体中文格式化 UnionError。 */
|
|
40
|
+
export const formatUnionError = () => "值不匹配任何允许的变体。";
|
|
41
|
+
/** 以简体中文格式化 DateIsoError。 */
|
|
42
|
+
export const formatDateIsoError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 不是规范的 ISO 日期时间字符串。`;
|
|
43
|
+
/** 以简体中文格式化 DateIsoFromDateError。 */
|
|
44
|
+
export const formatDateIsoFromDateError = () => "Date 无法表示为 DateIso。";
|
|
45
|
+
/** 以简体中文格式化 DecimalStringError。 */
|
|
46
|
+
export const formatDecimalStringError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须是规范的十进制字符串。`;
|
|
47
|
+
/** Formats an Int64Error。 */
|
|
48
|
+
export const formatInt64Error = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 不是有效的有符号 64 位整数(Int64)。`;
|
|
49
|
+
/** 以简体中文格式化 UInt64Error。 */
|
|
50
|
+
export const formatUInt64Error = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 不是有效的无符号 64 位整数(UInt64)。`;
|
|
51
|
+
/** Formats an Int64StringError。 */
|
|
52
|
+
export const formatInt64StringError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 不是有效的 Int64 字符串。`;
|
|
53
|
+
/** 以简体中文格式化 CapitalizedError。 */
|
|
54
|
+
export const formatCapitalizedError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须以大写字母开头。`;
|
|
55
|
+
/** 以简体中文格式化 TrimmedError。 */
|
|
56
|
+
export const formatTrimmedError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须去除首尾空白。`;
|
|
57
|
+
/** 以简体中文格式化 MinLengthError。 */
|
|
58
|
+
export const formatMinLengthError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 未达到最小长度 ${error.min}。`;
|
|
59
|
+
/** 以简体中文格式化 MaxLengthError。 */
|
|
60
|
+
export const formatMaxLengthError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 超过最大长度 ${error.max}。`;
|
|
61
|
+
/** 以简体中文格式化 LengthError。 */
|
|
62
|
+
export const formatLengthError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 的长度不等于要求的 ${error.exact}。`;
|
|
63
|
+
/** 以简体中文格式化 RegexError。 */
|
|
64
|
+
export const formatRegexError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 不匹配 /${error.source}/${error.flags}。`;
|
|
65
|
+
/** 以简体中文格式化 Base64UrlError。 */
|
|
66
|
+
export const formatBase64UrlError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 不是有效的 Base64Url 字符串。`;
|
|
67
|
+
/** 以简体中文格式化 NameError。 */
|
|
68
|
+
export const formatNameError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 不是有效的 Name。`;
|
|
69
|
+
/** 以简体中文格式化 MnemonicError。 */
|
|
70
|
+
export const formatMnemonicError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 不是有效的英文 BIP39 助记词。`;
|
|
71
|
+
/** Formats an IdError。 */
|
|
72
|
+
export const formatIdError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 不是有效的 Id。`;
|
|
73
|
+
/** 以简体中文格式化 TableIdError。 */
|
|
74
|
+
export const formatTableIdError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 不是表 ${error.table} 的有效 Id。`;
|
|
75
|
+
/** 以简体中文格式化 NonNegativeError。 */
|
|
76
|
+
export const formatNonNegativeError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须为非负数(>= 0)。`;
|
|
77
|
+
/** 以简体中文格式化 NonNegativeDecimalStringError。 */
|
|
78
|
+
export const formatNonNegativeDecimalStringError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须是非负十进制字符串。`;
|
|
79
|
+
/** 以简体中文格式化 PositiveError。 */
|
|
80
|
+
export const formatPositiveError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须为正数(> 0)。`;
|
|
81
|
+
/** 以简体中文格式化 PositiveDecimalStringError。 */
|
|
82
|
+
export const formatPositiveDecimalStringError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须是正十进制字符串。`;
|
|
83
|
+
/** 以简体中文格式化 NonPositiveError。 */
|
|
84
|
+
export const formatNonPositiveError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须为非正数(<= 0)。`;
|
|
85
|
+
/** 以简体中文格式化 NonPositiveDecimalStringError。 */
|
|
86
|
+
export const formatNonPositiveDecimalStringError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须是非正十进制字符串。`;
|
|
87
|
+
/** 以简体中文格式化 NegativeError。 */
|
|
88
|
+
export const formatNegativeError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须为负数(< 0)。`;
|
|
89
|
+
/** 以简体中文格式化 NegativeDecimalStringError。 */
|
|
90
|
+
export const formatNegativeDecimalStringError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须是负十进制字符串。`;
|
|
91
|
+
/** Formats an IntError。 */
|
|
92
|
+
export const formatIntError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须是安全整数。`;
|
|
93
|
+
/** 以简体中文格式化 GreaterThanError。 */
|
|
94
|
+
export const formatGreaterThanError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须大于 ${error.min}。`;
|
|
95
|
+
/** 以简体中文格式化 GreaterThanOrEqualToError。 */
|
|
96
|
+
export const formatGreaterThanOrEqualToError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须大于或等于 ${error.min}。`;
|
|
97
|
+
/** 以简体中文格式化 LessThanError。 */
|
|
98
|
+
export const formatLessThanError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须小于 ${error.max}。`;
|
|
99
|
+
/** 以简体中文格式化 LessThanOrEqualToError。 */
|
|
100
|
+
export const formatLessThanOrEqualToError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须小于或等于 ${error.max}。`;
|
|
101
|
+
/** 以简体中文格式化 NonNaNError。 */
|
|
102
|
+
export const formatNonNaNError = () => "值不能为 NaN。";
|
|
103
|
+
/** 以简体中文格式化 FiniteError。 */
|
|
104
|
+
export const formatFiniteError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须是有限数。`;
|
|
105
|
+
/** 以简体中文格式化 MultipleOfError。 */
|
|
106
|
+
export const formatMultipleOfError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须是 ${error.divisor} 的倍数。`;
|
|
107
|
+
/** 以简体中文格式化 BetweenError。 */
|
|
108
|
+
export const formatBetweenError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 必须介于 ${error.min} 和 ${error.max} 之间(含边界)。`;
|
|
109
|
+
/** Formats an ArrayError。 */
|
|
110
|
+
export const formatArrayError = (error) => {
|
|
111
|
+
if (error.reason.kind === "NotArray") {
|
|
112
|
+
return `值 ${safelyStringifyUnknownValue(error.reason.value)} 不是数组。`;
|
|
113
|
+
}
|
|
114
|
+
const issue = error.reason.issues[0];
|
|
115
|
+
switch (issue.kind) {
|
|
116
|
+
case "Hole":
|
|
117
|
+
return `索引 ${issue.index} 处缺少数组元素。`;
|
|
118
|
+
case "Accessor":
|
|
119
|
+
return `索引 ${issue.index} 处的数组元素必须是数据属性。`;
|
|
120
|
+
case "ExcessProperty":
|
|
121
|
+
return "不允许多余的 Array 属性。请将其删除或使用其他 Type。";
|
|
122
|
+
case "Element":
|
|
123
|
+
return `索引 ${issue.index} 处的数组元素无效。`;
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
/** 以简体中文格式化 SetError。 */
|
|
127
|
+
export const formatSetError = (error) => {
|
|
128
|
+
if (error.reason.kind === "NotSet") {
|
|
129
|
+
return `值 ${safelyStringifyUnknownValue(error.reason.value)} 不是 Set。`;
|
|
130
|
+
}
|
|
131
|
+
if (error.reason.kind === "UnexpectedPrototype") {
|
|
132
|
+
return "该值是 Set 子类的实例,但 Set Output 必须是直接的 Set 实例。";
|
|
133
|
+
}
|
|
134
|
+
const issue = error.reason.issues[0];
|
|
135
|
+
switch (issue.kind) {
|
|
136
|
+
case "ExcessProperty":
|
|
137
|
+
return `不允许多余的 Set 属性 ${safelyStringifyUnknownValue(issue.key)}。`;
|
|
138
|
+
case "Element":
|
|
139
|
+
return `索引 ${issue.index} 处的 Set 元素无效。`;
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
/** 以简体中文格式化 TupleError。 */
|
|
143
|
+
export const formatTupleError = (error) => {
|
|
144
|
+
if (error.reason.kind === "NotArray") {
|
|
145
|
+
return `值 ${safelyStringifyUnknownValue(error.reason.value)} 不是元组。`;
|
|
146
|
+
}
|
|
147
|
+
if (error.reason.kind === "InvalidLength") {
|
|
148
|
+
return `Tuple 必须恰好包含 ${error.reason.expected} 个元素,但该值包含 ${error.reason.actual} 个。`;
|
|
149
|
+
}
|
|
150
|
+
const issue = error.reason.issues[0];
|
|
151
|
+
switch (issue.kind) {
|
|
152
|
+
case "Hole":
|
|
153
|
+
return `索引 ${issue.index} 处缺少 Tuple 元素。`;
|
|
154
|
+
case "Accessor":
|
|
155
|
+
return `索引 ${issue.index} 处的 Tuple 元素必须是数据属性。`;
|
|
156
|
+
case "ExcessProperty":
|
|
157
|
+
return "不允许多余的 Tuple 属性。请将其删除或使用其他 Type。";
|
|
158
|
+
case "Element":
|
|
159
|
+
return `索引 ${issue.index} 处的 Tuple 元素无效。`;
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
/** 以简体中文格式化 RecordError。 */
|
|
163
|
+
export const formatRecordError = (error) => {
|
|
164
|
+
if (error.reason.kind === "NotRecord") {
|
|
165
|
+
return `值 ${safelyStringifyUnknownValue(error.reason.value)} 不是 Record。`;
|
|
166
|
+
}
|
|
167
|
+
if (error.reason.kind === "NotPlainRecord") {
|
|
168
|
+
return "该值是对象,但 Record Output 必须是普通对象或具有 null 原型。";
|
|
169
|
+
}
|
|
170
|
+
const issue = error.reason.issues[0];
|
|
171
|
+
switch (issue.kind) {
|
|
172
|
+
case "Key":
|
|
173
|
+
return `属性键 ${safelyStringifyUnknownValue(issue.key)} 无效。`;
|
|
174
|
+
case "Value":
|
|
175
|
+
return `属性 ${safelyStringifyUnknownValue(issue.key)} 的值无效。`;
|
|
176
|
+
case "Accessor":
|
|
177
|
+
return `Record 属性 ${safelyStringifyUnknownValue(issue.key)} 必须是数据属性。`;
|
|
178
|
+
case "NonEnumerable":
|
|
179
|
+
return `Record 属性 ${safelyStringifyUnknownValue(issue.key)} 必须是可枚举的。`;
|
|
180
|
+
case "Collision":
|
|
181
|
+
return `Record 键 ${safelyStringifyUnknownValue(issue.previousKey)} 和 ${safelyStringifyUnknownValue(issue.key)} 解码后得到相同的键 ${safelyStringifyUnknownValue(issue.outputKey)}。`;
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
/** Formats an ObjectError。 */
|
|
185
|
+
export const formatObjectError = (error) => {
|
|
186
|
+
if (error.reason.kind !== "Properties") {
|
|
187
|
+
return formatPlainObjectRootError(error.reason);
|
|
188
|
+
}
|
|
189
|
+
const key = Reflect.ownKeys(error.reason.errors).at(0);
|
|
190
|
+
assertNonNullable(key);
|
|
191
|
+
const propertyError = error.reason.errors[key];
|
|
192
|
+
assertNonNullable(propertyError);
|
|
193
|
+
if (propertyError.type === "ObjectPropertyAccess") {
|
|
194
|
+
switch (propertyError.reason) {
|
|
195
|
+
case "Accessor":
|
|
196
|
+
return "Object 属性必须是数据属性。请先将访问器值具体化为普通数据,再使用此 Type,或改用其他 Type。";
|
|
197
|
+
case "NonEnumerable":
|
|
198
|
+
return "Object 属性必须可枚举。请将其设为可枚举,或使用其他 Type。";
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (propertyError.type === "ObjectMissingProperty") {
|
|
202
|
+
return `缺少必需属性 ${safelyStringifyUnknownValue(key)}。`;
|
|
203
|
+
}
|
|
204
|
+
if (typeof key === "symbol") {
|
|
205
|
+
return "Object 属性键必须是字符串。请删除 symbol 属性或使用其他 Type。";
|
|
206
|
+
}
|
|
207
|
+
if (propertyError.type === "ObjectExcessProperty") {
|
|
208
|
+
return `不允许属性 ${safelyStringifyUnknownValue(key)}。请将其删除或使用其他 Type。`;
|
|
209
|
+
}
|
|
210
|
+
return `属性 ${safelyStringifyUnknownValue(key)} 无效。`;
|
|
211
|
+
};
|
|
212
|
+
/** 以简体中文格式化 DiscriminatedUnionError。 */
|
|
213
|
+
export const formatDiscriminatedUnionError = (error) => {
|
|
214
|
+
switch (error.reason.kind) {
|
|
215
|
+
case "Object":
|
|
216
|
+
return formatPlainObjectRootError(error.reason.error.reason);
|
|
217
|
+
case "PropertyAccess": {
|
|
218
|
+
const property = `判别属性 ${safelyStringifyUnknownValue(error.reason.key)}`;
|
|
219
|
+
if (error.reason.reason === "Accessor") {
|
|
220
|
+
return `${property} 必须是数据属性。`;
|
|
221
|
+
}
|
|
222
|
+
if (error.reason.reason === "Inherited") {
|
|
223
|
+
return `${property} 必须是自有属性。`;
|
|
224
|
+
}
|
|
225
|
+
return `${property} 必须是可枚举的。`;
|
|
226
|
+
}
|
|
227
|
+
case "Discriminator":
|
|
228
|
+
return `判别属性 ${safelyStringifyUnknownValue(error.reason.key)} 的值 ${safelyStringifyUnknownValue(error.reason.value)} 不符合预期。`;
|
|
229
|
+
case "Member":
|
|
230
|
+
return `所选变体 ${safelyStringifyUnknownValue(error.reason.discriminator)} 无效。`;
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
/** 以简体中文格式化 JsonValueError。 */
|
|
234
|
+
export const formatJsonValueError = (error) => {
|
|
235
|
+
const issue = error.reason.issues[0];
|
|
236
|
+
switch (issue.kind) {
|
|
237
|
+
case "InvalidType":
|
|
238
|
+
return `值 ${safelyStringifyUnknownValue(issue.value)} 不是 JSON 值。`;
|
|
239
|
+
case "NonFiniteNumber":
|
|
240
|
+
return "JSON 数字必须是有限数。";
|
|
241
|
+
case "UnexpectedPrototype":
|
|
242
|
+
return "该值是对象,但 JsonValue 对象必须是普通对象或具有 null 原型。";
|
|
243
|
+
case "Accessor":
|
|
244
|
+
return "JSON 属性必须是数据属性。请先将访问器值具体化为普通数据,再使用此 Type,或改用其他 Type。";
|
|
245
|
+
case "NonEnumerable":
|
|
246
|
+
return "JSON 对象属性必须可枚举。请将其删除或使用其他 Type。";
|
|
247
|
+
case "SymbolProperty":
|
|
248
|
+
return "JSON 对象属性键必须是字符串。请删除 symbol 属性或使用其他 Type。";
|
|
249
|
+
case "Hole":
|
|
250
|
+
return "缺少 JSON 数组元素。";
|
|
251
|
+
case "ExcessProperty":
|
|
252
|
+
return "不允许多余的 JSON 数组属性。请将其删除或使用其他 Type。";
|
|
253
|
+
case "CircularReference":
|
|
254
|
+
return "JsonValue 不能包含循环引用。";
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
/** 以简体中文格式化 JsonError。 */
|
|
258
|
+
export const formatJsonError = (error) => `值 ${safelyStringifyUnknownValue(error.value)} 无法解析为 JsonValue。`;
|