Lint with Oxlint through Vite+ instead of ESLint

Replace ESLint, typescript-eslint, eslint-plugin-node and the flat
config helpers with vite-plus, which runs Oxlint for vp lint. The rules
are carried over from eslint.config.mjs by @oxlint/migrate into the lint
section of the root vite.config.ts. The formatting rules ESLint
deprecated run as @stylistic rules through Oxlint's JS plugin support,
and disable comments naming them are updated to the @stylistic names.

@stylistic understands TypeScript syntax that the core rules skipped,
so the autofix adds missing semicolons and spaces in type literals and
aliases. Leading | and & in multiline types stay where they were.

Oxlint's node/no-sync also reports identifiers ending in Sync that are
not calls. The test helper techSync is renamed and the two other names
are ignored.

Refs #1127

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
bbassieandClaude Opus 5.5 committed 2026-10-27 22:53:13 +00:00
1 parent 3227179613
commit e94abe51c9
35 files changed
+445 -578

No files matched your search

+4 -4
View File
@@ -10,12 +10,12 @@ import { type Component, enabledComponents, stripPlayerData } from "./components
type IpcPlayerName = {
player_name: string
}
};
type IpcDownloadRequest = {
player_name: string,
recipe_notifications?: string,
}
};
/** Components as an escaped JSON object for the scenario. */
function componentsJson(enabled: Set<Component>) {
@@ -30,7 +30,7 @@ type IpcAcquireResponse = {
message?: string,
epoch?: number,
token?: string,
}
};
/**
* Splits string into array of strings with max of a certain length
@@ -64,7 +64,7 @@ export type RecipeNotificationDelta = {
remove?: string[],
/** add is the whole stored list, sent without the instance's: the save works out what to remove */
full?: true,
}
};
/**
* Compute the changes needed to turn the current cleared recipe list into the stored one