mirror of
https://github.com/stablyai/orca.git
synced 2026-11-02 01:57:57 +00:00
* perf(lint): keep JS plugins out of default oxlint and adopt ast-grep Any jsPlugin makes Oxlint hand every file's AST to Node, so the seven custom plugins cost the default `oxlint` run several times its native time. - Move app-store-performance, quadratic-buffer-concat, renderer-scrollbar-style and ime-enter-guard (scope- or dataflow-aware) to config/oxlint-js-plugins.json, run by `pnpm lint:js-plugins`, CI, lint-staged and the changed-lines gate. - Port sort-comparator-performance, mobile-pairing and native-chat-design-tokens to ast-grep rules with rule tests, and delete the plugins. - Add @ast-grep/cli, config/sgconfig.yml, `pnpm lint:ast-grep` / `test:ast-grep`, a CI step, and an ast-grep pass in check-changed-code-quality. - Add flaky-test rules (wall-clock reads, real-time waits, polling loops, unquarantined skips, unexplained timeout bumps), baselined by a count ratchet. * Enforce flaky-test ratchet on changed files; refresh baseline * docs(agents): keep custom-rule details out of AGENTS.md * Resolve ast-grep from the repo so gate scans of other roots work
56 lines
1.6 KiB
JSON
56 lines
1.6 KiB
JSON
{
|
|
"$schema": "../node_modules/oxlint/configuration_schema.json",
|
|
"plugins": [],
|
|
"categories": {
|
|
"correctness": "off",
|
|
"suspicious": "off",
|
|
"pedantic": "off",
|
|
"perf": "off",
|
|
"style": "off",
|
|
"restriction": "off",
|
|
"nursery": "off"
|
|
},
|
|
"jsPlugins": [
|
|
{
|
|
"name": "app-store-performance",
|
|
"specifier": "./oxlint-plugins/app-store-performance.mjs"
|
|
},
|
|
{
|
|
"name": "quadratic-buffer-concat",
|
|
"specifier": "./oxlint-plugins/quadratic-buffer-concat.mjs"
|
|
},
|
|
{
|
|
"name": "renderer-scrollbar-style",
|
|
"specifier": "./oxlint-plugins/renderer-scrollbar-style.mjs"
|
|
},
|
|
{
|
|
"name": "ime-enter-guard",
|
|
"specifier": "./oxlint-plugins/ime-enter-guard.mjs"
|
|
}
|
|
],
|
|
"rules": {
|
|
"app-store-performance/require-selector": "error",
|
|
"app-store-performance/no-identity-selector": "error",
|
|
"app-store-performance/no-fresh-selector-result": "error",
|
|
"quadratic-buffer-concat/no-loop-carried-concat": "error"
|
|
},
|
|
"overrides": [
|
|
{
|
|
"files": ["**/src/renderer/src/**/*.{ts,tsx}"],
|
|
"rules": {
|
|
"renderer-scrollbar-style/require-styled-vertical-scrollbar": "error",
|
|
"ime-enter-guard/require-ime-guard": "error"
|
|
}
|
|
},
|
|
{
|
|
"files": ["**/*.test.*", "**/*.spec.*", "**/*-benchmark.*"],
|
|
"rules": {
|
|
"quadratic-buffer-concat/no-loop-carried-concat": "off",
|
|
"renderer-scrollbar-style/require-styled-vertical-scrollbar": "off",
|
|
"ime-enter-guard/require-ime-guard": "off"
|
|
}
|
|
}
|
|
],
|
|
"ignorePatterns": ["**/node_modules", "**/dist", "**/out"]
|
|
}
|