ultracite 7.6.0 → 7.6.1
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.
|
@@ -1,9 +1,61 @@
|
|
|
1
1
|
{
|
|
2
2
|
"root": false,
|
|
3
3
|
"$schema": "../../../node_modules/@biomejs/biome/configuration_schema.json",
|
|
4
|
-
"extends": ["../../shared/ignores.jsonc"],
|
|
5
4
|
"files": {
|
|
6
|
-
"ignoreUnknown": true
|
|
5
|
+
"ignoreUnknown": true,
|
|
6
|
+
// Populated by scripts/generate-dts.ts from config/shared/ignores.mjs.
|
|
7
|
+
// Inlined (rather than extended from a separate jsonc file) so the !!
|
|
8
|
+
// globs survive merge when consumers define their own files.includes —
|
|
9
|
+
// see issue #679.
|
|
10
|
+
"includes": [
|
|
11
|
+
"**",
|
|
12
|
+
"!!**/dist",
|
|
13
|
+
"!!**/build",
|
|
14
|
+
"!!**/out",
|
|
15
|
+
"!!**/.next",
|
|
16
|
+
"!!**/.open-next",
|
|
17
|
+
"!!**/.nuxt",
|
|
18
|
+
"!!**/.output",
|
|
19
|
+
"!!**/.svelte-kit",
|
|
20
|
+
"!!**/.vitepress/cache",
|
|
21
|
+
"!!**/.vitepress/dist",
|
|
22
|
+
"!!**/.turbo",
|
|
23
|
+
"!!**/.vercel",
|
|
24
|
+
"!!**/.netlify",
|
|
25
|
+
"!!**/.docusaurus",
|
|
26
|
+
"!!**/.cache",
|
|
27
|
+
"!!**/.parcel-cache",
|
|
28
|
+
"!!**/.vite",
|
|
29
|
+
"!!**/.astro",
|
|
30
|
+
"!!**/_astro",
|
|
31
|
+
"!!**/public/build",
|
|
32
|
+
"!!**/storybook-static",
|
|
33
|
+
"!!**/_generated",
|
|
34
|
+
"!!**/*.gen.*",
|
|
35
|
+
"!!**/*.generated.*",
|
|
36
|
+
"!!**/*.auto.*",
|
|
37
|
+
"!!**/generated",
|
|
38
|
+
"!!**/auto-generated",
|
|
39
|
+
"!!**/codegen",
|
|
40
|
+
"!!**/__generated__",
|
|
41
|
+
"!!**/graphql-types.*",
|
|
42
|
+
"!!**/schema.d.ts",
|
|
43
|
+
"!!**/schema.graphql.d.ts",
|
|
44
|
+
"!!**/*.d.ts.map",
|
|
45
|
+
"!!**/coverage",
|
|
46
|
+
"!!**/.nyc_output",
|
|
47
|
+
"!!**/.expo",
|
|
48
|
+
"!!**/.expo-shared",
|
|
49
|
+
"!!**/android/build",
|
|
50
|
+
"!!**/ios/build",
|
|
51
|
+
"!!**/DerivedData/**/*",
|
|
52
|
+
"!!**/bun.lock",
|
|
53
|
+
"!!**/bun.lockb",
|
|
54
|
+
"!!**/package-lock.json",
|
|
55
|
+
"!!**/yarn.lock",
|
|
56
|
+
"!!**/pnpm-lock.yaml",
|
|
57
|
+
"!!**/next-env.d.ts"
|
|
58
|
+
]
|
|
7
59
|
},
|
|
8
60
|
"formatter": {
|
|
9
61
|
"enabled": true,
|
|
@@ -403,7 +403,7 @@ export default defineConfig({
|
|
|
403
403
|
"typescript/prefer-nullish-coalescing": "error",
|
|
404
404
|
"typescript/prefer-promise-reject-errors": "error",
|
|
405
405
|
"typescript/prefer-readonly": "error",
|
|
406
|
-
"typescript/prefer-readonly-parameter-types": "
|
|
406
|
+
"typescript/prefer-readonly-parameter-types": "off",
|
|
407
407
|
"typescript/prefer-reduce-type-parameter": "error",
|
|
408
408
|
"typescript/prefer-regexp-exec": "error",
|
|
409
409
|
"typescript/prefer-return-this-type": "error",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Canonical ignore patterns shared across all linters and formatters.
|
|
3
3
|
*
|
|
4
|
-
* This file is the single source of truth. The prebuild script
|
|
5
|
-
*
|
|
6
|
-
* (oxlint, oxfmt, eslint) import this module directly.
|
|
4
|
+
* This file is the single source of truth. The prebuild script syncs these
|
|
5
|
+
* patterns into biome/core's files.includes (as `!!`-prefixed globs). Other
|
|
6
|
+
* tools (oxlint, oxfmt, eslint) import this module directly.
|
|
7
7
|
*/
|
|
8
8
|
export const ignorePatterns = [
|
|
9
9
|
// ── Build / framework output ──────────────────────────────────────
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import ae from"process";import{Command as a0}from"commander";var d={name:"ultracite",version:"7.6.
|
|
2
|
+
import ae from"process";import{Command as a0}from"commander";var d={name:"ultracite",version:"7.6.1",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/*":{types:"./config/oxlint/*/index.d.mts",default:"./config/oxlint/*/index.mjs"},"./oxfmt":{types:"./config/oxfmt/index.d.mts",default:"./config/oxfmt/index.mjs"},"./prettier":"./config/prettier/prettier.config.mjs","./stylelint":"./config/stylelint/stylelint.config.mjs"},publishConfig:{access:"public",registry:"https://registry.npmjs.org/"},scripts:{prebuild:"bun run scripts/generate-dts.ts",build:"tsup",test:"bun test","test:coverage":"bun test --coverage",bench:"bun run benchmarks/cli.bench.ts","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",yaml:"^2.8.3",zod:"^4.3.6"},devDependencies:{"@angular-eslint/eslint-plugin":"latest","@biomejs/biome":"2.4.12","@eslint/js":"^10.0.1","@next/eslint-plugin-next":"^16.2.4","@repo/data":"workspace:*","@tanstack/eslint-plugin-query":"^5.99.0","@types/cross-spawn":"^6.0.6","@types/node":"^25.6.0","@typescript-eslint/eslint-plugin":"^8.58.2","@typescript-eslint/parser":"^8.58.2","@vitest/eslint-plugin":"^1.6.16","eslint-config-prettier":"^10.1.8","eslint-import-resolver-typescript":"^4.4.4","eslint-plugin-astro":"^1.7.0","eslint-plugin-compat":"^7.0.1","eslint-plugin-cypress":"^6.3.1","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.3","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.5.0",oxlint:"^1.60.0","prettier-plugin-astro":"^0.14.1","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:{oxfmt:">=0.1.0",oxlint:"^1.0.0"},peerDependenciesMeta:{oxfmt:{optional:!0},oxlint:{optional:!0}},packageManager:"bun@1.3.12"};import{sync as Ft}from"cross-spawn";var q=class extends Error{exitCode;name="LinterExitError";constructor(t,o){super(`${t} exited with code ${o}`),this.exitCode=o}},h=(e,t,o)=>Ft(e,t,{...o,shell:!1}),y=(e,t)=>{if(t.error)throw new Error(`Failed to run ${e}: ${t.error.message}`);if(t.status===null)throw new Error(`${e} was killed by signal ${t.signal??"unknown"}`);if(t.status!==0)throw new q(e,t.status)};import{accessSync as Rt,mkdirSync as $t}from"fs";import{writeFile as _t}from"fs/promises";import{dirname as $e,join as Ae}from"path";import Jt from"process";import{readFileSync as Ot}from"fs";import{readFile as Lt}from"fs/promises";import{parse as Fe}from"jsonc-parser";import{z as f}from"zod";var Mt=f.looseObject({dependencies:f.record(f.string(),f.string()).optional(),devDependencies:f.record(f.string(),f.string()).optional(),"lint-staged":f.unknown().optional(),name:f.string().optional(),peerDependencies:f.record(f.string(),f.string()).optional(),prettier:f.unknown().optional(),scripts:f.record(f.string(),f.string()).optional(),stylelint:f.unknown().optional(),type:f.string().optional(),version:f.string().optional(),workspace:f.unknown().optional(),workspaces:f.union([f.array(f.string()),f.record(f.string(),f.unknown())]).optional()}),H=e=>{let t=Fe(e),o=Mt.safeParse(t);return o.success?o.data:void 0},T=(e="package.json")=>{try{let t=Ot(e,"utf-8");return H(t)}catch{return}},Oe=async(e="package.json")=>{try{let t=await Lt(e,"utf-8");return H(t)}catch{return}},Le=f.looseObject({extends:f.array(f.string()).optional()}),Me=f.looseObject({compilerOptions:f.looseObject({strict:f.boolean().optional(),strictNullChecks:f.boolean().optional()}).optional()}),re=(e,t)=>{let o=Fe(e),i=t.safeParse(o);return i.success?i.data:void 0};var m=e=>{try{return Rt(e),!0}catch{return!1}},G=()=>{if(m("pnpm-workspace.yaml"))return!0;let e=T();return e?!!e.workspaces||!!e.workspace:!1},b=async({dependencies:e,devDependencies:t,scripts:o,type:i})=>{let a=await Oe();if(!a)throw new Error("Failed to parse package.json: file is missing or invalid");let r={...a};i&&(r.type=i),(a.devDependencies||t)&&(r.devDependencies={...a.devDependencies,...t}),(a.dependencies||e)&&(r.dependencies={...a.dependencies,...e}),(a.scripts||o)&&(r.scripts={...a.scripts,...o}),await _t("package.json",`${JSON.stringify(r,null,2)}
|
|
3
3
|
`)},U=e=>{let t=$e(e);if(t!=="."){let o=t.startsWith("./")?t.slice(2):t;$t(o,{recursive:!0})}},Re=/^[a-z][a-z0-9-]*$/,x=e=>{if(!Re.test(e))throw new Error(`Invalid framework name "${e}": must match ${Re}`);return e},Vt=["biome.json","biome.jsonc"],Wt=["eslint.config.mjs","eslint.config.js","eslint.config.cjs","eslint.config.ts","eslint.config.mts","eslint.config.cts"],qt=[".oxlintrc.json","oxlint.config.ts"],O=(e=Jt.cwd())=>{let t=e;for(;;){for(let i of Vt)if(m(Ae(t,i)))return"biome";for(let i of Wt)if(m(Ae(t,i)))return"eslint";for(let i of qt)if(m(Ae(t,i)))return"oxlint";let o=$e(t);if(o===t)break;t=o}return null};var Ht=(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"});y("Biome",i)},Kt=(e,t)=>{let o=[...t,...e.length>0?e:["."]],i=h("eslint",o,{stdio:"inherit"});y("ESLint",i)},Qt=(e,t)=>{let o=["--check",...t,...e.length>0?e:["."]],i=h("prettier",o,{stdio:"inherit"});y("Prettier",i)},Zt=(e,t)=>{let o=[...t,...e.length>0?e:["."]],i=h("stylelint",o,{stdio:"inherit"});y("Stylelint",i)},Yt=(e,t)=>{let o=[...t,...e.length>0?e:["."]],i=h("oxlint",o,{stdio:"inherit"});y("Oxlint",i)},Xt=(e,t)=>{let o=["--check",...t,...e.length>0?e:["."]],i=h("oxfmt",o,{stdio:"inherit"});y("oxfmt",i)},_e=(e=[],t=[])=>{let o=O();if(!o)throw new Error("No linter configuration found. Run `ultracite init` to set up a linter.");switch(o){case"eslint":{Qt(e,[]),Kt(e,t),Zt(e,[]);break}case"oxlint":{Xt(e,[]),Yt(e,t);break}default:Ht(e,t)}};import{existsSync as C,readFileSync as ce}from"fs";import{join as S}from"path";import z from"process";import{intro as e2,log as I,outro as le,spinner as t2}from"@clack/prompts";import{parse as o2}from"jsonc-parser";var L=(e,t)=>{let o=h(e,["--version"],{encoding:"utf-8"});return o.status===0&&o.stdout?{message:`${e} is installed (${String(o.stdout).trim()})`,name:`${e} installation`,status:"pass"}:{message:`${e} is not installed${t?"":" (optional)"}`,name:`${e} installation`,status:t?"fail":"warn"}},i2=()=>{let e=S(z.cwd(),"biome.json"),t=S(z.cwd(),"biome.jsonc"),o=null;if(C(e)?o=e:C(t)&&(o=t),!o)return{message:"No biome.json or biome.jsonc file found",name:"Biome configuration",status:"fail"};try{let i=ce(o,"utf-8"),a=o2(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"}}},s2=()=>{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=S(z.cwd(),o);if(C(i)){t=i;break}}if(!t)return{message:"No eslint.config.* file found",name:"ESLint configuration",status:"fail"};try{return ce(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"}}},n2=()=>{let e=["prettier.config.mjs","prettier.config.js","prettier.config.cjs","prettier.config.ts",".prettierrc",".prettierrc.json",".prettierrc.mjs",".prettierrc.cjs",".prettierrc.js",".prettierrc.yml",".prettierrc.yaml"];for(let t of e)if(C(S(z.cwd(),t)))return{message:`Prettier configuration found (${t})`,name:"Prettier configuration",status:"pass"};return{message:"No Prettier configuration found",name:"Prettier configuration",status:"fail"}},a2=()=>{let e=["stylelint.config.mjs","stylelint.config.js","stylelint.config.cjs",".stylelintrc",".stylelintrc.json",".stylelintrc.mjs",".stylelintrc.js",".stylelintrc.yml",".stylelintrc.yaml"];for(let t of e)if(C(S(z.cwd(),t)))return{message:`Stylelint configuration found (${t})`,name:"Stylelint configuration",status:"pass"};return{message:"No Stylelint configuration found",name:"Stylelint configuration",status:"warn"}},r2=()=>{let e=S(z.cwd(),"oxlint.config.ts");if(!C(e))return{message:"No oxlint.config.ts file found",name:"Oxlint configuration",status:"fail"};try{return ce(e,"utf-8").includes("ultracite/oxlint/")?{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"}}},l2=()=>{let e=S(z.cwd(),"oxfmt.config.ts");if(!C(e))return{message:"No oxfmt.config.ts file found",name:"oxfmt configuration",status:"fail"};try{return ce(e,"utf-8").includes("ultracite/oxfmt")?{message:"oxfmt.config.ts extends ultracite oxfmt config",name:"oxfmt configuration",status:"pass"}:{message:"oxfmt.config.ts exists but doesn't extend ultracite config",name:"oxfmt configuration",status:"warn"}}catch{return{message:"Could not read oxfmt.config.ts file",name:"oxfmt configuration",status:"fail"}}},c2=()=>{let e=S(z.cwd(),"package.json");if(!C(e))return{message:"No package.json found",name:"Ultracite dependency",status:"warn"};let t=T(e);if(!t)return{message:"Could not parse package.json",name:"Ultracite dependency",status:"warn"};let 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"}},d2=e=>{let t=[];return e!=="eslint"&&[".prettierrc",".prettierrc.js",".prettierrc.cjs",".prettierrc.mjs",".prettierrc.json",".prettierrc.yaml",".prettierrc.yml","prettier.config.js","prettier.config.mjs","prettier.config.cjs"].some(a=>C(S(z.cwd(),a)))&&t.push("Prettier"),[".eslintrc",".eslintrc.js",".eslintrc.cjs",".eslintrc.mjs",".eslintrc.json",".eslintrc.yaml",".eslintrc.yml"].some(i=>C(S(z.cwd(),i)))&&t.push("ESLint (legacy config)"),t.length>0?{message:`Found potentially conflicting tools: ${t.join(", ")}`,name:"Conflicting tools",status:"warn"}:{message:"No conflicting formatting/linting tools found",name:"Conflicting tools",status:"pass"}},p2=e=>{let t=[];switch(e){case"biome":{t.push({fn:()=>L("biome",!0),name:"Biome installation"},{fn:i2,name:"Biome configuration"});break}case"eslint":{t.push({fn:()=>L("eslint",!0),name:"ESLint installation"},{fn:s2,name:"ESLint configuration"},{fn:()=>L("prettier",!0),name:"Prettier installation"},{fn:n2,name:"Prettier configuration"},{fn:()=>L("stylelint",!1),name:"Stylelint installation"},{fn:a2,name:"Stylelint configuration"});break}case"oxlint":{t.push({fn:()=>L("oxlint",!0),name:"Oxlint installation"},{fn:r2,name:"Oxlint configuration"},{fn:()=>L("oxfmt",!0),name:"oxfmt installation"},{fn:l2,name:"oxfmt configuration"});break}default:break}return t.push({fn:c2,name:"Ultracite dependency"},{fn:()=>d2(e),name:"Conflicting tools"}),t},Je=()=>{e2(`Ultracite v${d.version} Doctor`);let e=O();if(!e)throw I.error("No linter configuration found. Run `ultracite init` to set up a linter."),le("Doctor complete"),new Error("Doctor checks failed");I.info(`Detected linter: ${e}`);let t=t2();t.start("Running diagnostics...");let i=p2(e).map(({fn:c})=>c());t.stop("Diagnostics complete.");for(let c of i)c.status==="pass"?I.success(c.message):c.status==="warn"?I.warn(c.message):I.error(c.message);let a=i.filter(c=>c.status==="pass").length,r=i.filter(c=>c.status==="fail").length,l=i.filter(c=>c.status==="warn").length;if(I.info(`Summary: ${a} passed, ${l} warnings, ${r} failed`),r>0)throw I.error("Some checks failed. Run 'ultracite init' to fix issues."),le("Doctor complete"),new Error("Doctor checks failed");if(l>0){I.warn("Some optional improvements available. Run 'ultracite init' to configure."),le("Doctor complete");return}I.success("Everything looks good!"),le("Doctor complete")};var m2=(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"});y("Biome",i)},f2=(e,t)=>{let o=["--fix",...t,...e.length>0?e:["."]],i=h("eslint",o,{stdio:"inherit"});y("ESLint",i)},g2=(e,t)=>{let o=["--write",...t,...e.length>0?e:["."]],i=h("prettier",o,{stdio:"inherit"});y("Prettier",i)},u2=(e,t)=>{let o=["--fix",...t,...e.length>0?e:["."]],i=h("stylelint",o,{stdio:"inherit"});y("Stylelint",i)},h2=(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"});y("Oxlint",r)},w2=(e,t)=>{let o=["--write",...t,...e.length>0?e:["."]],i=h("oxfmt",o,{stdio:"inherit"});y("oxfmt",i)},Ve=(e,t=[])=>{let o=O();if(!o)throw new Error("No linter configuration found. Run `ultracite init` to set up a linter.");switch(o){case"eslint":{g2(e,[]),f2(e,t),u2(e,[]);break}case"oxlint":{w2(e,[]),h2(e,t);break}default:m2(e,t)}};import Fi from"process";import{cancel as J,intro as Oi,isCancel as V,log as se,multiselect as ne,select as Li,spinner as v}from"@clack/prompts";var We="./adal-VMG3GLKT.svg";var qe="./aider-K7JLZT2D.svg";var He="./amazon-q-TSOJNPXB.svg";var Ke="./amp-EV4LVL5I.svg";var Qe="./augmentcode-Q62PVXKO.svg";var de="./bob-MRQ23J26.svg";var Ze="./claude-6DLEHRDQ.svg";var Ye="./cline-6HWKIYN7.svg";var Xe="./coder-7BVXO5OJ.svg";var e1="./codex-NQZ5TJCL.svg";var t1="./continue-LKI2ZW3R.svg";var o1="./copilot-L2IY45R2.svg";var i1="./crush-LYLRDQGZ.svg";var pe="./cursor-GQNH5LCA.svg";var s1="./devin-KY5ISKEW.svg";var n1="./droid-266OHJBT.svg";var a1="./firebase-studio-ILLWWYU7.svg";var r1="./firebender-UNO6LSZG.svg";var l1="./gemini-OYS6V4BH.svg";var c1="./goose-XBIEVD4H.svg";var d1="./jules-HJPVWU73.svg";var p1="./junie-RUWBUV6N.svg";var m1="./kilo-code-4QYUYY2E.svg";var f1="./kimi-6SOFW673.svg";var g1="./langchain-5SXQKAL3.svg";var u1="./lovable-UELF2DY5.svg";var h1="./mcpjam-V2GHUPJN.svg";var w1="./mistral-HQ63EC2B.svg";var v1="./ona-KYYK3HQX.svg";var y1="./open-hands-K5EYKO6T.svg";var k1="./openclaw-XFPF7FMJ.svg";var b1="./opencode-K3274JKQ.svg";var x1="./pi-AZOSKO3D.svg";var C1="./qoder-LPW47DKG.svg";var S1="./qwen-N3D5CQYL.svg";var z1="./replit-WKR4Y6HH.svg";var A1="./roo-code-CVLBTS7D.svg";var U1="./snowflake-S3LTTUXJ.svg";var I1="./vercel-27VSITAQ.svg";var E1="./warp-OZKAAQRT.svg";var j1="./zencoder-VTSK5Z7Z.svg";var me=(e,t)=>`# Ultracite Code Standards
|
|
4
4
|
|
|
5
5
|
This project uses **Ultracite**, a zero-config preset that enforces strict code quality standards through automated formatting and linting.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ultracite",
|
|
3
|
-
"version": "7.6.
|
|
3
|
+
"version": "7.6.1",
|
|
4
4
|
"description": "The AI-ready formatter that helps you write and generate code faster.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"biome",
|
|
@@ -40,8 +40,7 @@
|
|
|
40
40
|
"default": "./config/oxfmt/index.mjs"
|
|
41
41
|
},
|
|
42
42
|
"./prettier": "./config/prettier/prettier.config.mjs",
|
|
43
|
-
"./stylelint": "./config/stylelint/stylelint.config.mjs"
|
|
44
|
-
"./*": "./config/biome/*/biome.jsonc"
|
|
43
|
+
"./stylelint": "./config/stylelint/stylelint.config.mjs"
|
|
45
44
|
},
|
|
46
45
|
"publishConfig": {
|
|
47
46
|
"access": "public",
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
// Auto-generated from ignores.mjs — do not edit directly.
|
|
3
|
-
// This file exists so biome can extend it via "extends".
|
|
4
|
-
"files": {
|
|
5
|
-
"includes": [
|
|
6
|
-
"**",
|
|
7
|
-
"!!**/dist",
|
|
8
|
-
"!!**/build",
|
|
9
|
-
"!!**/out",
|
|
10
|
-
"!!**/.next",
|
|
11
|
-
"!!**/.open-next",
|
|
12
|
-
"!!**/.nuxt",
|
|
13
|
-
"!!**/.output",
|
|
14
|
-
"!!**/.svelte-kit",
|
|
15
|
-
"!!**/.vitepress/cache",
|
|
16
|
-
"!!**/.vitepress/dist",
|
|
17
|
-
"!!**/.turbo",
|
|
18
|
-
"!!**/.vercel",
|
|
19
|
-
"!!**/.netlify",
|
|
20
|
-
"!!**/.docusaurus",
|
|
21
|
-
"!!**/.cache",
|
|
22
|
-
"!!**/.parcel-cache",
|
|
23
|
-
"!!**/.vite",
|
|
24
|
-
"!!**/.astro",
|
|
25
|
-
"!!**/_astro",
|
|
26
|
-
"!!**/public/build",
|
|
27
|
-
"!!**/storybook-static",
|
|
28
|
-
"!!**/_generated",
|
|
29
|
-
"!!**/*.gen.*",
|
|
30
|
-
"!!**/*.generated.*",
|
|
31
|
-
"!!**/*.auto.*",
|
|
32
|
-
"!!**/generated",
|
|
33
|
-
"!!**/auto-generated",
|
|
34
|
-
"!!**/codegen",
|
|
35
|
-
"!!**/__generated__",
|
|
36
|
-
"!!**/graphql-types.*",
|
|
37
|
-
"!!**/schema.d.ts",
|
|
38
|
-
"!!**/schema.graphql.d.ts",
|
|
39
|
-
"!!**/*.d.ts.map",
|
|
40
|
-
"!!**/coverage",
|
|
41
|
-
"!!**/.nyc_output",
|
|
42
|
-
"!!**/.expo",
|
|
43
|
-
"!!**/.expo-shared",
|
|
44
|
-
"!!**/android/build",
|
|
45
|
-
"!!**/ios/build",
|
|
46
|
-
"!!**/DerivedData/**/*",
|
|
47
|
-
"!!**/bun.lock",
|
|
48
|
-
"!!**/bun.lockb",
|
|
49
|
-
"!!**/package-lock.json",
|
|
50
|
-
"!!**/yarn.lock",
|
|
51
|
-
"!!**/pnpm-lock.yaml",
|
|
52
|
-
"!!**/next-env.d.ts"
|
|
53
|
-
]
|
|
54
|
-
}
|
|
55
|
-
}
|