workspace-helper 1.0.4-alpha

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Hezron Nyamboga
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,72 @@
1
+ # Workspace Helper
2
+
3
+ A tool for managing package versions across monorepo workspaces.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/workspace-helper.svg?label=version&message=1.0.3)](https://npmjs.org/package/workspace-helper)
6
+ [![License](https://img.shields.io/npm/l/workspace-helper.svg)](https://github.com/nyambogahezron/workspace-helper/blob/main/LICENSE)
7
+
8
+ - [Installation](#installation)
9
+ - [Usage](#usage)
10
+ - [Interactive Commands](#interactive-commands)
11
+
12
+ # Installation
13
+
14
+ You can run `workspace-helper` directly using `bun` or `npx`, or install it globally.
15
+
16
+ ```sh
17
+ # Using bun (recommended)
18
+ bun x workspace-helper
19
+
20
+ # Using npx
21
+ npx workspace-helper
22
+ ```
23
+
24
+ To install globally:
25
+
26
+ ```sh
27
+ bun add -g workspace-helper
28
+ # or
29
+ npm install -g workspace-helper
30
+ ```
31
+
32
+ Then run:
33
+
34
+ ```sh
35
+ wh
36
+ ```
37
+
38
+ # Usage
39
+
40
+ `workspace-helper` is primarily an interactive CLI tool. When you run it, you will be presented with a menu to select the operation you want to perform.
41
+
42
+ ```sh
43
+ wh
44
+ ```
45
+
46
+ # Interactive Commands
47
+
48
+ The CLI provides the following interactive commands:
49
+
50
+ ## Add or update package
51
+
52
+ Select a package and a version, and choose which workspaces should have this package updated or added.
53
+
54
+ ## Remove package
55
+
56
+ Select a package to remove from selected workspaces.
57
+
58
+ ## Sync package versions
59
+
60
+ Choose a package and a target version to align all workspaces to that version.
61
+
62
+ ## Find and resolve version conflicts
63
+
64
+ Scans your monorepo for conflicting versions of the same dependency and helps you resolve them interactively.
65
+
66
+ ## List all packages
67
+
68
+ Shows a summary of all dependencies in your workspaces.
69
+
70
+ ## Install packages
71
+
72
+ Runs your project's package manager (npm, pnpm, yarn, bun) in all workspaces to ensure dependencies are installed.
package/dist/index.js ADDED
@@ -0,0 +1,141 @@
1
+ #!/usr/bin/env node
2
+ import{createRequire as B9}from"node:module";var b9=Object.create;var{getPrototypeOf:I9,defineProperty:l1,getOwnPropertyNames:q9}=Object;var _9=Object.prototype.hasOwnProperty;var N=($,x,b)=>{b=$!=null?b9(I9($)):{};let I=x||!$||!$.__esModule?l1(b,"default",{value:$,enumerable:!0}):b;for(let q of q9($))if(!_9.call(I,q))l1(I,q,{get:()=>$[q],enumerable:!0});return I};var w=($,x)=>()=>(x||$((x={exports:{}}).exports,x),x.exports);var h1=B9(import.meta.url);var n$=w(($4,R1)=>{var D$={to($,x){if(!x)return`\x1B[${$+1}G`;return`\x1B[${x+1};${$+1}H`},move($,x){let b="";if($<0)b+=`\x1B[${-$}D`;else if($>0)b+=`\x1B[${$}C`;if(x<0)b+=`\x1B[${-x}A`;else if(x>0)b+=`\x1B[${x}B`;return b},up:($=1)=>`\x1B[${$}A`,down:($=1)=>`\x1B[${$}B`,forward:($=1)=>`\x1B[${$}C`,backward:($=1)=>`\x1B[${$}D`,nextLine:($=1)=>"\x1B[E".repeat($),prevLine:($=1)=>"\x1B[F".repeat($),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},j9={up:($=1)=>"\x1B[S".repeat($),down:($=1)=>"\x1B[T".repeat($)},Z9={screen:"\x1B[2J",up:($=1)=>"\x1B[1J".repeat($),down:($=1)=>"\x1B[J".repeat($),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines($){let x="";for(let b=0;b<$;b++)x+=this.line+(b<$-1?D$.up():"");if($)x+=D$.left;return x}};R1.exports={cursor:D$,scroll:j9,erase:Z9,beep:"\x07"}});var i=w((x4,i$)=>{var X$=process||{},P1=X$.argv||[],A$=X$.env||{},O9=!(!!A$.NO_COLOR||P1.includes("--no-color"))&&(!!A$.FORCE_COLOR||P1.includes("--color")||X$.platform==="win32"||(X$.stdout||{}).isTTY&&A$.TERM!=="dumb"||!!A$.CI),K9=($,x,b=$)=>(I)=>{let q=""+I,_=q.indexOf(x,$.length);return~_?$+z9(q,x,b,_)+x:$+q+x},z9=($,x,b,I)=>{let q="",_=0;do q+=$.substring(_,I)+b,_=I+x.length,I=$.indexOf(x,_);while(~I);return q+$.substring(_)},C1=($=O9)=>{let x=$?K9:()=>String;return{isColorSupported:$,reset:x("\x1B[0m","\x1B[0m"),bold:x("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:x("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:x("\x1B[3m","\x1B[23m"),underline:x("\x1B[4m","\x1B[24m"),inverse:x("\x1B[7m","\x1B[27m"),hidden:x("\x1B[8m","\x1B[28m"),strikethrough:x("\x1B[9m","\x1B[29m"),black:x("\x1B[30m","\x1B[39m"),red:x("\x1B[31m","\x1B[39m"),green:x("\x1B[32m","\x1B[39m"),yellow:x("\x1B[33m","\x1B[39m"),blue:x("\x1B[34m","\x1B[39m"),magenta:x("\x1B[35m","\x1B[39m"),cyan:x("\x1B[36m","\x1B[39m"),white:x("\x1B[37m","\x1B[39m"),gray:x("\x1B[90m","\x1B[39m"),bgBlack:x("\x1B[40m","\x1B[49m"),bgRed:x("\x1B[41m","\x1B[49m"),bgGreen:x("\x1B[42m","\x1B[49m"),bgYellow:x("\x1B[43m","\x1B[49m"),bgBlue:x("\x1B[44m","\x1B[49m"),bgMagenta:x("\x1B[45m","\x1B[49m"),bgCyan:x("\x1B[46m","\x1B[49m"),bgWhite:x("\x1B[47m","\x1B[49m"),blackBright:x("\x1B[90m","\x1B[39m"),redBright:x("\x1B[91m","\x1B[39m"),greenBright:x("\x1B[92m","\x1B[39m"),yellowBright:x("\x1B[93m","\x1B[39m"),blueBright:x("\x1B[94m","\x1B[39m"),magentaBright:x("\x1B[95m","\x1B[39m"),cyanBright:x("\x1B[96m","\x1B[39m"),whiteBright:x("\x1B[97m","\x1B[39m"),bgBlackBright:x("\x1B[100m","\x1B[49m"),bgRedBright:x("\x1B[101m","\x1B[49m"),bgGreenBright:x("\x1B[102m","\x1B[49m"),bgYellowBright:x("\x1B[103m","\x1B[49m"),bgBlueBright:x("\x1B[104m","\x1B[49m"),bgMagentaBright:x("\x1B[105m","\x1B[49m"),bgCyanBright:x("\x1B[106m","\x1B[49m"),bgWhiteBright:x("\x1B[107m","\x1B[49m")}};i$.exports=C1();i$.exports.createColors=C1});var U$=w((s4,O0)=>{var qx=Number.MAX_SAFE_INTEGER||9007199254740991,_x=["major","premajor","minor","preminor","patch","prepatch","prerelease"];O0.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:qx,RELEASE_TYPES:_x,SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var Y$=w((a4,K0)=>{var Bx=typeof process==="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...$)=>console.error("SEMVER",...$):()=>{};K0.exports=Bx});var B$=w((D,z0)=>{var{MAX_SAFE_COMPONENT_LENGTH:K1,MAX_SAFE_BUILD_LENGTH:jx,MAX_LENGTH:Zx}=U$(),Ox=Y$();D=z0.exports={};var Kx=D.re=[],zx=D.safeRe=[],Q=D.src=[],Qx=D.safeSrc=[],U=D.t={},Ux=0,z1="[a-zA-Z0-9-]",Yx=[["\\s",1],["\\d",Zx],[z1,jx]],Wx=($)=>{for(let[x,b]of Yx)$=$.split(`${x}*`).join(`${x}{0,${b}}`).split(`${x}+`).join(`${x}{1,${b}}`);return $},H=($,x,b)=>{let I=Wx(x),q=Ux++;Ox($,q,x),U[$]=q,Q[q]=x,Qx[q]=I,Kx[q]=new RegExp(x,b?"g":void 0),zx[q]=new RegExp(I,b?"g":void 0)};H("NUMERICIDENTIFIER","0|[1-9]\\d*");H("NUMERICIDENTIFIERLOOSE","\\d+");H("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${z1}*`);H("MAINVERSION",`(${Q[U.NUMERICIDENTIFIER]})\\.(${Q[U.NUMERICIDENTIFIER]})\\.(${Q[U.NUMERICIDENTIFIER]})`);H("MAINVERSIONLOOSE",`(${Q[U.NUMERICIDENTIFIERLOOSE]})\\.(${Q[U.NUMERICIDENTIFIERLOOSE]})\\.(${Q[U.NUMERICIDENTIFIERLOOSE]})`);H("PRERELEASEIDENTIFIER",`(?:${Q[U.NONNUMERICIDENTIFIER]}|${Q[U.NUMERICIDENTIFIER]})`);H("PRERELEASEIDENTIFIERLOOSE",`(?:${Q[U.NONNUMERICIDENTIFIER]}|${Q[U.NUMERICIDENTIFIERLOOSE]})`);H("PRERELEASE",`(?:-(${Q[U.PRERELEASEIDENTIFIER]}(?:\\.${Q[U.PRERELEASEIDENTIFIER]})*))`);H("PRERELEASELOOSE",`(?:-?(${Q[U.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${Q[U.PRERELEASEIDENTIFIERLOOSE]})*))`);H("BUILDIDENTIFIER",`${z1}+`);H("BUILD",`(?:\\+(${Q[U.BUILDIDENTIFIER]}(?:\\.${Q[U.BUILDIDENTIFIER]})*))`);H("FULLPLAIN",`v?${Q[U.MAINVERSION]}${Q[U.PRERELEASE]}?${Q[U.BUILD]}?`);H("FULL",`^${Q[U.FULLPLAIN]}$`);H("LOOSEPLAIN",`[v=\\s]*${Q[U.MAINVERSIONLOOSE]}${Q[U.PRERELEASELOOSE]}?${Q[U.BUILD]}?`);H("LOOSE",`^${Q[U.LOOSEPLAIN]}$`);H("GTLT","((?:<|>)?=?)");H("XRANGEIDENTIFIERLOOSE",`${Q[U.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);H("XRANGEIDENTIFIER",`${Q[U.NUMERICIDENTIFIER]}|x|X|\\*`);H("XRANGEPLAIN",`[v=\\s]*(${Q[U.XRANGEIDENTIFIER]})(?:\\.(${Q[U.XRANGEIDENTIFIER]})(?:\\.(${Q[U.XRANGEIDENTIFIER]})(?:${Q[U.PRERELEASE]})?${Q[U.BUILD]}?)?)?`);H("XRANGEPLAINLOOSE",`[v=\\s]*(${Q[U.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Q[U.XRANGEIDENTIFIERLOOSE]})(?:\\.(${Q[U.XRANGEIDENTIFIERLOOSE]})(?:${Q[U.PRERELEASELOOSE]})?${Q[U.BUILD]}?)?)?`);H("XRANGE",`^${Q[U.GTLT]}\\s*${Q[U.XRANGEPLAIN]}$`);H("XRANGELOOSE",`^${Q[U.GTLT]}\\s*${Q[U.XRANGEPLAINLOOSE]}$`);H("COERCEPLAIN",`(^|[^\\d])(\\d{1,${K1}})(?:\\.(\\d{1,${K1}}))?(?:\\.(\\d{1,${K1}}))?`);H("COERCE",`${Q[U.COERCEPLAIN]}(?:$|[^\\d])`);H("COERCEFULL",Q[U.COERCEPLAIN]+`(?:${Q[U.PRERELEASE]})?(?:${Q[U.BUILD]})?(?:$|[^\\d])`);H("COERCERTL",Q[U.COERCE],!0);H("COERCERTLFULL",Q[U.COERCEFULL],!0);H("LONETILDE","(?:~>?)");H("TILDETRIM",`(\\s*)${Q[U.LONETILDE]}\\s+`,!0);D.tildeTrimReplace="$1~";H("TILDE",`^${Q[U.LONETILDE]}${Q[U.XRANGEPLAIN]}$`);H("TILDELOOSE",`^${Q[U.LONETILDE]}${Q[U.XRANGEPLAINLOOSE]}$`);H("LONECARET","(?:\\^)");H("CARETTRIM",`(\\s*)${Q[U.LONECARET]}\\s+`,!0);D.caretTrimReplace="$1^";H("CARET",`^${Q[U.LONECARET]}${Q[U.XRANGEPLAIN]}$`);H("CARETLOOSE",`^${Q[U.LONECARET]}${Q[U.XRANGEPLAINLOOSE]}$`);H("COMPARATORLOOSE",`^${Q[U.GTLT]}\\s*(${Q[U.LOOSEPLAIN]})$|^$`);H("COMPARATOR",`^${Q[U.GTLT]}\\s*(${Q[U.FULLPLAIN]})$|^$`);H("COMPARATORTRIM",`(\\s*)${Q[U.GTLT]}\\s*(${Q[U.LOOSEPLAIN]}|${Q[U.XRANGEPLAIN]})`,!0);D.comparatorTrimReplace="$1$2$3";H("HYPHENRANGE",`^\\s*(${Q[U.XRANGEPLAIN]})\\s+-\\s+(${Q[U.XRANGEPLAIN]})\\s*$`);H("HYPHENRANGELOOSE",`^\\s*(${Q[U.XRANGEPLAINLOOSE]})\\s+-\\s+(${Q[U.XRANGEPLAINLOOSE]})\\s*$`);H("STAR","(<|>)?=?\\s*\\*");H("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");H("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var u$=w((o4,Q0)=>{var wx=Object.freeze({loose:!0}),Hx=Object.freeze({}),Jx=($)=>{if(!$)return Hx;if(typeof $!=="object")return wx;return $};Q0.exports=Jx});var Q1=w((e4,W0)=>{var U0=/^[0-9]+$/,Y0=($,x)=>{if(typeof $==="number"&&typeof x==="number")return $===x?0:$<x?-1:1;let b=U0.test($),I=U0.test(x);if(b&&I)$=+$,x=+x;return $===x?0:b&&!I?-1:I&&!b?1:$<x?-1:1},Gx=($,x)=>Y0(x,$);W0.exports={compareIdentifiers:Y0,rcompareIdentifiers:Gx}});var h=w(($I,H0)=>{var V$=Y$(),{MAX_LENGTH:w0,MAX_SAFE_INTEGER:T$}=U$(),{safeRe:N$,t:M$}=B$(),Sx=u$(),{compareIdentifiers:U1}=Q1();class t{constructor($,x){if(x=Sx(x),$ instanceof t)if($.loose===!!x.loose&&$.includePrerelease===!!x.includePrerelease)return $;else $=$.version;else if(typeof $!=="string")throw TypeError(`Invalid version. Must be a string. Got type "${typeof $}".`);if($.length>w0)throw TypeError(`version is longer than ${w0} characters`);V$("SemVer",$,x),this.options=x,this.loose=!!x.loose,this.includePrerelease=!!x.includePrerelease;let b=$.trim().match(x.loose?N$[M$.LOOSE]:N$[M$.FULL]);if(!b)throw TypeError(`Invalid Version: ${$}`);if(this.raw=$,this.major=+b[1],this.minor=+b[2],this.patch=+b[3],this.major>T$||this.major<0)throw TypeError("Invalid major version");if(this.minor>T$||this.minor<0)throw TypeError("Invalid minor version");if(this.patch>T$||this.patch<0)throw TypeError("Invalid patch version");if(!b[4])this.prerelease=[];else this.prerelease=b[4].split(".").map((I)=>{if(/^[0-9]+$/.test(I)){let q=+I;if(q>=0&&q<T$)return q}return I});this.build=b[5]?b[5].split("."):[],this.format()}format(){if(this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length)this.version+=`-${this.prerelease.join(".")}`;return this.version}toString(){return this.version}compare($){if(V$("SemVer.compare",this.version,this.options,$),!($ instanceof t)){if(typeof $==="string"&&$===this.version)return 0;$=new t($,this.options)}if($.version===this.version)return 0;return this.compareMain($)||this.comparePre($)}compareMain($){if(!($ instanceof t))$=new t($,this.options);if(this.major<$.major)return-1;if(this.major>$.major)return 1;if(this.minor<$.minor)return-1;if(this.minor>$.minor)return 1;if(this.patch<$.patch)return-1;if(this.patch>$.patch)return 1;return 0}comparePre($){if(!($ instanceof t))$=new t($,this.options);if(this.prerelease.length&&!$.prerelease.length)return-1;else if(!this.prerelease.length&&$.prerelease.length)return 1;else if(!this.prerelease.length&&!$.prerelease.length)return 0;let x=0;do{let b=this.prerelease[x],I=$.prerelease[x];if(V$("prerelease compare",x,b,I),b===void 0&&I===void 0)return 0;else if(I===void 0)return 1;else if(b===void 0)return-1;else if(b===I)continue;else return U1(b,I)}while(++x)}compareBuild($){if(!($ instanceof t))$=new t($,this.options);let x=0;do{let b=this.build[x],I=$.build[x];if(V$("build compare",x,b,I),b===void 0&&I===void 0)return 0;else if(I===void 0)return 1;else if(b===void 0)return-1;else if(b===I)continue;else return U1(b,I)}while(++x)}inc($,x,b){if($.startsWith("pre")){if(!x&&b===!1)throw Error("invalid increment argument: identifier is empty");if(x){let I=`-${x}`.match(this.options.loose?N$[M$.PRERELEASELOOSE]:N$[M$.PRERELEASE]);if(!I||I[1]!==x)throw Error(`invalid identifier: ${x}`)}}switch($){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",x,b);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",x,b);break;case"prepatch":this.prerelease.length=0,this.inc("patch",x,b),this.inc("pre",x,b);break;case"prerelease":if(this.prerelease.length===0)this.inc("patch",x,b);this.inc("pre",x,b);break;case"release":if(this.prerelease.length===0)throw Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":if(this.minor!==0||this.patch!==0||this.prerelease.length===0)this.major++;this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":if(this.patch!==0||this.prerelease.length===0)this.minor++;this.patch=0,this.prerelease=[];break;case"patch":if(this.prerelease.length===0)this.patch++;this.prerelease=[];break;case"pre":{let I=Number(b)?1:0;if(this.prerelease.length===0)this.prerelease=[I];else{let q=this.prerelease.length;while(--q>=0)if(typeof this.prerelease[q]==="number")this.prerelease[q]++,q=-2;if(q===-1){if(x===this.prerelease.join(".")&&b===!1)throw Error("invalid increment argument: identifier already exists");this.prerelease.push(I)}}if(x){let q=[x,I];if(b===!1)q=[x];if(U1(this.prerelease[0],x)===0){if(isNaN(this.prerelease[1]))this.prerelease=q}else this.prerelease=q}break}default:throw Error(`invalid increment argument: ${$}`)}if(this.raw=this.format(),this.build.length)this.raw+=`+${this.build.join(".")}`;return this}}H0.exports=t});var x$=w((xI,G0)=>{var J0=h(),Ax=($,x,b=!1)=>{if($ instanceof J0)return $;try{return new J0($,x)}catch(I){if(!b)return null;throw I}};G0.exports=Ax});var A0=w((yI,S0)=>{var Xx=x$(),Lx=($,x)=>{let b=Xx($,x);return b?b.version:null};S0.exports=Lx});var L0=w((bI,X0)=>{var Ex=x$(),dx=($,x)=>{let b=Ex($.trim().replace(/^[=v]+/,""),x);return b?b.version:null};X0.exports=dx});var l0=w((II,d0)=>{var E0=h(),lx=($,x,b,I,q)=>{if(typeof b==="string")q=I,I=b,b=void 0;try{return new E0($ instanceof E0?$.version:$,b).inc(x,I,q).version}catch(_){return null}};d0.exports=lx});var P0=w((qI,R0)=>{var h0=x$(),hx=($,x)=>{let b=h0($,null,!0),I=h0(x,null,!0),q=b.compare(I);if(q===0)return null;let _=q>0,y=_?b:I,B=_?I:b,j=!!y.prerelease.length;if(!!B.prerelease.length&&!j){if(!B.patch&&!B.minor)return"major";if(B.compareMain(y)===0){if(B.minor&&!B.patch)return"minor";return"patch"}}let K=j?"pre":"";if(b.major!==I.major)return K+"major";if(b.minor!==I.minor)return K+"minor";if(b.patch!==I.patch)return K+"patch";return"prerelease"};R0.exports=hx});var u0=w((_I,C0)=>{var Rx=h(),Px=($,x)=>new Rx($,x).major;C0.exports=Px});var T0=w((BI,V0)=>{var Cx=h(),ux=($,x)=>new Cx($,x).minor;V0.exports=ux});var M0=w((jI,N0)=>{var Vx=h(),Tx=($,x)=>new Vx($,x).patch;N0.exports=Tx});var f0=w((ZI,F0)=>{var Nx=x$(),Mx=($,x)=>{let b=Nx($,x);return b&&b.prerelease.length?b.prerelease:null};F0.exports=Mx});var k=w((OI,k0)=>{var v0=h(),Fx=($,x,b)=>new v0($,b).compare(new v0(x,b));k0.exports=Fx});var m0=w((KI,g0)=>{var fx=k(),vx=($,x,b)=>fx(x,$,b);g0.exports=vx});var t0=w((zI,c0)=>{var kx=k(),gx=($,x)=>kx($,x,!0);c0.exports=gx});var F$=w((QI,n0)=>{var D0=h(),mx=($,x,b)=>{let I=new D0($,b),q=new D0(x,b);return I.compare(q)||I.compareBuild(q)};n0.exports=mx});var r0=w((UI,i0)=>{var cx=F$(),tx=($,x)=>$.sort((b,I)=>cx(b,I,x));i0.exports=tx});var s0=w((YI,p0)=>{var Dx=F$(),nx=($,x)=>$.sort((b,I)=>Dx(I,b,x));p0.exports=nx});var W$=w((WI,a0)=>{var ix=k(),rx=($,x,b)=>ix($,x,b)>0;a0.exports=rx});var f$=w((wI,o0)=>{var px=k(),sx=($,x,b)=>px($,x,b)<0;o0.exports=sx});var Y1=w((HI,e0)=>{var ax=k(),ox=($,x,b)=>ax($,x,b)===0;e0.exports=ox});var W1=w((JI,$2)=>{var ex=k(),$y=($,x,b)=>ex($,x,b)!==0;$2.exports=$y});var v$=w((GI,x2)=>{var xy=k(),yy=($,x,b)=>xy($,x,b)>=0;x2.exports=yy});var k$=w((SI,y2)=>{var by=k(),Iy=($,x,b)=>by($,x,b)<=0;y2.exports=Iy});var w1=w((AI,b2)=>{var qy=Y1(),_y=W1(),By=W$(),jy=v$(),Zy=f$(),Oy=k$(),Ky=($,x,b,I)=>{switch(x){case"===":if(typeof $==="object")$=$.version;if(typeof b==="object")b=b.version;return $===b;case"!==":if(typeof $==="object")$=$.version;if(typeof b==="object")b=b.version;return $!==b;case"":case"=":case"==":return qy($,b,I);case"!=":return _y($,b,I);case">":return By($,b,I);case">=":return jy($,b,I);case"<":return Zy($,b,I);case"<=":return Oy($,b,I);default:throw TypeError(`Invalid operator: ${x}`)}};b2.exports=Ky});var q2=w((XI,I2)=>{var zy=h(),Qy=x$(),{safeRe:g$,t:m$}=B$(),Uy=($,x)=>{if($ instanceof zy)return $;if(typeof $==="number")$=String($);if(typeof $!=="string")return null;x=x||{};let b=null;if(!x.rtl)b=$.match(x.includePrerelease?g$[m$.COERCEFULL]:g$[m$.COERCE]);else{let j=x.includePrerelease?g$[m$.COERCERTLFULL]:g$[m$.COERCERTL],O;while((O=j.exec($))&&(!b||b.index+b[0].length!==$.length)){if(!b||O.index+O[0].length!==b.index+b[0].length)b=O;j.lastIndex=O.index+O[1].length+O[2].length}j.lastIndex=-1}if(b===null)return null;let I=b[2],q=b[3]||"0",_=b[4]||"0",y=x.includePrerelease&&b[5]?`-${b[5]}`:"",B=x.includePrerelease&&b[6]?`+${b[6]}`:"";return Qy(`${I}.${q}.${_}${y}${B}`,x)};I2.exports=Uy});var j2=w((LI,B2)=>{class _2{constructor(){this.max=1000,this.map=new Map}get($){let x=this.map.get($);if(x===void 0)return;else return this.map.delete($),this.map.set($,x),x}delete($){return this.map.delete($)}set($,x){if(!this.delete($)&&x!==void 0){if(this.map.size>=this.max){let I=this.map.keys().next().value;this.delete(I)}this.map.set($,x)}return this}}B2.exports=_2});var g=w((EI,z2)=>{var Yy=/\s+/g;class w${constructor($,x){if(x=wy(x),$ instanceof w$)if($.loose===!!x.loose&&$.includePrerelease===!!x.includePrerelease)return $;else return new w$($.raw,x);if($ instanceof H1)return this.raw=$.value,this.set=[[$]],this.formatted=void 0,this;if(this.options=x,this.loose=!!x.loose,this.includePrerelease=!!x.includePrerelease,this.raw=$.trim().replace(Yy," "),this.set=this.raw.split("||").map((b)=>this.parseRange(b.trim())).filter((b)=>b.length),!this.set.length)throw TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let b=this.set[0];if(this.set=this.set.filter((I)=>!O2(I[0])),this.set.length===0)this.set=[b];else if(this.set.length>1){for(let I of this.set)if(I.length===1&&Ly(I[0])){this.set=[I];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let $=0;$<this.set.length;$++){if($>0)this.formatted+="||";let x=this.set[$];for(let b=0;b<x.length;b++){if(b>0)this.formatted+=" ";this.formatted+=x[b].toString().trim()}}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange($){let b=((this.options.includePrerelease&&Ay)|(this.options.loose&&Xy))+":"+$,I=Z2.get(b);if(I)return I;let q=this.options.loose,_=q?C[R.HYPHENRANGELOOSE]:C[R.HYPHENRANGE];$=$.replace(_,Ty(this.options.includePrerelease)),A("hyphen replace",$),$=$.replace(C[R.COMPARATORTRIM],Jy),A("comparator trim",$),$=$.replace(C[R.TILDETRIM],Gy),A("tilde trim",$),$=$.replace(C[R.CARETTRIM],Sy),A("caret trim",$);let y=$.split(" ").map((K)=>Ey(K,this.options)).join(" ").split(/\s+/).map((K)=>Vy(K,this.options));if(q)y=y.filter((K)=>{return A("loose invalid filter",K,this.options),!!K.match(C[R.COMPARATORLOOSE])});A("range list",y);let B=new Map,j=y.map((K)=>new H1(K,this.options));for(let K of j){if(O2(K))return[K];B.set(K.value,K)}if(B.size>1&&B.has(""))B.delete("");let O=[...B.values()];return Z2.set(b,O),O}intersects($,x){if(!($ instanceof w$))throw TypeError("a Range is required");return this.set.some((b)=>{return K2(b,x)&&$.set.some((I)=>{return K2(I,x)&&b.every((q)=>{return I.every((_)=>{return q.intersects(_,x)})})})})}test($){if(!$)return!1;if(typeof $==="string")try{$=new Hy($,this.options)}catch(x){return!1}for(let x=0;x<this.set.length;x++)if(Ny(this.set[x],$,this.options))return!0;return!1}}z2.exports=w$;var Wy=j2(),Z2=new Wy,wy=u$(),H1=H$(),A=Y$(),Hy=h(),{safeRe:C,t:R,comparatorTrimReplace:Jy,tildeTrimReplace:Gy,caretTrimReplace:Sy}=B$(),{FLAG_INCLUDE_PRERELEASE:Ay,FLAG_LOOSE:Xy}=U$(),O2=($)=>$.value==="<0.0.0-0",Ly=($)=>$.value==="",K2=($,x)=>{let b=!0,I=$.slice(),q=I.pop();while(b&&I.length)b=I.every((_)=>{return q.intersects(_,x)}),q=I.pop();return b},Ey=($,x)=>{return $=$.replace(C[R.BUILD],""),A("comp",$,x),$=hy($,x),A("caret",$),$=dy($,x),A("tildes",$),$=Py($,x),A("xrange",$),$=uy($,x),A("stars",$),$},u=($)=>!$||$.toLowerCase()==="x"||$==="*",dy=($,x)=>{return $.trim().split(/\s+/).map((b)=>ly(b,x)).join(" ")},ly=($,x)=>{let b=x.loose?C[R.TILDELOOSE]:C[R.TILDE];return $.replace(b,(I,q,_,y,B)=>{A("tilde",$,I,q,_,y,B);let j;if(u(q))j="";else if(u(_))j=`>=${q}.0.0 <${+q+1}.0.0-0`;else if(u(y))j=`>=${q}.${_}.0 <${q}.${+_+1}.0-0`;else if(B)A("replaceTilde pr",B),j=`>=${q}.${_}.${y}-${B} <${q}.${+_+1}.0-0`;else j=`>=${q}.${_}.${y} <${q}.${+_+1}.0-0`;return A("tilde return",j),j})},hy=($,x)=>{return $.trim().split(/\s+/).map((b)=>Ry(b,x)).join(" ")},Ry=($,x)=>{A("caret",$,x);let b=x.loose?C[R.CARETLOOSE]:C[R.CARET],I=x.includePrerelease?"-0":"";return $.replace(b,(q,_,y,B,j)=>{A("caret",$,q,_,y,B,j);let O;if(u(_))O="";else if(u(y))O=`>=${_}.0.0${I} <${+_+1}.0.0-0`;else if(u(B))if(_==="0")O=`>=${_}.${y}.0${I} <${_}.${+y+1}.0-0`;else O=`>=${_}.${y}.0${I} <${+_+1}.0.0-0`;else if(j)if(A("replaceCaret pr",j),_==="0")if(y==="0")O=`>=${_}.${y}.${B}-${j} <${_}.${y}.${+B+1}-0`;else O=`>=${_}.${y}.${B}-${j} <${_}.${+y+1}.0-0`;else O=`>=${_}.${y}.${B}-${j} <${+_+1}.0.0-0`;else if(A("no pr"),_==="0")if(y==="0")O=`>=${_}.${y}.${B}${I} <${_}.${y}.${+B+1}-0`;else O=`>=${_}.${y}.${B}${I} <${_}.${+y+1}.0-0`;else O=`>=${_}.${y}.${B} <${+_+1}.0.0-0`;return A("caret return",O),O})},Py=($,x)=>{return A("replaceXRanges",$,x),$.split(/\s+/).map((b)=>Cy(b,x)).join(" ")},Cy=($,x)=>{$=$.trim();let b=x.loose?C[R.XRANGELOOSE]:C[R.XRANGE];return $.replace(b,(I,q,_,y,B,j)=>{A("xRange",$,I,q,_,y,B,j);let O=u(_),K=O||u(y),z=K||u(B),W=z;if(q==="="&&W)q="";if(j=x.includePrerelease?"-0":"",O)if(q===">"||q==="<")I="<0.0.0-0";else I="*";else if(q&&W){if(K)y=0;if(B=0,q===">")if(q=">=",K)_=+_+1,y=0,B=0;else y=+y+1,B=0;else if(q==="<=")if(q="<",K)_=+_+1;else y=+y+1;if(q==="<")j="-0";I=`${q+_}.${y}.${B}${j}`}else if(K)I=`>=${_}.0.0${j} <${+_+1}.0.0-0`;else if(z)I=`>=${_}.${y}.0${j} <${_}.${+y+1}.0-0`;return A("xRange return",I),I})},uy=($,x)=>{return A("replaceStars",$,x),$.trim().replace(C[R.STAR],"")},Vy=($,x)=>{return A("replaceGTE0",$,x),$.trim().replace(C[x.includePrerelease?R.GTE0PRE:R.GTE0],"")},Ty=($)=>(x,b,I,q,_,y,B,j,O,K,z,W)=>{if(u(I))b="";else if(u(q))b=`>=${I}.0.0${$?"-0":""}`;else if(u(_))b=`>=${I}.${q}.0${$?"-0":""}`;else if(y)b=`>=${b}`;else b=`>=${b}${$?"-0":""}`;if(u(O))j="";else if(u(K))j=`<${+O+1}.0.0-0`;else if(u(z))j=`<${O}.${+K+1}.0-0`;else if(W)j=`<=${O}.${K}.${z}-${W}`;else if($)j=`<${O}.${K}.${+z+1}-0`;else j=`<=${j}`;return`${b} ${j}`.trim()},Ny=($,x,b)=>{for(let I=0;I<$.length;I++)if(!$[I].test(x))return!1;if(x.prerelease.length&&!b.includePrerelease){for(let I=0;I<$.length;I++){if(A($[I].semver),$[I].semver===H1.ANY)continue;if($[I].semver.prerelease.length>0){let q=$[I].semver;if(q.major===x.major&&q.minor===x.minor&&q.patch===x.patch)return!0}}return!1}return!0}});var H$=w((dI,H2)=>{var J$=Symbol("SemVer ANY");class c${static get ANY(){return J$}constructor($,x){if(x=Q2(x),$ instanceof c$)if($.loose===!!x.loose)return $;else $=$.value;if($=$.trim().split(/\s+/).join(" "),G1("comparator",$,x),this.options=x,this.loose=!!x.loose,this.parse($),this.semver===J$)this.value="";else this.value=this.operator+this.semver.version;G1("comp",this)}parse($){let x=this.options.loose?U2[Y2.COMPARATORLOOSE]:U2[Y2.COMPARATOR],b=$.match(x);if(!b)throw TypeError(`Invalid comparator: ${$}`);if(this.operator=b[1]!==void 0?b[1]:"",this.operator==="=")this.operator="";if(!b[2])this.semver=J$;else this.semver=new W2(b[2],this.options.loose)}toString(){return this.value}test($){if(G1("Comparator.test",$,this.options.loose),this.semver===J$||$===J$)return!0;if(typeof $==="string")try{$=new W2($,this.options)}catch(x){return!1}return J1($,this.operator,this.semver,this.options)}intersects($,x){if(!($ instanceof c$))throw TypeError("a Comparator is required");if(this.operator===""){if(this.value==="")return!0;return new w2($.value,x).test(this.value)}else if($.operator===""){if($.value==="")return!0;return new w2(this.value,x).test($.semver)}if(x=Q2(x),x.includePrerelease&&(this.value==="<0.0.0-0"||$.value==="<0.0.0-0"))return!1;if(!x.includePrerelease&&(this.value.startsWith("<0.0.0")||$.value.startsWith("<0.0.0")))return!1;if(this.operator.startsWith(">")&&$.operator.startsWith(">"))return!0;if(this.operator.startsWith("<")&&$.operator.startsWith("<"))return!0;if(this.semver.version===$.semver.version&&this.operator.includes("=")&&$.operator.includes("="))return!0;if(J1(this.semver,"<",$.semver,x)&&this.operator.startsWith(">")&&$.operator.startsWith("<"))return!0;if(J1(this.semver,">",$.semver,x)&&this.operator.startsWith("<")&&$.operator.startsWith(">"))return!0;return!1}}H2.exports=c$;var Q2=u$(),{safeRe:U2,t:Y2}=B$(),J1=w1(),G1=Y$(),W2=h(),w2=g()});var G$=w((lI,J2)=>{var My=g(),Fy=($,x,b)=>{try{x=new My(x,b)}catch(I){return!1}return x.test($)};J2.exports=Fy});var S2=w((hI,G2)=>{var fy=g(),vy=($,x)=>new fy($,x).set.map((b)=>b.map((I)=>I.value).join(" ").trim().split(" "));G2.exports=vy});var X2=w((RI,A2)=>{var ky=h(),gy=g(),my=($,x,b)=>{let I=null,q=null,_=null;try{_=new gy(x,b)}catch(y){return null}return $.forEach((y)=>{if(_.test(y)){if(!I||q.compare(y)===-1)I=y,q=new ky(I,b)}}),I};A2.exports=my});var E2=w((PI,L2)=>{var cy=h(),ty=g(),Dy=($,x,b)=>{let I=null,q=null,_=null;try{_=new ty(x,b)}catch(y){return null}return $.forEach((y)=>{if(_.test(y)){if(!I||q.compare(y)===1)I=y,q=new cy(I,b)}}),I};L2.exports=Dy});var h2=w((CI,l2)=>{var S1=h(),ny=g(),d2=W$(),iy=($,x)=>{$=new ny($,x);let b=new S1("0.0.0");if($.test(b))return b;if(b=new S1("0.0.0-0"),$.test(b))return b;b=null;for(let I=0;I<$.set.length;++I){let q=$.set[I],_=null;if(q.forEach((y)=>{let B=new S1(y.semver.version);switch(y.operator){case">":if(B.prerelease.length===0)B.patch++;else B.prerelease.push(0);B.raw=B.format();case"":case">=":if(!_||d2(B,_))_=B;break;case"<":case"<=":break;default:throw Error(`Unexpected operation: ${y.operator}`)}}),_&&(!b||d2(b,_)))b=_}if(b&&$.test(b))return b;return null};l2.exports=iy});var P2=w((uI,R2)=>{var ry=g(),py=($,x)=>{try{return new ry($,x).range||"*"}catch(b){return null}};R2.exports=py});var t$=w((VI,T2)=>{var sy=h(),V2=H$(),{ANY:ay}=V2,oy=g(),ey=G$(),C2=W$(),u2=f$(),$b=k$(),xb=v$(),yb=($,x,b,I)=>{$=new sy($,I),x=new oy(x,I);let q,_,y,B,j;switch(b){case">":q=C2,_=$b,y=u2,B=">",j=">=";break;case"<":q=u2,_=xb,y=C2,B="<",j="<=";break;default:throw TypeError('Must provide a hilo val of "<" or ">"')}if(ey($,x,I))return!1;for(let O=0;O<x.set.length;++O){let K=x.set[O],z=null,W=null;if(K.forEach((Y)=>{if(Y.semver===ay)Y=new V2(">=0.0.0");if(z=z||Y,W=W||Y,q(Y.semver,z.semver,I))z=Y;else if(y(Y.semver,W.semver,I))W=Y}),z.operator===B||z.operator===j)return!1;if((!W.operator||W.operator===B)&&_($,W.semver))return!1;else if(W.operator===j&&y($,W.semver))return!1}return!0};T2.exports=yb});var M2=w((TI,N2)=>{var bb=t$(),Ib=($,x,b)=>bb($,x,">",b);N2.exports=Ib});var f2=w((NI,F2)=>{var qb=t$(),_b=($,x,b)=>qb($,x,"<",b);F2.exports=_b});var g2=w((MI,k2)=>{var v2=g(),Bb=($,x,b)=>{return $=new v2($,b),x=new v2(x,b),$.intersects(x,b)};k2.exports=Bb});var c2=w((FI,m2)=>{var jb=G$(),Zb=k();m2.exports=($,x,b)=>{let I=[],q=null,_=null,y=$.sort((K,z)=>Zb(K,z,b));for(let K of y)if(jb(K,x,b)){if(_=K,!q)q=K}else{if(_)I.push([q,_]);_=null,q=null}if(q)I.push([q,null]);let B=[];for(let[K,z]of I)if(K===z)B.push(K);else if(!z&&K===y[0])B.push("*");else if(!z)B.push(`>=${K}`);else if(K===y[0])B.push(`<=${z}`);else B.push(`${K} - ${z}`);let j=B.join(" || "),O=typeof x.raw==="string"?x.raw:String(x);return j.length<O.length?j:x}});var p2=w((fI,r2)=>{var t2=g(),X1=H$(),{ANY:A1}=X1,S$=G$(),L1=k(),Ob=($,x,b={})=>{if($===x)return!0;$=new t2($,b),x=new t2(x,b);let I=!1;$:for(let q of $.set){for(let _ of x.set){let y=zb(q,_,b);if(I=I||y!==null,y)continue $}if(I)return!1}return!0},Kb=[new X1(">=0.0.0-0")],D2=[new X1(">=0.0.0")],zb=($,x,b)=>{if($===x)return!0;if($.length===1&&$[0].semver===A1)if(x.length===1&&x[0].semver===A1)return!0;else if(b.includePrerelease)$=Kb;else $=D2;if(x.length===1&&x[0].semver===A1)if(b.includePrerelease)return!0;else x=D2;let I=new Set,q,_;for(let Y of $)if(Y.operator===">"||Y.operator===">=")q=n2(q,Y,b);else if(Y.operator==="<"||Y.operator==="<=")_=i2(_,Y,b);else I.add(Y.semver);if(I.size>1)return null;let y;if(q&&_){if(y=L1(q.semver,_.semver,b),y>0)return null;else if(y===0&&(q.operator!==">="||_.operator!=="<="))return null}for(let Y of I){if(q&&!S$(Y,String(q),b))return null;if(_&&!S$(Y,String(_),b))return null;for(let F of x)if(!S$(Y,String(F),b))return!1;return!0}let B,j,O,K,z=_&&!b.includePrerelease&&_.semver.prerelease.length?_.semver:!1,W=q&&!b.includePrerelease&&q.semver.prerelease.length?q.semver:!1;if(z&&z.prerelease.length===1&&_.operator==="<"&&z.prerelease[0]===0)z=!1;for(let Y of x){if(K=K||Y.operator===">"||Y.operator===">=",O=O||Y.operator==="<"||Y.operator==="<=",q){if(W){if(Y.semver.prerelease&&Y.semver.prerelease.length&&Y.semver.major===W.major&&Y.semver.minor===W.minor&&Y.semver.patch===W.patch)W=!1}if(Y.operator===">"||Y.operator===">="){if(B=n2(q,Y,b),B===Y&&B!==q)return!1}else if(q.operator===">="&&!S$(q.semver,String(Y),b))return!1}if(_){if(z){if(Y.semver.prerelease&&Y.semver.prerelease.length&&Y.semver.major===z.major&&Y.semver.minor===z.minor&&Y.semver.patch===z.patch)z=!1}if(Y.operator==="<"||Y.operator==="<="){if(j=i2(_,Y,b),j===Y&&j!==_)return!1}else if(_.operator==="<="&&!S$(_.semver,String(Y),b))return!1}if(!Y.operator&&(_||q)&&y!==0)return!1}if(q&&O&&!_&&y!==0)return!1;if(_&&K&&!q&&y!==0)return!1;if(W||z)return!1;return!0},n2=($,x,b)=>{if(!$)return x;let I=L1($.semver,x.semver,b);return I>0?$:I<0?x:x.operator===">"&&$.operator===">="?x:$},i2=($,x,b)=>{if(!$)return x;let I=L1($.semver,x.semver,b);return I<0?$:I>0?x:x.operator==="<"&&$.operator==="<="?x:$};r2.exports=Ob});var e2=w((vI,o2)=>{var E1=B$(),s2=U$(),Qb=h(),a2=Q1(),Ub=x$(),Yb=A0(),Wb=L0(),wb=l0(),Hb=P0(),Jb=u0(),Gb=T0(),Sb=M0(),Ab=f0(),Xb=k(),Lb=m0(),Eb=t0(),db=F$(),lb=r0(),hb=s0(),Rb=W$(),Pb=f$(),Cb=Y1(),ub=W1(),Vb=v$(),Tb=k$(),Nb=w1(),Mb=q2(),Fb=H$(),fb=g(),vb=G$(),kb=S2(),gb=X2(),mb=E2(),cb=h2(),tb=P2(),Db=t$(),nb=M2(),ib=f2(),rb=g2(),pb=c2(),sb=p2();o2.exports={parse:Ub,valid:Yb,clean:Wb,inc:wb,diff:Hb,major:Jb,minor:Gb,patch:Sb,prerelease:Ab,compare:Xb,rcompare:Lb,compareLoose:Eb,compareBuild:db,sort:lb,rsort:hb,gt:Rb,lt:Pb,eq:Cb,neq:ub,gte:Vb,lte:Tb,cmp:Nb,coerce:Mb,Comparator:Fb,Range:fb,satisfies:vb,toComparators:kb,maxSatisfying:gb,minSatisfying:mb,minVersion:cb,validRange:tb,outside:Db,gtr:nb,ltr:ib,intersects:rb,simplifyRange:pb,subset:sb,SemVer:Qb,re:E1.re,src:E1.src,tokens:E1.t,SEMVER_SPEC_VERSION:s2.SEMVER_SPEC_VERSION,RELEASE_TYPES:s2.RELEASE_TYPES,compareIdentifiers:a2.compareIdentifiers,rcompareIdentifiers:a2.rcompareIdentifiers}});var l=N(n$(),1),E$=N(i(),1);import{stdin as m1,stdout as c1}from"node:process";import*as s from"node:readline";import u1 from"node:readline";import{WriteStream as Q9}from"node:tty";function U9({onlyFirst:$=!1}={}){let x=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(x,$?void 0:"g")}var Y9=U9();function t1($){if(typeof $!="string")throw TypeError(`Expected a \`string\`, got \`${typeof $}\``);return $.replace(Y9,"")}function D1($){return $&&$.__esModule&&Object.prototype.hasOwnProperty.call($,"default")?$.default:$}var n1={exports:{}};(function($){var x={};$.exports=x,x.eastAsianWidth=function(I){var q=I.charCodeAt(0),_=I.length==2?I.charCodeAt(1):0,y=q;return 55296<=q&&q<=56319&&56320<=_&&_<=57343&&(q&=1023,_&=1023,y=q<<10|_,y+=65536),y==12288||65281<=y&&y<=65376||65504<=y&&y<=65510?"F":y==8361||65377<=y&&y<=65470||65474<=y&&y<=65479||65482<=y&&y<=65487||65490<=y&&y<=65495||65498<=y&&y<=65500||65512<=y&&y<=65518?"H":4352<=y&&y<=4447||4515<=y&&y<=4519||4602<=y&&y<=4607||9001<=y&&y<=9002||11904<=y&&y<=11929||11931<=y&&y<=12019||12032<=y&&y<=12245||12272<=y&&y<=12283||12289<=y&&y<=12350||12353<=y&&y<=12438||12441<=y&&y<=12543||12549<=y&&y<=12589||12593<=y&&y<=12686||12688<=y&&y<=12730||12736<=y&&y<=12771||12784<=y&&y<=12830||12832<=y&&y<=12871||12880<=y&&y<=13054||13056<=y&&y<=19903||19968<=y&&y<=42124||42128<=y&&y<=42182||43360<=y&&y<=43388||44032<=y&&y<=55203||55216<=y&&y<=55238||55243<=y&&y<=55291||63744<=y&&y<=64255||65040<=y&&y<=65049||65072<=y&&y<=65106||65108<=y&&y<=65126||65128<=y&&y<=65131||110592<=y&&y<=110593||127488<=y&&y<=127490||127504<=y&&y<=127546||127552<=y&&y<=127560||127568<=y&&y<=127569||131072<=y&&y<=194367||177984<=y&&y<=196605||196608<=y&&y<=262141?"W":32<=y&&y<=126||162<=y&&y<=163||165<=y&&y<=166||y==172||y==175||10214<=y&&y<=10221||10629<=y&&y<=10630?"Na":y==161||y==164||167<=y&&y<=168||y==170||173<=y&&y<=174||176<=y&&y<=180||182<=y&&y<=186||188<=y&&y<=191||y==198||y==208||215<=y&&y<=216||222<=y&&y<=225||y==230||232<=y&&y<=234||236<=y&&y<=237||y==240||242<=y&&y<=243||247<=y&&y<=250||y==252||y==254||y==257||y==273||y==275||y==283||294<=y&&y<=295||y==299||305<=y&&y<=307||y==312||319<=y&&y<=322||y==324||328<=y&&y<=331||y==333||338<=y&&y<=339||358<=y&&y<=359||y==363||y==462||y==464||y==466||y==468||y==470||y==472||y==474||y==476||y==593||y==609||y==708||y==711||713<=y&&y<=715||y==717||y==720||728<=y&&y<=731||y==733||y==735||768<=y&&y<=879||913<=y&&y<=929||931<=y&&y<=937||945<=y&&y<=961||963<=y&&y<=969||y==1025||1040<=y&&y<=1103||y==1105||y==8208||8211<=y&&y<=8214||8216<=y&&y<=8217||8220<=y&&y<=8221||8224<=y&&y<=8226||8228<=y&&y<=8231||y==8240||8242<=y&&y<=8243||y==8245||y==8251||y==8254||y==8308||y==8319||8321<=y&&y<=8324||y==8364||y==8451||y==8453||y==8457||y==8467||y==8470||8481<=y&&y<=8482||y==8486||y==8491||8531<=y&&y<=8532||8539<=y&&y<=8542||8544<=y&&y<=8555||8560<=y&&y<=8569||y==8585||8592<=y&&y<=8601||8632<=y&&y<=8633||y==8658||y==8660||y==8679||y==8704||8706<=y&&y<=8707||8711<=y&&y<=8712||y==8715||y==8719||y==8721||y==8725||y==8730||8733<=y&&y<=8736||y==8739||y==8741||8743<=y&&y<=8748||y==8750||8756<=y&&y<=8759||8764<=y&&y<=8765||y==8776||y==8780||y==8786||8800<=y&&y<=8801||8804<=y&&y<=8807||8810<=y&&y<=8811||8814<=y&&y<=8815||8834<=y&&y<=8835||8838<=y&&y<=8839||y==8853||y==8857||y==8869||y==8895||y==8978||9312<=y&&y<=9449||9451<=y&&y<=9547||9552<=y&&y<=9587||9600<=y&&y<=9615||9618<=y&&y<=9621||9632<=y&&y<=9633||9635<=y&&y<=9641||9650<=y&&y<=9651||9654<=y&&y<=9655||9660<=y&&y<=9661||9664<=y&&y<=9665||9670<=y&&y<=9672||y==9675||9678<=y&&y<=9681||9698<=y&&y<=9701||y==9711||9733<=y&&y<=9734||y==9737||9742<=y&&y<=9743||9748<=y&&y<=9749||y==9756||y==9758||y==9792||y==9794||9824<=y&&y<=9825||9827<=y&&y<=9829||9831<=y&&y<=9834||9836<=y&&y<=9837||y==9839||9886<=y&&y<=9887||9918<=y&&y<=9919||9924<=y&&y<=9933||9935<=y&&y<=9953||y==9955||9960<=y&&y<=9983||y==10045||y==10071||10102<=y&&y<=10111||11093<=y&&y<=11097||12872<=y&&y<=12879||57344<=y&&y<=63743||65024<=y&&y<=65039||y==65533||127232<=y&&y<=127242||127248<=y&&y<=127277||127280<=y&&y<=127337||127344<=y&&y<=127386||917760<=y&&y<=917999||983040<=y&&y<=1048573||1048576<=y&&y<=1114109?"A":"N"},x.characterLength=function(I){var q=this.eastAsianWidth(I);return q=="F"||q=="W"||q=="A"?2:1};function b(I){return I.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}x.length=function(I){for(var q=b(I),_=0,y=0;y<q.length;y++)_=_+this.characterLength(q[y]);return _},x.slice=function(I,q,_){textLen=x.length(I),q=q||0,_=_||1,q<0&&(q=textLen+q),_<0&&(_=textLen+_);for(var y="",B=0,j=b(I),O=0;O<j.length;O++){var K=j[O],z=x.length(K);if(B>=q-(z==2?1:0))if(B+z<=_)y+=K;else break;B+=z}return y}})(n1);var W9=n1.exports,w9=D1(W9),H9=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},J9=D1(H9);function j$($,x={}){if(typeof $!="string"||$.length===0||(x={ambiguousIsNarrow:!0,...x},$=t1($),$.length===0))return 0;$=$.replace(J9()," ");let b=x.ambiguousIsNarrow?1:2,I=0;for(let q of $){let _=q.codePointAt(0);if(_<=31||_>=127&&_<=159||_>=768&&_<=879)continue;switch(w9.eastAsianWidth(q)){case"F":case"W":I+=2;break;case"A":I+=b;break;default:I+=1}}return I}var r$=10,V1=($=0)=>(x)=>`\x1B[${x+$}m`,T1=($=0)=>(x)=>`\x1B[${38+$};5;${x}m`,N1=($=0)=>(x,b,I)=>`\x1B[${38+$};2;${x};${b};${I}m`,X={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(X.modifier);var G9=Object.keys(X.color),S9=Object.keys(X.bgColor);[...G9,...S9];function A9(){let $=new Map;for(let[x,b]of Object.entries(X)){for(let[I,q]of Object.entries(b))X[I]={open:`\x1B[${q[0]}m`,close:`\x1B[${q[1]}m`},b[I]=X[I],$.set(q[0],q[1]);Object.defineProperty(X,x,{value:b,enumerable:!1})}return Object.defineProperty(X,"codes",{value:$,enumerable:!1}),X.color.close="\x1B[39m",X.bgColor.close="\x1B[49m",X.color.ansi=V1(),X.color.ansi256=T1(),X.color.ansi16m=N1(),X.bgColor.ansi=V1(r$),X.bgColor.ansi256=T1(r$),X.bgColor.ansi16m=N1(r$),Object.defineProperties(X,{rgbToAnsi256:{value:(x,b,I)=>x===b&&b===I?x<8?16:x>248?231:Math.round((x-8)/247*24)+232:16+36*Math.round(x/255*5)+6*Math.round(b/255*5)+Math.round(I/255*5),enumerable:!1},hexToRgb:{value:(x)=>{let b=/[a-f\d]{6}|[a-f\d]{3}/i.exec(x.toString(16));if(!b)return[0,0,0];let[I]=b;I.length===3&&(I=[...I].map((_)=>_+_).join(""));let q=Number.parseInt(I,16);return[q>>16&255,q>>8&255,q&255]},enumerable:!1},hexToAnsi256:{value:(x)=>X.rgbToAnsi256(...X.hexToRgb(x)),enumerable:!1},ansi256ToAnsi:{value:(x)=>{if(x<8)return 30+x;if(x<16)return 90+(x-8);let b,I,q;if(x>=232)b=((x-232)*10+8)/255,I=b,q=b;else{x-=16;let B=x%36;b=Math.floor(x/36)/5,I=Math.floor(B/6)/5,q=B%6/5}let _=Math.max(b,I,q)*2;if(_===0)return 30;let y=30+(Math.round(q)<<2|Math.round(I)<<1|Math.round(b));return _===2&&(y+=60),y},enumerable:!1},rgbToAnsi:{value:(x,b,I)=>X.ansi256ToAnsi(X.rgbToAnsi256(x,b,I)),enumerable:!1},hexToAnsi:{value:(x)=>X.ansi256ToAnsi(X.hexToAnsi256(x)),enumerable:!1}}),X}var X9=A9(),d$=new Set(["\x1B","›"]),L9=39,s$="\x07",i1="[",E9="]",r1="m",a$=`${E9}8;;`,M1=($)=>`${d$.values().next().value}${i1}${$}${r1}`,F1=($)=>`${d$.values().next().value}${a$}${$}${s$}`,d9=($)=>$.split(" ").map((x)=>j$(x)),p$=($,x,b)=>{let I=[...x],q=!1,_=!1,y=j$(t1($[$.length-1]));for(let[B,j]of I.entries()){let O=j$(j);if(y+O<=b?$[$.length-1]+=j:($.push(j),y=0),d$.has(j)&&(q=!0,_=I.slice(B+1).join("").startsWith(a$)),q){_?j===s$&&(q=!1,_=!1):j===r1&&(q=!1);continue}y+=O,y===b&&B<I.length-1&&($.push(""),y=0)}!y&&$[$.length-1].length>0&&$.length>1&&($[$.length-2]+=$.pop())},l9=($)=>{let x=$.split(" "),b=x.length;for(;b>0&&!(j$(x[b-1])>0);)b--;return b===x.length?$:x.slice(0,b).join(" ")+x.slice(b).join("")},h9=($,x,b={})=>{if(b.trim!==!1&&$.trim()==="")return"";let I="",q,_,y=d9($),B=[""];for(let[O,K]of $.split(" ").entries()){b.trim!==!1&&(B[B.length-1]=B[B.length-1].trimStart());let z=j$(B[B.length-1]);if(O!==0&&(z>=x&&(b.wordWrap===!1||b.trim===!1)&&(B.push(""),z=0),(z>0||b.trim===!1)&&(B[B.length-1]+=" ",z++)),b.hard&&y[O]>x){let W=x-z,Y=1+Math.floor((y[O]-W-1)/x);Math.floor((y[O]-1)/x)<Y&&B.push(""),p$(B,K,x);continue}if(z+y[O]>x&&z>0&&y[O]>0){if(b.wordWrap===!1&&z<x){p$(B,K,x);continue}B.push("")}if(z+y[O]>x&&b.wordWrap===!1){p$(B,K,x);continue}B[B.length-1]+=K}b.trim!==!1&&(B=B.map((O)=>l9(O)));let j=[...B.join(`
3
+ `)];for(let[O,K]of j.entries()){if(I+=K,d$.has(K)){let{groups:W}=new RegExp(`(?:\\${i1}(?<code>\\d+)m|\\${a$}(?<uri>.*)${s$})`).exec(j.slice(O).join(""))||{groups:{}};if(W.code!==void 0){let Y=Number.parseFloat(W.code);q=Y===L9?void 0:Y}else W.uri!==void 0&&(_=W.uri.length===0?void 0:W.uri)}let z=X9.codes.get(Number(q));j[O+1]===`
4
+ `?(_&&(I+=F1("")),q&&z&&(I+=M1(z))):K===`
5
+ `&&(q&&z&&(I+=M1(q)),_&&(I+=F1(_)))}return I};function f1($,x,b){return String($).normalize().replace(/\r\n/g,`
6
+ `).split(`
7
+ `).map((I)=>h9(I,x,b)).join(`
8
+ `)}var R9=Object.defineProperty,P9=($,x,b)=>(x in $)?R9($,x,{enumerable:!0,configurable:!0,writable:!0,value:b}):$[x]=b,f=($,x,b)=>(P9($,typeof x!="symbol"?x+"":x,b),b);function C9($,x){if($===x)return;let b=$.split(`
9
+ `),I=x.split(`
10
+ `),q=[];for(let _=0;_<Math.max(b.length,I.length);_++)b[_]!==I[_]&&q.push(_);return q}var p1=Symbol("clack:cancel");function P($){return $===p1}function L$($,x){$.isTTY&&$.setRawMode(x)}var v1=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),u9=new Set(["up","down","left","right","space","enter"]);class Z${constructor({render:$,input:x=m1,output:b=c1,...I},q=!0){f(this,"input"),f(this,"output"),f(this,"rl"),f(this,"opts"),f(this,"_track",!1),f(this,"_render"),f(this,"_cursor",0),f(this,"state","initial"),f(this,"value"),f(this,"error",""),f(this,"subscribers",new Map),f(this,"_prevFrame",""),this.opts=I,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=$.bind(this),this._track=q,this.input=x,this.output=b}prompt(){let $=new Q9(0);return $._write=(x,b,I)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),I()},this.input.pipe($),this.rl=u1.createInterface({input:this.input,output:$,tabSize:2,prompt:"",escapeCodeTimeout:50}),u1.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),L$(this.input,!0),this.output.on("resize",this.render),this.render(),new Promise((x,b)=>{this.once("submit",()=>{this.output.write(l.cursor.show),this.output.off("resize",this.render),L$(this.input,!1),x(this.value)}),this.once("cancel",()=>{this.output.write(l.cursor.show),this.output.off("resize",this.render),L$(this.input,!1),x(p1)})})}on($,x){let b=this.subscribers.get($)??[];b.push({cb:x}),this.subscribers.set($,b)}once($,x){let b=this.subscribers.get($)??[];b.push({cb:x,once:!0}),this.subscribers.set($,b)}emit($,...x){let b=this.subscribers.get($)??[],I=[];for(let q of b)q.cb(...x),q.once&&I.push(()=>b.splice(b.indexOf(q),1));for(let q of I)q()}unsubscribe(){this.subscribers.clear()}onKeypress($,x){if(this.state==="error"&&(this.state="active"),x?.name&&!this._track&&v1.has(x.name)&&this.emit("cursor",v1.get(x.name)),x?.name&&u9.has(x.name)&&this.emit("cursor",x.name),$&&($.toLowerCase()==="y"||$.toLowerCase()==="n")&&this.emit("confirm",$.toLowerCase()==="y"),$==="\t"&&this.opts.placeholder&&(this.value||(this.rl.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),$&&this.emit("key",$.toLowerCase()),x?.name==="return"){if(this.opts.validate){let b=this.opts.validate(this.value);b&&(this.error=b,this.state="error",this.rl.write(this.value))}this.state!=="error"&&(this.state="submit")}$==="\x03"&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
11
+ `),L$(this.input,!1),this.rl.close(),this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let $=f1(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
12
+ `).length-1;this.output.write(l.cursor.move(-999,$*-1))}render(){let $=f1(this._render(this)??"",process.stdout.columns,{hard:!0});if($!==this._prevFrame){if(this.state==="initial")this.output.write(l.cursor.hide);else{let x=C9(this._prevFrame,$);if(this.restoreCursor(),x&&x?.length===1){let b=x[0];this.output.write(l.cursor.move(0,b)),this.output.write(l.erase.lines(1));let I=$.split(`
13
+ `);this.output.write(I[b]),this._prevFrame=$,this.output.write(l.cursor.move(0,I.length-b-1));return}else if(x&&x?.length>1){let b=x[0];this.output.write(l.cursor.move(0,b)),this.output.write(l.erase.down());let I=$.split(`
14
+ `).slice(b);this.output.write(I.join(`
15
+ `)),this._prevFrame=$;return}this.output.write(l.erase.down())}this.output.write($),this.state==="initial"&&(this.state="active"),this._prevFrame=$}}}class o$ extends Z${get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor($){super($,!1),this.value=!!$.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",(x)=>{this.output.write(l.cursor.move(0,-1)),this.value=x,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var V9=Object.defineProperty,T9=($,x,b)=>(x in $)?V9($,x,{enumerable:!0,configurable:!0,writable:!0,value:b}):$[x]=b,k1=($,x,b)=>(T9($,typeof x!="symbol"?x+"":x,b),b),s1=class extends Z${constructor($){super($,!1),k1(this,"options"),k1(this,"cursor",0),this.options=$.options,this.value=[...$.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:x})=>x===$.cursorAt),0),this.on("key",(x)=>{x==="a"&&this.toggleAll()}),this.on("cursor",(x)=>{switch(x){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case"space":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){let $=this.value.length===this.options.length;this.value=$?[]:this.options.map((x)=>x.value)}toggleValue(){let $=this.value.includes(this._value);this.value=$?this.value.filter((x)=>x!==this._value):[...this.value,this._value]}};var N9=Object.defineProperty,M9=($,x,b)=>(x in $)?N9($,x,{enumerable:!0,configurable:!0,writable:!0,value:b}):$[x]=b,g1=($,x,b)=>(M9($,typeof x!="symbol"?x+"":x,b),b),a1=class extends Z${constructor($){super($,!1),g1(this,"options"),g1(this,"cursor",0),this.options=$.options,this.cursor=this.options.findIndex(({value:x})=>x===$.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",(x)=>{switch(x){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}};var F9=Object.defineProperty,f9=($,x,b)=>(x in $)?F9($,x,{enumerable:!0,configurable:!0,writable:!0,value:b}):$[x]=b,v9=($,x,b)=>(f9($,typeof x!="symbol"?x+"":x,b),b);class e$ extends Z${constructor($){super($),v9(this,"valueWithCursor",""),this.on("finalize",()=>{this.value||(this.value=$.defaultValue),this.valueWithCursor=this.value}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.value}${E$.default.inverse(E$.default.hidden("_"))}`;else{let x=this.value.slice(0,this.cursor),b=this.value.slice(this.cursor);this.valueWithCursor=`${x}${E$.default.inverse(b[0])}${b.slice(1)}`}})}get cursor(){return this._cursor}}var k9=globalThis.process.platform.startsWith("win");function o1({input:$=m1,output:x=c1,overwrite:b=!0,hideCursor:I=!0}={}){let q=s.createInterface({input:$,output:x,prompt:"",tabSize:1});s.emitKeypressEvents($,q),$.isTTY&&$.setRawMode(!0);let _=(y,{name:B})=>{if(String(y)==="\x03"){I&&x.write(l.cursor.show),process.exit(0);return}if(!b)return;s.moveCursor(x,B==="return"?0:-1,B==="return"?-1:0,()=>{s.clearLine(x,1,()=>{$.once("keypress",_)})})};return I&&x.write(l.cursor.hide),$.once("keypress",_),()=>{$.off("keypress",_),I&&x.write(l.cursor.show),$.isTTY&&!k9&&$.setRawMode(!1),q.terminal=!1,q.close()}}var Z=N(i(),1),b$=N(n$(),1);import m from"node:process";function g9(){return m.platform!=="win32"?m.env.TERM!=="linux":Boolean(m.env.CI)||Boolean(m.env.WT_SESSION)||Boolean(m.env.TERMINUS_SUBLIME)||m.env.ConEmuTask==="{cmd::Cmder}"||m.env.TERM_PROGRAM==="Terminus-Sublime"||m.env.TERM_PROGRAM==="vscode"||m.env.TERM==="xterm-256color"||m.env.TERM==="alacritty"||m.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var x1=g9(),L=($,x)=>x1?$:x,m9=L("◆","*"),x0=L("■","x"),y0=L("▲","x"),I1=L("◇","o"),c9=L("┌","T"),J=L("│","|"),a=L("└","—"),y1=L("●",">"),b1=L("○"," "),t9=L("◻","[•]"),e1=L("◼","[+]"),D9=L("◻","[ ]"),Q4=L("▪","•"),$0=L("─","-"),n9=L("╮","+"),i9=L("├","+"),r9=L("╯","+"),U4=L("●","•"),Y4=L("◆","*"),W4=L("▲","!"),w4=L("■","x"),l$=($)=>{switch($){case"initial":case"active":return Z.default.cyan(m9);case"cancel":return Z.default.red(x0);case"error":return Z.default.yellow(y0);case"submit":return Z.default.green(I1)}},I$=($)=>new e$({validate:$.validate,placeholder:$.placeholder,defaultValue:$.defaultValue,initialValue:$.initialValue,render(){let x=`${Z.default.gray(J)}
16
+ ${l$(this.state)} ${$.message}
17
+ `,b=$.placeholder?Z.default.inverse($.placeholder[0])+Z.default.dim($.placeholder.slice(1)):Z.default.inverse(Z.default.hidden("_")),I=this.value?this.valueWithCursor:b;switch(this.state){case"error":return`${x.trim()}
18
+ ${Z.default.yellow(J)} ${I}
19
+ ${Z.default.yellow(a)} ${Z.default.yellow(this.error)}
20
+ `;case"submit":return`${x}${Z.default.gray(J)} ${Z.default.dim(this.value||$.placeholder)}`;case"cancel":return`${x}${Z.default.gray(J)} ${Z.default.strikethrough(Z.default.dim(this.value??""))}${this.value?.trim()?`
21
+ `+Z.default.gray(J):""}`;default:return`${x}${Z.default.cyan(J)} ${I}
22
+ ${Z.default.cyan(a)}
23
+ `}}}).prompt();var c=($)=>{let x=$.active??"Yes",b=$.inactive??"No";return new o$({active:x,inactive:b,initialValue:$.initialValue??!0,render(){let I=`${Z.default.gray(J)}
24
+ ${l$(this.state)} ${$.message}
25
+ `,q=this.value?x:b;switch(this.state){case"submit":return`${I}${Z.default.gray(J)} ${Z.default.dim(q)}`;case"cancel":return`${I}${Z.default.gray(J)} ${Z.default.strikethrough(Z.default.dim(q))}
26
+ ${Z.default.gray(J)}`;default:return`${I}${Z.default.cyan(J)} ${this.value?`${Z.default.green(y1)} ${x}`:`${Z.default.dim(b1)} ${Z.default.dim(x)}`} ${Z.default.dim("/")} ${this.value?`${Z.default.dim(b1)} ${Z.default.dim(b)}`:`${Z.default.green(y1)} ${b}`}
27
+ ${Z.default.cyan(a)}
28
+ `}}}).prompt()},M=($)=>{let x=(I,q)=>{let _=I.label??String(I.value);return q==="active"?`${Z.default.green(y1)} ${_} ${I.hint?Z.default.dim(`(${I.hint})`):""}`:q==="selected"?`${Z.default.dim(_)}`:q==="cancelled"?`${Z.default.strikethrough(Z.default.dim(_))}`:`${Z.default.dim(b1)} ${Z.default.dim(_)}`},b=0;return new a1({options:$.options,initialValue:$.initialValue,render(){let I=`${Z.default.gray(J)}
29
+ ${l$(this.state)} ${$.message}
30
+ `;switch(this.state){case"submit":return`${I}${Z.default.gray(J)} ${x(this.options[this.cursor],"selected")}`;case"cancel":return`${I}${Z.default.gray(J)} ${x(this.options[this.cursor],"cancelled")}
31
+ ${Z.default.gray(J)}`;default:{let q=$.maxItems===void 0?1/0:Math.max($.maxItems,5);this.cursor>=b+q-3?b=Math.max(Math.min(this.cursor-q+3,this.options.length-q),0):this.cursor<b+2&&(b=Math.max(this.cursor-2,0));let _=q<this.options.length&&b>0,y=q<this.options.length&&b+q<this.options.length;return`${I}${Z.default.cyan(J)} ${this.options.slice(b,b+q).map((B,j,O)=>j===0&&_?Z.default.dim("..."):j===O.length-1&&y?Z.default.dim("..."):x(B,j+b===this.cursor?"active":"inactive")).join(`
32
+ ${Z.default.cyan(J)} `)}
33
+ ${Z.default.cyan(a)}
34
+ `}}}}).prompt()};var b0=($)=>{let x=(b,I)=>{let q=b.label??String(b.value);return I==="active"?`${Z.default.cyan(t9)} ${q} ${b.hint?Z.default.dim(`(${b.hint})`):""}`:I==="selected"?`${Z.default.green(e1)} ${Z.default.dim(q)}`:I==="cancelled"?`${Z.default.strikethrough(Z.default.dim(q))}`:I==="active-selected"?`${Z.default.green(e1)} ${q} ${b.hint?Z.default.dim(`(${b.hint})`):""}`:I==="submitted"?`${Z.default.dim(q)}`:`${Z.default.dim(D9)} ${Z.default.dim(q)}`};return new s1({options:$.options,initialValues:$.initialValues,required:$.required??!0,cursorAt:$.cursorAt,validate(b){if(this.required&&b.length===0)return`Please select at least one option.
35
+ ${Z.default.reset(Z.default.dim(`Press ${Z.default.gray(Z.default.bgWhite(Z.default.inverse(" space ")))} to select, ${Z.default.gray(Z.default.bgWhite(Z.default.inverse(" enter ")))} to submit`))}`},render(){let b=`${Z.default.gray(J)}
36
+ ${l$(this.state)} ${$.message}
37
+ `;switch(this.state){case"submit":return`${b}${Z.default.gray(J)} ${this.options.filter(({value:I})=>this.value.includes(I)).map((I)=>x(I,"submitted")).join(Z.default.dim(", "))||Z.default.dim("none")}`;case"cancel":{let I=this.options.filter(({value:q})=>this.value.includes(q)).map((q)=>x(q,"cancelled")).join(Z.default.dim(", "));return`${b}${Z.default.gray(J)} ${I.trim()?`${I}
38
+ ${Z.default.gray(J)}`:""}`}case"error":{let I=this.error.split(`
39
+ `).map((q,_)=>_===0?`${Z.default.yellow(a)} ${Z.default.yellow(q)}`:` ${q}`).join(`
40
+ `);return b+Z.default.yellow(J)+" "+this.options.map((q,_)=>{let y=this.value.includes(q.value),B=_===this.cursor;return B&&y?x(q,"active-selected"):y?x(q,"selected"):x(q,B?"active":"inactive")}).join(`
41
+ ${Z.default.yellow(J)} `)+`
42
+ `+I+`
43
+ `}default:return`${b}${Z.default.cyan(J)} ${this.options.map((I,q)=>{let _=this.value.includes(I.value),y=q===this.cursor;return y&&_?x(I,"active-selected"):_?x(I,"selected"):x(I,y?"active":"inactive")}).join(`
44
+ ${Z.default.cyan(J)} `)}
45
+ ${Z.default.cyan(a)}
46
+ `}}}).prompt()};var $1=($)=>$.replace(p9(),""),E=($="",x="")=>{let b=`
47
+ ${$}
48
+ `.split(`
49
+ `),I=$1(x).length,q=Math.max(b.reduce((y,B)=>(B=$1(B),B.length>y?B.length:y),0),I)+2,_=b.map((y)=>`${Z.default.gray(J)} ${Z.default.dim(y)}${" ".repeat(q-$1(y).length)}${Z.default.gray(J)}`).join(`
50
+ `);process.stdout.write(`${Z.default.gray(J)}
51
+ ${Z.default.green(I1)} ${Z.default.reset(x)} ${Z.default.gray($0.repeat(Math.max(q-I-1,1))+n9)}
52
+ ${_}
53
+ ${Z.default.gray(i9+$0.repeat(q+2)+r9)}
54
+ `)},q$=($="")=>{process.stdout.write(`${Z.default.gray(a)} ${Z.default.red($)}
55
+
56
+ `)},I0=($="")=>{process.stdout.write(`${Z.default.gray(c9)} ${$}
57
+ `)},v=($="")=>{process.stdout.write(`${Z.default.gray(J)}
58
+ ${Z.default.gray(a)} ${$}
59
+
60
+ `)};var e=()=>{let $=x1?["◒","◐","◓","◑"]:["•","o","O","0"],x=x1?80:120,b,I,q=!1,_="",y=(K="")=>{q=!0,b=o1(),_=K.replace(/\.+$/,""),process.stdout.write(`${Z.default.gray(J)}
61
+ `);let z=0,W=0;I=setInterval(()=>{let Y=Z.default.magenta($[z]),F=".".repeat(Math.floor(W)).slice(0,3);process.stdout.write(b$.cursor.move(-999,0)),process.stdout.write(b$.erase.down(1)),process.stdout.write(`${Y} ${_}${F}`),z=z+1<$.length?z+1:0,W=W<$.length?W+0.125:0},x)},B=(K="",z=0)=>{_=K??_,q=!1,clearInterval(I);let W=z===0?Z.default.green(I1):z===1?Z.default.red(x0):Z.default.red(y0);process.stdout.write(b$.cursor.move(-999,0)),process.stdout.write(b$.erase.down(1)),process.stdout.write(`${W} ${_}
62
+ `),b()},j=(K="")=>{_=K??_},O=(K)=>{let z=K>1?"Something went wrong":"Canceled";q&&B(z,K)};return process.on("uncaughtExceptionMonitor",()=>O(2)),process.on("unhandledRejection",()=>O(2)),process.on("SIGINT",()=>O(1)),process.on("SIGTERM",()=>O(1)),process.on("exit",O),{start:y,stop:B,message:j}};function p9(){let $=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp($,"g")}import{readFile as yx,writeFile as bx}from"node:fs/promises";import{join as Ix}from"node:path";var o=N(i(),1);var h$=N(i(),1);var O$={name:"workspace-helper",version:"1.0.4-alpha",description:"CLI tool to detect and fix mismatched dependency versions in monorepos",keywords:["monorepo","dependency","version","align","cli"],bugs:{url:"https://github.com/nyambogahezron/workspace-helper/issues"},homepage:"https://github.com/nyambogahezron/workspace-helper#readme",private:!1,scripts:{build:"bun build ./src/index.ts --outdir ./dist --target=node --minify && tsc --emitDeclarationOnly --declaration",dev:"bun run ./src/index.ts",start:"bun run ./dist/index.js",format:"biome format --write .",lint:"biome lint --write .",prepare:"husky",prepublishOnly:"npm run build"},main:"./dist/index.js",types:"./dist/src/index.d.ts",files:["dist"],bin:{wh:"dist/index.js","workspace-helper":"dist/index.js",wva:"dist/index.js","align-versions":"dist/index.js"},repository:{type:"git",url:"git+https://github.com/nyambogahezron/workspace-helper.git"},author:"Hezron Nyamboga <hezronnyamboga01@gmail.com>",license:"MIT",devDependencies:{"@biomejs/biome":"2.3.15","@clack/prompts":"^0.7.0","@types/bun":"^1.3.9","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/semver":"^7.7.1",husky:"^9.1.7",jest:"^30.2.0",picocolors:"^1.1.1",semver:"^7.7.4","ts-jest":"^29.4.6",typescript:"^5.8.3"}};function a9($){return $.replace(/\^|~/,"").split(".")}var o9=`
63
+ __ __ __
64
+ / \\ / | / |
65
+ $$ \\ /$$/______ $$ |__ ______ ______ ______
66
+ $$ \\/$$// \\ $$ | / \\ / \\ / \\
67
+ $$ $$/($$$$$$ | $$$$$$| /$$$$$$ |$$$$$$ |/$$$$$$ |
68
+ $$$$/ / $$ | $$ | | $$ $$ |$$ | $$/ $$ $$ |
69
+ $$ | /$$$$$$$ | $$ | | $$$$$$$$/ $$ | $$$$$$$$/
70
+ $$ | $$ $$ | $$ | | $$ |$$ | $$ |
71
+ $$/ $$$$$$$/ $$/ $$$$$$$/ $$/ $$$$$$$/
72
+ `;function K$(){let $=a9(O$.version);console.log(h$.default.cyan(h$.default.bold(o9))),console.log(h$.default.dim(`v${$}`)),console.log("")}var G=N(i(),1);import{existsSync as R$,readFileSync as e9}from"node:fs";import{join as $x}from"node:path";async function z$($){try{let{spawn:x}=await import("node:child_process");return(await new Promise((I,q)=>{let _=x("npm",["view",$,"version"],{stdio:["pipe","pipe","pipe"]}),y="",B="";_.stdout?.on("data",(j)=>{y+=j.toString()}),_.stderr?.on("data",(j)=>{B+=j.toString()}),_.on("close",(j)=>{if(j===0)I(y.trim());else q(Error(B||"Failed to fetch package info"))}),setTimeout(()=>{_.kill(),q(Error("Timeout: npm request took too long"))},1e4)})).trim()}catch(x){return null}}function q0($,x){let b=$.replace(/[\^~]/g,"");return!x.map((q)=>q.replace(/[\^~]/g,"")).includes(b)}async function P$($,x){let b=new Map,I=$x(x,"package.json");if(R$(I))try{if(JSON.parse(e9(I,"utf-8")).workspaces)return b.set(x,$),Array.from(b.entries()).map(([_,y])=>({path:_,workspaces:y}))}catch(q){}return $.forEach((q)=>{let _=q;if(!b.has(_))b.set(_,[]);b.get(_)?.push(q)}),Array.from(b.entries()).map(([q,_])=>({path:q,workspaces:_}))}async function C$(){if(R$("pnpm-lock.yaml"))return"pnpm install";if(R$("yarn.lock"))return"yarn install";if(R$("bun.lockb"))return"bun install";return"npm install"}class q1{workspaces;executeSyncVersions;installPackages;constructor($,x,b){this.workspaces=$;this.executeSyncVersions=x;this.installPackages=b}async findAndResolveConflicts(){let $=e();$.start("Analyzing package versions across workspaces...");let x=new Map;this.workspaces.forEach((q)=>{let _={...q.packageJson.dependencies,...q.packageJson.devDependencies,...q.packageJson.peerDependencies};Object.entries(_).forEach(([y,B])=>{if(!x.has(y))x.set(y,new Map);let j=x.get(y);if(!j)return;if(!j.has(B))j.set(B,[]);j.get(B)?.push(q)})});let b=Array.from(x.entries()).filter(([,q])=>q.size>1).sort(([q],[_])=>q.localeCompare(_));if($.stop("Analysis completed"),b.length===0)E("No version conflicts found! All packages have consistent versions across workspaces.","All Clear"),process.exit(0);this.displayConflictsSummary(b);let I=await M({message:"How would you like to resolve conflicts?",options:[{value:"all",label:"Resolve all conflicts interactively"},{value:"specific",label:"Choose specific packages to resolve"},{value:"auto",label:"Auto-resolve to most common versions"},{value:"latest",label:"Auto-resolve all to latest versions"}]});if(I==="all")await this.resolveAllConflicts(b);else if(I==="specific")await this.resolveSpecificConflicts(b);else if(I==="auto")await this.autoResolveToMostCommon(b);else if(I==="latest")await this.autoResolveToLatest(b)}displayConflictsSummary($){let x=`
73
+ `;x+=G.default.red(`Found ${$.length} package${$.length>1?"s":""} with version conflicts:
74
+
75
+ `),$.forEach(([b,I])=>{x+=G.default.bold(G.default.yellow(`${b}
76
+ `)),Array.from(I.entries()).forEach(([q,_])=>{x+=` ${G.default.cyan(q)} ${G.default.dim(`(${_.length} workspace${_.length>1?"s":""})
77
+ `)}`,_.forEach((y)=>{x+=` ${G.default.gray("├─")} ${y.name}
78
+ `})}),x+=`
79
+ `}),E(x,"Version Conflicts Detected")}async resolveAllConflicts($){let x=await M({message:"How would you like to resolve all conflicts?",options:[{value:"inuse",label:" Choose a version in use for each package (bulk)"},{value:"latest",label:"Use latest version from npm for all"},{value:"interactive",label:"Resolve each conflict interactively (default)"}]}),b=[];if(x==="inuse")b=await this.resolveBulkInUse($);else if(x==="latest")b=await this.resolveBulkLatest($);else b=await this.resolveInteractively($);if(b.length>0){if(await c({message:"Install packages now? (Recommended after resolving conflicts)",initialValue:!0}))await this.installPackages(b)}process.exit(0)}async resolveBulkInUse($){let x=[];for(let[b,I]of $){let q=Array.from(I.keys()).map((B)=>({value:B,label:`${B} ${G.default.dim(`(used in ${I.get(B)?.length??0} workspace${(I.get(B)?.length??0)>1?"s":""})`)}`}));q.push({value:"latest",label:`${G.default.green("Use latest from npm")}`}),q.push({value:"skip",label:`${G.default.gray("Skip (do nothing)")}`});let _=await M({message:`Select version to use for ${b}:`,options:q});if(_==="skip"){E(`Skipped resolution for ${b}`,"Skipped");continue}let y=_;if(_==="latest")y=await z$(b)||"latest";await this.executeSyncVersions(b,y,I,!1,!0),x.push(...Array.from(I.values()).flat().map((B)=>B.path))}return v(G.default.green(" All conflicts resolved to chosen in-use versions!")),[...new Set(x)]}async resolveBulkLatest($){let x=[];for(let[b,I]of $){let _=await z$(b)||"latest";await this.executeSyncVersions(b,_,I,!1,!0),x.push(...Array.from(I.values()).flat().map((y)=>y.path))}return v(G.default.green(" All conflicts resolved to latest versions!")),[...new Set(x)]}async resolveInteractively($){let x=[];for(let[b,I]of $){let q=await this.resolvePackageConflict(b,I);x.push(...q)}return v(G.default.green(" All conflicts resolved successfully!")),[...new Set(x)]}async resolveSpecificConflicts($){let x=await b0({message:"Select packages to resolve:",options:$.map(([I,q])=>({value:I,label:` ${I} ${G.default.dim(`(${q.size} versions)`)}`}))}),b=$.filter(([I])=>x.includes(I));for(let[I,q]of b)await this.resolvePackageConflict(I,q);v(G.default.green(" Selected conflicts resolved successfully!")),process.exit(0)}async resolvePackageConflict($,x){let b=`
80
+ `;b+=G.default.bold(G.default.cyan(` Resolving: ${$}
81
+
82
+ `)),Array.from(x.entries()).forEach(([O,K])=>{b+=G.default.yellow(`Version ${O}:
83
+ `),K.forEach((z)=>{b+=` ${G.default.gray("├─")} ${z.name}
84
+ `}),b+=`
85
+ `}),E(b,`Conflict Resolution for ${$}`);let I=await z$($),q=Array.from(x.keys()),_=I?q0(I,q):!1;if(I){let O=`
86
+ Latest version on npm: ${G.default.green(I)}${_?G.default.yellow("(newer than current versions)"):G.default.gray(" (already in use)")}
87
+ `;E(O,"NPM Registry Info")}let y=[...Array.from(x.keys()).map((O)=>({value:O,label:`${O} ${G.default.dim(`(used in ${x.get(O)?.length??0} workspace${(x.get(O)?.length??0)>1?"s":""})`)}`})),...I?[{value:I,label:`${I} ${G.default.green("(latest from npm)")} ${_?G.default.yellow("[NEW]"):""}`}]:[],{value:"custom",label:" Enter custom version"},{value:"skip",label:" Skip this package"}],B=await M({message:`Select target version for ${$}:`,options:y});if(B==="skip")return E(`Skipped resolution for ${$}`,"Skipped"),[];let j=B;if(B==="custom")j=await I$({message:`Enter custom version for ${$}:`,placeholder:"e.g., ^5.6.0, latest, ~4.0.0",validate:(K)=>K.length===0?"Version is required":void 0});return await this.executeSyncVersions($,j,x,!1,!0),Array.from(x.values()).flat().map((O)=>O.path)}async autoResolveToMostCommon($){let x=[];for(let[b,I]of $){let q="",_=0;for(let[y,B]of I.entries())if(B.length>_)_=B.length,q=y;await this.executeSyncVersions(b,q,I,!1,!0),x.push(...Array.from(I.values()).flat().map((y)=>y.path))}return v(G.default.green(" All conflicts resolved to most common versions!")),[...new Set(x)]}async autoResolveToLatest($){let x=[];for(let[b,I]of $){let _=await z$(b)||"latest";await this.executeSyncVersions(b,_,I,!1,!0),x.push(...Array.from(I.values()).flat().map((y)=>y.path))}return v(G.default.green(" All conflicts resolved to latest versions!")),[...new Set(x)]}}var _1=N(i(),1);class B1{workspaces;constructor($){this.workspaces=$}async syncPackageVersions(){let $=await I$({message:"Enter package name to sync:",placeholder:"e.g., typescript, react"});if(P($)){q$("Operation cancelled");return}let x=new Map;if(this.workspaces.forEach((_)=>{let y={..._.packageJson.dependencies,..._.packageJson.devDependencies};if(y[$]){let B=y[$];if(!x.has(B))x.set(B,[]);x.get(B)?.push(_)}}),x.size===0){E(`Package "${String($)}" not found in any workspace`,"No Package Found");return}if(x.size===1){E(`Package "${String($)}" already has consistent version: ${Array.from(x.keys())[0]}`,"Already Synced");return}let b=`
88
+ `;x.forEach((_,y)=>{b+=_1.default.yellow(`Version ${y}:
89
+ `),_.forEach((B)=>{b+=` ${_1.default.gray("├─")} ${B.name}
90
+ `}),b+=`
91
+ `}),E(b,`Current versions of "${String($)}"`);let I=await M({message:"Select version to sync to:",options:Array.from(x.keys()).map((_)=>({value:_,label:`${_} (used in ${x.get(_)?.length??0} workspace${(x.get(_)?.length??0)>1?"s":""})`}))});if(P(I)){q$("Operation cancelled");return}let q=await c({message:"Run in dry-run mode?",initialValue:!0});if(P(q)){q$("Operation cancelled");return}return{packageName:$,targetVersion:I,versions:x,dryRun:q}}}import{relative as _0}from"node:path";var T=N(i(),1);class j1{rootPath;constructor($){this.rootPath=$}getTypeIcon($){return $==="app"?"[APP]":$==="package"?"":"[ROOT]"}hasPackage($,x){return!!{...$.packageJson.dependencies,...$.packageJson.devDependencies,...$.packageJson.peerDependencies}[x]}async showManualInstallInstructions($){let b=await C$(),I=`
92
+ `;I+=T.default.yellow(`Manual Installation Instructions:
93
+
94
+ `),I+=T.default.gray(`Run the following commands to install packages manually:
95
+
96
+ `),(await P$($,this.rootPath)).forEach(({path:_})=>{let y=_0(this.rootPath,_);I+=T.default.cyan(`[DIR] ${y||"root"}:
97
+ `),I+=T.default.gray(` cd ${y||"."}
98
+ `),I+=T.default.green(` ${b}
99
+
100
+ `)}),E(I,"Manual Installation")}displayPackageList($){let x=`
101
+ `;Object.entries($).sort(([b],[I])=>b.localeCompare(I)).forEach(([b,I])=>{x+=T.default.bold(T.default.cyan(` ${b}
102
+ `)),Array.from(I.entries()).sort(([q],[_])=>q.localeCompare(_)).forEach(([q,_])=>{x+=` ${T.default.yellow(q)} ${T.default.dim(`(${_.length} workspace${_.length>1?"s":""})
103
+ `)}`,_.forEach((y)=>{x+=` ${T.default.gray("├─")} ${y.name}
104
+ `})}),x+=`
105
+ `}),E(x,"All Packages")}formatVersionChange($,x){return`${T.default.dim(String($))} → ${T.default.green(String(x))}`}formatWorkspacePath($){let x=_0(this.rootPath,$.path);return`${this.getTypeIcon($.type)} ${$.name} ${T.default.dim(`(${x})`)}`}}import{existsSync as Q$}from"node:fs";import{readdir as B0,readFile as Z1}from"node:fs/promises";import{join as $$,relative as xx}from"node:path";var _$=N(i(),1);class O1{rootPath;workspaces=[];constructor($){this.rootPath=$}async scanWorkspaces(){let $=e();$.start(" Scanning workspace for package.json files...");try{let x=$$(this.rootPath,"package.json");if(Q$(x)){let q=JSON.parse(await Z1(x,"utf-8"));this.workspaces.push({path:this.rootPath,name:q.name||"root",type:"root",packageJson:q})}let b=$$(this.rootPath,"apps");if(Q$(b)){let q=await B0(b);for(let _ of q){let y=$$(b,_),B=$$(y,"package.json");if(Q$(B)){let j=JSON.parse(await Z1(B,"utf-8"));this.workspaces.push({path:y,name:j.name||_,type:"app",packageJson:j})}}}let I=$$(this.rootPath,"packages");if(Q$(I)){let q=await B0(I);for(let _ of q){let y=$$(I,_),B=$$(y,"package.json");if(Q$(B)){let j=JSON.parse(await Z1(B,"utf-8"));this.workspaces.push({path:y,name:j.name||_,type:"package",packageJson:j})}}}return $.stop(`Found ${this.workspaces.length} workspaces`),this.workspaces}catch(x){throw $.stop("Failed to scan workspaces"),x}}displayWorkspaces(){let $=this.workspaces.reduce((b,I)=>{if(!b[I.type])b[I.type]=[];return b[I.type].push(I),b},{}),x=`
106
+ `;Object.entries($).forEach(([b,I])=>{let q=b==="app"?"[APP]":b==="package"?"":"[ROOT]";x+=_$.default.bold(_$.default.cyan(`${q} ${b.toUpperCase()}S:
107
+ `)),I.forEach((_)=>{let y=xx(this.rootPath,_.path);x+=` ${_$.default.gray("├─")} ${_$.default.white(_.name)} ${_$.default.dim(`(${y})
108
+ `)}`}),x+=`
109
+ `}),E(x,"Available Workspaces")}getWorkspaces(){return this.workspaces}setWorkspaces($){this.workspaces=$}findWorkspaceByName($){return this.workspaces.find((x)=>x.name===$)}getWorkspacesByType($){return this.workspaces.filter((x)=>x.type===$)}getAllPackages(){let $=new Map;return this.workspaces.forEach((x)=>{let b={...x.packageJson.dependencies,...x.packageJson.devDependencies,...x.packageJson.peerDependencies};Object.entries(b).forEach(([I,q])=>{if(!$.has(I))$.set(I,new Map);let _=$.get(I);if(!_)return;if(!_.has(q))_.set(q,[]);_.get(q)?.push(x)})}),Object.fromEntries($)}}class j0{rootPath;workspaceManager;packageOps;conflictResolver;ui;constructor($=process.cwd()){this.rootPath=$;this.workspaceManager=new O1($),this.ui=new j1($),this.packageOps=null,this.conflictResolver=null}async init(){console.clear(),K$(),I0(o.default.bold(o.default.cyan(" Package Updater"))),await this.workspaceManager.scanWorkspaces();let $=this.workspaceManager.getWorkspaces();this.packageOps=new B1($),this.conflictResolver=new q1($,(x,b,I,q,_)=>this.executeSyncVersions(x,b,I,q,_),(x)=>this.installPackages(x))}async run(){try{let $=await M({message:"What would you like to do?",options:[{value:"sync",label:"Sync package versions"},{value:"conflicts",label:"Find and resolve version conflicts"},{value:"list",label:"List all packages"}]});if(P($)){q$("Operation cancelled");return}switch($){case"sync":{let x=await this.packageOps.syncPackageVersions();if(x)await this.executeSyncVersions(x.packageName,x.targetVersion,x.versions,x.dryRun);break}case"conflicts":await this.conflictResolver.findAndResolveConflicts();break;case"list":await this.listPackages();break}}catch($){v(o.default.red(`An error occurred: ${$.message}`)),process.exit(1)}}async listPackages(){let $=this.workspaceManager.getAllPackages();this.ui.displayPackageList($)}async executeSyncVersions($,x,b,I,q){let _=e();_.start(I?"Previewing sync...":"Syncing versions...");let y=[];try{for(let[j,O]of b.entries()){if(j===x)continue;for(let K of O){let z=Ix(K.path,"package.json"),W=JSON.parse(await yx(z,"utf-8")),Y="";if(W.dependencies?.[$]){if(Y="dependencies",!I)W.dependencies[$]=x}else if(W.devDependencies?.[$]){if(Y="devDependencies",!I)W.devDependencies[$]=x}else if(W.peerDependencies?.[$]){if(Y="peerDependencies",!I)W.peerDependencies[$]=x}if(y.push({workspace:K.name,before:j,after:x,type:Y}),!I)await bx(z,`${JSON.stringify(W,null,2)}
110
+ `)}}_.stop(I?"[PREVIEW] Preview completed":"Sync completed");let B=`
111
+ `;if(y.forEach((j)=>{B+=`[SYNC] ${j.workspace}: ${o.default.dim(String(j.before))} → ${o.default.green(String(j.after))} ${o.default.gray(`(${j.type})`)}
112
+ `}),E(B,I?"Preview Sync":"Applied Sync"),I){if(await c({message:"Apply these changes?",initialValue:!1}))await this.executeSyncVersions($,x,b,!1,q)}else if(!q){if(await c({message:"Install packages now? (Recommended after version changes)",initialValue:!0})){let O=Array.from(b.values()).flat().map((K)=>K.path);await this.installPackages(O)}v(o.default.green(" Version sync completed successfully!")),process.exit(0)}}catch(B){throw _.stop("Sync failed"),B}}async installPackages($){let x=e();x.start(" Installing packages...");try{let b=await C$(),I=await P$($,this.rootPath);for(let{path:q}of I){let{spawn:_}=await import("node:child_process"),y=this.getInstallCommand(b),[B,...j]=y;x.message(`Installing in ${q}...`),await new Promise((O,K)=>{let z=_(B,j,{cwd:q,stdio:["inherit","pipe","pipe"]}),W="",Y="";z.stdout?.on("data",(F)=>{W+=F.toString()}),z.stderr?.on("data",(F)=>{Y+=F.toString()}),z.on("close",(F)=>{if(F===0)O();else K(Error(`Installation failed in ${q}: ${Y||"Unknown error"}`))}),setTimeout(()=>{z.kill(),K(Error("Installation timeout"))},300000)})}x.stop("Installation completed")}catch(b){throw x.stop("Installation failed"),await this.ui.showManualInstallInstructions($),b}}getInstallCommand($){if($.includes("pnpm"))return["pnpm","install"];if($.includes("yarn"))return["yarn"];if($.includes("bun"))return["bun","install"];return["npm","install"]}}var Z0=j0;import{execFileSync as y$}from"node:child_process";import S from"node:fs";import r from"node:path";var p=N(e2(),1);function $9($,x=[]){let b=S.readdirSync($);for(let I of b){let q=r.join($,I);if(S.statSync(q).isDirectory()){if(I!=="node_modules"&&I!==".git"&&I!==".release-temp"&&I!=="dist")$9(q,x)}else if(I==="package.json")x.push(q)}return x}async function d1(){let $=r.join(process.cwd(),".gitignore"),x=".release-temp";if(S.existsSync($)){if(!S.readFileSync($,"utf-8").includes(".release-temp"))S.appendFileSync($,`
113
+ .release-temp
114
+ `),console.log("Added .release-temp to .gitignore")}else S.writeFileSync($,`.release-temp
115
+ `),console.log("Created .gitignore with .release-temp");let b=r.join(process.cwd(),".release-temp"),I=S.existsSync(b),q=await M({message:"Choose a action:",options:[{value:"new",label:"Create new release"},...I?[{value:"resume",label:"Resume pending release"}]:[],{value:"list",label:"List all releases"}]});if(P(q))console.log("Operation cancelled"),process.exit(0);if(q==="new"||q==="resume"){let _="",y="";if(q==="resume"){let V=S.readdirSync(b).find((n)=>n.endsWith(".md")&&!n.endsWith("-changelog.md"));if(V)_=V.replace(".md",""),console.log(`Resuming release for version: ${_}`);else{console.error("Could not find pending release files. Starting new.");let n=O$.version;y=p.default.inc(n,"patch")||n}}else{let d=O$.version;y=p.default.inc(d,"patch")||d,_=await I$({message:"Enter version",placeholder:y,validate(V){if(!V)return;if(!p.default.valid(V))return"Invalid version"}})}if(!S.existsSync(b))S.mkdirSync(b,{recursive:!0});let B=r.join(b,`${_||y}.md`),j=r.join(b,`${_||y}-changelog.md`);if(!S.existsSync(B)){let d=`## ${_||y}
116
+
117
+ ### Features
118
+
119
+ -
120
+
121
+ ### Fixes
122
+
123
+ -
124
+ `;S.writeFileSync(B,d)}if(!S.existsSync(j)){let d=`## ${_||y}
125
+
126
+ ### Features
127
+
128
+ -
129
+
130
+ ### Fixes
131
+
132
+ -
133
+ `;S.writeFileSync(j,d)}console.log(`
134
+ Release notes created at: ${B}`),console.log(`Changelog entry created at: ${j}`),console.log("Please edit these files with your release notes and changelog entry.");let O=()=>{if(S.existsSync(B))S.unlinkSync(B);if(S.existsSync(j))S.unlinkSync(j);if(S.existsSync(b))S.rmdirSync(b)},K=await c({message:"Are you ready to continue?"});if(P(K)||!K)console.log("Operation paused. Files preserved in .release-temp for resumption."),process.exit(0);let z=await c({message:"Do you want to update CHANGELOG.md?"});if(P(z))console.log("Operation paused. Files preserved in .release-temp for resumption."),process.exit(0);if(z){let d=S.readFileSync(j,"utf-8"),V=r.join(process.cwd(),"CHANGELOG.md"),n=`# Changelog
135
+
136
+ `;if(S.existsSync(V))n=S.readFileSync(V,"utf-8");if(!n.includes(_||y)){let y9=`${d}
137
+
138
+ ${n}`;S.writeFileSync(V,y9),console.log("CHANGELOG.md updated.")}else console.log("CHANGELOG.md already contains this version. Skipping update.")}let W=await c({message:"Do you want to create the release (git tag & push)?"});if(P(W)||!W)console.log("Operation paused. Files preserved in .release-temp for resumption."),process.exit(0);let Y=_||y;console.log(`Updating all package.json files to version ${Y}...`);let F=$9(process.cwd());for(let d of F)try{let V=JSON.parse(S.readFileSync(d,"utf-8"));V.version=Y,S.writeFileSync(d,`${JSON.stringify(V,null,2)}
139
+ `),console.log(`Updated ${r.relative(process.cwd(),d)}`)}catch(V){console.error(`Failed to update ${r.relative(process.cwd(),d)}:`,V)}console.log("Pushing changes...");let x9=F.map((d)=>r.relative(process.cwd(),d));y$("git",["add",...x9,"CHANGELOG.md"],{stdio:"inherit"}),y$("git",["commit","-m",`chore(release): v${Y}`],{stdio:"inherit"}),y$("git",["push"],{stdio:"inherit"}),y$("git",["tag",`v${Y}`],{stdio:"inherit"}),y$("git",["push","origin",`v${Y}`],{stdio:"inherit"}),console.log("Creating GitHub Release..."),y$("gh",["release","create",`v${_||y}`,"--title",`v${_||y}`,"--notes-file",B],{stdio:"inherit"}),O(),console.log(`Release v${_||y} created successfully!`),process.exit(0)}if(q==="list"){try{let B=y$("git",["tag"],{encoding:"utf-8"}).split(`
140
+ `).map((j)=>j.trim()).filter((j)=>j.length>0).filter((j)=>p.default.valid(p.default.clean(j)));if(B.length===0)console.log("No releases found.");else{let j=B.sort((O,K)=>{let z=p.default.clean(O),W=p.default.clean(K);if(!z||!W)return 0;return p.default.rcompare(z,W)});console.log(`
141
+ Releases:`),j.forEach((O)=>{console.log(` - ${O}`)})}}catch(_){console.error("Failed to list releases:",_ instanceof Error?_.message:String(_))}process.exit(0)}}async function ab(){K$();let $=await M({message:"Choose a command:",options:[{value:"manage-release",label:"Manage Releases"},{value:"align-versions",label:"Align Versions"}]});if(P($))v("Operation cancelled"),process.exit(0);if($==="manage-release")await d1();else if($==="align-versions"){let x=new Z0;await x.init(),await x.run()}}ab().catch(console.error);
@@ -0,0 +1,17 @@
1
+ import type { WorkspaceInfo } from "../types";
2
+ export declare class ConflictResolver {
3
+ private workspaces;
4
+ private executeSyncVersions;
5
+ private installPackages;
6
+ constructor(workspaces: WorkspaceInfo[], executeSyncVersions: (packageName: string, targetVersion: string, versions: Map<string, WorkspaceInfo[]>, dryRun: boolean, suppressExit?: boolean) => Promise<void>, installPackages: (targetWorkspaces: string[]) => Promise<void>);
7
+ findAndResolveConflicts(): Promise<void>;
8
+ private displayConflictsSummary;
9
+ private resolveAllConflicts;
10
+ private resolveBulkInUse;
11
+ private resolveBulkLatest;
12
+ private resolveInteractively;
13
+ private resolveSpecificConflicts;
14
+ private resolvePackageConflict;
15
+ private autoResolveToMostCommon;
16
+ private autoResolveToLatest;
17
+ }
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env bun
2
+ declare class AlignVersions {
3
+ private rootPath;
4
+ private workspaceManager;
5
+ private packageOps;
6
+ private conflictResolver;
7
+ private ui;
8
+ constructor(rootPath?: string);
9
+ init(): Promise<void>;
10
+ run(): Promise<void>;
11
+ private listPackages;
12
+ private executeSyncVersions;
13
+ private installPackages;
14
+ private getInstallCommand;
15
+ }
16
+ export default AlignVersions;
@@ -0,0 +1,11 @@
1
+ import type { WorkspaceInfo } from "../types";
2
+ export declare class PackageOperations {
3
+ private workspaces;
4
+ constructor(workspaces: WorkspaceInfo[]);
5
+ syncPackageVersions(): Promise<{
6
+ packageName: string;
7
+ targetVersion: string;
8
+ versions: Map<string, WorkspaceInfo[]>;
9
+ dryRun: boolean;
10
+ } | undefined>;
11
+ }
@@ -0,0 +1,11 @@
1
+ import type { WorkspaceInfo } from "../types";
2
+ export declare class UIHelpers {
3
+ private rootPath;
4
+ constructor(rootPath: string);
5
+ getTypeIcon(type: string): string;
6
+ hasPackage(workspace: WorkspaceInfo, packageName: string): boolean;
7
+ showManualInstallInstructions(targetWorkspaces: string[]): Promise<void>;
8
+ displayPackageList(packageMap: Record<string, Map<string, WorkspaceInfo[]>>): void;
9
+ formatVersionChange(before: string, after: string): string;
10
+ formatWorkspacePath(workspace: WorkspaceInfo): string;
11
+ }
@@ -0,0 +1,7 @@
1
+ export declare function fetchLatestVersionSimple(packageName: string): Promise<string | null>;
2
+ export declare function isVersionNewer(latestVersion: string, currentVersions: string[]): boolean;
3
+ export declare function groupWorkspacesByLocation(targetWorkspaces: string[], rootPath: string): Promise<Array<{
4
+ path: string;
5
+ workspaces: string[];
6
+ }>>;
7
+ export declare function detectPackageManager(): Promise<string>;
@@ -0,0 +1,13 @@
1
+ import type { WorkspaceInfo } from "../types";
2
+ export declare class WorkspaceManager {
3
+ private rootPath;
4
+ private workspaces;
5
+ constructor(rootPath: string);
6
+ scanWorkspaces(): Promise<WorkspaceInfo[]>;
7
+ displayWorkspaces(): void;
8
+ getWorkspaces(): WorkspaceInfo[];
9
+ setWorkspaces(workspaces: WorkspaceInfo[]): void;
10
+ findWorkspaceByName(name: string): WorkspaceInfo | undefined;
11
+ getWorkspacesByType(type: "app" | "package" | "root"): WorkspaceInfo[];
12
+ getAllPackages(): Record<string, Map<string, WorkspaceInfo[]>>;
13
+ }
@@ -0,0 +1 @@
1
+ export default function CreateRelease(): Promise<void>;
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,38 @@
1
+ export interface PackageJson {
2
+ name?: string;
3
+ dependencies?: Record<string, string>;
4
+ devDependencies?: Record<string, string>;
5
+ peerDependencies?: Record<string, string>;
6
+ }
7
+ export interface WorkspaceInfo {
8
+ path: string;
9
+ name: string;
10
+ type: "app" | "package" | "root";
11
+ packageJson: PackageJson;
12
+ }
13
+ export interface UpdateConfig {
14
+ packageName: string;
15
+ version: string;
16
+ dependencyType: "dependencies" | "devDependencies" | "peerDependencies";
17
+ targetWorkspaces: string[];
18
+ dryRun: boolean;
19
+ }
20
+ export interface ChangeRecord {
21
+ workspace: string;
22
+ before?: string;
23
+ after: string;
24
+ type: string;
25
+ action?: "add" | "update";
26
+ version?: string;
27
+ }
28
+ export interface WorkspaceGroup {
29
+ path: string;
30
+ workspaces: WorkspaceInfo[];
31
+ }
32
+ export type DependencyType = "dependencies" | "devDependencies" | "peerDependencies";
33
+ export type ConflictResolutionOption = "interactive" | "bulk-choose" | "bulk-latest" | "bulk-skip";
34
+ export interface ConflictChoice {
35
+ packageName: string;
36
+ selectedVersion: string;
37
+ versionMap: Map<string, WorkspaceInfo[]>;
38
+ }
@@ -0,0 +1,2 @@
1
+ export declare const logo = "\n __ __ __ \n/ \\ / | / | \n$$ \\ /$$/______ $$ |__ ______ ______ ______ \n $$ \\/$$// \\ $$ | / \\ / \\ / \\ \n $$ $$/($$$$$$ | $$$$$$| /$$$$$$ |$$$$$$ |/$$$$$$ | \n $$$$/ / $$ | $$ | | $$ $$ |$$ | $$/ $$ $$ | \n $$ | /$$$$$$$ | $$ | | $$$$$$$$/ $$ | $$$$$$$$/ \n $$ | $$ $$ | $$ | | $$ |$$ | $$ | \n $$/ $$$$$$$/ $$/ $$$$$$$/ $$/ $$$$$$$/ \n";
2
+ export default function printLogo(): void;
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "workspace-helper",
3
+ "version": "1.0.4-alpha",
4
+ "description": "CLI tool to detect and fix mismatched dependency versions in monorepos",
5
+ "keywords": [
6
+ "monorepo",
7
+ "dependency",
8
+ "version",
9
+ "align",
10
+ "cli"
11
+ ],
12
+ "bugs": {
13
+ "url": "https://github.com/nyambogahezron/workspace-helper/issues"
14
+ },
15
+ "homepage": "https://github.com/nyambogahezron/workspace-helper#readme",
16
+ "private": false,
17
+ "scripts": {
18
+ "build": "bun build ./src/index.ts --outdir ./dist --target=node --minify && tsc --emitDeclarationOnly --declaration",
19
+ "dev": "bun run ./src/index.ts",
20
+ "start": "bun run ./dist/index.js",
21
+ "format": "biome format --write .",
22
+ "lint": "biome lint --write .",
23
+ "prepare": "husky",
24
+ "prepublishOnly": "npm run build"
25
+ },
26
+ "main": "./dist/index.js",
27
+ "types": "./dist/src/index.d.ts",
28
+ "files": [
29
+ "dist"
30
+ ],
31
+ "bin": {
32
+ "wh": "dist/index.js",
33
+ "workspace-helper": "dist/index.js",
34
+ "wva": "dist/index.js",
35
+ "align-versions": "dist/index.js"
36
+ },
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "git+https://github.com/nyambogahezron/workspace-helper.git"
40
+ },
41
+ "author": "Hezron Nyamboga <hezronnyamboga01@gmail.com>",
42
+ "license": "MIT",
43
+ "devDependencies": {
44
+ "@biomejs/biome": "2.3.15",
45
+ "@clack/prompts": "^0.7.0",
46
+ "@types/bun": "^1.3.9",
47
+ "@types/jest": "^30.0.0",
48
+ "@types/node": "^20.0.0",
49
+ "@types/semver": "^7.7.1",
50
+ "husky": "^9.1.7",
51
+ "jest": "^30.2.0",
52
+ "picocolors": "^1.1.1",
53
+ "semver": "^7.7.4",
54
+ "ts-jest": "^29.4.6",
55
+ "typescript": "^5.8.3"
56
+ }
57
+ }