ultracite 5.5.4 → 5.5.5

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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -117,7 +117,7 @@ ${n}`)}}});var os,le=C(()=>{os=me({"./husky.ts":()=>(re(),Q(Be)),"./lefthook.ts"
117
117
  `}else t+=`${s}: '${n}'
118
118
  `;return t},us=async()=>{try{let e=pe(await B("./package.json","utf-8"));return e?e.type==="module":!1}catch{return!1}},ps=async e=>{let t=pe(await B("./package.json","utf-8"));t&&(t["lint-staged"]?t["lint-staged"]=F(t["lint-staged"],h(e)):t["lint-staged"]=h(e),await b("./package.json",JSON.stringify(t,null,2)))},ms=async(e,t)=>{let s=await B(e,"utf-8"),n=pe(s);if(!n)return;let o=F(n,h(t));await b(e,JSON.stringify(o,null,2))},fs=async(e,t)=>{let s=await B(e,"utf-8"),n=ls(s);if(!n)return;let o=F(n,h(t));await b(e,ds(o))},gs=async(e,t)=>{let o=(await import(is(e).href)).default||{},i=F(o,h(t)),r=`export default ${JSON.stringify(i,null,2)};
119
119
  `;await b(e,r)},hs=async(e,t)=>{delete K.cache[K.resolve(`./${e}`)];let s=os(`./${e}`),n=F(s,h(t)),o=`module.exports = ${JSON.stringify(n,null,2)};
120
- `;await b(e,o)},ue=async e=>{await b(".lintstagedrc.json",JSON.stringify(h(e),null,2))},ys=async(e,t)=>{if(e==="./package.json"){await ps(t);return}if(e.endsWith(".json")||e==="./.lintstagedrc"){await ms(e,t);return}if(e.endsWith(".yaml")||e.endsWith(".yml")){await fs(e,t);return}let s=await us();if(e.endsWith(".mjs")||e.endsWith(".js")&&s){try{await gs(e,t)}catch{await ue(t)}return}if(e.endsWith(".cjs")||e.endsWith(".js")&&!s)try{await hs(e,t)}catch{await ue(t)}},D={exists:async()=>{for(let e of Xe)if(await a(e))return!0;return!1},install:async e=>{await as("lint-staged",{packageManager:e,workspace:await g()})},create:async e=>{await b(".lintstagedrc.json",JSON.stringify(h(e),null,2))},update:async e=>{let t=null;for(let s of Xe)if(await a(s)){t=s;break}if(!t){await ue(e);return}await ys(t,e)}}});import{initTRPC as Is}from"@trpc/server";import{createCli as Us}from"trpc-cli";import c from"zod";var y={name:"ultracite",description:"The AI-ready formatter that helps you write and generate code faster.",version:"5.5.3",type:"module",bin:{ultracite:"dist/index.js"},files:["biome.jsonc","dist"],scripts:{build:"tsup",test:"vitest run","test:coverage":"vitest run --coverage"},main:"./biome.jsonc",author:"Hayden Bleasel <hello@haydenbleasel.com>",bugs:{url:"https://github.com/haydenbleasel/ultracite/issues"},homepage:"https://github.com/haydenbleasel/ultracite#readme",keywords:["ultracite","biome","linter","formatter","fixer"],license:"MIT",publishConfig:{access:"public",registry:"https://registry.npmjs.org/"},repository:{type:"git",url:"git+https://github.com/haydenbleasel/ultracite.git"},devDependencies:{"@auto-it/all-contributors":"^11.3.0","@auto-it/first-time-contributor":"^11.3.0","@biomejs/biome":"2.2.5","@types/node":"^24.5.2","@vitest/coverage-v8":"3.2.4",tsup:"^8.5.0"},dependencies:{"@clack/prompts":"^0.11.0","@trpc/server":"^11.5.1",deepmerge:"^4.3.1","jsonc-parser":"^3.3.1",nypm:"^0.6.2","trpc-cli":"^0.11.0",vitest:"^3.2.4",zod:"^4.1.11"},packageManager:"pnpm@10.17.0"};p();import{spawnSync as pt}from"child_process";import he from"process";var ee=e=>{let t=["npx","@biomejs/biome","check","--no-errors-on-unmatched"];e.length>0?t.push(...N(e)):t.push("./");let s=t.join(" "),n=pt(s,{stdio:"inherit",shell:!0});n.error&&(console.error("Failed to run Ultracite:",n.error.message),he.exit(1)),n.status!==0&&he.exit(n.status??1)};import{spawnSync as Pt}from"child_process";import{existsSync as P}from"fs";import{readFile as De}from"fs/promises";import{join as R}from"path";import{parse as Rt}from"jsonc-parser";p();import{readFile as ye,unlink as mt,writeFile as ft}from"fs/promises";import{parse as we}from"jsonc-parser";import{removeDependency as gt}from"nypm";var I=[".eslintrc",".eslintrc.js",".eslintrc.json",".eslintrc.yml",".eslintrc.yaml",".eslintrc.config.js","eslint.config.js","eslint.config.mjs","eslint.config.cjs",".eslintignore"],be=async()=>{try{let e=await ye("package.json","utf-8"),t=we(e);if(!t||typeof t!="object")return[];let s=t.dependencies||{},n=t.devDependencies||{},o={...s,...n};return Object.keys(o).filter(i=>i.includes("eslint"))}catch{return[]}},ht=async(e,t)=>{if(t.length!==0)try{for(let s of t)await gt(s,{packageManager:e})}catch(s){console.warn(s)}},yt=async()=>{let e=[];for(let t of I)if(await a(t))try{await mt(t),e.push(t)}catch(s){console.warn(s)}return e},wt=async()=>{let e="./.vscode/settings.json";if(!await a(e))return!1;try{let t=await ye(e,"utf-8"),s=we(t);if(!s||typeof s!="object")return!1;let n=!1,o={...s},i=["eslint.enable","eslint.format.enable","eslint.validate","eslint.workingDirectories","eslint.codeAction.showDocumentation","eslint.run","eslint.autoFixOnSave","eslint.quiet","eslint.packageManager","eslint.options","eslint.trace.server"];for(let r of i)r in o&&(delete o[r],n=!0);if("editor.codeActionsOnSave"in o){let r=o["editor.codeActionsOnSave"];if(r&&typeof r=="object"){let l=["source.fixAll.eslint","source.organizeImports.eslint"];for(let u of l)u in r&&(delete r[u],n=!0);Object.keys(r).length===0&&(o["editor.codeActionsOnSave"]=void 0)}}return n?(await ft(e,JSON.stringify(o,null,2)),!0):!1}catch(t){return console.warn(t),!1}},bt=async()=>{if((await be()).length>0)return!0;for(let t of I)if(await a(t))return!0;return!1},te={hasEsLint:bt,remove:async e=>{let t=await be();await ht(e,t);let s=await yt(),n=await wt();return{packagesRemoved:t,filesRemoved:s,vsCodeCleaned:n}}};p();import{readFile as ke,unlink as kt,writeFile as vt}from"fs/promises";import{parse as ve}from"jsonc-parser";import{removeDependency as xt}from"nypm";var U=[".prettierrc",".prettierrc.js",".prettierrc.json",".prettierrc.yml",".prettierrc.yaml",".prettierrc.config.js","prettier.config.js","prettier.config.mjs",".prettierignore"],xe=async()=>{try{let e=await ke("package.json","utf-8"),t=ve(e);if(!t||typeof t!="object")return[];let s=t.dependencies||{},n=t.devDependencies||{},o={...s,...n};return Object.keys(o).filter(i=>i.includes("prettier"))}catch{return[]}},Dt=async(e,t)=>{if(t.length!==0)try{for(let s of t)await xt(s,{packageManager:e})}catch(s){console.warn(s)}},jt=async()=>{let e=[];for(let t of U)if(await a(t))try{await kt(t),e.push(t)}catch(s){console.warn(s)}return e},Ct=async()=>{let e="./.vscode/settings.json";if(!await a(e))return!1;try{let t=await ke(e,"utf-8"),s=ve(t);if(!s||typeof s!="object")return!1;let n=!1,o={...s},i=["editor.defaultFormatter","prettier.enable","prettier.requireConfig","prettier.configPath","prettier.printWidth","prettier.tabWidth","prettier.useTabs","prettier.semi","prettier.singleQuote","prettier.quoteProps","prettier.trailingComma","prettier.bracketSpacing","prettier.arrowParens","prettier.endOfLine"];for(let l of i)l in o&&(l==="editor.defaultFormatter"&&o[l]==="esbenp.prettier-vscode"||l!=="editor.defaultFormatter")&&(delete o[l],n=!0);let r=Object.keys(o).filter(l=>l.startsWith("[")&&l.includes("javascript"));for(let l of r){let u=o[l];u&&typeof u=="object"&&"editor.defaultFormatter"in u&&u["editor.defaultFormatter"]==="esbenp.prettier-vscode"&&(u["editor.defaultFormatter"]=void 0,n=!0,Object.keys(u).length===0&&delete o[l])}return n?(await vt(e,JSON.stringify(o,null,2)),!0):!1}catch(t){return console.warn(t),!1}},St=async()=>{if((await xe()).length>0)return!0;for(let t of U)if(await a(t))return!0;return!1},se={hasPrettier:St,remove:async e=>{let t=await xe();await Dt(e,t);let s=await jt(),n=await Ct();return{packagesRemoved:t,filesRemoved:s,vsCodeCleaned:n}}};var At=()=>{let e=Pt("npx @biomejs/biome --version",{shell:!0,encoding:"utf-8"});return e.status===0&&e.stdout?{name:"Biome installation",status:"pass",message:`Biome is installed (${e.stdout.trim()})`}:{name:"Biome installation",status:"fail",message:"Biome is not installed or not accessible"}},Mt=async()=>{let e=R(process.cwd(),"biome.json"),t=R(process.cwd(),"biome.jsonc"),s=null;if(P(e)?s=e:P(t)&&(s=t),!s)return{name:"Biome configuration",status:"fail",message:"No biome.json or biome.jsonc file found"};try{let n=await De(s,"utf-8"),o=Rt(n);return Array.isArray(o?.extends)&&o.extends.includes("ultracite")?{name:"Biome configuration",status:"pass",message:"biome.json(c) extends ultracite"}:{name:"Biome configuration",status:"warn",message:"biome.json(c) exists but doesn't extend ultracite"}}catch{return{name:"Biome configuration",status:"fail",message:"Could not parse biome.json(c) file"}}},Et=async()=>{let e=R(process.cwd(),"package.json");if(!P(e))return{name:"Ultracite dependency",status:"warn",message:"No package.json found"};try{let t=JSON.parse(await De(e,"utf-8")),s=t.dependencies?.ultracite||t.devDependencies?.ultracite||t.peerDependencies?.ultracite;return s?{name:"Ultracite dependency",status:"pass",message:`Ultracite is in package.json (${s})`}:{name:"Ultracite dependency",status:"warn",message:"Ultracite not found in package.json dependencies"}}catch{return{name:"Ultracite dependency",status:"warn",message:"Could not parse package.json"}}},$t=()=>{let e=U.some(s=>P(R(process.cwd(),s))),t=I.some(s=>P(R(process.cwd(),s)));if(e||t){let s=[];return e&&s.push("Prettier"),t&&s.push("ESLint"),{name:"Conflicting tools",status:"warn",message:`Found potentially conflicting tools: ${s.join(", ")}`}}return{name:"Conflicting tools",status:"pass",message:"No conflicting formatting/linting tools found"}},je=async()=>{let e=[];console.log(`\u{1FA7A} Running Ultracite doctor...
120
+ `;await b(e,o)},ue=async e=>{await b(".lintstagedrc.json",JSON.stringify(h(e),null,2))},ys=async(e,t)=>{if(e==="./package.json"){await ps(t);return}if(e.endsWith(".json")||e==="./.lintstagedrc"){await ms(e,t);return}if(e.endsWith(".yaml")||e.endsWith(".yml")){await fs(e,t);return}let s=await us();if(e.endsWith(".mjs")||e.endsWith(".js")&&s){try{await gs(e,t)}catch{await ue(t)}return}if(e.endsWith(".cjs")||e.endsWith(".js")&&!s)try{await hs(e,t)}catch{await ue(t)}},D={exists:async()=>{for(let e of Xe)if(await a(e))return!0;return!1},install:async e=>{await as("lint-staged",{packageManager:e,workspace:await g()})},create:async e=>{await b(".lintstagedrc.json",JSON.stringify(h(e),null,2))},update:async e=>{let t=null;for(let s of Xe)if(await a(s)){t=s;break}if(!t){await ue(e);return}await ys(t,e)}}});import{initTRPC as Is}from"@trpc/server";import{createCli as Us}from"trpc-cli";import c from"zod";var y={name:"ultracite",description:"The AI-ready formatter that helps you write and generate code faster.",version:"5.5.4",type:"module",bin:{ultracite:"dist/index.js"},files:["biome.jsonc","dist"],scripts:{build:"tsup",test:"vitest run","test:coverage":"vitest run --coverage"},main:"./biome.jsonc",author:"Hayden Bleasel <hello@haydenbleasel.com>",bugs:{url:"https://github.com/haydenbleasel/ultracite/issues"},homepage:"https://github.com/haydenbleasel/ultracite#readme",keywords:["ultracite","biome","linter","formatter","fixer"],license:"MIT",publishConfig:{access:"public",registry:"https://registry.npmjs.org/"},repository:{type:"git",url:"git+https://github.com/haydenbleasel/ultracite.git"},devDependencies:{"@auto-it/all-contributors":"^11.3.0","@auto-it/first-time-contributor":"^11.3.0","@biomejs/biome":"2.2.5","@types/node":"^24.5.2","@vitest/coverage-v8":"3.2.4",tsup:"^8.5.0"},dependencies:{"@clack/prompts":"^0.11.0","@trpc/server":"^11.5.1",deepmerge:"^4.3.1","jsonc-parser":"^3.3.1",nypm:"^0.6.2","trpc-cli":"^0.11.0",vitest:"^3.2.4",zod:"^4.1.11"},packageManager:"pnpm@10.17.0"};p();import{spawnSync as pt}from"child_process";import he from"process";var ee=e=>{let t=["npx","@biomejs/biome","check","--no-errors-on-unmatched"];e.length>0?t.push(...N(e)):t.push("./");let s=t.join(" "),n=pt(s,{stdio:"inherit",shell:!0});n.error&&(console.error("Failed to run Ultracite:",n.error.message),he.exit(1)),n.status!==0&&he.exit(n.status??1)};import{spawnSync as Pt}from"child_process";import{existsSync as P}from"fs";import{readFile as De}from"fs/promises";import{join as R}from"path";import{parse as Rt}from"jsonc-parser";p();import{readFile as ye,unlink as mt,writeFile as ft}from"fs/promises";import{parse as we}from"jsonc-parser";import{removeDependency as gt}from"nypm";var I=[".eslintrc",".eslintrc.js",".eslintrc.json",".eslintrc.yml",".eslintrc.yaml",".eslintrc.config.js","eslint.config.js","eslint.config.mjs","eslint.config.cjs",".eslintignore"],be=async()=>{try{let e=await ye("package.json","utf-8"),t=we(e);if(!t||typeof t!="object")return[];let s=t.dependencies||{},n=t.devDependencies||{},o={...s,...n};return Object.keys(o).filter(i=>i.includes("eslint"))}catch{return[]}},ht=async(e,t)=>{if(t.length!==0)try{for(let s of t)await gt(s,{packageManager:e})}catch(s){console.warn(s)}},yt=async()=>{let e=[];for(let t of I)if(await a(t))try{await mt(t),e.push(t)}catch(s){console.warn(s)}return e},wt=async()=>{let e="./.vscode/settings.json";if(!await a(e))return!1;try{let t=await ye(e,"utf-8"),s=we(t);if(!s||typeof s!="object")return!1;let n=!1,o={...s},i=["eslint.enable","eslint.format.enable","eslint.validate","eslint.workingDirectories","eslint.codeAction.showDocumentation","eslint.run","eslint.autoFixOnSave","eslint.quiet","eslint.packageManager","eslint.options","eslint.trace.server"];for(let r of i)r in o&&(delete o[r],n=!0);if("editor.codeActionsOnSave"in o){let r=o["editor.codeActionsOnSave"];if(r&&typeof r=="object"){let l=["source.fixAll.eslint","source.organizeImports.eslint"];for(let u of l)u in r&&(delete r[u],n=!0);Object.keys(r).length===0&&(o["editor.codeActionsOnSave"]=void 0)}}return n?(await ft(e,JSON.stringify(o,null,2)),!0):!1}catch(t){return console.warn(t),!1}},bt=async()=>{if((await be()).length>0)return!0;for(let t of I)if(await a(t))return!0;return!1},te={hasEsLint:bt,remove:async e=>{let t=await be();await ht(e,t);let s=await yt(),n=await wt();return{packagesRemoved:t,filesRemoved:s,vsCodeCleaned:n}}};p();import{readFile as ke,unlink as kt,writeFile as vt}from"fs/promises";import{parse as ve}from"jsonc-parser";import{removeDependency as xt}from"nypm";var U=[".prettierrc",".prettierrc.js",".prettierrc.json",".prettierrc.yml",".prettierrc.yaml",".prettierrc.config.js","prettier.config.js","prettier.config.mjs",".prettierignore"],xe=async()=>{try{let e=await ke("package.json","utf-8"),t=ve(e);if(!t||typeof t!="object")return[];let s=t.dependencies||{},n=t.devDependencies||{},o={...s,...n};return Object.keys(o).filter(i=>i.includes("prettier"))}catch{return[]}},Dt=async(e,t)=>{if(t.length!==0)try{for(let s of t)await xt(s,{packageManager:e})}catch(s){console.warn(s)}},jt=async()=>{let e=[];for(let t of U)if(await a(t))try{await kt(t),e.push(t)}catch(s){console.warn(s)}return e},Ct=async()=>{let e="./.vscode/settings.json";if(!await a(e))return!1;try{let t=await ke(e,"utf-8"),s=ve(t);if(!s||typeof s!="object")return!1;let n=!1,o={...s},i=["editor.defaultFormatter","prettier.enable","prettier.requireConfig","prettier.configPath","prettier.printWidth","prettier.tabWidth","prettier.useTabs","prettier.semi","prettier.singleQuote","prettier.quoteProps","prettier.trailingComma","prettier.bracketSpacing","prettier.arrowParens","prettier.endOfLine"];for(let l of i)l in o&&(l==="editor.defaultFormatter"&&o[l]==="esbenp.prettier-vscode"||l!=="editor.defaultFormatter")&&(delete o[l],n=!0);let r=Object.keys(o).filter(l=>l.startsWith("[")&&l.includes("javascript"));for(let l of r){let u=o[l];u&&typeof u=="object"&&"editor.defaultFormatter"in u&&u["editor.defaultFormatter"]==="esbenp.prettier-vscode"&&(u["editor.defaultFormatter"]=void 0,n=!0,Object.keys(u).length===0&&delete o[l])}return n?(await vt(e,JSON.stringify(o,null,2)),!0):!1}catch(t){return console.warn(t),!1}},St=async()=>{if((await xe()).length>0)return!0;for(let t of U)if(await a(t))return!0;return!1},se={hasPrettier:St,remove:async e=>{let t=await xe();await Dt(e,t);let s=await jt(),n=await Ct();return{packagesRemoved:t,filesRemoved:s,vsCodeCleaned:n}}};var At=()=>{let e=Pt("npx @biomejs/biome --version",{shell:!0,encoding:"utf-8"});return e.status===0&&e.stdout?{name:"Biome installation",status:"pass",message:`Biome is installed (${e.stdout.trim()})`}:{name:"Biome installation",status:"fail",message:"Biome is not installed or not accessible"}},Mt=async()=>{let e=R(process.cwd(),"biome.json"),t=R(process.cwd(),"biome.jsonc"),s=null;if(P(e)?s=e:P(t)&&(s=t),!s)return{name:"Biome configuration",status:"fail",message:"No biome.json or biome.jsonc file found"};try{let n=await De(s,"utf-8"),o=Rt(n);return Array.isArray(o?.extends)&&o.extends.includes("ultracite")?{name:"Biome configuration",status:"pass",message:"biome.json(c) extends ultracite"}:{name:"Biome configuration",status:"warn",message:"biome.json(c) exists but doesn't extend ultracite"}}catch{return{name:"Biome configuration",status:"fail",message:"Could not parse biome.json(c) file"}}},Et=async()=>{let e=R(process.cwd(),"package.json");if(!P(e))return{name:"Ultracite dependency",status:"warn",message:"No package.json found"};try{let t=JSON.parse(await De(e,"utf-8")),s=t.dependencies?.ultracite||t.devDependencies?.ultracite||t.peerDependencies?.ultracite;return s?{name:"Ultracite dependency",status:"pass",message:`Ultracite is in package.json (${s})`}:{name:"Ultracite dependency",status:"warn",message:"Ultracite not found in package.json dependencies"}}catch{return{name:"Ultracite dependency",status:"warn",message:"Could not parse package.json"}}},$t=()=>{let e=U.some(s=>P(R(process.cwd(),s))),t=I.some(s=>P(R(process.cwd(),s)));if(e||t){let s=[];return e&&s.push("Prettier"),t&&s.push("ESLint"),{name:"Conflicting tools",status:"warn",message:`Found potentially conflicting tools: ${s.join(", ")}`}}return{name:"Conflicting tools",status:"pass",message:"No conflicting formatting/linting tools found"}},je=async()=>{let e=[];console.log(`\u{1FA7A} Running Ultracite doctor...
121
121
  `),e.push(At()),e.push(await Mt()),e.push(await Et()),e.push($t());let t=e.filter(o=>o.status==="pass").length,s=e.filter(o=>o.status==="fail").length,n=e.filter(o=>o.status==="warn").length;for(let o of e){let i;o.status==="pass"?i="\u2705":o.status==="fail"?i="\u274C":i="\u26A0\uFE0F",console.log(`${i} ${o.name}: ${o.message}`)}console.log(`
122
122
  \u{1F4CA} Summary:`),console.log(` ${t} passed, ${n} warnings, ${s} failed`),s>0&&(console.log(`
123
123
  \u{1F4A1} To fix issues, run: npx ultracite init`),process.exit(1)),n>0?console.log(`
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ultracite",
3
3
  "description": "The AI-ready formatter that helps you write and generate code faster.",
4
- "version": "5.5.4",
4
+ "version": "5.5.5",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "ultracite": "dist/index.js"