chore: migrate oxlint & oxfmt (#15464)

#### PR Dependency Tree


* **PR #15464** 👈

This tree was auto-generated by
[Charcoal](https://github.com/danerwilliams/charcoal)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
* Replaced the project’s formatting and linting workflow with Oxfmt and
Oxlint.
* Added shared formatting and linting configuration, editor integration,
and updated automated checks.
* Updated generated files, scripts, and lint guidance to use the new
tooling.

* **Style**
* Reformatted templates, source code, examples, and configuration files
for consistent readability.
  * No user-facing functionality or rendering behavior changed.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
DarkSky
2026-08-10 23:51:28 +08:00
committed by GitHub
parent 749c83cd8e
commit 0c7b20dc18
292 changed files with 3372 additions and 2866 deletions
@@ -1,4 +1,4 @@
// eslint-disable no-empty-pattern
// oxlint-disable no-empty-pattern
import { test as base } from '@affine-test/kit/playwright';
import type { Page } from '@playwright/test';
@@ -1,4 +1,4 @@
// eslint-disable eslint-plugin-unicorn(prefer-dom-node-dataset
// oxlint-disable unicorn/prefer-dom-node-dataset
import type { Page } from '@playwright/test';
import { expect } from '@playwright/test';
+1 -1
View File
@@ -90,7 +90,7 @@ test.skip('use keyboard copy inside code block copy', async ({
await type(page, 'use');
await page.keyboard.down('Shift');
// oxlint-disable-next-line @typescript-eslint/prefer-for-of
// oxlint-disable-next-line typescript/prefer-for-of
for (let i = 0; i < 'use'.length; i++) {
await page.keyboard.press('ArrowLeft');
}
@@ -449,7 +449,7 @@ test('readonly mode', async ({ page }) => {
throw new Error('Cannot find editor');
}
// oxlint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line typescript/no-explicit-any
(richTextA as any).inlineEditor.setReadonly(true);
});
@@ -1044,13 +1044,13 @@ test('yText should not contain \r', async ({ page }) => {
throw new Error('Cannot find test-rich-text');
}
// oxlint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line typescript/no-explicit-any
const editor = (richText as any).inlineEditor as InlineEditor;
try {
editor.insertText({ index: 0, length: 0 }, 'abc\r');
} catch (e) {
// oxlint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line typescript/no-explicit-any
return (e as any).message;
}
});
@@ -159,7 +159,7 @@ test.describe('single edgeless element to linked doc', () => {
const container = document.querySelector('affine-edgeless-root');
return container!.service.crud.getElementsByType('group').map(s => ({
type: s.type,
// oxlint-disable-next-line @typescript-eslint/no-explicit-any
// oxlint-disable-next-line typescript/no-explicit-any
children: s.childElements.map((c: any) => c.type || c.flavour),
}));
});
+2 -2
View File
@@ -240,7 +240,7 @@ export async function enterPlaygroundWithList(
title: new window.$blocksuite.store.Text(),
});
const noteId = doc.addBlock('affine:note', {}, rootId);
// oxlint-disable-next-line @typescript-eslint/prefer-for-of
// oxlint-disable-next-line typescript/prefer-for-of
for (let i = 0; i < contents.length; i++) {
doc.addBlock(
'affine:list',
@@ -847,7 +847,7 @@ export async function getClipboardHTML(page: Page) {
const indentAfter = ' '.repeat(level >= 2 ? level - 2 : 0);
let textNode;
// oxlint-disable-next-line @typescript-eslint/prefer-for-of
// oxlint-disable-next-line typescript/prefer-for-of
for (let i = 0; i < node.children.length; i++) {
textNode = document.createTextNode('\n' + indentBefore);
node.insertBefore(textNode, node.children[i]);
+1 -1
View File
@@ -114,7 +114,7 @@ export async function writeTextToClipboard(
// paste the url
await page.evaluate(
async ([text]) => {
// oxlint-disable-next-line @typescript-eslint/no-floating-promises
// oxlint-disable-next-line typescript/no-floating-promises
navigator.clipboard.writeText('');
const e = new ClipboardEvent('paste', {
clipboardData: new DataTransfer(),