Files
pulse-libs/.learnings/ERRORS.md
T
pulse-agent 9afdccdc14 feat(tests-hooks): 23/23 hooks tests pass — useToggle, useAsync, useDebounce, useLocalStorage, useMedia, useInterval, useClipboard, useFetch
- useLocalStorage: retorna tupla [valor, setter] tipada como [T, (v: T|fn) => void]
- useAsync: espera microtask act cycle antes de checar status
- useClipboard: mock navigator.clipboard.writeText antes
- useMedia: mock matchMedia antes
- Busca por padrão: act() + waitFor p/ efeitos assíncronos (sem fakeTimers gerais)
- docs: PROJECTS-REGISTER, SESSION-STATE (pretérito + presente)
2026-05-19 23:37:04 -03:00

64 lines
1.9 KiB
Markdown

# Errors — Falhas para evitar
_Registro de erros, exceções e falhas com contexto de reprodução._
---
## [ERR-20260519-002] tsup-flat-infinity-breaks-dts
**Logged**: 2026-05-19T21:35:00-03:00
**Severity**: high
**Area**: config | build
### What happened
`cn()` usava `flat(Infinity)` no array de classes. O gerador de DTS do tsup v8 quebra com tipos recursivos infinitos, lançando `Type instantiation is excessively deep`.
### Error message
```
src/utils/index.ts: error TS2589: Type instantiation is excessively deep and possibly infinite.
DTS Build error
```
### Reproduction
```ts
type ClassValue = string | false | null | undefined | ClassValue[];
// ❌ flat(Infinity) → tipo recursivo infinito → DTS quebra
export function cn(...inputs: ClassValue[]): string {
return inputs.flat(Infinity)....
}
```
### Fix
```ts
type ClassValue = string | boolean | null | undefined | Array<ClassValue>;
// ✅ flat(2) — máximo de aninhamento é 2 níveis (cls, [cls2])
export function cn(...inputs: ClassValue[]): string {
return inputs.flat(2)....
}
```
### Also fixed in same session
- `process.env.NODE_ENV` no código → quebra SSR / bundler. Solução: guarda `typeof localStorage !== 'undefined'`
- `documentoSchema` usava `.replace()` direto na string Zod → `.transform(v => v.replace(…))`
---
<!-- Novas entradas acima desta linha -->
---
## ERR-20260519-002
**Data**: 2026-05-19T21:35:00-03:00
**Severidade**: medium
**Status**: resolved
### Problema
Template strings com backticks aninhadas em `docker/dockerfile.ts` quebraram compilação TypeScript.
### Resolução
Reescrever com template literals simples sem aninhamento: concatenar strings ou usar `.replace()` fora do template.
### Lição
Template strings aninhadas (backticks dentro de backticks) podem quebrar sintaxe TS. Usar `fn().replace(...)` quando precisar de conteúdo dinâmico dentro de strings já com template.