ultracite 7.5.5 → 7.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,17 +9,6 @@ export default defineConfig({
9
9
  ],
10
10
  plugins: ["jest"],
11
11
  rules: {
12
- // Disabled: bun:test mock.module() must be called at top level
13
- "jest/require-hook": "off",
14
- // Disabled: mock factories use conditionals for path-based routing
15
- "jest/no-conditional-in-test": "off",
16
- // Disabled: bun:test uses beforeEach hooks for mock.restore()
17
- "jest/no-hooks": "off",
18
- // Disabled: bun:test mock factories return Promise.resolve/reject
19
- "promise/prefer-await-to-then": "off",
20
- // Disabled: mock callbacks often need empty functions
21
- "no-empty-function": "off",
22
-
23
12
  "jest/consistent-test-it": "error",
24
13
  "jest/expect-expect": "error",
25
14
  "jest/max-expects": "error",
@@ -44,7 +33,9 @@ export default defineConfig({
44
33
  "jest/no-standalone-expect": "error",
45
34
  "jest/no-test-prefixes": "error",
46
35
  "jest/no-test-return-statement": "error",
36
+ "jest/no-unneeded-async-expect-function": "error",
47
37
  "jest/no-untyped-mock-factory": "error",
38
+ "jest/padding-around-after-all-blocks": "error",
48
39
  "jest/padding-around-test-blocks": "error",
49
40
  "jest/prefer-called-with": "error",
50
41
  "jest/prefer-comparison-matcher": "error",
@@ -56,6 +47,8 @@ export default defineConfig({
56
47
  "jest/prefer-jest-mocked": "error",
57
48
  "jest/prefer-lowercase-title": "error",
58
49
  "jest/prefer-mock-promise-shorthand": "error",
50
+ "jest/prefer-mock-return-shorthand": "error",
51
+ "jest/prefer-snapshot-hint": "error",
59
52
  "jest/prefer-spy-on": "error",
60
53
  "jest/prefer-strict-equal": "error",
61
54
  "jest/prefer-to-be": "error",
@@ -69,6 +62,21 @@ export default defineConfig({
69
62
  "jest/valid-describe-callback": "error",
70
63
  "jest/valid-expect": "error",
71
64
  "jest/valid-title": "error",
65
+
66
+ // Disabled: bun:test mock.module() must be called at top level
67
+ "jest/require-hook": "off",
68
+
69
+ // Disabled: mock factories use conditionals for path-based routing
70
+ "jest/no-conditional-in-test": "off",
71
+
72
+ // Disabled: bun:test uses beforeEach hooks for mock.restore()
73
+ "jest/no-hooks": "off",
74
+
75
+ // Disabled: bun:test mock factories return Promise.resolve/reject
76
+ "promise/prefer-await-to-then": "off",
77
+
78
+ // Disabled: mock callbacks often need empty functions
79
+ "no-empty-function": "off",
72
80
  },
73
81
  },
74
82
  ],
@@ -9,14 +9,11 @@ export default defineConfig({
9
9
  ],
10
10
  plugins: ["vitest"],
11
11
  rules: {
12
- // Disabled: mock callbacks often need empty functions
13
- "no-empty-function": "off",
14
- // Disabled: mock factories use Promise.resolve/reject (conflicts with require-await)
15
- "promise/prefer-await-to-then": "off",
16
-
12
+ "vitest/consistent-each-for": "error",
17
13
  "vitest/consistent-test-filename": "error",
18
14
  "vitest/consistent-vitest-vi": "error",
19
15
  "vitest/expect-expect": "error",
16
+ "vitest/hoisted-apis-on-top": "error",
20
17
  "vitest/no-alias-methods": "error",
21
18
  "vitest/no-commented-out-tests": "error",
22
19
  "vitest/no-conditional-expect": "error",
@@ -34,26 +31,22 @@ export default defineConfig({
34
31
  "vitest/no-standalone-expect": "error",
35
32
  "vitest/no-test-prefixes": "error",
36
33
  "vitest/no-test-return-statement": "error",
34
+ "vitest/prefer-called-exactly-once-with": "error",
35
+ "vitest/prefer-called-once": "error",
37
36
  "vitest/prefer-called-with": "error",
38
- // Disabled: conflicts with prefer-called-once — both rules enforce opposite styles
39
- // prefer-called-times: use toHaveBeenCalledTimes(1) instead of toHaveBeenCalledOnce()
40
- // prefer-called-once: use toHaveBeenCalledOnce() instead of toHaveBeenCalledTimes(1)
41
- // Consistent with ESLint vitest config (packages/cli/config/eslint/vitest/rules/vitest.mjs)
42
- "vitest/prefer-called-times": "off",
43
37
  "vitest/prefer-comparison-matcher": "error",
38
+ "vitest/prefer-describe-function-title": "error",
44
39
  "vitest/prefer-each": "error",
45
40
  "vitest/prefer-equality-matcher": "error",
46
41
  "vitest/prefer-expect-resolves": "error",
42
+ "vitest/prefer-expect-type-of": "error",
47
43
  "vitest/prefer-hooks-in-order": "error",
48
44
  "vitest/prefer-hooks-on-top": "error",
49
- "vitest/prefer-lowercase-title": "error",
45
+ "vitest/prefer-import-in-mock": "error",
46
+ "vitest/prefer-importing-vitest-globals": "error",
50
47
  "vitest/prefer-mock-promise-shorthand": "error",
51
48
  "vitest/prefer-spy-on": "error",
52
49
  "vitest/prefer-strict-equal": "error",
53
- // Conflicts with prefer-to-be-truthy and prefer-to-be-falsy (#645)
54
- // prefer-strict-boolean-matchers: use toBe(true)/toBe(false)
55
- // prefer-to-be-truthy/falsy: use toBeTruthy()/toBeFalsy()
56
- "vitest/prefer-strict-boolean-matchers": "off",
57
50
  "vitest/prefer-to-be": "error",
58
51
  "vitest/prefer-to-be-falsy": "error",
59
52
  "vitest/prefer-to-be-object": "error",
@@ -61,13 +54,36 @@ export default defineConfig({
61
54
  "vitest/prefer-to-contain": "error",
62
55
  "vitest/prefer-to-have-length": "error",
63
56
  "vitest/prefer-todo": "error",
57
+ "vitest/require-awaited-expect-poll": "error",
64
58
  "vitest/require-local-test-context-for-concurrent-snapshots": "error",
59
+ "vitest/require-mock-type-parameters": "error",
65
60
  "vitest/require-to-throw-message": "error",
66
61
  "vitest/require-top-level-describe": "error",
67
62
  "vitest/valid-describe-callback": "error",
68
63
  "vitest/valid-expect": "error",
69
64
  "vitest/valid-title": "error",
70
65
  "vitest/warn-todo": "error",
66
+
67
+ // Disabled: mock callbacks often need empty functions
68
+ "no-empty-function": "off",
69
+
70
+ // Disabled: mock factories use Promise.resolve/reject (conflicts with require-await)
71
+ "promise/prefer-await-to-then": "off",
72
+
73
+ // Disabled: conflicts with prefer-describe-function-title — function names
74
+ "vitest/prefer-lowercase-title": "off",
75
+
76
+ // Conflicts with prefer-to-be-truthy and prefer-to-be-falsy (#645)
77
+ "vitest/prefer-strict-boolean-matchers": "off",
78
+
79
+ // Disabled: conflicts with prefer-called-once — both rules enforce opposite styles
80
+ "vitest/prefer-called-times": "off",
81
+
82
+ // Disabled: explicit imports are preferred over globals
83
+ "vitest/no-importing-vitest-globals": "off",
84
+
85
+ // Disabled: too strict for general use — not all async tests need explicit timeouts
86
+ "vitest/require-test-timeout": "off",
71
87
  },
72
88
  },
73
89
  ],
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{Command as Zi}from"commander";var d={name:"ultracite",version:"7.5.5",description:"The AI-ready formatter that helps you write and generate code faster.",keywords:["biome","fixer","formatter","linter","ultracite"],homepage:"https://www.ultracite.ai/",bugs:{url:"https://github.com/haydenbleasel/ultracite/issues"},license:"MIT",author:"Hayden Bleasel <hello@haydenbleasel.com>",repository:{type:"git",url:"git+https://github.com/haydenbleasel/ultracite.git"},bin:{ultracite:"dist/index.js"},files:["config","dist","README.md"],type:"module",exports:{"./oxlint":{types:"./dist/oxlint.d.ts",default:"./dist/oxlint.js"},"./biome/*":"./config/biome/*/biome.jsonc","./eslint/*":"./config/eslint/*/eslint.config.mjs","./oxlint/*":"./config/oxlint/*/index.mjs","./oxfmt":"./config/oxfmt/index.mjs","./prettier":"./config/prettier/prettier.config.mjs","./stylelint":"./config/stylelint/stylelint.config.mjs","./*":"./config/biome/*/biome.jsonc"},publishConfig:{access:"public",registry:"https://registry.npmjs.org/"},scripts:{build:"tsup",test:"bun test","test:coverage":"bun test --coverage","check-types":"tsc --noEmit"},dependencies:{"@clack/prompts":"^1.2.0",commander:"^14.0.3","cross-spawn":"^7.0.6",deepmerge:"^4.3.1",glob:"^13.0.6","jsonc-parser":"^3.3.1",nypm:"^0.6.5"},devDependencies:{"@biomejs/biome":"2.4.11","@eslint/js":"^10.0.1","@next/eslint-plugin-next":"^16.2.3","@repo/data":"workspace:*","@tanstack/eslint-plugin-query":"^5.97.0","@types/cross-spawn":"^6.0.6","@types/node":"^25.6.0","@typescript-eslint/eslint-plugin":"^8.58.1","@typescript-eslint/parser":"^8.58.1","@vitest/eslint-plugin":"^1.6.15","eslint-config-prettier":"^10.1.8","eslint-import-resolver-typescript":"^4.4.4","eslint-plugin-angular":"^5.0.0","eslint-plugin-astro":"^1.7.0","eslint-plugin-compat":"^7.0.1","eslint-plugin-cypress":"^6.3.0","eslint-plugin-github":"6.0.0","eslint-plugin-html":"^8.1.4","eslint-plugin-import-x":"^4.16.2","eslint-plugin-jest":"^29.15.2","eslint-plugin-jsx-a11y":"^6.10.2","eslint-plugin-n":"^17.24.0","eslint-plugin-prettier":"^5.5.5","eslint-plugin-promise":"^7.2.1","eslint-plugin-qwik":"^1.19.2","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-remix":"^1.1.1","eslint-plugin-solid":"^0.14.5","eslint-plugin-sonarjs":"^4.0.2","eslint-plugin-storybook":"^10.3.5","eslint-plugin-svelte":"^3.17.0","eslint-plugin-unicorn":"^64.0.0","eslint-plugin-unused-imports":"^4.4.1","eslint-plugin-vue":"^10.8.0",globals:"^17.4.0",oxlint:"^1.59.0","prettier-plugin-svelte":"^3.5.1","prettier-plugin-tailwindcss":"^0.7.2","stylelint-config-idiomatic-order":"^10.0.0","stylelint-config-standard":"^40.0.0","stylelint-prettier":"^5.0.3",tsup:"^8.5.1"},peerDependencies:{oxlint:"^1.0.0"},peerDependenciesMeta:{oxlint:{optional:!0}},packageManager:"bun@1.3.12"};import At from"process";import{sync as Te}from"cross-spawn";var h=(e,t,o)=>Te(e,t,{...o,shell:!1}),Ge=(e,t)=>Te(e,[],{...t,shell:!0}),v=(e,t)=>{if(t.error)throw new Error(`Failed to run ${e}: ${t.error.message}`);t.status!==0&&At.exit(t.status??1)};import{access as zt,mkdir as Ut,readFile as Be,writeFile as It}from"fs/promises";import{dirname as De,join as ve}from"path";import Et from"process";import{parse as jt}from"jsonc-parser";var m=async e=>{try{return await zt(e),!0}catch{return!1}},S=async()=>{if(await m("pnpm-workspace.yaml"))return!0;try{let e=jt(await Be("package.json","utf-8"));return e?!!e.workspaces||!!e.workspace:!1}catch{return!1}},k=async({dependencies:e,devDependencies:t,scripts:o,type:i})=>{let a=await Be("package.json","utf-8"),r=JSON.parse(a),l={...r};i&&(l.type=i),(r.devDependencies||t)&&(l.devDependencies={...r.devDependencies,...t}),(r.dependencies||e)&&(l.dependencies={...r.dependencies,...e}),(r.scripts||o)&&(l.scripts={...r.scripts,...o}),await It("package.json",JSON.stringify(l,null,2))},b=async e=>{let t=De(e);if(t!=="."){let o=t.startsWith("./")?t.slice(2):t;await Ut(o,{recursive:!0})}},Tt=["biome.json","biome.jsonc"],Gt=["eslint.config.mjs","eslint.config.js","eslint.config.cjs","eslint.config.ts","eslint.config.mts","eslint.config.cts"],Bt=[".oxlintrc.json","oxlint.config.ts"],X=async()=>{let e=Et.cwd();for(;;){for(let o of Tt)if(await m(ve(e,o)))return"biome";for(let o of Gt)if(await m(ve(e,o)))return"eslint";for(let o of Bt)if(await m(ve(e,o)))return"oxlint";let t=De(e);if(t===e)break;e=t}return null};var Dt=(e,t)=>{let o=["check","--no-errors-on-unmatched",...t];e.length>0?o.push(...e):o.push("./");let i=h("biome",o,{stdio:"inherit"});v("Biome",i)},Pt=(e,t)=>{let o=[...t,...e.length>0?e:["."]],i=h("eslint",o,{stdio:"inherit"});v("ESLint",i)},Ft=(e,t)=>{let o=["--check",...t,...e.length>0?e:["."]],i=h("prettier",o,{stdio:"inherit"});v("Prettier",i)},Nt=(e,t)=>{let o=[...t,...e.length>0?e:["."]],i=h("stylelint",o,{stdio:"inherit"});v("Stylelint",i)},Ot=(e,t)=>{let o=[...t,...e.length>0?e:["."]],i=h("oxlint",o,{stdio:"inherit"});v("Oxlint",i)},Lt=(e,t)=>{let o=["--check",...t,...e.length>0?e:["."]],i=h("oxfmt",o,{stdio:"inherit"});v("oxfmt",i)},Pe=async(e=[],t=[])=>{let o=await X();if(!o)throw new Error("No linter configuration found. Run `ultracite init` to set up a linter.");switch(o){case"eslint":{await Ft(e,[]),await Pt(e,t),await Nt(e,[]);break}case"oxlint":{await Lt(e,[]),await Ot(e,t);break}default:await Dt(e,t)}};import{existsSync as U}from"fs";import{readFile as te}from"fs/promises";import{join as I}from"path";import E from"process";import{intro as Rt,log as ee,outro as ye,spinner as Mt}from"@clack/prompts";import{parse as $t}from"jsonc-parser";var _t=[".prettierrc",".prettierrc.js",".prettierrc.cjs",".prettierrc.mjs",".prettierrc.json",".prettierrc.yaml",".prettierrc.yml","prettier.config.js","prettier.config.mjs","prettier.config.cjs"],Vt=[".eslintrc",".eslintrc.js",".eslintrc.cjs",".eslintrc.mjs",".eslintrc.json",".eslintrc.yaml",".eslintrc.yml","eslint.config.js","eslint.config.mjs","eslint.config.cjs","eslint.config.ts","eslint.config.mts","eslint.config.cts"],Wt=()=>{let e=h("biome",["--version"],{encoding:"utf-8"});return e.status===0&&e.stdout?{message:`Biome is installed (${String(e.stdout).trim()})`,name:"Biome installation",status:"pass"}:{message:"Biome is not installed or not accessible",name:"Biome installation",status:"fail"}},Jt=()=>{let e=h("eslint",["--version"],{encoding:"utf-8"});return e.status===0&&e.stdout?{message:`ESLint is installed (${String(e.stdout).trim()})`,name:"ESLint installation",status:"pass"}:{message:"ESLint is not installed (optional)",name:"ESLint installation",status:"warn"}},qt=()=>{let e=h("oxlint",["--version"],{encoding:"utf-8"});return e.status===0&&e.stdout?{message:`Oxlint is installed (${String(e.stdout).trim()})`,name:"Oxlint installation",status:"pass"}:{message:"Oxlint is not installed (optional)",name:"Oxlint installation",status:"warn"}},Ht=async()=>{let e=I(E.cwd(),"biome.json"),t=I(E.cwd(),"biome.jsonc"),o=null;if(U(e)?o=e:U(t)&&(o=t),!o)return{message:"No biome.json or biome.jsonc file found",name:"Biome configuration",status:"warn"};try{let i=await te(o,"utf-8"),a=$t(i);return Array.isArray(a?.extends)&&a.extends.includes("ultracite/biome/core")?{message:"biome.json(c) extends ultracite/biome/core",name:"Biome configuration",status:"pass"}:{message:"biome.json(c) exists but doesn't extend ultracite/biome/core",name:"Biome configuration",status:"warn"}}catch{return{message:"Could not parse biome.json(c) file",name:"Biome configuration",status:"fail"}}},Kt=async()=>{let e=["eslint.config.mjs","eslint.config.js","eslint.config.cjs","eslint.config.ts","eslint.config.mts","eslint.config.cts"],t=null;for(let o of e){let i=I(E.cwd(),o);if(U(i)){t=i;break}}if(!t)return{message:"No eslint.config.* file found (optional)",name:"ESLint configuration",status:"warn"};try{return(await te(t,"utf-8")).includes("ultracite/eslint")?{message:"eslint.config.* imports ultracite/eslint",name:"ESLint configuration",status:"pass"}:{message:"eslint.config.* exists but doesn't import ultracite/eslint",name:"ESLint configuration",status:"warn"}}catch{return{message:"Could not read eslint.config.* file",name:"ESLint configuration",status:"fail"}}},Qt=e=>`ultracite/oxlint/${e}`,Zt=async()=>{let e=I(E.cwd(),"oxlint.config.ts");if(!U(e))return{message:"No oxlint.config.ts file found (optional)",name:"Oxlint configuration",status:"warn"};try{return(await te(e,"utf-8")).includes(Qt("core"))?{message:"oxlint.config.ts extends ultracite oxlint config",name:"Oxlint configuration",status:"pass"}:{message:"oxlint.config.ts exists but doesn't extend ultracite config",name:"Oxlint configuration",status:"warn"}}catch{return{message:"Could not read oxlint.config.ts file",name:"Oxlint configuration",status:"fail"}}},Yt=async()=>{let e=I(E.cwd(),"package.json");if(!U(e))return{message:"No package.json found",name:"Ultracite dependency",status:"warn"};try{let t=JSON.parse(await te(e,"utf-8")),o=t.dependencies?.ultracite||t.devDependencies?.ultracite||t.peerDependencies?.ultracite;return o?{message:`Ultracite is in package.json (${o})`,name:"Ultracite dependency",status:"pass"}:{message:"Ultracite not found in package.json dependencies",name:"Ultracite dependency",status:"warn"}}catch{return{message:"Could not parse package.json",name:"Ultracite dependency",status:"warn"}}},Xt=()=>{let e=_t.some(i=>U(I(E.cwd(),i))),o=Vt.filter(i=>!i.startsWith("eslint.config")).some(i=>U(I(E.cwd(),i)));if(e||o){let i=[];return e&&i.push("Prettier"),o&&i.push("ESLint (legacy config)"),{message:`Found potentially conflicting tools: ${i.join(", ")}`,name:"Conflicting tools",status:"warn"}}return{message:"No conflicting formatting/linting tools found",name:"Conflicting tools",status:"pass"}},A=async(e,t)=>{let o=Mt();o.start(`Checking ${t}...`);let i=await e();return i.status==="pass"||i.status,o.stop(i.message),i},Fe=async()=>{Rt(`Ultracite v${d.version} Doctor`);let e=[await A(Wt,"Biome installation"),await A(Jt,"ESLint installation"),await A(qt,"Oxlint installation"),await A(Ht,"Biome configuration"),await A(Kt,"ESLint configuration"),await A(Zt,"Oxlint configuration"),await A(Yt,"Ultracite dependency"),await A(Xt,"conflicting tools")],t=e.filter(a=>a.status==="pass").length,o=e.filter(a=>a.status==="fail").length,i=e.filter(a=>a.status==="warn").length;if(ee.info(`Summary: ${t} passed, ${i} warnings, ${o} failed`),o>0)throw ee.error("Some checks failed. Run 'ultracite init' to fix issues."),ye("Doctor complete"),new Error("Doctor checks failed");if(i>0){ee.warn("Some optional improvements available. Run 'ultracite init' to configure."),ye("Doctor complete");return}ee.success("Everything looks good!"),ye("Doctor complete")};var e2=(e,t)=>{let o=["check","--write","--no-errors-on-unmatched",...t];e.length>0?o.push(...e):o.push("./");let i=h("biome",o,{stdio:"inherit"});v("Biome",i)},t2=(e,t)=>{let o=["--fix",...t,...e.length>0?e:["."]],i=h("eslint",o,{stdio:"inherit"});v("ESLint",i)},o2=(e,t)=>{let o=["--write",...t,...e.length>0?e:["."]],i=h("prettier",o,{stdio:"inherit"});v("Prettier",i)},i2=(e,t)=>{let o=["--fix",...t,...e.length>0?e:["."]],i=h("stylelint",o,{stdio:"inherit"});v("Stylelint",i)},s2=(e,t)=>{let o=t.includes("--unsafe"),i=t.filter(l=>l!=="--unsafe"),a=[o?"--fix-dangerously":"--fix",...i,...e.length>0?e:["."]],r=h("oxlint",a,{stdio:"inherit"});v("Oxlint",r)},n2=(e,t)=>{let o=["--write",...t,...e.length>0?e:["."]],i=h("oxfmt",o,{stdio:"inherit"});v("oxfmt",i)},Ne=async(e,t=[])=>{let o=await X();if(!o)throw new Error("No linter configuration found. Run `ultracite init` to set up a linter.");switch(o){case"eslint":{await o2(e,[]),await t2(e,t),await i2(e,[]);break}case"oxlint":{await n2(e,[]),await s2(e,t);break}default:await e2(e,t)}};import Ii from"process";import{cancel as L,intro as Ei,isCancel as R,log as Z,multiselect as Y,select as ji,spinner as w}from"@clack/prompts";var Oe="./adal-VMG3GLKT.svg";var Le="./aider-K7JLZT2D.svg";var Re="./amazon-q-TSOJNPXB.svg";var Me="./amp-EV4LVL5I.svg";var $e="./augmentcode-Q62PVXKO.svg";var oe="./bob-MRQ23J26.svg";var _e="./claude-6DLEHRDQ.svg";var Ve="./cline-6HWKIYN7.svg";var We="./coder-7BVXO5OJ.svg";var Je="./codex-NQZ5TJCL.svg";var qe="./continue-LKI2ZW3R.svg";var He="./copilot-L2IY45R2.svg";var Ke="./crush-LYLRDQGZ.svg";var ie="./cursor-GQNH5LCA.svg";var Qe="./devin-KY5ISKEW.svg";var Ze="./droid-266OHJBT.svg";var Ye="./firebase-studio-ILLWWYU7.svg";var Xe="./firebender-UNO6LSZG.svg";var e1="./gemini-OYS6V4BH.svg";var t1="./goose-XBIEVD4H.svg";var o1="./jules-HJPVWU73.svg";var i1="./junie-RUWBUV6N.svg";var s1="./kilo-code-4QYUYY2E.svg";var n1="./kimi-6SOFW673.svg";var a1="./langchain-5SXQKAL3.svg";var r1="./lovable-UELF2DY5.svg";var l1="./mcpjam-V2GHUPJN.svg";var c1="./mistral-HQ63EC2B.svg";var d1="./ona-KYYK3HQX.svg";var p1="./open-hands-K5EYKO6T.svg";var m1="./openclaw-XFPF7FMJ.svg";var f1="./opencode-K3274JKQ.svg";var g1="./pi-AZOSKO3D.svg";var u1="./qoder-LPW47DKG.svg";var h1="./qwen-N3D5CQYL.svg";var w1="./replit-WKR4Y6HH.svg";var v1="./roo-code-CVLBTS7D.svg";var y1="./snowflake-S3LTTUXJ.svg";var k1="./vercel-27VSITAQ.svg";var b1="./warp-OZKAAQRT.svg";var x1="./zencoder-VTSK5Z7Z.svg";var se=(e,t)=>`# Ultracite Code Standards
2
+ import{Command as Zi}from"commander";var d={name:"ultracite",version:"7.5.6",description:"The AI-ready formatter that helps you write and generate code faster.",keywords:["biome","fixer","formatter","linter","ultracite"],homepage:"https://www.ultracite.ai/",bugs:{url:"https://github.com/haydenbleasel/ultracite/issues"},license:"MIT",author:"Hayden Bleasel <hello@haydenbleasel.com>",repository:{type:"git",url:"git+https://github.com/haydenbleasel/ultracite.git"},bin:{ultracite:"dist/index.js"},files:["config","dist","README.md"],type:"module",exports:{"./biome/*":"./config/biome/*/biome.jsonc","./eslint/*":"./config/eslint/*/eslint.config.mjs","./oxlint/*":"./config/oxlint/*/index.mjs","./oxfmt":"./config/oxfmt/index.mjs","./prettier":"./config/prettier/prettier.config.mjs","./stylelint":"./config/stylelint/stylelint.config.mjs","./*":"./config/biome/*/biome.jsonc"},publishConfig:{access:"public",registry:"https://registry.npmjs.org/"},scripts:{build:"tsup",test:"bun test","test:coverage":"bun test --coverage","check-types":"tsc --noEmit"},dependencies:{"@clack/prompts":"^1.2.0",commander:"^14.0.3","cross-spawn":"^7.0.6",deepmerge:"^4.3.1",glob:"^13.0.6","jsonc-parser":"^3.3.1",nypm:"^0.6.5"},devDependencies:{"@biomejs/biome":"2.4.11","@eslint/js":"^10.0.1","@next/eslint-plugin-next":"^16.2.3","@repo/data":"workspace:*","@tanstack/eslint-plugin-query":"^5.97.0","@types/cross-spawn":"^6.0.6","@types/node":"^25.6.0","@typescript-eslint/eslint-plugin":"^8.58.1","@typescript-eslint/parser":"^8.58.1","@vitest/eslint-plugin":"^1.6.15","eslint-config-prettier":"^10.1.8","eslint-import-resolver-typescript":"^4.4.4","eslint-plugin-angular":"^5.0.0","eslint-plugin-astro":"^1.7.0","eslint-plugin-compat":"^7.0.1","eslint-plugin-cypress":"^6.3.0","eslint-plugin-github":"6.0.0","eslint-plugin-html":"^8.1.4","eslint-plugin-import-x":"^4.16.2","eslint-plugin-jest":"^29.15.2","eslint-plugin-jsx-a11y":"^6.10.2","eslint-plugin-n":"^17.24.0","eslint-plugin-prettier":"^5.5.5","eslint-plugin-promise":"^7.2.1","eslint-plugin-qwik":"^1.19.2","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-remix":"^1.1.1","eslint-plugin-solid":"^0.14.5","eslint-plugin-sonarjs":"^4.0.2","eslint-plugin-storybook":"^10.3.5","eslint-plugin-svelte":"^3.17.0","eslint-plugin-unicorn":"^64.0.0","eslint-plugin-unused-imports":"^4.4.1","eslint-plugin-vue":"^10.8.0",globals:"^17.4.0",oxlint:"^1.59.0","prettier-plugin-svelte":"^3.5.1","prettier-plugin-tailwindcss":"^0.7.2","stylelint-config-idiomatic-order":"^10.0.0","stylelint-config-standard":"^40.0.0","stylelint-prettier":"^5.0.3",tsup:"^8.5.1"},peerDependencies:{oxlint:"^1.0.0"},peerDependenciesMeta:{oxlint:{optional:!0}},packageManager:"bun@1.3.12"};import At from"process";import{sync as Te}from"cross-spawn";var h=(e,t,o)=>Te(e,t,{...o,shell:!1}),Ge=(e,t)=>Te(e,[],{...t,shell:!0}),v=(e,t)=>{if(t.error)throw new Error(`Failed to run ${e}: ${t.error.message}`);t.status!==0&&At.exit(t.status??1)};import{access as zt,mkdir as Ut,readFile as Be,writeFile as It}from"fs/promises";import{dirname as De,join as ve}from"path";import Et from"process";import{parse as jt}from"jsonc-parser";var m=async e=>{try{return await zt(e),!0}catch{return!1}},S=async()=>{if(await m("pnpm-workspace.yaml"))return!0;try{let e=jt(await Be("package.json","utf-8"));return e?!!e.workspaces||!!e.workspace:!1}catch{return!1}},k=async({dependencies:e,devDependencies:t,scripts:o,type:i})=>{let a=await Be("package.json","utf-8"),r=JSON.parse(a),l={...r};i&&(l.type=i),(r.devDependencies||t)&&(l.devDependencies={...r.devDependencies,...t}),(r.dependencies||e)&&(l.dependencies={...r.dependencies,...e}),(r.scripts||o)&&(l.scripts={...r.scripts,...o}),await It("package.json",JSON.stringify(l,null,2))},b=async e=>{let t=De(e);if(t!=="."){let o=t.startsWith("./")?t.slice(2):t;await Ut(o,{recursive:!0})}},Tt=["biome.json","biome.jsonc"],Gt=["eslint.config.mjs","eslint.config.js","eslint.config.cjs","eslint.config.ts","eslint.config.mts","eslint.config.cts"],Bt=[".oxlintrc.json","oxlint.config.ts"],X=async()=>{let e=Et.cwd();for(;;){for(let o of Tt)if(await m(ve(e,o)))return"biome";for(let o of Gt)if(await m(ve(e,o)))return"eslint";for(let o of Bt)if(await m(ve(e,o)))return"oxlint";let t=De(e);if(t===e)break;e=t}return null};var Dt=(e,t)=>{let o=["check","--no-errors-on-unmatched",...t];e.length>0?o.push(...e):o.push("./");let i=h("biome",o,{stdio:"inherit"});v("Biome",i)},Pt=(e,t)=>{let o=[...t,...e.length>0?e:["."]],i=h("eslint",o,{stdio:"inherit"});v("ESLint",i)},Ft=(e,t)=>{let o=["--check",...t,...e.length>0?e:["."]],i=h("prettier",o,{stdio:"inherit"});v("Prettier",i)},Nt=(e,t)=>{let o=[...t,...e.length>0?e:["."]],i=h("stylelint",o,{stdio:"inherit"});v("Stylelint",i)},Ot=(e,t)=>{let o=[...t,...e.length>0?e:["."]],i=h("oxlint",o,{stdio:"inherit"});v("Oxlint",i)},Lt=(e,t)=>{let o=["--check",...t,...e.length>0?e:["."]],i=h("oxfmt",o,{stdio:"inherit"});v("oxfmt",i)},Pe=async(e=[],t=[])=>{let o=await X();if(!o)throw new Error("No linter configuration found. Run `ultracite init` to set up a linter.");switch(o){case"eslint":{await Ft(e,[]),await Pt(e,t),await Nt(e,[]);break}case"oxlint":{await Lt(e,[]),await Ot(e,t);break}default:await Dt(e,t)}};import{existsSync as U}from"fs";import{readFile as te}from"fs/promises";import{join as I}from"path";import E from"process";import{intro as Rt,log as ee,outro as ye,spinner as Mt}from"@clack/prompts";import{parse as $t}from"jsonc-parser";var _t=[".prettierrc",".prettierrc.js",".prettierrc.cjs",".prettierrc.mjs",".prettierrc.json",".prettierrc.yaml",".prettierrc.yml","prettier.config.js","prettier.config.mjs","prettier.config.cjs"],Vt=[".eslintrc",".eslintrc.js",".eslintrc.cjs",".eslintrc.mjs",".eslintrc.json",".eslintrc.yaml",".eslintrc.yml","eslint.config.js","eslint.config.mjs","eslint.config.cjs","eslint.config.ts","eslint.config.mts","eslint.config.cts"],Wt=()=>{let e=h("biome",["--version"],{encoding:"utf-8"});return e.status===0&&e.stdout?{message:`Biome is installed (${String(e.stdout).trim()})`,name:"Biome installation",status:"pass"}:{message:"Biome is not installed or not accessible",name:"Biome installation",status:"fail"}},Jt=()=>{let e=h("eslint",["--version"],{encoding:"utf-8"});return e.status===0&&e.stdout?{message:`ESLint is installed (${String(e.stdout).trim()})`,name:"ESLint installation",status:"pass"}:{message:"ESLint is not installed (optional)",name:"ESLint installation",status:"warn"}},qt=()=>{let e=h("oxlint",["--version"],{encoding:"utf-8"});return e.status===0&&e.stdout?{message:`Oxlint is installed (${String(e.stdout).trim()})`,name:"Oxlint installation",status:"pass"}:{message:"Oxlint is not installed (optional)",name:"Oxlint installation",status:"warn"}},Ht=async()=>{let e=I(E.cwd(),"biome.json"),t=I(E.cwd(),"biome.jsonc"),o=null;if(U(e)?o=e:U(t)&&(o=t),!o)return{message:"No biome.json or biome.jsonc file found",name:"Biome configuration",status:"warn"};try{let i=await te(o,"utf-8"),a=$t(i);return Array.isArray(a?.extends)&&a.extends.includes("ultracite/biome/core")?{message:"biome.json(c) extends ultracite/biome/core",name:"Biome configuration",status:"pass"}:{message:"biome.json(c) exists but doesn't extend ultracite/biome/core",name:"Biome configuration",status:"warn"}}catch{return{message:"Could not parse biome.json(c) file",name:"Biome configuration",status:"fail"}}},Kt=async()=>{let e=["eslint.config.mjs","eslint.config.js","eslint.config.cjs","eslint.config.ts","eslint.config.mts","eslint.config.cts"],t=null;for(let o of e){let i=I(E.cwd(),o);if(U(i)){t=i;break}}if(!t)return{message:"No eslint.config.* file found (optional)",name:"ESLint configuration",status:"warn"};try{return(await te(t,"utf-8")).includes("ultracite/eslint")?{message:"eslint.config.* imports ultracite/eslint",name:"ESLint configuration",status:"pass"}:{message:"eslint.config.* exists but doesn't import ultracite/eslint",name:"ESLint configuration",status:"warn"}}catch{return{message:"Could not read eslint.config.* file",name:"ESLint configuration",status:"fail"}}},Qt=e=>`ultracite/oxlint/${e}`,Zt=async()=>{let e=I(E.cwd(),"oxlint.config.ts");if(!U(e))return{message:"No oxlint.config.ts file found (optional)",name:"Oxlint configuration",status:"warn"};try{return(await te(e,"utf-8")).includes(Qt("core"))?{message:"oxlint.config.ts extends ultracite oxlint config",name:"Oxlint configuration",status:"pass"}:{message:"oxlint.config.ts exists but doesn't extend ultracite config",name:"Oxlint configuration",status:"warn"}}catch{return{message:"Could not read oxlint.config.ts file",name:"Oxlint configuration",status:"fail"}}},Yt=async()=>{let e=I(E.cwd(),"package.json");if(!U(e))return{message:"No package.json found",name:"Ultracite dependency",status:"warn"};try{let t=JSON.parse(await te(e,"utf-8")),o=t.dependencies?.ultracite||t.devDependencies?.ultracite||t.peerDependencies?.ultracite;return o?{message:`Ultracite is in package.json (${o})`,name:"Ultracite dependency",status:"pass"}:{message:"Ultracite not found in package.json dependencies",name:"Ultracite dependency",status:"warn"}}catch{return{message:"Could not parse package.json",name:"Ultracite dependency",status:"warn"}}},Xt=()=>{let e=_t.some(i=>U(I(E.cwd(),i))),o=Vt.filter(i=>!i.startsWith("eslint.config")).some(i=>U(I(E.cwd(),i)));if(e||o){let i=[];return e&&i.push("Prettier"),o&&i.push("ESLint (legacy config)"),{message:`Found potentially conflicting tools: ${i.join(", ")}`,name:"Conflicting tools",status:"warn"}}return{message:"No conflicting formatting/linting tools found",name:"Conflicting tools",status:"pass"}},A=async(e,t)=>{let o=Mt();o.start(`Checking ${t}...`);let i=await e();return i.status==="pass"||i.status,o.stop(i.message),i},Fe=async()=>{Rt(`Ultracite v${d.version} Doctor`);let e=[await A(Wt,"Biome installation"),await A(Jt,"ESLint installation"),await A(qt,"Oxlint installation"),await A(Ht,"Biome configuration"),await A(Kt,"ESLint configuration"),await A(Zt,"Oxlint configuration"),await A(Yt,"Ultracite dependency"),await A(Xt,"conflicting tools")],t=e.filter(a=>a.status==="pass").length,o=e.filter(a=>a.status==="fail").length,i=e.filter(a=>a.status==="warn").length;if(ee.info(`Summary: ${t} passed, ${i} warnings, ${o} failed`),o>0)throw ee.error("Some checks failed. Run 'ultracite init' to fix issues."),ye("Doctor complete"),new Error("Doctor checks failed");if(i>0){ee.warn("Some optional improvements available. Run 'ultracite init' to configure."),ye("Doctor complete");return}ee.success("Everything looks good!"),ye("Doctor complete")};var e2=(e,t)=>{let o=["check","--write","--no-errors-on-unmatched",...t];e.length>0?o.push(...e):o.push("./");let i=h("biome",o,{stdio:"inherit"});v("Biome",i)},t2=(e,t)=>{let o=["--fix",...t,...e.length>0?e:["."]],i=h("eslint",o,{stdio:"inherit"});v("ESLint",i)},o2=(e,t)=>{let o=["--write",...t,...e.length>0?e:["."]],i=h("prettier",o,{stdio:"inherit"});v("Prettier",i)},i2=(e,t)=>{let o=["--fix",...t,...e.length>0?e:["."]],i=h("stylelint",o,{stdio:"inherit"});v("Stylelint",i)},s2=(e,t)=>{let o=t.includes("--unsafe"),i=t.filter(l=>l!=="--unsafe"),a=[o?"--fix-dangerously":"--fix",...i,...e.length>0?e:["."]],r=h("oxlint",a,{stdio:"inherit"});v("Oxlint",r)},n2=(e,t)=>{let o=["--write",...t,...e.length>0?e:["."]],i=h("oxfmt",o,{stdio:"inherit"});v("oxfmt",i)},Ne=async(e,t=[])=>{let o=await X();if(!o)throw new Error("No linter configuration found. Run `ultracite init` to set up a linter.");switch(o){case"eslint":{await o2(e,[]),await t2(e,t),await i2(e,[]);break}case"oxlint":{await n2(e,[]),await s2(e,t);break}default:await e2(e,t)}};import Ii from"process";import{cancel as L,intro as Ei,isCancel as R,log as Z,multiselect as Y,select as ji,spinner as w}from"@clack/prompts";var Oe="./adal-VMG3GLKT.svg";var Le="./aider-K7JLZT2D.svg";var Re="./amazon-q-TSOJNPXB.svg";var Me="./amp-EV4LVL5I.svg";var $e="./augmentcode-Q62PVXKO.svg";var oe="./bob-MRQ23J26.svg";var _e="./claude-6DLEHRDQ.svg";var Ve="./cline-6HWKIYN7.svg";var We="./coder-7BVXO5OJ.svg";var Je="./codex-NQZ5TJCL.svg";var qe="./continue-LKI2ZW3R.svg";var He="./copilot-L2IY45R2.svg";var Ke="./crush-LYLRDQGZ.svg";var ie="./cursor-GQNH5LCA.svg";var Qe="./devin-KY5ISKEW.svg";var Ze="./droid-266OHJBT.svg";var Ye="./firebase-studio-ILLWWYU7.svg";var Xe="./firebender-UNO6LSZG.svg";var e1="./gemini-OYS6V4BH.svg";var t1="./goose-XBIEVD4H.svg";var o1="./jules-HJPVWU73.svg";var i1="./junie-RUWBUV6N.svg";var s1="./kilo-code-4QYUYY2E.svg";var n1="./kimi-6SOFW673.svg";var a1="./langchain-5SXQKAL3.svg";var r1="./lovable-UELF2DY5.svg";var l1="./mcpjam-V2GHUPJN.svg";var c1="./mistral-HQ63EC2B.svg";var d1="./ona-KYYK3HQX.svg";var p1="./open-hands-K5EYKO6T.svg";var m1="./openclaw-XFPF7FMJ.svg";var f1="./opencode-K3274JKQ.svg";var g1="./pi-AZOSKO3D.svg";var u1="./qoder-LPW47DKG.svg";var h1="./qwen-N3D5CQYL.svg";var w1="./replit-WKR4Y6HH.svg";var v1="./roo-code-CVLBTS7D.svg";var y1="./snowflake-S3LTTUXJ.svg";var k1="./vercel-27VSITAQ.svg";var b1="./warp-OZKAAQRT.svg";var x1="./zencoder-VTSK5Z7Z.svg";var se=(e,t)=>`# Ultracite Code Standards
3
3
 
4
4
  This project uses **Ultracite**, a zero-config preset that enforces strict code quality standards through automated formatting and linting.
5
5
 
@@ -153,9 +153,12 @@ export default defineConfig({
153
153
  ${e.join(`,
154
154
  `)}
155
155
  ],
156
- });`,lang:"typescript",name:"oxlint.config.ts"},{code:()=>`import config from "ultracite/oxfmt";
156
+ });`,lang:"typescript",name:"oxlint.config.ts"},{code:()=>`import { defineConfig } from "oxfmt";
157
+ import ultracite from "ultracite/oxfmt";
157
158
 
158
- export default config;`,lang:"typescript",name:"oxfmt.config.ts"}],description:"The fastest linter available. Oxlint is part of the Oxc project, running 50-100x faster than ESLint with a focus on catching bugs and reducing false positives.",id:"oxlint",includes:["Oxlint","Oxfmt"],logo:B1,name:"Oxlint + Oxfmt",subtitle:"The fastest linter available",vscodeExtensionId:"oxc.oxc-vscode"}];import{addDevDependency as Ti,detectPackageManager as Gi}from"nypm";import{readFile as vo,writeFile as ke}from"fs/promises";import{dlxCommand as yo}from"nypm";var F1=e=>e.replace(/ Code$/,"").replace(/ Agent$/,""),ko=(e,t)=>{if(e==="AGENTS.md"&&t.length>1){let i=t.slice(0,3),a=t.length>i.length?", and more":"";return`Universal (creates ${e} for ${i.join(", ")}${a})`}let[o]=t;return`${o} (creates ${e})`},N1=()=>{let e=new Map;for(let o of j){let i=e.get(o.config.path)??[];i.push(o),e.set(o.config.path,i)}return[...e.entries()].map(([o,i])=>{let[a]=i,r=i.map(c=>F1(c.name)),l=o==="AGENTS.md"&&i.length>1;return{agentIds:i.map(c=>c.id),displayName:l?"Universal":F1(a.name),id:l?"universal":a.id,path:o,promptLabel:ko(o,r),representativeAgentId:a.id}}).toSorted((o,i)=>o.path==="AGENTS.md"?-1:i.path==="AGENTS.md"?1:0)},O1=(e,t,o)=>{let i=j.find(f=>f.id===e);if(!i)throw new Error(`Agent "${e}" not found`);let a=re.find(f=>f.id===o);if(!a)throw new Error(`Provider "${o}" not found`);let r=yo(t,""),l=se(r,a.name),c=i.config.header?`${i.config.header}
159
+ export default defineConfig({
160
+ extends: [ultracite],
161
+ });`,lang:"typescript",name:"oxfmt.config.ts"}],description:"The fastest linter available. Oxlint is part of the Oxc project, running 50-100x faster than ESLint with a focus on catching bugs and reducing false positives.",id:"oxlint",includes:["Oxlint","Oxfmt"],logo:B1,name:"Oxlint + Oxfmt",subtitle:"The fastest linter available",vscodeExtensionId:"oxc.oxc-vscode"}];import{addDevDependency as Ti,detectPackageManager as Gi}from"nypm";import{readFile as vo,writeFile as ke}from"fs/promises";import{dlxCommand as yo}from"nypm";var F1=e=>e.replace(/ Code$/,"").replace(/ Agent$/,""),ko=(e,t)=>{if(e==="AGENTS.md"&&t.length>1){let i=t.slice(0,3),a=t.length>i.length?", and more":"";return`Universal (creates ${e} for ${i.join(", ")}${a})`}let[o]=t;return`${o} (creates ${e})`},N1=()=>{let e=new Map;for(let o of j){let i=e.get(o.config.path)??[];i.push(o),e.set(o.config.path,i)}return[...e.entries()].map(([o,i])=>{let[a]=i,r=i.map(c=>F1(c.name)),l=o==="AGENTS.md"&&i.length>1;return{agentIds:i.map(c=>c.id),displayName:l?"Universal":F1(a.name),id:l?"universal":a.id,path:o,promptLabel:ko(o,r),representativeAgentId:a.id}}).toSorted((o,i)=>o.path==="AGENTS.md"?-1:i.path==="AGENTS.md"?1:0)},O1=(e,t,o)=>{let i=j.find(f=>f.id===e);if(!i)throw new Error(`Agent "${e}" not found`);let a=re.find(f=>f.id===o);if(!a)throw new Error(`Provider "${o}" not found`);let r=yo(t,""),l=se(r,a.name),c=i.config.header?`${i.config.header}
159
162
 
160
163
  ${l}`:l;return{create:async()=>{await b(i.config.path),await ke(i.config.path,c)},exists:()=>m(i.config.path),update:async()=>{await b(i.config.path);let f=await m(i.config.path);if(!(i.config.appendMode&&f)){await ke(i.config.path,c);return}let u=await vo(i.config.path,"utf-8");u.includes(l.trim())||await ke(i.config.path,`${u}
161
164
 
@@ -264,9 +267,12 @@ export default [
264
267
  ${o.join(`,
265
268
  `)},
266
269
  ];
267
- `},pe={create:async e=>{let t=X1(e);await Z1(Y1,t)},exists:async()=>await ni()!==null,update:async e=>{let t=X1(e);await Z1(Y1,t)}};import{writeFile as et}from"fs/promises";var Ie="./oxfmt.config.ts",tt=`import config from "ultracite/oxfmt";
270
+ `},pe={create:async e=>{let t=X1(e);await Z1(Y1,t)},exists:async()=>await ni()!==null,update:async e=>{let t=X1(e);await Z1(Y1,t)}};import{writeFile as et}from"fs/promises";var Ie="./oxfmt.config.ts",tt=`import { defineConfig } from "oxfmt";
271
+ import ultracite from "ultracite/oxfmt";
268
272
 
269
- export default config;
273
+ export default defineConfig({
274
+ extends: [ultracite],
275
+ });
270
276
  `,me={create:async()=>await et(Ie,tt),exists:async()=>await m(Ie),update:async()=>await et(Ie,tt)};import{readFile as ai,writeFile as ot}from"fs/promises";var fe="./oxlint.config.ts",Q=e=>`ultracite/oxlint/${e}`,it=e=>{let t=e.split("/").pop();return t==="core"?"core":t},st=e=>{let t=e.map(i=>`import ${it(i)} from "${i}";`).join(`
271
277
  `),o=e.map(i=>` ${it(i)},`).join(`
272
278
  `);return`import { defineConfig } from "oxlint";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ultracite",
3
- "version": "7.5.5",
3
+ "version": "7.5.6",
4
4
  "description": "The AI-ready formatter that helps you write and generate code faster.",
5
5
  "keywords": [
6
6
  "biome",
@@ -29,10 +29,6 @@
29
29
  ],
30
30
  "type": "module",
31
31
  "exports": {
32
- "./oxlint": {
33
- "types": "./dist/oxlint.d.ts",
34
- "default": "./dist/oxlint.js"
35
- },
36
32
  "./biome/*": "./config/biome/*/biome.jsonc",
37
33
  "./eslint/*": "./config/eslint/*/eslint.config.mjs",
38
34
  "./oxlint/*": "./config/oxlint/*/index.mjs",
package/dist/oxlint.d.ts DELETED
@@ -1,544 +0,0 @@
1
- declare const angular: {
2
- rules: {};
3
- };
4
- declare const astro: {
5
- rules: {};
6
- };
7
- declare const core: {
8
- plugins: ("eslint" | "unicorn" | "typescript" | "oxc" | "import" | "jsdoc" | "promise" | "node")[];
9
- env: {
10
- browser: true;
11
- };
12
- categories: {
13
- correctness: "error";
14
- perf: "error";
15
- restriction: "error";
16
- suspicious: "error";
17
- pedantic: "error";
18
- style: "error";
19
- };
20
- rules: {
21
- "no-await-in-loop": "off";
22
- "max-lines-per-function": "off";
23
- "no-implicit-coercion": "off";
24
- "no-magic-numbers": "off";
25
- "no-console": "off";
26
- "no-ternary": "off";
27
- "no-undefined": "off";
28
- "max-lines": "off";
29
- "id-length": "off";
30
- "func-style": ["error", string, {
31
- allowArrowFunctions: boolean;
32
- }];
33
- "arrow-body-style": ["error", string];
34
- "max-depth": "off";
35
- "max-params": "off";
36
- "max-statements": "off";
37
- "capitalized-comments": "off";
38
- "new-cap": "off";
39
- "no-continue": "off";
40
- "init-declarations": "off";
41
- "sort-imports": "off";
42
- "no-duplicate-imports": ["error", {
43
- allowSeparateTypeImports: boolean;
44
- }];
45
- "no-void": ["error", {
46
- allowAsStatement: boolean;
47
- }];
48
- "import/no-relative-parent-imports": "off";
49
- "import/no-default-export": "off";
50
- "import/exports-last": "off";
51
- "import/no-named-export": "off";
52
- "import/max-dependencies": "off";
53
- "import/extensions": "off";
54
- "import/no-namespace": "off";
55
- "import/no-anonymous-default-export": "off";
56
- "import/prefer-default-export": "off";
57
- "import/group-exports": "off";
58
- "import/no-commonjs": "off";
59
- "import/unambiguous": "off";
60
- "import/consistent-type-specifier-style": ["error", string];
61
- "import/no-dynamic-require": "off";
62
- "import/no-unassigned-import": "off";
63
- "import/no-nodejs-modules": "off";
64
- "jsdoc/require-param": "off";
65
- "jsdoc/require-param-type": "off";
66
- "jsdoc/require-returns": "off";
67
- "jsdoc/require-returns-type": "off";
68
- "unicorn/explicit-length-check": "off";
69
- "unicorn/no-array-callback-reference": "off";
70
- "unicorn/no-process-exit": "off";
71
- "unicorn/prefer-global-this": "off";
72
- "unicorn/no-null": "off";
73
- "unicorn/prefer-top-level-await": "off";
74
- "unicorn/prefer-string-raw": "off";
75
- "unicorn/text-encoding-identifier-case": ["error", {
76
- withDash: boolean;
77
- }];
78
- "typescript/explicit-module-boundary-types": "off";
79
- "typescript/no-require-imports": "off";
80
- "typescript/explicit-function-return-type": "off";
81
- "typescript/no-var-requires": "off";
82
- "typescript/require-await": "off";
83
- "node/no-process-env": "off";
84
- "oxc/no-map-spread": "off";
85
- "oxc/no-async-await": "off";
86
- "oxc/no-rest-spread-properties": "off";
87
- "oxc/no-optional-chaining": "off";
88
- "promise/catch-or-return": "off";
89
- "promise/always-return": "off";
90
- };
91
- overrides: {
92
- files: string[];
93
- rules: {
94
- "no-empty-function": "off";
95
- "promise/prefer-await-to-then": "off";
96
- };
97
- }[];
98
- };
99
- declare const jest: {
100
- overrides: {
101
- files: string[];
102
- plugins: "jest"[];
103
- rules: {
104
- "jest/require-hook": "off";
105
- "jest/no-conditional-in-test": "off";
106
- "jest/no-hooks": "off";
107
- "promise/prefer-await-to-then": "off";
108
- "no-empty-function": "off";
109
- "jest/consistent-test-it": "error";
110
- "jest/expect-expect": "error";
111
- "jest/max-expects": "error";
112
- "jest/max-nested-describe": "error";
113
- "jest/no-alias-methods": "error";
114
- "jest/no-commented-out-tests": "error";
115
- "jest/no-conditional-expect": "error";
116
- "jest/no-confusing-set-timeout": "error";
117
- "jest/no-deprecated-functions": "error";
118
- "jest/no-disabled-tests": "error";
119
- "jest/no-done-callback": "error";
120
- "jest/no-duplicate-hooks": "error";
121
- "jest/no-export": "error";
122
- "jest/no-focused-tests": "error";
123
- "jest/no-identical-title": "error";
124
- "jest/no-interpolation-in-snapshots": "error";
125
- "jest/no-jasmine-globals": "error";
126
- "jest/no-large-snapshots": "error";
127
- "jest/no-mocks-import": "error";
128
- "jest/no-restricted-jest-methods": "error";
129
- "jest/no-restricted-matchers": "error";
130
- "jest/no-standalone-expect": "error";
131
- "jest/no-test-prefixes": "error";
132
- "jest/no-test-return-statement": "error";
133
- "jest/no-untyped-mock-factory": "error";
134
- "jest/padding-around-test-blocks": "error";
135
- "jest/prefer-called-with": "error";
136
- "jest/prefer-comparison-matcher": "error";
137
- "jest/prefer-each": "error";
138
- "jest/prefer-equality-matcher": "error";
139
- "jest/prefer-expect-resolves": "error";
140
- "jest/prefer-hooks-in-order": "error";
141
- "jest/prefer-hooks-on-top": "error";
142
- "jest/prefer-jest-mocked": "error";
143
- "jest/prefer-lowercase-title": "error";
144
- "jest/prefer-mock-promise-shorthand": "error";
145
- "jest/prefer-spy-on": "error";
146
- "jest/prefer-strict-equal": "error";
147
- "jest/prefer-to-be": "error";
148
- "jest/prefer-to-contain": "error";
149
- "jest/prefer-to-have-been-called": "error";
150
- "jest/prefer-to-have-been-called-times": "error";
151
- "jest/prefer-to-have-length": "error";
152
- "jest/prefer-todo": "error";
153
- "jest/require-to-throw-message": "error";
154
- "jest/require-top-level-describe": "error";
155
- "jest/valid-describe-callback": "error";
156
- "jest/valid-expect": "error";
157
- "jest/valid-title": "error";
158
- };
159
- }[];
160
- };
161
- declare const nestjs: {
162
- rules: {};
163
- };
164
- declare const next: {
165
- plugins: "nextjs"[];
166
- rules: {};
167
- overrides: {
168
- files: string[];
169
- rules: {
170
- "import/no-unassigned-import": "off";
171
- };
172
- }[];
173
- };
174
- declare const qwik: {
175
- rules: {};
176
- };
177
- declare const react: {
178
- plugins: ("react" | "jsx-a11y" | "react-perf")[];
179
- rules: {
180
- "react/only-export-components": "off";
181
- "react/jsx-boolean-value": "off";
182
- "react/react-in-jsx-scope": "off";
183
- "react/jsx-filename-extension": "off";
184
- "react/no-unknown-property": "off";
185
- "react/jsx-props-no-spreading": "off";
186
- "react/jsx-max-depth": "off";
187
- "react/no-multi-comp": "off";
188
- "react-perf/jsx-no-jsx-as-prop": "off";
189
- "react-perf/jsx-no-new-object-as-prop": "off";
190
- "react-perf/jsx-no-new-array-as-prop": "off";
191
- "jsx-a11y/no-autofocus": "off";
192
- };
193
- };
194
- declare const remix: {
195
- overrides: {
196
- files: string[];
197
- rules: {
198
- "unicorn/filename-case": "off";
199
- "unicorn/no-abusive-eslint-disable": "off";
200
- };
201
- }[];
202
- rules: {};
203
- };
204
- declare const solid: {
205
- rules: {};
206
- };
207
- declare const svelte: {
208
- rules: {};
209
- };
210
- declare const vitest: {
211
- overrides: {
212
- files: string[];
213
- plugins: "vitest"[];
214
- rules: {
215
- "no-empty-function": "off";
216
- "promise/prefer-await-to-then": "off";
217
- "vitest/consistent-test-filename": "error";
218
- "vitest/consistent-vitest-vi": "error";
219
- "vitest/expect-expect": "error";
220
- "vitest/no-alias-methods": "error";
221
- "vitest/no-commented-out-tests": "error";
222
- "vitest/no-conditional-expect": "error";
223
- "vitest/no-conditional-tests": "error";
224
- "vitest/no-disabled-tests": "error";
225
- "vitest/no-duplicate-hooks": "error";
226
- "vitest/no-focused-tests": "error";
227
- "vitest/no-identical-title": "error";
228
- "vitest/no-import-node-test": "error";
229
- "vitest/no-interpolation-in-snapshots": "error";
230
- "vitest/no-large-snapshots": "error";
231
- "vitest/no-mocks-import": "error";
232
- "vitest/no-restricted-matchers": "error";
233
- "vitest/no-restricted-vi-methods": "error";
234
- "vitest/no-standalone-expect": "error";
235
- "vitest/no-test-prefixes": "error";
236
- "vitest/no-test-return-statement": "error";
237
- "vitest/prefer-called-with": "error";
238
- "vitest/prefer-called-times": "off";
239
- "vitest/prefer-comparison-matcher": "error";
240
- "vitest/prefer-each": "error";
241
- "vitest/prefer-equality-matcher": "error";
242
- "vitest/prefer-expect-resolves": "error";
243
- "vitest/prefer-hooks-in-order": "error";
244
- "vitest/prefer-hooks-on-top": "error";
245
- "vitest/prefer-lowercase-title": "error";
246
- "vitest/prefer-mock-promise-shorthand": "error";
247
- "vitest/prefer-spy-on": "error";
248
- "vitest/prefer-strict-equal": "error";
249
- "vitest/prefer-strict-boolean-matchers": "off";
250
- "vitest/prefer-to-be": "error";
251
- "vitest/prefer-to-be-falsy": "error";
252
- "vitest/prefer-to-be-object": "error";
253
- "vitest/prefer-to-be-truthy": "error";
254
- "vitest/prefer-to-contain": "error";
255
- "vitest/prefer-to-have-length": "error";
256
- "vitest/prefer-todo": "error";
257
- "vitest/require-local-test-context-for-concurrent-snapshots": "error";
258
- "vitest/require-to-throw-message": "error";
259
- "vitest/require-top-level-describe": "error";
260
- "vitest/valid-describe-callback": "error";
261
- "vitest/valid-expect": "error";
262
- "vitest/valid-title": "error";
263
- "vitest/warn-todo": "error";
264
- };
265
- }[];
266
- };
267
- declare const vue: {
268
- plugins: "vue"[];
269
- rules: {};
270
- };
271
- declare const configs: {
272
- angular: {
273
- rules: {};
274
- };
275
- astro: {
276
- rules: {};
277
- };
278
- core: {
279
- plugins: ("eslint" | "unicorn" | "typescript" | "oxc" | "import" | "jsdoc" | "promise" | "node")[];
280
- env: {
281
- browser: true;
282
- };
283
- categories: {
284
- correctness: "error";
285
- perf: "error";
286
- restriction: "error";
287
- suspicious: "error";
288
- pedantic: "error";
289
- style: "error";
290
- };
291
- rules: {
292
- "no-await-in-loop": "off";
293
- "max-lines-per-function": "off";
294
- "no-implicit-coercion": "off";
295
- "no-magic-numbers": "off";
296
- "no-console": "off";
297
- "no-ternary": "off";
298
- "no-undefined": "off";
299
- "max-lines": "off";
300
- "id-length": "off";
301
- "func-style": ["error", string, {
302
- allowArrowFunctions: boolean;
303
- }];
304
- "arrow-body-style": ["error", string];
305
- "max-depth": "off";
306
- "max-params": "off";
307
- "max-statements": "off";
308
- "capitalized-comments": "off";
309
- "new-cap": "off";
310
- "no-continue": "off";
311
- "init-declarations": "off";
312
- "sort-imports": "off";
313
- "no-duplicate-imports": ["error", {
314
- allowSeparateTypeImports: boolean;
315
- }];
316
- "no-void": ["error", {
317
- allowAsStatement: boolean;
318
- }];
319
- "import/no-relative-parent-imports": "off";
320
- "import/no-default-export": "off";
321
- "import/exports-last": "off";
322
- "import/no-named-export": "off";
323
- "import/max-dependencies": "off";
324
- "import/extensions": "off";
325
- "import/no-namespace": "off";
326
- "import/no-anonymous-default-export": "off";
327
- "import/prefer-default-export": "off";
328
- "import/group-exports": "off";
329
- "import/no-commonjs": "off";
330
- "import/unambiguous": "off";
331
- "import/consistent-type-specifier-style": ["error", string];
332
- "import/no-dynamic-require": "off";
333
- "import/no-unassigned-import": "off";
334
- "import/no-nodejs-modules": "off";
335
- "jsdoc/require-param": "off";
336
- "jsdoc/require-param-type": "off";
337
- "jsdoc/require-returns": "off";
338
- "jsdoc/require-returns-type": "off";
339
- "unicorn/explicit-length-check": "off";
340
- "unicorn/no-array-callback-reference": "off";
341
- "unicorn/no-process-exit": "off";
342
- "unicorn/prefer-global-this": "off";
343
- "unicorn/no-null": "off";
344
- "unicorn/prefer-top-level-await": "off";
345
- "unicorn/prefer-string-raw": "off";
346
- "unicorn/text-encoding-identifier-case": ["error", {
347
- withDash: boolean;
348
- }];
349
- "typescript/explicit-module-boundary-types": "off";
350
- "typescript/no-require-imports": "off";
351
- "typescript/explicit-function-return-type": "off";
352
- "typescript/no-var-requires": "off";
353
- "typescript/require-await": "off";
354
- "node/no-process-env": "off";
355
- "oxc/no-map-spread": "off";
356
- "oxc/no-async-await": "off";
357
- "oxc/no-rest-spread-properties": "off";
358
- "oxc/no-optional-chaining": "off";
359
- "promise/catch-or-return": "off";
360
- "promise/always-return": "off";
361
- };
362
- overrides: {
363
- files: string[];
364
- rules: {
365
- "no-empty-function": "off";
366
- "promise/prefer-await-to-then": "off";
367
- };
368
- }[];
369
- };
370
- jest: {
371
- overrides: {
372
- files: string[];
373
- plugins: "jest"[];
374
- rules: {
375
- "jest/require-hook": "off";
376
- "jest/no-conditional-in-test": "off";
377
- "jest/no-hooks": "off";
378
- "promise/prefer-await-to-then": "off";
379
- "no-empty-function": "off";
380
- "jest/consistent-test-it": "error";
381
- "jest/expect-expect": "error";
382
- "jest/max-expects": "error";
383
- "jest/max-nested-describe": "error";
384
- "jest/no-alias-methods": "error";
385
- "jest/no-commented-out-tests": "error";
386
- "jest/no-conditional-expect": "error";
387
- "jest/no-confusing-set-timeout": "error";
388
- "jest/no-deprecated-functions": "error";
389
- "jest/no-disabled-tests": "error";
390
- "jest/no-done-callback": "error";
391
- "jest/no-duplicate-hooks": "error";
392
- "jest/no-export": "error";
393
- "jest/no-focused-tests": "error";
394
- "jest/no-identical-title": "error";
395
- "jest/no-interpolation-in-snapshots": "error";
396
- "jest/no-jasmine-globals": "error";
397
- "jest/no-large-snapshots": "error";
398
- "jest/no-mocks-import": "error";
399
- "jest/no-restricted-jest-methods": "error";
400
- "jest/no-restricted-matchers": "error";
401
- "jest/no-standalone-expect": "error";
402
- "jest/no-test-prefixes": "error";
403
- "jest/no-test-return-statement": "error";
404
- "jest/no-untyped-mock-factory": "error";
405
- "jest/padding-around-test-blocks": "error";
406
- "jest/prefer-called-with": "error";
407
- "jest/prefer-comparison-matcher": "error";
408
- "jest/prefer-each": "error";
409
- "jest/prefer-equality-matcher": "error";
410
- "jest/prefer-expect-resolves": "error";
411
- "jest/prefer-hooks-in-order": "error";
412
- "jest/prefer-hooks-on-top": "error";
413
- "jest/prefer-jest-mocked": "error";
414
- "jest/prefer-lowercase-title": "error";
415
- "jest/prefer-mock-promise-shorthand": "error";
416
- "jest/prefer-spy-on": "error";
417
- "jest/prefer-strict-equal": "error";
418
- "jest/prefer-to-be": "error";
419
- "jest/prefer-to-contain": "error";
420
- "jest/prefer-to-have-been-called": "error";
421
- "jest/prefer-to-have-been-called-times": "error";
422
- "jest/prefer-to-have-length": "error";
423
- "jest/prefer-todo": "error";
424
- "jest/require-to-throw-message": "error";
425
- "jest/require-top-level-describe": "error";
426
- "jest/valid-describe-callback": "error";
427
- "jest/valid-expect": "error";
428
- "jest/valid-title": "error";
429
- };
430
- }[];
431
- };
432
- nestjs: {
433
- rules: {};
434
- };
435
- next: {
436
- plugins: "nextjs"[];
437
- rules: {};
438
- overrides: {
439
- files: string[];
440
- rules: {
441
- "import/no-unassigned-import": "off";
442
- };
443
- }[];
444
- };
445
- qwik: {
446
- rules: {};
447
- };
448
- react: {
449
- plugins: ("react" | "jsx-a11y" | "react-perf")[];
450
- rules: {
451
- "react/only-export-components": "off";
452
- "react/jsx-boolean-value": "off";
453
- "react/react-in-jsx-scope": "off";
454
- "react/jsx-filename-extension": "off";
455
- "react/no-unknown-property": "off";
456
- "react/jsx-props-no-spreading": "off";
457
- "react/jsx-max-depth": "off";
458
- "react/no-multi-comp": "off";
459
- "react-perf/jsx-no-jsx-as-prop": "off";
460
- "react-perf/jsx-no-new-object-as-prop": "off";
461
- "react-perf/jsx-no-new-array-as-prop": "off";
462
- "jsx-a11y/no-autofocus": "off";
463
- };
464
- };
465
- remix: {
466
- overrides: {
467
- files: string[];
468
- rules: {
469
- "unicorn/filename-case": "off";
470
- "unicorn/no-abusive-eslint-disable": "off";
471
- };
472
- }[];
473
- rules: {};
474
- };
475
- solid: {
476
- rules: {};
477
- };
478
- svelte: {
479
- rules: {};
480
- };
481
- vitest: {
482
- overrides: {
483
- files: string[];
484
- plugins: "vitest"[];
485
- rules: {
486
- "no-empty-function": "off";
487
- "promise/prefer-await-to-then": "off";
488
- "vitest/consistent-test-filename": "error";
489
- "vitest/consistent-vitest-vi": "error";
490
- "vitest/expect-expect": "error";
491
- "vitest/no-alias-methods": "error";
492
- "vitest/no-commented-out-tests": "error";
493
- "vitest/no-conditional-expect": "error";
494
- "vitest/no-conditional-tests": "error";
495
- "vitest/no-disabled-tests": "error";
496
- "vitest/no-duplicate-hooks": "error";
497
- "vitest/no-focused-tests": "error";
498
- "vitest/no-identical-title": "error";
499
- "vitest/no-import-node-test": "error";
500
- "vitest/no-interpolation-in-snapshots": "error";
501
- "vitest/no-large-snapshots": "error";
502
- "vitest/no-mocks-import": "error";
503
- "vitest/no-restricted-matchers": "error";
504
- "vitest/no-restricted-vi-methods": "error";
505
- "vitest/no-standalone-expect": "error";
506
- "vitest/no-test-prefixes": "error";
507
- "vitest/no-test-return-statement": "error";
508
- "vitest/prefer-called-with": "error";
509
- "vitest/prefer-called-times": "off";
510
- "vitest/prefer-comparison-matcher": "error";
511
- "vitest/prefer-each": "error";
512
- "vitest/prefer-equality-matcher": "error";
513
- "vitest/prefer-expect-resolves": "error";
514
- "vitest/prefer-hooks-in-order": "error";
515
- "vitest/prefer-hooks-on-top": "error";
516
- "vitest/prefer-lowercase-title": "error";
517
- "vitest/prefer-mock-promise-shorthand": "error";
518
- "vitest/prefer-spy-on": "error";
519
- "vitest/prefer-strict-equal": "error";
520
- "vitest/prefer-strict-boolean-matchers": "off";
521
- "vitest/prefer-to-be": "error";
522
- "vitest/prefer-to-be-falsy": "error";
523
- "vitest/prefer-to-be-object": "error";
524
- "vitest/prefer-to-be-truthy": "error";
525
- "vitest/prefer-to-contain": "error";
526
- "vitest/prefer-to-have-length": "error";
527
- "vitest/prefer-todo": "error";
528
- "vitest/require-local-test-context-for-concurrent-snapshots": "error";
529
- "vitest/require-to-throw-message": "error";
530
- "vitest/require-top-level-describe": "error";
531
- "vitest/valid-describe-callback": "error";
532
- "vitest/valid-expect": "error";
533
- "vitest/valid-title": "error";
534
- "vitest/warn-todo": "error";
535
- };
536
- }[];
537
- };
538
- vue: {
539
- plugins: "vue"[];
540
- rules: {};
541
- };
542
- };
543
-
544
- export { angular, astro, configs, core, jest, nestjs, next, qwik, react, remix, solid, svelte, vitest, vue };
package/dist/oxlint.js DELETED
@@ -1 +0,0 @@
1
- var e=["**/*.{test,spec}.{ts,tsx,js,jsx}","**/__tests__/**/*.{ts,tsx,js,jsx}"],r={rules:{}},o={rules:{}},t={plugins:["eslint","typescript","unicorn","oxc","import","jsdoc","node","promise"],env:{browser:!0},categories:{correctness:"error",perf:"error",restriction:"error",suspicious:"error",pedantic:"error",style:"error"},rules:{"no-await-in-loop":"off","max-lines-per-function":"off","no-implicit-coercion":"off","no-magic-numbers":"off","no-console":"off","no-ternary":"off","no-undefined":"off","max-lines":"off","id-length":"off","func-style":["error","expression",{allowArrowFunctions:!0}],"arrow-body-style":["error","as-needed"],"max-depth":"off","max-params":"off","max-statements":"off","capitalized-comments":"off","new-cap":"off","no-continue":"off","init-declarations":"off","sort-imports":"off","no-duplicate-imports":["error",{allowSeparateTypeImports:!0}],"no-void":["error",{allowAsStatement:!0}],"import/no-relative-parent-imports":"off","import/no-default-export":"off","import/exports-last":"off","import/no-named-export":"off","import/max-dependencies":"off","import/extensions":"off","import/no-namespace":"off","import/no-anonymous-default-export":"off","import/prefer-default-export":"off","import/group-exports":"off","import/no-commonjs":"off","import/unambiguous":"off","import/consistent-type-specifier-style":["error","prefer-top-level"],"import/no-dynamic-require":"off","import/no-unassigned-import":"off","import/no-nodejs-modules":"off","jsdoc/require-param":"off","jsdoc/require-param-type":"off","jsdoc/require-returns":"off","jsdoc/require-returns-type":"off","unicorn/explicit-length-check":"off","unicorn/no-array-callback-reference":"off","unicorn/no-process-exit":"off","unicorn/prefer-global-this":"off","unicorn/no-null":"off","unicorn/prefer-top-level-await":"off","unicorn/prefer-string-raw":"off","unicorn/text-encoding-identifier-case":["error",{withDash:!0}],"typescript/explicit-module-boundary-types":"off","typescript/no-require-imports":"off","typescript/explicit-function-return-type":"off","typescript/no-var-requires":"off","typescript/require-await":"off","node/no-process-env":"off","oxc/no-map-spread":"off","oxc/no-async-await":"off","oxc/no-rest-spread-properties":"off","oxc/no-optional-chaining":"off","promise/catch-or-return":"off","promise/always-return":"off"},overrides:[{files:e,rules:{"no-empty-function":"off","promise/prefer-await-to-then":"off"}}]},s={overrides:[{files:e,plugins:["jest"],rules:{"jest/require-hook":"off","jest/no-conditional-in-test":"off","jest/no-hooks":"off","promise/prefer-await-to-then":"off","no-empty-function":"off","jest/consistent-test-it":"error","jest/expect-expect":"error","jest/max-expects":"error","jest/max-nested-describe":"error","jest/no-alias-methods":"error","jest/no-commented-out-tests":"error","jest/no-conditional-expect":"error","jest/no-confusing-set-timeout":"error","jest/no-deprecated-functions":"error","jest/no-disabled-tests":"error","jest/no-done-callback":"error","jest/no-duplicate-hooks":"error","jest/no-export":"error","jest/no-focused-tests":"error","jest/no-identical-title":"error","jest/no-interpolation-in-snapshots":"error","jest/no-jasmine-globals":"error","jest/no-large-snapshots":"error","jest/no-mocks-import":"error","jest/no-restricted-jest-methods":"error","jest/no-restricted-matchers":"error","jest/no-standalone-expect":"error","jest/no-test-prefixes":"error","jest/no-test-return-statement":"error","jest/no-untyped-mock-factory":"error","jest/padding-around-test-blocks":"error","jest/prefer-called-with":"error","jest/prefer-comparison-matcher":"error","jest/prefer-each":"error","jest/prefer-equality-matcher":"error","jest/prefer-expect-resolves":"error","jest/prefer-hooks-in-order":"error","jest/prefer-hooks-on-top":"error","jest/prefer-jest-mocked":"error","jest/prefer-lowercase-title":"error","jest/prefer-mock-promise-shorthand":"error","jest/prefer-spy-on":"error","jest/prefer-strict-equal":"error","jest/prefer-to-be":"error","jest/prefer-to-contain":"error","jest/prefer-to-have-been-called":"error","jest/prefer-to-have-been-called-times":"error","jest/prefer-to-have-length":"error","jest/prefer-todo":"error","jest/require-to-throw-message":"error","jest/require-top-level-describe":"error","jest/valid-describe-callback":"error","jest/valid-expect":"error","jest/valid-title":"error"}}]},i={rules:{}},n={plugins:["nextjs"],rules:{},overrides:[{files:["**/next-env.d.ts"],rules:{"import/no-unassigned-import":"off"}}]},f={rules:{}},p={plugins:["react","react-perf","jsx-a11y"],rules:{"react/only-export-components":"off","react/jsx-boolean-value":"off","react/react-in-jsx-scope":"off","react/jsx-filename-extension":"off","react/no-unknown-property":"off","react/jsx-props-no-spreading":"off","react/jsx-max-depth":"off","react/no-multi-comp":"off","react-perf/jsx-no-jsx-as-prop":"off","react-perf/jsx-no-new-object-as-prop":"off","react-perf/jsx-no-new-array-as-prop":"off","jsx-a11y/no-autofocus":"off"}},a={overrides:[{files:["**/routeTree.gen.ts"],rules:{"unicorn/filename-case":"off","unicorn/no-abusive-eslint-disable":"off"}}],rules:{}},c={rules:{}},l={rules:{}},u={overrides:[{files:e,plugins:["vitest"],rules:{"no-empty-function":"off","promise/prefer-await-to-then":"off","vitest/consistent-test-filename":"error","vitest/consistent-vitest-vi":"error","vitest/expect-expect":"error","vitest/no-alias-methods":"error","vitest/no-commented-out-tests":"error","vitest/no-conditional-expect":"error","vitest/no-conditional-tests":"error","vitest/no-disabled-tests":"error","vitest/no-duplicate-hooks":"error","vitest/no-focused-tests":"error","vitest/no-identical-title":"error","vitest/no-import-node-test":"error","vitest/no-interpolation-in-snapshots":"error","vitest/no-large-snapshots":"error","vitest/no-mocks-import":"error","vitest/no-restricted-matchers":"error","vitest/no-restricted-vi-methods":"error","vitest/no-standalone-expect":"error","vitest/no-test-prefixes":"error","vitest/no-test-return-statement":"error","vitest/prefer-called-with":"error","vitest/prefer-called-times":"off","vitest/prefer-comparison-matcher":"error","vitest/prefer-each":"error","vitest/prefer-equality-matcher":"error","vitest/prefer-expect-resolves":"error","vitest/prefer-hooks-in-order":"error","vitest/prefer-hooks-on-top":"error","vitest/prefer-lowercase-title":"error","vitest/prefer-mock-promise-shorthand":"error","vitest/prefer-spy-on":"error","vitest/prefer-strict-equal":"error","vitest/prefer-strict-boolean-matchers":"off","vitest/prefer-to-be":"error","vitest/prefer-to-be-falsy":"error","vitest/prefer-to-be-object":"error","vitest/prefer-to-be-truthy":"error","vitest/prefer-to-contain":"error","vitest/prefer-to-have-length":"error","vitest/prefer-todo":"error","vitest/require-local-test-context-for-concurrent-snapshots":"error","vitest/require-to-throw-message":"error","vitest/require-top-level-describe":"error","vitest/valid-describe-callback":"error","vitest/valid-expect":"error","vitest/valid-title":"error","vitest/warn-todo":"error"}}]},m={plugins:["vue"],rules:{}},d={angular:r,astro:o,core:t,jest:s,nestjs:i,next:n,qwik:f,react:p,remix:a,solid:c,svelte:l,vitest:u,vue:m};export{r as angular,o as astro,d as configs,t as core,s as jest,i as nestjs,n as next,f as qwik,p as react,a as remix,c as solid,l as svelte,u as vitest,m as vue};