Skip to content

Commit 47a02eb

Browse files
🐛 fix(docs): decode unicode escapes and fix encoding in pt/es translations
1 parent 05bf4ed commit 47a02eb

12 files changed

Lines changed: 159 additions & 159 deletions

es/exceptions/exception-layout-strategy.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ Usa el decorator cuando la propia clase de exception debería llevar un layout p
9696

9797
## Cuando mapear en configuración
9898

99-
Mapea en *spraxium.config.ts* cuando la política de layout esta orientada por decisiones de producto como branding, tono de lenguaje o estrategia específica por entorno. Este es generalmente el mejor default para gobernanza a nivel de aplicación porque centraliza toda la lógica de presentación de error en un lugar, facilitando la gestión de cambios ya que puedes intercambiar la política de layout sin modificar ninguna clase de exception de dominio.
99+
Mapea en *spraxium.config.ts* cuando la política de layout esta orientada por decisiones de producto como branding, tono de lenguaje o estrategia específica por entorno. Este es generalmente el mejor default para gobernanza a nivel de aplicación porque centraliza toda la lógica de presentación de error en un lugar, facilitando la gestión de cambios ya que puedes intercambiar la política de layout sin modificar ninguna clase de exception de dominio.
100100

101101
<Table variant="striped">
102102
<TableHead>
@@ -122,7 +122,7 @@ Mapea en *spraxium.config.ts* cuando la política de layout esta orientada por d
122122

123123
## Cuando usar override por instancia
124124

125-
Usa el override por instancia solo para casos contextuales donde la misma clase de exception necesita renderizar de forma diferente dependiendo de condiciones de runtime. Ejemplos típicos incluyen comunicación temporal de incidentes, migraciones activas o experimentos de feature-flag donde la respuesta de error necesita cambiar sin modificar definiciones de clase o archivos de configuración. Como este nivel tiene la mayor prioridad en la cadena de resolución, tratalo como un camino de excepción intencional y documenta por que existe para evitar crear comportamiento implícito que es dificil de rastrear al depurar.
125+
Usa el override por instancia solo para casos contextuales donde la misma clase de exception necesita renderizar de forma diferente dependiendo de condiciones de runtime. Ejemplos típicos incluyen comunicación temporal de incidentes, migraciones activas o experimentos de feature-flag donde la respuesta de error necesita cambiar sin modificar definiciones de clase o archivos de configuración. Como este nivel tiene la mayor prioridad en la cadena de resolución, tratalo como un camino de excepción intencional y documenta por que existe para evitar crear comportamiento implícito que es dificil de rastrear al depurar.
126126

127127
## Ejemplo completo con embed personalizado
128128

es/exceptions/exceptions-best-practices.mdx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,11 @@ export class InsufficientBalanceException extends SpraxiumException {
2828
}
2929
```
3030

31-
La interfaz *props* tipada es importante porque le da a los layouts y al logging acceso a datos estructurados en vez de un string opaco. Cualquier clave en el objeto *props* puede ser interpolada en el *message* usando sintaxis de llaves dobles, y los layouts reciben el objeto *props* completo para que puedan construir embeds ricos, formatear números o mostrar orientación contextual al usuario.
31+
La interfaz *props* tipada es importante porque le da a los layouts y al logging acceso a datos estructurados en vez de un string opaco. Cualquier clave en el objeto *props* puede ser interpolada en el *message* usando sintaxis de llaves dobles, y los layouts reciben el objeto *props* completo para que puedan construir embeds ricos, formatear números o mostrar orientación contextual al usuario.
3232

3333
### Lanzando la exception personalizada
3434

35-
Usa la exception personalizada dentro de services, guards o handlers exactamente como cualquier exception built-in. El pipeline resuelve el layout, registra si está configurado y envía la respuesta automáticamente sin ningun código extra en el punto de lanzamiento.
35+
Usa la exception personalizada dentro de services, guards o handlers exactamente como cualquier exception built-in. El pipeline resuelve el layout, registra si está configurado y envía la respuesta automáticamente sin ningun código extra en el punto de lanzamiento.
3636

3737
```typescript filename="shop.service.ts"
3838
import { InsufficientBalanceException } from './exceptions/insufficient-balance.exception';
@@ -45,7 +45,7 @@ if (user.balance < item.price) {
4545

4646
### Vinculando un layout con @WithLayout
4747

48-
Si la exception debe venir con una presentación visual por defecto, vincula un layout usando el decorator `@WithLayout` de *@spraxium/common*. El layout recibe la instancia de la exception con acceso completo a las *props* y el contexto de ejecución, y retorna un payload de respuesta de Discord con embeds, componentes y flags ephemeral.
48+
Si la exception debe venir con una presentación visual por defecto, vincula un layout usando el decorator `@WithLayout` de *@spraxium/common*. El layout recibe la instancia de la exception con acceso completo a las *props* y el contexto de ejecución, y retorna un payload de respuesta de Discord con embeds, componentes y flags ephemeral.
4949

5050
```typescript filename="insufficient-balance.exception.ts"
5151
import { WithLayout } from '@spraxium/common';
@@ -73,7 +73,7 @@ export class InsufficientBalanceException extends SpraxiumException {
7373

7474
### Controlando respuesta y comportamiento de logging
7575

76-
Cada exception personalizada puede sobreescribir si el pipeline envía una respuesta en Discord y si registra el error en logs. La flag *shouldReply* por defecto es true, lo cual es correcto para fallas orientadas al usuario, y *shouldLog* por defecto es false porque la mayoría de las exceptions de dominio son comportamiento esperado en vez de incidentes. Sobreescribe esos valores por defecto cuando la exception represente una operación silenciosa o un error interno que debería aparecer en los logs operacionales.
76+
Cada exception personalizada puede sobreescribir si el pipeline envía una respuesta en Discord y si registra el error en logs. La flag *shouldReply* por defecto es true, lo cual es correcto para fallas orientadas al usuario, y *shouldLog* por defecto es false porque la mayoría de las exceptions de dominio son comportamiento esperado en vez de incidentes. Sobreescribe esos valores por defecto cuando la exception represente una operación silenciosa o un error interno que debería aparecer en los logs operacionales.
7777

7878
```typescript filename="silent-audit.exception.ts"
7979
export class SilentAuditException extends SpraxiumException {
@@ -130,7 +130,7 @@ Lanzar exceptions genéricas para cada escenario puede parecer más rápido al p
130130

131131
<Steps>
132132
<Step title="Modelar clases por política de negocio">
133-
Crea clases de exception alineadas con reglas reales de producto y escenarios orientados al usuario en lugar de layout de archivos o detalles temporales de implementación. Cada clase debería representar una categoría de falla significativa que el equipo pueda referenciar consistentemente en code reviews, dashboards de monitoreo e informes de incidentes.
133+
Crea clases de exception alineadas con reglas reales de producto y escenarios orientados al usuario en lugar de layout de archivos o detalles temporales de implementación. Cada clase debería representar una categoría de falla significativa que el equipo pueda referenciar consistentemente en code reviews, dashboards de monitoreo e informes de incidentes.
134134
</Step>
135135
<Step title="Mapear layouts en el config central">
136136
Manten el comportamiento orientado al usuario estable para cualquier command o listener que pueda emitir la misma familia de falla. Centralizar mapeos de layout en *spraxium.config.ts* asegura que la misma clase de exception siempre renderice de la misma forma, sin importar que modulo la lance.

es/exceptions/exceptions-configuration.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export default defineConfig({
2727

2828
## Donde encajan los layouts
2929

30-
Los layouts pertenecen a la política de presentación de errores, y esta página se enfoca en configuración central, comportamiento de fallback y gobernanza a traves de mapas de config en lugar de detalles de implementación de layout. Para la estrategia completa de layouts cubriendo que son, como crearlos, la precedencia entre decorators y mapeos, y cuando usar overrides por instancia, consulta [Estrategia de Layout](/guide/exception-layout-strategy).
30+
Los layouts pertenecen a la política de presentación de errores, y esta página se enfoca en configuración central, comportamiento de fallback y gobernanza a traves de mapas de config en lugar de detalles de implementación de layout. Para la estrategia completa de layouts cubriendo que son, como crearlos, la precedencia entre decorators y mapeos, y cuando usar overrides por instancia, consulta [Estrategia de Layout](/guide/exception-layout-strategy).
3131

3232
## Configuración con mapeo por clase
3333

es/exceptions/exceptions-overview.mdx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ category: Exceptions
1111

1212
En Spraxium, las exceptions no sirven solo para interrumpir el flujo de control cuando algo sale mal. Son el mecanismo que transforma tanto fallas técnicas como de dominio en comportamiento predecible para el usuario y señales operacionales utiles que ayudan a tu equipo a entender que paso y por que. Sin una capa de exceptions estructurada, cada handler termina inventando su propio estilo de respuesta de error, lo que lleva a UX inconsistente, logs ruidosos y resolución de incidentes más lenta en toda la aplicación.
1313

14-
A medida que el bot crece, las fallas dejan de ser casos extremos y pasan a ser parte de la experiencia normal del producto. Los usuarios encontraran negaciones de permisos, límites de cooldown, argumentos inválidos y recursos no disponibles de forma regular. Una capa dedicada de exceptions asegura que todos estos escenarios produzcan respuestas consistentes, significativas y fáciles de mantener conforme el bot evoluciona con el tiempo.
14+
A medida que el bot crece, las fallas dejan de ser casos extremos y pasan a ser parte de la experiencia normal del producto. Los usuarios encontraran negaciones de permisos, límites de cooldown, argumentos inválidos y recursos no disponibles de forma regular. Una capa dedicada de exceptions asegura que todos estos escenarios produzcan respuestas consistentes, significativas y fáciles de mantener conforme el bot evoluciona con el tiempo.
1515

1616
## La clase base SpraxiumException
1717

@@ -94,7 +94,7 @@ El framework incluye quince clases de exception que cubren los escenarios más c
9494

9595
<DropdownGroup>
9696
<Dropdown title="ArgumentException: INVALID_ARGUMENT">
97-
Reporta un argumento inválido con los valores esperado versus recibido. Esta exception se lanza por el pipeline de parseo de argumentos cuando un argumento de comando falla en la coerción de tipo o validación de restricción. El objeto *props* acepta campos *expected* y *received* para interpolación de placeholders.
97+
Reporta un argumento inválido con los valores esperado versus recibido. Esta exception se lanza por el pipeline de parseo de argumentos cuando un argumento de comando falla en la coerción de tipo o validación de restricción. El objeto *props* acepta campos *expected* y *received* para interpolación de placeholders.
9898
</Dropdown>
9999

100100
<Dropdown title="CommandNotFoundException: COMMAND_NOT_FOUND">
@@ -114,7 +114,7 @@ El framework incluye quince clases de exception que cubren los escenarios más c
114114
</Dropdown>
115115

116116
<Dropdown title="GuardDeniedException: GUARD_DENIED">
117-
Señala que un guard bloqueó la ejecución del comando con una razón opcional. Esta es la exception genérica de negación usada cuando un guard retorna `false` y ninguna exception más específica aplica. El objeto *props* acepta un campo *reason* describiendo por que se denegó el acceso.
117+
Señala que un guard bloqueó la ejecución del comando con una razón opcional. Esta es la exception genérica de negación usada cuando un guard retorna `false` y ninguna exception más específica aplica. El objeto *props* acepta un campo *reason* describiendo por que se denegó el acceso.
118118
</Dropdown>
119119

120120
<Dropdown title="GuildOnlyException: GUILD_ONLY">
@@ -150,13 +150,13 @@ El framework incluye quince clases de exception que cubren los escenarios más c
150150
</Dropdown>
151151

152152
<Dropdown title="ValidationException: VALIDATION">
153-
Reporta un valor de campo inválido con el nombre del campo y un mensaje de razón. Usa esta exception para fallas de validación de dominio que ocurren fuera del pipeline de parseo de argumentos. El objeto *props* acepta campos *field* y *reason* para reporte preciso de errores.
153+
Reporta un valor de campo inválido con el nombre del campo y un mensaje de razón. Usa esta exception para fallas de validación de dominio que ocurren fuera del pipeline de parseo de argumentos. El objeto *props* acepta campos *field* y *reason* para reporte preciso de errores.
154154
</Dropdown>
155155
</DropdownGroup>
156156

157157
### Usando exceptions built-in
158158

159-
Las exceptions built-in se importan desde *@spraxium/core* y se lanzan con un objeto de props opcional que adjunta contexto al error. El pipeline resuelve el layout basado en el mapeo de configuración, renderiza la respuesta al usuario y registra la falla si la política de logging lo requiere, todo automáticamente y sin código adicional en el punto de lanzamiento.
159+
Las exceptions built-in se importan desde *@spraxium/core* y se lanzan con un objeto de props opcional que adjunta contexto al error. El pipeline resuelve el layout basado en el mapeo de configuración, renderiza la respuesta al usuario y registra la falla si la política de logging lo requiere, todo automáticamente y sin código adicional en el punto de lanzamiento.
160160

161161
```typescript filename="shop.command.ts"
162162
import {
@@ -177,7 +177,7 @@ throw new MaintenanceException({
177177

178178
## Error como contrato, no como accidente
179179

180-
Tratar una exception como contrato significa que cada falla relevante tiene intención explícita detras de ella, en lugar de ser una solución improvisada o una respuesta genérica. En vez de retornar mensajes de error vagos, defines clases de exception y layouts que representan escenarios concretos como permisos insuficientes, violaciones de cooldown, argumentos inválidos o recursos no disponibles. Este enfoque crea un vocabulario estable en todo el equipo donde los ingenieros pueden leer código e inmediatamente entender que falló, por que falló y como el usuario debería ser informado.
180+
Tratar una exception como contrato significa que cada falla relevante tiene intención explícita detras de ella, en lugar de ser una solución improvisada o una respuesta genérica. En vez de retornar mensajes de error vagos, defines clases de exception y layouts que representan escenarios concretos como permisos insuficientes, violaciones de cooldown, argumentos inválidos o recursos no disponibles. Este enfoque crea un vocabulario estable en todo el equipo donde los ingenieros pueden leer código e inmediatamente entender que falló, por que falló y como el usuario debería ser informado.
181181

182182
El objetivo práctico es predictibilidad en todo tu bot. El mismo tipo de falla siempre debería producir la misma clase de exception, el mismo formato de respuesta y la misma señal operacional sin importar donde en el código se origina el error. Cuando ese contrato se mantiene de forma consistente, la depuración se vuelve más rápida, la experiencia del usuario permanece coherente y el equipo puede razonar sobre fallas sin leer cada handler individualmente para entender el comportamiento de error.
183183

0 commit comments

Comments
 (0)