@evolu/common 8.2.0 → 8.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/dist/src/Function.d.ts +1 -0
  2. package/dist/src/Function.d.ts.map +1 -1
  3. package/dist/src/Http.d.ts +9 -0
  4. package/dist/src/Http.d.ts.map +1 -1
  5. package/dist/src/Object.d.ts +1 -0
  6. package/dist/src/Object.d.ts.map +1 -1
  7. package/dist/src/RefCount.d.ts +1 -0
  8. package/dist/src/RefCount.d.ts.map +1 -1
  9. package/dist/src/Relation.d.ts +2 -0
  10. package/dist/src/Relation.d.ts.map +1 -1
  11. package/dist/src/Resource.d.ts +1 -0
  12. package/dist/src/Resource.d.ts.map +1 -1
  13. package/dist/src/Result.d.ts +383 -548
  14. package/dist/src/Result.d.ts.map +1 -1
  15. package/dist/src/Result.js +296 -46
  16. package/dist/src/StackTrace.d.ts +1 -0
  17. package/dist/src/StackTrace.d.ts.map +1 -1
  18. package/dist/src/Task.d.ts +985 -1069
  19. package/dist/src/Task.d.ts.map +1 -1
  20. package/dist/src/Task.js +1007 -156
  21. package/dist/src/Time.d.ts +1 -0
  22. package/dist/src/Time.d.ts.map +1 -1
  23. package/dist/src/Type.d.ts +1322 -793
  24. package/dist/src/Type.d.ts.map +1 -1
  25. package/dist/src/Type.js +1192 -244
  26. package/dist/src/intl/_en.d.ts +126 -0
  27. package/dist/src/intl/_en.d.ts.map +1 -0
  28. package/dist/src/intl/_en.js +267 -0
  29. package/dist/src/intl/ar.d.ts +117 -0
  30. package/dist/src/intl/ar.d.ts.map +1 -0
  31. package/dist/src/intl/ar.js +245 -0
  32. package/dist/src/intl/bn.d.ts +117 -0
  33. package/dist/src/intl/bn.d.ts.map +1 -0
  34. package/dist/src/intl/bn.js +258 -0
  35. package/dist/src/intl/ca.d.ts +117 -0
  36. package/dist/src/intl/ca.d.ts.map +1 -0
  37. package/dist/src/intl/ca.js +258 -0
  38. package/dist/src/intl/cs.d.ts +20 -7
  39. package/dist/src/intl/cs.d.ts.map +1 -1
  40. package/dist/src/intl/cs.js +54 -27
  41. package/dist/src/intl/da.d.ts +117 -0
  42. package/dist/src/intl/da.d.ts.map +1 -0
  43. package/dist/src/intl/da.js +258 -0
  44. package/dist/src/intl/de.d.ts +117 -0
  45. package/dist/src/intl/de.d.ts.map +1 -0
  46. package/dist/src/intl/de.js +258 -0
  47. package/dist/src/intl/el.d.ts +117 -0
  48. package/dist/src/intl/el.d.ts.map +1 -0
  49. package/dist/src/intl/el.js +265 -0
  50. package/dist/src/intl/es.d.ts +117 -0
  51. package/dist/src/intl/es.d.ts.map +1 -0
  52. package/dist/src/intl/es.js +258 -0
  53. package/dist/src/intl/fa.d.ts +117 -0
  54. package/dist/src/intl/fa.d.ts.map +1 -0
  55. package/dist/src/intl/fa.js +258 -0
  56. package/dist/src/intl/fi.d.ts +117 -0
  57. package/dist/src/intl/fi.d.ts.map +1 -0
  58. package/dist/src/intl/fi.js +258 -0
  59. package/dist/src/intl/fil.d.ts +117 -0
  60. package/dist/src/intl/fil.d.ts.map +1 -0
  61. package/dist/src/intl/fil.js +258 -0
  62. package/dist/src/intl/fr.d.ts +117 -0
  63. package/dist/src/intl/fr.d.ts.map +1 -0
  64. package/dist/src/intl/fr.js +258 -0
  65. package/dist/src/intl/he.d.ts +117 -0
  66. package/dist/src/intl/he.d.ts.map +1 -0
  67. package/dist/src/intl/he.js +258 -0
  68. package/dist/src/intl/hi.d.ts +117 -0
  69. package/dist/src/intl/hi.d.ts.map +1 -0
  70. package/dist/src/intl/hi.js +258 -0
  71. package/dist/src/intl/hr.d.ts +117 -0
  72. package/dist/src/intl/hr.d.ts.map +1 -0
  73. package/dist/src/intl/hr.js +265 -0
  74. package/dist/src/intl/hu.d.ts +63 -0
  75. package/dist/src/intl/hu.d.ts.map +1 -0
  76. package/dist/src/intl/hu.js +204 -0
  77. package/dist/src/intl/id.d.ts +117 -0
  78. package/dist/src/intl/id.d.ts.map +1 -0
  79. package/dist/src/intl/id.js +258 -0
  80. package/dist/src/intl/index.d.ts +42 -0
  81. package/dist/src/intl/index.d.ts.map +1 -1
  82. package/dist/src/intl/index.js +42 -0
  83. package/dist/src/intl/it.d.ts +117 -0
  84. package/dist/src/intl/it.d.ts.map +1 -0
  85. package/dist/src/intl/it.js +258 -0
  86. package/dist/src/intl/ja.d.ts +117 -0
  87. package/dist/src/intl/ja.d.ts.map +1 -0
  88. package/dist/src/intl/ja.js +258 -0
  89. package/dist/src/intl/ko.d.ts +117 -0
  90. package/dist/src/intl/ko.d.ts.map +1 -0
  91. package/dist/src/intl/ko.js +258 -0
  92. package/dist/src/intl/ml.d.ts +117 -0
  93. package/dist/src/intl/ml.d.ts.map +1 -0
  94. package/dist/src/intl/ml.js +258 -0
  95. package/dist/src/intl/mr.d.ts +117 -0
  96. package/dist/src/intl/mr.d.ts.map +1 -0
  97. package/dist/src/intl/mr.js +258 -0
  98. package/dist/src/intl/ms.d.ts +117 -0
  99. package/dist/src/intl/ms.d.ts.map +1 -0
  100. package/dist/src/intl/ms.js +245 -0
  101. package/dist/src/intl/nb.d.ts +63 -0
  102. package/dist/src/intl/nb.d.ts.map +1 -0
  103. package/dist/src/intl/nb.js +191 -0
  104. package/dist/src/intl/nl.d.ts +117 -0
  105. package/dist/src/intl/nl.d.ts.map +1 -0
  106. package/dist/src/intl/nl.js +258 -0
  107. package/dist/src/intl/pa.d.ts +117 -0
  108. package/dist/src/intl/pa.d.ts.map +1 -0
  109. package/dist/src/intl/pa.js +258 -0
  110. package/dist/src/intl/pl.d.ts +117 -0
  111. package/dist/src/intl/pl.d.ts.map +1 -0
  112. package/dist/src/intl/pl.js +242 -0
  113. package/dist/src/intl/pt-BR.d.ts +117 -0
  114. package/dist/src/intl/pt-BR.d.ts.map +1 -0
  115. package/dist/src/intl/pt-BR.js +258 -0
  116. package/dist/src/intl/pt.d.ts +117 -0
  117. package/dist/src/intl/pt.d.ts.map +1 -0
  118. package/dist/src/intl/pt.js +246 -0
  119. package/dist/src/intl/ro.d.ts +117 -0
  120. package/dist/src/intl/ro.d.ts.map +1 -0
  121. package/dist/src/intl/ro.js +258 -0
  122. package/dist/src/intl/sk.d.ts +117 -0
  123. package/dist/src/intl/sk.d.ts.map +1 -0
  124. package/dist/src/intl/sk.js +244 -0
  125. package/dist/src/intl/sl.d.ts +117 -0
  126. package/dist/src/intl/sl.d.ts.map +1 -0
  127. package/dist/src/intl/sl.js +258 -0
  128. package/dist/src/intl/sv.d.ts +117 -0
  129. package/dist/src/intl/sv.d.ts.map +1 -0
  130. package/dist/src/intl/sv.js +258 -0
  131. package/dist/src/intl/sw.d.ts +63 -0
  132. package/dist/src/intl/sw.d.ts.map +1 -0
  133. package/dist/src/intl/sw.js +191 -0
  134. package/dist/src/intl/ta.d.ts +117 -0
  135. package/dist/src/intl/ta.d.ts.map +1 -0
  136. package/dist/src/intl/ta.js +258 -0
  137. package/dist/src/intl/te.d.ts +117 -0
  138. package/dist/src/intl/te.d.ts.map +1 -0
  139. package/dist/src/intl/te.js +258 -0
  140. package/dist/src/intl/th.d.ts +117 -0
  141. package/dist/src/intl/th.d.ts.map +1 -0
  142. package/dist/src/intl/th.js +258 -0
  143. package/dist/src/intl/tr.d.ts +117 -0
  144. package/dist/src/intl/tr.d.ts.map +1 -0
  145. package/dist/src/intl/tr.js +255 -0
  146. package/dist/src/intl/uk.d.ts +117 -0
  147. package/dist/src/intl/uk.d.ts.map +1 -0
  148. package/dist/src/intl/uk.js +258 -0
  149. package/dist/src/intl/ur.d.ts +117 -0
  150. package/dist/src/intl/ur.d.ts.map +1 -0
  151. package/dist/src/intl/ur.js +245 -0
  152. package/dist/src/intl/vi.d.ts +117 -0
  153. package/dist/src/intl/vi.d.ts.map +1 -0
  154. package/dist/src/intl/vi.js +255 -0
  155. package/dist/src/intl/zh-CN.d.ts +117 -0
  156. package/dist/src/intl/zh-CN.d.ts.map +1 -0
  157. package/dist/src/intl/zh-CN.js +258 -0
  158. package/dist/src/intl/zh-TW.d.ts +117 -0
  159. package/dist/src/intl/zh-TW.d.ts.map +1 -0
  160. package/dist/src/intl/zh-TW.js +258 -0
  161. package/dist/src/local-first/Owner.d.ts +156 -62
  162. package/dist/src/local-first/Owner.d.ts.map +1 -1
  163. package/dist/src/local-first/Owner.js +119 -20
  164. package/package.json +1 -1
  165. package/src/Function.ts +2 -0
  166. package/src/Http.ts +9 -0
  167. package/src/Object.ts +2 -0
  168. package/src/RefCount.ts +2 -0
  169. package/src/Relation.ts +4 -0
  170. package/src/Resource.ts +2 -0
  171. package/src/Result.ts +397 -560
  172. package/src/StackTrace.ts +2 -0
  173. package/src/Task.ts +1143 -1222
  174. package/src/Time.ts +2 -0
  175. package/src/Type.ts +1759 -794
  176. package/src/intl/_en.ts +497 -0
  177. package/src/intl/ar.ts +417 -0
  178. package/src/intl/bn.ts +486 -0
  179. package/src/intl/ca.ts +488 -0
  180. package/src/intl/cs.ts +95 -31
  181. package/src/intl/da.ts +488 -0
  182. package/src/intl/de.ts +488 -0
  183. package/src/intl/el.ts +494 -0
  184. package/src/intl/es.ts +488 -0
  185. package/src/intl/fa.ts +487 -0
  186. package/src/intl/fi.ts +487 -0
  187. package/src/intl/fil.ts +488 -0
  188. package/src/intl/fr.ts +488 -0
  189. package/src/intl/he.ts +486 -0
  190. package/src/intl/hi.ts +487 -0
  191. package/src/intl/hr.ts +494 -0
  192. package/src/intl/hu.ts +387 -0
  193. package/src/intl/id.ts +487 -0
  194. package/src/intl/index.ts +42 -0
  195. package/src/intl/it.ts +488 -0
  196. package/src/intl/ja.ts +488 -0
  197. package/src/intl/ko.ts +487 -0
  198. package/src/intl/ml.ts +487 -0
  199. package/src/intl/mr.ts +487 -0
  200. package/src/intl/ms.ts +410 -0
  201. package/src/intl/nb.ts +364 -0
  202. package/src/intl/nl.ts +488 -0
  203. package/src/intl/pa.ts +487 -0
  204. package/src/intl/pl.ts +450 -0
  205. package/src/intl/pt-BR.ts +487 -0
  206. package/src/intl/pt.ts +424 -0
  207. package/src/intl/ro.ts +488 -0
  208. package/src/intl/sk.ts +412 -0
  209. package/src/intl/sl.ts +487 -0
  210. package/src/intl/sv.ts +488 -0
  211. package/src/intl/sw.ts +324 -0
  212. package/src/intl/ta.ts +487 -0
  213. package/src/intl/te.ts +487 -0
  214. package/src/intl/th.ts +484 -0
  215. package/src/intl/tr.ts +487 -0
  216. package/src/intl/uk.ts +488 -0
  217. package/src/intl/ur.ts +410 -0
  218. package/src/intl/vi.ts +435 -0
  219. package/src/intl/zh-CN.ts +482 -0
  220. package/src/intl/zh-TW.ts +482 -0
  221. package/src/local-first/Owner.ts +156 -62
package/src/intl/ja.ts ADDED
@@ -0,0 +1,488 @@
1
+ /**
2
+ * Evolu Type エラーの日本語フォーマッター。
3
+ *
4
+ * @module
5
+ */
6
+
7
+ import { assertNonNullable } from "../Assert.ts";
8
+ import { safelyStringifyUnknownValue } from "../String.ts";
9
+ import type {
10
+ ArrayError,
11
+ Base64UrlError,
12
+ BetweenError,
13
+ CapitalizedError,
14
+ DateIsoError,
15
+ DateIsoFromDateError,
16
+ DecimalStringError,
17
+ DiscriminatedUnionError,
18
+ EvoluTypeError,
19
+ FiniteError,
20
+ GreaterThanError,
21
+ GreaterThanOrEqualToError,
22
+ InstanceOfError,
23
+ Int64Error,
24
+ Int64StringError,
25
+ IntError,
26
+ IdError,
27
+ JsonError,
28
+ JsonValueError,
29
+ LengthError,
30
+ LessThanError,
31
+ LessThanOrEqualToError,
32
+ LiteralError,
33
+ MaxLengthError,
34
+ MinLengthError,
35
+ MnemonicError,
36
+ MultipleOfError,
37
+ NegativeDecimalStringError,
38
+ NegativeError,
39
+ NameError,
40
+ NeverError,
41
+ NonNaNError,
42
+ NonNegativeDecimalStringError,
43
+ NonNegativeError,
44
+ NonPositiveDecimalStringError,
45
+ NonPositiveError,
46
+ ObjectError,
47
+ ObjectNotObjectError,
48
+ ObjectPropertyAccessError,
49
+ ObjectTagError,
50
+ ObjectUnexpectedPrototypeError,
51
+ PositiveDecimalStringError,
52
+ PositiveError,
53
+ RecordError,
54
+ RegexError,
55
+ SetError,
56
+ TableIdError,
57
+ TemplateLiteralError,
58
+ TrimmedError,
59
+ TupleElementsError,
60
+ TupleError,
61
+ TypeError,
62
+ TypeErrorFormatter,
63
+ TypeOfError,
64
+ UInt64Error,
65
+ UnionError,
66
+ } from "../Type.ts";
67
+
68
+ const formatTypeOfError = (
69
+ error: TypeOfError<
70
+ "String" | "Number" | "BigInt" | "Boolean" | "Symbol" | "Function"
71
+ >,
72
+ ): string => {
73
+ const typeOf = error.expected.toLowerCase();
74
+
75
+ return `値 ${safelyStringifyUnknownValue(error.value)} は ${typeOf} 型ではありません。`;
76
+ };
77
+
78
+ const formatPlainObjectRootError = (
79
+ reason:
80
+ ObjectNotObjectError["reason"] | ObjectUnexpectedPrototypeError["reason"],
81
+ ): string =>
82
+ reason.kind === "NotObject"
83
+ ? `値 ${safelyStringifyUnknownValue(reason.value)} はオブジェクトではありません。`
84
+ : "値はオブジェクトですが、Object Output はプレーンオブジェクトであるか、null プロトタイプを持つ必要があります。";
85
+
86
+ /** NeverError を日本語でフォーマットします。 */
87
+ export const formatNeverError: TypeErrorFormatter<NeverError> = (error) =>
88
+ `値 ${safelyStringifyUnknownValue(error.value)} は型 Never では無効です。`;
89
+
90
+ /** String TypeOfError を日本語でフォーマットします。 */
91
+ export const formatStringError: TypeErrorFormatter<TypeOfError<"String">> =
92
+ formatTypeOfError;
93
+
94
+ /** TemplateLiteralError を日本語でフォーマットします。 */
95
+ export const formatTemplateLiteralError: TypeErrorFormatter<
96
+ TemplateLiteralError
97
+ > = (error) =>
98
+ `値 ${safelyStringifyUnknownValue(error.value)} はテンプレートリテラルに一致しません。`;
99
+
100
+ /** Number TypeOfError を日本語でフォーマットします。 */
101
+ export const formatNumberError: TypeErrorFormatter<TypeOfError<"Number">> =
102
+ formatTypeOfError;
103
+
104
+ /** BigInt TypeOfError を日本語でフォーマットします。 */
105
+ export const formatBigIntError: TypeErrorFormatter<TypeOfError<"BigInt">> =
106
+ formatTypeOfError;
107
+
108
+ /** Boolean TypeOfError を日本語でフォーマットします。 */
109
+ export const formatBooleanError: TypeErrorFormatter<TypeOfError<"Boolean">> =
110
+ formatTypeOfError;
111
+
112
+ /** Symbol TypeOfError を日本語でフォーマットします。 */
113
+ export const formatSymbolError: TypeErrorFormatter<TypeOfError<"Symbol">> =
114
+ formatTypeOfError;
115
+
116
+ /** Function TypeOfError を日本語でフォーマットします。 */
117
+ export const formatFunctionError: TypeErrorFormatter<TypeOfError<"Function">> =
118
+ formatTypeOfError;
119
+
120
+ /** EvoluTypeError を日本語でフォーマットします。 */
121
+ export const formatEvoluTypeError: TypeErrorFormatter<EvoluTypeError> = (
122
+ error,
123
+ ) =>
124
+ `値 ${safelyStringifyUnknownValue(error.value)} は Evolu Type ではありません。`;
125
+
126
+ /** ObjectTagError を日本語でフォーマットします。 */
127
+ export const formatObjectTagError: TypeErrorFormatter<ObjectTagError> = (
128
+ error,
129
+ ) =>
130
+ `値 ${safelyStringifyUnknownValue(error.value)} には、期待されるオブジェクトタグ ${safelyStringifyUnknownValue(error.expected)} がありません。`;
131
+
132
+ /** InstanceOfError を日本語でフォーマットします。 */
133
+ export const formatInstanceOfError: TypeErrorFormatter<InstanceOfError> = (
134
+ error,
135
+ ) =>
136
+ `値 ${safelyStringifyUnknownValue(error.value)} は ${error.constructorName} のインスタンスではありません。`;
137
+
138
+ /** LiteralError を日本語でフォーマットします。 */
139
+ export const formatLiteralError: TypeErrorFormatter<LiteralError> = (error) =>
140
+ `値 ${safelyStringifyUnknownValue(error.value)} は、期待されるリテラル ${globalThis.String(error.expected)} と厳密に等しくありません。`;
141
+
142
+ /** UnionError を日本語でフォーマットします。 */
143
+ export const formatUnionError: TypeErrorFormatter<UnionError> = () =>
144
+ "値はいずれの許可されたバリアントにも一致しません。";
145
+
146
+ /** DateIsoError を日本語でフォーマットします。 */
147
+ export const formatDateIsoError: TypeErrorFormatter<DateIsoError> = (error) =>
148
+ `値 ${safelyStringifyUnknownValue(error.value)} は正規形式の ISO 日時文字列ではありません。`;
149
+
150
+ /** DateIsoFromDateError を日本語でフォーマットします。 */
151
+ export const formatDateIsoFromDateError: TypeErrorFormatter<
152
+ DateIsoFromDateError
153
+ > = () => "Date を DateIso として表現できません。";
154
+
155
+ /** DecimalStringError を日本語でフォーマットします。 */
156
+ export const formatDecimalStringError: TypeErrorFormatter<
157
+ DecimalStringError
158
+ > = (error) =>
159
+ `値 ${safelyStringifyUnknownValue(error.value)} は正規形式の10進数文字列である必要があります。`;
160
+
161
+ /** Int64Error を日本語でフォーマットします。 */
162
+ export const formatInt64Error: TypeErrorFormatter<Int64Error> = (error) =>
163
+ `値 ${safelyStringifyUnknownValue(error.value)} は有効な符号付き64ビット整数 (Int64) ではありません。`;
164
+
165
+ /** UInt64Error を日本語でフォーマットします。 */
166
+ export const formatUInt64Error: TypeErrorFormatter<UInt64Error> = (error) =>
167
+ `値 ${safelyStringifyUnknownValue(error.value)} は有効な符号なし64ビット整数 (UInt64) ではありません。`;
168
+
169
+ /** Int64StringError を日本語でフォーマットします。 */
170
+ export const formatInt64StringError: TypeErrorFormatter<Int64StringError> = (
171
+ error,
172
+ ) =>
173
+ `値 ${safelyStringifyUnknownValue(error.value)} は有効な Int64 文字列ではありません。`;
174
+
175
+ /** CapitalizedError を日本語でフォーマットします。 */
176
+ export const formatCapitalizedError: TypeErrorFormatter<CapitalizedError> = (
177
+ error,
178
+ ) =>
179
+ `値 ${safelyStringifyUnknownValue(error.value)} は先頭が大文字である必要があります。`;
180
+
181
+ /** TrimmedError を日本語でフォーマットします。 */
182
+ export const formatTrimmedError: TypeErrorFormatter<TrimmedError> = (error) =>
183
+ `値 ${safelyStringifyUnknownValue(error.value)} は前後の空白が除去されている必要があります。`;
184
+
185
+ /** MinLengthError を日本語でフォーマットします。 */
186
+ export const formatMinLengthError: TypeErrorFormatter<MinLengthError> = (
187
+ error,
188
+ ) =>
189
+ `値 ${safelyStringifyUnknownValue(error.value)} は最小長 ${error.min} を満たしていません。`;
190
+
191
+ /** MaxLengthError を日本語でフォーマットします。 */
192
+ export const formatMaxLengthError: TypeErrorFormatter<MaxLengthError> = (
193
+ error,
194
+ ) =>
195
+ `値 ${safelyStringifyUnknownValue(error.value)} は最大長 ${error.max} を超えています。`;
196
+
197
+ /** LengthError を日本語でフォーマットします。 */
198
+ export const formatLengthError: TypeErrorFormatter<LengthError> = (error) =>
199
+ `値 ${safelyStringifyUnknownValue(error.value)} の長さは必要な ${error.exact} ではありません。`;
200
+
201
+ /** RegexError を日本語でフォーマットします。 */
202
+ export const formatRegexError: TypeErrorFormatter<RegexError> = (error) =>
203
+ `値 ${safelyStringifyUnknownValue(error.value)} は /${error.source}/${error.flags} に一致しません。`;
204
+
205
+ /** Base64UrlError を日本語でフォーマットします。 */
206
+ export const formatBase64UrlError: TypeErrorFormatter<Base64UrlError> = (
207
+ error,
208
+ ) =>
209
+ `値 ${safelyStringifyUnknownValue(error.value)} は有効な Base64Url 文字列ではありません。`;
210
+
211
+ /** NameError を日本語でフォーマットします。 */
212
+ export const formatNameError: TypeErrorFormatter<NameError> = (error) =>
213
+ `値 ${safelyStringifyUnknownValue(error.value)} は有効な Name ではありません。`;
214
+
215
+ /** MnemonicError を日本語でフォーマットします。 */
216
+ export const formatMnemonicError: TypeErrorFormatter<MnemonicError> = (error) =>
217
+ `値 ${safelyStringifyUnknownValue(error.value)} は有効な英語の BIP39 ニーモニックではありません。`;
218
+
219
+ /** IdError を日本語でフォーマットします。 */
220
+ export const formatIdError: TypeErrorFormatter<IdError> = (error) =>
221
+ `値 ${safelyStringifyUnknownValue(error.value)} は有効な Id ではありません。`;
222
+
223
+ /** TableIdError を日本語でフォーマットします。 */
224
+ export const formatTableIdError: TypeErrorFormatter<TableIdError> = (error) =>
225
+ `値 ${safelyStringifyUnknownValue(error.value)} はテーブル ${error.table} の有効な Id ではありません。`;
226
+
227
+ /** NonNegativeError を日本語でフォーマットします。 */
228
+ export const formatNonNegativeError: TypeErrorFormatter<NonNegativeError> = (
229
+ error,
230
+ ) =>
231
+ `値 ${safelyStringifyUnknownValue(error.value)} は 0 以上 (>= 0) である必要があります。`;
232
+
233
+ /** NonNegativeDecimalStringError を日本語でフォーマットします。 */
234
+ export const formatNonNegativeDecimalStringError: TypeErrorFormatter<
235
+ NonNegativeDecimalStringError
236
+ > = (error) =>
237
+ `値 ${safelyStringifyUnknownValue(error.value)} は 0 以上の10進数文字列である必要があります。`;
238
+
239
+ /** PositiveError を日本語でフォーマットします。 */
240
+ export const formatPositiveError: TypeErrorFormatter<PositiveError> = (error) =>
241
+ `値 ${safelyStringifyUnknownValue(error.value)} は正 (> 0) である必要があります。`;
242
+
243
+ /** PositiveDecimalStringError を日本語でフォーマットします。 */
244
+ export const formatPositiveDecimalStringError: TypeErrorFormatter<
245
+ PositiveDecimalStringError
246
+ > = (error) =>
247
+ `値 ${safelyStringifyUnknownValue(error.value)} は正の10進数文字列である必要があります。`;
248
+
249
+ /** NonPositiveError を日本語でフォーマットします。 */
250
+ export const formatNonPositiveError: TypeErrorFormatter<NonPositiveError> = (
251
+ error,
252
+ ) =>
253
+ `値 ${safelyStringifyUnknownValue(error.value)} は 0 以下 (<= 0) である必要があります。`;
254
+
255
+ /** NonPositiveDecimalStringError を日本語でフォーマットします。 */
256
+ export const formatNonPositiveDecimalStringError: TypeErrorFormatter<
257
+ NonPositiveDecimalStringError
258
+ > = (error) =>
259
+ `値 ${safelyStringifyUnknownValue(error.value)} は 0 以下の10進数文字列である必要があります。`;
260
+
261
+ /** NegativeError を日本語でフォーマットします。 */
262
+ export const formatNegativeError: TypeErrorFormatter<NegativeError> = (error) =>
263
+ `値 ${safelyStringifyUnknownValue(error.value)} は負 (< 0) である必要があります。`;
264
+
265
+ /** NegativeDecimalStringError を日本語でフォーマットします。 */
266
+ export const formatNegativeDecimalStringError: TypeErrorFormatter<
267
+ NegativeDecimalStringError
268
+ > = (error) =>
269
+ `値 ${safelyStringifyUnknownValue(error.value)} は負の10進数文字列である必要があります。`;
270
+
271
+ /** IntError を日本語でフォーマットします。 */
272
+ export const formatIntError: TypeErrorFormatter<IntError> = (error) =>
273
+ `値 ${safelyStringifyUnknownValue(error.value)} は安全な整数である必要があります。`;
274
+
275
+ /** GreaterThanError を日本語でフォーマットします。 */
276
+ export const formatGreaterThanError: TypeErrorFormatter<GreaterThanError> = (
277
+ error,
278
+ ) =>
279
+ `値 ${safelyStringifyUnknownValue(error.value)} は ${error.min} より大きい必要があります。`;
280
+
281
+ /** GreaterThanOrEqualToError を日本語でフォーマットします。 */
282
+ export const formatGreaterThanOrEqualToError: TypeErrorFormatter<
283
+ GreaterThanOrEqualToError
284
+ > = (error) =>
285
+ `値 ${safelyStringifyUnknownValue(error.value)} は ${error.min} 以上である必要があります。`;
286
+
287
+ /** LessThanError を日本語でフォーマットします。 */
288
+ export const formatLessThanError: TypeErrorFormatter<LessThanError> = (error) =>
289
+ `値 ${safelyStringifyUnknownValue(error.value)} は ${error.max} より小さい必要があります。`;
290
+
291
+ /** LessThanOrEqualToError を日本語でフォーマットします。 */
292
+ export const formatLessThanOrEqualToError: TypeErrorFormatter<
293
+ LessThanOrEqualToError
294
+ > = (error) =>
295
+ `値 ${safelyStringifyUnknownValue(error.value)} は ${error.max} 以下である必要があります。`;
296
+
297
+ /** NonNaNError を日本語でフォーマットします。 */
298
+ export const formatNonNaNError: TypeErrorFormatter<NonNaNError> = () =>
299
+ "値は NaN であってはなりません。";
300
+
301
+ /** FiniteError を日本語でフォーマットします。 */
302
+ export const formatFiniteError: TypeErrorFormatter<FiniteError> = (error) =>
303
+ `値 ${safelyStringifyUnknownValue(error.value)} は有限値である必要があります。`;
304
+
305
+ /** MultipleOfError を日本語でフォーマットします。 */
306
+ export const formatMultipleOfError: TypeErrorFormatter<MultipleOfError> = (
307
+ error,
308
+ ) =>
309
+ `値 ${safelyStringifyUnknownValue(error.value)} は ${error.divisor} の倍数である必要があります。`;
310
+
311
+ /** BetweenError を日本語でフォーマットします。 */
312
+ export const formatBetweenError: TypeErrorFormatter<BetweenError> = (error) =>
313
+ `値 ${safelyStringifyUnknownValue(error.value)} は ${error.min} 以上 ${error.max} 以下である必要があります。`;
314
+
315
+ /** ArrayError を日本語でフォーマットします。 */
316
+ export const formatArrayError: TypeErrorFormatter<ArrayError> = (error) => {
317
+ if (error.reason.kind === "NotArray") {
318
+ return `値 ${safelyStringifyUnknownValue(error.reason.value)} は配列ではありません。`;
319
+ }
320
+ const issue = error.reason.issues[0];
321
+
322
+ switch (issue.kind) {
323
+ case "Hole":
324
+ return `インデックス ${issue.index} の配列要素が欠落しています。`;
325
+ case "Accessor":
326
+ return `インデックス ${issue.index} の配列要素はデータプロパティである必要があります。`;
327
+ case "ExcessProperty":
328
+ return "余分な Array プロパティは許可されていません。削除するか、別の Type を使用してください。";
329
+ case "Element":
330
+ return `インデックス ${issue.index} の配列要素が無効です。`;
331
+ }
332
+ };
333
+
334
+ /** SetError を日本語でフォーマットします。 */
335
+ export const formatSetError: TypeErrorFormatter<SetError> = (error) => {
336
+ if (error.reason.kind === "NotSet") {
337
+ return `値 ${safelyStringifyUnknownValue(error.reason.value)} は Set ではありません。`;
338
+ }
339
+ if (error.reason.kind === "UnexpectedPrototype") {
340
+ return "値は Set のサブクラスのインスタンスですが、Set Output は Set 自体のインスタンスである必要があります。";
341
+ }
342
+
343
+ const issue = error.reason.issues[0];
344
+
345
+ switch (issue.kind) {
346
+ case "ExcessProperty":
347
+ return `余分な Set プロパティ ${safelyStringifyUnknownValue(issue.key)} は許可されていません。`;
348
+ case "Element":
349
+ return `インデックス ${issue.index} の Set 要素が無効です。`;
350
+ }
351
+ };
352
+
353
+ /** TupleError を日本語でフォーマットします。 */
354
+ export const formatTupleError: TypeErrorFormatter<
355
+ TupleError | TupleElementsError<TypeError>
356
+ > = (error) => {
357
+ if (error.reason.kind === "NotArray") {
358
+ return `値 ${safelyStringifyUnknownValue(error.reason.value)} はタプルではありません。`;
359
+ }
360
+ if (error.reason.kind === "InvalidLength") {
361
+ return `Tuple は正確に ${error.reason.expected} 個の要素を含む必要がありますが、値には ${error.reason.actual} 個の要素があります。`;
362
+ }
363
+
364
+ const issue = error.reason.issues[0];
365
+
366
+ switch (issue.kind) {
367
+ case "Hole":
368
+ return `インデックス ${issue.index} の Tuple 要素が欠落しています。`;
369
+ case "Accessor":
370
+ return `インデックス ${issue.index} の Tuple 要素はデータプロパティである必要があります。`;
371
+ case "ExcessProperty":
372
+ return "余分な Tuple プロパティは許可されていません。削除するか、別の Type を使用してください。";
373
+ case "Element":
374
+ return `インデックス ${issue.index} の Tuple 要素が無効です。`;
375
+ }
376
+ };
377
+
378
+ /** RecordError を日本語でフォーマットします。 */
379
+ export const formatRecordError: TypeErrorFormatter<RecordError> = (error) => {
380
+ if (error.reason.kind === "NotRecord") {
381
+ return `値 ${safelyStringifyUnknownValue(error.reason.value)} は Record ではありません。`;
382
+ }
383
+ if (error.reason.kind === "NotPlainRecord") {
384
+ return "値はオブジェクトですが、Record Output はプレーンオブジェクトであるか、null プロトタイプを持つ必要があります。";
385
+ }
386
+
387
+ const issue = error.reason.issues[0];
388
+
389
+ switch (issue.kind) {
390
+ case "Key":
391
+ return `プロパティキー ${safelyStringifyUnknownValue(issue.key)} が無効です。`;
392
+ case "Value":
393
+ return `プロパティ ${safelyStringifyUnknownValue(issue.key)} の値が無効です。`;
394
+ case "Accessor":
395
+ return `Record プロパティ ${safelyStringifyUnknownValue(issue.key)} はデータプロパティである必要があります。`;
396
+ case "NonEnumerable":
397
+ return `Record プロパティ ${safelyStringifyUnknownValue(issue.key)} は列挙可能である必要があります。`;
398
+ case "Collision":
399
+ return `Record キー ${safelyStringifyUnknownValue(issue.previousKey)} と ${safelyStringifyUnknownValue(issue.key)} は、デコードすると同じキー ${safelyStringifyUnknownValue(issue.outputKey)} になります。`;
400
+ }
401
+ };
402
+
403
+ /** ObjectError を日本語でフォーマットします。 */
404
+ export const formatObjectError: TypeErrorFormatter<ObjectError> = (error) => {
405
+ if (error.reason.kind !== "Properties") {
406
+ return formatPlainObjectRootError(error.reason);
407
+ }
408
+
409
+ const key = Reflect.ownKeys(error.reason.errors).at(0);
410
+ assertNonNullable(key);
411
+ const propertyError = error.reason.errors[key];
412
+ assertNonNullable(propertyError);
413
+
414
+ if (propertyError.type === "ObjectPropertyAccess") {
415
+ switch ((propertyError as ObjectPropertyAccessError).reason) {
416
+ case "Accessor":
417
+ return "Object プロパティはデータプロパティである必要があります。アクセサーの値をプレーンデータとして実体化してからこの Type を使用するか、別の Type を使用してください。";
418
+ case "NonEnumerable":
419
+ return "Object プロパティは列挙可能である必要があります。列挙可能にするか、別の Type を使用してください。";
420
+ }
421
+ }
422
+ if (propertyError.type === "ObjectMissingProperty") {
423
+ return `必須プロパティ ${safelyStringifyUnknownValue(key)} がありません。`;
424
+ }
425
+ if (typeof key === "symbol") {
426
+ return "Object プロパティキーは文字列である必要があります。symbol プロパティを削除するか、別の Type を使用してください。";
427
+ }
428
+ if (propertyError.type === "ObjectExcessProperty") {
429
+ return `プロパティ ${safelyStringifyUnknownValue(key)} は許可されていません。削除するか、別の Type を使用してください。`;
430
+ }
431
+ return `プロパティ ${safelyStringifyUnknownValue(key)} が無効です。`;
432
+ };
433
+
434
+ /** DiscriminatedUnionError を日本語でフォーマットします。 */
435
+ export const formatDiscriminatedUnionError: TypeErrorFormatter<
436
+ DiscriminatedUnionError
437
+ > = (error) => {
438
+ switch (error.reason.kind) {
439
+ case "Object":
440
+ return formatPlainObjectRootError(error.reason.error.reason);
441
+ case "PropertyAccess": {
442
+ const property = `判別子プロパティ ${safelyStringifyUnknownValue(error.reason.key)}`;
443
+ if (error.reason.reason === "Accessor") {
444
+ return `${property} はデータプロパティである必要があります。`;
445
+ }
446
+ if (error.reason.reason === "Inherited") {
447
+ return `${property} は自身のプロパティである必要があります。`;
448
+ }
449
+ return `${property} は列挙可能である必要があります。`;
450
+ }
451
+ case "Discriminator":
452
+ return `判別子プロパティ ${safelyStringifyUnknownValue(error.reason.key)} の値 ${safelyStringifyUnknownValue(error.reason.value)} は予期されていません。`;
453
+ case "Member":
454
+ return `選択されたバリアント ${safelyStringifyUnknownValue(error.reason.discriminator)} が無効です。`;
455
+ }
456
+ };
457
+
458
+ /** JsonValueError を日本語でフォーマットします。 */
459
+ export const formatJsonValueError: TypeErrorFormatter<JsonValueError> = (
460
+ error,
461
+ ) => {
462
+ const issue = error.reason.issues[0];
463
+
464
+ switch (issue.kind) {
465
+ case "InvalidType":
466
+ return `値 ${safelyStringifyUnknownValue(issue.value)} は JSON 値ではありません。`;
467
+ case "NonFiniteNumber":
468
+ return "JSON の数値は有限値である必要があります。";
469
+ case "UnexpectedPrototype":
470
+ return "値はオブジェクトですが、JsonValue オブジェクトはプレーンオブジェクトであるか、null プロトタイプを持つ必要があります。";
471
+ case "Accessor":
472
+ return "JSON プロパティはデータプロパティである必要があります。アクセサーの値をプレーンデータとして実体化してからこの Type を使用するか、別の Type を使用してください。";
473
+ case "NonEnumerable":
474
+ return "JSON オブジェクトのプロパティは列挙可能である必要があります。列挙不可のプロパティを削除するか、別の Type を使用してください。";
475
+ case "SymbolProperty":
476
+ return "JSON オブジェクトのプロパティキーは文字列である必要があります。symbol プロパティを削除するか、別の Type を使用してください。";
477
+ case "Hole":
478
+ return "JSON 配列の要素が欠落しています。";
479
+ case "ExcessProperty":
480
+ return "余分な JSON 配列プロパティは許可されていません。削除するか、別の Type を使用してください。";
481
+ case "CircularReference":
482
+ return "JsonValue に循環参照を含んではなりません。";
483
+ }
484
+ };
485
+
486
+ /** JsonError を日本語でフォーマットします。 */
487
+ export const formatJsonError: TypeErrorFormatter<JsonError> = (error) =>
488
+ `値 ${safelyStringifyUnknownValue(error.value)} を JsonValue として解析できません。`;