@joe-broadhead/messaging 0.0.0-stage → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +220 -0
- package/LICENSE +21 -0
- package/NOTICE +12 -0
- package/README.md +36 -2
- package/dist/bin/messaging-mcp.js +26524 -0
- package/dist/bin/messaging-relay.js +19768 -0
- package/dist/bin/messaging.js +15465 -0
- package/dist/bin/messagingd.js +29449 -0
- package/dist/lib/core-testing.js +1 -0
- package/dist/lib/core.js +1 -0
- package/dist/lib/ipc-testing.js +1 -0
- package/dist/lib/ipc.js +1 -0
- package/dist/lib/modules/core/address.js +42 -0
- package/dist/lib/modules/core/agent/operations.js +595 -0
- package/dist/lib/modules/core/agent/present.js +244 -0
- package/dist/lib/modules/core/agent/text.js +79 -0
- package/dist/lib/modules/core/agent-tools.js +477 -0
- package/dist/lib/modules/core/b64u.js +20 -0
- package/dist/lib/modules/core/cards.js +55 -0
- package/dist/lib/modules/core/check.js +20 -0
- package/dist/lib/modules/core/consent.js +199 -0
- package/dist/lib/modules/core/contact-card.js +74 -0
- package/dist/lib/modules/core/conversation/context.js +80 -0
- package/dist/lib/modules/core/conversation/event.js +100 -0
- package/dist/lib/modules/core/conversation/ids.js +38 -0
- package/dist/lib/modules/core/conversation/link.js +35 -0
- package/dist/lib/modules/core/conversation/log.js +766 -0
- package/dist/lib/modules/core/conversation/ratchet.js +243 -0
- package/dist/lib/modules/core/conversation/seal.js +198 -0
- package/dist/lib/modules/core/delegation.js +174 -0
- package/dist/lib/modules/core/directory/device-log.js +258 -0
- package/dist/lib/modules/core/directory/epoch.js +103 -0
- package/dist/lib/modules/core/directory/handle.js +29 -0
- package/dist/lib/modules/core/directory/jelly-device.js +204 -0
- package/dist/lib/modules/core/directory/jelly-issuer.js +12 -0
- package/dist/lib/modules/core/directory/jelly-token.js +305 -0
- package/dist/lib/modules/core/directory/keys-statement.js +43 -0
- package/dist/lib/modules/core/directory/link.js +81 -0
- package/dist/lib/modules/core/directory/merkle-log.js +250 -0
- package/dist/lib/modules/core/directory/person-view.js +197 -0
- package/dist/lib/modules/core/directory/person.js +40 -0
- package/dist/lib/modules/core/directory/realm.js +59 -0
- package/dist/lib/modules/core/directory/smt.js +266 -0
- package/dist/lib/modules/core/envelope.js +320 -0
- package/dist/lib/modules/core/hash.js +5 -0
- package/dist/lib/modules/core/head.js +27 -0
- package/dist/lib/modules/core/identity.js +71 -0
- package/dist/lib/modules/core/index.js +53 -0
- package/dist/lib/modules/core/jcs.js +96 -0
- package/dist/lib/modules/core/jelly-host-double.js +35 -0
- package/dist/lib/modules/core/jelly-host.js +211 -0
- package/dist/lib/modules/core/keys.js +79 -0
- package/dist/lib/modules/core/peer-text.js +563 -0
- package/dist/lib/modules/core/realm.js +1 -0
- package/dist/lib/modules/core/roster.js +454 -0
- package/dist/lib/modules/core/schema/a2a.js +85 -0
- package/dist/lib/modules/core/schema/common.js +310 -0
- package/dist/lib/modules/core/schema/consent.js +120 -0
- package/dist/lib/modules/core/schema/conversation.js +292 -0
- package/dist/lib/modules/core/schema/delegation.js +58 -0
- package/dist/lib/modules/core/schema/directory-frames.js +270 -0
- package/dist/lib/modules/core/schema/directory.js +169 -0
- package/dist/lib/modules/core/schema/envelope.js +211 -0
- package/dist/lib/modules/core/schema/errors.js +104 -0
- package/dist/lib/modules/core/schema/index.js +16 -0
- package/dist/lib/modules/core/schema/ipc/consent.js +181 -0
- package/dist/lib/modules/core/schema/ipc/device.js +276 -0
- package/dist/lib/modules/core/schema/ipc/jelly.js +189 -0
- package/dist/lib/modules/core/schema/ipc/shapes.js +185 -0
- package/dist/lib/modules/core/schema/ipc/surfaces.js +223 -0
- package/dist/lib/modules/core/schema/ipc.js +451 -0
- package/dist/lib/modules/core/schema/jelly.js +122 -0
- package/dist/lib/modules/core/schema/realm.js +27 -0
- package/dist/lib/modules/core/schema/relay.js +112 -0
- package/dist/lib/modules/core/schema/roster.js +126 -0
- package/dist/lib/modules/core/sign.js +43 -0
- package/dist/lib/modules/core/task.js +37 -0
- package/dist/lib/modules/core/testing.js +21 -0
- package/dist/lib/modules/core/ulid.js +36 -0
- package/dist/lib/modules/core/version.js +6 -0
- package/dist/lib/modules/core/wire.js +255 -0
- package/dist/lib/modules/ipc/client.js +289 -0
- package/dist/lib/modules/ipc/framing.js +33 -0
- package/dist/lib/modules/ipc/index.js +6 -0
- package/dist/lib/modules/ipc/paths.js +102 -0
- package/dist/lib/modules/ipc/pipes.js +65 -0
- package/dist/lib/modules/ipc/rpc.js +8 -0
- package/dist/lib/modules/ipc/server.js +317 -0
- package/dist/lib/modules/ipc/testing.js +145 -0
- package/dist/lib/modules/ipc/trust.js +166 -0
- package/dist/lib/modules/ipc/windows-acl.js +275 -0
- package/dist/lib/modules/vendor/zod/index.js +7 -0
- package/dist/lib/modules/vendor/zod/v4/classic/checks.js +1 -0
- package/dist/lib/modules/vendor/zod/v4/classic/coerce.js +17 -0
- package/dist/lib/modules/vendor/zod/v4/classic/compat.js +31 -0
- package/dist/lib/modules/vendor/zod/v4/classic/deep-partial.js +13 -0
- package/dist/lib/modules/vendor/zod/v4/classic/errors.js +57 -0
- package/dist/lib/modules/vendor/zod/v4/classic/external.js +17 -0
- package/dist/lib/modules/vendor/zod/v4/classic/from-json-schema.js +881 -0
- package/dist/lib/modules/vendor/zod/v4/classic/in-out.js +36 -0
- package/dist/lib/modules/vendor/zod/v4/classic/iso.js +15 -0
- package/dist/lib/modules/vendor/zod/v4/classic/parse.js +16 -0
- package/dist/lib/modules/vendor/zod/v4/classic/schemas.js +1535 -0
- package/dist/lib/modules/vendor/zod/v4/core/api.js +1107 -0
- package/dist/lib/modules/vendor/zod/v4/core/checks.js +516 -0
- package/dist/lib/modules/vendor/zod/v4/core/compile.js +1866 -0
- package/dist/lib/modules/vendor/zod/v4/core/core.js +141 -0
- package/dist/lib/modules/vendor/zod/v4/core/doc.js +38 -0
- package/dist/lib/modules/vendor/zod/v4/core/errors.js +267 -0
- package/dist/lib/modules/vendor/zod/v4/core/index.js +19 -0
- package/dist/lib/modules/vendor/zod/v4/core/json-schema-generator.js +99 -0
- package/dist/lib/modules/vendor/zod/v4/core/json-schema-processors.js +843 -0
- package/dist/lib/modules/vendor/zod/v4/core/json-schema.js +1 -0
- package/dist/lib/modules/vendor/zod/v4/core/memoizer.js +311 -0
- package/dist/lib/modules/vendor/zod/v4/core/parse.js +175 -0
- package/dist/lib/modules/vendor/zod/v4/core/regexes.js +156 -0
- package/dist/lib/modules/vendor/zod/v4/core/registries.js +51 -0
- package/dist/lib/modules/vendor/zod/v4/core/schemas.js +2636 -0
- package/dist/lib/modules/vendor/zod/v4/core/to-json-schema.js +651 -0
- package/dist/lib/modules/vendor/zod/v4/core/util.js +873 -0
- package/dist/lib/modules/vendor/zod/v4/core/versions.js +5 -0
- package/dist/lib/modules/vendor/zod/v4/core/visit.js +169 -0
- package/dist/lib/modules/vendor/zod/v4/locales/ar.js +111 -0
- package/dist/lib/modules/vendor/zod/v4/locales/az.js +110 -0
- package/dist/lib/modules/vendor/zod/v4/locales/be.js +168 -0
- package/dist/lib/modules/vendor/zod/v4/locales/bg.js +125 -0
- package/dist/lib/modules/vendor/zod/v4/locales/bn.js +113 -0
- package/dist/lib/modules/vendor/zod/v4/locales/ca.js +112 -0
- package/dist/lib/modules/vendor/zod/v4/locales/ckb.js +133 -0
- package/dist/lib/modules/vendor/zod/v4/locales/cs.js +116 -0
- package/dist/lib/modules/vendor/zod/v4/locales/da.js +120 -0
- package/dist/lib/modules/vendor/zod/v4/locales/de.js +113 -0
- package/dist/lib/modules/vendor/zod/v4/locales/el.js +112 -0
- package/dist/lib/modules/vendor/zod/v4/locales/en.js +125 -0
- package/dist/lib/modules/vendor/zod/v4/locales/eo.js +114 -0
- package/dist/lib/modules/vendor/zod/v4/locales/es.js +136 -0
- package/dist/lib/modules/vendor/zod/v4/locales/fa.js +119 -0
- package/dist/lib/modules/vendor/zod/v4/locales/fi.js +117 -0
- package/dist/lib/modules/vendor/zod/v4/locales/fr-CA.js +112 -0
- package/dist/lib/modules/vendor/zod/v4/locales/fr.js +129 -0
- package/dist/lib/modules/vendor/zod/v4/locales/gu.js +113 -0
- package/dist/lib/modules/vendor/zod/v4/locales/he.js +221 -0
- package/dist/lib/modules/vendor/zod/v4/locales/hi.js +111 -0
- package/dist/lib/modules/vendor/zod/v4/locales/hr.js +126 -0
- package/dist/lib/modules/vendor/zod/v4/locales/hu.js +113 -0
- package/dist/lib/modules/vendor/zod/v4/locales/hy.js +158 -0
- package/dist/lib/modules/vendor/zod/v4/locales/id.js +111 -0
- package/dist/lib/modules/vendor/zod/v4/locales/index.js +63 -0
- package/dist/lib/modules/vendor/zod/v4/locales/is.js +114 -0
- package/dist/lib/modules/vendor/zod/v4/locales/it.js +113 -0
- package/dist/lib/modules/vendor/zod/v4/locales/ja.js +112 -0
- package/dist/lib/modules/vendor/zod/v4/locales/ka.js +117 -0
- package/dist/lib/modules/vendor/zod/v4/locales/kh.js +5 -0
- package/dist/lib/modules/vendor/zod/v4/locales/km.js +115 -0
- package/dist/lib/modules/vendor/zod/v4/locales/kn.js +116 -0
- package/dist/lib/modules/vendor/zod/v4/locales/ko.js +116 -0
- package/dist/lib/modules/vendor/zod/v4/locales/lt.js +207 -0
- package/dist/lib/modules/vendor/zod/v4/locales/mk.js +114 -0
- package/dist/lib/modules/vendor/zod/v4/locales/ms.js +112 -0
- package/dist/lib/modules/vendor/zod/v4/locales/ne.js +111 -0
- package/dist/lib/modules/vendor/zod/v4/locales/nl.js +115 -0
- package/dist/lib/modules/vendor/zod/v4/locales/nn.js +113 -0
- package/dist/lib/modules/vendor/zod/v4/locales/no.js +113 -0
- package/dist/lib/modules/vendor/zod/v4/locales/ota.js +114 -0
- package/dist/lib/modules/vendor/zod/v4/locales/pl.js +114 -0
- package/dist/lib/modules/vendor/zod/v4/locales/ps.js +119 -0
- package/dist/lib/modules/vendor/zod/v4/locales/pt-BR.js +143 -0
- package/dist/lib/modules/vendor/zod/v4/locales/pt.js +142 -0
- package/dist/lib/modules/vendor/zod/v4/locales/ro.js +122 -0
- package/dist/lib/modules/vendor/zod/v4/locales/ru.js +168 -0
- package/dist/lib/modules/vendor/zod/v4/locales/sk.js +116 -0
- package/dist/lib/modules/vendor/zod/v4/locales/sl.js +114 -0
- package/dist/lib/modules/vendor/zod/v4/locales/sv.js +115 -0
- package/dist/lib/modules/vendor/zod/v4/locales/ta.js +115 -0
- package/dist/lib/modules/vendor/zod/v4/locales/tg.js +117 -0
- package/dist/lib/modules/vendor/zod/v4/locales/th.js +115 -0
- package/dist/lib/modules/vendor/zod/v4/locales/tk.js +107 -0
- package/dist/lib/modules/vendor/zod/v4/locales/tr.js +110 -0
- package/dist/lib/modules/vendor/zod/v4/locales/ua.js +5 -0
- package/dist/lib/modules/vendor/zod/v4/locales/uk.js +113 -0
- package/dist/lib/modules/vendor/zod/v4/locales/ur.js +115 -0
- package/dist/lib/modules/vendor/zod/v4/locales/uz.js +113 -0
- package/dist/lib/modules/vendor/zod/v4/locales/vi.js +113 -0
- package/dist/lib/modules/vendor/zod/v4/locales/yo.js +112 -0
- package/dist/lib/modules/vendor/zod/v4/locales/zh-CN.js +114 -0
- package/dist/lib/modules/vendor/zod/v4/locales/zh-TW.js +112 -0
- package/dist/lib/testing-jelly-id.js +1219 -0
- package/dist/lib/zod.js +1 -0
- package/dist/spec/messaging-v1.md +3744 -0
- package/dist/third-party-notices.md +239 -0
- package/dist/third-party.json +88 -0
- package/dist/types/core/address.d.ts +16 -0
- package/dist/types/core/agent/operations.d.ts +129 -0
- package/dist/types/core/agent/present.d.ts +57 -0
- package/dist/types/core/agent/text.d.ts +62 -0
- package/dist/types/core/agent-tools.d.ts +966 -0
- package/dist/types/core/b64u.d.ts +6 -0
- package/dist/types/core/cards.d.ts +21 -0
- package/dist/types/core/check.d.ts +10 -0
- package/dist/types/core/consent.d.ts +132 -0
- package/dist/types/core/contact-card.d.ts +34 -0
- package/dist/types/core/conversation/context.d.ts +56 -0
- package/dist/types/core/conversation/event.d.ts +36 -0
- package/dist/types/core/conversation/ids.d.ts +18 -0
- package/dist/types/core/conversation/link.d.ts +16 -0
- package/dist/types/core/conversation/log.d.ts +142 -0
- package/dist/types/core/conversation/ratchet.d.ts +95 -0
- package/dist/types/core/conversation/seal.d.ts +47 -0
- package/dist/types/core/delegation.d.ts +71 -0
- package/dist/types/core/directory/device-log.d.ts +119 -0
- package/dist/types/core/directory/epoch.d.ts +53 -0
- package/dist/types/core/directory/handle.d.ts +11 -0
- package/dist/types/core/directory/jelly-device.d.ts +88 -0
- package/dist/types/core/directory/jelly-issuer.d.ts +8 -0
- package/dist/types/core/directory/jelly-token.d.ts +116 -0
- package/dist/types/core/directory/keys-statement.d.ts +22 -0
- package/dist/types/core/directory/link.d.ts +36 -0
- package/dist/types/core/directory/merkle-log.d.ts +40 -0
- package/dist/types/core/directory/person-view.d.ts +90 -0
- package/dist/types/core/directory/person.d.ts +8 -0
- package/dist/types/core/directory/realm.d.ts +23 -0
- package/dist/types/core/directory/smt.d.ts +52 -0
- package/dist/types/core/envelope.d.ts +68 -0
- package/dist/types/core/hash.d.ts +2 -0
- package/dist/types/core/head.d.ts +34 -0
- package/dist/types/core/identity.d.ts +35 -0
- package/dist/types/core/index.d.ts +45 -0
- package/dist/types/core/jcs.d.ts +12 -0
- package/dist/types/core/jelly-host-double.d.ts +21 -0
- package/dist/types/core/jelly-host.d.ts +86 -0
- package/dist/types/core/keys.d.ts +16 -0
- package/dist/types/core/peer-text.d.ts +87 -0
- package/dist/types/core/realm.d.ts +36 -0
- package/dist/types/core/roster.d.ts +146 -0
- package/dist/types/core/schema/a2a.d.ts +251 -0
- package/dist/types/core/schema/common.d.ts +328 -0
- package/dist/types/core/schema/consent.d.ts +140 -0
- package/dist/types/core/schema/conversation.d.ts +1657 -0
- package/dist/types/core/schema/delegation.d.ts +58 -0
- package/dist/types/core/schema/directory-frames.d.ts +1301 -0
- package/dist/types/core/schema/directory.d.ts +375 -0
- package/dist/types/core/schema/envelope.d.ts +756 -0
- package/dist/types/core/schema/errors.d.ts +142 -0
- package/dist/types/core/schema/index.d.ts +16 -0
- package/dist/types/core/schema/ipc/consent.d.ts +555 -0
- package/dist/types/core/schema/ipc/device.d.ts +735 -0
- package/dist/types/core/schema/ipc/jelly.d.ts +501 -0
- package/dist/types/core/schema/ipc/shapes.d.ts +414 -0
- package/dist/types/core/schema/ipc/surfaces.d.ts +680 -0
- package/dist/types/core/schema/ipc.d.ts +3146 -0
- package/dist/types/core/schema/jelly.d.ts +160 -0
- package/dist/types/core/schema/realm.d.ts +38 -0
- package/dist/types/core/schema/relay.d.ts +1134 -0
- package/dist/types/core/schema/roster.d.ts +347 -0
- package/dist/types/core/sign.d.ts +13 -0
- package/dist/types/core/task.d.ts +6 -0
- package/dist/types/core/testing.d.ts +19 -0
- package/dist/types/core/ulid.d.ts +5 -0
- package/dist/types/core/version.d.ts +6 -0
- package/dist/types/core/wire.d.ts +14 -0
- package/dist/types/ipc/client.d.ts +85 -0
- package/dist/types/ipc/framing.d.ts +12 -0
- package/dist/types/ipc/index.d.ts +6 -0
- package/dist/types/ipc/paths.d.ts +39 -0
- package/dist/types/ipc/pipes.d.ts +16 -0
- package/dist/types/ipc/rpc.d.ts +13 -0
- package/dist/types/ipc/server.d.ts +94 -0
- package/dist/types/ipc/testing.d.ts +89 -0
- package/dist/types/ipc/trust.d.ts +49 -0
- package/dist/types/ipc/windows-acl.d.ts +56 -0
- package/dist/types/testing/jelly-id.d.ts +518 -0
- package/dist/types/zod.d.ts +1 -0
- package/package.json +77 -4
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import * as util from "../core/util.js";
|
|
2
|
+
const error = () => {
|
|
3
|
+
const Sizable = {
|
|
4
|
+
string: { unit: "belgi", verb: "bo‘lishi kerak" },
|
|
5
|
+
file: { unit: "bayt", verb: "bo‘lishi kerak" },
|
|
6
|
+
array: { unit: "element", verb: "bo‘lishi kerak" },
|
|
7
|
+
set: { unit: "element", verb: "bo‘lishi kerak" },
|
|
8
|
+
map: { unit: "yozuv", verb: "bo‘lishi kerak" },
|
|
9
|
+
};
|
|
10
|
+
function getSizing(origin) {
|
|
11
|
+
return Sizable[origin] ?? null;
|
|
12
|
+
}
|
|
13
|
+
const FormatDictionary = {
|
|
14
|
+
regex: "kirish",
|
|
15
|
+
email: "elektron pochta manzili",
|
|
16
|
+
url: "URL",
|
|
17
|
+
emoji: "emoji",
|
|
18
|
+
uuid: "UUID",
|
|
19
|
+
uuidv4: "UUIDv4",
|
|
20
|
+
uuidv6: "UUIDv6",
|
|
21
|
+
nanoid: "nanoid",
|
|
22
|
+
guid: "GUID",
|
|
23
|
+
cuid: "cuid",
|
|
24
|
+
cuid2: "cuid2",
|
|
25
|
+
ulid: "ULID",
|
|
26
|
+
xid: "XID",
|
|
27
|
+
ksuid: "KSUID",
|
|
28
|
+
datetime: "ISO sana va vaqti",
|
|
29
|
+
date: "ISO sana",
|
|
30
|
+
time: "ISO vaqt",
|
|
31
|
+
duration: "ISO davomiylik",
|
|
32
|
+
ipv4: "IPv4 manzil",
|
|
33
|
+
ipv6: "IPv6 manzil",
|
|
34
|
+
mac: "MAC manzil",
|
|
35
|
+
cidrv4: "IPv4 diapazon",
|
|
36
|
+
cidrv6: "IPv6 diapazon",
|
|
37
|
+
base64: "base64 kodlangan satr",
|
|
38
|
+
base64url: "base64url kodlangan satr",
|
|
39
|
+
json_string: "JSON satr",
|
|
40
|
+
e164: "E.164 raqam",
|
|
41
|
+
credit_card: "kredit karta raqami",
|
|
42
|
+
currency_code: "valyuta kodi",
|
|
43
|
+
iban: "IBAN",
|
|
44
|
+
jwt: "JWT",
|
|
45
|
+
template_literal: "kirish",
|
|
46
|
+
};
|
|
47
|
+
const TypeDictionary = {
|
|
48
|
+
nan: "NaN",
|
|
49
|
+
number: "raqam",
|
|
50
|
+
array: "massiv",
|
|
51
|
+
};
|
|
52
|
+
return (issue) => {
|
|
53
|
+
switch (issue.code) {
|
|
54
|
+
case "invalid_type": {
|
|
55
|
+
const expected = TypeDictionary[issue.expected] ?? issue.expected;
|
|
56
|
+
const receivedType = util.parsedType(issue.input);
|
|
57
|
+
const received = TypeDictionary[receivedType] ?? receivedType;
|
|
58
|
+
if (/^[A-Z]/.test(issue.expected)) {
|
|
59
|
+
return `Noto‘g‘ri kirish: kutilgan instanceof ${issue.expected}, qabul qilingan ${received}`;
|
|
60
|
+
}
|
|
61
|
+
return `Noto‘g‘ri kirish: kutilgan ${expected}, qabul qilingan ${received}`;
|
|
62
|
+
}
|
|
63
|
+
case "invalid_value":
|
|
64
|
+
if (issue.values.length === 1)
|
|
65
|
+
return `Noto‘g‘ri kirish: kutilgan ${util.stringifyPrimitive(issue.values[0])}`;
|
|
66
|
+
return `Noto‘g‘ri variant: quyidagilardan biri kutilgan ${util.joinValues(issue.values, "|")}`;
|
|
67
|
+
case "too_big": {
|
|
68
|
+
const adj = issue.inclusive ? "<=" : "<";
|
|
69
|
+
const sizing = getSizing(issue.origin);
|
|
70
|
+
if (sizing)
|
|
71
|
+
return `Juda katta: kutilgan ${issue.origin ?? "qiymat"} ${adj}${issue.maximum.toString()} ${sizing.unit} ${sizing.verb}`;
|
|
72
|
+
return `Juda katta: kutilgan ${issue.origin ?? "qiymat"} ${adj}${issue.maximum.toString()}`;
|
|
73
|
+
}
|
|
74
|
+
case "too_small": {
|
|
75
|
+
const adj = issue.inclusive ? ">=" : ">";
|
|
76
|
+
const sizing = getSizing(issue.origin);
|
|
77
|
+
if (sizing) {
|
|
78
|
+
return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;
|
|
79
|
+
}
|
|
80
|
+
return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()}`;
|
|
81
|
+
}
|
|
82
|
+
case "invalid_format": {
|
|
83
|
+
const _issue = issue;
|
|
84
|
+
if (_issue.format === "starts_with")
|
|
85
|
+
return `Noto‘g‘ri satr: "${_issue.prefix}" bilan boshlanishi kerak`;
|
|
86
|
+
if (_issue.format === "ends_with")
|
|
87
|
+
return `Noto‘g‘ri satr: "${_issue.suffix}" bilan tugashi kerak`;
|
|
88
|
+
if (_issue.format === "includes")
|
|
89
|
+
return `Noto‘g‘ri satr: "${_issue.includes}" ni o‘z ichiga olishi kerak`;
|
|
90
|
+
if (_issue.format === "regex")
|
|
91
|
+
return `Noto‘g‘ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;
|
|
92
|
+
return `Noto‘g‘ri ${FormatDictionary[_issue.format] ?? issue.format}`;
|
|
93
|
+
}
|
|
94
|
+
case "not_multiple_of":
|
|
95
|
+
return `Noto‘g‘ri raqam: ${issue.divisor} ning karralisi bo‘lishi kerak`;
|
|
96
|
+
case "unrecognized_keys":
|
|
97
|
+
return `Noma’lum kalit${issue.keys.length > 1 ? "lar" : ""}: ${util.joinValues(issue.keys, ", ")}`;
|
|
98
|
+
case "invalid_key":
|
|
99
|
+
return `${issue.origin} dagi kalit noto‘g‘ri`;
|
|
100
|
+
case "invalid_union":
|
|
101
|
+
return "Noto‘g‘ri kirish";
|
|
102
|
+
case "invalid_element":
|
|
103
|
+
return `${issue.origin} da noto‘g‘ri qiymat`;
|
|
104
|
+
default:
|
|
105
|
+
return `Noto‘g‘ri kirish`;
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
export default function () {
|
|
110
|
+
return {
|
|
111
|
+
localeError: error(),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import * as util from "../core/util.js";
|
|
2
|
+
const error = () => {
|
|
3
|
+
const Sizable = {
|
|
4
|
+
string: { unit: "ký tự", verb: "có" },
|
|
5
|
+
file: { unit: "byte", verb: "có" },
|
|
6
|
+
array: { unit: "phần tử", verb: "có" },
|
|
7
|
+
set: { unit: "phần tử", verb: "có" },
|
|
8
|
+
map: { unit: "phần tử", verb: "có" },
|
|
9
|
+
};
|
|
10
|
+
function getSizing(origin) {
|
|
11
|
+
return Sizable[origin] ?? null;
|
|
12
|
+
}
|
|
13
|
+
const FormatDictionary = {
|
|
14
|
+
regex: "đầu vào",
|
|
15
|
+
email: "địa chỉ email",
|
|
16
|
+
url: "URL",
|
|
17
|
+
emoji: "emoji",
|
|
18
|
+
uuid: "UUID",
|
|
19
|
+
uuidv4: "UUIDv4",
|
|
20
|
+
uuidv6: "UUIDv6",
|
|
21
|
+
nanoid: "nanoid",
|
|
22
|
+
guid: "GUID",
|
|
23
|
+
cuid: "cuid",
|
|
24
|
+
cuid2: "cuid2",
|
|
25
|
+
ulid: "ULID",
|
|
26
|
+
xid: "XID",
|
|
27
|
+
ksuid: "KSUID",
|
|
28
|
+
datetime: "ngày giờ ISO",
|
|
29
|
+
date: "ngày ISO",
|
|
30
|
+
time: "giờ ISO",
|
|
31
|
+
duration: "khoảng thời gian ISO",
|
|
32
|
+
ipv4: "địa chỉ IPv4",
|
|
33
|
+
ipv6: "địa chỉ IPv6",
|
|
34
|
+
mac: "địa chỉ MAC",
|
|
35
|
+
cidrv4: "dải IPv4",
|
|
36
|
+
cidrv6: "dải IPv6",
|
|
37
|
+
base64: "chuỗi mã hóa base64",
|
|
38
|
+
base64url: "chuỗi mã hóa base64url",
|
|
39
|
+
json_string: "chuỗi JSON",
|
|
40
|
+
e164: "số E.164",
|
|
41
|
+
credit_card: "số thẻ tín dụng",
|
|
42
|
+
currency_code: "mã tiền tệ",
|
|
43
|
+
iban: "IBAN",
|
|
44
|
+
jwt: "JWT",
|
|
45
|
+
template_literal: "đầu vào",
|
|
46
|
+
};
|
|
47
|
+
const TypeDictionary = {
|
|
48
|
+
nan: "NaN",
|
|
49
|
+
number: "số",
|
|
50
|
+
array: "mảng",
|
|
51
|
+
};
|
|
52
|
+
return (issue) => {
|
|
53
|
+
switch (issue.code) {
|
|
54
|
+
case "invalid_type": {
|
|
55
|
+
const expected = TypeDictionary[issue.expected] ?? issue.expected;
|
|
56
|
+
const receivedType = util.parsedType(issue.input);
|
|
57
|
+
const received = TypeDictionary[receivedType] ?? receivedType;
|
|
58
|
+
if (/^[A-Z]/.test(issue.expected)) {
|
|
59
|
+
return `Đầu vào không hợp lệ: mong đợi instanceof ${issue.expected}, nhận được ${received}`;
|
|
60
|
+
}
|
|
61
|
+
return `Đầu vào không hợp lệ: mong đợi ${expected}, nhận được ${received}`;
|
|
62
|
+
}
|
|
63
|
+
case "invalid_value":
|
|
64
|
+
if (issue.values.length === 1)
|
|
65
|
+
return `Đầu vào không hợp lệ: mong đợi ${util.stringifyPrimitive(issue.values[0])}`;
|
|
66
|
+
return `Tùy chọn không hợp lệ: mong đợi một trong các giá trị ${util.joinValues(issue.values, "|")}`;
|
|
67
|
+
case "too_big": {
|
|
68
|
+
const adj = issue.inclusive ? "<=" : "<";
|
|
69
|
+
const sizing = getSizing(issue.origin);
|
|
70
|
+
if (sizing)
|
|
71
|
+
return `Quá lớn: mong đợi ${issue.origin ?? "giá trị"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? "phần tử"}`;
|
|
72
|
+
return `Quá lớn: mong đợi ${issue.origin ?? "giá trị"} ${adj}${issue.maximum.toString()}`;
|
|
73
|
+
}
|
|
74
|
+
case "too_small": {
|
|
75
|
+
const adj = issue.inclusive ? ">=" : ">";
|
|
76
|
+
const sizing = getSizing(issue.origin);
|
|
77
|
+
if (sizing) {
|
|
78
|
+
return `Quá nhỏ: mong đợi ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;
|
|
79
|
+
}
|
|
80
|
+
return `Quá nhỏ: mong đợi ${issue.origin} ${adj}${issue.minimum.toString()}`;
|
|
81
|
+
}
|
|
82
|
+
case "invalid_format": {
|
|
83
|
+
const _issue = issue;
|
|
84
|
+
if (_issue.format === "starts_with")
|
|
85
|
+
return `Chuỗi không hợp lệ: phải bắt đầu bằng "${_issue.prefix}"`;
|
|
86
|
+
if (_issue.format === "ends_with")
|
|
87
|
+
return `Chuỗi không hợp lệ: phải kết thúc bằng "${_issue.suffix}"`;
|
|
88
|
+
if (_issue.format === "includes")
|
|
89
|
+
return `Chuỗi không hợp lệ: phải bao gồm "${_issue.includes}"`;
|
|
90
|
+
if (_issue.format === "regex")
|
|
91
|
+
return `Chuỗi không hợp lệ: phải khớp với mẫu ${_issue.pattern}`;
|
|
92
|
+
return `${FormatDictionary[_issue.format] ?? issue.format} không hợp lệ`;
|
|
93
|
+
}
|
|
94
|
+
case "not_multiple_of":
|
|
95
|
+
return `Số không hợp lệ: phải là bội số của ${issue.divisor}`;
|
|
96
|
+
case "unrecognized_keys":
|
|
97
|
+
return `Khóa không được nhận dạng: ${util.joinValues(issue.keys, ", ")}`;
|
|
98
|
+
case "invalid_key":
|
|
99
|
+
return `Khóa không hợp lệ trong ${issue.origin}`;
|
|
100
|
+
case "invalid_union":
|
|
101
|
+
return "Đầu vào không hợp lệ";
|
|
102
|
+
case "invalid_element":
|
|
103
|
+
return `Giá trị không hợp lệ trong ${issue.origin}`;
|
|
104
|
+
default:
|
|
105
|
+
return `Đầu vào không hợp lệ`;
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
export default function () {
|
|
110
|
+
return {
|
|
111
|
+
localeError: error(),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import * as util from "../core/util.js";
|
|
2
|
+
const error = () => {
|
|
3
|
+
const Sizable = {
|
|
4
|
+
string: { unit: "àmi", verb: "ní" },
|
|
5
|
+
file: { unit: "bytes", verb: "ní" },
|
|
6
|
+
array: { unit: "nkan", verb: "ní" },
|
|
7
|
+
set: { unit: "nkan", verb: "ní" },
|
|
8
|
+
map: { unit: "nkan", verb: "ní" },
|
|
9
|
+
};
|
|
10
|
+
function getSizing(origin) {
|
|
11
|
+
return Sizable[origin] ?? null;
|
|
12
|
+
}
|
|
13
|
+
const FormatDictionary = {
|
|
14
|
+
regex: "ẹ̀rọ ìbáwọlé",
|
|
15
|
+
email: "àdírẹ́sì ìmẹ́lì",
|
|
16
|
+
url: "URL",
|
|
17
|
+
emoji: "emoji",
|
|
18
|
+
uuid: "UUID",
|
|
19
|
+
uuidv4: "UUIDv4",
|
|
20
|
+
uuidv6: "UUIDv6",
|
|
21
|
+
nanoid: "nanoid",
|
|
22
|
+
guid: "GUID",
|
|
23
|
+
cuid: "cuid",
|
|
24
|
+
cuid2: "cuid2",
|
|
25
|
+
ulid: "ULID",
|
|
26
|
+
xid: "XID",
|
|
27
|
+
ksuid: "KSUID",
|
|
28
|
+
datetime: "àkókò ISO",
|
|
29
|
+
date: "ọjọ́ ISO",
|
|
30
|
+
time: "àkókò ISO",
|
|
31
|
+
duration: "àkókò tó pé ISO",
|
|
32
|
+
ipv4: "àdírẹ́sì IPv4",
|
|
33
|
+
ipv6: "àdírẹ́sì IPv6",
|
|
34
|
+
mac: "àdírẹ́sì MAC",
|
|
35
|
+
cidrv4: "àgbègbè IPv4",
|
|
36
|
+
cidrv6: "àgbègbè IPv6",
|
|
37
|
+
base64: "ọ̀rọ̀ tí a kọ́ ní base64",
|
|
38
|
+
base64url: "ọ̀rọ̀ base64url",
|
|
39
|
+
json_string: "ọ̀rọ̀ JSON",
|
|
40
|
+
e164: "nọ́mbà E.164",
|
|
41
|
+
credit_card: "nọmba kaadi gbese",
|
|
42
|
+
currency_code: "koodu owó",
|
|
43
|
+
iban: "IBAN",
|
|
44
|
+
jwt: "JWT",
|
|
45
|
+
template_literal: "ẹ̀rọ ìbáwọlé",
|
|
46
|
+
};
|
|
47
|
+
const TypeDictionary = {
|
|
48
|
+
nan: "NaN",
|
|
49
|
+
number: "nọ́mbà",
|
|
50
|
+
array: "akopọ",
|
|
51
|
+
};
|
|
52
|
+
return (issue) => {
|
|
53
|
+
switch (issue.code) {
|
|
54
|
+
case "invalid_type": {
|
|
55
|
+
const expected = TypeDictionary[issue.expected] ?? issue.expected;
|
|
56
|
+
const receivedType = util.parsedType(issue.input);
|
|
57
|
+
const received = TypeDictionary[receivedType] ?? receivedType;
|
|
58
|
+
if (/^[A-Z]/.test(issue.expected)) {
|
|
59
|
+
return `Ìbáwọlé aṣìṣe: a ní láti fi instanceof ${issue.expected}, àmọ̀ a rí ${received}`;
|
|
60
|
+
}
|
|
61
|
+
return `Ìbáwọlé aṣìṣe: a ní láti fi ${expected}, àmọ̀ a rí ${received}`;
|
|
62
|
+
}
|
|
63
|
+
case "invalid_value":
|
|
64
|
+
if (issue.values.length === 1)
|
|
65
|
+
return `Ìbáwọlé aṣìṣe: a ní láti fi ${util.stringifyPrimitive(issue.values[0])}`;
|
|
66
|
+
return `Àṣàyàn aṣìṣe: yan ọ̀kan lára ${util.joinValues(issue.values, "|")}`;
|
|
67
|
+
case "too_big": {
|
|
68
|
+
const adj = issue.inclusive ? "<=" : "<";
|
|
69
|
+
const sizing = getSizing(issue.origin);
|
|
70
|
+
if (sizing)
|
|
71
|
+
return `Tó pọ̀ jù: a ní láti jẹ́ pé ${issue.origin ?? "iye"} ${sizing.verb} ${adj}${issue.maximum} ${sizing.unit}`;
|
|
72
|
+
return `Tó pọ̀ jù: a ní láti jẹ́ ${adj}${issue.maximum}`;
|
|
73
|
+
}
|
|
74
|
+
case "too_small": {
|
|
75
|
+
const adj = issue.inclusive ? ">=" : ">";
|
|
76
|
+
const sizing = getSizing(issue.origin);
|
|
77
|
+
if (sizing)
|
|
78
|
+
return `Kéré ju: a ní láti jẹ́ pé ${issue.origin} ${sizing.verb} ${adj}${issue.minimum} ${sizing.unit}`;
|
|
79
|
+
return `Kéré ju: a ní láti jẹ́ ${adj}${issue.minimum}`;
|
|
80
|
+
}
|
|
81
|
+
case "invalid_format": {
|
|
82
|
+
const _issue = issue;
|
|
83
|
+
if (_issue.format === "starts_with")
|
|
84
|
+
return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bẹ̀rẹ̀ pẹ̀lú "${_issue.prefix}"`;
|
|
85
|
+
if (_issue.format === "ends_with")
|
|
86
|
+
return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ parí pẹ̀lú "${_issue.suffix}"`;
|
|
87
|
+
if (_issue.format === "includes")
|
|
88
|
+
return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ ní "${_issue.includes}"`;
|
|
89
|
+
if (_issue.format === "regex")
|
|
90
|
+
return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bá àpẹẹrẹ mu ${_issue.pattern}`;
|
|
91
|
+
return `Aṣìṣe: ${FormatDictionary[_issue.format] ?? issue.format}`;
|
|
92
|
+
}
|
|
93
|
+
case "not_multiple_of":
|
|
94
|
+
return `Nọ́mbà aṣìṣe: gbọ́dọ̀ jẹ́ èyà pípín ti ${issue.divisor}`;
|
|
95
|
+
case "unrecognized_keys":
|
|
96
|
+
return `Bọtìnì àìmọ̀: ${util.joinValues(issue.keys, ", ")}`;
|
|
97
|
+
case "invalid_key":
|
|
98
|
+
return `Bọtìnì aṣìṣe nínú ${issue.origin}`;
|
|
99
|
+
case "invalid_union":
|
|
100
|
+
return "Ìbáwọlé aṣìṣe";
|
|
101
|
+
case "invalid_element":
|
|
102
|
+
return `Iye aṣìṣe nínú ${issue.origin}`;
|
|
103
|
+
default:
|
|
104
|
+
return "Ìbáwọlé aṣìṣe";
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
export default function () {
|
|
109
|
+
return {
|
|
110
|
+
localeError: error(),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import * as util from "../core/util.js";
|
|
2
|
+
const error = () => {
|
|
3
|
+
const Sizable = {
|
|
4
|
+
string: { unit: "字符", verb: "包含" },
|
|
5
|
+
file: { unit: "字节", verb: "包含" },
|
|
6
|
+
array: { unit: "项", verb: "包含" },
|
|
7
|
+
set: { unit: "项", verb: "包含" },
|
|
8
|
+
map: { unit: "项", verb: "包含" },
|
|
9
|
+
};
|
|
10
|
+
function getSizing(origin) {
|
|
11
|
+
return Sizable[origin] ?? null;
|
|
12
|
+
}
|
|
13
|
+
const FormatDictionary = {
|
|
14
|
+
regex: "输入",
|
|
15
|
+
email: "电子邮件",
|
|
16
|
+
url: "URL",
|
|
17
|
+
emoji: "表情符号",
|
|
18
|
+
uuid: "UUID",
|
|
19
|
+
uuidv4: "UUIDv4",
|
|
20
|
+
uuidv6: "UUIDv6",
|
|
21
|
+
nanoid: "nanoid",
|
|
22
|
+
guid: "GUID",
|
|
23
|
+
cuid: "cuid",
|
|
24
|
+
cuid2: "cuid2",
|
|
25
|
+
ulid: "ULID",
|
|
26
|
+
xid: "XID",
|
|
27
|
+
ksuid: "KSUID",
|
|
28
|
+
datetime: "ISO日期时间",
|
|
29
|
+
date: "ISO日期",
|
|
30
|
+
time: "ISO时间",
|
|
31
|
+
duration: "ISO时长",
|
|
32
|
+
ipv4: "IPv4地址",
|
|
33
|
+
ipv6: "IPv6地址",
|
|
34
|
+
mac: "MAC地址",
|
|
35
|
+
cidrv4: "IPv4网段",
|
|
36
|
+
cidrv6: "IPv6网段",
|
|
37
|
+
base64: "base64编码字符串",
|
|
38
|
+
base64url: "base64url编码字符串",
|
|
39
|
+
json_string: "JSON字符串",
|
|
40
|
+
e164: "E.164号码",
|
|
41
|
+
credit_card: "信用卡号",
|
|
42
|
+
currency_code: "货币代码",
|
|
43
|
+
iban: "IBAN",
|
|
44
|
+
jwt: "JWT",
|
|
45
|
+
template_literal: "输入",
|
|
46
|
+
};
|
|
47
|
+
const TypeDictionary = {
|
|
48
|
+
nan: "NaN",
|
|
49
|
+
number: "数字",
|
|
50
|
+
array: "数组",
|
|
51
|
+
null: "空值(null)",
|
|
52
|
+
};
|
|
53
|
+
return (issue) => {
|
|
54
|
+
switch (issue.code) {
|
|
55
|
+
case "invalid_type": {
|
|
56
|
+
const expected = TypeDictionary[issue.expected] ?? issue.expected;
|
|
57
|
+
const receivedType = util.parsedType(issue.input);
|
|
58
|
+
const received = TypeDictionary[receivedType] ?? receivedType;
|
|
59
|
+
if (/^[A-Z]/.test(issue.expected)) {
|
|
60
|
+
return `无效输入:期望 instanceof ${issue.expected},实际接收 ${received}`;
|
|
61
|
+
}
|
|
62
|
+
return `无效输入:期望 ${expected},实际接收 ${received}`;
|
|
63
|
+
}
|
|
64
|
+
case "invalid_value":
|
|
65
|
+
if (issue.values.length === 1)
|
|
66
|
+
return `无效输入:期望 ${util.stringifyPrimitive(issue.values[0])}`;
|
|
67
|
+
return `无效选项:期望以下之一 ${util.joinValues(issue.values, "|")}`;
|
|
68
|
+
case "too_big": {
|
|
69
|
+
const adj = issue.inclusive ? "<=" : "<";
|
|
70
|
+
const sizing = getSizing(issue.origin);
|
|
71
|
+
if (sizing)
|
|
72
|
+
return `数值过大:期望 ${issue.origin ?? "值"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? "个元素"}`;
|
|
73
|
+
return `数值过大:期望 ${issue.origin ?? "值"} ${adj}${issue.maximum.toString()}`;
|
|
74
|
+
}
|
|
75
|
+
case "too_small": {
|
|
76
|
+
const adj = issue.inclusive ? ">=" : ">";
|
|
77
|
+
const sizing = getSizing(issue.origin);
|
|
78
|
+
if (sizing) {
|
|
79
|
+
return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;
|
|
80
|
+
}
|
|
81
|
+
return `数值过小:期望 ${issue.origin} ${adj}${issue.minimum.toString()}`;
|
|
82
|
+
}
|
|
83
|
+
case "invalid_format": {
|
|
84
|
+
const _issue = issue;
|
|
85
|
+
if (_issue.format === "starts_with")
|
|
86
|
+
return `无效字符串:必须以 "${_issue.prefix}" 开头`;
|
|
87
|
+
if (_issue.format === "ends_with")
|
|
88
|
+
return `无效字符串:必须以 "${_issue.suffix}" 结尾`;
|
|
89
|
+
if (_issue.format === "includes")
|
|
90
|
+
return `无效字符串:必须包含 "${_issue.includes}"`;
|
|
91
|
+
if (_issue.format === "regex")
|
|
92
|
+
return `无效字符串:必须满足正则表达式 ${_issue.pattern}`;
|
|
93
|
+
return `无效${FormatDictionary[_issue.format] ?? issue.format}`;
|
|
94
|
+
}
|
|
95
|
+
case "not_multiple_of":
|
|
96
|
+
return `无效数字:必须是 ${issue.divisor} 的倍数`;
|
|
97
|
+
case "unrecognized_keys":
|
|
98
|
+
return `出现未知的键(key): ${util.joinValues(issue.keys, ", ")}`;
|
|
99
|
+
case "invalid_key":
|
|
100
|
+
return `${issue.origin} 中的键(key)无效`;
|
|
101
|
+
case "invalid_union":
|
|
102
|
+
return "无效输入";
|
|
103
|
+
case "invalid_element":
|
|
104
|
+
return `${issue.origin} 中包含无效值(value)`;
|
|
105
|
+
default:
|
|
106
|
+
return `无效输入`;
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
export default function () {
|
|
111
|
+
return {
|
|
112
|
+
localeError: error(),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import * as util from "../core/util.js";
|
|
2
|
+
const error = () => {
|
|
3
|
+
const Sizable = {
|
|
4
|
+
string: { unit: "字元", verb: "擁有" },
|
|
5
|
+
file: { unit: "位元組", verb: "擁有" },
|
|
6
|
+
array: { unit: "項目", verb: "擁有" },
|
|
7
|
+
set: { unit: "項目", verb: "擁有" },
|
|
8
|
+
map: { unit: "項目", verb: "擁有" },
|
|
9
|
+
};
|
|
10
|
+
function getSizing(origin) {
|
|
11
|
+
return Sizable[origin] ?? null;
|
|
12
|
+
}
|
|
13
|
+
const FormatDictionary = {
|
|
14
|
+
regex: "輸入",
|
|
15
|
+
email: "郵件地址",
|
|
16
|
+
url: "URL",
|
|
17
|
+
emoji: "emoji",
|
|
18
|
+
uuid: "UUID",
|
|
19
|
+
uuidv4: "UUIDv4",
|
|
20
|
+
uuidv6: "UUIDv6",
|
|
21
|
+
nanoid: "nanoid",
|
|
22
|
+
guid: "GUID",
|
|
23
|
+
cuid: "cuid",
|
|
24
|
+
cuid2: "cuid2",
|
|
25
|
+
ulid: "ULID",
|
|
26
|
+
xid: "XID",
|
|
27
|
+
ksuid: "KSUID",
|
|
28
|
+
datetime: "ISO 日期時間",
|
|
29
|
+
date: "ISO 日期",
|
|
30
|
+
time: "ISO 時間",
|
|
31
|
+
duration: "ISO 期間",
|
|
32
|
+
ipv4: "IPv4 位址",
|
|
33
|
+
ipv6: "IPv6 位址",
|
|
34
|
+
mac: "MAC 位址",
|
|
35
|
+
cidrv4: "IPv4 範圍",
|
|
36
|
+
cidrv6: "IPv6 範圍",
|
|
37
|
+
base64: "base64 編碼字串",
|
|
38
|
+
base64url: "base64url 編碼字串",
|
|
39
|
+
json_string: "JSON 字串",
|
|
40
|
+
e164: "E.164 數值",
|
|
41
|
+
credit_card: "信用卡號",
|
|
42
|
+
currency_code: "貨幣代碼",
|
|
43
|
+
iban: "IBAN",
|
|
44
|
+
jwt: "JWT",
|
|
45
|
+
template_literal: "輸入",
|
|
46
|
+
};
|
|
47
|
+
const TypeDictionary = {
|
|
48
|
+
nan: "NaN",
|
|
49
|
+
};
|
|
50
|
+
return (issue) => {
|
|
51
|
+
switch (issue.code) {
|
|
52
|
+
case "invalid_type": {
|
|
53
|
+
const expected = TypeDictionary[issue.expected] ?? issue.expected;
|
|
54
|
+
const receivedType = util.parsedType(issue.input);
|
|
55
|
+
const received = TypeDictionary[receivedType] ?? receivedType;
|
|
56
|
+
if (/^[A-Z]/.test(issue.expected)) {
|
|
57
|
+
return `無效的輸入值:預期為 instanceof ${issue.expected},但收到 ${received}`;
|
|
58
|
+
}
|
|
59
|
+
return `無效的輸入值:預期為 ${expected},但收到 ${received}`;
|
|
60
|
+
}
|
|
61
|
+
case "invalid_value":
|
|
62
|
+
if (issue.values.length === 1)
|
|
63
|
+
return `無效的輸入值:預期為 ${util.stringifyPrimitive(issue.values[0])}`;
|
|
64
|
+
return `無效的選項:預期為以下其中之一 ${util.joinValues(issue.values, "|")}`;
|
|
65
|
+
case "too_big": {
|
|
66
|
+
const adj = issue.inclusive ? "<=" : "<";
|
|
67
|
+
const sizing = getSizing(issue.origin);
|
|
68
|
+
if (sizing)
|
|
69
|
+
return `數值過大:預期 ${issue.origin ?? "值"} 應為 ${adj}${issue.maximum.toString()} ${sizing.unit ?? "個元素"}`;
|
|
70
|
+
return `數值過大:預期 ${issue.origin ?? "值"} 應為 ${adj}${issue.maximum.toString()}`;
|
|
71
|
+
}
|
|
72
|
+
case "too_small": {
|
|
73
|
+
const adj = issue.inclusive ? ">=" : ">";
|
|
74
|
+
const sizing = getSizing(issue.origin);
|
|
75
|
+
if (sizing) {
|
|
76
|
+
return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()} ${sizing.unit}`;
|
|
77
|
+
}
|
|
78
|
+
return `數值過小:預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()}`;
|
|
79
|
+
}
|
|
80
|
+
case "invalid_format": {
|
|
81
|
+
const _issue = issue;
|
|
82
|
+
if (_issue.format === "starts_with") {
|
|
83
|
+
return `無效的字串:必須以 "${_issue.prefix}" 開頭`;
|
|
84
|
+
}
|
|
85
|
+
if (_issue.format === "ends_with")
|
|
86
|
+
return `無效的字串:必須以 "${_issue.suffix}" 結尾`;
|
|
87
|
+
if (_issue.format === "includes")
|
|
88
|
+
return `無效的字串:必須包含 "${_issue.includes}"`;
|
|
89
|
+
if (_issue.format === "regex")
|
|
90
|
+
return `無效的字串:必須符合格式 ${_issue.pattern}`;
|
|
91
|
+
return `無效的 ${FormatDictionary[_issue.format] ?? issue.format}`;
|
|
92
|
+
}
|
|
93
|
+
case "not_multiple_of":
|
|
94
|
+
return `無效的數字:必須為 ${issue.divisor} 的倍數`;
|
|
95
|
+
case "unrecognized_keys":
|
|
96
|
+
return `無法識別的鍵值${issue.keys.length > 1 ? "們" : ""}:${util.joinValues(issue.keys, "、")}`;
|
|
97
|
+
case "invalid_key":
|
|
98
|
+
return `${issue.origin} 中有無效的鍵值`;
|
|
99
|
+
case "invalid_union":
|
|
100
|
+
return "無效的輸入值";
|
|
101
|
+
case "invalid_element":
|
|
102
|
+
return `${issue.origin} 中有無效的值`;
|
|
103
|
+
default:
|
|
104
|
+
return `無效的輸入值`;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
export default function () {
|
|
109
|
+
return {
|
|
110
|
+
localeError: error(),
|
|
111
|
+
};
|
|
112
|
+
}
|