@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,25 @@
|
|
|
1
|
+
import type { I18nDictionary, I18nEngine } from "@stapel/core";
|
|
2
|
+
export { categoriesErrorBundleEs } from "./generated/errors.es.gen.js";
|
|
3
|
+
/**
|
|
4
|
+
* Spanish bundle for categories-react — the
|
|
5
|
+
* `@stapel/categories-react/i18n/es` subpath (i18n-shipping.md §2), opt-in
|
|
6
|
+
* exactly like `ru`.
|
|
7
|
+
*
|
|
8
|
+
* Same composition and the same three-way split by owner as `./ru`: the 42
|
|
9
|
+
* cross-cutting `stapel_core` codes are generated from core's catalogue, the 8
|
|
10
|
+
* `stapel_categories` codes are pair-authored here until upstream ships a
|
|
11
|
+
* `translations/` directory, and the 12 `stapel_attributes` codes stay with
|
|
12
|
+
* `@stapel/attributes-react`, which owns them.
|
|
13
|
+
*
|
|
14
|
+
* `es` carries the full UI copy, not just the refusals: the catalogue is the
|
|
15
|
+
* first thing a visitor sees, and a half-translated menu above a translated
|
|
16
|
+
* search is worse than either.
|
|
17
|
+
*
|
|
18
|
+
* PROVENANCE: unreviewed, seed-grade, like every other authored catalogue in
|
|
19
|
+
* this wave.
|
|
20
|
+
*/
|
|
21
|
+
export declare const categoriesI18nBundleEs: I18nDictionary;
|
|
22
|
+
/** Register the `es` bundle. Call AFTER `registerCategoriesI18n` so it
|
|
23
|
+
* overrides the English floor. */
|
|
24
|
+
export declare function registerCategoriesI18nEs(engine: I18nEngine, locale?: string): void;
|
|
25
|
+
//# sourceMappingURL=es.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"es.d.ts","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,sBAAsB,EAAE,cA8DpC,CAAC;AAEF;kCACkC;AAClC,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,SAAO,GAAG,IAAI,CAEhF"}
|
package/dist/i18n/es.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { categoriesErrorBundleEs } from "./generated/errors.es.gen.js";
|
|
2
|
+
export { categoriesErrorBundleEs } from "./generated/errors.es.gen.js";
|
|
3
|
+
/**
|
|
4
|
+
* Spanish bundle for categories-react — the
|
|
5
|
+
* `@stapel/categories-react/i18n/es` subpath (i18n-shipping.md §2), opt-in
|
|
6
|
+
* exactly like `ru`.
|
|
7
|
+
*
|
|
8
|
+
* Same composition and the same three-way split by owner as `./ru`: the 42
|
|
9
|
+
* cross-cutting `stapel_core` codes are generated from core's catalogue, the 8
|
|
10
|
+
* `stapel_categories` codes are pair-authored here until upstream ships a
|
|
11
|
+
* `translations/` directory, and the 12 `stapel_attributes` codes stay with
|
|
12
|
+
* `@stapel/attributes-react`, which owns them.
|
|
13
|
+
*
|
|
14
|
+
* `es` carries the full UI copy, not just the refusals: the catalogue is the
|
|
15
|
+
* first thing a visitor sees, and a half-translated menu above a translated
|
|
16
|
+
* search is worse than either.
|
|
17
|
+
*
|
|
18
|
+
* PROVENANCE: unreviewed, seed-grade, like every other authored catalogue in
|
|
19
|
+
* this wave.
|
|
20
|
+
*/
|
|
21
|
+
export const categoriesI18nBundleEs = {
|
|
22
|
+
...categoriesErrorBundleEs,
|
|
23
|
+
// ── the 8 stapel_categories-owned codes, pair-authored ───────────────────
|
|
24
|
+
"error.400.categories_config_required": "Se requiere un objeto config.",
|
|
25
|
+
"error.400.categories_database_error": "Error de base de datos al aplicar los cambios.",
|
|
26
|
+
"error.400.categories_duplicate_slug": "Ya existe una característica con el slug «{slug}».",
|
|
27
|
+
"error.400.categories_expected_list": "Se esperaba una lista de objetos.",
|
|
28
|
+
"error.400.categories_feature_editor_invalid": "Solicitud del editor de características no válida: {reason}",
|
|
29
|
+
"error.400.categories_invalid_conversion": "Conversión de tipo no válida (solo se admite select ↔ string).",
|
|
30
|
+
"error.400.categories_not_deleted": "La categoría no está eliminada.",
|
|
31
|
+
"error.409.categories_feature_editor_conflict": "Otro editor modificó la categoría (se esperaba la revisión {expected}, ahora {actual}); recarga y vuelve a intentarlo.",
|
|
32
|
+
"categories.error.unknown": "Algo salió mal con el catálogo.",
|
|
33
|
+
"categories.catalog.title": "Catálogo",
|
|
34
|
+
"categories.catalog.loading": "Cargando el catálogo…",
|
|
35
|
+
"categories.catalog.load_failed": "No pudimos cargar el catálogo.",
|
|
36
|
+
"categories.catalog.empty": "Este catálogo todavía no tiene categorías.",
|
|
37
|
+
"categories.catalog.retry": "Reintentar",
|
|
38
|
+
"categories.catalog.truncated": "Solo se cargó parte del catálogo. Una categoría que falte aquí aún no se ha leído: no se ha eliminado.",
|
|
39
|
+
"categories.catalog.refreshing": "Comprobando cambios en el catálogo…",
|
|
40
|
+
"categories.catalog.as_of": "Catálogo a la revisión {revision}",
|
|
41
|
+
"categories.category.title": "Categoría",
|
|
42
|
+
"categories.category.unknown_slug": "No hay ninguna categoría en esta dirección.",
|
|
43
|
+
"categories.category.subcategories": "Subcategorías",
|
|
44
|
+
"categories.category.no_subcategories": "Esta categoría no tiene subcategorías.",
|
|
45
|
+
"categories.category.open": "Abrir",
|
|
46
|
+
"categories.breadcrumbs.root": "Todas las categorías",
|
|
47
|
+
"categories.breadcrumbs.label": "Estás aquí",
|
|
48
|
+
"categories.carousel.title": "Explorar por categoría",
|
|
49
|
+
"categories.carousel.loading": "Cargando categorías…",
|
|
50
|
+
"categories.carousel.load_failed": "No pudimos cargar las categorías.",
|
|
51
|
+
"categories.carousel.empty": "Ahora mismo no hay categorías destacadas.",
|
|
52
|
+
"categories.picker.title": "Categoría",
|
|
53
|
+
"categories.picker.search": "Buscar categorías",
|
|
54
|
+
"categories.picker.loading": "Cargando categorías…",
|
|
55
|
+
"categories.picker.load_failed": "No pudimos cargar las categorías.",
|
|
56
|
+
"categories.picker.no_matches": "Ninguna categoría coincide.",
|
|
57
|
+
"categories.picker.up": "Subir un nivel",
|
|
58
|
+
"categories.picker.selected": "Seleccionada: {category}",
|
|
59
|
+
"categories.picker.blocked.nothing_selected": "Elige primero una categoría.",
|
|
60
|
+
"categories.picker.blocked.not_a_leaf": "Elige una categoría más concreta: esta tiene subcategorías, y de ellas dependen los datos que se piden.",
|
|
61
|
+
"categories.features.title": "Datos de esta categoría",
|
|
62
|
+
"categories.features.loading": "Cargando los datos…",
|
|
63
|
+
"categories.features.load_failed": "No pudimos cargar los datos.",
|
|
64
|
+
"categories.features.empty": "Esta categoría no pide datos adicionales.",
|
|
65
|
+
"categories.features.mandatory": "Obligatorio",
|
|
66
|
+
"categories.features.type": "{type}",
|
|
67
|
+
"categories.features.untyped": "Este dato no tiene tipo y no se puede mostrar.",
|
|
68
|
+
};
|
|
69
|
+
/** Register the `es` bundle. Call AFTER `registerCategoriesI18n` so it
|
|
70
|
+
* overrides the English floor. */
|
|
71
|
+
export function registerCategoriesI18nEs(engine, locale = "es") {
|
|
72
|
+
engine.registerBundle(locale, categoriesI18nBundleEs);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"es.js","sourceRoot":"","sources":["../../src/i18n/es.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAmB;IACpD,GAAG,uBAAuB;IAE1B,4EAA4E;IAC5E,sCAAsC,EAAE,+BAA+B;IACvE,qCAAqC,EACnC,gDAAgD;IAClD,qCAAqC,EACnC,oDAAoD;IACtD,oCAAoC,EAAE,mCAAmC;IACzE,6CAA6C,EAC3C,6DAA6D;IAC/D,yCAAyC,EACvC,gEAAgE;IAClE,kCAAkC,EAAE,iCAAiC;IACrE,8CAA8C,EAC5C,wHAAwH;IAE1H,0BAA0B,EAAE,iCAAiC;IAE7D,0BAA0B,EAAE,UAAU;IACtC,4BAA4B,EAAE,uBAAuB;IACrD,gCAAgC,EAAE,gCAAgC;IAClE,0BAA0B,EAAE,4CAA4C;IACxE,0BAA0B,EAAE,YAAY;IACxC,8BAA8B,EAC5B,wGAAwG;IAC1G,+BAA+B,EAAE,qCAAqC;IACtE,0BAA0B,EAAE,mCAAmC;IAE/D,2BAA2B,EAAE,WAAW;IACxC,kCAAkC,EAAE,6CAA6C;IACjF,mCAAmC,EAAE,eAAe;IACpD,sCAAsC,EAAE,wCAAwC;IAChF,0BAA0B,EAAE,OAAO;IAEnC,6BAA6B,EAAE,sBAAsB;IACrD,8BAA8B,EAAE,YAAY;IAE5C,2BAA2B,EAAE,wBAAwB;IACrD,6BAA6B,EAAE,sBAAsB;IACrD,iCAAiC,EAAE,mCAAmC;IACtE,2BAA2B,EAAE,2CAA2C;IAExE,yBAAyB,EAAE,WAAW;IACtC,0BAA0B,EAAE,mBAAmB;IAC/C,2BAA2B,EAAE,sBAAsB;IACnD,+BAA+B,EAAE,mCAAmC;IACpE,8BAA8B,EAAE,6BAA6B;IAC7D,sBAAsB,EAAE,gBAAgB;IACxC,4BAA4B,EAAE,0BAA0B;IACxD,4CAA4C,EAAE,8BAA8B;IAC5E,sCAAsC,EACpC,yGAAyG;IAE3G,2BAA2B,EAAE,yBAAyB;IACtD,6BAA6B,EAAE,qBAAqB;IACpD,iCAAiC,EAAE,8BAA8B;IACjE,2BAA2B,EAAE,2CAA2C;IACxE,+BAA+B,EAAE,aAAa;IAC9C,0BAA0B,EAAE,QAAQ;IACpC,6BAA6B,EAAE,gDAAgD;CAChF,CAAC;AAEF;kCACkC;AAClC,MAAM,UAAU,wBAAwB,CAAC,MAAkB,EAAE,MAAM,GAAG,IAAI;IACxE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CategoriesErrorCode } from "./errors.gen.js";
|
|
2
|
+
/**
|
|
3
|
+
* `es` texts for the backend error codes this catalog carries.
|
|
4
|
+
*
|
|
5
|
+
* PARTIAL, and deliberately typed to say so: 20 key(s) owned by
|
|
6
|
+
* stapel_attributes, stapel_categories are absent, because that owner ships no locale catalog
|
|
7
|
+
* (ERRORS_LOCALE_EXEMPT_OWNERS). English for them still comes from the registry
|
|
8
|
+
* artifact via the en bundle; the pair layers its own authored `es`
|
|
9
|
+
* strings over this one until upstream ships translations. `Partial` is what
|
|
10
|
+
* makes the gap visible to TypeScript instead of a silent English fallback.
|
|
11
|
+
*
|
|
12
|
+
* Import from the pair's `./i18n/es` subpath, NOT the main entry, so
|
|
13
|
+
* the locale stays out of hosts that don't ship it.
|
|
14
|
+
*/
|
|
15
|
+
export declare const categoriesErrorBundleEs: Partial<Record<CategoriesErrorCode, string>>;
|
|
16
|
+
//# sourceMappingURL=errors.es.gen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.es.gen.d.ts","sourceRoot":"","sources":["../../../src/i18n/generated/errors.es.gen.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CA2ChF,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `es` texts for the backend error codes this catalog carries.
|
|
3
|
+
*
|
|
4
|
+
* PARTIAL, and deliberately typed to say so: 20 key(s) owned by
|
|
5
|
+
* stapel_attributes, stapel_categories are absent, because that owner ships no locale catalog
|
|
6
|
+
* (ERRORS_LOCALE_EXEMPT_OWNERS). English for them still comes from the registry
|
|
7
|
+
* artifact via the en bundle; the pair layers its own authored `es`
|
|
8
|
+
* strings over this one until upstream ships translations. `Partial` is what
|
|
9
|
+
* makes the gap visible to TypeScript instead of a silent English fallback.
|
|
10
|
+
*
|
|
11
|
+
* Import from the pair's `./i18n/es` subpath, NOT the main entry, so
|
|
12
|
+
* the locale stays out of hosts that don't ship it.
|
|
13
|
+
*/
|
|
14
|
+
export const categoriesErrorBundleEs = {
|
|
15
|
+
"error.400.bad_request": "Solicitud incorrecta",
|
|
16
|
+
"error.400.captcha_invalid": "La verificación del captcha ha fallado. Inténtalo de nuevo.",
|
|
17
|
+
"error.400.captcha_required": "Se requiere el token del captcha.",
|
|
18
|
+
"error.400.expected_list": "Se esperaba una lista de elementos",
|
|
19
|
+
"error.400.field.blank": "{field} no puede estar vacío",
|
|
20
|
+
"error.400.field.does_not_exist": "{field} no existe",
|
|
21
|
+
"error.400.field.invalid": "{field} no es válido",
|
|
22
|
+
"error.400.field.invalid_choice": "{field} no es una opción válida",
|
|
23
|
+
"error.400.field.max_length": "{field} debe tener como máximo {max_length} caracteres",
|
|
24
|
+
"error.400.field.max_value": "{field} debe ser como máximo {max_value}",
|
|
25
|
+
"error.400.field.min_length": "{field} debe tener al menos {min_length} caracteres",
|
|
26
|
+
"error.400.field.min_value": "{field} debe ser como mínimo {min_value}",
|
|
27
|
+
"error.400.field.null": "{field} no puede ser nulo",
|
|
28
|
+
"error.400.field.required": "{field} es obligatorio",
|
|
29
|
+
"error.400.field.unique": "{field} debe ser único",
|
|
30
|
+
"error.400.invalid_ad_id": "ID de anuncio no válido",
|
|
31
|
+
"error.400.validation_error": "Error de validación",
|
|
32
|
+
"error.400.verification_failed": "La verificación ha fallado",
|
|
33
|
+
"error.400.verification_invalid_factor": "Este factor de verificación no está disponible",
|
|
34
|
+
"error.401.unauthorized": "Se requiere autenticación",
|
|
35
|
+
"error.402.payment_required": "Se requiere pago",
|
|
36
|
+
"error.403.forbidden": "No tienes permiso para realizar esta acción",
|
|
37
|
+
"error.403.network_blocked": "No se permiten solicitudes desde esta red.",
|
|
38
|
+
"error.403.verification_enrollment_required": "Es necesario registrar un factor de verificación.",
|
|
39
|
+
"error.403.verification_required": "Se requiere verificación adicional",
|
|
40
|
+
"error.404.ad_not_found": "Anuncio no encontrado",
|
|
41
|
+
"error.404.not_found": "Recurso solicitado no encontrado",
|
|
42
|
+
"error.404.verification_challenge_not_found": "Desafío de verificación no encontrado o caducado",
|
|
43
|
+
"error.405.method_not_allowed": "Método no permitido",
|
|
44
|
+
"error.406.not_acceptable": "No aceptable",
|
|
45
|
+
"error.408.request_timeout": "Tiempo de espera de la solicitud agotado",
|
|
46
|
+
"error.409.conflict": "El recurso ya existe",
|
|
47
|
+
"error.410.gone": "El recurso se ha eliminado permanentemente",
|
|
48
|
+
"error.413.payload_too_large": "El cuerpo de la solicitud es demasiado grande",
|
|
49
|
+
"error.415.unsupported_media_type": "Tipo de contenido no compatible",
|
|
50
|
+
"error.422.unprocessable_entity": "Entidad no procesable",
|
|
51
|
+
"error.423.locked": "El recurso está bloqueado",
|
|
52
|
+
"error.423.verification_locked": "Demasiados intentos fallidos — verificación bloqueada",
|
|
53
|
+
"error.429.rate_limit": "Demasiados intentos. Inténtalo de nuevo en {retry_after_minutes} minutos.",
|
|
54
|
+
"error.429.too_many_requests": "Demasiadas solicitudes. Inténtalo de nuevo más tarde.",
|
|
55
|
+
"error.500.internal": "Algo salió mal",
|
|
56
|
+
"error.503.mandate_unavailable": "No se puede verificar el mandato del espacio de trabajo",
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=errors.es.gen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.es.gen.js","sourceRoot":"","sources":["../../../src/i18n/generated/errors.es.gen.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAiD;IACnF,uBAAuB,EAAE,sBAAsB;IAC/C,2BAA2B,EAAE,6DAA6D;IAC1F,4BAA4B,EAAE,mCAAmC;IACjE,yBAAyB,EAAE,oCAAoC;IAC/D,uBAAuB,EAAE,8BAA8B;IACvD,gCAAgC,EAAE,mBAAmB;IACrD,yBAAyB,EAAE,sBAAsB;IACjD,gCAAgC,EAAE,iCAAiC;IACnE,4BAA4B,EAAE,wDAAwD;IACtF,2BAA2B,EAAE,0CAA0C;IACvE,4BAA4B,EAAE,qDAAqD;IACnF,2BAA2B,EAAE,0CAA0C;IACvE,sBAAsB,EAAE,2BAA2B;IACnD,0BAA0B,EAAE,wBAAwB;IACpD,wBAAwB,EAAE,wBAAwB;IAClD,yBAAyB,EAAE,yBAAyB;IACpD,4BAA4B,EAAE,qBAAqB;IACnD,+BAA+B,EAAE,4BAA4B;IAC7D,uCAAuC,EAAE,gDAAgD;IACzF,wBAAwB,EAAE,2BAA2B;IACrD,4BAA4B,EAAE,kBAAkB;IAChD,qBAAqB,EAAE,6CAA6C;IACpE,2BAA2B,EAAE,4CAA4C;IACzE,4CAA4C,EAAE,mDAAmD;IACjG,iCAAiC,EAAE,oCAAoC;IACvE,wBAAwB,EAAE,uBAAuB;IACjD,qBAAqB,EAAE,kCAAkC;IACzD,4CAA4C,EAAE,kDAAkD;IAChG,8BAA8B,EAAE,qBAAqB;IACrD,0BAA0B,EAAE,cAAc;IAC1C,2BAA2B,EAAE,0CAA0C;IACvE,oBAAoB,EAAE,sBAAsB;IAC5C,gBAAgB,EAAE,4CAA4C;IAC9D,6BAA6B,EAAE,+CAA+C;IAC9E,kCAAkC,EAAE,iCAAiC;IACrE,gCAAgC,EAAE,uBAAuB;IACzD,kBAAkB,EAAE,2BAA2B;IAC/C,+BAA+B,EAAE,uDAAuD;IACxF,sBAAsB,EAAE,2EAA2E;IACnG,6BAA6B,EAAE,uDAAuD;IACtF,oBAAoB,EAAE,gBAAgB;IACtC,+BAA+B,EAAE,yDAAyD;CAC3F,CAAC"}
|
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remediation vocabulary (frontend-core-architecture §2.5). Declared by the
|
|
3
|
+
* backend on the error registry and consumed verbatim from its `errors.json`
|
|
4
|
+
* artifact. A host maps it to UX — retryable → "try again"; `wait_and_retry` →
|
|
5
|
+
* timer from `params.retry_after_minutes`; `verify` → the step-up seam;
|
|
6
|
+
* `fix_input` → highlight the offending field.
|
|
7
|
+
*/
|
|
8
|
+
export type Remediation = "retry" | "wait_and_retry" | "reauthenticate" | "verify" | "fix_input" | "contact_support" | "bug";
|
|
9
|
+
export interface CategoriesErrorSpec {
|
|
10
|
+
/** HTTP status the backend raises this key with. */
|
|
11
|
+
readonly status: number;
|
|
12
|
+
/** `{param}` interpolation slots present in the message. */
|
|
13
|
+
readonly params: readonly string[];
|
|
14
|
+
/** Remediation hint declared by the backend (see {@link Remediation}). */
|
|
15
|
+
readonly remediation: Remediation;
|
|
16
|
+
/** English fallback (source: stapel-auth errors.json). */
|
|
17
|
+
readonly en: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The CATEGORIES_ERRORS map — every `error.*` key stapel-auth can raise, keyed by its
|
|
21
|
+
* canonical code. The single source of truth behind the en fallback bundle, the
|
|
22
|
+
* remediation lookup, and the manifest `errors` block.
|
|
23
|
+
*/
|
|
24
|
+
export declare const CATEGORIES_ERRORS: {
|
|
25
|
+
readonly "error.400.bad_request": {
|
|
26
|
+
readonly status: 400;
|
|
27
|
+
readonly params: readonly [];
|
|
28
|
+
readonly remediation: "fix_input";
|
|
29
|
+
readonly en: "Bad request";
|
|
30
|
+
};
|
|
31
|
+
readonly "error.400.captcha_invalid": {
|
|
32
|
+
readonly status: 400;
|
|
33
|
+
readonly params: readonly [];
|
|
34
|
+
readonly remediation: "retry";
|
|
35
|
+
readonly en: "Captcha verification failed. Please try again.";
|
|
36
|
+
};
|
|
37
|
+
readonly "error.400.captcha_required": {
|
|
38
|
+
readonly status: 400;
|
|
39
|
+
readonly params: readonly [];
|
|
40
|
+
readonly remediation: "retry";
|
|
41
|
+
readonly en: "Captcha token is required.";
|
|
42
|
+
};
|
|
43
|
+
readonly "error.400.categories_config_required": {
|
|
44
|
+
readonly status: 400;
|
|
45
|
+
readonly params: readonly [];
|
|
46
|
+
readonly remediation: "fix_input";
|
|
47
|
+
readonly en: "A config object is required";
|
|
48
|
+
};
|
|
49
|
+
readonly "error.400.categories_database_error": {
|
|
50
|
+
readonly status: 400;
|
|
51
|
+
readonly params: readonly [];
|
|
52
|
+
readonly remediation: "fix_input";
|
|
53
|
+
readonly en: "Database error while applying changes";
|
|
54
|
+
};
|
|
55
|
+
readonly "error.400.categories_duplicate_slug": {
|
|
56
|
+
readonly status: 400;
|
|
57
|
+
readonly params: readonly ["slug"];
|
|
58
|
+
readonly remediation: "fix_input";
|
|
59
|
+
readonly en: "A feature with slug '{slug}' already exists";
|
|
60
|
+
};
|
|
61
|
+
readonly "error.400.categories_expected_list": {
|
|
62
|
+
readonly status: 400;
|
|
63
|
+
readonly params: readonly [];
|
|
64
|
+
readonly remediation: "fix_input";
|
|
65
|
+
readonly en: "Expected a list of objects";
|
|
66
|
+
};
|
|
67
|
+
readonly "error.400.categories_feature_editor_invalid": {
|
|
68
|
+
readonly status: 400;
|
|
69
|
+
readonly params: readonly ["reason"];
|
|
70
|
+
readonly remediation: "fix_input";
|
|
71
|
+
readonly en: "Invalid feature editor request: {reason}";
|
|
72
|
+
};
|
|
73
|
+
readonly "error.400.categories_invalid_conversion": {
|
|
74
|
+
readonly status: 400;
|
|
75
|
+
readonly params: readonly [];
|
|
76
|
+
readonly remediation: "fix_input";
|
|
77
|
+
readonly en: "Invalid type conversion (only select<->string is supported)";
|
|
78
|
+
};
|
|
79
|
+
readonly "error.400.categories_not_deleted": {
|
|
80
|
+
readonly status: 400;
|
|
81
|
+
readonly params: readonly [];
|
|
82
|
+
readonly remediation: "fix_input";
|
|
83
|
+
readonly en: "Category is not deleted";
|
|
84
|
+
};
|
|
85
|
+
readonly "error.400.description_too_long": {
|
|
86
|
+
readonly status: 400;
|
|
87
|
+
readonly params: readonly ["max_length"];
|
|
88
|
+
readonly remediation: "fix_input";
|
|
89
|
+
readonly en: "Description must be at most {max_length} characters";
|
|
90
|
+
};
|
|
91
|
+
readonly "error.400.description_too_short": {
|
|
92
|
+
readonly status: 400;
|
|
93
|
+
readonly params: readonly ["min_length"];
|
|
94
|
+
readonly remediation: "fix_input";
|
|
95
|
+
readonly en: "Description must be at least {min_length} characters";
|
|
96
|
+
};
|
|
97
|
+
readonly "error.400.expected_list": {
|
|
98
|
+
readonly status: 400;
|
|
99
|
+
readonly params: readonly [];
|
|
100
|
+
readonly remediation: "fix_input";
|
|
101
|
+
readonly en: "Expected a list of items";
|
|
102
|
+
};
|
|
103
|
+
readonly "error.400.feature_above_maximum": {
|
|
104
|
+
readonly status: 400;
|
|
105
|
+
readonly params: readonly ["feature"];
|
|
106
|
+
readonly remediation: "fix_input";
|
|
107
|
+
readonly en: "Value is above maximum for {feature}";
|
|
108
|
+
};
|
|
109
|
+
readonly "error.400.feature_below_minimum": {
|
|
110
|
+
readonly status: 400;
|
|
111
|
+
readonly params: readonly ["feature"];
|
|
112
|
+
readonly remediation: "fix_input";
|
|
113
|
+
readonly en: "Value is below minimum for {feature}";
|
|
114
|
+
};
|
|
115
|
+
readonly "error.400.feature_invalid_config": {
|
|
116
|
+
readonly status: 400;
|
|
117
|
+
readonly params: readonly ["feature"];
|
|
118
|
+
readonly remediation: "fix_input";
|
|
119
|
+
readonly en: "Invalid config for {feature}";
|
|
120
|
+
};
|
|
121
|
+
readonly "error.400.feature_invalid_format": {
|
|
122
|
+
readonly status: 400;
|
|
123
|
+
readonly params: readonly ["feature"];
|
|
124
|
+
readonly remediation: "fix_input";
|
|
125
|
+
readonly en: "Invalid format for {feature}";
|
|
126
|
+
};
|
|
127
|
+
readonly "error.400.feature_invalid_type": {
|
|
128
|
+
readonly status: 400;
|
|
129
|
+
readonly params: readonly ["feature"];
|
|
130
|
+
readonly remediation: "fix_input";
|
|
131
|
+
readonly en: "Invalid type for {feature}";
|
|
132
|
+
};
|
|
133
|
+
readonly "error.400.feature_mandatory_missing": {
|
|
134
|
+
readonly status: 400;
|
|
135
|
+
readonly params: readonly ["feature"];
|
|
136
|
+
readonly remediation: "fix_input";
|
|
137
|
+
readonly en: "Mandatory feature {feature} is required";
|
|
138
|
+
};
|
|
139
|
+
readonly "error.400.feature_not_allowed": {
|
|
140
|
+
readonly status: 400;
|
|
141
|
+
readonly params: readonly ["feature"];
|
|
142
|
+
readonly remediation: "fix_input";
|
|
143
|
+
readonly en: "Feature {feature} is not allowed here";
|
|
144
|
+
};
|
|
145
|
+
readonly "error.400.feature_not_in_options": {
|
|
146
|
+
readonly status: 400;
|
|
147
|
+
readonly params: readonly ["feature"];
|
|
148
|
+
readonly remediation: "fix_input";
|
|
149
|
+
readonly en: "Value is not in allowed options for {feature}";
|
|
150
|
+
};
|
|
151
|
+
readonly "error.400.feature_unknown": {
|
|
152
|
+
readonly status: 400;
|
|
153
|
+
readonly params: readonly ["feature"];
|
|
154
|
+
readonly remediation: "fix_input";
|
|
155
|
+
readonly en: "Unknown feature {feature}";
|
|
156
|
+
};
|
|
157
|
+
readonly "error.400.feature_unknown_type": {
|
|
158
|
+
readonly status: 400;
|
|
159
|
+
readonly params: readonly ["feature"];
|
|
160
|
+
readonly remediation: "fix_input";
|
|
161
|
+
readonly en: "Unknown feature type for {feature}";
|
|
162
|
+
};
|
|
163
|
+
readonly "error.400.field.blank": {
|
|
164
|
+
readonly status: 400;
|
|
165
|
+
readonly params: readonly ["field"];
|
|
166
|
+
readonly remediation: "fix_input";
|
|
167
|
+
readonly en: "{field} may not be blank";
|
|
168
|
+
};
|
|
169
|
+
readonly "error.400.field.does_not_exist": {
|
|
170
|
+
readonly status: 400;
|
|
171
|
+
readonly params: readonly ["field"];
|
|
172
|
+
readonly remediation: "fix_input";
|
|
173
|
+
readonly en: "{field} does not exist";
|
|
174
|
+
};
|
|
175
|
+
readonly "error.400.field.invalid": {
|
|
176
|
+
readonly status: 400;
|
|
177
|
+
readonly params: readonly ["field"];
|
|
178
|
+
readonly remediation: "fix_input";
|
|
179
|
+
readonly en: "{field} is invalid";
|
|
180
|
+
};
|
|
181
|
+
readonly "error.400.field.invalid_choice": {
|
|
182
|
+
readonly status: 400;
|
|
183
|
+
readonly params: readonly ["field"];
|
|
184
|
+
readonly remediation: "fix_input";
|
|
185
|
+
readonly en: "{field} is not a valid choice";
|
|
186
|
+
};
|
|
187
|
+
readonly "error.400.field.max_length": {
|
|
188
|
+
readonly status: 400;
|
|
189
|
+
readonly params: readonly ["field", "max_length"];
|
|
190
|
+
readonly remediation: "fix_input";
|
|
191
|
+
readonly en: "{field} must be at most {max_length} characters";
|
|
192
|
+
};
|
|
193
|
+
readonly "error.400.field.max_value": {
|
|
194
|
+
readonly status: 400;
|
|
195
|
+
readonly params: readonly ["field", "max_value"];
|
|
196
|
+
readonly remediation: "fix_input";
|
|
197
|
+
readonly en: "{field} must be at most {max_value}";
|
|
198
|
+
};
|
|
199
|
+
readonly "error.400.field.min_length": {
|
|
200
|
+
readonly status: 400;
|
|
201
|
+
readonly params: readonly ["field", "min_length"];
|
|
202
|
+
readonly remediation: "fix_input";
|
|
203
|
+
readonly en: "{field} must be at least {min_length} characters";
|
|
204
|
+
};
|
|
205
|
+
readonly "error.400.field.min_value": {
|
|
206
|
+
readonly status: 400;
|
|
207
|
+
readonly params: readonly ["field", "min_value"];
|
|
208
|
+
readonly remediation: "fix_input";
|
|
209
|
+
readonly en: "{field} must be at least {min_value}";
|
|
210
|
+
};
|
|
211
|
+
readonly "error.400.field.null": {
|
|
212
|
+
readonly status: 400;
|
|
213
|
+
readonly params: readonly ["field"];
|
|
214
|
+
readonly remediation: "fix_input";
|
|
215
|
+
readonly en: "{field} may not be null";
|
|
216
|
+
};
|
|
217
|
+
readonly "error.400.field.required": {
|
|
218
|
+
readonly status: 400;
|
|
219
|
+
readonly params: readonly ["field"];
|
|
220
|
+
readonly remediation: "fix_input";
|
|
221
|
+
readonly en: "{field} is required";
|
|
222
|
+
};
|
|
223
|
+
readonly "error.400.field.unique": {
|
|
224
|
+
readonly status: 400;
|
|
225
|
+
readonly params: readonly ["field"];
|
|
226
|
+
readonly remediation: "fix_input";
|
|
227
|
+
readonly en: "{field} must be unique";
|
|
228
|
+
};
|
|
229
|
+
readonly "error.400.invalid_ad_id": {
|
|
230
|
+
readonly status: 400;
|
|
231
|
+
readonly params: readonly [];
|
|
232
|
+
readonly remediation: "fix_input";
|
|
233
|
+
readonly en: "Invalid advertisement ID";
|
|
234
|
+
};
|
|
235
|
+
readonly "error.400.validation_error": {
|
|
236
|
+
readonly status: 400;
|
|
237
|
+
readonly params: readonly [];
|
|
238
|
+
readonly remediation: "fix_input";
|
|
239
|
+
readonly en: "Validation error";
|
|
240
|
+
};
|
|
241
|
+
readonly "error.400.verification_failed": {
|
|
242
|
+
readonly status: 400;
|
|
243
|
+
readonly params: readonly [];
|
|
244
|
+
readonly remediation: "verify";
|
|
245
|
+
readonly en: "Verification failed";
|
|
246
|
+
};
|
|
247
|
+
readonly "error.400.verification_invalid_factor": {
|
|
248
|
+
readonly status: 400;
|
|
249
|
+
readonly params: readonly [];
|
|
250
|
+
readonly remediation: "verify";
|
|
251
|
+
readonly en: "This verification factor is not available";
|
|
252
|
+
};
|
|
253
|
+
readonly "error.401.unauthorized": {
|
|
254
|
+
readonly status: 401;
|
|
255
|
+
readonly params: readonly [];
|
|
256
|
+
readonly remediation: "reauthenticate";
|
|
257
|
+
readonly en: "Authentication required";
|
|
258
|
+
};
|
|
259
|
+
readonly "error.402.payment_required": {
|
|
260
|
+
readonly status: 402;
|
|
261
|
+
readonly params: readonly [];
|
|
262
|
+
readonly remediation: "retry";
|
|
263
|
+
readonly en: "Payment required";
|
|
264
|
+
};
|
|
265
|
+
readonly "error.403.forbidden": {
|
|
266
|
+
readonly status: 403;
|
|
267
|
+
readonly params: readonly [];
|
|
268
|
+
readonly remediation: "retry";
|
|
269
|
+
readonly en: "You do not have permission to perform this action";
|
|
270
|
+
};
|
|
271
|
+
readonly "error.403.network_blocked": {
|
|
272
|
+
readonly status: 403;
|
|
273
|
+
readonly params: readonly [];
|
|
274
|
+
readonly remediation: "contact_support";
|
|
275
|
+
readonly en: "Requests from this network are not allowed";
|
|
276
|
+
};
|
|
277
|
+
readonly "error.403.verification_enrollment_required": {
|
|
278
|
+
readonly status: 403;
|
|
279
|
+
readonly params: readonly [];
|
|
280
|
+
readonly remediation: "verify";
|
|
281
|
+
readonly en: "Verification factor enrollment required";
|
|
282
|
+
};
|
|
283
|
+
readonly "error.403.verification_required": {
|
|
284
|
+
readonly status: 403;
|
|
285
|
+
readonly params: readonly [];
|
|
286
|
+
readonly remediation: "verify";
|
|
287
|
+
readonly en: "Additional verification required";
|
|
288
|
+
};
|
|
289
|
+
readonly "error.404.ad_not_found": {
|
|
290
|
+
readonly status: 404;
|
|
291
|
+
readonly params: readonly [];
|
|
292
|
+
readonly remediation: "retry";
|
|
293
|
+
readonly en: "Listing not found";
|
|
294
|
+
};
|
|
295
|
+
readonly "error.404.not_found": {
|
|
296
|
+
readonly status: 404;
|
|
297
|
+
readonly params: readonly [];
|
|
298
|
+
readonly remediation: "retry";
|
|
299
|
+
readonly en: "Requested resource not found";
|
|
300
|
+
};
|
|
301
|
+
readonly "error.404.verification_challenge_not_found": {
|
|
302
|
+
readonly status: 404;
|
|
303
|
+
readonly params: readonly [];
|
|
304
|
+
readonly remediation: "verify";
|
|
305
|
+
readonly en: "Verification challenge not found or expired";
|
|
306
|
+
};
|
|
307
|
+
readonly "error.405.method_not_allowed": {
|
|
308
|
+
readonly status: 405;
|
|
309
|
+
readonly params: readonly [];
|
|
310
|
+
readonly remediation: "retry";
|
|
311
|
+
readonly en: "Method not allowed";
|
|
312
|
+
};
|
|
313
|
+
readonly "error.406.not_acceptable": {
|
|
314
|
+
readonly status: 406;
|
|
315
|
+
readonly params: readonly [];
|
|
316
|
+
readonly remediation: "retry";
|
|
317
|
+
readonly en: "Not acceptable";
|
|
318
|
+
};
|
|
319
|
+
readonly "error.408.request_timeout": {
|
|
320
|
+
readonly status: 408;
|
|
321
|
+
readonly params: readonly [];
|
|
322
|
+
readonly remediation: "retry";
|
|
323
|
+
readonly en: "Request timeout";
|
|
324
|
+
};
|
|
325
|
+
readonly "error.409.categories_feature_editor_conflict": {
|
|
326
|
+
readonly status: 409;
|
|
327
|
+
readonly params: readonly ["expected", "actual"];
|
|
328
|
+
readonly remediation: "fix_input";
|
|
329
|
+
readonly en: "Category was modified by another editor (expected revision {expected}, now {actual}); reload and retry";
|
|
330
|
+
};
|
|
331
|
+
readonly "error.409.conflict": {
|
|
332
|
+
readonly status: 409;
|
|
333
|
+
readonly params: readonly [];
|
|
334
|
+
readonly remediation: "fix_input";
|
|
335
|
+
readonly en: "Resource already exists";
|
|
336
|
+
};
|
|
337
|
+
readonly "error.410.gone": {
|
|
338
|
+
readonly status: 410;
|
|
339
|
+
readonly params: readonly [];
|
|
340
|
+
readonly remediation: "retry";
|
|
341
|
+
readonly en: "Resource has been permanently removed";
|
|
342
|
+
};
|
|
343
|
+
readonly "error.413.payload_too_large": {
|
|
344
|
+
readonly status: 413;
|
|
345
|
+
readonly params: readonly [];
|
|
346
|
+
readonly remediation: "retry";
|
|
347
|
+
readonly en: "Request body is too large";
|
|
348
|
+
};
|
|
349
|
+
readonly "error.415.unsupported_media_type": {
|
|
350
|
+
readonly status: 415;
|
|
351
|
+
readonly params: readonly [];
|
|
352
|
+
readonly remediation: "retry";
|
|
353
|
+
readonly en: "Unsupported media type";
|
|
354
|
+
};
|
|
355
|
+
readonly "error.422.unprocessable_entity": {
|
|
356
|
+
readonly status: 422;
|
|
357
|
+
readonly params: readonly [];
|
|
358
|
+
readonly remediation: "wait_and_retry";
|
|
359
|
+
readonly en: "Unprocessable entity";
|
|
360
|
+
};
|
|
361
|
+
readonly "error.423.locked": {
|
|
362
|
+
readonly status: 423;
|
|
363
|
+
readonly params: readonly [];
|
|
364
|
+
readonly remediation: "wait_and_retry";
|
|
365
|
+
readonly en: "Resource is locked";
|
|
366
|
+
};
|
|
367
|
+
readonly "error.423.verification_locked": {
|
|
368
|
+
readonly status: 423;
|
|
369
|
+
readonly params: readonly [];
|
|
370
|
+
readonly remediation: "wait_and_retry";
|
|
371
|
+
readonly en: "Too many failed attempts — verification locked";
|
|
372
|
+
};
|
|
373
|
+
readonly "error.429.rate_limit": {
|
|
374
|
+
readonly status: 429;
|
|
375
|
+
readonly params: readonly ["retry_after_minutes"];
|
|
376
|
+
readonly remediation: "wait_and_retry";
|
|
377
|
+
readonly en: "Too many attempts. Try again in {retry_after_minutes} minutes.";
|
|
378
|
+
};
|
|
379
|
+
readonly "error.429.too_many_requests": {
|
|
380
|
+
readonly status: 429;
|
|
381
|
+
readonly params: readonly [];
|
|
382
|
+
readonly remediation: "wait_and_retry";
|
|
383
|
+
readonly en: "Too many requests. Please try again later.";
|
|
384
|
+
};
|
|
385
|
+
readonly "error.500.internal": {
|
|
386
|
+
readonly status: 500;
|
|
387
|
+
readonly params: readonly [];
|
|
388
|
+
readonly remediation: "contact_support";
|
|
389
|
+
readonly en: "Something went wrong";
|
|
390
|
+
};
|
|
391
|
+
readonly "error.503.mandate_unavailable": {
|
|
392
|
+
readonly status: 503;
|
|
393
|
+
readonly params: readonly [];
|
|
394
|
+
readonly remediation: "retry";
|
|
395
|
+
readonly en: "Cannot verify workspace mandate right now";
|
|
396
|
+
};
|
|
397
|
+
};
|
|
398
|
+
export type CategoriesErrorCode = keyof typeof CATEGORIES_ERRORS;
|
|
399
|
+
/** Every backend error code this module can surface, sorted. */
|
|
400
|
+
export declare const CATEGORIES_ERROR_CODES: readonly CategoriesErrorCode[];
|
|
401
|
+
/**
|
|
402
|
+
* English fallback bundle — one string per backend key, so a `StapelApiError.code`
|
|
403
|
+
* never renders as a raw key. Merged UNDER the hand-polished UI copy in
|
|
404
|
+
* {@link authI18nBundleEn} (polish wins; this guarantees coverage).
|
|
405
|
+
*/
|
|
406
|
+
export declare const categoriesErrorBundleEn: Record<CategoriesErrorCode, string>;
|
|
407
|
+
//# sourceMappingURL=errors.gen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.gen.d.ts","sourceRoot":"","sources":["../../../src/i18n/generated/errors.gen.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GACnB,OAAO,GACP,gBAAgB,GAChB,gBAAgB,GAChB,QAAQ,GACR,WAAW,GACX,iBAAiB,GACjB,KAAK,CAAC;AAEV,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DpB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAEjE,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,EAAE,SAAS,mBAAmB,EA+DhE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CA+DvE,CAAC"}
|