@turbo/codemod 2.10.3-canary.6 → 2.10.3-canary.7

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-C8oRHe5s.js`),t=require(`./dist-CrwgzjLi.js`),n=require(`./update-versioned-schema-json-si-7fuo2.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.6`,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-C8oRHe5s.js`),t=require(`./dist-DZpB86vl.js`),n=require(`./update-versioned-schema-json-si-7fuo2.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.7`,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`;case`aube`:return`aube 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`]);case`aube`:return a([`aube`,`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`;case`aube`:return`aube 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(`
@@ -74,4 +74,4 @@ ${e.format(t)}
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}),$l=c((e,t)=>{let n=Y(),r=require(`path`),i=Jl().mkdirsSync,a=Xl().utimesMillisSync,o=Zl();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
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}),eu=c((e,t)=>{let n=Nt().fromCallback;t.exports={copy:n(Ql()),copySync:$l()}}),tu=c((e,t)=>{let n=Y(),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}),nu=c((e,t)=>{let n=Y(),r=Nt().fromCallback,i=tu();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}}),ru=c((e,t)=>{let n=Nt().fromPromise,r=Gl(),i=require(`path`),a=Jl(),o=nu(),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}}),iu=c((e,t)=>{let n=Nt().fromCallback,r=require(`path`),i=Y(),a=Jl();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}}),au=c((e,t)=>{let n=Nt().fromCallback,r=require(`path`),i=Y(),a=Jl(),o=Yl().pathExists,{areIdentical:s}=Zl();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}}),ou=c((e,t)=>{let n=require(`path`),r=Y(),i=Yl().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}}),su=c((e,t)=>{let n=Y();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}}),cu=c((e,t)=>{let n=Nt().fromCallback,r=require(`path`),i=Gl(),a=Jl(),o=a.mkdirs,s=a.mkdirsSync,c=ou(),l=c.symlinkPaths,u=c.symlinkPathsSync,d=su(),f=d.symlinkType,p=d.symlinkTypeSync,m=Yl().pathExists,{areIdentical:h}=Zl();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}}),lu=c((e,t)=>{let{createFile:n,createFileSync:r}=iu(),{createLink:i,createLinkSync:a}=au(),{createSymlink:o,createSymlinkSync:s}=cu();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}}),uu=c((e,t)=>{let n=Ft();t.exports={readJson:n.readFile,readJsonSync:n.readFileSync,writeJson:n.writeFile,writeJsonSync:n.writeFileSync}}),du=c((e,t)=>{let n=Nt().fromCallback,r=Y(),i=require(`path`),a=Jl(),o=Yl().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}}),fu=c((e,t)=>{let{stringify:n}=Pt(),{outputFile:r}=du();async function i(e,t,i={}){let a=n(t,i);await r(e,a,i)}t.exports=i}),pu=c((e,t)=>{let{stringify:n}=Pt(),{outputFileSync:r}=du();function i(e,t,i){let a=n(t,i);r(e,a,i)}t.exports=i}),mu=c((e,t)=>{let n=Nt().fromPromise,r=uu();r.outputJson=n(fu()),r.outputJsonSync=pu(),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}),hu=c((e,t)=>{let n=Y(),r=require(`path`),i=eu().copy,a=nu().remove,o=Jl().mkdirp,s=Yl().pathExists,c=Zl();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}),gu=c((e,t)=>{let n=Y(),r=require(`path`),i=eu().copySync,a=nu().removeSync,o=Jl().mkdirpSync,s=Zl();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}),_u=c((e,t)=>{let n=Nt().fromCallback;t.exports={move:n(hu()),moveSync:gu()}}),vu=c((e,t)=>{t.exports={...Gl(),...eu(),...ru(),...lu(),...mu(),...Jl(),..._u(),...du(),...Yl(),...nu()}}),yu=class e extends Error{type;constructor(t,n){super(t),this.name=`ConvertError`,this.type=n?.type??`unknown`,Error.captureStackTrace(this,e)}},bu=u(vu());let xu=/^(?!_)(?<manager>.+)@(?<version>.+)$/,Su=new Set([`npm`,`pnpm`,`yarn`,`bun`,`nub`,`aube`]),Cu=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;function wu({workspaceRoot:e}){let t=p.default.join(e,`package.json`);try{return(0,bu.readJsonSync)(t,`utf8`)}catch(t){if(t&&typeof t==`object`&&`code`in t){if(t.code===`ENOENT`)throw new yu(`no "package.json" found at ${e}`,{type:`package_json-missing`});if(t.code===`EJSONPARSE`)throw new yu(`failed to parse "package.json" at ${e}`,{type:`package_json-parse_error`})}throw Error(`unexpected error reading "package.json" at ${e}`)}}function Tu({workspaceRoot:e}){let t=wu({workspaceRoot:e}),{packageManager:n,devEngines:r}=t;if(n){try{let e=xu.exec(n);if(e){let t=e.groups?.manager;return Eu(t)?t:void 0}}catch{}return}let i=Object.hasOwn(t,`devEngines`);if(i&&(!r||typeof r!=`object`||Array.isArray(r)))throw Du("`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 Du("`devEngines.packageManager` must be an object");if(Object.keys(a).length===0)throw Du('expected `{ "name": "pnpm", "version": "9.12.3" }`');if(!(`name`in a))throw Du("`devEngines.packageManager.name` is required");let{name:o}=a;if(typeof o!=`string`)throw Du("`devEngines.packageManager.name` must be a string");if(o.length===0)throw Du("`devEngines.packageManager.name` must not be empty");if(o.trim()!==o)throw Du("`devEngines.packageManager.name` must not contain leading or trailing whitespace");if(!Eu(o))throw Du("`devEngines.packageManager.name` must be one of `npm`, `pnpm`, `yarn`, `bun`, `nub`, or `aube`");if(!(`version`in a))throw Du("`devEngines.packageManager.version` is required");let{version:s}=a;if(typeof s!=`string`)throw Du("`devEngines.packageManager.version` must be a string");if(s.length===0)throw Du("`devEngines.packageManager.version` must not be empty");if(s.trim()!==s)throw Du("`devEngines.packageManager.version` must not contain leading or trailing whitespace");if(!Cu.test(s)||P.default.valid(s)===null)throw Du("`devEngines.packageManager.version` must be an exact semantic version");return o}function Eu(e){return typeof e==`string`&&Su.has(e)}function Du(e){return new yu(`Invalid \`devEngines.packageManager\` field in package.json: ${e}`,{type:`package_manager-unable_to_detect`})}function Ou(e){if(!e)return;let t=xu.exec(e),n=t?.groups?.manager;return Eu(n)?n:void 0}function ku({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 Au({packageJson:e,packageManager:t}){Ou(e.packageManager)===t&&delete e.packageManager;let n=e.devEngines?.packageManager;ju(n)&&n.name===t&&delete e.devEngines?.packageManager}function ju(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&`name`in e&&Eu(e.name)&&`version`in e&&typeof e.version==`string`}function Mu({workspaceRoot:e}){let t=wu({workspaceRoot:e}),n=p.default.basename(e),{name:r=n,description:i}=t;return{name:r,description:i}}function Nu({workspaceRoot:e}){return Fu({workspaceRoot:e,workspaceFileName:`pnpm-workspace.yaml`})}function Pu({workspaceRoot:e}){return Fu({workspaceRoot:e,workspaceFileName:`aube-workspace.yaml`})}function Fu({workspaceRoot:e,workspaceFileName:t}){let n=p.default.join(e,t);if((0,bu.existsSync)(n))try{let e=_.default.load((0,bu.readFileSync)(n,`utf8`));if(e instanceof Object&&`packages`in e&&Array.isArray(e.packages))return e.packages}catch{throw new yu(`failed to parse ${n}`,{type:`pnpm-workspace_parse_error`})}return[]}function Iu({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 Lu({workspaces:e}){return e?Array.isArray(e)?e:`packages`in e?e.packages??[]:[]:[]}function Ru({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}=Mu({workspaceRoot:t});return{name:n,description:r,paths:{root:t,packageJson:e,nodeModules:p.default.join(t,`node_modules`)}}})}let zu=[{manager:`bun`,lockfiles:[`bun.lock`,`bun.lockb`]},{manager:`pnpm`,lockfiles:[`aube-lock.yaml`,`pnpm-lock.yaml`]},{manager:`yarn`,lockfiles:[`yarn.lock`]},{manager:`npm`,lockfiles:[`package-lock.json`]}];function Bu({workspaceRoot:e}){for(let{manager:t,lockfiles:n}of zu)if(n.some(t=>(0,bu.existsSync)(p.default.join(e,t))))return t;return`npm`}function Vu({workspaceRoot:e}){let t=Bu({workspaceRoot:e});switch(t){case`bun`:return(0,bu.existsSync)(p.default.join(e,`bun.lock`))?`bun.lock`:`bun.lockb`;case`pnpm`:return(0,bu.existsSync)(p.default.join(e,`aube-lock.yaml`))?`aube-lock.yaml`:`pnpm-lock.yaml`;case`yarn`:return`yarn.lock`;case`npm`:return`package-lock.json`}}function Hu({directory:e}){let t=p.default.resolve(process.cwd(),e);return{exists:(0,bu.existsSync)(t),absolute:t}}function Uu({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 Wu({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 Gu({project:e,options:t}){t?.dry||(0,bu.rmSync)(e.paths.lockfile,{force:!0})}async function Ku({project:e,options:t}){if(!t?.dry&&(0,bu.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,bu.writeFile)(p.default.join(e.paths.root,`yarn.lock`),t)}catch{}finally{(0,bu.rmSync)(e.paths.lockfile,{force:!0})}}var qu=u(vu());function Ju({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 Yu({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=wu({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}=Ju({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||qu.default.writeJSONSync(t.paths.packageJson,a,{spaces:2})}var Xu=u(vu());let Zu={name:`npm`,lock:`package-lock.json`};async function Qu(e){let t=p.default.join(e.workspaceRoot,Zu.lock),n=Tu({workspaceRoot:e.workspaceRoot});return Xu.default.existsSync(t)||n===Zu.name}async function $u(e){let t=await Qu(e);if(!t)throw new yu(`Not an npm project`,{type:`package_manager-unexpected`});let n=wu(e),{name:r,description:i}=Mu(e),a=Lu({workspaces:n.workspaces});return{name:r,description:i,packageManager:Zu.name,paths:Iu({root:e.workspaceRoot,lockFile:Zu.lock}),workspaceData:{globs:a,workspaces:Ru({workspaceGlobs:a,...e})}}}async function ed(e){let{project:t,options:n,to:r,logger:i}=e,a=t.workspaceData.globs.length>0;i.mainStep(Uu({packageManager:Zu.name,action:`create`,project:t}));let o=wu({workspaceRoot:t.paths.root});if(i.rootHeader(),i.rootStep(`adding "devEngines.packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),ku({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||Xu.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Yu({workspace:{name:`root`,paths:t.paths},project:t,to:r,logger:i,options:n}),i.workspaceHeader();for(let e of t.workspaceData.workspaces)Yu({workspace:e,project:t,to:r,logger:i,options:n})}else n?.dry||Xu.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function td(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(Uu({packageManager:Zu.name,action:`remove`,project:t}));let a=wu({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing ${Zu.name} package manager declarations in ${t.name} root "package.json"`),Au({packageJson:a,packageManager:Zu.name}),!r?.dry){Xu.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=>Xu.default.rm(e,{recursive:!0,force:!0})))}catch{throw new yu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function nd(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Xu.default.rmSync(t.paths.lockfile,{force:!0})}async function rd(e){let{project:t,options:n}=e;switch(t.packageManager){case`pnpm`:Gu({project:t,options:n});break;case`bun`:Gu({project:t,options:n});break;case`npm`:break;case`yarn`:Gu({project:t,options:n});break;case`nub`:Gu({project:t,options:n});break;case`aube`:Gu({project:t,options:n});break}}let id={detect:Qu,read:$u,create:ed,remove:td,clean:nd,convertLock:rd};var ad=u(vu());let od={name:`pnpm`,lock:`pnpm-lock.yaml`};async function sd(e){let t=p.default.join(e.workspaceRoot,od.lock),n=p.default.join(e.workspaceRoot,`pnpm-workspace.yaml`),r=Tu({workspaceRoot:e.workspaceRoot});return ad.default.existsSync(t)||ad.default.existsSync(n)||r===od.name}async function cd(e){let t=await sd(e);if(!t)throw new yu(`Not a pnpm project`,{type:`package_manager-unexpected`});let{name:n,description:r}=Mu(e);return{name:n,description:r,packageManager:od.name,paths:Iu({root:e.workspaceRoot,lockFile:od.lock,workspaceConfig:`pnpm-workspace.yaml`}),workspaceData:{globs:Nu(e),workspaces:Ru({workspaceGlobs:Nu(e),...e})}}}async function ld(e){let{project:t,to:n,logger:r,options:i}=e,a=t.workspaceData.globs.length>0;r.mainStep(Uu({action:`create`,packageManager:od.name,project:t}));let o=wu({workspaceRoot:t.paths.root});if(r.rootHeader(),ku({packageJson:o,packageManager:n.name,version:n.version}),r.rootStep(`adding "devEngines.packageManager" field to ${t.name} root "package.json"`),i?.dry||(ad.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),a&&(r.rootStep(`adding "pnpm-workspace.yaml"`),ad.default.writeFileSync(p.default.join(t.paths.root,`pnpm-workspace.yaml`),`packages:\n${t.workspaceData.globs.map(e=>` - "${e}"`).join(`
77
- `)}`))),a){Yu({workspace:{name:`root`,paths:t.paths},project:t,to:n,logger:r,options:i}),r.workspaceHeader();for(let e of t.workspaceData.workspaces)Yu({workspace:e,project:t,to:n,logger:r,options:i})}}async function ud(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(Uu({action:`remove`,packageManager:od.name,project:t}));let a=wu({workspaceRoot:t.paths.root});if(t.paths.workspaceConfig&&i&&(n.subStep(`removing "pnpm-workspace.yaml"`),r?.dry||ad.default.rmSync(t.paths.workspaceConfig,{force:!0})),n.subStep(`removing ${od.name} package manager declarations in ${t.name} root "package.json"`),Au({packageJson:a,packageManager:od.name}),!r?.dry){ad.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=>ad.default.rm(e,{recursive:!0,force:!0})))}catch{throw new yu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function dd(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||ad.default.rmSync(t.paths.lockfile,{force:!0})}async function fd(e){let{project:t,options:n,logger:r}=e,i=()=>{r.subStep(`converting ${p.default.relative(t.paths.root,t.paths.lockfile)} to ${od.lock}`)},a=async()=>{if(!n?.dry&&ad.default.existsSync(t.paths.lockfile))try{await(0,S.default)(od.name,[`import`],{stdio:`ignore`,cwd:t.paths.root,preferLocal:!0,shell:process.platform===`win32`})}catch{}finally{Gu({project:t,options:n})}};switch(t.packageManager){case`pnpm`:break;case`bun`:i(),await Ku({project:t,options:n}),await a(),ad.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`:Gu({project:t,options:n});break;case`aube`:Gu({project:t,options:n});break}}let pd={detect:sd,read:cd,create:ld,remove:ud,clean:dd,convertLock:fd};var md=u(vu());let hd={name:`yarn`,lock:`yarn.lock`};async function gd(e){let t=p.default.join(e.workspaceRoot,hd.lock),n=Tu({workspaceRoot:e.workspaceRoot});return md.default.existsSync(t)||n===hd.name}async function _d(e){let t=await gd(e);if(!t)throw new yu(`Not a yarn project`,{type:`package_manager-unexpected`});let n=wu(e),{name:r,description:i}=Mu(e),a=Lu({workspaces:n.workspaces});return{name:r,description:i,packageManager:hd.name,paths:Iu({root:e.workspaceRoot,lockFile:hd.lock}),workspaceData:{globs:a,workspaces:Ru({workspaceGlobs:a,...e})}}}async function vd(e){let{project:t,to:n,logger:r,options:i}=e,a=t.workspaceData.globs.length>0;r.mainStep(Uu({packageManager:hd.name,action:`create`,project:t}));let o=wu({workspaceRoot:t.paths.root});if(r.rootHeader(),r.rootStep(`adding "devEngines.packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),ku({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||md.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Yu({workspace:{name:`root`,paths:t.paths},project:t,to:n,logger:r,options:i}),r.workspaceHeader();for(let e of t.workspaceData.workspaces)Yu({workspace:e,project:t,to:n,logger:r,options:i})}else i?.dry||md.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function yd(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(Uu({packageManager:hd.name,action:`remove`,project:t}));let a=wu({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing ${hd.name} package manager declarations in ${t.name} root "package.json"`),Au({packageJson:a,packageManager:hd.name}),!r?.dry){md.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=>md.default.rm(e,{recursive:!0,force:!0})))}catch{throw new yu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function bd(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||md.default.rmSync(t.paths.lockfile,{force:!0})}async function xd(e){let{project:t,options:n,logger:r}=e,i=()=>{r.subStep(`converting ${p.default.relative(t.paths.root,t.paths.lockfile)} to ${hd.lock}`)};switch(t.packageManager){case`pnpm`:Gu({project:t,options:n});break;case`bun`:i(),await Ku({project:t,options:n});break;case`npm`:Gu({project:t,options:n});break;case`yarn`:break;case`nub`:Gu({project:t,options:n});break;case`aube`:Gu({project:t,options:n});break}}let Sd={detect:gd,read:_d,create:vd,remove:yd,clean:bd,convertLock:xd};var Cd=u(vu());let wd={name:`bun`,lock:`bun.lockb`};async function Td(e){let t=p.default.join(e.workspaceRoot,wd.lock),n=Tu({workspaceRoot:e.workspaceRoot});return Cd.default.existsSync(t)||n===wd.name}async function Ed(e){let t=await Td(e);if(!t)throw new yu(`Not a bun project`,{type:`package_manager-unexpected`});let n=wu(e),{name:r,description:i}=Mu(e),a=Lu({workspaces:n.workspaces});return{name:r,description:i,packageManager:wd.name,paths:Iu({root:e.workspaceRoot,lockFile:wd.lock}),workspaceData:{globs:a,workspaces:Ru({workspaceGlobs:a,...e})}}}async function Dd(e){let{project:t,to:n,logger:r,options:i}=e,a=t.workspaceData.globs.length>0;if(!Wu({project:t}))throw new yu(`Unable to convert project to bun - workspace globs unsupported`,{type:`bun-workspace_glob_error`});r.mainStep(Uu({packageManager:wd.name,action:`create`,project:t}));let o=wu({workspaceRoot:t.paths.root});if(r.rootHeader(),r.rootStep(`adding "devEngines.packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),ku({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||Cd.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Yu({workspace:{name:`root`,paths:t.paths},project:t,to:n,logger:r,options:i}),r.workspaceHeader();for(let e of t.workspaceData.workspaces)Yu({workspace:e,project:t,to:n,logger:r,options:i})}else i?.dry||Cd.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function Od(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(Uu({packageManager:wd.name,action:`remove`,project:t}));let a=wu({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing ${wd.name} package manager declarations in ${t.name} root "package.json"`),Au({packageJson:a,packageManager:wd.name}),!r?.dry){Cd.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=>Cd.default.rm(e,{recursive:!0,force:!0})))}catch{throw new yu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function kd(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Cd.default.rmSync(t.paths.lockfile,{force:!0})}async function Ad(e){let{project:t,options:n}=e;switch(t.packageManager){case`pnpm`:Gu({project:t,options:n});break;case`bun`:break;case`npm`:Gu({project:t,options:n});break;case`yarn`:Gu({project:t,options:n});break;case`nub`:Gu({project:t,options:n});break;case`aube`:Gu({project:t,options:n});break}}let jd={detect:Td,read:Ed,create:Dd,remove:Od,clean:kd,convertLock:Ad};var Md=u(vu());let Nd={name:`aube`,lock:`package-lock.json`},Pd={npm:id,pnpm:pd,yarn:Sd,bun:jd};async function Fd(e){return Tu({workspaceRoot:e.workspaceRoot})===Nd.name}async function Id(e){if(!await Fd(e))throw new yu(`Not an aube project`,{type:`package_manager-unexpected`});let t=Bu({workspaceRoot:e.workspaceRoot}),n=Pd[t];if(await n.detect(e)){let t=await n.read(e);return{...t,packageManager:Nd.name}}let r=wu(e),{name:i,description:a}=Mu(e),o=Vu({workspaceRoot:e.workspaceRoot}),s=Pu(e),c,l=Lu({workspaces:r.workspaces});return s.length>0&&(c=`aube-workspace.yaml`,l=s),{name:i,description:a,packageManager:Nd.name,paths:Iu({root:e.workspaceRoot,lockFile:o,workspaceConfig:c}),workspaceData:{globs:l,workspaces:Ru({workspaceGlobs:l,...e})}}}async function Ld(e){let{project:t,options:n,to:r,logger:i}=e,a=t.workspaceData.globs.length>0;i.mainStep(Uu({packageManager:Nd.name,action:`create`,project:t}));let o=wu({workspaceRoot:t.paths.root});if(i.rootHeader(),i.rootStep(`adding "devEngines.packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),ku({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||Md.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Yu({workspace:{name:`root`,paths:t.paths},project:t,to:r,logger:i,options:n}),i.workspaceHeader();for(let e of t.workspaceData.workspaces)Yu({workspace:e,project:t,to:r,logger:i,options:n})}else n?.dry||Md.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function Rd(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(Uu({packageManager:Nd.name,action:`remove`,project:t}));let a=wu({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing ${Nd.name} package manager declarations in ${t.name} root "package.json"`),Au({packageJson:a,packageManager:Nd.name}),!r?.dry){Md.default.writeJSONSync(t.paths.packageJson,a,{spaces:2});let e=[t.paths.nodeModules,...t.workspaceData.workspaces.map(e=>e.paths.nodeModules)];await Promise.all(e.map(e=>Md.default.rm(e,{recursive:!0,force:!0})))}}async function zd(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Md.default.rmSync(t.paths.lockfile,{force:!0})}async function Bd(e){let{project:t,options:n}=e;switch(t.packageManager){case`pnpm`:case`bun`:case`yarn`:Gu({project:t,options:n});break;case`npm`:case`nub`:case`aube`:break}}let Vd={detect:Fd,read:Id,create:Ld,remove:Rd,clean:zd,convertLock:Bd};var Hd=u(vu());let Ud={name:`nub`,lock:`package-lock.json`},Wd={npm:id,pnpm:pd,yarn:Sd,bun:jd};async function Gd(e){let t=Tu({workspaceRoot:e.workspaceRoot});return t===Ud.name}async function Kd(e){let t=await Gd(e);if(!t)throw new yu(`Not a nub project`,{type:`package_manager-unexpected`});let n=Bu({workspaceRoot:e.workspaceRoot}),r=Wd[n];if(await r.detect(e)){let t=await r.read(e);return{...t,packageManager:Ud.name}}let i=wu(e),{name:a,description:o}=Mu(e),s=Vu({workspaceRoot:e.workspaceRoot}),c=Nu(e),l=n===`pnpm`&&c.length>0?c:Lu({workspaces:i.workspaces});return{name:a,description:o,packageManager:Ud.name,paths:Iu({root:e.workspaceRoot,lockFile:s,workspaceConfig:n===`pnpm`&&c.length>0?`pnpm-workspace.yaml`:void 0}),workspaceData:{globs:l,workspaces:Ru({workspaceGlobs:l,...e})}}}async function qd(e){let{project:t,options:n,to:r,logger:i}=e,a=t.workspaceData.globs.length>0;i.mainStep(Uu({packageManager:Ud.name,action:`create`,project:t}));let o=wu({workspaceRoot:t.paths.root});if(i.rootHeader(),i.rootStep(`adding "devEngines.packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),ku({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||Hd.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Yu({workspace:{name:`root`,paths:t.paths},project:t,to:r,logger:i,options:n}),i.workspaceHeader();for(let e of t.workspaceData.workspaces)Yu({workspace:e,project:t,to:r,logger:i,options:n})}else n?.dry||Hd.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function Jd(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(Uu({packageManager:Ud.name,action:`remove`,project:t}));let a=wu({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing ${Ud.name} package manager declarations in ${t.name} root "package.json"`),Au({packageJson:a,packageManager:Ud.name}),!r?.dry){Hd.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=>Hd.default.rm(e,{recursive:!0,force:!0})))}catch{throw new yu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function Yd(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Hd.default.rmSync(t.paths.lockfile,{force:!0})}async function Xd(e){let{project:t,options:n}=e;switch(t.packageManager){case`pnpm`:case`bun`:case`yarn`:Gu({project:t,options:n});break;case`npm`:case`nub`:break;case`aube`:break}}let Zd={detect:Gd,read:Kd,create:qd,remove:Jd,clean:Yd,convertLock:Xd},Qd={aube:Vd,nub:Zd,pnpm:pd,yarn:Sd,npm:id,bun:jd};async function $d({root:e}){let{exists:t,absolute:n}=Hu({directory:e});if(!t)throw new yu(`Could not find directory at ${n}. Ensure the directory exists.`,{type:`invalid_directory`});for(let{detect:e,read:t}of Object.values(Qd))if(await e({workspaceRoot:n}))return t({workspaceRoot:n});throw new yu("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 ef={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}],aube:[{name:`aube`,template:`aube`,command:`aube`,installArgs:[`install`],version:`latest`,executable:`aube`,semver:`*`,default:!0}]};function tf(e){let{version:t,name:n}=e;return t?ef[n].find(e=>(0,P.satisfies)(t,e.semver)):ef[n].find(e=>e.default)}async function nf(e){let{to:t,logger:n,options:r}=e,i=n??new Wl(r),a=tf(t);if(!a)throw new yu(`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 rf({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 yu(`You are already using this package manager`,{type:`package_manager-already_in_use`});if(!t.version)throw new yu(`${t.name} is not installed, or could not be located`,{type:`package_manager-could_not_be_found`})}let i=t;r?.ignoreUnchangedPackageManager||await Qd[e.packageManager].remove({project:e,to:i,logger:n,options:r}),await Qd[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 Qd[i.name].convertLock({project:e,to:i,logger:n,options:r}),await nf({project:e,to:i,logger:n,options:r})),n.mainStep(`Cleaning up ${e.packageManager} workspaces`),e.packageManager!==t.name&&await Qd[e.packageManager].clean({project:e,logger:n,options:r})}Object.defineProperty(exports,`ConvertError`,{enumerable:!0,get:function(){return yu}}),Object.defineProperty(exports,`Logger`,{enumerable:!0,get:function(){return Wl}}),Object.defineProperty(exports,`MANAGERS`,{enumerable:!0,get:function(){return Qd}}),Object.defineProperty(exports,`__toESM`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`convertProject`,{enumerable:!0,get:function(){return rf}}),Object.defineProperty(exports,`createNotifyUpdate`,{enumerable:!0,get:function(){return Hl}}),Object.defineProperty(exports,`directoryInfo`,{enumerable:!0,get:function(){return Hu}}),Object.defineProperty(exports,`getAvailablePackageManagers`,{enumerable:!0,get:function(){return Mt}}),Object.defineProperty(exports,`getPackageManagerMeta`,{enumerable:!0,get:function(){return tf}}),Object.defineProperty(exports,`getWorkspaceDetails`,{enumerable:!0,get:function(){return $d}}),Object.defineProperty(exports,`install`,{enumerable:!0,get:function(){return nf}}),Object.defineProperty(exports,`log`,{enumerable:!0,get:function(){return ht}})}),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}});
77
+ `)}`))),a){Yu({workspace:{name:`root`,paths:t.paths},project:t,to:n,logger:r,options:i}),r.workspaceHeader();for(let e of t.workspaceData.workspaces)Yu({workspace:e,project:t,to:n,logger:r,options:i})}}async function ud(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(Uu({action:`remove`,packageManager:od.name,project:t}));let a=wu({workspaceRoot:t.paths.root});if(t.paths.workspaceConfig&&i&&(n.subStep(`removing "pnpm-workspace.yaml"`),r?.dry||ad.default.rmSync(t.paths.workspaceConfig,{force:!0})),n.subStep(`removing ${od.name} package manager declarations in ${t.name} root "package.json"`),Au({packageJson:a,packageManager:od.name}),!r?.dry){ad.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=>ad.default.rm(e,{recursive:!0,force:!0})))}catch{throw new yu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function dd(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||ad.default.rmSync(t.paths.lockfile,{force:!0})}async function fd(e){let{project:t,options:n,logger:r}=e,i=()=>{r.subStep(`converting ${p.default.relative(t.paths.root,t.paths.lockfile)} to ${od.lock}`)},a=async()=>{if(!n?.dry&&ad.default.existsSync(t.paths.lockfile))try{await(0,S.default)(od.name,[`import`],{stdio:`ignore`,cwd:t.paths.root,preferLocal:!0,shell:process.platform===`win32`})}catch{}finally{Gu({project:t,options:n})}};switch(t.packageManager){case`pnpm`:break;case`bun`:i(),await Ku({project:t,options:n}),await a(),ad.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`:Gu({project:t,options:n});break;case`aube`:Gu({project:t,options:n});break}}let pd={detect:sd,read:cd,create:ld,remove:ud,clean:dd,convertLock:fd};var md=u(vu());let hd={name:`yarn`,lock:`yarn.lock`};async function gd(e){let t=p.default.join(e.workspaceRoot,hd.lock),n=Tu({workspaceRoot:e.workspaceRoot});return md.default.existsSync(t)||n===hd.name}async function _d(e){let t=await gd(e);if(!t)throw new yu(`Not a yarn project`,{type:`package_manager-unexpected`});let n=wu(e),{name:r,description:i}=Mu(e),a=Lu({workspaces:n.workspaces});return{name:r,description:i,packageManager:hd.name,paths:Iu({root:e.workspaceRoot,lockFile:hd.lock}),workspaceData:{globs:a,workspaces:Ru({workspaceGlobs:a,...e})}}}async function vd(e){let{project:t,to:n,logger:r,options:i}=e,a=t.workspaceData.globs.length>0;r.mainStep(Uu({packageManager:hd.name,action:`create`,project:t}));let o=wu({workspaceRoot:t.paths.root});if(r.rootHeader(),r.rootStep(`adding "devEngines.packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),ku({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||md.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Yu({workspace:{name:`root`,paths:t.paths},project:t,to:n,logger:r,options:i}),r.workspaceHeader();for(let e of t.workspaceData.workspaces)Yu({workspace:e,project:t,to:n,logger:r,options:i})}else i?.dry||md.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function yd(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(Uu({packageManager:hd.name,action:`remove`,project:t}));let a=wu({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing ${hd.name} package manager declarations in ${t.name} root "package.json"`),Au({packageJson:a,packageManager:hd.name}),!r?.dry){md.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=>md.default.rm(e,{recursive:!0,force:!0})))}catch{throw new yu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function bd(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||md.default.rmSync(t.paths.lockfile,{force:!0})}async function xd(e){let{project:t,options:n,logger:r}=e,i=()=>{r.subStep(`converting ${p.default.relative(t.paths.root,t.paths.lockfile)} to ${hd.lock}`)};switch(t.packageManager){case`pnpm`:Gu({project:t,options:n});break;case`bun`:i(),await Ku({project:t,options:n});break;case`npm`:Gu({project:t,options:n});break;case`yarn`:break;case`nub`:Gu({project:t,options:n});break;case`aube`:Gu({project:t,options:n});break}}let Sd={detect:gd,read:_d,create:vd,remove:yd,clean:bd,convertLock:xd};var Cd=u(vu());let wd={name:`bun`,lock:`bun.lockb`};async function Td(e){let t=p.default.join(e.workspaceRoot,wd.lock),n=Tu({workspaceRoot:e.workspaceRoot});return Cd.default.existsSync(t)||n===wd.name}async function Ed(e){let t=await Td(e);if(!t)throw new yu(`Not a bun project`,{type:`package_manager-unexpected`});let n=wu(e),{name:r,description:i}=Mu(e),a=Lu({workspaces:n.workspaces});return{name:r,description:i,packageManager:wd.name,paths:Iu({root:e.workspaceRoot,lockFile:wd.lock}),workspaceData:{globs:a,workspaces:Ru({workspaceGlobs:a,...e})}}}async function Dd(e){let{project:t,to:n,logger:r,options:i}=e,a=t.workspaceData.globs.length>0;if(!Wu({project:t}))throw new yu(`Unable to convert project to bun - workspace globs unsupported`,{type:`bun-workspace_glob_error`});r.mainStep(Uu({packageManager:wd.name,action:`create`,project:t}));let o=wu({workspaceRoot:t.paths.root});if(r.rootHeader(),r.rootStep(`adding "devEngines.packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),ku({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||Cd.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Yu({workspace:{name:`root`,paths:t.paths},project:t,to:n,logger:r,options:i}),r.workspaceHeader();for(let e of t.workspaceData.workspaces)Yu({workspace:e,project:t,to:n,logger:r,options:i})}else i?.dry||Cd.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function Od(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(Uu({packageManager:wd.name,action:`remove`,project:t}));let a=wu({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing ${wd.name} package manager declarations in ${t.name} root "package.json"`),Au({packageJson:a,packageManager:wd.name}),!r?.dry){Cd.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=>Cd.default.rm(e,{recursive:!0,force:!0})))}catch{throw new yu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function kd(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Cd.default.rmSync(t.paths.lockfile,{force:!0})}async function Ad(e){let{project:t,options:n}=e;switch(t.packageManager){case`pnpm`:Gu({project:t,options:n});break;case`bun`:break;case`npm`:Gu({project:t,options:n});break;case`yarn`:Gu({project:t,options:n});break;case`nub`:Gu({project:t,options:n});break;case`aube`:Gu({project:t,options:n});break}}let jd={detect:Td,read:Ed,create:Dd,remove:Od,clean:kd,convertLock:Ad};var Md=u(vu());let Nd={name:`aube`,lock:`package-lock.json`},Pd={npm:id,pnpm:pd,yarn:Sd,bun:jd};async function Fd(e){return Tu({workspaceRoot:e.workspaceRoot})===Nd.name}async function Id(e){if(!await Fd(e))throw new yu(`Not an aube project`,{type:`package_manager-unexpected`});let t=Bu({workspaceRoot:e.workspaceRoot}),n=Pd[t];if(await n.detect(e)){let t=await n.read(e);return{...t,packageManager:Nd.name}}let r=wu(e),{name:i,description:a}=Mu(e),o=Vu({workspaceRoot:e.workspaceRoot}),s=Pu(e),c,l=Lu({workspaces:r.workspaces});return s.length>0&&(c=`aube-workspace.yaml`,l=s),{name:i,description:a,packageManager:Nd.name,paths:Iu({root:e.workspaceRoot,lockFile:o,workspaceConfig:c}),workspaceData:{globs:l,workspaces:Ru({workspaceGlobs:l,...e})}}}async function Ld(e){let{project:t,options:n,to:r,logger:i}=e,a=t.workspaceData.globs.length>0;i.mainStep(Uu({packageManager:Nd.name,action:`create`,project:t}));let o=wu({workspaceRoot:t.paths.root});if(i.rootHeader(),i.rootStep(`adding "devEngines.packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),ku({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||Md.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Yu({workspace:{name:`root`,paths:t.paths},project:t,to:r,logger:i,options:n}),i.workspaceHeader();for(let e of t.workspaceData.workspaces)Yu({workspace:e,project:t,to:r,logger:i,options:n})}else n?.dry||Md.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function Rd(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(Uu({packageManager:Nd.name,action:`remove`,project:t}));let a=wu({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing ${Nd.name} package manager declarations in ${t.name} root "package.json"`),Au({packageJson:a,packageManager:Nd.name}),!r?.dry){Md.default.writeJSONSync(t.paths.packageJson,a,{spaces:2});let e=[t.paths.nodeModules,...t.workspaceData.workspaces.map(e=>e.paths.nodeModules)];await Promise.all(e.map(e=>Md.default.rm(e,{recursive:!0,force:!0})))}}async function zd(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Md.default.rmSync(t.paths.lockfile,{force:!0})}async function Bd(e){let{project:t,options:n}=e;switch(t.packageManager){case`pnpm`:case`bun`:case`yarn`:Gu({project:t,options:n});break;case`npm`:case`nub`:case`aube`:break}}let Vd={detect:Fd,read:Id,create:Ld,remove:Rd,clean:zd,convertLock:Bd};var Hd=u(vu());let Ud={name:`nub`,lock:`package-lock.json`},Wd={npm:id,pnpm:pd,yarn:Sd,bun:jd};async function Gd(e){let t=Tu({workspaceRoot:e.workspaceRoot});return t===Ud.name}async function Kd(e){let t=await Gd(e);if(!t)throw new yu(`Not a nub project`,{type:`package_manager-unexpected`});let n=Bu({workspaceRoot:e.workspaceRoot}),r=Wd[n];if(await r.detect(e)){let t=await r.read(e);return{...t,packageManager:Ud.name}}let i=wu(e),{name:a,description:o}=Mu(e),s=Vu({workspaceRoot:e.workspaceRoot}),c=Nu(e),l=n===`pnpm`&&c.length>0?c:Lu({workspaces:i.workspaces});return{name:a,description:o,packageManager:Ud.name,paths:Iu({root:e.workspaceRoot,lockFile:s,workspaceConfig:n===`pnpm`&&c.length>0?`pnpm-workspace.yaml`:void 0}),workspaceData:{globs:l,workspaces:Ru({workspaceGlobs:l,...e})}}}async function qd(e){let{project:t,options:n,to:r,logger:i}=e,a=t.workspaceData.globs.length>0;i.mainStep(Uu({packageManager:Ud.name,action:`create`,project:t}));let o=wu({workspaceRoot:t.paths.root});if(i.rootHeader(),i.rootStep(`adding "devEngines.packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),ku({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||Hd.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Yu({workspace:{name:`root`,paths:t.paths},project:t,to:r,logger:i,options:n}),i.workspaceHeader();for(let e of t.workspaceData.workspaces)Yu({workspace:e,project:t,to:r,logger:i,options:n})}else n?.dry||Hd.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function Jd(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(Uu({packageManager:Ud.name,action:`remove`,project:t}));let a=wu({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing ${Ud.name} package manager declarations in ${t.name} root "package.json"`),Au({packageJson:a,packageManager:Ud.name}),!r?.dry){Hd.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=>Hd.default.rm(e,{recursive:!0,force:!0})))}catch{throw new yu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function Yd(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Hd.default.rmSync(t.paths.lockfile,{force:!0})}async function Xd(e){let{project:t,options:n}=e;switch(t.packageManager){case`pnpm`:case`bun`:case`yarn`:Gu({project:t,options:n});break;case`npm`:case`nub`:break;case`aube`:break}}let Zd={detect:Gd,read:Kd,create:qd,remove:Jd,clean:Yd,convertLock:Xd},Qd={aube:Vd,nub:Zd,pnpm:pd,yarn:Sd,npm:id,bun:jd};async function $d({root:e}){let{exists:t,absolute:n}=Hu({directory:e});if(!t)throw new yu(`Could not find directory at ${n}. Ensure the directory exists.`,{type:`invalid_directory`});for(let{detect:e,read:t}of Object.values(Qd))if(await e({workspaceRoot:n}))return t({workspaceRoot:n});throw new yu("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 ef={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 exec`,semver:`*`,default:!0}],aube:[{name:`aube`,template:`aube`,command:`aube`,installArgs:[`install`],version:`latest`,executable:`aube`,semver:`*`,default:!0}]};function tf(e){let{version:t,name:n}=e;return t?ef[n].find(e=>(0,P.satisfies)(t,e.semver)):ef[n].find(e=>e.default)}async function nf(e){let{to:t,logger:n,options:r}=e,i=n??new Wl(r),a=tf(t);if(!a)throw new yu(`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 rf({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 yu(`You are already using this package manager`,{type:`package_manager-already_in_use`});if(!t.version)throw new yu(`${t.name} is not installed, or could not be located`,{type:`package_manager-could_not_be_found`})}let i=t;r?.ignoreUnchangedPackageManager||await Qd[e.packageManager].remove({project:e,to:i,logger:n,options:r}),await Qd[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 Qd[i.name].convertLock({project:e,to:i,logger:n,options:r}),await nf({project:e,to:i,logger:n,options:r})),n.mainStep(`Cleaning up ${e.packageManager} workspaces`),e.packageManager!==t.name&&await Qd[e.packageManager].clean({project:e,logger:n,options:r})}Object.defineProperty(exports,`ConvertError`,{enumerable:!0,get:function(){return yu}}),Object.defineProperty(exports,`Logger`,{enumerable:!0,get:function(){return Wl}}),Object.defineProperty(exports,`MANAGERS`,{enumerable:!0,get:function(){return Qd}}),Object.defineProperty(exports,`__toESM`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`convertProject`,{enumerable:!0,get:function(){return rf}}),Object.defineProperty(exports,`createNotifyUpdate`,{enumerable:!0,get:function(){return Hl}}),Object.defineProperty(exports,`directoryInfo`,{enumerable:!0,get:function(){return Hu}}),Object.defineProperty(exports,`getAvailablePackageManagers`,{enumerable:!0,get:function(){return Mt}}),Object.defineProperty(exports,`getPackageManagerMeta`,{enumerable:!0,get:function(){return tf}}),Object.defineProperty(exports,`getWorkspaceDetails`,{enumerable:!0,get:function(){return $d}}),Object.defineProperty(exports,`install`,{enumerable:!0,get:function(){return nf}}),Object.defineProperty(exports,`log`,{enumerable:!0,get:function(){return ht}})}),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-C8oRHe5s.js`),t=require(`../dist-CrwgzjLi.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-C8oRHe5s.js`),t=require(`../dist-DZpB86vl.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-C8oRHe5s.js`),t=require(`../dist-CrwgzjLi.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-C8oRHe5s.js`),t=require(`../dist-DZpB86vl.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.6",
3
+ "version": "2.10.3-canary.7",
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": {
@@ -50,10 +50,10 @@
50
50
  "tsdown": "0.12.0",
51
51
  "typescript": "5.5.4",
52
52
  "@turbo/test-utils": "0.0.0",
53
- "@turbo/types": "2.10.3-canary.6",
54
53
  "@turbo/utils": "0.0.0",
55
54
  "@turbo/tsconfig": "0.0.0",
56
- "@turbo/workspaces": "2.10.3-canary.6"
55
+ "@turbo/workspaces": "2.10.3-canary.7",
56
+ "@turbo/types": "2.10.3-canary.7"
57
57
  },
58
58
  "scripts": {
59
59
  "build": "tsdown",