@turbo/codemod 2.9.9-canary.3 → 2.9.9
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-DvT815v2.js`),t=require(`./dist-
|
|
2
|
+
const e=require(`./get-transformer-helpers-DvT815v2.js`),t=require(`./dist-TtAxXvEs.js`),n=require(`./update-versioned-schema-json-DiNOi5VG.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.9.9`,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`}}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`])}}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`}}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(),a=A(`turbo bin`,{cwd:t.paths.root,stdio:`pipe`}),o=await e.getPackageManagersBinPaths(),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}),Hl=c((e,t)=>{let n=Y(),r=require(`path`),i=Ll().mkdirsSync,a=zl().utimesMillisSync,o=Bl();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}),Ul=c((e,t)=>{let n=St().fromCallback;t.exports={copy:n(Vl()),copySync:Hl()}}),Wl=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}),Gl=c((e,t)=>{let n=Y(),r=St().fromCallback,i=Wl();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}}),Kl=c((e,t)=>{let n=St().fromPromise,r=Pl(),i=require(`path`),a=Ll(),o=Gl(),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}}),ql=c((e,t)=>{let n=St().fromCallback,r=require(`path`),i=Y(),a=Ll();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}}),Jl=c((e,t)=>{let n=St().fromCallback,r=require(`path`),i=Y(),a=Ll(),o=Rl().pathExists,{areIdentical:s}=Bl();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}}),Yl=c((e,t)=>{let n=require(`path`),r=Y(),i=Rl().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}}),Xl=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}}),Zl=c((e,t)=>{let n=St().fromCallback,r=require(`path`),i=Pl(),a=Ll(),o=a.mkdirs,s=a.mkdirsSync,c=Yl(),l=c.symlinkPaths,u=c.symlinkPathsSync,d=Xl(),f=d.symlinkType,p=d.symlinkTypeSync,m=Rl().pathExists,{areIdentical:h}=Bl();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}}),Ql=c((e,t)=>{let{createFile:n,createFileSync:r}=ql(),{createLink:i,createLinkSync:a}=Jl(),{createSymlink:o,createSymlinkSync:s}=Zl();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}}),$l=c((e,t)=>{let n=wt();t.exports={readJson:n.readFile,readJsonSync:n.readFileSync,writeJson:n.writeFile,writeJsonSync:n.writeFileSync}}),eu=c((e,t)=>{let n=St().fromCallback,r=Y(),i=require(`path`),a=Ll(),o=Rl().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}}),tu=c((e,t)=>{let{stringify:n}=Ct(),{outputFile:r}=eu();async function i(e,t,i={}){let a=n(t,i);await r(e,a,i)}t.exports=i}),nu=c((e,t)=>{let{stringify:n}=Ct(),{outputFileSync:r}=eu();function i(e,t,i){let a=n(t,i);r(e,a,i)}t.exports=i}),ru=c((e,t)=>{let n=St().fromPromise,r=$l();r.outputJson=n(tu()),r.outputJsonSync=nu(),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}),iu=c((e,t)=>{let n=Y(),r=require(`path`),i=Ul().copy,a=Gl().remove,o=Ll().mkdirp,s=Rl().pathExists,c=Bl();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}),au=c((e,t)=>{let n=Y(),r=require(`path`),i=Ul().copySync,a=Gl().removeSync,o=Ll().mkdirpSync,s=Bl();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}),ou=c((e,t)=>{let n=St().fromCallback;t.exports={move:n(iu()),moveSync:au()}}),su=c((e,t)=>{t.exports={...Pl(),...Ul(),...Kl(),...Ql(),...ru(),...Ll(),...ou(),...eu(),...Rl(),...Gl()}}),cu=class e extends Error{type;constructor(t,n){super(t),this.name=`ConvertError`,this.type=n?.type??`unknown`,Error.captureStackTrace(this,e)}},lu=u(su());let uu=/^(?!_)(?<manager>.+)@(?<version>.+)$/;function du({workspaceRoot:e}){let t=p.default.join(e,`package.json`);try{return(0,lu.readJsonSync)(t,`utf8`)}catch(t){if(t&&typeof t==`object`&&`code`in t){if(t.code===`ENOENT`)throw new cu(`no "package.json" found at ${e}`,{type:`package_json-missing`});if(t.code===`EJSONPARSE`)throw new cu(`failed to parse "package.json" at ${e}`,{type:`package_json-parse_error`})}throw Error(`unexpected error reading "package.json" at ${e}`)}}function fu({workspaceRoot:e}){let{packageManager:t}=du({workspaceRoot:e});if(t)try{let e=uu.exec(t);if(e){let[t,n]=e;return n}}catch{}}function pu({workspaceRoot:e}){let t=du({workspaceRoot:e}),n=p.default.basename(e),{name:r=n,description:i}=t;return{name:r,description:i}}function mu({workspaceRoot:e}){let t=p.default.join(e,`pnpm-workspace.yaml`);if((0,lu.existsSync)(t))try{let e=_.default.load((0,lu.readFileSync)(t,`utf8`));if(e instanceof Object&&`packages`in e&&Array.isArray(e.packages))return e.packages}catch{throw new cu(`failed to parse ${t}`,{type:`pnpm-workspace_parse_error`})}return[]}function hu({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 gu({workspaces:e}){return e?Array.isArray(e)?e:`packages`in e?e.packages??[]:[]:[]}function _u({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}=pu({workspaceRoot:t});return{name:n,description:r,paths:{root:t,packageJson:e,nodeModules:p.default.join(t,`node_modules`)}}})}function vu({directory:e}){let t=p.default.resolve(process.cwd(),e);return{exists:(0,lu.existsSync)(t),absolute:t}}function yu({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 xu({project:e,options:t}){t?.dry||(0,lu.rmSync)(e.paths.lockfile,{force:!0})}async function Su({project:e,options:t}){if(!t?.dry&&(0,lu.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,lu.writeFile)(p.default.join(e.paths.root,`yarn.lock`),t)}catch{}finally{(0,lu.rmSync)(e.paths.lockfile,{force:!0})}}var Cu=u(su());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 Tu({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=du({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||Cu.default.writeJSONSync(t.paths.packageJson,a,{spaces:2})}var Eu=u(su());let Du={name:`pnpm`,lock:`pnpm-lock.yaml`};async function Ou(e){let t=p.default.join(e.workspaceRoot,Du.lock),n=p.default.join(e.workspaceRoot,`pnpm-workspace.yaml`),r=fu({workspaceRoot:e.workspaceRoot});return Eu.default.existsSync(t)||Eu.default.existsSync(n)||r===Du.name}async function ku(e){let t=await Ou(e);if(!t)throw new cu(`Not a pnpm project`,{type:`package_manager-unexpected`});let{name:n,description:r}=pu(e);return{name:n,description:r,packageManager:Du.name,paths:hu({root:e.workspaceRoot,lockFile:Du.lock,workspaceConfig:`pnpm-workspace.yaml`}),workspaceData:{globs:mu(e),workspaces:_u({workspaceGlobs:mu(e),...e})}}}async function Au(e){let{project:t,to:n,logger:r,options:i}=e,a=t.workspaceData.globs.length>0;r.mainStep(yu({action:`create`,packageManager:Du.name,project:t}));let o=du({workspaceRoot:t.paths.root});if(r.rootHeader(),o.packageManager=`${n.name}@${n.version}`,r.rootStep(`adding "packageManager" field to ${t.name} root "package.json"`),i?.dry||(Eu.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),a&&(r.rootStep(`adding "pnpm-workspace.yaml"`),Eu.default.writeFileSync(p.default.join(t.paths.root,`pnpm-workspace.yaml`),`packages:\n${t.workspaceData.globs.map(e=>` - "${e}"`).join(`
|
|
77
|
-
`)}`))),a){Tu({workspace:{name:`root`,paths:t.paths},project:t,to:n,logger:r,options:i}),r.workspaceHeader();for(let e of t.workspaceData.workspaces)Tu({workspace:e,project:t,to:n,logger:r,options:i})}}async function ju(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(yu({action:`remove`,packageManager:Du.name,project:t}));let a=du({workspaceRoot:t.paths.root});if(t.paths.workspaceConfig&&i&&(n.subStep(`removing "pnpm-workspace.yaml"`),r?.dry||Eu.default.rmSync(t.paths.workspaceConfig,{force:!0})),n.subStep(`removing "packageManager" field in ${t.name} root "package.json"`),delete a.packageManager,!r?.dry){Eu.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=>Eu.default.rm(e,{recursive:!0,force:!0})))}catch{throw new cu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function Mu(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Eu.default.rmSync(t.paths.lockfile,{force:!0})}async function Nu(e){let{project:t,options:n,logger:r}=e,i=()=>{r.subStep(`converting ${p.default.relative(t.paths.root,t.paths.lockfile)} to ${Du.lock}`)},a=async()=>{if(!n?.dry&&Eu.default.existsSync(t.paths.lockfile))try{await(0,S.default)(Du.name,[`import`],{stdio:`ignore`,cwd:t.paths.root,preferLocal:!0,shell:process.platform===`win32`})}catch{}finally{xu({project:t,options:n})}};switch(t.packageManager){case`pnpm`:break;case`bun`:i(),await Su({project:t,options:n}),await a(),Eu.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}}let Pu={detect:Ou,read:ku,create:Au,remove:ju,clean:Mu,convertLock:Nu};var Fu=u(su());let Iu={name:`npm`,lock:`package-lock.json`};async function Lu(e){let t=p.default.join(e.workspaceRoot,Iu.lock),n=fu({workspaceRoot:e.workspaceRoot});return Fu.default.existsSync(t)||n===Iu.name}async function Ru(e){let t=await Lu(e);if(!t)throw new cu(`Not an npm project`,{type:`package_manager-unexpected`});let n=du(e),{name:r,description:i}=pu(e),a=gu({workspaces:n.workspaces});return{name:r,description:i,packageManager:Iu.name,paths:hu({root:e.workspaceRoot,lockFile:Iu.lock}),workspaceData:{globs:a,workspaces:_u({workspaceGlobs:a,...e})}}}async function zu(e){let{project:t,options:n,to:r,logger:i}=e,a=t.workspaceData.globs.length>0;i.mainStep(yu({packageManager:Iu.name,action:`create`,project:t}));let o=du({workspaceRoot:t.paths.root});if(i.rootHeader(),i.rootStep(`adding "packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),o.packageManager=`${r.name}@${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||Fu.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Tu({workspace:{name:`root`,paths:t.paths},project:t,to:r,logger:i,options:n}),i.workspaceHeader();for(let e of t.workspaceData.workspaces)Tu({workspace:e,project:t,to:r,logger:i,options:n})}else n?.dry||Fu.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function Bu(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(yu({packageManager:Iu.name,action:`remove`,project:t}));let a=du({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing "packageManager" field in ${t.name} root "package.json"`),delete a.packageManager,!r?.dry){Fu.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=>Fu.default.rm(e,{recursive:!0,force:!0})))}catch{throw new cu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function Vu(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Fu.default.rmSync(t.paths.lockfile,{force:!0})}async function Hu(e){let{project:t,options:n}=e;switch(t.packageManager){case`pnpm`:xu({project:t,options:n});break;case`bun`:xu({project:t,options:n});break;case`npm`:break;case`yarn`:xu({project:t,options:n});break}}let Uu={detect:Lu,read:Ru,create:zu,remove:Bu,clean:Vu,convertLock:Hu};var Wu=u(su());let Gu={name:`yarn`,lock:`yarn.lock`};async function Ku(e){let t=p.default.join(e.workspaceRoot,Gu.lock),n=fu({workspaceRoot:e.workspaceRoot});return Wu.default.existsSync(t)||n===Gu.name}async function qu(e){let t=await Ku(e);if(!t)throw new cu(`Not a yarn project`,{type:`package_manager-unexpected`});let n=du(e),{name:r,description:i}=pu(e),a=gu({workspaces:n.workspaces});return{name:r,description:i,packageManager:Gu.name,paths:hu({root:e.workspaceRoot,lockFile:Gu.lock}),workspaceData:{globs:a,workspaces:_u({workspaceGlobs:a,...e})}}}async function Ju(e){let{project:t,to:n,logger:r,options:i}=e,a=t.workspaceData.globs.length>0;r.mainStep(yu({packageManager:Gu.name,action:`create`,project:t}));let o=du({workspaceRoot:t.paths.root});if(r.rootHeader(),r.rootStep(`adding "packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),o.packageManager=`${n.name}@${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||Wu.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Tu({workspace:{name:`root`,paths:t.paths},project:t,to:n,logger:r,options:i}),r.workspaceHeader();for(let e of t.workspaceData.workspaces)Tu({workspace:e,project:t,to:n,logger:r,options:i})}else i?.dry||Wu.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function Yu(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(yu({packageManager:Gu.name,action:`remove`,project:t}));let a=du({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing "packageManager" field in ${t.name} root "package.json"`),delete a.packageManager,!r?.dry){Wu.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=>Wu.default.rm(e,{recursive:!0,force:!0})))}catch{throw new cu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function Xu(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Wu.default.rmSync(t.paths.lockfile,{force:!0})}async function Zu(e){let{project:t,options:n,logger:r}=e,i=()=>{r.subStep(`converting ${p.default.relative(t.paths.root,t.paths.lockfile)} to ${Gu.lock}`)};switch(t.packageManager){case`pnpm`:xu({project:t,options:n});break;case`bun`:i(),await Su({project:t,options:n});break;case`npm`:xu({project:t,options:n});break;case`yarn`:break}}let Qu={detect:Ku,read:qu,create:Ju,remove:Yu,clean:Xu,convertLock:Zu};var $u=u(su());let ed={name:`bun`,lock:`bun.lockb`};async function td(e){let t=p.default.join(e.workspaceRoot,ed.lock),n=fu({workspaceRoot:e.workspaceRoot});return $u.default.existsSync(t)||n===ed.name}async function nd(e){let t=await td(e);if(!t)throw new cu(`Not a bun project`,{type:`package_manager-unexpected`});let n=du(e),{name:r,description:i}=pu(e),a=gu({workspaces:n.workspaces});return{name:r,description:i,packageManager:ed.name,paths:hu({root:e.workspaceRoot,lockFile:ed.lock}),workspaceData:{globs:a,workspaces:_u({workspaceGlobs:a,...e})}}}async function rd(e){let{project:t,to:n,logger:r,options:i}=e,a=t.workspaceData.globs.length>0;if(!bu({project:t}))throw new cu(`Unable to convert project to bun - workspace globs unsupported`,{type:`bun-workspace_glob_error`});r.mainStep(yu({packageManager:ed.name,action:`create`,project:t}));let o=du({workspaceRoot:t.paths.root});if(r.rootHeader(),r.rootStep(`adding "packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),o.packageManager=`${n.name}@${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||$u.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Tu({workspace:{name:`root`,paths:t.paths},project:t,to:n,logger:r,options:i}),r.workspaceHeader();for(let e of t.workspaceData.workspaces)Tu({workspace:e,project:t,to:n,logger:r,options:i})}else i?.dry||$u.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function id(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(yu({packageManager:ed.name,action:`remove`,project:t}));let a=du({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing "packageManager" field in ${t.name} root "package.json"`),delete a.packageManager,!r?.dry){$u.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=>$u.default.rm(e,{recursive:!0,force:!0})))}catch{throw new cu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function ad(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||$u.default.rmSync(t.paths.lockfile,{force:!0})}async function od(e){let{project:t,options:n}=e;switch(t.packageManager){case`pnpm`:xu({project:t,options:n});break;case`bun`:break;case`npm`:xu({project:t,options:n});break;case`yarn`:xu({project:t,options:n});break}}let sd={detect:td,read:nd,create:rd,remove:id,clean:ad,convertLock:od},cd={pnpm:Pu,yarn:Qu,npm:Uu,bun:sd};async function ld({root:e}){let{exists:t,absolute:n}=vu({directory:e});if(!t)throw new cu(`Could not find directory at ${n}. Ensure the directory exists.`,{type:`invalid_directory`});for(let{detect:e,read:t}of Object.values(cd))if(await e({workspaceRoot:n}))return t({workspaceRoot:n});throw new cu("Could not determine package manager. Add `packageManager` to `package.json` or ensure a lockfile is present.",{type:`package_manager-unable_to_detect`})}let ud={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}]};function dd(e){let{version:t,name:n}=e;return t?ud[n].find(e=>(0,P.satisfies)(t,e.semver)):ud[n].find(e=>e.default)}async function fd(e){let{to:t,logger:n,options:r}=e,i=n??new Nl(r),a=dd(t);if(!a)throw new cu(`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 pd({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 cu(`You are already using this package manager`,{type:`package_manager-already_in_use`});if(!t.version)throw new cu(`${t.name} is not installed, or could not be located`,{type:`package_manager-could_not_be_found`})}let i=t;r?.ignoreUnchangedPackageManager||await cd[e.packageManager].remove({project:e,to:i,logger:n,options:r}),await cd[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 cd[i.name].convertLock({project:e,to:i,logger:n,options:r}),await fd({project:e,to:i,logger:n,options:r})),n.mainStep(`Cleaning up ${e.packageManager} workspaces`),e.packageManager!==t.name&&await cd[e.packageManager].clean({project:e,logger:n})}Object.defineProperty(exports,`ConvertError`,{enumerable:!0,get:function(){return cu}}),Object.defineProperty(exports,`Logger`,{enumerable:!0,get:function(){return Nl}}),Object.defineProperty(exports,`MANAGERS`,{enumerable:!0,get:function(){return cd}}),Object.defineProperty(exports,`__toESM`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`convertProject`,{enumerable:!0,get:function(){return pd}}),Object.defineProperty(exports,`createNotifyUpdate`,{enumerable:!0,get:function(){return jl}}),Object.defineProperty(exports,`directoryInfo`,{enumerable:!0,get:function(){return vu}}),Object.defineProperty(exports,`getAvailablePackageManagers`,{enumerable:!0,get:function(){return xt}}),Object.defineProperty(exports,`getPackageManagerMeta`,{enumerable:!0,get:function(){return dd}}),Object.defineProperty(exports,`getWorkspaceDetails`,{enumerable:!0,get:function(){return ld}}),Object.defineProperty(exports,`install`,{enumerable:!0,get:function(){return fd}}),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()]);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){Tu({workspace:{name:`root`,paths:t.paths},project:t,to:n,logger:r,options:i}),r.workspaceHeader();for(let e of t.workspaceData.workspaces)Tu({workspace:e,project:t,to:n,logger:r,options:i})}}async function ju(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(yu({action:`remove`,packageManager:Du.name,project:t}));let a=du({workspaceRoot:t.paths.root});if(t.paths.workspaceConfig&&i&&(n.subStep(`removing "pnpm-workspace.yaml"`),r?.dry||Eu.default.rmSync(t.paths.workspaceConfig,{force:!0})),n.subStep(`removing "packageManager" field in ${t.name} root "package.json"`),delete a.packageManager,!r?.dry){Eu.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=>Eu.default.rm(e,{recursive:!0,force:!0})))}catch{throw new cu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function Mu(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Eu.default.rmSync(t.paths.lockfile,{force:!0})}async function Nu(e){let{project:t,options:n,logger:r}=e,i=()=>{r.subStep(`converting ${p.default.relative(t.paths.root,t.paths.lockfile)} to ${Du.lock}`)},a=async()=>{if(!n?.dry&&Eu.default.existsSync(t.paths.lockfile))try{await(0,S.default)(Du.name,[`import`],{stdio:`ignore`,cwd:t.paths.root,preferLocal:!0,shell:process.platform===`win32`})}catch{}finally{xu({project:t,options:n})}};switch(t.packageManager){case`pnpm`:break;case`bun`:i(),await Su({project:t,options:n}),await a(),Eu.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}}let Pu={detect:Ou,read:ku,create:Au,remove:ju,clean:Mu,convertLock:Nu};var Fu=u(su());let Iu={name:`npm`,lock:`package-lock.json`};async function Lu(e){let t=p.default.join(e.workspaceRoot,Iu.lock),n=fu({workspaceRoot:e.workspaceRoot});return Fu.default.existsSync(t)||n===Iu.name}async function Ru(e){let t=await Lu(e);if(!t)throw new cu(`Not an npm project`,{type:`package_manager-unexpected`});let n=du(e),{name:r,description:i}=pu(e),a=gu({workspaces:n.workspaces});return{name:r,description:i,packageManager:Iu.name,paths:hu({root:e.workspaceRoot,lockFile:Iu.lock}),workspaceData:{globs:a,workspaces:_u({workspaceGlobs:a,...e})}}}async function zu(e){let{project:t,options:n,to:r,logger:i}=e,a=t.workspaceData.globs.length>0;i.mainStep(yu({packageManager:Iu.name,action:`create`,project:t}));let o=du({workspaceRoot:t.paths.root});if(i.rootHeader(),i.rootStep(`adding "packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),o.packageManager=`${r.name}@${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||Fu.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Tu({workspace:{name:`root`,paths:t.paths},project:t,to:r,logger:i,options:n}),i.workspaceHeader();for(let e of t.workspaceData.workspaces)Tu({workspace:e,project:t,to:r,logger:i,options:n})}else n?.dry||Fu.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function Bu(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(yu({packageManager:Iu.name,action:`remove`,project:t}));let a=du({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing "packageManager" field in ${t.name} root "package.json"`),delete a.packageManager,!r?.dry){Fu.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=>Fu.default.rm(e,{recursive:!0,force:!0})))}catch{throw new cu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function Vu(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Fu.default.rmSync(t.paths.lockfile,{force:!0})}async function Hu(e){let{project:t,options:n}=e;switch(t.packageManager){case`pnpm`:xu({project:t,options:n});break;case`bun`:xu({project:t,options:n});break;case`npm`:break;case`yarn`:xu({project:t,options:n});break}}let Uu={detect:Lu,read:Ru,create:zu,remove:Bu,clean:Vu,convertLock:Hu};var Wu=u(su());let Gu={name:`yarn`,lock:`yarn.lock`};async function Ku(e){let t=p.default.join(e.workspaceRoot,Gu.lock),n=fu({workspaceRoot:e.workspaceRoot});return Wu.default.existsSync(t)||n===Gu.name}async function qu(e){let t=await Ku(e);if(!t)throw new cu(`Not a yarn project`,{type:`package_manager-unexpected`});let n=du(e),{name:r,description:i}=pu(e),a=gu({workspaces:n.workspaces});return{name:r,description:i,packageManager:Gu.name,paths:hu({root:e.workspaceRoot,lockFile:Gu.lock}),workspaceData:{globs:a,workspaces:_u({workspaceGlobs:a,...e})}}}async function Ju(e){let{project:t,to:n,logger:r,options:i}=e,a=t.workspaceData.globs.length>0;r.mainStep(yu({packageManager:Gu.name,action:`create`,project:t}));let o=du({workspaceRoot:t.paths.root});if(r.rootHeader(),r.rootStep(`adding "packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),o.packageManager=`${n.name}@${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||Wu.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Tu({workspace:{name:`root`,paths:t.paths},project:t,to:n,logger:r,options:i}),r.workspaceHeader();for(let e of t.workspaceData.workspaces)Tu({workspace:e,project:t,to:n,logger:r,options:i})}else i?.dry||Wu.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function Yu(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(yu({packageManager:Gu.name,action:`remove`,project:t}));let a=du({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing "packageManager" field in ${t.name} root "package.json"`),delete a.packageManager,!r?.dry){Wu.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=>Wu.default.rm(e,{recursive:!0,force:!0})))}catch{throw new cu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function Xu(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||Wu.default.rmSync(t.paths.lockfile,{force:!0})}async function Zu(e){let{project:t,options:n,logger:r}=e,i=()=>{r.subStep(`converting ${p.default.relative(t.paths.root,t.paths.lockfile)} to ${Gu.lock}`)};switch(t.packageManager){case`pnpm`:xu({project:t,options:n});break;case`bun`:i(),await Su({project:t,options:n});break;case`npm`:xu({project:t,options:n});break;case`yarn`:break}}let Qu={detect:Ku,read:qu,create:Ju,remove:Yu,clean:Xu,convertLock:Zu};var $u=u(su());let ed={name:`bun`,lock:`bun.lockb`};async function td(e){let t=p.default.join(e.workspaceRoot,ed.lock),n=fu({workspaceRoot:e.workspaceRoot});return $u.default.existsSync(t)||n===ed.name}async function nd(e){let t=await td(e);if(!t)throw new cu(`Not a bun project`,{type:`package_manager-unexpected`});let n=du(e),{name:r,description:i}=pu(e),a=gu({workspaces:n.workspaces});return{name:r,description:i,packageManager:ed.name,paths:hu({root:e.workspaceRoot,lockFile:ed.lock}),workspaceData:{globs:a,workspaces:_u({workspaceGlobs:a,...e})}}}async function rd(e){let{project:t,to:n,logger:r,options:i}=e,a=t.workspaceData.globs.length>0;if(!bu({project:t}))throw new cu(`Unable to convert project to bun - workspace globs unsupported`,{type:`bun-workspace_glob_error`});r.mainStep(yu({packageManager:ed.name,action:`create`,project:t}));let o=du({workspaceRoot:t.paths.root});if(r.rootHeader(),r.rootStep(`adding "packageManager" field to ${p.default.relative(t.paths.root,t.paths.packageJson)}`),o.packageManager=`${n.name}@${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||$u.default.writeJSONSync(t.paths.packageJson,o,{spaces:2}),Tu({workspace:{name:`root`,paths:t.paths},project:t,to:n,logger:r,options:i}),r.workspaceHeader();for(let e of t.workspaceData.workspaces)Tu({workspace:e,project:t,to:n,logger:r,options:i})}else i?.dry||$u.default.writeJSONSync(t.paths.packageJson,o,{spaces:2})}async function id(e){let{project:t,logger:n,options:r}=e,i=t.workspaceData.globs.length>0;n.mainStep(yu({packageManager:ed.name,action:`remove`,project:t}));let a=du({workspaceRoot:t.paths.root});if(i&&(n.subStep(`removing "workspaces" field in ${t.name} root "package.json"`),delete a.workspaces),n.subStep(`removing "packageManager" field in ${t.name} root "package.json"`),delete a.packageManager,!r?.dry){$u.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=>$u.default.rm(e,{recursive:!0,force:!0})))}catch{throw new cu(`Failed to remove node_modules`,{type:`error_removing_node_modules`})}}}async function ad(e){let{project:t,logger:n,options:r}=e;n.subStep(`removing ${p.default.relative(t.paths.root,t.paths.lockfile)}`),r?.dry||$u.default.rmSync(t.paths.lockfile,{force:!0})}async function od(e){let{project:t,options:n}=e;switch(t.packageManager){case`pnpm`:xu({project:t,options:n});break;case`bun`:break;case`npm`:xu({project:t,options:n});break;case`yarn`:xu({project:t,options:n});break}}let sd={detect:td,read:nd,create:rd,remove:id,clean:ad,convertLock:od},cd={pnpm:Pu,yarn:Qu,npm:Uu,bun:sd};async function ld({root:e}){let{exists:t,absolute:n}=vu({directory:e});if(!t)throw new cu(`Could not find directory at ${n}. Ensure the directory exists.`,{type:`invalid_directory`});for(let{detect:e,read:t}of Object.values(cd))if(await e({workspaceRoot:n}))return t({workspaceRoot:n});throw new cu("Could not determine package manager. Add `packageManager` to `package.json` or ensure a lockfile is present.",{type:`package_manager-unable_to_detect`})}let ud={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}]};function dd(e){let{version:t,name:n}=e;return t?ud[n].find(e=>(0,P.satisfies)(t,e.semver)):ud[n].find(e=>e.default)}async function fd(e){let{to:t,logger:n,options:r}=e,i=n??new Nl(r),a=dd(t);if(!a)throw new cu(`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 pd({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 cu(`You are already using this package manager`,{type:`package_manager-already_in_use`});if(!t.version)throw new cu(`${t.name} is not installed, or could not be located`,{type:`package_manager-could_not_be_found`})}let i=t;r?.ignoreUnchangedPackageManager||await cd[e.packageManager].remove({project:e,to:i,logger:n,options:r}),await cd[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 cd[i.name].convertLock({project:e,to:i,logger:n,options:r}),await fd({project:e,to:i,logger:n,options:r})),n.mainStep(`Cleaning up ${e.packageManager} workspaces`),e.packageManager!==t.name&&await cd[e.packageManager].clean({project:e,logger:n,options:r})}Object.defineProperty(exports,`ConvertError`,{enumerable:!0,get:function(){return cu}}),Object.defineProperty(exports,`Logger`,{enumerable:!0,get:function(){return Nl}}),Object.defineProperty(exports,`MANAGERS`,{enumerable:!0,get:function(){return cd}}),Object.defineProperty(exports,`__toESM`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`convertProject`,{enumerable:!0,get:function(){return pd}}),Object.defineProperty(exports,`createNotifyUpdate`,{enumerable:!0,get:function(){return jl}}),Object.defineProperty(exports,`directoryInfo`,{enumerable:!0,get:function(){return vu}}),Object.defineProperty(exports,`getAvailablePackageManagers`,{enumerable:!0,get:function(){return xt}}),Object.defineProperty(exports,`getPackageManagerMeta`,{enumerable:!0,get:function(){return dd}}),Object.defineProperty(exports,`getWorkspaceDetails`,{enumerable:!0,get:function(){return ld}}),Object.defineProperty(exports,`install`,{enumerable:!0,get:function(){return fd}}),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()]);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-DvT815v2.js`),t=require(`../dist-
|
|
1
|
+
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../get-transformer-helpers-DvT815v2.js`),t=require(`../dist-TtAxXvEs.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 `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();s.info(`Set "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(),{packageManager:p}=d,m=f[p];if(!m)return c.abortTransform({reason:`Unable to determine package manager version for ${t}`});let h=`${p}@${m}`,g=[{name:`package.json`,path:t,packageJson:{...u,packageJsonPath:l}}];for(let e of g){let{packageJsonPath:t,...n}=e.packageJson,r={...n,packageManager:h};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-DvT815v2.js`),t=require(`../dist-
|
|
1
|
+
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../get-transformer-helpers-DvT815v2.js`),t=require(`../dist-TtAxXvEs.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.9.9
|
|
3
|
+
"version": "2.9.9",
|
|
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,9 +50,9 @@
|
|
|
50
50
|
"tsdown": "0.12.0",
|
|
51
51
|
"typescript": "5.5.4",
|
|
52
52
|
"@turbo/test-utils": "0.0.0",
|
|
53
|
+
"@turbo/types": "2.9.9",
|
|
53
54
|
"@turbo/tsconfig": "0.0.0",
|
|
54
|
-
"@turbo/
|
|
55
|
-
"@turbo/workspaces": "2.9.9-canary.3",
|
|
55
|
+
"@turbo/workspaces": "2.9.9",
|
|
56
56
|
"@turbo/utils": "0.0.0"
|
|
57
57
|
},
|
|
58
58
|
"scripts": {
|