ultracite 5.5.0 → 5.5.2

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.
package/biome.jsonc CHANGED
@@ -383,6 +383,8 @@
383
383
  "noUnmatchableAnbSelector": "error"
384
384
  },
385
385
  "nursery": {
386
+ // Restrict imports of deprecated exports.
387
+ "noDeprecatedImports": "error",
386
388
  // Prevent the listing of duplicate dependencies.
387
389
  "noDuplicateDependencies": "error",
388
390
  // Disallow Promises to be used in places where they are almost certainly a mistake.
@@ -393,12 +395,18 @@
393
395
  "noNonNullAssertedOptionalChain": "error",
394
396
  // Disallow useVisibleTask$() functions in Qwik components.
395
397
  "noQwikUseVisibleTask": "error",
398
+ // Replaces usages of forwardRef with passing ref as a prop.
399
+ "noReactForwardRef": "error",
396
400
  // Disallow variable declarations from shadowing variables declared in the outer scope.
397
401
  "noShadow": "error",
402
+ // Disallow expression statements that are neither a function call nor an assignment.
403
+ "noUnusedExpressions": "error",
398
404
  // Disallow the use of useless undefined.
399
405
  "noUselessUndefined": "error",
400
406
  // Enforce that Vue component data options are declared as functions.
401
407
  "noVueDataObjectDeclaration": "error",
408
+ // Disallow duplicate keys in Vue component data, methods, computed properties, and other options.
409
+ "noVueDuplicateKeys": "error",
402
410
  // Disallow reserved keys in Vue component data and computed properties.
403
411
  "noVueReservedKeys": "error",
404
412
  // Disallow reserved names to be used as props.
package/dist/index.js CHANGED
@@ -117,7 +117,7 @@ ${n}`)}}});var ts,ae=j(()=>{ts=de({"./husky.ts":()=>(oe(),Y(Je)),"./lefthook.ts"
117
117
  `}else t+=`${s}: '${n}'
118
118
  `;return t},cs=async()=>{try{let e=le(await z("./package.json","utf-8"));return e?e.type==="module":!1}catch{return!1}},ls=async e=>{let t=le(await z("./package.json","utf-8"));t&&(t["lint-staged"]?t["lint-staged"]=$(t["lint-staged"],g(e)):t["lint-staged"]=g(e),await w("./package.json",JSON.stringify(t,null,2)))},ds=async(e,t)=>{let s=await z(e,"utf-8"),n=le(s);if(!n)return;let o=$(n,g(t));await w(e,JSON.stringify(o,null,2))},us=async(e,t)=>{let s=await z(e,"utf-8"),n=as(s);if(!n)return;let o=$(n,g(t));await w(e,rs(o))},ps=async(e,t)=>{let o=(await import(ss(e).href)).default||{},i=$(o,g(t)),r=`export default ${JSON.stringify(i,null,2)};
119
119
  `;await w(e,r)},ms=async(e,t)=>{delete V.cache[V.resolve(`./${e}`)];let s=ts(`./${e}`),n=$(s,g(t)),o=`module.exports = ${JSON.stringify(n,null,2)};
120
- `;await w(e,o)},ce=async e=>{await w(".lintstagedrc.json",JSON.stringify(g(e),null,2))},fs=async(e,t)=>{if(e==="./package.json"){await ls(t);return}if(e.endsWith(".json")||e==="./.lintstagedrc"){await ds(e,t);return}if(e.endsWith(".yaml")||e.endsWith(".yml")){await us(e,t);return}let s=await cs();if(e.endsWith(".mjs")||e.endsWith(".js")&&s){try{await ps(e,t)}catch{await ce(t)}return}if(e.endsWith(".cjs")||e.endsWith(".js")&&!s)try{await ms(e,t)}catch{await ce(t)}},D={exists:async()=>{for(let e of Ge)if(await a(e))return!0;return!1},install:async e=>{await ns("lint-staged",{packageManager:e,workspace:await f()})},create:async e=>{await w(".lintstagedrc.json",JSON.stringify(g(e),null,2))},update:async e=>{let t=null;for(let s of Ge)if(await a(s)){t=s;break}if(!t){await ce(e);return}await fs(t,e)}}});import{initTRPC as $s}from"@trpc/server";import{createCli as Fs}from"trpc-cli";import c from"zod";var h={name:"ultracite",description:"The AI-ready formatter that helps you write and generate code faster.",version:"5.4.7",type:"module",bin:{ultracite:"dist/index.js"},files:["biome.jsonc","dist"],scripts:{build:"tsup",test:"vitest run","test:coverage":"vitest --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.4","@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 lt}from"child_process";import me from"process";var K=e=>{let t=["npx","@biomejs/biome","check","--no-errors-on-unmatched"];e.length>0?t.push(...F(e)):t.push("./");let s=t.join(" "),n=lt(s,{stdio:"inherit",shell:!0});n.error&&(console.error("Failed to run Ultracite:",n.error.message),me.exit(1)),n.status!==0&&me.exit(n.status??1)};import{spawnSync as jt}from"child_process";import{existsSync as S}from"fs";import{readFile as ke}from"fs/promises";import{join as P}from"path";import{parse as Ct}from"jsonc-parser";p();import{readFile as fe,unlink as dt,writeFile as ut}from"fs/promises";import{parse as ge}from"jsonc-parser";import{removeDependency as pt}from"nypm";var N=[".eslintrc",".eslintrc.js",".eslintrc.json",".eslintrc.yml",".eslintrc.yaml",".eslintrc.config.js","eslint.config.js","eslint.config.mjs","eslint.config.cjs",".eslintignore"],he=async()=>{try{let e=await fe("package.json","utf-8"),t=ge(e);if(!t||typeof t!="object")return[];let s=t.dependencies||{},n=t.devDependencies||{},o={...s,...n};return Object.keys(o).filter(i=>i.startsWith("eslint")||i.startsWith("@eslint/")||i==="@typescript-eslint/parser"||i==="@typescript-eslint/eslint-plugin")}catch{return[]}},mt=async(e,t)=>{if(t.length!==0)try{for(let s of t)await pt(s,{packageManager:e})}catch(s){console.warn(s)}},ft=async()=>{let e=[];for(let t of N)if(await a(t))try{await dt(t),e.push(t)}catch(s){console.warn(s)}return e},gt=async()=>{let e="./.vscode/settings.json";if(!await a(e))return!1;try{let t=await fe(e,"utf-8"),s=ge(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 d of l)d in r&&(delete r[d],n=!0);Object.keys(r).length===0&&(o["editor.codeActionsOnSave"]=void 0)}}return n?(await ut(e,JSON.stringify(o,null,2)),!0):!1}catch(t){return console.warn(t),!1}},ht=async()=>{if((await he()).length>0)return!0;for(let t of N)if(await a(t))return!0;return!1},Z={hasEsLint:ht,remove:async e=>{let t=await he();mt(e,t);let s=await ft(),n=await gt();return{packagesRemoved:t,filesRemoved:s,vsCodeCleaned:n}}};p();import{readFile as ye,unlink as yt,writeFile as wt}from"fs/promises";import{parse as we}from"jsonc-parser";import{removeDependency as bt}from"nypm";var I=[".prettierrc",".prettierrc.js",".prettierrc.json",".prettierrc.yml",".prettierrc.yaml",".prettierrc.config.js","prettier.config.js","prettier.config.mjs",".prettierignore"],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.startsWith("prettier")||i==="eslint-config-prettier"||i==="eslint-plugin-prettier")}catch{return[]}},kt=async(e,t)=>{if(t.length!==0)try{for(let s of t)await bt(s,{packageManager:e})}catch(s){console.warn(s)}},vt=async()=>{let e=[];for(let t of I)if(await a(t))try{await yt(t),e.push(t)}catch(s){console.warn(s)}return e},xt=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=["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 d=o[l];d&&typeof d=="object"&&"editor.defaultFormatter"in d&&d["editor.defaultFormatter"]==="esbenp.prettier-vscode"&&(d["editor.defaultFormatter"]=void 0,n=!0,Object.keys(d).length===0&&delete o[l])}return n?(await wt(e,JSON.stringify(o,null,2)),!0):!1}catch(t){return console.warn(t),!1}},Dt=async()=>{if((await be()).length>0)return!0;for(let t of I)if(await a(t))return!0;return!1},Q={hasPrettier:Dt,remove:async e=>{let t=await be();kt(e,t);let s=await vt(),n=await xt();return{packagesRemoved:t,filesRemoved:s,vsCodeCleaned:n}}};var St=()=>{let e=jt("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"}},Pt=async()=>{let e=P(process.cwd(),"biome.json"),t=P(process.cwd(),"biome.jsonc"),s=null;if(S(e)?s=e:S(t)&&(s=t),!s)return{name:"Biome configuration",status:"fail",message:"No biome.json or biome.jsonc file found"};try{let n=await ke(s,"utf-8"),o=Ct(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"}}},Rt=async()=>{let e=P(process.cwd(),"package.json");if(!S(e))return{name:"Ultracite dependency",status:"warn",message:"No package.json found"};try{let t=JSON.parse(await ke(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"}}},At=()=>{let e=I.some(s=>S(P(process.cwd(),s))),t=N.some(s=>S(P(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"}},ve=async()=>{let e=[];console.log(`\u{1FA7A} Running Ultracite doctor...
120
+ `;await w(e,o)},ce=async e=>{await w(".lintstagedrc.json",JSON.stringify(g(e),null,2))},fs=async(e,t)=>{if(e==="./package.json"){await ls(t);return}if(e.endsWith(".json")||e==="./.lintstagedrc"){await ds(e,t);return}if(e.endsWith(".yaml")||e.endsWith(".yml")){await us(e,t);return}let s=await cs();if(e.endsWith(".mjs")||e.endsWith(".js")&&s){try{await ps(e,t)}catch{await ce(t)}return}if(e.endsWith(".cjs")||e.endsWith(".js")&&!s)try{await ms(e,t)}catch{await ce(t)}},D={exists:async()=>{for(let e of Ge)if(await a(e))return!0;return!1},install:async e=>{await ns("lint-staged",{packageManager:e,workspace:await f()})},create:async e=>{await w(".lintstagedrc.json",JSON.stringify(g(e),null,2))},update:async e=>{let t=null;for(let s of Ge)if(await a(s)){t=s;break}if(!t){await ce(e);return}await fs(t,e)}}});import{initTRPC as $s}from"@trpc/server";import{createCli as Fs}from"trpc-cli";import c from"zod";var h={name:"ultracite",description:"The AI-ready formatter that helps you write and generate code faster.",version:"5.5.1",type:"module",bin:{ultracite:"dist/index.js"},files:["biome.jsonc","dist"],scripts:{build:"tsup",test:"vitest run","test:coverage":"vitest --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 lt}from"child_process";import me from"process";var K=e=>{let t=["npx","@biomejs/biome","check","--no-errors-on-unmatched"];e.length>0?t.push(...F(e)):t.push("./");let s=t.join(" "),n=lt(s,{stdio:"inherit",shell:!0});n.error&&(console.error("Failed to run Ultracite:",n.error.message),me.exit(1)),n.status!==0&&me.exit(n.status??1)};import{spawnSync as jt}from"child_process";import{existsSync as S}from"fs";import{readFile as ke}from"fs/promises";import{join as P}from"path";import{parse as Ct}from"jsonc-parser";p();import{readFile as fe,unlink as dt,writeFile as ut}from"fs/promises";import{parse as ge}from"jsonc-parser";import{removeDependency as pt}from"nypm";var N=[".eslintrc",".eslintrc.js",".eslintrc.json",".eslintrc.yml",".eslintrc.yaml",".eslintrc.config.js","eslint.config.js","eslint.config.mjs","eslint.config.cjs",".eslintignore"],he=async()=>{try{let e=await fe("package.json","utf-8"),t=ge(e);if(!t||typeof t!="object")return[];let s=t.dependencies||{},n=t.devDependencies||{},o={...s,...n};return Object.keys(o).filter(i=>i.startsWith("eslint")||i.startsWith("@eslint/")||i==="@typescript-eslint/parser"||i==="@typescript-eslint/eslint-plugin")}catch{return[]}},mt=async(e,t)=>{if(t.length!==0)try{for(let s of t)await pt(s,{packageManager:e})}catch(s){console.warn(s)}},ft=async()=>{let e=[];for(let t of N)if(await a(t))try{await dt(t),e.push(t)}catch(s){console.warn(s)}return e},gt=async()=>{let e="./.vscode/settings.json";if(!await a(e))return!1;try{let t=await fe(e,"utf-8"),s=ge(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 d of l)d in r&&(delete r[d],n=!0);Object.keys(r).length===0&&(o["editor.codeActionsOnSave"]=void 0)}}return n?(await ut(e,JSON.stringify(o,null,2)),!0):!1}catch(t){return console.warn(t),!1}},ht=async()=>{if((await he()).length>0)return!0;for(let t of N)if(await a(t))return!0;return!1},Z={hasEsLint:ht,remove:async e=>{let t=await he();mt(e,t);let s=await ft(),n=await gt();return{packagesRemoved:t,filesRemoved:s,vsCodeCleaned:n}}};p();import{readFile as ye,unlink as yt,writeFile as wt}from"fs/promises";import{parse as we}from"jsonc-parser";import{removeDependency as bt}from"nypm";var I=[".prettierrc",".prettierrc.js",".prettierrc.json",".prettierrc.yml",".prettierrc.yaml",".prettierrc.config.js","prettier.config.js","prettier.config.mjs",".prettierignore"],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.startsWith("prettier")||i==="eslint-config-prettier"||i==="eslint-plugin-prettier")}catch{return[]}},kt=async(e,t)=>{if(t.length!==0)try{for(let s of t)await bt(s,{packageManager:e})}catch(s){console.warn(s)}},vt=async()=>{let e=[];for(let t of I)if(await a(t))try{await yt(t),e.push(t)}catch(s){console.warn(s)}return e},xt=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=["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 d=o[l];d&&typeof d=="object"&&"editor.defaultFormatter"in d&&d["editor.defaultFormatter"]==="esbenp.prettier-vscode"&&(d["editor.defaultFormatter"]=void 0,n=!0,Object.keys(d).length===0&&delete o[l])}return n?(await wt(e,JSON.stringify(o,null,2)),!0):!1}catch(t){return console.warn(t),!1}},Dt=async()=>{if((await be()).length>0)return!0;for(let t of I)if(await a(t))return!0;return!1},Q={hasPrettier:Dt,remove:async e=>{let t=await be();kt(e,t);let s=await vt(),n=await xt();return{packagesRemoved:t,filesRemoved:s,vsCodeCleaned:n}}};var St=()=>{let e=jt("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"}},Pt=async()=>{let e=P(process.cwd(),"biome.json"),t=P(process.cwd(),"biome.jsonc"),s=null;if(S(e)?s=e:S(t)&&(s=t),!s)return{name:"Biome configuration",status:"fail",message:"No biome.json or biome.jsonc file found"};try{let n=await ke(s,"utf-8"),o=Ct(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"}}},Rt=async()=>{let e=P(process.cwd(),"package.json");if(!S(e))return{name:"Ultracite dependency",status:"warn",message:"No package.json found"};try{let t=JSON.parse(await ke(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"}}},At=()=>{let e=I.some(s=>S(P(process.cwd(),s))),t=N.some(s=>S(P(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"}},ve=async()=>{let e=[];console.log(`\u{1FA7A} Running Ultracite doctor...
121
121
  `),e.push(St()),e.push(await Pt()),e.push(await Rt()),e.push(At());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.0",
4
+ "version": "5.5.2",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "ultracite": "dist/index.js"
@@ -40,7 +40,7 @@
40
40
  "devDependencies": {
41
41
  "@auto-it/all-contributors": "^11.3.0",
42
42
  "@auto-it/first-time-contributor": "^11.3.0",
43
- "@biomejs/biome": "2.2.4",
43
+ "@biomejs/biome": "2.2.5",
44
44
  "@types/node": "^24.5.2",
45
45
  "@vitest/coverage-v8": "3.2.4",
46
46
  "tsup": "^8.5.0"