uptide 0.7.3-next.20261011200613 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-XMRE3HYP.js → chunk-3677J24F.js} +6 -5
- package/dist/chunk-G5YPY7VA.js +18 -0
- package/dist/{chunk-6X37467K.js → chunk-K3IY7WMD.js} +1 -1
- package/dist/{chunk-V7BZGP46.js → chunk-R5AVTJOT.js} +11 -8
- package/dist/engine-worker.js +1 -1
- package/dist/index.js +4 -4
- package/dist/{publish-T6OHMTWG-RFHJJ7BQ.js → publish-T2VGNGRW-GTCSYEJM.js} +1 -1
- package/dist/worker.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-3Q7NHEVV.js +0 -18
|
@@ -3,7 +3,7 @@ import { fileURLToPath as __uptideFileURLToPath } from 'node:url';
|
|
|
3
3
|
const require = __uptideCreateRequire(import.meta.url);
|
|
4
4
|
const __filename = __uptideFileURLToPath(import.meta.url);
|
|
5
5
|
const __dirname = __uptideFileURLToPath(new URL('.', import.meta.url));
|
|
6
|
-
import{parseSource,require_ts_morph,sourceCandidate}from"./chunk-GHXBU767.js";import{AdapterCapabilityError,IntegrityError,NoTypesError,PackageNotFoundError,RegistryAuthError,UPTIDE_COMMAND,UptideError,VersionNotFoundError,command,errorCode,git}from"./chunk-6X37467K.js";import{__export}from"./chunk-JHZ22Y6X.js";import{__commonJS,__require,__toESM}from"./chunk-Z5YHBDVG.js";var require_constants=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js"(exports,module){"use strict";var SEMVER_SPEC_VERSION="2.0.0",MAX_SAFE_INTEGER=Number.MAX_SAFE_INTEGER||9007199254740991,MAX_SAFE_COMPONENT_LENGTH=16,MAX_SAFE_BUILD_LENGTH=250,RELEASE_TYPES=["major","premajor","minor","preminor","patch","prepatch","prerelease"];module.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH,MAX_SAFE_BUILD_LENGTH,MAX_SAFE_INTEGER,RELEASE_TYPES,SEMVER_SPEC_VERSION,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}});var require_debug=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js"(exports,module){"use strict";var debug=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...args)=>console.error("SEMVER",...args):()=>{};module.exports=debug}});var require_re=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js"(exports,module){"use strict";var{MAX_SAFE_COMPONENT_LENGTH,MAX_SAFE_BUILD_LENGTH,MAX_LENGTH}=require_constants(),debug=require_debug();exports=module.exports={};var re=exports.re=[],safeRe=exports.safeRe=[],src=exports.src=[],safeSrc=exports.safeSrc=[],t=exports.t={},R=0,LETTERDASHNUMBER="[a-zA-Z0-9-]",safeRegexReplacements=[["\\s",1],["\\d",MAX_LENGTH],[LETTERDASHNUMBER,MAX_SAFE_BUILD_LENGTH]],makeSafeRegex=value=>{for(let[token,max]of safeRegexReplacements)value=value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);return value},createToken=(name,value,isGlobal)=>{let safe=makeSafeRegex(value),index=R++;debug(name,index,value),t[name]=index,src[index]=value,safeSrc[index]=safe,re[index]=new RegExp(value,isGlobal?"g":void 0),safeRe[index]=new RegExp(safe,isGlobal?"g":void 0)};createToken("NUMERICIDENTIFIER","0|[1-9]\\d*");createToken("NUMERICIDENTIFIERLOOSE","\\d+");createToken("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);createToken("MAINVERSION",`(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`);createToken("MAINVERSIONLOOSE",`(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`);createToken("PRERELEASEIDENTIFIER",`(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`);createToken("PRERELEASEIDENTIFIERLOOSE",`(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`);createToken("PRERELEASE",`(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`);createToken("PRERELEASELOOSE",`(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);createToken("BUILDIDENTIFIER",`${LETTERDASHNUMBER}+`);createToken("BUILD",`(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`);createToken("FULLPLAIN",`v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`);createToken("FULL",`^${src[t.FULLPLAIN]}$`);createToken("LOOSEPLAIN",`[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`);createToken("LOOSE",`^${src[t.LOOSEPLAIN]}$`);createToken("GTLT","((?:<|>)?=?)");createToken("XRANGEIDENTIFIERLOOSE",`${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);createToken("XRANGEIDENTIFIER",`${src[t.NUMERICIDENTIFIER]}|x|X|\\*`);createToken("XRANGEPLAIN",`[v=\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`);createToken("XRANGEPLAINLOOSE",`[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`);createToken("XRANGE",`^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`);createToken("XRANGELOOSE",`^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`);createToken("COERCEPLAIN",`(^|[^\\d])(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);createToken("COERCE",`${src[t.COERCEPLAIN]}(?:$|[^\\d])`);createToken("COERCEFULL",src[t.COERCEPLAIN]+`(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`);createToken("COERCERTL",src[t.COERCE],!0);createToken("COERCERTLFULL",src[t.COERCEFULL],!0);createToken("LONETILDE","(?:~>?)");createToken("TILDETRIM",`(\\s*)${src[t.LONETILDE]}\\s+`,!0);exports.tildeTrimReplace="$1~";createToken("TILDE",`^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);createToken("TILDELOOSE",`^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);createToken("LONECARET","(?:\\^)");createToken("CARETTRIM",`(\\s*)${src[t.LONECARET]}\\s+`,!0);exports.caretTrimReplace="$1^";createToken("CARET",`^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);createToken("CARETLOOSE",`^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);createToken("COMPARATORLOOSE",`^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`);createToken("COMPARATOR",`^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`);createToken("COMPARATORTRIM",`(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`,!0);exports.comparatorTrimReplace="$1$2$3";createToken("HYPHENRANGE",`^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`);createToken("HYPHENRANGELOOSE",`^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`);createToken("STAR","(<|>)?=?\\s*\\*");createToken("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");createToken("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}});var require_parse_options=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js"(exports,module){"use strict";var looseOption=Object.freeze({loose:!0}),emptyOpts=Object.freeze({}),parseOptions=options=>options?typeof options!="object"?looseOption:options:emptyOpts;module.exports=parseOptions}});var require_identifiers=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js"(exports,module){"use strict";var numeric=/^[0-9]+$/,compareIdentifiers=(a,b)=>{if(typeof a=="number"&&typeof b=="number")return a===b?0:a<b?-1:1;let anum=numeric.test(a),bnum=numeric.test(b);return anum&&bnum&&(a=+a,b=+b),a===b?0:anum&&!bnum?-1:bnum&&!anum?1:a<b?-1:1},rcompareIdentifiers=(a,b)=>compareIdentifiers(b,a);module.exports={compareIdentifiers,rcompareIdentifiers}}});var require_semver=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js"(exports,module){"use strict";var debug=require_debug(),{MAX_LENGTH,MAX_SAFE_INTEGER}=require_constants(),{safeRe:re,t}=require_re(),parseOptions=require_parse_options(),{compareIdentifiers}=require_identifiers(),isPrereleaseIdentifier=(prerelease,identifier)=>{let identifiers=identifier.split(".");if(identifiers.length>prerelease.length)return!1;for(let i=0;i<identifiers.length;i++)if(compareIdentifiers(prerelease[i],identifiers[i])!==0)return!1;return!0},SemVer=class _SemVer{constructor(version,options){if(options=parseOptions(options),version instanceof _SemVer){if(version.loose===!!options.loose&&version.includePrerelease===!!options.includePrerelease)return version;version=version.version}else if(typeof version!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`);if(version.length>MAX_LENGTH)throw new TypeError(`version is longer than ${MAX_LENGTH} characters`);debug("SemVer",version,options),this.options=options,this.loose=!!options.loose,this.includePrerelease=!!options.includePrerelease;let m=version.trim().match(options.loose?re[t.LOOSE]:re[t.FULL]);if(!m)throw new TypeError(`Invalid Version: ${version}`);if(this.raw=version,this.major=+m[1],this.minor=+m[2],this.patch=+m[3],this.major>MAX_SAFE_INTEGER||this.major<0)throw new TypeError("Invalid major version");if(this.minor>MAX_SAFE_INTEGER||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>MAX_SAFE_INTEGER||this.patch<0)throw new TypeError("Invalid patch version");m[4]?this.prerelease=m[4].split(".").map(id=>{if(/^[0-9]+$/.test(id)){let num=+id;if(num>=0&&num<MAX_SAFE_INTEGER)return num}return id}):this.prerelease=[],this.build=m[5]?m[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(other){if(debug("SemVer.compare",this.version,this.options,other),!(other instanceof _SemVer)){if(typeof other=="string"&&other===this.version)return 0;other=new _SemVer(other,this.options)}return other.version===this.version?0:this.compareMain(other)||this.comparePre(other)}compareMain(other){return other instanceof _SemVer||(other=new _SemVer(other,this.options)),this.major<other.major?-1:this.major>other.major?1:this.minor<other.minor?-1:this.minor>other.minor?1:this.patch<other.patch?-1:this.patch>other.patch?1:0}comparePre(other){if(other instanceof _SemVer||(other=new _SemVer(other,this.options)),this.prerelease.length&&!other.prerelease.length)return-1;if(!this.prerelease.length&&other.prerelease.length)return 1;if(!this.prerelease.length&&!other.prerelease.length)return 0;let i=0;do{let a=this.prerelease[i],b=other.prerelease[i];if(debug("prerelease compare",i,a,b),a===void 0&&b===void 0)return 0;if(b===void 0)return 1;if(a===void 0)return-1;if(a===b)continue;return compareIdentifiers(a,b)}while(++i)}compareBuild(other){other instanceof _SemVer||(other=new _SemVer(other,this.options));let i=0;do{let a=this.build[i],b=other.build[i];if(debug("build compare",i,a,b),a===void 0&&b===void 0)return 0;if(b===void 0)return 1;if(a===void 0)return-1;if(a===b)continue;return compareIdentifiers(a,b)}while(++i)}inc(release,identifier,identifierBase){if(release.startsWith("pre")){if(!identifier&&identifierBase===!1)throw new Error("invalid increment argument: identifier is empty");if(identifier){let match2=`-${identifier}`.match(this.options.loose?re[t.PRERELEASELOOSE]:re[t.PRERELEASE]);if(!match2||match2[1]!==identifier)throw new Error(`invalid identifier: ${identifier}`)}}switch(release){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",identifier,identifierBase);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",identifier,identifierBase);break;case"prepatch":this.prerelease.length=0,this.inc("patch",identifier,identifierBase),this.inc("pre",identifier,identifierBase);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",identifier,identifierBase),this.inc("pre",identifier,identifierBase);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let base=Number(identifierBase)?1:0;if(this.prerelease.length===0)this.prerelease=[base];else{let i=this.prerelease.length;for(;--i>=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);if(i===-1){if(identifier===this.prerelease.join(".")&&identifierBase===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(base)}}if(identifier){let prerelease=[identifier,base];if(identifierBase===!1&&(prerelease=[identifier]),isPrereleaseIdentifier(this.prerelease,identifier)){let prereleaseBase=this.prerelease[identifier.split(".").length];isNaN(prereleaseBase)&&(this.prerelease=prerelease)}else this.prerelease=prerelease}break}default:throw new Error(`invalid increment argument: ${release}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};module.exports=SemVer}});var require_parse=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js"(exports,module){"use strict";var SemVer=require_semver(),parse7=(version,options,throwErrors=!1)=>{if(version instanceof SemVer)return version;try{return new SemVer(version,options)}catch(er){if(!throwErrors)return null;throw er}};module.exports=parse7}});var require_valid=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js"(exports,module){"use strict";var parse7=require_parse(),valid=(version,options)=>{let v=parse7(version,options);return v?v.version:null};module.exports=valid}});var require_clean=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js"(exports,module){"use strict";var parse7=require_parse(),clean=(version,options)=>{let s=parse7(version.trim().replace(/^[=v]+/,""),options);return s?s.version:null};module.exports=clean}});var require_inc=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js"(exports,module){"use strict";var SemVer=require_semver(),inc=(version,release,options,identifier,identifierBase)=>{typeof options=="string"&&(identifierBase=identifier,identifier=options,options=void 0);try{return new SemVer(version instanceof SemVer?version.version:version,options).inc(release,identifier,identifierBase).version}catch{return null}};module.exports=inc}});var require_diff=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js"(exports,module){"use strict";var parse7=require_parse(),diff=(version1,version2)=>{let v1=parse7(version1,null,!0),v2=parse7(version2,null,!0),comparison=v1.compare(v2);if(comparison===0)return null;let v1Higher=comparison>0,highVersion=v1Higher?v1:v2,lowVersion=v1Higher?v2:v1,highHasPre=!!highVersion.prerelease.length;if(!!lowVersion.prerelease.length&&!highHasPre){if(!lowVersion.patch&&!lowVersion.minor)return"major";if(lowVersion.compareMain(highVersion)===0)return lowVersion.minor&&!lowVersion.patch?"minor":"patch"}let prefix=highHasPre?"pre":"";return v1.major!==v2.major?prefix+"major":v1.minor!==v2.minor?prefix+"minor":v1.patch!==v2.patch?prefix+"patch":"prerelease"};module.exports=diff}});var require_major=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js"(exports,module){"use strict";var SemVer=require_semver(),major=(a,loose)=>new SemVer(a,loose).major;module.exports=major}});var require_minor=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js"(exports,module){"use strict";var SemVer=require_semver(),minor=(a,loose)=>new SemVer(a,loose).minor;module.exports=minor}});var require_patch=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js"(exports,module){"use strict";var SemVer=require_semver(),patch=(a,loose)=>new SemVer(a,loose).patch;module.exports=patch}});var require_prerelease=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js"(exports,module){"use strict";var parse7=require_parse(),prerelease=(version,options)=>{let parsed5=parse7(version,options);return parsed5&&parsed5.prerelease.length?parsed5.prerelease:null};module.exports=prerelease}});var require_compare=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js"(exports,module){"use strict";var SemVer=require_semver(),compare4=(a,b,loose)=>new SemVer(a,loose).compare(new SemVer(b,loose));module.exports=compare4}});var require_rcompare=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js"(exports,module){"use strict";var compare4=require_compare(),rcompare=(a,b,loose)=>compare4(b,a,loose);module.exports=rcompare}});var require_compare_loose=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js"(exports,module){"use strict";var compare4=require_compare(),compareLoose=(a,b)=>compare4(a,b,!0);module.exports=compareLoose}});var require_compare_build=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js"(exports,module){"use strict";var SemVer=require_semver(),compareBuild=(a,b,loose)=>{let versionA=new SemVer(a,loose),versionB=new SemVer(b,loose);return versionA.compare(versionB)||versionA.compareBuild(versionB)};module.exports=compareBuild}});var require_sort=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js"(exports,module){"use strict";var compareBuild=require_compare_build(),sort=(list,loose)=>list.sort((a,b)=>compareBuild(a,b,loose));module.exports=sort}});var require_rsort=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js"(exports,module){"use strict";var compareBuild=require_compare_build(),rsort=(list,loose)=>list.sort((a,b)=>compareBuild(b,a,loose));module.exports=rsort}});var require_gt=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js"(exports,module){"use strict";var compare4=require_compare(),gt=(a,b,loose)=>compare4(a,b,loose)>0;module.exports=gt}});var require_lt=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js"(exports,module){"use strict";var compare4=require_compare(),lt=(a,b,loose)=>compare4(a,b,loose)<0;module.exports=lt}});var require_eq=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js"(exports,module){"use strict";var compare4=require_compare(),eq=(a,b,loose)=>compare4(a,b,loose)===0;module.exports=eq}});var require_neq=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js"(exports,module){"use strict";var compare4=require_compare(),neq=(a,b,loose)=>compare4(a,b,loose)!==0;module.exports=neq}});var require_gte=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js"(exports,module){"use strict";var compare4=require_compare(),gte=(a,b,loose)=>compare4(a,b,loose)>=0;module.exports=gte}});var require_lte=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js"(exports,module){"use strict";var compare4=require_compare(),lte=(a,b,loose)=>compare4(a,b,loose)<=0;module.exports=lte}});var require_cmp=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js"(exports,module){"use strict";var eq=require_eq(),neq=require_neq(),gt=require_gt(),gte=require_gte(),lt=require_lt(),lte=require_lte(),cmp=(a,op,b,loose)=>{switch(op){case"===":return typeof a=="object"&&(a=a.version),typeof b=="object"&&(b=b.version),a===b;case"!==":return typeof a=="object"&&(a=a.version),typeof b=="object"&&(b=b.version),a!==b;case"":case"=":case"==":return eq(a,b,loose);case"!=":return neq(a,b,loose);case">":return gt(a,b,loose);case">=":return gte(a,b,loose);case"<":return lt(a,b,loose);case"<=":return lte(a,b,loose);default:throw new TypeError(`Invalid operator: ${op}`)}};module.exports=cmp}});var require_coerce=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js"(exports,module){"use strict";var SemVer=require_semver(),parse7=require_parse(),{safeRe:re,t}=require_re(),coerce=(version,options)=>{if(version instanceof SemVer)return version;if(typeof version=="number"&&(version=String(version)),typeof version!="string")return null;options=options||{};let match2=null;if(!options.rtl)match2=version.match(options.includePrerelease?re[t.COERCEFULL]:re[t.COERCE]);else{let coerceRtlRegex=options.includePrerelease?re[t.COERCERTLFULL]:re[t.COERCERTL],next;for(;(next=coerceRtlRegex.exec(version))&&(!match2||match2.index+match2[0].length!==version.length);)(!match2||next.index+next[0].length!==match2.index+match2[0].length)&&(match2=next),coerceRtlRegex.lastIndex=next.index+next[1].length+next[2].length;coerceRtlRegex.lastIndex=-1}if(match2===null)return null;let major=match2[2],minor=match2[3]||"0",patch=match2[4]||"0",prerelease=options.includePrerelease&&match2[5]?`-${match2[5]}`:"",build=options.includePrerelease&&match2[6]?`+${match2[6]}`:"";return parse7(`${major}.${minor}.${patch}${prerelease}${build}`,options)};module.exports=coerce}});var require_truncate=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js"(exports,module){"use strict";var parse7=require_parse(),constants=require_constants(),SemVer=require_semver(),truncate=(version,truncation,options)=>{if(!constants.RELEASE_TYPES.includes(truncation))return null;let clonedVersion=cloneInputVersion(version,options);return clonedVersion&&doTruncation(clonedVersion,truncation)},cloneInputVersion=(version,options)=>{let versionStringToParse=version instanceof SemVer?version.version:version;return parse7(versionStringToParse,options)},doTruncation=(version,truncation)=>{if(isPrerelease(truncation))return version.version;switch(version.prerelease=[],truncation){case"major":version.minor=0,version.patch=0;break;case"minor":version.patch=0;break}return version.format()},isPrerelease=type=>type.startsWith("pre");module.exports=truncate}});var require_lrucache=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js"(exports,module){"use strict";var LRUCache=class{constructor(){this.max=1e3,this.map=new Map}get(key){let value=this.map.get(key);if(value!==void 0)return this.map.delete(key),this.map.set(key,value),value}delete(key){return this.map.delete(key)}set(key,value){if(!this.delete(key)&&value!==void 0){if(this.map.size>=this.max){let firstKey=this.map.keys().next().value;this.delete(firstKey)}this.map.set(key,value)}return this}};module.exports=LRUCache}});var require_range=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js"(exports,module){"use strict";var SPACE_CHARACTERS=/\s+/g,Range=class _Range{constructor(range,options){if(options=parseOptions(options),range instanceof _Range)return range.loose===!!options.loose&&range.includePrerelease===!!options.includePrerelease?range:new _Range(range.raw,options);if(range instanceof Comparator)return this.raw=range.value,this.set=[[range]],this.formatted=void 0,this;if(this.options=options,this.loose=!!options.loose,this.includePrerelease=!!options.includePrerelease,this.raw=range.trim().replace(SPACE_CHARACTERS," "),this.set=this.raw.split("||").map(r=>this.parseRange(r.trim())).filter(c=>c.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let first=this.set[0];if(this.set=this.set.filter(c=>!isNullSet(c[0])),this.set.length===0)this.set=[first];else if(this.set.length>1){for(let c of this.set)if(c.length===1&&isAny(c[0])){this.set=[c];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let i=0;i<this.set.length;i++){i>0&&(this.formatted+="||");let comps=this.set[i];for(let k=0;k<comps.length;k++)k>0&&(this.formatted+=" "),this.formatted+=comps[k].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(range){range=range.replace(BUILDSTRIPRE,"");let memoKey=((this.options.includePrerelease&&FLAG_INCLUDE_PRERELEASE)|(this.options.loose&&FLAG_LOOSE))+":"+range,cached=cache.get(memoKey);if(cached)return cached;let loose=this.options.loose,hr=loose?re[t.HYPHENRANGELOOSE]:re[t.HYPHENRANGE];range=range.replace(hr,hyphenReplace(this.options.includePrerelease)),debug("hyphen replace",range),range=range.replace(re[t.COMPARATORTRIM],comparatorTrimReplace),debug("comparator trim",range),range=range.replace(re[t.TILDETRIM],tildeTrimReplace),debug("tilde trim",range),range=range.replace(re[t.CARETTRIM],caretTrimReplace),debug("caret trim",range);let rangeList=range.split(" ").map(comp=>parseComparator(comp,this.options)).join(" ").split(/\s+/).map(comp=>replaceGTE0(comp,this.options));loose&&(rangeList=rangeList.filter(comp=>(debug("loose invalid filter",comp,this.options),!!comp.match(re[t.COMPARATORLOOSE])))),debug("range list",rangeList);let rangeMap=new Map,comparators=rangeList.map(comp=>new Comparator(comp,this.options));for(let comp of comparators){if(isNullSet(comp))return[comp];rangeMap.set(comp.value,comp)}rangeMap.size>1&&rangeMap.has("")&&rangeMap.delete("");let result=[...rangeMap.values()];return cache.set(memoKey,result),result}intersects(range,options){if(!(range instanceof _Range))throw new TypeError("a Range is required");return this.set.some(thisComparators=>isSatisfiable(thisComparators,options)&&range.set.some(rangeComparators=>isSatisfiable(rangeComparators,options)&&thisComparators.every(thisComparator=>rangeComparators.every(rangeComparator=>thisComparator.intersects(rangeComparator,options)))))}test(version){if(!version)return!1;if(typeof version=="string")try{version=new SemVer(version,this.options)}catch{return!1}for(let i=0;i<this.set.length;i++)if(testSet(this.set[i],version,this.options))return!0;return!1}};module.exports=Range;var LRU=require_lrucache(),cache=new LRU,parseOptions=require_parse_options(),Comparator=require_comparator(),debug=require_debug(),SemVer=require_semver(),{safeRe:re,src,t,comparatorTrimReplace,tildeTrimReplace,caretTrimReplace}=require_re(),{FLAG_INCLUDE_PRERELEASE,FLAG_LOOSE}=require_constants(),BUILDSTRIPRE=new RegExp(src[t.BUILD],"g"),isNullSet=c=>c.value==="<0.0.0-0",isAny=c=>c.value==="",isSatisfiable=(comparators,options)=>{let result=!0,remainingComparators=comparators.slice(),testComparator=remainingComparators.pop();for(;result&&remainingComparators.length;)result=remainingComparators.every(otherComparator=>testComparator.intersects(otherComparator,options)),testComparator=remainingComparators.pop();return result},parseComparator=(comp,options)=>(comp=comp.replace(re[t.BUILD],""),debug("comp",comp,options),comp=replaceCarets(comp,options),debug("caret",comp),comp=replaceTildes(comp,options),debug("tildes",comp),comp=replaceXRanges(comp,options),debug("xrange",comp),comp=replaceStars(comp,options),debug("stars",comp),comp),isX=id=>!id||id.toLowerCase()==="x"||id==="*",invalidXRangeOrder=(M,m,p)=>isX(M)&&!isX(m)||isX(m)&&p&&!isX(p),replaceTildes=(comp,options)=>comp.trim().split(/\s+/).map(c=>replaceTilde(c,options)).join(" "),replaceTilde=(comp,options)=>{let r=options.loose?re[t.TILDELOOSE]:re[t.TILDE],z=options.includePrerelease?"-0":"";return comp.replace(r,(_,M,m,p,pr)=>{debug("tilde",comp,_,M,m,p,pr);let ret;return isX(M)?ret="":isX(m)?ret=`>=${M}.0.0${z} <${+M+1}.0.0-0`:isX(p)?ret=`>=${M}.${m}.0${z} <${M}.${+m+1}.0-0`:pr?(debug("replaceTilde pr",pr),ret=`>=${M}.${m}.${p}-${pr} <${M}.${+m+1}.0-0`):ret=`>=${M}.${m}.${p} <${M}.${+m+1}.0-0`,debug("tilde return",ret),ret})},replaceCarets=(comp,options)=>comp.trim().split(/\s+/).map(c=>replaceCaret(c,options)).join(" "),replaceCaret=(comp,options)=>{debug("caret",comp,options);let r=options.loose?re[t.CARETLOOSE]:re[t.CARET],z=options.includePrerelease?"-0":"";return comp.replace(r,(_,M,m,p,pr)=>{debug("caret",comp,_,M,m,p,pr);let ret;return isX(M)?ret="":isX(m)?ret=`>=${M}.0.0${z} <${+M+1}.0.0-0`:isX(p)?M==="0"?ret=`>=${M}.${m}.0${z} <${M}.${+m+1}.0-0`:ret=`>=${M}.${m}.0${z} <${+M+1}.0.0-0`:pr?(debug("replaceCaret pr",pr),M==="0"?m==="0"?ret=`>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p+1}-0`:ret=`>=${M}.${m}.${p}-${pr} <${M}.${+m+1}.0-0`:ret=`>=${M}.${m}.${p}-${pr} <${+M+1}.0.0-0`):(debug("no pr"),M==="0"?m==="0"?ret=`>=${M}.${m}.${p} <${M}.${m}.${+p+1}-0`:ret=`>=${M}.${m}.${p} <${M}.${+m+1}.0-0`:ret=`>=${M}.${m}.${p} <${+M+1}.0.0-0`),debug("caret return",ret),ret})},replaceXRanges=(comp,options)=>(debug("replaceXRanges",comp,options),comp.split(/\s+/).map(c=>replaceXRange(c,options)).join(" ")),replaceXRange=(comp,options)=>{comp=comp.trim();let r=options.loose?re[t.XRANGELOOSE]:re[t.XRANGE];return comp.replace(r,(ret,gtlt,M,m,p,pr)=>{if(debug("xRange",comp,ret,gtlt,M,m,p,pr),invalidXRangeOrder(M,m,p))return comp;let xM=isX(M),xm=xM||isX(m),xp=xm||isX(p),anyX=xp;return gtlt==="="&&anyX&&(gtlt=""),pr=options.includePrerelease?"-0":"",xM?gtlt===">"||gtlt==="<"?ret="<0.0.0-0":ret="*":gtlt&&anyX?(xm&&(m=0),p=0,gtlt===">"?(gtlt=">=",xm?(M=+M+1,m=0,p=0):(m=+m+1,p=0)):gtlt==="<="&&(gtlt="<",xm?M=+M+1:m=+m+1),gtlt==="<"&&(pr="-0"),ret=`${gtlt+M}.${m}.${p}${pr}`):xm?ret=`>=${M}.0.0${pr} <${+M+1}.0.0-0`:xp&&(ret=`>=${M}.${m}.0${pr} <${M}.${+m+1}.0-0`),debug("xRange return",ret),ret})},replaceStars=(comp,options)=>(debug("replaceStars",comp,options),comp.trim().replace(re[t.STAR],"")),replaceGTE0=(comp,options)=>(debug("replaceGTE0",comp,options),comp.trim().replace(re[options.includePrerelease?t.GTE0PRE:t.GTE0],"")),hyphenReplace=incPr=>($0,from,fM,fm,fp,fpr,fb,to,tM,tm,tp,tpr)=>(isX(fM)?from="":isX(fm)?from=`>=${fM}.0.0${incPr?"-0":""}`:isX(fp)?from=`>=${fM}.${fm}.0${incPr?"-0":""}`:fpr?from=`>=${from}`:from=`>=${from}${incPr?"-0":""}`,isX(tM)?to="":isX(tm)?to=`<${+tM+1}.0.0-0`:isX(tp)?to=`<${tM}.${+tm+1}.0-0`:tpr?to=`<=${tM}.${tm}.${tp}-${tpr}`:incPr?to=`<${tM}.${tm}.${+tp+1}-0`:to=`<=${to}`,`${from} ${to}`.trim()),testSet=(set,version,options)=>{for(let i=0;i<set.length;i++)if(!set[i].test(version))return!1;if(version.prerelease.length&&!options.includePrerelease){for(let i=0;i<set.length;i++)if(debug(set[i].semver),set[i].semver!==Comparator.ANY&&set[i].semver.prerelease.length>0){let allowed=set[i].semver;if(allowed.major===version.major&&allowed.minor===version.minor&&allowed.patch===version.patch)return!0}return!1}return!0}}});var require_comparator=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js"(exports,module){"use strict";var ANY=Symbol("SemVer ANY"),Comparator=class _Comparator{static get ANY(){return ANY}constructor(comp,options){if(options=parseOptions(options),comp instanceof _Comparator){if(comp.loose===!!options.loose)return comp;comp=comp.value}comp=comp.trim().split(/\s+/).join(" "),debug("comparator",comp,options),this.options=options,this.loose=!!options.loose,this.parse(comp),this.semver===ANY?this.value="":this.value=this.operator+this.semver.version,debug("comp",this)}parse(comp){let r=this.options.loose?re[t.COMPARATORLOOSE]:re[t.COMPARATOR],m=comp.match(r);if(!m)throw new TypeError(`Invalid comparator: ${comp}`);this.operator=m[1]!==void 0?m[1]:"",this.operator==="="&&(this.operator=""),m[2]?this.semver=new SemVer(m[2],this.options.loose):this.semver=ANY}toString(){return this.value}test(version){if(debug("Comparator.test",version,this.options.loose),this.semver===ANY||version===ANY)return!0;if(typeof version=="string")try{version=new SemVer(version,this.options)}catch{return!1}return cmp(version,this.operator,this.semver,this.options)}intersects(comp,options){if(!(comp instanceof _Comparator))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new Range(comp.value,options).test(this.value):comp.operator===""?comp.value===""?!0:new Range(this.value,options).test(comp.semver):(options=parseOptions(options),options.includePrerelease&&(this.value==="<0.0.0-0"||comp.value==="<0.0.0-0")||!options.includePrerelease&&(this.value.startsWith("<0.0.0")||comp.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&comp.operator.startsWith(">")||this.operator.startsWith("<")&&comp.operator.startsWith("<")||this.semver.version===comp.semver.version&&this.operator.includes("=")&&comp.operator.includes("=")||cmp(this.semver,"<",comp.semver,options)&&this.operator.startsWith(">")&&comp.operator.startsWith("<")||cmp(this.semver,">",comp.semver,options)&&this.operator.startsWith("<")&&comp.operator.startsWith(">")))}};module.exports=Comparator;var parseOptions=require_parse_options(),{safeRe:re,t}=require_re(),cmp=require_cmp(),debug=require_debug(),SemVer=require_semver(),Range=require_range()}});var require_satisfies=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js"(exports,module){"use strict";var Range=require_range(),satisfies2=(version,range,options)=>{try{range=new Range(range,options)}catch{return!1}return range.test(version)};module.exports=satisfies2}});var require_to_comparators=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js"(exports,module){"use strict";var Range=require_range(),toComparators=(range,options)=>new Range(range,options).set.map(comp=>comp.map(c=>c.value).join(" ").trim().split(" "));module.exports=toComparators}});var require_max_satisfying=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js"(exports,module){"use strict";var SemVer=require_semver(),Range=require_range(),maxSatisfying2=(versions,range,options)=>{let max=null,maxSV=null,rangeObj=null;try{rangeObj=new Range(range,options)}catch{return null}return versions.forEach(v=>{rangeObj.test(v)&&(!max||maxSV.compare(v)===-1)&&(max=v,maxSV=new SemVer(max,options))}),max};module.exports=maxSatisfying2}});var require_min_satisfying=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js"(exports,module){"use strict";var SemVer=require_semver(),Range=require_range(),minSatisfying=(versions,range,options)=>{let min=null,minSV=null,rangeObj=null;try{rangeObj=new Range(range,options)}catch{return null}return versions.forEach(v=>{rangeObj.test(v)&&(!min||minSV.compare(v)===1)&&(min=v,minSV=new SemVer(min,options))}),min};module.exports=minSatisfying}});var require_min_version=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js"(exports,module){"use strict";var SemVer=require_semver(),Range=require_range(),gt=require_gt(),minVersion2=(range,loose)=>{range=new Range(range,loose);let minver=new SemVer("0.0.0");if(range.test(minver)||(minver=new SemVer("0.0.0-0"),range.test(minver)))return minver;minver=null;for(let i=0;i<range.set.length;++i){let comparators=range.set[i],setMin=null;comparators.forEach(comparator=>{let compver=new SemVer(comparator.semver.version);switch(comparator.operator){case">":compver.prerelease.length===0?compver.patch++:compver.prerelease.push(0),compver.raw=compver.format();case"":case">=":(!setMin||gt(compver,setMin))&&(setMin=compver);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${comparator.operator}`)}}),setMin&&(!minver||gt(minver,setMin))&&(minver=setMin)}return minver&&range.test(minver)?minver:null};module.exports=minVersion2}});var require_valid2=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js"(exports,module){"use strict";var Range=require_range(),validRange2=(range,options)=>{try{return new Range(range,options).range||"*"}catch{return null}};module.exports=validRange2}});var require_outside=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js"(exports,module){"use strict";var SemVer=require_semver(),Comparator=require_comparator(),{ANY}=Comparator,Range=require_range(),satisfies2=require_satisfies(),gt=require_gt(),lt=require_lt(),lte=require_lte(),gte=require_gte(),outside=(version,range,hilo,options)=>{version=new SemVer(version,options),range=new Range(range,options);let gtfn,ltefn,ltfn,comp,ecomp;switch(hilo){case">":gtfn=gt,ltefn=lte,ltfn=lt,comp=">",ecomp=">=";break;case"<":gtfn=lt,ltefn=gte,ltfn=gt,comp="<",ecomp="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(satisfies2(version,range,options))return!1;for(let i=0;i<range.set.length;++i){let comparators=range.set[i],high=null,low=null;if(comparators.forEach(comparator=>{comparator.semver===ANY&&(comparator=new Comparator(">=0.0.0")),high=high||comparator,low=low||comparator,gtfn(comparator.semver,high.semver,options)?high=comparator:ltfn(comparator.semver,low.semver,options)&&(low=comparator)}),high.operator===comp||high.operator===ecomp||(!low.operator||low.operator===comp)&<efn(version,low.semver))return!1;if(low.operator===ecomp&<fn(version,low.semver))return!1}return!0};module.exports=outside}});var require_gtr=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js"(exports,module){"use strict";var outside=require_outside(),gtr=(version,range,options)=>outside(version,range,">",options);module.exports=gtr}});var require_ltr=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js"(exports,module){"use strict";var outside=require_outside(),ltr=(version,range,options)=>outside(version,range,"<",options);module.exports=ltr}});var require_intersects=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js"(exports,module){"use strict";var Range=require_range(),intersects=(r1,r2,options)=>(r1=new Range(r1,options),r2=new Range(r2,options),r1.intersects(r2,options));module.exports=intersects}});var require_simplify=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js"(exports,module){"use strict";var satisfies2=require_satisfies(),compare4=require_compare();module.exports=(versions,range,options)=>{let set=[],first=null,prev=null,v=versions.sort((a,b)=>compare4(a,b,options));for(let version of v)satisfies2(version,range,options)?(prev=version,first||(first=version)):(prev&&set.push([first,prev]),prev=null,first=null);first&&set.push([first,null]);let ranges=[];for(let[min,max]of set)min===max?ranges.push(min):!max&&min===v[0]?ranges.push("*"):max?min===v[0]?ranges.push(`<=${max}`):ranges.push(`${min} - ${max}`):ranges.push(`>=${min}`);let simplified=ranges.join(" || "),original=typeof range.raw=="string"?range.raw:String(range);return simplified.length<original.length?simplified:range}}});var require_subset=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js"(exports,module){"use strict";var Range=require_range(),Comparator=require_comparator(),{ANY}=Comparator,satisfies2=require_satisfies(),compare4=require_compare(),subset=(sub,dom,options={})=>{if(sub===dom)return!0;sub=new Range(sub,options),dom=new Range(dom,options);let sawNonNull=!1;OUTER:for(let simpleSub of sub.set){for(let simpleDom of dom.set){let isSub=simpleSubset(simpleSub,simpleDom,options);if(sawNonNull=sawNonNull||isSub!==null,isSub)continue OUTER}if(sawNonNull)return!1}return!0},minimumVersionWithPreRelease=[new Comparator(">=0.0.0-0")],minimumVersion2=[new Comparator(">=0.0.0")],simpleSubset=(sub,dom,options)=>{if(sub===dom)return!0;if(sub.length===1&&sub[0].semver===ANY){if(dom.length===1&&dom[0].semver===ANY)return!0;options.includePrerelease?sub=minimumVersionWithPreRelease:sub=minimumVersion2}if(dom.length===1&&dom[0].semver===ANY){if(options.includePrerelease)return!0;dom=minimumVersion2}let eqSet=new Set,gt,lt;for(let c of sub)c.operator===">"||c.operator===">="?gt=higherGT(gt,c,options):c.operator==="<"||c.operator==="<="?lt=lowerLT(lt,c,options):eqSet.add(c.semver);if(eqSet.size>1)return null;let gtltComp;if(gt&<){if(gtltComp=compare4(gt.semver,lt.semver,options),gtltComp>0)return null;if(gtltComp===0&&(gt.operator!==">="||lt.operator!=="<="))return null}for(let eq of eqSet){if(gt&&!satisfies2(eq,String(gt),options)||lt&&!satisfies2(eq,String(lt),options))return null;for(let c of dom)if(!satisfies2(eq,String(c),options))return!1;return!0}let higher,lower,hasDomLT,hasDomGT,needDomLTPre=lt&&!options.includePrerelease&<.semver.prerelease.length?lt.semver:!1,needDomGTPre=gt&&!options.includePrerelease&>.semver.prerelease.length?gt.semver:!1;needDomLTPre&&needDomLTPre.prerelease.length===1&<.operator==="<"&&needDomLTPre.prerelease[0]===0&&(needDomLTPre=!1);for(let c of dom){if(hasDomGT=hasDomGT||c.operator===">"||c.operator===">=",hasDomLT=hasDomLT||c.operator==="<"||c.operator==="<=",gt){if(needDomGTPre&&c.semver.prerelease&&c.semver.prerelease.length&&c.semver.major===needDomGTPre.major&&c.semver.minor===needDomGTPre.minor&&c.semver.patch===needDomGTPre.patch&&(needDomGTPre=!1),c.operator===">"||c.operator===">="){if(higher=higherGT(gt,c,options),higher===c&&higher!==gt)return!1}else if(gt.operator===">="&&!c.test(gt.semver))return!1}if(lt){if(needDomLTPre&&c.semver.prerelease&&c.semver.prerelease.length&&c.semver.major===needDomLTPre.major&&c.semver.minor===needDomLTPre.minor&&c.semver.patch===needDomLTPre.patch&&(needDomLTPre=!1),c.operator==="<"||c.operator==="<="){if(lower=lowerLT(lt,c,options),lower===c&&lower!==lt)return!1}else if(lt.operator==="<="&&!c.test(lt.semver))return!1}if(!c.operator&&(lt||gt)&>ltComp!==0)return!1}return!(gt&&hasDomLT&&!lt&>ltComp!==0||lt&&hasDomGT&&!gt&>ltComp!==0||needDomGTPre||needDomLTPre)},higherGT=(a,b,options)=>{if(!a)return b;let comp=compare4(a.semver,b.semver,options);return comp>0?a:comp<0||b.operator===">"&&a.operator===">="?b:a},lowerLT=(a,b,options)=>{if(!a)return b;let comp=compare4(a.semver,b.semver,options);return comp<0?a:comp>0||b.operator==="<"&&a.operator==="<="?b:a};module.exports=subset}});var require_semver2=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js"(exports,module){"use strict";var internalRe=require_re(),constants=require_constants(),SemVer=require_semver(),identifiers=require_identifiers(),parse7=require_parse(),valid=require_valid(),clean=require_clean(),inc=require_inc(),diff=require_diff(),major=require_major(),minor=require_minor(),patch=require_patch(),prerelease=require_prerelease(),compare4=require_compare(),rcompare=require_rcompare(),compareLoose=require_compare_loose(),compareBuild=require_compare_build(),sort=require_sort(),rsort=require_rsort(),gt=require_gt(),lt=require_lt(),eq=require_eq(),neq=require_neq(),gte=require_gte(),lte=require_lte(),cmp=require_cmp(),coerce=require_coerce(),truncate=require_truncate(),Comparator=require_comparator(),Range=require_range(),satisfies2=require_satisfies(),toComparators=require_to_comparators(),maxSatisfying2=require_max_satisfying(),minSatisfying=require_min_satisfying(),minVersion2=require_min_version(),validRange2=require_valid2(),outside=require_outside(),gtr=require_gtr(),ltr=require_ltr(),intersects=require_intersects(),simplifyRange=require_simplify(),subset=require_subset();module.exports={parse:parse7,valid,clean,inc,diff,major,minor,patch,prerelease,compare:compare4,rcompare,compareLoose,compareBuild,sort,rsort,gt,lt,eq,neq,gte,lte,cmp,coerce,truncate,Comparator,Range,satisfies:satisfies2,toComparators,maxSatisfying:maxSatisfying2,minSatisfying,minVersion:minVersion2,validRange:validRange2,outside,gtr,ltr,intersects,simplifyRange,subset,SemVer,re:internalRe.re,src:internalRe.src,tokens:internalRe.t,SEMVER_SPEC_VERSION:constants.SEMVER_SPEC_VERSION,RELEASE_TYPES:constants.RELEASE_TYPES,compareIdentifiers:identifiers.compareIdentifiers,rcompareIdentifiers:identifiers.rcompareIdentifiers}}});var require_identity=__commonJS({"../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/identity.js"(exports){"use strict";var ALIAS=Symbol.for("yaml.alias"),DOC=Symbol.for("yaml.document"),MAP=Symbol.for("yaml.map"),PAIR=Symbol.for("yaml.pair"),SCALAR=Symbol.for("yaml.scalar"),SEQ=Symbol.for("yaml.seq"),NODE_TYPE=Symbol.for("yaml.node.type"),isAlias=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===ALIAS,isDocument=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===DOC,isMap=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===MAP,isPair=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===PAIR,isScalar=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SCALAR,isSeq=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SEQ;function isCollection(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case MAP:case SEQ:return!0}return!1}function isNode(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case ALIAS:case MAP:case SCALAR:case SEQ:return!0}return!1}var hasAnchor=node=>(isScalar(node)||isCollection(node))&&!!node.anchor;exports.ALIAS=ALIAS;exports.DOC=DOC;exports.MAP=MAP;exports.NODE_TYPE=NODE_TYPE;exports.PAIR=PAIR;exports.SCALAR=SCALAR;exports.SEQ=SEQ;exports.hasAnchor=hasAnchor;exports.isAlias=isAlias;exports.isCollection=isCollection;exports.isDocument=isDocument;exports.isMap=isMap;exports.isNode=isNode;exports.isPair=isPair;exports.isScalar=isScalar;exports.isSeq=isSeq}});var require_visit=__commonJS({"../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/visit.js"(exports){"use strict";var identity=require_identity(),BREAK=Symbol("break visit"),SKIP=Symbol("skip children"),REMOVE=Symbol("remove node");function visit(node,visitor){let visitor_=initVisitor(visitor);identity.isDocument(node)?visit_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE&&(node.contents=null):visit_(null,node,visitor_,Object.freeze([]))}visit.BREAK=BREAK;visit.SKIP=SKIP;visit.REMOVE=REMOVE;function visit_(key,node,visitor,path){let ctrl=callVisitor(key,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key,path,ctrl),visit_(key,ctrl,visitor,path);if(typeof ctrl!="symbol"){if(identity.isCollection(node)){path=Object.freeze(path.concat(node));for(let i=0;i<node.items.length;++i){let ci=visit_(i,node.items[i],visitor,path);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(node.items.splice(i,1),i-=1)}}}else if(identity.isPair(node)){path=Object.freeze(path.concat(node));let ck=visit_("key",node.key,visitor,path);if(ck===BREAK)return BREAK;ck===REMOVE&&(node.key=null);let cv=visit_("value",node.value,visitor,path);if(cv===BREAK)return BREAK;cv===REMOVE&&(node.value=null)}}return ctrl}async function visitAsync(node,visitor){let visitor_=initVisitor(visitor);identity.isDocument(node)?await visitAsync_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE&&(node.contents=null):await visitAsync_(null,node,visitor_,Object.freeze([]))}visitAsync.BREAK=BREAK;visitAsync.SKIP=SKIP;visitAsync.REMOVE=REMOVE;async function visitAsync_(key,node,visitor,path){let ctrl=await callVisitor(key,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key,path,ctrl),visitAsync_(key,ctrl,visitor,path);if(typeof ctrl!="symbol"){if(identity.isCollection(node)){path=Object.freeze(path.concat(node));for(let i=0;i<node.items.length;++i){let ci=await visitAsync_(i,node.items[i],visitor,path);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(node.items.splice(i,1),i-=1)}}}else if(identity.isPair(node)){path=Object.freeze(path.concat(node));let ck=await visitAsync_("key",node.key,visitor,path);if(ck===BREAK)return BREAK;ck===REMOVE&&(node.key=null);let cv=await visitAsync_("value",node.value,visitor,path);if(cv===BREAK)return BREAK;cv===REMOVE&&(node.value=null)}}return ctrl}function initVisitor(visitor){return typeof visitor=="object"&&(visitor.Collection||visitor.Node||visitor.Value)?Object.assign({Alias:visitor.Node,Map:visitor.Node,Scalar:visitor.Node,Seq:visitor.Node},visitor.Value&&{Map:visitor.Value,Scalar:visitor.Value,Seq:visitor.Value},visitor.Collection&&{Map:visitor.Collection,Seq:visitor.Collection},visitor):visitor}function callVisitor(key,node,visitor,path){if(typeof visitor=="function")return visitor(key,node,path);if(identity.isMap(node))return visitor.Map?.(key,node,path);if(identity.isSeq(node))return visitor.Seq?.(key,node,path);if(identity.isPair(node))return visitor.Pair?.(key,node,path);if(identity.isScalar(node))return visitor.Scalar?.(key,node,path);if(identity.isAlias(node))return visitor.Alias?.(key,node,path)}function replaceNode(key,path,node){let parent=path[path.length-1];if(identity.isCollection(parent))parent.items[key]=node;else if(identity.isPair(parent))key==="key"?parent.key=node:parent.value=node;else if(identity.isDocument(parent))parent.contents=node;else{let pt=identity.isAlias(parent)?"alias":"scalar";throw new Error(`Cannot replace node with ${pt} parent`)}}exports.visit=visit;exports.visitAsync=visitAsync}});var require_directives=__commonJS({"../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/doc/directives.js"(exports){"use strict";var identity=require_identity(),visit=require_visit(),escapeChars={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},escapeTagName=tn=>tn.replace(/[!,[\]{}]/g,ch=>escapeChars[ch]),Directives=class _Directives{constructor(yaml,tags){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},_Directives.defaultYaml,yaml),this.tags=Object.assign({},_Directives.defaultTags,tags)}clone(){let copy=new _Directives(this.yaml,this.tags);return copy.docStart=this.docStart,copy}atDocument(){let res=new _Directives(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:_Directives.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},_Directives.defaultTags);break}return res}add(line,onError){this.atNextDocument&&(this.yaml={explicit:_Directives.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},_Directives.defaultTags),this.atNextDocument=!1);let parts=line.trim().split(/[ \t]+/),name=parts.shift();switch(name){case"%TAG":{if(parts.length!==2&&(onError(0,"%TAG directive should contain exactly two parts"),parts.length<2))return!1;let[handle,prefix]=parts;return this.tags[handle]=prefix,!0}case"%YAML":{if(this.yaml.explicit=!0,parts.length!==1)return onError(0,"%YAML directive should contain exactly one part"),!1;let[version]=parts;if(version==="1.1"||version==="1.2")return this.yaml.version=version,!0;{let isValid=/^\d+\.\d+$/.test(version);return onError(6,`Unsupported YAML version ${version}`,isValid),!1}}default:return onError(0,`Unknown directive ${name}`,!0),!1}}tagName(source,onError){if(source==="!")return"!";if(source[0]!=="!")return onError(`Not a valid tag: ${source}`),null;if(source[1]==="<"){let verbatim=source.slice(2,-1);return verbatim==="!"||verbatim==="!!"?(onError(`Verbatim tags aren't resolved, so ${source} is invalid.`),null):(source[source.length-1]!==">"&&onError("Verbatim tags must end with a >"),verbatim)}let[,handle,suffix]=source.match(/^(.*!)([^!]*)$/s);suffix||onError(`The ${source} tag has no suffix`);let prefix=this.tags[handle];if(prefix)try{return prefix+decodeURIComponent(suffix)}catch(error){return onError(String(error)),null}return handle==="!"?source:(onError(`Could not resolve tag: ${source}`),null)}tagString(tag){for(let[handle,prefix]of Object.entries(this.tags))if(tag.startsWith(prefix))return handle+escapeTagName(tag.substring(prefix.length));return tag[0]==="!"?tag:`!<${tag}>`}toString(doc){let lines=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],tagEntries=Object.entries(this.tags),tagNames;if(doc&&tagEntries.length>0&&identity.isNode(doc.contents)){let tags={};visit.visit(doc.contents,(_key,node)=>{identity.isNode(node)&&node.tag&&(tags[node.tag]=!0)}),tagNames=Object.keys(tags)}else tagNames=[];for(let[handle,prefix]of tagEntries)handle==="!!"&&prefix==="tag:yaml.org,2002:"||(!doc||tagNames.some(tn=>tn.startsWith(prefix)))&&lines.push(`%TAG ${handle} ${prefix}`);return lines.join(`
|
|
6
|
+
import{parseSource,require_ts_morph,sourceCandidate}from"./chunk-GHXBU767.js";import{AdapterCapabilityError,IntegrityError,NoTypesError,PackageNotFoundError,RegistryAuthError,UPTIDE_COMMAND,UptideError,VersionNotFoundError,command,errorCode,git}from"./chunk-K3IY7WMD.js";import{__export}from"./chunk-JHZ22Y6X.js";import{__commonJS,__require,__toESM}from"./chunk-Z5YHBDVG.js";var require_constants=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js"(exports,module){"use strict";var SEMVER_SPEC_VERSION="2.0.0",MAX_SAFE_INTEGER=Number.MAX_SAFE_INTEGER||9007199254740991,MAX_SAFE_COMPONENT_LENGTH=16,MAX_SAFE_BUILD_LENGTH=250,RELEASE_TYPES=["major","premajor","minor","preminor","patch","prepatch","prerelease"];module.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH,MAX_SAFE_BUILD_LENGTH,MAX_SAFE_INTEGER,RELEASE_TYPES,SEMVER_SPEC_VERSION,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}});var require_debug=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js"(exports,module){"use strict";var debug=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...args)=>console.error("SEMVER",...args):()=>{};module.exports=debug}});var require_re=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js"(exports,module){"use strict";var{MAX_SAFE_COMPONENT_LENGTH,MAX_SAFE_BUILD_LENGTH,MAX_LENGTH}=require_constants(),debug=require_debug();exports=module.exports={};var re=exports.re=[],safeRe=exports.safeRe=[],src=exports.src=[],safeSrc=exports.safeSrc=[],t=exports.t={},R=0,LETTERDASHNUMBER="[a-zA-Z0-9-]",safeRegexReplacements=[["\\s",1],["\\d",MAX_LENGTH],[LETTERDASHNUMBER,MAX_SAFE_BUILD_LENGTH]],makeSafeRegex=value=>{for(let[token,max]of safeRegexReplacements)value=value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);return value},createToken=(name,value,isGlobal)=>{let safe=makeSafeRegex(value),index=R++;debug(name,index,value),t[name]=index,src[index]=value,safeSrc[index]=safe,re[index]=new RegExp(value,isGlobal?"g":void 0),safeRe[index]=new RegExp(safe,isGlobal?"g":void 0)};createToken("NUMERICIDENTIFIER","0|[1-9]\\d*");createToken("NUMERICIDENTIFIERLOOSE","\\d+");createToken("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);createToken("MAINVERSION",`(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`);createToken("MAINVERSIONLOOSE",`(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`);createToken("PRERELEASEIDENTIFIER",`(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`);createToken("PRERELEASEIDENTIFIERLOOSE",`(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`);createToken("PRERELEASE",`(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`);createToken("PRERELEASELOOSE",`(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);createToken("BUILDIDENTIFIER",`${LETTERDASHNUMBER}+`);createToken("BUILD",`(?:\\+(${src[t.BUILDIDENTIFIER]}(?:\\.${src[t.BUILDIDENTIFIER]})*))`);createToken("FULLPLAIN",`v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`);createToken("FULL",`^${src[t.FULLPLAIN]}$`);createToken("LOOSEPLAIN",`[v=\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`);createToken("LOOSE",`^${src[t.LOOSEPLAIN]}$`);createToken("GTLT","((?:<|>)?=?)");createToken("XRANGEIDENTIFIERLOOSE",`${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);createToken("XRANGEIDENTIFIER",`${src[t.NUMERICIDENTIFIER]}|x|X|\\*`);createToken("XRANGEPLAIN",`[v=\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`);createToken("XRANGEPLAINLOOSE",`[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`);createToken("XRANGE",`^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`);createToken("XRANGELOOSE",`^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`);createToken("COERCEPLAIN",`(^|[^\\d])(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);createToken("COERCE",`${src[t.COERCEPLAIN]}(?:$|[^\\d])`);createToken("COERCEFULL",src[t.COERCEPLAIN]+`(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`);createToken("COERCERTL",src[t.COERCE],!0);createToken("COERCERTLFULL",src[t.COERCEFULL],!0);createToken("LONETILDE","(?:~>?)");createToken("TILDETRIM",`(\\s*)${src[t.LONETILDE]}\\s+`,!0);exports.tildeTrimReplace="$1~";createToken("TILDE",`^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);createToken("TILDELOOSE",`^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);createToken("LONECARET","(?:\\^)");createToken("CARETTRIM",`(\\s*)${src[t.LONECARET]}\\s+`,!0);exports.caretTrimReplace="$1^";createToken("CARET",`^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);createToken("CARETLOOSE",`^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);createToken("COMPARATORLOOSE",`^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`);createToken("COMPARATOR",`^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`);createToken("COMPARATORTRIM",`(\\s*)${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`,!0);exports.comparatorTrimReplace="$1$2$3";createToken("HYPHENRANGE",`^\\s*(${src[t.XRANGEPLAIN]})\\s+-\\s+(${src[t.XRANGEPLAIN]})\\s*$`);createToken("HYPHENRANGELOOSE",`^\\s*(${src[t.XRANGEPLAINLOOSE]})\\s+-\\s+(${src[t.XRANGEPLAINLOOSE]})\\s*$`);createToken("STAR","(<|>)?=?\\s*\\*");createToken("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");createToken("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}});var require_parse_options=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js"(exports,module){"use strict";var looseOption=Object.freeze({loose:!0}),emptyOpts=Object.freeze({}),parseOptions=options=>options?typeof options!="object"?looseOption:options:emptyOpts;module.exports=parseOptions}});var require_identifiers=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js"(exports,module){"use strict";var numeric=/^[0-9]+$/,compareIdentifiers=(a,b)=>{if(typeof a=="number"&&typeof b=="number")return a===b?0:a<b?-1:1;let anum=numeric.test(a),bnum=numeric.test(b);return anum&&bnum&&(a=+a,b=+b),a===b?0:anum&&!bnum?-1:bnum&&!anum?1:a<b?-1:1},rcompareIdentifiers=(a,b)=>compareIdentifiers(b,a);module.exports={compareIdentifiers,rcompareIdentifiers}}});var require_semver=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js"(exports,module){"use strict";var debug=require_debug(),{MAX_LENGTH,MAX_SAFE_INTEGER}=require_constants(),{safeRe:re,t}=require_re(),parseOptions=require_parse_options(),{compareIdentifiers}=require_identifiers(),isPrereleaseIdentifier=(prerelease,identifier)=>{let identifiers=identifier.split(".");if(identifiers.length>prerelease.length)return!1;for(let i=0;i<identifiers.length;i++)if(compareIdentifiers(prerelease[i],identifiers[i])!==0)return!1;return!0},SemVer=class _SemVer{constructor(version,options){if(options=parseOptions(options),version instanceof _SemVer){if(version.loose===!!options.loose&&version.includePrerelease===!!options.includePrerelease)return version;version=version.version}else if(typeof version!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`);if(version.length>MAX_LENGTH)throw new TypeError(`version is longer than ${MAX_LENGTH} characters`);debug("SemVer",version,options),this.options=options,this.loose=!!options.loose,this.includePrerelease=!!options.includePrerelease;let m=version.trim().match(options.loose?re[t.LOOSE]:re[t.FULL]);if(!m)throw new TypeError(`Invalid Version: ${version}`);if(this.raw=version,this.major=+m[1],this.minor=+m[2],this.patch=+m[3],this.major>MAX_SAFE_INTEGER||this.major<0)throw new TypeError("Invalid major version");if(this.minor>MAX_SAFE_INTEGER||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>MAX_SAFE_INTEGER||this.patch<0)throw new TypeError("Invalid patch version");m[4]?this.prerelease=m[4].split(".").map(id=>{if(/^[0-9]+$/.test(id)){let num=+id;if(num>=0&&num<MAX_SAFE_INTEGER)return num}return id}):this.prerelease=[],this.build=m[5]?m[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(other){if(debug("SemVer.compare",this.version,this.options,other),!(other instanceof _SemVer)){if(typeof other=="string"&&other===this.version)return 0;other=new _SemVer(other,this.options)}return other.version===this.version?0:this.compareMain(other)||this.comparePre(other)}compareMain(other){return other instanceof _SemVer||(other=new _SemVer(other,this.options)),this.major<other.major?-1:this.major>other.major?1:this.minor<other.minor?-1:this.minor>other.minor?1:this.patch<other.patch?-1:this.patch>other.patch?1:0}comparePre(other){if(other instanceof _SemVer||(other=new _SemVer(other,this.options)),this.prerelease.length&&!other.prerelease.length)return-1;if(!this.prerelease.length&&other.prerelease.length)return 1;if(!this.prerelease.length&&!other.prerelease.length)return 0;let i=0;do{let a=this.prerelease[i],b=other.prerelease[i];if(debug("prerelease compare",i,a,b),a===void 0&&b===void 0)return 0;if(b===void 0)return 1;if(a===void 0)return-1;if(a===b)continue;return compareIdentifiers(a,b)}while(++i)}compareBuild(other){other instanceof _SemVer||(other=new _SemVer(other,this.options));let i=0;do{let a=this.build[i],b=other.build[i];if(debug("build compare",i,a,b),a===void 0&&b===void 0)return 0;if(b===void 0)return 1;if(a===void 0)return-1;if(a===b)continue;return compareIdentifiers(a,b)}while(++i)}inc(release,identifier,identifierBase){if(release.startsWith("pre")){if(!identifier&&identifierBase===!1)throw new Error("invalid increment argument: identifier is empty");if(identifier){let match2=`-${identifier}`.match(this.options.loose?re[t.PRERELEASELOOSE]:re[t.PRERELEASE]);if(!match2||match2[1]!==identifier)throw new Error(`invalid identifier: ${identifier}`)}}switch(release){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",identifier,identifierBase);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",identifier,identifierBase);break;case"prepatch":this.prerelease.length=0,this.inc("patch",identifier,identifierBase),this.inc("pre",identifier,identifierBase);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",identifier,identifierBase),this.inc("pre",identifier,identifierBase);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let base=Number(identifierBase)?1:0;if(this.prerelease.length===0)this.prerelease=[base];else{let i=this.prerelease.length;for(;--i>=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);if(i===-1){if(identifier===this.prerelease.join(".")&&identifierBase===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(base)}}if(identifier){let prerelease=[identifier,base];if(identifierBase===!1&&(prerelease=[identifier]),isPrereleaseIdentifier(this.prerelease,identifier)){let prereleaseBase=this.prerelease[identifier.split(".").length];isNaN(prereleaseBase)&&(this.prerelease=prerelease)}else this.prerelease=prerelease}break}default:throw new Error(`invalid increment argument: ${release}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};module.exports=SemVer}});var require_parse=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js"(exports,module){"use strict";var SemVer=require_semver(),parse7=(version,options,throwErrors=!1)=>{if(version instanceof SemVer)return version;try{return new SemVer(version,options)}catch(er){if(!throwErrors)return null;throw er}};module.exports=parse7}});var require_valid=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js"(exports,module){"use strict";var parse7=require_parse(),valid=(version,options)=>{let v=parse7(version,options);return v?v.version:null};module.exports=valid}});var require_clean=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js"(exports,module){"use strict";var parse7=require_parse(),clean=(version,options)=>{let s=parse7(version.trim().replace(/^[=v]+/,""),options);return s?s.version:null};module.exports=clean}});var require_inc=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js"(exports,module){"use strict";var SemVer=require_semver(),inc=(version,release,options,identifier,identifierBase)=>{typeof options=="string"&&(identifierBase=identifier,identifier=options,options=void 0);try{return new SemVer(version instanceof SemVer?version.version:version,options).inc(release,identifier,identifierBase).version}catch{return null}};module.exports=inc}});var require_diff=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js"(exports,module){"use strict";var parse7=require_parse(),diff=(version1,version2)=>{let v1=parse7(version1,null,!0),v2=parse7(version2,null,!0),comparison=v1.compare(v2);if(comparison===0)return null;let v1Higher=comparison>0,highVersion=v1Higher?v1:v2,lowVersion=v1Higher?v2:v1,highHasPre=!!highVersion.prerelease.length;if(!!lowVersion.prerelease.length&&!highHasPre){if(!lowVersion.patch&&!lowVersion.minor)return"major";if(lowVersion.compareMain(highVersion)===0)return lowVersion.minor&&!lowVersion.patch?"minor":"patch"}let prefix=highHasPre?"pre":"";return v1.major!==v2.major?prefix+"major":v1.minor!==v2.minor?prefix+"minor":v1.patch!==v2.patch?prefix+"patch":"prerelease"};module.exports=diff}});var require_major=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js"(exports,module){"use strict";var SemVer=require_semver(),major=(a,loose)=>new SemVer(a,loose).major;module.exports=major}});var require_minor=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js"(exports,module){"use strict";var SemVer=require_semver(),minor=(a,loose)=>new SemVer(a,loose).minor;module.exports=minor}});var require_patch=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js"(exports,module){"use strict";var SemVer=require_semver(),patch=(a,loose)=>new SemVer(a,loose).patch;module.exports=patch}});var require_prerelease=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js"(exports,module){"use strict";var parse7=require_parse(),prerelease=(version,options)=>{let parsed5=parse7(version,options);return parsed5&&parsed5.prerelease.length?parsed5.prerelease:null};module.exports=prerelease}});var require_compare=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js"(exports,module){"use strict";var SemVer=require_semver(),compare4=(a,b,loose)=>new SemVer(a,loose).compare(new SemVer(b,loose));module.exports=compare4}});var require_rcompare=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js"(exports,module){"use strict";var compare4=require_compare(),rcompare=(a,b,loose)=>compare4(b,a,loose);module.exports=rcompare}});var require_compare_loose=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js"(exports,module){"use strict";var compare4=require_compare(),compareLoose=(a,b)=>compare4(a,b,!0);module.exports=compareLoose}});var require_compare_build=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js"(exports,module){"use strict";var SemVer=require_semver(),compareBuild=(a,b,loose)=>{let versionA=new SemVer(a,loose),versionB=new SemVer(b,loose);return versionA.compare(versionB)||versionA.compareBuild(versionB)};module.exports=compareBuild}});var require_sort=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js"(exports,module){"use strict";var compareBuild=require_compare_build(),sort=(list,loose)=>list.sort((a,b)=>compareBuild(a,b,loose));module.exports=sort}});var require_rsort=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js"(exports,module){"use strict";var compareBuild=require_compare_build(),rsort=(list,loose)=>list.sort((a,b)=>compareBuild(b,a,loose));module.exports=rsort}});var require_gt=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js"(exports,module){"use strict";var compare4=require_compare(),gt=(a,b,loose)=>compare4(a,b,loose)>0;module.exports=gt}});var require_lt=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js"(exports,module){"use strict";var compare4=require_compare(),lt=(a,b,loose)=>compare4(a,b,loose)<0;module.exports=lt}});var require_eq=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js"(exports,module){"use strict";var compare4=require_compare(),eq=(a,b,loose)=>compare4(a,b,loose)===0;module.exports=eq}});var require_neq=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js"(exports,module){"use strict";var compare4=require_compare(),neq=(a,b,loose)=>compare4(a,b,loose)!==0;module.exports=neq}});var require_gte=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js"(exports,module){"use strict";var compare4=require_compare(),gte=(a,b,loose)=>compare4(a,b,loose)>=0;module.exports=gte}});var require_lte=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js"(exports,module){"use strict";var compare4=require_compare(),lte=(a,b,loose)=>compare4(a,b,loose)<=0;module.exports=lte}});var require_cmp=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js"(exports,module){"use strict";var eq=require_eq(),neq=require_neq(),gt=require_gt(),gte=require_gte(),lt=require_lt(),lte=require_lte(),cmp=(a,op,b,loose)=>{switch(op){case"===":return typeof a=="object"&&(a=a.version),typeof b=="object"&&(b=b.version),a===b;case"!==":return typeof a=="object"&&(a=a.version),typeof b=="object"&&(b=b.version),a!==b;case"":case"=":case"==":return eq(a,b,loose);case"!=":return neq(a,b,loose);case">":return gt(a,b,loose);case">=":return gte(a,b,loose);case"<":return lt(a,b,loose);case"<=":return lte(a,b,loose);default:throw new TypeError(`Invalid operator: ${op}`)}};module.exports=cmp}});var require_coerce=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js"(exports,module){"use strict";var SemVer=require_semver(),parse7=require_parse(),{safeRe:re,t}=require_re(),coerce=(version,options)=>{if(version instanceof SemVer)return version;if(typeof version=="number"&&(version=String(version)),typeof version!="string")return null;options=options||{};let match2=null;if(!options.rtl)match2=version.match(options.includePrerelease?re[t.COERCEFULL]:re[t.COERCE]);else{let coerceRtlRegex=options.includePrerelease?re[t.COERCERTLFULL]:re[t.COERCERTL],next;for(;(next=coerceRtlRegex.exec(version))&&(!match2||match2.index+match2[0].length!==version.length);)(!match2||next.index+next[0].length!==match2.index+match2[0].length)&&(match2=next),coerceRtlRegex.lastIndex=next.index+next[1].length+next[2].length;coerceRtlRegex.lastIndex=-1}if(match2===null)return null;let major=match2[2],minor=match2[3]||"0",patch=match2[4]||"0",prerelease=options.includePrerelease&&match2[5]?`-${match2[5]}`:"",build=options.includePrerelease&&match2[6]?`+${match2[6]}`:"";return parse7(`${major}.${minor}.${patch}${prerelease}${build}`,options)};module.exports=coerce}});var require_truncate=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js"(exports,module){"use strict";var parse7=require_parse(),constants=require_constants(),SemVer=require_semver(),truncate=(version,truncation,options)=>{if(!constants.RELEASE_TYPES.includes(truncation))return null;let clonedVersion=cloneInputVersion(version,options);return clonedVersion&&doTruncation(clonedVersion,truncation)},cloneInputVersion=(version,options)=>{let versionStringToParse=version instanceof SemVer?version.version:version;return parse7(versionStringToParse,options)},doTruncation=(version,truncation)=>{if(isPrerelease(truncation))return version.version;switch(version.prerelease=[],truncation){case"major":version.minor=0,version.patch=0;break;case"minor":version.patch=0;break}return version.format()},isPrerelease=type=>type.startsWith("pre");module.exports=truncate}});var require_lrucache=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js"(exports,module){"use strict";var LRUCache=class{constructor(){this.max=1e3,this.map=new Map}get(key){let value=this.map.get(key);if(value!==void 0)return this.map.delete(key),this.map.set(key,value),value}delete(key){return this.map.delete(key)}set(key,value){if(!this.delete(key)&&value!==void 0){if(this.map.size>=this.max){let firstKey=this.map.keys().next().value;this.delete(firstKey)}this.map.set(key,value)}return this}};module.exports=LRUCache}});var require_range=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js"(exports,module){"use strict";var SPACE_CHARACTERS=/\s+/g,Range=class _Range{constructor(range,options){if(options=parseOptions(options),range instanceof _Range)return range.loose===!!options.loose&&range.includePrerelease===!!options.includePrerelease?range:new _Range(range.raw,options);if(range instanceof Comparator)return this.raw=range.value,this.set=[[range]],this.formatted=void 0,this;if(this.options=options,this.loose=!!options.loose,this.includePrerelease=!!options.includePrerelease,this.raw=range.trim().replace(SPACE_CHARACTERS," "),this.set=this.raw.split("||").map(r=>this.parseRange(r.trim())).filter(c=>c.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let first=this.set[0];if(this.set=this.set.filter(c=>!isNullSet(c[0])),this.set.length===0)this.set=[first];else if(this.set.length>1){for(let c of this.set)if(c.length===1&&isAny(c[0])){this.set=[c];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let i=0;i<this.set.length;i++){i>0&&(this.formatted+="||");let comps=this.set[i];for(let k=0;k<comps.length;k++)k>0&&(this.formatted+=" "),this.formatted+=comps[k].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(range){range=range.replace(BUILDSTRIPRE,"");let memoKey=((this.options.includePrerelease&&FLAG_INCLUDE_PRERELEASE)|(this.options.loose&&FLAG_LOOSE))+":"+range,cached=cache.get(memoKey);if(cached)return cached;let loose=this.options.loose,hr=loose?re[t.HYPHENRANGELOOSE]:re[t.HYPHENRANGE];range=range.replace(hr,hyphenReplace(this.options.includePrerelease)),debug("hyphen replace",range),range=range.replace(re[t.COMPARATORTRIM],comparatorTrimReplace),debug("comparator trim",range),range=range.replace(re[t.TILDETRIM],tildeTrimReplace),debug("tilde trim",range),range=range.replace(re[t.CARETTRIM],caretTrimReplace),debug("caret trim",range);let rangeList=range.split(" ").map(comp=>parseComparator(comp,this.options)).join(" ").split(/\s+/).map(comp=>replaceGTE0(comp,this.options));loose&&(rangeList=rangeList.filter(comp=>(debug("loose invalid filter",comp,this.options),!!comp.match(re[t.COMPARATORLOOSE])))),debug("range list",rangeList);let rangeMap=new Map,comparators=rangeList.map(comp=>new Comparator(comp,this.options));for(let comp of comparators){if(isNullSet(comp))return[comp];rangeMap.set(comp.value,comp)}rangeMap.size>1&&rangeMap.has("")&&rangeMap.delete("");let result=[...rangeMap.values()];return cache.set(memoKey,result),result}intersects(range,options){if(!(range instanceof _Range))throw new TypeError("a Range is required");return this.set.some(thisComparators=>isSatisfiable(thisComparators,options)&&range.set.some(rangeComparators=>isSatisfiable(rangeComparators,options)&&thisComparators.every(thisComparator=>rangeComparators.every(rangeComparator=>thisComparator.intersects(rangeComparator,options)))))}test(version){if(!version)return!1;if(typeof version=="string")try{version=new SemVer(version,this.options)}catch{return!1}for(let i=0;i<this.set.length;i++)if(testSet(this.set[i],version,this.options))return!0;return!1}};module.exports=Range;var LRU=require_lrucache(),cache=new LRU,parseOptions=require_parse_options(),Comparator=require_comparator(),debug=require_debug(),SemVer=require_semver(),{safeRe:re,src,t,comparatorTrimReplace,tildeTrimReplace,caretTrimReplace}=require_re(),{FLAG_INCLUDE_PRERELEASE,FLAG_LOOSE}=require_constants(),BUILDSTRIPRE=new RegExp(src[t.BUILD],"g"),isNullSet=c=>c.value==="<0.0.0-0",isAny=c=>c.value==="",isSatisfiable=(comparators,options)=>{let result=!0,remainingComparators=comparators.slice(),testComparator=remainingComparators.pop();for(;result&&remainingComparators.length;)result=remainingComparators.every(otherComparator=>testComparator.intersects(otherComparator,options)),testComparator=remainingComparators.pop();return result},parseComparator=(comp,options)=>(comp=comp.replace(re[t.BUILD],""),debug("comp",comp,options),comp=replaceCarets(comp,options),debug("caret",comp),comp=replaceTildes(comp,options),debug("tildes",comp),comp=replaceXRanges(comp,options),debug("xrange",comp),comp=replaceStars(comp,options),debug("stars",comp),comp),isX=id=>!id||id.toLowerCase()==="x"||id==="*",invalidXRangeOrder=(M,m,p)=>isX(M)&&!isX(m)||isX(m)&&p&&!isX(p),replaceTildes=(comp,options)=>comp.trim().split(/\s+/).map(c=>replaceTilde(c,options)).join(" "),replaceTilde=(comp,options)=>{let r=options.loose?re[t.TILDELOOSE]:re[t.TILDE],z=options.includePrerelease?"-0":"";return comp.replace(r,(_,M,m,p,pr)=>{debug("tilde",comp,_,M,m,p,pr);let ret;return isX(M)?ret="":isX(m)?ret=`>=${M}.0.0${z} <${+M+1}.0.0-0`:isX(p)?ret=`>=${M}.${m}.0${z} <${M}.${+m+1}.0-0`:pr?(debug("replaceTilde pr",pr),ret=`>=${M}.${m}.${p}-${pr} <${M}.${+m+1}.0-0`):ret=`>=${M}.${m}.${p} <${M}.${+m+1}.0-0`,debug("tilde return",ret),ret})},replaceCarets=(comp,options)=>comp.trim().split(/\s+/).map(c=>replaceCaret(c,options)).join(" "),replaceCaret=(comp,options)=>{debug("caret",comp,options);let r=options.loose?re[t.CARETLOOSE]:re[t.CARET],z=options.includePrerelease?"-0":"";return comp.replace(r,(_,M,m,p,pr)=>{debug("caret",comp,_,M,m,p,pr);let ret;return isX(M)?ret="":isX(m)?ret=`>=${M}.0.0${z} <${+M+1}.0.0-0`:isX(p)?M==="0"?ret=`>=${M}.${m}.0${z} <${M}.${+m+1}.0-0`:ret=`>=${M}.${m}.0${z} <${+M+1}.0.0-0`:pr?(debug("replaceCaret pr",pr),M==="0"?m==="0"?ret=`>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p+1}-0`:ret=`>=${M}.${m}.${p}-${pr} <${M}.${+m+1}.0-0`:ret=`>=${M}.${m}.${p}-${pr} <${+M+1}.0.0-0`):(debug("no pr"),M==="0"?m==="0"?ret=`>=${M}.${m}.${p} <${M}.${m}.${+p+1}-0`:ret=`>=${M}.${m}.${p} <${M}.${+m+1}.0-0`:ret=`>=${M}.${m}.${p} <${+M+1}.0.0-0`),debug("caret return",ret),ret})},replaceXRanges=(comp,options)=>(debug("replaceXRanges",comp,options),comp.split(/\s+/).map(c=>replaceXRange(c,options)).join(" ")),replaceXRange=(comp,options)=>{comp=comp.trim();let r=options.loose?re[t.XRANGELOOSE]:re[t.XRANGE];return comp.replace(r,(ret,gtlt,M,m,p,pr)=>{if(debug("xRange",comp,ret,gtlt,M,m,p,pr),invalidXRangeOrder(M,m,p))return comp;let xM=isX(M),xm=xM||isX(m),xp=xm||isX(p),anyX=xp;return gtlt==="="&&anyX&&(gtlt=""),pr=options.includePrerelease?"-0":"",xM?gtlt===">"||gtlt==="<"?ret="<0.0.0-0":ret="*":gtlt&&anyX?(xm&&(m=0),p=0,gtlt===">"?(gtlt=">=",xm?(M=+M+1,m=0,p=0):(m=+m+1,p=0)):gtlt==="<="&&(gtlt="<",xm?M=+M+1:m=+m+1),gtlt==="<"&&(pr="-0"),ret=`${gtlt+M}.${m}.${p}${pr}`):xm?ret=`>=${M}.0.0${pr} <${+M+1}.0.0-0`:xp&&(ret=`>=${M}.${m}.0${pr} <${M}.${+m+1}.0-0`),debug("xRange return",ret),ret})},replaceStars=(comp,options)=>(debug("replaceStars",comp,options),comp.trim().replace(re[t.STAR],"")),replaceGTE0=(comp,options)=>(debug("replaceGTE0",comp,options),comp.trim().replace(re[options.includePrerelease?t.GTE0PRE:t.GTE0],"")),hyphenReplace=incPr=>($0,from,fM,fm,fp,fpr,fb,to,tM,tm,tp,tpr)=>(isX(fM)?from="":isX(fm)?from=`>=${fM}.0.0${incPr?"-0":""}`:isX(fp)?from=`>=${fM}.${fm}.0${incPr?"-0":""}`:fpr?from=`>=${from}`:from=`>=${from}${incPr?"-0":""}`,isX(tM)?to="":isX(tm)?to=`<${+tM+1}.0.0-0`:isX(tp)?to=`<${tM}.${+tm+1}.0-0`:tpr?to=`<=${tM}.${tm}.${tp}-${tpr}`:incPr?to=`<${tM}.${tm}.${+tp+1}-0`:to=`<=${to}`,`${from} ${to}`.trim()),testSet=(set,version,options)=>{for(let i=0;i<set.length;i++)if(!set[i].test(version))return!1;if(version.prerelease.length&&!options.includePrerelease){for(let i=0;i<set.length;i++)if(debug(set[i].semver),set[i].semver!==Comparator.ANY&&set[i].semver.prerelease.length>0){let allowed=set[i].semver;if(allowed.major===version.major&&allowed.minor===version.minor&&allowed.patch===version.patch)return!0}return!1}return!0}}});var require_comparator=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js"(exports,module){"use strict";var ANY=Symbol("SemVer ANY"),Comparator=class _Comparator{static get ANY(){return ANY}constructor(comp,options){if(options=parseOptions(options),comp instanceof _Comparator){if(comp.loose===!!options.loose)return comp;comp=comp.value}comp=comp.trim().split(/\s+/).join(" "),debug("comparator",comp,options),this.options=options,this.loose=!!options.loose,this.parse(comp),this.semver===ANY?this.value="":this.value=this.operator+this.semver.version,debug("comp",this)}parse(comp){let r=this.options.loose?re[t.COMPARATORLOOSE]:re[t.COMPARATOR],m=comp.match(r);if(!m)throw new TypeError(`Invalid comparator: ${comp}`);this.operator=m[1]!==void 0?m[1]:"",this.operator==="="&&(this.operator=""),m[2]?this.semver=new SemVer(m[2],this.options.loose):this.semver=ANY}toString(){return this.value}test(version){if(debug("Comparator.test",version,this.options.loose),this.semver===ANY||version===ANY)return!0;if(typeof version=="string")try{version=new SemVer(version,this.options)}catch{return!1}return cmp(version,this.operator,this.semver,this.options)}intersects(comp,options){if(!(comp instanceof _Comparator))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new Range(comp.value,options).test(this.value):comp.operator===""?comp.value===""?!0:new Range(this.value,options).test(comp.semver):(options=parseOptions(options),options.includePrerelease&&(this.value==="<0.0.0-0"||comp.value==="<0.0.0-0")||!options.includePrerelease&&(this.value.startsWith("<0.0.0")||comp.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&comp.operator.startsWith(">")||this.operator.startsWith("<")&&comp.operator.startsWith("<")||this.semver.version===comp.semver.version&&this.operator.includes("=")&&comp.operator.includes("=")||cmp(this.semver,"<",comp.semver,options)&&this.operator.startsWith(">")&&comp.operator.startsWith("<")||cmp(this.semver,">",comp.semver,options)&&this.operator.startsWith("<")&&comp.operator.startsWith(">")))}};module.exports=Comparator;var parseOptions=require_parse_options(),{safeRe:re,t}=require_re(),cmp=require_cmp(),debug=require_debug(),SemVer=require_semver(),Range=require_range()}});var require_satisfies=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js"(exports,module){"use strict";var Range=require_range(),satisfies2=(version,range,options)=>{try{range=new Range(range,options)}catch{return!1}return range.test(version)};module.exports=satisfies2}});var require_to_comparators=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js"(exports,module){"use strict";var Range=require_range(),toComparators=(range,options)=>new Range(range,options).set.map(comp=>comp.map(c=>c.value).join(" ").trim().split(" "));module.exports=toComparators}});var require_max_satisfying=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js"(exports,module){"use strict";var SemVer=require_semver(),Range=require_range(),maxSatisfying2=(versions,range,options)=>{let max=null,maxSV=null,rangeObj=null;try{rangeObj=new Range(range,options)}catch{return null}return versions.forEach(v=>{rangeObj.test(v)&&(!max||maxSV.compare(v)===-1)&&(max=v,maxSV=new SemVer(max,options))}),max};module.exports=maxSatisfying2}});var require_min_satisfying=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js"(exports,module){"use strict";var SemVer=require_semver(),Range=require_range(),minSatisfying=(versions,range,options)=>{let min=null,minSV=null,rangeObj=null;try{rangeObj=new Range(range,options)}catch{return null}return versions.forEach(v=>{rangeObj.test(v)&&(!min||minSV.compare(v)===1)&&(min=v,minSV=new SemVer(min,options))}),min};module.exports=minSatisfying}});var require_min_version=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js"(exports,module){"use strict";var SemVer=require_semver(),Range=require_range(),gt=require_gt(),minVersion2=(range,loose)=>{range=new Range(range,loose);let minver=new SemVer("0.0.0");if(range.test(minver)||(minver=new SemVer("0.0.0-0"),range.test(minver)))return minver;minver=null;for(let i=0;i<range.set.length;++i){let comparators=range.set[i],setMin=null;comparators.forEach(comparator=>{let compver=new SemVer(comparator.semver.version);switch(comparator.operator){case">":compver.prerelease.length===0?compver.patch++:compver.prerelease.push(0),compver.raw=compver.format();case"":case">=":(!setMin||gt(compver,setMin))&&(setMin=compver);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${comparator.operator}`)}}),setMin&&(!minver||gt(minver,setMin))&&(minver=setMin)}return minver&&range.test(minver)?minver:null};module.exports=minVersion2}});var require_valid2=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js"(exports,module){"use strict";var Range=require_range(),validRange2=(range,options)=>{try{return new Range(range,options).range||"*"}catch{return null}};module.exports=validRange2}});var require_outside=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js"(exports,module){"use strict";var SemVer=require_semver(),Comparator=require_comparator(),{ANY}=Comparator,Range=require_range(),satisfies2=require_satisfies(),gt=require_gt(),lt=require_lt(),lte=require_lte(),gte=require_gte(),outside=(version,range,hilo,options)=>{version=new SemVer(version,options),range=new Range(range,options);let gtfn,ltefn,ltfn,comp,ecomp;switch(hilo){case">":gtfn=gt,ltefn=lte,ltfn=lt,comp=">",ecomp=">=";break;case"<":gtfn=lt,ltefn=gte,ltfn=gt,comp="<",ecomp="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(satisfies2(version,range,options))return!1;for(let i=0;i<range.set.length;++i){let comparators=range.set[i],high=null,low=null;if(comparators.forEach(comparator=>{comparator.semver===ANY&&(comparator=new Comparator(">=0.0.0")),high=high||comparator,low=low||comparator,gtfn(comparator.semver,high.semver,options)?high=comparator:ltfn(comparator.semver,low.semver,options)&&(low=comparator)}),high.operator===comp||high.operator===ecomp||(!low.operator||low.operator===comp)&<efn(version,low.semver))return!1;if(low.operator===ecomp&<fn(version,low.semver))return!1}return!0};module.exports=outside}});var require_gtr=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js"(exports,module){"use strict";var outside=require_outside(),gtr=(version,range,options)=>outside(version,range,">",options);module.exports=gtr}});var require_ltr=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js"(exports,module){"use strict";var outside=require_outside(),ltr=(version,range,options)=>outside(version,range,"<",options);module.exports=ltr}});var require_intersects=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js"(exports,module){"use strict";var Range=require_range(),intersects=(r1,r2,options)=>(r1=new Range(r1,options),r2=new Range(r2,options),r1.intersects(r2,options));module.exports=intersects}});var require_simplify=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js"(exports,module){"use strict";var satisfies2=require_satisfies(),compare4=require_compare();module.exports=(versions,range,options)=>{let set=[],first=null,prev=null,v=versions.sort((a,b)=>compare4(a,b,options));for(let version of v)satisfies2(version,range,options)?(prev=version,first||(first=version)):(prev&&set.push([first,prev]),prev=null,first=null);first&&set.push([first,null]);let ranges=[];for(let[min,max]of set)min===max?ranges.push(min):!max&&min===v[0]?ranges.push("*"):max?min===v[0]?ranges.push(`<=${max}`):ranges.push(`${min} - ${max}`):ranges.push(`>=${min}`);let simplified=ranges.join(" || "),original=typeof range.raw=="string"?range.raw:String(range);return simplified.length<original.length?simplified:range}}});var require_subset=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js"(exports,module){"use strict";var Range=require_range(),Comparator=require_comparator(),{ANY}=Comparator,satisfies2=require_satisfies(),compare4=require_compare(),subset=(sub,dom,options={})=>{if(sub===dom)return!0;sub=new Range(sub,options),dom=new Range(dom,options);let sawNonNull=!1;OUTER:for(let simpleSub of sub.set){for(let simpleDom of dom.set){let isSub=simpleSubset(simpleSub,simpleDom,options);if(sawNonNull=sawNonNull||isSub!==null,isSub)continue OUTER}if(sawNonNull)return!1}return!0},minimumVersionWithPreRelease=[new Comparator(">=0.0.0-0")],minimumVersion2=[new Comparator(">=0.0.0")],simpleSubset=(sub,dom,options)=>{if(sub===dom)return!0;if(sub.length===1&&sub[0].semver===ANY){if(dom.length===1&&dom[0].semver===ANY)return!0;options.includePrerelease?sub=minimumVersionWithPreRelease:sub=minimumVersion2}if(dom.length===1&&dom[0].semver===ANY){if(options.includePrerelease)return!0;dom=minimumVersion2}let eqSet=new Set,gt,lt;for(let c of sub)c.operator===">"||c.operator===">="?gt=higherGT(gt,c,options):c.operator==="<"||c.operator==="<="?lt=lowerLT(lt,c,options):eqSet.add(c.semver);if(eqSet.size>1)return null;let gtltComp;if(gt&<){if(gtltComp=compare4(gt.semver,lt.semver,options),gtltComp>0)return null;if(gtltComp===0&&(gt.operator!==">="||lt.operator!=="<="))return null}for(let eq of eqSet){if(gt&&!satisfies2(eq,String(gt),options)||lt&&!satisfies2(eq,String(lt),options))return null;for(let c of dom)if(!satisfies2(eq,String(c),options))return!1;return!0}let higher,lower,hasDomLT,hasDomGT,needDomLTPre=lt&&!options.includePrerelease&<.semver.prerelease.length?lt.semver:!1,needDomGTPre=gt&&!options.includePrerelease&>.semver.prerelease.length?gt.semver:!1;needDomLTPre&&needDomLTPre.prerelease.length===1&<.operator==="<"&&needDomLTPre.prerelease[0]===0&&(needDomLTPre=!1);for(let c of dom){if(hasDomGT=hasDomGT||c.operator===">"||c.operator===">=",hasDomLT=hasDomLT||c.operator==="<"||c.operator==="<=",gt){if(needDomGTPre&&c.semver.prerelease&&c.semver.prerelease.length&&c.semver.major===needDomGTPre.major&&c.semver.minor===needDomGTPre.minor&&c.semver.patch===needDomGTPre.patch&&(needDomGTPre=!1),c.operator===">"||c.operator===">="){if(higher=higherGT(gt,c,options),higher===c&&higher!==gt)return!1}else if(gt.operator===">="&&!c.test(gt.semver))return!1}if(lt){if(needDomLTPre&&c.semver.prerelease&&c.semver.prerelease.length&&c.semver.major===needDomLTPre.major&&c.semver.minor===needDomLTPre.minor&&c.semver.patch===needDomLTPre.patch&&(needDomLTPre=!1),c.operator==="<"||c.operator==="<="){if(lower=lowerLT(lt,c,options),lower===c&&lower!==lt)return!1}else if(lt.operator==="<="&&!c.test(lt.semver))return!1}if(!c.operator&&(lt||gt)&>ltComp!==0)return!1}return!(gt&&hasDomLT&&!lt&>ltComp!==0||lt&&hasDomGT&&!gt&>ltComp!==0||needDomGTPre||needDomLTPre)},higherGT=(a,b,options)=>{if(!a)return b;let comp=compare4(a.semver,b.semver,options);return comp>0?a:comp<0||b.operator===">"&&a.operator===">="?b:a},lowerLT=(a,b,options)=>{if(!a)return b;let comp=compare4(a.semver,b.semver,options);return comp<0?a:comp>0||b.operator==="<"&&a.operator==="<="?b:a};module.exports=subset}});var require_semver2=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js"(exports,module){"use strict";var internalRe=require_re(),constants=require_constants(),SemVer=require_semver(),identifiers=require_identifiers(),parse7=require_parse(),valid=require_valid(),clean=require_clean(),inc=require_inc(),diff=require_diff(),major=require_major(),minor=require_minor(),patch=require_patch(),prerelease=require_prerelease(),compare4=require_compare(),rcompare=require_rcompare(),compareLoose=require_compare_loose(),compareBuild=require_compare_build(),sort=require_sort(),rsort=require_rsort(),gt=require_gt(),lt=require_lt(),eq=require_eq(),neq=require_neq(),gte=require_gte(),lte=require_lte(),cmp=require_cmp(),coerce=require_coerce(),truncate=require_truncate(),Comparator=require_comparator(),Range=require_range(),satisfies2=require_satisfies(),toComparators=require_to_comparators(),maxSatisfying2=require_max_satisfying(),minSatisfying=require_min_satisfying(),minVersion2=require_min_version(),validRange2=require_valid2(),outside=require_outside(),gtr=require_gtr(),ltr=require_ltr(),intersects=require_intersects(),simplifyRange=require_simplify(),subset=require_subset();module.exports={parse:parse7,valid,clean,inc,diff,major,minor,patch,prerelease,compare:compare4,rcompare,compareLoose,compareBuild,sort,rsort,gt,lt,eq,neq,gte,lte,cmp,coerce,truncate,Comparator,Range,satisfies:satisfies2,toComparators,maxSatisfying:maxSatisfying2,minSatisfying,minVersion:minVersion2,validRange:validRange2,outside,gtr,ltr,intersects,simplifyRange,subset,SemVer,re:internalRe.re,src:internalRe.src,tokens:internalRe.t,SEMVER_SPEC_VERSION:constants.SEMVER_SPEC_VERSION,RELEASE_TYPES:constants.RELEASE_TYPES,compareIdentifiers:identifiers.compareIdentifiers,rcompareIdentifiers:identifiers.rcompareIdentifiers}}});var require_identity=__commonJS({"../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/identity.js"(exports){"use strict";var ALIAS=Symbol.for("yaml.alias"),DOC=Symbol.for("yaml.document"),MAP=Symbol.for("yaml.map"),PAIR=Symbol.for("yaml.pair"),SCALAR=Symbol.for("yaml.scalar"),SEQ=Symbol.for("yaml.seq"),NODE_TYPE=Symbol.for("yaml.node.type"),isAlias=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===ALIAS,isDocument=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===DOC,isMap=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===MAP,isPair=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===PAIR,isScalar=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SCALAR,isSeq=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SEQ;function isCollection(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case MAP:case SEQ:return!0}return!1}function isNode(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case ALIAS:case MAP:case SCALAR:case SEQ:return!0}return!1}var hasAnchor=node=>(isScalar(node)||isCollection(node))&&!!node.anchor;exports.ALIAS=ALIAS;exports.DOC=DOC;exports.MAP=MAP;exports.NODE_TYPE=NODE_TYPE;exports.PAIR=PAIR;exports.SCALAR=SCALAR;exports.SEQ=SEQ;exports.hasAnchor=hasAnchor;exports.isAlias=isAlias;exports.isCollection=isCollection;exports.isDocument=isDocument;exports.isMap=isMap;exports.isNode=isNode;exports.isPair=isPair;exports.isScalar=isScalar;exports.isSeq=isSeq}});var require_visit=__commonJS({"../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/visit.js"(exports){"use strict";var identity=require_identity(),BREAK=Symbol("break visit"),SKIP=Symbol("skip children"),REMOVE=Symbol("remove node");function visit(node,visitor){let visitor_=initVisitor(visitor);identity.isDocument(node)?visit_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE&&(node.contents=null):visit_(null,node,visitor_,Object.freeze([]))}visit.BREAK=BREAK;visit.SKIP=SKIP;visit.REMOVE=REMOVE;function visit_(key,node,visitor,path){let ctrl=callVisitor(key,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key,path,ctrl),visit_(key,ctrl,visitor,path);if(typeof ctrl!="symbol"){if(identity.isCollection(node)){path=Object.freeze(path.concat(node));for(let i=0;i<node.items.length;++i){let ci=visit_(i,node.items[i],visitor,path);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(node.items.splice(i,1),i-=1)}}}else if(identity.isPair(node)){path=Object.freeze(path.concat(node));let ck=visit_("key",node.key,visitor,path);if(ck===BREAK)return BREAK;ck===REMOVE&&(node.key=null);let cv=visit_("value",node.value,visitor,path);if(cv===BREAK)return BREAK;cv===REMOVE&&(node.value=null)}}return ctrl}async function visitAsync(node,visitor){let visitor_=initVisitor(visitor);identity.isDocument(node)?await visitAsync_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE&&(node.contents=null):await visitAsync_(null,node,visitor_,Object.freeze([]))}visitAsync.BREAK=BREAK;visitAsync.SKIP=SKIP;visitAsync.REMOVE=REMOVE;async function visitAsync_(key,node,visitor,path){let ctrl=await callVisitor(key,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key,path,ctrl),visitAsync_(key,ctrl,visitor,path);if(typeof ctrl!="symbol"){if(identity.isCollection(node)){path=Object.freeze(path.concat(node));for(let i=0;i<node.items.length;++i){let ci=await visitAsync_(i,node.items[i],visitor,path);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(node.items.splice(i,1),i-=1)}}}else if(identity.isPair(node)){path=Object.freeze(path.concat(node));let ck=await visitAsync_("key",node.key,visitor,path);if(ck===BREAK)return BREAK;ck===REMOVE&&(node.key=null);let cv=await visitAsync_("value",node.value,visitor,path);if(cv===BREAK)return BREAK;cv===REMOVE&&(node.value=null)}}return ctrl}function initVisitor(visitor){return typeof visitor=="object"&&(visitor.Collection||visitor.Node||visitor.Value)?Object.assign({Alias:visitor.Node,Map:visitor.Node,Scalar:visitor.Node,Seq:visitor.Node},visitor.Value&&{Map:visitor.Value,Scalar:visitor.Value,Seq:visitor.Value},visitor.Collection&&{Map:visitor.Collection,Seq:visitor.Collection},visitor):visitor}function callVisitor(key,node,visitor,path){if(typeof visitor=="function")return visitor(key,node,path);if(identity.isMap(node))return visitor.Map?.(key,node,path);if(identity.isSeq(node))return visitor.Seq?.(key,node,path);if(identity.isPair(node))return visitor.Pair?.(key,node,path);if(identity.isScalar(node))return visitor.Scalar?.(key,node,path);if(identity.isAlias(node))return visitor.Alias?.(key,node,path)}function replaceNode(key,path,node){let parent=path[path.length-1];if(identity.isCollection(parent))parent.items[key]=node;else if(identity.isPair(parent))key==="key"?parent.key=node:parent.value=node;else if(identity.isDocument(parent))parent.contents=node;else{let pt=identity.isAlias(parent)?"alias":"scalar";throw new Error(`Cannot replace node with ${pt} parent`)}}exports.visit=visit;exports.visitAsync=visitAsync}});var require_directives=__commonJS({"../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/doc/directives.js"(exports){"use strict";var identity=require_identity(),visit=require_visit(),escapeChars={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},escapeTagName=tn=>tn.replace(/[!,[\]{}]/g,ch=>escapeChars[ch]),Directives=class _Directives{constructor(yaml,tags){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},_Directives.defaultYaml,yaml),this.tags=Object.assign({},_Directives.defaultTags,tags)}clone(){let copy=new _Directives(this.yaml,this.tags);return copy.docStart=this.docStart,copy}atDocument(){let res=new _Directives(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:_Directives.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},_Directives.defaultTags);break}return res}add(line,onError){this.atNextDocument&&(this.yaml={explicit:_Directives.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},_Directives.defaultTags),this.atNextDocument=!1);let parts=line.trim().split(/[ \t]+/),name=parts.shift();switch(name){case"%TAG":{if(parts.length!==2&&(onError(0,"%TAG directive should contain exactly two parts"),parts.length<2))return!1;let[handle,prefix]=parts;return this.tags[handle]=prefix,!0}case"%YAML":{if(this.yaml.explicit=!0,parts.length!==1)return onError(0,"%YAML directive should contain exactly one part"),!1;let[version]=parts;if(version==="1.1"||version==="1.2")return this.yaml.version=version,!0;{let isValid=/^\d+\.\d+$/.test(version);return onError(6,`Unsupported YAML version ${version}`,isValid),!1}}default:return onError(0,`Unknown directive ${name}`,!0),!1}}tagName(source,onError){if(source==="!")return"!";if(source[0]!=="!")return onError(`Not a valid tag: ${source}`),null;if(source[1]==="<"){let verbatim=source.slice(2,-1);return verbatim==="!"||verbatim==="!!"?(onError(`Verbatim tags aren't resolved, so ${source} is invalid.`),null):(source[source.length-1]!==">"&&onError("Verbatim tags must end with a >"),verbatim)}let[,handle,suffix]=source.match(/^(.*!)([^!]*)$/s);suffix||onError(`The ${source} tag has no suffix`);let prefix=this.tags[handle];if(prefix)try{return prefix+decodeURIComponent(suffix)}catch(error){return onError(String(error)),null}return handle==="!"?source:(onError(`Could not resolve tag: ${source}`),null)}tagString(tag){for(let[handle,prefix]of Object.entries(this.tags))if(tag.startsWith(prefix))return handle+escapeTagName(tag.substring(prefix.length));return tag[0]==="!"?tag:`!<${tag}>`}toString(doc){let lines=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],tagEntries=Object.entries(this.tags),tagNames;if(doc&&tagEntries.length>0&&identity.isNode(doc.contents)){let tags={};visit.visit(doc.contents,(_key,node)=>{identity.isNode(node)&&node.tag&&(tags[node.tag]=!0)}),tagNames=Object.keys(tags)}else tagNames=[];for(let[handle,prefix]of tagEntries)handle==="!!"&&prefix==="tag:yaml.org,2002:"||(!doc||tagNames.some(tn=>tn.startsWith(prefix)))&&lines.push(`%TAG ${handle} ${prefix}`);return lines.join(`
|
|
7
7
|
`)}};Directives.defaultYaml={explicit:!1,version:"1.2"};Directives.defaultTags={"!!":"tag:yaml.org,2002:"};exports.Directives=Directives}});var require_anchors=__commonJS({"../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/doc/anchors.js"(exports){"use strict";var identity=require_identity(),visit=require_visit();function anchorIsValid(anchor){if(/[\x00-\x19\s,[\]{}]/.test(anchor)){let msg=`Anchor must not contain whitespace or control characters: ${JSON.stringify(anchor)}`;throw new Error(msg)}return!0}function anchorNames(root){let anchors=new Set;return visit.visit(root,{Value(_key,node){node.anchor&&anchors.add(node.anchor)}}),anchors}function findNewAnchor(prefix,exclude){for(let i=1;;++i){let name=`${prefix}${i}`;if(!exclude.has(name))return name}}function createNodeAnchors(doc,prefix){let aliasObjects=[],sourceObjects=new Map,prevAnchors=null;return{onAnchor:source=>{aliasObjects.push(source),prevAnchors??(prevAnchors=anchorNames(doc));let anchor=findNewAnchor(prefix,prevAnchors);return prevAnchors.add(anchor),anchor},setAnchors:()=>{for(let source of aliasObjects){let ref=sourceObjects.get(source);if(typeof ref=="object"&&ref.anchor&&(identity.isScalar(ref.node)||identity.isCollection(ref.node)))ref.node.anchor=ref.anchor;else{let error=new Error("Failed to resolve repeated object (this should not happen)");throw error.source=source,error}}},sourceObjects}}exports.anchorIsValid=anchorIsValid;exports.anchorNames=anchorNames;exports.createNodeAnchors=createNodeAnchors;exports.findNewAnchor=findNewAnchor}});var require_applyReviver=__commonJS({"../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/doc/applyReviver.js"(exports){"use strict";function applyReviver(reviver,obj,key,val){if(val&&typeof val=="object")if(Array.isArray(val))for(let i=0,len=val.length;i<len;++i){let v0=val[i],v1=applyReviver(reviver,val,String(i),v0);v1===void 0?delete val[i]:v1!==v0&&(val[i]=v1)}else if(val instanceof Map)for(let k of Array.from(val.keys())){let v0=val.get(k),v1=applyReviver(reviver,val,k,v0);v1===void 0?val.delete(k):v1!==v0&&val.set(k,v1)}else if(val instanceof Set)for(let v0 of Array.from(val)){let v1=applyReviver(reviver,val,v0,v0);v1===void 0?val.delete(v0):v1!==v0&&(val.delete(v0),val.add(v1))}else for(let[k,v0]of Object.entries(val)){let v1=applyReviver(reviver,val,k,v0);v1===void 0?delete val[k]:v1!==v0&&(val[k]=v1)}return reviver.call(obj,key,val)}exports.applyReviver=applyReviver}});var require_toJS=__commonJS({"../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/toJS.js"(exports){"use strict";var identity=require_identity();function toJS(value,arg,ctx){if(Array.isArray(value))return value.map((v,i)=>toJS(v,String(i),ctx));if(value&&typeof value.toJSON=="function"){if(!ctx||!identity.hasAnchor(value))return value.toJSON(arg,ctx);let data={aliasCount:0,count:1,res:void 0};ctx.anchors.set(value,data),ctx.onCreate=res2=>{data.res=res2,delete ctx.onCreate};let res=value.toJSON(arg,ctx);return ctx.onCreate&&ctx.onCreate(res),res}return typeof value=="bigint"&&!ctx?.keep?Number(value):value}exports.toJS=toJS}});var require_Node=__commonJS({"../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/Node.js"(exports){"use strict";var applyReviver=require_applyReviver(),identity=require_identity(),toJS=require_toJS(),NodeBase=class{constructor(type){Object.defineProperty(this,identity.NODE_TYPE,{value:type})}clone(){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(copy.range=this.range.slice()),copy}toJS(doc,{mapAsMap,maxAliasCount,onAnchor,reviver}={}){if(!identity.isDocument(doc))throw new TypeError("A document argument is required");let ctx={anchors:new Map,doc,keep:!0,mapAsMap:mapAsMap===!0,mapKeyWarned:!1,maxAliasCount:typeof maxAliasCount=="number"?maxAliasCount:100},res=toJS.toJS(this,"",ctx);if(typeof onAnchor=="function")for(let{count:count3,res:res2}of ctx.anchors.values())onAnchor(res2,count3);return typeof reviver=="function"?applyReviver.applyReviver(reviver,{"":res},"",res):res}};exports.NodeBase=NodeBase}});var require_Alias=__commonJS({"../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/Alias.js"(exports){"use strict";var anchors=require_anchors(),visit=require_visit(),identity=require_identity(),Node11=require_Node(),toJS=require_toJS(),Alias=class extends Node11.NodeBase{constructor(source){super(identity.ALIAS),this.source=source,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(doc,ctx){if(ctx?.maxAliasCount===0)throw new ReferenceError("Alias resolution is disabled");let nodes;ctx?.aliasResolveCache?nodes=ctx.aliasResolveCache:(nodes=[],visit.visit(doc,{Node:(_key,node)=>{(identity.isAlias(node)||identity.hasAnchor(node))&&nodes.push(node)}}),ctx&&(ctx.aliasResolveCache=nodes));let found;for(let node of nodes){if(node===this)break;node.anchor===this.source&&(found=node)}if(found&&ctx){let{anchors:anchors2,doc:doc2,maxAliasCount}=ctx,data=anchors2.get(found);if(data||(toJS.toJS(found,null,ctx),data=anchors2.get(found)),data?.res===void 0){let msg="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(msg)}if(maxAliasCount>=0&&(data.count+=1,data.aliasCount===0&&(data.aliasCount=getAliasCount(doc2,found,anchors2)),data.count*data.aliasCount>maxAliasCount)){let msg="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(msg)}}return found}toJSON(_arg,ctx){if(!ctx)return{source:this.source};let source=this.resolve(ctx.doc,ctx);if(!source){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(msg)}return ctx.anchors.get(source).res}toString(ctx,_onComment,_onChompKeep){let src=`*${this.source}`;if(ctx){if(anchors.anchorIsValid(this.source),ctx.options.verifyAliasOrder&&!ctx.anchors.has(this.source)){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(msg)}if(ctx.implicitKey)return`${src} `}return src}};function getAliasCount(doc,node,anchors2){if(identity.isAlias(node)){let source=node.resolve(doc),anchor=anchors2&&source&&anchors2.get(source);return anchor?anchor.count*anchor.aliasCount:0}else if(identity.isCollection(node)){let count3=0;for(let item of node.items){let c=getAliasCount(doc,item,anchors2);c>count3&&(count3=c)}return count3}else if(identity.isPair(node)){let kc=getAliasCount(doc,node.key,anchors2),vc=getAliasCount(doc,node.value,anchors2);return Math.max(kc,vc)}return 1}exports.Alias=Alias}});var require_Scalar=__commonJS({"../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/Scalar.js"(exports){"use strict";var identity=require_identity(),Node11=require_Node(),toJS=require_toJS(),isScalarValue=value=>!value||typeof value!="function"&&typeof value!="object",Scalar=class extends Node11.NodeBase{constructor(value){super(identity.SCALAR),this.value=value}toJSON(arg,ctx){return ctx?.keep?this.value:toJS.toJS(this.value,arg,ctx)}toString(){return String(this.value)}};Scalar.BLOCK_FOLDED="BLOCK_FOLDED";Scalar.BLOCK_LITERAL="BLOCK_LITERAL";Scalar.PLAIN="PLAIN";Scalar.QUOTE_DOUBLE="QUOTE_DOUBLE";Scalar.QUOTE_SINGLE="QUOTE_SINGLE";exports.Scalar=Scalar;exports.isScalarValue=isScalarValue}});var require_createNode=__commonJS({"../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/doc/createNode.js"(exports){"use strict";var Alias=require_Alias(),identity=require_identity(),Scalar=require_Scalar(),defaultTagPrefix="tag:yaml.org,2002:";function findTagObject(value,tagName,tags){if(tagName){let match2=tags.filter(t=>t.tag===tagName),tagObj=match2.find(t=>!t.format)??match2[0];if(!tagObj)throw new Error(`Tag ${tagName} not found`);return tagObj}return tags.find(t=>t.identify?.(value)&&!t.format)}function createNode(value,tagName,ctx){if(identity.isDocument(value)&&(value=value.contents),identity.isNode(value))return value;if(identity.isPair(value)){let map=ctx.schema[identity.MAP].createNode?.(ctx.schema,null,ctx);return map.items.push(value),map}(value instanceof String||value instanceof Number||value instanceof Boolean||typeof BigInt<"u"&&value instanceof BigInt)&&(value=value.valueOf());let{aliasDuplicateObjects,onAnchor,onTagObj,schema,sourceObjects}=ctx,ref;if(aliasDuplicateObjects&&value&&typeof value=="object"){if(ref=sourceObjects.get(value),ref)return ref.anchor??(ref.anchor=onAnchor(value)),new Alias.Alias(ref.anchor);ref={anchor:null,node:null},sourceObjects.set(value,ref)}tagName?.startsWith("!!")&&(tagName=defaultTagPrefix+tagName.slice(2));let tagObj=findTagObject(value,tagName,schema.tags);if(!tagObj){if(value&&typeof value.toJSON=="function"&&(value=value.toJSON()),!value||typeof value!="object"){let node2=new Scalar.Scalar(value);return ref&&(ref.node=node2),node2}tagObj=value instanceof Map?schema[identity.MAP]:Symbol.iterator in Object(value)?schema[identity.SEQ]:schema[identity.MAP]}onTagObj&&(onTagObj(tagObj),delete ctx.onTagObj);let node=tagObj?.createNode?tagObj.createNode(ctx.schema,value,ctx):typeof tagObj?.nodeClass?.from=="function"?tagObj.nodeClass.from(ctx.schema,value,ctx):new Scalar.Scalar(value);return tagName?node.tag=tagName:tagObj.default||(node.tag=tagObj.tag),ref&&(ref.node=node),node}exports.createNode=createNode}});var require_Collection=__commonJS({"../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/nodes/Collection.js"(exports){"use strict";var createNode=require_createNode(),identity=require_identity(),Node11=require_Node();function collectionFromPath(schema,path,value){let v=value;for(let i=path.length-1;i>=0;--i){let k=path[i];if(typeof k=="number"&&Number.isInteger(k)&&k>=0){let a=[];a[k]=v,v=a}else v=new Map([[k,v]])}return createNode.createNode(v,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema,sourceObjects:new Map})}var isEmptyPath=path=>path==null||typeof path=="object"&&!!path[Symbol.iterator]().next().done,Collection=class extends Node11.NodeBase{constructor(type,schema){super(type),Object.defineProperty(this,"schema",{value:schema,configurable:!0,enumerable:!1,writable:!0})}clone(schema){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return schema&&(copy.schema=schema),copy.items=copy.items.map(it=>identity.isNode(it)||identity.isPair(it)?it.clone(schema):it),this.range&&(copy.range=this.range.slice()),copy}addIn(path,value){if(isEmptyPath(path))this.add(value);else{let[key,...rest]=path,node=this.get(key,!0);if(identity.isCollection(node))node.addIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}deleteIn(path){let[key,...rest]=path;if(rest.length===0)return this.delete(key);let node=this.get(key,!0);if(identity.isCollection(node))return node.deleteIn(rest);throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}getIn(path,keepScalar){let[key,...rest]=path,node=this.get(key,!0);return rest.length===0?!keepScalar&&identity.isScalar(node)?node.value:node:identity.isCollection(node)?node.getIn(rest,keepScalar):void 0}hasAllNullValues(allowScalar){return this.items.every(node=>{if(!identity.isPair(node))return!1;let n=node.value;return n==null||allowScalar&&identity.isScalar(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(path){let[key,...rest]=path;if(rest.length===0)return this.has(key);let node=this.get(key,!0);return identity.isCollection(node)?node.hasIn(rest):!1}setIn(path,value){let[key,...rest]=path;if(rest.length===0)this.set(key,value);else{let node=this.get(key,!0);if(identity.isCollection(node))node.setIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}};exports.Collection=Collection;exports.collectionFromPath=collectionFromPath;exports.isEmptyPath=isEmptyPath}});var require_stringifyComment=__commonJS({"../../node_modules/.pnpm/yaml@2.9.1/node_modules/yaml/dist/stringify/stringifyComment.js"(exports){"use strict";var stringifyComment=str=>str.replace(/^(?!$)(?: $)?/gm,"#");function indentComment(comment,indent){return/^\n+$/.test(comment)?comment.substring(1):indent?comment.replace(/^(?! *$)/gm,indent):comment}var lineComment=(str,indent,comment)=>str.endsWith(`
|
|
8
8
|
`)?indentComment(comment,indent):comment.includes(`
|
|
9
9
|
`)?`
|
|
@@ -222,10 +222,11 @@ export function subscriptionPeriod(s: { items: { data: PeriodItem[] } }): { star
|
|
|
222
222
|
Next: corepack enable`);let viaCorepack=throughCorepack(pm),run2=await probe(root,"corepack",["yarn","--version"],12e4,viaCorepack.env);if(run2.code)throw new UptideError("PACKAGE_MANAGER_UNAVAILABLE",`This repository pins ${pinned} (packageManager), but ${found} and corepack could not run the pinned version${run2.timeout?" (timed out)":""}: ${versionOf(run2.output)||"no output"}. Behind a corporate registry, set COREPACK_NPM_REGISTRY to your npm mirror. Nothing was cloned or installed.
|
|
223
223
|
Next: ${next}`);pm=viaCorepack,actual=versionOf(run2.output)}else if(result.code)throw new UptideError("PACKAGE_MANAGER_UNAVAILABLE",`${pm.bin}${pm.requestedVersion?`@${pm.requestedVersion}`:""} is not available in this environment. Enable Corepack and activate the repository's package manager.
|
|
224
224
|
Next: ${next}`);if(!matches(pm,actual))throw new UptideError("PACKAGE_MANAGER_VERSION",`Found ${pm.via==="corepack"?"corepack yarn":pm.bin}@${actual||"unknown"}, but this repository requires ${pm.requestedVersion?`${pm.kind==="npm"?"npm":pm.kind==="pnpm"?"pnpm":"yarn"}@${pm.requestedVersion}`:pm.kind}. No files were installed.
|
|
225
|
-
Next: ${next}`);return pm.kind==="yarn-berry"&&(pm.args=pm.args.map(a=>a.startsWith("--mode=")||a==="--skip-builds"?berrySkipBuild(majorOf(actual)):a)),pm}var sections=["dependencies","devDependencies","optionalDependencies","peerDependencies"],targetNames=targets=>typeof targets=="string"?[targets]:targets;function stable2(value){return Array.isArray(value)?`[${value.map(stable2).join(",")}]`:value&&typeof value=="object"?`{${Object.entries(value).sort(([a],[b])=>a.localeCompare(b)).map(([k,v])=>`${JSON.stringify(k)}:${stable2(v)}`).join(",")}}`:JSON.stringify(value)}function withoutTarget(value,target){let result=structuredClone(value);for(let section of sections)if(result[section]&&typeof result[section]=="object")for(let name of targetNames(target))delete result[section][name];return result}function lockedIdentity(name,version,integrity,data){return{name,version,integrity,source:integrity==null?data.resolved??data.resolution:void 0,...Object.fromEntries(["scripts","bin","os","cpu","libc","engines","hasInstallScript","requiresBuild","hasBin","hasShrinkwrap","link","inBundle"].map(k=>[k,data[k]]))}}function lockScope(before,after,target,extraRoots=[]){let names=targetNames(target),allowed=new Set;for(let graph of[before,after]){let queue=[...graph.records].filter(([key,r])=>names.includes(r.name)||extraRoots.includes(key)).map(([k])=>k),visited=new Set;for(let key of queue)visited.has(key)||(visited.add(key),allowed.add(key),queue.push(...graph.records.get(key)?.dependencies??[]))}return allowed}function assertLockScope(before,after,target,extraRoots=[]){let names=targetNames(target),originalScope=lockScope(before,after,target),allowed=lockScope(before,after,target,extraRoots),diff={added:[],removed:[],changed:[],allowed:[...allowed].sort()},housekeeping={deduped:[],metadata:[]},unexpected=new Set;stable2(before.metadata)!==stable2(after.metadata)&&unexpected.add("lockfile metadata/importers");let equivalent=(a,b,seen=new Set)=>{let left=before.records.get(a),right=after.records.get(b);if(!left||!right||stable2(left.identity)!==stable2(right.identity))return!1;let pair=JSON.stringify([a,b]);return seen.has(pair)?!0:(seen.add(pair),sameEdges(left.edges,right.edges,seen))},sameEdges=(left,right,seen=new Set)=>[...new Set([...Object.keys(left),...Object.keys(right)])].every(name=>{if(!Object.hasOwn(left,name)||!Object.hasOwn(right,name))return!1;let a=left[name],b=right[name];return a===void 0||b===void 0?a===b:originalScope.has(a)&&originalScope.has(b)||extraRoots.includes(a)&&extraRoots.includes(b)?!0:equivalent(a,b,seen)});for(let key of new Set([...Object.keys(before.roots??{}),...Object.keys(after.roots??{})]))sameEdges(before.roots?.[key]??{},after.roots?.[key]??{})||unexpected.add(`importer ${key||"."} resolutions`);let counterpart2=(key,from,to,reverse=!1)=>{if(to.records.has(key))return key;if(to.relocate){let placed=to.relocate(key,from);if(placed!==void 0&&(reverse?equivalent(placed,key):equivalent(key,placed)))return placed}return[...to.records.keys()].find(other=>reverse?equivalent(other,key):equivalent(key,other))},keys=new Set([...before.records.keys(),...after.records.keys()]),relocated=new Map;for(let key of keys){let a=before.records.get(key),b=after.records.get(key),changed=stable2(a?.data)!==stable2(b?.data);if(changed&&diff[a===void 0?"added":b===void 0?"removed":"changed"].push(key),allowed.has(key))continue;let other=a?counterpart2(key,before,after):counterpart2(key,after,before,!0)??relocated.get(key);if(other===void 0||!(a?equivalent(key,other):equivalent(other,key))){unexpected.add(key);continue}if(!a||!b){a&&relocated.set(other,key);let record=a??b;if(!record)continue;let from=a?key:other,to=a?other:key;housekeeping.deduped.some(d=>d.from===from&&d.to===to)||housekeeping.deduped.push({from,to,name:record.name,version:String(record.identity.version??"")})}else changed&&housekeeping.metadata.push(key)}if(unexpected.size){let versionOf2=(graph,key)=>{let version=graph.records.get(key)?.identity.version;return version===void 0?void 0:String(version)},described=[...unexpected].map(key=>{if(!keys.has(key))return key;let[a,b]=[versionOf2(before,key),versionOf2(after,key)];return a===void 0?`${key} (added${b?` at ${b}`:""})`:b===void 0?`${key} (removed, was ${a})`:a!==b?`${key} (${a} \u2192 ${b})`:`${key} (same version, different resolution, dependencies or execution fields)`});throw new UptideError("LOCKFILE_OUT_OF_SCOPE",`Install changed resolutions outside ${names.join(", ")}'s dependency subtree: ${described.join("; ")}. No upgrade will be committed.`)}return(housekeeping.deduped.length||housekeeping.metadata.length)&&(diff.housekeeping=housekeeping),diff}function npmGraph(text,target){let lock=JSON.parse(text);if(![2,3].includes(lock.lockfileVersion)||!lock.packages)throw new UptideError("UNSUPPORTED_LOCKFILE","npm fix requires package-lock lockfileVersion 2 or 3");let records=new Map,nodes=new Map,importers2={};for(let[key,entry]of Object.entries(lock.packages))key.includes("node_modules/")?nodes.set(key,entry):importers2[key]=withoutTarget(entry,target);function legacy(deps,parent="legacy"){for(let[name,entry]of Object.entries(deps)){if(typeof entry=="string")continue;let key=`${parent}/node_modules/${name}`,{dependencies,...own}=entry,workspace=typeof own.version=="string"&&own.version.startsWith("file:")?own.version.slice(5):void 0;if(workspace&&Object.hasOwn(importers2,workspace)&&own.requires){own.requires={...own.requires};for(let name2 of targetNames(target))delete own.requires[name2]}nodes.set(key,own),dependencies&&legacy(dependencies,key)}}lock.dependencies&&legacy(lock.dependencies);function resolve16(from,name){let dir=from;for(;;){let key=`${dir?`${dir}/`:""}node_modules/${name}`;if(!dir.endsWith("node_modules")&&nodes.has(key))return key;if(!dir||dir==="."||dir==="legacy")return;dir=dirname17(dir),dir==="."&&(dir="")}}for(let[key,entry]of nodes){let names=new Set(["dependencies","optionalDependencies","peerDependencies","requires"].flatMap(s=>Object.keys(entry[s]??{})));for(let[child,data]of nodes)(data.bundled===!0||data.inBundle===!0)&&child.startsWith(`${key}/node_modules/`)&&!child.slice(key.length+14).includes("/node_modules/")&&names.add(child.slice(key.length+14));let edges=Object.fromEntries([...names].map(n=>[n,resolve16(key,n)])),name=key.slice(key.lastIndexOf("node_modules/")+13);records.set(key,{name,identity:lockedIdentity(String(entry.name??name),entry.version,entry.integrity,entry),edges,data:entry,dependencies:Object.values(edges).filter(r=>r!==void 0)})}let{packages:_p,dependencies:_d,...meta3}=lock,roots=Object.fromEntries(Object.entries(lock.packages).filter(([key])=>!key.includes("node_modules/")).map(([key,entry])=>[key,Object.fromEntries(["dependencies","devDependencies","optionalDependencies","peerDependencies"].flatMap(s=>Object.keys(entry[s]??{})).map(name=>[name,resolve16(key,name)]))]));function relocate(key,previous){if(records.has(key))return key;let name=previous.records.get(key)?.name;if(!name)return;let parent=key.slice(0,key.lastIndexOf("node_modules/")).replace(/\/$/,""),placed=previous.records.has(parent)?relocate(parent,previous):parent;return placed===void 0?void 0:resolve16(placed,name)}return{records,metadata:{...meta3,importers:importers2},roots,relocate}}function npmPeerReresolutions(before,after,planned,scope=planned){let allowed=lockScope(before,after,scope),names=targetNames(planned),results=[];for(let[key,old]of before.records){if(allowed.has(key))continue;let next=after.records.get(key),from=String(old.identity.version??""),to=String(next?.identity.version??""),parsed5=parseVersion(from),target=parseVersion(to);if(!next||old.name!==next.name||!parsed5||!target||parsed5.major!==target.major||compareVersions(to,from)<=0)continue;let peers=Object.keys(old.data.peerDependencies??{}).filter(name=>names.includes(name));if(!peers.length)continue;let ranges={},collect2=(dependent,data,edges)=>{if(edges[old.name]===key)for(let field of["dependencies","devDependencies","optionalDependencies","peerDependencies","requires"]){let range=data[field]?.[old.name];typeof range=="string"&&(ranges[`${dependent||"."} (${field})`]=range)}};for(let[dependent,record]of before.records)collect2(dependent,record.data,record.edges);let importers2=before.metadata.importers;for(let[dependent,edges]of Object.entries(before.roots??{}))collect2(dependent,importers2[dependent]??{},edges);if(!Object.keys(ranges).length||!Object.values(ranges).every(range=>satisfies(from,range)&&satisfies(to,range)))continue;let legacy=`legacy/${key}`,records=[key];before.records.get(legacy)?.identity.version===from&&after.records.get(legacy)?.identity.version===to&&records.push(legacy),results.push({name:old.name,from,to,peers,ranges,records})}return results}var unquote=s=>s.trim().replace(/^['"]|['"]$/g,""),meaningful=lines=>lines.filter(l=>l.trim()&&!l.trimStart().startsWith("#"));function blocks(lines,indent){let out=[];for(let line of meaningful(lines)){let spaces=line.length-line.trimStart().length;if(spaces===indent){let header=/^(.*):(?:\s*\{\})?\s*$/.exec(line.trim());if(!header)throw new UptideError("UNSUPPORTED_LOCKFILE",`Cannot safely parse lock entry: ${line}`);out.push({key:(header[1]??"").trim(),lines:[]})}else{let block=out.at(-1);if(!block||spaces<indent)throw new UptideError("UNSUPPORTED_LOCKFILE",`Invalid lockfile indentation: ${line}`);block.lines.push(line)}}return out}function dependencyPairs(lines,indent){let pairs=[],inDependencies=!1;for(let line of lines){let spaces=line.length-line.trimStart().length;if(spaces===indent&&(inDependencies=/^\s*(?:dependencies|devDependencies|optionalDependencies|peerDependencies):$/.test(line)),!inDependencies||spaces!==indent+2)continue;let match2=/^\s*(?:"([^"]+)"|'([^']+)'|([^\s:]+))(?::\s+|\s+)(.+)$/.exec(line);if(!match2)throw new UptideError("UNSUPPORTED_LOCKFILE",`Cannot resolve dependency: ${line}`);pairs.push([match2[1]??match2[2]??match2[3]??"",unquote(match2[4]??"")])}return pairs}function omitTarget(lines,target){let out=[],dependencyIndent=-1,skippedIndent=-1;for(let line of meaningful(lines)){let indent=line.length-line.trimStart().length;if(!(skippedIndent>=0&&indent>skippedIndent)){if(skippedIndent=-1,/^\s*(?:dependencies|devDependencies|optionalDependencies|peerDependencies):$/.test(line)?dependencyIndent=indent:indent<=dependencyIndent&&(dependencyIndent=-1),dependencyIndent>=0&&indent===dependencyIndent+2){let key=/^(?:"([^"]+)"|'([^']+)'|([^\s:]+))(?::|\s)/.exec(line.trim());if(targetNames(target).includes(key?.[1]??key?.[2]??key?.[3]??"")){skippedIndent=indent;continue}}out.push(line)}}return out}var packageName=descriptor=>descriptor.slice(0,descriptor.indexOf("@",descriptor.startsWith("@")?1:0));function yarnDescriptors(header){let out=[],current="",quoted=!1;for(let ch of header)ch==='"'?quoted=!quoted:ch===","&&!quoted?(out.push(current),current=""):current+=ch;return out.push(current),out.flatMap(piece=>unquote(piece).split(/,\s*/)).map(d=>d.trim()).filter(Boolean)}function parsedEntry(lines,indent){let data={},section;for(let line of meaningful(lines)){let spaces=line.length-line.trimStart().length,body=line.trim();if(spaces===indent){let nested=/^(?:"([^"]+)"|'([^']+)'|([^\s:]+)):$/.exec(body);if(nested){section=nested[1]??nested[2]??nested[3],data[section]={};continue}section=void 0;let pair=/^(?:"([^"]+)"|'([^']+)'|([^\s:]+))(?::\s+|\s+)(.+)$/.exec(body);pair?data[pair[1]??pair[2]??pair[3]??""]=unquote(pair[4]??""):data[body]=!0}else if(section&&spaces===indent+2){let pair=/^(?:"([^"]+)"|'([^']+)'|([^\s:]+))(?::\s+|\s+)(.+)$/.exec(body);pair?data[section][pair[1]??pair[2]??pair[3]??""]=unquote(pair[4]??""):data[section][body]=!0}else{let bucket=section?data[section]:data;bucket[`#${body}`]=!0}}return data}function yarnGraph(text,target){let records=new Map,metadata={},roots={},entries=blocks(text.split(`
|
|
225
|
+
Next: ${next}`);return pm.kind==="yarn-berry"&&(pm.args=pm.args.map(a=>a.startsWith("--mode=")||a==="--skip-builds"?berrySkipBuild(majorOf(actual)):a)),{...pm,actualVersion:actual}}var sections=["dependencies","devDependencies","optionalDependencies","peerDependencies"],targetNames=targets=>typeof targets=="string"?[targets]:targets;function stable2(value){return Array.isArray(value)?`[${value.map(stable2).join(",")}]`:value&&typeof value=="object"?`{${Object.entries(value).sort(([a],[b])=>a.localeCompare(b)).map(([k,v])=>`${JSON.stringify(k)}:${stable2(v)}`).join(",")}}`:JSON.stringify(value)}function withoutTarget(value,target){let result=structuredClone(value);for(let section of sections)if(result[section]&&typeof result[section]=="object")for(let name of targetNames(target))delete result[section][name];return result}function lockedIdentity(name,version,integrity,data){return{name,version,integrity,source:integrity==null?data.resolved??data.resolution:void 0,...Object.fromEntries(["scripts","bin","os","cpu","libc","engines","hasInstallScript","requiresBuild","hasBin","hasShrinkwrap","link","inBundle"].map(k=>[k,data[k]]))}}function lockScope(before,after,target,extraRoots=[]){let names=targetNames(target),allowed=new Set;for(let graph of[before,after]){let queue=[...graph.records].filter(([key,r])=>names.includes(r.name)||extraRoots.includes(key)).map(([k])=>k),visited=new Set;for(let key of queue)visited.has(key)||(visited.add(key),allowed.add(key),queue.push(...graph.records.get(key)?.dependencies??[]))}return allowed}function assertLockScope(before,after,target,extraRoots=[]){let names=targetNames(target),originalScope=lockScope(before,after,target),allowed=lockScope(before,after,target,extraRoots),diff={added:[],removed:[],changed:[],allowed:[...allowed].sort()},housekeeping={deduped:[],metadata:[]},unexpected=new Set;stable2(before.metadata)!==stable2(after.metadata)&&unexpected.add("lockfile metadata/importers");let equivalent=(a,b,seen=new Set)=>{let left=before.records.get(a),right=after.records.get(b);if(!left||!right||stable2(left.identity)!==stable2(right.identity))return!1;let pair=JSON.stringify([a,b]);return seen.has(pair)?!0:(seen.add(pair),sameEdges(left.edges,right.edges,seen))},sameEdges=(left,right,seen=new Set)=>[...new Set([...Object.keys(left),...Object.keys(right)])].every(name=>{if(!Object.hasOwn(left,name)||!Object.hasOwn(right,name))return!1;let a=left[name],b=right[name];return a===void 0||b===void 0?a===b:originalScope.has(a)&&originalScope.has(b)||extraRoots.includes(a)&&extraRoots.includes(b)?!0:equivalent(a,b,seen)});for(let key of new Set([...Object.keys(before.roots??{}),...Object.keys(after.roots??{})]))sameEdges(before.roots?.[key]??{},after.roots?.[key]??{})||unexpected.add(`importer ${key||"."} resolutions`);let counterpart2=(key,from,to,reverse=!1)=>{if(to.records.has(key))return key;if(to.relocate){let placed=to.relocate(key,from);if(placed!==void 0&&(reverse?equivalent(placed,key):equivalent(key,placed)))return placed}return[...to.records.keys()].find(other=>reverse?equivalent(other,key):equivalent(key,other))},keys=new Set([...before.records.keys(),...after.records.keys()]),relocated=new Map;for(let key of keys){let a=before.records.get(key),b=after.records.get(key),changed=stable2(a?.data)!==stable2(b?.data);if(changed&&diff[a===void 0?"added":b===void 0?"removed":"changed"].push(key),allowed.has(key))continue;let other=a?counterpart2(key,before,after):counterpart2(key,after,before,!0)??relocated.get(key);if(other===void 0||!(a?equivalent(key,other):equivalent(other,key))){unexpected.add(key);continue}if(!a||!b){a&&relocated.set(other,key);let record=a??b;if(!record)continue;let from=a?key:other,to=a?other:key;housekeeping.deduped.some(d=>d.from===from&&d.to===to)||housekeeping.deduped.push({from,to,name:record.name,version:String(record.identity.version??"")})}else changed&&housekeeping.metadata.push(key)}if(unexpected.size){let versionOf2=(graph,key)=>{let version=graph.records.get(key)?.identity.version;return version===void 0?void 0:String(version)},described=[...unexpected].map(key=>{if(!keys.has(key))return key;let[a,b]=[versionOf2(before,key),versionOf2(after,key)];return a===void 0?`${key} (added${b?` at ${b}`:""})`:b===void 0?`${key} (removed, was ${a})`:a!==b?`${key} (${a} \u2192 ${b})`:`${key} (same version, different resolution, dependencies or execution fields)`});throw new UptideError("LOCKFILE_OUT_OF_SCOPE",`Install changed resolutions outside ${names.join(", ")}'s dependency subtree: ${described.join("; ")}. No upgrade will be committed.`)}return(housekeeping.deduped.length||housekeeping.metadata.length)&&(diff.housekeeping=housekeeping),diff}function npmGraph(text,target){let lock=JSON.parse(text);if(![2,3].includes(lock.lockfileVersion)||!lock.packages)throw new UptideError("UNSUPPORTED_LOCKFILE","npm fix requires package-lock lockfileVersion 2 or 3");let records=new Map,nodes=new Map,importers2={};for(let[key,entry]of Object.entries(lock.packages))key.includes("node_modules/")?nodes.set(key,entry):importers2[key]=withoutTarget(entry,target);function legacy(deps,parent="legacy"){for(let[name,entry]of Object.entries(deps)){if(typeof entry=="string")continue;let key=`${parent}/node_modules/${name}`,{dependencies,...own}=entry,workspace=typeof own.version=="string"&&own.version.startsWith("file:")?own.version.slice(5):void 0;if(workspace&&Object.hasOwn(importers2,workspace)&&own.requires){own.requires={...own.requires};for(let name2 of targetNames(target))delete own.requires[name2]}nodes.set(key,own),dependencies&&legacy(dependencies,key)}}lock.dependencies&&legacy(lock.dependencies);function resolve16(from,name){let dir=from;for(;;){let key=`${dir?`${dir}/`:""}node_modules/${name}`;if(!dir.endsWith("node_modules")&&nodes.has(key))return key;if(!dir||dir==="."||dir==="legacy")return;dir=dirname17(dir),dir==="."&&(dir="")}}for(let[key,entry]of nodes){let names=new Set(["dependencies","optionalDependencies","peerDependencies","requires"].flatMap(s=>Object.keys(entry[s]??{})));for(let[child,data]of nodes)(data.bundled===!0||data.inBundle===!0)&&child.startsWith(`${key}/node_modules/`)&&!child.slice(key.length+14).includes("/node_modules/")&&names.add(child.slice(key.length+14));let edges=Object.fromEntries([...names].map(n=>[n,resolve16(key,n)])),name=key.slice(key.lastIndexOf("node_modules/")+13);records.set(key,{name,identity:lockedIdentity(String(entry.name??name),entry.version,entry.integrity,entry),edges,data:entry,dependencies:Object.values(edges).filter(r=>r!==void 0)})}let{packages:_p,dependencies:_d,...meta3}=lock,roots=Object.fromEntries(Object.entries(lock.packages).filter(([key])=>!key.includes("node_modules/")).map(([key,entry])=>[key,Object.fromEntries(["dependencies","devDependencies","optionalDependencies","peerDependencies"].flatMap(s=>Object.keys(entry[s]??{})).map(name=>[name,resolve16(key,name)]))]));function relocate(key,previous){if(records.has(key))return key;let name=previous.records.get(key)?.name;if(!name)return;let parent=key.slice(0,key.lastIndexOf("node_modules/")).replace(/\/$/,""),placed=previous.records.has(parent)?relocate(parent,previous):parent;return placed===void 0?void 0:resolve16(placed,name)}return{records,metadata:{...meta3,importers:importers2},roots,relocate}}function npmPeerReresolutions(before,after,planned,scope=planned){let allowed=lockScope(before,after,scope),names=targetNames(planned),results=[];for(let[key,old]of before.records){if(allowed.has(key))continue;let next=after.records.get(key),from=String(old.identity.version??""),to=String(next?.identity.version??""),parsed5=parseVersion(from),target=parseVersion(to);if(!next||old.name!==next.name||!parsed5||!target||parsed5.major!==target.major||compareVersions(to,from)<=0)continue;let peers=Object.keys(old.data.peerDependencies??{}).filter(name=>names.includes(name));if(!peers.length)continue;let ranges={},collect2=(dependent,data,edges)=>{if(edges[old.name]===key)for(let field of["dependencies","devDependencies","optionalDependencies","peerDependencies","requires"]){let range=data[field]?.[old.name];typeof range=="string"&&(ranges[`${dependent||"."} (${field})`]=range)}};for(let[dependent,record]of before.records)collect2(dependent,record.data,record.edges);let importers2=before.metadata.importers;for(let[dependent,edges]of Object.entries(before.roots??{}))collect2(dependent,importers2[dependent]??{},edges);if(!Object.keys(ranges).length||!Object.values(ranges).every(range=>satisfies(from,range)&&satisfies(to,range)))continue;let legacy=`legacy/${key}`,records=[key];before.records.get(legacy)?.identity.version===from&&after.records.get(legacy)?.identity.version===to&&records.push(legacy),results.push({name:old.name,from,to,peers,ranges,records})}return results}function preserveNpmLibc(beforeText,afterText){let before=JSON.parse(beforeText),after=JSON.parse(afterText),changed=!1;for(let[key,entry]of Object.entries(after.packages??{})){let old=before.packages?.[key];old?.libc!==void 0&&entry.libc===void 0&&old.name===entry.name&&old.version===entry.version&&typeof old.integrity=="string"&&old.integrity.length>0&&old.integrity===entry.integrity&&(entry.libc=old.libc,changed=!0)}return changed?`${JSON.stringify(after,null,2)}
|
|
226
|
+
`:afterText}var unquote=s=>s.trim().replace(/^['"]|['"]$/g,""),meaningful=lines=>lines.filter(l=>l.trim()&&!l.trimStart().startsWith("#"));function blocks(lines,indent){let out=[];for(let line of meaningful(lines)){let spaces=line.length-line.trimStart().length;if(spaces===indent){let header=/^(.*):(?:\s*\{\})?\s*$/.exec(line.trim());if(!header)throw new UptideError("UNSUPPORTED_LOCKFILE",`Cannot safely parse lock entry: ${line}`);out.push({key:(header[1]??"").trim(),lines:[]})}else{let block=out.at(-1);if(!block||spaces<indent)throw new UptideError("UNSUPPORTED_LOCKFILE",`Invalid lockfile indentation: ${line}`);block.lines.push(line)}}return out}function dependencyPairs(lines,indent){let pairs=[],inDependencies=!1;for(let line of lines){let spaces=line.length-line.trimStart().length;if(spaces===indent&&(inDependencies=/^\s*(?:dependencies|devDependencies|optionalDependencies|peerDependencies):$/.test(line)),!inDependencies||spaces!==indent+2)continue;let match2=/^\s*(?:"([^"]+)"|'([^']+)'|([^\s:]+))(?::\s+|\s+)(.+)$/.exec(line);if(!match2)throw new UptideError("UNSUPPORTED_LOCKFILE",`Cannot resolve dependency: ${line}`);pairs.push([match2[1]??match2[2]??match2[3]??"",unquote(match2[4]??"")])}return pairs}function omitTarget(lines,target){let out=[],dependencyIndent=-1,skippedIndent=-1;for(let line of meaningful(lines)){let indent=line.length-line.trimStart().length;if(!(skippedIndent>=0&&indent>skippedIndent)){if(skippedIndent=-1,/^\s*(?:dependencies|devDependencies|optionalDependencies|peerDependencies):$/.test(line)?dependencyIndent=indent:indent<=dependencyIndent&&(dependencyIndent=-1),dependencyIndent>=0&&indent===dependencyIndent+2){let key=/^(?:"([^"]+)"|'([^']+)'|([^\s:]+))(?::|\s)/.exec(line.trim());if(targetNames(target).includes(key?.[1]??key?.[2]??key?.[3]??"")){skippedIndent=indent;continue}}out.push(line)}}return out}var packageName=descriptor=>descriptor.slice(0,descriptor.indexOf("@",descriptor.startsWith("@")?1:0));function yarnDescriptors(header){let out=[],current="",quoted=!1;for(let ch of header)ch==='"'?quoted=!quoted:ch===","&&!quoted?(out.push(current),current=""):current+=ch;return out.push(current),out.flatMap(piece=>unquote(piece).split(/,\s*/)).map(d=>d.trim()).filter(Boolean)}function parsedEntry(lines,indent){let data={},section;for(let line of meaningful(lines)){let spaces=line.length-line.trimStart().length,body=line.trim();if(spaces===indent){let nested=/^(?:"([^"]+)"|'([^']+)'|([^\s:]+)):$/.exec(body);if(nested){section=nested[1]??nested[2]??nested[3],data[section]={};continue}section=void 0;let pair=/^(?:"([^"]+)"|'([^']+)'|([^\s:]+))(?::\s+|\s+)(.+)$/.exec(body);pair?data[pair[1]??pair[2]??pair[3]??""]=unquote(pair[4]??""):data[body]=!0}else if(section&&spaces===indent+2){let pair=/^(?:"([^"]+)"|'([^']+)'|([^\s:]+))(?::\s+|\s+)(.+)$/.exec(body);pair?data[section][pair[1]??pair[2]??pair[3]??""]=unquote(pair[4]??""):data[section][body]=!0}else{let bucket=section?data[section]:data;bucket[`#${body}`]=!0}}return data}function yarnGraph(text,target){let records=new Map,metadata={},roots={},entries=blocks(text.split(`
|
|
226
227
|
`),0);for(let b of entries){if(unquote(b.key)==="__metadata"||b.key.includes("@workspace:")){metadata[unquote(b.key)]=omitTarget(b.lines,target),b.key.includes("@workspace:")&&(roots[unquote(b.key)]=Object.fromEntries(dependencyPairs(b.lines,2).map(([n,r])=>[n,`${n}@${r}`])));continue}let descriptors=yarnDescriptors(b.key);if(!packageName(descriptors[0]??"")||!b.lines.some(l=>/^ {2}version[: ]/.test(l)))throw new UptideError("UNSUPPORTED_LOCKFILE",`Unknown Yarn entry ${b.key}`);let data=parsedEntry(b.lines,2),edges=Object.fromEntries(dependencyPairs(b.lines,2).map(([n,r])=>[n,`${n}@${r}`]));for(let d of descriptors){let own=packageName(d),alias=d.slice(own.length+1).replace(/^npm:/,""),actual=alias.includes("@")?packageName(alias):own;records.set(d,{name:own,dependencies:Object.values(edges),edges,data,identity:lockedIdentity(actual,data.version,data.integrity??data.checksum,data)})}}for(let record of records.values()){for(let[name,key]of Object.entries(record.edges))(!key||!records.has(key))&&(record.edges[name]=void 0);record.dependencies=record.dependencies.filter(d=>records.has(d))}for(let edges of Object.values(roots))for(let[name,key]of Object.entries(edges))(!key||!records.has(key))&&(edges[name]=void 0);return{records,metadata,roots}}function withoutTargetPeerVersion(text,target){let out=text;for(let each of targetNames(target)){let name=each.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");out=out.replace(new RegExp(`\\(${name}@[^()]+\\)`,"g"),`(${each}@*)`)}return out}function pnpmGraph(raw,target){let lock=(0,import_yaml3.parse)(withoutTargetPeerVersion(raw,target));if(!lock||typeof lock!="object"||Array.isArray(lock)||!lock.lockfileVersion)throw new UptideError("UNSUPPORTED_LOCKFILE","Invalid pnpm lockfile");let{packages={},snapshots={},...metadata}=lock,records=new Map,locator=(name,version)=>/^(?:@[^/()]+\/)?[^@/()]+@/.test(version)?version:`${name}@${version}`;for(let[section,entries]of[["packages",packages],["snapshots",snapshots]])for(let[key,value]of Object.entries(entries)){let data=value??{},clean=key.replace(/^\//,""),name=packageName(clean);if(!clean.includes("@",clean.startsWith("@")?1:0)||typeof value!="object"||Array.isArray(value))throw new UptideError("UNSUPPORTED_LOCKFILE",`Invalid pnpm entry ${key}`);let base=clean.replace(/\(.*$/,""),identity={...section==="snapshots"?packages[base]??packages[`/${base}`]??{}:data,...data},edges={};for(let field of["dependencies","optionalDependencies"])for(let[n,v]of Object.entries(data[field]??{})){if(typeof v!="string")throw new UptideError("UNSUPPORTED_LOCKFILE",`Cannot resolve pnpm dependency ${n}`);edges[n]=`${lock.snapshots===void 0?"packages":"snapshots"}:${locator(n,v)}`}section==="snapshots"&&(edges["#package"]=`packages:${base}`),records.set(`${section}:${clean}`,{name,data:targetNames(target).includes(name)?data:withoutTarget(data,target),edges,dependencies:[],identity:lockedIdentity(name,base.slice(name.length+1),identity.resolution?.integrity,identity)})}for(let record of records.values()){for(let[name,key]of Object.entries(record.edges))(!key||!records.has(key))&&(record.edges[name]=void 0);record.dependencies=Object.values(record.edges).filter(k=>k!==void 0)}if(metadata.importers)for(let[name,importer]of Object.entries(metadata.importers))metadata.importers[name]=withoutTarget(importer,target);if(metadata.catalogs)for(let catalog of Object.values(metadata.catalogs))for(let name of targetNames(target))delete catalog[name];return{records,metadata}}function lockGraph(pm,text,target){return pm.kind==="npm"?npmGraph(text,target):pm.kind==="pnpm"?pnpmGraph(text,target):yarnGraph(text,target)}async function run(root,pm,args){let result=await command(root,pm.bin,args,3e5,{...pm.env,YARN_ENABLE_IMMUTABLE_INSTALLS:"false"});if(result.code)throw new UptideError("INSTALL_FAILED",`${pm.bin} ${args.join(" ")} failed${result.timeout?" (timeout)":""}: ${result.output}`)}async function upgradeInstall(root,upgrade){let pm=await assertManagerAvailable(root),lockfile=join26(root,pm.lockfile),beforeText=readFileSync18(lockfile,"utf8"),moves=[{name:upgrade.name,version:upgrade.version},...upgrade.also??[]],names=moves.map(m=>m.name),before=lockGraph(pm,beforeText,names),originals=new Map(upgrade.files.filter(f=>f.endsWith("package.json")).map(f=>[f,readFileSync18(join26(root,f),"utf8")])),rootManifest=join26(root,"package.json"),rootText=readFileSync18(rootManifest,"utf8"),yarn=pm.kind.startsWith("yarn");try{if(yarn){let json=JSON.parse(rootText);json.resolutions={...json.resolutions,...Object.fromEntries(moves.map(m=>[m.name,m.version]))},writeFileSync3(rootManifest,`${JSON.stringify(json,null,2)}
|
|
227
228
|
`)}else for(let[file,text]of originals){let json=JSON.parse(text);for(let section of["dependencies","devDependencies","optionalDependencies","peerDependencies"])for(let m of moves){let spec=json[section]?.[m.name];if(!spec)continue;let alias=spec.startsWith("npm:")?spec.slice(0,spec.lastIndexOf("@")+1):"";json[section][m.name]=`${alias}${m.version}`}writeFileSync3(join26(root,file),`${JSON.stringify(json,null,2)}
|
|
228
|
-
`)}await run(root,pm,updateArgs(pm,root,upgrade.workspaces))}finally{for(let[file,text]of originals)writeFileSync3(join26(root,file),text);yarn&&writeFileSync3(rootManifest,rootText)}await run(root,pm,updateArgs(pm,root,upgrade.workspaces));let
|
|
229
|
+
`)}await run(root,pm,updateArgs(pm,root,upgrade.workspaces))}finally{for(let[file,text]of originals)writeFileSync3(join26(root,file),text);yarn&&writeFileSync3(rootManifest,rootText)}await run(root,pm,updateArgs(pm,root,upgrade.workspaces));let written2=readFileSync18(lockfile,"utf8"),afterText=pm.kind==="npm"&&Number(pm.actualVersion?.split(".")[0])<11?preserveNpmLibc(beforeText,written2):written2,scope=[...new Set([...names,...upgrade.allowedPeers??[]])],after=lockGraph(pm,afterText,names),peerReresolved=pm.kind==="npm"?npmPeerReresolutions(before,after,names,scope):[],diff;try{diff=assertLockScope(before,after,scope,peerReresolved.flatMap(p=>p.records))}catch(error){throw pm.kind==="npm"&&error instanceof UptideError&&error.code==="LOCKFILE_OUT_OF_SCOPE"&&(error.message=`${pm.kind} ${pm.actualVersion??"(version unknown)"}: ${error.message}`),error}afterText!==written2&&writeFileSync3(lockfile,afterText),peerReresolved.length&&(diff.peerReresolved=peerReresolved);for(let workspace of upgrade.workspaces){let json=JSON.parse(readFileSync18(join26(root,workspace,"package.json"),"utf8")),ranges=new Map;for(let section of["dependencies","devDependencies","optionalDependencies","peerDependencies"])for(let m of moves)json[section]?.[m.name]&&ranges.set(m.name,json[section][m.name]);let resolved2=(pm.kind==="npm"?parseNpm:pm.kind==="pnpm"?parsePnpm:parseYarn)(afterText,{importer:workspace,declared:ranges});for(let m of moves){if(!ranges.has(m.name))continue;let installed=resolved2.get(m.name);if(installed!==m.version)throw new UptideError("INSTALL_FAILED",`Requested ${m.name}@${m.version}, but ${workspace} resolved ${installed??"nothing"}; verification cannot use a different target.`)}}if(await run(root,pm,pm.args),readFileSync18(lockfile,"utf8")!==afterText)throw new UptideError("LOCKFILE_OUT_OF_SCOPE","Verification install changed the validated lockfile");return{...diff,manager:pm.kind,file:pm.lockfile}}function relocateLinks(dir,from,to){for(let entry of readdirSync7(dir,{withFileTypes:!0})){let file=join27(dir,entry.name);if(entry.isDirectory()&&relocateLinks(file,from,to),!entry.isSymbolicLink())continue;let link=readlinkSync(file);isAbsolute2(link)&&link.startsWith(`${from}/`)&&(rmSync3(file),symlinkSync2(join27(to,relative12(from,link)),file))}}async function isolatedUpgrade(root,upgrade,execute=upgradeInstall){let scratch=realpathSync6(mkdtempSync3(join27(tmpdir4(),"uptide-install-"))),worktree=join27(scratch,"repo"),checkout=join27(worktree,relative12(realpathSync6(git(root,"rev-parse","--show-toplevel")),realpathSync6(root))),staging=mkdtempSync3(join27(root,".uptide-install-")),registered=!1,swapped=[],pm=packageManager(root),lock=join27(root,pm.lockfile),originalLock=readFileSync19(lock);try{git(root,"worktree","add","--detach",worktree,"HEAD"),registered=!0;for(let file of new Set([...upgrade.files,".npmrc",".yarnrc",".yarnrc.yml"])){let source=resolve9(root,file);if(!source.startsWith(`${root}/`))throw new Error(`Install input escapes repository: ${file}`);if(!existsSync17(source))continue;let destination=join27(checkout,file);mkdirSync3(dirname18(destination),{recursive:!0}),cpSync(source,destination,{recursive:!0,verbatimSymlinks:!0})}let result=await execute(checkout,upgrade),generated=readFileSync19(join27(checkout,pm.lockfile)),modules=[];for(let[i,workspace]of workspacePackagesOf(root).entries()){let source=join27(checkout,workspace,"node_modules"),target=join27(root,workspace,"node_modules");if(!existsSync17(source)&&!existsSync17(target))continue;let staged=existsSync17(source)?join27(staging,`new-${i}`):void 0;staged&&(cpSync(source,staged,{recursive:!0,verbatimSymlinks:!0}),relocateLinks(staged,checkout,root)),modules.push({target:join27(root,workspace,"node_modules"),staged,backup:join27(staging,`old-${i}`)})}for(let{target,staged,backup}of modules){let existed=existsSync17(target);existed&&renameSync(target,backup),swapped.push({target,backup,existed}),staged&&renameSync(staged,target)}return writeFileSync4(lock,generated),result}catch(error){writeFileSync4(lock,originalLock);for(let{target,backup,existed}of swapped.reverse())rmSync3(target,{recursive:!0,force:!0}),existed&&renameSync(backup,target);throw error}finally{registered&&git(root,"worktree","remove","--force",worktree),rmSync3(scratch,{recursive:!0,force:!0}),rmSync3(staging,{recursive:!0,force:!0})}}function assertNoDowngrades(root,moves){let rejected=new Set;for(let workspace of workspacePackagesOf(root))for(let move of moves){let from=installedManifest(root,workspace,move.name)?.version;from&&compareVersions(move.to,from)<0&&rejected.add(`${move.name} ${from} \u2192 ${move.to} (${workspace})`)}if(rejected.size)throw new UptideError("INCONSISTENT_UPGRADE",`Refusing planned downgrades before install:
|
|
229
230
|
${[...rejected].join(`
|
|
230
231
|
`)}
|
|
231
232
|
Nothing was changed.`)}var sections2=["dependencies","devDependencies","optionalDependencies","peerDependencies"];function versionRange(before,version){let alias=/^(npm:(?:@[^/\s]+\/)?[^@\s]+@)(.+)$/.exec(before);if(alias)return`${alias[1]}${versionRange(alias[2],version)}`;let match2=/^(\s*[~^]?\s*v?)(\d+(?:\.(?:\d+|[xX*])){0,2})(-[\w.-]+)?(\+[\w.-]+)?\s*$/.exec(before),parts=match2?.[2]?.split(".");if(!match2||!parts||(match2[3]||match2[4])&&(parts.length!==3||!parts.every(p=>/^\d+$/.test(p)))||parts.some((p,i)=>/[xX*]/.test(p)&&parts.slice(i+1).some(q=>/^\d+$/.test(q))))throw new UptideError("UNSUPPORTED_VERSION_RANGE",`Cannot preserve version range ${JSON.stringify(before)}; use an exact, ^ or ~ range before fixing.`);let target=version.split("."),full2=parts.length===3&&parts.every(p=>/^\d+$/.test(p));return`${match2[1]}${full2?version:parts.map((p,i)=>/^[xX*]$/.test(p)?p:target[i]).join(".")}`}function declaredRange2(before,version,file,field,name,installed){try{return versionRange(before,version)}catch(error){if(!(error instanceof UptideError)||error.code!=="UNSUPPORTED_VERSION_RANGE")throw error;let alias=/^(npm:(?:@[^/\s]+\/)?[^@\s]+@)/.exec(before)?.[1]??"",suggestion=installed?JSON.stringify(`${alias}^${installed}`):"an exact, ^ or ~ range matching the installed version";throw new UptideError("UNSUPPORTED_VERSION_RANGE",`${file}: ${field} declares ${JSON.stringify(before)}, which cannot be rewritten safely. Change ${JSON.stringify(name)}: ${JSON.stringify(before)} in ${file} (${field}) to ${suggestion}, then rerun.`)}}function bumpCatalog(yaml,name,version,catalog,installed=version){let doc=(0,import_yaml4.parseDocument)(yaml);if(doc.errors.length)throw doc.errors[0];let path=catalog?["catalogs",catalog,name]:["catalog",name],before=doc.getIn(path);if(typeof before!="string")throw new Error(`catalog ${catalog||"(default)"} has no entry for ${name}`);return doc.setIn(path,declaredRange2(before,version,"pnpm-workspace.yaml",path.join("."),name,installed)),doc.toString()}function validateVersionRanges(root,names,read2=file=>readFileSync20(join28(root,file),"utf8")){for(let workspace of workspacePackagesOf(root)){let file=join28(workspace,"package.json"),json=JSON.parse(read2(file));for(let name of names)for(let section of sections2){let before=json[section]?.[name];if(typeof before!="string")continue;let installed=installedManifest(root,workspace,name)?.version;before.startsWith("catalog:")?bumpCatalog(read2("pnpm-workspace.yaml"),name,installed??"0.0.0",before.slice(8),installed??null):declaredRange2(before,installed??"0.0.0",file,`${section}.${name}`,name,installed)}}}function bumpVersions(root,name,version){validateVersionRanges(root,[name]);let files=[],workspaces=[],catalogs=new Set;for(let workspace of workspacePackagesOf(root)){let file=join28(root,workspace,"package.json"),original=readFileSync20(file,"utf8"),json=JSON.parse(original),declared=!1,changed=!1;for(let section of sections2){let before=json[section]?.[name];typeof before=="string"&&(declared=!0,before.startsWith("catalog:")?catalogs.add(before.slice(8)):(json[section][name]=declaredRange2(before,version,relative13(root,file),`${section}.${name}`,name,installedManifest(root,workspace,name)?.version??version),changed=!0))}declared&&workspaces.push(workspace),changed&&(writeFileSync5(file,`${JSON.stringify(json,null,original.match(/\n(\s+)"/)?.[1]??" ")}
|
|
@@ -275,13 +276,13 @@ export default {
|
|
|
275
276
|
`)}]:[]})}var bundledLibraries;function bundledHost(options){if(!bundledLibraries?.has(import_ts_morph18.ts.getDefaultLibFileName(options))){let project=new import_ts_morph18.Project({useInMemoryFileSystem:!0,compilerOptions:{target:options.target??import_ts_morph18.ts.ScriptTarget.ES2025}});project.createSourceFile("probe.ts","const value = 1;"),bundledLibraries=new Map(project.getProgram().compilerObject.getSourceFiles().filter(f=>f.fileName.includes("/typescript/lib/")).map(f=>[basename3(f.fileName),f.text]))}let host=import_ts_morph18.ts.createCompilerHost(options),read2=host.readFile,exists=host.fileExists,lib=file=>file.startsWith("/__uptide_lib__/")?bundledLibraries?.get(basename3(file)):void 0;return host.readFile=file=>lib(file)??read2(file),host.fileExists=file=>lib(file)!==void 0||exists(file),host.getDefaultLibLocation=()=>"/__uptide_lib__",host.getDefaultLibFileName=o=>join32("/__uptide_lib__",import_ts_morph18.ts.getDefaultLibFileName(o)),host.getSourceFile=(file,languageVersion)=>{let text=host.readFile(file);return text===void 0?void 0:import_ts_morph18.ts.createSourceFile(file,text,languageVersion,!0)},host}function expectedShape(compiler,program,d){if(!(!d.file||d.start===void 0||![2322,2345].includes(d.code)))try{let checker=program.getTypeChecker(),node,visit=n=>{n.getStart()<=d.start&&d.start<n.getEnd()&&(node=n,n.forEachChild(visit))};d.file.forEachChild(visit);let expression=node;for(;expression&&!compiler.isExpression(expression);)expression=expression.parent;if(expression&&compiler.isPropertyAssignment(expression.parent)&&(expression=expression.parent.initializer),!expression||!compiler.isExpression(expression))return;let type=checker.getContextualType(expression);if(!type)return;let flags=compiler.TypeFormatFlags.NoTruncation|compiler.TypeFormatFlags.InTypeAlias,plain=text=>text.replace(/import\("[^"]*"\)\./g,""),print=(t,f=flags)=>plain(checker.typeToString(t,expression,f)),parts=(type.isUnion()?type.types:[type]).filter(t=>!(t.flags&compiler.TypeFlags.Undefined)),members=t=>{let props=t.getProperties();if(!(props.length===0||props.length>12))return`{ ${props.map(p=>{let optional=p.flags&compiler.SymbolFlags.Optional?"?":"",own=checker.getTypeOfSymbolAtLocation(p,expression);return`${p.name}${optional}: ${print(own).replace(/ \| undefined$/,"")}`}).join("; ")} }`},name=parts.map(t=>print(t,compiler.TypeFormatFlags.NoTruncation)).join(" | "),shape=parts.map(t=>members(t)??print(t)).join(" | ");return shape===name?void 0:`${name}: ${shape}`.slice(0,600)}catch{return}}function diagnostics(root,workspaces){let all=new Map,queue=[...workspaces],visited=new Set;for(let workspace of queue){if(visited.has(workspace))continue;visited.add(workspace);let dir=join32(root,workspace),compiler=resolveCompiler(dir),tsconfig=join32(dir,"tsconfig.json"),config=compiler.readConfigFile(tsconfig,compiler.sys.readFile),parsed5=compiler.parseJsonConfigFileContent(config.config??{include:["**/*.ts","**/*.tsx"],exclude:["node_modules","dist","build"]},compiler.sys,dir,void 0,config.config?tsconfig:void 0),sources=workspaceSourceMap(dir,readInstalled(dir).installed),fileNames=new Set(parsed5.fileNames);for(let reference of parsed5.projectReferences??[]){let path=reference.path.endsWith(".json")?reference.path:join32(reference.path,"tsconfig.json"),ref=compiler.readConfigFile(path,compiler.sys.readFile),files=compiler.parseJsonConfigFileContent(ref.config??{},compiler.sys,dirname19(path)).fileNames;for(let f of files)fileNames.add(f)}compiler===import_ts_morph18.ts&&(parsed5.options.ignoreDeprecations="6.0");let hostOptions={...parsed5.options,noEmit:!0,skipLibCheck:!0},host=compiler===import_ts_morph18.ts?bundledHost(hostOptions):compiler.createCompilerHost(hostOptions);host.getCurrentDirectory=()=>dir;let program=compiler.createProgram({host,rootNames:[...fileNames],options:{...parsed5.options,noEmit:!0,rootDir:root,composite:!1,incremental:!1,paths:{...parsed5.options.paths,...sources.paths}}}),errors=[...parsed5.errors,...config.error?[config.error]:[],...program.getOptionsDiagnostics(),...program.getGlobalDiagnostics()];for(let file of program.getSourceFiles()){if(file.isDeclarationFile||!file.fileName.startsWith(`${root}/`)||file.fileName.includes("/node_modules/"))continue;let owner=dirname19(file.fileName);for(;owner!==root&&!existsSync19(join32(owner,"tsconfig.json"));)owner=dirname19(owner);if(owner!==dir&&owner!==root){let other=relative15(root,owner);visited.has(other)||queue.push(other);continue}errors.push(...program.getSyntacticDiagnostics(file),...program.getSemanticDiagnostics(file))}for(let d of errors){if(d.category!==import_ts_morph18.ts.DiagnosticCategory.Error)continue;let location=d.file?.getLineAndCharacterOfPosition(d.start??0),expected=expectedShape(compiler,program,d),related2=relatedDeclarations(root,compiler,d),relatedLocations=(d.relatedInformation??[]).flatMap(info=>{if(!info.file||info.start===void 0)return[];let at=info.file.getLineAndCharacterOfPosition(info.start);return[{file:relative15(root,info.file.fileName),line:at.line+1,column:at.character+1}]}),value={file:d.file?relative15(root,d.file.fileName):join32(workspace,"tsconfig.json"),line:(location?.line??0)+1,column:(location?.character??0)+1,code:d.code,message:import_ts_morph18.ts.flattenDiagnosticMessageText(d.messageText,`
|
|
276
277
|
`).split(root).join("<repo>"),...expected?{expected}:{},...related2.length?{relatedDeclarations:related2}:{},...relatedLocations.length?{relatedLocations}:{}};all.set(`${value.file}:${value.line}:${value.column}:${value.code}:${value.message}`,value)}}return[...all.values()].sort((a,b)=>a.file.localeCompare(b.file)||a.line-b.line||a.column-b.column)}var RESOLUTION_CODES=new Set([2307,2580,2581,2582,2591,2592,2593,2688,2792]);function missingPackages(d){if(!RESOLUTION_CODES.has(d.code))return[];let suggested=/@types\/[\w.-]+/.exec(d.message)?.[0];if(suggested)return[suggested];let name=/'([^']+)'/.exec(d.message)?.[1];if(!name||name.startsWith(".")||name.startsWith("/"))return[];if(name.startsWith("node:")||builtinModules2.includes(name))return["@types/node"];let pkg=name.split("/").slice(0,name.startsWith("@")?2:1).join("/"),types=`@types/${pkg.startsWith("@")?pkg.slice(1).replace("/","__"):pkg}`;return d.code===2688?[types,pkg]:[pkg,types]}function typeResolutionFailure(root,baseline){let seen=new Set,errors=0;for(let d of baseline){let candidates=missingPackages(d);if(candidates.length===0)continue;let declared=!1,installed;for(let dir=dirname19(join32(root,d.file));;dir=dirname19(dir)){let manifest2=existsSync19(join32(dir,"package.json"))?JSON.parse(readFileSync24(join32(dir,"package.json"),"utf8")):{};for(let name of candidates)declared||=["dependencies","devDependencies","optionalDependencies","peerDependencies"].map(field=>manifest2[field]).some(deps=>deps?.[name]!==void 0),!installed&&existsSync19(join32(dir,"node_modules",name,"package.json"))&&(installed=name);if(dir===root||dirname19(dir)===dir)break}declared&&installed&&(errors++,seen.add(installed))}if(errors===0)return;let names=[...seen].sort();return`${errors} baseline error${errors===1?"":"s"} cannot see ${names.join(", ")}, which ${names.length===1?"is":"are"} declared and installed`}function diagnosticKey(d){let position=at=>[at.file,at.line,at.column];return JSON.stringify([position(d),d.code,(d.relatedLocations??[]).map(position).sort()])}function newDiagnostics(baseline,target){let counts=new Map;for(let d of baseline)counts.set(diagnosticKey(d),(counts.get(diagnosticKey(d))??0)+1);return target.filter(d=>{let n=counts.get(diagnosticKey(d))??0;return n?(counts.set(diagnosticKey(d),n-1),!1):!0})}var VITEST_CONFIGS=["vitest.config","vitest.workspace"].flatMap(base=>["ts","mts","cts","js","mjs","cjs"].map(ext=>`${base}.${ext}`)),JEST_CONFIGS=["ts","mts","cts","js","mjs","cjs","json"].map(ext=>`jest.config.${ext}`),quote=arg=>/^[\w@%+=:,./-]+$/.test(arg)?arg:`'${arg.replaceAll("'","'\\''")}'`;function manifest(dir){try{return JSON.parse(readFileSync24(join32(dir,"package.json"),"utf8"))}catch{return}}function upTo(root,from){let dirs=[];for(let dir=from;dirs.push(dir),!(dir===root||dirname19(dir)===dir);dir=dirname19(dir));return dirs}function runnerFor(root,workspace){for(let dir of upTo(root,join32(root,workspace))){let installed=bin=>upTo(root,dir).some(d=>existsSync19(join32(d,"node_modules/.bin",bin))),vitest=VITEST_CONFIGS.find(name=>existsSync19(join32(dir,name)));if(vitest&&installed("vitest"))return{runner:"vitest",dir,config:vitest};let jest=JEST_CONFIGS.find(name=>existsSync19(join32(dir,name)))??(manifest(dir)?.jest?"package.json":void 0);if(jest&&installed("jest"))return{runner:"jest",dir,config:jest}}}function planTests(root,workspaces,files=[],options={}){let plans=[],shared=new Map,rootScript=[];for(let workspace of workspaces){let script=manifest(join32(root,workspace))?.scripts?.test,bare=/^\s*(?:(?:npx|pnpm exec|yarn)\s+)?(vitest|jest)\b/.exec(script??"")?.[1];if(script&&!(bare&&runnerFor(root,workspace)?.runner===bare)){plans.push({workspace,covers:[workspace],cwd:join32(root,workspace),command:script,scope:`the \`test\` script of ${workspace==="."?"the repository":workspace}`});continue}let found=runnerFor(root,workspace);if(found){let key=`${found.runner}:${found.dir}`,group=shared.get(key)??{...found,covers:[]};group.covers.push(workspace),shared.set(key,group);continue}workspace!=="."&&manifest(root)?.scripts?.test?rootScript.push(workspace):plans.push({workspace,covers:[workspace],cwd:join32(root,workspace),command:"",scope:"no test script, and no vitest or jest configuration covers this workspace"})}for(let group of shared.values()){let inside=file=>group.covers.some(w=>w==="."||file===w||file.startsWith(`${w}/`)),related2=[...new Set(files)].filter(inside).filter(file=>existsSync19(join32(root,file))).map(file=>relative15(group.dir,join32(root,file))).sort(),dirs=group.covers.map(w=>relative15(group.dir,join32(root,w))||"."),where=relative15(root,join32(group.dir,group.config))||group.config,needs=serviceNeeds(root,group.dir,group.config,group.covers),sensitive=needs.files.length>0||needs.setups.length>0,unitOnly=sensitive&&!options.withServices,needsText=needs.services.length?needs.services:["services"],workspace=relative15(root,group.dir)||".",wrapper="vitest.uptide-unit.config.mjs",canIsolate=group.runner==="vitest"?group.config.startsWith("vitest.config."):needs.setups.length===0;if(unitOnly&&!canIsolate){plans.push({workspace,covers:group.covers,cwd:group.dir,command:"",scope:`not run: the ${group.runner} setup in ${where} connects to ${needsText.join(", ")}; pass --with-services to include it`,notRun:{files:needs.files.length,needs:needsText}});continue}let targets=unitOnly?related2.filter(file=>!isServiceTest(file)):related2,isolate=unitOnly?group.runner==="vitest"?["--config",wrapper]:["--testPathIgnorePatterns","\\.(integration|int|e2e)\\.","/(integration|e2e)/"]:[],args=group.runner==="vitest"?targets.length?["related","--run","--passWithNoTests",...isolate,...targets]:["run","--passWithNoTests",...isolate,...dirs.filter(d=>d!==".")]:targets.length?["--findRelatedTests","--passWithNoTests",...isolate,...targets]:["--passWithNoTests",...isolate,...dirs.filter(d=>d!==".")],scripts=manifest(group.dir)?.scripts,prepare2=scripts?.pretest&&new RegExp(`\\b${group.runner}\\b`).test(scripts.test??"")?scripts.pretest:void 0,run2=[group.runner,...args.map(quote)].join(" "),kind=unitOnly?"unit tests":"tests";plans.push({workspace,covers:group.covers,cwd:group.dir,command:prepare2?`${prepare2} && ${run2}`:run2,scope:`${targets.length?`${group.runner} ${kind} related to ${targets.length} affected file${targets.length===1?"":"s"}`:`${group.runner} ${kind} under ${dirs.join(", ")}`}, ${where}${prepare2?" after `pretest`":""}`,...unitOnly&&group.runner==="vitest"?{write:{path:join32(group.dir,wrapper),text:unitConfig(group.config,needs.setups.length>0)}}:{},...unitOnly?{notRun:{files:needs.files.length,needs:needsText}}:{},...sensitive&&options.withServices?{services:{names:needsText,targets:needs.targets}}:{}})}return rootScript.length&&plans.push({workspace:".",covers:rootScript,cwd:root,command:manifest(root)?.scripts?.test??"",scope:"the `test` script of the repository"}),plans}function testSummary(output){let plain=output.replace(new RegExp("\x1B\\[[0-9;]*m","g"),""),tests=/^\s*Tests:?\s+(?:.*?,\s*)?(\d+) passed/m.exec(plain)?.[1],files=/^\s*Test (?:Files|Suites):?\s+(?:.*?,\s*)?(\d+) passed/m.exec(plain)?.[1];if(!tests)return;let n=Number(tests);return`${n} test${n===1?"":"s"}${files?` in ${files} file${files==="1"?"":"s"}`:""}`}function failedTestFiles(output){let files=new Set;for(let line of output.split(`
|
|
277
278
|
`)){if(!/^\s*FAIL\b/.test(line))continue;let file=/([\w@./-]+\.(?:test|spec)\.[cm]?[jt]sx?)/.exec(line)?.[1];file&&files.add(file)}return[...files].sort()}var stem=file=>(file.split("/").pop()??file).replace(/(?:\.(?:e2e|integration))?(?:\.(?:test|spec))?\.[cm]?[jt]sx?$/,"");function concerns(testFile,affected){return affected.some(file=>file.endsWith(testFile)||testFile.endsWith(file)||stem(file)===stem(testFile))}var ANSI=new RegExp("\x1B\\[[0-9;]*[A-Za-z]","g");async function testWorkspaces(root,workspaces,timeoutMs=12e4,files=[],options={}){let results=[],realRoot=root;try{realRoot=realpathSync8(root)}catch{}for(let plan of planTests(root,workspaces,files,options)){let described={covers:plan.covers,scope:plan.scope,...plan.notRun?{notRun:plan.notRun}:{},...plan.services?{services:plan.services}:{}};if(!plan.command){results.push({workspace:plan.workspace,status:"missing",output:plan.scope,...described});continue}let bins=upTo(root,plan.cwd).map(dir=>join32(dir,"node_modules/.bin")).filter(dir=>existsSync19(dir)),attempt=()=>command(plan.cwd,process.env.SHELL??"/bin/sh",["-c",plan.command],timeoutMs,{PATH:[...bins,process.env.PATH].join(":")}),plain=text=>text.replace(ANSI,"").split(realRoot).join("<repo>").split(root).join("<repo>");plan.write&&writeFileSync7(plan.write.path,plan.write.text);let result,retried=[];try{if(result=await attempt(),result.code&&!result.timeout){let failing=failedTestFiles(plain(result.output));if(failing.length>0&&failing.every(file=>!concerns(file,files))){let again=await attempt();!again.code&&!again.timeout&&(retried=failing),result=again}}}finally{plan.write&&rmSync4(plan.write.path,{force:!0})}let output=plain(result.output),summary=testSummary(output),empty=!result.code&&!result.timeout&&/No test files found|No tests found/i.test(output)&&!summary;results.push({workspace:plan.workspace,status:result.timeout?"timeout":result.code?"failed":empty?"missing":"passed",output:empty?`no tests are related to the affected files (${plan.command})`:output,command:plan.command,...described,...summary?{summary}:{},...retried.length?{retried}:{}})}return results}function describeServices(root,workspaces){let lines=[],seen=new Set;for(let workspace of workspaces){let found=runnerFor(root,workspace);if(!found||seen.has(`${found.runner}:${found.dir}`))continue;seen.add(`${found.runner}:${found.dir}`);let needs=serviceNeeds(root,found.dir,found.config,workspaces);if(needs.files.length===0&&needs.setups.length===0)continue;let names=needs.services.length?needs.services.join(", "):"services not identified";lines.push(`${names}: ${needs.files.length} integration or end-to-end test file${needs.files.length===1?"":"s"}${needs.setups.length?`, global setup ${needs.setups.join(", ")} runs against it and may reset data`:""}`,...needs.targets.map(target=>` ${target}`))}return lines}function markPreexisting(tests,baseline){return tests.map(t=>{if(t.status!=="failed")return t;let before=baseline.find(b=>b.workspace===t.workspace&&(b.status==="failed"||b.status==="timeout"));if(!before)return t;let now=failedTestFiles(t.output),then=new Set(failedTestFiles(before.output));return now.length===0&&then.size===0?{...t,preexisting:["*"]}:now.length>0&&now.every(f=>then.has(f))?{...t,preexisting:now}:t})}function fixCounts(report){return{mechanical:report.sites.filter(s=>s.outcome==="mechanical").length,agent:report.sites.filter(s=>s.outcome==="agent").length,manual:report.sites.filter(s=>s.outcome==="manual").length}}var cell=s=>s.replaceAll("|","\\|").replace(/[\r\n]/g," "),sentence=s=>{let text=s.replace(/(?:[\w.@-]+[/])+[\w.@-]+\.[\w]+/g,path=>basename4(path)).replace(/\s+/g," "),end=text.replace(/\b(e|i)\.(g|e)\./g,"$1_$2_").match(/^.*?[.!?](?:\s|$)/)?.[0]?.length,first=end===void 0?text:text.slice(0,end).trim();return first.length>240?`${first.slice(0,237)}\u2026`:first},siteKey=s=>`${s.finding.usage.file}:${s.finding.usage.line}:${s.finding.usage.column}`,folded=s=>!!s.resolvedBy||s.reason.startsWith("diagnostic resolved by an earlier");function changeRule(report,s){if(s.rule)return s.rule;if(s.finding.rule)return s.finding.rule;let evidence=`${s.finding.change.path} ${s.finding.usage.compileError??""} ${s.finding.usage.snippet}`;if(report.package==="zod"){if(s.outcome==="mechanical")return/format/.test(s.reason)?"string-format":"error-params";if(/required_error|invalid_type_error/.test(evidence))return"error-params";if(/#ip$/.test(s.finding.change.path))return"ip";if(/ZodType|TS2724/.test(evidence)||folded(s))return"types"}if(report.package==="stripe"){if(/apiVersion|LatestApiVersion/.test(evidence))return"api-version";if(/current_period_(?:end|start)/.test(evidence))return"subscription-period"}return s.finding.change.path}var RULE_TITLES={"error-params":{title:"New error API",plain:"New error API (required_error \u2192 error)"},"string-format":{title:"Top-level string formats"},ip:{title:"`.ip()` removed"},"api-version":{title:"Stripe API version",plain:"apiVersion no longer matches the SDK"},"api-version-unpinned":{title:"Stripe API version unpinned",plain:"client without apiVersion: the API version changes at runtime"},"api-version-pin":{title:"Stripe API version pinned"},"subscription-period":{title:"Subscription billing period moved to items"},"default-messages":{title:"Default error messages"},"fixture-cast":{title:"Test fixture casts widened"}};function diagnosticTitle(code,findings){let concrete=findings.map(f=>concreteTitle(code,f)),first=concrete[0];return first&&concrete.every(t=>t===first)?first:{2305:"An import no longer exists",2724:"An import no longer exists",2614:"An import no longer exists",2339:"A property no longer exists",2551:"A property no longer exists",2353:"An option is no longer accepted",2554:"A call passes the wrong number of arguments",2555:"A call passes the wrong number of arguments",2769:"A call no longer matches any signature",2345:"An argument no longer has the expected type",2322:"A value no longer has the expected type",2344:"A type argument no longer satisfies its constraint",2589:"A type became too deep for the compiler to instantiate",2349:"A value is no longer callable",2351:"A value is no longer constructable",18046:"A value became unknown",18048:"A value may now be undefined",7006:"A callback parameter lost its type"}[code]??`Type error introduced by the upgrade (TS${code})`}var typeOf=text=>text.length>40?`${text.slice(0,37)}...`:text;function concreteTitle(code,f){let message=f.usage.compileError?.split(`
|
|
278
|
-
`)[0]??"";if(code===2305||code===2724||code===2614){let m=/has no exported member(?: named)? '([^']+)'/.exec(message);return m?`${m[1]} is no longer exported`:void 0}if(code===2322){let m=/^Type '(.+?)' is not assignable to type '(.+?)'\.?$/.exec(message);if(!m)return;let name=/^\s*(?:[\w$.]+\.)?([\w$]+)\s*[:=](?!=)/.exec(f.usage.snippet)?.[1];return name?`${name} no longer accepts a ${typeOf(m[1])} (expects ${typeOf(m[2])})`:`A ${typeOf(m[1])} no longer satisfies ${typeOf(m[2])}`}if(code===2345){let m=/^Argument of type '(.+?)' is not assignable to parameter of type '(.+?)'\.?$/.exec(message);return m?`An argument of type ${typeOf(m[1])} no longer matches ${typeOf(m[2])}`:void 0}}function ruleTitle(rule,zodTypeDef=!1){return rule==="types"?zodTypeDef?"`ZodTypeDef` removed":"Schema generics":RULE_TITLES[rule]?.title}function groups(report){let result=new Map;for(let site2 of report.sites){let parent=site2.resolvedBy?report.sites.find(s=>siteKey(s)===site2.resolvedBy):folded(site2)?report.sites.find(s=>s.outcome==="agent"&&!folded(s)&&s.finding.usage.file===site2.finding.usage.file):void 0,rule=changeRule(report,parent??site2),key=rule,group=result.get(key)??{rule,outcome:site2.outcome,sites:[],edits:[]};(site2.outcome==="manual"||site2.outcome==="agent"&&group.outcome==="mechanical")&&(group.outcome=site2.outcome),group.sites.push(site2),folded(site2)||group.edits.push(site2),result.set(key,group)}return[...result.values()].sort((a,b)=>+(a.outcome!=="mechanical")-+(b.outcome!=="mechanical")||a.rule.localeCompare(b.rule))}function description(g,report){if(g.outcome==="manual")return{title:g.rule,summary:`Manual migration required: ${sentence(g.sites.find(s=>s.outcome==="manual")?.reason??"review the remaining sites.")}`};let edited=g.edits[0],patch=edited?.diff??edited?.attempts?.findLast(a=>a.outcome==="accepted")?.diff??"",zodTypeDef=g.sites.some(s=>/ZodTypeDef/.test(`${s.finding.usage.compileError??""} ${s.finding.usage.snippet} ${s.diff??""} ${s.attempts?.map(a=>a.diff??"").join(" ")??""}`)),declaration=edited?basename4(edited.finding.usage.file).replace(/\.[cm]?[jt]sx?$/,""):void 0,generic=/^\+.*?(ZodType<[^>\n]+>)/m.exec(patch)?.[1]??"ZodType<Output, Input>";return{"error-params":{title:ruleTitle("error-params"),summary:"`required_error` and `invalid_type_error` were replaced by `error`. "+(schemas(report).some(b=>b.messageChecks?.some(c=>c.status==="different")||b.differences.some(d=>/message|issue/.test(d.kind)))?"Message differences need review.":"Messages are unchanged."),note:"Returning `undefined` keeps zod's default message for wrong types, exactly like v3."},"string-format":{title:ruleTitle("string-format"),summary:"String format chains now use top-level factories, preserving arguments and subsequent checks."},ip:{title:ruleTitle("ip"),summary:g.edits.every(s=>/z\.union/.test(s.diff??"")&&/ipv4/.test(s.diff??"")&&/ipv6/.test(s.diff??""))?"Now `z.union([z.ipv4(), z.ipv6()])`, which accepts both families like before.":"Uses the target IP factories; review the accepted patch for address-family semantics."},types:{title:ruleTitle("types",zodTypeDef),summary:zodTypeDef&&declaration?`\`${declaration}\` now types schemas as \`${generic}\`, preserving the input/output contract.`:"Schema declarations use the target output/input generics; no new type errors were introduced."},"api-version":{title:ruleTitle("api-version"),summary:additiveBumpOnly(report)?"API literals now match the target SDK. No changelog entry between the two API versions affects this code, and none is breaking.":"API literals now match the target SDK; types compile, but response and webhook compatibility needs review."},"default-messages":{title:ruleTitle("default-messages"),summary:"Zod 4 words its default messages differently. Assertions that the migrated code made fail now match the new text; the tests pass again."},"subscription-period":{title:ruleTitle("subscription-period"),summary:"One shared helper takes the item that ends last and returns start and end from that same item (undefined with no items), preserving the single-item values; multi-item and no-item behavior needs your decision."},"api-version-unpinned":{title:"Stripe API version unpinned",summary:`A client created without \`apiVersion\` spoke the SDK's default; it now says \`${report.apiChanges?.to??"the target version"}\` explicitly, the version the new SDK's types describe. The next SDK bump cannot move it silently.`},"fixture-cast":{title:ruleTitle("fixture-cast"),summary:"Test fixtures that were already cast straight to an SDK type no longer overlap with it, so the same cast now goes through `unknown`. No application code and no new assertion: the tests decide whether the fixtures still hold."},"api-version-pin":{title:ruleTitle("api-version-pin"),summary:`\`apiVersion: '${report.apiVersion??""}'\` added to a client that relied on the SDK default. Identical behaviour: this is the version the installed SDK already speaks. The next SDK bump no longer changes it silently.`}}[g.rule]??{title:/^TS\d+$/.test(g.rule)?diagnosticTitle(Number(g.rule.slice(2)),g.sites.map(s=>s.finding)):g.rule,summary:`${sentence(g.edits[0]?.attempts?.findLast(a=>a.outcome==="accepted")?.explanation??g.edits[0]?.reason??"Migration recorded.")} ${report.verification.passed?"No new type errors.":"Verification is incomplete."}`}}function schemas(report){return(report.behavior??[]).filter(b=>b.schema!=="(reported site)")}function differs(b){return b.differences.length>0||!b.skipped&&b.identical!==b.inputs||!!b.messageChecks?.some(c=>c.status==="different")}function unchecked(b){return!!b.skipped||!b.inputs||!!b.messageChecks?.some(c=>c.status==="skipped")}function additiveBumpOnly(report){let c=report.apiChanges;return report.package==="stripe"&&!!c&&c.relevant===0&&c.breaking===0&&groups(report).every(g=>g.rule==="api-version")}function migrationRisk(report){if(report.verificationPending)return{level:"High",reason:"verification pending"};if(report.mode==="pin"&&report.verification.passed&&!report.sites.some(s=>s.outcome==="manual"))return{level:"Low",reason:"no behaviour change: the explicit pin equals the SDK default"};let g=groups(report),high=[...report.peerConflicts?.length?["peer compatibility is not verified"]:[],...report.sites.some(s=>s.outcome==="manual")?["manual sites left"]:[],...!report.verification.passed||report.verification.newErrors.length||report.sites.some(s=>s.finding.severity==="unverified")?["unverified sites"]:[],...schemas(report).some(differs)||report.package==="stripe"&&g.some(x=>["api-version","subscription-period"].includes(x.rule))&&!additiveBumpOnly(report)?["behavior changes"]:[]];if(high.length)return{level:"High",reason:high.join("; ")};if(report.sites.length===0&&report.verification.tests.length>0&&report.verification.tests.every(t=>t.status==="passed"))return{level:"Low",reason:"no code changes; types and tests verified"};if(report.tier==="generic")return{level:"Medium",reason:`no migration pack for ${report.package}: agent edits verified by the compiler only`};if(additiveBumpOnly(report))return{level:"Medium",reason:"billing path; API version bump with additive changes only"};if(report.package==="zod"&&report.sites.some(s=>/(?:schemas|validation|auth|webhook|instance)/i.test(s.finding.usage.file)))return{level:"Medium",reason:`request validation${validationScopes(report).length?` in ${scopeList(report)}`:""}`};let medium=[...report.sites.some(s=>s.outcome==="agent")?["agent edits"]:[],...report.sites.some(s=>/(?:validation|auth|billing|payment|webhook)/i.test(s.finding.usage.file))?["sensitive paths"]:[],...!report.verification.tests.length||report.verification.tests.some(t=>t.status==="missing")?["no tests"]:[],...schemas(report).some(unchecked)?["unchecked schemas"]:[]];return medium.length?{level:"Medium",reason:medium.join("; ")}:{level:"Low",reason:"rule-only; all verified"}}function validationScopes(report){let paths=report.sites.flatMap(s=>[s.finding.usage.file,...s.editedFiles??[]]).join(" ");return[.../auth|user\.ts/i.test(paths)?["auth"]:[],.../instance/i.test(paths)?["instances"]:[],.../webhook/i.test(paths)?["webhooks"]:[]]}var listed=items=>items.length<2?items.join(""):`${items.slice(0,-1).join(", ")} and ${items.at(-1)}`,scopeList=report=>listed(validationScopes(report));function errorSummary(diagnostics2,what){let byKind=new Map;for(let d of diagnostics2){let missing=missingPackages(d)[0],kind=missing?` missing ${missing==="@types/node"?"Node types":`\`${missing}\``}`:`|${d.code}`,entry=byKind.get(kind)??{codes:new Set,n:0};entry.codes.add(d.code),entry.n++,byKind.set(kind,entry)}let parts=[...byKind].sort((a,b)=>b[1].n-a[1].n).map(([kind,{codes,n}])=>`${n} \xD7 ${[...codes].map(c=>`TS${c}`).join("/")}${kind.startsWith("|")?"":kind}`);return`${count(diagnostics2.length,what)} (${parts.join(", ")})`}var count=(n,one)=>`${n} ${one}${n===1?"":"s"}`;function lintCell(report){let lint=report.verification.lint??[];if(!lint.length)return"";let tools=status=>lint.filter(l=>l.status===status).map(l=>l.tool).join(", ");return tools("failed")?` \xB7 \u274C lint fails (${tools("failed")})`:tools("pre-existing")?` \xB7 \u26A0\uFE0F lint was already failing (${tools("pre-existing")})`:` \xB7 lint clean (${tools("passed")})`}function testsRow(report){let all=report.verification.tests,names=ts16=>ts16.flatMap(t=>t.covers??[t.workspace]).map(w=>w==="."?"the repository":`\`${basename4(w)}\``).join(" or "),failed=all.filter(t=>["failed","timeout"].includes(t.status)&&!t.preexisting);if(failed.length)return`\u274C ${failed.length} failed or timed out`;let missing=all.filter(t=>t.status==="missing"),passed=all.filter(t=>t.status==="passed"),preexisting=all.filter(t=>t.preexisting),before=preexisting.length?` \xB7 \u26A0\uFE0F ${names(preexisting)}: ${(()=>{let files=preexisting.flatMap(t=>t.preexisting??[]).filter(f=>f!=="*");return files.length?count(files.length,"test file"):"the run"})()} already failing before the change`:"";if(preexisting.length&&!passed.length)return`\u26A0\uFE0F ${names(preexisting)}: ${preexisting.flatMap(t=>t.preexisting??[]).filter(f=>f!=="*").length||"the run"} already failing before the change; nothing else ran`.replace(/: (\d+) already/,(_,n)=>`: ${count(Number(n),"test file")} already`);if(!all.length)return"\u26A0\uFE0F no tests ran";if(!passed.length)return missing.every(t=>!t.scope)?`\u26A0\uFE0F no test script in ${names(missing)}`:`\u26A0\uFE0F no tests ran: ${missing[0]?.command?"none relate to the affected files":`no test script or runner configuration for ${names(missing)}`}`;let counted=passed.filter(t=>t.summary),parts=counted.map(t=>/^(\d+) tests? in (\d+) files?$/.exec(t.summary??"")),total=parts.every(m=>m!==null)?`${count(parts.reduce((n,m)=>n+Number(m?.[1]),0),"test")} in ${count(parts.reduce((n,m)=>n+Number(m?.[2]),0),"file")}`:counted.map(t=>t.summary).join(" + "),what=counted.length===passed.length?`${total} passed`:`${count(passed.length,"workspace")} passed`,scopes=[...new Set(passed.map(t=>t.scope).filter(Boolean))],relatedCounts=passed.map(t=>/tests related to/.test(t.scope??"")?/^(\d+) tests?/.exec(t.summary??"")?.[1]:void 0),related2=relatedCounts.every(n=>n!==void 0)?relatedCounts.reduce((sum,n)=>sum+Number(n),0):void 0,skipped=all.reduce((n,t)=>n+(t.notRun?.files??0),0),left=skipped?` \xB7 \u26A0\uFE0F ${count(skipped,"integration test file")} not run`:"",retried=passed.flatMap(t=>t.retried??[]),rerun=retried.length?` \xB7 ${count(retried.length,"unrelated test")} failed once and passed on rerun`:"";return related2!==void 0?`\u2705 ${related2} related ${skipped?"unit ":""}test${related2===1?"":"s"} passed${rerun}${left}${before}${missing.length?` \xB7 \u26A0\uFE0F no tests for ${names(missing)}`:""}`:`\u2705 ${what}${scopes.length===1?` \xB7 ${scopes[0]}`:""}${rerun}${left}${before}${missing.length?` \xB7 \u26A0\uFE0F no tests for ${names(missing)}`:""}`}var sentenceCase=s=>s.charAt(0).toUpperCase()+s.slice(1);function apiChangeSummary(c){let changes=count(c.total,"API change");if(c.total===0)return"no API changes";let more=c.resources?` \xB7 ${c.resources.total} touch resources you use (${c.resources.breaking} breaking)`:"";if(c.relevant>0)return`${c.relevant} of ${changes} affect${c.relevant===1?"s":""} your code${more}`;let nature=c.breaking===0?c.total===1?"additive":"all additive":`${c.breaking} breaking for surfaces you do not use`;return`${changes}, none affect${c.total===1?"s":""} your code, ${nature}`}function summaryCells(report){let c=fixCounts(report),risk=migrationRisk(report),bs=schemas(report),identical=bs.filter(b=>!unchecked(b)&&!differs(b)).length,tests=`${testsRow(report)}${lintCell(report)}`,changes=report.sites.length?`${count(report.sites.length,"site")} in ${new Set(report.sites.flatMap(s=>[s.finding.usage.file,...s.editedFiles??[]])).size} file${new Set(report.sites.flatMap(s=>[s.finding.usage.file,...s.editedFiles??[]])).size===1?"":"s"}${report.verificationPending?" \xB7 analysis only":` \xB7 ${BY.ruleDone(c.mechanical)} \xB7 ${BY.agentDone(c.agent)}${c.manual?` \xB7 ${c.manual} manual`:""}`}`:"none: versions and lockfile only",messages=bs.flatMap(b=>b.messageChecks??[]).filter(c2=>c2.status!=="default"),messageSummary=messages.length?` \xB7 ${messages.filter(c2=>c2.status==="identical").length}/${messages.length} custom-message assertions`:"",behavior=bs.length?`${bs.some(differs)?"\u26A0\uFE0F":"\u2705"} ${count(identical,"schema")} identical${bs.filter(unchecked).length?` \xB7 ${bs.filter(unchecked).length} not checked`:""}${bs.some(differs)?` \xB7 ${bs.filter(differs).length} with differences`:""}${messageSummary}`:report.apiChanges?`${report.apiChanges.relevant?"\u26A0\uFE0F":"\u2705"} ${apiChangeSummary(report.apiChanges)}`:report.mode==="pin"?`\u2705 unchanged: \`${report.apiVersion}\` is what the installed SDK already defaults to`:"\u26A0\uFE0F not checked";return{risk:`${risk.level}: ${cell(risk.reason)}`,changes,types:report.verificationPending?"\u26A0\uFE0F verification pending":report.verification.typesUnverified?"\u26A0\uFE0F not verified (type resolution failed)":`${report.verification.newErrors.length?"\u274C":"\u2705"} ${count(report.verification.target.length,"error")} ${report.mode==="pin"?"before":"after the bump"} \u2192 ${report.verification.after.length}${report.verification.baseline.length?` (${report.verification.baseline.length} pre-existing)`:""}`,behavior,tests:cell(report.verificationPending?"\u26A0\uFE0F not run":tests)}}function summaryRows(report){let c=summaryCells(report);return["| | |","|---|---|",`| **Risk** | ${c.risk} |`,`| **Changes** | ${c.changes} |`,`| **Types** | ${c.types} |`,`| **Behavior** | ${c.behavior} |`,`| **Tests** | ${c.tests} |`]}var heading=(g,report,i)=>{let sources=[...new Set(g.sites.map(s=>s.outcome))].map(source=>source==="mechanical"?BY.ruleDoneTag:source==="agent"?BY.agentDoneTag:"manual").sort();return`**${i+1}. ${description(g,report).title}** \xB7 ${g.edits.length!==g.sites.length?`${g.edits.length} fix${g.edits.length===1?"":"es"}, ${count(g.sites.length,"error")}`:`${g.sites.length} site${g.sites.length===1?"":"s"}`} \xB7 ${sources.join(" + ")}`},collapse=(label,lines)=>[`<details><summary>${label}</summary>`,"",...lines,"","</details>"],PR_BODY_BUDGET=6e4,droppable=(rank,block,what)=>({kind:"text",text:block.join(`
|
|
279
|
+
`)[0]??"";if(code===2305||code===2724||code===2614){let m=/has no exported member(?: named)? '([^']+)'/.exec(message);return m?`${m[1]} is no longer exported`:void 0}if(code===2322){let m=/^Type '(.+?)' is not assignable to type '(.+?)'\.?$/.exec(message);if(!m)return;let name=/^\s*(?:[\w$.]+\.)?([\w$]+)\s*[:=](?!=)/.exec(f.usage.snippet)?.[1];return name?`${name} no longer accepts a ${typeOf(m[1])} (expects ${typeOf(m[2])})`:`A ${typeOf(m[1])} no longer satisfies ${typeOf(m[2])}`}if(code===2345){let m=/^Argument of type '(.+?)' is not assignable to parameter of type '(.+?)'\.?$/.exec(message);return m?`An argument of type ${typeOf(m[1])} no longer matches ${typeOf(m[2])}`:void 0}}function ruleTitle(rule,zodTypeDef=!1){return rule==="types"?zodTypeDef?"`ZodTypeDef` removed":"Schema generics":RULE_TITLES[rule]?.title}function groups(report){let result=new Map;for(let site2 of report.sites){let parent=site2.resolvedBy?report.sites.find(s=>siteKey(s)===site2.resolvedBy):folded(site2)?report.sites.find(s=>s.outcome==="agent"&&!folded(s)&&s.finding.usage.file===site2.finding.usage.file):void 0,rule=changeRule(report,parent??site2),key=rule,group=result.get(key)??{rule,outcome:site2.outcome,sites:[],edits:[]};(site2.outcome==="manual"||site2.outcome==="agent"&&group.outcome==="mechanical")&&(group.outcome=site2.outcome),group.sites.push(site2),folded(site2)||group.edits.push(site2),result.set(key,group)}return[...result.values()].sort((a,b)=>+(a.outcome!=="mechanical")-+(b.outcome!=="mechanical")||a.rule.localeCompare(b.rule))}function description(g,report){if(g.outcome==="manual")return{title:g.rule,summary:`Manual migration required: ${sentence(g.sites.find(s=>s.outcome==="manual")?.reason??"review the remaining sites.")}`};let edited=g.edits[0],patch=edited?.diff??edited?.attempts?.findLast(a=>a.outcome==="accepted")?.diff??"",zodTypeDef=g.sites.some(s=>/ZodTypeDef/.test(`${s.finding.usage.compileError??""} ${s.finding.usage.snippet} ${s.diff??""} ${s.attempts?.map(a=>a.diff??"").join(" ")??""}`)),declaration=edited?basename4(edited.finding.usage.file).replace(/\.[cm]?[jt]sx?$/,""):void 0,generic=/^\+.*?(ZodType<[^>\n]+>)/m.exec(patch)?.[1]??"ZodType<Output, Input>";return{"error-params":{title:ruleTitle("error-params"),summary:"`required_error` and `invalid_type_error` were replaced by `error`. "+(schemas(report).some(b=>b.messageChecks?.some(c=>c.status==="different")||b.differences.some(d=>/message|issue/.test(d.kind)))?"Message differences need review.":"Messages are unchanged."),note:"Returning `undefined` keeps zod's default message for wrong types, exactly like v3."},"string-format":{title:ruleTitle("string-format"),summary:"String format chains now use top-level factories, preserving arguments and subsequent checks."},ip:{title:ruleTitle("ip"),summary:g.edits.every(s=>/z\.union/.test(s.diff??"")&&/ipv4/.test(s.diff??"")&&/ipv6/.test(s.diff??""))?"Now `z.union([z.ipv4(), z.ipv6()])`, which accepts both families like before.":"Uses the target IP factories; review the accepted patch for address-family semantics."},types:{title:ruleTitle("types",zodTypeDef),summary:zodTypeDef&&declaration?`\`${declaration}\` now types schemas as \`${generic}\`, preserving the input/output contract.`:"Schema declarations use the target output/input generics; no new type errors were introduced."},"api-version":{title:ruleTitle("api-version"),summary:additiveBumpOnly(report)?"API literals now match the target SDK. No changelog entry between the two API versions affects this code, and none is breaking.":"API literals now match the target SDK; types compile, but response and webhook compatibility needs review."},"default-messages":{title:ruleTitle("default-messages"),summary:"Zod 4 words its default messages differently. Assertions that the migrated code made fail now match the new text; the tests pass again."},"subscription-period":{title:ruleTitle("subscription-period"),summary:"One shared helper takes the item that ends last and returns start and end from that same item (undefined with no items), preserving the single-item values; multi-item and no-item behavior needs your decision."},"api-version-unpinned":{title:"Stripe API version unpinned",summary:`A client created without \`apiVersion\` spoke the SDK's default; it now says \`${report.apiChanges?.to??"the target version"}\` explicitly, the version the new SDK's types describe. The next SDK bump cannot move it silently.`},"fixture-cast":{title:ruleTitle("fixture-cast"),summary:"Test fixtures that were already cast straight to an SDK type no longer overlap with it, so the same cast now goes through `unknown`. No application code and no new assertion: the tests decide whether the fixtures still hold."},"api-version-pin":{title:ruleTitle("api-version-pin"),summary:`\`apiVersion: '${report.apiVersion??""}'\` added to a client that relied on the SDK default. Identical behaviour: this is the version the installed SDK already speaks. The next SDK bump no longer changes it silently.`}}[g.rule]??{title:/^TS\d+$/.test(g.rule)?diagnosticTitle(Number(g.rule.slice(2)),g.sites.map(s=>s.finding)):g.rule,summary:`${sentence(g.edits[0]?.attempts?.findLast(a=>a.outcome==="accepted")?.explanation??g.edits[0]?.reason??"Migration recorded.")} ${report.verification.passed?"No new type errors.":"Verification is incomplete."}`}}function schemas(report){return(report.behavior??[]).filter(b=>b.schema!=="(reported site)")}function differs(b){return b.differences.length>0||!b.skipped&&b.identical!==b.inputs||!!b.messageChecks?.some(c=>c.status==="different")}function unchecked(b){return!!b.skipped||!b.inputs||!!b.messageChecks?.some(c=>c.status==="skipped")}function additiveBumpOnly(report){let c=report.apiChanges;return report.package==="stripe"&&!!c&&c.relevant===0&&c.breaking===0&&groups(report).every(g=>g.rule==="api-version")}function migrationRisk(report){if(report.verificationPending)return{level:"High",reason:"verification pending"};if(report.mode==="pin"&&report.verification.passed&&!report.sites.some(s=>s.outcome==="manual"))return{level:"Low",reason:"no behaviour change: the explicit pin equals the SDK default"};let g=groups(report),high=[...report.peerConflicts?.length?["peer compatibility is not verified"]:[],...report.sites.some(s=>s.outcome==="manual")?["manual sites left"]:[],...!report.verification.passed||report.verification.newErrors.length||report.sites.some(s=>s.finding.severity==="unverified")?["unverified sites"]:[],...schemas(report).some(differs)||report.package==="stripe"&&g.some(x=>["api-version","subscription-period"].includes(x.rule))&&!additiveBumpOnly(report)?["behavior changes"]:[]];if(high.length)return{level:"High",reason:high.join("; ")};if(report.sites.length===0&&report.verification.tests.length>0&&report.verification.tests.every(t=>t.status==="passed"))return{level:"Low",reason:"no code changes; types and tests verified"};if(report.tier==="generic")return{level:"Medium",reason:`no migration pack for ${report.package}: agent edits verified by the compiler only`};if(additiveBumpOnly(report))return{level:"Medium",reason:"billing path; API version bump with additive changes only"};if(report.package==="zod"&&report.sites.some(s=>/(?:schemas|validation|auth|webhook|instance)/i.test(s.finding.usage.file)))return{level:"Medium",reason:`request validation${validationScopes(report).length?` in ${scopeList(report)}`:""}`};let medium=[...report.sites.some(s=>s.outcome==="agent")?["agent edits"]:[],...report.sites.some(s=>/(?:validation|auth|billing|payment|webhook)/i.test(s.finding.usage.file))?["sensitive paths"]:[],...!report.verification.tests.length||report.verification.tests.some(t=>t.status==="missing")?["no tests"]:[],...schemas(report).some(unchecked)?["unchecked schemas"]:[]];return medium.length?{level:"Medium",reason:medium.join("; ")}:{level:"Low",reason:"rule-only; all verified"}}function validationScopes(report){let paths=report.sites.flatMap(s=>[s.finding.usage.file,...s.editedFiles??[]]).join(" ");return[.../auth|user\.ts/i.test(paths)?["auth"]:[],.../instance/i.test(paths)?["instances"]:[],.../webhook/i.test(paths)?["webhooks"]:[]]}var listed=items=>items.length<2?items.join(""):`${items.slice(0,-1).join(", ")} and ${items.at(-1)}`,scopeList=report=>listed(validationScopes(report));function errorSummary(diagnostics2,what){let byKind=new Map;for(let d of diagnostics2){let missing=missingPackages(d)[0],kind=missing?` missing ${missing==="@types/node"?"Node types":`\`${missing}\``}`:`|${d.code}`,entry=byKind.get(kind)??{codes:new Set,n:0};entry.codes.add(d.code),entry.n++,byKind.set(kind,entry)}let parts=[...byKind].sort((a,b)=>b[1].n-a[1].n).map(([kind,{codes,n}])=>`${n} \xD7 ${[...codes].map(c=>`TS${c}`).join("/")}${kind.startsWith("|")?"":kind}`);return`${count(diagnostics2.length,what)} (${parts.join(", ")})`}var count=(n,one)=>`${n} ${one}${n===1?"":"s"}`;function lintCell(report){let lint=report.verification.lint??[];if(!lint.length)return"";let tools=status=>lint.filter(l=>l.status===status).map(l=>l.tool).join(", ");return tools("failed")?` \xB7 \u274C lint fails (${tools("failed")})`:tools("pre-existing")?` \xB7 \u26A0\uFE0F lint was already failing (${tools("pre-existing")})`:` \xB7 lint clean (${tools("passed")})`}function testsRow(report){let all=report.verification.tests,names=ts16=>ts16.flatMap(t=>t.covers??[t.workspace]).map(w=>w==="."?"the repository":`\`${basename4(w)}\``).join(" or "),failed=all.filter(t=>["failed","timeout"].includes(t.status)&&!t.preexisting);if(failed.length)return`\u274C ${failed.length} failed or timed out`;let missing=all.filter(t=>t.status==="missing"),passed=all.filter(t=>t.status==="passed"),preexisting=all.filter(t=>t.preexisting),before=preexisting.length?` \xB7 \u26A0\uFE0F ${names(preexisting)}: ${(()=>{let files=preexisting.flatMap(t=>t.preexisting??[]).filter(f=>f!=="*");return files.length?count(files.length,"test file"):"the run"})()} already failing before the change`:"";if(preexisting.length&&!passed.length)return`\u26A0\uFE0F ${names(preexisting)}: ${preexisting.flatMap(t=>t.preexisting??[]).filter(f=>f!=="*").length||"the run"} already failing before the change; nothing else ran`.replace(/: (\d+) already/,(_,n)=>`: ${count(Number(n),"test file")} already`);if(!all.length)return"\u26A0\uFE0F no tests ran";if(!passed.length)return missing.every(t=>!t.scope)?`\u26A0\uFE0F no test script in ${names(missing)}`:`\u26A0\uFE0F no tests ran: ${missing[0]?.command?"none relate to the affected files":`no test script or runner configuration for ${names(missing)}`}`;let counted=passed.filter(t=>t.summary),parts=counted.map(t=>/^(\d+) tests? in (\d+) files?$/.exec(t.summary??"")),total=parts.every(m=>m!==null)?`${count(parts.reduce((n,m)=>n+Number(m?.[1]),0),"test")} in ${count(parts.reduce((n,m)=>n+Number(m?.[2]),0),"file")}`:counted.map(t=>t.summary).join(" + "),what=counted.length===passed.length?`${total} passed`:`${count(passed.length,"workspace")} passed`,scopes=[...new Set(passed.map(t=>t.scope).filter(Boolean))],relatedCounts=passed.map(t=>/tests related to/.test(t.scope??"")?/^(\d+) tests?/.exec(t.summary??"")?.[1]:void 0),related2=relatedCounts.every(n=>n!==void 0)?relatedCounts.reduce((sum,n)=>sum+Number(n),0):void 0,skipped=all.reduce((n,t)=>n+(t.notRun?.files??0),0),left=skipped?` \xB7 \u26A0\uFE0F ${count(skipped,"integration test file")} not run`:"",retried=passed.flatMap(t=>t.retried??[]),rerun=retried.length?` \xB7 ${count(retried.length,"unrelated test")} failed once and passed on rerun`:"";return related2!==void 0?`\u2705 ${related2} related ${skipped?"unit ":""}test${related2===1?"":"s"} passed${rerun}${left}${before}${missing.length?` \xB7 \u26A0\uFE0F no tests for ${names(missing)}`:""}`:`\u2705 ${what}${scopes.length===1?` \xB7 ${scopes[0]}`:""}${rerun}${left}${before}${missing.length?` \xB7 \u26A0\uFE0F no tests for ${names(missing)}`:""}`}var sentenceCase=s=>s.charAt(0).toUpperCase()+s.slice(1);function apiChangeSummary(c){let changes=count(c.total,"API change");if(c.total===0)return"no API changes";let more=c.resources?` \xB7 ${c.resources.total} touch resources you use (${c.resources.breaking} breaking)`:"";if(c.relevant>0)return`${c.relevant} of ${changes} affect${c.relevant===1?"s":""} your code${more}`;let nature=c.breaking===0?c.total===1?"additive":"all additive":`${c.breaking} breaking for surfaces you do not use`;return`${changes}, none affect${c.total===1?"s":""} your code, ${nature}`}function summaryCells(report){let c=fixCounts(report),risk=migrationRisk(report),bs=schemas(report),identical=bs.filter(b=>!unchecked(b)&&!differs(b)).length,tests=`${testsRow(report)}${lintCell(report)}`,changes=report.sites.length?`${count(report.sites.length,"site")} in ${new Set(report.sites.flatMap(s=>[s.finding.usage.file,...s.editedFiles??[]])).size} file${new Set(report.sites.flatMap(s=>[s.finding.usage.file,...s.editedFiles??[]])).size===1?"":"s"}${report.verificationPending?" \xB7 analysis only":` \xB7 ${BY.ruleDone(c.mechanical)} \xB7 ${BY.agentDone(c.agent)}${c.manual?` \xB7 ${c.manual} manual`:""}`}`:"none: versions and lockfile only",changeSummary=report.changedFiles?`${count(report.sites.length,"site")} \xB7 ${count(report.changedFiles.length,"changed file")} \xB7 ${BY.ruleDone(c.mechanical)} \xB7 ${BY.agentDone(c.agent)}${c.manual?` \xB7 ${c.manual} manual`:""}`:changes,messages=bs.flatMap(b=>b.messageChecks??[]).filter(c2=>c2.status!=="default"),messageSummary=messages.length?` \xB7 ${messages.filter(c2=>c2.status==="identical").length}/${messages.length} custom-message assertions`:"",behavior=bs.length?`${bs.some(differs)?"\u26A0\uFE0F":"\u2705"} ${count(identical,"schema")} identical${bs.filter(unchecked).length?` \xB7 ${bs.filter(unchecked).length} not checked`:""}${bs.some(differs)?` \xB7 ${bs.filter(differs).length} with differences`:""}${messageSummary}`:report.apiChanges?`${report.apiChanges.relevant?"\u26A0\uFE0F":"\u2705"} ${apiChangeSummary(report.apiChanges)}`:report.mode==="pin"?`\u2705 unchanged: \`${report.apiVersion}\` is what the installed SDK already defaults to`:"\u26A0\uFE0F not checked";return{risk:`${risk.level}: ${cell(risk.reason)}`,changes:changeSummary,types:report.verificationPending?"\u26A0\uFE0F verification pending":report.verification.typesUnverified?"\u26A0\uFE0F not verified (type resolution failed)":`${report.verification.newErrors.length?"\u274C":"\u2705"} ${count(report.verification.target.length,"error")} ${report.mode==="pin"?"before":"after the bump"} \u2192 ${report.verification.after.length}${report.verification.baseline.length?` (${report.verification.baseline.length} pre-existing)`:""}`,behavior,tests:cell(report.verificationPending?"\u26A0\uFE0F not run":tests)}}function summaryRows(report){let c=summaryCells(report);return["| | |","|---|---|",`| **Risk** | ${c.risk} |`,`| **Changes** | ${c.changes} |`,`| **Types** | ${c.types} |`,`| **Behavior** | ${c.behavior} |`,`| **Tests** | ${c.tests} |`]}var heading=(g,report,i)=>{let sources=[...new Set(g.sites.map(s=>s.outcome))].map(source=>source==="mechanical"?BY.ruleDoneTag:source==="agent"?BY.agentDoneTag:"manual").sort();return`**${i+1}. ${description(g,report).title}** \xB7 ${g.edits.length!==g.sites.length?`${g.edits.length} fix${g.edits.length===1?"":"es"}, ${count(g.sites.length,"error")}`:`${g.sites.length} site${g.sites.length===1?"":"s"}`} \xB7 ${sources.join(" + ")}`},collapse=(label,lines)=>[`<details><summary>${label}</summary>`,"",...lines,"","</details>"],PR_BODY_BUDGET=6e4,droppable=(rank,block,what)=>({kind:"text",text:block.join(`
|
|
279
280
|
`),rank,alt:`_${what} left out: this description is at GitHub's size limit._`}),withCommand=text=>text.replace(/\bnpx uptide(?!@)/g,UPTIDE_COMMAND).replace(/`uptide (fix|pr|pr-body|verify|check|clean)\b/g,`\`${UPTIDE_COMMAND} $1`);function renderMigration(report,mode="full",budget){let from=report.from??([...new Set(report.sites.map(s=>s.finding.change.from))].join(", ")||"unknown"),lines=report.mode==="pin"?[`## Pin the Stripe API version to ${report.apiVersion}`,""]:[`## Upgrade ${report.package} ${from} \u2192 ${report.target}`,""];if(mode==="full"&&report.mode==="pin"){let manual=report.sites.filter(s=>s.outcome==="manual").length;lines.push(`**${report.verification.passed&&!manual?"Ready for review.":"Review required before merging."}** stripe stays at ${report.target}; each client created without \`apiVersion\` now says \`${report.apiVersion}\`, the version that SDK already defaults to. No behaviour change.${manual?` ${manual} client${manual===1?"":"s"} build${manual===1?"s":""} options elsewhere and need${manual===1?"s":""} the pin by hand.`:""}`,"")}else if(mode==="full"){let bs=schemas(report),inputs=bs.filter(b=>!unchecked(b)&&!differs(b)).reduce((n,b)=>n+b.inputs,0),ready=report.verification.passed&&migrationRisk(report).level!=="High"&&!report.sites.some(s=>s.outcome==="manual")&&!bs.some(differs)&&!(report.package==="stripe"&&groups(report).some(g=>["api-version","subscription-period"].includes(g.rule))&&!additiveBumpOnly(report)),workspaces=[...new Set(report.verification.tests.flatMap(t=>t.covers??[t.workspace]))].filter(w=>w!==".").map(w=>`\`${basename4(w)}\``),typeVerdict=report.verification.newErrors.length?"New type errors remain.":report.verification.after.length?"No new type errors; pre-existing errors remain.":inputs?`Types compile, and the checked schemas behave the same as before on ${inputs.toLocaleString("en-US")} sampled inputs.`:additiveBumpOnly(report)?"Types compile.":!report.sites.length&&migrationRisk(report).level==="Low"?"Types compile and the tests pass.":"Types compile; runtime behavior needs review.",what=report.sites.length?`The code was migrated to ${report.package} ${from.split(".")[0]===report.target.split(".")[0]?report.target:report.target.split(".")[0]}${workspaces.length?` in ${listed(workspaces)}`:""}.`:"No code changes were needed; only versions and the lockfile changed.";lines.push(`**${ready?"Ready for review.":"Review required before merging."}** ${what} ${typeVerdict}${report.apiChanges?` ${sentenceCase(apiChangeSummary(report.apiChanges))} between ${report.apiChanges.from} and ${report.apiChanges.to}.`:""}`,"")}report.companions?.length&&lines.push(`Upgraded with ${report.package}, so the install stays consistent:`,"",...report.companions.map(c=>`- \`${c.name}\` ${c.from} \u2192 ${c.to} (${c.reason})`),""),report.tier==="generic"&&report.sites.some(s=>s.outcome==="agent")&&lines.push(`> ${GENERIC_NOTE(report.package)}`,""),report.llm.disabled&&lines.push("Assisted fixes disabled (--no-llm).",""),lines.push(...summaryRows(report),""),report.lockfile?.peerReresolved?.length&&lines.push("","### Re-resolved because a peer changed","",...report.lockfile.peerReresolved.map(p=>`- \`${cell(p.name)}\` ${cell(p.from)} \u2192 ${cell(p.to)}; peers on ${p.peers.map(name=>`\`${cell(name)}\``).join(", ")}. Existing ranges: ${Object.entries(p.ranges).map(([source,range])=>`\`${cell(source)}: ${cell(range)}\``).join(", ")}.`));let housekeeping=report.lockfile?.housekeeping;if(mode==="full"&&housekeeping){let label=`Lockfile housekeeping \xB7 ${count(housekeeping.deduped.length,"dedupe move")} \xB7 ${count(housekeeping.metadata.length,"metadata-only change")}`;lines.push(droppable(2,collapse(label,["Outside resolutions retain the same package name, version and integrity; execution and platform fields are unchanged.","",...housekeeping.deduped.map(d=>`- \`${cell(d.name)}@${cell(d.version)}\`: \`${cell(d.from)}\` \u2192 \`${cell(d.to)}\`.`),...housekeeping.metadata.map(key=>`- Metadata only: \`${cell(key)}\`.`)]),label),"")}if(groups(report).length&&lines.push("### What changed",""),groups(report).forEach((g,i)=>{if(lines.push(heading(g,report,i)),mode==="compact")return;let d=description(g,report);lines.push(d.summary);let representative=g.edits.find(s=>g.rule==="error-params"&&/Field 'email' is required/.test(s.diff??""))??g.edits.find(s=>s.diff||s.attempts?.some(a=>a.outcome==="accepted"&&a.diff)),diff=representative?.diff??representative?.attempts?.findLast(a=>a.outcome==="accepted")?.diff,files=new Map;for(let s of g.sites)files.set(s.finding.usage.file,(files.get(s.finding.usage.file)??0)+1);let detail=[...diff?["```diff",diff.trim(),"```"]:["Representative diff was not retained in this stored run."],...d.note?["",d.note]:[],"",...[...files].map(([f,n])=>`- \`${f}\` (${n})`)];for(let s of g.edits){let attempts=s.attempts??[];for(let a of attempts)a.diff&&(s!==representative||a.outcome!=="accepted")&&detail.push("","```diff",a.diff.trim(),"```"),detail.push("",`**${s.finding.usage.file}:${s.finding.usage.line} \xB7 attempt ${a.attempt} (${a.outcome})**`,"",a.explanation.replace(/([^\n])\n(?=\d+\. |[-*] )/g,`$1
|
|
280
281
|
|
|
281
282
|
`),"",`Diagnostics: ${a.before.length} \u2192 ${a.after.length}.`);!attempts.length&&g.outcome==="manual"&&detail.push("",s.reason)}let label=g.outcome==="mechanical"?"Example and files":"Diff and reasoning";lines.push(droppable(1,collapse(label,detail),label),"")}),report.peerConflicts?.length&&lines.push(must(["### Peer risks","",...groupPeerBlockers(report.peerConflicts).map(p=>`- ${peerDescription(p)}. ${p.allowed?"Explicitly allowed with `--allow-peer`; the manager override is in package.json.":"Not overridden; the package manager may warn."} Runtime compatibility needs review.`)].join(`
|
|
282
283
|
`)),""),mode==="compact")return`${lines.filter(l=>typeof l=="string").join(`
|
|
283
284
|
`).trimEnd()}
|
|
284
|
-
`;let review=[],notChecked=schemas(report).filter(unchecked);notChecked.length&&review.push(`- ${listed(notChecked.map(b=>`\`${b.schema}\``))}: behavior not checked${notChecked.every(b=>b.skipped?.includes("runtime import"))?" (they import another schema file)":""}.`);for(let b of schemas(report).filter(differs)){for(let d of b.differences)review.push(`- \`${b.schema}\`: ${d.kind}; minimal example \`${JSON.stringify(d.input)}\` \u2192 before \`${JSON.stringify(d.before)}\`, after \`${JSON.stringify(d.after)}\`.`);for(let c of b.messageChecks?.filter(c2=>c2.status==="different")??[])review.push(`- \`${b.schema}\`: ${c.input} at \`${c.path.join(".")||"(root)"}\`; message ${JSON.stringify(c.before)} \u2192 ${JSON.stringify(c.after)}.`);!b.differences.length&&!b.messageChecks?.some(c=>c.status==="different")&&review.push(`- \`${b.schema}\`: ${b.inputs-b.identical} sampled inputs differ; no example was retained.`)}report.package==="stripe"&&!report.behavior&&review.push(additiveBumpOnly(report)?"- Check the webhook endpoint's API version in the Stripe Dashboard before deploying.":"- Runtime behavior was not checked; smoke-test billing and webhook responses against the target API version."),(!report.verification.tests.length||report.verification.tests.some(t=>t.status==="missing"))&&review.push(`- ${report.verification.tests.every(t=>t.status==="missing")?"No tests ran.":"Some workspaces have no tests."} ${report.package==="zod"?`Smoke-test the routes ${scopeList(report)?`behind ${scopeList(report)}`:"that use the changed schemas"} before merging.`:report.package==="stripe"?"Add coverage for the changed billing and webhook flows before merging.":"Exercise the changed code by hand before merging."}`);for(let t of report.verification.tests.filter(t2=>["failed","timeout"].includes(t2.status)))review.push(t.preexisting?`- Tests in \`${basename4(t.workspace)}\` were failing before this change (${t.preexisting[0]==="*"?"the whole run":t.preexisting.map(f=>`\`${basename4(f)}\``).join(", ")}); not caused here, but a green suite would verify more.`:`- Tests in \`${basename4(t.workspace)}\` ${t.status}; fix or rerun before merging.`);for(let t of report.verification.tests.filter(t2=>t2.notRun&&t2.notRun.files>0))review.push(`- ${count(t.notRun?.files??0,"integration test file")} not run (need ${t.notRun?.needs.join("/")}). Run with \`--with-services\` to include them.`);for(let l of(report.verification.lint??[]).filter(l2=>l2.status==="failed"))review.push(`- The repository's lint (${l.tool}) fails on the edited files; fix it before merging (see verification details).`);report.llm.unreportedCostUsd&&review.push(`- Unreported API usage: $${report.llm.unreportedCostUsd.toFixed(2)} reserved against the budget (actual spend unknown).`),report.llm.costLimit&&review.push(`- The agent stopped at the cost limit of $${report.llm.costLimit.limitUsd.toFixed(2)} (\`--max-cost\`): ${count(report.llm.costLimit.notAttempted,"site")} not completed. Run again with a higher limit to continue.`);for(let s of report.sites.filter(s2=>s2.outcome==="manual"))review.push(`- Manual: \`${basename4(s.finding.usage.file)}:${s.finding.usage.line}\` \u2014 ${sentence(s.reason)}`);report.verification.newErrors.length&&review.push(`- Resolve ${report.verification.newErrors.length} new type errors before merging (see verification details).`),!report.verification.passed&&!report.verification.newErrors.length&&!report.verification.tests.some(t=>["failed","timeout"].includes(t.status))&&review.push("- Verification is incomplete; resolve the recorded run notes before merging."),review.length&&lines.push("### Worth a look","",...review,"");let decisions=[];return report.package==="stripe"&&groups(report).some(g=>g.rule==="subscription-period")&&!(report.decisions??[]).some(d=>/billing period now comes from one item/.test(d))&&decisions.push("- Confirm the latest-ending item is the desired billing rule: items ending `[100, 200]` \u2192 that item's `{ start, end }`; a single item is unchanged.",'- Confirm what no items means (Stripe never returns that): the webhook keeps fetching the full subscription, API routes throw "subscription has no items". Check pagination: only returned `items.data` are considered.'),report.package==="stripe"&&groups(report).some(g=>g.rule==="api-version")&&!additiveBumpOnly(report)&&decisions.push("- Coordinate the API-version rollout with dashboard webhook endpoints and other services."),decisions.push(...report.decisions??[]),decisions.length&&lines.push("### Decisions for you","",...decisions,""),lines.push("<details><summary>Verification details</summary>","",...verificationDetails(report),"","</details>","",...collapse("Run details",[`Uptide ${report.uptideVersion??"version not retained"} \xB7 ${report.llm.disabled?"agent disabled (--no-llm)":report.llm.model??"agent unavailable"} \xB7 ${(report.llm.inputTokens/1e3).toFixed(1)}k/${(report.llm.outputTokens/1e3).toFixed(1)}k tokens \xB7 $${report.llm.costUsd.toFixed(2)} \xB7 ${Math.round(report.timingMs/6e4)} min`,"",`Uptide commit: \`${report.uptideCommit??"not retained"}\`${report.uptideDirty?" (working-tree changes)":""}`,`Branch: \`${report.branch}\``,...report.tier?[`Tier: ${report.tier} (${report.tier==="verified"?"a migration pack covers this upgrade":"no migration pack: agent edits verified by the compiler"})`]:[],...report.verifiedAt?[`Verified at: ${report.verifiedAt}${report.verificationTimingMs===void 0?"":` \xB7 ${(report.verificationTimingMs/1e3).toFixed(2)}s`}`]:[],...report.head?[`Verified commit: \`${report.head}\``]:[]]),""),withCommand(fitPieces(lines.map(part=>typeof part=="string"?must(part):part),budget))}function verificationDetails(report){let v=report.verification,bs=schemas(report),checks=bs.flatMap(b=>b.messageChecks??[]).filter(c=>c.status!=="default"),lines=[`Type errors: baseline ${v.baseline.length}; target ${v.target.length}; after ${v.after.length}; ${v.newErrors.length} new. Verification: ${v.passed?"PASS":"FAIL"}.${v.typesUnverified?` Types not verified (type resolution failed): ${v.typesUnverified}.`:""}`,...report.generated?.length?["",...report.generated.map(g=>`Generated before the baseline: \`${g.command}\` in \`${g.workspace}\` \u2014 ${g.status==="generated"?"ok (no database contacted)":`${g.status}: ${(g.output??"").split(`
|
|
285
|
+
`;let review=[],notChecked=schemas(report).filter(unchecked);notChecked.length&&review.push(`- ${listed(notChecked.map(b=>`\`${b.schema}\``))}: behavior not checked${notChecked.every(b=>b.skipped?.includes("runtime import"))?" (they import another schema file)":""}.`);for(let b of schemas(report).filter(differs)){for(let d of b.differences)review.push(`- \`${b.schema}\`: ${d.kind}; minimal example \`${JSON.stringify(d.input)}\` \u2192 before \`${JSON.stringify(d.before)}\`, after \`${JSON.stringify(d.after)}\`.`);for(let c of b.messageChecks?.filter(c2=>c2.status==="different")??[])review.push(`- \`${b.schema}\`: ${c.input} at \`${c.path.join(".")||"(root)"}\`; message ${JSON.stringify(c.before)} \u2192 ${JSON.stringify(c.after)}.`);!b.differences.length&&!b.messageChecks?.some(c=>c.status==="different")&&review.push(`- \`${b.schema}\`: ${b.inputs-b.identical} sampled inputs differ; no example was retained.`)}report.package==="stripe"&&!report.behavior&&review.push(additiveBumpOnly(report)?"- Check the webhook endpoint's API version in the Stripe Dashboard before deploying.":"- Runtime behavior was not checked; smoke-test billing and webhook responses against the target API version."),(!report.verification.tests.length||report.verification.tests.some(t=>t.status==="missing"))&&review.push(`- ${report.verification.tests.every(t=>t.status==="missing")?"No tests ran.":"Some workspaces have no tests."} ${report.package==="zod"?`Smoke-test the routes ${scopeList(report)?`behind ${scopeList(report)}`:"that use the changed schemas"} before merging.`:report.package==="stripe"?"Add coverage for the changed billing and webhook flows before merging.":"Exercise the changed code by hand before merging."}`);for(let t of report.verification.tests.filter(t2=>["failed","timeout"].includes(t2.status)))review.push(t.preexisting?`- Tests in \`${basename4(t.workspace)}\` were failing before this change (${t.preexisting[0]==="*"?"the whole run":t.preexisting.map(f=>`\`${basename4(f)}\``).join(", ")}); not caused here, but a green suite would verify more.`:`- Tests in \`${basename4(t.workspace)}\` ${t.status}; fix or rerun before merging.`);for(let t of report.verification.tests.filter(t2=>t2.notRun&&t2.notRun.files>0))review.push(`- ${count(t.notRun?.files??0,"integration test file")} not run (need ${t.notRun?.needs.join("/")}). Run with \`--with-services\` to include them.`);for(let l of(report.verification.lint??[]).filter(l2=>l2.status==="failed"))review.push(`- The repository's lint (${l.tool}) fails on the edited files; fix it before merging (see verification details).`);report.llm.unreportedCostUsd&&review.push(`- Unreported API usage: $${report.llm.unreportedCostUsd.toFixed(2)} reserved against the budget (actual spend unknown).`),report.llm.costLimit&&review.push(`- The agent stopped at the cost limit of $${report.llm.costLimit.limitUsd.toFixed(2)} (\`--max-cost\`): ${count(report.llm.costLimit.notAttempted,"site")} not completed. Run again with a higher limit to continue.`);for(let s of report.sites.filter(s2=>s2.outcome==="manual"))review.push(`- Manual: \`${basename4(s.finding.usage.file)}:${s.finding.usage.line}\` \u2014 ${sentence(s.reason)}`);report.verification.newErrors.length&&review.push(`- Resolve ${report.verification.newErrors.length} new type errors before merging (see verification details).`),!report.verification.passed&&!report.verification.newErrors.length&&!report.verification.tests.some(t=>["failed","timeout"].includes(t.status))&&review.push("- Verification is incomplete; resolve the recorded run notes before merging."),review.length&&lines.push("### Worth a look","",...review,"");let decisions=[];return report.package==="stripe"&&groups(report).some(g=>g.rule==="subscription-period")&&!(report.decisions??[]).some(d=>/billing period now comes from one item/.test(d))&&decisions.push("- Confirm the latest-ending item is the desired billing rule: items ending `[100, 200]` \u2192 that item's `{ start, end }`; a single item is unchanged.",'- Confirm what no items means (Stripe never returns that): the webhook keeps fetching the full subscription, API routes throw "subscription has no items". Check pagination: only returned `items.data` are considered.'),report.package==="stripe"&&groups(report).some(g=>g.rule==="api-version")&&!additiveBumpOnly(report)&&decisions.push("- Coordinate the API-version rollout with dashboard webhook endpoints and other services."),decisions.push(...report.decisions??[]),decisions.length&&lines.push("### Decisions for you","",...decisions,""),lines.push("<details><summary>Verification details</summary>","",...verificationDetails(report),"","</details>","",...collapse("Run details",[`Uptide ${report.uptideVersion??"version not retained"} \xB7 ${report.llm.disabled?"agent disabled (--no-llm)":report.llm.model??"agent unavailable"} \xB7 ${(report.llm.inputTokens/1e3).toFixed(1)}k/${(report.llm.outputTokens/1e3).toFixed(1)}k tokens \xB7 $${report.llm.costUsd.toFixed(2)} \xB7 ${Math.round(report.timingMs/6e4)} min`,"",`Uptide commit: \`${report.uptideCommit??"not retained"}\`${report.uptideDirty?" (working-tree changes)":""}`,`Branch: \`${report.branch}\``,...report.tier?[`Tier: ${report.tier} (${report.tier==="verified"?"a migration pack covers this upgrade":"no migration pack: agent edits verified by the compiler"})`]:[],...report.verifiedAt?[`Verified at: ${report.verifiedAt}${report.verificationTimingMs===void 0?"":` \xB7 ${(report.verificationTimingMs/1e3).toFixed(2)}s`}`]:[],...report.head?[`Verified commit: \`${report.head}\``]:[],...report.verifiedTree?[`Verified tree: \`${report.verifiedTree}\``]:[]]),""),withCommand(fitPieces(lines.map(part=>typeof part=="string"?must(part):part),budget))}function verificationDetails(report){let v=report.verification,bs=schemas(report),checks=bs.flatMap(b=>b.messageChecks??[]).filter(c=>c.status!=="default"),lines=[`Type errors: baseline ${v.baseline.length}; target ${v.target.length}; after ${v.after.length}; ${v.newErrors.length} new. Verification: ${v.passed?"PASS":"FAIL"}.${v.typesUnverified?` Types not verified (type resolution failed): ${v.typesUnverified}.`:""}`,...report.generated?.length?["",...report.generated.map(g=>`Generated before the baseline: \`${g.command}\` in \`${g.workspace}\` \u2014 ${g.status==="generated"?"ok (no database contacted)":`${g.status}: ${(g.output??"").split(`
|
|
285
286
|
`).filter(Boolean).at(-1)??""}`}`)]:[],"","| Workspace | Baseline tests | Target tests |","|---|---|---|",...v.tests.map(t=>`| ${cell(t.workspace)} | ${v.baselineTests.find(b=>b.workspace===t.workspace)?.status??"not run"} | ${t.status} |`),...v.tests.some(t=>t.scope)?["",...v.tests.filter(t=>t.scope).map(t=>`- \`${t.workspace}\`: ${t.scope}${t.covers&&t.covers.join()!==t.workspace?`, covering ${t.covers.map(w=>`\`${w}\``).join(", ")}`:""}${t.command?` \u2014 \`${t.command}\``:""}${t.summary?` \u2014 ${t.summary} passed`:""}${t.retried?.length?` \u2014 failed once outside the affected files and passed on rerun: ${t.retried.map(f=>`\`${f}\``).join(", ")}`:""}${t.notRun?.files?` \u2014 ${count(t.notRun.files,"integration test file")} not run (need ${t.notRun.needs.join("/")})`:""}${t.services?` \u2014 ran against ${t.services.names.join(", ")}${t.services.targets.length?` (${t.services.targets.join("; ")})`:""}`:""}`)]:[]];v.formatted?.length&&lines.push("",`Formatted with ${v.formatted.join(", ")}: only the files this migration edited, in their own commit.`);for(let l of v.lint??[])lines.push("",`Lint (${l.tool}) on ${count(l.files,"edited file")}: ${l.status==="passed"?"passed":l.status==="pre-existing"?"fails, and failed on the same files before the migration":"FAILED"} \u2014 \`${l.command}\``),l.status!=="passed"&&l.output&&lines.push(droppable(5,["```text",l.output.trim(),"```"],`Lint output (${l.tool})`));let listing=d=>`- ${d.file}:${d.line} TS${d.code}: ${d.message}`;if(v.baseline.length){let shown=v.baseline.slice(0,10).map(listing),rest=v.baseline.length-shown.length;lines.push("",`**${errorSummary(v.baseline,"pre-existing error")}**`,droppable(4,collapse(rest?`First 10 of ${v.baseline.length}`:"List",[...shown,...rest?[`- \u2026 and ${rest} more`]:[]]),"Pre-existing error list"))}v.newErrors.length&&lines.push("","**Remaining errors**",...v.newErrors.map(listing)),v.workspaceTypes?.length&&lines.push("","| Workspace | Type errors after verification |","|---|---|",...v.workspaceTypes.map(w=>`| ${cell(w.workspace)} | ${w.errors} |`)),report.behavior&&lines.push("",`Samples: ${bs.reduce((n,b)=>n+b.identical,0).toLocaleString("en-US")}/${bs.reduce((n,b)=>n+b.inputs,0).toLocaleString("en-US")} identical across ${bs.length} schemas. Custom-message assertions: ${checks.filter(c=>c.status==="identical").length}/${checks.length} identical.`,"","Fixed seed 1729; up to 200 v3-derived inputs per schema. Isolated schema declarations and dependencies; no application code executed. Sampled equivalence is not a proof; examples are greedily minimized.","","| Schema | Inputs | Identical | Valid v3 inputs | Differences / limits |","|---|---|---|---|---|",...report.behavior.map(b=>`| ${cell(`${b.file}: ${b.schema}`)} | ${b.inputs} | ${b.identical} | ${b.validInputs} | ${cell(b.skipped??`${b.differences.length}${b.schemaKind==="object"&&b.validInputs<20?"; fewer than 20 valid inputs":""}`)} |`));for(let b of report.behavior??[])b.differences.length&&lines.push("",`**${b.file}: ${b.schema} differences**`,"```json",JSON.stringify(b.differences,null,2),"```"),b.messageChecks?.length&&lines.push("",`**${b.file}: ${b.schema} custom messages**`,...b.messageChecks.map(c=>`- ${c.site}, ${c.input} ${c.path.join(".")||"(root)"}: ${c.status} \u2014 ${c.before?`${JSON.stringify(c.before)} \u2192 ${JSON.stringify(c.after)}`:c.reason??""}`));for(let t of v.tests)t.status!=="missing"&&t.output&&lines.push("",`**Tests: ${t.workspace}**`,droppable(5,["```text",t.output,"```"],`Test output (${t.status})`));let agentEdits=report.sites.some(s=>s.outcome==="agent"),notes=report.notes.filter(n=>!/^(?:Publication plan printed|PR not opened:)/.test(n)&&(agentEdits||n!==GENERIC_NOTE(report.package)));notes.length&&lines.push("","**Run notes**","",...notes.map(n=>`- ${n}`));for(let stored of report.reviewSections??[]){if(stored.title==="Decisions for you")continue;let section=withLists(stored,report);lines.push("",`**${section.title}**`,"",...section.lines),(section.lists??[]).forEach((list,i)=>{lines.push("",{kind:"list",open:`<details>
|
|
286
287
|
<summary>${list.summary}</summary>
|
|
287
288
|
`,close:`
|