@evolu/common 8.2.0 → 8.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +1285 -734
  24. package/dist/src/Type.d.ts.map +1 -1
  25. package/dist/src/Type.js +1057 -193
  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 +1598 -712
  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/fa.ts ADDED
@@ -0,0 +1,487 @@
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)} یک object نیست.`
84
+ : "مقدار یک object است، اما خروجی Object باید یک object ساده باشد یا prototype آن null باشد.";
85
+
86
+ /** NeverError را به فارسی قالب‌بندی می‌کند. */
87
+ export const formatNeverError: TypeErrorFormatter<NeverError> = (error) =>
88
+ `مقدار ${safelyStringifyUnknownValue(error.value)} برای Type از نوع 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)} با template literal مطابقت ندارد.`;
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
+ ) => `مقدار ${safelyStringifyUnknownValue(error.value)} یک Evolu Type نیست.`;
124
+
125
+ /** ObjectTagError را به فارسی قالب‌بندی می‌کند. */
126
+ export const formatObjectTagError: TypeErrorFormatter<ObjectTagError> = (
127
+ error,
128
+ ) =>
129
+ `مقدار ${safelyStringifyUnknownValue(error.value)} دارای object tag مورد انتظار ${safelyStringifyUnknownValue(error.expected)} نیست.`;
130
+
131
+ /** InstanceOfError را به فارسی قالب‌بندی می‌کند. */
132
+ export const formatInstanceOfError: TypeErrorFormatter<InstanceOfError> = (
133
+ error,
134
+ ) =>
135
+ `مقدار ${safelyStringifyUnknownValue(error.value)} نمونه‌ای از ${error.constructorName} نیست.`;
136
+
137
+ /** LiteralError را به فارسی قالب‌بندی می‌کند. */
138
+ export const formatLiteralError: TypeErrorFormatter<LiteralError> = (error) =>
139
+ `مقدار ${safelyStringifyUnknownValue(error.value)} دقیقاً با literal مورد انتظار برابر نیست: ${globalThis.String(error.expected)}.`;
140
+
141
+ /** UnionError را به فارسی قالب‌بندی می‌کند. */
142
+ export const formatUnionError: TypeErrorFormatter<UnionError> = () =>
143
+ "مقدار با هیچ‌یک از variantهای مجاز مطابقت ندارد.";
144
+
145
+ /** DateIsoError را به فارسی قالب‌بندی می‌کند. */
146
+ export const formatDateIsoError: TypeErrorFormatter<DateIsoError> = (error) =>
147
+ `مقدار ${safelyStringifyUnknownValue(error.value)} یک رشتهٔ کانونی تاریخ‌وزمان ISO نیست.`;
148
+
149
+ /** DateIsoFromDateError را به فارسی قالب‌بندی می‌کند. */
150
+ export const formatDateIsoFromDateError: TypeErrorFormatter<
151
+ DateIsoFromDateError
152
+ > = () => "Date را نمی‌توان به‌صورت DateIso نمایش داد.";
153
+
154
+ /** DecimalStringError را به فارسی قالب‌بندی می‌کند. */
155
+ export const formatDecimalStringError: TypeErrorFormatter<
156
+ DecimalStringError
157
+ > = (error) =>
158
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید یک رشتهٔ ده‌دهی کانونی باشد.`;
159
+
160
+ /** Int64Error را به فارسی قالب‌بندی می‌کند. */
161
+ export const formatInt64Error: TypeErrorFormatter<Int64Error> = (error) =>
162
+ `مقدار ${safelyStringifyUnknownValue(error.value)} یک عدد صحیح ۶۴ بیتی علامت‌دار معتبر (Int64) نیست.`;
163
+
164
+ /** UInt64Error را به فارسی قالب‌بندی می‌کند. */
165
+ export const formatUInt64Error: TypeErrorFormatter<UInt64Error> = (error) =>
166
+ `مقدار ${safelyStringifyUnknownValue(error.value)} یک عدد صحیح ۶۴ بیتی بدون علامت معتبر (UInt64) نیست.`;
167
+
168
+ /** Int64StringError را به فارسی قالب‌بندی می‌کند. */
169
+ export const formatInt64StringError: TypeErrorFormatter<Int64StringError> = (
170
+ error,
171
+ ) =>
172
+ `مقدار ${safelyStringifyUnknownValue(error.value)} یک رشتهٔ Int64 معتبر نیست.`;
173
+
174
+ /** CapitalizedError را به فارسی قالب‌بندی می‌کند. */
175
+ export const formatCapitalizedError: TypeErrorFormatter<CapitalizedError> = (
176
+ error,
177
+ ) =>
178
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید با حرف بزرگ آغاز شود.`;
179
+
180
+ /** TrimmedError را به فارسی قالب‌بندی می‌کند. */
181
+ export const formatTrimmedError: TypeErrorFormatter<TrimmedError> = (error) =>
182
+ `مقدار ${safelyStringifyUnknownValue(error.value)} نباید در ابتدا یا انتها فاصلهٔ اضافی داشته باشد.`;
183
+
184
+ /** MinLengthError را به فارسی قالب‌بندی می‌کند. */
185
+ export const formatMinLengthError: TypeErrorFormatter<MinLengthError> = (
186
+ error,
187
+ ) =>
188
+ `طول مقدار ${safelyStringifyUnknownValue(error.value)} باید حداقل ${error.min} باشد.`;
189
+
190
+ /** MaxLengthError را به فارسی قالب‌بندی می‌کند. */
191
+ export const formatMaxLengthError: TypeErrorFormatter<MaxLengthError> = (
192
+ error,
193
+ ) =>
194
+ `طول مقدار ${safelyStringifyUnknownValue(error.value)} از حداکثر ${error.max} بیشتر است.`;
195
+
196
+ /** LengthError را به فارسی قالب‌بندی می‌کند. */
197
+ export const formatLengthError: TypeErrorFormatter<LengthError> = (error) =>
198
+ `طول مقدار ${safelyStringifyUnknownValue(error.value)} باید دقیقاً ${error.exact} باشد.`;
199
+
200
+ /** RegexError را به فارسی قالب‌بندی می‌کند. */
201
+ export const formatRegexError: TypeErrorFormatter<RegexError> = (error) =>
202
+ `مقدار ${safelyStringifyUnknownValue(error.value)} با /${error.source}/${error.flags} مطابقت ندارد.`;
203
+
204
+ /** Base64UrlError را به فارسی قالب‌بندی می‌کند. */
205
+ export const formatBase64UrlError: TypeErrorFormatter<Base64UrlError> = (
206
+ error,
207
+ ) =>
208
+ `مقدار ${safelyStringifyUnknownValue(error.value)} یک رشتهٔ Base64Url معتبر نیست.`;
209
+
210
+ /** NameError را به فارسی قالب‌بندی می‌کند. */
211
+ export const formatNameError: TypeErrorFormatter<NameError> = (error) =>
212
+ `مقدار ${safelyStringifyUnknownValue(error.value)} یک Name معتبر نیست.`;
213
+
214
+ /** MnemonicError را به فارسی قالب‌بندی می‌کند. */
215
+ export const formatMnemonicError: TypeErrorFormatter<MnemonicError> = (error) =>
216
+ `مقدار ${safelyStringifyUnknownValue(error.value)} یک عبارت یادسپاری انگلیسی BIP39 معتبر نیست.`;
217
+
218
+ /** IdError را به فارسی قالب‌بندی می‌کند. */
219
+ export const formatIdError: TypeErrorFormatter<IdError> = (error) =>
220
+ `مقدار ${safelyStringifyUnknownValue(error.value)} یک Id معتبر نیست.`;
221
+
222
+ /** TableIdError را به فارسی قالب‌بندی می‌کند. */
223
+ export const formatTableIdError: TypeErrorFormatter<TableIdError> = (error) =>
224
+ `مقدار ${safelyStringifyUnknownValue(error.value)} یک Id معتبر برای جدول ${error.table} نیست.`;
225
+
226
+ /** NonNegativeError را به فارسی قالب‌بندی می‌کند. */
227
+ export const formatNonNegativeError: TypeErrorFormatter<NonNegativeError> = (
228
+ error,
229
+ ) =>
230
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید نامنفی (>= 0) باشد.`;
231
+
232
+ /** NonNegativeDecimalStringError را به فارسی قالب‌بندی می‌کند. */
233
+ export const formatNonNegativeDecimalStringError: TypeErrorFormatter<
234
+ NonNegativeDecimalStringError
235
+ > = (error) =>
236
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید یک رشتهٔ ده‌دهی نامنفی باشد.`;
237
+
238
+ /** PositiveError را به فارسی قالب‌بندی می‌کند. */
239
+ export const formatPositiveError: TypeErrorFormatter<PositiveError> = (error) =>
240
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید مثبت (> 0) باشد.`;
241
+
242
+ /** PositiveDecimalStringError را به فارسی قالب‌بندی می‌کند. */
243
+ export const formatPositiveDecimalStringError: TypeErrorFormatter<
244
+ PositiveDecimalStringError
245
+ > = (error) =>
246
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید یک رشتهٔ ده‌دهی مثبت باشد.`;
247
+
248
+ /** NonPositiveError را به فارسی قالب‌بندی می‌کند. */
249
+ export const formatNonPositiveError: TypeErrorFormatter<NonPositiveError> = (
250
+ error,
251
+ ) =>
252
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید نامثبت (<= 0) باشد.`;
253
+
254
+ /** NonPositiveDecimalStringError را به فارسی قالب‌بندی می‌کند. */
255
+ export const formatNonPositiveDecimalStringError: TypeErrorFormatter<
256
+ NonPositiveDecimalStringError
257
+ > = (error) =>
258
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید یک رشتهٔ ده‌دهی نامثبت باشد.`;
259
+
260
+ /** NegativeError را به فارسی قالب‌بندی می‌کند. */
261
+ export const formatNegativeError: TypeErrorFormatter<NegativeError> = (error) =>
262
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید منفی (< 0) باشد.`;
263
+
264
+ /** NegativeDecimalStringError را به فارسی قالب‌بندی می‌کند. */
265
+ export const formatNegativeDecimalStringError: TypeErrorFormatter<
266
+ NegativeDecimalStringError
267
+ > = (error) =>
268
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید یک رشتهٔ ده‌دهی منفی باشد.`;
269
+
270
+ /** IntError را به فارسی قالب‌بندی می‌کند. */
271
+ export const formatIntError: TypeErrorFormatter<IntError> = (error) =>
272
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید یک عدد صحیح امن باشد.`;
273
+
274
+ /** GreaterThanError را به فارسی قالب‌بندی می‌کند. */
275
+ export const formatGreaterThanError: TypeErrorFormatter<GreaterThanError> = (
276
+ error,
277
+ ) =>
278
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید بزرگ‌تر از ${error.min} باشد.`;
279
+
280
+ /** GreaterThanOrEqualToError را به فارسی قالب‌بندی می‌کند. */
281
+ export const formatGreaterThanOrEqualToError: TypeErrorFormatter<
282
+ GreaterThanOrEqualToError
283
+ > = (error) =>
284
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید بزرگ‌تر یا مساوی ${error.min} باشد.`;
285
+
286
+ /** LessThanError را به فارسی قالب‌بندی می‌کند. */
287
+ export const formatLessThanError: TypeErrorFormatter<LessThanError> = (error) =>
288
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید کوچک‌تر از ${error.max} باشد.`;
289
+
290
+ /** LessThanOrEqualToError را به فارسی قالب‌بندی می‌کند. */
291
+ export const formatLessThanOrEqualToError: TypeErrorFormatter<
292
+ LessThanOrEqualToError
293
+ > = (error) =>
294
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید کوچک‌تر یا مساوی ${error.max} باشد.`;
295
+
296
+ /** NonNaNError را به فارسی قالب‌بندی می‌کند. */
297
+ export const formatNonNaNError: TypeErrorFormatter<NonNaNError> = () =>
298
+ "مقدار نباید NaN باشد.";
299
+
300
+ /** FiniteError را به فارسی قالب‌بندی می‌کند. */
301
+ export const formatFiniteError: TypeErrorFormatter<FiniteError> = (error) =>
302
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید متناهی باشد.`;
303
+
304
+ /** MultipleOfError را به فارسی قالب‌بندی می‌کند. */
305
+ export const formatMultipleOfError: TypeErrorFormatter<MultipleOfError> = (
306
+ error,
307
+ ) =>
308
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید مضربی از ${error.divisor} باشد.`;
309
+
310
+ /** BetweenError را به فارسی قالب‌بندی می‌کند. */
311
+ export const formatBetweenError: TypeErrorFormatter<BetweenError> = (error) =>
312
+ `مقدار ${safelyStringifyUnknownValue(error.value)} باید بین ${error.min} و ${error.max}، با احتساب هر دو کران، باشد.`;
313
+
314
+ /** ArrayError را به فارسی قالب‌بندی می‌کند. */
315
+ export const formatArrayError: TypeErrorFormatter<ArrayError> = (error) => {
316
+ if (error.reason.kind === "NotArray") {
317
+ return `مقدار ${safelyStringifyUnknownValue(error.reason.value)} یک آرایه نیست.`;
318
+ }
319
+ const issue = error.reason.issues[0];
320
+
321
+ switch (issue.kind) {
322
+ case "Hole":
323
+ return `عنصر آرایه در اندیس ${issue.index} وجود ندارد.`;
324
+ case "Accessor":
325
+ return `عنصر آرایه در اندیس ${issue.index} باید یک data property باشد.`;
326
+ case "ExcessProperty":
327
+ return "وجود property اضافی روی Array مجاز نیست. آن را حذف کنید یا از Type دیگری استفاده کنید.";
328
+ case "Element":
329
+ return `عنصر آرایه در اندیس ${issue.index} نامعتبر است.`;
330
+ }
331
+ };
332
+
333
+ /** SetError را به فارسی قالب‌بندی می‌کند. */
334
+ export const formatSetError: TypeErrorFormatter<SetError> = (error) => {
335
+ if (error.reason.kind === "NotSet") {
336
+ return `مقدار ${safelyStringifyUnknownValue(error.reason.value)} یک Set نیست.`;
337
+ }
338
+ if (error.reason.kind === "UnexpectedPrototype") {
339
+ return "مقدار نمونه‌ای از یک زیرکلاس Set است، اما خروجی Set باید مستقیماً نمونه‌ای از Set باشد.";
340
+ }
341
+
342
+ const issue = error.reason.issues[0];
343
+
344
+ switch (issue.kind) {
345
+ case "ExcessProperty":
346
+ return `property اضافی ${safelyStringifyUnknownValue(issue.key)} روی Set مجاز نیست.`;
347
+ case "Element":
348
+ return `عنصر Set در اندیس ${issue.index} نامعتبر است.`;
349
+ }
350
+ };
351
+
352
+ /** TupleError را به فارسی قالب‌بندی می‌کند. */
353
+ export const formatTupleError: TypeErrorFormatter<
354
+ TupleError | TupleElementsError<TypeError>
355
+ > = (error) => {
356
+ if (error.reason.kind === "NotArray") {
357
+ return `مقدار ${safelyStringifyUnknownValue(error.reason.value)} یک Tuple نیست.`;
358
+ }
359
+ if (error.reason.kind === "InvalidLength") {
360
+ return `Tuple باید دقیقاً ${error.reason.expected} عنصر داشته باشد، اما مقدار دارای ${error.reason.actual} عنصر است.`;
361
+ }
362
+
363
+ const issue = error.reason.issues[0];
364
+
365
+ switch (issue.kind) {
366
+ case "Hole":
367
+ return `عنصر Tuple در اندیس ${issue.index} وجود ندارد.`;
368
+ case "Accessor":
369
+ return `عنصر Tuple در اندیس ${issue.index} باید یک data property باشد.`;
370
+ case "ExcessProperty":
371
+ return "وجود property اضافی روی Tuple مجاز نیست. آن را حذف کنید یا از Type دیگری استفاده کنید.";
372
+ case "Element":
373
+ return `عنصر Tuple در اندیس ${issue.index} نامعتبر است.`;
374
+ }
375
+ };
376
+
377
+ /** RecordError را به فارسی قالب‌بندی می‌کند. */
378
+ export const formatRecordError: TypeErrorFormatter<RecordError> = (error) => {
379
+ if (error.reason.kind === "NotRecord") {
380
+ return `مقدار ${safelyStringifyUnknownValue(error.reason.value)} یک Record نیست.`;
381
+ }
382
+ if (error.reason.kind === "NotPlainRecord") {
383
+ return "مقدار یک object است، اما خروجی Record باید یک object ساده باشد یا prototype آن null باشد.";
384
+ }
385
+
386
+ const issue = error.reason.issues[0];
387
+
388
+ switch (issue.kind) {
389
+ case "Key":
390
+ return `کلید property یعنی ${safelyStringifyUnknownValue(issue.key)} نامعتبر است.`;
391
+ case "Value":
392
+ return `مقدار property ${safelyStringifyUnknownValue(issue.key)} نامعتبر است.`;
393
+ case "Accessor":
394
+ return `property ${safelyStringifyUnknownValue(issue.key)} در Record باید یک data property باشد.`;
395
+ case "NonEnumerable":
396
+ return `property ${safelyStringifyUnknownValue(issue.key)} در Record باید enumerable باشد.`;
397
+ case "Collision":
398
+ return `کلیدهای Record یعنی ${safelyStringifyUnknownValue(issue.previousKey)} و ${safelyStringifyUnknownValue(issue.key)} پس از decode به کلید یکسان ${safelyStringifyUnknownValue(issue.outputKey)} تبدیل می‌شوند.`;
399
+ }
400
+ };
401
+
402
+ /** ObjectError را به فارسی قالب‌بندی می‌کند. */
403
+ export const formatObjectError: TypeErrorFormatter<ObjectError> = (error) => {
404
+ if (error.reason.kind !== "Properties") {
405
+ return formatPlainObjectRootError(error.reason);
406
+ }
407
+
408
+ const key = Reflect.ownKeys(error.reason.errors).at(0);
409
+ assertNonNullable(key);
410
+ const propertyError = error.reason.errors[key];
411
+ assertNonNullable(propertyError);
412
+
413
+ if (propertyError.type === "ObjectPropertyAccess") {
414
+ switch ((propertyError as ObjectPropertyAccessError).reason) {
415
+ case "Accessor":
416
+ return "property در Object باید یک data property باشد. پیش از استفاده از این Type، مقادیر accessor را به دادهٔ ساده تبدیل کنید یا از Type دیگری استفاده کنید.";
417
+ case "NonEnumerable":
418
+ return "property در Object باید enumerable باشد. آن را enumerable کنید یا از Type دیگری استفاده کنید.";
419
+ }
420
+ }
421
+ if (propertyError.type === "ObjectMissingProperty") {
422
+ return `property الزامی ${safelyStringifyUnknownValue(key)} وجود ندارد.`;
423
+ }
424
+ if (typeof key === "symbol") {
425
+ return "کلید property در Object باید string باشد. property از نوع symbol را حذف کنید یا از Type دیگری استفاده کنید.";
426
+ }
427
+ if (propertyError.type === "ObjectExcessProperty") {
428
+ return `property ${safelyStringifyUnknownValue(key)} مجاز نیست. آن را حذف کنید یا از Type دیگری استفاده کنید.`;
429
+ }
430
+ return `property ${safelyStringifyUnknownValue(key)} نامعتبر است.`;
431
+ };
432
+
433
+ /** DiscriminatedUnionError را به فارسی قالب‌بندی می‌کند. */
434
+ export const formatDiscriminatedUnionError: TypeErrorFormatter<
435
+ DiscriminatedUnionError
436
+ > = (error) => {
437
+ switch (error.reason.kind) {
438
+ case "Object":
439
+ return formatPlainObjectRootError(error.reason.error.reason);
440
+ case "PropertyAccess": {
441
+ const property = `property متمایزکنندهٔ ${safelyStringifyUnknownValue(error.reason.key)}`;
442
+ if (error.reason.reason === "Accessor") {
443
+ return `${property} باید یک data property باشد.`;
444
+ }
445
+ if (error.reason.reason === "Inherited") {
446
+ return `${property} باید property خود شیء باشد.`;
447
+ }
448
+ return `${property} باید enumerable باشد.`;
449
+ }
450
+ case "Discriminator":
451
+ return `property متمایزکنندهٔ ${safelyStringifyUnknownValue(error.reason.key)} دارای مقدار غیرمنتظرهٔ ${safelyStringifyUnknownValue(error.reason.value)} است.`;
452
+ case "Member":
453
+ return `variant انتخاب‌شدهٔ ${safelyStringifyUnknownValue(error.reason.discriminator)} نامعتبر است.`;
454
+ }
455
+ };
456
+
457
+ /** JsonValueError را به فارسی قالب‌بندی می‌کند. */
458
+ export const formatJsonValueError: TypeErrorFormatter<JsonValueError> = (
459
+ error,
460
+ ) => {
461
+ const issue = error.reason.issues[0];
462
+
463
+ switch (issue.kind) {
464
+ case "InvalidType":
465
+ return `مقدار ${safelyStringifyUnknownValue(issue.value)} یک مقدار JSON نیست.`;
466
+ case "NonFiniteNumber":
467
+ return "عدد JSON باید متناهی باشد.";
468
+ case "UnexpectedPrototype":
469
+ return "مقدار یک object است، اما object در JsonValue باید یک object ساده باشد یا prototype آن null باشد.";
470
+ case "Accessor":
471
+ return "property در JSON باید یک data property باشد. پیش از استفاده از این Type، مقادیر accessor را به دادهٔ ساده تبدیل کنید یا از Type دیگری استفاده کنید.";
472
+ case "NonEnumerable":
473
+ return "property در object JSON باید enumerable باشد. آن را حذف کنید یا از Type دیگری استفاده کنید.";
474
+ case "SymbolProperty":
475
+ return "کلید property در object JSON باید string باشد. property از نوع symbol را حذف کنید یا از Type دیگری استفاده کنید.";
476
+ case "Hole":
477
+ return "یک عنصر از آرایهٔ JSON وجود ندارد.";
478
+ case "ExcessProperty":
479
+ return "وجود property اضافی روی آرایهٔ JSON مجاز نیست. آن را حذف کنید یا از Type دیگری استفاده کنید.";
480
+ case "CircularReference":
481
+ return "JsonValue نباید شامل ارجاع‌های دوری باشد.";
482
+ }
483
+ };
484
+
485
+ /** JsonError را به فارسی قالب‌بندی می‌کند. */
486
+ export const formatJsonError: TypeErrorFormatter<JsonError> = (error) =>
487
+ `مقدار ${safelyStringifyUnknownValue(error.value)} را نمی‌توان به JsonValue parse کرد.`;