flowingts / AppOptions
Interface: AppOptions
Definido em: src/core/app/options.ts:82
Propriedades
allowedHosts?
optionalallowedHosts?: 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?
optionalbodyLimit?:number
Definido em: src/core/app/options.ts:90
Tamanho máximo do body JSON em bytes. Padrão: 1 MiB.
contracts?
optionalcontracts?: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?
optionalformatError?: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?
optionallogger?:false|Logger
Definido em: src/core/app/options.ts:138
Logger compatível com pino. Padrão: consoleLogger(); false desliga (F-06).
logRequests?
optionallogRequests?: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?
optionalparsers?: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?
optionalprotoPoisoning?: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?
optionalqueryMaxKeys?: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?
optionalqueryParser?: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?
optionalrequestId?:RequestIdOptions
Definido em: src/core/app/options.ts:142
Request id (F-06).
requireSchemas?
optionalrequireSchemas?: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?
optionalsecurityHeaders?: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?
optionalserializers?: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?
optionalshutdown?: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?
optionaltelemetry?: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?
optionaltimeouts?:ServerTimeouts
Definido em: src/core/app/options.ts:104
Timeouts do servidor HTTP (S-06).
trustProxy?
optionaltrustProxy?: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?
optionalunreachableHosts?:"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?
optionaluploads?: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.