@turbo/codemod 2.10.3-canary.1 → 2.10.3-canary.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/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- const e=require(`./get-transformer-helpers-Du8w-fVE.js`),t=require(`./dist-CyuqPgem.js`),n=require(`./update-versioned-schema-json-C-QhqO3C.js`),r=e.__toESM(require(`picocolors`)),i=e.__toESM(require(`node:fs`)),a=e.__toESM(require(`node:path`)),o=e.__toESM(require(`fs-extra`)),s=e.__toESM(require(`node:os`)),c=e.__toESM(require(`node:child_process`)),l=e.__toESM(require(`semver`)),u=e.__toESM(require(`commander`)),d=e.__toESM(require(`@inquirer/prompts`)),f=e.__toESM(require(`is-git-clean`)),p=e.__toESM(require(`yaml`));var m=`@turbo/codemod`,h=`2.10.3-canary.1`,g=`Provides Codemod transformations to help upgrade your Turborepo codebase when a feature is deprecated.`,_=`https://turborepo.dev`,v={url:`https://github.com/vercel/turborepo/issues`},y=`MIT`,b={type:`git`,url:`https://github.com/vercel/turborepo`,directory:`packages/turbo-codemod`},x=`dist/cli.js`,ee=[`dist`],S={access:`public`},C={build:`tsdown`,test:`jest`,"check-types":`tsc --noEmit`,"lint:prettier":`prettier -c . --cache --ignore-path=../../.prettierignore`},w={"@inquirer/prompts":`^7.10.1`,"brace-expansion":`1.1.13`,commander:`9.5.0`,diff:`5.2.2`,"find-up":`4.1.0`,"fs-extra":`10.1.0`,"gradient-string":`2.0.1`,"is-git-clean":`1.1.0`,json5:`2.2.3`,ora:`4.1.1`,picocolors:`1.0.1`,semver:`7.5.2`,"update-check":`1.5.4`,yaml:`2.8.3`},T={"@jest/globals":`30.3.0`,"@turbo/test-utils":`workspace:*`,"@turbo/tsconfig":`workspace:*`,"@turbo/types":`workspace:*`,"@turbo/utils":`workspace:*`,"@turbo/workspaces":`workspace:*`,"@types/diff":`5.0.2`,"@types/fs-extra":`9.0.13`,"@types/gradient-string":`1.1.2`,"@types/node":`18.17.4`,"@types/semver":`7.3.12`,"@types/uuid":`9.0.0`,deepmerge:`4.2.2`,jest:`30.3.0`,semver:`7.5.2`,"ts-jest":`29.4.9`,tsdown:`0.12.0`,typescript:`5.5.4`},E={name:m,version:h,description:g,homepage:_,bugs:v,license:y,repository:b,bin:x,files:ee,publishConfig:S,scripts:C,dependencies:w,devDependencies:T};function D({directory:t,force:n}){let i=!1,a=`Unable to determine if git directory is clean`;try{i=f.default.sync(t||process.cwd()),a=`Git directory is not clean`}catch(e){let t=e;t.stderr?.includes(`not a git repository`)&&(i=!0)}i||(n?e.log(`${r.default.yellow(`WARNING`)}: ${a}. Forcibly continuing...`):(e.log(`Thank you for using @turbo/codemod!`),e.log(r.default.yellow(`
2
+ const e=require(`./get-transformer-helpers-Du8w-fVE.js`),t=require(`./dist-DmBhQH4c.js`),n=require(`./update-versioned-schema-json-C-QhqO3C.js`),r=e.__toESM(require(`picocolors`)),i=e.__toESM(require(`node:fs`)),a=e.__toESM(require(`node:path`)),o=e.__toESM(require(`fs-extra`)),s=e.__toESM(require(`node:os`)),c=e.__toESM(require(`node:child_process`)),l=e.__toESM(require(`semver`)),u=e.__toESM(require(`commander`)),d=e.__toESM(require(`@inquirer/prompts`)),f=e.__toESM(require(`is-git-clean`)),p=e.__toESM(require(`yaml`));var m=`@turbo/codemod`,h=`2.10.3-canary.2`,g=`Provides Codemod transformations to help upgrade your Turborepo codebase when a feature is deprecated.`,_=`https://turborepo.dev`,v={url:`https://github.com/vercel/turborepo/issues`},y=`MIT`,b={type:`git`,url:`https://github.com/vercel/turborepo`,directory:`packages/turbo-codemod`},x=`dist/cli.js`,ee=[`dist`],S={access:`public`},C={build:`tsdown`,test:`jest`,"check-types":`tsc --noEmit`,"lint:prettier":`prettier -c . --cache --ignore-path=../../.prettierignore`},w={"@inquirer/prompts":`^7.10.1`,"brace-expansion":`1.1.13`,commander:`9.5.0`,diff:`5.2.2`,"find-up":`4.1.0`,"fs-extra":`10.1.0`,"gradient-string":`2.0.1`,"is-git-clean":`1.1.0`,json5:`2.2.3`,ora:`4.1.1`,picocolors:`1.0.1`,semver:`7.5.2`,"update-check":`1.5.4`,yaml:`2.8.3`},T={"@jest/globals":`30.3.0`,"@turbo/test-utils":`workspace:*`,"@turbo/tsconfig":`workspace:*`,"@turbo/types":`workspace:*`,"@turbo/utils":`workspace:*`,"@turbo/workspaces":`workspace:*`,"@types/diff":`5.0.2`,"@types/fs-extra":`9.0.13`,"@types/gradient-string":`1.1.2`,"@types/node":`18.17.4`,"@types/semver":`7.3.12`,"@types/uuid":`9.0.0`,deepmerge:`4.2.2`,jest:`30.3.0`,semver:`7.5.2`,"ts-jest":`29.4.9`,tsdown:`0.12.0`,typescript:`5.5.4`},E={name:m,version:h,description:g,homepage:_,bugs:v,license:y,repository:b,bin:x,files:ee,publishConfig:S,scripts:C,dependencies:w,devDependencies:T};function D({directory:t,force:n}){let i=!1,a=`Unable to determine if git directory is clean`;try{i=f.default.sync(t||process.cwd()),a=`Git directory is not clean`}catch(e){let t=e;t.stderr?.includes(`not a git repository`)&&(i=!0)}i||(n?e.log(`${r.default.yellow(`WARNING`)}: ${a}. Forcibly continuing...`):(e.log(`Thank you for using @turbo/codemod!`),e.log(r.default.yellow(`
3
3
  But before we continue, please stash or commit your git changes.`)),e.log(`
4
4
  You may use the --force flag to override this safety check.`),process.exit(1)))}function O({directory:e}){let t=a.default.isAbsolute(e)?e:a.default.join(process.cwd(),e);return{exists:i.default.existsSync(t),absolute:t}}const te=[`package.json`,`turbo.json`,`turbo.jsonc`,`.git`];function k({directory:e}){return te.some(t=>o.default.existsSync(a.default.join(e,t)))}function A(e,t,n){try{let n=(0,c.execSync)(e,{stdio:`pipe`,...t});return n.toString(`utf8`).trim()}catch{return n||void 0}}function j(e,t){let{from:n}=t;if(n)return n;let r=A(`turbo --version`,{cwd:e.paths.root});if(r)return r;let{packageManager:i}=e;return A(i===`yarn`?`yarn turbo --version`:i===`pnpm`?`pnpm turbo --version`:`npm exec -c 'turbo --version'`,{cwd:e.paths.root})}const M=`https://registry.npmjs.org`;async function N({packageName:e}){let t=process.env.npm_config_registry?.replace(/\/$/,``)||M;try{let n=await fetch(`${t}/${e}`);if(!n.ok)throw Error(`HTTP ${n.status}`);return await n.json()}catch{throw Error(`Unable to fetch the latest version of ${e}`)}}async function P({to:e}){let t=await N({packageName:`turbo`}),{"dist-tags":n,versions:r}=t;if(e){if(n[e])return n[e];if(e in r)return e;throw Error(`turbo@${e} does not exist`)}return n.latest}const F=process.env.NODE_ENV===`test`?a.default.join(__dirname,`../transforms`):a.default.join(__dirname,`./transforms`);function I(){let e=o.default.readdirSync(F);return e.map(e=>{let t=a.default.join(F,e);try{let e=require(t);return e.default}catch{return}}).filter(Boolean)}function L({fromVersion:e,toVersion:t}){let n=e.split(`.`)[0],r=n!==t.split(`.`)[0],i=r?`${n}.0.0`:e,a=I().filter(n=>{let r=(0,l.gt)(n.introducedIn,e)&&(0,l.lte)(n.introducedIn,t),a=(n.idempotent??!0)&&(0,l.gt)(n.introducedIn,i)&&(0,l.lte)(n.introducedIn,t);return r||a});return a.sort((e,t)=>(0,l.gt)(e.introducedIn,t.introducedIn)?1:(0,l.eq)(e.introducedIn,t.introducedIn)?0:-1),a}function R({packageManager:e,packageManagerVersion:t,to:n=`latest`}){switch(e){case`yarn`:return t&&(0,l.gte)(t,`2.0.0`)?void 0:`yarn global add turbo@${n}`;case`npm`:return`npm install turbo@${n} --global`;case`pnpm`:return`pnpm add turbo@${n} --global`;case`bun`:return`bun add turbo@${n} --global`;case`nub`:return`nub add turbo@${n} --global`}}function z({packageManager:e,packageManagerVersion:t,installType:n,isUsingWorkspaces:r,to:i=`latest`}){let a=e=>e.filter(Boolean).join(` `);switch(e){case`yarn`:return(0,l.gte)(t,`2.0.0`)?a([`yarn`,`add`,`turbo@${i}`,n===`devDependencies`&&`--dev`]):a([`yarn`,`add`,`turbo@${i}`,n===`devDependencies`&&`--dev`,r&&`-W`]);case`npm`:return a([`npm`,`install`,`turbo@${i}`,n===`devDependencies`&&`--save-dev`]);case`pnpm`:return a([`pnpm`,`add`,`turbo@${i}`,n===`devDependencies`&&`--save-dev`,r&&`-w`]);case`bun`:return a([`bun`,`add`,`turbo@${i}`,n===`devDependencies`&&`--dev`]);case`nub`:return a([`nub`,`add`,`turbo@${i}`,n===`devDependencies`&&`--save-dev`,r&&`-w`])}}function B({packageManager:e}){switch(e){case`yarn`:return`yarn install`;case`npm`:return`npm install`;case`pnpm`:return`pnpm install`;case`bun`:return`bun install`;case`nub`:return`nub install`}}function V({root:t}){let n=a.default.join(t,`package.json`);if(!o.default.existsSync(n)){e.error(`Unable to find package.json at ${n}`);return}let r=o.default.readJsonSync(n),i=r.devDependencies&&`turbo`in r.devDependencies,s=r.dependencies&&`turbo`in r.dependencies;if(s||i)return s?`dependencies`:`devDependencies`}async function H({project:t,to:n,catalogInfo:r}){if(r)return B({packageManager:t.packageManager});let i=await e.getAvailablePackageManagers({projectRoot:t.paths.root}),a=A(`turbo bin`,{cwd:t.paths.root,stdio:`pipe`}),o=await e.getPackageManagersBinPaths({projectRoot:t.paths.root}),s=Object.keys(o).find(e=>{let t=o[e];return t&&a?a.includes(t):!1});if(a&&s){let e=R({packageManager:s,packageManagerVersion:i[s],to:n});if(e)return e}let{packageManager:c}=t,l=t.workspaceData.globs.length>0,u=V({root:t.paths.root}),d=i[c];if(d&&u)return z({packageManager:c,packageManagerVersion:d,installType:u,isUsingWorkspaces:l,to:n})}const U={pnpm:`pnpm-workspace.yaml`,yarn:`.yarnrc.yml`};function W({root:t,packageManager:n}){let r=a.default.join(t,`package.json`);if(!o.default.existsSync(r))return;let i=o.default.readJsonSync(r),s,c;if(i.devDependencies&&`turbo`in i.devDependencies)s=i.devDependencies.turbo,c=`devDependencies`;else if(i.dependencies&&`turbo`in i.dependencies)s=i.dependencies.turbo,c=`dependencies`;else return;if(!s?.startsWith(`catalog:`))return;let l=U[n];if(!l)return;let u=a.default.join(t,l);if(!o.default.existsSync(u)){e.warn(`Found catalog reference but ${l} does not exist`);return}let d=s.slice(8),f=d===``||d===`default`?null:d;return{catalogName:f,catalogFile:u,installType:c}}function G({catalogInfo:t,version:n}){let{catalogFile:r,catalogName:i}=t,a=o.default.readFileSync(r,`utf8`),s=(0,p.parseDocument)(a),c=i===null?[`catalog`,`turbo`]:[`catalogs`,i,`turbo`],l=s.getIn(c);if(!l)return e.warn(`Could not find turbo in ${i?`catalog "${i}"`:`default catalog`} in ${r}`),!1;let u=l.match(/^([^\d]*)/),d=u?u[1]:`^`,f=`${d}${n}`;return l===f?!1:(s.setIn(c,f),o.default.writeFileSync(r,s.toString()),!0)}function K({project:e}){try{let t={cwd:e.paths.root,stdio:`ignore`},n=A(`turbo bin`,t);if(n)A(`turbo daemon stop`,t);else{let n=`${e.packageManager} turbo daemon stop`;e.packageManager===`npm`&&(n=`npm exec -c 'turbo daemon stop'`),A(n,t)}}catch{}}var q=e.__toESM(t.require_dist());function J({message:t,success:n}){return n?(e.bold(r.default.green(`Migration completed`)),t&&e.log(t),process.exit(0)):(e.bold(r.default.red(`Migration failed`)),t&&e.log(t),process.exit(1))}async function Y(t,i){i.dryRun||D({directory:t,force:i.force});let a=t;a||(a=await(0,d.input)({message:`Where is the root of the repo to migrate?`,default:`.`,validate:e=>{let{exists:t,absolute:n}=O({directory:e});return t?!0:`Directory ${r.default.dim(`(${n})`)} does not exist`},transformer:e=>e.trim()}),a=a.trim());let{exists:o,absolute:l}=O({directory:a});if(!o)return J({success:!1,message:`Directory ${r.default.dim(`(${l})`)} does not exist`});if(!k({directory:l}))return J({success:!1,message:`Directory (${r.default.dim(l)}) does not appear to be a repository`});let u;try{u=await(0,q.getWorkspaceDetails)({root:l})}catch{return J({success:!1,message:`Unable to read determine package manager details from ${r.default.dim(l)}`})}let f=j(u,i);if(!f)return J({success:!1,message:`Unable to infer the version of turbo being used by ${u.name}`});let p=i.to;try{p=await P(i)}catch(e){let t=`UNKNOWN_ERROR`;return e instanceof Error&&(t=e.message),J({success:!1,message:t})}if(!p)return J({success:!1,message:`Unable to fetch the latest version of turbo`});if(f===p)return J({success:!0,message:`Nothing to do, current version (${r.default.bold(f)}) is the same as the requested version (${r.default.bold(p)})`});let m=L({fromVersion:f,toVersion:p});m.length===0&&e.log(`No codemods required to migrate from ${f} to ${p}`,s.default.EOL),i.dryRun||K({project:u}),e.log(`Upgrading turbo from ${r.default.bold(f)} to ${r.default.bold(p)} (${m.length===0?`no codemods required`:`${m.length} required codemod${m.length===1?``:`s`}`})`,s.default.EOL);let h=[];for(let[t,n]of m.entries()){e.log(`(${t+1}/${m.length}) ${r.default.bold(`Running ${n.name}`)}`);let a=await n.transformer({root:u.paths.root,options:{...i,toVersion:p}});e.Runner.logResults(a),h.push(a)}let g=`update-versioned-schema-json`;if(!m.some(e=>e.name===g)){let t=n.transformer({root:u.paths.root,options:{...i,toVersion:p}});e.Runner.logResults(t),h.push(t)}let _=h.some(e=>e.fatalError||Object.keys(e.changes).some(t=>e.changes[t].error));if(_)return J({success:!1,message:`Could not complete migration due to codemod errors. Please fix the errors and try again.`});let v;if(u&&(v=W({root:u.paths.root,packageManager:u.packageManager})),v)if(i.dryRun)e.log(`Would update turbo version in catalog file ${r.default.dim(v.catalogFile)} ${r.default.dim(`(dry run)`)}`,s.default.EOL);else{let t=G({catalogInfo:v,version:p});t&&e.log(`Updated turbo version to ${r.default.bold(p)} in ${r.default.dim(v.catalogFile)}`,s.default.EOL)}let y=await H({project:u,to:i.to,catalogInfo:v});if(!y)return J({success:!1,message:`Unable to determine upgrade command`});if(i.install)if(i.dryRun)e.log(`Upgrading turbo with ${r.default.bold(y)} ${r.default.dim(`(dry run)`)}`,s.default.EOL);else{e.log(`Upgrading turbo with ${r.default.bold(y)}`,s.default.EOL);try{(0,c.execSync)(y,{stdio:`pipe`,cwd:u.paths.root})}catch(e){return J({success:!1,message:`Unable to upgrade turbo: ${String(e)}`})}}else e.log(`Upgrade turbo with ${r.default.bold(y)}`,s.default.EOL);J({success:!0})}async function X(t,n,i){let a=I();if(i.list)return e.log(a.map(e=>`- ${r.default.cyan(e.name)}`).join(`
5
5
  `)),process.exit(0);i.dryRun||D({directory:n,force:i.force});let o=n;o||(o=await(0,d.input)({message:`Where is the root of the repo where the transform should run?`,default:`.`,validate:e=>{let{exists:t,absolute:n}=O({directory:e});return t?!0:`Directory ${r.default.dim(`(${n})`)} does not exist`},transformer:e=>e.trim()}),o=o.trim());let s=t;s||=await(0,d.select)({message:`Which transform would you like to apply?`,choices:a.map(e=>({name:`${r.default.bold(e.name)} - ${r.default.gray(e.description)} ${r.default.gray(`(${e.introducedIn})`)}`,value:e.name}))});let{exists:c,absolute:l}=O({directory:o});if(!c)return e.error(`Directory ${r.default.dim(`(${l})`)} does not exist`),process.exit(1);let u=a.map(e=>e.name),f=a.find(e=>e.name===s);if(!f)return e.error(`Invalid transform choice ${r.default.dim(`(${t})`)}, pick one of:`),e.error(u.map(e=>`- ${e}`).join(`
@@ -73,5 +73,5 @@ ${e.format(t)}
73
73
 
74
74
  see https://github.com/jprichardson/node-fs-extra/issues/269`,`Warning`,`fs-extra-WARN0001`),s.checkPaths(e,t,`copy`,n,(i,a)=>{if(i)return r(i);let{srcStat:o,destStat:c}=a;s.checkParentPaths(e,o,t,`copy`,i=>i?r(i):n.filter?u(l,c,e,t,n,r):l(c,e,t,n,r))})}function l(e,t,n,o,s){let c=r.dirname(n);a(c,(r,a)=>{if(r)return s(r);if(a)return f(e,t,n,o,s);i(c,r=>r?s(r):f(e,t,n,o,s))})}function u(e,t,n,r,i,a){Promise.resolve(i.filter(n,r)).then(o=>o?e(t,n,r,i,a):a(),e=>a(e))}function d(e,t,n,r,i){return r.filter?u(f,e,t,n,r,i):f(e,t,n,r,i)}function f(e,t,r,i,a){let o=i.dereference?n.stat:n.lstat;o(t,(n,o)=>n?a(n):o.isDirectory()?S(o,e,t,r,i,a):o.isFile()||o.isCharacterDevice()||o.isBlockDevice()?p(o,e,t,r,i,a):o.isSymbolicLink()?D(e,t,r,i,a):o.isSocket()?a(Error(`Cannot copy a socket file: ${t}`)):o.isFIFO()?a(Error(`Cannot copy a FIFO pipe: ${t}`)):a(Error(`Unknown file: ${t}`)))}function p(e,t,n,r,i,a){return t?m(e,n,r,i,a):h(e,n,r,i,a)}function m(e,t,r,i,a){if(i.overwrite)n.unlink(r,n=>n?a(n):h(e,t,r,i,a));else if(i.errorOnExist)return a(Error(`'${r}' already exists`));else return a()}function h(e,t,r,i,a){n.copyFile(t,r,n=>n?a(n):i.preserveTimestamps?g(e.mode,t,r,a):b(r,e.mode,a))}function g(e,t,n,r){return _(e)?v(n,e,i=>i?r(i):y(e,t,n,r)):y(e,t,n,r)}function _(e){return(e&128)==0}function v(e,t,n){return b(e,t|128,n)}function y(e,t,n,r){x(t,n,t=>t?r(t):b(n,e,r))}function b(e,t,r){return n.chmod(e,t,r)}function x(e,t,r){n.stat(e,(e,n)=>e?r(e):o(t,n.atime,n.mtime,r))}function S(e,t,n,r,i,a){return t?w(n,r,i,a):C(e.mode,n,r,i,a)}function C(e,t,r,i,a){n.mkdir(r,n=>{if(n)return a(n);w(t,r,i,t=>t?a(t):b(r,e,a))})}function w(e,t,r,i){n.readdir(e,(n,a)=>n?i(n):T(a,e,t,r,i))}function T(e,t,n,r,i){let a=e.pop();return a?E(e,a,t,n,r,i):i()}function E(e,t,n,i,a,o){let c=r.join(n,t),l=r.join(i,t);s.checkPaths(c,l,`copy`,a,(t,r)=>{if(t)return o(t);let{destStat:s}=r;d(s,c,l,a,t=>t?o(t):T(e,n,i,a,o))})}function D(e,t,i,a,o){n.readlink(t,(t,c)=>{if(t)return o(t);if(a.dereference&&(c=r.resolve(process.cwd(),c)),e)n.readlink(i,(t,l)=>t?t.code===`EINVAL`||t.code===`UNKNOWN`?n.symlink(c,i,o):o(t):(a.dereference&&(l=r.resolve(process.cwd(),l)),s.isSrcSubdir(c,l)?o(Error(`Cannot copy '${c}' to a subdirectory of itself, '${l}'.`)):e.isDirectory()&&s.isSrcSubdir(l,c)?o(Error(`Cannot overwrite '${l}' with '${c}'.`)):O(c,i,o)));else return n.symlink(c,i,o)})}function O(e,t,r){n.unlink(t,i=>i?r(i):n.symlink(e,t,r))}t.exports=c}),Zl=c((e,t)=>{let n=J(),r=require(`path`),i=Kl().mkdirsSync,a=Jl().utimesMillisSync,o=Yl();function s(e,t,n){typeof n==`function`&&(n={filter:n}),n||={},n.clobber=`clobber`in n?!!n.clobber:!0,n.overwrite=`overwrite`in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&process.arch===`ia32`&&process.emitWarning(`Using the preserveTimestamps option in 32-bit node is not recommended;
75
75
 
76
- see https://github.com/jprichardson/node-fs-extra/issues/269`,`Warning`,`fs-extra-WARN0002`);let{srcStat:r,destStat:i}=o.checkPathsSync(e,t,`copy`,n);return o.checkParentPathsSync(e,r,t,`copy`),c(i,e,t,n)}function c(e,t,a,o){if(o.filter&&!o.filter(t,a))return;let s=r.dirname(a);return n.existsSync(s)||i(s),u(e,t,a,o)}function l(e,t,n,r){if(!(r.filter&&!r.filter(t,n)))return u(e,t,n,r)}function u(e,t,r,i){let a=i.dereference?n.statSync:n.lstatSync,o=a(t);if(o.isDirectory())return y(o,e,t,r,i);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return d(o,e,t,r,i);if(o.isSymbolicLink())return C(e,t,r,i);throw o.isSocket()?Error(`Cannot copy a socket file: ${t}`):o.isFIFO()?Error(`Cannot copy a FIFO pipe: ${t}`):Error(`Unknown file: ${t}`)}function d(e,t,n,r,i){return t?f(e,n,r,i):p(e,n,r,i)}function f(e,t,r,i){if(i.overwrite)return n.unlinkSync(r),p(e,t,r,i);if(i.errorOnExist)throw Error(`'${r}' already exists`)}function p(e,t,r,i){return n.copyFileSync(t,r),i.preserveTimestamps&&m(e.mode,t,r),_(r,e.mode)}function m(e,t,n){return h(e)&&g(n,e),v(t,n)}function h(e){return(e&128)==0}function g(e,t){return _(e,t|128)}function _(e,t){return n.chmodSync(e,t)}function v(e,t){let r=n.statSync(e);return a(t,r.atime,r.mtime)}function y(e,t,n,r,i){return t?x(n,r,i):b(e.mode,n,r,i)}function b(e,t,r,i){return n.mkdirSync(r),x(t,r,i),_(r,e)}function x(e,t,r){n.readdirSync(e).forEach(n=>S(n,e,t,r))}function S(e,t,n,i){let a=r.join(t,e),s=r.join(n,e),{destStat:c}=o.checkPathsSync(a,s,`copy`,i);return l(c,a,s,i)}function C(e,t,i,a){let s=n.readlinkSync(t);if(a.dereference&&(s=r.resolve(process.cwd(),s)),e){let e;try{e=n.readlinkSync(i)}catch(e){if(e.code===`EINVAL`||e.code===`UNKNOWN`)return n.symlinkSync(s,i);throw e}if(a.dereference&&(e=r.resolve(process.cwd(),e)),o.isSrcSubdir(s,e))throw Error(`Cannot copy '${s}' to a subdirectory of itself, '${e}'.`);if(n.statSync(i).isDirectory()&&o.isSrcSubdir(e,s))throw Error(`Cannot overwrite '${e}' with '${s}'.`);return w(s,i)}else return n.symlinkSync(s,i)}function w(e,t){return n.unlinkSync(t),n.symlinkSync(e,t)}t.exports=s}),Ql=c((e,t)=>{let n=Mt().fromCallback;t.exports={copy:n(Xl()),copySync:Zl()}}),$l=c((e,t)=>{let n=J(),r=require(`path`),i=require(`assert`),a=process.platform===`win32`;function o(e){let t=[`unlink`,`chmod`,`stat`,`lstat`,`rmdir`,`readdir`];t.forEach(t=>{e[t]=e[t]||n[t],t+=`Sync`,e[t]=e[t]||n[t]}),e.maxBusyTries=e.maxBusyTries||3}function s(e,t,n){let r=0;typeof t==`function`&&(n=t,t={}),i(e,`rimraf: missing path`),i.strictEqual(typeof e,`string`,`rimraf: path should be a string`),i.strictEqual(typeof n,`function`,`rimraf: callback function required`),i(t,`rimraf: invalid options argument provided`),i.strictEqual(typeof t,`object`,`rimraf: options should be object`),o(t),c(e,t,function i(a){if(a){if((a.code===`EBUSY`||a.code===`ENOTEMPTY`||a.code===`EPERM`)&&r<t.maxBusyTries){r++;let n=r*100;return setTimeout(()=>c(e,t,i),n)}a.code===`ENOENT`&&(a=null)}n(a)})}function c(e,t,n){i(e),i(t),i(typeof n==`function`),t.lstat(e,(r,i)=>{if(r&&r.code===`ENOENT`)return n(null);if(r&&r.code===`EPERM`&&a)return l(e,t,r,n);if(i&&i.isDirectory())return d(e,t,r,n);t.unlink(e,r=>{if(r){if(r.code===`ENOENT`)return n(null);if(r.code===`EPERM`)return a?l(e,t,r,n):d(e,t,r,n);if(r.code===`EISDIR`)return d(e,t,r,n)}return n(r)})})}function l(e,t,n,r){i(e),i(t),i(typeof r==`function`),t.chmod(e,438,i=>{i?r(i.code===`ENOENT`?null:n):t.stat(e,(i,a)=>{i?r(i.code===`ENOENT`?null:n):a.isDirectory()?d(e,t,n,r):t.unlink(e,r)})})}function u(e,t,n){let r;i(e),i(t);try{t.chmodSync(e,438)}catch(e){if(e.code===`ENOENT`)return;throw n}try{r=t.statSync(e)}catch(e){if(e.code===`ENOENT`)return;throw n}r.isDirectory()?m(e,t,n):t.unlinkSync(e)}function d(e,t,n,r){i(e),i(t),i(typeof r==`function`),t.rmdir(e,i=>{i&&(i.code===`ENOTEMPTY`||i.code===`EEXIST`||i.code===`EPERM`)?f(e,t,r):i&&i.code===`ENOTDIR`?r(n):r(i)})}function f(e,t,n){i(e),i(t),i(typeof n==`function`),t.readdir(e,(i,a)=>{if(i)return n(i);let o=a.length,c;if(o===0)return t.rmdir(e,n);a.forEach(i=>{s(r.join(e,i),t,r=>{if(!c){if(r)return n(c=r);--o===0&&t.rmdir(e,n)}})})})}function p(e,t){let n;t||={},o(t),i(e,`rimraf: missing path`),i.strictEqual(typeof e,`string`,`rimraf: path should be a string`),i(t,`rimraf: missing options`),i.strictEqual(typeof t,`object`,`rimraf: options should be object`);try{n=t.lstatSync(e)}catch(n){if(n.code===`ENOENT`)return;n.code===`EPERM`&&a&&u(e,t,n)}try{n&&n.isDirectory()?m(e,t,null):t.unlinkSync(e)}catch(n){if(n.code===`ENOENT`)return;if(n.code===`EPERM`)return a?u(e,t,n):m(e,t,n);if(n.code!==`EISDIR`)throw n;m(e,t,n)}}function m(e,t,n){i(e),i(t);try{t.rmdirSync(e)}catch(r){if(r.code===`ENOTDIR`)throw n;if(r.code===`ENOTEMPTY`||r.code===`EEXIST`||r.code===`EPERM`)h(e,t);else if(r.code!==`ENOENT`)throw r}}function h(e,t){if(i(e),i(t),t.readdirSync(e).forEach(n=>p(r.join(e,n),t)),a){let n=Date.now();do try{let n=t.rmdirSync(e,t);return n}catch{}while(Date.now()-n<500)}else{let n=t.rmdirSync(e,t);return n}}t.exports=s,s.sync=p}),eu=c((e,t)=>{let n=J(),r=Mt().fromCallback,i=$l();function a(e,t){if(n.rm)return n.rm(e,{recursive:!0,force:!0},t);i(e,t)}function o(e){if(n.rmSync)return n.rmSync(e,{recursive:!0,force:!0});i.sync(e)}t.exports={remove:r(a),removeSync:o}}),tu=c((e,t)=>{let n=Mt().fromPromise,r=Ul(),i=require(`path`),a=Kl(),o=eu(),s=n(async function(e){let t;try{t=await r.readdir(e)}catch{return a.mkdirs(e)}return Promise.all(t.map(t=>o.remove(i.join(e,t))))});function c(e){let t;try{t=r.readdirSync(e)}catch{return a.mkdirsSync(e)}t.forEach(t=>{t=i.join(e,t),o.removeSync(t)})}t.exports={emptyDirSync:c,emptydirSync:c,emptyDir:s,emptydir:s}}),nu=c((e,t)=>{let n=Mt().fromCallback,r=require(`path`),i=J(),a=Kl();function o(e,t){function n(){i.writeFile(e,``,e=>{if(e)return t(e);t()})}i.stat(e,(o,s)=>{if(!o&&s.isFile())return t();let c=r.dirname(e);i.stat(c,(e,r)=>{if(e)return e.code===`ENOENT`?a.mkdirs(c,e=>{if(e)return t(e);n()}):t(e);r.isDirectory()?n():i.readdir(c,e=>{if(e)return t(e)})})})}function s(e){let t;try{t=i.statSync(e)}catch{}if(t&&t.isFile())return;let n=r.dirname(e);try{i.statSync(n).isDirectory()||i.readdirSync(n)}catch(e){if(e&&e.code===`ENOENT`)a.mkdirsSync(n);else throw e}i.writeFileSync(e,``)}t.exports={createFile:n(o),createFileSync:s}}),ru=c((e,t)=>{let n=Mt().fromCallback,r=require(`path`),i=J(),a=Kl(),o=ql().pathExists,{areIdentical:s}=Yl();function c(e,t,n){function c(e,t){i.link(e,t,e=>{if(e)return n(e);n(null)})}i.lstat(t,(l,u)=>{i.lstat(e,(i,l)=>{if(i)return i.message=i.message.replace(`lstat`,`ensureLink`),n(i);if(u&&s(l,u))return n(null);let d=r.dirname(t);o(d,(r,i)=>{if(r)return n(r);if(i)return c(e,t);a.mkdirs(d,r=>{if(r)return n(r);c(e,t)})})})})}function l(e,t){let n;try{n=i.lstatSync(t)}catch{}try{let t=i.lstatSync(e);if(n&&s(t,n))return}catch(e){throw e.message=e.message.replace(`lstat`,`ensureLink`),e}let o=r.dirname(t),c=i.existsSync(o);return c||a.mkdirsSync(o),i.linkSync(e,t)}t.exports={createLink:n(c),createLinkSync:l}}),iu=c((e,t)=>{let n=require(`path`),r=J(),i=ql().pathExists;function a(e,t,a){if(n.isAbsolute(e))return r.lstat(e,t=>t?(t.message=t.message.replace(`lstat`,`ensureSymlink`),a(t)):a(null,{toCwd:e,toDst:e}));{let o=n.dirname(t),s=n.join(o,e);return i(s,(t,i)=>t?a(t):i?a(null,{toCwd:s,toDst:e}):r.lstat(e,t=>t?(t.message=t.message.replace(`lstat`,`ensureSymlink`),a(t)):a(null,{toCwd:e,toDst:n.relative(o,e)})))}}function o(e,t){let i;if(n.isAbsolute(e)){if(i=r.existsSync(e),!i)throw Error(`absolute srcpath does not exist`);return{toCwd:e,toDst:e}}else{let a=n.dirname(t),o=n.join(a,e);if(i=r.existsSync(o),i)return{toCwd:o,toDst:e};if(i=r.existsSync(e),!i)throw Error(`relative srcpath does not exist`);return{toCwd:e,toDst:n.relative(a,e)}}}t.exports={symlinkPaths:a,symlinkPathsSync:o}}),au=c((e,t)=>{let n=J();function r(e,t,r){if(r=typeof t==`function`?t:r,t=typeof t==`function`?!1:t,t)return r(null,t);n.lstat(e,(e,n)=>{if(e)return r(null,`file`);t=n&&n.isDirectory()?`dir`:`file`,r(null,t)})}function i(e,t){let r;if(t)return t;try{r=n.lstatSync(e)}catch{return`file`}return r&&r.isDirectory()?`dir`:`file`}t.exports={symlinkType:r,symlinkTypeSync:i}}),ou=c((e,t)=>{let n=Mt().fromCallback,r=require(`path`),i=Ul(),a=Kl(),o=a.mkdirs,s=a.mkdirsSync,c=iu(),l=c.symlinkPaths,u=c.symlinkPathsSync,d=au(),f=d.symlinkType,p=d.symlinkTypeSync,m=ql().pathExists,{areIdentical:h}=Yl();function g(e,t,n,r){r=typeof n==`function`?n:r,n=typeof n==`function`?!1:n,i.lstat(t,(a,o)=>{!a&&o.isSymbolicLink()?Promise.all([i.stat(e),i.stat(t)]).then(([i,a])=>{if(h(i,a))return r(null);_(e,t,n,r)}):_(e,t,n,r)})}function _(e,t,n,a){l(e,t,(s,c)=>{if(s)return a(s);e=c.toDst,f(c.toCwd,n,(n,s)=>{if(n)return a(n);let c=r.dirname(t);m(c,(n,r)=>{if(n)return a(n);if(r)return i.symlink(e,t,s,a);o(c,n=>{if(n)return a(n);i.symlink(e,t,s,a)})})})})}function v(e,t,n){let a;try{a=i.lstatSync(t)}catch{}if(a&&a.isSymbolicLink()){let n=i.statSync(e),r=i.statSync(t);if(h(n,r))return}let o=u(e,t);e=o.toDst,n=p(o.toCwd,n);let c=r.dirname(t),l=i.existsSync(c);return l||s(c),i.symlinkSync(e,t,n)}t.exports={createSymlink:n(g),createSymlinkSync:v}}),su=c((e,t)=>{let{createFile:n,createFileSync:r}=nu(),{createLink:i,createLinkSync:a}=ru(),{createSymlink:o,createSymlinkSync:s}=ou();t.exports={createFile:n,createFileSync:r,ensureFile:n,ensureFileSync:r,createLink:i,createLinkSync:a,ensureLink:i,ensureLinkSync:a,createSymlink:o,createSymlinkSync:s,ensureSymlink:o,ensureSymlinkSync:s}}),cu=c((e,t)=>{let n=Pt();t.exports={readJson:n.readFile,readJsonSync:n.readFileSync,writeJson:n.writeFile,writeJsonSync:n.writeFileSync}}),lu=c((e,t)=>{let n=Mt().fromCallback,r=J(),i=require(`path`),a=Kl(),o=ql().pathExists;function s(e,t,n,s){typeof n==`function`&&(s=n,n=`utf8`);let c=i.dirname(e);o(c,(i,o)=>{if(i)return s(i);if(o)return r.writeFile(e,t,n,s);a.mkdirs(c,i=>{if(i)return s(i);r.writeFile(e,t,n,s)})})}function c(e,...t){let n=i.dirname(e);if(r.existsSync(n))return r.writeFileSync(e,...t);a.mkdirsSync(n),r.writeFileSync(e,...t)}t.exports={outputFile:n(s),outputFileSync:c}}),uu=c((e,t)=>{let{stringify:n}=Nt(),{outputFile:r}=lu();async function i(e,t,i={}){let a=n(t,i);await r(e,a,i)}t.exports=i}),du=c((e,t)=>{let{stringify:n}=Nt(),{outputFileSync:r}=lu();function i(e,t,i){let a=n(t,i);r(e,a,i)}t.exports=i}),fu=c((e,t)=>{let n=Mt().fromPromise,r=cu();r.outputJson=n(uu()),r.outputJsonSync=du(),r.outputJSON=r.outputJson,r.outputJSONSync=r.outputJsonSync,r.writeJSON=r.writeJson,r.writeJSONSync=r.writeJsonSync,r.readJSON=r.readJson,r.readJSONSync=r.readJsonSync,t.exports=r}),pu=c((e,t)=>{let n=J(),r=require(`path`),i=Ql().copy,a=eu().remove,o=Kl().mkdirp,s=ql().pathExists,c=Yl();function l(e,t,n,i){typeof n==`function`&&(i=n,n={}),n||={};let a=n.overwrite||n.clobber||!1;c.checkPaths(e,t,`move`,n,(n,s)=>{if(n)return i(n);let{srcStat:l,isChangingCase:f=!1}=s;c.checkParentPaths(e,l,t,`move`,n=>{if(n)return i(n);if(u(t))return d(e,t,a,f,i);o(r.dirname(t),n=>n?i(n):d(e,t,a,f,i))})})}function u(e){let t=r.dirname(e),n=r.parse(t);return n.root===t}function d(e,t,n,r,i){if(r)return f(e,t,n,i);if(n)return a(t,r=>r?i(r):f(e,t,n,i));s(t,(r,a)=>r?i(r):a?i(Error(`dest already exists.`)):f(e,t,n,i))}function f(e,t,r,i){n.rename(e,t,n=>n?n.code===`EXDEV`?p(e,t,r,i):i(n):i())}function p(e,t,n,r){let o={overwrite:n,errorOnExist:!0};i(e,t,o,t=>t?r(t):a(e,r))}t.exports=l}),mu=c((e,t)=>{let n=J(),r=require(`path`),i=Ql().copySync,a=eu().removeSync,o=Kl().mkdirpSync,s=Yl();function c(e,t,n){n||={};let i=n.overwrite||n.clobber||!1,{srcStat:a,isChangingCase:c=!1}=s.checkPathsSync(e,t,`move`,n);return s.checkParentPathsSync(e,a,t,`move`),l(t)||o(r.dirname(t)),u(e,t,i,c)}function l(e){let t=r.dirname(e),n=r.parse(t);return n.root===t}function u(e,t,r,i){if(i)return d(e,t,r);if(r)return a(t),d(e,t,r);if(n.existsSync(t))throw Error(`dest already exists.`);return d(e,t,r)}function d(e,t,r){try{n.renameSync(e,t)}catch(n){if(n.code!==`EXDEV`)throw n;return f(e,t,r)}}function f(e,t,n){let r={overwrite:n,errorOnExist:!0};return i(e,t,r),a(e)}t.exports=c}),hu=c((e,t)=>{let n=Mt().fromCallback;t.exports={move:n(pu()),moveSync:mu()}}),gu=c((e,t)=>{t.exports={...Ul(),...Ql(),...tu(),...su(),...fu(),...Kl(),...hu(),...lu(),...ql(),...eu()}}),_u=class e extends Error{type;constructor(t,n){super(t),this.name=`ConvertError`,this.type=n?.type??`unknown`,Error.captureStackTrace(this,e)}},vu=u(gu());let yu=/^(?!_)(?<manager>.+)@(?<version>.+)$/,bu=new Set([`npm`,`pnpm`,`yarn`,`bun`,`nub`]),xu=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;function Su({workspaceRoot:e}){let t=p.default.join(e,`package.json`);try{return(0,vu.readJsonSync)(t,`utf8`)}catch(t){if(t&&typeof t==`object`&&`code`in t){if(t.code===`ENOENT`)throw new _u(`no "package.json" found at ${e}`,{type:`package_json-missing`});if(t.code===`EJSONPARSE`)throw new _u(`failed to parse "package.json" at ${e}`,{type:`package_json-parse_error`})}throw Error(`unexpected error reading "package.json" at ${e}`)}}function Cu({workspaceRoot:e}){let t=Su({workspaceRoot:e}),{packageManager:n,devEngines:r}=t;if(n){try{let e=yu.exec(n);if(e){let t=e.groups?.manager;return wu(t)?t:void 0}}catch{}return}let i=Object.hasOwn(t,`devEngines`);if(i&&(!r||typeof r!=`object`||Array.isArray(r)))throw Tu("`devEngines` must be an object containing `packageManager`");if(!r||!(`packageManager`in r))return;let a=r.packageManager;if(!a||typeof a!=`object`||Array.isArray(a))throw Tu("`devEngines.packageManager` must be an object");if(Object.keys(a).length===0)throw Tu('expected `{ "name": "pnpm", "version": "9.12.3" }`');if(!(`name`in a))throw Tu("`devEngines.packageManager.name` is required");let{name:o}=a;if(typeof o!=`string`)throw Tu("`devEngines.packageManager.name` must be a string");if(o.length===0)throw Tu("`devEngines.packageManager.name` must not be empty");if(o.trim()!==o)throw Tu("`devEngines.packageManager.name` must not contain leading or trailing whitespace");if(!wu(o))throw Tu("`devEngines.packageManager.name` must be one of `npm`, `pnpm`, `yarn`, `bun`, or `nub`");if(!(`version`in a))throw Tu("`devEngines.packageManager.version` is required");let{version:s}=a;if(typeof s!=`string`)throw Tu("`devEngines.packageManager.version` must be a string");if(s.length===0)throw Tu("`devEngines.packageManager.version` must not be empty");if(s.trim()!==s)throw Tu("`devEngines.packageManager.version` must not contain leading or trailing whitespace");if(!xu.test(s)||P.default.valid(s)===null)throw Tu("`devEngines.packageManager.version` must be an exact semantic version");return o}function wu(e){return typeof e==`string`&&bu.has(e)}function Tu(e){return new _u(`Invalid \`devEngines.packageManager\` field in package.json: ${e}`,{type:`package_manager-unable_to_detect`})}function Eu(e){if(!e)return;let t=yu.exec(e),n=t?.groups?.manager;return wu(n)?n:void 0}function Du({packageJson:e,packageManager:t,version:n}){delete e.packageManager;let r=e.devEngines&&typeof e.devEngines==`object`&&!Array.isArray(e.devEngines)?e.devEngines:{};e.devEngines={...r,packageManager:{name:t,version:n}}}function Ou({packageJson:e,packageManager:t}){Eu(e.packageManager)===t&&delete e.packageManager;let n=e.devEngines?.packageManager;ku(n)&&n.name===t&&delete e.devEngines?.packageManager}function ku(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&`name`in e&&wu(e.name)&&`version`in e&&typeof e.version==`string`}function Au({workspaceRoot:e}){let t=Su({workspaceRoot:e}),n=p.default.basename(e),{name:r=n,description:i}=t;return{name:r,description:i}}function ju({workspaceRoot:e}){let t=p.default.join(e,`pnpm-workspace.yaml`);if((0,vu.existsSync)(t))try{let e=_.default.load((0,vu.readFileSync)(t,`utf8`));if(e instanceof Object&&`packages`in e&&Array.isArray(e.packages))return e.packages}catch{throw new _u(`failed to parse ${t}`,{type:`pnpm-workspace_parse_error`})}return[]}function Mu({root:e,lockFile:t,workspaceConfig:n}){let r=t=>p.default.join(e,t),i={root:e,lockfile:r(t),packageJson:r(`package.json`),nodeModules:r(`node_modules`)};return n&&(i.workspaceConfig=r(n)),i}function Nu({workspaces:e}){return e?Array.isArray(e)?e:`packages`in e?e.packages??[]:[]:[]}function Pu({workspaceRoot:e,workspaceGlobs:t}){if(!t)return[];let n=t.filter(e=>e.startsWith(`!`)).map(e=>e.slice(1));return t.filter(e=>!e.startsWith(`!`)).flatMap(t=>{let r=[`${t}/package.json`];return(0,v.sync)(r,{onlyFiles:!0,absolute:!0,cwd:e,ignore:[`**/node_modules/**`,...n]})}).map(e=>{let t=p.default.dirname(e),{name:n,description:r}=Au({workspaceRoot:t});return{name:n,description:r,paths:{root:t,packageJson:e,nodeModules:p.default.join(t,`node_modules`)}}})}let Fu=[{manager:`bun`,lockfiles:[`bun.lock`,`bun.lockb`]},{manager:`pnpm`,lockfiles:[`pnpm-lock.yaml`]},{manager:`yarn`,lockfiles:[`yarn.lock`]},{manager:`npm`,lockfiles:[`package-lock.json`]}];function Iu({workspaceRoot:e}){for(let{manager:t,lockfiles:n}of Fu)if(n.some(t=>(0,vu.existsSync)(p.default.join(e,t))))return t;return`npm`}function Lu({workspaceRoot:e}){let t=Iu({workspaceRoot:e});switch(t){case`bun`:return(0,vu.existsSync)(p.default.join(e,`bun.lock`))?`bun.lock`:`bun.lockb`;case`pnpm`:return`pnpm-lock.yaml`;case`yarn`:return`yarn.lock`;case`npm`:return`package-lock.json`}}function Ru({directory:e}){let t=p.default.resolve(process.cwd(),e);return{exists:(0,vu.existsSync)(t),absolute:t}}function zu({packageManager:e,action:t,project:n}){let r=n.workspaceData.globs.length>0;return`${t===`remove`?`Removing`:`Adding`} ${e} ${r?`workspaces`:``} ${t===`remove`?`from`:`to`} ${n.name}`}function Bu({project:e}){let t=e=>{if(e.includes(`*`)){if(e.includes(`**`))return!1;let t=e.split(`/`).slice(0,-1).join(`/`);if(t.includes(`*`))return!1}return![`!`,`[`,`]`,`{`,`}`].some(t=>e.includes(t))};return e.workspaceData.globs.every(t)}function Vu({project:e,options:t}){t?.dry||(0,vu.rmSync)(e.paths.lockfile,{force:!0})}async function Hu({project:e,options:t}){if(!t?.dry&&(0,vu.existsSync)(e.paths.lockfile))try{let{stdout:t}=await(0,S.default)(`bun`,[`bun.lockb`],{stdin:`ignore`,cwd:e.paths.root,preferLocal:!0,shell:process.platform===`win32`});await(0,vu.writeFile)(p.default.join(e.paths.root,`yarn.lock`),t)}catch{}finally{(0,vu.rmSync)(e.paths.lockfile,{force:!0})}}var Uu=u(gu());function Wu({dependencyList:e,project:t,to:n}){let r=[];for(let i of t.workspaceData.workspaces){let{name:t}=i;if(e[t]){let i=e[t],a=i.startsWith(`workspace:`)?i.slice(10):i;e[t]=n.name===`pnpm`?`workspace:${a}`:a,r.push(t)}}return{dependencyList:e,updated:r}}function Gu({project:e,workspace:t,to:n,logger:r,options:i}){if([`yarn`,`npm`,`bun`].includes(n.name)&&[`yarn`,`npm`,`bun`].includes(e.packageManager))return;let a=Su({workspaceRoot:t.paths.root}),o={dependencies:[],devDependencies:[],peerDependencies:[],optionalDependencies:[]},s=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`];for(let t of s){let r=a[t];if(r){let{updated:i,dependencyList:s}=Wu({dependencyList:r,project:e,to:n});a[t]=s,o[t]=i}}let c=e=>{let t=o[e].length;if(t>0)return`${d.default.green(t.toString())} ${e}`},l=s.map(c).filter(Boolean),u=`./${p.default.relative(e.paths.root,t.paths.packageJson)}`;if(l.length>=1){let e=`updating`;for(let[t,n]of l.entries())l.length===1?e+=` ${n} in ${u}`:t===l.length-1?e+=`and ${n} in ${u}`:e+=` ${n}, `;r.workspaceStep(e)}else r.workspaceStep(`no workspace dependencies found in ${u}`);i?.dry||Uu.default.writeJSONSync(t.paths.packageJson,a,{spaces:2})}var Ku=u(gu());let qu={name:`npm`,lock:`package-lock.json`};async function Ju(e){let t=p.default.join(e.workspaceRoot,qu.lock),n=Cu({workspaceRoot:e.workspaceRoot});return Ku.default.existsSync(t)||n===qu.name}async function Yu(e){let t=await Ju(e);if(!t)throw new _u(`Not an npm project`,{type:`package_manager-unexpected`});let n=Su(e),{name:r,description:i}=Au(e),a=Nu({workspaces:n.workspaces});return{name:r,description:i,packageManager:qu.name,paths:Mu({root:e.workspaceRoot,lockFile:qu.lock}),workspaceData:{globs:a,workspaces:Pu({workspaceGlobs:a,...e})}}}async function Xu(e){let{project:t,options:n,to:r,logger:i}=e,a=t.workspaceData.globs.length>0;i.mainStep(zu({packageManager:qu.name,action:`create`,project:t}));let o=Su({workspaceRoot:t.paths.root});if(i.rootHeader(),i.rootStep(`adding "devEngines.packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),Du({packageJson:o,packageManager:r.name,version:r.version}),a){i.rootStep(`adding "workspaces" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),o.workspaces=t.workspaceData.globs,n?.dry||Ku.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Gu({workspace:{name:`root`,paths:t.paths},project:t,to:r,logger:i,options:n}),i.workspaceHeader();for(let e of t.workspaceData.workspaces)Gu({workspace:e,project:t,to:r,logger:i,options:n})}else n?.dry||Ku.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function Zu(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(zu({packageManager:qu.name,action:`remove`,project:t}));let a=Su({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing ${qu.name} package manager declarations in ${t.name} root "package.json"`),Ou({packageJson:a,packageManager:qu.name}),!r?.dry){Ku.default.writeJSONSync(t.paths.packageJson,a,{spaces:2});let e=[t.paths.nodeModules,...t.workspaceData.workspaces.map(e=>e.paths.nodeModules)];try{n.subStep(`removing "node_modules"`),await Promise.all(e.map(e=>Ku.default.rm(e,{recursive:!0,force:!0})))}catch{throw new _u(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function Qu(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Ku.default.rmSync(t.paths.lockfile,{force:!0})}async function $u(e){let{project:t,options:n}=e;switch(t.packageManager){case`pnpm`:Vu({project:t,options:n});break;case`bun`:Vu({project:t,options:n});break;case`npm`:break;case`yarn`:Vu({project:t,options:n});break;case`nub`:Vu({project:t,options:n});break}}let ed={detect:Ju,read:Yu,create:Xu,remove:Zu,clean:Qu,convertLock:$u};var td=u(gu());let nd={name:`pnpm`,lock:`pnpm-lock.yaml`};async function rd(e){let t=p.default.join(e.workspaceRoot,nd.lock),n=p.default.join(e.workspaceRoot,`pnpm-workspace.yaml`),r=Cu({workspaceRoot:e.workspaceRoot});return td.default.existsSync(t)||td.default.existsSync(n)||r===nd.name}async function id(e){let t=await rd(e);if(!t)throw new _u(`Not a pnpm project`,{type:`package_manager-unexpected`});let{name:n,description:r}=Au(e);return{name:n,description:r,packageManager:nd.name,paths:Mu({root:e.workspaceRoot,lockFile:nd.lock,workspaceConfig:`pnpm-workspace.yaml`}),workspaceData:{globs:ju(e),workspaces:Pu({workspaceGlobs:ju(e),...e})}}}async function ad(e){let{project:t,to:n,logger:r,options:i}=e,a=t.workspaceData.globs.length>0;r.mainStep(zu({action:`create`,packageManager:nd.name,project:t}));let o=Su({workspaceRoot:t.paths.root});if(r.rootHeader(),Du({packageJson:o,packageManager:n.name,version:n.version}),r.rootStep(`adding "devEngines.packageManager" field to ${t.name} root "package.json"`),i?.dry||(td.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),a&&(r.rootStep(`adding "pnpm-workspace.yaml"`),td.default.writeFileSync(p.default.join(t.paths.root,`pnpm-workspace.yaml`),`packages:\n${t.workspaceData.globs.map(e=>` - "${e}"`).join(`
76
+ see https://github.com/jprichardson/node-fs-extra/issues/269`,`Warning`,`fs-extra-WARN0002`);let{srcStat:r,destStat:i}=o.checkPathsSync(e,t,`copy`,n);return o.checkParentPathsSync(e,r,t,`copy`),c(i,e,t,n)}function c(e,t,a,o){if(o.filter&&!o.filter(t,a))return;let s=r.dirname(a);return n.existsSync(s)||i(s),u(e,t,a,o)}function l(e,t,n,r){if(!(r.filter&&!r.filter(t,n)))return u(e,t,n,r)}function u(e,t,r,i){let a=i.dereference?n.statSync:n.lstatSync,o=a(t);if(o.isDirectory())return y(o,e,t,r,i);if(o.isFile()||o.isCharacterDevice()||o.isBlockDevice())return d(o,e,t,r,i);if(o.isSymbolicLink())return C(e,t,r,i);throw o.isSocket()?Error(`Cannot copy a socket file: ${t}`):o.isFIFO()?Error(`Cannot copy a FIFO pipe: ${t}`):Error(`Unknown file: ${t}`)}function d(e,t,n,r,i){return t?f(e,n,r,i):p(e,n,r,i)}function f(e,t,r,i){if(i.overwrite)return n.unlinkSync(r),p(e,t,r,i);if(i.errorOnExist)throw Error(`'${r}' already exists`)}function p(e,t,r,i){return n.copyFileSync(t,r),i.preserveTimestamps&&m(e.mode,t,r),_(r,e.mode)}function m(e,t,n){return h(e)&&g(n,e),v(t,n)}function h(e){return(e&128)==0}function g(e,t){return _(e,t|128)}function _(e,t){return n.chmodSync(e,t)}function v(e,t){let r=n.statSync(e);return a(t,r.atime,r.mtime)}function y(e,t,n,r,i){return t?x(n,r,i):b(e.mode,n,r,i)}function b(e,t,r,i){return n.mkdirSync(r),x(t,r,i),_(r,e)}function x(e,t,r){n.readdirSync(e).forEach(n=>S(n,e,t,r))}function S(e,t,n,i){let a=r.join(t,e),s=r.join(n,e),{destStat:c}=o.checkPathsSync(a,s,`copy`,i);return l(c,a,s,i)}function C(e,t,i,a){let s=n.readlinkSync(t);if(a.dereference&&(s=r.resolve(process.cwd(),s)),e){let e;try{e=n.readlinkSync(i)}catch(e){if(e.code===`EINVAL`||e.code===`UNKNOWN`)return n.symlinkSync(s,i);throw e}if(a.dereference&&(e=r.resolve(process.cwd(),e)),o.isSrcSubdir(s,e))throw Error(`Cannot copy '${s}' to a subdirectory of itself, '${e}'.`);if(n.statSync(i).isDirectory()&&o.isSrcSubdir(e,s))throw Error(`Cannot overwrite '${e}' with '${s}'.`);return w(s,i)}else return n.symlinkSync(s,i)}function w(e,t){return n.unlinkSync(t),n.symlinkSync(e,t)}t.exports=s}),Ql=c((e,t)=>{let n=Mt().fromCallback;t.exports={copy:n(Xl()),copySync:Zl()}}),$l=c((e,t)=>{let n=J(),r=require(`path`),i=require(`assert`),a=process.platform===`win32`;function o(e){let t=[`unlink`,`chmod`,`stat`,`lstat`,`rmdir`,`readdir`];t.forEach(t=>{e[t]=e[t]||n[t],t+=`Sync`,e[t]=e[t]||n[t]}),e.maxBusyTries=e.maxBusyTries||3}function s(e,t,n){let r=0;typeof t==`function`&&(n=t,t={}),i(e,`rimraf: missing path`),i.strictEqual(typeof e,`string`,`rimraf: path should be a string`),i.strictEqual(typeof n,`function`,`rimraf: callback function required`),i(t,`rimraf: invalid options argument provided`),i.strictEqual(typeof t,`object`,`rimraf: options should be object`),o(t),c(e,t,function i(a){if(a){if((a.code===`EBUSY`||a.code===`ENOTEMPTY`||a.code===`EPERM`)&&r<t.maxBusyTries){r++;let n=r*100;return setTimeout(()=>c(e,t,i),n)}a.code===`ENOENT`&&(a=null)}n(a)})}function c(e,t,n){i(e),i(t),i(typeof n==`function`),t.lstat(e,(r,i)=>{if(r&&r.code===`ENOENT`)return n(null);if(r&&r.code===`EPERM`&&a)return l(e,t,r,n);if(i&&i.isDirectory())return d(e,t,r,n);t.unlink(e,r=>{if(r){if(r.code===`ENOENT`)return n(null);if(r.code===`EPERM`)return a?l(e,t,r,n):d(e,t,r,n);if(r.code===`EISDIR`)return d(e,t,r,n)}return n(r)})})}function l(e,t,n,r){i(e),i(t),i(typeof r==`function`),t.chmod(e,438,i=>{i?r(i.code===`ENOENT`?null:n):t.stat(e,(i,a)=>{i?r(i.code===`ENOENT`?null:n):a.isDirectory()?d(e,t,n,r):t.unlink(e,r)})})}function u(e,t,n){let r;i(e),i(t);try{t.chmodSync(e,438)}catch(e){if(e.code===`ENOENT`)return;throw n}try{r=t.statSync(e)}catch(e){if(e.code===`ENOENT`)return;throw n}r.isDirectory()?m(e,t,n):t.unlinkSync(e)}function d(e,t,n,r){i(e),i(t),i(typeof r==`function`),t.rmdir(e,i=>{i&&(i.code===`ENOTEMPTY`||i.code===`EEXIST`||i.code===`EPERM`)?f(e,t,r):i&&i.code===`ENOTDIR`?r(n):r(i)})}function f(e,t,n){i(e),i(t),i(typeof n==`function`),t.readdir(e,(i,a)=>{if(i)return n(i);let o=a.length,c;if(o===0)return t.rmdir(e,n);a.forEach(i=>{s(r.join(e,i),t,r=>{if(!c){if(r)return n(c=r);--o===0&&t.rmdir(e,n)}})})})}function p(e,t){let n;t||={},o(t),i(e,`rimraf: missing path`),i.strictEqual(typeof e,`string`,`rimraf: path should be a string`),i(t,`rimraf: missing options`),i.strictEqual(typeof t,`object`,`rimraf: options should be object`);try{n=t.lstatSync(e)}catch(n){if(n.code===`ENOENT`)return;n.code===`EPERM`&&a&&u(e,t,n)}try{n&&n.isDirectory()?m(e,t,null):t.unlinkSync(e)}catch(n){if(n.code===`ENOENT`)return;if(n.code===`EPERM`)return a?u(e,t,n):m(e,t,n);if(n.code!==`EISDIR`)throw n;m(e,t,n)}}function m(e,t,n){i(e),i(t);try{t.rmdirSync(e)}catch(r){if(r.code===`ENOTDIR`)throw n;if(r.code===`ENOTEMPTY`||r.code===`EEXIST`||r.code===`EPERM`)h(e,t);else if(r.code!==`ENOENT`)throw r}}function h(e,t){if(i(e),i(t),t.readdirSync(e).forEach(n=>p(r.join(e,n),t)),a){let n=Date.now();do try{let n=t.rmdirSync(e,t);return n}catch{}while(Date.now()-n<500)}else{let n=t.rmdirSync(e,t);return n}}t.exports=s,s.sync=p}),eu=c((e,t)=>{let n=J(),r=Mt().fromCallback,i=$l();function a(e,t){if(n.rm)return n.rm(e,{recursive:!0,force:!0},t);i(e,t)}function o(e){if(n.rmSync)return n.rmSync(e,{recursive:!0,force:!0});i.sync(e)}t.exports={remove:r(a),removeSync:o}}),tu=c((e,t)=>{let n=Mt().fromPromise,r=Ul(),i=require(`path`),a=Kl(),o=eu(),s=n(async function(e){let t;try{t=await r.readdir(e)}catch{return a.mkdirs(e)}return Promise.all(t.map(t=>o.remove(i.join(e,t))))});function c(e){let t;try{t=r.readdirSync(e)}catch{return a.mkdirsSync(e)}t.forEach(t=>{t=i.join(e,t),o.removeSync(t)})}t.exports={emptyDirSync:c,emptydirSync:c,emptyDir:s,emptydir:s}}),nu=c((e,t)=>{let n=Mt().fromCallback,r=require(`path`),i=J(),a=Kl();function o(e,t){function n(){i.writeFile(e,``,e=>{if(e)return t(e);t()})}i.stat(e,(o,s)=>{if(!o&&s.isFile())return t();let c=r.dirname(e);i.stat(c,(e,r)=>{if(e)return e.code===`ENOENT`?a.mkdirs(c,e=>{if(e)return t(e);n()}):t(e);r.isDirectory()?n():i.readdir(c,e=>{if(e)return t(e)})})})}function s(e){let t;try{t=i.statSync(e)}catch{}if(t&&t.isFile())return;let n=r.dirname(e);try{i.statSync(n).isDirectory()||i.readdirSync(n)}catch(e){if(e&&e.code===`ENOENT`)a.mkdirsSync(n);else throw e}i.writeFileSync(e,``)}t.exports={createFile:n(o),createFileSync:s}}),ru=c((e,t)=>{let n=Mt().fromCallback,r=require(`path`),i=J(),a=Kl(),o=ql().pathExists,{areIdentical:s}=Yl();function c(e,t,n){function c(e,t){i.link(e,t,e=>{if(e)return n(e);n(null)})}i.lstat(t,(l,u)=>{i.lstat(e,(i,l)=>{if(i)return i.message=i.message.replace(`lstat`,`ensureLink`),n(i);if(u&&s(l,u))return n(null);let d=r.dirname(t);o(d,(r,i)=>{if(r)return n(r);if(i)return c(e,t);a.mkdirs(d,r=>{if(r)return n(r);c(e,t)})})})})}function l(e,t){let n;try{n=i.lstatSync(t)}catch{}try{let t=i.lstatSync(e);if(n&&s(t,n))return}catch(e){throw e.message=e.message.replace(`lstat`,`ensureLink`),e}let o=r.dirname(t),c=i.existsSync(o);return c||a.mkdirsSync(o),i.linkSync(e,t)}t.exports={createLink:n(c),createLinkSync:l}}),iu=c((e,t)=>{let n=require(`path`),r=J(),i=ql().pathExists;function a(e,t,a){if(n.isAbsolute(e))return r.lstat(e,t=>t?(t.message=t.message.replace(`lstat`,`ensureSymlink`),a(t)):a(null,{toCwd:e,toDst:e}));{let o=n.dirname(t),s=n.join(o,e);return i(s,(t,i)=>t?a(t):i?a(null,{toCwd:s,toDst:e}):r.lstat(e,t=>t?(t.message=t.message.replace(`lstat`,`ensureSymlink`),a(t)):a(null,{toCwd:e,toDst:n.relative(o,e)})))}}function o(e,t){let i;if(n.isAbsolute(e)){if(i=r.existsSync(e),!i)throw Error(`absolute srcpath does not exist`);return{toCwd:e,toDst:e}}else{let a=n.dirname(t),o=n.join(a,e);if(i=r.existsSync(o),i)return{toCwd:o,toDst:e};if(i=r.existsSync(e),!i)throw Error(`relative srcpath does not exist`);return{toCwd:e,toDst:n.relative(a,e)}}}t.exports={symlinkPaths:a,symlinkPathsSync:o}}),au=c((e,t)=>{let n=J();function r(e,t,r){if(r=typeof t==`function`?t:r,t=typeof t==`function`?!1:t,t)return r(null,t);n.lstat(e,(e,n)=>{if(e)return r(null,`file`);t=n&&n.isDirectory()?`dir`:`file`,r(null,t)})}function i(e,t){let r;if(t)return t;try{r=n.lstatSync(e)}catch{return`file`}return r&&r.isDirectory()?`dir`:`file`}t.exports={symlinkType:r,symlinkTypeSync:i}}),ou=c((e,t)=>{let n=Mt().fromCallback,r=require(`path`),i=Ul(),a=Kl(),o=a.mkdirs,s=a.mkdirsSync,c=iu(),l=c.symlinkPaths,u=c.symlinkPathsSync,d=au(),f=d.symlinkType,p=d.symlinkTypeSync,m=ql().pathExists,{areIdentical:h}=Yl();function g(e,t,n,r){r=typeof n==`function`?n:r,n=typeof n==`function`?!1:n,i.lstat(t,(a,o)=>{!a&&o.isSymbolicLink()?Promise.all([i.stat(e),i.stat(t)]).then(([i,a])=>{if(h(i,a))return r(null);_(e,t,n,r)}):_(e,t,n,r)})}function _(e,t,n,a){l(e,t,(s,c)=>{if(s)return a(s);e=c.toDst,f(c.toCwd,n,(n,s)=>{if(n)return a(n);let c=r.dirname(t);m(c,(n,r)=>{if(n)return a(n);if(r)return i.symlink(e,t,s,a);o(c,n=>{if(n)return a(n);i.symlink(e,t,s,a)})})})})}function v(e,t,n){let a;try{a=i.lstatSync(t)}catch{}if(a&&a.isSymbolicLink()){let n=i.statSync(e),r=i.statSync(t);if(h(n,r))return}let o=u(e,t);e=o.toDst,n=p(o.toCwd,n);let c=r.dirname(t),l=i.existsSync(c);return l||s(c),i.symlinkSync(e,t,n)}t.exports={createSymlink:n(g),createSymlinkSync:v}}),su=c((e,t)=>{let{createFile:n,createFileSync:r}=nu(),{createLink:i,createLinkSync:a}=ru(),{createSymlink:o,createSymlinkSync:s}=ou();t.exports={createFile:n,createFileSync:r,ensureFile:n,ensureFileSync:r,createLink:i,createLinkSync:a,ensureLink:i,ensureLinkSync:a,createSymlink:o,createSymlinkSync:s,ensureSymlink:o,ensureSymlinkSync:s}}),cu=c((e,t)=>{let n=Pt();t.exports={readJson:n.readFile,readJsonSync:n.readFileSync,writeJson:n.writeFile,writeJsonSync:n.writeFileSync}}),lu=c((e,t)=>{let n=Mt().fromCallback,r=J(),i=require(`path`),a=Kl(),o=ql().pathExists;function s(e,t,n,s){typeof n==`function`&&(s=n,n=`utf8`);let c=i.dirname(e);o(c,(i,o)=>{if(i)return s(i);if(o)return r.writeFile(e,t,n,s);a.mkdirs(c,i=>{if(i)return s(i);r.writeFile(e,t,n,s)})})}function c(e,...t){let n=i.dirname(e);if(r.existsSync(n))return r.writeFileSync(e,...t);a.mkdirsSync(n),r.writeFileSync(e,...t)}t.exports={outputFile:n(s),outputFileSync:c}}),uu=c((e,t)=>{let{stringify:n}=Nt(),{outputFile:r}=lu();async function i(e,t,i={}){let a=n(t,i);await r(e,a,i)}t.exports=i}),du=c((e,t)=>{let{stringify:n}=Nt(),{outputFileSync:r}=lu();function i(e,t,i){let a=n(t,i);r(e,a,i)}t.exports=i}),fu=c((e,t)=>{let n=Mt().fromPromise,r=cu();r.outputJson=n(uu()),r.outputJsonSync=du(),r.outputJSON=r.outputJson,r.outputJSONSync=r.outputJsonSync,r.writeJSON=r.writeJson,r.writeJSONSync=r.writeJsonSync,r.readJSON=r.readJson,r.readJSONSync=r.readJsonSync,t.exports=r}),pu=c((e,t)=>{let n=J(),r=require(`path`),i=Ql().copy,a=eu().remove,o=Kl().mkdirp,s=ql().pathExists,c=Yl();function l(e,t,n,i){typeof n==`function`&&(i=n,n={}),n||={};let a=n.overwrite||n.clobber||!1;c.checkPaths(e,t,`move`,n,(n,s)=>{if(n)return i(n);let{srcStat:l,isChangingCase:f=!1}=s;c.checkParentPaths(e,l,t,`move`,n=>{if(n)return i(n);if(u(t))return d(e,t,a,f,i);o(r.dirname(t),n=>n?i(n):d(e,t,a,f,i))})})}function u(e){let t=r.dirname(e),n=r.parse(t);return n.root===t}function d(e,t,n,r,i){if(r)return f(e,t,n,i);if(n)return a(t,r=>r?i(r):f(e,t,n,i));s(t,(r,a)=>r?i(r):a?i(Error(`dest already exists.`)):f(e,t,n,i))}function f(e,t,r,i){n.rename(e,t,n=>n?n.code===`EXDEV`?p(e,t,r,i):i(n):i())}function p(e,t,n,r){let o={overwrite:n,errorOnExist:!0};i(e,t,o,t=>t?r(t):a(e,r))}t.exports=l}),mu=c((e,t)=>{let n=J(),r=require(`path`),i=Ql().copySync,a=eu().removeSync,o=Kl().mkdirpSync,s=Yl();function c(e,t,n){n||={};let i=n.overwrite||n.clobber||!1,{srcStat:a,isChangingCase:c=!1}=s.checkPathsSync(e,t,`move`,n);return s.checkParentPathsSync(e,a,t,`move`),l(t)||o(r.dirname(t)),u(e,t,i,c)}function l(e){let t=r.dirname(e),n=r.parse(t);return n.root===t}function u(e,t,r,i){if(i)return d(e,t,r);if(r)return a(t),d(e,t,r);if(n.existsSync(t))throw Error(`dest already exists.`);return d(e,t,r)}function d(e,t,r){try{n.renameSync(e,t)}catch(n){if(n.code!==`EXDEV`)throw n;return f(e,t,r)}}function f(e,t,n){let r={overwrite:n,errorOnExist:!0};return i(e,t,r),a(e)}t.exports=c}),hu=c((e,t)=>{let n=Mt().fromCallback;t.exports={move:n(pu()),moveSync:mu()}}),gu=c((e,t)=>{t.exports={...Ul(),...Ql(),...tu(),...su(),...fu(),...Kl(),...hu(),...lu(),...ql(),...eu()}}),_u=class e extends Error{type;constructor(t,n){super(t),this.name=`ConvertError`,this.type=n?.type??`unknown`,Error.captureStackTrace(this,e)}},vu=u(gu());let yu=/^(?!_)(?<manager>.+)@(?<version>.+)$/,bu=new Set([`npm`,`pnpm`,`yarn`,`bun`,`nub`]),xu=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;function Su({workspaceRoot:e}){let t=p.default.join(e,`package.json`);try{return(0,vu.readJsonSync)(t,`utf8`)}catch(t){if(t&&typeof t==`object`&&`code`in t){if(t.code===`ENOENT`)throw new _u(`no "package.json" found at ${e}`,{type:`package_json-missing`});if(t.code===`EJSONPARSE`)throw new _u(`failed to parse "package.json" at ${e}`,{type:`package_json-parse_error`})}throw Error(`unexpected error reading "package.json" at ${e}`)}}function Cu({workspaceRoot:e}){let t=Su({workspaceRoot:e}),{packageManager:n,devEngines:r}=t;if(n){try{let e=yu.exec(n);if(e){let t=e.groups?.manager;return wu(t)?t:void 0}}catch{}return}let i=Object.hasOwn(t,`devEngines`);if(i&&(!r||typeof r!=`object`||Array.isArray(r)))throw Tu("`devEngines` must be an object containing `packageManager`");if(!r||!(`packageManager`in r))return;let a=r.packageManager;if(!a||typeof a!=`object`||Array.isArray(a))throw Tu("`devEngines.packageManager` must be an object");if(Object.keys(a).length===0)throw Tu('expected `{ "name": "pnpm", "version": "9.12.3" }`');if(!(`name`in a))throw Tu("`devEngines.packageManager.name` is required");let{name:o}=a;if(typeof o!=`string`)throw Tu("`devEngines.packageManager.name` must be a string");if(o.length===0)throw Tu("`devEngines.packageManager.name` must not be empty");if(o.trim()!==o)throw Tu("`devEngines.packageManager.name` must not contain leading or trailing whitespace");if(!wu(o))throw Tu("`devEngines.packageManager.name` must be one of `npm`, `pnpm`, `yarn`, `bun`, or `nub`");if(!(`version`in a))throw Tu("`devEngines.packageManager.version` is required");let{version:s}=a;if(typeof s!=`string`)throw Tu("`devEngines.packageManager.version` must be a string");if(s.length===0)throw Tu("`devEngines.packageManager.version` must not be empty");if(s.trim()!==s)throw Tu("`devEngines.packageManager.version` must not contain leading or trailing whitespace");if(!xu.test(s)||P.default.valid(s)===null)throw Tu("`devEngines.packageManager.version` must be an exact semantic version");return o}function wu(e){return typeof e==`string`&&bu.has(e)}function Tu(e){return new _u(`Invalid \`devEngines.packageManager\` field in package.json: ${e}`,{type:`package_manager-unable_to_detect`})}function Eu(e){if(!e)return;let t=yu.exec(e),n=t?.groups?.manager;return wu(n)?n:void 0}function Du({packageJson:e,packageManager:t,version:n}){let r=P.default.valid(n)??n;delete e.packageManager;let i=e.devEngines&&typeof e.devEngines==`object`&&!Array.isArray(e.devEngines)?e.devEngines:{};e.devEngines={...i,packageManager:{name:t,version:r}}}function Ou({packageJson:e,packageManager:t}){Eu(e.packageManager)===t&&delete e.packageManager;let n=e.devEngines?.packageManager;ku(n)&&n.name===t&&delete e.devEngines?.packageManager}function ku(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&`name`in e&&wu(e.name)&&`version`in e&&typeof e.version==`string`}function Au({workspaceRoot:e}){let t=Su({workspaceRoot:e}),n=p.default.basename(e),{name:r=n,description:i}=t;return{name:r,description:i}}function ju({workspaceRoot:e}){let t=p.default.join(e,`pnpm-workspace.yaml`);if((0,vu.existsSync)(t))try{let e=_.default.load((0,vu.readFileSync)(t,`utf8`));if(e instanceof Object&&`packages`in e&&Array.isArray(e.packages))return e.packages}catch{throw new _u(`failed to parse ${t}`,{type:`pnpm-workspace_parse_error`})}return[]}function Mu({root:e,lockFile:t,workspaceConfig:n}){let r=t=>p.default.join(e,t),i={root:e,lockfile:r(t),packageJson:r(`package.json`),nodeModules:r(`node_modules`)};return n&&(i.workspaceConfig=r(n)),i}function Nu({workspaces:e}){return e?Array.isArray(e)?e:`packages`in e?e.packages??[]:[]:[]}function Pu({workspaceRoot:e,workspaceGlobs:t}){if(!t)return[];let n=t.filter(e=>e.startsWith(`!`)).map(e=>e.slice(1));return t.filter(e=>!e.startsWith(`!`)).flatMap(t=>{let r=[`${t}/package.json`];return(0,v.sync)(r,{onlyFiles:!0,absolute:!0,cwd:e,ignore:[`**/node_modules/**`,...n]})}).map(e=>{let t=p.default.dirname(e),{name:n,description:r}=Au({workspaceRoot:t});return{name:n,description:r,paths:{root:t,packageJson:e,nodeModules:p.default.join(t,`node_modules`)}}})}let Fu=[{manager:`bun`,lockfiles:[`bun.lock`,`bun.lockb`]},{manager:`pnpm`,lockfiles:[`pnpm-lock.yaml`]},{manager:`yarn`,lockfiles:[`yarn.lock`]},{manager:`npm`,lockfiles:[`package-lock.json`]}];function Iu({workspaceRoot:e}){for(let{manager:t,lockfiles:n}of Fu)if(n.some(t=>(0,vu.existsSync)(p.default.join(e,t))))return t;return`npm`}function Lu({workspaceRoot:e}){let t=Iu({workspaceRoot:e});switch(t){case`bun`:return(0,vu.existsSync)(p.default.join(e,`bun.lock`))?`bun.lock`:`bun.lockb`;case`pnpm`:return`pnpm-lock.yaml`;case`yarn`:return`yarn.lock`;case`npm`:return`package-lock.json`}}function Ru({directory:e}){let t=p.default.resolve(process.cwd(),e);return{exists:(0,vu.existsSync)(t),absolute:t}}function zu({packageManager:e,action:t,project:n}){let r=n.workspaceData.globs.length>0;return`${t===`remove`?`Removing`:`Adding`} ${e} ${r?`workspaces`:``} ${t===`remove`?`from`:`to`} ${n.name}`}function Bu({project:e}){let t=e=>{if(e.includes(`*`)){if(e.includes(`**`))return!1;let t=e.split(`/`).slice(0,-1).join(`/`);if(t.includes(`*`))return!1}return![`!`,`[`,`]`,`{`,`}`].some(t=>e.includes(t))};return e.workspaceData.globs.every(t)}function Vu({project:e,options:t}){t?.dry||(0,vu.rmSync)(e.paths.lockfile,{force:!0})}async function Hu({project:e,options:t}){if(!t?.dry&&(0,vu.existsSync)(e.paths.lockfile))try{let{stdout:t}=await(0,S.default)(`bun`,[`bun.lockb`],{stdin:`ignore`,cwd:e.paths.root,preferLocal:!0,shell:process.platform===`win32`});await(0,vu.writeFile)(p.default.join(e.paths.root,`yarn.lock`),t)}catch{}finally{(0,vu.rmSync)(e.paths.lockfile,{force:!0})}}var Uu=u(gu());function Wu({dependencyList:e,project:t,to:n}){let r=[];for(let i of t.workspaceData.workspaces){let{name:t}=i;if(e[t]){let i=e[t],a=i.startsWith(`workspace:`)?i.slice(10):i;e[t]=n.name===`pnpm`?`workspace:${a}`:a,r.push(t)}}return{dependencyList:e,updated:r}}function Gu({project:e,workspace:t,to:n,logger:r,options:i}){if([`yarn`,`npm`,`bun`].includes(n.name)&&[`yarn`,`npm`,`bun`].includes(e.packageManager))return;let a=Su({workspaceRoot:t.paths.root}),o={dependencies:[],devDependencies:[],peerDependencies:[],optionalDependencies:[]},s=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`];for(let t of s){let r=a[t];if(r){let{updated:i,dependencyList:s}=Wu({dependencyList:r,project:e,to:n});a[t]=s,o[t]=i}}let c=e=>{let t=o[e].length;if(t>0)return`${d.default.green(t.toString())} ${e}`},l=s.map(c).filter(Boolean),u=`./${p.default.relative(e.paths.root,t.paths.packageJson)}`;if(l.length>=1){let e=`updating`;for(let[t,n]of l.entries())l.length===1?e+=` ${n} in ${u}`:t===l.length-1?e+=`and ${n} in ${u}`:e+=` ${n}, `;r.workspaceStep(e)}else r.workspaceStep(`no workspace dependencies found in ${u}`);i?.dry||Uu.default.writeJSONSync(t.paths.packageJson,a,{spaces:2})}var Ku=u(gu());let qu={name:`npm`,lock:`package-lock.json`};async function Ju(e){let t=p.default.join(e.workspaceRoot,qu.lock),n=Cu({workspaceRoot:e.workspaceRoot});return Ku.default.existsSync(t)||n===qu.name}async function Yu(e){let t=await Ju(e);if(!t)throw new _u(`Not an npm project`,{type:`package_manager-unexpected`});let n=Su(e),{name:r,description:i}=Au(e),a=Nu({workspaces:n.workspaces});return{name:r,description:i,packageManager:qu.name,paths:Mu({root:e.workspaceRoot,lockFile:qu.lock}),workspaceData:{globs:a,workspaces:Pu({workspaceGlobs:a,...e})}}}async function Xu(e){let{project:t,options:n,to:r,logger:i}=e,a=t.workspaceData.globs.length>0;i.mainStep(zu({packageManager:qu.name,action:`create`,project:t}));let o=Su({workspaceRoot:t.paths.root});if(i.rootHeader(),i.rootStep(`adding "devEngines.packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),Du({packageJson:o,packageManager:r.name,version:r.version}),a){i.rootStep(`adding "workspaces" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),o.workspaces=t.workspaceData.globs,n?.dry||Ku.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Gu({workspace:{name:`root`,paths:t.paths},project:t,to:r,logger:i,options:n}),i.workspaceHeader();for(let e of t.workspaceData.workspaces)Gu({workspace:e,project:t,to:r,logger:i,options:n})}else n?.dry||Ku.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function Zu(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(zu({packageManager:qu.name,action:`remove`,project:t}));let a=Su({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing ${qu.name} package manager declarations in ${t.name} root "package.json"`),Ou({packageJson:a,packageManager:qu.name}),!r?.dry){Ku.default.writeJSONSync(t.paths.packageJson,a,{spaces:2});let e=[t.paths.nodeModules,...t.workspaceData.workspaces.map(e=>e.paths.nodeModules)];try{n.subStep(`removing "node_modules"`),await Promise.all(e.map(e=>Ku.default.rm(e,{recursive:!0,force:!0})))}catch{throw new _u(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function Qu(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Ku.default.rmSync(t.paths.lockfile,{force:!0})}async function $u(e){let{project:t,options:n}=e;switch(t.packageManager){case`pnpm`:Vu({project:t,options:n});break;case`bun`:Vu({project:t,options:n});break;case`npm`:break;case`yarn`:Vu({project:t,options:n});break;case`nub`:Vu({project:t,options:n});break}}let ed={detect:Ju,read:Yu,create:Xu,remove:Zu,clean:Qu,convertLock:$u};var td=u(gu());let nd={name:`pnpm`,lock:`pnpm-lock.yaml`};async function rd(e){let t=p.default.join(e.workspaceRoot,nd.lock),n=p.default.join(e.workspaceRoot,`pnpm-workspace.yaml`),r=Cu({workspaceRoot:e.workspaceRoot});return td.default.existsSync(t)||td.default.existsSync(n)||r===nd.name}async function id(e){let t=await rd(e);if(!t)throw new _u(`Not a pnpm project`,{type:`package_manager-unexpected`});let{name:n,description:r}=Au(e);return{name:n,description:r,packageManager:nd.name,paths:Mu({root:e.workspaceRoot,lockFile:nd.lock,workspaceConfig:`pnpm-workspace.yaml`}),workspaceData:{globs:ju(e),workspaces:Pu({workspaceGlobs:ju(e),...e})}}}async function ad(e){let{project:t,to:n,logger:r,options:i}=e,a=t.workspaceData.globs.length>0;r.mainStep(zu({action:`create`,packageManager:nd.name,project:t}));let o=Su({workspaceRoot:t.paths.root});if(r.rootHeader(),Du({packageJson:o,packageManager:n.name,version:n.version}),r.rootStep(`adding "devEngines.packageManager" field to ${t.name} root "package.json"`),i?.dry||(td.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),a&&(r.rootStep(`adding "pnpm-workspace.yaml"`),td.default.writeFileSync(p.default.join(t.paths.root,`pnpm-workspace.yaml`),`packages:\n${t.workspaceData.globs.map(e=>` - "${e}"`).join(`
77
77
  `)}`))),a){Gu({workspace:{name:`root`,paths:t.paths},project:t,to:n,logger:r,options:i}),r.workspaceHeader();for(let e of t.workspaceData.workspaces)Gu({workspace:e,project:t,to:n,logger:r,options:i})}}async function od(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(zu({action:`remove`,packageManager:nd.name,project:t}));let a=Su({workspaceRoot:t.paths.root});if(t.paths.workspaceConfig&&i&&(n.subStep(`removing "pnpm-workspace.yaml"`),r?.dry||td.default.rmSync(t.paths.workspaceConfig,{force:!0})),n.subStep(`removing ${nd.name} package manager declarations in ${t.name} root "package.json"`),Ou({packageJson:a,packageManager:nd.name}),!r?.dry){td.default.writeJSONSync(t.paths.packageJson,a,{spaces:2});let e=[t.paths.nodeModules,...t.workspaceData.workspaces.map(e=>e.paths.nodeModules)];try{n.subStep(`removing "node_modules"`),await Promise.all(e.map(e=>td.default.rm(e,{recursive:!0,force:!0})))}catch{throw new _u(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function sd(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||td.default.rmSync(t.paths.lockfile,{force:!0})}async function cd(e){let{project:t,options:n,logger:r}=e,i=()=>{r.subStep(`converting ${p.default.relative(t.paths.root,t.paths.lockfile)} to ${nd.lock}`)},a=async()=>{if(!n?.dry&&td.default.existsSync(t.paths.lockfile))try{await(0,S.default)(nd.name,[`import`],{stdio:`ignore`,cwd:t.paths.root,preferLocal:!0,shell:process.platform===`win32`})}catch{}finally{Vu({project:t,options:n})}};switch(t.packageManager){case`pnpm`:break;case`bun`:i(),await Hu({project:t,options:n}),await a(),td.default.rmSync(p.default.join(t.paths.root,`yarn.lock`),{force:!0});break;case`npm`:i(),await a();break;case`yarn`:i(),await a();break;case`nub`:Vu({project:t,options:n});break}}let ld={detect:rd,read:id,create:ad,remove:od,clean:sd,convertLock:cd};var ud=u(gu());let dd={name:`yarn`,lock:`yarn.lock`};async function fd(e){let t=p.default.join(e.workspaceRoot,dd.lock),n=Cu({workspaceRoot:e.workspaceRoot});return ud.default.existsSync(t)||n===dd.name}async function pd(e){let t=await fd(e);if(!t)throw new _u(`Not a yarn project`,{type:`package_manager-unexpected`});let n=Su(e),{name:r,description:i}=Au(e),a=Nu({workspaces:n.workspaces});return{name:r,description:i,packageManager:dd.name,paths:Mu({root:e.workspaceRoot,lockFile:dd.lock}),workspaceData:{globs:a,workspaces:Pu({workspaceGlobs:a,...e})}}}async function md(e){let{project:t,to:n,logger:r,options:i}=e,a=t.workspaceData.globs.length>0;r.mainStep(zu({packageManager:dd.name,action:`create`,project:t}));let o=Su({workspaceRoot:t.paths.root});if(r.rootHeader(),r.rootStep(`adding "devEngines.packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),Du({packageJson:o,packageManager:n.name,version:n.version}),a){r.rootStep(`adding "workspaces" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),o.workspaces=t.workspaceData.globs,i?.dry||ud.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Gu({workspace:{name:`root`,paths:t.paths},project:t,to:n,logger:r,options:i}),r.workspaceHeader();for(let e of t.workspaceData.workspaces)Gu({workspace:e,project:t,to:n,logger:r,options:i})}else i?.dry||ud.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function hd(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(zu({packageManager:dd.name,action:`remove`,project:t}));let a=Su({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing ${dd.name} package manager declarations in ${t.name} root "package.json"`),Ou({packageJson:a,packageManager:dd.name}),!r?.dry){ud.default.writeJSONSync(t.paths.packageJson,a,{spaces:2});let e=[t.paths.nodeModules,...t.workspaceData.workspaces.map(e=>e.paths.nodeModules)];try{n.subStep(`removing "node_modules"`),await Promise.all(e.map(e=>ud.default.rm(e,{recursive:!0,force:!0})))}catch{throw new _u(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function gd(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||ud.default.rmSync(t.paths.lockfile,{force:!0})}async function _d(e){let{project:t,options:n,logger:r}=e,i=()=>{r.subStep(`converting ${p.default.relative(t.paths.root,t.paths.lockfile)} to ${dd.lock}`)};switch(t.packageManager){case`pnpm`:Vu({project:t,options:n});break;case`bun`:i(),await Hu({project:t,options:n});break;case`npm`:Vu({project:t,options:n});break;case`yarn`:break;case`nub`:Vu({project:t,options:n});break}}let vd={detect:fd,read:pd,create:md,remove:hd,clean:gd,convertLock:_d};var yd=u(gu());let bd={name:`bun`,lock:`bun.lockb`};async function xd(e){let t=p.default.join(e.workspaceRoot,bd.lock),n=Cu({workspaceRoot:e.workspaceRoot});return yd.default.existsSync(t)||n===bd.name}async function Sd(e){let t=await xd(e);if(!t)throw new _u(`Not a bun project`,{type:`package_manager-unexpected`});let n=Su(e),{name:r,description:i}=Au(e),a=Nu({workspaces:n.workspaces});return{name:r,description:i,packageManager:bd.name,paths:Mu({root:e.workspaceRoot,lockFile:bd.lock}),workspaceData:{globs:a,workspaces:Pu({workspaceGlobs:a,...e})}}}async function Cd(e){let{project:t,to:n,logger:r,options:i}=e,a=t.workspaceData.globs.length>0;if(!Bu({project:t}))throw new _u(`Unable to convert project to bun - workspace globs unsupported`,{type:`bun-workspace_glob_error`});r.mainStep(zu({packageManager:bd.name,action:`create`,project:t}));let o=Su({workspaceRoot:t.paths.root});if(r.rootHeader(),r.rootStep(`adding "devEngines.packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),Du({packageJson:o,packageManager:n.name,version:n.version}),a){r.rootStep(`adding "workspaces" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),o.workspaces=t.workspaceData.globs,i?.dry||yd.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Gu({workspace:{name:`root`,paths:t.paths},project:t,to:n,logger:r,options:i}),r.workspaceHeader();for(let e of t.workspaceData.workspaces)Gu({workspace:e,project:t,to:n,logger:r,options:i})}else i?.dry||yd.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function wd(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(zu({packageManager:bd.name,action:`remove`,project:t}));let a=Su({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing ${bd.name} package manager declarations in ${t.name} root "package.json"`),Ou({packageJson:a,packageManager:bd.name}),!r?.dry){yd.default.writeJSONSync(t.paths.packageJson,a,{spaces:2});let e=[t.paths.nodeModules,...t.workspaceData.workspaces.map(e=>e.paths.nodeModules)];try{n.subStep(`removing "node_modules"`),await Promise.all(e.map(e=>yd.default.rm(e,{recursive:!0,force:!0})))}catch{throw new _u(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function Td(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||yd.default.rmSync(t.paths.lockfile,{force:!0})}async function Ed(e){let{project:t,options:n}=e;switch(t.packageManager){case`pnpm`:Vu({project:t,options:n});break;case`bun`:break;case`npm`:Vu({project:t,options:n});break;case`yarn`:Vu({project:t,options:n});break;case`nub`:Vu({project:t,options:n});break}}let Dd={detect:xd,read:Sd,create:Cd,remove:wd,clean:Td,convertLock:Ed};var Od=u(gu());let kd={name:`nub`,lock:`package-lock.json`},Ad={npm:ed,pnpm:ld,yarn:vd,bun:Dd};async function jd(e){let t=Cu({workspaceRoot:e.workspaceRoot});return t===kd.name}async function Md(e){let t=await jd(e);if(!t)throw new _u(`Not a nub project`,{type:`package_manager-unexpected`});let n=Iu({workspaceRoot:e.workspaceRoot}),r=Ad[n];if(await r.detect(e)){let t=await r.read(e);return{...t,packageManager:kd.name}}let i=Su(e),{name:a,description:o}=Au(e),s=Lu({workspaceRoot:e.workspaceRoot}),c=ju(e),l=n===`pnpm`&&c.length>0?c:Nu({workspaces:i.workspaces});return{name:a,description:o,packageManager:kd.name,paths:Mu({root:e.workspaceRoot,lockFile:s,workspaceConfig:n===`pnpm`&&c.length>0?`pnpm-workspace.yaml`:void 0}),workspaceData:{globs:l,workspaces:Pu({workspaceGlobs:l,...e})}}}async function Nd(e){let{project:t,options:n,to:r,logger:i}=e,a=t.workspaceData.globs.length>0;i.mainStep(zu({packageManager:kd.name,action:`create`,project:t}));let o=Su({workspaceRoot:t.paths.root});if(i.rootHeader(),i.rootStep(`adding "devEngines.packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),Du({packageJson:o,packageManager:r.name,version:r.version}),a){i.rootStep(`adding "workspaces" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),o.workspaces=t.workspaceData.globs,n?.dry||Od.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Gu({workspace:{name:`root`,paths:t.paths},project:t,to:r,logger:i,options:n}),i.workspaceHeader();for(let e of t.workspaceData.workspaces)Gu({workspace:e,project:t,to:r,logger:i,options:n})}else n?.dry||Od.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function Pd(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(zu({packageManager:kd.name,action:`remove`,project:t}));let a=Su({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing ${kd.name} package manager declarations in ${t.name} root "package.json"`),Ou({packageJson:a,packageManager:kd.name}),!r?.dry){Od.default.writeJSONSync(t.paths.packageJson,a,{spaces:2});let e=[t.paths.nodeModules,...t.workspaceData.workspaces.map(e=>e.paths.nodeModules)];try{n.subStep(`removing "node_modules"`),await Promise.all(e.map(e=>Od.default.rm(e,{recursive:!0,force:!0})))}catch{throw new _u(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function Fd(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Od.default.rmSync(t.paths.lockfile,{force:!0})}async function Id(e){let{project:t,options:n}=e;switch(t.packageManager){case`pnpm`:case`bun`:case`yarn`:Vu({project:t,options:n});break;case`npm`:case`nub`:break}}let Ld={detect:jd,read:Md,create:Nd,remove:Pd,clean:Fd,convertLock:Id},Rd={nub:Ld,pnpm:ld,yarn:vd,npm:ed,bun:Dd};async function zd({root:e}){let{exists:t,absolute:n}=Ru({directory:e});if(!t)throw new _u(`Could not find directory at ${n}. Ensure the directory exists.`,{type:`invalid_directory`});for(let{detect:e,read:t}of Object.values(Rd))if(await e({workspaceRoot:n}))return t({workspaceRoot:n});throw new _u("Could not determine package manager. Add `devEngines.packageManager` or legacy `packageManager` to `package.json`, or ensure a lockfile is present.",{type:`package_manager-unable_to_detect`})}let Bd={npm:[{name:`npm`,template:`npm`,command:`npm`,installArgs:[`install`],version:`latest`,executable:`npx`,semver:`*`,default:!0}],pnpm:[{name:`pnpm6`,template:`pnpm`,command:`pnpm`,installArgs:[`install`],version:`latest-6`,executable:`pnpx`,semver:`6.x`},{name:`pnpm`,template:`pnpm`,command:`pnpm`,installArgs:[`install`,`--fix-lockfile`],version:`latest`,executable:`pnpm dlx`,semver:`>=7`,default:!0}],yarn:[{name:`yarn`,template:`yarn`,command:`yarn`,installArgs:[`install`],version:`1.x`,executable:`npx`,semver:`<2`,default:!0},{name:`berry`,template:`berry`,command:`yarn`,installArgs:[`install`,`--no-immutable`],version:`stable`,executable:`yarn dlx`,semver:`>=2`}],bun:[{name:`bun`,template:`bun`,command:`bun`,installArgs:[`install`],version:`latest`,executable:`bunx`,semver:`^1.0.1`,default:!0}],nub:[{name:`nub`,template:`nub`,command:`nub`,installArgs:[`install`],version:`latest`,executable:`nub`,semver:`*`,default:!0}]};function Vd(e){let{version:t,name:n}=e;return t?Bd[n].find(e=>(0,P.satisfies)(t,e.semver)):Bd[n].find(e=>e.default)}async function Hd(e){let{to:t,logger:n,options:r}=e,i=n??new Hl(r),a=Vd(t);if(!a)throw new _u(`Unsupported package manager version.`,{type:`package_manager-unsupported_version`});if(i.subStep(`running "${a.command} ${a.installArgs.join(` `)}"`),!r?.dry){let t;i.interactive&&(t=(0,y.default)({text:`installing dependencies...`,spinner:{frames:i.installerFrames()}}).start());try{await(0,S.default)(a.command,a.installArgs,{cwd:e.project.paths.root,preferLocal:!0,shell:process.platform===`win32`,stdin:`ignore`}),t&&t.stop(),i.subStep(`dependencies installed`)}catch(e){throw i.subStepFailure(`failed to install dependencies`),e}}}async function Ud({project:e,convertTo:t,logger:n,options:r}){if(n.header(`Converting project from ${e.packageManager} to ${t.name}.`),!r?.ignoreUnchangedPackageManager){if(e.packageManager===t.name)throw new _u(`You are already using this package manager`,{type:`package_manager-already_in_use`});if(!t.version)throw new _u(`${t.name} is not installed, or could not be located`,{type:`package_manager-could_not_be_found`})}let i=t;r?.ignoreUnchangedPackageManager||await Rd[e.packageManager].remove({project:e,to:i,logger:n,options:r}),await Rd[i.name].create({project:e,to:i,logger:n,options:r}),n.mainStep(`Installing dependencies`),r?.skipInstall?n.subStep(d.default.yellow(`Skipping install`)):(await Rd[i.name].convertLock({project:e,to:i,logger:n,options:r}),await Hd({project:e,to:i,logger:n,options:r})),n.mainStep(`Cleaning up ${e.packageManager} workspaces`),e.packageManager!==t.name&&await Rd[e.packageManager].clean({project:e,logger:n,options:r})}Object.defineProperty(exports,`ConvertError`,{enumerable:!0,get:function(){return _u}}),Object.defineProperty(exports,`Logger`,{enumerable:!0,get:function(){return Hl}}),Object.defineProperty(exports,`MANAGERS`,{enumerable:!0,get:function(){return Rd}}),Object.defineProperty(exports,`__toESM`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`convertProject`,{enumerable:!0,get:function(){return Ud}}),Object.defineProperty(exports,`createNotifyUpdate`,{enumerable:!0,get:function(){return Bl}}),Object.defineProperty(exports,`directoryInfo`,{enumerable:!0,get:function(){return Ru}}),Object.defineProperty(exports,`getAvailablePackageManagers`,{enumerable:!0,get:function(){return jt}}),Object.defineProperty(exports,`getPackageManagerMeta`,{enumerable:!0,get:function(){return Vd}}),Object.defineProperty(exports,`getWorkspaceDetails`,{enumerable:!0,get:function(){return zd}}),Object.defineProperty(exports,`install`,{enumerable:!0,get:function(){return Hd}}),Object.defineProperty(exports,`log`,{enumerable:!0,get:function(){return gt}})}),D=e.__commonJSMin(exports=>{let t=E();async function n({root:e,to:n,options:r}){let i=new t.Logger({...r,interactive:!1}),[a,o]=await Promise.all([t.getWorkspaceDetails({root:e}),t.getAvailablePackageManagers({projectRoot:e})]);await t.convertProject({project:a,convertTo:{name:n,version:o[n]},logger:i,options:r})}exports.ConvertError=t.ConvertError,exports.MANAGERS=t.MANAGERS,exports.convert=n,exports.getPackageManagerMeta=t.getPackageManagerMeta,exports.getWorkspaceDetails=t.getWorkspaceDetails,exports.install=t.install});Object.defineProperty(exports,`require_dist`,{enumerable:!0,get:function(){return D}});
@@ -1 +1 @@
1
- Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../get-transformer-helpers-Du8w-fVE.js`),t=require(`../dist-CyuqPgem.js`),n=e.__toESM(require(`node:path`)),r=e.__toESM(require(`fs-extra`));var i=e.__toESM(t.require_dist());const a=`add-package-manager`,o="Set the `devEngines.packageManager` key in root `package.json` file",s=`1.1.0`;async function c({root:t,options:o}){let{log:s,runner:c}=e.getTransformerHelpers({transformer:a,rootPath:t,options:o}),l=n.default.join(t,`package.json`),u=r.default.readJsonSync(l);if(`packageManager`in u)return s.info(`"packageManager" already set in root "package.json"`),c.finish();if(u.devEngines?.packageManager)return s.info(`"devEngines.packageManager" already set in root "package.json"`),c.finish();s.info(`Set "devEngines.packageManager" key in root "package.json" file...`);let d;try{d=await(0,i.getWorkspaceDetails)({root:t})}catch{return c.abortTransform({reason:`Unable to determine package manager for ${t}`})}let f=await e.getAvailablePackageManagers({projectRoot:t}),{packageManager:p}=d,m=f[p];if(!m)return c.abortTransform({reason:`Unable to determine package manager version for ${t}`});let h=[{name:`package.json`,path:t,packageJson:{...u,packageJsonPath:l}}];for(let e of h){let{packageJsonPath:t,...n}=e.packageJson,r={...n,devEngines:{...n.devEngines,packageManager:{name:p,version:m}}};c.modifyFile({filePath:t,after:r})}return c.finish()}const l={name:a,description:o,introducedIn:s,transformer:c};var u=l;exports.default=u,exports.transformer=c;
1
+ Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../get-transformer-helpers-Du8w-fVE.js`),t=require(`../dist-DmBhQH4c.js`),n=e.__toESM(require(`node:path`)),r=e.__toESM(require(`fs-extra`));var i=e.__toESM(t.require_dist());const a=`add-package-manager`,o="Set the `devEngines.packageManager` key in root `package.json` file",s=`1.1.0`;async function c({root:t,options:o}){let{log:s,runner:c}=e.getTransformerHelpers({transformer:a,rootPath:t,options:o}),l=n.default.join(t,`package.json`),u=r.default.readJsonSync(l);if(`packageManager`in u)return s.info(`"packageManager" already set in root "package.json"`),c.finish();if(u.devEngines?.packageManager)return s.info(`"devEngines.packageManager" already set in root "package.json"`),c.finish();s.info(`Set "devEngines.packageManager" key in root "package.json" file...`);let d;try{d=await(0,i.getWorkspaceDetails)({root:t})}catch{return c.abortTransform({reason:`Unable to determine package manager for ${t}`})}let f=await e.getAvailablePackageManagers({projectRoot:t}),{packageManager:p}=d,m=f[p];if(!m)return c.abortTransform({reason:`Unable to determine package manager version for ${t}`});let h=[{name:`package.json`,path:t,packageJson:{...u,packageJsonPath:l}}];for(let e of h){let{packageJsonPath:t,...n}=e.packageJson,r={...n,devEngines:{...n.devEngines,packageManager:{name:p,version:m}}};c.modifyFile({filePath:t,after:r})}return c.finish()}const l={name:a,description:o,introducedIn:s,transformer:c};var u=l;exports.default=u,exports.transformer=c;
@@ -1,2 +1,2 @@
1
- Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../get-transformer-helpers-Du8w-fVE.js`),t=require(`../dist-CyuqPgem.js`),n=e.__toESM(require(`node:path`)),r=e.__toESM(require(`fs-extra`));var i=e.__toESM(t.require_dist());const a=`add-package-names`,o=`Ensure all packages have a name in their package.json`,s=`2.0.0-canary.0`;async function c(e){try{return await r.default.readJson(e)}catch{return null}}function l({pkgPath:e,pkgName:t}){let r=``,i=t;if(t&&t.startsWith(`@`)&&t.includes(`/`)){let e=t.split(`/`);r=`${e[0]}/`,i=e[1]}let a=n.default.basename(n.default.dirname(e));return t?`${r}${a}-${i}`:`${r}${a}`}async function u({root:t,options:r}){let{log:o,runner:s}=e.getTransformerHelpers({transformer:a,rootPath:t,options:r});o.info(`Validating that each package has a unique "name"...`);let u;try{u=await(0,i.getWorkspaceDetails)({root:t})}catch{return s.abortTransform({reason:`Unable to determine package manager for ${t}`})}let d=[u.paths.packageJson],f=[c(u.paths.packageJson)];for(let e of u.workspaceData.workspaces){let t=e.paths.packageJson;d.push(t),f.push(c(t))}let p=await Promise.all(f),m=Object.fromEntries(d.map((e,t)=>[e,p[t]])),h=new Map;for(let[e,t]of Object.entries(m))if(t?.name){let n=h.get(t.name)||[];n.push(e),h.set(t.name,n)}let g=[...h.entries()].filter(([,e])=>e.length>1);if(g.length>0){let e=g.map(([e,r])=>{let i=r.map(e=>n.default.relative(t,e));return` - "${e}" found in: ${i.join(`, `)}`});return s.abortTransform({reason:`Found packages with duplicate "name" fields:\n${e.join(`
1
+ Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../get-transformer-helpers-Du8w-fVE.js`),t=require(`../dist-DmBhQH4c.js`),n=e.__toESM(require(`node:path`)),r=e.__toESM(require(`fs-extra`));var i=e.__toESM(t.require_dist());const a=`add-package-names`,o=`Ensure all packages have a name in their package.json`,s=`2.0.0-canary.0`;async function c(e){try{return await r.default.readJson(e)}catch{return null}}function l({pkgPath:e,pkgName:t}){let r=``,i=t;if(t&&t.startsWith(`@`)&&t.includes(`/`)){let e=t.split(`/`);r=`${e[0]}/`,i=e[1]}let a=n.default.basename(n.default.dirname(e));return t?`${r}${a}-${i}`:`${r}${a}`}async function u({root:t,options:r}){let{log:o,runner:s}=e.getTransformerHelpers({transformer:a,rootPath:t,options:r});o.info(`Validating that each package has a unique "name"...`);let u;try{u=await(0,i.getWorkspaceDetails)({root:t})}catch{return s.abortTransform({reason:`Unable to determine package manager for ${t}`})}let d=[u.paths.packageJson],f=[c(u.paths.packageJson)];for(let e of u.workspaceData.workspaces){let t=e.paths.packageJson;d.push(t),f.push(c(t))}let p=await Promise.all(f),m=Object.fromEntries(d.map((e,t)=>[e,p[t]])),h=new Map;for(let[e,t]of Object.entries(m))if(t?.name){let n=h.get(t.name)||[];n.push(e),h.set(t.name,n)}let g=[...h.entries()].filter(([,e])=>e.length>1);if(g.length>0){let e=g.map(([e,r])=>{let i=r.map(e=>n.default.relative(t,e));return` - "${e}" found in: ${i.join(`, `)}`});return s.abortTransform({reason:`Found packages with duplicate "name" fields:\n${e.join(`
2
2
  `)}\nPlease resolve these duplicates manually and re-run the codemod.`})}let _=new Set(h.keys());for(let[e,t]of Object.entries(m))if(t&&!t.name){let n=l({pkgPath:e,pkgName:void 0});s.modifyFile({filePath:e,after:{...t,name:n}}),_.add(n)}return s.finish()}const d={name:a,description:o,introducedIn:s,transformer:u};var f=d;exports.default=f,exports.getNewPkgName=l,exports.transformer=u;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@turbo/codemod",
3
- "version": "2.10.3-canary.1",
3
+ "version": "2.10.3-canary.2",
4
4
  "description": "Provides Codemod transformations to help upgrade your Turborepo codebase when a feature is deprecated.",
5
5
  "homepage": "https://turborepo.dev",
6
6
  "bugs": {
@@ -49,11 +49,11 @@
49
49
  "ts-jest": "29.4.9",
50
50
  "tsdown": "0.12.0",
51
51
  "typescript": "5.5.4",
52
- "@turbo/test-utils": "0.0.0",
53
52
  "@turbo/tsconfig": "0.0.0",
54
- "@turbo/types": "2.10.3-canary.1",
55
- "@turbo/utils": "0.0.0",
56
- "@turbo/workspaces": "2.10.3-canary.1"
53
+ "@turbo/test-utils": "0.0.0",
54
+ "@turbo/types": "2.10.3-canary.2",
55
+ "@turbo/workspaces": "2.10.3-canary.2",
56
+ "@turbo/utils": "0.0.0"
57
57
  },
58
58
  "scripts": {
59
59
  "build": "tsdown",