@stapel/categories-react 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -0
- package/MODULE.md +194 -0
- package/README.md +191 -0
- package/dist/api/categoriesApi.d.ts +121 -0
- package/dist/api/categoriesApi.d.ts.map +1 -0
- package/dist/api/categoriesApi.js +48 -0
- package/dist/api/categoriesApi.js.map +1 -0
- package/dist/api/generated/schema.d.ts +2321 -0
- package/dist/api/generated/schema.d.ts.map +1 -0
- package/dist/api/generated/schema.js +2 -0
- package/dist/api/generated/schema.js.map +1 -0
- package/dist/api/types.d.ts +92 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +2 -0
- package/dist/api/types.js.map +1 -0
- package/dist/catalog/labels.d.ts +103 -0
- package/dist/catalog/labels.d.ts.map +1 -0
- package/dist/catalog/labels.js +56 -0
- package/dist/catalog/labels.js.map +1 -0
- package/dist/catalog/pks.d.ts +25 -0
- package/dist/catalog/pks.d.ts.map +1 -0
- package/dist/catalog/pks.js +38 -0
- package/dist/catalog/pks.js.map +1 -0
- package/dist/catalog/sync.d.ts +103 -0
- package/dist/catalog/sync.d.ts.map +1 -0
- package/dist/catalog/sync.js +114 -0
- package/dist/catalog/sync.js.map +1 -0
- package/dist/catalog/tree.d.ts +119 -0
- package/dist/catalog/tree.d.ts.map +1 -0
- package/dist/catalog/tree.js +166 -0
- package/dist/catalog/tree.js.map +1 -0
- package/dist/default/CatalogPage.d.ts +16 -0
- package/dist/default/CatalogPage.d.ts.map +1 -0
- package/dist/default/CatalogPage.js +13 -0
- package/dist/default/CatalogPage.js.map +1 -0
- package/dist/default/CategoryBreadcrumbsBar.d.ts +20 -0
- package/dist/default/CategoryBreadcrumbsBar.d.ts.map +1 -0
- package/dist/default/CategoryBreadcrumbsBar.js +35 -0
- package/dist/default/CategoryBreadcrumbsBar.js.map +1 -0
- package/dist/default/CategoryCarouselStrip.d.ts +22 -0
- package/dist/default/CategoryCarouselStrip.d.ts.map +1 -0
- package/dist/default/CategoryCarouselStrip.js +24 -0
- package/dist/default/CategoryCarouselStrip.js.map +1 -0
- package/dist/default/CategoryFeatureList.d.ts +23 -0
- package/dist/default/CategoryFeatureList.d.ts.map +1 -0
- package/dist/default/CategoryFeatureList.js +28 -0
- package/dist/default/CategoryFeatureList.js.map +1 -0
- package/dist/default/CategoryPage.d.ts +43 -0
- package/dist/default/CategoryPage.d.ts.map +1 -0
- package/dist/default/CategoryPage.js +21 -0
- package/dist/default/CategoryPage.js.map +1 -0
- package/dist/default/CategoryPickerField.d.ts +26 -0
- package/dist/default/CategoryPickerField.d.ts.map +1 -0
- package/dist/default/CategoryPickerField.js +40 -0
- package/dist/default/CategoryPickerField.js.map +1 -0
- package/dist/default/CategoryTreePane.d.ts +28 -0
- package/dist/default/CategoryTreePane.d.ts.map +1 -0
- package/dist/default/CategoryTreePane.js +25 -0
- package/dist/default/CategoryTreePane.js.map +1 -0
- package/dist/default/ErrorAlert.d.ts +9 -0
- package/dist/default/ErrorAlert.d.ts.map +1 -0
- package/dist/default/ErrorAlert.js +27 -0
- package/dist/default/ErrorAlert.js.map +1 -0
- package/dist/default/index.d.ts +37 -0
- package/dist/default/index.d.ts.map +1 -0
- package/dist/default/index.js +28 -0
- package/dist/default/index.js.map +1 -0
- package/dist/default/theme.d.ts +25 -0
- package/dist/default/theme.d.ts.map +1 -0
- package/dist/default/theme.js +40 -0
- package/dist/default/theme.js.map +1 -0
- package/dist/default/types.d.ts +12 -0
- package/dist/default/types.d.ts.map +1 -0
- package/dist/default/types.js +2 -0
- package/dist/default/types.js.map +1 -0
- package/dist/headless/CategoriesProvider.d.ts +19 -0
- package/dist/headless/CategoriesProvider.d.ts.map +1 -0
- package/dist/headless/CategoriesProvider.js +15 -0
- package/dist/headless/CategoriesProvider.js.map +1 -0
- package/dist/headless/CategoryBreadcrumbs.d.ts +40 -0
- package/dist/headless/CategoryBreadcrumbs.d.ts.map +1 -0
- package/dist/headless/CategoryBreadcrumbs.js +42 -0
- package/dist/headless/CategoryBreadcrumbs.js.map +1 -0
- package/dist/headless/CategoryCarousel.d.ts +48 -0
- package/dist/headless/CategoryCarousel.d.ts.map +1 -0
- package/dist/headless/CategoryCarousel.js +34 -0
- package/dist/headless/CategoryCarousel.js.map +1 -0
- package/dist/headless/CategoryFeatures.d.ts +67 -0
- package/dist/headless/CategoryFeatures.d.ts.map +1 -0
- package/dist/headless/CategoryFeatures.js +46 -0
- package/dist/headless/CategoryFeatures.js.map +1 -0
- package/dist/headless/CategoryPicker.d.ts +69 -0
- package/dist/headless/CategoryPicker.d.ts.map +1 -0
- package/dist/headless/CategoryPicker.js +86 -0
- package/dist/headless/CategoryPicker.js.map +1 -0
- package/dist/headless/CategoryTree.d.ts +55 -0
- package/dist/headless/CategoryTree.d.ts.map +1 -0
- package/dist/headless/CategoryTree.js +51 -0
- package/dist/headless/CategoryTree.js.map +1 -0
- package/dist/i18n/errorsMap.d.ts +22 -0
- package/dist/i18n/errorsMap.d.ts.map +1 -0
- package/dist/i18n/errorsMap.js +31 -0
- package/dist/i18n/errorsMap.js.map +1 -0
- package/dist/i18n/es.d.ts +25 -0
- package/dist/i18n/es.d.ts.map +1 -0
- package/dist/i18n/es.js +74 -0
- package/dist/i18n/es.js.map +1 -0
- package/dist/i18n/generated/errors.es.gen.d.ts +16 -0
- package/dist/i18n/generated/errors.es.gen.d.ts.map +1 -0
- package/dist/i18n/generated/errors.es.gen.js +58 -0
- package/dist/i18n/generated/errors.es.gen.js.map +1 -0
- package/dist/i18n/generated/errors.gen.d.ts +407 -0
- package/dist/i18n/generated/errors.gen.d.ts.map +1 -0
- package/dist/i18n/generated/errors.gen.js +207 -0
- package/dist/i18n/generated/errors.gen.js.map +1 -0
- package/dist/i18n/generated/errors.ru.gen.d.ts +16 -0
- package/dist/i18n/generated/errors.ru.gen.d.ts.map +1 -0
- package/dist/i18n/generated/errors.ru.gen.js +58 -0
- package/dist/i18n/generated/errors.ru.gen.js.map +1 -0
- package/dist/i18n/keys.d.ts +89 -0
- package/dist/i18n/keys.d.ts.map +1 -0
- package/dist/i18n/keys.js +134 -0
- package/dist/i18n/keys.js.map +1 -0
- package/dist/i18n/ru.d.ts +41 -0
- package/dist/i18n/ru.d.ts.map +1 -0
- package/dist/i18n/ru.js +90 -0
- package/dist/i18n/ru.js.map +1 -0
- package/dist/index.d.ts +88 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +78 -0
- package/dist/index.js.map +1 -0
- package/dist/model/catalogStore.d.ts +23 -0
- package/dist/model/catalogStore.d.ts.map +1 -0
- package/dist/model/catalogStore.js +85 -0
- package/dist/model/catalogStore.js.map +1 -0
- package/dist/model/catalogSync.d.ts +49 -0
- package/dist/model/catalogSync.d.ts.map +1 -0
- package/dist/model/catalogSync.js +64 -0
- package/dist/model/catalogSync.js.map +1 -0
- package/dist/model/context.d.ts +11 -0
- package/dist/model/context.d.ts.map +1 -0
- package/dist/model/context.js +16 -0
- package/dist/model/context.js.map +1 -0
- package/dist/model/queries.d.ts +124 -0
- package/dist/model/queries.d.ts.map +1 -0
- package/dist/model/queries.js +147 -0
- package/dist/model/queries.js.map +1 -0
- package/dist/model/queryKeys.d.ts +30 -0
- package/dist/model/queryKeys.d.ts.map +1 -0
- package/dist/model/queryKeys.js +16 -0
- package/dist/model/queryKeys.js.map +1 -0
- package/dist/model/runtime.d.ts +31 -0
- package/dist/model/runtime.d.ts.map +1 -0
- package/dist/model/runtime.js +6 -0
- package/dist/model/runtime.js.map +1 -0
- package/dist/nav/manifest.d.ts +31 -0
- package/dist/nav/manifest.d.ts.map +1 -0
- package/dist/nav/manifest.js +37 -0
- package/dist/nav/manifest.js.map +1 -0
- package/llms.txt +125 -0
- package/manifest.json +918 -0
- package/nav-manifest.json +44 -0
- package/package.json +119 -0
- package/src/analytics/generated/events.json +7 -0
- package/src/api/categoriesApi.ts +179 -0
- package/src/api/generated/schema.ts +2323 -0
- package/src/api/types.ts +99 -0
- package/src/catalog/labels.ts +129 -0
- package/src/catalog/pks.ts +35 -0
- package/src/catalog/sync.ts +169 -0
- package/src/catalog/tree.ts +242 -0
- package/src/default/CatalogPage.tsx +40 -0
- package/src/default/CategoryBreadcrumbsBar.tsx +93 -0
- package/src/default/CategoryCarouselStrip.tsx +102 -0
- package/src/default/CategoryFeatureList.tsx +125 -0
- package/src/default/CategoryPage.tsx +114 -0
- package/src/default/CategoryPickerField.tsx +173 -0
- package/src/default/CategoryTreePane.tsx +134 -0
- package/src/default/ErrorAlert.tsx +46 -0
- package/src/default/index.ts +36 -0
- package/src/default/theme.tsx +67 -0
- package/src/default/types.ts +12 -0
- package/src/headless/CategoriesProvider.tsx +20 -0
- package/src/headless/CategoryBreadcrumbs.tsx +78 -0
- package/src/headless/CategoryCarousel.tsx +80 -0
- package/src/headless/CategoryFeatures.tsx +100 -0
- package/src/headless/CategoryPicker.tsx +173 -0
- package/src/headless/CategoryTree.tsx +115 -0
- package/src/i18n/errorsMap.ts +46 -0
- package/src/i18n/es.ts +92 -0
- package/src/i18n/generated/errors.es.gen.ts +64 -0
- package/src/i18n/generated/errors.gen.ts +238 -0
- package/src/i18n/generated/errors.json +495 -0
- package/src/i18n/generated/errors.ru.gen.ts +64 -0
- package/src/i18n/keys.ts +156 -0
- package/src/i18n/ru.ts +110 -0
- package/src/index.ts +191 -0
- package/src/model/catalogStore.ts +102 -0
- package/src/model/catalogSync.ts +115 -0
- package/src/model/context.tsx +28 -0
- package/src/model/queries.ts +226 -0
- package/src/model/queryKeys.ts +50 -0
- package/src/model/runtime.ts +39 -0
- package/src/nav/manifest.ts +66 -0
- package/tsconfig.json +26 -0
|
@@ -0,0 +1,495 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"code": "error.400.bad_request",
|
|
4
|
+
"status": 400,
|
|
5
|
+
"params": [],
|
|
6
|
+
"remediation": "fix_input",
|
|
7
|
+
"en": "Bad request"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"code": "error.400.captcha_invalid",
|
|
11
|
+
"status": 400,
|
|
12
|
+
"params": [],
|
|
13
|
+
"remediation": "retry",
|
|
14
|
+
"en": "Captcha verification failed. Please try again."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"code": "error.400.captcha_required",
|
|
18
|
+
"status": 400,
|
|
19
|
+
"params": [],
|
|
20
|
+
"remediation": "retry",
|
|
21
|
+
"en": "Captcha token is required."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"code": "error.400.categories_config_required",
|
|
25
|
+
"status": 400,
|
|
26
|
+
"params": [],
|
|
27
|
+
"remediation": "fix_input",
|
|
28
|
+
"en": "A config object is required"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"code": "error.400.categories_database_error",
|
|
32
|
+
"status": 400,
|
|
33
|
+
"params": [],
|
|
34
|
+
"remediation": "fix_input",
|
|
35
|
+
"en": "Database error while applying changes"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"code": "error.400.categories_duplicate_slug",
|
|
39
|
+
"status": 400,
|
|
40
|
+
"params": [
|
|
41
|
+
"slug"
|
|
42
|
+
],
|
|
43
|
+
"remediation": "fix_input",
|
|
44
|
+
"en": "A feature with slug '{slug}' already exists"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"code": "error.400.categories_expected_list",
|
|
48
|
+
"status": 400,
|
|
49
|
+
"params": [],
|
|
50
|
+
"remediation": "fix_input",
|
|
51
|
+
"en": "Expected a list of objects"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"code": "error.400.categories_feature_editor_invalid",
|
|
55
|
+
"status": 400,
|
|
56
|
+
"params": [
|
|
57
|
+
"reason"
|
|
58
|
+
],
|
|
59
|
+
"remediation": "fix_input",
|
|
60
|
+
"en": "Invalid feature editor request: {reason}"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"code": "error.400.categories_invalid_conversion",
|
|
64
|
+
"status": 400,
|
|
65
|
+
"params": [],
|
|
66
|
+
"remediation": "fix_input",
|
|
67
|
+
"en": "Invalid type conversion (only select<->string is supported)"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"code": "error.400.categories_not_deleted",
|
|
71
|
+
"status": 400,
|
|
72
|
+
"params": [],
|
|
73
|
+
"remediation": "fix_input",
|
|
74
|
+
"en": "Category is not deleted"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"code": "error.400.description_too_long",
|
|
78
|
+
"status": 400,
|
|
79
|
+
"params": [
|
|
80
|
+
"max_length"
|
|
81
|
+
],
|
|
82
|
+
"remediation": "fix_input",
|
|
83
|
+
"en": "Description must be at most {max_length} characters"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"code": "error.400.description_too_short",
|
|
87
|
+
"status": 400,
|
|
88
|
+
"params": [
|
|
89
|
+
"min_length"
|
|
90
|
+
],
|
|
91
|
+
"remediation": "fix_input",
|
|
92
|
+
"en": "Description must be at least {min_length} characters"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"code": "error.400.expected_list",
|
|
96
|
+
"status": 400,
|
|
97
|
+
"params": [],
|
|
98
|
+
"remediation": "fix_input",
|
|
99
|
+
"en": "Expected a list of items"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"code": "error.400.feature_above_maximum",
|
|
103
|
+
"status": 400,
|
|
104
|
+
"params": [
|
|
105
|
+
"feature"
|
|
106
|
+
],
|
|
107
|
+
"remediation": "fix_input",
|
|
108
|
+
"en": "Value is above maximum for {feature}"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"code": "error.400.feature_below_minimum",
|
|
112
|
+
"status": 400,
|
|
113
|
+
"params": [
|
|
114
|
+
"feature"
|
|
115
|
+
],
|
|
116
|
+
"remediation": "fix_input",
|
|
117
|
+
"en": "Value is below minimum for {feature}"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"code": "error.400.feature_invalid_config",
|
|
121
|
+
"status": 400,
|
|
122
|
+
"params": [
|
|
123
|
+
"feature"
|
|
124
|
+
],
|
|
125
|
+
"remediation": "fix_input",
|
|
126
|
+
"en": "Invalid config for {feature}"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"code": "error.400.feature_invalid_format",
|
|
130
|
+
"status": 400,
|
|
131
|
+
"params": [
|
|
132
|
+
"feature"
|
|
133
|
+
],
|
|
134
|
+
"remediation": "fix_input",
|
|
135
|
+
"en": "Invalid format for {feature}"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"code": "error.400.feature_invalid_type",
|
|
139
|
+
"status": 400,
|
|
140
|
+
"params": [
|
|
141
|
+
"feature"
|
|
142
|
+
],
|
|
143
|
+
"remediation": "fix_input",
|
|
144
|
+
"en": "Invalid type for {feature}"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"code": "error.400.feature_mandatory_missing",
|
|
148
|
+
"status": 400,
|
|
149
|
+
"params": [
|
|
150
|
+
"feature"
|
|
151
|
+
],
|
|
152
|
+
"remediation": "fix_input",
|
|
153
|
+
"en": "Mandatory feature {feature} is required"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"code": "error.400.feature_not_allowed",
|
|
157
|
+
"status": 400,
|
|
158
|
+
"params": [
|
|
159
|
+
"feature"
|
|
160
|
+
],
|
|
161
|
+
"remediation": "fix_input",
|
|
162
|
+
"en": "Feature {feature} is not allowed here"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"code": "error.400.feature_not_in_options",
|
|
166
|
+
"status": 400,
|
|
167
|
+
"params": [
|
|
168
|
+
"feature"
|
|
169
|
+
],
|
|
170
|
+
"remediation": "fix_input",
|
|
171
|
+
"en": "Value is not in allowed options for {feature}"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"code": "error.400.feature_unknown",
|
|
175
|
+
"status": 400,
|
|
176
|
+
"params": [
|
|
177
|
+
"feature"
|
|
178
|
+
],
|
|
179
|
+
"remediation": "fix_input",
|
|
180
|
+
"en": "Unknown feature {feature}"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"code": "error.400.feature_unknown_type",
|
|
184
|
+
"status": 400,
|
|
185
|
+
"params": [
|
|
186
|
+
"feature"
|
|
187
|
+
],
|
|
188
|
+
"remediation": "fix_input",
|
|
189
|
+
"en": "Unknown feature type for {feature}"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"code": "error.400.field.blank",
|
|
193
|
+
"status": 400,
|
|
194
|
+
"params": [
|
|
195
|
+
"field"
|
|
196
|
+
],
|
|
197
|
+
"remediation": "fix_input",
|
|
198
|
+
"en": "{field} may not be blank"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"code": "error.400.field.does_not_exist",
|
|
202
|
+
"status": 400,
|
|
203
|
+
"params": [
|
|
204
|
+
"field"
|
|
205
|
+
],
|
|
206
|
+
"remediation": "fix_input",
|
|
207
|
+
"en": "{field} does not exist"
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"code": "error.400.field.invalid",
|
|
211
|
+
"status": 400,
|
|
212
|
+
"params": [
|
|
213
|
+
"field"
|
|
214
|
+
],
|
|
215
|
+
"remediation": "fix_input",
|
|
216
|
+
"en": "{field} is invalid"
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"code": "error.400.field.invalid_choice",
|
|
220
|
+
"status": 400,
|
|
221
|
+
"params": [
|
|
222
|
+
"field"
|
|
223
|
+
],
|
|
224
|
+
"remediation": "fix_input",
|
|
225
|
+
"en": "{field} is not a valid choice"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"code": "error.400.field.max_length",
|
|
229
|
+
"status": 400,
|
|
230
|
+
"params": [
|
|
231
|
+
"field",
|
|
232
|
+
"max_length"
|
|
233
|
+
],
|
|
234
|
+
"remediation": "fix_input",
|
|
235
|
+
"en": "{field} must be at most {max_length} characters"
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
"code": "error.400.field.max_value",
|
|
239
|
+
"status": 400,
|
|
240
|
+
"params": [
|
|
241
|
+
"field",
|
|
242
|
+
"max_value"
|
|
243
|
+
],
|
|
244
|
+
"remediation": "fix_input",
|
|
245
|
+
"en": "{field} must be at most {max_value}"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"code": "error.400.field.min_length",
|
|
249
|
+
"status": 400,
|
|
250
|
+
"params": [
|
|
251
|
+
"field",
|
|
252
|
+
"min_length"
|
|
253
|
+
],
|
|
254
|
+
"remediation": "fix_input",
|
|
255
|
+
"en": "{field} must be at least {min_length} characters"
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
"code": "error.400.field.min_value",
|
|
259
|
+
"status": 400,
|
|
260
|
+
"params": [
|
|
261
|
+
"field",
|
|
262
|
+
"min_value"
|
|
263
|
+
],
|
|
264
|
+
"remediation": "fix_input",
|
|
265
|
+
"en": "{field} must be at least {min_value}"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"code": "error.400.field.null",
|
|
269
|
+
"status": 400,
|
|
270
|
+
"params": [
|
|
271
|
+
"field"
|
|
272
|
+
],
|
|
273
|
+
"remediation": "fix_input",
|
|
274
|
+
"en": "{field} may not be null"
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"code": "error.400.field.required",
|
|
278
|
+
"status": 400,
|
|
279
|
+
"params": [
|
|
280
|
+
"field"
|
|
281
|
+
],
|
|
282
|
+
"remediation": "fix_input",
|
|
283
|
+
"en": "{field} is required"
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
"code": "error.400.field.unique",
|
|
287
|
+
"status": 400,
|
|
288
|
+
"params": [
|
|
289
|
+
"field"
|
|
290
|
+
],
|
|
291
|
+
"remediation": "fix_input",
|
|
292
|
+
"en": "{field} must be unique"
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"code": "error.400.invalid_ad_id",
|
|
296
|
+
"status": 400,
|
|
297
|
+
"params": [],
|
|
298
|
+
"remediation": "fix_input",
|
|
299
|
+
"en": "Invalid advertisement ID"
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"code": "error.400.validation_error",
|
|
303
|
+
"status": 400,
|
|
304
|
+
"params": [],
|
|
305
|
+
"remediation": "fix_input",
|
|
306
|
+
"en": "Validation error"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"code": "error.400.verification_failed",
|
|
310
|
+
"status": 400,
|
|
311
|
+
"params": [],
|
|
312
|
+
"remediation": "verify",
|
|
313
|
+
"en": "Verification failed"
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"code": "error.400.verification_invalid_factor",
|
|
317
|
+
"status": 400,
|
|
318
|
+
"params": [],
|
|
319
|
+
"remediation": "verify",
|
|
320
|
+
"en": "This verification factor is not available"
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"code": "error.401.unauthorized",
|
|
324
|
+
"status": 401,
|
|
325
|
+
"params": [],
|
|
326
|
+
"remediation": "reauthenticate",
|
|
327
|
+
"en": "Authentication required"
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"code": "error.402.payment_required",
|
|
331
|
+
"status": 402,
|
|
332
|
+
"params": [],
|
|
333
|
+
"remediation": "retry",
|
|
334
|
+
"en": "Payment required"
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
"code": "error.403.forbidden",
|
|
338
|
+
"status": 403,
|
|
339
|
+
"params": [],
|
|
340
|
+
"remediation": "retry",
|
|
341
|
+
"en": "You do not have permission to perform this action"
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"code": "error.403.network_blocked",
|
|
345
|
+
"status": 403,
|
|
346
|
+
"params": [],
|
|
347
|
+
"remediation": "contact_support",
|
|
348
|
+
"en": "Requests from this network are not allowed"
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"code": "error.403.verification_enrollment_required",
|
|
352
|
+
"status": 403,
|
|
353
|
+
"params": [],
|
|
354
|
+
"remediation": "verify",
|
|
355
|
+
"en": "Verification factor enrollment required"
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"code": "error.403.verification_required",
|
|
359
|
+
"status": 403,
|
|
360
|
+
"params": [],
|
|
361
|
+
"remediation": "verify",
|
|
362
|
+
"en": "Additional verification required"
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"code": "error.404.ad_not_found",
|
|
366
|
+
"status": 404,
|
|
367
|
+
"params": [],
|
|
368
|
+
"remediation": "retry",
|
|
369
|
+
"en": "Listing not found"
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"code": "error.404.not_found",
|
|
373
|
+
"status": 404,
|
|
374
|
+
"params": [],
|
|
375
|
+
"remediation": "retry",
|
|
376
|
+
"en": "Requested resource not found"
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"code": "error.404.verification_challenge_not_found",
|
|
380
|
+
"status": 404,
|
|
381
|
+
"params": [],
|
|
382
|
+
"remediation": "verify",
|
|
383
|
+
"en": "Verification challenge not found or expired"
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
"code": "error.405.method_not_allowed",
|
|
387
|
+
"status": 405,
|
|
388
|
+
"params": [],
|
|
389
|
+
"remediation": "retry",
|
|
390
|
+
"en": "Method not allowed"
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
"code": "error.406.not_acceptable",
|
|
394
|
+
"status": 406,
|
|
395
|
+
"params": [],
|
|
396
|
+
"remediation": "retry",
|
|
397
|
+
"en": "Not acceptable"
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"code": "error.408.request_timeout",
|
|
401
|
+
"status": 408,
|
|
402
|
+
"params": [],
|
|
403
|
+
"remediation": "retry",
|
|
404
|
+
"en": "Request timeout"
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
"code": "error.409.categories_feature_editor_conflict",
|
|
408
|
+
"status": 409,
|
|
409
|
+
"params": [
|
|
410
|
+
"expected",
|
|
411
|
+
"actual"
|
|
412
|
+
],
|
|
413
|
+
"remediation": "fix_input",
|
|
414
|
+
"en": "Category was modified by another editor (expected revision {expected}, now {actual}); reload and retry"
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
"code": "error.409.conflict",
|
|
418
|
+
"status": 409,
|
|
419
|
+
"params": [],
|
|
420
|
+
"remediation": "fix_input",
|
|
421
|
+
"en": "Resource already exists"
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
"code": "error.410.gone",
|
|
425
|
+
"status": 410,
|
|
426
|
+
"params": [],
|
|
427
|
+
"remediation": "retry",
|
|
428
|
+
"en": "Resource has been permanently removed"
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
"code": "error.413.payload_too_large",
|
|
432
|
+
"status": 413,
|
|
433
|
+
"params": [],
|
|
434
|
+
"remediation": "retry",
|
|
435
|
+
"en": "Request body is too large"
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
"code": "error.415.unsupported_media_type",
|
|
439
|
+
"status": 415,
|
|
440
|
+
"params": [],
|
|
441
|
+
"remediation": "retry",
|
|
442
|
+
"en": "Unsupported media type"
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
"code": "error.422.unprocessable_entity",
|
|
446
|
+
"status": 422,
|
|
447
|
+
"params": [],
|
|
448
|
+
"remediation": "wait_and_retry",
|
|
449
|
+
"en": "Unprocessable entity"
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
"code": "error.423.locked",
|
|
453
|
+
"status": 423,
|
|
454
|
+
"params": [],
|
|
455
|
+
"remediation": "wait_and_retry",
|
|
456
|
+
"en": "Resource is locked"
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
"code": "error.423.verification_locked",
|
|
460
|
+
"status": 423,
|
|
461
|
+
"params": [],
|
|
462
|
+
"remediation": "wait_and_retry",
|
|
463
|
+
"en": "Too many failed attempts — verification locked"
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
"code": "error.429.rate_limit",
|
|
467
|
+
"status": 429,
|
|
468
|
+
"params": [
|
|
469
|
+
"retry_after_minutes"
|
|
470
|
+
],
|
|
471
|
+
"remediation": "wait_and_retry",
|
|
472
|
+
"en": "Too many attempts. Try again in {retry_after_minutes} minutes."
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
"code": "error.429.too_many_requests",
|
|
476
|
+
"status": 429,
|
|
477
|
+
"params": [],
|
|
478
|
+
"remediation": "wait_and_retry",
|
|
479
|
+
"en": "Too many requests. Please try again later."
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
"code": "error.500.internal",
|
|
483
|
+
"status": 500,
|
|
484
|
+
"params": [],
|
|
485
|
+
"remediation": "contact_support",
|
|
486
|
+
"en": "Something went wrong"
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
"code": "error.503.mandate_unavailable",
|
|
490
|
+
"status": 503,
|
|
491
|
+
"params": [],
|
|
492
|
+
"remediation": "retry",
|
|
493
|
+
"en": "Cannot verify workspace mandate right now"
|
|
494
|
+
}
|
|
495
|
+
]
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// AUTO-GENERATED by scripts/gen-errors.mjs — do not edit by hand.
|
|
2
|
+
// Source: stapel-auth canonical errors.json (backend codegen artifact).
|
|
3
|
+
// Regenerate: pnpm gen:errors · Drift gate: pnpm gen:errors:check
|
|
4
|
+
// Locale source: backend translations/errors.ru.json (locale catalog
|
|
5
|
+
// beside the canonical errors.json — i18n-shipping.md §1).
|
|
6
|
+
import type { CategoriesErrorCode } from "./errors.gen.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* `ru` texts for the backend error codes this catalog carries.
|
|
10
|
+
*
|
|
11
|
+
* PARTIAL, and deliberately typed to say so: 20 key(s) owned by
|
|
12
|
+
* stapel_attributes, stapel_categories are absent, because that owner ships no locale catalog
|
|
13
|
+
* (ERRORS_LOCALE_EXEMPT_OWNERS). English for them still comes from the registry
|
|
14
|
+
* artifact via the en bundle; the pair layers its own authored `ru`
|
|
15
|
+
* strings over this one until upstream ships translations. `Partial` is what
|
|
16
|
+
* makes the gap visible to TypeScript instead of a silent English fallback.
|
|
17
|
+
*
|
|
18
|
+
* Import from the pair's `./i18n/ru` subpath, NOT the main entry, so
|
|
19
|
+
* the locale stays out of hosts that don't ship it.
|
|
20
|
+
*/
|
|
21
|
+
export const categoriesErrorBundleRu: Partial<Record<CategoriesErrorCode, string>> = {
|
|
22
|
+
"error.400.bad_request": "Некорректный запрос",
|
|
23
|
+
"error.400.captcha_invalid": "Проверка капчи не пройдена. Пожалуйста, попробуйте ещё раз.",
|
|
24
|
+
"error.400.captcha_required": "Требуется токен капчи.",
|
|
25
|
+
"error.400.expected_list": "Ожидался список элементов",
|
|
26
|
+
"error.400.field.blank": "Поле «{field}» не может быть пустым",
|
|
27
|
+
"error.400.field.does_not_exist": "«{field}» не существует",
|
|
28
|
+
"error.400.field.invalid": "Поле «{field}» содержит недопустимое значение",
|
|
29
|
+
"error.400.field.invalid_choice": "Недопустимый вариант для поля «{field}»",
|
|
30
|
+
"error.400.field.max_length": "Поле «{field}» должно содержать не более {max_length} символов",
|
|
31
|
+
"error.400.field.max_value": "Значение поля «{field}» должно быть не больше {max_value}",
|
|
32
|
+
"error.400.field.min_length": "Поле «{field}» должно содержать не менее {min_length} символов",
|
|
33
|
+
"error.400.field.min_value": "Значение поля «{field}» должно быть не меньше {min_value}",
|
|
34
|
+
"error.400.field.null": "Поле «{field}» не может быть null",
|
|
35
|
+
"error.400.field.required": "Поле «{field}» обязательно",
|
|
36
|
+
"error.400.field.unique": "Значение поля «{field}» должно быть уникальным",
|
|
37
|
+
"error.400.invalid_ad_id": "Недопустимый идентификатор объявления",
|
|
38
|
+
"error.400.validation_error": "Ошибка валидации",
|
|
39
|
+
"error.400.verification_failed": "Проверка не пройдена",
|
|
40
|
+
"error.400.verification_invalid_factor": "Этот способ подтверждения недоступен",
|
|
41
|
+
"error.401.unauthorized": "Требуется аутентификация",
|
|
42
|
+
"error.402.payment_required": "Требуется оплата",
|
|
43
|
+
"error.403.forbidden": "У вас нет прав для выполнения этого действия",
|
|
44
|
+
"error.403.network_blocked": "Запросы из этой сети не разрешены.",
|
|
45
|
+
"error.403.verification_enrollment_required": "Требуется регистрация фактора подтверждения.",
|
|
46
|
+
"error.403.verification_required": "Требуется дополнительная проверка",
|
|
47
|
+
"error.404.ad_not_found": "Объявление не найдено",
|
|
48
|
+
"error.404.not_found": "Запрошенный ресурс не найден",
|
|
49
|
+
"error.404.verification_challenge_not_found": "Запрос на подтверждение не найден или истёк",
|
|
50
|
+
"error.405.method_not_allowed": "Метод не разрешён",
|
|
51
|
+
"error.406.not_acceptable": "Недопустимый формат ответа",
|
|
52
|
+
"error.408.request_timeout": "Время ожидания запроса истекло",
|
|
53
|
+
"error.409.conflict": "Ресурс уже существует",
|
|
54
|
+
"error.410.gone": "Ресурс был безвозвратно удалён",
|
|
55
|
+
"error.413.payload_too_large": "Тело запроса слишком большое",
|
|
56
|
+
"error.415.unsupported_media_type": "Неподдерживаемый тип данных",
|
|
57
|
+
"error.422.unprocessable_entity": "Невозможно обработать данные запроса",
|
|
58
|
+
"error.423.locked": "Ресурс заблокирован",
|
|
59
|
+
"error.423.verification_locked": "Слишком много неудачных попыток — подтверждение заблокировано",
|
|
60
|
+
"error.429.rate_limit": "Слишком много попыток. Повторите попытку через {retry_after_minutes} мин.",
|
|
61
|
+
"error.429.too_many_requests": "Слишком много запросов. Пожалуйста, повторите попытку позже.",
|
|
62
|
+
"error.500.internal": "Что-то пошло не так",
|
|
63
|
+
"error.503.mandate_unavailable": "Не удалось проверить доступ к рабочему пространству",
|
|
64
|
+
};
|