diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8a755ee0a9..13458f53b1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,8 +28,8 @@ jobs: - name: ESLint run: node --run eslint - - name: Prettier - run: node --run prettier:check + - name: Oxfmt + run: node --run format:check - name: Bundle run: node --run build diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 4c075a3d94..fe4d4c1f53 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -39,8 +39,8 @@ jobs: - name: ESLint run: node --run eslint - - name: Prettier - run: node --run prettier:check + - name: Oxfmt + run: node --run format:check - name: Bundle run: node --run build diff --git a/.oxfmtrc.json b/.oxfmtrc.json new file mode 100644 index 0000000000..cfba423805 --- /dev/null +++ b/.oxfmtrc.json @@ -0,0 +1,69 @@ +{ + "$schema": "./node_modules/oxfmt/configuration_schema.json", + "ignorePatterns": ["/website/routeTree.gen.ts"], + "singleQuote": true, + "trailingComma": "none", + "experimentalSortImports": { + "customGroups": [ + { + "groupName": "react", + "elementNamePattern": ["react", "react/**", "react-dom", "react-dom/**"] + }, + { + "groupName": "ecij", + "elementNamePattern": ["ecij"] + }, + { + "groupName": "clsx", + "elementNamePattern": ["clsx"] + }, + { + "groupName": "./src", + "elementNamePattern": ["**/src", "**/src/**"] + }, + { + "groupName": "./renderers", + "elementNamePattern": ["**/renderers", "**/renderers/**"] + }, + { + "groupName": "./components", + "elementNamePattern": ["**/components", "**/components/**"] + }, + { + "groupName": "./hooks", + "elementNamePattern": ["**/hooks", "**/hooks/**"] + }, + { + "groupName": "./utils", + "elementNamePattern": ["**/utils", "**/utils/**"] + }, + { + "groupName": "./types", + "elementNamePattern": ["**/types", "**/types/**"] + } + ], + "groups": [ + "side_effect_style", + "side_effect", + { "newlinesBetween": true }, + "builtin", + "react", + "external", + "ecij", + "clsx", + { "newlinesBetween": true }, + "./src", + "./renderers", + "./components", + "./hooks", + "./utils", + "./types", + "index", + "sibling", + "parent", + "unknown" + ], + "newlinesBetween": false + }, + "experimentalSortPackageJson": false +} diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 2dfabd2544..0000000000 --- a/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -/website/routeTree.gen.ts diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 3ff9ca6132..0000000000 --- a/.prettierrc +++ /dev/null @@ -1,25 +0,0 @@ -{ - "singleQuote": true, - "trailingComma": "none", - "printWidth": 100, - "plugins": ["@ianvs/prettier-plugin-sort-imports"], - "importOrder": [ - "", - "^react$", - "^react-dom", - "^react", - "", - "^ecij$", - "^clsx$", - "", - "./src", - "./renderers", - "./components", - "./hooks", - "./utils", - "./types", - "^\\.$", - "^\\./", - "^\\.\\./" - ] -} diff --git a/.vscode/extensions.json b/.vscode/extensions.json index f05755bcdb..d1bb4a7e2b 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode", "biomejs.biome"] + "recommendations": ["dbaeumer.vscode-eslint", "oxc.oxc-vscode", "biomejs.biome"] } diff --git a/.vscode/settings.json b/.vscode/settings.json index c60cc479e1..4a985060fc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,8 +2,9 @@ "editor.codeActionsOnSave": { "source.fixAll": "explicit" }, - "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.defaultFormatter": "oxc.oxc-vscode", "editor.formatOnSave": true, + "editor.formatOnSaveMode": "file", "typescript.enablePromptUseWorkspaceTsdk": true, "typescript.tsdk": "node_modules/typescript/lib", "files.readonlyInclude": { diff --git a/package.json b/package.json index 38a185167b..bd307861c4 100644 --- a/package.json +++ b/package.json @@ -40,13 +40,12 @@ "test:watch": "vitest watch --project browser --project node", "visual": "vitest run --project visual --coverage.reportsDirectory='./coverage/visual'", "visual:update": "vitest run --project visual --update", - "format": "biome format --write", + "format": "oxfmt", + "format:check": "oxfmt --check", "check": "biome check --error-on-warnings", "biome:ci": "biome ci --error-on-warnings", "eslint": "eslint --max-warnings 0 --cache --cache-location .cache/eslint --cache-strategy content", "eslint:fix": "node --run eslint -- --fix", - "prettier:check": "prettier --check .", - "prettier:format": "prettier --write .", "typecheck": "tsc --build" }, "devDependencies": { @@ -54,7 +53,6 @@ "@eslint-react/eslint-plugin": "^2.3.12", "@eslint/markdown": "^7.5.1", "@faker-js/faker": "^10.0.0", - "@ianvs/prettier-plugin-sort-imports": "^4.6.2", "@tanstack/react-router": "^1.132.31", "@tanstack/router-plugin": "^1.132.31", "@types/node": "^25.0.2", @@ -76,9 +74,9 @@ "eslint-plugin-testing-library": "^7.13.5", "jspdf": "^4.0.0", "jspdf-autotable": "^5.0.2", + "oxfmt": "0.33.0", "playwright": "~1.58.0", "postcss": "^8.5.2", - "prettier": "3.8.1", "react": "^19.2.1", "react-dom": "^19.2.1", "rolldown": "^1.0.0-rc.3", diff --git a/src/Columns.tsx b/src/Columns.tsx index 9121359d4a..19e1533238 100644 --- a/src/Columns.tsx +++ b/src/Columns.tsx @@ -1,4 +1,4 @@ -import { useHeaderRowSelection, useRowSelection } from './hooks/useRowSelection'; +import { useHeaderRowSelection, useRowSelection } from './hooks'; import type { Column, RenderCellProps, RenderGroupCellProps, RenderHeaderCellProps } from './types'; import { SelectCellFormatter } from './cellRenderers'; diff --git a/test/setupBrowser.ts b/test/setupBrowser.ts index 5218c269a8..c2f462d1c4 100644 --- a/test/setupBrowser.ts +++ b/test/setupBrowser.ts @@ -1,10 +1,10 @@ -import { configure } from 'vitest-browser-react/pure'; -import { locators } from 'vitest/browser'; - // vitest-browser-react also automatically injects render method on the page // need to import it so TypeScript can pick up types import 'vitest-browser-react'; +import { configure } from 'vitest-browser-react/pure'; +import { locators } from 'vitest/browser'; + configure({ reactStrictMode: true });