@joe-broadhead/messaging 0.0.0-stage → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/CHANGELOG.md +175 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE +12 -0
  4. package/README.md +36 -2
  5. package/dist/bin/messaging-mcp.js +25887 -0
  6. package/dist/bin/messaging-relay.js +19014 -0
  7. package/dist/bin/messaging.js +14732 -0
  8. package/dist/bin/messagingd.js +28682 -0
  9. package/dist/lib/core-testing.js +1 -0
  10. package/dist/lib/core.js +1 -0
  11. package/dist/lib/ipc-testing.js +1 -0
  12. package/dist/lib/ipc.js +1 -0
  13. package/dist/lib/modules/core/address.js +42 -0
  14. package/dist/lib/modules/core/agent/operations.js +595 -0
  15. package/dist/lib/modules/core/agent/present.js +244 -0
  16. package/dist/lib/modules/core/agent/text.js +79 -0
  17. package/dist/lib/modules/core/agent-tools.js +458 -0
  18. package/dist/lib/modules/core/b64u.js +20 -0
  19. package/dist/lib/modules/core/cards.js +55 -0
  20. package/dist/lib/modules/core/check.js +20 -0
  21. package/dist/lib/modules/core/consent.js +199 -0
  22. package/dist/lib/modules/core/contact-card.js +74 -0
  23. package/dist/lib/modules/core/delegation.js +174 -0
  24. package/dist/lib/modules/core/directory/device-log.js +258 -0
  25. package/dist/lib/modules/core/directory/epoch.js +103 -0
  26. package/dist/lib/modules/core/directory/handle.js +29 -0
  27. package/dist/lib/modules/core/directory/jelly-device.js +204 -0
  28. package/dist/lib/modules/core/directory/jelly-issuer.js +12 -0
  29. package/dist/lib/modules/core/directory/jelly-token.js +305 -0
  30. package/dist/lib/modules/core/directory/keys-statement.js +43 -0
  31. package/dist/lib/modules/core/directory/link.js +81 -0
  32. package/dist/lib/modules/core/directory/merkle-log.js +250 -0
  33. package/dist/lib/modules/core/directory/person-view.js +197 -0
  34. package/dist/lib/modules/core/directory/person.js +40 -0
  35. package/dist/lib/modules/core/directory/realm.js +59 -0
  36. package/dist/lib/modules/core/directory/smt.js +266 -0
  37. package/dist/lib/modules/core/envelope.js +320 -0
  38. package/dist/lib/modules/core/hash.js +5 -0
  39. package/dist/lib/modules/core/head.js +27 -0
  40. package/dist/lib/modules/core/identity.js +71 -0
  41. package/dist/lib/modules/core/index.js +44 -0
  42. package/dist/lib/modules/core/jcs.js +96 -0
  43. package/dist/lib/modules/core/jelly-host-double.js +35 -0
  44. package/dist/lib/modules/core/jelly-host.js +211 -0
  45. package/dist/lib/modules/core/keys.js +79 -0
  46. package/dist/lib/modules/core/peer-text.js +563 -0
  47. package/dist/lib/modules/core/realm.js +1 -0
  48. package/dist/lib/modules/core/roster.js +454 -0
  49. package/dist/lib/modules/core/schema/a2a.js +85 -0
  50. package/dist/lib/modules/core/schema/common.js +254 -0
  51. package/dist/lib/modules/core/schema/consent.js +120 -0
  52. package/dist/lib/modules/core/schema/delegation.js +58 -0
  53. package/dist/lib/modules/core/schema/directory-frames.js +270 -0
  54. package/dist/lib/modules/core/schema/directory.js +169 -0
  55. package/dist/lib/modules/core/schema/envelope.js +211 -0
  56. package/dist/lib/modules/core/schema/errors.js +65 -0
  57. package/dist/lib/modules/core/schema/index.js +15 -0
  58. package/dist/lib/modules/core/schema/ipc/consent.js +181 -0
  59. package/dist/lib/modules/core/schema/ipc/device.js +276 -0
  60. package/dist/lib/modules/core/schema/ipc/jelly.js +189 -0
  61. package/dist/lib/modules/core/schema/ipc/shapes.js +185 -0
  62. package/dist/lib/modules/core/schema/ipc/surfaces.js +223 -0
  63. package/dist/lib/modules/core/schema/ipc.js +451 -0
  64. package/dist/lib/modules/core/schema/jelly.js +122 -0
  65. package/dist/lib/modules/core/schema/realm.js +27 -0
  66. package/dist/lib/modules/core/schema/relay.js +112 -0
  67. package/dist/lib/modules/core/schema/roster.js +126 -0
  68. package/dist/lib/modules/core/sign.js +43 -0
  69. package/dist/lib/modules/core/task.js +37 -0
  70. package/dist/lib/modules/core/testing.js +20 -0
  71. package/dist/lib/modules/core/ulid.js +36 -0
  72. package/dist/lib/modules/core/version.js +6 -0
  73. package/dist/lib/modules/core/wire.js +255 -0
  74. package/dist/lib/modules/ipc/client.js +289 -0
  75. package/dist/lib/modules/ipc/framing.js +33 -0
  76. package/dist/lib/modules/ipc/index.js +6 -0
  77. package/dist/lib/modules/ipc/paths.js +102 -0
  78. package/dist/lib/modules/ipc/pipes.js +65 -0
  79. package/dist/lib/modules/ipc/rpc.js +8 -0
  80. package/dist/lib/modules/ipc/server.js +317 -0
  81. package/dist/lib/modules/ipc/testing.js +145 -0
  82. package/dist/lib/modules/ipc/trust.js +166 -0
  83. package/dist/lib/modules/ipc/windows-acl.js +275 -0
  84. package/dist/lib/modules/vendor/zod/index.js +7 -0
  85. package/dist/lib/modules/vendor/zod/v4/classic/checks.js +1 -0
  86. package/dist/lib/modules/vendor/zod/v4/classic/coerce.js +17 -0
  87. package/dist/lib/modules/vendor/zod/v4/classic/compat.js +31 -0
  88. package/dist/lib/modules/vendor/zod/v4/classic/deep-partial.js +13 -0
  89. package/dist/lib/modules/vendor/zod/v4/classic/errors.js +57 -0
  90. package/dist/lib/modules/vendor/zod/v4/classic/external.js +17 -0
  91. package/dist/lib/modules/vendor/zod/v4/classic/from-json-schema.js +881 -0
  92. package/dist/lib/modules/vendor/zod/v4/classic/in-out.js +36 -0
  93. package/dist/lib/modules/vendor/zod/v4/classic/iso.js +15 -0
  94. package/dist/lib/modules/vendor/zod/v4/classic/parse.js +16 -0
  95. package/dist/lib/modules/vendor/zod/v4/classic/schemas.js +1535 -0
  96. package/dist/lib/modules/vendor/zod/v4/core/api.js +1107 -0
  97. package/dist/lib/modules/vendor/zod/v4/core/checks.js +516 -0
  98. package/dist/lib/modules/vendor/zod/v4/core/compile.js +1866 -0
  99. package/dist/lib/modules/vendor/zod/v4/core/core.js +141 -0
  100. package/dist/lib/modules/vendor/zod/v4/core/doc.js +38 -0
  101. package/dist/lib/modules/vendor/zod/v4/core/errors.js +267 -0
  102. package/dist/lib/modules/vendor/zod/v4/core/index.js +19 -0
  103. package/dist/lib/modules/vendor/zod/v4/core/json-schema-generator.js +99 -0
  104. package/dist/lib/modules/vendor/zod/v4/core/json-schema-processors.js +843 -0
  105. package/dist/lib/modules/vendor/zod/v4/core/json-schema.js +1 -0
  106. package/dist/lib/modules/vendor/zod/v4/core/memoizer.js +311 -0
  107. package/dist/lib/modules/vendor/zod/v4/core/parse.js +175 -0
  108. package/dist/lib/modules/vendor/zod/v4/core/regexes.js +156 -0
  109. package/dist/lib/modules/vendor/zod/v4/core/registries.js +51 -0
  110. package/dist/lib/modules/vendor/zod/v4/core/schemas.js +2636 -0
  111. package/dist/lib/modules/vendor/zod/v4/core/to-json-schema.js +651 -0
  112. package/dist/lib/modules/vendor/zod/v4/core/util.js +873 -0
  113. package/dist/lib/modules/vendor/zod/v4/core/versions.js +5 -0
  114. package/dist/lib/modules/vendor/zod/v4/core/visit.js +169 -0
  115. package/dist/lib/modules/vendor/zod/v4/locales/ar.js +111 -0
  116. package/dist/lib/modules/vendor/zod/v4/locales/az.js +110 -0
  117. package/dist/lib/modules/vendor/zod/v4/locales/be.js +168 -0
  118. package/dist/lib/modules/vendor/zod/v4/locales/bg.js +125 -0
  119. package/dist/lib/modules/vendor/zod/v4/locales/bn.js +113 -0
  120. package/dist/lib/modules/vendor/zod/v4/locales/ca.js +112 -0
  121. package/dist/lib/modules/vendor/zod/v4/locales/ckb.js +133 -0
  122. package/dist/lib/modules/vendor/zod/v4/locales/cs.js +116 -0
  123. package/dist/lib/modules/vendor/zod/v4/locales/da.js +120 -0
  124. package/dist/lib/modules/vendor/zod/v4/locales/de.js +113 -0
  125. package/dist/lib/modules/vendor/zod/v4/locales/el.js +112 -0
  126. package/dist/lib/modules/vendor/zod/v4/locales/en.js +125 -0
  127. package/dist/lib/modules/vendor/zod/v4/locales/eo.js +114 -0
  128. package/dist/lib/modules/vendor/zod/v4/locales/es.js +136 -0
  129. package/dist/lib/modules/vendor/zod/v4/locales/fa.js +119 -0
  130. package/dist/lib/modules/vendor/zod/v4/locales/fi.js +117 -0
  131. package/dist/lib/modules/vendor/zod/v4/locales/fr-CA.js +112 -0
  132. package/dist/lib/modules/vendor/zod/v4/locales/fr.js +129 -0
  133. package/dist/lib/modules/vendor/zod/v4/locales/gu.js +113 -0
  134. package/dist/lib/modules/vendor/zod/v4/locales/he.js +221 -0
  135. package/dist/lib/modules/vendor/zod/v4/locales/hi.js +111 -0
  136. package/dist/lib/modules/vendor/zod/v4/locales/hr.js +126 -0
  137. package/dist/lib/modules/vendor/zod/v4/locales/hu.js +113 -0
  138. package/dist/lib/modules/vendor/zod/v4/locales/hy.js +158 -0
  139. package/dist/lib/modules/vendor/zod/v4/locales/id.js +111 -0
  140. package/dist/lib/modules/vendor/zod/v4/locales/index.js +63 -0
  141. package/dist/lib/modules/vendor/zod/v4/locales/is.js +114 -0
  142. package/dist/lib/modules/vendor/zod/v4/locales/it.js +113 -0
  143. package/dist/lib/modules/vendor/zod/v4/locales/ja.js +112 -0
  144. package/dist/lib/modules/vendor/zod/v4/locales/ka.js +117 -0
  145. package/dist/lib/modules/vendor/zod/v4/locales/kh.js +5 -0
  146. package/dist/lib/modules/vendor/zod/v4/locales/km.js +115 -0
  147. package/dist/lib/modules/vendor/zod/v4/locales/kn.js +116 -0
  148. package/dist/lib/modules/vendor/zod/v4/locales/ko.js +116 -0
  149. package/dist/lib/modules/vendor/zod/v4/locales/lt.js +207 -0
  150. package/dist/lib/modules/vendor/zod/v4/locales/mk.js +114 -0
  151. package/dist/lib/modules/vendor/zod/v4/locales/ms.js +112 -0
  152. package/dist/lib/modules/vendor/zod/v4/locales/ne.js +111 -0
  153. package/dist/lib/modules/vendor/zod/v4/locales/nl.js +115 -0
  154. package/dist/lib/modules/vendor/zod/v4/locales/nn.js +113 -0
  155. package/dist/lib/modules/vendor/zod/v4/locales/no.js +113 -0
  156. package/dist/lib/modules/vendor/zod/v4/locales/ota.js +114 -0
  157. package/dist/lib/modules/vendor/zod/v4/locales/pl.js +114 -0
  158. package/dist/lib/modules/vendor/zod/v4/locales/ps.js +119 -0
  159. package/dist/lib/modules/vendor/zod/v4/locales/pt-BR.js +143 -0
  160. package/dist/lib/modules/vendor/zod/v4/locales/pt.js +142 -0
  161. package/dist/lib/modules/vendor/zod/v4/locales/ro.js +122 -0
  162. package/dist/lib/modules/vendor/zod/v4/locales/ru.js +168 -0
  163. package/dist/lib/modules/vendor/zod/v4/locales/sk.js +116 -0
  164. package/dist/lib/modules/vendor/zod/v4/locales/sl.js +114 -0
  165. package/dist/lib/modules/vendor/zod/v4/locales/sv.js +115 -0
  166. package/dist/lib/modules/vendor/zod/v4/locales/ta.js +115 -0
  167. package/dist/lib/modules/vendor/zod/v4/locales/tg.js +117 -0
  168. package/dist/lib/modules/vendor/zod/v4/locales/th.js +115 -0
  169. package/dist/lib/modules/vendor/zod/v4/locales/tk.js +107 -0
  170. package/dist/lib/modules/vendor/zod/v4/locales/tr.js +110 -0
  171. package/dist/lib/modules/vendor/zod/v4/locales/ua.js +5 -0
  172. package/dist/lib/modules/vendor/zod/v4/locales/uk.js +113 -0
  173. package/dist/lib/modules/vendor/zod/v4/locales/ur.js +115 -0
  174. package/dist/lib/modules/vendor/zod/v4/locales/uz.js +113 -0
  175. package/dist/lib/modules/vendor/zod/v4/locales/vi.js +113 -0
  176. package/dist/lib/modules/vendor/zod/v4/locales/yo.js +112 -0
  177. package/dist/lib/modules/vendor/zod/v4/locales/zh-CN.js +114 -0
  178. package/dist/lib/modules/vendor/zod/v4/locales/zh-TW.js +112 -0
  179. package/dist/lib/testing-jelly-id.js +1219 -0
  180. package/dist/lib/zod.js +1 -0
  181. package/dist/spec/messaging-v1.md +3426 -0
  182. package/dist/third-party-notices.md +239 -0
  183. package/dist/third-party.json +88 -0
  184. package/dist/types/core/address.d.ts +16 -0
  185. package/dist/types/core/agent/operations.d.ts +129 -0
  186. package/dist/types/core/agent/present.d.ts +57 -0
  187. package/dist/types/core/agent/text.d.ts +62 -0
  188. package/dist/types/core/agent-tools.d.ts +948 -0
  189. package/dist/types/core/b64u.d.ts +6 -0
  190. package/dist/types/core/cards.d.ts +21 -0
  191. package/dist/types/core/check.d.ts +10 -0
  192. package/dist/types/core/consent.d.ts +132 -0
  193. package/dist/types/core/contact-card.d.ts +34 -0
  194. package/dist/types/core/delegation.d.ts +71 -0
  195. package/dist/types/core/directory/device-log.d.ts +119 -0
  196. package/dist/types/core/directory/epoch.d.ts +53 -0
  197. package/dist/types/core/directory/handle.d.ts +11 -0
  198. package/dist/types/core/directory/jelly-device.d.ts +88 -0
  199. package/dist/types/core/directory/jelly-issuer.d.ts +8 -0
  200. package/dist/types/core/directory/jelly-token.d.ts +116 -0
  201. package/dist/types/core/directory/keys-statement.d.ts +22 -0
  202. package/dist/types/core/directory/link.d.ts +36 -0
  203. package/dist/types/core/directory/merkle-log.d.ts +40 -0
  204. package/dist/types/core/directory/person-view.d.ts +90 -0
  205. package/dist/types/core/directory/person.d.ts +8 -0
  206. package/dist/types/core/directory/realm.d.ts +23 -0
  207. package/dist/types/core/directory/smt.d.ts +52 -0
  208. package/dist/types/core/envelope.d.ts +68 -0
  209. package/dist/types/core/hash.d.ts +2 -0
  210. package/dist/types/core/head.d.ts +34 -0
  211. package/dist/types/core/identity.d.ts +35 -0
  212. package/dist/types/core/index.d.ts +38 -0
  213. package/dist/types/core/jcs.d.ts +12 -0
  214. package/dist/types/core/jelly-host-double.d.ts +21 -0
  215. package/dist/types/core/jelly-host.d.ts +86 -0
  216. package/dist/types/core/keys.d.ts +16 -0
  217. package/dist/types/core/peer-text.d.ts +87 -0
  218. package/dist/types/core/realm.d.ts +36 -0
  219. package/dist/types/core/roster.d.ts +146 -0
  220. package/dist/types/core/schema/a2a.d.ts +251 -0
  221. package/dist/types/core/schema/common.d.ts +272 -0
  222. package/dist/types/core/schema/consent.d.ts +140 -0
  223. package/dist/types/core/schema/delegation.d.ts +58 -0
  224. package/dist/types/core/schema/directory-frames.d.ts +1301 -0
  225. package/dist/types/core/schema/directory.d.ts +375 -0
  226. package/dist/types/core/schema/envelope.d.ts +750 -0
  227. package/dist/types/core/schema/errors.d.ts +104 -0
  228. package/dist/types/core/schema/index.d.ts +15 -0
  229. package/dist/types/core/schema/ipc/consent.d.ts +555 -0
  230. package/dist/types/core/schema/ipc/device.d.ts +729 -0
  231. package/dist/types/core/schema/ipc/jelly.d.ts +501 -0
  232. package/dist/types/core/schema/ipc/shapes.d.ts +411 -0
  233. package/dist/types/core/schema/ipc/surfaces.d.ts +674 -0
  234. package/dist/types/core/schema/ipc.d.ts +3131 -0
  235. package/dist/types/core/schema/jelly.d.ts +160 -0
  236. package/dist/types/core/schema/realm.d.ts +38 -0
  237. package/dist/types/core/schema/relay.d.ts +1122 -0
  238. package/dist/types/core/schema/roster.d.ts +347 -0
  239. package/dist/types/core/sign.d.ts +13 -0
  240. package/dist/types/core/task.d.ts +6 -0
  241. package/dist/types/core/testing.d.ts +18 -0
  242. package/dist/types/core/ulid.d.ts +5 -0
  243. package/dist/types/core/version.d.ts +6 -0
  244. package/dist/types/core/wire.d.ts +14 -0
  245. package/dist/types/ipc/client.d.ts +85 -0
  246. package/dist/types/ipc/framing.d.ts +12 -0
  247. package/dist/types/ipc/index.d.ts +6 -0
  248. package/dist/types/ipc/paths.d.ts +39 -0
  249. package/dist/types/ipc/pipes.d.ts +16 -0
  250. package/dist/types/ipc/rpc.d.ts +13 -0
  251. package/dist/types/ipc/server.d.ts +94 -0
  252. package/dist/types/ipc/testing.d.ts +89 -0
  253. package/dist/types/ipc/trust.d.ts +49 -0
  254. package/dist/types/ipc/windows-acl.d.ts +56 -0
  255. package/dist/types/testing/jelly-id.d.ts +518 -0
  256. package/dist/types/zod.d.ts +1 -0
  257. package/package.json +77 -4
@@ -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: "絵文字",
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
+ };
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 `無効な入力: instanceof ${issue.expected}が期待されましたが、${received}が入力されました`;
60
+ }
61
+ return `無効な入力: ${expected}が期待されましたが、${received}が入力されました`;
62
+ }
63
+ case "invalid_value":
64
+ if (issue.values.length === 1)
65
+ return `無効な入力: ${util.stringifyPrimitive(issue.values[0])}が期待されました`;
66
+ return `無効な選択: ${util.joinValues(issue.values, "、")}のいずれかである必要があります`;
67
+ case "too_big": {
68
+ const adj = issue.inclusive ? "以下である" : "より小さい";
69
+ const sizing = getSizing(issue.origin);
70
+ if (sizing)
71
+ return `大きすぎる値: ${issue.origin ?? "値"}は${issue.maximum.toString()}${sizing.unit ?? "要素"}${adj}必要があります`;
72
+ return `大きすぎる値: ${issue.origin ?? "値"}は${issue.maximum.toString()}${adj}必要があります`;
73
+ }
74
+ case "too_small": {
75
+ const adj = issue.inclusive ? "以上である" : "より大きい";
76
+ const sizing = getSizing(issue.origin);
77
+ if (sizing)
78
+ return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${sizing.unit}${adj}必要があります`;
79
+ return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${adj}必要があります`;
80
+ }
81
+ case "invalid_format": {
82
+ const _issue = issue;
83
+ if (_issue.format === "starts_with")
84
+ return `無効な文字列: "${_issue.prefix}"で始まる必要があります`;
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
+ }
@@ -0,0 +1,117 @@
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: "თარიღი-დრო",
29
+ date: "თარიღი",
30
+ time: "დრო",
31
+ duration: "ხანგრძლივობა",
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
+ string: "ველი",
51
+ boolean: "ბულეანი",
52
+ function: "ფუნქცია",
53
+ array: "მასივი",
54
+ };
55
+ return (issue) => {
56
+ switch (issue.code) {
57
+ case "invalid_type": {
58
+ const expected = TypeDictionary[issue.expected] ?? issue.expected;
59
+ const receivedType = util.parsedType(issue.input);
60
+ const received = TypeDictionary[receivedType] ?? receivedType;
61
+ if (/^[A-Z]/.test(issue.expected)) {
62
+ return `არასწორი შეყვანა: მოსალოდნელი instanceof ${issue.expected}, მიღებული ${received}`;
63
+ }
64
+ return `არასწორი შეყვანა: მოსალოდნელი ${expected}, მიღებული ${received}`;
65
+ }
66
+ case "invalid_value":
67
+ if (issue.values.length === 1)
68
+ return `არასწორი შეყვანა: მოსალოდნელი ${util.stringifyPrimitive(issue.values[0])}`;
69
+ return `არასწორი ვარიანტი: მოსალოდნელია ერთ-ერთი ${util.joinValues(issue.values, "|")}-დან`;
70
+ case "too_big": {
71
+ const adj = issue.inclusive ? "<=" : "<";
72
+ const sizing = getSizing(issue.origin);
73
+ if (sizing)
74
+ return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? "მნიშვნელობა"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit}`;
75
+ return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? "მნიშვნელობა"} იყოს ${adj}${issue.maximum.toString()}`;
76
+ }
77
+ case "too_small": {
78
+ const adj = issue.inclusive ? ">=" : ">";
79
+ const sizing = getSizing(issue.origin);
80
+ if (sizing) {
81
+ return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;
82
+ }
83
+ return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} იყოს ${adj}${issue.minimum.toString()}`;
84
+ }
85
+ case "invalid_format": {
86
+ const _issue = issue;
87
+ if (_issue.format === "starts_with") {
88
+ return `არასწორი ველი: უნდა იწყებოდეს "${_issue.prefix}"-ით`;
89
+ }
90
+ if (_issue.format === "ends_with")
91
+ return `არასწორი ველი: უნდა მთავრდებოდეს "${_issue.suffix}"-ით`;
92
+ if (_issue.format === "includes")
93
+ return `არასწორი ველი: უნდა შეიცავდეს "${_issue.includes}"-ს`;
94
+ if (_issue.format === "regex")
95
+ return `არასწორი ველი: უნდა შეესაბამებოდეს შაბლონს ${_issue.pattern}`;
96
+ return `არასწორი ${FormatDictionary[_issue.format] ?? issue.format}`;
97
+ }
98
+ case "not_multiple_of":
99
+ return `არასწორი რიცხვი: უნდა იყოს ${issue.divisor}-ის ჯერადი`;
100
+ case "unrecognized_keys":
101
+ return `უცნობი გასაღებ${issue.keys.length > 1 ? "ები" : "ი"}: ${util.joinValues(issue.keys, ", ")}`;
102
+ case "invalid_key":
103
+ return `არასწორი გასაღები ${issue.origin}-ში`;
104
+ case "invalid_union":
105
+ return "არასწორი შეყვანა";
106
+ case "invalid_element":
107
+ return `არასწორი მნიშვნელობა ${issue.origin}-ში`;
108
+ default:
109
+ return `არასწორი შეყვანა`;
110
+ }
111
+ };
112
+ };
113
+ export default function () {
114
+ return {
115
+ localeError: error(),
116
+ };
117
+ }
@@ -0,0 +1,5 @@
1
+ import km from "./km.js";
2
+ /** @deprecated Use `km` instead. */
3
+ export default function () {
4
+ return km();
5
+ }
@@ -0,0 +1,115 @@
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: "អារេ (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
+ }
88
+ if (_issue.format === "ends_with")
89
+ return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវបញ្ចប់ដោយ "${_issue.suffix}"`;
90
+ if (_issue.format === "includes")
91
+ return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវមាន "${_issue.includes}"`;
92
+ if (_issue.format === "regex")
93
+ return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវតែផ្គូផ្គងនឹងទម្រង់ដែលបានកំណត់ ${_issue.pattern}`;
94
+ return `មិនត្រឹមត្រូវ៖ ${FormatDictionary[_issue.format] ?? issue.format}`;
95
+ }
96
+ case "not_multiple_of":
97
+ return `លេខមិនត្រឹមត្រូវ៖ ត្រូវតែជាពហុគុណនៃ ${issue.divisor}`;
98
+ case "unrecognized_keys":
99
+ return `រកឃើញសោមិនស្គាល់៖ ${util.joinValues(issue.keys, ", ")}`;
100
+ case "invalid_key":
101
+ return `សោមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;
102
+ case "invalid_union":
103
+ return `ទិន្នន័យមិនត្រឹមត្រូវ`;
104
+ case "invalid_element":
105
+ return `ទិន្នន័យមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;
106
+ default:
107
+ return `ទិន្នន័យមិនត្រឹមត្រូវ`;
108
+ }
109
+ };
110
+ };
111
+ export default function () {
112
+ return {
113
+ localeError: error(),
114
+ };
115
+ }
@@ -0,0 +1,116 @@
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: "entries", verb: "ಹೊಂದಲು" },
9
+ };
10
+ function getSizing(origin) {
11
+ return Sizable[origin] ?? null;
12
+ }
13
+ const FormatDictionary = {
14
+ regex: "ಇನ್ಪುಟ್",
15
+ email: "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-encodedಸ್ಟ್ರಿಂಗ್",
38
+ base64url: "base64url-encodedಸ್ಟ್ರಿಂಗ್",
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
+ // type names: missing keys = do not translate (use raw value via ?? fallback)
48
+ const TypeDictionary = {
49
+ // Compatibility: "nan" -> "NaN" for display
50
+ nan: "NaN",
51
+ // All other type names omitted - they fall back to raw values via ?? operator
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
+ 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 ?? "value"} ಹೊಂದಲು ${adj}${issue.maximum.toString()} ${sizing.unit ?? "ಅಂಶಗಳು"}`;
70
+ return `ತುಂಬಾ ದೊಡ್ಡದು: ನಿರೀಕ್ಷಿಸಲಾಗಿದೆ ${issue.origin ?? "value"} ಎಂದು ${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 ? "s" : ""}: ${util.joinValues(issue.keys, ", ")}`;
97
+ case "invalid_key":
98
+ return `ಅಮಾನ್ಯವಾದ ಕೀ ಇನ್ ${issue.origin}`;
99
+ case "invalid_union":
100
+ if (issue.options && Array.isArray(issue.options) && issue.options.length > 0) {
101
+ const opts = issue.options.map((o) => `'${o}'`).join(" | ");
102
+ return `ಅಮಾನ್ಯ ತಾರತಮ್ಯ ಮೌಲ್ಯ. ನಿರೀಕ್ಷಿಸಲಾಗಿದೆ ${opts}`;
103
+ }
104
+ return "ಅಮಾನ್ಯ ಇನ್‌ಪುಟ್";
105
+ case "invalid_element":
106
+ return `ರಲ್ಲಿ ಅಮಾನ್ಯ ಮೌಲ್ಯ ${issue.origin}`;
107
+ default:
108
+ return `ಅಮಾನ್ಯ ಇನ್‌ಪುಟ್`;
109
+ }
110
+ };
111
+ };
112
+ export default function () {
113
+ return {
114
+ localeError: error(),
115
+ };
116
+ }
@@ -0,0 +1,116 @@
1
+ import * as util from "../core/util.js";
2
+ const error = () => {
3
+ const Sizable = {
4
+ string: { unit: "문자", verb: "to have" },
5
+ file: { unit: "바이트", verb: "to have" },
6
+ array: { unit: "개", verb: "to have" },
7
+ set: { unit: "개", verb: "to have" },
8
+ map: { unit: "개", verb: "to have" },
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
+ };
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 suffix = adj === "미만" ? "이어야 합니다" : "여야 합니다";
68
+ const sizing = getSizing(issue.origin);
69
+ const unit = sizing?.unit ?? "요소";
70
+ if (sizing)
71
+ return `${issue.origin ?? "값"}이 너무 큽니다: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;
72
+ return `${issue.origin ?? "값"}이 너무 큽니다: ${issue.maximum.toString()} ${adj}${suffix}`;
73
+ }
74
+ case "too_small": {
75
+ const adj = issue.inclusive ? "이상" : "초과";
76
+ const suffix = adj === "이상" ? "이어야 합니다" : "여야 합니다";
77
+ const sizing = getSizing(issue.origin);
78
+ const unit = sizing?.unit ?? "요소";
79
+ if (sizing) {
80
+ return `${issue.origin ?? "값"}이 너무 작습니다: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;
81
+ }
82
+ return `${issue.origin ?? "값"}이 너무 작습니다: ${issue.minimum.toString()} ${adj}${suffix}`;
83
+ }
84
+ case "invalid_format": {
85
+ const _issue = issue;
86
+ if (_issue.format === "starts_with") {
87
+ return `잘못된 문자열: "${_issue.prefix}"(으)로 시작해야 합니다`;
88
+ }
89
+ if (_issue.format === "ends_with")
90
+ return `잘못된 문자열: "${_issue.suffix}"(으)로 끝나야 합니다`;
91
+ if (_issue.format === "includes")
92
+ return `잘못된 문자열: "${_issue.includes}"을(를) 포함해야 합니다`;
93
+ if (_issue.format === "regex")
94
+ return `잘못된 문자열: 정규식 ${_issue.pattern} 패턴과 일치해야 합니다`;
95
+ return `잘못된 ${FormatDictionary[_issue.format] ?? issue.format}`;
96
+ }
97
+ case "not_multiple_of":
98
+ return `잘못된 숫자: ${issue.divisor}의 배수여야 합니다`;
99
+ case "unrecognized_keys":
100
+ return `인식할 수 없는 키: ${util.joinValues(issue.keys, ", ")}`;
101
+ case "invalid_key":
102
+ return `잘못된 키: ${issue.origin}`;
103
+ case "invalid_union":
104
+ return `잘못된 입력`;
105
+ case "invalid_element":
106
+ return `잘못된 값: ${issue.origin}`;
107
+ default:
108
+ return `잘못된 입력`;
109
+ }
110
+ };
111
+ };
112
+ export default function () {
113
+ return {
114
+ localeError: error(),
115
+ };
116
+ }