Merge remote-tracking branch 'origin' into feat-pedidos

This commit is contained in:
2025-12-11 10:08:12 -03:00
194 changed files with 30374 additions and 10247 deletions

View File

@@ -0,0 +1,69 @@
---
trigger: glob
description: Regras de tipagem para queries e mutations do Convex
globs: **/*.svelte.ts,**/*.svelte
---
# Regras de Tipagem do Convex
## Regra Principal
**NUNCA** crie anotações de tipo manuais para queries ou mutations do Convex. Os tipos já são inferidos automaticamente pelo Convex.
### ❌ Errado - Não faça isso:
```typescript
// NÃO crie tipos manuais para o retorno de queries
type Funcionario = {
_id: Id<'funcionarios'>;
nome: string;
email: string;
// ... outras propriedades
};
const funcionarios: Funcionario[] = useQuery(api.funcionarios.getAll) ?? [];
```
### ✅ Correto - Use inferência automática:
```typescript
// O tipo já vem inferido automaticamente
const funcionarios = useQuery(api.funcionarios.getAll);
```
---
## Quando Tipar É Necessário
Em situações onde você **realmente precisa** de um tipo explícito (ex: props de componentes, variáveis de estado, etc.), use `FunctionReturnType` para inferir o tipo:
```typescript
import { FunctionReturnType } from 'convex/server';
import { api } from '$convex/_generated/api';
// Infere o tipo de retorno da query
type FuncionariosQueryResult = FunctionReturnType<typeof api.funcionarios.getAll>;
// Agora pode usar em props de componentes
interface Props {
funcionarios: FuncionariosQueryResult;
}
```
### Casos de Uso Válidos para `FunctionReturnType`:
1. **Props de componentes** - quando um componente filho recebe dados de uma query
2. **Variáveis derivadas** - quando precisa tipar uma transformação dos dados
3. **Funções auxiliares** - quando cria funções que operam sobre os dados da query
4. **Stores/Estado global** - quando armazena dados em estado externo ao componente
---
## Resumo
| Situação | Abordagem |
| --------------------------- | ------------------------------------------------- |
| Usar `useQuery` diretamente | Deixe o tipo ser inferido automaticamente |
| Props de componentes | Use `FunctionReturnType<typeof api.module.query>` |
| Transformações de dados | Use `FunctionReturnType<typeof api.module.query>` |
| Anotações manuais de tipo | **NUNCA** - sempre infira do Convex |