/** * `HttpErrors.BadRequestError` (HTTP 400) is reserved for genuine input * validation. Throwing it where the upstream caller's input was already * accepted — i.e. after the provider rejected the request — mislabels the * failure. Per repo policy: prefer `HttpErrors.UnprocessableEntityError` * (422); the frontend absorbs 400s and would mask the real cause. * * Fires only on high-confidence misuse: * - Inside a `catch` whose `try.block` provably contains an `await` (async * I/O — provider, service helper, db query, fetch). Catches wrapping pure * sync operations (JSON.parse, schema.validate, parseInt) are NOT flagged * — those are legitimate input-validation throw points. * - Within 3 statements after an `await provider.*` / `await Provider.*` in * any enclosing block (function-boundary stop). * * Allowlisted message substrings (`/^Missing/i`, `/^Invalid/i`, `/required/i`, * `/must be/i`) skip the rule — those phrases describe input validation, * `BadRequestError` is correct there. */ import type { Rule } from 'eslint'; declare const rule: Rule.RuleModule; export default rule;