Skip to content

Comandos úteis

flowingts / AppOptions

Interface: AppOptions ​

Definido em: src/core/app/options.ts:82

Propriedades ​

allowedHosts? ​

optional allowedHosts?: readonly (string | RegExp)[]

Definido em: src/core/app/options.ts:161

Hosts aceitos (S-09). Requisições com outro Host (ou X-Forwarded-Host confiável) recebem 400. Protege contra host header injection e DNS rebinding. Padrão: qualquer host válido.

  • 'api.exemplo.com' casa com o hostname (qualquer porta); 'api.exemplo.com:8443' exige a porta;
  • '*.exemplo.dev' aceita só subdomínios;
  • uma RegExp precisa casar o hostname inteiro (como se tivesse ^…$).

bodyLimit? ​

optional bodyLimit?: number

Definido em: src/core/app/options.ts:90

Tamanho máximo do body JSON em bytes. Padrão: 1 MiB.


contracts? ​

optional contracts?: Contracts

Definido em: src/core/app/options.ts:128

O motor dos contratos das rotas (F-27), um para o app inteiro. Sem a opção, contracts.native() (schemas TypeBox). Para Zod, Valibot ou ArkType: contracts.standard(). Um schema de outro motor é recusado no registro.


formatError? ​

optional formatError?: ErrorFormatter

Definido em: src/core/app/options.ts:171

Personaliza o corpo de todos os erros do framework e dos HttpError (F-15). Padrão: Problem Details (RFC 9457) em application/problem+json. O retorno é enviado como application/json.


logger? ​

optional logger?: false | Logger

Definido em: src/core/app/options.ts:138

Logger compatível com pino. Padrão: consoleLogger(); false desliga (F-06).


logRequests? ​

optional logRequests?: boolean

Definido em: src/core/app/options.ts:140

Loga cada requisição concluída (método, path, status, duração) em nível info. Padrão: false.


parsers? ​

optional parsers?: Readonly<Record<string, BodyParser>>

Definido em: src/core/app/options.ts:136

Parsers de body por tipo de mídia (F-12), além do JSON nativo: createApp({ parsers: { 'application/yaml': (raw) => YAML.parse(raw.toString('utf8')) } }). O bodyLimit e a proteção contra prototype pollution valem para todos, e o contrato da rota valida o resultado. Atenção: tipos que o navegador envia sem preflight (application/x-www-form-urlencoded, text/plain) abrem espaço para CSRF; use o csrf() em rotas com sessão por cookie.


protoPoisoning? ​

optional protoPoisoning?: ProtoPoisoning

Definido em: src/core/app/options.ts:114

Body JSON com __proto__ ou constructor.prototype (S-08): 'error' responde 400 (PROTO_POISONING); 'remove' descarta as chaves e segue. Padrão: 'error'.


queryMaxKeys? ​

optional queryMaxKeys?: number

Definido em: src/core/app/options.ts:116

Máximo de pares chave/valor lidos da query string. Padrão: 1000 (S-06).


queryParser? ​

optional queryParser?: QueryParser

Definido em: src/core/app/options.ts:123

Parser de query próprio (F-26), para sintaxes aninhadas como ?filter[status]=ativo: createApp({ queryParser: (raw) => qs.parse(raw, { depth: 3, arrayLimit: 50, parameterLimit: 1000 }) }). O retorno passa pelo filtro de chaves perigosas; se o parser lançar, a resposta é 400. Os limites ficam com o parser: o queryMaxKeys vale só para o padrão.


requestId? ​

optional requestId?: RequestIdOptions

Definido em: src/core/app/options.ts:142

Request id (F-06).


requireSchemas? ​

optional requireSchemas?: boolean

Definido em: src/core/app/options.ts:109

Modo estrito (S-07): exige schema de body em POST/PUT/PATCH e schema de response em toda rota, falhando no app.mount(). Padrão: false.


securityHeaders? ​

optional securityHeaders?: false | SecurityHeadersOptions | SecurityPreset

Definido em: src/core/app/options.ts:95

Headers de segurança aplicados a toda resposta (S-04). Padrão: 'api'. 'web' libera recursos do próprio site (CSP 'self') para quem serve páginas; false desliga.


serializers? ​

optional serializers?: Record<string, Serializer>

Definido em: src/core/app/options.ts:100

Serializadores por content type, para responder em outros formatos (F-31): { 'application/yaml': (data) => YAML.stringify(data) }. JSON e valores crus já são nativos.


shutdown? ​

optional shutdown?: false | ShutdownOptions

Definido em: src/core/app/options.ts:147

Encerramento gracioso nos sinais do processo, ativado pelo listen() (F-07). Ligado por padrão (SIGINT/SIGTERM, 10s); false desliga.


telemetry? ​

optional telemetry?: TelemetryApi

Definido em: src/core/app/options.ts:88

OpenTelemetry nativo (F-38): passe o @opentelemetry/api que a aplicação usa (import * as otel). Enriquece o span da auto-instrumentação HTTP (ou cria o span SERVER, se não houver), com o template da rota e os erros com a fase, e gera as métricas HTTP. Sem esta opção, nada é carregado.


timeouts? ​

optional timeouts?: ServerTimeouts

Definido em: src/core/app/options.ts:104

Timeouts do servidor HTTP (S-06).


trustProxy? ​

optional trustProxy?: number | boolean

Definido em: src/core/app/options.ts:153

Confia nos headers X-Forwarded-For, -Host e -Proto para ctx.ip, ctx.host e ctx.protocol (S-09). Padrão: false. Use true para confiar em toda a cadeia, ou o número de proxies à frente do app (ex.: 1 para um load balancer). Só ligue atrás de um proxy que reescreve esses headers.


unreachableHosts? ​

optional unreachableHosts?: "warn" | "error" | "off"

Definido em: src/core/app/options.ts:166

Rotas com host (virtual hosts) fora do allowedHosts nunca são alcançadas (F-35). 'error' (padrão) falha no registro; 'warn' só registra um aviso no log; 'off' não confere.


uploads? ​

optional uploads?: UploadsOptions

Definido em: src/core/app/options.ts:102

Upload de arquivos (F-46): limites globais, pasta dos temporários e detector de conteúdo.

Licença ISC.