refactor: replace Biome with oxlint + oxfmt

Migrate the entire monorepo from Biome 2.4.7 to oxlint 1.56.0 (linter)
and oxfmt 0.41.0 (formatter) for faster lint/format and broader rule
coverage.

- Add `.oxlintrc.json` with React, TypeScript, unicorn, import plugins
  and correctness/suspicious categories
- Add `.oxfmtrc.json` with 2-space indent, import sorting, and Tailwind
  class sorting (all 30+ custom className attributes migrated)
- Add `docs/.oxlintrc.json` and `docs/.oxfmtrc.json` with Next.js plugin
- Update all 12 workspace package.json scripts: `oxlint`, `oxfmt`,
  `oxfmt --check`
- Add `format:check` turbo task and CI step
- Update VS Code settings/extensions to use `oxc.oxc-vscode`
- Update CI path triggers from `biome.json` to new config files
- Remove all `biome-ignore` comments and fix shadowed variables
- Delete `biome.json` and `docs/biome.json`
- Reformat entire codebase with oxfmt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
jakeandClaude Opus 4.6 committed 2026-03-18 13:26:50 -04:00
1 parent a80c8c9a0c
commit 2b0c683b7b
359 files changed
+3894 -7208

No files matched your search

+9 -29
View File
@@ -1,10 +1,6 @@
import { describe, expect, test } from "bun:test";
import {
getBackupSource,
isKnownBackup,
isValidBackupFilename,
} from "../src/backup";
import { getBackupSource, isKnownBackup, isValidBackupFilename } from "../src/backup";
describe("getBackupSource", () => {
test("detects manual backup", () => {
@@ -12,21 +8,15 @@ describe("getBackupSource", () => {
});
test("detects manual backup with milliseconds", () => {
expect(getBackupSource("sofa-manual-2024-01-15-120000123.db")).toBe(
"manual",
);
expect(getBackupSource("sofa-manual-2024-01-15-120000123.db")).toBe("manual");
});
test("detects scheduled backup", () => {
expect(getBackupSource("sofa-scheduled-2024-06-01-030000.db")).toBe(
"scheduled",
);
expect(getBackupSource("sofa-scheduled-2024-06-01-030000.db")).toBe("scheduled");
});
test("detects pre-restore backup", () => {
expect(getBackupSource("pre-restore-2024-06-01-030000.db")).toBe(
"pre-restore",
);
expect(getBackupSource("pre-restore-2024-06-01-030000.db")).toBe("pre-restore");
});
test("defaults to manual for unknown patterns", () => {
@@ -66,27 +56,19 @@ describe("isKnownBackup", () => {
describe("isValidBackupFilename", () => {
test("accepts valid manual backup", () => {
expect(isValidBackupFilename("sofa-manual-2024-01-15-120000.db")).toBe(
true,
);
expect(isValidBackupFilename("sofa-manual-2024-01-15-120000.db")).toBe(true);
});
test("accepts valid scheduled backup", () => {
expect(isValidBackupFilename("sofa-scheduled-2024-06-01-030000.db")).toBe(
true,
);
expect(isValidBackupFilename("sofa-scheduled-2024-06-01-030000.db")).toBe(true);
});
test("rejects path traversal", () => {
expect(isValidBackupFilename("../sofa-manual-2024-01-15-120000.db")).toBe(
false,
);
expect(isValidBackupFilename("../sofa-manual-2024-01-15-120000.db")).toBe(false);
});
test("rejects directory separators", () => {
expect(
isValidBackupFilename("subdir/sofa-manual-2024-01-15-120000.db"),
).toBe(false);
expect(isValidBackupFilename("subdir/sofa-manual-2024-01-15-120000.db")).toBe(false);
});
test("rejects unknown filenames", () => {
@@ -94,8 +76,6 @@ describe("isValidBackupFilename", () => {
});
test("rejects filenames with double dots", () => {
expect(isValidBackupFilename("sofa-manual-2024..01-15-120000.db")).toBe(
false,
);
expect(isValidBackupFilename("sofa-manual-2024..01-15-120000.db")).toBe(false);
});
});