ultracite 6.3.7 → 6.3.8

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.
@@ -237,14 +237,19 @@
237
237
  },
238
238
  "nursery": {
239
239
  "noDuplicateDependencies": "error",
240
+ "noDuplicatedSpreadProps": "error",
240
241
  "noEmptySource": "error",
242
+ "noEqualsToNull": "error",
241
243
  "noIncrementDecrement": {
242
244
  "level": "error",
243
245
  "options": {
244
246
  "allowForLoopAfterthoughts": true
245
247
  }
246
248
  },
249
+ "noLeakedRender": "error",
250
+ "noMultiStr": "error",
247
251
  "noParametersOnlyUsedInRecursion": "error",
252
+ "noProto": "error",
248
253
  "noShadow": "error",
249
254
  "noSyncScripts": "error",
250
255
  "noUnusedExpressions": "error",
@@ -258,6 +263,7 @@
258
263
  "noContinue": "off",
259
264
  "noForIn": "off",
260
265
  "noJsxLiterals": "off",
266
+ "noTernary": "off",
261
267
  "noUselessCatchBinding": "off",
262
268
  "noUnnecessaryConditions": "off",
263
269
  "useArraySortCompare": "off",
package/dist/index.js CHANGED
@@ -117,7 +117,7 @@ ${s}`)}}});var oo,pe=O(()=>{oo=ye({"./husky.ts":()=>(de(),te(_e)),"./lefthook.ts
117
117
  `}else e+=`${o}: '${s}'
118
118
  `;return e},lo=async()=>{try{let t=ge(await K("./package.json","utf-8"));return t?t.type==="module":!1}catch{return!1}},fo=async t=>{let e=ge(await K("./package.json","utf-8"));e&&(e["lint-staged"]?e["lint-staged"]=J(e["lint-staged"],y(t)):e["lint-staged"]=y(t),await C("./package.json",JSON.stringify(e,null,2)))},po=async(t,e)=>{let o=await K(t,"utf-8"),s=ge(o);if(!s)return;let n=J(s,y(e));await C(t,JSON.stringify(n,null,2))},mo=async(t,e)=>{let o=await K(t,"utf-8"),s=ro(o);if(!s)return;let n=J(s,y(e));await C(t,co(n))},uo=async(t,e)=>{let n=(await import(so(t).href)).default||{},i=J(n,y(e)),a=`export default ${JSON.stringify(i,null,2)};
119
119
  `;await C(t,a)},go=async(t,e)=>{delete q.cache[q.resolve(`./${t}`)];let o=oo(`./${t}`),s=J(o,y(e)),n=`module.exports = ${JSON.stringify(s,null,2)};
120
- `;await C(t,n)},ue=async t=>{await C(".lintstagedrc.json",JSON.stringify(y(t),null,2))},ho=async(t,e)=>{if(t==="./package.json"){await fo(e);return}if(t.endsWith(".json")||t==="./.lintstagedrc"){await po(t,e);return}if(t.endsWith(".yaml")||t.endsWith(".yml")){await mo(t,e);return}let o=await lo();if(t.endsWith(".mjs")||t.endsWith(".js")&&o){try{await uo(t,e)}catch{await ue(e)}return}if(t.endsWith(".cjs")||t.endsWith(".js")&&!o)try{await go(t,e)}catch{await ue(e)}},E={exists:async()=>{for(let t of Ge)if(await l(t))return!0;return!1},install:async t=>{await no("lint-staged",{packageManager:t,workspace:await h()})},create:async t=>{await C(".lintstagedrc.json",JSON.stringify(y(t),null,2))},update:async t=>{let e=null;for(let o of Ge)if(await l(o)){e=o;break}if(!e){await ue(t);return}await ho(e,t)}}});import{initTRPC as _o}from"@trpc/server";import{createCli as Lo}from"trpc-cli";import r from"zod";var k={name:"ultracite",description:"The AI-ready formatter that helps you write and generate code faster.",version:"6.3.7",type:"module",bin:{ultracite:"dist/index.js"},files:["config","dist","README.md"],scripts:{build:"tsup",test:"bun test","test:coverage":"bun test --coverage"},exports:{"./*":"./config/*/biome.jsonc"},author:"Hayden Bleasel <hello@haydenbleasel.com>",bugs:{url:"https://github.com/haydenbleasel/ultracite/issues"},homepage:"https://www.ultracite.ai/",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:{"@biomejs/biome":"2.3.7","@types/node":"^24.10.1",tsup:"^8.5.1",turbo:"^2.6.1"},dependencies:{"@clack/prompts":"^0.11.0","@trpc/server":"^11.7.1",deepmerge:"^4.3.1",glob:"^12.0.0","jsonc-parser":"^3.3.1",nypm:"^0.6.2","trpc-cli":"^0.12.0",zod:"^4.1.12"},packageManager:"bun@1.3.2"};m();import{spawnSync as rt}from"child_process";var oe=t=>{let e=t?.[0]||[],o=t?.[1]["diagnostic-level"],s=["npx","@biomejs/biome","check","--no-errors-on-unmatched","--max-diagnostics=none"];o&&s.push(`--diagnostic-level=${o}`),e.length>0?s.push(..._(e)):s.push("./");let n=s.join(" "),i=rt(n,{stdio:"inherit",shell:!0});if(i.error)throw new Error(`Failed to run Ultracite: ${i.error.message}`);if(i.status!==0)throw new Error(`Ultracite check failed with status ${i.status??1}`)};import{spawnSync as vt}from"child_process";import{existsSync as D}from"fs";import{readFile as Re}from"fs/promises";import{join as T}from"path";import{parse as Ct}from"jsonc-parser";m();import{readFile as xe,unlink as ct,writeFile as lt}from"fs/promises";import{parse as ve}from"jsonc-parser";import{removeDependency as dt}from"nypm";var L=[".eslintrc",".eslintrc.js",".eslintrc.json",".eslintrc.yml",".eslintrc.yaml",".eslintrc.config.js","eslint.config.js","eslint.config.mjs","eslint.config.cjs",".eslintignore"],Ce=async()=>{try{let t=await xe("package.json","utf-8"),e=ve(t);if(!e||typeof e!="object")return[];let o=e.dependencies||{},s=e.devDependencies||{},n={...o,...s};return Object.keys(n).filter(i=>i.includes("eslint"))}catch{return[]}},ft=async(t,e)=>{if(e.length!==0)try{for(let o of e)await dt(o,{packageManager:t})}catch(o){console.warn(o)}},pt=async()=>{let t=[];for(let e of L)if(await l(e))try{await ct(e),t.push(e)}catch(o){console.warn(o)}return t},mt=async()=>{let t="./.vscode/settings.json";if(!await l(t))return!1;try{let e=await xe(t,"utf-8"),o=ve(e);if(!o||typeof o!="object")return!1;let s=!1,n={...o},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 a of i)a in n&&(delete n[a],s=!0);if("editor.codeActionsOnSave"in n){let a=n["editor.codeActionsOnSave"];if(a&&typeof a=="object"){let c=["source.fixAll.eslint","source.organizeImports.eslint"];for(let f of c)f in a&&(delete a[f],s=!0);Object.keys(a).length===0&&(n["editor.codeActionsOnSave"]=void 0)}}return s?(await lt(t,JSON.stringify(n,null,2)),!0):!1}catch(e){return console.warn(e),!1}},ut=async()=>{if((await Ce()).length>0)return!0;for(let e of L)if(await l(e))return!0;return!1},se={hasEsLint:ut,remove:async t=>{let e=await Ce();await ft(t,e);let o=await pt(),s=await mt();return{packagesRemoved:e,filesRemoved:o,vsCodeCleaned:s}}};m();import{readFile as je,unlink as gt,writeFile as ht}from"fs/promises";import{parse as Pe}from"jsonc-parser";import{removeDependency as wt}from"nypm";var H=[".prettierrc",".prettierrc.js",".prettierrc.json",".prettierrc.yml",".prettierrc.yaml",".prettierrc.config.js","prettier.config.js","prettier.config.mjs",".prettierignore"],Se=async()=>{try{let t=await je("package.json","utf-8"),e=Pe(t);if(!e||typeof e!="object")return[];let o=e.dependencies||{},s=e.devDependencies||{},n={...o,...s};return Object.keys(n).filter(i=>i.includes("prettier"))}catch{return[]}},yt=async(t,e)=>{if(e.length!==0)try{for(let o of e)await wt(o,{packageManager:t})}catch(o){console.warn(o)}},kt=async()=>{let t=[];for(let e of H)if(await l(e))try{await gt(e),t.push(e)}catch(o){console.warn(o)}return t},bt=async()=>{let t="./.vscode/settings.json";if(!await l(t))return!1;try{let e=await je(t,"utf-8"),o=Pe(e);if(!o||typeof o!="object")return!1;let s=!1,n={...o},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 c of i)c in n&&(c==="editor.defaultFormatter"&&n[c]==="esbenp.prettier-vscode"||c!=="editor.defaultFormatter")&&(delete n[c],s=!0);let a=Object.keys(n).filter(c=>c.startsWith("[")&&c.includes("javascript"));for(let c of a){let f=n[c];f&&typeof f=="object"&&"editor.defaultFormatter"in f&&f["editor.defaultFormatter"]==="esbenp.prettier-vscode"&&(delete f["editor.defaultFormatter"],s=!0,Object.keys(f).length===0&&delete n[c])}return s?(await ht(t,JSON.stringify(n,null,2)),!0):!1}catch(e){return console.warn(e),!1}},xt=async()=>{if((await Se()).length>0)return!0;for(let e of H)if(await l(e))return!0;return!1},ne={hasPrettier:xt,remove:async t=>{let e=await Se();await yt(t,e);let o=await kt(),s=await bt();return{packagesRemoved:e,filesRemoved:o,vsCodeCleaned:s}}};var jt=()=>{let t=vt("npx @biomejs/biome --version",{shell:!0,encoding:"utf-8"});return t.status===0&&t.stdout?{name:"Biome installation",status:"pass",message:`Biome is installed (${t.stdout.trim()})`}:{name:"Biome installation",status:"fail",message:"Biome is not installed or not accessible"}},Pt=async()=>{let t=T(process.cwd(),"biome.json"),e=T(process.cwd(),"biome.jsonc"),o=null;if(D(t)?o=t:D(e)&&(o=e),!o)return{name:"Biome configuration",status:"fail",message:"No biome.json or biome.jsonc file found"};try{let s=await Re(o,"utf-8"),n=Ct(s);return Array.isArray(n?.extends)&&n.extends.includes("ultracite/core")?{name:"Biome configuration",status:"pass",message:"biome.json(c) extends ultracite/core"}:{name:"Biome configuration",status:"warn",message:"biome.json(c) exists but doesn't extend ultracite/core"}}catch{return{name:"Biome configuration",status:"fail",message:"Could not parse biome.json(c) file"}}},St=async()=>{let t=T(process.cwd(),"package.json");if(!D(t))return{name:"Ultracite dependency",status:"warn",message:"No package.json found"};try{let e=JSON.parse(await Re(t,"utf-8")),o=e.dependencies?.ultracite||e.devDependencies?.ultracite||e.peerDependencies?.ultracite;return o?{name:"Ultracite dependency",status:"pass",message:`Ultracite is in package.json (${o})`}:{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"}}},Rt=()=>{let t=H.some(o=>D(T(process.cwd(),o))),e=L.some(o=>D(T(process.cwd(),o)));if(t||e){let o=[];return t&&o.push("Prettier"),e&&o.push("ESLint"),{name:"Conflicting tools",status:"warn",message:`Found potentially conflicting tools: ${o.join(", ")}`}}return{name:"Conflicting tools",status:"pass",message:"No conflicting formatting/linting tools found"}},Ee=async()=>{let t=[];console.log(`\u{1FA7A} Running Ultracite doctor...
120
+ `;await C(t,n)},ue=async t=>{await C(".lintstagedrc.json",JSON.stringify(y(t),null,2))},ho=async(t,e)=>{if(t==="./package.json"){await fo(e);return}if(t.endsWith(".json")||t==="./.lintstagedrc"){await po(t,e);return}if(t.endsWith(".yaml")||t.endsWith(".yml")){await mo(t,e);return}let o=await lo();if(t.endsWith(".mjs")||t.endsWith(".js")&&o){try{await uo(t,e)}catch{await ue(e)}return}if(t.endsWith(".cjs")||t.endsWith(".js")&&!o)try{await go(t,e)}catch{await ue(e)}},E={exists:async()=>{for(let t of Ge)if(await l(t))return!0;return!1},install:async t=>{await no("lint-staged",{packageManager:t,workspace:await h()})},create:async t=>{await C(".lintstagedrc.json",JSON.stringify(y(t),null,2))},update:async t=>{let e=null;for(let o of Ge)if(await l(o)){e=o;break}if(!e){await ue(t);return}await ho(e,t)}}});import{initTRPC as _o}from"@trpc/server";import{createCli as Lo}from"trpc-cli";import r from"zod";var k={name:"ultracite",description:"The AI-ready formatter that helps you write and generate code faster.",version:"6.3.8",type:"module",bin:{ultracite:"dist/index.js"},files:["config","dist","README.md"],scripts:{build:"tsup",test:"bun test","test:coverage":"bun test --coverage"},exports:{"./*":"./config/*/biome.jsonc"},author:"Hayden Bleasel <hello@haydenbleasel.com>",bugs:{url:"https://github.com/haydenbleasel/ultracite/issues"},homepage:"https://www.ultracite.ai/",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:{"@biomejs/biome":"2.3.8","@types/node":"^24.10.1",tsup:"^8.5.1",turbo:"^2.6.1"},dependencies:{"@clack/prompts":"^0.11.0","@trpc/server":"^11.7.2",deepmerge:"^4.3.1",glob:"^13.0.0","jsonc-parser":"^3.3.1",nypm:"^0.6.2","trpc-cli":"^0.12.1",zod:"^4.1.13"},packageManager:"bun@1.3.3"};m();import{spawnSync as rt}from"child_process";var oe=t=>{let e=t?.[0]||[],o=t?.[1]["diagnostic-level"],s=["npx","@biomejs/biome","check","--no-errors-on-unmatched","--max-diagnostics=none"];o&&s.push(`--diagnostic-level=${o}`),e.length>0?s.push(..._(e)):s.push("./");let n=s.join(" "),i=rt(n,{stdio:"inherit",shell:!0});if(i.error)throw new Error(`Failed to run Ultracite: ${i.error.message}`);if(i.status!==0)throw new Error(`Ultracite check failed with status ${i.status??1}`)};import{spawnSync as vt}from"child_process";import{existsSync as D}from"fs";import{readFile as Re}from"fs/promises";import{join as T}from"path";import{parse as Ct}from"jsonc-parser";m();import{readFile as xe,unlink as ct,writeFile as lt}from"fs/promises";import{parse as ve}from"jsonc-parser";import{removeDependency as dt}from"nypm";var L=[".eslintrc",".eslintrc.js",".eslintrc.json",".eslintrc.yml",".eslintrc.yaml",".eslintrc.config.js","eslint.config.js","eslint.config.mjs","eslint.config.cjs",".eslintignore"],Ce=async()=>{try{let t=await xe("package.json","utf-8"),e=ve(t);if(!e||typeof e!="object")return[];let o=e.dependencies||{},s=e.devDependencies||{},n={...o,...s};return Object.keys(n).filter(i=>i.includes("eslint"))}catch{return[]}},ft=async(t,e)=>{if(e.length!==0)try{for(let o of e)await dt(o,{packageManager:t})}catch(o){console.warn(o)}},pt=async()=>{let t=[];for(let e of L)if(await l(e))try{await ct(e),t.push(e)}catch(o){console.warn(o)}return t},mt=async()=>{let t="./.vscode/settings.json";if(!await l(t))return!1;try{let e=await xe(t,"utf-8"),o=ve(e);if(!o||typeof o!="object")return!1;let s=!1,n={...o},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 a of i)a in n&&(delete n[a],s=!0);if("editor.codeActionsOnSave"in n){let a=n["editor.codeActionsOnSave"];if(a&&typeof a=="object"){let c=["source.fixAll.eslint","source.organizeImports.eslint"];for(let f of c)f in a&&(delete a[f],s=!0);Object.keys(a).length===0&&(n["editor.codeActionsOnSave"]=void 0)}}return s?(await lt(t,JSON.stringify(n,null,2)),!0):!1}catch(e){return console.warn(e),!1}},ut=async()=>{if((await Ce()).length>0)return!0;for(let e of L)if(await l(e))return!0;return!1},se={hasEsLint:ut,remove:async t=>{let e=await Ce();await ft(t,e);let o=await pt(),s=await mt();return{packagesRemoved:e,filesRemoved:o,vsCodeCleaned:s}}};m();import{readFile as je,unlink as gt,writeFile as ht}from"fs/promises";import{parse as Pe}from"jsonc-parser";import{removeDependency as wt}from"nypm";var H=[".prettierrc",".prettierrc.js",".prettierrc.json",".prettierrc.yml",".prettierrc.yaml",".prettierrc.config.js","prettier.config.js","prettier.config.mjs",".prettierignore"],Se=async()=>{try{let t=await je("package.json","utf-8"),e=Pe(t);if(!e||typeof e!="object")return[];let o=e.dependencies||{},s=e.devDependencies||{},n={...o,...s};return Object.keys(n).filter(i=>i.includes("prettier"))}catch{return[]}},yt=async(t,e)=>{if(e.length!==0)try{for(let o of e)await wt(o,{packageManager:t})}catch(o){console.warn(o)}},kt=async()=>{let t=[];for(let e of H)if(await l(e))try{await gt(e),t.push(e)}catch(o){console.warn(o)}return t},bt=async()=>{let t="./.vscode/settings.json";if(!await l(t))return!1;try{let e=await je(t,"utf-8"),o=Pe(e);if(!o||typeof o!="object")return!1;let s=!1,n={...o},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 c of i)c in n&&(c==="editor.defaultFormatter"&&n[c]==="esbenp.prettier-vscode"||c!=="editor.defaultFormatter")&&(delete n[c],s=!0);let a=Object.keys(n).filter(c=>c.startsWith("[")&&c.includes("javascript"));for(let c of a){let f=n[c];f&&typeof f=="object"&&"editor.defaultFormatter"in f&&f["editor.defaultFormatter"]==="esbenp.prettier-vscode"&&(delete f["editor.defaultFormatter"],s=!0,Object.keys(f).length===0&&delete n[c])}return s?(await ht(t,JSON.stringify(n,null,2)),!0):!1}catch(e){return console.warn(e),!1}},xt=async()=>{if((await Se()).length>0)return!0;for(let e of H)if(await l(e))return!0;return!1},ne={hasPrettier:xt,remove:async t=>{let e=await Se();await yt(t,e);let o=await kt(),s=await bt();return{packagesRemoved:e,filesRemoved:o,vsCodeCleaned:s}}};var jt=()=>{let t=vt("npx @biomejs/biome --version",{shell:!0,encoding:"utf-8"});return t.status===0&&t.stdout?{name:"Biome installation",status:"pass",message:`Biome is installed (${t.stdout.trim()})`}:{name:"Biome installation",status:"fail",message:"Biome is not installed or not accessible"}},Pt=async()=>{let t=T(process.cwd(),"biome.json"),e=T(process.cwd(),"biome.jsonc"),o=null;if(D(t)?o=t:D(e)&&(o=e),!o)return{name:"Biome configuration",status:"fail",message:"No biome.json or biome.jsonc file found"};try{let s=await Re(o,"utf-8"),n=Ct(s);return Array.isArray(n?.extends)&&n.extends.includes("ultracite/core")?{name:"Biome configuration",status:"pass",message:"biome.json(c) extends ultracite/core"}:{name:"Biome configuration",status:"warn",message:"biome.json(c) exists but doesn't extend ultracite/core"}}catch{return{name:"Biome configuration",status:"fail",message:"Could not parse biome.json(c) file"}}},St=async()=>{let t=T(process.cwd(),"package.json");if(!D(t))return{name:"Ultracite dependency",status:"warn",message:"No package.json found"};try{let e=JSON.parse(await Re(t,"utf-8")),o=e.dependencies?.ultracite||e.devDependencies?.ultracite||e.peerDependencies?.ultracite;return o?{name:"Ultracite dependency",status:"pass",message:`Ultracite is in package.json (${o})`}:{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"}}},Rt=()=>{let t=H.some(o=>D(T(process.cwd(),o))),e=L.some(o=>D(T(process.cwd(),o)));if(t||e){let o=[];return t&&o.push("Prettier"),e&&o.push("ESLint"),{name:"Conflicting tools",status:"warn",message:`Found potentially conflicting tools: ${o.join(", ")}`}}return{name:"Conflicting tools",status:"pass",message:"No conflicting formatting/linting tools found"}},Ee=async()=>{let t=[];console.log(`\u{1FA7A} Running Ultracite doctor...
121
121
  `),t.push(jt()),t.push(await Pt()),t.push(await St()),t.push(Rt());let e=t.filter(n=>n.status==="pass").length,o=t.filter(n=>n.status==="fail").length,s=t.filter(n=>n.status==="warn").length;for(let n of t){let i;n.status==="pass"?i="\u2705":n.status==="fail"?i="\u274C":i="\u26A0\uFE0F",console.log(`${i} ${n.name}: ${n.message}`)}if(console.log(`
122
122
  \u{1F4CA} Summary:`),console.log(` ${e} passed, ${s} warnings, ${o} failed`),o>0)throw console.log(`
123
123
  \u{1F4A1} To fix issues, run: npx ultracite init`),new Error("Doctor checks failed");s>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": "6.3.7",
4
+ "version": "6.3.8",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "ultracite": "dist/index.js"
@@ -41,20 +41,20 @@
41
41
  "url": "git+https://github.com/haydenbleasel/ultracite.git"
42
42
  },
43
43
  "devDependencies": {
44
- "@biomejs/biome": "2.3.7",
44
+ "@biomejs/biome": "2.3.8",
45
45
  "@types/node": "^24.10.1",
46
46
  "tsup": "^8.5.1",
47
47
  "turbo": "^2.6.1"
48
48
  },
49
49
  "dependencies": {
50
50
  "@clack/prompts": "^0.11.0",
51
- "@trpc/server": "^11.7.1",
51
+ "@trpc/server": "^11.7.2",
52
52
  "deepmerge": "^4.3.1",
53
- "glob": "^12.0.0",
53
+ "glob": "^13.0.0",
54
54
  "jsonc-parser": "^3.3.1",
55
55
  "nypm": "^0.6.2",
56
- "trpc-cli": "^0.12.0",
57
- "zod": "^4.1.12"
56
+ "trpc-cli": "^0.12.1",
57
+ "zod": "^4.1.13"
58
58
  },
59
- "packageManager": "bun@1.3.2"
59
+ "packageManager": "bun@1.3.3"
60
60
  }