The pinned sample inherits Airbnb 19.0.4, Airbnb Base 15.0.0, and the recommended configuration from JSDoc 64.3.6. Core rule functions use the ESLint 8.57.1 source baseline without installing or executing its engine. Other providers are React 7.37.5, JSX a11y 6.10.2, import 2.32.0, and Stylistic 5.10.0. Oxlint 1.82.0 runs the rules.
The imported corpus retains pass/fail decisions, diagnostic multiplicity, message text or message identifiers and substitution data, all specified primary locations, options, globals, settings, and expected fixes and suggestions. Diagnostic identifiers use this package's plugin namespaces. Terminal rendering and parser diagnostics are not part of message parity. Legacy locations with a zero end column are normalized to the same source offset on the preceding line. Invalid locations beyond an empty line are clamped to that line.
tests/fixtures/upstream.json contains distinct serialized scenarios. scripts/import-upstream.ts captures assertions from pinned source checkouts; it never executes an ESLint runner. It does not inspect lint outcomes to select passing cases. The import report records unsupported parser capabilities and upstream-disabled parser combinations. Flow, experimental Babel syntax, custom synthetic ASTs, and the obsolete TypeScript parser's AST are outside the supported parser contract. Modern JavaScript, JSX, TypeScript, and TSX remain supported.
The harness translates upstream assertion formats unsupported by Oxlint's RuleTester. Numeric suggestion expectations are checked at the report boundary; assertions containing both a suggestion description and message ID are validated for agreement before the message-ID assertion is passed to RuleTester. Auxiliary upstream rules and comment directives are retained. Nonfatal parser errors are tolerated only in the imported RuleTester corpus so rules designed to diagnose those constructs can be tested; consumer parsing remains Oxlint's responsibility.
The handwritten adapters address standalone scope metadata and comment globals, legacy context accessors and positional reports, incremental versus completed control-flow graphs, absent versus null AST fields, leading dependency comments, and ESM/CommonJS helper interoperability. Shared build chunks preserve state between cooperating rules. Behavioral tests exercise actual Oxlint CLI processes in addition to the upstream unit corpus.
Vitest coverage includes every handwritten TypeScript runtime file under packages/*/src, including files not otherwise imported. Thresholds are 95% for statements, lines, and functions and 90% for branches. Vendored source is assessed through conformance rather than included in that percentage. Repeated CLI executions used to check stability are not counted as distinct corpus scenarios.
The guide applies the JavaScript rules to TypeScript. For TypeScript files, the preset replaces pinned JavaScript implementations that report valid TypeScript or ignore TypeScript syntax with TypeScript-aware implementations of the same rules and options: Oxlint's native no-unused-vars, no-shadow, no-useless-constructor, no-empty-function, no-dupe-class-members, no-array-constructor, default-param-last, no-use-before-define, and class-methods-use-this (exempting override methods); Stylistic's indent, brace-style, keyword-spacing, space-before-function-paren, comma-dangle (extended to enums, type parameters, and tuples as airbnb-typescript does), comma-spacing, key-spacing, lines-between-class-members, lines-around-comment, object-curly-spacing, semi, space-before-blocks, and space-infix-ops; and ag-ts/no-redeclare, which runs the pinned rule but accepts overloads and the declaration merges that @typescript-eslint/no-redeclare accepts by default (interfaces, namespaces, and one class, function, or enum with them). Import and React settings gain TypeScript extensions and development globs. The generator records each replacement and its reason in the catalog; tests/typescript-preset.test.ts requires idiomatic TypeScript to pass the complete preset under both policies and requires each replacement to report TypeScript-only violations. Replacements are limited to rules with an observed difference: TypeScript syntax the pinned rules neither misreport nor check, such as generic call spacing, remains outside the preset. The pinned import/export rule reports exported interface merges, as upstream does. Exact upstream JavaScript conformance continues to use the pinned implementations.
The default presets remain syntax-only. createConfig({ language: 'typescript', typeAware: true }) opts into mappings marked requiresTypeInfo using the optional oxlint-tsgolint@7.0.2002 peer. Currently this adds typescript/consistent-type-exports, part of the adguard-projects profile, only in the TypeScript file override. A real multi-file project and a packed-package consumer test check both an invalid re-export and its type-only correction. This establishes execution of that rule, not complete Airbnb TypeScript parity, compatibility with a project's nested policies, or full guideline-prose compliance. Compiler checking, declaration emission, and manual review remain separate requirements.