This workspace maintains a fork of jsx-eslint/eslint-plugin-react and forks of the four OpenAPI packages from openapi-ts/openapi-typescript. Vladimir Iglovikov maintains these forks for current React, ESLint, Node.js, and TypeScript versions. The original authors' Git histories and MIT notices are preserved.
Support ongoing maintenance on GitHub Sponsors.
| Package | Purpose |
|---|---|
| @ternaus/eslint-plugin-react | React 19 rules for ESLint 10 alongside Biome |
| @ternaus/openapi-typescript | Generate TypeScript types from OpenAPI 3.0 and 3.1 |
| @ternaus/openapi-fetch | Typed Fetch API client |
| @ternaus/openapi-react-query | Typed TanStack Query client for React 19 |
| @ternaus/openapi-typescript-helpers | Shared request and response type helpers |
Packages keep independent versions and release notes. Development requires Node.js 24.15+ or 26 and the pnpm version pinned in package.json. Source and generated types are checked with TypeScript 7; the OpenAPI generator retains TypeScript 6 as its stable AST dependency.
corepack enable
pnpm install --frozen-lockfile
pnpm exec playwright install --with-deps
pnpm run quality:completeUse Corepack 0.36 or later for pnpm 12. See each package's README for installation and usage, and the documentation for OpenAPI guides.
quality:complete runs formatting, linting, contract and type checks, package tests, bundle-size limits, browser tests, the Next.js production rendering test, the documentation build, and a dependency audit that fails on high or critical advisories. Use quality:precommit for the faster formatting, lint, contract, and type checks. The Next.js test uses a local API fixture.
This repository combines the complete Git histories of ternaus/eslint-plugin-react and ternaus/openapi-typescript without squashing or rewriting their commits. It preserves the work of jsx-eslint/eslint-plugin-react and openapi-ts/openapi-typescript, including author records and package license notices.
The histories join at a merge commit. Historical ESLint tags retain their names; OpenAPI tags use the openapi-history/ prefix to avoid tag-name collisions. The original repositories remain references for their existing issues, pull requests, and releases.