uptide 0.6.1 → 0.7.0-next.20261010054232
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-DDANKMCP.js → chunk-3P2EOEUA.js} +5 -5
- package/dist/{chunk-LSAQAVFP.js → chunk-AG6NPWQF.js} +1 -1
- package/dist/{chunk-HUHN4EKN.js → chunk-IZLHFKLP.js} +3 -3
- package/dist/{chunk-TH2UP6HI.js → chunk-NE44WGP2.js} +1 -1
- package/dist/engine-worker.js +1 -1
- package/dist/index.js +1 -1
- package/dist/{publish-SMWVDC4E-IDYUSL3P.js → publish-XH4LQ3ZR-IZ36U23J.js} +1 -1
- package/dist/worker.js +1 -1
- package/package.json +1 -1
|
@@ -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}from"./chunk-LSAQAVFP.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(),parse6=(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=parse6}});var require_valid=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js"(exports,module){"use strict";var parse6=require_parse(),valid=(version,options)=>{let v=parse6(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 parse6=require_parse(),clean=(version,options)=>{let s=parse6(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 parse6=require_parse(),diff=(version1,version2)=>{let v1=parse6(version1,null,!0),v2=parse6(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 parse6=require_parse(),prerelease=(version,options)=>{let parsed4=parse6(version,options);return parsed4&&parsed4.prerelease.length?parsed4.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(),parse6=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 parse6(`${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 parse6=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 parse6(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(key2){let value=this.map.get(key2);if(value!==void 0)return this.map.delete(key2),this.map.set(key2,value),value}delete(key2){return this.map.delete(key2)}set(key2,value){if(!this.delete(key2)&&value!==void 0){if(this.map.size>=this.max){let firstKey=this.map.keys().next().value;this.delete(firstKey)}this.map.set(key2,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(),validRange=(range,options)=>{try{return new Range(range,options).range||"*"}catch{return null}};module.exports=validRange}});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(),parse6=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(),validRange=require_valid2(),outside=require_outside(),gtr=require_gtr(),ltr=require_ltr(),intersects=require_intersects(),simplifyRange=require_simplify(),subset=require_subset();module.exports={parse:parse6,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,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_(key2,node,visitor,path){let ctrl=callVisitor(key2,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key2,path,ctrl),visit_(key2,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_(key2,node,visitor,path){let ctrl=await callVisitor(key2,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key2,path,ctrl),visitAsync_(key2,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(key2,node,visitor,path){if(typeof visitor=="function")return visitor(key2,node,path);if(identity.isMap(node))return visitor.Map?.(key2,node,path);if(identity.isSeq(node))return visitor.Seq?.(key2,node,path);if(identity.isPair(node))return visitor.Pair?.(key2,node,path);if(identity.isScalar(node))return visitor.Scalar?.(key2,node,path);if(identity.isAlias(node))return visitor.Alias?.(key2,node,path)}function replaceNode(key2,path,node){let parent=path[path.length-1];if(identity.isCollection(parent))parent.items[key2]=node;else if(identity.isPair(parent))key2==="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}from"./chunk-AG6NPWQF.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(),parse6=(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=parse6}});var require_valid=__commonJS({"../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js"(exports,module){"use strict";var parse6=require_parse(),valid=(version,options)=>{let v=parse6(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 parse6=require_parse(),clean=(version,options)=>{let s=parse6(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 parse6=require_parse(),diff=(version1,version2)=>{let v1=parse6(version1,null,!0),v2=parse6(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 parse6=require_parse(),prerelease=(version,options)=>{let parsed4=parse6(version,options);return parsed4&&parsed4.prerelease.length?parsed4.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(),parse6=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 parse6(`${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 parse6=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 parse6(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(key2){let value=this.map.get(key2);if(value!==void 0)return this.map.delete(key2),this.map.set(key2,value),value}delete(key2){return this.map.delete(key2)}set(key2,value){if(!this.delete(key2)&&value!==void 0){if(this.map.size>=this.max){let firstKey=this.map.keys().next().value;this.delete(firstKey)}this.map.set(key2,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(),validRange=(range,options)=>{try{return new Range(range,options).range||"*"}catch{return null}};module.exports=validRange}});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(),parse6=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(),validRange=require_valid2(),outside=require_outside(),gtr=require_gtr(),ltr=require_ltr(),intersects=require_intersects(),simplifyRange=require_simplify(),subset=require_subset();module.exports={parse:parse6,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,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_(key2,node,visitor,path){let ctrl=callVisitor(key2,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key2,path,ctrl),visit_(key2,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_(key2,node,visitor,path){let ctrl=await callVisitor(key2,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key2,path,ctrl),visitAsync_(key2,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(key2,node,visitor,path){if(typeof visitor=="function")return visitor(key2,node,path);if(identity.isMap(node))return visitor.Map?.(key2,node,path);if(identity.isSeq(node))return visitor.Seq?.(key2,node,path);if(identity.isPair(node))return visitor.Pair?.(key2,node,path);if(identity.isScalar(node))return visitor.Scalar?.(key2,node,path);if(identity.isAlias(node))return visitor.Alias?.(key2,node,path)}function replaceNode(key2,path,node){let parent=path[path.length-1];if(identity.isCollection(parent))parent.items[key2]=node;else if(identity.isPair(parent))key2==="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,key2,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,key2,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(),Node10=require_Node(),toJS=require_toJS(),Alias=class extends Node10.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(),Node10=require_Node(),toJS=require_toJS(),isScalarValue=value=>!value||typeof value!="function"&&typeof value!="object",Scalar=class extends Node10.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(),Node10=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 Node10.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[key2,...rest]=path,node=this.get(key2,!0);if(identity.isCollection(node))node.addIn(rest,value);else if(node===void 0&&this.schema)this.set(key2,collectionFromPath(this.schema,rest,value));else throw new Error(`Expected YAML collection at ${key2}. Remaining path: ${rest}`)}}deleteIn(path){let[key2,...rest]=path;if(rest.length===0)return this.delete(key2);let node=this.get(key2,!0);if(identity.isCollection(node))return node.deleteIn(rest);throw new Error(`Expected YAML collection at ${key2}. Remaining path: ${rest}`)}getIn(path,keepScalar){let[key2,...rest]=path,node=this.get(key2,!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[key2,...rest]=path;if(rest.length===0)return this.has(key2);let node=this.get(key2,!0);return identity.isCollection(node)?node.hasIn(rest):!1}setIn(path,value){let[key2,...rest]=path;if(rest.length===0)this.set(key2,value);else{let node=this.get(key2,!0);if(identity.isCollection(node))node.setIn(rest,value);else if(node===void 0&&this.schema)this.set(key2,collectionFromPath(this.schema,rest,value));else throw new Error(`Expected YAML collection at ${key2}. 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
|
`)?`
|
|
@@ -143,16 +143,16 @@ ${end.comment}`:end.comment}this.doc.range[2]=end.offset;break}default:this.erro
|
|
|
143
143
|
`:`
|
|
144
144
|
`,separator=opt.whitespace?" = ":"=",children=[],keys=opt.sort?Object.keys(obj).sort():Object.keys(obj),padToChars=0;opt.align&&(padToChars=safe(keys.filter(k=>obj[k]===null||Array.isArray(obj[k])||typeof obj[k]!="object").map(k=>Array.isArray(obj[k])?`${k}[]`:k).concat([""]).reduce((a,b)=>safe(a).length>=safe(b).length?a:b)).length);let out="",arraySuffix=opt.bracketedArray?"[]":"";for(let k of keys){let val=obj[k];if(val&&Array.isArray(val))for(let item of val)out+=safe(`${k}${arraySuffix}`).padEnd(padToChars," ")+separator+safe(item)+eol;else val&&typeof val=="object"?children.push(k):out+=safe(k).padEnd(padToChars," ")+separator+safe(val)+eol}opt.section&&out.length&&(out="["+safe(opt.section)+"]"+(opt.newline?eol+eol:eol)+out);for(let k of children){let nk=splitSections(k,".").join("\\."),section=(opt.section?opt.section+".":"")+nk,child=encode(obj[k],{...opt,section});out.length&&child.length&&(out+=eol),out+=child}return out};function splitSections(str,separator){var lastMatchIndex=0,lastSeparatorIndex=0,nextIndex=0,sections=[];do if(nextIndex=str.indexOf(separator,lastMatchIndex),nextIndex!==-1){if(lastMatchIndex=nextIndex+separator.length,nextIndex>0&&str[nextIndex-1]==="\\")continue;sections.push(str.slice(lastSeparatorIndex,nextIndex)),lastSeparatorIndex=nextIndex+separator.length}while(nextIndex!==-1);return sections.push(str.slice(lastSeparatorIndex)),sections}var decode=(str,opt={})=>{opt.bracketedArray=opt.bracketedArray!==!1;let out=Object.create(null),p=out,section=null,re=/^\[([^\]]*)\]\s*$|^([^=]+)(=(.*))?$/i,lines=str.split(/[\r\n]+/g),duplicates={};for(let line of lines){if(!line||line.match(/^\s*[;#]/)||line.match(/^\s*$/))continue;let match2=line.match(re);if(!match2)continue;if(match2[1]!==void 0){if(section=unsafe(match2[1]),section==="__proto__"){p=Object.create(null);continue}p=out[section]=out[section]||Object.create(null);continue}let keyRaw=unsafe(match2[2]),isArray;opt.bracketedArray?isArray=keyRaw.length>2&&keyRaw.slice(-2)==="[]":(duplicates[keyRaw]=(duplicates?.[keyRaw]||0)+1,isArray=duplicates[keyRaw]>1);let key2=isArray&&keyRaw.endsWith("[]")?keyRaw.slice(0,-2):keyRaw;if(key2==="__proto__")continue;let valueRaw=match2[3]?unsafe(match2[4]):!0,value=valueRaw==="true"||valueRaw==="false"||valueRaw==="null"?JSON.parse(valueRaw):valueRaw;isArray&&(hasOwnProperty.call(p,key2)?Array.isArray(p[key2])||(p[key2]=[p[key2]]):p[key2]=[]),Array.isArray(p[key2])?p[key2].push(value):p[key2]=value}let remove=[];for(let k of Object.keys(out)){if(!hasOwnProperty.call(out,k)||typeof out[k]!="object"||Array.isArray(out[k]))continue;let parts=splitSections(k,".");p=out;let l=parts.pop(),nl=l.replace(/\\\./g,".");for(let part of parts)part!=="__proto__"&&((!hasOwnProperty.call(p,part)||typeof p[part]!="object")&&(p[part]=Object.create(null)),p=p[part]);p===out&&nl===l||(p[nl]=out[k],remove.push(k))}for(let del of remove)delete out[del];return out},isQuoted=val=>val.startsWith('"')&&val.endsWith('"')||val.startsWith("'")&&val.endsWith("'"),safe=val=>typeof val!="string"||val.match(/[=\r\n]/)||val.match(/^\[/)||val.length>1&&isQuoted(val)||val!==val.trim()?JSON.stringify(val):val.split(";").join("\\;").split("#").join("\\#"),unsafe=val=>{if(val=(val||"").trim(),isQuoted(val)){val.charAt(0)==="'"&&(val=val.slice(1,-1));try{val=JSON.parse(val)}catch{}}else{let esc=!1,unesc="";for(let i=0,l=val.length;i<l;i++){let c=val.charAt(i);if(esc)"\\;#".indexOf(c)!==-1?unesc+=c:unesc+="\\"+c,esc=!1;else{if(";#".indexOf(c)!==-1)break;c==="\\"?esc=!0:unesc+=c}}return esc&&(unesc+="\\"),unesc.trim()}return val};module.exports={parse:decode,decode,stringify:encode,encode,safe,unsafe}}});var require_ignore=__commonJS({"../../node_modules/.pnpm/ignore@7.0.12/node_modules/ignore/index.js"(exports,module){"use strict";function makeArray(subject){return Array.isArray(subject)?subject:[subject]}var UNDEFINED=void 0,EMPTY="",SPACE=" ",ESCAPE="\\",REGEX_LITERAL_SPECIAL=/[.*+?()[\]{}^$|\\/]/,BOM="\uFEFF",REGEX_INVALID_TRAILING_BACKSLASH=/(?:[^\\]|^)\\$/,REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION=/^\\!/,REGEX_REPLACE_LEADING_EXCAPED_HASH=/^\\#/,REGEX_SPLITALL_CRLF=/\r?\n/g,DOUBLE_SLASH="//",SLASH_CODE=47,DOT_CODE=46,SLASH="/",TMP_KEY_IGNORE="node-ignore";typeof Symbol<"u"&&(TMP_KEY_IGNORE=Symbol.for("node-ignore"));var KEY_IGNORE=TMP_KEY_IGNORE,define=(object,key2,value)=>(Object.defineProperty(object,key2,{value}),value),RETURN_FALSE=()=>!1,cleanRangeBackSlash=slashes=>{let{length}=slashes;return slashes.slice(0,length-length%2)},POSIX_CLASSES={alnum:"0-9A-Za-z",alpha:"A-Za-z",blank:" \\t",cntrl:"\\x00-\\x1f\\x7f",digit:"0-9",graph:"!-.0-~",lower:"a-z",print:" -.0-~",punct:"!-.:-@\\[-`{-~",space:" \\t\\n\\r",upper:"A-Z",xdigit:"0-9A-Fa-f"},CLASS_MEMBERS_TO_ESCAPE="\\]^-[",escapeMember=char=>CLASS_MEMBERS_TO_ESCAPE.indexOf(char)<0?char:ESCAPE+char,NON_SLASH="(?!\\/)",classSource=(negated,body)=>{if(negated)return`[^\\/${body}]`;let source=`[${body}]`;return new RegExp(source).test("/")?NON_SLASH+source:source},scanBracket=(pattern,start)=>{let{length}=pattern,index=start+1,negated=EMPTY,lead=pattern[index];(lead==="!"||lead==="^")&&(negated="^",index++);let body=EMPTY,prev=EMPTY;for(;;){let char=pattern[index];if(char===UNDEFINED)return null;if(char===ESCAPE){let escaped=pattern[index+1];if(escaped===UNDEFINED)return null;body+=escapeMember(escaped),prev=escaped,index++}else if(char==="-"&&prev&&index+1<length&&pattern[index+1]!=="]"){index++;let to=pattern[index];to===ESCAPE&&(to=pattern[index+=1]),prev<=to&&(body+=`-${escapeMember(to)}`),prev=EMPTY}else if(char==="["&&pattern[index+1]===":"){let nameStart=index+2,end=nameStart;for(;end<length&&pattern[end]!=="]";)end++;if(end===length)return null;if(end>nameStart&&pattern[end-1]===":"){let expanded=POSIX_CLASSES[pattern.slice(nameStart,end-1)];if(expanded===UNDEFINED)return null;body+=expanded,prev=EMPTY,index=end}else body+=escapeMember("["),prev="[",index=nameStart-2}else body+=escapeMember(char),prev=char;if(index++,pattern[index]==="]")return{end:index,source:classSource(negated,body)}}},NEVER_MATCH="[]",PLACEHOLDER="\0",REGEX_RESTORE_PLACEHOLDER=new RegExp(`${PLACEHOLDER}(\\d+)${PLACEHOLDER}`,"g"),TRAILING_WILDCARD="\uE000",TRAILING_DOUBLESTAR="\uE001",extractBrackets=pattern=>{let sources=[],hold=source=>`${PLACEHOLDER}${sources.push(source)-1}${PLACEHOLDER}`,{length}=pattern,out=EMPTY,index=0;for(;index<length;){let char=pattern[index];if(char===ESCAPE){let escaped=pattern[index+1];escaped===UNDEFINED||escaped===SLASH&&index+2===length?out+=hold(NEVER_MATCH):escaped==="*"||escaped==="["||escaped===SPACE||escaped===ESCAPE?out+=pattern.slice(index,index+2):out+=hold(REGEX_LITERAL_SPECIAL.test(escaped)?ESCAPE+escaped:escaped),index+=2}else if(char===PLACEHOLDER)out+=hold(`[${PLACEHOLDER}]`),index++;else if(char==="["){let scanned=scanBracket(pattern,index);scanned===null?(out+=hold(NEVER_MATCH),index=length):(out+=hold(scanned.source),index=scanned.end+1)}else out+=char,index++}return{source:out,sources}},DIRECT=null,REGEX_INNER_SLASH=/\/(?!$)/,REPLACERS=[[/(\\+)( ?)/g,(_,run,space)=>space?run.slice(0,run.length-run.length%2)+SPACE:run,ESCAPE+SPACE],[/[\\$.|*+(){^]/g,match2=>`\\${match2}`],[/(?!\\)\?/g,()=>"[^/]","?"],[/^\//,()=>"^",SLASH],[/\//g,()=>"\\/",SLASH],[/^\^*(?:\\\*\\\*\\\/)+/,()=>"^(?:.*\\/)?","*"],[DIRECT,(source,pattern)=>!source||source[0]==="^"?source:(REGEX_INNER_SLASH.test(pattern)?"^":"(?:^|\\/)")+source],[/\\\/\\\*\\\*(?=\\\/|$)/g,(_,index,str)=>index+6<str.length?str.slice(index+6)==="\\/"?"(?:\\/[^\\/]+)+":"(?:\\/[^\\/]+)*":`\\/${TRAILING_DOUBLESTAR}`,"*"],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(_,p1,p2)=>{let unescaped=p2.replace(/\\\*/g,"[^\\/]*");return p1+unescaped},"*"],[/(^|[^\\])((?:\\\\)*)\\\*$/,(match2,p1,p2)=>p2.length/2%2===0?p1+p2+TRAILING_WILDCARD:match2,"*"],[/\\\\\\(?=[$.|*+(){^])/g,()=>ESCAPE,ESCAPE+ESCAPE],[/\\\\/g,()=>ESCAPE,ESCAPE+ESCAPE],[/\\\[([^\]/]*?)(\\*)($|\])/g,(match2,range,endEscape,close)=>`\\[${range}${cleanRangeBackSlash(endEscape)}${close}`,"["],[DIRECT,source=>{let last=source[source.length-1];return!last||last===TRAILING_WILDCARD||last===TRAILING_DOUBLESTAR?source:last===SLASH?`${source}$`:`${source}(?=$|\\/$)`}]],REGEX_REPLACE_TRAILING_WILDCARD=/(^|\\\/)?\uE000$/,MODE_IGNORE="regex",MODE_CHECK_IGNORE="checkRegex",UNDERSCORE="_",replaceTrailingWildcard=(_,p1)=>`${p1?`${p1}[^/]+`:"[^/]*"}(?=$|\\/$)`,REGEX_REPLACE_TRAILING_DOUBLESTAR=/\uE001$/,replaceTrailingDoublestar=()=>".+(?=$|\\/$)",WILDCARD="[^\\/]*",separatorAfter=(run,at)=>{let separator=EMPTY;for(let index=at+1;index<run.length&&!run[index].wildcard;index++)separator+=run[index].single;return separator},pinWildcards=source=>{if(source.indexOf(WILDCARD)<0)return source;let tokens=[],{length}=source,index=0;for(;index<length;){let char=source[index];if(source.startsWith(WILDCARD,index))tokens.push({wildcard:!0}),index+=WILDCARD.length;else if(char==="["){let end=index+1;for(source[end]==="^"&&end++,source[end]==="]"&&end++;end<length&&source[end]!=="]";)end+=source[end]===ESCAPE?2:1;end++,tokens.push({single:source.slice(index,end)}),index=end}else if(char===ESCAPE)tokens.push({single:source.slice(index,index+2)}),index+=2;else if(char==="("){let depth2=0,end=index;do source[end]===ESCAPE?end++:source[end]==="("?depth2++:source[end]===")"&&depth2--,end++;while(end<length&&depth2>0);"*+?".indexOf(source[end])>=0&&end++,tokens.push({boundary:source.slice(index,end)}),index=end}else char==="^"||char==="$"?(tokens.push({boundary:char}),index++):(tokens.push({single:char}),index++)}let out=EMPTY,run=[],flush=()=>{let lastWildcard;run.forEach((token,at)=>{token.wildcard&&(lastWildcard=at)}),run.forEach((token,at)=>{if(!token.wildcard){out+=token.single;return}out+=at===lastWildcard?WILDCARD:`(?:(?!${separatorAfter(run,at)})[^\\/])*`}),run=[]};return tokens.forEach(token=>{if(token.boundary===void 0){run.push(token);return}flush(),out+=token.boundary}),flush(),out},makeRegexPrefix=pattern=>{let{source,sources}=extractBrackets(pattern),replaced=REPLACERS.reduce((prev,[matcher,replacer,required])=>matcher===DIRECT?replacer(prev,pattern):required!==UNDEFINED&&prev.indexOf(required)<0?prev:matcher.test(prev)?prev.replace(matcher,replacer.bind(pattern)):prev,source);return sources.length?replaced.replace(REGEX_RESTORE_PLACEHOLDER,(match2,index)=>sources[index]):replaced},checkSourceOf=(body,prefix)=>{body[body.length-1]===SLASH&&(prefix=makeRegexPrefix(body.slice(0,-1)));let head=prefix.slice(0,-1),last=prefix[prefix.length-1];return last===TRAILING_WILDCARD?`${head}$`:last===TRAILING_DOUBLESTAR?`${head}.*$`:NEVER_MATCH},matchesBasename=body=>{let index=body.indexOf(SLASH);return index<0||index===body.length-1},basenameOf=path=>{let end=path.length-1,index=path.lastIndexOf(SLASH,path[end]===SLASH?end-1:end);return index<0?path:path.slice(index+1)},parentOf2=path=>{if(path.charCodeAt(0)===SLASH_CODE||path.indexOf(DOUBLE_SLASH)>=0){let slices=path.split(SLASH).filter(Boolean);return slices.pop(),slices.length?slices.join(SLASH)+SLASH:EMPTY}let end=path.length-1,cut=path.lastIndexOf(SLASH,path.charCodeAt(end)===SLASH_CODE?end-1:end);return cut<0?EMPTY:path.slice(0,cut+1)},isString=subject=>typeof subject=="string",checkPattern=pattern=>pattern&&isString(pattern)&&!REGEX_INVALID_TRAILING_BACKSLASH.test(pattern),splitPattern=pattern=>pattern.split(REGEX_SPLITALL_CRLF).filter(Boolean),IgnoreRule=class{constructor(pattern,mark,body,ignoreCase,negative,prefix){this.pattern=pattern,this.mark=mark,this.negative=negative,define(this,"body",body),define(this,"ignoreCase",ignoreCase),define(this,"regexPrefix",prefix)}get _basenameOnly(){return define(this,"_basenameOnly",matchesBasename(this.body))}get regex(){let key2=UNDERSCORE+MODE_IGNORE;return this[key2]?this[key2]:this._make(MODE_IGNORE,key2)}get checkRegex(){let key2=UNDERSCORE+MODE_CHECK_IGNORE;return this[key2]?this[key2]:this._make(MODE_CHECK_IGNORE,key2)}_make(mode,key2){let str=pinWildcards(mode===MODE_IGNORE?this.regexPrefix.replace(REGEX_REPLACE_TRAILING_WILDCARD,replaceTrailingWildcard).replace(REGEX_REPLACE_TRAILING_DOUBLESTAR,replaceTrailingDoublestar):checkSourceOf(this.body,this.regexPrefix)),regex=this.ignoreCase?new RegExp(str,"i"):new RegExp(str);return define(this,key2,regex)}},isLineEnd=char=>char==="\r"||char===`
|
|
145
145
|
`,trimEnd=body=>{let end=body.length;for(;end&&isLineEnd(body[end-1]);)end--;let lineEnd=end;for(;end&&body[end-1]===SPACE;)end--;if(end===lineEnd)return body.slice(0,end);let backslashes=0;for(;backslashes<end&&body[end-backslashes-1]===ESCAPE;)backslashes++;return backslashes%2?body.slice(0,end-1)+SPACE:body.slice(0,end)},createRule=({pattern,mark},ignoreCase)=>{let body=pattern[0]===BOM?pattern.slice(1):pattern;if(body[0]==="#")return;let negative=!1;body[0]==="!"&&(negative=!0,body=body.slice(1));let last=body[body.length-1];if((last===SPACE||last==="\r"||last===`
|
|
146
|
-
`)&&(body=trimEnd(body)),!body)return;body=body.replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION,"!").replace(REGEX_REPLACE_LEADING_EXCAPED_HASH,"#");let regexPrefix=makeRegexPrefix(body);return new IgnoreRule(pattern,mark,body,ignoreCase,negative,regexPrefix)},RuleManager=class{constructor(ignoreCase){this._ignoreCase=ignoreCase,this._rules=[],this._basenameCount=0}_add(pattern){if(pattern&&pattern[KEY_IGNORE]){this._rules=this._rules.concat(pattern._rules._rules),this._basenameCount+=pattern._rules._basenameCount,this._added=!0;return}isString(pattern)&&(pattern={pattern});let rule=checkPattern(pattern.pattern)&&createRule(pattern,this._ignoreCase);rule&&(this._added=!0,this._rules.push(rule),matchesBasename(rule.body)&&this._basenameCount++)}add(pattern){return this._added=!1,makeArray(isString(pattern)?splitPattern(pattern):pattern).forEach(this._add,this),this._added&&(this._literalRules=UNDEFINED),this._added}testLiteral(path){let rules2=this._literalRules||(this._literalRules=this._rules.filter(({body})=>body[body.length-(body[body.length-1]===SLASH?2:1)]==="*")),ignored=!1,unignored=!1,matchedRule;for(let index=rules2.length-1;index>=0;index--){let rule=rules2[index];if(rule.checkRegex.test(path)){ignored=!rule.negative,unignored=rule.negative,matchedRule=rule.negative?UNDEFINED:rule;break}}let ret={ignored,unignored};return matchedRule&&(ret.rule=matchedRule),ret}test(path,checkUnignored,mode){let ignored=!1,unignored=!1,matchedRule,rules2=this._rules,{length}=rules2,shortcut=this._basenameCount*2>=length,basename5=shortcut?basenameOf(path):path;for(let index=0;index<length;index++){let rule=rules2[index],{negative}=rule;!(unignored===negative&&ignored!==unignored||negative&&!ignored&&!unignored&&!checkUnignored)&&rule[mode].test(shortcut&&rule._basenameOnly?basename5:path)&&(ignored=!negative,unignored=negative,matchedRule=negative?UNDEFINED:rule)}let ret={ignored,unignored};return matchedRule&&(ret.rule=matchedRule),ret}},throwError=(message,Ctor)=>{throw new Ctor(message)},checkPath=(path,originalPath,doThrow)=>isString(path)?path?checkPath.isNotRelative(path)?doThrow(`path should be a \`path.relative()\`d string, but got "${originalPath}"`,RangeError):!0:doThrow("path must not be empty",TypeError):doThrow(`path must be a string, but got \`${originalPath}\``,TypeError),isNotRelative=path=>{let first=path.charCodeAt(0);if(first===SLASH_CODE)return!0;if(first!==DOT_CODE)return!1;if(path.length===1)return!0;let second=path.charCodeAt(1);return second===SLASH_CODE?!0:second!==DOT_CODE?!1:path.length===2||path.charCodeAt(2)===SLASH_CODE};checkPath.isNotRelative=isNotRelative;checkPath.convert=p=>p;var Ignore=class{constructor({ignorecase=!0,ignoreCase=ignorecase,allowRelativePaths=!1}={}){define(this,KEY_IGNORE,!0),this._rules=new RuleManager(ignoreCase),this._strictPathCheck=!allowRelativePaths,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(pattern){return this._rules.add(pattern)&&this._initCache(),this}addPattern(pattern){return this.add(pattern)}_test(originalPath,cache,checkUnignored){let path=originalPath&&checkPath.convert(originalPath);return checkPath(path,originalPath,this._strictPathCheck?throwError:RETURN_FALSE),this._t(path,cache,checkUnignored)}checkIgnore(path){if(path.charCodeAt(path.length-1)!==SLASH_CODE)return this.test(path);let dir=this._t(path,this._testCache,!0);if(dir.ignored)return dir;let literal=this._rules.testLiteral(path);return literal.ignored||literal.unignored?literal:dir}_t(path,cache,checkUnignored){if(path in cache)return cache[path];let parentPath=parentOf2(path),parent=parentPath?this._t(parentPath,cache,checkUnignored):UNDEFINED;return cache[path]=parent&&parent.ignored?parent:this._rules.test(path,checkUnignored,MODE_IGNORE)}ignores(path){return this._test(path,this._ignoreCache,!1).ignored}createFilter(){return path=>!this.ignores(path)}filter(paths){return makeArray(paths).filter(this.createFilter())}test(path){return this._test(path,this._testCache,!0)}},factory2=options=>new Ignore(options),isPathValid=path=>checkPath(path&&checkPath.convert(path),path,RETURN_FALSE),setupWindows=()=>{let makePosix=str=>/^\\\\\?\\/.test(str)||/["<>|\u0000-\u001F]+/u.test(str)?str:str.replace(/\\/g,"/");checkPath.convert=makePosix;let REGEX_TEST_WINDOWS_PATH_ABSOLUTE=/^[a-z]:\//i;checkPath.isNotRelative=path=>REGEX_TEST_WINDOWS_PATH_ABSOLUTE.test(path)||isNotRelative(path)};typeof process<"u"&&process.platform==="win32"&&setupWindows();module.exports=factory2;factory2.default=factory2;module.exports.isPathValid=isPathValid;define(module.exports,Symbol.for("setupWindows"),setupWindows)}});var import_ts_morph=__toESM(require_ts_morph(),1),import_semver=__toESM(require_semver2(),1),import_ts_morph2=__toESM(require_ts_morph(),1),import_ts_morph3=__toESM(require_ts_morph(),1),import_ts_morph4=__toESM(require_ts_morph(),1),import_ts_morph5=__toESM(require_ts_morph(),1),import_ts_morph6=__toESM(require_ts_morph(),1),import_ts_morph7=__toESM(require_ts_morph(),1),import_ts_morph8=__toESM(require_ts_morph(),1),import_ts_morph9=__toESM(require_ts_morph(),1),import_yaml=__toESM(require_dist(),1),import_ts_morph10=__toESM(require_ts_morph(),1),import_ini=__toESM(require_ini(),1),import_ts_morph11=__toESM(require_ts_morph(),1),import_ts_morph12=__toESM(require_ts_morph(),1),import_yaml2=__toESM(require_dist(),1),import_ts_morph13=__toESM(require_ts_morph(),1),import_ts_morph14=__toESM(require_ts_morph(),1),import_ts_morph15=__toESM(require_ts_morph(),1),import_ts_morph16=__toESM(require_ts_morph(),1),import_ts_morph17=__toESM(require_ts_morph(),1),import_ignore=__toESM(require_ignore(),1),import_ts_morph18=__toESM(require_ts_morph(),1),import_ts_morph19=__toESM(require_ts_morph(),1);import{existsSync}from"fs";import{createRequire}from"module";import{dirname,join,resolve}from"path";import{existsSync as existsSync11,realpathSync as realpathSync5}from"fs";import{join as join13}from"path";import{mkdtempSync,rmSync,writeFileSync}from"fs";import{tmpdir}from"os";import{join as join3}from"path";import{existsSync as existsSync2,readdirSync,readFileSync,statSync}from"fs";import{dirname as dirname2,join as join2,resolve as resolve2}from"path";import{relative}from"path";import{existsSync as existsSync10,mkdirSync,mkdtempSync as mkdtempSync2,readFileSync as readFileSync10,realpathSync as realpathSync4,rmSync as rmSync2,symlinkSync}from"fs";import{builtinModules}from"module";import{tmpdir as tmpdir2}from"os";import{dirname as dirname9,join as join12,relative as relative7}from"path";import{relative as relative2}from"path";import{readFileSync as readFileSync2}from"fs";import{dirname as dirname3,isAbsolute,join as join4,relative as relative3,resolve as resolve3}from"path";import{existsSync as existsSync7,readFileSync as readFileSync7,realpathSync as realpathSync2}from"fs";import{dirname as dirname7,join as join9,resolve as resolve5}from"path";import{existsSync as existsSync3,readdirSync as readdirSync2,readFileSync as readFileSync3}from"fs";import{dirname as dirname4,join as join5}from"path";import{existsSync as existsSync4,readFileSync as readFileSync4}from"fs";import{dirname as dirname5,join as join6,relative as relative4}from"path";import{existsSync as existsSync5,readdirSync as readdirSync3,readFileSync as readFileSync5,realpathSync,statSync as statSync2}from"fs";import{dirname as dirname6,join as join7,relative as relative5,resolve as resolve4}from"path";import{existsSync as existsSync6,readdirSync as readdirSync4,readFileSync as readFileSync6}from"fs";import{join as join8}from"path";import{existsSync as existsSync9,readFileSync as readFileSync9}from"fs";import{join as join11}from"path";import{existsSync as existsSync8,readFileSync as readFileSync8,realpathSync as realpathSync3}from"fs";import{dirname as dirname8,join as join10,relative as relative6}from"path";import{homedir}from"os";import{join as join14}from"path";import{randomUUID}from"crypto";import{mkdir,readFile,rename,writeFile}from"fs/promises";import{dirname as dirname10,join as join15}from"path";import{existsSync as existsSync12,readFileSync as readFileSync11}from"fs";import{homedir as homedir2}from"os";import{dirname as dirname11,join as join16,relative as relative8,resolve as resolve6}from"path";import{createHash}from"crypto";import{existsSync as existsSync13}from"fs";import{mkdir as mkdir2,readFile as readFile2,rename as rename2,rm,writeFile as writeFile2}from"fs/promises";import{tmpdir as tmpdir3}from"os";import{dirname as dirname13,join as join18,resolve as resolve7}from"path";import{mkdirSync as mkdirSync2,writeFileSync as writeFileSync2}from"fs";import{dirname as dirname12,join as join17,normalize,sep}from"path";import{gunzipSync}from"zlib";import{basename as basename2}from"path";import{existsSync as existsSync15,readFileSync as readFileSync13,realpathSync as realpathSync6,rmSync as rmSync3,writeFileSync as writeFileSync3}from"fs";import{builtinModules as builtinModules2}from"module";import{basename,dirname as dirname14,join as join20,relative as relative10}from"path";import{existsSync as existsSync14,readdirSync as readdirSync5,readFileSync as readFileSync12}from"fs";import{join as join19,relative as relative9,resolve as resolve8}from"path";import{join as join21}from"path";import{readFileSync as readFileSync14}from"fs";import{basename as basename4,dirname as dirname15,join as join22,resolve as resolve9}from"path";import{basename as basename3}from"path";import{createHash as createHash2}from"crypto";import{join as join23}from"path";import{existsSync as existsSync17,readFileSync as readFileSync16}from"fs";import{dirname as dirname17,join as join25,relative as relative12}from"path";import{existsSync as existsSync16,readdirSync as readdirSync6,readFileSync as readFileSync15}from"fs";import{dirname as dirname16,join as join24,relative as relative11}from"path";import{readFileSync as readFileSync18}from"fs";import{join as join27}from"path";import{readdirSync as readdirSync7,readFileSync as readFileSync17}from"fs";import{join as join26,relative as relative13}from"path";import{execFileSync}from"child_process";import{cpSync,existsSync as existsSync18,mkdirSync as mkdirSync3,mkdtempSync as mkdtempSync3,readdirSync as readdirSync8,readFileSync as readFileSync19,realpathSync as realpathSync7,renameSync,rmSync as rmSync4,symlinkSync as symlinkSync2,writeFileSync as writeFileSync4}from"fs";import{homedir as homedir3,tmpdir as tmpdir4}from"os";import{dirname as dirname18,join as join28,resolve as resolve10,sep as sep2}from"path";import{posix}from"path";import{readFileSync as readFileSync25,realpathSync as realpathSync8}from"fs";import{join as join34,posix as posix2,relative as relative16,resolve as resolve14,sep as sep3}from"path";import{readdirSync as readdirSync9,readFileSync as readFileSync21}from"fs";import{availableParallelism}from"os";import{join as join30,relative as relative15,resolve as resolve11}from"path";import{Worker}from"worker_threads";import{readFileSync as readFileSync20}from"fs";import{join as join29,relative as relative14}from"path";import{readdirSync as readdirSync10,readFileSync as readFileSync22,statSync as statSync3}from"fs";import{join as join31,resolve as resolve12}from"path";import{execFileSync as execFileSync2}from"child_process";import{existsSync as existsSync19,readFileSync as readFileSync23}from"fs";import{availableParallelism as availableParallelism2,freemem,platform,totalmem}from"os";import{dirname as dirname19,join as join32,resolve as resolve13}from"path";import{existsSync as existsSync20,readdirSync as readdirSync11,readFileSync as readFileSync24,statSync as statSync4}from"fs";import{join as join33}from"path";var resets=[];function onReset(reset){resets.push(reset)}function resetSharedState(){for(let reset of resets)reset()}function consumerCompilerDir(dir){for(let current=resolve(dir);;current=dirname(current)){let manifest2=join(current,"node_modules","typescript","package.json");if(existsSync(manifest2))return dirname(manifest2);if(dirname(current)===current)return}}function loadCompiler(packageDir){return createRequire(join(packageDir,"package.json"))(packageDir)}function resolveCompiler(dir,bundled=import_ts_morph.ts,load=loadCompiler,find=consumerCompilerDir){try{let own=find(dir);if(own===void 0)throw new Error("the repository installs no TypeScript");return load(own)}catch{if(bundled)return bundled;throw new UptideError("TYPESCRIPT_UNAVAILABLE","TypeScript compiler unavailable: install typescript in the consumer repository or reinstall the Uptide bundle")}}var compilers=new Map;onReset(()=>compilers.clear());function repositoryCompiler(dir){let own=consumerCompilerDir(dir),key2=own??"",compiler=compilers.get(key2);if(!compiler){let loaded=own===void 0?import_ts_morph.ts:resolveCompiler(dir,import_ts_morph.ts,loadCompiler,()=>own);compiler={ts:loaded,version:loaded.version,own:loaded!==import_ts_morph.ts},compilers.set(key2,compiler)}return compiler}function unresolvedConfig(tsc,tsconfig){try{let read2=tsc.readConfigFile(tsconfig,p=>tsc.sys.readFile(p)),extended=read2.config?.extends;return read2.config===void 0||extended===void 0||!tsc.parseJsonConfigFileContent(read2.config,tsc.sys,dirname(tsconfig),void 0,tsconfig).errors.find(e=>e.code===6053)?void 0:`extends ${(Array.isArray(extended)?extended:[extended]).map(n=>JSON.stringify(n)).join(", ")} cannot be resolved`}catch{return}}var path_exports={};__export(path_exports,{callSignature:()=>callSignature,constructSignature:()=>constructSignature,element:()=>element,indexSignature:()=>indexSignature,instanceMember:()=>instanceMember,joinPath:()=>joinPath,leafOf:()=>leafOf,parentOf:()=>parentOf,scoped:()=>scoped,splitPath:()=>splitPath,staticMember:()=>staticMember,topLevel:()=>topLevel});var IDENTIFIER=/^[A-Za-z_$][\w$]*$/;function segment(name){return IDENTIFIER.test(name)?name:JSON.stringify(name)}function staticMember(parent,name){return`${parent}.${segment(name)}`}function instanceMember(parent,name){return`${parent}#${segment(name)}`}function element(parent){return`${parent}[]`}function indexSignature(parent,keyType){return`${parent}#[${keyType}]`}function callSignature(parent){return`${parent}#()`}function constructSignature(parent){return`${parent}.new()`}function scoped(specifier,path){return`${JSON.stringify(specifier)}:${path}`}function topLevel(name){return segment(name)}function splitPath(path){let i=0,scope,readQuoted=()=>{let j=i+1;for(;j<path.length;)if(path[j]==="\\")j+=2;else{if(path[j]==='"')break;j++}let raw=path.slice(i,j+1);return i=j+1,raw};if(path[0]==='"'){let quoted=readQuoted();path[i]===":"?(scope=JSON.parse(quoted),i++):i=0}let segments=[],current="";for(;i<path.length;){let ch=path[i];if(ch==='"'){current+=readQuoted();continue}if((ch==="."||ch==="#")&¤t!==""){segments.push(current),current=ch,i++;continue}if(ch==="["&&path[i+1]==="]"&¤t!==""){segments.push(current),current="[]",i+=2;continue}current+=ch,i++}return current!==""&&segments.push(current),scope===void 0?{segments}:{scope,segments}}function joinPath(parts){let body=parts.segments.join("");return parts.scope===void 0?body:`${JSON.stringify(parts.scope)}:${body}`}function parentOf(path){let parts=splitPath(path);if(!(parts.segments.length<=1))return joinPath({...parts,segments:parts.segments.slice(0,-1)})}function leafOf(path){let{segments}=splitPath(path),last=segments[segments.length-1]??"",raw=last.startsWith(".")||last.startsWith("#")?last.slice(1):last;return raw.startsWith('"')?JSON.parse(raw):raw}function satisfies(version,range){return import_semver.default.satisfies(version,range)}function maxSatisfying(versions,range){return import_semver.default.maxSatisfying([...versions],range)??void 0}function minVersion(range){return import_semver.default.validRange(range)?import_semver.default.minVersion(range)?.version??void 0:void 0}var USAGE_CERTAINTY={direct:1,alias:.95,reexport:.95,destructure:.9,inferred:.8,require:.85};function usagePaths(usage){return usage.canonicalPath!==void 0&&usage.canonicalPath!==usage.symbolPath?[usage.symbolPath,usage.canonicalPath]:[usage.symbolPath]}function repoTypeChecks(file,head,checkJs){return/@ts-nocheck/.test(head)?!1:/\.(js|jsx|cjs|mjs)$/i.test(file)?checkJs||/@ts-check/.test(head):!0}var OPEN=new Set(["(","[","{","<"]),CLOSE=new Set([")","]","}",">"]);function splitTopLevel(text,sep4){let parts=[],depth2=0,quote2,start=0;for(let i=0;i<text.length;i++){let ch=text[i];if(quote2){ch==="\\"?i++:ch===quote2&&(quote2=void 0);continue}ch==="'"||ch==='"'||ch==="`"?quote2=ch:OPEN.has(ch)?depth2++:CLOSE.has(ch)?depth2--:ch===sep4[0]&&depth2===0&&text.startsWith(sep4,i)&&(parts.push(text.slice(start,i).trim()),start=i+sep4.length,i=start-1)}return parts.push(text.slice(start).trim()),parts.filter(p=>p!=="")}function unionMembers(type){let stripped=type.startsWith("| ")?type.slice(2):type;return splitTopLevel(stripped,"|").map(m=>m.trim())}function parseParam(text){let m=/^(\.\.\.)?([A-Za-z_$][\w$]*|\{[\s\S]*\}|\[[\s\S]*\])(\?)?\s*:\s*([\s\S]+)$/.exec(text);if(!m){let bare=/^(\.\.\.)?([A-Za-z_$][\w$]*)(\?)?$/.exec(text);return bare?{name:bare[2],optional:bare[3]==="?",rest:bare[1]==="...",type:"any"}:void 0}return{name:m[2],optional:m[3]==="?",rest:m[1]==="...",type:m[4].trim()}}function parseOverload(text){let rest=text.replace(/^(protected|abstract|readonly|static)\s+/g,"").trim(),typeParams2=[];if(rest.startsWith("<")){let end=matchingClose(rest,0);if(end===-1)return;typeParams2.push(...splitTopLevel(rest.slice(1,end),",")),rest=rest.slice(end+1).trim()}if(!rest.startsWith("("))return;let close=matchingClose(rest,0);if(close===-1)return;let paramText=rest.slice(1,close),after=rest.slice(close+1).trim();if(after!==""&&!after.startsWith(":")&&!after.startsWith("=>"))return;let returnType=after.startsWith(":")?after.slice(1).trim():after.startsWith("=>")?after.slice(2).trim():"void",params2=[],thisType;for(let p of splitTopLevel(paramText,",")){let parsed4=parseParam(p);if(!parsed4)return;if(parsed4.name==="this"&¶ms2.length===0&&thisType===void 0){thisType=parsed4.type;continue}params2.push(parsed4)}let overload={typeParams:typeParams2,params:params2,returnType};return thisType!==void 0&&(overload.thisType=thisType),overload}function matchingClose(text,openIndex){let open=text[openIndex],close=open==="("?")":open==="<"?">":open==="["?"]":"}",depth2=0,quote2;for(let i=openIndex;i<text.length;i++){let ch=text[i];if(quote2){ch==="\\"?i++:ch===quote2&&(quote2=void 0);continue}if(ch==="'"||ch==='"'||ch==="`")quote2=ch;else if(ch===open)depth2++;else if(ch===close&&--depth2===0)return i}return-1}function parseCallable(signature){let overloads=[];for(let text of splitTopLevel(signature,";")){let parsed4=parseOverload(text);if(!parsed4)return;overloads.push(parsed4)}return overloads.length>0?overloads:void 0}function looksCallable(signature){return/^(protected |abstract |static )*(<|\()/.test(signature)?parseCallable(signature.replace(/^(protected |abstract |static )+/,""))!==void 0:!1}var LEADING_KEYWORDS=/^(readonly |protected |abstract |static |const |let |var )+/;function asCallable(signature){let text=signature.replace(LEADING_KEYWORDS,"").trim(),inner=/^\{ (.*) \}$/.exec(text)?.[1]??text;return looksCallable(inner)?inner:void 0}function typeParamName(declaration){return/^(?:const\s+)?([A-Za-z_$][\w$]*)/.exec(declaration.trim())?.[1]}function renamePositional(o){let names=o.typeParams.map(tp=>typeParamName(tp)).filter(n=>n!==void 0),rename3=text=>names.reduce((acc,name,i)=>acc.replace(new RegExp(`\\b${name.replace(/\$/g,"\\$")}\\b`,"g"),`T${i}`),text);return{typeParams:o.typeParams.map(rename3),params:o.params.map(p=>({...p,type:rename3(p.type)})),returnType:rename3(o.returnType),...o.thisType!==void 0?{thisType:rename3(o.thisType)}:{}}}function callableShape(signature){let text=asCallable(signature),overloads=text?parseCallable(text):void 0;if(overloads)return overloads.map(renamePositional).map(o=>{let tp=o.typeParams.length>0?`<${o.typeParams.join(", ")}>`:"",params2=[...o.thisType!==void 0?[`this: ${o.thisType}`]:[],...o.params.map(p=>`${p.rest?"...":""}${p.type}${p.optional?"?":""}`)].join(", ");return`${tp}(${params2}): ${o.returnType}`}).join("; ")}var DECLARATION=/\.d\.(c|m)?ts$/;function siblingDeclaration(file){if(DECLARATION.test(file))return file;let m=/\.(m|c)?(j|t)sx?$/.exec(file);if(m)return`${file.slice(0,m.index)}.d.${m[1]??""}ts`}function resolveTypesFile(dir,target){let candidate=siblingDeclaration(target);if(!candidate)return;let abs=resolve2(dir,candidate);return existsSync2(abs)?abs:void 0}var PREFERRED_CONDITIONS=["types","import","default"];function resolveFromExports(dir,value){if(value===null)return;if(typeof value=="string")return resolveTypesFile(dir,value);if(Array.isArray(value)){for(let item of value){let found=resolveFromExports(dir,item);if(found)return found}return}let keys=Object.keys(value),ordered=[...PREFERRED_CONDITIONS.filter(k=>keys.includes(k)),...keys.filter(k=>!PREFERRED_CONDITIONS.includes(k))];for(let key2 of ordered){let found=resolveFromExports(dir,value[key2]);if(found)return found}}function implicitSubpaths(dir,rootFile){let out=new Map,names;try{names=readdirSync(dir)}catch{return out}for(let entry of names){if(entry.startsWith(".")||entry==="node_modules")continue;let full2=join2(dir,entry),isDir;try{isDir=statSync(full2).isDirectory()}catch{continue}if(isDir){let nested=join2(full2,"package.json");if(!existsSync2(nested))continue;let pkg;try{pkg=JSON.parse(readFileSync(nested,"utf8"))}catch{continue}for(let c of[pkg.types,pkg.typings,pkg.main]){let file=typeof c=="string"?resolveTypesFile(full2,c):void 0;if(file){out.set(`./${entry}`,file);break}}continue}let m=/^(.+?)\.d\.(c|m)?ts$/.exec(entry);!m||m[1]==="index"||rootFile!==void 0&&resolve2(full2)===rootFile||out.set(`./${m[1]}`,resolve2(full2))}return out}function resolveEntryPoints(dir,name,version){let pkg=JSON.parse(readFileSync(join2(dir,"package.json"),"utf8")),found=new Map,exportsField=pkg.exports;if(exportsField!==void 0){let map=typeof exportsField=="object"&&exportsField!==null&&!Array.isArray(exportsField)&&Object.keys(exportsField).every(k=>k.startsWith("."))?exportsField:{".":exportsField};for(let[subpath,value]of Object.entries(map)){if(subpath.includes("*"))continue;let file=resolveFromExports(dir,value);file&&found.set(subpath,file)}}if(!found.has(".")){let mainDir=typeof pkg.main=="string"?join2(dirname2(pkg.main),"index.d.ts"):void 0,candidates=[pkg.types,pkg.typings,pkg.main,mainDir,"index.d.ts"].filter(c=>typeof c=="string");for(let c of candidates){let file=resolveTypesFile(dir,c);if(file){found.set(".",file);break}}}if(exportsField===void 0)for(let[subpath,file]of implicitSubpaths(dir,found.get(".")))found.has(subpath)||found.set(subpath,file);if(found.size===0)throw new NoTypesError(name,version);return[...found.entries()].map(([entry,file])=>({entry,file})).sort((a,b)=>a.entry==="."?-1:b.entry==="."?1:a.entry.localeCompare(b.entry))}var newPrinter=()=>import_ts_morph5.ts.createPrinter({removeComments:!0,omitTrailingSemicolon:!0}),printer=newPrinter();onReset(()=>{printer=newPrinter()});function normalizeText(text){return text.replace(/\s+/g," ").replace(/; }/g," }").replace(/;\s*$/,"").trim()}function transformer(opts){return context=>{let{factory:factory2}=context,visit=node=>{if(opts.collapse!==void 0&&node===opts.collapse)return factory2.createTypeReferenceNode("{\u2026}");let visited=import_ts_morph5.ts.visitEachChild(node,visit,context);if(import_ts_morph5.ts.isUnionTypeNode(visited)){let sorted=[...visited.types].map(t=>({t,key:printer.printNode(import_ts_morph5.ts.EmitHint.Unspecified,t,t.getSourceFile())})).sort((a,b)=>a.key<b.key?-1:a.key>b.key?1:0).map(x=>x.t);return factory2.updateUnionTypeNode(visited,factory2.createNodeArray(sorted))}return import_ts_morph5.ts.isImportTypeNode(visited)&&visited.qualifier?factory2.createTypeReferenceNode(visited.qualifier,visited.typeArguments):visited};return root=>visit(root)}}function printCompilerNode(node,opts={}){let result;try{result=import_ts_morph5.ts.transform(node,[transformer(opts)]);let transformed=result.transformed[0]??node;return normalizeText(printer.printNode(import_ts_morph5.ts.EmitHint.Unspecified,transformed,node.getSourceFile()))}catch(err){throw printer=newPrinter(),err}finally{result?.dispose()}}function printNode(node,opts={}){return printCompilerNode(node.compilerNode,opts)}function printCallable(node,opts={}){let cn=node.compilerNode,sig=import_ts_morph5.ts.factory.createCallSignature(cn.typeParameters,cn.parameters,cn.type);import_ts_morph5.ts.setSourceMapRange(sig,cn);let result=import_ts_morph5.ts.transform(sig,[transformer(opts)]),text=printer.printNode(import_ts_morph5.ts.EmitHint.Unspecified,result.transformed[0]??sig,cn.getSourceFile());return result.dispose(),normalizeText(text)}function printTypeNode(typeNode,opts={}){if(import_ts_morph5.Node.isTypeQuery(typeNode)){let text=typeNode.getType().getText(void 0,import_ts_morph5.ts.TypeFormatFlags.NoTruncation);if(!text.startsWith("typeof ")&&!text.startsWith("import("))return normalizeText(text)}if(import_ts_morph5.Node.isImportTypeNode(typeNode)){let text=typeNode.getType().getText(void 0,import_ts_morph5.ts.TypeFormatFlags.NoTruncation);if(isLiteralUnion(text))return normalizeText(text)}return printNode(typeNode,opts)}function isLiteralUnion(text){return text.split("|").map(part=>part.trim()).every(part=>/^("([^"\\]|\\.)*"|'([^'\\]|\\.)*'|-?\d+(\.\d+)?|true|false|null|undefined)$/.test(part))}var STRENGTH=["class","function","variable","interface","enum","type","namespace","module"];function kindOf(node){if(import_ts_morph4.Node.isClassDeclaration(node))return"class";if(import_ts_morph4.Node.isFunctionDeclaration(node))return"function";if(import_ts_morph4.Node.isVariableDeclaration(node))return"variable";if(import_ts_morph4.Node.isInterfaceDeclaration(node))return"interface";if(import_ts_morph4.Node.isEnumDeclaration(node))return"enum";if(import_ts_morph4.Node.isModuleDeclaration(node)||import_ts_morph4.Node.isSourceFile(node))return"namespace";if(import_ts_morph4.Node.isTypeAliasDeclaration(node))return"type"}function strongest(kinds){return[...kinds].sort((a,b)=>STRENGTH.indexOf(a)-STRENGTH.indexOf(b))[0]??"type"}function jsDocTag(nodes,name){for(let declared of nodes){let node=import_ts_morph4.Node.isVariableDeclaration(declared)?declared.getVariableStatement()??declared:declared;if(import_ts_morph4.Node.isJSDocable(node)){for(let doc of node.getJsDocs())for(let tag of doc.getTags())if(tag.getTagName()===name){let text=tag.getCommentText()?.trim();return text||!0}}}}function deprecatedOf(nodes){return jsDocTag(nodes,"deprecated")}function isInternal(nodes){return jsDocTag(nodes,"internal")!==void 0}function isProtected(nodes){return nodes.some(n=>import_ts_morph4.Node.isScoped(n)&&n.getScope()==="protected")}function memberName(node){let raw=node.getName();if(/^['"]/.test(raw))try{return JSON.parse(raw.replace(/^'(.*)'$/s,(_,s)=>JSON.stringify(s)))}catch{return raw}return raw}function typeParams(node){if(!import_ts_morph4.Node.isTypeParametered(node))return"";let params2=node.getTypeParameters();return params2.length===0?"":`<${params2.map(p=>printNode(p)).join(", ")}>`}function expandable(typeNode){if(typeNode){if(import_ts_morph4.Node.isTypeLiteral(typeNode))return{literal:typeNode,array:!1};if(import_ts_morph4.Node.isArrayTypeNode(typeNode)){let el=typeNode.getElementTypeNode();if(import_ts_morph4.Node.isTypeLiteral(el))return{literal:el,array:!0}}if(import_ts_morph4.Node.isTypeReference(typeNode)){let name=typeNode.getTypeName().getText(),args=typeNode.getTypeArguments(),first=args[0];if((name==="Array"||name==="ReadonlyArray")&&args.length===1&&first&&import_ts_morph4.Node.isTypeLiteral(first))return{literal:first,array:!0}}}}function modifiers(node){let parts=[];return import_ts_morph4.Node.isScoped(node)&&node.getScope()==="protected"&&parts.push("protected"),import_ts_morph4.Node.isAbstractable(node)&&node.isAbstract()&&parts.push("abstract"),import_ts_morph4.Node.isReadonlyable(node)&&node.isReadonly()&&parts.push("readonly"),parts.length===0?"":`${parts.join(" ")} `}function isHidden(node){return import_ts_morph4.Node.isScoped(node)&&node.getScope()==="private"?!0:(import_ts_morph4.Node.hasName(node)?node.getName():"").startsWith("#")}var MAX_NESTING=32;function emit(ctx,symbol,nodes){let full2={...symbol,exportedFrom:[ctx.sink.entry]};full2.optional===void 0&&delete full2.optional,full2.deprecated===void 0&&delete full2.deprecated;let visibility=ctx.visibility??(isInternal(nodes)?"internal":isProtected(nodes)?"protected":void 0);visibility&&(full2.visibility=visibility),ctx.exportEquals&&symbol.path===ctx.root&&(full2.exportEquals=!0);let first=nodes[0];if(first&&(full2.file=relative(ctx.sink.packageDir,first.getSourceFile().getFilePath()).split("\\").join("/")),first&&!ctx.inherited){let cls=ctx.sink.byDeclaration.get(first.compilerNode)??{symbols:[]};cls.declaredName===void 0&&import_ts_morph4.Node.hasName(first)&&(cls.declaredName=first.getName()),cls.symbols.push(full2);for(let node of nodes)ctx.sink.byDeclaration.set(node.compilerNode,cls)}return ctx.sink.emit(ctx.root,full2),visibility==="internal"?{...ctx,visibility}:ctx}function assignAliases(byDeclaration){for(let{declaredName,symbols}of byDeclaration.values()){let distinct=new Map;for(let s of symbols){let list=distinct.get(s.path)??[];list.push(s),distinct.set(s.path,list)}if(distinct.size<2)continue;let rank=path=>[splitPath(path).segments.length,leafOf(path)===declaredName?0:1],canonical;for(let path of distinct.keys()){if(canonical===void 0){canonical=path;continue}let[a,b]=[rank(path),rank(canonical)];(a[0]<b[0]||a[0]===b[0]&&a[1]<b[1])&&(canonical=path)}for(let[path,list]of distinct)if(path!==canonical)for(let s of list)s.aliasOf=canonical}}function walkProperty(ctx,path,node){let typeNode=node.getTypeNode(),expansion=expandable(typeNode),type=typeNode?printTypeNode(typeNode,expansion?{collapse:expansion.literal.compilerNode}:{}):"any",symbol={path,kind:"property",signature:`${modifiers(node)}${type}`,deprecated:deprecatedOf([node])};node.hasQuestionToken()&&(symbol.optional=!0);let inner=emit(ctx,symbol,[node]);expansion&&walkTypeMembers(inner,expansion.array?element(path):path,[expansion.literal])}function walkAccessors(ctx,path,getters,setters){let getter=getters[0],setter=setters[0],typeNode=getter?.getReturnTypeNode()??setter?.getParameters()[0]?.getTypeNode(),type=typeNode?printTypeNode(typeNode):"any",readonly=setter===void 0?"readonly ":"",scope=getter??setter,prot=import_ts_morph4.Node.isScoped(scope)&&scope.getScope()==="protected"?"protected ":"";emit(ctx,{path,kind:"property",signature:`${prot}${readonly}${type}`,deprecated:deprecatedOf([...getters,...setters])},[...getters,...setters])}function walkCallableGroup(ctx,path,nodes,optional=!1){let symbol={path,kind:"method",signature:nodes.map(n=>`${modifiers(n)}${printCallable(n)}`).join("; "),deprecated:deprecatedOf(nodes)};optional&&(symbol.optional=!0),emit(ctx,symbol,nodes)}function groupBy(items,key2){let out=new Map;for(let item of items){let k=key2(item),list=out.get(k);list?list.push(item):out.set(k,[item])}return out}function walkTypeMembers(ctx,path,containers){let props=containers.flatMap(c=>c.getProperties());for(let prop of props)walkProperty(ctx,instanceMember(path,memberName(prop)),prop);let methods=groupBy(containers.flatMap(c=>c.getMethods()),m=>memberName(m));for(let[name,overloads]of methods)walkCallableGroup(ctx,instanceMember(path,name),overloads,overloads.some(m=>m.hasQuestionToken()));let getters=groupBy(containers.flatMap(c=>c.getGetAccessors()),g=>memberName(g)),setters=groupBy(containers.flatMap(c=>c.getSetAccessors()),s=>memberName(s));for(let name of new Set([...getters.keys(),...setters.keys()]))walkAccessors(ctx,instanceMember(path,name),getters.get(name)??[],setters.get(name)??[]);let calls=containers.flatMap(c=>c.getCallSignatures());calls.length>0&&walkCallableGroup(ctx,callSignature(path),calls);let constructs=containers.flatMap(c=>c.getConstructSignatures());constructs.length>0&&walkCallableGroup(ctx,constructSignature(path),constructs);for(let index of containers.flatMap(c=>c.getIndexSignatures())){let keyType=printNode(index.getKeyTypeNode()),valueType=index.getReturnTypeNode();emit(ctx,{path:indexSignature(path,keyType),kind:"property",signature:`${index.isReadonly()?"readonly ":""}${valueType?printNode(valueType):"any"}`,deprecated:deprecatedOf([index])},[index])}}function walkClassMembers(ctx,path,classes){let ctors=classes.flatMap(c=>c.getConstructors());ctors.length>0&&walkCallableGroup(ctx,constructSignature(path),ctors);let member=(node,name)=>node.isStatic()?staticMember(path,name):instanceMember(path,name);for(let prop of classes.flatMap(c=>c.getProperties()))isHidden(prop)||walkProperty(ctx,member(prop,memberName(prop)),prop);let methods=groupBy(classes.flatMap(c=>c.getMethods()).filter(m=>!isHidden(m)),m=>`${m.isStatic()?"s":"i"}:${memberName(m)}`);for(let overloads of methods.values()){let first=overloads[0];walkCallableGroup(ctx,member(first,memberName(first)),overloads,overloads.some(m=>m.hasQuestionToken()))}let getters=groupBy(classes.flatMap(c=>c.getGetAccessors()).filter(g=>!isHidden(g)),g=>`${g.isStatic()?"s":"i"}:${memberName(g)}`),setters=groupBy(classes.flatMap(c=>c.getSetAccessors()).filter(s=>!isHidden(s)),s=>`${s.isStatic()?"s":"i"}:${memberName(s)}`);for(let key2 of new Set([...getters.keys(),...setters.keys()])){let any=(getters.get(key2)??setters.get(key2))?.[0];walkAccessors(ctx,member(any,memberName(any)),getters.get(key2)??[],setters.get(key2)??[])}}function walkInheritedMembers(ctx,path,decls,own){let first=decls[0];if(!first)return;let inner={...ctx,inherited:!0},inPackage=node=>node.getSourceFile().getFilePath().startsWith(`${ctx.sink.packageDir}/`),emitMember=(memberPath,nodes)=>{let usable=nodes.filter(inPackage).filter(n=>!isHidden(n));if(usable.length===0)return;let props=usable.filter(n=>import_ts_morph4.Node.isPropertyDeclaration(n)||import_ts_morph4.Node.isPropertySignature(n)),methods=usable.filter(n=>import_ts_morph4.Node.isMethodDeclaration(n)||import_ts_morph4.Node.isMethodSignature(n)),getters=usable.filter(import_ts_morph4.Node.isGetAccessorDeclaration),setters=usable.filter(import_ts_morph4.Node.isSetAccessorDeclaration);methods.length>0?walkCallableGroup(inner,memberPath,methods,methods.some(m=>import_ts_morph4.Node.isQuestionTokenable(m)&&m.hasQuestionToken())):props[0]?walkProperty(inner,memberPath,props[0]):(getters.length>0||setters.length>0)&&walkAccessors(inner,memberPath,getters,setters)},instance=first.getType();for(let prop of instance.getProperties()){let name=prop.getName();own.has(`i:${name}`)||emitMember(instanceMember(path,name),prop.getDeclarations())}let cls=decls.find(import_ts_morph4.Node.isClassDeclaration);if(cls){let symbol=cls.getSymbol();if(!symbol)return;let statics=ctx.sink.checker.getTypeOfSymbolAtLocation(symbol,cls);for(let prop of statics.getProperties()){let name=prop.getName();name==="prototype"||own.has(`s:${name}`)||emitMember(staticMember(path,name),prop.getDeclarations())}}}function ownMemberKeys(decls){let keys=new Set;for(let d of decls){for(let m of[...d.getProperties(),...d.getMethods()])keys.add(`${import_ts_morph4.Node.isStaticable(m)&&m.isStatic()?"s":"i"}:${memberName(m)}`);for(let m of[...d.getGetAccessors(),...d.getSetAccessors()])keys.add(`${import_ts_morph4.Node.isStaticable(m)&&m.isStatic()?"s":"i"}:${memberName(m)}`)}return keys}function classHeader(cls){let parts=[cls.isAbstract()?"abstract class":"class"];parts[0]+=typeParams(cls);let ext=cls.getExtends();ext&&parts.push(`extends ${printNode(ext)}`);let impl=cls.getImplements();return impl.length>0&&parts.push(`implements ${impl.map(i=>printNode(i)).join(", ")}`),parts.join(" ")}function interfaceHeader(decls){let first=decls[0],ext=decls.flatMap(d=>d.getExtends()).map(e=>printNode(e));return`interface${typeParams(first)}${ext.length>0?` extends ${[...new Set(ext)].sort().join(", ")}`:""}`}function enumHeader(decl){return decl.isConstEnum()?"const enum":"enum"}function walkEnumMembers(ctx,path,decls){for(let member of decls.flatMap(d=>d.getMembers())){let value=member.getValue();emit(ctx,{path:staticMember(path,memberName(member)),kind:"enumMember",signature:value===void 0?"":JSON.stringify(value),deprecated:deprecatedOf([member])},[member])}}function variableKeyword(decl){return decl.getVariableStatement()?.getDeclarationKind()??"const"}function resolveAlias(symbol){return(symbol.getFlags()&import_ts_morph4.ts.SymbolFlags.Alias)!==0?symbol.getAliasedSymbol()??symbol:symbol}function namedExports(symbols){let out=new Map;for(let exp of symbols){let name=exp.getName();if(name==="prototype"||name===import_ts_morph4.ts.InternalSymbolName.ExportEquals)continue;let decls=resolveAlias(exp).getDeclarations().filter(d=>!import_ts_morph4.Node.isClassDeclaration(d.getParent()));decls.length>0&&out.set(name,decls)}return out}function mergedSymbol(ctx,node){return import_ts_morph4.Node.isSourceFile(node)?node.getSymbol():ctx.sink.checker.getSymbolAtLocation(node.getNameNode())}function namespaceExports(ctx,modules){let first=modules[0],symbol=first?mergedSymbol(ctx,first):void 0;return symbol?namedExports(symbol.getExports()):new Map}function walkNamed(parent,path,decls){let kinds=decls.map(kindOf).filter(k=>k!==void 0);if(kinds.length===0)return;let kind=strongest(kinds),cycle=decls.map(d=>parent.ancestors?.get(d.compilerNode)).find(p=>p!==void 0),depth2=(parent.depth??0)+1;if(cycle!==void 0||depth2>MAX_NESTING){emit(parent,{path,kind,signature:cycle!==void 0?`recursive type ${cycle} (compared by name)`:`nested deeper than ${MAX_NESTING} levels (compared by name)`,deprecated:deprecatedOf(decls)},decls);return}let ancestors=new Map(parent.ancestors);for(let d of decls)ancestors.set(d.compilerNode,path);let ctx={...parent,ancestors,depth:depth2},classes=decls.filter(import_ts_morph4.Node.isClassDeclaration),functions=decls.filter(import_ts_morph4.Node.isFunctionDeclaration),variables=decls.filter(import_ts_morph4.Node.isVariableDeclaration),interfaces=decls.filter(import_ts_morph4.Node.isInterfaceDeclaration),enums=decls.filter(import_ts_morph4.Node.isEnumDeclaration),modules=decls.filter(import_ts_morph4.Node.isModuleDeclaration),sourceFiles=decls.filter(import_ts_morph4.Node.isSourceFile),aliases=decls.filter(import_ts_morph4.Node.isTypeAliasDeclaration),signature="",expandLiteral;switch(kind){case"class":signature=classHeader(classes[0]);break;case"function":signature=functions.map(f=>printCallable(f)).join("; ");break;case"variable":{let v=variables[0],typeNode=v.getTypeNode(),expansion=expandable(typeNode);expansion&&!expansion.array&&(expandLiteral=expansion.literal);let type=typeNode?printTypeNode(typeNode,expandLiteral?{collapse:expandLiteral.compilerNode}:{}):"any";signature=`${variableKeyword(v)} ${type}`;break}case"interface":signature=interfaceHeader(interfaces);break;case"enum":signature=enumHeader(enums[0]);break;case"namespace":signature="namespace";break;case"type":{let alias=aliases[0],typeNode=alias.getTypeNode();typeNode&&import_ts_morph4.Node.isTypeLiteral(typeNode)?(expandLiteral=typeNode,signature=`type${typeParams(alias)}`):signature=`type${typeParams(alias)} = ${typeNode?printTypeNode(typeNode):"any"}`;break}case"module":signature="module";break;default:return}let inner=emit(ctx,{path,kind,signature,deprecated:deprecatedOf(decls)},decls);if(classes.length>0&&walkClassMembers(inner,path,classes),interfaces.length>0&&walkTypeMembers(inner,path,interfaces),classes.length>0||interfaces.length>0){let containers=[...classes,...interfaces];walkInheritedMembers(inner,path,containers,ownMemberKeys(containers))}if(expandLiteral&&walkTypeMembers(inner,path,[expandLiteral]),enums.length>0&&walkEnumMembers(inner,path,enums),modules.length>0)for(let[name,decl]of namespaceExports(inner,modules))walkNamed(inner,staticMember(path,name),decl);for(let sf of sourceFiles)for(let[name,decl]of moduleExports(inner,sf))walkNamed(inner,staticMember(path,name),decl)}function defaultExportPath(decls){for(let d of decls)if((import_ts_morph4.Node.isClassDeclaration(d)||import_ts_morph4.Node.isFunctionDeclaration(d)||import_ts_morph4.Node.isEnumDeclaration(d)||import_ts_morph4.Node.isInterfaceDeclaration(d)||import_ts_morph4.Node.isModuleDeclaration(d))&&d.getName())return topLevel(d.getName());return topLevel("default")}function moduleExports(ctx,container){let symbol=mergedSymbol(ctx,container);if(!symbol)return new Map;let equals=symbol.getExports().find(e=>e.getName()===import_ts_morph4.ts.InternalSymbolName.ExportEquals);if(equals){let decls=resolveAlias(equals).getDeclarations();return new Map(decls.length>0?[[import_ts_morph4.ts.InternalSymbolName.ExportEquals,decls]]:[])}return namedExports(ctx.sink.checker.getExportsOfModule(symbol))}function walkModule(sink,container,scope){let ctx={sink,root:""};for(let[name,decls]of moduleExports(ctx,container)){let bare=name==="default"||name===import_ts_morph4.ts.InternalSymbolName.ExportEquals?defaultExportPath(decls):topLevel(name),root=scope===void 0?bare:scoped(scope,bare),set=sink.rootDecls.get(root)??new Set;for(let d of decls)set.add(d.compilerNode);sink.rootDecls.set(root,set);let ctxRoot={sink,root};name===import_ts_morph4.ts.InternalSymbolName.ExportEquals&&(ctxRoot.exportEquals=!0),walkNamed(ctxRoot,root,decls)}}function ownEntryOf(moduleName,packageName){if(moduleName===packageName)return".";if(moduleName.startsWith(`${packageName}/`))return`./${moduleName.slice(packageName.length+1)}`}function ambientModuleName(mod){if(mod.getDeclarationKind()!=="module")return;let name=mod.getName();return/^['"]/.test(name)?name.slice(1,-1):void 0}var MODIFIERS=/^(readonly |protected |abstract |static |const |let |var )+/,IDENTIFIER2=/^[A-Za-z_$][\w$]*$/;function scanDepth(text,from,visit){let depth2=0;for(let i=from;i<text.length;i++){let ch=text[i];if(ch==='"'||ch==="'"||ch==="`"){for(i++;i<text.length&&text[i]!==ch;i++)text[i]==="\\"&&i++;continue}if(visit(ch,i,depth2))return;ch==="<"||ch==="("||ch==="["||ch==="{"?depth2++:(ch===">"&&text[i-1]!=="="||ch===")"||ch==="]"||ch==="}")&&depth2--}}function closingAngle(text,open){let close;return scanDepth(text,open,(ch,i,depth2)=>(depth2===1&&ch===">"&&text[i-1]!=="="&&(close=i),close!==void 0)),close}var HEADER=/^(?:abstract )?(?:class|interface|type)</;function headerTypeParams(symbol){if(!symbol)return;let m=HEADER.exec(symbol.signature);if(!m)return;let close=closingAngle(symbol.signature,m[0].length-1);return close===void 0?void 0:symbol.signature.slice(m[0].length,close)}function countParams(list){let n=1;return scanDepth(list,0,(ch,_i,depth2)=>(ch===","&&depth2===0&&n++,!1)),n}function aliasBody(sig){let m=HEADER.exec(sig),close=m?closingAngle(sig,m[0].length-1):void 0;if(m&&close===void 0)return;let eq=sig.indexOf(" = ",close??0);return eq===-1?void 0:sig.slice(eq+3)}function overloadMembers(signature,prefix){let overloads=parseCallable(signature.replace(MODIFIERS,""));if(overloads)return overloads.map(o=>{let params2=[...o.thisType!==void 0?[`this: ${o.thisType}`]:[],...o.params.map(p=>`${p.rest?"...":""}${p.name}${p.optional?"?":""}: ${p.type}`)].join(", "),tp=o.typeParams.length>0?`<${o.typeParams.join(", ")}>`:"";return`${prefix}${tp}(${params2}): ${o.returnType}`})}function expandCollapsed(text,path,symbols){if(!text.includes("{\u2026}"))return text;let container=text==="{\u2026}"?path:`${path}[]`,members=[];for(let s of symbols.values()){if(parentOf(s.path)!==container)continue;let leaf=leafOf(s.path),sep4=s.path[container.length];if(leaf==="()"){members.push(...overloadMembers(s.signature,"")??[]);continue}if(leaf==="new()"){members.push(...overloadMembers(s.signature,"new ")??[]);continue}if(leaf.startsWith("[")&&sep4==="#"){members.push(`[key: ${leaf.slice(1,-1)}]: ${s.signature.replace(MODIFIERS,"")}`);continue}let name=IDENTIFIER2.test(leaf)?leaf:JSON.stringify(leaf),optional=s.optional?"?":"";if(s.kind==="method"){let overloads=overloadMembers(s.signature,`${name}${optional}`);if(!overloads)return;members.push(...overloads)}else{let inner=expandCollapsed(s.signature.replace(MODIFIERS,""),s.path,symbols);if(inner===void 0)return;members.push(`${s.signature.startsWith("readonly ")?"readonly ":""}${name}${optional}: ${inner}`)}}let literal=`{ ${members.join("; ")} }`;return text.replace("{\u2026}",literal)}function bodyFor(symbol,path,symbols,container){let sig=symbol.signature.replace(/\bthis\b(?!\s*:)/g,container??"this");if(sig!=="")switch(symbol.kind){case"property":case"variable":return expandCollapsed(sig.replace(MODIFIERS,""),path,symbols);case"enumMember":return sig;case"function":case"method":{let members=overloadMembers(sig,leafOf(path)==="new()"?"new ":"");return members?`{ ${members.join("; ")} }`:void 0}case"type":return aliasBody(sig);default:return}}function aliasFor(name,path,symbols){let symbol=symbols.get(path);if(!symbol)return;let params2=[],own=symbol.kind==="type"?headerTypeParams(symbol):void 0,containerRef;for(let p=parentOf(path);p!==void 0;p=parentOf(p)){let parent=symbols.get(p),tp=headerTypeParams(parent);if(tp&¶ms2.unshift(tp),containerRef===void 0&&parent&&(parent.kind==="class"||parent.kind==="interface")){let{scope,segments}=splitPath(p);if(scope===void 0&&segments.every((seg,i)=>i===0||seg.startsWith("."))){let anys2=tp?`<${Array.from({length:countParams(tp)},()=>"any").join(", ")}>`:"";containerRef=`${segments.join("")}${anys2}`}}}let body=bodyFor(symbol,path,symbols,containerRef);if(body===void 0)return;own&¶ms2.push(own);let list=params2.join(", "),anys=params2.map(p=>Array.from({length:countParams(p)},()=>"any").join(", ")).join(", ");return{statements:[`type ${name}${list?`<${list}>`:""} = ${body};`,`type ${name}$ = ${name}${list?`<${anys}>`:""};`]}}function isAnyLike(type){return(type.getFlags()&(import_ts_morph3.ts.TypeFlags.Any|import_ts_morph3.ts.TypeFlags.Unknown))!==0}function isErrorType(type){return type.compilerType.intrinsicName==="error"}function relate(checker,before,after){let anyBefore=isAnyLike(before),anyAfter=isAnyLike(after);if(anyBefore&&anyAfter)return"equivalent";if(anyBefore)return"narrowed";if(anyAfter)return"widened";let oldToNew=checker.isTypeAssignableTo(before.compilerType,after.compilerType),newToOld=checker.isTypeAssignableTo(after.compilerType,before.compilerType);return oldToNew&&newToOld?"equivalent":oldToNew?"widened":newToOld?"narrowed":"incompatible"}function parameterInfo(sig){return sig.getParameters().map(p=>{let decl=p.getDeclarations()[0],node=decl?.compilerNode,optional=node!==void 0&&import_ts_morph3.ts.isParameter(node)?node.questionToken!==void 0||node.dotDotDotToken!==void 0||node.initializer!==void 0:!1,declared=decl?p.getTypeAtLocation(decl):sig.getReturnType(),type=optional?declared.getNonNullableType():declared;return{name:p.getName(),type,optional}})}function compareSignatures(checker,before,after){let pa=parameterInfo(before),pb=parameterInfo(after),parameters=[];for(let i=0;i<Math.max(pa.length,pb.length);i++){let a=pa[i],b=pb[i];a&&!b?parameters.push({name:a.name,relation:"removed",optionalBefore:a.optional,optionalAfter:!1}):!a&&b?parameters.push({name:b.name,relation:"added",optionalBefore:!1,optionalAfter:b.optional}):a&&b&¶meters.push({name:a.name,relation:relate(checker,a.type,b.type),optionalBefore:a.optional,optionalAfter:b.optional})}let result={parameters,returnType:relate(checker,before.getReturnType(),after.getReturnType())},thisA=thisParameter(before),thisB=thisParameter(after);return thisA&&!thisB?result.thisParameter={relation:"removed",before:thisA.text}:!thisA&&thisB?result.thisParameter={relation:"added",after:thisB.text}:thisA&&thisB&&(result.thisParameter={relation:relate(checker,thisA.type,thisB.type),before:thisA.text,after:thisB.text}),result}function thisParameter(sig){let decl=sig.getDeclaration();if(!import_ts_morph3.Node.isParametered(decl))return;let param=decl.getParameters().find(p=>p.getName()==="this");if(!param)return;let type=param.getType();return{type,text:type.getText(param,import_ts_morph3.ts.TypeFormatFlags.NoTruncation)}}function compare(checker,before,after,construct){let sigsA=construct?before.getConstructSignatures():before.getCallSignatures(),sigsB=construct?after.getConstructSignatures():after.getCallSignatures(),callable=sigsA.length>0&&sigsB.length>0,result={relation:relate(checker,before,after),callable};callable&&(result.typeParameterCounts={before:sigsA.map(s=>s.getTypeParameters().length),after:sigsB.map(s=>s.getTypeParameters().length)});let generic=[...sigsA,...sigsB].some(s=>s.getTypeParameters().length>0);return callable&&sigsA.length===sigsB.length&&!generic&&(result.signatures=sigsA.map((s,i)=>compareSignatures(checker,s,sigsB[i]))),result}function hasErrorInside(file,name){let generic=file.getTypeAlias(name);return generic?generic.getTypeNode()?.getDescendants().some(d=>import_ts_morph3.Node.isTypeReference(d)&&isErrorType(d.getType()))??!1:!0}function scopeForEntry(project,file,entry,packageName){if(file.getSymbol()!==void 0)return file;let wanted=entry==="."?packageName:`${packageName}/${entry.slice(2)}`;for(let sf of project.getSourceFiles())for(let mod of sf.getModules())if(ambientModuleName(mod)===wanted&&ownEntryOf(wanted,packageName)===entry)return mod}function namespaceScope(project,scope,path){let checker=project.getTypeChecker(),moduleSymbol=import_ts_morph3.Node.isSourceFile(scope)?scope.getSymbol():checker.getSymbolAtLocation(scope.getNameNode());if(!moduleSymbol)return scope;let exports=checker.getExportsOfModule(moduleSymbol),current=scope;for(let seg of splitPath(path).segments){if(!/^\.?[A-Za-z_$"]/.test(seg)||seg===".new()")break;let name=seg.startsWith(".")?seg.slice(1):seg,found=exports.find(e=>e.getName()===name);if(!found)break;let symbol=(found.getFlags()&import_ts_morph3.ts.SymbolFlags.Alias)!==0?found.getAliasedSymbol()??found:found,block=symbol.getDeclarations().find(d=>import_ts_morph3.Node.isModuleDeclaration(d)&&d.getBody()!==void 0);if(!block)break;current=block,exports=symbol.getExports()}return current}async function compareTypesWithChecker(input){let entries=resolveEntryPoints(input.b.dir,input.b.name,input.b.version),dir=mkdtempSync(join3(tmpdir(),"uptide-compat-")),out=new Map;try{let paths={};for(let{entry,file}of entries)paths[entry==="."?"__b":`__b/${entry.slice(2)}`]=[file];let project=new import_ts_morph3.Project({skipAddingFilesFromTsConfig:!0,skipFileDependencyResolution:!0,compilerOptions:{strict:!0,module:import_ts_morph3.ts.ModuleKind.Preserve,moduleResolution:import_ts_morph3.ts.ModuleResolutionKind.Bundler,target:import_ts_morph3.ts.ScriptTarget.ESNext,esModuleInterop:!0,skipLibCheck:!0,noEmit:!0,types:[],baseUrl:dir,paths}}),entryFiles=new Map(entries.map(e=>[e.entry,project.addSourceFileAtPath(e.file)]));project.resolveSourceFileDependencies();let symbolsA=new Map(input.surfaceA.symbols.map(s=>[s.path,s])),symbolsB=new Map(input.surfaceB.symbols.map(s=>[s.path,s])),byEntry=new Map;for(let path of input.paths){let entry=splitPath(path).scope??".";if(!entryFiles.has(entry))continue;let list=byEntry.get(entry)??[];list.push(path),byEntry.set(entry,list)}let planned=[],index=0;for(let[entry,pathsHere]of byEntry){let file=entryFiles.get(entry),scope=scopeForEntry(project,file,entry,input.b.name);if(!scope)continue;if(import_ts_morph3.Node.isSourceFile(scope)){let moduleSymbol=scope.getSymbol(),locals=new Set(scope.getLocals().map(l=>l.getName())),names=moduleSymbol?project.getTypeChecker().getExportsOfModule(moduleSymbol).map(e=>e.getName()).filter(n=>IDENTIFIER2.test(n)&&n!=="default"&&!locals.has(n)):[];names.length>0&&scope.addStatements(`import { ${names.join(", ")} } from ${JSON.stringify(entry==="."?"__b":`__b/${entry.slice(2)}`)};`)}let perScope=new Map;for(let path of pathsHere){let a=aliasFor(`__a_${index}`,path,symbolsA),b=aliasFor(`__b_${index}`,path,symbolsB);if(!a||!b)continue;let target=namespaceScope(project,scope,path),lines=perScope.get(target)??[];lines.push(...a.statements,...b.statements),perScope.set(target,lines),planned.push({path,scope:target,index,construct:leafOf(path)==="new()"}),index++}for(let[target,lines]of perScope)target.addStatements(lines)}if(process.env.UPTIDE_COMPAT_KEEP)for(let f of new Set(planned.map(p=>p.scope.getSourceFile())))writeFileSync(join3(dir,f.getBaseName()),f.getFullText());let checker=project.getTypeChecker().compilerObject;for(let{path,scope,index:i,construct}of planned){let a=scope.getTypeAlias(`__a_${i}$`),b=scope.getTypeAlias(`__b_${i}$`);if(!a||!b)continue;let typeA=a.getType(),typeB=b.getType();isErrorType(typeA)||isErrorType(typeB)||hasErrorInside(scope,`__a_${i}`)||hasErrorInside(scope,`__b_${i}`)||isAnyLike(typeA)&&isAnyLike(typeB)||out.set(path,compare(checker,typeA,typeB,construct))}return out}finally{process.env.UPTIDE_COMPAT_KEEP?console.error(`compat program kept at ${dir}`):rmSync(dir,{recursive:!0,force:!0})}}var MAX_HOPS=8;function deepestAt(tsc,root,position){let node=root;for(;;){let next;if(tsc.forEachChild(node,child=>{!next&&child.getStart()<=position&&position<child.getEnd()&&(next=child)}),!next)return node;node=next}}function offendingExpression(tsc,node){let n=node;for(;n&&!tsc.isExpression(n);)n=n.parent;if(n){for(;tsc.isPropertyAccessExpression(n.parent)&&n.parent.name===n;)n=n.parent;return n}}function counterpart(tsc,decl,program){let file=program.getSourceFile(decl.getSourceFile().fileName);if(!file)return;let node=deepestAt(tsc,file,decl.getStart());for(;node&&node.kind!==decl.kind;)node=node.parent;return node}function typeText(tsc,decl,program){let at=tsc.getNameOfDeclaration(decl)??decl,checker=program.getTypeChecker();try{return checker.typeToString(checker.getTypeAtLocation(at),void 0,tsc.TypeFormatFlags.NoTruncation).replace(/import\("[^"]*"\)\./g,"").replace(/\b[A-Za-z_$][\w$]*\.(?=[A-Z])/g,"")}catch{return}}function findCause(programs,diagnostic,file,repoDir,erroredLines){let tsc=programs.ts;if(diagnostic.start===void 0||!/\b(unknown|any)\b/.test(tsc.flattenDiagnosticMessageText(diagnostic.messageText," ")))return;let checker=programs.overlay.getTypeChecker(),inRepo=n=>{let f=n.getSourceFile().fileName;return f.startsWith(`${repoDir}/`)&&!f.includes("/node_modules/")},declarationOf=expr2=>{let symbol=checker.getSymbolAtLocation(expr2);return(symbol&&symbol.flags&tsc.SymbolFlags.Alias?checker.getAliasedSymbol(symbol):symbol)?.declarations?.[0]},lineOf=n=>{let f=n.getSourceFile(),named=tsc.getNameOfDeclaration(n);return`${relative2(repoDir,f.fileName)}:${f.getLineAndCharacterOfPosition((named??n).getStart()).line+1}`},site2=`${relative2(repoDir,file.fileName)}:${file.getLineAndCharacterOfPosition(diagnostic.start).line+1}`,judge=decl=>{let at=lineOf(decl);if(at===site2)return;if(erroredLines.has(at))return causeAt(tsc,decl,"which itself fails to compile against the target",repoDir);let before=counterpart(tsc,decl,programs.base),after=typeText(tsc,decl,programs.overlay),earlier=before?typeText(tsc,before,programs.base):void 0;if(after!==void 0&&earlier!==void 0&&after!==earlier)return causeAt(tsc,decl,`whose type changed from \`${clip(earlier)}\` to \`${clip(after)}\``,repoDir)},isAny=n=>(checker.getTypeAtLocation(n).flags&tsc.TypeFlags.Any)!==0,origin=start=>{let n=start;for(let hop=0;n&&hop<MAX_HOPS;hop++){if(tsc.isParenthesizedExpression(n)||tsc.isAwaitExpression(n)||tsc.isAsExpression(n)){n=n.expression;continue}if(tsc.isCallExpression(n)||tsc.isNewExpression(n)){n=tsc.isPropertyAccessExpression(n.expression)?n.expression.expression:n.expression;continue}if(tsc.isPropertyAccessExpression(n)){n=n.expression;continue}if(!tsc.isIdentifier(n))return;let decl=checker.getSymbolAtLocation(n)?.declarations?.[0];if(!decl||!inRepo(decl))return;if(tsc.isImportSpecifier(decl)||tsc.isImportClause(decl)||tsc.isNamespaceImport(decl)){let importDecl=decl.getSourceFile()&&findImportDeclaration(tsc,decl),from=importDecl?importDecl.moduleSpecifier.getText().replace(/['"]/g,""):"an import";return causeAt(tsc,decl,`imported from \`${from}\`, which is typed \`any\` against the target`,repoDir)}let judged=judge(decl);if(judged)return judged;if(tsc.isVariableDeclaration(decl)&&decl.initializer){n=decl.initializer;continue}return}},expr=offendingExpression(tsc,deepestAt(tsc,file,diagnostic.start));for(let hop=0;expr&&hop<MAX_HOPS;hop++){if(tsc.isParenthesizedExpression(expr)||tsc.isAwaitExpression(expr)||tsc.isAsExpression(expr)){expr=expr.expression;continue}if(tsc.isCallExpression(expr)||tsc.isNewExpression(expr)){let call=expr,callee=call.expression,target=tsc.isPropertyAccessExpression(callee)?callee.name:callee,decl=declarationOf(target);if(decl&&inRepo(decl)){let judged=judge(decl);if(judged)return judged;let anyArg=(call.arguments??[]).find(a=>isAny(a));if(anyArg)return origin(anyArg);expr=returnedExpression(tsc,decl);continue}expr=tsc.isPropertyAccessExpression(callee)?callee.expression:void 0;continue}if(tsc.isIdentifier(expr)||tsc.isPropertyAccessExpression(expr)){let target=tsc.isPropertyAccessExpression(expr)?expr.name:expr,decl=declarationOf(target);if(!decl||!inRepo(decl)){if(tsc.isPropertyAccessExpression(expr)){expr=expr.expression;continue}return tsc.isIdentifier(expr)&&isAny(expr)?origin(expr):void 0}if(tsc.isImportSpecifier(decl)||tsc.isImportClause(decl)||tsc.isNamespaceImport(decl))return isAny(expr)?origin(expr):void 0;let judged=judge(decl);if(judged)return judged;if(tsc.isVariableDeclaration(decl)||tsc.isPropertyDeclaration(decl)){expr=decl.initializer;continue}if(tsc.isParameter(decl)){let fn=decl.parent;if(tsc.isCallExpression(fn.parent)){expr=fn.parent;continue}return judge(fn)}if((tsc.isPropertySignature(decl)||tsc.isPropertyAssignment(decl))&&tsc.isPropertyAccessExpression(expr)){expr=expr.expression;continue}return}return}}function findImportDeclaration(tsc,node){let n=node;for(;n&&!tsc.isImportDeclaration(n);)n=n.parent;return n}function returnedExpression(tsc,decl){let body;if(tsc.isVariableDeclaration(decl)&&decl.initializer?body=decl.initializer:tsc.isFunctionLike(decl)&&"body"in decl&&(body=decl.body),!body)return;if((tsc.isArrowFunction(body)||tsc.isFunctionExpression(body))&&(body=body.body),body&&tsc.isExpression(body))return body;let returned,visit=n=>{returned||(tsc.isReturnStatement(n)&&n.expression?returned=n.expression:tsc.isFunctionLike(n)||tsc.forEachChild(n,visit))};return body&&tsc.forEachChild(body,visit),returned}function clip(text){let one=text.replace(/\s+/g," ");return one.length>80?`${one.slice(0,77)}...`:one}function causeAt(tsc,decl,reason,repoDir){let file=decl.getSourceFile(),holder=decl,named=tsc.getNameOfDeclaration(decl);for(;!named&&holder.parent&&!tsc.isSourceFile(holder.parent)&&(holder=holder.parent,!(tsc.isBlock(holder)||tsc.isCallExpression(holder)));)named=tsc.getNameOfDeclaration(holder);let{line}=file.getLineAndCharacterOfPosition((named??decl).getStart());return{name:named?named.getText():"(anonymous)",file:relative2(repoDir,file.fileName).split("\\").join("/"),line:line+1,reason}}var MISMATCH_CODES=new Set([2345,2322]);function parameterCause(programs,diagnostic,file,repoDir,rootDir=repoDir){let tsc=programs.ts;if(diagnostic.start===void 0||!MISMATCH_CODES.has(diagnostic.code))return;let checker=programs.overlay.getTypeChecker(),inRepo=n=>{let f=n.getSourceFile().fileName;return f.startsWith(`${rootDir}/`)&&!f.includes("/node_modules/")},node=deepestAt(tsc,file,diagnostic.start),decl;for(let n=node;n&&!tsc.isStatement(n);n=n.parent){let parent=n.parent;if(parent&&(tsc.isCallExpression(parent)||tsc.isNewExpression(parent))){let index=parent.arguments?.indexOf(n)??-1;if(index<0)continue;let parameters=checker.getResolvedSignature(parent)?.parameters??[];decl=parameters[Math.min(index,parameters.length-1)]?.valueDeclaration;break}if(parent&&tsc.isJsxAttribute(parent)&&parent.initializer===n){decl=checker.getSymbolAtLocation(parent.name)?.declarations?.[0];break}}if(!decl||!inRepo(decl)||!tsc.isParameter(decl)&&!tsc.isPropertySignature(decl)&&!tsc.isPropertyDeclaration(decl))return;let typeNode=decl.type;if(!typeNode||!namesForeignType(tsc,typeNode,checker,inRepo))return;let site2=`${relative2(repoDir,file.fileName)}:${file.getLineAndCharacterOfPosition(diagnostic.start).line+1}`,at=decl.getSourceFile();if(`${relative2(repoDir,at.fileName)}:${at.getLineAndCharacterOfPosition(decl.getStart()).line+1}`===site2)return;let what=tsc.isParameter(decl)?"parameter":"prop",name=tsc.getNameOfDeclaration(decl)?.getText()??"(anonymous)",cause=causeAt(tsc,decl,`whose ${what} \`${name}: ${clip(typeNode.getText())}\` no longer accepts what the target gives it; widen the ${what}'s type there`,repoDir);return{...cause,name,line:cause.line,anchorOnly:!0}}function namesForeignType(tsc,typeNode,checker,inRepo){let foreign=!1,visit=n=>{if(!foreign){if(tsc.isTypeReferenceNode(n)||tsc.isExpressionWithTypeArguments(n)){let name=tsc.isTypeReferenceNode(n)?n.typeName:n.expression,symbol=checker.getSymbolAtLocation(name);(symbol&&symbol.flags&tsc.SymbolFlags.Alias?checker.getAliasedSymbol(symbol):symbol)?.declarations?.some(d=>!inRepo(d))&&(foreign=!0)}tsc.forEachChild(n,visit)}};return visit(typeNode),foreign}var JSX_NAMESPACE_CODES=new Set([7026,2602]);function jsxSettingLocation(tsc,configFile){let seen=new Set;for(let file=configFile;!seen.has(file);){seen.add(file);let text;try{text=readFileSync2(file,"utf8")}catch{return}let parsed4=tsc.parseConfigFileTextToJson(file,text).config;if(parsed4?.compilerOptions?.jsx!==void 0){let at=text.search(/"jsx"\s*:/),line=at<0?1:text.slice(0,at).split(`
|
|
146
|
+
`)&&(body=trimEnd(body)),!body)return;body=body.replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION,"!").replace(REGEX_REPLACE_LEADING_EXCAPED_HASH,"#");let regexPrefix=makeRegexPrefix(body);return new IgnoreRule(pattern,mark,body,ignoreCase,negative,regexPrefix)},RuleManager=class{constructor(ignoreCase){this._ignoreCase=ignoreCase,this._rules=[],this._basenameCount=0}_add(pattern){if(pattern&&pattern[KEY_IGNORE]){this._rules=this._rules.concat(pattern._rules._rules),this._basenameCount+=pattern._rules._basenameCount,this._added=!0;return}isString(pattern)&&(pattern={pattern});let rule=checkPattern(pattern.pattern)&&createRule(pattern,this._ignoreCase);rule&&(this._added=!0,this._rules.push(rule),matchesBasename(rule.body)&&this._basenameCount++)}add(pattern){return this._added=!1,makeArray(isString(pattern)?splitPattern(pattern):pattern).forEach(this._add,this),this._added&&(this._literalRules=UNDEFINED),this._added}testLiteral(path){let rules2=this._literalRules||(this._literalRules=this._rules.filter(({body})=>body[body.length-(body[body.length-1]===SLASH?2:1)]==="*")),ignored=!1,unignored=!1,matchedRule;for(let index=rules2.length-1;index>=0;index--){let rule=rules2[index];if(rule.checkRegex.test(path)){ignored=!rule.negative,unignored=rule.negative,matchedRule=rule.negative?UNDEFINED:rule;break}}let ret={ignored,unignored};return matchedRule&&(ret.rule=matchedRule),ret}test(path,checkUnignored,mode){let ignored=!1,unignored=!1,matchedRule,rules2=this._rules,{length}=rules2,shortcut=this._basenameCount*2>=length,basename5=shortcut?basenameOf(path):path;for(let index=0;index<length;index++){let rule=rules2[index],{negative}=rule;!(unignored===negative&&ignored!==unignored||negative&&!ignored&&!unignored&&!checkUnignored)&&rule[mode].test(shortcut&&rule._basenameOnly?basename5:path)&&(ignored=!negative,unignored=negative,matchedRule=negative?UNDEFINED:rule)}let ret={ignored,unignored};return matchedRule&&(ret.rule=matchedRule),ret}},throwError=(message,Ctor)=>{throw new Ctor(message)},checkPath=(path,originalPath,doThrow)=>isString(path)?path?checkPath.isNotRelative(path)?doThrow(`path should be a \`path.relative()\`d string, but got "${originalPath}"`,RangeError):!0:doThrow("path must not be empty",TypeError):doThrow(`path must be a string, but got \`${originalPath}\``,TypeError),isNotRelative=path=>{let first=path.charCodeAt(0);if(first===SLASH_CODE)return!0;if(first!==DOT_CODE)return!1;if(path.length===1)return!0;let second=path.charCodeAt(1);return second===SLASH_CODE?!0:second!==DOT_CODE?!1:path.length===2||path.charCodeAt(2)===SLASH_CODE};checkPath.isNotRelative=isNotRelative;checkPath.convert=p=>p;var Ignore=class{constructor({ignorecase=!0,ignoreCase=ignorecase,allowRelativePaths=!1}={}){define(this,KEY_IGNORE,!0),this._rules=new RuleManager(ignoreCase),this._strictPathCheck=!allowRelativePaths,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}add(pattern){return this._rules.add(pattern)&&this._initCache(),this}addPattern(pattern){return this.add(pattern)}_test(originalPath,cache,checkUnignored){let path=originalPath&&checkPath.convert(originalPath);return checkPath(path,originalPath,this._strictPathCheck?throwError:RETURN_FALSE),this._t(path,cache,checkUnignored)}checkIgnore(path){if(path.charCodeAt(path.length-1)!==SLASH_CODE)return this.test(path);let dir=this._t(path,this._testCache,!0);if(dir.ignored)return dir;let literal=this._rules.testLiteral(path);return literal.ignored||literal.unignored?literal:dir}_t(path,cache,checkUnignored){if(path in cache)return cache[path];let parentPath=parentOf2(path),parent=parentPath?this._t(parentPath,cache,checkUnignored):UNDEFINED;return cache[path]=parent&&parent.ignored?parent:this._rules.test(path,checkUnignored,MODE_IGNORE)}ignores(path){return this._test(path,this._ignoreCache,!1).ignored}createFilter(){return path=>!this.ignores(path)}filter(paths){return makeArray(paths).filter(this.createFilter())}test(path){return this._test(path,this._testCache,!0)}},factory2=options=>new Ignore(options),isPathValid=path=>checkPath(path&&checkPath.convert(path),path,RETURN_FALSE),setupWindows=()=>{let makePosix=str=>/^\\\\\?\\/.test(str)||/["<>|\u0000-\u001F]+/u.test(str)?str:str.replace(/\\/g,"/");checkPath.convert=makePosix;let REGEX_TEST_WINDOWS_PATH_ABSOLUTE=/^[a-z]:\//i;checkPath.isNotRelative=path=>REGEX_TEST_WINDOWS_PATH_ABSOLUTE.test(path)||isNotRelative(path)};typeof process<"u"&&process.platform==="win32"&&setupWindows();module.exports=factory2;factory2.default=factory2;module.exports.isPathValid=isPathValid;define(module.exports,Symbol.for("setupWindows"),setupWindows)}});var import_ts_morph=__toESM(require_ts_morph(),1),import_semver=__toESM(require_semver2(),1),import_ts_morph2=__toESM(require_ts_morph(),1),import_ts_morph3=__toESM(require_ts_morph(),1),import_ts_morph4=__toESM(require_ts_morph(),1),import_ts_morph5=__toESM(require_ts_morph(),1),import_ts_morph6=__toESM(require_ts_morph(),1),import_ts_morph7=__toESM(require_ts_morph(),1),import_ts_morph8=__toESM(require_ts_morph(),1),import_ts_morph9=__toESM(require_ts_morph(),1),import_yaml=__toESM(require_dist(),1),import_ts_morph10=__toESM(require_ts_morph(),1),import_ini=__toESM(require_ini(),1),import_ts_morph11=__toESM(require_ts_morph(),1),import_ts_morph12=__toESM(require_ts_morph(),1),import_yaml2=__toESM(require_dist(),1),import_ts_morph13=__toESM(require_ts_morph(),1),import_ts_morph14=__toESM(require_ts_morph(),1),import_ts_morph15=__toESM(require_ts_morph(),1),import_ts_morph16=__toESM(require_ts_morph(),1),import_ts_morph17=__toESM(require_ts_morph(),1),import_ignore=__toESM(require_ignore(),1),import_ts_morph18=__toESM(require_ts_morph(),1),import_ts_morph19=__toESM(require_ts_morph(),1);import{existsSync}from"fs";import{createRequire}from"module";import{dirname,join,resolve}from"path";import{existsSync as existsSync11,realpathSync as realpathSync5}from"fs";import{join as join13}from"path";import{mkdtempSync,rmSync,writeFileSync}from"fs";import{tmpdir}from"os";import{join as join3}from"path";import{existsSync as existsSync2,readdirSync,readFileSync,statSync}from"fs";import{dirname as dirname2,join as join2,resolve as resolve2}from"path";import{relative}from"path";import{existsSync as existsSync10,mkdirSync,mkdtempSync as mkdtempSync2,readFileSync as readFileSync10,realpathSync as realpathSync4,rmSync as rmSync2,symlinkSync}from"fs";import{builtinModules}from"module";import{tmpdir as tmpdir2}from"os";import{dirname as dirname9,join as join12,relative as relative7}from"path";import{relative as relative2}from"path";import{readFileSync as readFileSync2}from"fs";import{dirname as dirname3,isAbsolute,join as join4,relative as relative3,resolve as resolve3}from"path";import{existsSync as existsSync7,readFileSync as readFileSync7,realpathSync as realpathSync2}from"fs";import{dirname as dirname7,join as join9,resolve as resolve5}from"path";import{existsSync as existsSync3,readdirSync as readdirSync2,readFileSync as readFileSync3}from"fs";import{dirname as dirname4,join as join5}from"path";import{existsSync as existsSync4,readFileSync as readFileSync4}from"fs";import{dirname as dirname5,join as join6,relative as relative4}from"path";import{existsSync as existsSync5,readdirSync as readdirSync3,readFileSync as readFileSync5,realpathSync,statSync as statSync2}from"fs";import{dirname as dirname6,join as join7,relative as relative5,resolve as resolve4}from"path";import{existsSync as existsSync6,readdirSync as readdirSync4,readFileSync as readFileSync6}from"fs";import{join as join8}from"path";import{existsSync as existsSync9,readFileSync as readFileSync9}from"fs";import{join as join11}from"path";import{existsSync as existsSync8,readFileSync as readFileSync8,realpathSync as realpathSync3}from"fs";import{dirname as dirname8,join as join10,relative as relative6}from"path";import{homedir}from"os";import{join as join14}from"path";import{randomUUID}from"crypto";import{mkdir,readFile,rename,writeFile}from"fs/promises";import{dirname as dirname10,join as join15}from"path";import{existsSync as existsSync12,readFileSync as readFileSync11}from"fs";import{homedir as homedir2}from"os";import{dirname as dirname11,join as join16,relative as relative8,resolve as resolve6}from"path";import{createHash}from"crypto";import{existsSync as existsSync13}from"fs";import{mkdir as mkdir2,readFile as readFile2,rename as rename2,rm,writeFile as writeFile2}from"fs/promises";import{tmpdir as tmpdir3}from"os";import{dirname as dirname13,join as join18,resolve as resolve7}from"path";import{mkdirSync as mkdirSync2,writeFileSync as writeFileSync2}from"fs";import{dirname as dirname12,join as join17,normalize,sep}from"path";import{gunzipSync}from"zlib";import{basename as basename2}from"path";import{existsSync as existsSync15,readFileSync as readFileSync13,realpathSync as realpathSync6,rmSync as rmSync3,writeFileSync as writeFileSync3}from"fs";import{builtinModules as builtinModules2}from"module";import{basename,dirname as dirname14,join as join20,relative as relative10}from"path";import{existsSync as existsSync14,readdirSync as readdirSync5,readFileSync as readFileSync12}from"fs";import{join as join19,relative as relative9,resolve as resolve8}from"path";import{join as join21}from"path";import{readFileSync as readFileSync14}from"fs";import{basename as basename4,dirname as dirname15,join as join22,resolve as resolve9}from"path";import{basename as basename3}from"path";import{createHash as createHash2}from"crypto";import{join as join23}from"path";import{existsSync as existsSync17,readFileSync as readFileSync16}from"fs";import{dirname as dirname17,join as join25,relative as relative12}from"path";import{existsSync as existsSync16,readdirSync as readdirSync6,readFileSync as readFileSync15}from"fs";import{dirname as dirname16,join as join24,relative as relative11}from"path";import{readFileSync as readFileSync18}from"fs";import{join as join27}from"path";import{readdirSync as readdirSync7,readFileSync as readFileSync17}from"fs";import{join as join26,relative as relative13}from"path";import{execFileSync}from"child_process";import{cpSync,existsSync as existsSync18,mkdirSync as mkdirSync3,mkdtempSync as mkdtempSync3,readdirSync as readdirSync8,readFileSync as readFileSync19,realpathSync as realpathSync7,renameSync,rmSync as rmSync4,symlinkSync as symlinkSync2,writeFileSync as writeFileSync4}from"fs";import{homedir as homedir3,tmpdir as tmpdir4}from"os";import{dirname as dirname18,join as join28,resolve as resolve10,sep as sep2}from"path";import{posix}from"path";import{readFileSync as readFileSync25,realpathSync as realpathSync8}from"fs";import{join as join34,posix as posix2,relative as relative16,resolve as resolve14,sep as sep3}from"path";import{readdirSync as readdirSync9,readFileSync as readFileSync21}from"fs";import{availableParallelism}from"os";import{join as join30,relative as relative15,resolve as resolve11}from"path";import{Worker}from"worker_threads";import{readFileSync as readFileSync20}from"fs";import{join as join29,relative as relative14}from"path";import{readdirSync as readdirSync10,readFileSync as readFileSync22,statSync as statSync3}from"fs";import{join as join31,resolve as resolve12}from"path";import{execFileSync as execFileSync2}from"child_process";import{existsSync as existsSync19,readFileSync as readFileSync23}from"fs";import{availableParallelism as availableParallelism2,freemem,platform,totalmem}from"os";import{dirname as dirname19,join as join32,resolve as resolve13}from"path";import{existsSync as existsSync20,readdirSync as readdirSync11,readFileSync as readFileSync24,statSync as statSync4}from"fs";import{join as join33}from"path";var resets=[];function onReset(reset){resets.push(reset)}function resetSharedState(){for(let reset of resets)reset()}function consumerCompilerDir(dir){for(let current=resolve(dir);;current=dirname(current)){let manifest2=join(current,"node_modules","typescript","package.json");if(existsSync(manifest2))return dirname(manifest2);if(dirname(current)===current)return}}function loadCompiler(packageDir){return createRequire(join(packageDir,"package.json"))(packageDir)}function resolveCompiler(dir,bundled=import_ts_morph.ts,load=loadCompiler,find=consumerCompilerDir){try{let own=find(dir);if(own===void 0)throw new Error("the repository installs no TypeScript");return load(own)}catch{if(bundled)return bundled;throw new UptideError("TYPESCRIPT_UNAVAILABLE","TypeScript compiler unavailable: install typescript in the consumer repository or reinstall the Uptide bundle")}}var compilers=new Map;onReset(()=>compilers.clear());function repositoryCompiler(dir){let own=consumerCompilerDir(dir),key2=own??"",compiler=compilers.get(key2);if(!compiler){let loaded=own===void 0?import_ts_morph.ts:resolveCompiler(dir,import_ts_morph.ts,loadCompiler,()=>own);compiler={ts:loaded,version:loaded.version,own:loaded!==import_ts_morph.ts},compilers.set(key2,compiler)}return compiler}function unresolvedConfig(tsc,tsconfig){try{let read2=tsc.readConfigFile(tsconfig,p=>tsc.sys.readFile(p)),extended=read2.config?.extends;return read2.config===void 0||extended===void 0||!tsc.parseJsonConfigFileContent(read2.config,tsc.sys,dirname(tsconfig),void 0,tsconfig).errors.find(e=>e.code===6053)?void 0:`extends ${(Array.isArray(extended)?extended:[extended]).map(n=>JSON.stringify(n)).join(", ")} cannot be resolved`}catch{return}}var path_exports={};__export(path_exports,{callSignature:()=>callSignature,constructSignature:()=>constructSignature,element:()=>element,indexSignature:()=>indexSignature,instanceMember:()=>instanceMember,joinPath:()=>joinPath,leafOf:()=>leafOf,parentOf:()=>parentOf,scoped:()=>scoped,splitPath:()=>splitPath,staticMember:()=>staticMember,topLevel:()=>topLevel});var IDENTIFIER=/^[A-Za-z_$][\w$]*$/;function segment(name){return IDENTIFIER.test(name)?name:JSON.stringify(name)}function staticMember(parent,name){return`${parent}.${segment(name)}`}function instanceMember(parent,name){return`${parent}#${segment(name)}`}function element(parent){return`${parent}[]`}function indexSignature(parent,keyType){return`${parent}#[${keyType}]`}function callSignature(parent){return`${parent}#()`}function constructSignature(parent){return`${parent}.new()`}function scoped(specifier,path){return`${JSON.stringify(specifier)}:${path}`}function topLevel(name){return segment(name)}function splitPath(path){let i=0,scope,readQuoted=()=>{let j=i+1;for(;j<path.length;)if(path[j]==="\\")j+=2;else{if(path[j]==='"')break;j++}let raw=path.slice(i,j+1);return i=j+1,raw};if(path[0]==='"'){let quoted=readQuoted();path[i]===":"?(scope=JSON.parse(quoted),i++):i=0}let segments=[],current="";for(;i<path.length;){let ch=path[i];if(ch==='"'){current+=readQuoted();continue}if((ch==="."||ch==="#")&¤t!==""){segments.push(current),current=ch,i++;continue}if(ch==="["&&path[i+1]==="]"&¤t!==""){segments.push(current),current="[]",i+=2;continue}current+=ch,i++}return current!==""&&segments.push(current),scope===void 0?{segments}:{scope,segments}}function joinPath(parts){let body=parts.segments.join("");return parts.scope===void 0?body:`${JSON.stringify(parts.scope)}:${body}`}function parentOf(path){let parts=splitPath(path);if(!(parts.segments.length<=1))return joinPath({...parts,segments:parts.segments.slice(0,-1)})}function leafOf(path){let{segments}=splitPath(path),last=segments[segments.length-1]??"",raw=last.startsWith(".")||last.startsWith("#")?last.slice(1):last;return raw.startsWith('"')?JSON.parse(raw):raw}function satisfies(version,range){return import_semver.default.satisfies(version,range)}function maxSatisfying(versions,range){return import_semver.default.maxSatisfying([...versions],range)??void 0}function minVersion(range){return import_semver.default.validRange(range)?import_semver.default.minVersion(range)?.version??void 0:void 0}var USAGE_CERTAINTY={direct:1,alias:.95,reexport:.95,destructure:.9,inferred:.8,require:.85};function usagePaths(usage){return usage.canonicalPath!==void 0&&usage.canonicalPath!==usage.symbolPath?[usage.symbolPath,usage.canonicalPath]:[usage.symbolPath]}function repoTypeChecks(file,head,checkJs){return/@ts-nocheck/.test(head)?!1:/\.(js|jsx|cjs|mjs)$/i.test(file)?checkJs||/@ts-check/.test(head):!0}var OPEN=new Set(["(","[","{","<"]),CLOSE=new Set([")","]","}",">"]);function splitTopLevel(text,sep4){let parts=[],depth2=0,quote2,start=0;for(let i=0;i<text.length;i++){let ch=text[i];if(quote2){ch==="\\"?i++:ch===quote2&&(quote2=void 0);continue}ch==="'"||ch==='"'||ch==="`"?quote2=ch:OPEN.has(ch)?depth2++:CLOSE.has(ch)?depth2--:ch===sep4[0]&&depth2===0&&text.startsWith(sep4,i)&&(parts.push(text.slice(start,i).trim()),start=i+sep4.length,i=start-1)}return parts.push(text.slice(start).trim()),parts.filter(p=>p!=="")}function unionMembers(type){let stripped=type.startsWith("| ")?type.slice(2):type;return splitTopLevel(stripped,"|").map(m=>m.trim())}function parseParam(text){let m=/^(\.\.\.)?([A-Za-z_$][\w$]*|\{[\s\S]*\}|\[[\s\S]*\])(\?)?\s*:\s*([\s\S]+)$/.exec(text);if(!m){let bare=/^(\.\.\.)?([A-Za-z_$][\w$]*)(\?)?$/.exec(text);return bare?{name:bare[2],optional:bare[3]==="?",rest:bare[1]==="...",type:"any"}:void 0}return{name:m[2],optional:m[3]==="?",rest:m[1]==="...",type:m[4].trim()}}function parseOverload(text){let rest=text.replace(/^(protected|abstract|readonly|static)\s+/g,"").trim(),typeParams2=[];if(rest.startsWith("<")){let end=matchingClose(rest,0);if(end===-1)return;typeParams2.push(...splitTopLevel(rest.slice(1,end),",")),rest=rest.slice(end+1).trim()}if(!rest.startsWith("("))return;let close=matchingClose(rest,0);if(close===-1)return;let paramText=rest.slice(1,close),after=rest.slice(close+1).trim();if(after!==""&&!after.startsWith(":")&&!after.startsWith("=>"))return;let returnType=after.startsWith(":")?after.slice(1).trim():after.startsWith("=>")?after.slice(2).trim():"void",params2=[],thisType;for(let p of splitTopLevel(paramText,",")){let parsed4=parseParam(p);if(!parsed4)return;if(parsed4.name==="this"&¶ms2.length===0&&thisType===void 0){thisType=parsed4.type;continue}params2.push(parsed4)}let overload={typeParams:typeParams2,params:params2,returnType};return thisType!==void 0&&(overload.thisType=thisType),overload}function matchingClose(text,openIndex){let open=text[openIndex],close=open==="("?")":open==="<"?">":open==="["?"]":"}",depth2=0,quote2;for(let i=openIndex;i<text.length;i++){let ch=text[i];if(quote2){ch==="\\"?i++:ch===quote2&&(quote2=void 0);continue}if(ch==="'"||ch==='"'||ch==="`")quote2=ch;else if(ch===open)depth2++;else if(ch===close&&--depth2===0)return i}return-1}function parseCallable(signature){let overloads=[];for(let text of splitTopLevel(signature,";")){let parsed4=parseOverload(text);if(!parsed4)return;overloads.push(parsed4)}return overloads.length>0?overloads:void 0}function looksCallable(signature){return/^(protected |abstract |static )*(<|\()/.test(signature)?parseCallable(signature.replace(/^(protected |abstract |static )+/,""))!==void 0:!1}var LEADING_KEYWORDS=/^(readonly |protected |abstract |static |const |let |var )+/;function asCallable(signature){let text=signature.replace(LEADING_KEYWORDS,"").trim(),inner=/^\{ (.*) \}$/.exec(text)?.[1]??text;return looksCallable(inner)?inner:void 0}function typeParamName(declaration){return/^(?:const\s+)?([A-Za-z_$][\w$]*)/.exec(declaration.trim())?.[1]}function renamePositional(o){let names=o.typeParams.map(tp=>typeParamName(tp)).filter(n=>n!==void 0),rename3=text=>names.reduce((acc,name,i)=>acc.replace(new RegExp(`\\b${name.replace(/\$/g,"\\$")}\\b`,"g"),`T${i}`),text);return{typeParams:o.typeParams.map(rename3),params:o.params.map(p=>({...p,type:rename3(p.type)})),returnType:rename3(o.returnType),...o.thisType!==void 0?{thisType:rename3(o.thisType)}:{}}}function callableShape(signature){let text=asCallable(signature),overloads=text?parseCallable(text):void 0;if(overloads)return overloads.map(renamePositional).map(o=>{let tp=o.typeParams.length>0?`<${o.typeParams.join(", ")}>`:"",params2=[...o.thisType!==void 0?[`this: ${o.thisType}`]:[],...o.params.map(p=>`${p.rest?"...":""}${p.type}${p.optional?"?":""}`)].join(", ");return`${tp}(${params2}): ${o.returnType}`}).join("; ")}var DECLARATION=/\.d\.(c|m)?ts$/;function siblingDeclaration(file){if(DECLARATION.test(file))return file;let m=/\.(m|c)?(j|t)sx?$/.exec(file);if(m)return`${file.slice(0,m.index)}.d.${m[1]??""}ts`}function resolveTypesFile(dir,target){let candidate=siblingDeclaration(target);if(!candidate)return;let abs=resolve2(dir,candidate);return existsSync2(abs)?abs:void 0}var PREFERRED_CONDITIONS=["types","import","default"];function resolveFromExports(dir,value){if(value===null)return;if(typeof value=="string")return resolveTypesFile(dir,value);if(Array.isArray(value)){for(let item of value){let found=resolveFromExports(dir,item);if(found)return found}return}let keys=Object.keys(value),ordered=[...PREFERRED_CONDITIONS.filter(k=>keys.includes(k)),...keys.filter(k=>!PREFERRED_CONDITIONS.includes(k))];for(let key2 of ordered){let found=resolveFromExports(dir,value[key2]);if(found)return found}}function implicitSubpaths(dir,rootFile){let out=new Map,names;try{names=readdirSync(dir)}catch{return out}for(let entry of names){if(entry.startsWith(".")||entry==="node_modules")continue;let full2=join2(dir,entry),isDir;try{isDir=statSync(full2).isDirectory()}catch{continue}if(isDir){let nested=join2(full2,"package.json");if(!existsSync2(nested))continue;let pkg;try{pkg=JSON.parse(readFileSync(nested,"utf8"))}catch{continue}for(let c of[pkg.types,pkg.typings,pkg.main]){let file=typeof c=="string"?resolveTypesFile(full2,c):void 0;if(file){out.set(`./${entry}`,file);break}}continue}let m=/^(.+?)\.d\.(c|m)?ts$/.exec(entry);!m||m[1]==="index"||rootFile!==void 0&&resolve2(full2)===rootFile||out.set(`./${m[1]}`,resolve2(full2))}return out}function resolveEntryPoints(dir,name,version){let pkg=JSON.parse(readFileSync(join2(dir,"package.json"),"utf8")),found=new Map,exportsField=pkg.exports;if(exportsField!==void 0){let map=typeof exportsField=="object"&&exportsField!==null&&!Array.isArray(exportsField)&&Object.keys(exportsField).every(k=>k.startsWith("."))?exportsField:{".":exportsField};for(let[subpath,value]of Object.entries(map)){if(subpath.includes("*"))continue;let file=resolveFromExports(dir,value);file&&found.set(subpath,file)}}if(!found.has(".")){let mainDir=typeof pkg.main=="string"?join2(dirname2(pkg.main),"index.d.ts"):void 0,candidates=[pkg.types,pkg.typings,pkg.main,mainDir,"index.d.ts"].filter(c=>typeof c=="string");for(let c of candidates){let file=resolveTypesFile(dir,c);if(file){found.set(".",file);break}}}if(exportsField===void 0)for(let[subpath,file]of implicitSubpaths(dir,found.get(".")))found.has(subpath)||found.set(subpath,file);if(found.size===0)throw new NoTypesError(name,version);return[...found.entries()].map(([entry,file])=>({entry,file})).sort((a,b)=>a.entry==="."?-1:b.entry==="."?1:a.entry.localeCompare(b.entry))}var newPrinter=()=>import_ts_morph5.ts.createPrinter({removeComments:!0,omitTrailingSemicolon:!0}),printer=newPrinter();onReset(()=>{printer=newPrinter()});function normalizeText(text){return text.replace(/\s+/g," ").replace(/; }/g," }").replace(/;\s*$/,"").trim()}function transformer(opts){return context=>{let{factory:factory2}=context,visit=node=>{if(opts.collapse!==void 0&&node===opts.collapse)return factory2.createTypeReferenceNode("{\u2026}");let visited=import_ts_morph5.ts.visitEachChild(node,visit,context);if(import_ts_morph5.ts.isUnionTypeNode(visited)){let sorted=[...visited.types].map(t=>({t,key:printer.printNode(import_ts_morph5.ts.EmitHint.Unspecified,t,t.getSourceFile())})).sort((a,b)=>a.key<b.key?-1:a.key>b.key?1:0).map(x=>x.t);return factory2.updateUnionTypeNode(visited,factory2.createNodeArray(sorted))}return import_ts_morph5.ts.isImportTypeNode(visited)&&visited.qualifier?factory2.createTypeReferenceNode(visited.qualifier,visited.typeArguments):visited};return root=>visit(root)}}function printCompilerNode(node,opts={}){let result;try{result=import_ts_morph5.ts.transform(node,[transformer(opts)]);let transformed=result.transformed[0]??node;return normalizeText(printer.printNode(import_ts_morph5.ts.EmitHint.Unspecified,transformed,node.getSourceFile()))}catch(err){throw printer=newPrinter(),err}finally{result?.dispose()}}function printNode(node,opts={}){return printCompilerNode(node.compilerNode,opts)}function printCallable(node,opts={}){let cn=node.compilerNode,sig=import_ts_morph5.ts.factory.createCallSignature(cn.typeParameters,cn.parameters,cn.type);import_ts_morph5.ts.setSourceMapRange(sig,cn);let result=import_ts_morph5.ts.transform(sig,[transformer(opts)]),text=printer.printNode(import_ts_morph5.ts.EmitHint.Unspecified,result.transformed[0]??sig,cn.getSourceFile());return result.dispose(),normalizeText(text)}function printTypeNode(typeNode,opts={}){if(import_ts_morph5.Node.isTypeQuery(typeNode)){let text=typeNode.getType().getText(void 0,import_ts_morph5.ts.TypeFormatFlags.NoTruncation);if(!text.startsWith("typeof ")&&!text.startsWith("import("))return normalizeText(text)}if(import_ts_morph5.Node.isImportTypeNode(typeNode)){let text=typeNode.getType().getText(void 0,import_ts_morph5.ts.TypeFormatFlags.NoTruncation);if(isLiteralUnion(text))return normalizeText(text)}return printNode(typeNode,opts)}function isLiteralUnion(text){return text.split("|").map(part=>part.trim()).every(part=>/^("([^"\\]|\\.)*"|'([^'\\]|\\.)*'|-?\d+(\.\d+)?|true|false|null|undefined)$/.test(part))}var STRENGTH=["class","function","variable","interface","enum","type","namespace","module"];function kindOf(node){if(import_ts_morph4.Node.isClassDeclaration(node))return"class";if(import_ts_morph4.Node.isFunctionDeclaration(node))return"function";if(import_ts_morph4.Node.isVariableDeclaration(node))return"variable";if(import_ts_morph4.Node.isInterfaceDeclaration(node))return"interface";if(import_ts_morph4.Node.isEnumDeclaration(node))return"enum";if(import_ts_morph4.Node.isModuleDeclaration(node)||import_ts_morph4.Node.isSourceFile(node))return"namespace";if(import_ts_morph4.Node.isTypeAliasDeclaration(node))return"type"}function strongest(kinds){return[...kinds].sort((a,b)=>STRENGTH.indexOf(a)-STRENGTH.indexOf(b))[0]??"type"}function jsDocTag(nodes,name){for(let declared of nodes){let node=import_ts_morph4.Node.isVariableDeclaration(declared)?declared.getVariableStatement()??declared:declared;if(import_ts_morph4.Node.isJSDocable(node)){for(let doc of node.getJsDocs())for(let tag of doc.getTags())if(tag.getTagName()===name){let text=tag.getCommentText()?.trim();return text||!0}}}}function deprecatedOf(nodes){return jsDocTag(nodes,"deprecated")}function isInternal(nodes){return jsDocTag(nodes,"internal")!==void 0}function isProtected(nodes){return nodes.some(n=>import_ts_morph4.Node.isScoped(n)&&n.getScope()==="protected")}function memberName(node){let raw=node.getName();if(/^['"]/.test(raw))try{return JSON.parse(raw.replace(/^'(.*)'$/s,(_,s)=>JSON.stringify(s)))}catch{return raw}return raw}function typeParams(node){if(!import_ts_morph4.Node.isTypeParametered(node))return"";let params2=node.getTypeParameters();return params2.length===0?"":`<${params2.map(p=>printNode(p)).join(", ")}>`}function expandable(typeNode){if(typeNode){if(import_ts_morph4.Node.isTypeLiteral(typeNode))return{literal:typeNode,array:!1};if(import_ts_morph4.Node.isArrayTypeNode(typeNode)){let el=typeNode.getElementTypeNode();if(import_ts_morph4.Node.isTypeLiteral(el))return{literal:el,array:!0}}if(import_ts_morph4.Node.isTypeReference(typeNode)){let name=typeNode.getTypeName().getText(),args=typeNode.getTypeArguments(),first=args[0];if((name==="Array"||name==="ReadonlyArray")&&args.length===1&&first&&import_ts_morph4.Node.isTypeLiteral(first))return{literal:first,array:!0}}}}function modifiers(node){let parts=[];return import_ts_morph4.Node.isScoped(node)&&node.getScope()==="protected"&&parts.push("protected"),import_ts_morph4.Node.isAbstractable(node)&&node.isAbstract()&&parts.push("abstract"),import_ts_morph4.Node.isReadonlyable(node)&&node.isReadonly()&&parts.push("readonly"),parts.length===0?"":`${parts.join(" ")} `}function isHidden(node){return import_ts_morph4.Node.isScoped(node)&&node.getScope()==="private"?!0:(import_ts_morph4.Node.hasName(node)?node.getName():"").startsWith("#")}var MAX_NESTING=32;function emit(ctx,symbol,nodes){let full2={...symbol,exportedFrom:[ctx.sink.entry]};full2.optional===void 0&&delete full2.optional,full2.deprecated===void 0&&delete full2.deprecated;let visibility=ctx.visibility??(isInternal(nodes)?"internal":isProtected(nodes)?"protected":void 0);visibility&&(full2.visibility=visibility),ctx.exportEquals&&symbol.path===ctx.root&&(full2.exportEquals=!0);let first=nodes[0];if(first&&(full2.file=relative(ctx.sink.packageDir,first.getSourceFile().getFilePath()).split("\\").join("/")),first&&!ctx.inherited){let cls=ctx.sink.byDeclaration.get(first.compilerNode)??{symbols:[]};cls.declaredName===void 0&&import_ts_morph4.Node.hasName(first)&&(cls.declaredName=first.getName()),cls.symbols.push(full2);for(let node of nodes)ctx.sink.byDeclaration.set(node.compilerNode,cls)}return ctx.sink.emit(ctx.root,full2),visibility==="internal"?{...ctx,visibility}:ctx}function assignAliases(byDeclaration){for(let{declaredName,symbols}of byDeclaration.values()){let distinct=new Map;for(let s of symbols){let list=distinct.get(s.path)??[];list.push(s),distinct.set(s.path,list)}if(distinct.size<2)continue;let rank=path=>[splitPath(path).segments.length,leafOf(path)===declaredName?0:1],canonical;for(let path of distinct.keys()){if(canonical===void 0){canonical=path;continue}let[a,b]=[rank(path),rank(canonical)];(a[0]<b[0]||a[0]===b[0]&&a[1]<b[1])&&(canonical=path)}for(let[path,list]of distinct)if(path!==canonical)for(let s of list)s.aliasOf=canonical}}function walkProperty(ctx,path,node){let typeNode=node.getTypeNode(),expansion=expandable(typeNode),type=typeNode?printTypeNode(typeNode,expansion?{collapse:expansion.literal.compilerNode}:{}):"any",symbol={path,kind:"property",signature:`${modifiers(node)}${type}`,deprecated:deprecatedOf([node])};node.hasQuestionToken()&&(symbol.optional=!0);let inner=emit(ctx,symbol,[node]);expansion&&walkTypeMembers(inner,expansion.array?element(path):path,[expansion.literal])}function walkAccessors(ctx,path,getters,setters){let getter=getters[0],setter=setters[0],typeNode=getter?.getReturnTypeNode()??setter?.getParameters()[0]?.getTypeNode(),type=typeNode?printTypeNode(typeNode):"any",readonly=setter===void 0?"readonly ":"",scope=getter??setter,prot=import_ts_morph4.Node.isScoped(scope)&&scope.getScope()==="protected"?"protected ":"";emit(ctx,{path,kind:"property",signature:`${prot}${readonly}${type}`,deprecated:deprecatedOf([...getters,...setters])},[...getters,...setters])}function walkCallableGroup(ctx,path,nodes,optional=!1){let symbol={path,kind:"method",signature:nodes.map(n=>`${modifiers(n)}${printCallable(n)}`).join("; "),deprecated:deprecatedOf(nodes)};optional&&(symbol.optional=!0),emit(ctx,symbol,nodes)}function groupBy(items,key2){let out=new Map;for(let item of items){let k=key2(item),list=out.get(k);list?list.push(item):out.set(k,[item])}return out}function walkTypeMembers(ctx,path,containers){let props=containers.flatMap(c=>c.getProperties());for(let prop of props)walkProperty(ctx,instanceMember(path,memberName(prop)),prop);let methods=groupBy(containers.flatMap(c=>c.getMethods()),m=>memberName(m));for(let[name,overloads]of methods)walkCallableGroup(ctx,instanceMember(path,name),overloads,overloads.some(m=>m.hasQuestionToken()));let getters=groupBy(containers.flatMap(c=>c.getGetAccessors()),g=>memberName(g)),setters=groupBy(containers.flatMap(c=>c.getSetAccessors()),s=>memberName(s));for(let name of new Set([...getters.keys(),...setters.keys()]))walkAccessors(ctx,instanceMember(path,name),getters.get(name)??[],setters.get(name)??[]);let calls=containers.flatMap(c=>c.getCallSignatures());calls.length>0&&walkCallableGroup(ctx,callSignature(path),calls);let constructs=containers.flatMap(c=>c.getConstructSignatures());constructs.length>0&&walkCallableGroup(ctx,constructSignature(path),constructs);for(let index of containers.flatMap(c=>c.getIndexSignatures())){let keyType=printNode(index.getKeyTypeNode()),valueType=index.getReturnTypeNode();emit(ctx,{path:indexSignature(path,keyType),kind:"property",signature:`${index.isReadonly()?"readonly ":""}${valueType?printNode(valueType):"any"}`,deprecated:deprecatedOf([index])},[index])}}function walkClassMembers(ctx,path,classes){let ctors=classes.flatMap(c=>c.getConstructors());ctors.length>0&&walkCallableGroup(ctx,constructSignature(path),ctors);let member=(node,name)=>node.isStatic()?staticMember(path,name):instanceMember(path,name);for(let prop of classes.flatMap(c=>c.getProperties()))isHidden(prop)||walkProperty(ctx,member(prop,memberName(prop)),prop);let methods=groupBy(classes.flatMap(c=>c.getMethods()).filter(m=>!isHidden(m)),m=>`${m.isStatic()?"s":"i"}:${memberName(m)}`);for(let overloads of methods.values()){let first=overloads[0];walkCallableGroup(ctx,member(first,memberName(first)),overloads,overloads.some(m=>m.hasQuestionToken()))}let getters=groupBy(classes.flatMap(c=>c.getGetAccessors()).filter(g=>!isHidden(g)),g=>`${g.isStatic()?"s":"i"}:${memberName(g)}`),setters=groupBy(classes.flatMap(c=>c.getSetAccessors()).filter(s=>!isHidden(s)),s=>`${s.isStatic()?"s":"i"}:${memberName(s)}`);for(let key2 of new Set([...getters.keys(),...setters.keys()])){let any=(getters.get(key2)??setters.get(key2))?.[0];walkAccessors(ctx,member(any,memberName(any)),getters.get(key2)??[],setters.get(key2)??[])}}function walkInheritedMembers(ctx,path,decls,own){let first=decls[0];if(!first)return;let inner={...ctx,inherited:!0},inPackage=node=>node.getSourceFile().getFilePath().startsWith(`${ctx.sink.packageDir}/`),emitMember=(memberPath,nodes)=>{let usable=nodes.filter(inPackage).filter(n=>!isHidden(n));if(usable.length===0)return;let props=usable.filter(n=>import_ts_morph4.Node.isPropertyDeclaration(n)||import_ts_morph4.Node.isPropertySignature(n)),methods=usable.filter(n=>import_ts_morph4.Node.isMethodDeclaration(n)||import_ts_morph4.Node.isMethodSignature(n)),getters=usable.filter(import_ts_morph4.Node.isGetAccessorDeclaration),setters=usable.filter(import_ts_morph4.Node.isSetAccessorDeclaration);methods.length>0?walkCallableGroup(inner,memberPath,methods,methods.some(m=>import_ts_morph4.Node.isQuestionTokenable(m)&&m.hasQuestionToken())):props[0]?walkProperty(inner,memberPath,props[0]):(getters.length>0||setters.length>0)&&walkAccessors(inner,memberPath,getters,setters)},instance=first.getType();for(let prop of instance.getProperties()){let name=prop.getName();own.has(`i:${name}`)||emitMember(instanceMember(path,name),prop.getDeclarations())}let cls=decls.find(import_ts_morph4.Node.isClassDeclaration);if(cls){let symbol=cls.getSymbol();if(!symbol)return;let statics=ctx.sink.checker.getTypeOfSymbolAtLocation(symbol,cls);for(let prop of statics.getProperties()){let name=prop.getName();name==="prototype"||own.has(`s:${name}`)||emitMember(staticMember(path,name),prop.getDeclarations())}}}function ownMemberKeys(decls){let keys=new Set;for(let d of decls){for(let m of[...d.getProperties(),...d.getMethods()])keys.add(`${import_ts_morph4.Node.isStaticable(m)&&m.isStatic()?"s":"i"}:${memberName(m)}`);for(let m of[...d.getGetAccessors(),...d.getSetAccessors()])keys.add(`${import_ts_morph4.Node.isStaticable(m)&&m.isStatic()?"s":"i"}:${memberName(m)}`)}return keys}function classHeader(cls){let parts=[cls.isAbstract()?"abstract class":"class"];parts[0]+=typeParams(cls);let ext=cls.getExtends();ext&&parts.push(`extends ${printNode(ext)}`);let impl=cls.getImplements();return impl.length>0&&parts.push(`implements ${impl.map(i=>printNode(i)).join(", ")}`),parts.join(" ")}function interfaceHeader(decls){let first=decls[0],ext=decls.flatMap(d=>d.getExtends()).map(e=>printNode(e));return`interface${typeParams(first)}${ext.length>0?` extends ${[...new Set(ext)].sort().join(", ")}`:""}`}function enumHeader(decl){return decl.isConstEnum()?"const enum":"enum"}function walkEnumMembers(ctx,path,decls){for(let member of decls.flatMap(d=>d.getMembers())){let value=member.getValue();emit(ctx,{path:staticMember(path,memberName(member)),kind:"enumMember",signature:value===void 0?"":JSON.stringify(value),deprecated:deprecatedOf([member])},[member])}}function variableKeyword(decl){return decl.getVariableStatement()?.getDeclarationKind()??"const"}function resolveAlias(symbol){return(symbol.getFlags()&import_ts_morph4.ts.SymbolFlags.Alias)!==0?symbol.getAliasedSymbol()??symbol:symbol}function namedExports(symbols){let out=new Map;for(let exp of symbols){let name=exp.getName();if(name==="prototype"||name===import_ts_morph4.ts.InternalSymbolName.ExportEquals)continue;let decls=resolveAlias(exp).getDeclarations().filter(d=>!import_ts_morph4.Node.isClassDeclaration(d.getParent()));decls.length>0&&out.set(name,decls)}return out}function mergedSymbol(ctx,node){return import_ts_morph4.Node.isSourceFile(node)?node.getSymbol():ctx.sink.checker.getSymbolAtLocation(node.getNameNode())}function namespaceExports(ctx,modules){let first=modules[0],symbol=first?mergedSymbol(ctx,first):void 0;return symbol?namedExports(symbol.getExports()):new Map}function walkNamed(parent,path,decls){let kinds=decls.map(kindOf).filter(k=>k!==void 0);if(kinds.length===0)return;let kind=strongest(kinds),cycle=decls.map(d=>parent.ancestors?.get(d.compilerNode)).find(p=>p!==void 0),depth2=(parent.depth??0)+1;if(cycle!==void 0||depth2>MAX_NESTING){emit(parent,{path,kind,signature:cycle!==void 0?`recursive type ${cycle} (compared by name)`:`nested deeper than ${MAX_NESTING} levels (compared by name)`,deprecated:deprecatedOf(decls)},decls);return}let ancestors=new Map(parent.ancestors);for(let d of decls)ancestors.set(d.compilerNode,path);let ctx={...parent,ancestors,depth:depth2},classes=decls.filter(import_ts_morph4.Node.isClassDeclaration),functions=decls.filter(import_ts_morph4.Node.isFunctionDeclaration),variables=decls.filter(import_ts_morph4.Node.isVariableDeclaration),interfaces=decls.filter(import_ts_morph4.Node.isInterfaceDeclaration),enums=decls.filter(import_ts_morph4.Node.isEnumDeclaration),modules=decls.filter(import_ts_morph4.Node.isModuleDeclaration),sourceFiles=decls.filter(import_ts_morph4.Node.isSourceFile),aliases=decls.filter(import_ts_morph4.Node.isTypeAliasDeclaration),signature="",expandLiteral;switch(kind){case"class":signature=classHeader(classes[0]);break;case"function":signature=functions.map(f=>printCallable(f)).join("; ");break;case"variable":{let v=variables[0],typeNode=v.getTypeNode(),expansion=expandable(typeNode);expansion&&!expansion.array&&(expandLiteral=expansion.literal);let type=typeNode?printTypeNode(typeNode,expandLiteral?{collapse:expandLiteral.compilerNode}:{}):"any";signature=`${variableKeyword(v)} ${type}`;break}case"interface":signature=interfaceHeader(interfaces);break;case"enum":signature=enumHeader(enums[0]);break;case"namespace":signature="namespace";break;case"type":{let alias=aliases[0],typeNode=alias.getTypeNode();typeNode&&import_ts_morph4.Node.isTypeLiteral(typeNode)?(expandLiteral=typeNode,signature=`type${typeParams(alias)}`):signature=`type${typeParams(alias)} = ${typeNode?printTypeNode(typeNode):"any"}`;break}case"module":signature="module";break;default:return}let inner=emit(ctx,{path,kind,signature,deprecated:deprecatedOf(decls)},decls);if(classes.length>0&&walkClassMembers(inner,path,classes),interfaces.length>0&&walkTypeMembers(inner,path,interfaces),classes.length>0||interfaces.length>0){let containers=[...classes,...interfaces];walkInheritedMembers(inner,path,containers,ownMemberKeys(containers))}if(expandLiteral&&walkTypeMembers(inner,path,[expandLiteral]),enums.length>0&&walkEnumMembers(inner,path,enums),modules.length>0)for(let[name,decl]of namespaceExports(inner,modules))walkNamed(inner,staticMember(path,name),decl);for(let sf of sourceFiles)for(let[name,decl]of moduleExports(inner,sf))walkNamed(inner,staticMember(path,name),decl)}function defaultExportPath(decls){for(let d of decls)if((import_ts_morph4.Node.isClassDeclaration(d)||import_ts_morph4.Node.isFunctionDeclaration(d)||import_ts_morph4.Node.isEnumDeclaration(d)||import_ts_morph4.Node.isInterfaceDeclaration(d)||import_ts_morph4.Node.isModuleDeclaration(d))&&d.getName())return topLevel(d.getName());return topLevel("default")}function moduleExports(ctx,container){let symbol=mergedSymbol(ctx,container);if(!symbol)return new Map;let equals=symbol.getExports().find(e=>e.getName()===import_ts_morph4.ts.InternalSymbolName.ExportEquals);if(equals){let decls=resolveAlias(equals).getDeclarations();return new Map(decls.length>0?[[import_ts_morph4.ts.InternalSymbolName.ExportEquals,decls]]:[])}return namedExports(ctx.sink.checker.getExportsOfModule(symbol))}function walkModule(sink,container,scope){let ctx={sink,root:""};for(let[name,decls]of moduleExports(ctx,container)){let bare=name==="default"||name===import_ts_morph4.ts.InternalSymbolName.ExportEquals?defaultExportPath(decls):topLevel(name),root=scope===void 0?bare:scoped(scope,bare),set=sink.rootDecls.get(root)??new Set;for(let d of decls)set.add(d.compilerNode);sink.rootDecls.set(root,set);let ctxRoot={sink,root};name===import_ts_morph4.ts.InternalSymbolName.ExportEquals&&(ctxRoot.exportEquals=!0),walkNamed(ctxRoot,root,decls)}}function ownEntryOf(moduleName,packageName){if(moduleName===packageName)return".";if(moduleName.startsWith(`${packageName}/`))return`./${moduleName.slice(packageName.length+1)}`}function ambientModuleName(mod){if(mod.getDeclarationKind()!=="module")return;let name=mod.getName();return/^['"]/.test(name)?name.slice(1,-1):void 0}var MODIFIERS=/^(readonly |protected |abstract |static |const |let |var )+/,IDENTIFIER2=/^[A-Za-z_$][\w$]*$/;function scanDepth(text,from,visit){let depth2=0;for(let i=from;i<text.length;i++){let ch=text[i];if(ch==='"'||ch==="'"||ch==="`"){for(i++;i<text.length&&text[i]!==ch;i++)text[i]==="\\"&&i++;continue}if(visit(ch,i,depth2))return;ch==="<"||ch==="("||ch==="["||ch==="{"?depth2++:(ch===">"&&text[i-1]!=="="||ch===")"||ch==="]"||ch==="}")&&depth2--}}function closingAngle(text,open){let close;return scanDepth(text,open,(ch,i,depth2)=>(depth2===1&&ch===">"&&text[i-1]!=="="&&(close=i),close!==void 0)),close}var HEADER=/^(?:abstract )?(?:class|interface|type)</;function headerTypeParams(symbol){if(!symbol)return;let m=HEADER.exec(symbol.signature);if(!m)return;let close=closingAngle(symbol.signature,m[0].length-1);return close===void 0?void 0:symbol.signature.slice(m[0].length,close)}function countParams(list){let n=1;return scanDepth(list,0,(ch,_i,depth2)=>(ch===","&&depth2===0&&n++,!1)),n}function aliasBody(sig){let m=HEADER.exec(sig),close=m?closingAngle(sig,m[0].length-1):void 0;if(m&&close===void 0)return;let eq=sig.indexOf(" = ",close??0);return eq===-1?void 0:sig.slice(eq+3)}function overloadMembers(signature,prefix){let overloads=parseCallable(signature.replace(MODIFIERS,""));if(overloads)return overloads.map(o=>{let params2=[...o.thisType!==void 0?[`this: ${o.thisType}`]:[],...o.params.map(p=>`${p.rest?"...":""}${p.name}${p.optional?"?":""}: ${p.type}`)].join(", "),tp=o.typeParams.length>0?`<${o.typeParams.join(", ")}>`:"";return`${prefix}${tp}(${params2}): ${o.returnType}`})}function expandCollapsed(text,path,symbols){if(!text.includes("{\u2026}"))return text;let container=text==="{\u2026}"?path:`${path}[]`,members=[];for(let s of symbols.values()){if(parentOf(s.path)!==container)continue;let leaf=leafOf(s.path),sep4=s.path[container.length];if(leaf==="()"){members.push(...overloadMembers(s.signature,"")??[]);continue}if(leaf==="new()"){members.push(...overloadMembers(s.signature,"new ")??[]);continue}if(leaf.startsWith("[")&&sep4==="#"){members.push(`[key: ${leaf.slice(1,-1)}]: ${s.signature.replace(MODIFIERS,"")}`);continue}let name=IDENTIFIER2.test(leaf)?leaf:JSON.stringify(leaf),optional=s.optional?"?":"";if(s.kind==="method"){let overloads=overloadMembers(s.signature,`${name}${optional}`);if(!overloads)return;members.push(...overloads)}else{let inner=expandCollapsed(s.signature.replace(MODIFIERS,""),s.path,symbols);if(inner===void 0)return;members.push(`${s.signature.startsWith("readonly ")?"readonly ":""}${name}${optional}: ${inner}`)}}let literal=`{ ${members.join("; ")} }`;return text.replace("{\u2026}",literal)}function bodyFor(symbol,path,symbols,container){let sig=symbol.signature.replace(/\bthis\b(?!\s*:)/g,container??"this");if(sig!=="")switch(symbol.kind){case"property":case"variable":return expandCollapsed(sig.replace(MODIFIERS,""),path,symbols);case"enumMember":return sig;case"function":case"method":{let members=overloadMembers(sig,leafOf(path)==="new()"?"new ":"");return members?`{ ${members.join("; ")} }`:void 0}case"type":return aliasBody(sig);default:return}}function aliasFor(name,path,symbols){let symbol=symbols.get(path);if(!symbol)return;let params2=[],own=symbol.kind==="type"?headerTypeParams(symbol):void 0,containerRef;for(let p=parentOf(path);p!==void 0;p=parentOf(p)){let parent=symbols.get(p),tp=headerTypeParams(parent);if(tp&¶ms2.unshift(tp),containerRef===void 0&&parent&&(parent.kind==="class"||parent.kind==="interface")){let{scope,segments}=splitPath(p);if(scope===void 0&&segments.every((seg,i)=>i===0||seg.startsWith("."))){let anys2=tp?`<${Array.from({length:countParams(tp)},()=>"any").join(", ")}>`:"";containerRef=`${segments.join("")}${anys2}`}}}let body=bodyFor(symbol,path,symbols,containerRef);if(body===void 0)return;own&¶ms2.push(own);let list=params2.join(", "),anys=params2.map(p=>Array.from({length:countParams(p)},()=>"any").join(", ")).join(", ");return{statements:[`type ${name}${list?`<${list}>`:""} = ${body};`,`type ${name}$ = ${name}${list?`<${anys}>`:""};`]}}function isAnyLike(type){return(type.getFlags()&(import_ts_morph3.ts.TypeFlags.Any|import_ts_morph3.ts.TypeFlags.Unknown))!==0}function isErrorType(type){return type.compilerType.intrinsicName==="error"}function relate(checker,before,after){let anyBefore=isAnyLike(before),anyAfter=isAnyLike(after);if(anyBefore&&anyAfter)return"equivalent";if(anyBefore)return"narrowed";if(anyAfter)return"widened";let oldToNew=checker.isTypeAssignableTo(before.compilerType,after.compilerType),newToOld=checker.isTypeAssignableTo(after.compilerType,before.compilerType);return oldToNew&&newToOld?"equivalent":oldToNew?"widened":newToOld?"narrowed":"incompatible"}function parameterInfo(sig){return sig.getParameters().map(p=>{let decl=p.getDeclarations()[0],node=decl?.compilerNode,optional=node!==void 0&&import_ts_morph3.ts.isParameter(node)?node.questionToken!==void 0||node.dotDotDotToken!==void 0||node.initializer!==void 0:!1,declared=decl?p.getTypeAtLocation(decl):sig.getReturnType(),type=optional?declared.getNonNullableType():declared;return{name:p.getName(),type,optional}})}function compareSignatures(checker,before,after){let pa=parameterInfo(before),pb=parameterInfo(after),parameters=[];for(let i=0;i<Math.max(pa.length,pb.length);i++){let a=pa[i],b=pb[i];a&&!b?parameters.push({name:a.name,relation:"removed",optionalBefore:a.optional,optionalAfter:!1}):!a&&b?parameters.push({name:b.name,relation:"added",optionalBefore:!1,optionalAfter:b.optional}):a&&b&¶meters.push({name:a.name,relation:relate(checker,a.type,b.type),optionalBefore:a.optional,optionalAfter:b.optional})}let result={parameters,returnType:relate(checker,before.getReturnType(),after.getReturnType())},thisA=thisParameter(before),thisB=thisParameter(after);return thisA&&!thisB?result.thisParameter={relation:"removed",before:thisA.text}:!thisA&&thisB?result.thisParameter={relation:"added",after:thisB.text}:thisA&&thisB&&(result.thisParameter={relation:relate(checker,thisA.type,thisB.type),before:thisA.text,after:thisB.text}),result}function thisParameter(sig){let decl=sig.getDeclaration();if(!import_ts_morph3.Node.isParametered(decl))return;let param=decl.getParameters().find(p=>p.getName()==="this");if(!param)return;let type=param.getType();return{type,text:type.getText(param,import_ts_morph3.ts.TypeFormatFlags.NoTruncation)}}function compare(checker,before,after,construct){let sigsA=construct?before.getConstructSignatures():before.getCallSignatures(),sigsB=construct?after.getConstructSignatures():after.getCallSignatures(),callable=sigsA.length>0&&sigsB.length>0,result={relation:relate(checker,before,after),callable};callable&&(result.typeParameterCounts={before:sigsA.map(s=>s.getTypeParameters().length),after:sigsB.map(s=>s.getTypeParameters().length)});let generic=[...sigsA,...sigsB].some(s=>s.getTypeParameters().length>0);return callable&&sigsA.length===sigsB.length&&!generic&&(result.signatures=sigsA.map((s,i)=>compareSignatures(checker,s,sigsB[i]))),result}function hasErrorInside(file,name){let generic=file.getTypeAlias(name);return generic?generic.getTypeNode()?.getDescendants().some(d=>import_ts_morph3.Node.isTypeReference(d)&&isErrorType(d.getType()))??!1:!0}function scopeForEntry(project,file,entry,packageName){if(file.getSymbol()!==void 0)return file;let wanted=entry==="."?packageName:`${packageName}/${entry.slice(2)}`;for(let sf of project.getSourceFiles())for(let mod of sf.getModules())if(ambientModuleName(mod)===wanted&&ownEntryOf(wanted,packageName)===entry)return mod}function namespaceScope(project,scope,path){let checker=project.getTypeChecker(),moduleSymbol=import_ts_morph3.Node.isSourceFile(scope)?scope.getSymbol():checker.getSymbolAtLocation(scope.getNameNode());if(!moduleSymbol)return scope;let exports=checker.getExportsOfModule(moduleSymbol),current=scope;for(let seg of splitPath(path).segments){if(!/^\.?[A-Za-z_$"]/.test(seg)||seg===".new()")break;let name=seg.startsWith(".")?seg.slice(1):seg,found=exports.find(e=>e.getName()===name);if(!found)break;let symbol=(found.getFlags()&import_ts_morph3.ts.SymbolFlags.Alias)!==0?found.getAliasedSymbol()??found:found,block=symbol.getDeclarations().find(d=>import_ts_morph3.Node.isModuleDeclaration(d)&&d.getBody()!==void 0);if(!block)break;current=block,exports=symbol.getExports()}return current}async function compareTypesWithChecker(input){let entries=resolveEntryPoints(input.b.dir,input.b.name,input.b.version),dir=mkdtempSync(join3(tmpdir(),"uptide-compat-")),out=new Map;try{let paths={};for(let{entry,file}of entries)paths[entry==="."?"__b":`__b/${entry.slice(2)}`]=[file];let project=new import_ts_morph3.Project({skipAddingFilesFromTsConfig:!0,skipFileDependencyResolution:!0,compilerOptions:{strict:!0,module:import_ts_morph3.ts.ModuleKind.Preserve,moduleResolution:import_ts_morph3.ts.ModuleResolutionKind.Bundler,target:import_ts_morph3.ts.ScriptTarget.ESNext,esModuleInterop:!0,skipLibCheck:!0,noEmit:!0,types:[],baseUrl:dir,paths}}),entryFiles=new Map(entries.map(e=>[e.entry,project.addSourceFileAtPath(e.file)]));project.resolveSourceFileDependencies();let symbolsA=new Map(input.surfaceA.symbols.map(s=>[s.path,s])),symbolsB=new Map(input.surfaceB.symbols.map(s=>[s.path,s])),byEntry=new Map;for(let path of input.paths){let entry=splitPath(path).scope??".";if(!entryFiles.has(entry))continue;let list=byEntry.get(entry)??[];list.push(path),byEntry.set(entry,list)}let planned=[],index=0;for(let[entry,pathsHere]of byEntry){let file=entryFiles.get(entry),scope=scopeForEntry(project,file,entry,input.b.name);if(!scope)continue;if(import_ts_morph3.Node.isSourceFile(scope)){let moduleSymbol=scope.getSymbol(),locals=new Set(scope.getLocals().map(l=>l.getName())),names=moduleSymbol?project.getTypeChecker().getExportsOfModule(moduleSymbol).map(e=>e.getName()).filter(n=>IDENTIFIER2.test(n)&&n!=="default"&&!locals.has(n)):[];names.length>0&&scope.addStatements(`import { ${names.join(", ")} } from ${JSON.stringify(entry==="."?"__b":`__b/${entry.slice(2)}`)};`)}let perScope=new Map;for(let path of pathsHere){let a=aliasFor(`__a_${index}`,path,symbolsA),b=aliasFor(`__b_${index}`,path,symbolsB);if(!a||!b)continue;let target=namespaceScope(project,scope,path),lines=perScope.get(target)??[];lines.push(...a.statements,...b.statements),perScope.set(target,lines),planned.push({path,scope:target,index,construct:leafOf(path)==="new()"}),index++}for(let[target,lines]of perScope)target.addStatements(lines)}if(process.env.UPTIDE_COMPAT_KEEP)for(let f of new Set(planned.map(p=>p.scope.getSourceFile())))writeFileSync(join3(dir,f.getBaseName()),f.getFullText());let checker=project.getTypeChecker().compilerObject;for(let{path,scope,index:i,construct}of planned){let a=scope.getTypeAlias(`__a_${i}$`),b=scope.getTypeAlias(`__b_${i}$`);if(!a||!b)continue;let typeA=a.getType(),typeB=b.getType();isErrorType(typeA)||isErrorType(typeB)||hasErrorInside(scope,`__a_${i}`)||hasErrorInside(scope,`__b_${i}`)||isAnyLike(typeA)&&isAnyLike(typeB)||out.set(path,compare(checker,typeA,typeB,construct))}return out}finally{process.env.UPTIDE_COMPAT_KEEP?console.error(`compat program kept at ${dir}`):rmSync(dir,{recursive:!0,force:!0})}}var MAX_HOPS=8;function deepestAt(tsc,root,position){let node=root;for(;;){let next;if(tsc.forEachChild(node,child=>{!next&&child.getStart()<=position&&position<child.getEnd()&&(next=child)}),!next)return node;node=next}}function offendingExpression(tsc,node){let n=node;for(;n&&!tsc.isExpression(n);)n=n.parent;if(n){for(;tsc.isPropertyAccessExpression(n.parent)&&n.parent.name===n;)n=n.parent;return n}}function counterpart(tsc,decl,program){let file=program.getSourceFile(decl.getSourceFile().fileName);if(!file)return;let node=deepestAt(tsc,file,decl.getStart());for(;node&&node.kind!==decl.kind;)node=node.parent;return node}function typeText(tsc,decl,program){let at=tsc.getNameOfDeclaration(decl)??decl,checker=program.getTypeChecker();try{return checker.typeToString(checker.getTypeAtLocation(at),void 0,tsc.TypeFormatFlags.NoTruncation).replace(/import\("[^"]*"\)\./g,"").replace(/\b[A-Za-z_$][\w$]*\.(?=[A-Z])/g,"")}catch{return}}function findCause(programs,diagnostic,file,repoDir,erroredLines){let tsc=programs.ts;if(diagnostic.start===void 0||!/\b(unknown|any)\b/.test(tsc.flattenDiagnosticMessageText(diagnostic.messageText," ")))return;let checker=programs.overlay.getTypeChecker(),inRepo=n=>{let f=n.getSourceFile().fileName;return f.startsWith(`${repoDir}/`)&&!f.includes("/node_modules/")},declarationOf=expr2=>{let symbol=checker.getSymbolAtLocation(expr2);return(symbol&&symbol.flags&tsc.SymbolFlags.Alias?checker.getAliasedSymbol(symbol):symbol)?.declarations?.[0]},lineOf=n=>{let f=n.getSourceFile(),named=tsc.getNameOfDeclaration(n);return`${relative2(repoDir,f.fileName)}:${f.getLineAndCharacterOfPosition((named??n).getStart()).line+1}`},site2=`${relative2(repoDir,file.fileName)}:${file.getLineAndCharacterOfPosition(diagnostic.start).line+1}`,judge=decl=>{let at=lineOf(decl);if(at===site2)return;if(erroredLines.has(at))return causeAt(tsc,decl,"which itself fails to compile against the target",repoDir);let before=counterpart(tsc,decl,programs.base),after=typeText(tsc,decl,programs.overlay),earlier=before?typeText(tsc,before,programs.base):void 0;if(after!==void 0&&earlier!==void 0&&after!==earlier)return causeAt(tsc,decl,`whose type changed from \`${clip(earlier)}\` to \`${clip(after)}\``,repoDir)},isAny=n=>(checker.getTypeAtLocation(n).flags&tsc.TypeFlags.Any)!==0,origin=start=>{let n=start;for(let hop=0;n&&hop<MAX_HOPS;hop++){if(tsc.isParenthesizedExpression(n)||tsc.isAwaitExpression(n)||tsc.isAsExpression(n)){n=n.expression;continue}if(tsc.isCallExpression(n)||tsc.isNewExpression(n)){n=tsc.isPropertyAccessExpression(n.expression)?n.expression.expression:n.expression;continue}if(tsc.isPropertyAccessExpression(n)){n=n.expression;continue}if(!tsc.isIdentifier(n))return;let decl=checker.getSymbolAtLocation(n)?.declarations?.[0];if(!decl||!inRepo(decl))return;if(tsc.isImportSpecifier(decl)||tsc.isImportClause(decl)||tsc.isNamespaceImport(decl)){let importDecl=decl.getSourceFile()&&findImportDeclaration(tsc,decl),from=importDecl?importDecl.moduleSpecifier.getText().replace(/['"]/g,""):"an import";return causeAt(tsc,decl,`imported from \`${from}\`, which is typed \`any\` against the target`,repoDir)}let judged=judge(decl);if(judged)return judged;if(tsc.isVariableDeclaration(decl)&&decl.initializer){n=decl.initializer;continue}return}},expr=offendingExpression(tsc,deepestAt(tsc,file,diagnostic.start));for(let hop=0;expr&&hop<MAX_HOPS;hop++){if(tsc.isParenthesizedExpression(expr)||tsc.isAwaitExpression(expr)||tsc.isAsExpression(expr)){expr=expr.expression;continue}if(tsc.isCallExpression(expr)||tsc.isNewExpression(expr)){let call=expr,callee=call.expression,target=tsc.isPropertyAccessExpression(callee)?callee.name:callee,decl=declarationOf(target);if(decl&&inRepo(decl)){let judged=judge(decl);if(judged)return judged;let anyArg=(call.arguments??[]).find(a=>isAny(a));if(anyArg)return origin(anyArg);expr=returnedExpression(tsc,decl);continue}expr=tsc.isPropertyAccessExpression(callee)?callee.expression:void 0;continue}if(tsc.isIdentifier(expr)||tsc.isPropertyAccessExpression(expr)){let target=tsc.isPropertyAccessExpression(expr)?expr.name:expr,decl=declarationOf(target);if(!decl||!inRepo(decl)){if(tsc.isPropertyAccessExpression(expr)){expr=expr.expression;continue}return tsc.isIdentifier(expr)&&isAny(expr)?origin(expr):void 0}if(tsc.isImportSpecifier(decl)||tsc.isImportClause(decl)||tsc.isNamespaceImport(decl))return isAny(expr)?origin(expr):void 0;let judged=judge(decl);if(judged)return judged;if(tsc.isVariableDeclaration(decl)||tsc.isPropertyDeclaration(decl)){expr=decl.initializer;continue}if(tsc.isParameter(decl)){let fn=decl.parent;if(tsc.isCallExpression(fn.parent)){expr=fn.parent;continue}return judge(fn)}if((tsc.isPropertySignature(decl)||tsc.isPropertyAssignment(decl))&&tsc.isPropertyAccessExpression(expr)){expr=expr.expression;continue}return}return}}function findImportDeclaration(tsc,node){let n=node;for(;n&&!tsc.isImportDeclaration(n);)n=n.parent;return n}function returnedExpression(tsc,decl){let body;if(tsc.isVariableDeclaration(decl)&&decl.initializer?body=decl.initializer:tsc.isFunctionLike(decl)&&"body"in decl&&(body=decl.body),!body)return;if((tsc.isArrowFunction(body)||tsc.isFunctionExpression(body))&&(body=body.body),body&&tsc.isExpression(body))return body;let returned,visit=n=>{returned||(tsc.isReturnStatement(n)&&n.expression?returned=n.expression:tsc.isFunctionLike(n)||tsc.forEachChild(n,visit))};return body&&tsc.forEachChild(body,visit),returned}function clip(text){let one=text.replace(/\s+/g," ");return one.length>80?`${one.slice(0,77)}...`:one}function causeAt(tsc,decl,reason,repoDir){let file=decl.getSourceFile(),holder=decl,named=tsc.getNameOfDeclaration(decl);for(;!named&&holder.parent&&!tsc.isSourceFile(holder.parent)&&(holder=holder.parent,!(tsc.isBlock(holder)||tsc.isCallExpression(holder)));)named=tsc.getNameOfDeclaration(holder);let{line}=file.getLineAndCharacterOfPosition((named??decl).getStart());return{name:named?named.getText():"(anonymous)",file:relative2(repoDir,file.fileName).split("\\").join("/"),line:line+1,reason}}var MISMATCH_CODES=new Set([2345,2322]);function parameterCause(programs,diagnostic,file,repoDir,rootDir=repoDir){let tsc=programs.ts;if(diagnostic.start===void 0||!MISMATCH_CODES.has(diagnostic.code))return;let checker=programs.overlay.getTypeChecker(),inRepo=n=>{let f=n.getSourceFile().fileName;return f.startsWith(`${rootDir}/`)&&!f.includes("/node_modules/")},node=deepestAt(tsc,file,diagnostic.start),decl;for(let n=node;n&&!tsc.isStatement(n);n=n.parent){let parent=n.parent;if(parent&&(tsc.isCallExpression(parent)||tsc.isNewExpression(parent))){let index=parent.arguments?.indexOf(n)??-1;if(index<0)continue;let parameters=checker.getResolvedSignature(parent)?.parameters??[];decl=parameters[Math.min(index,parameters.length-1)]?.valueDeclaration;break}if(parent&&tsc.isJsxAttribute(parent)&&parent.initializer===n){decl=checker.getSymbolAtLocation(parent.name)?.declarations?.[0];break}}if(!decl||!inRepo(decl)||!tsc.isParameter(decl)&&!tsc.isPropertySignature(decl)&&!tsc.isPropertyDeclaration(decl))return;let typeNode=decl.type;if(!typeNode||!namesForeignType(tsc,typeNode,checker,inRepo))return;let site2=`${relative2(repoDir,file.fileName)}:${file.getLineAndCharacterOfPosition(diagnostic.start).line+1}`,at=decl.getSourceFile();if(`${relative2(repoDir,at.fileName)}:${at.getLineAndCharacterOfPosition(decl.getStart()).line+1}`===site2)return;let what=tsc.isParameter(decl)?"parameter":"prop",name=tsc.getNameOfDeclaration(decl)?.getText()??"(anonymous)",cause=causeAt(tsc,decl,`whose ${what} \`${name}: ${clip(typeNode.getText())}\` no longer accepts what the target gives it; widen the ${what}'s type there`,repoDir);return{...cause,name,line:cause.line,anchorOnly:!0}}function namesForeignType(tsc,typeNode,checker,inRepo){let foreign=!1,visit=n=>{if(!foreign){if(tsc.isTypeReferenceNode(n)||tsc.isExpressionWithTypeArguments(n)){let name=tsc.isTypeReferenceNode(n)?n.typeName:n.expression,symbol=checker.getSymbolAtLocation(name);(symbol&&symbol.flags&tsc.SymbolFlags.Alias?checker.getAliasedSymbol(symbol):symbol)?.declarations?.some(d=>!inRepo(d))&&(foreign=!0)}tsc.forEachChild(n,visit)}};return visit(typeNode),foreign}var MISSING_MEMBER_CODES=new Set([2339,2551]);function augmentationCause(programs,diagnostic,file,repoDir,rootDir=repoDir){let tsc=programs.ts;if(diagnostic.start===void 0||!MISSING_MEMBER_CODES.has(diagnostic.code))return;let inRepo=n=>{let f=n.getSourceFile().fileName;return f.startsWith(`${rootDir}/`)&&!f.includes("/node_modules/")},name=deepestAt(tsc,file,diagnostic.start);if(!tsc.isIdentifier(name)&&!tsc.isPrivateIdentifier(name))return;let before=counterpart(tsc,name,programs.base);if(!before)return;let checker=programs.base.getTypeChecker(),member=checker.getSymbolAtLocation(before)?.declarations?.[0];if(!member)return;let decl=inRepo(member)?member:void 0,elsewhere;if(!decl){let owner=member.parent;if(!owner||!tsc.isInterfaceDeclaration(owner))return;let declarations=(checker.getSymbolAtLocation(owner.name)?.declarations??[]).filter(d=>inRepo(d)&&isAugmentation(tsc,d));if(decl=declarations.find(d=>d.getSourceFile().fileName.startsWith(`${repoDir}/`))??declarations[0],!decl)return;elsewhere=packageOf(member.getSourceFile().fileName)}let site2=`${relative2(repoDir,file.fileName)}:${file.getLineAndCharacterOfPosition(diagnostic.start).line+1}`,holder=tsc.isInterfaceDeclaration(decl)?decl:void 0,global,augmented;for(let n=decl.parent;n&&!tsc.isSourceFile(n);n=n.parent)tsc.isModuleDeclaration(n)?n.flags&tsc.NodeFlags.GlobalAugmentation?global=n:tsc.isStringLiteral(n.name)&&(augmented=n.name.text):!holder&&(tsc.isInterfaceDeclaration(n)||tsc.isTypeAliasDeclaration(n)||tsc.isClassDeclaration(n))&&(holder=n);let anchor=global??holder??decl,at=anchor.getSourceFile(),line=at.getLineAndCharacterOfPosition(anchor.getStart()).line+1;if(`${relative2(repoDir,at.fileName)}:${line}`===site2)return;let memberName2=tsc.getNameOfDeclaration(member)?.getText()??name.getText(),path=qualifiedName(tsc,decl,holder),declares=elsewhere?`which augments \`${path}\`, the interface \`${memberName2}\` is declared on (by ${elsewhere})`:`which declares \`${memberName2}\` on \`${path}\``,reason=global?`${declares}, a global augmentation the target no longer reads; declare the matchers on the interface the target reads instead`:augmented!==void 0?`${declares} in an augmentation of "${augmented}", a shape the target no longer merges; match the target's declaration there`:`${declares}, which the target no longer reads at this site`;return{name:path,file:relative2(repoDir,at.fileName).split("\\").join("/"),line,reason,anchorOnly:!0}}function isAugmentation(tsc,decl){for(let n=decl.parent;n&&!tsc.isSourceFile(n);n=n.parent)if(tsc.isModuleDeclaration(n)&&(n.flags&tsc.NodeFlags.GlobalAugmentation||tsc.isStringLiteral(n.name)))return!0;return!1}function packageOf(fileName){let m=/\/node_modules\/((?:@[^/]+\/)?[^/]+)\//.exec(fileName);return m?m[1]:(fileName.split("/").at(-2)??fileName).replace(/-v\d+$/,"")}function qualifiedName(tsc,decl,holder){let parts=[],named=holder?tsc.getNameOfDeclaration(holder)?.getText():void 0;named&&parts.push(named);for(let n=(holder??decl).parent;n&&!tsc.isSourceFile(n);n=n.parent)tsc.isModuleDeclaration(n)&&tsc.isIdentifier(n.name)&&!(n.flags&tsc.NodeFlags.GlobalAugmentation)&&parts.unshift(n.name.text);return parts.join(".")||(tsc.getNameOfDeclaration(decl)?.getText()??"(anonymous)")}var JSX_NAMESPACE_CODES=new Set([7026,2602]);function jsxSettingLocation(tsc,configFile){let seen=new Set;for(let file=configFile;!seen.has(file);){seen.add(file);let text;try{text=readFileSync2(file,"utf8")}catch{return}let parsed4=tsc.parseConfigFileTextToJson(file,text).config;if(parsed4?.compilerOptions?.jsx!==void 0){let at=text.search(/"jsx"\s*:/),line=at<0?1:text.slice(0,at).split(`
|
|
147
147
|
`).length;return{file,line}}let base=Array.isArray(parsed4?.extends)?parsed4?.extends[0]:parsed4?.extends;if(typeof base!="string"||base.startsWith("@")||!base.startsWith("."))return;let next=isAbsolute(base)?base:resolve3(dirname3(file),base);file=next.endsWith(".json")?next:join4(next,"tsconfig.json")}}function hasGlobalJsx(tsc,program){return program.getTypeChecker().resolveName("JSX",void 0,tsc.SymbolFlags.Namespace,!1)!==void 0}function jsxNamespaceCause(programs,fresh,repoDir,targets){if(!fresh.some(d=>JSX_NAMESPACE_CODES.has(d.code)))return;let tsc=programs.ts,options=programs.overlay.getCompilerOptions(),jsx=options.jsx;if(jsx===void 0||jsx===tsc.JsxEmit.ReactJSX||jsx===tsc.JsxEmit.ReactJSXDev||options.jsxImportSource!==void 0||hasGlobalJsx(tsc,programs.overlay)||!hasGlobalJsx(tsc,programs.base))return;let configFile=options.configFilePath,location=configFile?jsxSettingLocation(tsc,configFile):void 0,file=location?.file??configFile;if(!file)return;let setting=tsc.JsxEmit[jsx]?.toLowerCase()??String(jsx),who=targets.find(t=>t.startsWith("@types/"))??targets[0]??"the target";return{cause:{name:"jsx",file:relative3(repoDir,file).split("\\").join("/"),line:location?.line??1,reason:`"jsx": "${setting}" reads JSX element types from the global JSX namespace, which ${who} no longer declares; "jsxImportSource": "react" (or "jsx": "react-jsx") makes the compiler read them from react/jsx-runtime`,config:!0,anchorOnly:!0},explains:d=>JSX_NAMESPACE_CODES.has(d.code)}}function repositoryTypescriptMajor(from){for(let dir=from;;dir=dirname4(dir)){let manifest2=join5(dir,"node_modules","typescript","package.json");if(existsSync3(manifest2))try{let version=JSON.parse(readFileSync3(manifest2,"utf8")).version,major=version?Number.parseInt(version,10):Number.NaN;return Number.isNaN(major)?void 0:major}catch{return}if(dirname4(dir)===dir)return}}function automaticTypes(options){let roots=import_ts_morph8.ts.getEffectiveTypeRoots(options,import_ts_morph8.ts.sys)??[],names=[];for(let root of roots)if(import_ts_morph8.ts.sys.directoryExists(root))for(let entry of readdirSync2(root,{withFileTypes:!0})){if(!entry.isDirectory()||entry.name.startsWith("."))continue;let manifest2=join5(root,entry.name,"package.json");try{if(JSON.parse(readFileSync3(manifest2,"utf8")).typings===null)continue}catch{}names.includes(entry.name)||names.push(entry.name)}return names}var{ES5,ES2015,ES2022,ES2023,ESNext}=import_ts_morph8.ts.ScriptTarget,{CommonJS,Node16,Node18,Node20,NodeNext,Preserve,System}=import_ts_morph8.ts.ModuleKind;function typescriptFiveDefaults(declared){let out={},module=declared.module,target=declared.target??(module===Node16||module===Node18?ES2022:module===Node20?ES2023:module===NodeNext?ESNext:ES5);declared.target===void 0&&(out.target=target);let moduleKind=module??(target>=ES2015?import_ts_morph8.ts.ModuleKind.ES2015:CommonJS);module===void 0&&(out.module=moduleKind),declared.moduleResolution===void 0&&(out.moduleResolution=moduleKind===CommonJS?import_ts_morph8.ts.ModuleResolutionKind.Node10:moduleKind===Node16?import_ts_morph8.ts.ModuleResolutionKind.Node16:moduleKind===Node18||moduleKind===Node20||moduleKind===NodeNext?import_ts_morph8.ts.ModuleResolutionKind.NodeNext:moduleKind===Preserve?import_ts_morph8.ts.ModuleResolutionKind.Bundler:import_ts_morph8.ts.ModuleResolutionKind.Classic);let resolution=declared.moduleResolution??out.moduleResolution,nodeish=[Node16,Node18,Node20,NodeNext,Preserve].includes(moduleKind),interop=declared.esModuleInterop??nodeish;return declared.esModuleInterop===void 0&&(out.esModuleInterop=interop),declared.allowSyntheticDefaultImports===void 0&&(out.allowSyntheticDefaultImports=interop||moduleKind===System||resolution===import_ts_morph8.ts.ModuleResolutionKind.Bundler),declared.strict===void 0&&(out.strict=!1),declared.types===void 0&&(out.types=automaticTypes(declared)),out.ignoreDeprecations="6.0",out}var CANDIDATES=[["pnpm-lock.yaml","pnpm"],["package-lock.json","npm"],["npm-shrinkwrap.json","npm"],["yarn.lock","yarn"],["bun.lock","bun"]];function findLockfile(dir){let current=dir;for(;;){for(let[name,kind]of CANDIDATES){let file=join6(current,name);if(existsSync4(file))return{file,kind,dir:current}}let parent=dirname5(current);if(parent===current)return;current=parent}}function readLockfile(packageDir,declared){let found=findLockfile(packageDir);if(!found)return;let importer=relative4(found.dir,packageDir).split("\\").join("/")||".",text=readFileSync4(found.file,"utf8"),query={importer,declared},installed=found.kind==="pnpm"?parsePnpm(text,query):found.kind==="npm"?parseNpm(text,query):found.kind==="yarn"?parseYarn(text,query):parseBun(text,query);return{kind:found.kind,file:found.file,importer,installed}}function parseNpm(text,query){let out=new Map,lock=JSON.parse(text);for(let name of query.declared.keys()){let v=(query.importer==="."?void 0:lock.packages?.[`${query.importer}/node_modules/${name}`]?.version)??lock.packages?.[`node_modules/${name}`]?.version??lock.dependencies?.[name]?.version;v&&out.set(name,v)}return out}function parsePnpm(text,query){let out=new Map,names=new Set(query.declared.keys()),section="none",inWanted=!1,inDeps=!1,pendingDep,isWantedImporter=key2=>key2.replace(/^['"]|['"]$/g,"")===query.importer;for(let line of text.split(`
|
|
148
148
|
`)){let indent=line.length-line.trimStart().length,trimmed=line.trim();if(!(trimmed===""||trimmed.startsWith("#"))){if(indent===0){section=trimmed==="importers:"?"importers":trimmed==="dependencies:"||trimmed==="devDependencies:"?"top-deps":"none",inWanted=!1,inDeps=!1,pendingDep=void 0;continue}if(section==="importers"){if(indent===2){inWanted=isWantedImporter(trimmed.replace(/:$/,"")),inDeps=!1;continue}if(!inWanted)continue;if(indent===4){inDeps=trimmed==="dependencies:"||trimmed==="devDependencies:"||trimmed==="optionalDependencies:",pendingDep=void 0;continue}if(!inDeps)continue;if(indent===6){let m=/^['"]?(@?[^'":]+)['"]?:\s*(.*)$/.exec(trimmed);if(!m)continue;let name=m[1],inline=(m[2]??"").trim();pendingDep=names.has(name)?name:void 0,pendingDep&&inline&&out.set(name,cleanPnpmVersion(inline))}else if(indent===8&&pendingDep){let m=/^version:\s*(.+)$/.exec(trimmed);m&&out.set(pendingDep,cleanPnpmVersion(m[1]))}continue}if(section==="top-deps"&&query.importer==="."){if(indent===2){let m=/^['"]?(@?[^'":]+)['"]?:\s*(.*)$/.exec(trimmed);if(!m)continue;let name=m[1],inline=(m[2]??"").trim();pendingDep=names.has(name)?name:void 0,pendingDep&&inline&&out.set(name,cleanPnpmVersion(inline))}else if(indent===4&&pendingDep){let m=/^version:\s*(.+)$/.exec(trimmed);m&&out.set(pendingDep,cleanPnpmVersion(m[1]))}}}}return out}function cleanPnpmVersion(v){return v.replace(/^['"]|['"]$/g,"").replace(/[(_].*$/,"")}function parseYarn(text,query){let byRange=new Map,first=new Map,currentSpecs=[];for(let line of text.split(`
|
|
149
149
|
`)){if(line.trim()===""||line.startsWith("#"))continue;if(!line.startsWith(" ")){currentSpecs=line.replace(/:\s*$/,"").split(",").map(part=>{let spec=part.trim().replace(/^"|"$/g,""),at=spec.startsWith("@")?spec.indexOf("@",1):spec.indexOf("@"),name=at===-1?spec:spec.slice(0,at),range=at===-1?"":spec.slice(at+1).replace(/^npm:/,"");return{name,range}});continue}let m=/^\s+version:?\s+"?([^"\s]+)"?/.exec(line);if(m)for(let{name,range}of currentSpecs)byRange.set(`${name}@${range}`,m[1]),first.has(name)||first.set(name,m[1])}let out=new Map;for(let[name,range]of query.declared){let v=byRange.get(`${name}@${range.replace(/^npm:/,"")}`)??first.get(name);v&&out.set(name,v)}return out}function parseBun(text,query){let out=new Map,jsonish=text.replace(/,\s*([}\]])/g,"$1"),lock;try{lock=JSON.parse(jsonish)}catch{return out}let workspaceName=query.importer==="."?void 0:lock.workspaces?.[query.importer]?.name;for(let name of query.declared.keys()){let entry=(workspaceName?lock.packages?.[`${workspaceName}/${name}`]?.[0]:void 0)??lock.packages?.[name]?.[0];if(typeof entry!="string")continue;let at=entry.startsWith("@")?entry.indexOf("@",1):entry.indexOf("@");at!==-1&&out.set(name,entry.slice(at+1))}return out}var LINK=/^(link|workspace|file):/;function typesTargets(manifest2){let out=new Map,main=manifest2.types??manifest2.typings;main&&out.set(".",main);let visit=(key2,value)=>{if(typeof value=="string"){(value.endsWith(".d.ts")||value.endsWith(".d.mts")||value.endsWith(".d.cts"))&&(out.has(key2)||out.set(key2,value));return}if(!(!value||typeof value!="object"))for(let[k,v]of Object.entries(value))k.startsWith(".")?visit(k,v):(k==="types"||k==="import"||k==="default"||k==="require")&&visit(key2,v)};return manifest2.exports&&visit(".",manifest2.exports),out}function buildDirs(depDir){let tsconfig=join7(depDir,"tsconfig.json");if(!existsSync5(tsconfig))return;let parsed4=import_ts_morph9.ts.readConfigFile(tsconfig,p=>readFileSync5(p,"utf8"));if(!parsed4.config)return;let options=import_ts_morph9.ts.parseJsonConfigFileContent(parsed4.config,import_ts_morph9.ts.sys,depDir).options;if(!(!options.outDir||!options.rootDir))return{rootDir:resolve4(depDir,options.rootDir),outDir:resolve4(depDir,options.outDir)}}function sourceFor(depDir,distFile){let abs=resolve4(depDir,distFile),dirs=buildDirs(depDir),candidates=[];dirs&&abs.startsWith(`${dirs.outDir}/`)&&candidates.push(join7(dirs.rootDir,relative5(dirs.outDir,abs))),abs.includes("/dist/")&&candidates.push(abs.replace("/dist/","/src/"));for(let c of candidates){let base=c.replace(/\.d\.(m|c)?ts$/,"");for(let ext of[".ts",".tsx",".mts",".cts"])if(existsSync5(base+ext))return base+ext}}function newestMtime(dir,depth2=0){let newest=0;try{for(let entry of readdirSafe(dir)){let p=join7(dir,entry),st=statSync2(p);st.isDirectory()?entry!=="node_modules"&&depth2<6&&(newest=Math.max(newest,newestMtime(p,depth2+1))):/\.(ts|tsx|mts|cts)$/.test(entry)&&!entry.endsWith(".d.ts")&&(newest=Math.max(newest,st.mtimeMs))}}catch{}return newest}function readdirSafe(dir){try{return readdirSync3(dir)}catch{return[]}}function linkedDir(repoDir,name,specifier){for(let dir=repoDir;;dir=dirname6(dir)){let viaNodeModules=join7(dir,"node_modules",name);if(existsSync5(viaNodeModules))try{return realpathSync(viaNodeModules)}catch{}if(dirname6(dir)===dir)break}let m=/^(?:link|file):(.+)$/.exec(specifier);if(m){let target=resolve4(repoDir,m[1]);if(existsSync5(target))return realpathSync(target)}}function workspaceSourceMap(repoDir,installed){let paths={},warnings=[],queue=[...installed].filter(([,specifier])=>LINK.test(specifier)).map(([name,specifier])=>({from:repoDir,name,specifier})),seen=new Set;for(let next=queue.shift();next;next=queue.shift()){let{from,name,specifier}=next;if(seen.has(name))continue;seen.add(name);let depDir=linkedDir(from,name,specifier);if(!depDir)continue;let manifest2;try{manifest2=JSON.parse(readFileSync5(join7(depDir,"package.json"),"utf8"))}catch{continue}for(let[dep,range]of Object.entries({...manifest2.peerDependencies,...manifest2.dependencies}))LINK.test(range)&&!seen.has(dep)&&queue.push({from:depDir,name:dep,specifier:range});let mapped=0,unmapped;for(let[subpath,distFile]of typesTargets(manifest2)){if(subpath.includes("*"))continue;let source=sourceFor(depDir,distFile),specifierKey=subpath==="."?name:`${name}/${subpath.slice(2)}`;source?(paths[specifierKey]=[source],mapped++):unmapped??=distFile}if(mapped===0&&unmapped!==void 0){let distPath=resolve4(depDir,unmapped),srcDir=buildDirs(depDir)?.rootDir??join7(depDir,"src");try{let distTime=statSync2(distPath).mtimeMs;newestMtime(srcDir)>distTime&&warnings.push(`${name}: compiled against its built ${relative5(depDir,distPath)}, which is older than its source; rebuild it or the results may be stale`)}catch{}}}return{paths,warnings}}function declaredPaths(tsconfig){let parsed4=import_ts_morph9.ts.readConfigFile(tsconfig,p=>readFileSync5(p,"utf8"));if(!parsed4.config)return{paths:{}};let options=import_ts_morph9.ts.parseJsonConfigFileContent(parsed4.config,import_ts_morph9.ts.sys,dirname6(tsconfig)).options;return{paths:options.paths??{},...options.baseUrl?{baseUrl:options.baseUrl}:{}}}function declaredPatterns(root){let strings=list=>Array.isArray(list)?list.filter(p=>typeof p=="string"):[],yaml=join8(root,"pnpm-workspace.yaml");if(existsSync6(yaml)){let doc;try{doc=(0,import_yaml.parse)(readFileSync6(yaml,"utf8"))}catch(err){throw new UptideError("INVALID_WORKSPACE",`pnpm-workspace.yaml is not valid YAML: ${(err instanceof Error?err.message:String(err)).split(`
|
|
150
150
|
`)[0]}`)}return{file:"pnpm-workspace.yaml",patterns:strings(doc?.packages)}}let pkg;try{pkg=JSON.parse(readFileSync6(join8(root,"package.json"),"utf8"))}catch{return}let workspaces=pkg.workspaces;if(workspaces!==void 0)return{file:'package.json "workspaces"',patterns:strings(Array.isArray(workspaces)?workspaces:workspaces?.packages)}}function globRegExp(glob){let re="";for(let i=0;i<glob.length;i++){let c=glob[i];c==="*"&&glob[i+1]==="*"?(i++,glob[i+1]==="/"?(i++,re+="(?:.*/)?"):re+=".*"):c==="*"?re+="[^/]*":c==="?"?re+="[^/]":re+=c.replace(/[.+^${}()|[\]\\]/g,"\\$&")}return new RegExp(`^${re}$`)}var INSTALLED=new Set(["node_modules","bower_components"]),NOT_WALKED=new Set(["dist","build","coverage","out"]);function matchingDirs(root,pattern){let segments=pattern.split("/"),firstGlob=segments.findIndex(s=>/[*?]/.test(s));if(firstGlob===-1)return existsSync6(join8(root,pattern,"package.json"))?[pattern]:[];let rest=segments.slice(firstGlob),re=globRegExp(pattern),found=[],walk=(rel,depth2)=>{if(depth2===0)return;let entries;try{entries=readdirSync4(join8(root,rel),{withFileTypes:!0})}catch{return}for(let entry of entries){if(!entry.isDirectory()||INSTALLED.has(entry.name)||entry.name.startsWith("."))continue;let dir=rel?`${rel}/${entry.name}`:entry.name;re.test(dir)&&existsSync6(join8(root,dir,"package.json"))&&found.push(dir),NOT_WALKED.has(entry.name)||walk(dir,depth2-1)}};return walk(segments.slice(0,firstGlob).join("/"),rest.some(s=>s.includes("**"))?1/0:rest.length),found}function resolveWorkspaces(root){let declared=declaredPatterns(root);if(!declared)return["."];let clean=p=>p.replace(/^\.\//,"").replace(/\/+$/,"")||".",include=declared.patterns.filter(p=>!p.startsWith("!")).map(clean),exclude=declared.patterns.filter(p=>p.startsWith("!")).map(p=>globRegExp(clean(p.slice(1))));if(include.length===0)return["."];let found=new Set([".",...include.filter(pattern=>pattern!==".").flatMap(pattern=>matchingDirs(root,pattern)).filter(dir=>!exclude.some(re=>re.test(dir)))]);if(found.size===1&&!include.includes("."))throw new UptideError("INVALID_WORKSPACE",`${declared.file} declares packages (${declared.patterns.join(", ")}) but none of them matches a directory with a package.json; fix the patterns, or Uptide would check only the root`);return[...found].sort()}var resolved=new Map;function workspacePackagesOf(root){let result=resolved.get(root);if(!result){try{result=resolveWorkspaces(root)}catch(err){if(!(err instanceof UptideError))throw err;result=err}resolved.set(root,result)}if(result instanceof UptideError)throw result;return[...result]}function workspacePackagesOrRoot(root){try{return workspacePackagesOf(root)}catch(err){if(err instanceof UptideError&&err.code==="INVALID_WORKSPACE")return["."];throw err}}function findRepoRoot(cwd){let dir=resolve5(cwd);for(;;){if(existsSync7(join9(dir,"package.json")))return dir;let parent=dirname7(dir);if(parent===dir)return;dir=parent}}var SYNTHETIC_EXCLUDES=["**/node_modules/**","**/dist/**","**/build/**"];function inheritedTsconfigOf(dir){for(let current=dirname7(resolve5(dir));;current=dirname7(current)){let candidate=join9(current,"tsconfig.json");if(existsSync7(candidate))return candidate;if(dirname7(current)===current)return}}var repos=new Map;onReset(()=>repos.clear());function loadedRepo(dir,rootFiles){dir=realpathSync2(dir),rootFiles=rootFiles?.map(file=>realpathSync2(file));let key2=JSON.stringify([dir,rootFiles?.slice().sort()]),repo=repos.get(key2);return repo||(repo=loadRepo(dir,rootFiles),repos.set(key2,repo)),repo}function forgetRepo(dir){for(let key2 of repos.keys())JSON.parse(key2)[0]===dir&&repos.delete(key2)}function ownsFile(repoRef,path){return!(repoRef.exclude??[]).some(d=>path.startsWith(`${d}/`)||path.startsWith(`${realDir(d)}/`))}var realDirs=new Map;function realDir(dir){let real=realDirs.get(dir);if(real===void 0){try{real=realpathSync2(dir)}catch{real=dir}realDirs.set(dir,real)}return real}function readInstalled(cwd){let dir=findRepoRoot(cwd);if(!dir)throw new UptideError("NO_PROJECT",`${cwd}: no package.json found here or in any parent directory`);let packageJson=JSON.parse(readFileSync7(join9(dir,"package.json"),"utf8")),declared=new Map(Object.entries({...packageJson.dependencies,...packageJson.devDependencies,...packageJson.optionalDependencies})),lockfile=readLockfile(dir,declared),installed=new Map(lockfile?.installed??[]);for(let[name,spec]of declared)/^(workspace|link|file):/.test(spec)&&!/^(workspace|link|file):/.test(installed.get(name)??"")&&installed.set(name,spec);return{dir,packageJson,lockfile,installed}}var formatAwareResolution=(host,getOptions)=>{let formats2=new Map;return{resolveModuleNames(names,containingFile,_reused,redirected,options){let opts=options??getOptions(),nodeish=opts.moduleResolution===import_ts_morph7.ts.ModuleResolutionKind.Node16||opts.moduleResolution===import_ts_morph7.ts.ModuleResolutionKind.NodeNext,mode;return nodeish&&(formats2.has(containingFile)||formats2.set(containingFile,import_ts_morph7.ts.getImpliedNodeFormatForFile(containingFile,void 0,host,opts)),mode=formats2.get(containingFile)),names.map(name=>import_ts_morph7.ts.resolveModuleName(name,containingFile,opts,host,void 0,redirected,mode).resolvedModule)}}};function loadRepo(cwd,rootFiles){let{dir,packageJson,lockfile,installed}=readInstalled(cwd),tsconfig=join9(dir,"tsconfig.json"),sources=workspaceSourceMap(dir,installed),sourcePaths=Object.keys(sources.paths).length>0?sources.paths:void 0,project,major=repositoryTypescriptMajor(dir),legacyDefaults=config=>major===void 0||major<6?typescriptFiveDefaults(declaredOptions(config)):{},inherited=existsSync7(tsconfig)?void 0:inheritedTsconfigOf(dir);if(existsSync7(tsconfig)){let declared=sourcePaths?declaredPaths(tsconfig):{paths:{}},legacy=legacyDefaults(tsconfig);project=new import_ts_morph7.Project({tsConfigFilePath:tsconfig,skipAddingFilesFromTsConfig:rootFiles!==void 0,skipFileDependencyResolution:!0,resolutionHost:formatAwareResolution,compilerOptions:{...legacy,noEmit:!0,skipLibCheck:!0,...sourcePaths?{paths:{...declared.paths,...sourcePaths}}:{}}});for(let ref of rootFiles===void 0?readReferences(tsconfig):[])try{project.addSourceFilesFromTsConfig(ref)}catch{}}else project=new import_ts_morph7.Project({skipAddingFilesFromTsConfig:!0,skipFileDependencyResolution:!0,compilerOptions:{target:import_ts_morph7.ts.ScriptTarget.ES2022,module:import_ts_morph7.ts.ModuleKind.ESNext,moduleResolution:import_ts_morph7.ts.ModuleResolutionKind.Bundler,strict:!0,allowJs:!1,...inherited?{...legacyDefaults(inherited),...declaredOptions(inherited)}:{},noEmit:!0,skipLibCheck:!0,...sourcePaths?{paths:sourcePaths}:{}}}),rootFiles===void 0&&project.addSourceFilesAtPaths([join9(dir,"**/*.ts"),join9(dir,"**/*.tsx"),...SYNTHETIC_EXCLUDES.map(e=>`!${join9(dir,e)}`)]);return rootFiles!==void 0&&(project.addSourceFilesAtPaths(rootFiles),existsSync7(tsconfig)&&project.addSourceFilesAtPaths(ambientDeclarations(tsconfig))),project.resolveSourceFileDependencies(),{dir,packageJson,lockfile,installed,project,tsconfig:existsSync7(tsconfig)?tsconfig:void 0,inheritedTsconfig:inherited,includesJs:project.getCompilerOptions().allowJs===!0,warnings:sources.warnings}}function declaredOptions(tsconfig){try{let parsed4=import_ts_morph7.ts.readConfigFile(tsconfig,p=>readFileSync7(p,"utf8"));return parsed4.config?import_ts_morph7.ts.parseJsonConfigFileContent(parsed4.config,import_ts_morph7.ts.sys,dirname7(tsconfig),void 0,tsconfig).options:{}}catch{return{}}}function ambientDeclarations(tsconfig){try{let parsed4=import_ts_morph7.ts.readConfigFile(tsconfig,p=>readFileSync7(p,"utf8"));if(!parsed4.config)return[];let{fileNames}=import_ts_morph7.ts.parseJsonConfigFileContent(parsed4.config,import_ts_morph7.ts.sys,dirname7(tsconfig));return fileNames.filter(f=>/\.d\.[cm]?ts$/.test(f)&&!f.includes("/node_modules/"))}catch{return[]}}function readReferences(tsconfig){try{return(import_ts_morph7.ts.readConfigFile(tsconfig,p=>readFileSync7(p,"utf8")).config?.references??[]).map(r=>{let p=resolve5(dirname7(tsconfig),r.path);return p.endsWith(".json")?p:join9(p,"tsconfig.json")})}catch{return[]}}var repoIndexes=new WeakMap;function packageNameOf(specifier){if(specifier.startsWith(".")||specifier.startsWith("/")||specifier.startsWith("node:"))return;let parts=specifier.split("/");return specifier.startsWith("@")?parts.slice(0,2).join("/"):parts[0]}function indexFile(sf){let index={loads:new Set,reexportsFrom:[],importsFrom:[],memberNames:new Map,computedLoads:[]},load=specifier=>{let name=packageNameOf(specifier);name&&index.loads.add(name)},member=id=>{if(!import_ts_morph10.ts.isIdentifier(id))return;let list=index.memberNames.get(id.text)??[];list.push(id.getStart(sf)),index.memberNames.set(id.text,list)},visit=n=>{if(import_ts_morph10.ts.isImportDeclaration(n)&&import_ts_morph10.ts.isStringLiteral(n.moduleSpecifier))load(n.moduleSpecifier.text),n.moduleSpecifier.text.startsWith(".")&&index.importsFrom.push(n.moduleSpecifier.text);else if(import_ts_morph10.ts.isExportDeclaration(n)&&n.moduleSpecifier&&import_ts_morph10.ts.isStringLiteral(n.moduleSpecifier))load(n.moduleSpecifier.text),n.moduleSpecifier.text.startsWith(".")&&index.reexportsFrom.push(n.moduleSpecifier.text);else if(import_ts_morph10.ts.isImportEqualsDeclaration(n)&&import_ts_morph10.ts.isExternalModuleReference(n.moduleReference)){let e=n.moduleReference.expression;import_ts_morph10.ts.isStringLiteral(e)&&load(e.text)}else if(import_ts_morph10.ts.isCallExpression(n)){let isLoad=import_ts_morph10.ts.isIdentifier(n.expression)&&n.expression.text==="require"||n.expression.kind===import_ts_morph10.ts.SyntaxKind.ImportKeyword,arg=n.arguments[0];isLoad&&arg&&(import_ts_morph10.ts.isStringLiteral(arg)?load(arg.text):index.computedLoads.push(arg.getText(sf)))}else import_ts_morph10.ts.isPropertyAccessExpression(n)?member(n.name):import_ts_morph10.ts.isQualifiedName(n)?member(n.right):(import_ts_morph10.ts.isPropertyAssignment(n)||import_ts_morph10.ts.isShorthandPropertyAssignment(n)||import_ts_morph10.ts.isMethodDeclaration(n)&&import_ts_morph10.ts.isObjectLiteralExpression(n.parent))&&member(n.name);import_ts_morph10.ts.forEachChild(n,visit)};return visit(sf),index}function repoIndex(repo){let index=repoIndexes.get(repo);if(index)return index;index=new Map;for(let file of repo.project.getSourceFiles())file.isDeclarationFile()||file.getFilePath().includes("/node_modules/")||index.set(file.getFilePath(),indexFile(file.compilerNode));return repoIndexes.set(repo,index),index}var detailed=new Map;onReset(()=>{detailed.clear(),repoIndexes=new WeakMap});function detailedSurfaceOf(adapter,name,version,dir){let key2=`${adapter.id}|${dir}`,p=detailed.get(key2);return p||(p=adapter.extractSurfaceDetailed({name,version,dir}),detailed.set(key2,p),p.catch(()=>detailed.delete(key2))),p}function isPackageSpecifier(specifier,pkg){return specifier===pkg||specifier.startsWith(`${pkg}/`)}function resolvePackageDir(repo,pkg){let from=repo.project.getSourceFiles()[0];if(!from)return;let resolved2=import_ts_morph10.ts.resolveModuleName(pkg,from.getFilePath(),repo.project.getCompilerOptions(),repo.project.getModuleResolutionHost()).resolvedModule,fallback=hoistedPackageDir(repo.dir,pkg);if(!resolved2&&fallback===void 0)return;let dir=resolved2?dirname8(resolved2.resolvedFileName):fallback;for(;;){let pj=join10(dir,"package.json");if(existsSync8(pj))try{if(JSON.parse(readFileSync8(pj,"utf8")).name===pkg||!resolved2?.packageId)return realpathSync3(dir)}catch{}let parent=dirname8(dir);if(parent===dir)return fallback===void 0?void 0:realpathSync3(fallback);dir=parent}}function hoistedPackageDir(from,pkg){for(let dir=from;;dir=dirname8(dir)){let candidate=join10(dir,"node_modules",pkg);if(existsSync8(join10(candidate,"package.json")))return candidate;if(dirname8(dir)===dir)return}}function makeResolver(locations,pkgDir,surface){let inPackage=file=>file.startsWith(`${pkgDir}/`),known=new Map(surface.symbols.map(s=>[s.path,s])),canonicalOf=symbol=>{for(let decl of symbol.getDeclarations()){let file=decl.getSourceFile().getFilePath();if(!inPackage(file))continue;let path=locations.get(locationKey(file,decl.getStart()));if(path)return path}};return{inPackage,constructorOf(classPath){let ctor=`${classPath}.new()`;return known.has(ctor)?ctor:classPath},pathOf(symbol,written2){if(!symbol)return;let isAlias=(symbol.getFlags()&import_ts_morph10.ts.SymbolFlags.Alias)!==0,target=isAlias?symbol.getAliasedSymbol()??symbol:symbol,canonical=canonicalOf(target);if(canonical){if(written2!==void 0&&written2!==canonical){let named=known.get(written2);if(named&&named.aliasOf===canonical)return{path:named.path,canonical}}if(isAlias){let decl=symbol.getDeclarations()[0],imported=decl&&(import_ts_morph10.Node.isImportSpecifier(decl)||import_ts_morph10.Node.isExportSpecifier(decl))?decl.getNameNode().getText():void 0,named=imported?known.get(imported):void 0;if(named&&(named.aliasOf===canonical||named.path===canonical))return{path:named.path,canonical}}return{path:canonical,canonical}}}}}function isUntyped(expression){try{let type=expression.getType();return type.isAny()||type.isUnknown()}catch{return!1}}function rootedAtImport(access,extraRoots=new Set){let node=access;for(;;)if(import_ts_morph10.Node.isPropertyAccessExpression(node)||import_ts_morph10.Node.isElementAccessExpression(node))node=node.getExpression();else if(import_ts_morph10.Node.isCallExpression(node)||import_ts_morph10.Node.isNewExpression(node))node=node.getExpression();else if(import_ts_morph10.Node.isNonNullExpression(node)||import_ts_morph10.Node.isParenthesizedExpression(node))node=node.getExpression();else if(import_ts_morph10.Node.isQualifiedName(node))node=node.getLeft();else if(import_ts_morph10.Node.isAwaitExpression(node))node=node.getExpression();else break;if(!import_ts_morph10.Node.isIdentifier(node))return!1;let symbol=node.getSymbol();return symbol?(symbol.getFlags()&import_ts_morph10.ts.SymbolFlags.Alias)!==0||extraRoots.has(symbol):!1}function rootNode(access){let node=access;for(;;)if(import_ts_morph10.Node.isPropertyAccessExpression(node)||import_ts_morph10.Node.isElementAccessExpression(node)||import_ts_morph10.Node.isNonNullExpression(node)||import_ts_morph10.Node.isParenthesizedExpression(node)||import_ts_morph10.Node.isAwaitExpression(node))node=node.getExpression();else if(import_ts_morph10.Node.isQualifiedName(node))node=node.getLeft();else return node}function rootIdentifier(access){let node=access;for(;;)if(import_ts_morph10.Node.isPropertyAccessExpression(node)||import_ts_morph10.Node.isElementAccessExpression(node)||import_ts_morph10.Node.isCallExpression(node)||import_ts_morph10.Node.isNewExpression(node)||import_ts_morph10.Node.isNonNullExpression(node)||import_ts_morph10.Node.isParenthesizedExpression(node)||import_ts_morph10.Node.isAwaitExpression(node))node=node.getExpression();else if(import_ts_morph10.Node.isQualifiedName(node))node=node.getLeft();else break;return import_ts_morph10.Node.isIdentifier(node)?node:void 0}function packageLoadCall(node,pkg){if(!import_ts_morph10.Node.isCallExpression(node))return;let arg=node.getArguments()[0],specifier=arg&&import_ts_morph10.Node.isStringLiteral(arg)?arg.getLiteralValue():void 0;if(specifier===void 0||!isPackageSpecifier(specifier,pkg))return;let callee=node.getExpression();if(import_ts_morph10.Node.isIdentifier(callee)&&callee.getText()==="require")return"require";if(callee.getKind()===import_ts_morph10.ts.SyntaxKind.ImportKeyword)return"dynamic-import"}function unwrapAwait(node){return import_ts_morph10.Node.isAwaitExpression(node)?node.getExpression():node}function loadIsFollowed(call){let node=call;import_ts_morph10.Node.isAwaitExpression(node.getParent())&&(node=node.getParent());let parent=node.getParent();return parent?!!(import_ts_morph10.Node.isVariableDeclaration(parent)||import_ts_morph10.Node.isPropertyAccessExpression(parent)&&parent.getExpression()===node||import_ts_morph10.Node.isExpressionStatement(parent)||import_ts_morph10.Node.isImportEqualsDeclaration(parent)):!1}function literalFlowsInto(literal,resolver){let node=literal;for(;;){let parent=node.getParent();if(!parent)return!1;if(import_ts_morph10.Node.isObjectLiteralExpression(parent)||import_ts_morph10.Node.isArrayLiteralExpression(parent)||import_ts_morph10.Node.isPropertyAssignment(parent)||import_ts_morph10.Node.isParenthesizedExpression(parent)){node=parent;continue}if(import_ts_morph10.Node.isCallExpression(parent)||import_ts_morph10.Node.isNewExpression(parent)){let callee=parent.getExpression(),symbol=import_ts_morph10.Node.isPropertyAccessExpression(callee)?callee.getNameNode().getSymbol():callee.getSymbol();return resolver.pathOf(symbol)!==void 0}if(import_ts_morph10.Node.isVariableDeclaration(parent)||import_ts_morph10.Node.isSatisfiesExpression(parent)||import_ts_morph10.Node.isAsExpression(parent)){let typeNode=parent.getTypeNode(),name=typeNode&&import_ts_morph10.Node.isTypeReference(typeNode)?typeNode.getTypeName():void 0,symbol=name&&import_ts_morph10.Node.isQualifiedName(name)?name.getRight().getSymbol():name?.getSymbol();return resolver.pathOf(symbol)!==void 0}return!1}}function contextualProperty(literal,name){if(!import_ts_morph10.Node.isObjectLiteralExpression(literal))return;let contextual=literal.getContextualType();if(!contextual)return;let candidates=contextual.isUnion()?contextual.getUnionTypes():[contextual];for(let t of candidates){let prop=t.getProperty(name);if(prop)return prop}}function isAssignmentTarget(expr){let parent=expr.getParent();if(!parent)return!1;if(import_ts_morph10.Node.isBinaryExpression(parent)&&parent.getLeft()===expr){let op=parent.getOperatorToken().getKind();return op>=import_ts_morph10.ts.SyntaxKind.FirstAssignment&&op<=import_ts_morph10.ts.SyntaxKind.LastAssignment}if(import_ts_morph10.Node.isPrefixUnaryExpression(parent)||import_ts_morph10.Node.isPostfixUnaryExpression(parent)){let op=parent.getOperatorToken();return op===import_ts_morph10.ts.SyntaxKind.PlusPlusToken||op===import_ts_morph10.ts.SyntaxKind.MinusMinusToken}return import_ts_morph10.Node.isDeleteExpression(parent)}function referenceExpression(id){let parent=id.getParent();return parent&&import_ts_morph10.Node.isPropertyAccessExpression(parent)&&parent.getNameNode()===id||parent&&import_ts_morph10.Node.isQualifiedName(parent)&&parent.getRight()===id?parent:id}function classifyAccess(id){if(id.getFirstAncestor(a=>import_ts_morph10.Node.isExpressionWithTypeArguments(a)&&import_ts_morph10.Node.isHeritageClause(a.getParent())))return"implement";if(id.getFirstAncestor(a=>import_ts_morph10.Node.isTypeNode(a)||import_ts_morph10.Node.isTypeQuery(a)||import_ts_morph10.Node.isTypeReference(a)))return"typeRef";let expr=referenceExpression(id),parent=expr.getParent();return parent&&import_ts_morph10.Node.isCallExpression(parent)&&parent.getExpression()===expr?"call":parent&&import_ts_morph10.Node.isNewExpression(parent)&&parent.getExpression()===expr?"construct":isAssignmentTarget(expr)?"write":"read"}function viaOfImport(symbol,repoDir,resolver){let decl=symbol.getDeclarations()[0];if(decl&&import_ts_morph10.Node.isImportSpecifier(decl)&&decl.getAliasNode()!==void 0)return"alias";let current=symbol;for(let hops=0;hops<10&¤t&&(current.getFlags()&import_ts_morph10.ts.SymbolFlags.Alias)!==0;hops++){let next=current.getImmediatelyAliasedSymbol(),nextDecl=next?.getDeclarations()[0];if(nextDecl){let file=nextDecl.getSourceFile().getFilePath();if(!resolver.inPackage(file)&&file.startsWith(`${repoDir}/`)&&(import_ts_morph10.Node.isExportSpecifier(nextDecl)||import_ts_morph10.Node.isExportAssignment(nextDecl)))return"reexport"}current=next}return"direct"}function scanUnanalyzed(file,pkg,repoDir){let out=[],rel=relative6(repoDir,file.getFilePath()).split("\\").join("/"),note=(node,kind)=>{out.push({file:rel,line:file.getLineAndColumnAtPos(node.getStart()).line,kind})};return file.forEachDescendant(node=>{if(!import_ts_morph10.Node.isCallExpression(node))return;let callee=node.getExpression(),isRequire=import_ts_morph10.Node.isIdentifier(callee)&&callee.getText()==="require",isImport=callee.getKind()===import_ts_morph10.ts.SyntaxKind.ImportKeyword;if(!isRequire&&!isImport)return;let arg=node.getArguments()[0];if(arg&&import_ts_morph10.Node.isStringLiteral(arg)){if(!isPackageSpecifier(arg.getLiteralValue(),pkg))return;loadIsFollowed(node)||note(node,isRequire?"require":"dynamic-import");return}let text=arg?.getText()??"";arg&&!import_ts_morph10.Node.isStringLiteral(arg)&&text.includes(pkg)&¬e(node,isRequire?"require":"dynamic-import")}),out}async function findUsagesInRepo(adapter,repoRef,pkg,surface){let repo=loadedRepo(realpathSync3(repoRef.dir),repoRef.rootFiles),declarationsPkg=surface.package.startsWith("@types/")&&surface.package!==pkg?surface.package:pkg,pkgDir=resolvePackageDir(repo,declarationsPkg);if(!pkgDir){let files2=repo.project.getSourceFiles().filter(f=>!f.isDeclarationFile()&&ownsFile(repoRef,f.getFilePath())),unanalyzed2=files2.flatMap(f=>scanUnanalyzed(f,pkg,repo.dir));return{usages:[],unanalyzed:unanalyzed2,checksJs:repo.project.getCompilerOptions().checkJs===!0,filesScanned:files2.length,includesJs:repo.includesJs}}let{locations}=surface.symbols.length===0?{locations:new Map}:await detailedSurfaceOf(adapter,pkg,surface.version,pkgDir).catch(()=>({locations:new Map})),resolver=makeResolver(locations,pkgDir,surface),usages=[],seen=new Set,fileChecked=!0,emit2=(file,node,resolved2,access,via,loader)=>{let symbolPath=resolved2.path,start=file.getLineAndColumnAtPos(node.getStart()),end=file.getLineAndColumnAtPos(node.getEnd()),key2=`${file.getFilePath()}:${start.line}:${start.column}:${symbolPath}:${access}`;if(seen.has(key2))return;seen.add(key2);let lineText=file.getFullText().split(`
|
|
151
|
-
`)[start.line-1]??"",usage={file:relative6(repo.dir,file.getFilePath()).split("\\").join("/"),line:start.line,column:start.column,endLine:end.line,endColumn:end.column,symbolPath,access,snippet:lineText.trim(),via};resolved2.canonical!==symbolPath&&(usage.canonicalPath=resolved2.canonical),loader&&(usage.loader=loader),fileChecked||(usage.checked=!1),usages.push(usage)},files=repo.project.getSourceFiles().filter(f=>!f.isDeclarationFile()&&!f.getFilePath().includes("/node_modules/")&&!resolver.inPackage(f.getFilePath())&&ownsFile(repoRef,f.getFilePath())),index=repoIndex(repo),loadsPkg=path=>index.get(path)?.loads.has(pkg)===!0,barrels=new Set(files.filter(f=>{let entry=index.get(f.getFilePath());return entry?.loads.has(pkg)&&entry.reexportsFrom.length===0?f.getExportDeclarations().some(d=>isPackageSpecifier(d.getModuleSpecifierValue()??"",pkg)):!1}).map(f=>f.getFilePath())),importsPackage=file=>{let path=file.getFilePath();return loadsPkg(path)?!0:barrels.size===0||(index.get(path)?.importsFrom.length??0)===0?!1:file.getImportDeclarations().some(d=>{let specifier=d.getModuleSpecifierValue();if(specifier===void 0||!specifier.startsWith("."))return!1;let target=d.getModuleSpecifierSourceFile()?.getFilePath();return target!==void 0&&barrels.has(target)})},rootPath=surface.symbols.find(sym=>sym.exportEquals)?.path??"default",known=new Map(surface.symbols.map(sym=>[sym.path,sym])),byName=member=>{for(let candidatePath of[member,`${rootPath}.${member}`,`${rootPath}#${member}`]){let sym=known.get(candidatePath);if(sym)return{path:candidatePath,canonical:sym.aliasOf??candidatePath}}},leafCounts=new Map;for(let sym of surface.symbols){let name=leafOf(sym.path);/^[A-Za-z_$][\w$]*$/.test(name)&&leafCounts.set(name,[...leafCounts.get(name)??[],sym.path])}let leafNames=new Set(leafCounts.keys()),distinctive=name=>(leafCounts.get(name)?.length??0)<=8,onlyMeaning=name=>{let paths=leafCounts.get(name)??[],path=paths.length===1?paths[0]:void 0;return path===void 0?void 0:{path,canonical:known.get(path)?.aliasOf??path}},unanalyzed=[];for(let file of files){let entry=index.get(file.getFilePath()),full2=importsPackage(file),memberHits=entry?[...entry.memberNames.entries()].filter(([name])=>leafNames.has(name)).flatMap(([,p])=>p):[],computed=entry?.computedLoads.some(text=>text.includes(pkg))===!0;if(!full2&&memberHits.length===0&&!computed)continue;(full2||computed)&&unanalyzed.push(...scanUnanalyzed(file,pkg,repo.dir));let localAliases=new Map,candidate=name=>full2||leafNames.has(name);fileChecked=repoTypeChecks(file.getFilePath(),file.getFullText().slice(0,2e3),repo.project.getCompilerOptions().checkJs===!0);let requireLocals=new Set,requirePaths=new Map;for(let v of file.getDescendantsOfKind(import_ts_morph10.ts.SyntaxKind.VariableDeclaration)){let init=v.getInitializer();if(!init)continue;let load=unwrapAwait(init),nameNode=v.getNameNode();if(packageLoadCall(load,pkg)!==void 0){if(import_ts_morph10.Node.isIdentifier(nameNode)){let local=nameNode.getSymbol();local&&requireLocals.add(local),emit2(file,nameNode,{path:".",canonical:"."},"import","require","require")}else if(import_ts_morph10.Node.isObjectBindingPattern(nameNode)){emit2(file,nameNode,{path:".",canonical:"."},"import","require","require");for(let element2 of nameNode.getElements()){let propName=(element2.getPropertyNameNode()??element2.getNameNode()).getText(),local=element2.getNameNode().getSymbol(),viaChecker=resolver.pathOf(load.getType().getProperty(propName)),resolved2=viaChecker??byName(propName);local&&resolved2&&(localAliases.set(local,{resolved:resolved2,via:viaChecker?"destructure":"require"}),requireLocals.add(local),emit2(file,element2,resolved2,"read",viaChecker?"destructure":"require","require"))}}}else if(import_ts_morph10.Node.isPropertyAccessExpression(load)&&packageLoadCall(load.getExpression(),pkg)!==void 0&&import_ts_morph10.Node.isIdentifier(nameNode)){let local=nameNode.getSymbol(),resolved2=resolver.pathOf(load.getNameNode().getSymbol())??byName(load.getName());local&&resolved2&&(requirePaths.set(local,resolved2),requireLocals.add(local))}}for(let d of file.getStatements().filter(import_ts_morph10.Node.isImportEqualsDeclaration)){let spec=d.getModuleReference().getFirstDescendantByKind(import_ts_morph10.ts.SyntaxKind.StringLiteral)?.getLiteralValue();if(spec===void 0||!isPackageSpecifier(spec,pkg))continue;let local=d.getNameNode().getSymbol();local&&requireLocals.add(local)}let loaderOf=node=>{let chain=node.getParent()??node,start=rootNode(chain);if(start!==void 0&&packageLoadCall(start,pkg)!==void 0)return"require";let symbol=(rootIdentifier(chain)??(import_ts_morph10.Node.isIdentifier(node)?node:void 0))?.getSymbol();return symbol&&requireLocals.has(symbol)?"require":void 0};for(let decl of[...file.getImportDeclarations(),...file.getExportDeclarations()]){let specifier=decl.getModuleSpecifierValue();if(specifier===void 0||!isPackageSpecifier(specifier,pkg))continue;let named=import_ts_morph10.Node.isImportDeclaration(decl)?decl.getNamedImports():decl.getNamedExports();for(let spec of named){let resolved2=resolver.pathOf(spec.getSymbol());resolved2&&emit2(file,spec,resolved2,"import",spec.getAliasNode()!==void 0?"alias":"direct")}if(import_ts_morph10.Node.isImportDeclaration(decl)){let def=decl.getDefaultImport(),defResolved=def?resolver.pathOf(def.getSymbol()):void 0;def&&defResolved&&emit2(file,def,defResolved,"import","direct")}}for(let v of file.getDescendantsOfKind(import_ts_morph10.ts.SyntaxKind.VariableDeclaration)){let init=v.getInitializer();if(!init)continue;let nameNode=v.getNameNode();if(import_ts_morph10.Node.isObjectBindingPattern(nameNode)){let elements=nameNode.getElements().filter(e=>candidate((e.getPropertyNameNode()??e.getNameNode()).getText()));if(elements.length===0)continue;let type=init.getType();for(let element2 of elements){let propName=(element2.getPropertyNameNode()??element2.getNameNode()).getText(),resolved2=resolver.pathOf(type.getProperty(propName)),local=element2.getNameNode().getSymbol();resolved2&&local&&(localAliases.set(local,{resolved:resolved2,via:"destructure"}),emit2(file,element2,resolved2,"read","destructure"))}}else if(import_ts_morph10.Node.isIdentifier(nameNode)){let initSymbol=import_ts_morph10.Node.isPropertyAccessExpression(init)&&candidate(init.getName())||import_ts_morph10.Node.isIdentifier(init)&&full2?init.getSymbol():void 0,resolved2=resolver.pathOf(initSymbol),local=nameNode.getSymbol(),callable=(initSymbol?.getFlags()??0)&(import_ts_morph10.ts.SymbolFlags.Function|import_ts_morph10.ts.SymbolFlags.Method|import_ts_morph10.ts.SymbolFlags.Class);resolved2&&local&&callable!==0&&localAliases.set(local,{resolved:resolved2,via:"alias"})}}let visit=node=>{if(!import_ts_morph10.Node.isIdentifier(node))return;let parent=node.getParent();if(!parent||import_ts_morph10.Node.isImportSpecifier(parent)||import_ts_morph10.Node.isExportSpecifier(parent)||import_ts_morph10.Node.isNamespaceImport(parent)||import_ts_morph10.Node.isImportClause(parent))return;if((import_ts_morph10.Node.isPropertyAssignment(parent)||import_ts_morph10.Node.isShorthandPropertyAssignment(parent)||import_ts_morph10.Node.isMethodDeclaration(parent))&&parent.getNameNode()===node){let literal=parent.getParent();if(!import_ts_morph10.Node.isObjectLiteralExpression(literal)||!candidate(node.getText())||!full2&&!literalFlowsInto(literal,resolver))return;let resolved3=resolver.pathOf(contextualProperty(literal,node.getText()));if(!resolved3)return;let value=import_ts_morph10.Node.isPropertyAssignment(parent)?parent.getInitializer():parent,implementing=value!==void 0&&(import_ts_morph10.Node.isArrowFunction(value)||import_ts_morph10.Node.isFunctionExpression(value)||import_ts_morph10.Node.isMethodDeclaration(value));emit2(file,node,resolved3,implementing?"implement":"write","direct");return}if(import_ts_morph10.Node.isBindingElement(parent)||!full2&&(!(import_ts_morph10.Node.isPropertyAccessExpression(parent)&&parent.getNameNode()===node||import_ts_morph10.Node.isQualifiedName(parent)&&parent.getRight()===node)||!leafNames.has(node.getText())||!rootedAtImport(parent,requireLocals)&&!distinctive(node.getText()))||import_ts_morph10.Node.isPropertyAccessExpression(parent)&&parent.getExpression()===node&&candidate(parent.getName())&&resolver.pathOf(parent.getNameNode().getSymbol())||import_ts_morph10.Node.isQualifiedName(parent)&&parent.getLeft()===node&&resolver.pathOf(parent.getRight().getSymbol())||import_ts_morph10.Node.hasName(parent)&&parent.getNameNode()===node&&!import_ts_morph10.Node.isPropertyAccessExpression(parent))return;if(import_ts_morph10.Node.isPropertyAccessExpression(parent)&&parent.getNameNode()===node&&packageLoadCall(unwrapAwait(parent.getExpression()),pkg)!==void 0){let viaChecker=resolver.pathOf(node.getSymbol(),node.getText()),resolved3=viaChecker??byName(node.getText());resolved3&&emit2(file,node,resolved3,classifyAccess(node),viaChecker?"direct":"require","require");return}let symbol=node.getSymbol();if(!symbol){if(full2&&import_ts_morph10.Node.isPropertyAccessExpression(parent)&&parent.getNameNode()===node&&isUntyped(parent.getExpression())){let meaning=onlyMeaning(node.getText());meaning&&emit2(file,node,meaning,classifyAccess(node),"inferred",loaderOf(node))}return}let local=localAliases.get(symbol);if(local){emit2(file,node,local.resolved,classifyAccess(node),local.via,loaderOf(node));return}let bound=requirePaths.get(symbol);if(bound){emit2(file,node,bound,classifyAccess(node),"require","require");return}let resolved2=resolver.pathOf(symbol,node.getText()),syntactic=!1;if(!resolved2&&requireLocals.has(symbol)){if(import_ts_morph10.Node.isPropertyAccessExpression(parent)&&parent.getExpression()===node){let member=byName(parent.getName());member&&emit2(file,parent.getNameNode(),member,classifyAccess(parent.getNameNode()),"require","require");return}if(import_ts_morph10.Node.isCallExpression(parent)&&parent.getExpression()===node&&known.has(rootPath))resolved2={path:rootPath,canonical:rootPath},syntactic=!0;else return}if(!resolved2)return;let via=syntactic?"require":(symbol.getFlags()&import_ts_morph10.ts.SymbolFlags.Alias)!==0?viaOfImport(symbol,repo.dir,resolver):"direct",access=classifyAccess(node),target=access==="construct"?{path:resolver.constructorOf(resolved2.path),canonical:resolver.constructorOf(resolved2.canonical)}:resolved2;emit2(file,node,target,access,via,loaderOf(node))};if(full2)file.forEachDescendant(visit);else for(let pos of memberHits){let node=file.getDescendantAtPos(pos);node&&visit(node)}}return{usages:usages.sort((a,b)=>a.file.localeCompare(b.file)||a.line-b.line||a.column-b.column),unanalyzed:unanalyzed.sort((a,b)=>a.file.localeCompare(b.file)||a.line-b.line),checksJs:repo.project.getCompilerOptions().checkJs===!0,filesScanned:files.length,includesJs:repo.includesJs}}function installedPackageDir(repoRef,pkg){return resolvePackageDir(loadedRepo(realpathSync3(repoRef.dir),repoRef.rootFiles),pkg)}function installedDependenciesOf(repoRef){let repo=readInstalled(realpathSync3(repoRef.dir));if(!repo.lockfile)throw new UptideError("NO_LOCKFILE",`${repoRef.dir}: no lockfile found`);return new Map(repo.installed)}function importedPackagesOf(repoRef){let repo=loadedRepo(realpathSync3(repoRef.dir),repoRef.rootFiles),out=new Set,packageOf=specifier=>{if(specifier.startsWith(".")||specifier.startsWith("/")||specifier.startsWith("node:"))return;let parts=specifier.split("/");return specifier.startsWith("@")?parts.slice(0,2).join("/"):parts[0]};for(let file of repo.project.getSourceFiles())if(!(file.isDeclarationFile()||file.getFilePath().includes("/node_modules/"))){for(let decl of[...file.getImportDeclarations(),...file.getExportDeclarations()]){let spec=decl.getModuleSpecifierValue(),name=spec===void 0?void 0:packageOf(spec);name&&out.add(name)}file.forEachDescendant(node=>{let spec;if(import_ts_morph10.Node.isCallExpression(node)){let callee=node.getExpression(),arg=node.getArguments()[0],isRequire=import_ts_morph10.Node.isIdentifier(callee)&&callee.getText()==="require",isImport=callee.getKind()===import_ts_morph10.ts.SyntaxKind.ImportKeyword;(isRequire||isImport)&&arg&&import_ts_morph10.Node.isStringLiteral(arg)&&(spec=arg.getLiteralValue())}else import_ts_morph10.Node.isImportEqualsDeclaration(node)&&(spec=node.getModuleReference().getFirstDescendantByKind(import_ts_morph10.ts.SyntaxKind.StringLiteral)?.getLiteralValue());let name=spec===void 0?void 0:packageOf(spec);name&&out.add(name)})}return out}function newLinks(){return{links:new Map,fetched:[],linked:[],unsatisfied:[],decided:new Set}}function scopeOf(pkg){return pkg.startsWith("@")?pkg.split("/")[0]:`@${pkg}`}function consumerCopySatisfies(pkg,dep,range,consumerVersion){return consumerVersion===void 0||dep.startsWith(`${scopeOf(pkg)}/`)?!1:satisfies(consumerVersion,range)}var manifests=new Map;function readManifest(dir){if(manifests.has(dir))return manifests.get(dir);let manifest2;try{manifest2=JSON.parse(readFileSync9(join11(dir,"package.json"),"utf8"))}catch{manifest2=void 0}return manifests.set(dir,manifest2),manifest2}function declaredRange(dir,dep){let m=readManifest(dir);return m?.dependencies?.[dep]??m?.peerDependencies?.[dep]}function isPeerOnly(dir,dep){let m=readManifest(dir);return m?.peerDependencies?.[dep]!==void 0&&m.dependencies?.[dep]===void 0}function installedVersion(repo,dep){let dir=resolvePackageDir(repo,dep);if(!dir||!existsSync9(join11(dir,"package.json")))return;let version=readManifest(dir)?.version;return version?{dir,version}:void 0}var EXACT=/^v?\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/;async function satisfyWanted(repo,links,wanted,fetcher){let added=0;for(let[dep,{range,from}]of wanted){if(links.decided.has(dep))continue;links.decided.add(dep);let consumer=installedVersion(repo,dep);if(consumerCopySatisfies(from,dep,range,consumer?.version)||/^[a-z]+:/i.test(range))continue;let exact=EXACT.test(range.trim())?range.trim():void 0,versions=exact?[exact]:fetcher?.versions?await fetcher.versions(dep).catch(()=>[]):[],best=maxSatisfying(versions,range);if(best===void 0){consumer?links.unsatisfied.push(`${dep}@${consumer.version} does not satisfy ${range}`):fetcher?.versions||links.unsatisfied.push(`${dep}@${range} not installed`);continue}if(consumer&&consumer.version===best){links.links.set(dep,consumer.dir),links.linked.push(`${dep}@${best} (consumer)`),added++;continue}try{let fetchedDir=await fetcher?.fetch(dep,best);if(!fetchedDir)continue;links.fetched.push(fetchedDir),links.links.set(dep,fetchedDir.dir),links.linked.push(`${dep}@${best} (fetched)`),added++}catch(err){links.unsatisfied.push(`${dep}@${best}: ${err.message}`)}}return links.linked.sort(),links.unsatisfied.sort(),added}var CANNOT_FIND_MODULE=2307,CANNOT_FIND_MODULE_JSX=2792;function isPackageSpecifier2(specifier,pkg){return specifier===pkg||specifier.startsWith(`${pkg}/`)}function isBare(specifier){return!specifier.startsWith(".")&&!specifier.startsWith("/")}function messageOf(d){return import_ts_morph6.ts.flattenDiagnosticMessageText(d.messageText,`
|
|
151
|
+
`)[start.line-1]??"",usage={file:relative6(repo.dir,file.getFilePath()).split("\\").join("/"),line:start.line,column:start.column,endLine:end.line,endColumn:end.column,symbolPath,access,snippet:lineText.trim(),via};resolved2.canonical!==symbolPath&&(usage.canonicalPath=resolved2.canonical),loader&&(usage.loader=loader),fileChecked||(usage.checked=!1),usages.push(usage)},files=repo.project.getSourceFiles().filter(f=>!f.isDeclarationFile()&&!f.getFilePath().includes("/node_modules/")&&!resolver.inPackage(f.getFilePath())&&ownsFile(repoRef,f.getFilePath())),index=repoIndex(repo),loadsPkg=path=>index.get(path)?.loads.has(pkg)===!0,barrels=new Set(files.filter(f=>{let entry=index.get(f.getFilePath());return entry?.loads.has(pkg)&&entry.reexportsFrom.length===0?f.getExportDeclarations().some(d=>isPackageSpecifier(d.getModuleSpecifierValue()??"",pkg)):!1}).map(f=>f.getFilePath())),importsPackage=file=>{let path=file.getFilePath();return loadsPkg(path)?!0:barrels.size===0||(index.get(path)?.importsFrom.length??0)===0?!1:file.getImportDeclarations().some(d=>{let specifier=d.getModuleSpecifierValue();if(specifier===void 0||!specifier.startsWith("."))return!1;let target=d.getModuleSpecifierSourceFile()?.getFilePath();return target!==void 0&&barrels.has(target)})},rootPath=surface.symbols.find(sym=>sym.exportEquals)?.path??"default",known=new Map(surface.symbols.map(sym=>[sym.path,sym])),byName=member=>{for(let candidatePath of[member,`${rootPath}.${member}`,`${rootPath}#${member}`]){let sym=known.get(candidatePath);if(sym)return{path:candidatePath,canonical:sym.aliasOf??candidatePath}}},leafCounts=new Map;for(let sym of surface.symbols){let name=leafOf(sym.path);/^[A-Za-z_$][\w$]*$/.test(name)&&leafCounts.set(name,[...leafCounts.get(name)??[],sym.path])}let leafNames=new Set(leafCounts.keys()),distinctive=name=>(leafCounts.get(name)?.length??0)<=8,onlyMeaning=name=>{let paths=leafCounts.get(name)??[],path=paths.length===1?paths[0]:void 0;return path===void 0?void 0:{path,canonical:known.get(path)?.aliasOf??path}},unanalyzed=[];for(let file of files){let entry=index.get(file.getFilePath()),full2=importsPackage(file),memberHits=entry?[...entry.memberNames.entries()].filter(([name])=>leafNames.has(name)).flatMap(([,p])=>p):[],computed=entry?.computedLoads.some(text=>text.includes(pkg))===!0;if(!full2&&memberHits.length===0&&!computed)continue;(full2||computed)&&unanalyzed.push(...scanUnanalyzed(file,pkg,repo.dir));let localAliases=new Map,candidate=name=>full2||leafNames.has(name);fileChecked=repoTypeChecks(file.getFilePath(),file.getFullText().slice(0,2e3),repo.project.getCompilerOptions().checkJs===!0);let requireLocals=new Set,requirePaths=new Map;for(let v of file.getDescendantsOfKind(import_ts_morph10.ts.SyntaxKind.VariableDeclaration)){let init=v.getInitializer();if(!init)continue;let load=unwrapAwait(init),nameNode=v.getNameNode();if(packageLoadCall(load,pkg)!==void 0){if(import_ts_morph10.Node.isIdentifier(nameNode)){let local=nameNode.getSymbol();local&&requireLocals.add(local),emit2(file,nameNode,{path:".",canonical:"."},"import","require","require")}else if(import_ts_morph10.Node.isObjectBindingPattern(nameNode)){emit2(file,nameNode,{path:".",canonical:"."},"import","require","require");for(let element2 of nameNode.getElements()){let propName=(element2.getPropertyNameNode()??element2.getNameNode()).getText(),local=element2.getNameNode().getSymbol(),viaChecker=resolver.pathOf(load.getType().getProperty(propName)),resolved2=viaChecker??byName(propName);local&&resolved2&&(localAliases.set(local,{resolved:resolved2,via:viaChecker?"destructure":"require"}),requireLocals.add(local),emit2(file,element2,resolved2,"read",viaChecker?"destructure":"require","require"))}}}else if(import_ts_morph10.Node.isPropertyAccessExpression(load)&&packageLoadCall(load.getExpression(),pkg)!==void 0&&import_ts_morph10.Node.isIdentifier(nameNode)){let local=nameNode.getSymbol(),resolved2=resolver.pathOf(load.getNameNode().getSymbol())??byName(load.getName());local&&resolved2&&(requirePaths.set(local,resolved2),requireLocals.add(local))}}for(let d of file.getStatements().filter(import_ts_morph10.Node.isImportEqualsDeclaration)){let spec=d.getModuleReference().getFirstDescendantByKind(import_ts_morph10.ts.SyntaxKind.StringLiteral)?.getLiteralValue();if(spec===void 0||!isPackageSpecifier(spec,pkg))continue;let local=d.getNameNode().getSymbol();local&&requireLocals.add(local)}let loaderOf=node=>{let chain=node.getParent()??node,start=rootNode(chain);if(start!==void 0&&packageLoadCall(start,pkg)!==void 0)return"require";let symbol=(rootIdentifier(chain)??(import_ts_morph10.Node.isIdentifier(node)?node:void 0))?.getSymbol();return symbol&&requireLocals.has(symbol)?"require":void 0};for(let decl of[...file.getImportDeclarations(),...file.getExportDeclarations()]){let specifier=decl.getModuleSpecifierValue();if(specifier===void 0||!isPackageSpecifier(specifier,pkg))continue;let named=import_ts_morph10.Node.isImportDeclaration(decl)?decl.getNamedImports():decl.getNamedExports();for(let spec of named){let resolved2=resolver.pathOf(spec.getSymbol());resolved2&&emit2(file,spec,resolved2,"import",spec.getAliasNode()!==void 0?"alias":"direct")}if(import_ts_morph10.Node.isImportDeclaration(decl)){let def=decl.getDefaultImport(),defResolved=def?resolver.pathOf(def.getSymbol()):void 0;def&&defResolved&&emit2(file,def,defResolved,"import","direct")}}for(let v of file.getDescendantsOfKind(import_ts_morph10.ts.SyntaxKind.VariableDeclaration)){let init=v.getInitializer();if(!init)continue;let nameNode=v.getNameNode();if(import_ts_morph10.Node.isObjectBindingPattern(nameNode)){let elements=nameNode.getElements().filter(e=>candidate((e.getPropertyNameNode()??e.getNameNode()).getText()));if(elements.length===0)continue;let type=init.getType();for(let element2 of elements){let propName=(element2.getPropertyNameNode()??element2.getNameNode()).getText(),resolved2=resolver.pathOf(type.getProperty(propName)),local=element2.getNameNode().getSymbol();resolved2&&local&&(localAliases.set(local,{resolved:resolved2,via:"destructure"}),emit2(file,element2,resolved2,"read","destructure"))}}else if(import_ts_morph10.Node.isIdentifier(nameNode)){let initSymbol=import_ts_morph10.Node.isPropertyAccessExpression(init)&&candidate(init.getName())||import_ts_morph10.Node.isIdentifier(init)&&full2?init.getSymbol():void 0,resolved2=resolver.pathOf(initSymbol),local=nameNode.getSymbol(),callable=(initSymbol?.getFlags()??0)&(import_ts_morph10.ts.SymbolFlags.Function|import_ts_morph10.ts.SymbolFlags.Method|import_ts_morph10.ts.SymbolFlags.Class);resolved2&&local&&callable!==0&&localAliases.set(local,{resolved:resolved2,via:"alias"})}}let visit=node=>{if(!import_ts_morph10.Node.isIdentifier(node))return;let parent=node.getParent();if(!parent||import_ts_morph10.Node.isImportSpecifier(parent)||import_ts_morph10.Node.isExportSpecifier(parent)||import_ts_morph10.Node.isNamespaceImport(parent)||import_ts_morph10.Node.isImportClause(parent))return;if((import_ts_morph10.Node.isPropertyAssignment(parent)||import_ts_morph10.Node.isShorthandPropertyAssignment(parent)||import_ts_morph10.Node.isMethodDeclaration(parent))&&parent.getNameNode()===node){let literal=parent.getParent();if(!import_ts_morph10.Node.isObjectLiteralExpression(literal)||!candidate(node.getText())||!full2&&!literalFlowsInto(literal,resolver))return;let resolved3=resolver.pathOf(contextualProperty(literal,node.getText()));if(!resolved3)return;let value=import_ts_morph10.Node.isPropertyAssignment(parent)?parent.getInitializer():parent,implementing=value!==void 0&&(import_ts_morph10.Node.isArrowFunction(value)||import_ts_morph10.Node.isFunctionExpression(value)||import_ts_morph10.Node.isMethodDeclaration(value));emit2(file,node,resolved3,implementing?"implement":"write","direct");return}if(import_ts_morph10.Node.isBindingElement(parent)||!full2&&(!(import_ts_morph10.Node.isPropertyAccessExpression(parent)&&parent.getNameNode()===node||import_ts_morph10.Node.isQualifiedName(parent)&&parent.getRight()===node)||!leafNames.has(node.getText())||!rootedAtImport(parent,requireLocals)&&!distinctive(node.getText()))||import_ts_morph10.Node.isPropertyAccessExpression(parent)&&parent.getExpression()===node&&candidate(parent.getName())&&resolver.pathOf(parent.getNameNode().getSymbol())||import_ts_morph10.Node.isQualifiedName(parent)&&parent.getLeft()===node&&resolver.pathOf(parent.getRight().getSymbol())||import_ts_morph10.Node.hasName(parent)&&parent.getNameNode()===node&&!import_ts_morph10.Node.isPropertyAccessExpression(parent))return;if(import_ts_morph10.Node.isPropertyAccessExpression(parent)&&parent.getNameNode()===node&&packageLoadCall(unwrapAwait(parent.getExpression()),pkg)!==void 0){let viaChecker=resolver.pathOf(node.getSymbol(),node.getText()),resolved3=viaChecker??byName(node.getText());resolved3&&emit2(file,node,resolved3,classifyAccess(node),viaChecker?"direct":"require","require");return}let symbol=node.getSymbol();if(!symbol){if(full2&&import_ts_morph10.Node.isPropertyAccessExpression(parent)&&parent.getNameNode()===node&&isUntyped(parent.getExpression())){let meaning=onlyMeaning(node.getText());meaning&&emit2(file,node,meaning,classifyAccess(node),"inferred",loaderOf(node))}return}let local=localAliases.get(symbol);if(local){emit2(file,node,local.resolved,classifyAccess(node),local.via,loaderOf(node));return}let bound=requirePaths.get(symbol);if(bound){emit2(file,node,bound,classifyAccess(node),"require","require");return}let resolved2=resolver.pathOf(symbol,node.getText()),syntactic=!1;if(!resolved2&&requireLocals.has(symbol)){if(import_ts_morph10.Node.isPropertyAccessExpression(parent)&&parent.getExpression()===node){let member=byName(parent.getName());member&&emit2(file,parent.getNameNode(),member,classifyAccess(parent.getNameNode()),"require","require");return}if(import_ts_morph10.Node.isCallExpression(parent)&&parent.getExpression()===node&&known.has(rootPath))resolved2={path:rootPath,canonical:rootPath},syntactic=!0;else return}if(!resolved2)return;let via=syntactic?"require":(symbol.getFlags()&import_ts_morph10.ts.SymbolFlags.Alias)!==0?viaOfImport(symbol,repo.dir,resolver):"direct",access=classifyAccess(node),target=access==="construct"?{path:resolver.constructorOf(resolved2.path),canonical:resolver.constructorOf(resolved2.canonical)}:resolved2;emit2(file,node,target,access,via,loaderOf(node))};if(full2)file.forEachDescendant(visit);else for(let pos of memberHits){let node=file.getDescendantAtPos(pos);node&&visit(node)}}return{usages:usages.sort((a,b)=>a.file.localeCompare(b.file)||a.line-b.line||a.column-b.column),unanalyzed:unanalyzed.sort((a,b)=>a.file.localeCompare(b.file)||a.line-b.line),checksJs:repo.project.getCompilerOptions().checkJs===!0,filesScanned:files.length,includesJs:repo.includesJs}}function installedPackageDir(repoRef,pkg){return resolvePackageDir(loadedRepo(realpathSync3(repoRef.dir),repoRef.rootFiles),pkg)}function installedDependenciesOf(repoRef){let repo=readInstalled(realpathSync3(repoRef.dir));if(!repo.lockfile)throw new UptideError("NO_LOCKFILE",`${repoRef.dir}: no lockfile found`);return new Map(repo.installed)}function importedPackagesOf(repoRef){let repo=loadedRepo(realpathSync3(repoRef.dir),repoRef.rootFiles),out=new Set,packageOf2=specifier=>{if(specifier.startsWith(".")||specifier.startsWith("/")||specifier.startsWith("node:"))return;let parts=specifier.split("/");return specifier.startsWith("@")?parts.slice(0,2).join("/"):parts[0]};for(let file of repo.project.getSourceFiles())if(!(file.isDeclarationFile()||file.getFilePath().includes("/node_modules/"))){for(let decl of[...file.getImportDeclarations(),...file.getExportDeclarations()]){let spec=decl.getModuleSpecifierValue(),name=spec===void 0?void 0:packageOf2(spec);name&&out.add(name)}file.forEachDescendant(node=>{let spec;if(import_ts_morph10.Node.isCallExpression(node)){let callee=node.getExpression(),arg=node.getArguments()[0],isRequire=import_ts_morph10.Node.isIdentifier(callee)&&callee.getText()==="require",isImport=callee.getKind()===import_ts_morph10.ts.SyntaxKind.ImportKeyword;(isRequire||isImport)&&arg&&import_ts_morph10.Node.isStringLiteral(arg)&&(spec=arg.getLiteralValue())}else import_ts_morph10.Node.isImportEqualsDeclaration(node)&&(spec=node.getModuleReference().getFirstDescendantByKind(import_ts_morph10.ts.SyntaxKind.StringLiteral)?.getLiteralValue());let name=spec===void 0?void 0:packageOf2(spec);name&&out.add(name)})}return out}function newLinks(){return{links:new Map,fetched:[],linked:[],unsatisfied:[],decided:new Set}}function scopeOf(pkg){return pkg.startsWith("@")?pkg.split("/")[0]:`@${pkg}`}function consumerCopySatisfies(pkg,dep,range,consumerVersion){return consumerVersion===void 0||dep.startsWith(`${scopeOf(pkg)}/`)?!1:satisfies(consumerVersion,range)}var manifests=new Map;function readManifest(dir){if(manifests.has(dir))return manifests.get(dir);let manifest2;try{manifest2=JSON.parse(readFileSync9(join11(dir,"package.json"),"utf8"))}catch{manifest2=void 0}return manifests.set(dir,manifest2),manifest2}function declaredRange(dir,dep){let m=readManifest(dir);return m?.dependencies?.[dep]??m?.peerDependencies?.[dep]}function isPeerOnly(dir,dep){let m=readManifest(dir);return m?.peerDependencies?.[dep]!==void 0&&m.dependencies?.[dep]===void 0}function installedVersion(repo,dep){let dir=resolvePackageDir(repo,dep);if(!dir||!existsSync9(join11(dir,"package.json")))return;let version=readManifest(dir)?.version;return version?{dir,version}:void 0}var EXACT=/^v?\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/;async function satisfyWanted(repo,links,wanted,fetcher){let added=0;for(let[dep,{range,from}]of wanted){if(links.decided.has(dep))continue;links.decided.add(dep);let consumer=installedVersion(repo,dep);if(consumerCopySatisfies(from,dep,range,consumer?.version)||/^[a-z]+:/i.test(range))continue;let exact=EXACT.test(range.trim())?range.trim():void 0,versions=exact?[exact]:fetcher?.versions?await fetcher.versions(dep).catch(()=>[]):[],best=maxSatisfying(versions,range);if(best===void 0){consumer?links.unsatisfied.push(`${dep}@${consumer.version} does not satisfy ${range}`):fetcher?.versions||links.unsatisfied.push(`${dep}@${range} not installed`);continue}if(consumer&&consumer.version===best){links.links.set(dep,consumer.dir),links.linked.push(`${dep}@${best} (consumer)`),added++;continue}try{let fetchedDir=await fetcher?.fetch(dep,best);if(!fetchedDir)continue;links.fetched.push(fetchedDir),links.links.set(dep,fetchedDir.dir),links.linked.push(`${dep}@${best} (fetched)`),added++}catch(err){links.unsatisfied.push(`${dep}@${best}: ${err.message}`)}}return links.linked.sort(),links.unsatisfied.sort(),added}var CANNOT_FIND_MODULE=2307,CANNOT_FIND_MODULE_JSX=2792;function isPackageSpecifier2(specifier,pkg){return specifier===pkg||specifier.startsWith(`${pkg}/`)}function isBare(specifier){return!specifier.startsWith(".")&&!specifier.startsWith("/")}function messageOf(d){return import_ts_morph6.ts.flattenDiagnosticMessageText(d.messageText,`
|
|
152
152
|
`)}function readableMessage(message){return message.replace(/(?:[A-Za-z]:)?[\\/][^\s"'()]*[\\/]extracted[\\/]((?:@[^\\/"'\s]+[\\/])?[^\\/"'\s]+)[\\/](\d+\.\d+\.\d+[^\\/"'\s]*)[\\/]/g,(_all,name,version)=>`${name.replace("\\","/")}@${version}/`).replace(/(?:[A-Za-z]:)?[\\/][^\s"'()]*[\\/]node_modules[\\/]((?:@[^\\/"'\s]+[\\/])?[^\\/"'\s]+)[\\/]/g,(_all,name)=>`${name.replace("\\","/")}/`)}function keyOf(d,repoDir){return`${relative7(repoDir,d.file?.fileName??"")}|${d.code}|${messageOf(d).replace(/\s+/g," ").trim()}`}function toDiagnostic(d,file,repoDir){let start=d.start??0,from=file.getLineAndCharacterOfPosition(start),to=file.getLineAndCharacterOfPosition(start+(d.length??0));return{file:relative7(repoDir,file.fileName).split("\\").join("/"),line:from.line+1,column:from.character+1,endLine:to.line+1,endColumn:to.character+1,code:d.code,message:readableMessage(messageOf(d)),snippet:(file.text.split(`
|
|
153
153
|
`)[from.line]??"").trim()}}function isRepoError(d,repoDir){if(d.category!==import_ts_morph6.ts.DiagnosticCategory.Error||!d.file||d.file.isDeclarationFile)return!1;let path=d.file.fileName;return path.startsWith(`${repoDir}/`)&&!path.includes("/node_modules/")}var baselines=new WeakMap;function baselineErrorsOf(repo,program,file){let perFile=baselines.get(repo);perFile||(perFile=new Map,baselines.set(repo,perFile));let errors=perFile.get(file.fileName);return errors||(errors=program.getSemanticDiagnostics(file).filter(d=>isRepoError(d,repo.dir)),perFile.set(file.fileName,errors)),errors}var importers=new WeakMap;function importersOf(repo){let map=importers.get(repo);if(map)return map;map=new Map;for(let file of repo.project.getSourceFiles()){if(file.isDeclarationFile())continue;let from=file.getFilePath();for(let decl of[...file.getImportDeclarations(),...file.getExportDeclarations()]){let to=decl.getModuleSpecifierSourceFile()?.getFilePath();if(!to||to.includes("/node_modules/"))continue;let set=map.get(to);set||(set=new Set,map.set(to,set)),set.add(from)}}return importers.set(repo,map),map}function filesToCheck(repo,repoRef,program,requested){let own=f=>!f.isDeclarationFile&&isRepoError({category:import_ts_morph6.ts.DiagnosticCategory.Error,file:f},repo.dir)&&ownsFile(repoRef,f.fileName);if(!requested)return{files:program.getSourceFiles().filter(own),missing:0};let wanted=new Set,reverse=importersOf(repo),missing=0;for(let rel of requested){let abs=join12(repo.dir,rel);if(ownsFile(repoRef,abs)){program.getSourceFile(abs)||missing++,wanted.add(abs);for(let importer of reverse.get(abs)??[])wanted.add(importer)}}return{files:[...wanted].map(p=>program.getSourceFile(p)).filter(f=>f!==void 0&&own(f)),missing}}var NOT_IN_TSCONFIG="not in the workspace tsconfig",nestedConfigs=new Map;onReset(()=>nestedConfigs.clear());function nestedUnresolvedConfig(tsc,repo,rel){for(let dir=dirname9(join12(repo.dir,rel));dir.startsWith(`${repo.dir}/`);dir=dirname9(dir)){let config=join12(dir,"tsconfig.json");if(!existsSync10(config))continue;nestedConfigs.has(config)||nestedConfigs.set(config,unresolvedConfig(tsc,config));let reason=nestedConfigs.get(config);return reason===void 0?void 0:{path:relative7(repo.dir,config),reason}}}function coverageOf(compiler,compiled,missing,skipped){let reasons=[...skipped&&skipped.count>0?[skipped]:[],...missing>0?[{reason:NOT_IN_TSCONFIG,count:missing}]:[]];return{compiled,total:compiled+reasons.reduce((n,r)=>n+r.count,0),skipped:reasons,compilers:[{version:compiler.version,own:compiler.own}]}}function structuralFailure(program,files,baseline){let config=program.getConfigFileParsingDiagnostics();if(config.length>0)return`invalid tsconfig: ${messageOf(config[0]).split(`
|
|
154
154
|
`)[0]}`;let unresolvable=new Set(baseline.filter(d=>d.code===CANNOT_FIND_MODULE||d.code===CANNOT_FIND_MODULE_JSX).map(d=>d.file?.fileName)).size;if(files.length>0&&unresolvable/files.length>.5)return`${unresolvable} of ${files.length} files cannot resolve their imports at the installed version; compile signal skipped`}function skipReasonOf(skipped){return skipped.startsWith("invalid tsconfig")?"invalid tsconfig":skipped.includes("cannot resolve their imports")?"most files cannot resolve their imports at the installed version":skipped.split(";")[0]??skipped}function packageNameOf2(specifier){return specifier.split("/").slice(0,specifier.startsWith("@")?2:1).join("/")}function checkedOptions(base){return{...base.getCompilerOptions(),noEmit:!0,skipLibCheck:!0,checkJs:!0}}function sharedHost(compiler,base,insideOverlay,parsed4){let tsc=compiler.ts,options=checkedOptions(base),host=tsc.createCompilerHost(options,!0);compiler.own||(host.useCaseSensitiveFileNames=()=>!0,host.getCanonicalFileName=fileName=>fileName),host.getCurrentDirectory=()=>base.getCurrentDirectory();let noPaths={...options,paths:void 0,baseUrl:void 0},anyLib=base.getSourceFiles().find(f=>/\/lib\.[^/]*\.d\.ts$/.test(f.fileName));if(anyLib){let libDir=dirname9(anyLib.fileName);host.getDefaultLibLocation=()=>libDir,host.getDefaultLibFileName=o=>join12(libDir,tsc.getDefaultLibFileName(o))}let defaultFileExists=host.fileExists;host.fileExists=fileName=>base.getSourceFile(fileName)!==void 0||defaultFileExists(fileName);let defaultGetSourceFile=host.getSourceFile;host.getSourceFile=(fileName,languageVersion,onError,shouldCreate)=>{if(!insideOverlay(fileName)){let shared=base.getSourceFile(fileName);if(shared)return shared}let file=parsed4.get(fileName);return file||(file=defaultGetSourceFile(fileName,languageVersion,onError,shouldCreate),file&&parsed4.set(fileName,file)),file};let resolvedByBaseline=base.getResolvedModule?.bind(base);return{options,host,noPaths,resolvedByBaseline}}function usageModes(tsc,options,host){let nodeish=options.moduleResolution===import_ts_morph6.ts.ModuleResolutionKind.Node16||options.moduleResolution===import_ts_morph6.ts.ModuleResolutionKind.NodeNext,formats2=new Map;return(file,usage)=>{if(file.impliedNodeFormat!==void 0||!nodeish)return tsc.getModeForUsageLocation(file,usage,options);let format=formats2.get(file.fileName);format===void 0&&!formats2.has(file.fileName)&&(format=tsc.getImpliedNodeFormatForFile(file.fileName,void 0,host,options),formats2.set(file.fileName,format));let withFormat=Object.create(file,{impliedNodeFormat:{value:format}});return tsc.getModeForUsageLocation(withFormat,usage,options)}}function installResolver(host,resolve15){host.resolveModuleNameLiterals=(literals,containingFile,_r,_o,containingSourceFile)=>literals.map(l=>resolve15(l.text,l,containingFile,containingSourceFile)),host.resolveModuleNames=(names,containingFile,_reused,_redirect,_o,containingSourceFile)=>names.map(name=>{let literal=containingSourceFile?.imports?.find(l=>l.text===name);return resolve15(name,literal,containingFile,containingSourceFile).resolvedModule})}var nativeBases=new WeakMap;function nativeBase(repo,compiler){let morph=repo.project.getProgram().compilerObject;if(!compiler.own)return morph;let program=nativeBases.get(repo);if(program)return program;let tsc=compiler.ts,options={...nativeOptions(repo,tsc,morph.getCompilerOptions()),noEmit:!0,skipLibCheck:!0,checkJs:!0};return program=tsc.createProgram({rootNames:[...morph.getRootFileNames()],options,host:tsc.createCompilerHost(options,!0)}),nativeBases.set(repo,program),program}function nativeOptions(repo,tsc,morph){let config=repo.tsconfig??repo.inheritedTsconfig,declared;if(config)try{let parsed4=tsc.readConfigFile(config,p=>readFileSync10(p,"utf8"));parsed4.config&&(declared=tsc.parseJsonConfigFileContent(parsed4.config,tsc.sys,dirname9(config),void 0,config).options)}catch{}return{...declared??{target:tsc.ScriptTarget.ES2022,module:tsc.ModuleKind.ESNext,moduleResolution:tsc.ModuleResolutionKind.Bundler??2,strict:!0,allowJs:morph.allowJs??!1,esModuleInterop:!0,allowSyntheticDefaultImports:!0},...morph.paths?{paths:morph.paths}:{},...config?{configFilePath:config}:{}}}var checkedBaselines=new WeakMap;onReset(()=>{baselines=new WeakMap,importers=new WeakMap,checkedBaselines=new WeakMap,nativeBases=new WeakMap});function checkedBaseline(repo,compiler,base){if(compiler.own)return base;let program=checkedBaselines.get(repo);if(program)return program;let tsc=compiler.ts,{options,host,resolvedByBaseline}=sharedHost(compiler,base,()=>!1,new Map);return installResolver(host,(name,literal,containingFile,containingSourceFile)=>(literal&&containingSourceFile?resolvedByBaseline?.(containingSourceFile,name,tsc.getModeForUsageLocation(containingSourceFile,literal,options)):void 0)??tsc.resolveModuleName(name,containingFile,options,host)),program=tsc.createProgram({rootNames:[...base.getRootFileNames()],options,host}),checkedBaselines.set(repo,program),program}function overlayProgram(repo,compiler,base,targets,overlay,deps,parsed4){let link=(name,dir)=>{let linkDir=join12(overlay,"node_modules",...name.split("/"));mkdirSync(dirname9(linkDir),{recursive:!0}),symlinkSync(realpathSync4(dir),linkDir,"dir")};for(let t of targets)link(t.name,t.dir);for(let[name,dir]of deps.links)link(name,dir);let overlayDirs=new Map(targets.map(t=>[realpathSync4(t.dir),t.name]));for(let[name,dir]of deps.links)overlayDirs.set(realpathSync4(dir),name);let overlayDirOf=file=>[...overlayDirs.keys()].find(d=>file.startsWith(`${d}/`)),insideOverlay=file=>overlayDirOf(file)!==void 0,wanted=new Map,probe=join12(overlay,"probe.ts"),repoProbe=join12(repo.dir,"__uptide_probe__.ts"),unresolvedInTarget=new Set,unresolvedFiles=new Set,tsc=compiler.ts,{options,host,noPaths,resolvedByBaseline}=sharedHost(compiler,base,insideOverlay,parsed4),modeOf=usageModes(tsc,options,host);installResolver(host,(name,literal,containingFile,containingSourceFile)=>{let mode=containingSourceFile&&literal?modeOf(containingSourceFile,literal):void 0;if(targets.some(t=>isPackageSpecifier2(name,t.specifier??t.name)))return tsc.resolveModuleName(name,probe,noPaths,host,void 0,void 0,mode);if(!insideOverlay(containingFile)&&containingSourceFile){let known=resolvedByBaseline?.(containingSourceFile,name,mode);if(known)return known}if(insideOverlay(containingFile)&&isBare(name)){let linked=tsc.resolveModuleName(name,probe,noPaths,host,void 0,void 0,mode);if(linked.resolvedModule)return linked}let from=overlayDirOf(containingFile),dep=packageNameOf2(name);if(from!==void 0&&isBare(name)){let range=declaredRange(from,dep);if(range!==void 0&&!deps.decided.has(dep)&&!deps.links.has(dep)){let importer=overlayDirs.get(from),consumer=installedVersion(repo,dep);consumer&&isPeerOnly(from,dep)?(deps.decided.add(dep),satisfies(consumer.version,range)||deps.unsatisfied.push(`${dep}@${consumer.version} is outside the peer range ${range} of ${importer}; compiled against the installed ${dep}`)):consumerCopySatisfies(importer,dep,range,consumer?.version)||wanted.set(dep,{range,from:importer})}let typesDep=`@types/${dep.startsWith("@")?dep.slice(1).replace("/","__"):dep}`,typesRange=declaredRange(from,typesDep);if(typesRange!==void 0&&!deps.decided.has(typesDep)&&!deps.links.has(typesDep)){let importer=overlayDirs.get(from),consumer=installedVersion(repo,typesDep);consumerCopySatisfies(importer,typesDep,typesRange,consumer?.version)||wanted.set(typesDep,{range:typesRange,from:importer})}}let direct=tsc.resolveModuleName(name,containingFile,options,host,void 0,void 0,mode);if(direct.resolvedModule||from===void 0||!isBare(name))return direct;let fromRepo=tsc.resolveModuleName(name,repoProbe,options,host,void 0,void 0,mode),builtin=name.startsWith("node:")||builtinModules.includes(dep);if(!fromRepo.resolvedModule&&!wanted.has(dep)&&!builtin){unresolvedInTarget.add(dep);let owner=overlayDirs.get(from);owner!==void 0&&targets.some(t=>t.name===owner)&&unresolvedFiles.add(relative7(from,containingFile))}return fromRepo});let program=tsc.createProgram({rootNames:[...base.getRootFileNames()],options,host});for(let file of program.getSourceFiles())insideOverlay(file.fileName)&&tsc.forEachChild(file,node=>{tsc.isModuleDeclaration(node)&&tsc.isStringLiteral(node.name)&&(unresolvedInTarget.delete(node.name.text),unresolvedInTarget.size===0&&unresolvedFiles.clear())});return{program,overlayDirs:[...overlayDirs.keys()],unresolvedInTarget,unresolvedFiles,wanted}}async function convergedOverlay(repo,compiler,base,targets,overlay,deps,fetcher){let parsed4=new Map;for(let round2=0;;round2++){let result=overlayProgram(repo,compiler,base,targets,overlay,deps,parsed4);if(result.wanted.size===0||round2===4||await satisfyWanted(repo,deps,result.wanted,fetcher)===0)return result;rmSync2(join12(overlay,"node_modules"),{recursive:!0,force:!0})}}function compileAgainstTarget(repoRef,pkg,targetDir,options={}){return compileAgainstTargets(repoRef,[{name:pkg,dir:targetDir}],options)}async function compileAgainstTargets(repoRef,targets,options={}){let compiler=repositoryCompiler(realpathSync4(repoRef.dir)),repo;try{repo=loadedRepo(realpathSync4(repoRef.dir),repoRef.rootFiles)}catch(err){let message=(err instanceof Error?err.message:String(err)).split(`
|
|
155
|
-
`)[0]??"";return{diagnostics:[],baselineErrors:0,skipped:`invalid tsconfig: ${message}`,coverage:coverageOf(compiler,0,0,{reason:"invalid tsconfig",count:options.files?.length??0}),unresolvedInTarget:[],unresolvedFiles:[],linkedDependencies:[],unsatisfiedDependencies:[],timing:{baselineMs:0,overlayMs:0,dependenciesMs:0}}}let unresolved=repo.tsconfig?unresolvedConfig(compiler.ts,repo.tsconfig):void 0;if(repo.tsconfig&&unresolved!==void 0){let requested2=options.files?.length??0;return{diagnostics:[],baselineErrors:0,skipped:`not compiled: tsconfig.json (${unresolved})`,coverage:{...coverageOf(compiler,0,0,{reason:"tsconfig cannot be resolved",count:requested2}),notCompiled:[{path:"tsconfig.json",reason:unresolved}]},unresolvedInTarget:[],unresolvedFiles:[],linkedDependencies:[],unsatisfiedDependencies:[],timing:{baselineMs:0,overlayMs:0,dependenciesMs:0}}}let t0=Date.now(),base=nativeBase(repo,compiler),baselineTargets=options.baselineTargets&&options.baselineTargets.length>0?options.baselineTargets:targets.flatMap(t=>{let installed=resolvePackageDir(repo,t.name);return installed?[{...t,dir:installed}]:[]}),baselineOverlayDir,checked,memoized=baselineTargets.length===0;memoized?checked=checkedBaseline(repo,compiler,base):(baselineOverlayDir=mkdtempSync2(join12(tmpdir2(),"uptide-baseline-")),checked=overlayProgram(repo,compiler,base,baselineTargets,baselineOverlayDir,newLinks(),new Map).program);let unresolvedProjects=new Map,requested=(options.files??[]).filter(rel=>{let nested=nestedUnresolvedConfig(compiler.ts,repo,rel);if(!nested)return!0;let known2=unresolvedProjects.get(nested.path);return unresolvedProjects.set(nested.path,{reason:nested.reason,count:(known2?.count??0)+1}),!1}),withNotCompiled=coverage=>{if(unresolvedProjects.size===0)return coverage;let count3=[...unresolvedProjects.values()].reduce((n,p)=>n+p.count,0);return{...coverage,total:coverage.total+count3,skipped:[...coverage.skipped,{reason:"tsconfig cannot be resolved",count:count3}],notCompiled:[...coverage.notCompiled??[],...[...unresolvedProjects].map(([path,p])=>({path,reason:p.reason}))]}},{files,missing}=filesToCheck(repo,repoRef,checked,options.files?requested:void 0),baseline=files.flatMap(f=>memoized?baselineErrorsOf(repo,checked,f):checked.getSemanticDiagnostics(f).filter(d=>isRepoError(d,repo.dir)));baselineOverlayDir&&rmSync2(baselineOverlayDir,{recursive:!0,force:!0});let baselineMs=Date.now()-t0,skipped=structuralFailure(checked,files,baseline);if(skipped)return{diagnostics:[],baselineErrors:baseline.length,skipped,coverage:withNotCompiled(coverageOf(compiler,0,missing,{reason:skipReasonOf(skipped),count:files.length})),unresolvedInTarget:[],unresolvedFiles:[],linkedDependencies:[],unsatisfiedDependencies:[],timing:{baselineMs,overlayMs:0,dependenciesMs:0}};let known=new Set(baseline.map(d=>keyOf(d,repo.dir))),overlay=mkdtempSync2(join12(tmpdir2(),"uptide-overlay-")),deps=newLinks();for(let t of targets)deps.decided.add(t.name);try{let t1=Date.now(),{program,unresolvedInTarget,unresolvedFiles}=await convergedOverlay(repo,compiler,base,targets,overlay,deps,options.fetcher),fresh=[];for(let file of files){let overlaid=program.getSourceFile(file.fileName);if(overlaid)for(let d of program.getSemanticDiagnostics(overlaid))isRepoError(d,repo.dir)&&!known.has(keyOf(d,repo.dir))&&fresh.push({d,overlaid})}let erroredLines=new Set(fresh.map(({d,overlaid})=>{let{line}=overlaid.getLineAndCharacterOfPosition(d.start??0);return`${relative7(repo.dir,overlaid.fileName)}:${line+1}`})),programs={overlay:program,base:checked,ts:compiler.ts},jsx=jsxNamespaceCause(programs,fresh.map(({d})=>d),repo.dir,targets.map(t=>t.name)),byParameter=new Map,parameterOf=new Map;for(let{d,overlaid}of fresh){let cause=parameterCause(programs,d,overlaid,repo.dir,repoRef.root??repo.dir);if(!cause)continue;let key2=`${cause.file}:${cause.line}:${cause.name}`;byParameter.set(key2,cause),parameterOf.set(d,key2)}let shared=new Map;for(let key2 of parameterOf.values())shared.set(key2,(shared.get(key2)??0)+1);return{diagnostics:fresh.map(({d,overlaid})=>{let diagnostic=toDiagnostic(d,overlaid,repo.dir),parameter=parameterOf.get(d),cause=(jsx?.explains(d)?jsx.cause:void 0)??(parameter!==void 0&&(shared.get(parameter)??0)>=2?byParameter.get(parameter):void 0)??findCause(programs,d,overlaid,repo.dir,erroredLines);cause&&(diagnostic.cause=cause);let root=parameter!==void 0?byParameter.get(parameter):void 0;return root&&(diagnostic.root=root),diagnostic}).sort((a,b)=>a.file.localeCompare(b.file)||a.line-b.line||a.column-b.column),baselineErrors:baseline.length,coverage:withNotCompiled(coverageOf(compiler,files.length,missing)),unresolvedInTarget:[...unresolvedInTarget].sort(),unresolvedFiles:[...unresolvedFiles].sort(),linkedDependencies:deps.linked,linkedDependencyDirs:Object.fromEntries(deps.links),unsatisfiedDependencies:deps.unsatisfied,timing:{baselineMs,overlayMs:Date.now()-t1,dependenciesMs:0}}}finally{rmSync2(overlay,{recursive:!0,force:!0})}}function reachableFiles(entry){let seen=new Set([entry]),queue=[entry];for(let i=0;i<queue.length;i++)for(let next of queue[i].getReferencedSourceFiles())seen.has(next)||(seen.add(next),queue.push(next));return[...seen]}function rescope(path,entry){return splitPath(path).scope===void 0?scoped(entry,path):path}function merge(perEntry){let byPath=new Map,rootDecls=new Map;for(let{entry,roots}of perEntry)if(entry===".")for(let[root,decls]of roots)rootDecls.set(root,new Set(decls));let groups2=new Map;for(let{roots}of perEntry)for(let[root,decls]of roots){let list=groups2.get(root)??[],shared=list.find(g=>[...decls].some(d=>g.has(d)));if(shared)for(let d of decls)shared.add(d);else list.push(new Set(decls));groups2.set(root,list)}let collidingFor=(entry,roots)=>{let out=new Set;if(entry===".")return out;for(let[root,decls]of roots){if((groups2.get(root)?.length??0)<2)continue;let atRoot=rootDecls.get(root);atRoot&&[...decls].some(d=>atRoot.has(d))||out.add(root)}return out};for(let{entry,symbols,roots}of perEntry){let collidingRoots=collidingFor(entry,roots);for(let{symbol,root}of symbols){let path=collidingRoots.has(root)?rescope(symbol.path,entry):symbol.path;symbol.path=path;let existing=byPath.get(path);if(existing){existing.exportedFrom.includes(entry)||existing.exportedFrom.push(entry);continue}byPath.set(path,{...symbol,path,exportedFrom:[entry]})}}return[...byPath.values()].sort((a,b)=>a.path<b.path?-1:a.path>b.path?1:0)}function locationKey(fileName,start){return`${fileName}:${start}`}function createTypescriptAdapter(opts={}){let now=opts.now??(()=>new Date),adapter={id:"typescript",compareTypes:compareTypesWithChecker,findUsages:(repo,pkg,surface)=>findUsagesInRepo(adapter,repo,pkg,surface),compileAgainst:compileAgainstTarget,compileAgainstMany:compileAgainstTargets,async installedDependencies(repo){return installedDependenciesOf(repo)},installedPackageDir(repo,pkg){return installedPackageDir(repo,pkg)},installedPackageDirCheap(repo,pkg){let dir=hoistedPackageDir(realpathSync5(repo.dir),pkg);return dir?realpathSync5(dir):void 0},async importedPackages(repo){return importedPackagesOf(repo)},async workspacePackages(root){return workspacePackagesOf(root.dir)},async repoWarnings(repo){return loadedRepo(realpathSync5(repo.dir),repo.rootFiles).warnings},async declaredSpecifiers(repo){let{packageJson}=readInstalled(realpathSync5(repo.dir));return new Map(Object.entries({...packageJson.dependencies,...packageJson.devDependencies,...packageJson.optionalDependencies}))},forgetRepo(repo){forgetRepo(realpathSync5(repo.dir))},async installedSurface(repo,pkg,version){let dir=installedPackageDir(repo,pkg);return dir?adapter.extractSurface({name:pkg,version,dir}):void 0},async extractSurface(pkg){return(await adapter.extractSurfaceDetailed(pkg)).surface},async extractSurfaceDetailed(pkg){let entries=resolveEntryPoints(pkg.dir,pkg.name,pkg.version),project=new import_ts_morph2.Project({skipAddingFilesFromTsConfig:!0,skipFileDependencyResolution:!0,compilerOptions:{moduleResolution:import_ts_morph2.ts.ModuleResolutionKind.Bundler,module:import_ts_morph2.ts.ModuleKind.ESNext,target:import_ts_morph2.ts.ScriptTarget.ESNext,skipLibCheck:!0,noEmit:!0,types:[]}}),files=entries.map(e=>({entry:e.entry,file:project.addSourceFileAtPath(e.file)}));for(let typesDir of pkg.types??[]){let index=join13(typesDir,"index.d.ts");existsSync11(index)&&project.addSourceFileAtPath(index)}project.resolveSourceFileDependencies();let checker=project.getTypeChecker(),byDeclaration=new Map,sinks=new Map,sinkFor=entry=>{let s=sinks.get(entry);if(!s){let symbols=[],roots=new Map;s={symbols,roots,sink:{entry,packageDir:pkg.dir,checker,byDeclaration,rootDecls:roots,emit(root,symbol){symbols.push({symbol,root})}}},sinks.set(entry,s)}return s};for(let e of entries)sinkFor(e.entry);let ownModules=new Map,foreign=new Map;for(let{entry,file}of files){walkModule(sinkFor(entry).sink,file);for(let reached of reachableFiles(file))for(let mod of reached.getModules()){let name=ambientModuleName(mod);if(name===void 0)continue;if(ownEntryOf(name,pkg.name)!==void 0)ownModules.has(name)||ownModules.set(name,mod);else{let f=foreign.get(name)??{mod,entries:new Set};f.entries.add(entry),foreign.set(name,f)}}}for(let[name,mod]of ownModules)walkModule(sinkFor(ownEntryOf(name,pkg.name)).sink,mod);for(let[name,{mod,entries:reachedFrom}]of foreign)for(let entry of reachedFrom)walkModule(sinkFor(entry).sink,mod,name);assignAliases(byDeclaration);let perEntry=[...sinks.entries()].sort(([a],[b])=>a==="."?-1:b==="."?1:a<b?-1:1).map(([entry,s])=>({entry,symbols:s.symbols,roots:s.roots})),surface={package:pkg.name,version:pkg.version,extractedAt:now().toISOString(),adapter:"typescript",symbols:merge(perEntry)},locations=new Map;for(let[node,cls]of byDeclaration){let canonical=cls.symbols.find(s=>s.aliasOf===void 0)??cls.symbols[0];canonical&&locations.set(locationKey(node.getSourceFile().fileName,node.getStart()),canonical.path)}return{surface,locations}}};return adapter}var typescriptAdapter=createTypescriptAdapter();function defaultCacheDir(env=process.env){if(env.UPTIDE_CACHE_DIR)return env.UPTIDE_CACHE_DIR;let base=env.XDG_CACHE_HOME||join14(homedir(),".cache");return join14(base,"uptide")}function packagePathSegments(name){return name.split("/")}function surfaceCachePath(root,key2){return join15(root,"surfaces",key2.adapter,`v${key2.schema}`,...packagePathSegments(key2.package),`${key2.version}.json`)}function createFsSurfaceCache(opts={}){let root=opts.dir??defaultCacheDir();return{async get(key2){try{return JSON.parse(await readFile(surfaceCachePath(root,key2),"utf8"))}catch{return}},async set(key2,surface){let path=surfaceCachePath(root,key2);await mkdir(dirname10(path),{recursive:!0});let tmp=`${path}.${process.pid}.${randomUUID()}.tmp`;await writeFile(tmp,JSON.stringify(surface)),await rename(tmp,path)}}}function requireFindUsages(adapter){let find=adapter.findUsages;if(!find)throw new AdapterCapabilityError(adapter.id,"findUsages");return find.bind(adapter)}var WIDENED_NOTE="type widened; breaking if the member is read by the consumer";function hasOtherMembers(callPath,symbols){let container=callPath.slice(0,-3);for(let path of symbols.keys()){if(path===callPath||!path.startsWith(container)||path.length<=container.length)continue;let sep4=path[container.length];if((sep4==="#"||sep4==="."||sep4==="[")&&path!==`${container}.new()`)return!0}return!1}function roleOf(symbol,comparison,symbols){switch(symbol.kind){case"function":return"callable";case"method":return leafOf(symbol.path)==="()"&&!hasOtherMembers(symbol.path,symbols)?"callback":"callable";case"property":return comparison.callable?symbol.optional||/^on[A-Z]/.test(leafOf(symbol.path))?"callback":"callable":symbol.signature.startsWith("readonly ")?"output":"unknown";case"variable":case"enumMember":case"class":return"output";case"interface":case"type":return"unknown";default:return}}function collect(){let breakingNotes=[],additiveNotes=[],verdict={severity:"additive",confidence:1,notes:[]};return{verdict,breaking(note){breakingNotes.push(note),verdict.severity="breaking",verdict.notes=[...breakingNotes,...additiveNotes]},additive(note,confidence){additiveNotes.push(note),confidence!==void 0&&(verdict.confidence=Math.min(verdict.confidence,confidence)),verdict.notes=[...breakingNotes,...additiveNotes]}}}function thisNote(sig){let t=sig.thisParameter;if(t){if(t.relation==="added")return`this parameter added (${t.after})`;if(t.relation==="removed")return"this parameter removed";if(t.relation!=="equivalent")return`this parameter type changed (${t.before} -> ${t.after})`}}function callerVerdict(sigs){let c=collect();for(let sig of sigs){let t=thisNote(sig);t&&c.additive(t);for(let p of sig.parameters){if(p.relation==="removed"){c.breaking(`parameter '${p.name}' removed`);continue}if(p.relation==="added"){p.optionalAfter?c.additive(`optional parameter '${p.name}' added`):c.breaking(`required parameter '${p.name}' added`);continue}p.optionalBefore&&!p.optionalAfter?c.breaking(`parameter '${p.name}' became required`):!p.optionalBefore&&p.optionalAfter&&c.additive(`parameter '${p.name}' became optional`),p.relation==="narrowed"?c.breaking(`parameter '${p.name}' type narrowed`):p.relation==="incompatible"?c.breaking(`parameter '${p.name}' type changed`):p.relation==="widened"&&c.additive(`parameter '${p.name}' type widened`,.8)}sig.returnType==="widened"?c.breaking("return type widened; callers must handle new cases"):sig.returnType==="incompatible"?c.breaking("return type changed"):sig.returnType==="narrowed"&&c.additive("return type narrowed (safe for callers)")}return finish(c.verdict)}function implementerVerdict(sigs){let c=collect();for(let sig of sigs){let t=thisNote(sig);t&&c.additive(t);for(let p of sig.parameters){if(p.relation==="removed"){c.breaking(`callback parameter '${p.name}' removed`);continue}if(p.relation==="added"){c.additive(`callback parameter '${p.name}' added (implementations may ignore it)`);continue}p.optionalBefore&&!p.optionalAfter&&c.additive(`callback parameter '${p.name}' now always provided`),p.relation==="widened"?c.breaking(`callback parameter '${p.name}' widened; implementations must accept more`):p.relation==="incompatible"?c.breaking(`callback parameter '${p.name}' type changed`):p.relation==="narrowed"&&c.additive(`callback parameter '${p.name}' narrowed`,.6)}sig.returnType==="narrowed"?c.breaking("callback return type narrowed; implementations must return less"):sig.returnType==="incompatible"?c.breaking("callback return type changed"):sig.returnType==="widened"&&c.additive("callback return type widened")}return finish(c.verdict)}function finish(verdict){let notes=verdict.notes.filter(n=>!/type widened$/.test(n)||verdict.severity==="breaking");return{...verdict,notes}}function typeParamNames(list){return splitTopLevel(list,",").map(p=>/^(const\s+)?([A-Za-z_$][\w$]*)/.exec(p.trim())?.[2]).filter(n=>n!==void 0)}function normalizeTypeParams(text){let generic=!1,rename3=(segment2,names)=>{if(names.length===0)return segment2;generic=!0;let out=segment2;return names.forEach((name,i)=>{out=out.replace(new RegExp(`\\b${name.replace(/\$/g,"\\$")}\\b`,"g"),`T${i}`)}),out},alias=/^type<((?:[^<>]|<[^<>]*>)*)> = /.exec(text);if(alias)return{normalized:rename3(text,typeParamNames(alias[1])),generic};let overloads=parseCallable(asCallable(text)??text);return overloads?{normalized:splitTopLevel(asCallable(text)??text,";").map((seg,i)=>rename3(seg,(overloads[i]?.typeParams??[]).map(tp=>typeParamNames(tp)[0]??""))).join("; "),generic}:{normalized:text,generic:!1}}var GENERIC_DIFFER={severity:"breaking",confidence:.7,notes:["generic signatures differ"]},TYPE_ARGS_NOTE="explicit type arguments will no longer compile",TYPE_PARAMS_LOST={severity:"breaking",confidence:.6,notes:[TYPE_ARGS_NOTE]};function lostTypeParameters(comparison){let counts=comparison.typeParameterCounts;if(!counts)return!1;let max=Math.max(counts.before.length,counts.after.length);for(let i=0;i<max;i++)if((counts.before[i]??0)>(counts.after[i]??0))return!0;return!1}function kindFor(relation){return relation==="widened"?"widened":relation==="narrowed"?"narrowed":"type"}function isEquivalent(comparison){return comparison.relation!=="equivalent"?!1:(comparison.signatures??[]).every(s=>s.returnType==="equivalent"&&s.parameters.every(p=>p.relation==="equivalent"))}function callbackKind(comparison){if(comparison.relation!=="equivalent")return kindFor(comparison.relation);let relations=(comparison.signatures??[]).flatMap(s=>[s.returnType,...s.parameters.map(p=>p.relation)]);return relations.includes("narrowed")?"narrowed":relations.includes("widened")?"widened":"type"}function apply(change,verdict){change.evidence="checker",change.severity=verdict.severity,change.confidence=Math.min(change.confidence,verdict.confidence),verdict.notes.length>0?change.notes=verdict.notes.join("; "):delete change.notes}function refineWithTypes(changes,comparisons,surfaceB){let symbols=new Map(surfaceB.symbols.map(s=>[s.path,s])),literalParents=[...comparisons.keys()].filter(p=>symbols.get(p)?.signature.includes("{\u2026}")||changes.some(c=>c.path===p&&c.before?.includes("{\u2026}"))),underLiteral=path=>literalParents.some(p=>path.length>p.length&&path.startsWith(p)&&/[#[]/.test(path[p.length])),out=[];for(let change of changes){if((change.kind==="removed"||change.kind==="added")&&underLiteral(change.path))continue;if(change.kind!=="signature"&&change.kind!=="type"){out.push(change);continue}if(change.notes==="member became optional"||change.notes==="no longer callable"||change.notes==="became callable"){out.push(change);continue}let comparison=comparisons.get(change.path),symbol=symbols.get(change.path),kindChanged=change.notes?.startsWith("declaration kind changed")===!0;if(!comparison||!symbol){out.push(change);continue}if(comparison.callable&&lostTypeParameters(comparison)){let refined2={...change,kind:"signature"};apply(refined2,TYPE_PARAMS_LOST),kindChanged&&(refined2.notes=`${change.notes}; ${refined2.notes}`),out.push(refined2);continue}if(isEquivalent(comparison)&&(!kindChanged||/(interface|type) to (interface|type)/.test(change.notes??"")))continue;if(kindChanged){if(/(variable|function|method|property) to (variable|function|method|property)/.test(change.notes??"")&&comparison.callable){if(isEquivalent(comparison))continue;let refined2={...change,kind:"signature"},verdict=comparison.signatures?callerVerdict(comparison.signatures):comparison.relation==="narrowed"?{severity:"additive",confidence:1,notes:["signature narrowed (compatible for callers)"]}:{severity:"breaking",confidence:1,notes:[comparison.relation==="widened"?"signature widened; callers must handle new cases":"signature incompatible"]};apply(refined2,verdict),refined2.notes=[change.notes,refined2.notes].filter(Boolean).join("; "),out.push(refined2);continue}out.push(change);continue}let role=roleOf(symbol,comparison,symbols);if(!role){out.push(change);continue}let refined={...change};if(comparison.relation==="incompatible"&&!comparison.signatures&&change.before&&change.after){let a=normalizeTypeParams(change.before),b=normalizeTypeParams(change.after);if(a.generic&&b.generic){if(a.normalized===b.normalized)continue;refined.kind="type",apply(refined,GENERIC_DIFFER),out.push(refined);continue}}switch(role){case"callable":{refined.kind="signature",comparison.signatures?apply(refined,callerVerdict(comparison.signatures)):comparison.relation==="narrowed"?apply(refined,{severity:"additive",confidence:1,notes:["signature narrowed (compatible for callers)"]}):apply(refined,{severity:"breaking",confidence:1,notes:[comparison.relation==="widened"?"signature widened; callers must handle new cases":"signature incompatible"]});break}case"callback":{refined.kind=callbackKind(comparison),comparison.signatures?apply(refined,implementerVerdict(comparison.signatures)):comparison.relation==="widened"?apply(refined,{severity:"additive",confidence:1,notes:["callback type widened (implementations still fit)"]}):apply(refined,{severity:"breaking",confidence:1,notes:["callback type incompatible with existing implementations"]});break}case"output":{refined.kind=kindFor(comparison.relation),comparison.relation==="narrowed"?apply(refined,{severity:"additive",confidence:1,notes:["type narrowed (safe for readers)"]}):comparison.relation==="widened"?apply(refined,{severity:"breaking",confidence:1,notes:["type widened; readers must handle new cases"]}):apply(refined,{severity:"breaking",confidence:1,notes:["type incompatible"]});break}case"unknown":{refined.kind=kindFor(comparison.relation),comparison.relation==="widened"?apply(refined,{severity:"additive",confidence:.6,notes:[WIDENED_NOTE]}):comparison.relation==="narrowed"?apply(refined,{severity:"breaking",confidence:.7,notes:["type narrowed"]}):apply(refined,{severity:"breaking",confidence:1,notes:["type incompatible"]});break}}out.push(refined)}return out}var BREAKING={severity:"breaking"},ADDITIVE={severity:"additive"};function relate2(before,after){if(before===after)return"same";if(after==="any"||after==="unknown")return"wider";let a=new Set(unionMembers(before)),b=new Set(unionMembers(after)),aInB=[...a].every(m=>b.has(m)),bInA=[...b].every(m=>a.has(m));return aInB&&!bInA?"wider":bInA&&!aInB?"narrower":"different"}function normalizeThis(type,path){let container=parentOf(path);return type==="this"&&container!==void 0?leafOf(container):type}function classifyCallable(before,after,path=""){let key2=o=>JSON.stringify(o),beforeKeys=before.map(key2),afterKeys=new Set(after.map(key2));if(beforeKeys.every(k=>afterKeys.has(k)))return{severity:"additive",notes:"overload added"};if(before.length!==1||after.length!==1)return{severity:"breaking",notes:"overload removed or changed"};let[a,b]=[before[0],after[0]];if(a.typeParams.length>b.typeParams.length)return{severity:"breaking",confidence:.6,notes:TYPE_ARGS_NOTE};if(a.typeParams.join(",")!==b.typeParams.join(",")){let added=b.typeParams.slice(a.typeParams.length);return a.typeParams.every((p,i)=>b.typeParams[i]===p)&&added.every(p=>p.includes("="))?{severity:"additive",notes:"type parameter with default added"}:a.typeParams.length===b.typeParams.length?{severity:"breaking",confidence:.5,notes:"type parameter constraints changed; explicit type arguments may not compile"}:{severity:"breaking",notes:"type parameters changed"}}let returnRelation=relate2(normalizeThis(a.returnType,path),normalizeThis(b.returnType,path));if(returnRelation==="different")return{severity:"breaking",confidence:.7,notes:"return type changed"};if(returnRelation==="wider")return{severity:"breaking",notes:"return type widened; callers must handle new cases"};let returnNote=returnRelation==="narrower"?"return type narrowed (safe for readers)":void 0,notes=returnNote?[returnNote]:[];a.thisType===void 0&&b.thisType!==void 0?notes.push(`this parameter added (${b.thisType})`):a.thisType!==void 0&&b.thisType===void 0&¬es.push("this parameter removed");let confidence,max=Math.max(a.params.length,b.params.length);for(let i=0;i<max;i++){let pa=a.params[i],pb=b.params[i];if(pa&&!pb)return{severity:"breaking",notes:`parameter '${pa.name}' removed`};if(!pa&&pb){if(pb.optional||pb.rest){notes.push(`optional parameter '${pb.name}' added`);continue}return{severity:"breaking",notes:`required parameter '${pb.name}' added`}}if(!pa||!pb)continue;if(pa.rest!==pb.rest)return{severity:"breaking",notes:`parameter '${pa.name}' rest-ness changed`};if(!pa.optional&&pb.optional&¬es.push(`parameter '${pa.name}' became optional`),pa.optional&&!pb.optional)return{severity:"breaking",notes:`parameter '${pa.name}' became required`};let rel=relate2(pa.type,pb.type);if(rel==="wider")confidence=.8;else{if(rel==="narrower")return{severity:"breaking",notes:`parameter '${pa.name}' type narrowed`};if(rel==="different")return pa.type.startsWith("{")&&/^[A-Za-z_$][\w$.]*(<.*>)?$/.test(pb.type)?{severity:"breaking",confidence:.5,notes:`parameter '${pa.name}' inline type replaced by named type ${pb.type}; may be equivalent`}:{severity:"breaking",confidence:.7,notes:`parameter '${pa.name}' type changed`}}}let verdict={severity:"additive",notes:notes.join("; ")||void 0};return confidence!==void 0&&(verdict.confidence=confidence),verdict}var WIDENED={confidence:.6,notes:WIDENED_NOTE};function classifyType(before,after){let rel=relate2(before,after);return rel==="wider"?{severity:"additive",kind:"widened",...WIDENED}:rel==="narrower"?{severity:"breaking",kind:"narrowed",confidence:.7,notes:"type narrowed"}:{severity:"breaking",confidence:.7,notes:"type changed"}}var VALUE_KINDS=new Set(["variable","function","method","property"]);function callableText(kindAndSignature){return asCallable(kindAndSignature.slice(kindAndSignature.indexOf(":")+2))}function classifyKindChange(before,after,note,path){let[fromKind,toKind]=[before.split(":")[0],after.split(":")[0]],pair=`${fromKind}->${toKind}`;if(VALUE_KINDS.has(fromKind)&&VALUE_KINDS.has(toKind)){let a=callableText(before),b=callableText(after),pa=a?parseCallable(a):void 0,pb=b?parseCallable(b):void 0;if(pa&&pb){let verdict=classifyCallable(pa,pb,path);return{...verdict,notes:[note,verdict.notes].filter(Boolean).join("; ")}}}return pair==="interface->type"||pair==="type->interface"?{severity:"additive",confidence:.7,notes:`${note}; usable the same way, but declaration merging and extends may differ`}:pair==="method->property"||pair==="property->method"||pair==="function->variable"||pair==="variable->function"||pair==="variable->namespace"||pair==="namespace->variable"?{severity:"additive",confidence:.7,notes:`${note}; call sites keep working if the property is callable`}:fromKind==="class"&&toKind==="variable"?{severity:"breaking",confidence:.6,notes:`${note}; a value+type pair may still construct, but extends/instanceof may break`}:{severity:"breaking",notes:note}}function classifyHeader(before,after){let parse6=h=>{let m=/^(abstract )?(class|interface)(<.*>)?(?: extends (.+?))?(?: implements (.+))?$/.exec(h);if(m)return{abstract:m[1]!==void 0,kind:m[2],typeParams:m[3]??"",extends:m[4]?splitTopLevel(m[4],","):[],implements:m[5]?splitTopLevel(m[5],","):[]}},a=parse6(before),b=parse6(after);if(!a||!b||a.kind!==b.kind||a.typeParams!==b.typeParams)return BREAKING;if(a.abstract&&!b.abstract)return{severity:"additive",notes:"no longer abstract"};if(!a.abstract&&b.abstract)return{severity:"breaking",notes:"became abstract"};let grew=(x,y)=>x.every(m=>y.includes(m))&&y.length>x.length,same=(x,y)=>x.length===y.length&&x.every(m=>y.includes(m));return(grew(a.extends,b.extends)||same(a.extends,b.extends))&&(grew(a.implements,b.implements)||same(a.implements,b.implements))?{severity:"additive",confidence:.8,notes:"base list grew; inherited members are new API"}:{severity:"breaking",notes:"base list changed"}}function verdictFor(change){switch(change.kind){case"added":return ADDITIVE;case"deprecated":return{severity:"deprecated"};case"removed":case"renamed":case"moved":case"required":return BREAKING;case"widened":return{severity:"additive",confidence:.6,notes:WIDENED_NOTE};case"narrowed":return{severity:"breaking",confidence:.7,notes:"type narrowed"};case"cause":case"module-format":return BREAKING;case"signature":case"type":{let{before,after}=change;if(before===void 0||after===void 0)return BREAKING;if(change.notes==="member became optional")return ADDITIVE;if(change.notes==="no longer callable"||change.notes==="became callable")return BREAKING;if(change.notes?.startsWith("declaration kind changed"))return classifyKindChange(before,after,change.notes,change.path);let callableLike=/^(protected |abstract |static )*(<|\()/;if(callableLike.test(before)&&callableLike.test(after)){let a=parseCallable(before),b=parseCallable(after);return a&&b?classifyCallable(a,b,change.path):{severity:"breaking",notes:"signature changed (not parsed)"}}return/^(abstract )?(class|interface)/.test(before)&&/^(abstract )?(class|interface)/.test(after)?classifyHeader(before,after):change.kind==="type"?classifyType(before,after):BREAKING}}}function classify(changes){return changes.map(change=>{if(change.severity!==void 0)return{...change,severity:change.severity};let verdict=verdictFor(change),out={...change,severity:verdict.severity};return verdict.kind&&(out.kind=verdict.kind),(out.kind==="signature"||out.kind==="type"||out.kind==="widened"||out.kind==="narrowed")&&out.evidence===void 0&&(out.evidence="text"),verdict.confidence!==void 0&&(out.confidence=Math.min(out.confidence,verdict.confidence)),verdict.notes&&(out.notes=out.notes&&!verdict.notes.startsWith(out.notes)?`${out.notes}; ${verdict.notes}`:verdict.notes),out})}function similarity(a,b){if(a===b)return 1;if(a.length<2||b.length<2)return 0;let bigrams=s=>{let m=new Map;for(let i=0;i<s.length-1;i++){let g=s.slice(i,i+2);m.set(g,(m.get(g)??0)+1)}return m},ga=bigrams(a),gb=bigrams(b),shared=0;for(let[g,n]of ga)shared+=Math.min(n,gb.get(g)??0);return 2*shared/(a.length-1+(b.length-1))}var CONTAINER_KINDS=new Set(["class","interface","namespace","enum","module","type"]);function withVisibility(change,symbol){return symbol.visibility&&(change.visibility=symbol.visibility),symbol.aliasOf&&(change.aliasOf=symbol.aliasOf),change}function effectiveKind(symbol){return symbol.kind==="variable"&&asCallable(symbol.signature)!==void 0?"function":symbol.kind==="property"&&asCallable(symbol.signature)!==void 0?"method":symbol.kind}function changeKindFor(symbol){return symbol.kind==="function"||symbol.kind==="method"||symbol.kind==="class"||symbol.kind==="interface"||symbol.kind==="namespace"||symbol.kind==="module"?"signature":"type"}function sortByPath(changes){return changes.sort((x,y)=>x.path<y.path?-1:x.path>y.path?1:0)}function unqualify(name){let qualifier=new RegExp(`\\b${name.replace(/[$]/g,"\\$&")}\\.(?=[A-Za-z_$])`,"g");return signature=>signature.replace(qualifier,"")}function esmEquivalence(from,other){let identity={active:!1,lookup:path=>other.get(path),reverse:()=>{},normalize:s=>s},root=from.symbols.find(s=>s.exportEquals);if(!root)return identity;let otherRoot=other.get(root.path)??other.get("default");if(!otherRoot||otherRoot.exportEquals)return identity;let name=root.path,rootPath=otherRoot.path;return{active:!0,lookup(path){let direct=other.get(path);if(direct)return direct;if(path===name)return otherRoot;if(path.startsWith(`${name}#`))return other.get(`${rootPath}${path.slice(name.length)}`);if(path.startsWith(`${name}.`)){let rest=path.slice(name.length+1);return rest==="new()"?other.get(`${rootPath}.new()`):other.get(rest)}},reverse(path,own){return path===rootPath?own.get(name):path.startsWith(`${rootPath}#`)?own.get(`${name}${path.slice(rootPath.length)}`):path===`${rootPath}.new()`?own.get(`${name}.new()`):own.get(`${name}.${path}`)},normalize:unqualify(name)}}var CUT=/^recursive type (.+) \(compared by name\)$/,isCut=s=>!!s&&CUT.test(s.signature);function throughCuts(symbols){let cuts=new Map;for(let s of symbols.values()){let target=CUT.exec(s.signature)?.[1];target!==void 0&&cuts.set(s.path,target)}return path=>{let current=path;for(let hop=0;cuts.size>0&&hop<16;hop++){let parts=splitPath(current),rewritten;for(let n=parts.segments.length;n>=1&&rewritten===void 0;n--){let target=cuts.get(joinPath({...parts,segments:parts.segments.slice(0,n)}));if(target===void 0)continue;let into=splitPath(target);rewritten=joinPath({...into,segments:[...into.segments,...parts.segments.slice(n)]})}if(rewritten===void 0)return;let found=symbols.get(rewritten);if(found&&!isCut(found))return found;current=rewritten}}}function rawDiff(a,b){let meta3={package:b.package,from:a.version,to:b.version},inA=new Map(a.symbols.map(s=>[s.path,s])),inB=new Map(b.symbols.map(s=>[s.path,s])),raw=[],removed=[],added=[],equivB=esmEquivalence(a,inB),equivA=esmEquivalence(b,inA),viaB=throughCuts(inB),viaA=throughCuts(inA);for(let cut of a.symbols){let found=equivB.lookup(cut.path),resolvedB=!found||isCut(found)&&!isCut(cut)?viaB(cut.path):void 0;resolvedB&&(found={...resolvedB,path:cut.path});let resolvedA=isCut(cut)&&found&&!isCut(found)?viaA(cut.path):void 0,original=resolvedA?{...resolvedA,path:cut.path}:cut,through=resolvedB??resolvedA;if(through&&found){let plain=unqualify(leafOf(through.path));original={...original,signature:plain(original.signature)},found={...found,signature:plain(found.signature)}}let before=equivB.active?{...original,signature:equivB.normalize(original.signature)}:original,after=found&&equivA.active?{...found,signature:equivA.normalize(found.signature)}:found;if(!after){removed.push(before);continue}if(!after.exportedFrom.some(e=>before.exportedFrom.includes(e))){let[target]=[...after.exportedFrom].sort();raw.push(withVisibility({...meta3,path:before.path,kind:"moved",severity:"breaking",source:"types",confidence:.95,replacement:target,notes:`no longer exported from ${before.exportedFrom.join(", ")}; now exported from ${after.exportedFrom.join(", ")}`},before))}compareSymbol(meta3,before,after,raw)}for(let after of b.symbols)!equivA.lookup(after.path)&&!equivB.reverse(after.path,inA)&&!viaA(after.path)&&added.push(after);let hints=renameHints(removed,added,a.symbols,b.symbols);for(let symbol of removed){let hint=hints.get(symbol.path),change={...meta3,path:symbol.path,kind:"removed",before:symbol.signature,source:"types",confidence:hint?hint.confidence:1};hint&&(change.replacement=hint.replacement,change.notes=hint.notes),symbol.deprecated!==void 0&&(change.notes=[change.notes,"was deprecated"].filter(Boolean).join("; ")),raw.push(withVisibility(change,symbol))}for(let symbol of added)raw.push(withVisibility({...meta3,path:symbol.path,kind:"added",after:symbol.signature,source:"types",confidence:1},symbol));return raw}function compareSymbol(meta3,before,after,out){let base={...meta3,path:before.path,source:"types",confidence:1},push=change=>out.push(withVisibility(change,after)),kindA=effectiveKind(before),kindB=effectiveKind(after);if(kindA!==kindB&&before.kind===after.kind){let change={...base,kind:changeKindFor(before),before:before.signature,after:after.signature};before.kind!=="property"&&(change.notes=kindA==="method"||kindA==="function"?"no longer callable":"became callable"),push(change)}else if(kindA!==kindB)push({...base,kind:"signature",before:`${before.kind}: ${before.signature}`,after:`${after.kind}: ${after.signature}`,notes:`declaration kind changed from ${before.kind} to ${after.kind}`});else if(kindA==="function"||kindA==="method"){let textA=asCallable(before.signature)??before.signature,textB=asCallable(after.signature)??after.signature;textA!==textB&&callableShape(before.signature)!==callableShape(after.signature)&&push({...base,kind:"signature",before:textA,after:textB})}else before.signature!==after.signature&&push({...base,kind:changeKindFor(before),before:before.signature,after:after.signature});let wasOptional=before.optional===!0,isOptional=after.optional===!0;if(wasOptional&&!isOptional?push({...base,kind:"required",before:`${before.signature} (optional)`,after:after.signature}):!wasOptional&&isOptional&&push({...base,kind:"type",before:before.signature,after:`${after.signature} (optional)`,notes:"member became optional"}),before.deprecated===void 0&&after.deprecated!==void 0){let change={...base,kind:"deprecated",source:"jsdoc"};typeof after.deprecated=="string"&&(change.notes=after.deprecated),push(change)}}function memberFingerprints(container,symbols){let out=new Set;for(let s of symbols)s.path.length>container.length&&s.path.startsWith(container)&&/[.#[]/.test(s.path[container.length])&&out.add(`${s.path.slice(container.length)}=${s.signature}`);return out}function jaccard(a,b){if(a.size===0&&b.size===0)return 1;let shared=0;for(let x of a)b.has(x)&&shared++;return shared/(a.size+b.size-shared)}function renameHints(removed,added,allA,allB){let hints=new Map,addedByPath=new Map(added.map(s=>[s.path,s])),addedByParent=new Map;for(let s of added){let parent=parentOf(s.path)??"",list=addedByParent.get(parent)??[];list.push(s),addedByParent.set(parent,list)}let claimed=new Set,shallowFirst=[...removed].sort((x,y)=>depth(x.path)-depth(y.path));for(let symbol of shallowFirst){let parent=parentOf(symbol.path),parentHint=parent===void 0?void 0:hints.get(parent);if(parentHint){let counterpart2=parentHint.replacement+symbol.path.slice(parent.length),twin=addedByPath.get(counterpart2);if(twin&&twin.signature===symbol.signature&&twin.kind===symbol.kind){hints.set(symbol.path,{...parentHint,replacement:counterpart2}),claimed.add(counterpart2);continue}}let candidates=(addedByParent.get(parent??"")??[]).filter(c=>c.kind===symbol.kind&&!claimed.has(c.path)),best=CONTAINER_KINDS.has(symbol.kind)?pickContainerRename(symbol,candidates,allA,allB):pickLeafRename(symbol,candidates);best&&(hints.set(symbol.path,best),claimed.add(best.replacement))}return hints}function depth(path){return(path.match(/[.#]|\[\]/g)??[]).length}function unique(scored){let sorted=[...scored].sort((x,y)=>y.score-x.score),top=sorted[0];if(!top)return;let runnerUp=sorted[1];return runnerUp&&runnerUp.score===top.score?void 0:top}var TRIVIAL_SIGNATURE=/^(readonly |protected )*[A-Za-z_$][\w$]*$/;function pickLeafRename(symbol,candidates){let trivial=TRIVIAL_SIGNATURE.test(symbol.signature),scored=candidates.map(c=>{let same=c.signature===symbol.signature,sig=same?1:similarity(c.signature,symbol.signature),name=similarity(leafOf(c.path),leafOf(symbol.path));return{c,same,name,score:sig+name/10}}).filter(({same,score,name})=>(same||score>=.85)&&(!trivial||name>=.5)),top=unique(scored);if(top)return{replacement:top.c.path,confidence:top.same?.8:.6,notes:top.same?"possibly renamed (identical signature)":"possibly renamed (similar signature)"}}function pickContainerRename(symbol,candidates,allA,allB){let mine=memberFingerprints(symbol.path,allA),scored=candidates.map(c=>{let name=similarity(leafOf(c.path),leafOf(symbol.path)),members=jaccard(mine,memberFingerprints(c.path,allB));return{c,name,members,score:name+members}}).filter(({name,members})=>mine.size===0?name>=.8:name>=.5&&members>=.5),top=unique(scored);if(!top)return;let strong=top.members>=.8&&top.name>=.6;return{replacement:top.c.path,confidence:strong?.8:.6,notes:strong?"possibly renamed (same members, similar name)":"possibly renamed (similar name and members)"}}var SURFACE_SCHEMA_VERSION=10,DEFAULT_REGISTRY="https://registry.npmjs.org",stripSlash=url=>url.replace(/\/+$/,"");function expandEnv(value,env){return value.replace(/(\\*)\$\{([^${}?]+)(\?)?\}/g,(match2,escapes,name,optional)=>escapes.length%2?match2.slice((escapes.length+1)/2):escapes.slice(escapes.length/2)+(env[name]??(optional?"":`\${${name}}`)))}function registryConfig(values){let out={scoped:{},tokens:{}};for(let[key2,value]of Object.entries(values))if(typeof value=="string"){if(key2==="registry")out.registry=stripSlash(value);else if(key2.startsWith("@")&&key2.endsWith(":registry"))out.scoped[key2.slice(0,-9)]=stripSlash(value);else if(key2.startsWith("//")){let match2=key2.match(/^(\/\/.*):(_authToken|_auth|username|_password)$/);if(!match2)continue;let[,scope,field]=match2,prefix=`${stripSlash(scope.slice(2))}/`;field==="_authToken"&&(out.tokens[prefix]=value),field==="_auth"&&(out.basicAuth??={},out.basicAuth[prefix]=value),field==="username"&&typeof values[`${scope}:_password`]=="string"&&(out.basicAuth??={},out.basicAuth[prefix]=Buffer.from(`${value}:${Buffer.from(values[`${scope}:_password`],"base64").toString("utf8")}`).toString("base64"))}}return out}var fields=(text,env)=>Object.fromEntries(Object.entries((0,import_ini.parse)(text)).map(([key2,value])=>[key2,typeof value=="string"?expandEnv(value,env):value]));function readIfExists(path){try{return readFileSync11(path,"utf8")}catch{return""}}function projectRoot(cwd){let nearest;for(let dir=resolve6(cwd);;dir=dirname11(dir)){if(existsSync12(join16(dir,"package.json"))){nearest??=dir;try{if(JSON.parse(readIfExists(join16(dir,"package.json"))).workspaces&&workspacePackagesOrRoot(dir).includes(relative8(dir,nearest).replaceAll("\\","/")||"."))return dir}catch{}}if(existsSync12(join16(dir,"pnpm-workspace.yaml"))&&(!nearest||workspacePackagesOrRoot(dir).includes(relative8(dir,nearest).replaceAll("\\","/")||".")))return dir;if(dirname11(dir)===dir)return nearest??cwd}}function loadRegistryConfig(opts={}){let env=opts.env??process.env,environment={};for(let[key2,value]of Object.entries(env)){if(!/^npm_config_/i.test(key2)||value===void 0)continue;let raw=key2.slice(11);environment[raw.startsWith("//")?raw:raw.toLowerCase().replaceAll("_","-")]=expandEnv(value,env)}let cwd=opts.cwd??process.cwd(),home=env.HOME??homedir2(),pathOf=value=>resolve6(cwd,value.replace(/^~(?=\/|$)/,home)),project=fields(readIfExists(join16(projectRoot(cwd),".npmrc")),env),userFile=String(environment.userconfig??project.userconfig??join16(home,".npmrc")),user=fields(readIfExists(pathOf(userFile)),env),prefix=String(environment.prefix??project.prefix??user.prefix??env.PREFIX??dirname11(dirname11(process.execPath))),globalFile=String(environment.globalconfig??project.globalconfig??user.globalconfig??join16(prefix,"etc/npmrc"));return{registry:DEFAULT_REGISTRY,scoped:{},tokens:{},...registryConfig({...fields(readIfExists(pathOf(globalFile)),env),...user,...project,...environment})}}function registryFor(name,config){let scope=name.startsWith("@")?name.slice(0,name.indexOf("/")):void 0;return scope&&config.scoped[scope]||config.registry}function scopedCredential(url,credentials){let target=new URL(url),candidates=Object.keys(credentials).filter(prefix=>{try{let scope=new URL(`https://${prefix}`);return scope.host===target.host&&target.pathname.startsWith(scope.pathname.endsWith("/")?scope.pathname:`${scope.pathname}/`)}catch{return!1}}).sort((a,b)=>b.length-a.length);return candidates[0]===void 0?void 0:credentials[candidates[0]]}function authHeaders(url,config){let credentials={...Object.fromEntries(Object.entries(config.basicAuth??{}).filter(([,value])=>value).map(([key2,value])=>[key2,`Basic ${value}`])),...Object.fromEntries(Object.entries(config.tokens).filter(([,value])=>value).map(([key2,value])=>[key2,`Bearer ${value}`]))},authorization=scopedCredential(url,credentials);return authorization?{authorization}:{}}function parseVersion(v){let m=/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?/.exec(v.trim());if(m)return{major:Number(m[1]),minor:Number(m[2]),patch:Number(m[3]),pre:m[4]}}function compareVersions(a,b){let pa=parseVersion(a),pb=parseVersion(b);if(!pa||!pb)return a.localeCompare(b);for(let key2 of["major","minor","patch"])if(pa[key2]!==pb[key2])return pa[key2]-pb[key2];return pa.pre===pb.pre?0:pa.pre===void 0?1:pb.pre===void 0?-1:pa.pre.localeCompare(pb.pre)}function majorsBehind(installed,target){let a=parseVersion(installed),b=parseVersion(target);return!a||!b?0:Math.max(0,b.major-a.major)}function packumentUrl(name,registry){return`${registry}/${name.replace("/","%2F")}`}function manifestUrl(name,version,registry){return`${packumentUrl(name,registry)}/${encodeURIComponent(version)}`}var TRANSIENT=new Set([429,500,502,503,504]),BACKOFF_MS=[500,1500,4e3],MAX_WAIT_MS=8e3;function retryAfterMs(res){let seconds=Number(res.headers.get("retry-after"));return Number.isFinite(seconds)&&seconds>0?seconds*1e3:void 0}function withRetry(fetchFn,options={}){let retries=options.retries??BACKOFF_MS.length,sleep=options.sleep??(ms=>new Promise(r=>setTimeout(r,ms)));return async(input,init)=>{for(let attempt=0;;attempt++){let last=attempt>=retries,backoff=BACKOFF_MS[Math.min(attempt,BACKOFF_MS.length-1)];try{let res=await fetchFn(input,init);if(!TRANSIENT.has(res.status)||last)return res;await sleep(Math.min(retryAfterMs(res)??backoff,MAX_WAIT_MS))}catch(err){if(last)throw err;await sleep(backoff)}}}}function httpFailure(res){let wait=retryAfterMs(res),what=res.status===429?", rate limited":"";return`HTTP ${res.status}${what}${wait?`; the registry asks to wait ${Math.ceil(wait/1e3)}s`:""}`}async function request(fetchFn,url,init){try{return await fetchFn(url,init)}catch(cause){throw new UptideError("REGISTRY_UNREACHABLE",`cannot reach registry: ${url}`,{cause})}}async function getJson(url,config,fetchFn){let res=await request(fetchFn,url,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8",...authHeaders(url,config)}});if(res.status!==404){if(res.status===401||res.status===403)throw new RegistryAuthError(url.split("/").slice(3).join("/"),url.split("/").slice(0,3).join("/"),res.status);if(!res.ok)throw new UptideError("REGISTRY_HTTP_ERROR",`${url}: ${httpFailure(res)}`);return await res.json()}}function toResolved(name,manifest2){if(!manifest2?.version||!manifest2.dist?.tarball)return;let resolved2={name,version:manifest2.version,tarball:manifest2.dist.tarball,...manifest2.dependencies?{dependencies:manifest2.dependencies}:{},peerDependencies:manifest2.peerDependencies??{}};return manifest2.bin&&(resolved2.bin=manifest2.bin),manifest2.dist.integrity&&(resolved2.integrity=manifest2.dist.integrity),manifest2.dist.shasum&&(resolved2.shasum=manifest2.dist.shasum),resolved2}function resolveFromPackument(name,requested,packument){let versions=packument.versions??{},version=packument["dist-tags"]?.[requested]??requested,resolved2=toResolved(name,{...versions[version],version});if(!resolved2)throw new VersionNotFoundError(name,requested,Object.keys(versions));return resolved2}async function resolveVersion(name,requested,config,fetchFn){let registry=registryFor(name,config),manifest2=await getJson(manifestUrl(name,requested,registry),config,fetchFn),fast=toResolved(name,manifest2);if(fast)return fast;let packument=await getJson(packumentUrl(name,registry),config,fetchFn);if(!packument)throw new PackageNotFoundError(name,registry);return resolveFromPackument(name,requested,packument)}async function downloadTarball(resolved2,config,fetchFn){let res=await request(fetchFn,resolved2.tarball,{headers:authHeaders(resolved2.tarball,config)});if(!res.ok)throw new UptideError("REGISTRY_HTTP_ERROR",`${resolved2.tarball}: ${httpFailure(res)}`);return Buffer.from(await res.arrayBuffer())}async function listVersions(name,config,fetchFn){let registry=registryFor(name,config),packument=await getJson(packumentUrl(name,registry),config,fetchFn);if(!packument)throw new PackageNotFoundError(name,registry);return Object.keys(packument.versions??{}).filter(v=>parseVersion(v)!==void 0).sort(compareVersions)}async function listManifests(name,config,fetchFn){let registry=registryFor(name,config),packument=await getJson(packumentUrl(name,registry),config,fetchFn);if(!packument)throw new PackageNotFoundError(name,registry);let out={};for(let[version,manifest2]of Object.entries(packument.versions??{}))parseVersion(version)!==void 0&&(out[version]={...manifest2.dependencies?{dependencies:manifest2.dependencies}:{},...manifest2.peerDependencies?{peerDependencies:manifest2.peerDependencies}:{}});return out}var BLOCK=512;function readString(buf,start,length){let end=buf.indexOf(0,start),stop=end===-1||end>start+length?start+length:end;return buf.toString("utf8",start,stop)}function readNumber(buf,start,length){if((buf[start]??0)&128){let value=0;for(let i=start+1;i<start+length;i++)value=value*256+(buf[i]??0);return value}let text=readString(buf,start,length).trim();return text===""?0:Number.parseInt(text,8)}function parsePax(buf){let out={},offset=0;for(;offset<buf.length;){let space=buf.indexOf(32,offset);if(space===-1)break;let length=Number.parseInt(buf.toString("utf8",offset,space),10);if(!Number.isFinite(length)||length<=0)break;let record=buf.toString("utf8",space+1,offset+length-1),eq=record.indexOf("=");eq!==-1&&(out[record.slice(0,eq)]=record.slice(eq+1)),offset+=length}return out}function*readTar(tar){let offset=0,pendingPath;for(;offset+BLOCK<=tar.length;){let header=tar.subarray(offset,offset+BLOCK);if(header.every(b=>b===0))break;let type=header[156]===0?"0":String.fromCharCode(header[156]),size=readNumber(header,124,12),prefix=readString(header,345,155),name=readString(header,0,100),dataStart=offset+BLOCK,data=tar.subarray(dataStart,dataStart+size);if(offset=dataStart+Math.ceil(size/BLOCK)*BLOCK,type==="x"){let pax=parsePax(data);pax.path!==void 0&&(pendingPath=pax.path);continue}if(type==="L"){pendingPath=readString(data,0,data.length);continue}if(type==="g"||type==="K")continue;let path=pendingPath??(prefix?`${prefix}/${name}`:name);pendingPath=void 0,yield{path,type,size,data}}}function safeRelativePath(entryPath){let parts=entryPath.split("/").filter(p=>p!==""&&p!==".");if(parts.shift(),parts.length===0||parts.some(p=>p===".."))return;let rel=normalize(parts.join("/"));if(!(rel.startsWith("..")||rel.startsWith(sep)||/^[A-Za-z]:/.test(rel)))return rel}function extractTgz(tgz,dest){let written2=[];for(let entry of readTar(gunzipSync(tgz))){let rel=safeRelativePath(entry.path);if(rel===void 0)continue;let target=join17(dest,rel);entry.type==="5"?mkdirSync2(target,{recursive:!0}):(entry.type==="0"||entry.type==="7")&&(mkdirSync2(dirname12(target),{recursive:!0}),writeFileSync2(target,entry.data),written2.push(rel))}return written2}function tarballCachePath(root,name,version){return join18(root,"tarballs",...packagePathSegments(name),`${version}.tgz`)}function extractedPath(root,name,version){return join18(root,...packagePathSegments(name),version)}var COMPLETE_MARKER=".uptide-complete",EXACT_VERSION=/^v?\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;function verify(tgz,resolved2){if(resolved2.integrity){let[algo,expected]=resolved2.integrity.split("-",2),actual=createHash(algo).update(tgz).digest("base64");if(actual!==expected)throw new IntegrityError(resolved2.name,resolved2.version,resolved2.integrity,`${algo}-${actual}`);return}if(resolved2.shasum){let actual=createHash("sha1").update(tgz).digest("hex");if(actual!==resolved2.shasum)throw new IntegrityError(resolved2.name,resolved2.version,resolved2.shasum,actual)}}function createNpmFetcher(opts={}){let cacheDir=opts.cacheDir??defaultCacheDir(),extractRoot=opts.extractRoot??join18(cacheDir,"extracted"),fetchFn=withRetry(opts.fetch??fetch,opts.sleep?{sleep:opts.sleep}:{}),config=opts.config??loadRegistryConfig(),ttl=opts.metadataTtlMs??3600*1e3;async function remembered(key2,forever,ask){let path=join18(cacheDir,"registry",...key2.slice(0,-1),`${key2.at(-1)}.json`),expired;try{let entry=JSON.parse(await readFile2(path,"utf8"));if(forever||Date.now()-entry.at<ttl)return entry.value;expired=entry}catch{}let value;try{value=await ask()}catch(err){let code=errorCode(err);if(expired&&(code==="REGISTRY_UNREACHABLE"||code==="REGISTRY_HTTP_ERROR"))return expired.value;throw err}await mkdir2(dirname13(path),{recursive:!0});let tmp=`${path}.${process.pid}.tmp`;return await writeFile2(tmp,JSON.stringify({at:Date.now(),value})),await rename2(tmp,path),value}function resolved2(name,requested){return remembered([...packagePathSegments(name),`resolve-${requested}`],EXACT_VERSION.test(requested),async()=>{let result=await resolveVersion(name,requested,config,fetchFn),registry=registryFor(name,config);return{...result,publicRegistry:registry==="https://registry.npmjs.org"&&!authHeaders(manifestUrl(name,requested,registry),config).authorization&&!authHeaders(packumentUrl(name,registry),config).authorization}})}async function tarballFor(resolved3){let path=tarballCachePath(cacheDir,resolved3.name,resolved3.version);try{let cached=await readFile2(path);return verify(cached,resolved3),cached}catch(err){err instanceof IntegrityError&&await rm(path,{force:!0})}let tgz=await downloadTarball(resolved3,config,fetchFn);verify(tgz,resolved3),await mkdir2(dirname13(path),{recursive:!0});let tmp=`${path}.${process.pid}.tmp`;return await writeFile2(tmp,tgz),await rename2(tmp,path),tgz}return{metadata:(name,version)=>remembered([...packagePathSegments(name),`metadata-${version}`],EXACT_VERSION.test(version),async()=>{let manifest2=await resolveVersion(name,version,config,fetchFn);return{...manifest2.dependencies?{dependencies:manifest2.dependencies}:{},peerDependencies:manifest2.peerDependencies??{},bin:manifest2.bin}}),async resolve(name,requested){return(await resolved2(name,requested)).version},async versions(name){return remembered([...packagePathSegments(name),"versions"],!1,()=>listVersions(name,config,fetchFn))},async manifests(name){return remembered([...packagePathSegments(name),"manifests"],!1,()=>listManifests(name,config,fetchFn))},async fetch(name,version){let target=await resolved2(name,version),tgz=await tarballFor(target),dir=extractedPath(extractRoot,name,target.version);return existsSync13(join18(dir,COMPLETE_MARKER))||(await rm(dir,{recursive:!0,force:!0}),await mkdir2(dir,{recursive:!0}),extractTgz(tgz,dir),await writeFile2(join18(dir,COMPLETE_MARKER),"")),{name,version:target.version,dir}},async release(){}}}async function releasePackage(fetcher,pkg){fetcher.release?await fetcher.release(pkg):await removePackageDir(pkg).catch(()=>{})}async function removePackageDir(pkg,extractRoot=tmpdir3()){let dir=resolve7(pkg.dir),root=resolve7(extractRoot);if(!dir.startsWith(`${root}/`)||dir===root)throw new Error(`refusing to remove ${dir}: not under ${root}`);await rm(dir,{recursive:!0,force:!0})}var defaultFetcher,defaultCache;function defaults(){return defaultFetcher??=createNpmFetcher(),defaultCache??=createFsSurfaceCache(),{fetcher:defaultFetcher,cache:defaultCache}}async function surfaceOfDir(pkg,adapter,cache){let key2={package:pkg.name,version:pkg.version,adapter:adapter.id,schema:SURFACE_SCHEMA_VERSION},cached=await cache.get(key2);if(cached)return cached;let surface=await adapter.extractSurface(pkg);return await cache.set(key2,surface),surface}async function diffPackage(opts){return(await diffPackageDetailed(opts)).changes}async function diffPackageDetailed(opts){let fetcher=opts.fetcher??defaults().fetcher,[pkgA,pkgB]=await Promise.all([fetcher.fetch(opts.name,opts.from),fetcher.fetch(opts.name,opts.to)]);try{return await diffDirs(pkgA,pkgB,opts)}finally{await Promise.all([pkgA,pkgB].map(p=>releasePackage(fetcher,p)))}}function restrict(surface,only){return only?{...surface,symbols:surface.symbols.filter(s=>only.has(s.path))}:surface}async function diffDirs(pkgA,pkgB,opts={}){let adapter=opts.adapter??typescriptAdapter,cache=opts.cache??defaults().cache,[fullA,fullB]=await Promise.all([surfaceOfDir(pkgA,adapter,cache),surfaceOfDir(pkgB,adapter,cache)]),a=restrict(fullA,opts.onlyPaths),b=fullB,raw=rawDiff(a,b);if(opts.assignability!==!1&&adapter.compareTypes){let paths=[...new Set(raw.filter(c=>c.kind==="signature"||c.kind==="type").map(c=>c.path))];if(paths.length>0){let comparisons=await adapter.compareTypes({a:pkgA,b:pkgB,surfaceA:a,surfaceB:b,paths});raw=refineWithTypes(raw,comparisons,b)}}return{surfaceA:a,surfaceB:b,changes:sortByPath(classify(raw))}}var BY={rule:n=>`${n} auto-fixable`,agent:n=>`${n} ${n===1?"needs":"need"} the agent (LLM)`,ruleTag:"auto-fixable",agentTag:"needs the agent (LLM)",ruleDone:n=>`${n} auto-fixed`,agentDone:n=>`${n} fixed by the agent (LLM)`,ruleDoneTag:"auto-fixed",agentDoneTag:"by the agent (LLM)"},GENERIC_NOTE=name=>`No migration pack covers \`${name}\`. Every edit here was written by the agent and kept only because the compiler error at that site went away and no new one appeared: review each change carefully.`;function genericPack(name){return{name,defaultTarget:"",rules:[],supports:()=>!0,transform:text=>({text,applied:!1,reason:"no migration pack: assisted review required"}),guide:f=>[`Migrate this call site of ${f.change.package} from ${f.change.from} to ${f.change.to}. There is no curated guide for this package: work only from the compiler error and the change below.`,`Change: ${f.change.path} (${f.change.kind})${f.change.notes?`: ${f.change.notes}`:""}.`,f.change.before?`Before: ${f.change.before}`:"",f.change.after?`After: ${f.change.after}`:"",f.change.replacement?`Likely replacement: ${f.change.replacement}`:"",...f.details??[],"Patch ONLY the reported site, with the smallest edit that makes it compile against the target and keeps what the code does. Never cast, never suppress a diagnostic, never delete the call, never change values, messages or control flow that the upgrade does not require. If the site cannot be migrated safely from what is shown, say so instead of guessing."].filter(Boolean).join(`
|
|
155
|
+
`)[0]??"";return{diagnostics:[],baselineErrors:0,skipped:`invalid tsconfig: ${message}`,coverage:coverageOf(compiler,0,0,{reason:"invalid tsconfig",count:options.files?.length??0}),unresolvedInTarget:[],unresolvedFiles:[],linkedDependencies:[],unsatisfiedDependencies:[],timing:{baselineMs:0,overlayMs:0,dependenciesMs:0}}}let unresolved=repo.tsconfig?unresolvedConfig(compiler.ts,repo.tsconfig):void 0;if(repo.tsconfig&&unresolved!==void 0){let requested2=options.files?.length??0;return{diagnostics:[],baselineErrors:0,skipped:`not compiled: tsconfig.json (${unresolved})`,coverage:{...coverageOf(compiler,0,0,{reason:"tsconfig cannot be resolved",count:requested2}),notCompiled:[{path:"tsconfig.json",reason:unresolved}]},unresolvedInTarget:[],unresolvedFiles:[],linkedDependencies:[],unsatisfiedDependencies:[],timing:{baselineMs:0,overlayMs:0,dependenciesMs:0}}}let t0=Date.now(),base=nativeBase(repo,compiler),baselineTargets=options.baselineTargets&&options.baselineTargets.length>0?options.baselineTargets:targets.flatMap(t=>{let installed=resolvePackageDir(repo,t.name);return installed?[{...t,dir:installed}]:[]}),baselineOverlayDir,checked,memoized=baselineTargets.length===0;memoized?checked=checkedBaseline(repo,compiler,base):(baselineOverlayDir=mkdtempSync2(join12(tmpdir2(),"uptide-baseline-")),checked=overlayProgram(repo,compiler,base,baselineTargets,baselineOverlayDir,newLinks(),new Map).program);let unresolvedProjects=new Map,requested=(options.files??[]).filter(rel=>{let nested=nestedUnresolvedConfig(compiler.ts,repo,rel);if(!nested)return!0;let known2=unresolvedProjects.get(nested.path);return unresolvedProjects.set(nested.path,{reason:nested.reason,count:(known2?.count??0)+1}),!1}),withNotCompiled=coverage=>{if(unresolvedProjects.size===0)return coverage;let count3=[...unresolvedProjects.values()].reduce((n,p)=>n+p.count,0);return{...coverage,total:coverage.total+count3,skipped:[...coverage.skipped,{reason:"tsconfig cannot be resolved",count:count3}],notCompiled:[...coverage.notCompiled??[],...[...unresolvedProjects].map(([path,p])=>({path,reason:p.reason}))]}},{files,missing}=filesToCheck(repo,repoRef,checked,options.files?requested:void 0),baseline=files.flatMap(f=>memoized?baselineErrorsOf(repo,checked,f):checked.getSemanticDiagnostics(f).filter(d=>isRepoError(d,repo.dir)));baselineOverlayDir&&rmSync2(baselineOverlayDir,{recursive:!0,force:!0});let baselineMs=Date.now()-t0,skipped=structuralFailure(checked,files,baseline);if(skipped)return{diagnostics:[],baselineErrors:baseline.length,skipped,coverage:withNotCompiled(coverageOf(compiler,0,missing,{reason:skipReasonOf(skipped),count:files.length})),unresolvedInTarget:[],unresolvedFiles:[],linkedDependencies:[],unsatisfiedDependencies:[],timing:{baselineMs,overlayMs:0,dependenciesMs:0}};let known=new Set(baseline.map(d=>keyOf(d,repo.dir))),overlay=mkdtempSync2(join12(tmpdir2(),"uptide-overlay-")),deps=newLinks();for(let t of targets)deps.decided.add(t.name);try{let t1=Date.now(),{program,unresolvedInTarget,unresolvedFiles}=await convergedOverlay(repo,compiler,base,targets,overlay,deps,options.fetcher),fresh=[];for(let file of files){let overlaid=program.getSourceFile(file.fileName);if(overlaid)for(let d of program.getSemanticDiagnostics(overlaid))isRepoError(d,repo.dir)&&!known.has(keyOf(d,repo.dir))&&fresh.push({d,overlaid})}let erroredLines=new Set(fresh.map(({d,overlaid})=>{let{line}=overlaid.getLineAndCharacterOfPosition(d.start??0);return`${relative7(repo.dir,overlaid.fileName)}:${line+1}`})),programs={overlay:program,base:checked,ts:compiler.ts},jsx=jsxNamespaceCause(programs,fresh.map(({d})=>d),repo.dir,targets.map(t=>t.name)),byParameter=new Map,parameterOf=new Map;for(let{d,overlaid}of fresh){let cause=parameterCause(programs,d,overlaid,repo.dir,repoRef.root??repo.dir);if(!cause)continue;let key2=`${cause.file}:${cause.line}:${cause.name}`;byParameter.set(key2,cause),parameterOf.set(d,key2)}let shared=new Map;for(let key2 of parameterOf.values())shared.set(key2,(shared.get(key2)??0)+1);return{diagnostics:fresh.map(({d,overlaid})=>{let diagnostic=toDiagnostic(d,overlaid,repo.dir),parameter=parameterOf.get(d),augmentation=augmentationCause(programs,d,overlaid,repo.dir,repoRef.root??repo.dir),cause=(jsx?.explains(d)?jsx.cause:void 0)??augmentation??(parameter!==void 0&&(shared.get(parameter)??0)>=2?byParameter.get(parameter):void 0)??findCause(programs,d,overlaid,repo.dir,erroredLines);cause&&(diagnostic.cause=cause);let root=augmentation??(parameter!==void 0?byParameter.get(parameter):void 0);return root&&(diagnostic.root=root),diagnostic}).sort((a,b)=>a.file.localeCompare(b.file)||a.line-b.line||a.column-b.column),baselineErrors:baseline.length,coverage:withNotCompiled(coverageOf(compiler,files.length,missing)),unresolvedInTarget:[...unresolvedInTarget].sort(),unresolvedFiles:[...unresolvedFiles].sort(),linkedDependencies:deps.linked,linkedDependencyDirs:Object.fromEntries(deps.links),unsatisfiedDependencies:deps.unsatisfied,timing:{baselineMs,overlayMs:Date.now()-t1,dependenciesMs:0}}}finally{rmSync2(overlay,{recursive:!0,force:!0})}}function reachableFiles(entry){let seen=new Set([entry]),queue=[entry];for(let i=0;i<queue.length;i++)for(let next of queue[i].getReferencedSourceFiles())seen.has(next)||(seen.add(next),queue.push(next));return[...seen]}function rescope(path,entry){return splitPath(path).scope===void 0?scoped(entry,path):path}function merge(perEntry){let byPath=new Map,rootDecls=new Map;for(let{entry,roots}of perEntry)if(entry===".")for(let[root,decls]of roots)rootDecls.set(root,new Set(decls));let groups2=new Map;for(let{roots}of perEntry)for(let[root,decls]of roots){let list=groups2.get(root)??[],shared=list.find(g=>[...decls].some(d=>g.has(d)));if(shared)for(let d of decls)shared.add(d);else list.push(new Set(decls));groups2.set(root,list)}let collidingFor=(entry,roots)=>{let out=new Set;if(entry===".")return out;for(let[root,decls]of roots){if((groups2.get(root)?.length??0)<2)continue;let atRoot=rootDecls.get(root);atRoot&&[...decls].some(d=>atRoot.has(d))||out.add(root)}return out};for(let{entry,symbols,roots}of perEntry){let collidingRoots=collidingFor(entry,roots);for(let{symbol,root}of symbols){let path=collidingRoots.has(root)?rescope(symbol.path,entry):symbol.path;symbol.path=path;let existing=byPath.get(path);if(existing){existing.exportedFrom.includes(entry)||existing.exportedFrom.push(entry);continue}byPath.set(path,{...symbol,path,exportedFrom:[entry]})}}return[...byPath.values()].sort((a,b)=>a.path<b.path?-1:a.path>b.path?1:0)}function locationKey(fileName,start){return`${fileName}:${start}`}function createTypescriptAdapter(opts={}){let now=opts.now??(()=>new Date),adapter={id:"typescript",compareTypes:compareTypesWithChecker,findUsages:(repo,pkg,surface)=>findUsagesInRepo(adapter,repo,pkg,surface),compileAgainst:compileAgainstTarget,compileAgainstMany:compileAgainstTargets,async installedDependencies(repo){return installedDependenciesOf(repo)},installedPackageDir(repo,pkg){return installedPackageDir(repo,pkg)},installedPackageDirCheap(repo,pkg){let dir=hoistedPackageDir(realpathSync5(repo.dir),pkg);return dir?realpathSync5(dir):void 0},async importedPackages(repo){return importedPackagesOf(repo)},async workspacePackages(root){return workspacePackagesOf(root.dir)},async repoWarnings(repo){return loadedRepo(realpathSync5(repo.dir),repo.rootFiles).warnings},async declaredSpecifiers(repo){let{packageJson}=readInstalled(realpathSync5(repo.dir));return new Map(Object.entries({...packageJson.dependencies,...packageJson.devDependencies,...packageJson.optionalDependencies}))},forgetRepo(repo){forgetRepo(realpathSync5(repo.dir))},async installedSurface(repo,pkg,version){let dir=installedPackageDir(repo,pkg);return dir?adapter.extractSurface({name:pkg,version,dir}):void 0},async extractSurface(pkg){return(await adapter.extractSurfaceDetailed(pkg)).surface},async extractSurfaceDetailed(pkg){let entries=resolveEntryPoints(pkg.dir,pkg.name,pkg.version),project=new import_ts_morph2.Project({skipAddingFilesFromTsConfig:!0,skipFileDependencyResolution:!0,compilerOptions:{moduleResolution:import_ts_morph2.ts.ModuleResolutionKind.Bundler,module:import_ts_morph2.ts.ModuleKind.ESNext,target:import_ts_morph2.ts.ScriptTarget.ESNext,skipLibCheck:!0,noEmit:!0,types:[]}}),files=entries.map(e=>({entry:e.entry,file:project.addSourceFileAtPath(e.file)}));for(let typesDir of pkg.types??[]){let index=join13(typesDir,"index.d.ts");existsSync11(index)&&project.addSourceFileAtPath(index)}project.resolveSourceFileDependencies();let checker=project.getTypeChecker(),byDeclaration=new Map,sinks=new Map,sinkFor=entry=>{let s=sinks.get(entry);if(!s){let symbols=[],roots=new Map;s={symbols,roots,sink:{entry,packageDir:pkg.dir,checker,byDeclaration,rootDecls:roots,emit(root,symbol){symbols.push({symbol,root})}}},sinks.set(entry,s)}return s};for(let e of entries)sinkFor(e.entry);let ownModules=new Map,foreign=new Map;for(let{entry,file}of files){walkModule(sinkFor(entry).sink,file);for(let reached of reachableFiles(file))for(let mod of reached.getModules()){let name=ambientModuleName(mod);if(name===void 0)continue;if(ownEntryOf(name,pkg.name)!==void 0)ownModules.has(name)||ownModules.set(name,mod);else{let f=foreign.get(name)??{mod,entries:new Set};f.entries.add(entry),foreign.set(name,f)}}}for(let[name,mod]of ownModules)walkModule(sinkFor(ownEntryOf(name,pkg.name)).sink,mod);for(let[name,{mod,entries:reachedFrom}]of foreign)for(let entry of reachedFrom)walkModule(sinkFor(entry).sink,mod,name);assignAliases(byDeclaration);let perEntry=[...sinks.entries()].sort(([a],[b])=>a==="."?-1:b==="."?1:a<b?-1:1).map(([entry,s])=>({entry,symbols:s.symbols,roots:s.roots})),surface={package:pkg.name,version:pkg.version,extractedAt:now().toISOString(),adapter:"typescript",symbols:merge(perEntry)},locations=new Map;for(let[node,cls]of byDeclaration){let canonical=cls.symbols.find(s=>s.aliasOf===void 0)??cls.symbols[0];canonical&&locations.set(locationKey(node.getSourceFile().fileName,node.getStart()),canonical.path)}return{surface,locations}}};return adapter}var typescriptAdapter=createTypescriptAdapter();function defaultCacheDir(env=process.env){if(env.UPTIDE_CACHE_DIR)return env.UPTIDE_CACHE_DIR;let base=env.XDG_CACHE_HOME||join14(homedir(),".cache");return join14(base,"uptide")}function packagePathSegments(name){return name.split("/")}function surfaceCachePath(root,key2){return join15(root,"surfaces",key2.adapter,`v${key2.schema}`,...packagePathSegments(key2.package),`${key2.version}.json`)}function createFsSurfaceCache(opts={}){let root=opts.dir??defaultCacheDir();return{async get(key2){try{return JSON.parse(await readFile(surfaceCachePath(root,key2),"utf8"))}catch{return}},async set(key2,surface){let path=surfaceCachePath(root,key2);await mkdir(dirname10(path),{recursive:!0});let tmp=`${path}.${process.pid}.${randomUUID()}.tmp`;await writeFile(tmp,JSON.stringify(surface)),await rename(tmp,path)}}}function requireFindUsages(adapter){let find=adapter.findUsages;if(!find)throw new AdapterCapabilityError(adapter.id,"findUsages");return find.bind(adapter)}var WIDENED_NOTE="type widened; breaking if the member is read by the consumer";function hasOtherMembers(callPath,symbols){let container=callPath.slice(0,-3);for(let path of symbols.keys()){if(path===callPath||!path.startsWith(container)||path.length<=container.length)continue;let sep4=path[container.length];if((sep4==="#"||sep4==="."||sep4==="[")&&path!==`${container}.new()`)return!0}return!1}function roleOf(symbol,comparison,symbols){switch(symbol.kind){case"function":return"callable";case"method":return leafOf(symbol.path)==="()"&&!hasOtherMembers(symbol.path,symbols)?"callback":"callable";case"property":return comparison.callable?symbol.optional||/^on[A-Z]/.test(leafOf(symbol.path))?"callback":"callable":symbol.signature.startsWith("readonly ")?"output":"unknown";case"variable":case"enumMember":case"class":return"output";case"interface":case"type":return"unknown";default:return}}function collect(){let breakingNotes=[],additiveNotes=[],verdict={severity:"additive",confidence:1,notes:[]};return{verdict,breaking(note){breakingNotes.push(note),verdict.severity="breaking",verdict.notes=[...breakingNotes,...additiveNotes]},additive(note,confidence){additiveNotes.push(note),confidence!==void 0&&(verdict.confidence=Math.min(verdict.confidence,confidence)),verdict.notes=[...breakingNotes,...additiveNotes]}}}function thisNote(sig){let t=sig.thisParameter;if(t){if(t.relation==="added")return`this parameter added (${t.after})`;if(t.relation==="removed")return"this parameter removed";if(t.relation!=="equivalent")return`this parameter type changed (${t.before} -> ${t.after})`}}function callerVerdict(sigs){let c=collect();for(let sig of sigs){let t=thisNote(sig);t&&c.additive(t);for(let p of sig.parameters){if(p.relation==="removed"){c.breaking(`parameter '${p.name}' removed`);continue}if(p.relation==="added"){p.optionalAfter?c.additive(`optional parameter '${p.name}' added`):c.breaking(`required parameter '${p.name}' added`);continue}p.optionalBefore&&!p.optionalAfter?c.breaking(`parameter '${p.name}' became required`):!p.optionalBefore&&p.optionalAfter&&c.additive(`parameter '${p.name}' became optional`),p.relation==="narrowed"?c.breaking(`parameter '${p.name}' type narrowed`):p.relation==="incompatible"?c.breaking(`parameter '${p.name}' type changed`):p.relation==="widened"&&c.additive(`parameter '${p.name}' type widened`,.8)}sig.returnType==="widened"?c.breaking("return type widened; callers must handle new cases"):sig.returnType==="incompatible"?c.breaking("return type changed"):sig.returnType==="narrowed"&&c.additive("return type narrowed (safe for callers)")}return finish(c.verdict)}function implementerVerdict(sigs){let c=collect();for(let sig of sigs){let t=thisNote(sig);t&&c.additive(t);for(let p of sig.parameters){if(p.relation==="removed"){c.breaking(`callback parameter '${p.name}' removed`);continue}if(p.relation==="added"){c.additive(`callback parameter '${p.name}' added (implementations may ignore it)`);continue}p.optionalBefore&&!p.optionalAfter&&c.additive(`callback parameter '${p.name}' now always provided`),p.relation==="widened"?c.breaking(`callback parameter '${p.name}' widened; implementations must accept more`):p.relation==="incompatible"?c.breaking(`callback parameter '${p.name}' type changed`):p.relation==="narrowed"&&c.additive(`callback parameter '${p.name}' narrowed`,.6)}sig.returnType==="narrowed"?c.breaking("callback return type narrowed; implementations must return less"):sig.returnType==="incompatible"?c.breaking("callback return type changed"):sig.returnType==="widened"&&c.additive("callback return type widened")}return finish(c.verdict)}function finish(verdict){let notes=verdict.notes.filter(n=>!/type widened$/.test(n)||verdict.severity==="breaking");return{...verdict,notes}}function typeParamNames(list){return splitTopLevel(list,",").map(p=>/^(const\s+)?([A-Za-z_$][\w$]*)/.exec(p.trim())?.[2]).filter(n=>n!==void 0)}function normalizeTypeParams(text){let generic=!1,rename3=(segment2,names)=>{if(names.length===0)return segment2;generic=!0;let out=segment2;return names.forEach((name,i)=>{out=out.replace(new RegExp(`\\b${name.replace(/\$/g,"\\$")}\\b`,"g"),`T${i}`)}),out},alias=/^type<((?:[^<>]|<[^<>]*>)*)> = /.exec(text);if(alias)return{normalized:rename3(text,typeParamNames(alias[1])),generic};let overloads=parseCallable(asCallable(text)??text);return overloads?{normalized:splitTopLevel(asCallable(text)??text,";").map((seg,i)=>rename3(seg,(overloads[i]?.typeParams??[]).map(tp=>typeParamNames(tp)[0]??""))).join("; "),generic}:{normalized:text,generic:!1}}var GENERIC_DIFFER={severity:"breaking",confidence:.7,notes:["generic signatures differ"]},TYPE_ARGS_NOTE="explicit type arguments will no longer compile",TYPE_PARAMS_LOST={severity:"breaking",confidence:.6,notes:[TYPE_ARGS_NOTE]};function lostTypeParameters(comparison){let counts=comparison.typeParameterCounts;if(!counts)return!1;let max=Math.max(counts.before.length,counts.after.length);for(let i=0;i<max;i++)if((counts.before[i]??0)>(counts.after[i]??0))return!0;return!1}function kindFor(relation){return relation==="widened"?"widened":relation==="narrowed"?"narrowed":"type"}function isEquivalent(comparison){return comparison.relation!=="equivalent"?!1:(comparison.signatures??[]).every(s=>s.returnType==="equivalent"&&s.parameters.every(p=>p.relation==="equivalent"))}function callbackKind(comparison){if(comparison.relation!=="equivalent")return kindFor(comparison.relation);let relations=(comparison.signatures??[]).flatMap(s=>[s.returnType,...s.parameters.map(p=>p.relation)]);return relations.includes("narrowed")?"narrowed":relations.includes("widened")?"widened":"type"}function apply(change,verdict){change.evidence="checker",change.severity=verdict.severity,change.confidence=Math.min(change.confidence,verdict.confidence),verdict.notes.length>0?change.notes=verdict.notes.join("; "):delete change.notes}function refineWithTypes(changes,comparisons,surfaceB){let symbols=new Map(surfaceB.symbols.map(s=>[s.path,s])),literalParents=[...comparisons.keys()].filter(p=>symbols.get(p)?.signature.includes("{\u2026}")||changes.some(c=>c.path===p&&c.before?.includes("{\u2026}"))),underLiteral=path=>literalParents.some(p=>path.length>p.length&&path.startsWith(p)&&/[#[]/.test(path[p.length])),out=[];for(let change of changes){if((change.kind==="removed"||change.kind==="added")&&underLiteral(change.path))continue;if(change.kind!=="signature"&&change.kind!=="type"){out.push(change);continue}if(change.notes==="member became optional"||change.notes==="no longer callable"||change.notes==="became callable"){out.push(change);continue}let comparison=comparisons.get(change.path),symbol=symbols.get(change.path),kindChanged=change.notes?.startsWith("declaration kind changed")===!0;if(!comparison||!symbol){out.push(change);continue}if(comparison.callable&&lostTypeParameters(comparison)){let refined2={...change,kind:"signature"};apply(refined2,TYPE_PARAMS_LOST),kindChanged&&(refined2.notes=`${change.notes}; ${refined2.notes}`),out.push(refined2);continue}if(isEquivalent(comparison)&&(!kindChanged||/(interface|type) to (interface|type)/.test(change.notes??"")))continue;if(kindChanged){if(/(variable|function|method|property) to (variable|function|method|property)/.test(change.notes??"")&&comparison.callable){if(isEquivalent(comparison))continue;let refined2={...change,kind:"signature"},verdict=comparison.signatures?callerVerdict(comparison.signatures):comparison.relation==="narrowed"?{severity:"additive",confidence:1,notes:["signature narrowed (compatible for callers)"]}:{severity:"breaking",confidence:1,notes:[comparison.relation==="widened"?"signature widened; callers must handle new cases":"signature incompatible"]};apply(refined2,verdict),refined2.notes=[change.notes,refined2.notes].filter(Boolean).join("; "),out.push(refined2);continue}out.push(change);continue}let role=roleOf(symbol,comparison,symbols);if(!role){out.push(change);continue}let refined={...change};if(comparison.relation==="incompatible"&&!comparison.signatures&&change.before&&change.after){let a=normalizeTypeParams(change.before),b=normalizeTypeParams(change.after);if(a.generic&&b.generic){if(a.normalized===b.normalized)continue;refined.kind="type",apply(refined,GENERIC_DIFFER),out.push(refined);continue}}switch(role){case"callable":{refined.kind="signature",comparison.signatures?apply(refined,callerVerdict(comparison.signatures)):comparison.relation==="narrowed"?apply(refined,{severity:"additive",confidence:1,notes:["signature narrowed (compatible for callers)"]}):apply(refined,{severity:"breaking",confidence:1,notes:[comparison.relation==="widened"?"signature widened; callers must handle new cases":"signature incompatible"]});break}case"callback":{refined.kind=callbackKind(comparison),comparison.signatures?apply(refined,implementerVerdict(comparison.signatures)):comparison.relation==="widened"?apply(refined,{severity:"additive",confidence:1,notes:["callback type widened (implementations still fit)"]}):apply(refined,{severity:"breaking",confidence:1,notes:["callback type incompatible with existing implementations"]});break}case"output":{refined.kind=kindFor(comparison.relation),comparison.relation==="narrowed"?apply(refined,{severity:"additive",confidence:1,notes:["type narrowed (safe for readers)"]}):comparison.relation==="widened"?apply(refined,{severity:"breaking",confidence:1,notes:["type widened; readers must handle new cases"]}):apply(refined,{severity:"breaking",confidence:1,notes:["type incompatible"]});break}case"unknown":{refined.kind=kindFor(comparison.relation),comparison.relation==="widened"?apply(refined,{severity:"additive",confidence:.6,notes:[WIDENED_NOTE]}):comparison.relation==="narrowed"?apply(refined,{severity:"breaking",confidence:.7,notes:["type narrowed"]}):apply(refined,{severity:"breaking",confidence:1,notes:["type incompatible"]});break}}out.push(refined)}return out}var BREAKING={severity:"breaking"},ADDITIVE={severity:"additive"};function relate2(before,after){if(before===after)return"same";if(after==="any"||after==="unknown")return"wider";let a=new Set(unionMembers(before)),b=new Set(unionMembers(after)),aInB=[...a].every(m=>b.has(m)),bInA=[...b].every(m=>a.has(m));return aInB&&!bInA?"wider":bInA&&!aInB?"narrower":"different"}function normalizeThis(type,path){let container=parentOf(path);return type==="this"&&container!==void 0?leafOf(container):type}function classifyCallable(before,after,path=""){let key2=o=>JSON.stringify(o),beforeKeys=before.map(key2),afterKeys=new Set(after.map(key2));if(beforeKeys.every(k=>afterKeys.has(k)))return{severity:"additive",notes:"overload added"};if(before.length!==1||after.length!==1)return{severity:"breaking",notes:"overload removed or changed"};let[a,b]=[before[0],after[0]];if(a.typeParams.length>b.typeParams.length)return{severity:"breaking",confidence:.6,notes:TYPE_ARGS_NOTE};if(a.typeParams.join(",")!==b.typeParams.join(",")){let added=b.typeParams.slice(a.typeParams.length);return a.typeParams.every((p,i)=>b.typeParams[i]===p)&&added.every(p=>p.includes("="))?{severity:"additive",notes:"type parameter with default added"}:a.typeParams.length===b.typeParams.length?{severity:"breaking",confidence:.5,notes:"type parameter constraints changed; explicit type arguments may not compile"}:{severity:"breaking",notes:"type parameters changed"}}let returnRelation=relate2(normalizeThis(a.returnType,path),normalizeThis(b.returnType,path));if(returnRelation==="different")return{severity:"breaking",confidence:.7,notes:"return type changed"};if(returnRelation==="wider")return{severity:"breaking",notes:"return type widened; callers must handle new cases"};let returnNote=returnRelation==="narrower"?"return type narrowed (safe for readers)":void 0,notes=returnNote?[returnNote]:[];a.thisType===void 0&&b.thisType!==void 0?notes.push(`this parameter added (${b.thisType})`):a.thisType!==void 0&&b.thisType===void 0&¬es.push("this parameter removed");let confidence,max=Math.max(a.params.length,b.params.length);for(let i=0;i<max;i++){let pa=a.params[i],pb=b.params[i];if(pa&&!pb)return{severity:"breaking",notes:`parameter '${pa.name}' removed`};if(!pa&&pb){if(pb.optional||pb.rest){notes.push(`optional parameter '${pb.name}' added`);continue}return{severity:"breaking",notes:`required parameter '${pb.name}' added`}}if(!pa||!pb)continue;if(pa.rest!==pb.rest)return{severity:"breaking",notes:`parameter '${pa.name}' rest-ness changed`};if(!pa.optional&&pb.optional&¬es.push(`parameter '${pa.name}' became optional`),pa.optional&&!pb.optional)return{severity:"breaking",notes:`parameter '${pa.name}' became required`};let rel=relate2(pa.type,pb.type);if(rel==="wider")confidence=.8;else{if(rel==="narrower")return{severity:"breaking",notes:`parameter '${pa.name}' type narrowed`};if(rel==="different")return pa.type.startsWith("{")&&/^[A-Za-z_$][\w$.]*(<.*>)?$/.test(pb.type)?{severity:"breaking",confidence:.5,notes:`parameter '${pa.name}' inline type replaced by named type ${pb.type}; may be equivalent`}:{severity:"breaking",confidence:.7,notes:`parameter '${pa.name}' type changed`}}}let verdict={severity:"additive",notes:notes.join("; ")||void 0};return confidence!==void 0&&(verdict.confidence=confidence),verdict}var WIDENED={confidence:.6,notes:WIDENED_NOTE};function classifyType(before,after){let rel=relate2(before,after);return rel==="wider"?{severity:"additive",kind:"widened",...WIDENED}:rel==="narrower"?{severity:"breaking",kind:"narrowed",confidence:.7,notes:"type narrowed"}:{severity:"breaking",confidence:.7,notes:"type changed"}}var VALUE_KINDS=new Set(["variable","function","method","property"]);function callableText(kindAndSignature){return asCallable(kindAndSignature.slice(kindAndSignature.indexOf(":")+2))}function classifyKindChange(before,after,note,path){let[fromKind,toKind]=[before.split(":")[0],after.split(":")[0]],pair=`${fromKind}->${toKind}`;if(VALUE_KINDS.has(fromKind)&&VALUE_KINDS.has(toKind)){let a=callableText(before),b=callableText(after),pa=a?parseCallable(a):void 0,pb=b?parseCallable(b):void 0;if(pa&&pb){let verdict=classifyCallable(pa,pb,path);return{...verdict,notes:[note,verdict.notes].filter(Boolean).join("; ")}}}return pair==="interface->type"||pair==="type->interface"?{severity:"additive",confidence:.7,notes:`${note}; usable the same way, but declaration merging and extends may differ`}:pair==="method->property"||pair==="property->method"||pair==="function->variable"||pair==="variable->function"||pair==="variable->namespace"||pair==="namespace->variable"?{severity:"additive",confidence:.7,notes:`${note}; call sites keep working if the property is callable`}:fromKind==="class"&&toKind==="variable"?{severity:"breaking",confidence:.6,notes:`${note}; a value+type pair may still construct, but extends/instanceof may break`}:{severity:"breaking",notes:note}}function classifyHeader(before,after){let parse6=h=>{let m=/^(abstract )?(class|interface)(<.*>)?(?: extends (.+?))?(?: implements (.+))?$/.exec(h);if(m)return{abstract:m[1]!==void 0,kind:m[2],typeParams:m[3]??"",extends:m[4]?splitTopLevel(m[4],","):[],implements:m[5]?splitTopLevel(m[5],","):[]}},a=parse6(before),b=parse6(after);if(!a||!b||a.kind!==b.kind||a.typeParams!==b.typeParams)return BREAKING;if(a.abstract&&!b.abstract)return{severity:"additive",notes:"no longer abstract"};if(!a.abstract&&b.abstract)return{severity:"breaking",notes:"became abstract"};let grew=(x,y)=>x.every(m=>y.includes(m))&&y.length>x.length,same=(x,y)=>x.length===y.length&&x.every(m=>y.includes(m));return(grew(a.extends,b.extends)||same(a.extends,b.extends))&&(grew(a.implements,b.implements)||same(a.implements,b.implements))?{severity:"additive",confidence:.8,notes:"base list grew; inherited members are new API"}:{severity:"breaking",notes:"base list changed"}}function verdictFor(change){switch(change.kind){case"added":return ADDITIVE;case"deprecated":return{severity:"deprecated"};case"removed":case"renamed":case"moved":case"required":return BREAKING;case"widened":return{severity:"additive",confidence:.6,notes:WIDENED_NOTE};case"narrowed":return{severity:"breaking",confidence:.7,notes:"type narrowed"};case"cause":case"module-format":return BREAKING;case"signature":case"type":{let{before,after}=change;if(before===void 0||after===void 0)return BREAKING;if(change.notes==="member became optional")return ADDITIVE;if(change.notes==="no longer callable"||change.notes==="became callable")return BREAKING;if(change.notes?.startsWith("declaration kind changed"))return classifyKindChange(before,after,change.notes,change.path);let callableLike=/^(protected |abstract |static )*(<|\()/;if(callableLike.test(before)&&callableLike.test(after)){let a=parseCallable(before),b=parseCallable(after);return a&&b?classifyCallable(a,b,change.path):{severity:"breaking",notes:"signature changed (not parsed)"}}return/^(abstract )?(class|interface)/.test(before)&&/^(abstract )?(class|interface)/.test(after)?classifyHeader(before,after):change.kind==="type"?classifyType(before,after):BREAKING}}}function classify(changes){return changes.map(change=>{if(change.severity!==void 0)return{...change,severity:change.severity};let verdict=verdictFor(change),out={...change,severity:verdict.severity};return verdict.kind&&(out.kind=verdict.kind),(out.kind==="signature"||out.kind==="type"||out.kind==="widened"||out.kind==="narrowed")&&out.evidence===void 0&&(out.evidence="text"),verdict.confidence!==void 0&&(out.confidence=Math.min(out.confidence,verdict.confidence)),verdict.notes&&(out.notes=out.notes&&!verdict.notes.startsWith(out.notes)?`${out.notes}; ${verdict.notes}`:verdict.notes),out})}function similarity(a,b){if(a===b)return 1;if(a.length<2||b.length<2)return 0;let bigrams=s=>{let m=new Map;for(let i=0;i<s.length-1;i++){let g=s.slice(i,i+2);m.set(g,(m.get(g)??0)+1)}return m},ga=bigrams(a),gb=bigrams(b),shared=0;for(let[g,n]of ga)shared+=Math.min(n,gb.get(g)??0);return 2*shared/(a.length-1+(b.length-1))}var CONTAINER_KINDS=new Set(["class","interface","namespace","enum","module","type"]);function withVisibility(change,symbol){return symbol.visibility&&(change.visibility=symbol.visibility),symbol.aliasOf&&(change.aliasOf=symbol.aliasOf),change}function effectiveKind(symbol){return symbol.kind==="variable"&&asCallable(symbol.signature)!==void 0?"function":symbol.kind==="property"&&asCallable(symbol.signature)!==void 0?"method":symbol.kind}function changeKindFor(symbol){return symbol.kind==="function"||symbol.kind==="method"||symbol.kind==="class"||symbol.kind==="interface"||symbol.kind==="namespace"||symbol.kind==="module"?"signature":"type"}function sortByPath(changes){return changes.sort((x,y)=>x.path<y.path?-1:x.path>y.path?1:0)}function unqualify(name){let qualifier=new RegExp(`\\b${name.replace(/[$]/g,"\\$&")}\\.(?=[A-Za-z_$])`,"g");return signature=>signature.replace(qualifier,"")}function esmEquivalence(from,other){let identity={active:!1,lookup:path=>other.get(path),reverse:()=>{},normalize:s=>s},root=from.symbols.find(s=>s.exportEquals);if(!root)return identity;let otherRoot=other.get(root.path)??other.get("default");if(!otherRoot||otherRoot.exportEquals)return identity;let name=root.path,rootPath=otherRoot.path;return{active:!0,lookup(path){let direct=other.get(path);if(direct)return direct;if(path===name)return otherRoot;if(path.startsWith(`${name}#`))return other.get(`${rootPath}${path.slice(name.length)}`);if(path.startsWith(`${name}.`)){let rest=path.slice(name.length+1);return rest==="new()"?other.get(`${rootPath}.new()`):other.get(rest)}},reverse(path,own){return path===rootPath?own.get(name):path.startsWith(`${rootPath}#`)?own.get(`${name}${path.slice(rootPath.length)}`):path===`${rootPath}.new()`?own.get(`${name}.new()`):own.get(`${name}.${path}`)},normalize:unqualify(name)}}var CUT=/^recursive type (.+) \(compared by name\)$/,isCut=s=>!!s&&CUT.test(s.signature);function throughCuts(symbols){let cuts=new Map;for(let s of symbols.values()){let target=CUT.exec(s.signature)?.[1];target!==void 0&&cuts.set(s.path,target)}return path=>{let current=path;for(let hop=0;cuts.size>0&&hop<16;hop++){let parts=splitPath(current),rewritten;for(let n=parts.segments.length;n>=1&&rewritten===void 0;n--){let target=cuts.get(joinPath({...parts,segments:parts.segments.slice(0,n)}));if(target===void 0)continue;let into=splitPath(target);rewritten=joinPath({...into,segments:[...into.segments,...parts.segments.slice(n)]})}if(rewritten===void 0)return;let found=symbols.get(rewritten);if(found&&!isCut(found))return found;current=rewritten}}}function rawDiff(a,b){let meta3={package:b.package,from:a.version,to:b.version},inA=new Map(a.symbols.map(s=>[s.path,s])),inB=new Map(b.symbols.map(s=>[s.path,s])),raw=[],removed=[],added=[],equivB=esmEquivalence(a,inB),equivA=esmEquivalence(b,inA),viaB=throughCuts(inB),viaA=throughCuts(inA);for(let cut of a.symbols){let found=equivB.lookup(cut.path),resolvedB=!found||isCut(found)&&!isCut(cut)?viaB(cut.path):void 0;resolvedB&&(found={...resolvedB,path:cut.path});let resolvedA=isCut(cut)&&found&&!isCut(found)?viaA(cut.path):void 0,original=resolvedA?{...resolvedA,path:cut.path}:cut,through=resolvedB??resolvedA;if(through&&found){let plain=unqualify(leafOf(through.path));original={...original,signature:plain(original.signature)},found={...found,signature:plain(found.signature)}}let before=equivB.active?{...original,signature:equivB.normalize(original.signature)}:original,after=found&&equivA.active?{...found,signature:equivA.normalize(found.signature)}:found;if(!after){removed.push(before);continue}if(!after.exportedFrom.some(e=>before.exportedFrom.includes(e))){let[target]=[...after.exportedFrom].sort();raw.push(withVisibility({...meta3,path:before.path,kind:"moved",severity:"breaking",source:"types",confidence:.95,replacement:target,notes:`no longer exported from ${before.exportedFrom.join(", ")}; now exported from ${after.exportedFrom.join(", ")}`},before))}compareSymbol(meta3,before,after,raw)}for(let after of b.symbols)!equivA.lookup(after.path)&&!equivB.reverse(after.path,inA)&&!viaA(after.path)&&added.push(after);let hints=renameHints(removed,added,a.symbols,b.symbols);for(let symbol of removed){let hint=hints.get(symbol.path),change={...meta3,path:symbol.path,kind:"removed",before:symbol.signature,source:"types",confidence:hint?hint.confidence:1};hint&&(change.replacement=hint.replacement,change.notes=hint.notes),symbol.deprecated!==void 0&&(change.notes=[change.notes,"was deprecated"].filter(Boolean).join("; ")),raw.push(withVisibility(change,symbol))}for(let symbol of added)raw.push(withVisibility({...meta3,path:symbol.path,kind:"added",after:symbol.signature,source:"types",confidence:1},symbol));return raw}function compareSymbol(meta3,before,after,out){let base={...meta3,path:before.path,source:"types",confidence:1},push=change=>out.push(withVisibility(change,after)),kindA=effectiveKind(before),kindB=effectiveKind(after);if(kindA!==kindB&&before.kind===after.kind){let change={...base,kind:changeKindFor(before),before:before.signature,after:after.signature};before.kind!=="property"&&(change.notes=kindA==="method"||kindA==="function"?"no longer callable":"became callable"),push(change)}else if(kindA!==kindB)push({...base,kind:"signature",before:`${before.kind}: ${before.signature}`,after:`${after.kind}: ${after.signature}`,notes:`declaration kind changed from ${before.kind} to ${after.kind}`});else if(kindA==="function"||kindA==="method"){let textA=asCallable(before.signature)??before.signature,textB=asCallable(after.signature)??after.signature;textA!==textB&&callableShape(before.signature)!==callableShape(after.signature)&&push({...base,kind:"signature",before:textA,after:textB})}else before.signature!==after.signature&&push({...base,kind:changeKindFor(before),before:before.signature,after:after.signature});let wasOptional=before.optional===!0,isOptional=after.optional===!0;if(wasOptional&&!isOptional?push({...base,kind:"required",before:`${before.signature} (optional)`,after:after.signature}):!wasOptional&&isOptional&&push({...base,kind:"type",before:before.signature,after:`${after.signature} (optional)`,notes:"member became optional"}),before.deprecated===void 0&&after.deprecated!==void 0){let change={...base,kind:"deprecated",source:"jsdoc"};typeof after.deprecated=="string"&&(change.notes=after.deprecated),push(change)}}function memberFingerprints(container,symbols){let out=new Set;for(let s of symbols)s.path.length>container.length&&s.path.startsWith(container)&&/[.#[]/.test(s.path[container.length])&&out.add(`${s.path.slice(container.length)}=${s.signature}`);return out}function jaccard(a,b){if(a.size===0&&b.size===0)return 1;let shared=0;for(let x of a)b.has(x)&&shared++;return shared/(a.size+b.size-shared)}function renameHints(removed,added,allA,allB){let hints=new Map,addedByPath=new Map(added.map(s=>[s.path,s])),addedByParent=new Map;for(let s of added){let parent=parentOf(s.path)??"",list=addedByParent.get(parent)??[];list.push(s),addedByParent.set(parent,list)}let claimed=new Set,shallowFirst=[...removed].sort((x,y)=>depth(x.path)-depth(y.path));for(let symbol of shallowFirst){let parent=parentOf(symbol.path),parentHint=parent===void 0?void 0:hints.get(parent);if(parentHint){let counterpart2=parentHint.replacement+symbol.path.slice(parent.length),twin=addedByPath.get(counterpart2);if(twin&&twin.signature===symbol.signature&&twin.kind===symbol.kind){hints.set(symbol.path,{...parentHint,replacement:counterpart2}),claimed.add(counterpart2);continue}}let candidates=(addedByParent.get(parent??"")??[]).filter(c=>c.kind===symbol.kind&&!claimed.has(c.path)),best=CONTAINER_KINDS.has(symbol.kind)?pickContainerRename(symbol,candidates,allA,allB):pickLeafRename(symbol,candidates);best&&(hints.set(symbol.path,best),claimed.add(best.replacement))}return hints}function depth(path){return(path.match(/[.#]|\[\]/g)??[]).length}function unique(scored){let sorted=[...scored].sort((x,y)=>y.score-x.score),top=sorted[0];if(!top)return;let runnerUp=sorted[1];return runnerUp&&runnerUp.score===top.score?void 0:top}var TRIVIAL_SIGNATURE=/^(readonly |protected )*[A-Za-z_$][\w$]*$/;function pickLeafRename(symbol,candidates){let trivial=TRIVIAL_SIGNATURE.test(symbol.signature),scored=candidates.map(c=>{let same=c.signature===symbol.signature,sig=same?1:similarity(c.signature,symbol.signature),name=similarity(leafOf(c.path),leafOf(symbol.path));return{c,same,name,score:sig+name/10}}).filter(({same,score,name})=>(same||score>=.85)&&(!trivial||name>=.5)),top=unique(scored);if(top)return{replacement:top.c.path,confidence:top.same?.8:.6,notes:top.same?"possibly renamed (identical signature)":"possibly renamed (similar signature)"}}function pickContainerRename(symbol,candidates,allA,allB){let mine=memberFingerprints(symbol.path,allA),scored=candidates.map(c=>{let name=similarity(leafOf(c.path),leafOf(symbol.path)),members=jaccard(mine,memberFingerprints(c.path,allB));return{c,name,members,score:name+members}}).filter(({name,members})=>mine.size===0?name>=.8:name>=.5&&members>=.5),top=unique(scored);if(!top)return;let strong=top.members>=.8&&top.name>=.6;return{replacement:top.c.path,confidence:strong?.8:.6,notes:strong?"possibly renamed (same members, similar name)":"possibly renamed (similar name and members)"}}var SURFACE_SCHEMA_VERSION=10,DEFAULT_REGISTRY="https://registry.npmjs.org",stripSlash=url=>url.replace(/\/+$/,"");function expandEnv(value,env){return value.replace(/(\\*)\$\{([^${}?]+)(\?)?\}/g,(match2,escapes,name,optional)=>escapes.length%2?match2.slice((escapes.length+1)/2):escapes.slice(escapes.length/2)+(env[name]??(optional?"":`\${${name}}`)))}function registryConfig(values){let out={scoped:{},tokens:{}};for(let[key2,value]of Object.entries(values))if(typeof value=="string"){if(key2==="registry")out.registry=stripSlash(value);else if(key2.startsWith("@")&&key2.endsWith(":registry"))out.scoped[key2.slice(0,-9)]=stripSlash(value);else if(key2.startsWith("//")){let match2=key2.match(/^(\/\/.*):(_authToken|_auth|username|_password)$/);if(!match2)continue;let[,scope,field]=match2,prefix=`${stripSlash(scope.slice(2))}/`;field==="_authToken"&&(out.tokens[prefix]=value),field==="_auth"&&(out.basicAuth??={},out.basicAuth[prefix]=value),field==="username"&&typeof values[`${scope}:_password`]=="string"&&(out.basicAuth??={},out.basicAuth[prefix]=Buffer.from(`${value}:${Buffer.from(values[`${scope}:_password`],"base64").toString("utf8")}`).toString("base64"))}}return out}var fields=(text,env)=>Object.fromEntries(Object.entries((0,import_ini.parse)(text)).map(([key2,value])=>[key2,typeof value=="string"?expandEnv(value,env):value]));function readIfExists(path){try{return readFileSync11(path,"utf8")}catch{return""}}function projectRoot(cwd){let nearest;for(let dir=resolve6(cwd);;dir=dirname11(dir)){if(existsSync12(join16(dir,"package.json"))){nearest??=dir;try{if(JSON.parse(readIfExists(join16(dir,"package.json"))).workspaces&&workspacePackagesOrRoot(dir).includes(relative8(dir,nearest).replaceAll("\\","/")||"."))return dir}catch{}}if(existsSync12(join16(dir,"pnpm-workspace.yaml"))&&(!nearest||workspacePackagesOrRoot(dir).includes(relative8(dir,nearest).replaceAll("\\","/")||".")))return dir;if(dirname11(dir)===dir)return nearest??cwd}}function loadRegistryConfig(opts={}){let env=opts.env??process.env,environment={};for(let[key2,value]of Object.entries(env)){if(!/^npm_config_/i.test(key2)||value===void 0)continue;let raw=key2.slice(11);environment[raw.startsWith("//")?raw:raw.toLowerCase().replaceAll("_","-")]=expandEnv(value,env)}let cwd=opts.cwd??process.cwd(),home=env.HOME??homedir2(),pathOf=value=>resolve6(cwd,value.replace(/^~(?=\/|$)/,home)),project=fields(readIfExists(join16(projectRoot(cwd),".npmrc")),env),userFile=String(environment.userconfig??project.userconfig??join16(home,".npmrc")),user=fields(readIfExists(pathOf(userFile)),env),prefix=String(environment.prefix??project.prefix??user.prefix??env.PREFIX??dirname11(dirname11(process.execPath))),globalFile=String(environment.globalconfig??project.globalconfig??user.globalconfig??join16(prefix,"etc/npmrc"));return{registry:DEFAULT_REGISTRY,scoped:{},tokens:{},...registryConfig({...fields(readIfExists(pathOf(globalFile)),env),...user,...project,...environment})}}function registryFor(name,config){let scope=name.startsWith("@")?name.slice(0,name.indexOf("/")):void 0;return scope&&config.scoped[scope]||config.registry}function scopedCredential(url,credentials){let target=new URL(url),candidates=Object.keys(credentials).filter(prefix=>{try{let scope=new URL(`https://${prefix}`);return scope.host===target.host&&target.pathname.startsWith(scope.pathname.endsWith("/")?scope.pathname:`${scope.pathname}/`)}catch{return!1}}).sort((a,b)=>b.length-a.length);return candidates[0]===void 0?void 0:credentials[candidates[0]]}function authHeaders(url,config){let credentials={...Object.fromEntries(Object.entries(config.basicAuth??{}).filter(([,value])=>value).map(([key2,value])=>[key2,`Basic ${value}`])),...Object.fromEntries(Object.entries(config.tokens).filter(([,value])=>value).map(([key2,value])=>[key2,`Bearer ${value}`]))},authorization=scopedCredential(url,credentials);return authorization?{authorization}:{}}function parseVersion(v){let m=/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?/.exec(v.trim());if(m)return{major:Number(m[1]),minor:Number(m[2]),patch:Number(m[3]),pre:m[4]}}function compareVersions(a,b){let pa=parseVersion(a),pb=parseVersion(b);if(!pa||!pb)return a.localeCompare(b);for(let key2 of["major","minor","patch"])if(pa[key2]!==pb[key2])return pa[key2]-pb[key2];return pa.pre===pb.pre?0:pa.pre===void 0?1:pb.pre===void 0?-1:pa.pre.localeCompare(pb.pre)}function majorsBehind(installed,target){let a=parseVersion(installed),b=parseVersion(target);return!a||!b?0:Math.max(0,b.major-a.major)}function packumentUrl(name,registry){return`${registry}/${name.replace("/","%2F")}`}function manifestUrl(name,version,registry){return`${packumentUrl(name,registry)}/${encodeURIComponent(version)}`}var TRANSIENT=new Set([429,500,502,503,504]),BACKOFF_MS=[500,1500,4e3],MAX_WAIT_MS=8e3;function retryAfterMs(res){let seconds=Number(res.headers.get("retry-after"));return Number.isFinite(seconds)&&seconds>0?seconds*1e3:void 0}function withRetry(fetchFn,options={}){let retries=options.retries??BACKOFF_MS.length,sleep=options.sleep??(ms=>new Promise(r=>setTimeout(r,ms)));return async(input,init)=>{for(let attempt=0;;attempt++){let last=attempt>=retries,backoff=BACKOFF_MS[Math.min(attempt,BACKOFF_MS.length-1)];try{let res=await fetchFn(input,init);if(!TRANSIENT.has(res.status)||last)return res;await sleep(Math.min(retryAfterMs(res)??backoff,MAX_WAIT_MS))}catch(err){if(last)throw err;await sleep(backoff)}}}}function httpFailure(res){let wait=retryAfterMs(res),what=res.status===429?", rate limited":"";return`HTTP ${res.status}${what}${wait?`; the registry asks to wait ${Math.ceil(wait/1e3)}s`:""}`}async function request(fetchFn,url,init){try{return await fetchFn(url,init)}catch(cause){throw new UptideError("REGISTRY_UNREACHABLE",`cannot reach registry: ${url}`,{cause})}}async function getJson(url,config,fetchFn){let res=await request(fetchFn,url,{headers:{accept:"application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8",...authHeaders(url,config)}});if(res.status!==404){if(res.status===401||res.status===403)throw new RegistryAuthError(url.split("/").slice(3).join("/"),url.split("/").slice(0,3).join("/"),res.status);if(!res.ok)throw new UptideError("REGISTRY_HTTP_ERROR",`${url}: ${httpFailure(res)}`);return await res.json()}}function toResolved(name,manifest2){if(!manifest2?.version||!manifest2.dist?.tarball)return;let resolved2={name,version:manifest2.version,tarball:manifest2.dist.tarball,...manifest2.dependencies?{dependencies:manifest2.dependencies}:{},peerDependencies:manifest2.peerDependencies??{}};return manifest2.bin&&(resolved2.bin=manifest2.bin),manifest2.dist.integrity&&(resolved2.integrity=manifest2.dist.integrity),manifest2.dist.shasum&&(resolved2.shasum=manifest2.dist.shasum),resolved2}function resolveFromPackument(name,requested,packument){let versions=packument.versions??{},version=packument["dist-tags"]?.[requested]??requested,resolved2=toResolved(name,{...versions[version],version});if(!resolved2)throw new VersionNotFoundError(name,requested,Object.keys(versions));return resolved2}async function resolveVersion(name,requested,config,fetchFn){let registry=registryFor(name,config),manifest2=await getJson(manifestUrl(name,requested,registry),config,fetchFn),fast=toResolved(name,manifest2);if(fast)return fast;let packument=await getJson(packumentUrl(name,registry),config,fetchFn);if(!packument)throw new PackageNotFoundError(name,registry);return resolveFromPackument(name,requested,packument)}async function downloadTarball(resolved2,config,fetchFn){let res=await request(fetchFn,resolved2.tarball,{headers:authHeaders(resolved2.tarball,config)});if(!res.ok)throw new UptideError("REGISTRY_HTTP_ERROR",`${resolved2.tarball}: ${httpFailure(res)}`);return Buffer.from(await res.arrayBuffer())}async function listVersions(name,config,fetchFn){let registry=registryFor(name,config),packument=await getJson(packumentUrl(name,registry),config,fetchFn);if(!packument)throw new PackageNotFoundError(name,registry);return Object.keys(packument.versions??{}).filter(v=>parseVersion(v)!==void 0).sort(compareVersions)}async function listManifests(name,config,fetchFn){let registry=registryFor(name,config),packument=await getJson(packumentUrl(name,registry),config,fetchFn);if(!packument)throw new PackageNotFoundError(name,registry);let out={};for(let[version,manifest2]of Object.entries(packument.versions??{}))parseVersion(version)!==void 0&&(out[version]={...manifest2.dependencies?{dependencies:manifest2.dependencies}:{},...manifest2.peerDependencies?{peerDependencies:manifest2.peerDependencies}:{}});return out}var BLOCK=512;function readString(buf,start,length){let end=buf.indexOf(0,start),stop=end===-1||end>start+length?start+length:end;return buf.toString("utf8",start,stop)}function readNumber(buf,start,length){if((buf[start]??0)&128){let value=0;for(let i=start+1;i<start+length;i++)value=value*256+(buf[i]??0);return value}let text=readString(buf,start,length).trim();return text===""?0:Number.parseInt(text,8)}function parsePax(buf){let out={},offset=0;for(;offset<buf.length;){let space=buf.indexOf(32,offset);if(space===-1)break;let length=Number.parseInt(buf.toString("utf8",offset,space),10);if(!Number.isFinite(length)||length<=0)break;let record=buf.toString("utf8",space+1,offset+length-1),eq=record.indexOf("=");eq!==-1&&(out[record.slice(0,eq)]=record.slice(eq+1)),offset+=length}return out}function*readTar(tar){let offset=0,pendingPath;for(;offset+BLOCK<=tar.length;){let header=tar.subarray(offset,offset+BLOCK);if(header.every(b=>b===0))break;let type=header[156]===0?"0":String.fromCharCode(header[156]),size=readNumber(header,124,12),prefix=readString(header,345,155),name=readString(header,0,100),dataStart=offset+BLOCK,data=tar.subarray(dataStart,dataStart+size);if(offset=dataStart+Math.ceil(size/BLOCK)*BLOCK,type==="x"){let pax=parsePax(data);pax.path!==void 0&&(pendingPath=pax.path);continue}if(type==="L"){pendingPath=readString(data,0,data.length);continue}if(type==="g"||type==="K")continue;let path=pendingPath??(prefix?`${prefix}/${name}`:name);pendingPath=void 0,yield{path,type,size,data}}}function safeRelativePath(entryPath){let parts=entryPath.split("/").filter(p=>p!==""&&p!==".");if(parts.shift(),parts.length===0||parts.some(p=>p===".."))return;let rel=normalize(parts.join("/"));if(!(rel.startsWith("..")||rel.startsWith(sep)||/^[A-Za-z]:/.test(rel)))return rel}function extractTgz(tgz,dest){let written2=[];for(let entry of readTar(gunzipSync(tgz))){let rel=safeRelativePath(entry.path);if(rel===void 0)continue;let target=join17(dest,rel);entry.type==="5"?mkdirSync2(target,{recursive:!0}):(entry.type==="0"||entry.type==="7")&&(mkdirSync2(dirname12(target),{recursive:!0}),writeFileSync2(target,entry.data),written2.push(rel))}return written2}function tarballCachePath(root,name,version){return join18(root,"tarballs",...packagePathSegments(name),`${version}.tgz`)}function extractedPath(root,name,version){return join18(root,...packagePathSegments(name),version)}var COMPLETE_MARKER=".uptide-complete",EXACT_VERSION=/^v?\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;function verify(tgz,resolved2){if(resolved2.integrity){let[algo,expected]=resolved2.integrity.split("-",2),actual=createHash(algo).update(tgz).digest("base64");if(actual!==expected)throw new IntegrityError(resolved2.name,resolved2.version,resolved2.integrity,`${algo}-${actual}`);return}if(resolved2.shasum){let actual=createHash("sha1").update(tgz).digest("hex");if(actual!==resolved2.shasum)throw new IntegrityError(resolved2.name,resolved2.version,resolved2.shasum,actual)}}function createNpmFetcher(opts={}){let cacheDir=opts.cacheDir??defaultCacheDir(),extractRoot=opts.extractRoot??join18(cacheDir,"extracted"),fetchFn=withRetry(opts.fetch??fetch,opts.sleep?{sleep:opts.sleep}:{}),config=opts.config??loadRegistryConfig(),ttl=opts.metadataTtlMs??3600*1e3;async function remembered(key2,forever,ask){let path=join18(cacheDir,"registry",...key2.slice(0,-1),`${key2.at(-1)}.json`),expired;try{let entry=JSON.parse(await readFile2(path,"utf8"));if(forever||Date.now()-entry.at<ttl)return entry.value;expired=entry}catch{}let value;try{value=await ask()}catch(err){let code=errorCode(err);if(expired&&(code==="REGISTRY_UNREACHABLE"||code==="REGISTRY_HTTP_ERROR"))return expired.value;throw err}await mkdir2(dirname13(path),{recursive:!0});let tmp=`${path}.${process.pid}.tmp`;return await writeFile2(tmp,JSON.stringify({at:Date.now(),value})),await rename2(tmp,path),value}function resolved2(name,requested){return remembered([...packagePathSegments(name),`resolve-${requested}`],EXACT_VERSION.test(requested),async()=>{let result=await resolveVersion(name,requested,config,fetchFn),registry=registryFor(name,config);return{...result,publicRegistry:registry==="https://registry.npmjs.org"&&!authHeaders(manifestUrl(name,requested,registry),config).authorization&&!authHeaders(packumentUrl(name,registry),config).authorization}})}async function tarballFor(resolved3){let path=tarballCachePath(cacheDir,resolved3.name,resolved3.version);try{let cached=await readFile2(path);return verify(cached,resolved3),cached}catch(err){err instanceof IntegrityError&&await rm(path,{force:!0})}let tgz=await downloadTarball(resolved3,config,fetchFn);verify(tgz,resolved3),await mkdir2(dirname13(path),{recursive:!0});let tmp=`${path}.${process.pid}.tmp`;return await writeFile2(tmp,tgz),await rename2(tmp,path),tgz}return{metadata:(name,version)=>remembered([...packagePathSegments(name),`metadata-${version}`],EXACT_VERSION.test(version),async()=>{let manifest2=await resolveVersion(name,version,config,fetchFn);return{...manifest2.dependencies?{dependencies:manifest2.dependencies}:{},peerDependencies:manifest2.peerDependencies??{},bin:manifest2.bin}}),async resolve(name,requested){return(await resolved2(name,requested)).version},async versions(name){return remembered([...packagePathSegments(name),"versions"],!1,()=>listVersions(name,config,fetchFn))},async manifests(name){return remembered([...packagePathSegments(name),"manifests"],!1,()=>listManifests(name,config,fetchFn))},async fetch(name,version){let target=await resolved2(name,version),tgz=await tarballFor(target),dir=extractedPath(extractRoot,name,target.version);return existsSync13(join18(dir,COMPLETE_MARKER))||(await rm(dir,{recursive:!0,force:!0}),await mkdir2(dir,{recursive:!0}),extractTgz(tgz,dir),await writeFile2(join18(dir,COMPLETE_MARKER),"")),{name,version:target.version,dir}},async release(){}}}async function releasePackage(fetcher,pkg){fetcher.release?await fetcher.release(pkg):await removePackageDir(pkg).catch(()=>{})}async function removePackageDir(pkg,extractRoot=tmpdir3()){let dir=resolve7(pkg.dir),root=resolve7(extractRoot);if(!dir.startsWith(`${root}/`)||dir===root)throw new Error(`refusing to remove ${dir}: not under ${root}`);await rm(dir,{recursive:!0,force:!0})}var defaultFetcher,defaultCache;function defaults(){return defaultFetcher??=createNpmFetcher(),defaultCache??=createFsSurfaceCache(),{fetcher:defaultFetcher,cache:defaultCache}}async function surfaceOfDir(pkg,adapter,cache){let key2={package:pkg.name,version:pkg.version,adapter:adapter.id,schema:SURFACE_SCHEMA_VERSION},cached=await cache.get(key2);if(cached)return cached;let surface=await adapter.extractSurface(pkg);return await cache.set(key2,surface),surface}async function diffPackage(opts){return(await diffPackageDetailed(opts)).changes}async function diffPackageDetailed(opts){let fetcher=opts.fetcher??defaults().fetcher,[pkgA,pkgB]=await Promise.all([fetcher.fetch(opts.name,opts.from),fetcher.fetch(opts.name,opts.to)]);try{return await diffDirs(pkgA,pkgB,opts)}finally{await Promise.all([pkgA,pkgB].map(p=>releasePackage(fetcher,p)))}}function restrict(surface,only){return only?{...surface,symbols:surface.symbols.filter(s=>only.has(s.path))}:surface}async function diffDirs(pkgA,pkgB,opts={}){let adapter=opts.adapter??typescriptAdapter,cache=opts.cache??defaults().cache,[fullA,fullB]=await Promise.all([surfaceOfDir(pkgA,adapter,cache),surfaceOfDir(pkgB,adapter,cache)]),a=restrict(fullA,opts.onlyPaths),b=fullB,raw=rawDiff(a,b);if(opts.assignability!==!1&&adapter.compareTypes){let paths=[...new Set(raw.filter(c=>c.kind==="signature"||c.kind==="type").map(c=>c.path))];if(paths.length>0){let comparisons=await adapter.compareTypes({a:pkgA,b:pkgB,surfaceA:a,surfaceB:b,paths});raw=refineWithTypes(raw,comparisons,b)}}return{surfaceA:a,surfaceB:b,changes:sortByPath(classify(raw))}}var BY={rule:n=>`${n} auto-fixable`,agent:n=>`${n} ${n===1?"needs":"need"} the agent (LLM)`,ruleTag:"auto-fixable",agentTag:"needs the agent (LLM)",ruleDone:n=>`${n} auto-fixed`,agentDone:n=>`${n} fixed by the agent (LLM)`,ruleDoneTag:"auto-fixed",agentDoneTag:"by the agent (LLM)"},GENERIC_NOTE=name=>`No migration pack covers \`${name}\`. Every edit here was written by the agent and kept only because the compiler error at that site went away and no new one appeared: review each change carefully.`;function genericPack(name){return{name,defaultTarget:"",rules:[],supports:()=>!0,transform:text=>({text,applied:!1,reason:"no migration pack: assisted review required"}),guide:f=>[`Migrate this call site of ${f.change.package} from ${f.change.from} to ${f.change.to}. There is no curated guide for this package: work only from the compiler error and the change below.`,`Change: ${f.change.path} (${f.change.kind})${f.change.notes?`: ${f.change.notes}`:""}.`,f.change.before?`Before: ${f.change.before}`:"",f.change.after?`After: ${f.change.after}`:"",f.change.replacement?`Likely replacement: ${f.change.replacement}`:"",...f.details??[],"Patch ONLY the reported site, with the smallest edit that makes it compile against the target and keeps what the code does. Never cast, never suppress a diagnostic, never delete the call, never change values, messages or control flow that the upgrade does not require. If the site cannot be migrated safely from what is shown, say so instead of guessing."].filter(Boolean).join(`
|
|
156
156
|
`),reviewNotes:()=>[GENERIC_NOTE(name)]}}var must=text=>({kind:"text",text,rank:0});function fitPieces(pieces,budget){if(budget===void 0)return pieces.map(p=>full(p)).join(`
|
|
157
157
|
`);let floor=p=>p.kind==="text"?p.rank===0?p.text:p.alt??"":p.items.length?p.more.replace("{n}",String(p.items.length)):"",chosen=pieces.map(floor),size=chosen.reduce((n,text)=>n+text.length+1,0),order=pieces.map((p,i)=>({p,i})).filter(({p})=>p.rank>0).sort((a,b)=>a.p.rank-b.p.rank||a.i-b.i);for(let{p,i}of order){let before=chosen[i].length;if(p.kind==="text"){size-before+p.text.length<=budget&&(size+=p.text.length-before,chosen[i]=p.text);continue}let shown=0,best=chosen[i];for(let n=1;n<=p.items.length;n++){let hidden=p.items.length-n,text=[p.open,...p.items.slice(0,n),...hidden?[p.more.replace("{n}",String(hidden))]:[],p.close].join(`
|
|
158
158
|
`);if(size-before+text.length>budget)break;shown=n,best=text}shown>0&&(size+=best.length-before,chosen[i]=best)}return chosen.filter((text,i)=>text!==""||pieces[i]?.rank===0).join(`
|
|
@@ -337,5 +337,5 @@ for (const fn of ['lookup', 'resolve', 'resolve4', 'resolve6']) { dns[fn] = deny
|
|
|
337
337
|
`)[0]}`),findings.push({change,usage,severity,confidence:round(change.confidence*USAGE_CERTAINTY[usage.via]),fixability:fixabilityOf(change,usage,severity),reason})};for(let usage of usages){let paths=usagePaths(usage),relevant=change=>usage.access!=="import"||change.kind==="removed"||change.kind==="moved"||change.kind==="renamed"||change.kind==="module-format";for(let change of formatChanges){if(usage.loader!=="require")continue;let key2=`${usage.file}:${usage.line}:${usage.column}:${usage.symbolPath}:.:module-format`;if(seen.has(key2))continue;seen.add(key2);let verdict=options.targetRequire?observedRequireVerdict(change,usage,options.targetRequire):requireEsmVerdict(change,usage,options.esmNamed,options.targetPaths);verdict&&findings.push({change,usage,severity:verdict.severity,confidence:round(change.confidence*USAGE_CERTAINTY[usage.via]),fixability:"assisted",reason:`${change.notes??"no longer loadable with require()"}${verdict.detail}`})}let kindsSeen=new Set;for(let path of paths)for(let change of byPath.get(path)??[])!relevant(change)||kindsSeen.has(change.kind)||change.kind==="deprecated"&&path!==usage.symbolPath||(kindsSeen.add(change.kind),add(change,usage,!1));for(let path of paths)for(let ref of options.references?.get(path)??[])for(let change of byPath.get(ref)??[])THROUGH_REFERENCE.has(change.kind)&&relevant(change)&&add(change,usage,!1,path);for(let kind of["removed","moved"]){let outermost=containerChanges.filter(c=>c.kind===kind&&paths.some(p=>isDescendant(p,c.path))).filter(c=>options.targetPaths===void 0||!survivesWithout(c.path,paths,options.targetPaths)).sort((x,y)=>x.path.length-y.path.length)[0];outermost&&add(outermost,usage,!0)}}let confirmedOrder=["removed","moved","renamed","required","signature","narrowed","type","widened","deprecated","added"],bestFor=new Map;for(let f of findings){if(f.usage.compileError===void 0||f.severity!=="breaking"||!confirmedOrder.includes(f.change.kind))continue;let current=bestFor.get(f.usage);(!current||f.confidence>current.confidence||f.confidence===current.confidence&&confirmedOrder.indexOf(f.change.kind)<confirmedOrder.indexOf(current.change.kind))&&bestFor.set(f.usage,f)}let oneEach=findings.filter(f=>{let best=bestFor.get(f.usage);return best===void 0||best===f||f.severity!=="breaking"||!confirmedOrder.includes(f.change.kind)});findings.length=0,findings.push(...oneEach);let collapsed=findings.filter(f=>{let gone=findings.some(g=>g!==f&&g.usage===f.usage&&(g.change.kind==="removed"||g.change.kind==="moved")&&g.change.path===f.usage.symbolPath),aliasContainer=f.usage.canonicalPath!==void 0&&isDescendant(f.usage.canonicalPath,f.change.path)&&!isDescendant(f.usage.symbolPath,f.change.path);return gone&&(f.reason.includes(", the type of ")||aliasContainer)?!1:f.change.kind!=="removed"&&f.change.kind!=="moved"?!0:!findings.some(g=>g!==f&&g.usage===f.usage&&g.change.kind===f.change.kind&&isDescendant(f.change.path,g.change.path))});findings.length=0,findings.push(...collapsed);let bySite=new Map;for(let f of findings){if(f.change.kind!=="removed"&&f.change.kind!=="moved"||f.severity!=="breaking")continue;let key2=`${f.usage.file}:${f.usage.line}:${f.change.kind}`,list=bySite.get(key2)??[];list.push(f),bySite.set(key2,list)}let dropped=new Set;for(let list of bySite.values()){let paths=[...new Set(list.map(f=>f.change.path))].sort();if(paths.length<2)continue;let[first,...rest]=list;if(first){first.reason=`${paths.length} symbols ${first.change.kind} at this site: ${paths.join(", ")}`;for(let f of rest)dropped.add(f)}}if(dropped.size>0){let kept=findings.filter(f=>!dropped.has(f));findings.length=0,findings.push(...kept)}let perFile=new Map,folded2=new Set;for(let f of findings){if(f.change.kind!=="module-format")continue;let key2=`${f.change.package}|${f.usage.file}|${f.severity}|${f.reason}`,head=perFile.get(key2);if(!head){perFile.set(key2,f),f.sites=[{line:f.usage.line,snippet:f.usage.snippet}];continue}head.sites?.some(s=>s.line===f.usage.line)||head.sites?.push({line:f.usage.line,snippet:f.usage.snippet}),folded2.add(f)}if(folded2.size>0){let kept=findings.filter(f=>!folded2.has(f));findings.length=0,findings.push(...kept)}let rank={breaking:0,unverified:1,deprecated:2,additive:3,info:4};return findings.map(f=>arbitrate(f,options)).sort((a,b)=>rank[a.severity]-rank[b.severity]||a.usage.file.localeCompare(b.usage.file)||a.usage.line-b.usage.line||a.usage.column-b.usage.column||a.change.path.localeCompare(b.change.path))}function requireEsmVerdict(change,usage,esmNamed,targetPaths){let pkg=change.package,isRoot=usage.symbolPath==="."||usage.symbolPath==="default"||usage.symbolPath===change.loadRoot;if(change.requireEsm==="unknown")return{severity:"unverified",detail:"; whether this require() keeps working depends on the Node version"};if(change.requireEsm==="no")return{severity:"breaking",detail:""};if(change.topLevelAwait)return{severity:"breaking",detail:`; require('${pkg}') throws at load time; use import()`};if(isRoot)return usage.access==="call"||usage.access==="construct"?{severity:"breaking",detail:`; require('${pkg}') now returns a namespace, so the value at this site is not a function or class; use require('${pkg}').default or import()`}:void 0;let root=change.loadRoot??"default",onDefault=usage.symbolPath.startsWith(`${root}#`)||usage.symbolPath.startsWith(`${root}.`),leaf=onDefault?usage.symbolPath.slice(root.length+1).split(/[.#[(]/)[0]??usage.symbolPath:usage.symbolPath.split(/[.#[]/)[0]??usage.symbolPath;if(!(!onDefault&&(esmNamed===void 0||esmNamed.has(leaf)||esmNamed.has(usage.symbolPath)))&&!(!onDefault&&targetPaths!==void 0&&!targetPaths.has(`${root}.${leaf}`)&&!targetPaths.has(`${root}#${leaf}`)))return{severity:"breaking",detail:`; \`${leaf}\` is not a named export of ${pkg}, it lives on the default export: use require('${pkg}').default.${leaf} or import()`}}function observedRequireVerdict(change,usage,observed){let pkg=change.package;if(!observed.ok){let code=observed.code??"an error";return{severity:"breaking",detail:`; require('${pkg}') throws ${code} on the repository's Node${code==="ERR_REQUIRE_ASYNC_MODULE"?" (top-level await)":""}; use import()`}}if(usage.symbolPath==="."||usage.symbolPath==="default"||usage.symbolPath===change.loadRoot)return(usage.access==="call"||usage.access==="construct")&&!observed.callable?{severity:"breaking",detail:`; require('${pkg}') returns a namespace on the repository's Node, so the value at this site is not a function or class; use require('${pkg}').default or import()`}:void 0;let root=change.loadRoot??"default",leaf=usage.symbolPath.startsWith(`${root}#`)||usage.symbolPath.startsWith(`${root}.`)?usage.symbolPath.slice(root.length+1).split(/[.#[(]/)[0]??usage.symbolPath:usage.symbolPath.split(/[.#[]/)[0]??usage.symbolPath,keys=observed.keys??{};if(!(leaf in keys)&&observed.defaultKeys?.includes(leaf))return{severity:"breaking",detail:`; \`${leaf}\` is not on the namespace require('${pkg}') returns, it lives on the default export: use require('${pkg}').default.${leaf} or import()`}}function survivesWithout(container,paths,targetPaths){return paths.some(path=>{let rest=isDescendant(path,container)?path.slice(container.length+1):path;return targetPaths.has(topLevelOf(rest))})}function topLevelOf(path){let m=/^("[^"]*":)?[^.#[(]+/.exec(path);return m?m[0]:path}function isDescendant(path,ancestor){if(path===ancestor)return!1;let p=parentOf(path);for(;p!==void 0;){if(p===ancestor)return!0;p=parentOf(p)}return!1}function defaultReason(change){switch(change.kind){case"removed":return change.replacement?`removed, possibly renamed to ${change.replacement}`:"removed";case"moved":return`moved to ${change.replacement??"another entry point"}`;case"added":return"added";case"deprecated":return"deprecated";case"required":return"now required";default:return`${change.kind} changed`}}function round(n){return Math.round(n*1e3)/1e3}function contains(u,d){if(u.file!==d.file)return!1;let before=(aLine,aCol,bLine,bCol)=>aLine<bLine||aLine===bLine&&aCol<=bCol;return before(u.line,u.column,d.line,d.column)&&before(d.line,d.column,u.endLine,u.endColumn)}function spanOf(u){return[u.endLine-u.line,u.endLine===u.line?u.endColumn-u.column:u.endColumn]}function innermost(candidates){let best;for(let u of candidates){if(!best){best=u;continue}let[bl,bc]=spanOf(best),[ul,uc]=spanOf(u);(ul<bl||ul===bl&&uc<bc)&&(best=u)}return best}function symbolFromMessage(message,surface){let known=new Set(surface.symbols.map(s=>s.path)),property=/Property '([^']+)' does not exist on type '([^'<]+)/.exec(message);if(property){let[,member,type]=property;for(let candidate of[`${type}#${member}`,`${type}.${member}`])if(known.has(candidate))return candidate}let exported=/has no exported member (?:named )?'([^']+)'/.exec(message);if(exported&&known.has(exported[1]))return exported[1];let assignable=/is not assignable to (?:parameter of )?type '([^'<]+)/.exec(message);if(assignable&&known.has(assignable[1]))return assignable[1]}function mergeSignals(usages,signal,surface,changedPaths=new Set){if(!signal)return{usages,unattributed:[]};let merged=usages.map(u=>({...u})),unattributed=[],attach=(u,d)=>{u.compileError=u.compileError?`${u.compileError}
|
|
338
338
|
${d.message}`:d.message,u.compileCode??=d.code},explained=u=>usagePaths(u).some(p=>changedPaths.has(p));for(let d of signal.diagnostics){if(d.cause?.config||d.cause?.anchorOnly){unattributed.push(d);continue}let hit=innermost(merged.filter(u=>contains(u,d)&&u.access!=="import"));if(hit){attach(hit,d);continue}let nearest=merged.filter(u=>u.file===d.file&&u.line===d.line&&u.access!=="import"&&explained(u)).sort((a,b)=>Math.abs(a.column-d.column)-Math.abs(b.column-d.column))[0];if(nearest){attach(nearest,d);continue}let symbolPath=symbolFromMessage(d.message,surface);symbolPath?merged.push({file:d.file,line:d.line,column:d.column,endLine:d.endLine,endColumn:d.endColumn,symbolPath,access:/is not assignable to (?:parameter of )?type/.test(d.message)?"write":"read",snippet:d.snippet,via:"inferred",compileError:d.message,compileCode:d.code}):unattributed.push(d)}return{usages:merged,unattributed}}var UNATTRIBUTED_REASON="compile error not attributed to a known API change";function normalizeMessage(message){return(message.split(`
|
|
339
339
|
`)[0]??"").replace(/'[^']*'/g,"'_'").replace(/\s+/g," ").trim()}function quotedNames(message){return[...message.matchAll(/'([^']*)'/g)].map(m=>m[1])}function describeCluster(count3,cause){return cause.config||cause.anchorOnly?`${count3} error${count3===1?"":"s"} caused by \`${cause.name}\` in ${cause.file}:${cause.line}: ${cause.reason}. One edit there resolves them.`:`${count3} error${count3===1?"":"s"} caused by \`${cause.name}\` (${cause.file}:${cause.line}), ${cause.reason}. Fix here first.`}function unattributedFindings(diagnostics2,meta3,surfaceB,unresolvedFiles,filePrefix=""){let clusters=new Map,single=[];for(let d of diagnostics2){if(!d.cause){single.push(d);continue}let key2=`${d.cause.file}:${d.cause.line}:${d.cause.name}`,list=clusters.get(key2)??[];list.push(d),clusters.set(key2,list)}return[...[...clusters.values()].map(group=>{let cause=group[0].cause,usage={file:cause.file,line:cause.line,column:1,endLine:cause.line,endColumn:1,symbolPath:`cause:${cause.name}`,access:"read",snippet:"",via:"inferred"};return{change:{...meta3,path:`cause:${cause.name}`,kind:"cause",severity:"breaking",source:"types",confidence:1,evidence:"checker",notes:describeCluster(group.length,{...cause,file:posix.normalize(`${filePrefix}${cause.file}`)})},usage,downstream:group.map(d=>({file:posix.normalize(`${filePrefix}${d.file}`),line:d.line,code:d.code,message:d.message.split(`
|
|
340
|
-
`)[0]??d.message})),...cause.anchorOnly||cause.config?{anchorOnly:!0}:{},...cause.anchorOnly&&!cause.config?{root:sharedRoot(cause)}:{},severity:"breaking",confidence:1,fixability:cause.anchorOnly||cause.config?"assisted":"unknown",reason:cause.anchorOnly||cause.config?cause.reason:UNATTRIBUTED_REASON}}),...plainFindings(single,meta3,surfaceB,unresolvedFiles)]}function sharedRoot(cause){return{name:cause.name,file:cause.file,line:cause.line,reason:cause.reason}}function plainFindings(diagnostics2,meta3,surfaceB,unresolvedFiles){let unresolved=new Set(unresolvedFiles),shaky=new Set(surfaceB.symbols.filter(s=>s.file!==void 0&&unresolved.has(s.file)).map(s=>s.path.split(/[.#[]/).pop()??s.path));return diagnostics2.map(d=>{let usage={file:d.file,line:d.line,column:d.column,endLine:d.endLine,endColumn:d.endColumn,symbolPath:`TS${d.code}`,access:"read",snippet:d.snippet??"",via:"inferred",compileError:d.message},change={...meta3,path:`TS${d.code}`,kind:"type",severity:"breaking",source:"types",confidence:1,evidence:"checker",notes:normalizeMessage(d.message)},inconclusive=quotedNames(d.message).some(n=>shaky.has(n));return{change,usage,...d.root?{root:sharedRoot(d.root)}:{},severity:inconclusive?"unverified":"breaking",confidence:1,fixability:"unknown",reason:inconclusive?`${UNATTRIBUTED_REASON}; a type it names is declared in a target file with unresolved imports, compile check inconclusive`:UNATTRIBUTED_REASON}})}var rootKey=r=>`${r.file}:${r.line}:${r.name}`;function callSitesLine(sites){let workspaces=new Set(sites.map(s=>s.workspace).filter(w=>w!==void 0)),count3=(n,noun)=>`${n} ${noun}${n===1?"":"s"}`;return`${count3(sites.length,"call site")}${workspaces.size>1?` in ${count3(workspaces.size,"workspace")}`:""}`}function foldSharedRoots(findings,workspaceOf2){let groups2=new Map;for(let f of findings){if(!f.root)continue;let list=groups2.get(rootKey(f.root))??[];list.push(f),groups2.set(rootKey(f.root),list)}let folded2=new Map;for(let group of groups2.values()){let anchors=group.filter(f=>f.anchorOnly&&f.change.kind==="cause"),sites=group.filter(f=>!anchors.includes(f));if(sites.length===0||anchors.length+sites.length<2)continue;let root=group[0].root,evidence=[...anchors.flatMap(a=>a.downstream??[]),...sites.map(f=>({file:f.usage.file,line:f.usage.line,column:f.usage.column,snippet:f.usage.snippet,code:f.usage.compileCode??Number(/^TS(\d+)$/.exec(f.change.path)?.[1]??0),message:f.usage.compileError??f.reason,...workspaceOf2(f)!==void 0?{workspace:workspaceOf2(f)}:{}}))].sort((a,b)=>a.file.localeCompare(b.file)||a.line-b.line),first=anchors[0]??sites[0],rules2=[...new Set(group.map(f=>f.rule).filter(r=>r!==void 0))],anchor={...first,change:{...first.change,path:`cause:${root.name}`,kind:"cause",severity:"breaking",evidence:"checker",notes:describeCluster(evidence.length,{...root,anchorOnly:!0})},usage:{file:root.file,line:root.line,column:1,endLine:root.line,endColumn:1,symbolPath:`cause:${root.name}`,access:"read",snippet:"",via:"inferred"},downstream:evidence,anchorOnly:!0,root,severity:"breaking",confidence:1,fixability:"assisted",reason:root.reason,details:[callSitesLine(evidence),...(first.details??[]).filter(d=>!/^\d+ call sites?/.test(d))],evidence:"compiler",...rules2.length===1?{rule:rules2[0]}:{}};folded2.set(first,anchor);for(let f of group)f!==first&&folded2.set(f,void 0)}return folded2.size===0?findings:findings.flatMap(f=>folded2.has(f)?folded2.get(f)?[folded2.get(f)]:[]:[f])}function groupRootCauses(report){if(report.name!=="typescript"||parseVersion(report.target)?.major!==7)return;let codeOf=f=>f.usage.compileCode??Number(/^TS(\d+)$/.exec(f.change.path)?.[1]??0),missing=report.findings.filter(f=>f.severity==="breaking"&&f.evidence==="compiler"&&[2305,2339,2551,2614,2694,2724].includes(codeOf(f)));if(missing.length<2)return;let first=missing[0],cause={...first,rule:"typescript-no-js-api",change:{...first.change,kind:"cause",path:"cause:typescript-no-js-api"},reason:"TypeScript 7 has no JavaScript compiler API in its main entry",details:["Migrate compiler API consumers separately; changing individual missing members does not restore the API."],downstream:missing.map(f=>({file:f.usage.file,line:f.usage.line,column:f.usage.column,snippet:f.usage.snippet,code:codeOf(f),message:f.usage.compileError??f.reason}))};report.findings=[cause,...report.findings.filter(f=>!missing.includes(f))]}function arbitrateUnchecked(findings,runtime,loadRoot){return findings.map(f=>{if(f.usage.checked!==!1||f.change.kind==="module-format"||f.change.kind==="deprecated"||f.change.path.startsWith("runtime:")||f.severity!=="breaking"&&f.severity!=="unverified")return f;let hit=runtime&&!runtime.inconclusive?runtimeConfirms(f.usage,runtime.changes,loadRoot):void 0;return hit?{...f,severity:"breaking",reason:`${stripVerdict(f.reason)}; confirmed at runtime (${runtime?.node}): ${hit.detail}`}:runtime?runtime.inconclusive?{...f,severity:"unverified",reason:isNativeProbeSkip(runtime.inconclusive)?stripVerdict(f.reason):`${stripVerdict(f.reason)}; the repository does not type-check this file and the runtime probe was inconclusive (${runtime.inconclusive})`}:isScoped(f.usage.symbolPath)?{...f,severity:"unverified",reason:`${stripVerdict(f.reason)}; the repository does not type-check this file and the runtime probe only loads the package root`}:{...f,severity:"info",fixability:"none",confidence:Math.min(f.confidence,.3),reason:`${f.change.source==="types"&&f.usage.compileError!==void 0?"the compiler":"the diff"} says ${f.change.kind==="type"&&f.usage.compileError!==void 0?"this would not type-check":f.change.kind} but the repository does not type-check this file, and the target loads with the same shape at runtime (${runtime.node})`}:{...f,severity:"unverified",reason:`${stripVerdict(f.reason)}; the repository does not type-check this file and the runtime probe did not run`}})}function runtimeConfirms(usage,changes,loadRoot){let loader=usage.loader??"import",own=changes.filter(c=>c.loader===loader),throws=own.find(c=>c.kind==="require-throws"||c.kind==="import-throws");if(throws)return throws;if(isScoped(usage.symbolPath))return;let paths=usage.canonicalPath?[usage.symbolPath,usage.canonicalPath]:[usage.symbolPath];for(let path of paths){let{root,member}=split(path,loadRoot);if(root){if(member===void 0){if(usage.access==="call"){let hit=own.find(c=>c.kind==="callable-lost"||c.kind==="namespace-instead");if(hit)return hit}if(usage.access==="construct"){let hit=own.find(c=>c.kind==="constructable-lost"||c.kind==="callable-lost"||c.kind==="namespace-instead");if(hit)return hit}continue}let gone2=own.find(c=>c.kind==="key-removed"&&c.key===member);if(gone2)return gone2;continue}let key2=member===void 0?path:path.slice(0,path.length-member.length-1),gone=own.find(c=>c.kind==="key-removed"&&c.key===topKey(key2));if(gone)return gone}}function split(path,loadRoot){let top=topKey(path);if(!(path==="."||top===loadRoot||top==="default"))return{root:!1,member:path.includes(".")?path.slice(top.length+1):void 0};let rest=path.slice(top.length),m=/^[.#]([^.#[(]+)/.exec(rest);return m?{root:!0,member:m[1]}:{root:!0}}function topKey(path){let m=/^[^.#[(]+/.exec(path);return m?m[0]:path}function isScoped(path){return path.startsWith('"')}function stripVerdict(reason){return reason.replace(/; the compiler cannot type this file.*$/,"").replace(/; the installed version ships no declarations.*$/,"")}var TIER_LEGEND="verified: migration pack \xB7 generic: no pack \xB7 in both, breaking only if the compiler, the runtime probe or the pack confirms it";function tierOf(packs,name,installed,target){return packs.find(candidate=>candidate.name===name)?.supports(installed,target)?"verified":"generic"}function evidenceOf(f,runtime,loadRoot){if(f.change.source==="pack")return"pack";if(f.usage.compileError!==void 0||/^TS\d+$/.test(f.change.path)||f.change.path.startsWith("cause:"))return"compiler";if(f.change.kind==="module-format")return"module-format";if(runtime&&!runtime.inconclusive&&runtimeConfirms(f.usage,runtime.changes,loadRoot))return"runtime";if((f.change.kind==="removed"||f.change.kind==="moved")&&f.usage.access==="import"&&!/[.#[]/.test(f.change.path))return"removed-export"}function confirmBreaking(findings,evidence){return findings.map(f=>{let found=evidence(f);return f.severity!=="breaking"?found?{...f,evidence:found}:f:found?{...f,evidence:found}:{...f,severity:"unverified",reason:`${f.reason}; not confirmed by the compiler or the runtime probe`}})}var count2=(n,noun)=>`${n} ${noun}${n===1?"":"s"}`;function coverageLine(c){if(!c)return"";let skipped=c.skipped.map(r=>`${r.reason} (${r.count})`).join(", "),compilers2=compilersPhrase(c.compilers??[]),notCompiled=(c.notCompiled??[]).map(n=>`; not compiled: ${n.path} (${n.reason})`);return`compiled ${c.compiled} of ${count2(c.total,"file")} in ${count2(c.workspaces,"workspace")}${compilers2?` with ${compilers2}`:""}${skipped?`; skipped: ${skipped}`:""}${notCompiled.join("")}`}function compilersPhrase(compilers2){let versions=own=>[...new Set(compilers2.filter(c=>c.own===own).map(c=>c.version))].sort().join(" and ");return[...versions(!0)?[`the repo's TypeScript ${versions(!0)}`]:[],...versions(!1)?[`the bundled TypeScript ${versions(!1)}`]:[]].join(" and ")}function verdictOf(p,notCompiled){let breaking=p.findings.filter(f=>f.severity==="breaking").length,coverage=p.compile?.coverage;if(p.compile!==void 0&&p.compile.skipped===void 0){let newErrors=p.compile.newErrors;if(coverage&&coverage.compiled<coverage.total){let partly=coverageLine(coverage);return{breaking,compiledAgainst:p.target,...newErrors!==void 0?{newErrors}:{},partlyVerified:partly,summary:`${breaking} breaking \xB7 types partly verified: ${partly}`}}return{breaking,compiledAgainst:p.target,...newErrors!==void 0?{newErrors}:{},summary:`${breaking} breaking \xB7 compiled against ${p.target}${newErrors!==void 0?`: ${count2(newErrors,"new type error")}`:""}`}}let reason=p.compile?.skipped??notCompiled??"the compiler did not run";return{breaking,notVerified:reason,summary:`${breaking} breaking \xB7 types not verified: ${reason}`}}async function progress(listener,event,work){let start=performance.now();listener?.({...event,state:"start"});try{return await work()}finally{listener?.({...event,state:"done",ms:performance.now()-start})}}var defaults2=new Set(["node_modules",".git","coverage","dist","build","bower_components","vendor"]),defaultSkip=name=>defaults2.has(name)?`default: ${name}`:/(?:\.min\.js|\.bundle\.js|\.map)$/i.test(name)?"generated files (*.min.js, *.bundle.js, *.map)":void 0;function directoryRules(dir,entries){if(!entries.includes(".gitignore"))return[];let matcher=(0,import_ignore.default)().add(readFileSync20(join29(dir,".gitignore"),"utf8"));return[{base:dir,test:path=>matcher.test(path)}]}function ignoredBy(path,directory,rules2){let pattern;for(let rule of rules2){let local=relative14(rule.base,path).replaceAll("\\","/")+(directory?"/":""),result=rule.test(local);result.ignored?pattern=result.rule?.pattern??"(matching pattern unavailable)":result.unignored&&(pattern=void 0)}return pattern}async function scanImports(root,names,workspaces,configs,evidence,stats,tasks,concurrency){let start=performance.now(),counts={sourceMs:0,configMs:0,visitedFiles:0,sourceFiles:0,configFiles:0,assetFiles:0,parsedFiles:0,workers:0,candidateSourceFiles:0,ignoredSourceFiles:0,ignoredSourceRules:{},skipped:{}},result=new Map,jobs=[],ignoredRules=new Map,skip=(reason,directory)=>{let skipped=counts.skipped,count3=skipped[reason]??{files:0,directories:0};skipped[reason]=count3,count3[directory?"directories":"files"]++},wanted=new Set(names),packageOf=specifier=>{let name=specifier.startsWith("@")?specifier.split("/").slice(0,2).join("/"):specifier.split("/")[0];return name&&wanted.has(name)?name:void 0},isSource=file=>/\.[cm]?[jt]sx?$/.test(file)&&!/\.d\.[cm]?ts$/.test(file)&&!isConfig(file),candidate=(file,pattern)=>{isSource(file)&&(counts.candidateSourceFiles=(counts.candidateSourceFiles??0)+1,pattern!==void 0&&(counts.ignoredSourceFiles=(counts.ignoredSourceFiles??0)+1,ignoredRules.set(pattern,(ignoredRules.get(pattern)??0)+1)))},auditIgnored=(dir,pattern)=>{for(let entry of readdirSync9(dir,{withFileTypes:!0})){let directory=entry.isDirectory();directory||counts.visitedFiles++;let builtIn=entry.isSymbolicLink()?"symbolic links":defaultSkip(entry.name);if(builtIn){skip(builtIn,directory);continue}let path=join30(dir,entry.name);skip(".gitignore",directory),directory?auditIgnored(path,pattern):entry.isFile()&&candidate(relative15(root,path).replaceAll("\\","/"),pattern)}},walk=(dir,inherited=[])=>{let entries=readdirSync9(dir,{withFileTypes:!0}).sort((a,b)=>a.name.localeCompare(b.name)),started=performance.now(),rules2=[...inherited,...directoryRules(dir,entries.filter(e=>e.isFile()).map(e=>e.name))];counts.configMs+=performance.now()-started;for(let entry of entries){let path=join30(dir,entry.name),directory=entry.isDirectory();directory||counts.visitedFiles++;let reason=entry.isSymbolicLink()?"symbolic links":defaultSkip(entry.name);if(reason){skip(reason,directory);continue}let pattern=ignoredBy(path,directory,rules2);if(pattern!==void 0){skip(".gitignore",directory),directory?auditIgnored(path,pattern):entry.isFile()&&candidate(relative15(root,path).replaceAll("\\","/"),pattern);continue}if(directory){walk(path,rules2);continue}if(!entry.isFile()){skip("non-regular files",!1);continue}let file=relative15(root,path).replaceAll("\\","/");if(candidate(file),isConfig(file)){let started2=performance.now();configs?.push(scanConfig(file,readFileSync21(path,"utf8"),names,evidence,tasks)),counts.configFiles++,counts.configMs+=performance.now()-started2;continue}if(/\.(?:scss|sass|less|css|html?)$/i.test(entry.name)){counts.assetFiles++;let text2=readFileSync21(path,"utf8");if(!names.some(name=>text2.includes(name))){skip("no dependency text",!1);continue}let add=(specifier,reason2)=>{let clean=specifier.replace(/^~/,"").replace(/^(?:\.\.?\/|\/)*node_modules\//,""),name=packageOf(clean);if(name){let reasons=evidence?.get(name)??[];reasons.includes(reason2)||reasons.push(reason2),evidence?.set(name,reasons)}};if(/\.html?$/i.test(entry.name)){let html=text2.replace(/<!--[\s\S]*?-->/g,"");for(let tag of html.matchAll(/<(script|link)\b[^>]*>/gi)){let attr=tag[1]?.toLowerCase()==="script"?"src":"href",value=tag[0].match(new RegExp(`\\s${attr}\\s*=\\s*(?:"([^"<>]*)"|'([^'<>]*)'|([^\\s>]+))`,"i")),url=value?.[1]??value?.[2]??value?.[3];url&&/^(?:\.\.?\/|\/)*node_modules\//.test(url)&&add(url,"referenced by HTML assets")}}else{let styles=text2.replace(/\/\*[\s\S]*?\*\//g,"").replace(/^\s*\/\/.*$/gm,"");for(let rule of styles.matchAll(/@(import|use|forward)\s+([^;\n]+)/gi)){let specifiers=(rule[2]??"").matchAll(/(?:^|,)\s*(?:\([^)]*\)\s*)?(?:url\(\s*(?:"([^"]+)"|'([^']+)'|([^\s)"']+))\s*\)|"([^"]+)"|'([^']+)')/g);for(let value of specifiers)if(add(value.slice(1).find(Boolean)??"","referenced by stylesheet imports"),rule[1]?.toLowerCase()!=="import")break}}continue}if(!/\.[cm]?[jt]sx?$/.test(entry.name)||/\.d\.[cm]?ts$/.test(entry.name))continue;counts.sourceFiles++;let workspace=[...workspaces].sort((a,b)=>b.length-a.length).find(w=>w!=="."&&file.startsWith(`${w}/`))??".",text=readFileSync21(path,"utf8"),gate=sourceCandidate(text,names);if(gate){skip(gate==="text"?"no dependency text":"no dependency imports (lexer)",!1);continue}jobs.push({file,text,workspace})}};walk(resolve11(root)),counts.ignoredSourceRules=Object.fromEntries(ignoredRules);let ignored=counts.ignoredSourceFiles??0,candidates=counts.candidateSourceFiles??0;if(ignored>candidates/2){let rules2=Object.entries(counts.ignoredSourceRules??{}).sort(([a],[b])=>a.localeCompare(b)).map(([pattern,files])=>`${JSON.stringify(pattern)} (${files})`).join(", ");counts.warnings=[`Usage warning: .gitignore skipped ${ignored} of ${candidates} candidate source files (${Math.round(100*ignored/candidates)}%); rules: ${rules2}. Usage may be understated.`]}counts.parsedFiles=jobs.length;let cpus=Math.max(1,Math.min(4,availableParallelism())),workerCount=concurrency??(jobs.length>=32&&jobs.reduce((n,job)=>n+job.text.length,0)>=8e6?cpus:0),merge2=entries=>{for(let[name,found]of entries){let value=result.get(name)??{files:[],callSites:0,references:0,symbols:{},workspaces:[]};value.files.push(...found.files),value.callSites+=found.callSites,value.references+=found.references;for(let[symbol,count3]of Object.entries(found.symbols))value.symbols[symbol]=(value.symbols[symbol]??0)+count3;value.workspaces=[...new Set([...value.workspaces,...found.workspaces])].sort(),result.set(name,value)}};if(workerCount>1&&jobs.length>1){let size=Math.min(workerCount,jobs.length);counts.workers=size;let batches=Array.from({length:size},()=>[]);jobs.forEach((job,i)=>{batches[i%size]?.push(job)});let results=await Promise.all(batches.map(batch=>runSourceWorker(batch,names)));for(let batch of results)for(let entries of batch)merge2(entries)}else for(let job of jobs)merge2([...parseSource(job,names)]);for(let value of result.values())value.files.sort();return counts.sourceMs=performance.now()-start-counts.configMs,stats&&Object.assign(stats,counts),result}async function runSourceWorker(jobs,names){let fromSource=import.meta.url.endsWith(".ts"),url=new URL(fromSource?"./list-worker.ts":"./list-worker.js",import.meta.url);return new Promise((resolve15,reject)=>{let entry=fromSource?`import('tsx/esm/api').then(({ tsImport }) => tsImport(${JSON.stringify(url.href)}, ${JSON.stringify(import.meta.url)}));`:url,worker=new Worker(entry,{workerData:{jobs,names},eval:fromSource,execArgv:[]}),settled=!1;worker.once("message",result=>{settled=!0,worker.terminate().then(()=>resolve15(result))}),worker.once("error",error=>{settled=!0,worker.terminate().then(()=>reject(error))}),worker.once("exit",code=>{settled||reject(new Error(`source worker exited with ${code}`))})})}function packFixability(finding,source,pack){return["breaking","unverified","deprecated"].includes(finding.severity)&&pack.transform(source,finding,{from:finding.change.from,to:finding.change.to,includeDeprecated:!0}).applied?{...finding,fixability:"mechanical"}:finding}var scopeOf2=name=>name.startsWith("@")?name.split("/")[0]:void 0,familyOf=name=>{let scope=scopeOf2(name);return scope&&scope!=="@types"?scope:void 0},EXACT2=/^\d+\.\d+\.\d+(?:-[\w.]+)?$/,inRange=(version,range)=>{try{return satisfies(version,range)}catch{return!1}};function dependencyGroups(packages,metadata,targets=new Map){let names=[...new Set(packages.map(p=>p.name))],parent=new Map(names.map(name=>[name,name])),find=name=>{let root=name;for(;parent.get(root)!==root;)root=parent.get(root);return root},edges=[],link=(a,b,kind)=>{a!==b&&(edges.push({a,b,link:kind}),parent.set(find(a),find(b)))},share=(a,b)=>a.workspaces.some(w=>b.workspaces.includes(w));for(let[i,p]of packages.entries()){for(let other of packages.slice(i+1)){let family=familyOf(p.name);family&&family===familyOf(other.name)&&share(p,other)&&link(p.name,other.name,"family")}for(let[peer,range]of Object.entries(targets.get(p.name)?.peerDependencies??{}))if(!(range==="*"||!range.trim()))for(let other of packages)other.name===peer&&share(p,other)&&!inRange(other.current,range)&&inRange(other.latest,range)&&link(p.name,other.name,"peer link")}let moves=new Map;for(let p of packages){let target=targets.get(p.name)?.dependencies??{};for(let m of metadata.get(p.name)??[])for(let[dep,pinned]of Object.entries(m.dependencies??{})){let next=target[dep];if(!EXACT2.test(pinned)||!next||!EXACT2.test(next)||next===pinned)continue;let key2=JSON.stringify([dep,pinned,next]),move=moves.get(key2)??{dep,movers:[]};move.movers.includes(p)||move.movers.push(p),moves.set(key2,move)}}for(let{dep,movers}of moves.values())for(let[i,p]of movers.entries())for(let other of movers.slice(i+1))share(p,other)&&link(p.name,other.name,`shared ${dep}`);let components=new Map;for(let p of packages){let key2=find(p.name);components.set(key2,[...components.get(key2)??[],p])}let peersOf=name=>[...new Set([...metadata.get(name)??[],targets.get(name)??{}].flatMap(m=>Object.keys(m.peerDependencies??{})))],named=[...components.values()].filter(members=>new Set(members.map(p=>p.name)).size>1).map(members=>{let inGroup=new Set(members.map(p=>p.name)),own=edges.filter(e=>inGroup.has(e.a)&&inGroup.has(e.b)),degree=name=>new Set(own.filter(e=>e.link!=="family"&&(e.a===name||e.b===name)).map(e=>e.a===name?e.b:e.a).filter(n=>!familyOf(name)||familyOf(n)!==familyOf(name))).size,peersInGroup=name=>peersOf(name).filter(peer=>inGroup.has(peer)).length,hub=name=>!familyOf(name)&&!members.some(m=>peersOf(m.name).includes(name)),lead=[...members].sort((a,b)=>degree(b.name)-degree(a.name)||Number(hub(b.name))-Number(hub(a.name))||peersInGroup(b.name)-peersInGroup(a.name)||+(b.classification==="used")-+(a.classification==="used")||b.usage.files-a.usage.files||a.name.localeCompare(b.name))[0],families=[...new Set(own.filter(e=>e.link==="family").map(e=>familyOf(e.a)))].sort(),links=[...new Set(own.filter(e=>e.link!=="family"&&(!familyOf(e.a)||familyOf(e.a)!==familyOf(e.b))).map(e=>e.link))],leadFamily=familyOf(lead.name),family=leadFamily&&families.includes(leadFamily)?leadFamily:void 0;for(let p of members){if(p.name===lead.name||familyOf(p.name)&&familyOf(p.name)===familyOf(lead.name))continue;let peerOf=members.filter(m=>peersOf(m.name).includes(p.name)).map(m=>m.name).sort();peerOf.length&&(p.peerOf=peerOf,p.classification==="possibly-unused"&&lead.classification!=="possibly-unused"&&(p.classification="peer",p.reasons=peerOf.map(name=>`peer of ${name}`)))}members.sort((a,b)=>+!!a.peerOf-+!!b.peerOf||a.name.localeCompare(b.name)||a.current.localeCompare(b.current));let extraFamilies=families.filter(f=>f!==family);return{id:family&&!extraFamilies.length?family.slice(1):lead.name,lead:lead.name,name:[family?`${family}/*`:lead.name,...extraFamilies.map(f=>`${f}/*`)].join(" + "),reason:[...family?[`${family} family`]:[],...links.slice(0,2)].join(", ")||"family",members}}),byId=new Map;for(let group of named)byId.set(group.id,[...byId.get(group.id)??[],group]);for(let clash of byId.values())if(!(clash.length<2))for(let group of clash)group.id=group.name!==group.lead&&clash.filter(o=>o.name===group.name).length===1?group.name:group.lead;return named}function peerBlocks(packages,metadata){let blocks=new Map;for(let p of packages)for(let m of metadata.get(p.name)??[])for(let[peer,range]of Object.entries(m.peerDependencies??{})){let other=packages.find(o=>o.name===peer&&o.workspaces.some(w=>p.workspaces.includes(w)));if(!other||range==="*"||!inRange(other.current,range)||inRange(other.latest,range))continue;let label=`${other.name} ${other.latest.split(".")[0]}`,list=blocks.get(p.name)??[];list.includes(label)||blocks.set(p.name,[...list,label])}return blocks}function typesReleaseFor(published,runtimeTarget,installed){let target=parseVersion(runtimeTarget),stable2=published.filter(v=>{let p=parseVersion(v);return p!==void 0&&p.pre===void 0}).sort(compareVersions),notBelowInstalled=v=>installed===void 0||compareVersions(v,installed)>=0,newest=match2=>stable2.filter(v=>notBelowInstalled(v)&&match2(parseVersion(v))).at(-1);return target?newest(p=>p.major===target.major&&p.minor===target.minor)??newest(p=>p.major===target.major)??newest(()=>!0):newest(()=>!0)}function typesPackageOf(name){return`@types/${name.startsWith("@")?name.slice(1).replace("/","__"):name}`}function typedPackageOf(name){if(name.startsWith("@types/"))return name.slice(7).replace(/^([^_]+)__/,"@$1/")}var EXACT3=/^\d+\.\d+\.\d+(?:-[\w.]+)?$/,scopeOf3=name=>name.startsWith("@")&&!name.startsWith("@types/")?name.split("/")[0]:void 0,stable=version=>{let parsed4=parseVersion(version);return parsed4!==void 0&&parsed4.pre===void 0},accepts=(range,version)=>{try{return satisfies(version,range)}catch{return!1}},exactPins=m=>new Map(Object.entries(m.dependencies??{}).filter(([,v])=>EXACT3.test(v)));function related(lead,other){if(!lead.workspaces.some(w=>other.workspaces.includes(w)))return!1;let mentions2=(m,name)=>name in(m.dependencies??{})||name in(m.peerDependencies??{});if(mentions2(lead.manifest,other.name)||mentions2(other.manifest,lead.name))return!0;let theirs=exactPins(other.manifest);for(let[dep,version]of exactPins(lead.manifest))if(theirs.get(dep)===version)return!0;return!1}function releasedWith(lead,target,versions){let same=versions[target],range=same?.dependencies?.[lead]??same?.peerDependencies?.[lead];return same!==void 0&&range!==void 0&&accepts(range,target)}function peerConflictOf(installed,host,target,versions,lockstep=[]){if(lockstep.includes(installed.name)||releasedWith(host,target,versions))return;let current=versions[installed.version]??installed.manifest;if(current.dependencies?.[host]!==void 0)return;let range=current.peerDependencies?.[host];if(!(range===void 0||accepts(range,target)))return`${installed.name} ${installed.version} declares ${host} ${range}`}function agreeing(installed,lead,target,targetManifest,versions,lockstep=[]){let name=installed.name,pinned=targetManifest.dependencies?.[name];if(pinned&&EXACT3.test(pinned)&&versions[pinned])return{version:pinned,reason:`${lead} ${target} pins ${name} ${pinned}`};let same=versions[target],sameRange=same?.dependencies?.[lead]??same?.peerDependencies?.[lead];if(same&&sameRange!==void 0&&accepts(sameRange,target)&&target!==installed.version)return{version:target,reason:`${name} ${target} is released with ${lead} ${target} (${EXACT3.test(sameRange)?"pins":"peer"} ${sameRange})`};let current=versions[installed.version]??installed.manifest,range=current.dependencies?.[lead]??current.peerDependencies?.[lead];if(range!==void 0&&accepts(range,target)&&!lockstep.includes(name))return{version:installed.version,reason:`${name} ${installed.version} accepts ${lead} ${target}`};let candidates=Object.keys(versions).filter(stable).sort(compareVersions).reverse();for(let version of candidates){let m=versions[version]??{},range2=m.dependencies?.[lead]??m.peerDependencies?.[lead];if(!(range2===void 0||!accepts(range2,target)))return{version,reason:EXACT3.test(range2)?`${name} ${version} pins ${lead} ${target}`:`${name} ${version} accepts ${lead} ${target} (${range2})`}}let leadPins=exactPins(targetManifest);for(let version of candidates){let shared=[...exactPins(versions[version]??{})].filter(([dep])=>leadPins.has(dep));if(shared.length>0&&shared.every(([dep,v])=>leadPins.get(dep)===v))return{version,reason:`${name} ${version} pins ${shared.map(([dep,v])=>`${dep} ${v}`).join(", ")}, as ${lead} ${target} does`}}}function visibleFrom(dep,host){return dep.workspaces.some(d=>host.workspaces.some(h=>h===d||d==="."||h.startsWith(`${d}/`)))}function typesOf(dep,host){return typedPackageOf(dep.name)===host.name&&visibleFrom(dep,host)}function typesMove(dep,host,hostTarget,versions){let version=typesReleaseFor(Object.keys(versions),hostTarget,dep.version);if(version!==void 0)return{version,reason:`${dep.name} ${version} types ${host} ${hostTarget}`}}async function companionsOf(input){let none={companions:[],conflicts:[],peerConflicts:[]},lead=input.installed.find(d=>d.name===input.name);if(!lead)return none;let targetManifest=(await input.manifests(input.name))[input.target];if(!targetManifest)return none;let scope=scopeOf3(lead.name),members=[lead],families=new Set;scope&&families.add(scope);let grow=()=>{let grew=!1;for(let d of input.installed){if(members.includes(d)||d.name===lead.name)continue;let host=members.find(m=>related(m,d)||typesOf(d,m)),scope2=scopeOf3(d.name),family=scope2!==void 0&&families.has(scope2)&&d.workspaces.some(w=>lead.workspaces.includes(w));!host&&!family||(members.push(d),host&&scope2!==void 0&&families.add(scope2),grew=!0)}return grew};for(;grow(););let candidates=members.filter(d=>d!==lead);if(candidates.length===0)return none;let decided=new Map([[lead.name,{version:input.target,manifest:targetManifest}]]),moves=new Map,typesLinked=new Set,peerConflicts=new Map,names=new Set(members.map(m=>m.name));for(let progress2=!0,waitForTyped=!0;progress2||waitForTyped;){progress2||(waitForTyped=!1),progress2=!1;for(let c of candidates){if(moves.get(c.name)!==void 0)continue;let typed2=typedPackageOf(c.name),typesHost=typed2!==void 0&&decided.has(typed2)?input.installed.find(d=>d.name===typed2&&typesOf(c,d)):void 0;if(!typesHost&&typed2!==void 0&&names.has(typed2)&&waitForTyped)continue;let versions=await input.manifests(c.name),move;if(typesHost)move=typesMove(c,typed2,decided.get(typed2)?.version,versions),move&&typesLinked.add(c.name);else for(let[host,at]of decided){let hostDep=input.installed.find(d=>d.name===host);if(!hostDep||!related(hostDep,c))continue;let left=peerConflictOf(c,host,at.version,versions,input.lockstep);if(left){peerConflicts.set(c.name,left);continue}if(move=agreeing(c,host,at.version,at.manifest,versions,input.lockstep),move){peerConflicts.delete(c.name);break}}moves.set(c.name,move),move&&(decided.set(c.name,{version:move.version,manifest:versions[move.version]??{}}),progress2=!0)}}let listed2=(d,latest)=>({name:d.name,current:d.version,latest,workspaces:d.workspaces,classification:"used",reasons:[],usage:{files:d===lead?1:0,callSites:0,references:0,workspaces:d.workspaces}}),packages=[listed2(lead,input.target),...candidates.map(c=>listed2(c,moves.get(c.name)?.version??c.version))],metadata=new Map(input.installed.map(d=>[d.name,[d.manifest]])),targets=new Map([[lead.name,targetManifest]]);for(let c of candidates){let move=moves.get(c.name),manifest2=move&&(await input.manifests(c.name))[move.version];manifest2&&targets.set(c.name,manifest2)}let group=dependencyGroups(packages,metadata,targets).find(g=>g.members.some(m=>m.name===lead.name)),inGroup=new Set((group?.members??[listed2(lead,input.target)]).map(m=>m.name));for(let c of candidates)input.lockstep?.includes(c.name)&&moves.get(c.name)!==void 0&&inGroup.add(c.name);for(let grew=!0;grew;){grew=!1;for(let c of candidates){if(inGroup.has(c.name)||moves.get(c.name)===void 0)continue;let typed2=typedPackageOf(c.name);(typesLinked.has(c.name)&&typed2!==void 0&&inGroup.has(typed2)||dependencyGroups(packages,metadata,targets).some(g=>g.members.some(m=>m.name===c.name)&&g.members.some(m=>inGroup.has(m.name))))&&(inGroup.add(c.name),grew=!0)}}if(inGroup.size<2)return none;let companions=[],conflicts=[];for(let member of candidates.filter(c=>inGroup.has(c.name))){let move=moves.get(member.name);if(!(!move&&peerConflicts.has(member.name))){if(!move){conflicts.push(`${member.name} ${member.version} has no release that agrees with ${lead.name} ${input.target}`);continue}move.version!==member.version&&companions.push({name:member.name,from:member.version,to:move.version,reason:move.reason})}}let typed=[...new Set(companions.filter(c=>typesLinked.has(c.name)).map(c=>typedPackageOf(c.name)))],reason=[group?.reason,typed.length?`types for ${typed.join(", ")}`:void 0].filter(Boolean).join(", ");return{companions:companions.sort((a,b)=>a.name.localeCompare(b.name)),conflicts,peerConflicts:[...peerConflicts.values()].sort(),...reason?{reason}:{}}}function releaseGroups(candidates){let byName=new Map(candidates.map(c=>[c.name,c])),keyOf3=c=>{if(!c.name.startsWith("@"))return;let major=parseVersion(c.installed)?.major;return major===void 0?void 0:`${c.name.split("/")[0]}@${major}`},parent=new Map,find=n=>{let root=n;for(;parent.get(root)!==root;)root=parent.get(root);return root};for(let c of candidates)parent.set(c.name,c.name);let viaShared=new Map;for(let c of candidates){let key2=keyOf3(c);if(key2===void 0)continue;let scope=c.name.split("/")[0];for(let dep of c.dependsOn){let other=byName.get(dep);if(other){other.name.startsWith(`${scope}/`)&&parent.set(find(c.name),find(other.name));continue}if(!dep.startsWith(`${scope}/`))continue;let sharedKey=`${key2}:${dep}`,earlier=viaShared.get(sharedKey);earlier?parent.set(find(c.name),find(earlier)):viaShared.set(sharedKey,c.name)}}let groups2=new Map;for(let c of candidates){let root=find(c.name),list=groups2.get(root)??[];list.push(c.name),groups2.set(root,list)}return[...groups2.values()].filter(g=>g.length>1).map(g=>g.sort())}function groupName(members){let first=members[0];return members.length>1?`${first.split("/")[0]}/*`:first}var SOURCE3=/\.(?:[cm]?[jt]sx?)$/,SKIPPED4=new Set(["node_modules","dist","build","coverage",".git",".next",".turbo"]);function importedByText(root,workspace,names,nested=[]){if(names.length===0)return[];let dir=resolve12(root,workspace),exclude=new Set(nested.filter(w=>w!==workspace).map(w=>resolve12(root,w)).filter(other=>other.startsWith(`${dir}/`))),escaped=names.map(n=>n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),pattern=new RegExp(`(?:\\bfrom\\s*|\\bimport\\s*\\(?\\s*|\\brequire\\s*\\(\\s*|\\bimport\\s+)["'](${escaped})(?:\\/[^"']*)?["']`,"g"),found=new Set,walk=at=>{let entries;try{entries=readdirSync10(at)}catch{return}for(let name of entries){if(SKIPPED4.has(name))continue;let path=join31(at,name);if(exclude.has(path))continue;let directory=!1;try{directory=statSync3(path).isDirectory()}catch{continue}if(directory){walk(path);continue}if(!SOURCE3.test(name)||/\.d\.[cm]?ts$/.test(name))continue;let text;try{text=readFileSync22(path,"utf8")}catch{continue}for(let match2 of text.matchAll(pattern))match2[1]&&found.add(match2[1]);if(found.size===names.length)return}};return walk(dir),[...found].sort()}function importFileCounts(root,names){let counts=new Map(names.map(n=>[n,0]));if(names.length===0)return counts;let escaped=names.map(n=>n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),pattern=new RegExp(`(?:\\bfrom\\s*|\\bimport\\s*\\(?\\s*|\\brequire\\s*\\(\\s*|\\bimport\\s+)["'](${escaped})(?:\\/[^"']*)?["']`,"g"),walk=at=>{let entries;try{entries=readdirSync10(at)}catch{return}for(let name of entries){if(SKIPPED4.has(name))continue;let path=join31(at,name),directory=!1;try{directory=statSync3(path).isDirectory()}catch{continue}if(directory){walk(path);continue}if(!SOURCE3.test(name)||/\.d\.[cm]?ts$/.test(name))continue;let text;try{text=readFileSync22(path,"utf8")}catch{continue}let inFile=new Set;for(let match2 of text.matchAll(pattern))match2[1]&&inFile.add(match2[1]);for(let name2 of inFile)counts.set(name2,(counts.get(name2)??0)+1)}};return walk(resolve12(root)),counts}var MB=1024**2;function freeMemoryBytes(){try{if(platform()==="linux"){let available=/^MemAvailable:\s+(\d+) kB/m.exec(readFileSync23("/proc/meminfo","utf8")),bytes=available?Number(available[1])*1024:freemem();for(let[limitFile,usedFile]of[["/sys/fs/cgroup/memory.max","/sys/fs/cgroup/memory.current"],["/sys/fs/cgroup/memory/memory.limit_in_bytes","/sys/fs/cgroup/memory/memory.usage_in_bytes"]])try{let limit=Number(readFileSync23(limitFile,"utf8").trim()),used=Number(readFileSync23(usedFile,"utf8").trim());Number.isFinite(limit)&&Number.isFinite(used)&&(bytes=Math.min(bytes,Math.max(0,limit-used)))}catch{}return bytes}if(platform()==="darwin"){let percent=/memory free percentage: (\d+)%/.exec(execFileSync2("/usr/bin/memory_pressure",["-Q"],{encoding:"utf8",timeout:1e3}));if(percent)return totalmem()*Number(percent[1])/100}}catch{}return freemem()}function memoryPolicy(freeBytes=freeMemoryBytes(),cpus=availableParallelism2(),requested=cpus,estimateMb=1024,env=process.env){let budgetMb=Math.floor(freeBytes/MB*.6),workers=Math.max(1,Math.min(cpus,requested,Math.floor(budgetMb/(estimateMb*1.4)))),limit=Math.max(0,Math.floor(budgetMb/workers/1.4)),override=Number(env.UPTIDE_WORKER_HEAP_MB);return{workers,heapMb:Math.min(8192,limit,Number.isFinite(override)&&override>=128?Math.floor(override):8192),budgetMb}}function scopedMemoryEstimate(dir,roots){let config=join32(dir,"tsconfig.json"),parsed4=existsSync19(config)?import_ts_morph18.ts.getParsedCommandLineOfConfigFile(config,{},{...import_ts_morph18.ts.sys,onUnRecoverableConfigFileDiagnostic:()=>{}}):void 0,options=parsed4?.options??{target:import_ts_morph18.ts.ScriptTarget.ES2022,module:import_ts_morph18.ts.ModuleKind.ESNext,moduleResolution:import_ts_morph18.ts.ModuleResolutionKind.Bundler,strict:!0},sources=workspaceSourceMap(dir,readInstalled(dir).installed);options.paths={...options.paths,...sources.paths};let pending=new Set(roots??parsed4?.fileNames??[]),cache=import_ts_morph18.ts.createModuleResolutionCache(dir,p=>p,options),addType=(name,containing)=>{let found=import_ts_morph18.ts.resolveTypeReferenceDirective(name,containing,options,import_ts_morph18.ts.sys).resolvedTypeReferenceDirective;found?.resolvedFileName&&pending.add(found.resolvedFileName)};for(let name of import_ts_morph18.ts.getAutomaticTypeDirectiveNames(options,import_ts_morph18.ts.sys))addType(name,join32(dir,"__uptide__.ts"));pending.add(import_ts_morph18.ts.getDefaultLibFilePath(options));let sourceBytes=0,declarationBytes=0;for(let file of pending){let text=import_ts_morph18.ts.sys.readFile(file);if(text===void 0)continue;/\.d\.[cm]?ts$/.test(file)?declarationBytes+=Buffer.byteLength(text):sourceBytes+=Buffer.byteLength(text);let info=import_ts_morph18.ts.preProcessFile(text,!0,!0),mode=import_ts_morph18.ts.getImpliedNodeFormatForFile(file,void 0,import_ts_morph18.ts.sys,options);for(let imp of info.importedFiles){let found=import_ts_morph18.ts.resolveModuleName(imp.fileName,file,options,import_ts_morph18.ts.sys,cache,void 0,mode).resolvedModule;found?.resolvedFileName&&pending.add(found.resolvedFileName)}for(let ref of info.referencedFiles)pending.add(resolve13(dirname19(file),ref.fileName));for(let ref of info.typeReferenceDirectives)addType(ref.fileName,file);for(let ref of info.libReferenceDirectives)pending.add(join32(dirname19(import_ts_morph18.ts.getDefaultLibFilePath(options)),`lib.${ref.fileName.toLowerCase()}.d.ts`))}return{heapMb:Math.ceil(512+sourceBytes/MB*150+declarationBytes/MB*24+(roots??parsed4?.fileNames??[]).length*4.5),sourceBytes,declarationBytes,files:pending.size}}function estimateScopedHeapMb(dir,roots){return scopedMemoryEstimate(dir,roots).heapMb}function readManifest3(dir){try{return JSON.parse(readFileSync24(join33(dir,"package.json"),"utf8"))}catch{return}}function fileSupportsRequire(file,type){return file.endsWith(".cjs")?!0:file.endsWith(".mjs")?!1:type!=="module"}function exportsSupportRequire(value,type){if(typeof value=="string")return fileSupportsRequire(value,type);if(Array.isArray(value))return value.some(v=>exportsSupportRequire(v,type));if(!value||typeof value!="object")return!1;let record=value;return"require"in record&&record.require!==null?!0:Object.entries(record).some(([key2,v])=>key2!=="import"&&key2!=="types"&&exportsSupportRequire(v,type))}function supportsRequire(m){if(m.exports!==void 0&&m.exports!==null){let record=m.exports,root=typeof m.exports=="object"&&!Array.isArray(m.exports)&&Object.keys(record).some(k=>k.startsWith("."))?record["."]:m.exports;return exportsSupportRequire(root,m.type)}return fileSupportsRequire(m.main??"index.js",m.type)}function shipsTypes(dir,m=readManifest3(dir)){if(!m)return!1;if(m.types||m.typings||existsSync20(join33(dir,"index.d.ts"))||/"types"/.test(JSON.stringify(m.exports??{})))return!0;try{return resolveEntryPoints(dir,m.name??"",m.version??""),!0}catch{return!1}}function minimumVersion(range){let lowest;for(let alternative of range.split("||")){let first=alternative.trim().split(/\s+/)[0]??"";if(first.startsWith("<"))continue;let m=/^(?:>=|>|\^|~|=)?v?(\d+)(?:\.(\d+|x|\*))?(?:\.(\d+|x|\*))?/.exec(first);if(!m)continue;let version=`${m[1]}.${/\d/.test(m[2]??"")?m[2]:0}.${/\d/.test(m[3]??"")?m[3]:0}`;(lowest===void 0||compare3(version,lowest)<0)&&(lowest=version)}return lowest}function compare3(a,b){let pa=parseVersion(a),pb=parseVersion(b);return!pa||!pb?0:pa.major-pb.major||pa.minor-pb.minor||pa.patch-pb.patch}function requireEsmSupport(range){if(!range)return"unknown";let min=minimumVersion(range);if(!min)return"unknown";let v=parseVersion(min);return v?v.major>=23?"yes":isBareMajor(range)?v.major===22||v.major===20?"yes":"no":v.major===22?v.minor>=12?"yes":"no":v.major===20&&v.minor>=19?"yes":"no":"unknown"}function isBareMajor(range){let min=minimumVersion(range);if(!min)return!1;for(let alternative of range.split("||")){let first=alternative.trim().split(/\s+/)[0]??"",m=/^(?:>=|>|\^|~|=)?v?(\d+)(?:\.(\d+|x|\*))?/.exec(first);if(m&&`${m[1]}.${/\d/.test(m[2]??"")?m[2]:0}`===min.replace(/\.\d+$/,""))return m[2]===void 0||!/\d/.test(m[2])}return!1}function readIf(path){try{return existsSync20(path)?readFileSync24(path,"utf8"):void 0}catch{return}}function resolveNodeVersion(dirs){for(let dir of dirs){let dockerfiles=["Dockerfile","docker/Dockerfile","Dockerfile.prod","Dockerfile.production"];for(let candidate of readdirSafe3(dir))/^Dockerfile/.test(candidate)&&!dockerfiles.includes(candidate)&&dockerfiles.push(candidate);let caveat;for(let rel of dockerfiles){let text=readIf(join33(dir,rel));if(!text)continue;let m=/^FROM\s+(?:--platform=\S+\s+)?(?:[\w.-]+\/)?node:(\d+(?:\.\d+){0,2})/im.exec(text);if(m)return{range:m[1],source:rel};let custom=/^FROM\s+(?:--platform=\S+\s+)?(\S+)/im.exec(text);custom&&caveat===void 0&&(caveat=`production Node unknown: ${rel} uses a custom base image (${custom[1]})`)}let found=resolveNodeVersionFrom(dir);if(found)return caveat?{...found,caveat}:found}}function resolveNodeVersionFrom(dir){for(let file of[".nvmrc",".node-version"]){let text=readIf(join33(dir,file))?.trim().replace(/^v/,"");if(text&&!/^(lts|node|latest)/i.test(text))return{range:text,source:file}}let tool=readIf(join33(dir,".tool-versions")),toolMatch=tool?/^nodejs\s+(\S+)/m.exec(tool):null;if(toolMatch)return{range:toolMatch[1],source:".tool-versions"};let workflows=join33(dir,".github/workflows");for(let wf of readdirSafe3(workflows).sort()){if(!/\.ya?ml$/.test(wf))continue;let text=readIf(join33(workflows,wf))??"",m=/node-version:\s*['"]?(\d+(?:\.\d+){0,2})['"]?\s*$/m.exec(text);if(m)return{range:m[1],source:`.github/workflows/${wf}`}}let engines=readManifest3(dir)?.engines?.node;if(engines)return{range:engines,source:"package.json engines.node"}}function readdirSafe3(dir){try{return readdirSync11(dir)}catch{return[]}}function hasTopLevelAwait(dir,budget=300){let files=[],walk=(d,depth2)=>{if(!(files.length>=budget||depth2>6))for(let entry of readdirSafe3(d)){if(entry==="node_modules"||entry.startsWith("."))continue;let full2=join33(d,entry),stat;try{stat=statSync4(full2)}catch{continue}if(stat.isDirectory()?walk(full2,depth2+1):/\.(m?js)$/.test(entry)&&!/\.cjs$/.test(entry)&&files.push(full2),files.length>=budget)return}};walk(dir,0);for(let file of files){let text=readIf(file);if(!text||!/\bawait\b/.test(text))continue;let sf=import_ts_morph19.ts.createSourceFile(file,text,import_ts_morph19.ts.ScriptTarget.ESNext,!1,import_ts_morph19.ts.ScriptKind.JS),found=!1,visit=n=>{found||import_ts_morph19.ts.isFunctionLike(n)||import_ts_morph19.ts.isClassLike(n)||(import_ts_morph19.ts.isAwaitExpression(n)||import_ts_morph19.ts.isForOfStatement(n)&&n.awaitModifier?found=!0:import_ts_morph19.ts.forEachChild(n,visit))};if(import_ts_morph19.ts.forEachChild(sf,visit),found)return!0}return!1}function moduleFormatChange(before,after,meta3,node){if(!supportsRequire(before)||supportsRequire(after))return;let why=after.type==="module"?`"type": "module" and ${after.exports!==void 0?"no require condition in exports":`an ESM main (${after.main??"index.js"})`}`:"no CommonJS entry",bare=node.range!==void 0&&isBareMajor(node.range)?", read as its latest release":"",where=node.source?` (${node.source}${bare})`:bare?` (${bare.slice(2)})`:"",nodeClause=node.support==="yes"?node.topLevelAwait?`Node ${node.range}${where} supports require(esm), but the target awaits at top level, which require() cannot load (ERR_REQUIRE_ASYNC_MODULE)`:`Node ${node.range}${where} supports require(esm): require() returns the module namespace`:node.support==="no"?`Node ${node.range}${where} does not guarantee require(esm) (needs 22.12+ or 20.19+)`:"Node version unknown (no Dockerfile FROM node, .nvmrc, .node-version, .tool-versions, CI node-version or engines.node), so require(esm) cannot be assumed",engines=after.engines?.node&&after.engines.node!==before.engines?.node?`; requires Node ${after.engines.node}`:"";return{...meta3,path:".",kind:"module-format",severity:"breaking",source:"types",confidence:1,evidence:"checker",before:"loadable with require()",after:"ESM only",notes:`no longer loadable with require(): ${why}; ${nodeClause}${engines}`,requireEsm:node.support,...node.topLevelAwait?{topLevelAwait:!0}:{}}}async function mapWithLimit(items,limit,task){let results=new Array(items.length),next=0,worker=async()=>{for(;;){let i=next++;if(i>=items.length)return;results[i]=await task(items[i])}};return await Promise.all(Array.from({length:Math.min(limit,items.length)},worker)),results}async function mapWithSerialRetry(items,limit,task,shouldRetry,retry){let results=await mapWithLimit(items,limit,task);if(limit>1)for(let i=0;i<items.length;i++)shouldRetry(results[i])&&(results[i]=await retry(items[i]));return results}function isBehind(c){return c.latest!==void 0&&compareVersions(c.latest,c.installed)>0}function rankCandidates(candidates){let major=c=>c.latest?majorsBehind(c.installed,c.latest):0;return[...candidates].sort((a,b)=>+(major(b)>0)-+(major(a)>0)||b.importSites-a.importSites||+(b.latest!==void 0)-+(a.latest!==void 0)||a.name.localeCompare(b.name))}var CURATED=[{package:"express",major:5,rules:[{pattern:/\.del\(/,what:"app.del() was removed; use app.delete()"},{pattern:/\breq\.param\(/,what:"req.param() was removed; read req.params, req.query or req.body"},{pattern:/\bres\.send\(\s*\d{3}\s*[,)]/,what:"res.send(status) was removed; use res.sendStatus(code) or res.status(code).send()"},{pattern:/\.(get|post|put|patch|delete|all|use|route)\(\s*['"`][^'"`]*(\*|\?|\+|\(|:[A-Za-z_$][\w$]*\?)/,what:"route paths use path-to-regexp v8: `*` becomes a named splat (`/{*path}`), `?`/`+`/regex groups and optional params (`:id?`) are written as `{/:id}`"}]}],RUNTIME_LABEL="runtime change, not visible in types";function runtimeChangeFindings(meta3,files){let curated=CURATED.find(c=>c.package===meta3.package);if(!curated)return[];let from=parseVersion(meta3.from)?.major,to=parseVersion(meta3.to)?.major;if(from===void 0||to===void 0||from>=curated.major||to<curated.major)return[];let out=[];for(let{file,text}of files)text.split(`
|
|
340
|
+
`)[0]??d.message})),...cause.anchorOnly||cause.config?{anchorOnly:!0}:{},...cause.anchorOnly&&!cause.config?{root:sharedRoot(cause)}:{},severity:"breaking",confidence:1,fixability:cause.anchorOnly||cause.config?"assisted":"unknown",reason:cause.anchorOnly||cause.config?cause.reason:UNATTRIBUTED_REASON}}),...plainFindings(single,meta3,surfaceB,unresolvedFiles)]}function sharedRoot(cause){return{name:cause.name,file:cause.file,line:cause.line,reason:cause.reason}}function plainFindings(diagnostics2,meta3,surfaceB,unresolvedFiles){let unresolved=new Set(unresolvedFiles),shaky=new Set(surfaceB.symbols.filter(s=>s.file!==void 0&&unresolved.has(s.file)).map(s=>s.path.split(/[.#[]/).pop()??s.path));return diagnostics2.map(d=>{let usage={file:d.file,line:d.line,column:d.column,endLine:d.endLine,endColumn:d.endColumn,symbolPath:`TS${d.code}`,access:"read",snippet:d.snippet??"",via:"inferred",compileError:d.message},change={...meta3,path:`TS${d.code}`,kind:"type",severity:"breaking",source:"types",confidence:1,evidence:"checker",notes:normalizeMessage(d.message)},inconclusive=quotedNames(d.message).some(n=>shaky.has(n));return{change,usage,...d.root?{root:sharedRoot(d.root)}:{},severity:inconclusive?"unverified":"breaking",confidence:1,fixability:"unknown",reason:inconclusive?`${UNATTRIBUTED_REASON}; a type it names is declared in a target file with unresolved imports, compile check inconclusive`:UNATTRIBUTED_REASON}})}var rootKey=r=>`${r.file}:${r.line}:${r.name}`;function callSitesLine(sites){let workspaces=new Set(sites.map(s=>s.workspace).filter(w=>w!==void 0)),count3=(n,noun)=>`${n} ${noun}${n===1?"":"s"}`;return`${count3(sites.length,"call site")}${workspaces.size>1?` in ${count3(workspaces.size,"workspace")}`:""}`}function foldSharedRoots(findings,workspaceOf2){let groups2=new Map;for(let f of findings){if(!f.root)continue;let list=groups2.get(rootKey(f.root))??[];list.push(f),groups2.set(rootKey(f.root),list)}let folded2=new Map;for(let group of groups2.values()){let anchors=group.filter(f=>f.anchorOnly&&f.change.kind==="cause"),sites=group.filter(f=>!anchors.includes(f));if(sites.length===0||anchors.length+sites.length<2)continue;let root=group[0].root,evidence=[...anchors.flatMap(a=>a.downstream??[]),...sites.map(f=>({file:f.usage.file,line:f.usage.line,column:f.usage.column,snippet:f.usage.snippet,code:f.usage.compileCode??Number(/^TS(\d+)$/.exec(f.change.path)?.[1]??0),message:f.usage.compileError??f.reason,...workspaceOf2(f)!==void 0?{workspace:workspaceOf2(f)}:{}}))].sort((a,b)=>a.file.localeCompare(b.file)||a.line-b.line),first=anchors[0]??sites[0],rules2=[...new Set(group.map(f=>f.rule).filter(r=>r!==void 0))],anchor={...first,change:{...first.change,path:`cause:${root.name}`,kind:"cause",severity:"breaking",evidence:"checker",notes:describeCluster(evidence.length,{...root,anchorOnly:!0})},usage:{file:root.file,line:root.line,column:1,endLine:root.line,endColumn:1,symbolPath:`cause:${root.name}`,access:"read",snippet:"",via:"inferred"},downstream:evidence,anchorOnly:!0,root,severity:"breaking",confidence:1,fixability:"assisted",reason:root.reason,details:[callSitesLine(evidence),...(first.details??[]).filter(d=>!/^\d+ call sites?/.test(d))],evidence:"compiler",...rules2.length===1?{rule:rules2[0]}:{}};folded2.set(first,anchor);for(let f of group)f!==first&&folded2.set(f,void 0)}return folded2.size===0?findings:findings.flatMap(f=>folded2.has(f)?folded2.get(f)?[folded2.get(f)]:[]:[f])}function groupRootCauses(report){if(report.name!=="typescript"||parseVersion(report.target)?.major!==7)return;let codeOf=f=>f.usage.compileCode??Number(/^TS(\d+)$/.exec(f.change.path)?.[1]??0),missing=report.findings.filter(f=>f.severity==="breaking"&&f.evidence==="compiler"&&[2305,2339,2551,2614,2694,2724].includes(codeOf(f)));if(missing.length<2)return;let first=missing[0],cause={...first,rule:"typescript-no-js-api",change:{...first.change,kind:"cause",path:"cause:typescript-no-js-api"},reason:"TypeScript 7 has no JavaScript compiler API in its main entry",details:["Migrate compiler API consumers separately; changing individual missing members does not restore the API."],downstream:missing.map(f=>({file:f.usage.file,line:f.usage.line,column:f.usage.column,snippet:f.usage.snippet,code:codeOf(f),message:f.usage.compileError??f.reason}))};report.findings=[cause,...report.findings.filter(f=>!missing.includes(f))]}function arbitrateUnchecked(findings,runtime,loadRoot){return findings.map(f=>{if(f.usage.checked!==!1||f.change.kind==="module-format"||f.change.kind==="deprecated"||f.change.path.startsWith("runtime:")||f.severity!=="breaking"&&f.severity!=="unverified")return f;let hit=runtime&&!runtime.inconclusive?runtimeConfirms(f.usage,runtime.changes,loadRoot):void 0;return hit?{...f,severity:"breaking",reason:`${stripVerdict(f.reason)}; confirmed at runtime (${runtime?.node}): ${hit.detail}`}:runtime?runtime.inconclusive?{...f,severity:"unverified",reason:isNativeProbeSkip(runtime.inconclusive)?stripVerdict(f.reason):`${stripVerdict(f.reason)}; the repository does not type-check this file and the runtime probe was inconclusive (${runtime.inconclusive})`}:isScoped(f.usage.symbolPath)?{...f,severity:"unverified",reason:`${stripVerdict(f.reason)}; the repository does not type-check this file and the runtime probe only loads the package root`}:{...f,severity:"info",fixability:"none",confidence:Math.min(f.confidence,.3),reason:`${f.change.source==="types"&&f.usage.compileError!==void 0?"the compiler":"the diff"} says ${f.change.kind==="type"&&f.usage.compileError!==void 0?"this would not type-check":f.change.kind} but the repository does not type-check this file, and the target loads with the same shape at runtime (${runtime.node})`}:{...f,severity:"unverified",reason:`${stripVerdict(f.reason)}; the repository does not type-check this file and the runtime probe did not run`}})}function runtimeConfirms(usage,changes,loadRoot){let loader=usage.loader??"import",own=changes.filter(c=>c.loader===loader),throws=own.find(c=>c.kind==="require-throws"||c.kind==="import-throws");if(throws)return throws;if(isScoped(usage.symbolPath))return;let paths=usage.canonicalPath?[usage.symbolPath,usage.canonicalPath]:[usage.symbolPath];for(let path of paths){let{root,member}=split(path,loadRoot);if(root){if(member===void 0){if(usage.access==="call"){let hit=own.find(c=>c.kind==="callable-lost"||c.kind==="namespace-instead");if(hit)return hit}if(usage.access==="construct"){let hit=own.find(c=>c.kind==="constructable-lost"||c.kind==="callable-lost"||c.kind==="namespace-instead");if(hit)return hit}continue}let gone2=own.find(c=>c.kind==="key-removed"&&c.key===member);if(gone2)return gone2;continue}let key2=member===void 0?path:path.slice(0,path.length-member.length-1),gone=own.find(c=>c.kind==="key-removed"&&c.key===topKey(key2));if(gone)return gone}}function split(path,loadRoot){let top=topKey(path);if(!(path==="."||top===loadRoot||top==="default"))return{root:!1,member:path.includes(".")?path.slice(top.length+1):void 0};let rest=path.slice(top.length),m=/^[.#]([^.#[(]+)/.exec(rest);return m?{root:!0,member:m[1]}:{root:!0}}function topKey(path){let m=/^[^.#[(]+/.exec(path);return m?m[0]:path}function isScoped(path){return path.startsWith('"')}function stripVerdict(reason){return reason.replace(/; the compiler cannot type this file.*$/,"").replace(/; the installed version ships no declarations.*$/,"")}var TIER_LEGEND="verified: migration pack \xB7 generic: no pack \xB7 in both, breaking only if the compiler, the runtime probe or the pack confirms it";function tierOf(packs,name,installed,target){return packs.find(candidate=>candidate.name===name)?.supports(installed,target)?"verified":"generic"}function evidenceOf(f,runtime,loadRoot){if(f.change.source==="pack")return"pack";if(f.usage.compileError!==void 0||/^TS\d+$/.test(f.change.path)||f.change.path.startsWith("cause:"))return"compiler";if(f.change.kind==="module-format")return"module-format";if(runtime&&!runtime.inconclusive&&runtimeConfirms(f.usage,runtime.changes,loadRoot))return"runtime";if((f.change.kind==="removed"||f.change.kind==="moved")&&f.usage.access==="import"&&!/[.#[]/.test(f.change.path))return"removed-export"}function confirmBreaking(findings,evidence){return findings.map(f=>{let found=evidence(f);return f.severity!=="breaking"?found?{...f,evidence:found}:f:found?{...f,evidence:found}:{...f,severity:"unverified",reason:`${f.reason}; not confirmed by the compiler or the runtime probe`}})}var count2=(n,noun)=>`${n} ${noun}${n===1?"":"s"}`;function coverageLine(c){if(!c)return"";let skipped=c.skipped.map(r=>`${r.reason} (${r.count})`).join(", "),compilers2=compilersPhrase(c.compilers??[]),notCompiled=(c.notCompiled??[]).map(n=>`; not compiled: ${n.path} (${n.reason})`);return`compiled ${c.compiled} of ${count2(c.total,"file")} in ${count2(c.workspaces,"workspace")}${compilers2?` with ${compilers2}`:""}${skipped?`; skipped: ${skipped}`:""}${notCompiled.join("")}`}function compilersPhrase(compilers2){let versions=own=>[...new Set(compilers2.filter(c=>c.own===own).map(c=>c.version))].sort().join(" and ");return[...versions(!0)?[`the repo's TypeScript ${versions(!0)}`]:[],...versions(!1)?[`the bundled TypeScript ${versions(!1)}`]:[]].join(" and ")}function verdictOf(p,notCompiled){let breaking=p.findings.filter(f=>f.severity==="breaking").length,coverage=p.compile?.coverage;if(p.compile!==void 0&&p.compile.skipped===void 0){let newErrors=p.compile.newErrors;if(coverage&&coverage.compiled<coverage.total){let partly=coverageLine(coverage);return{breaking,compiledAgainst:p.target,...newErrors!==void 0?{newErrors}:{},partlyVerified:partly,summary:`${breaking} breaking \xB7 types partly verified: ${partly}`}}return{breaking,compiledAgainst:p.target,...newErrors!==void 0?{newErrors}:{},summary:`${breaking} breaking \xB7 compiled against ${p.target}${newErrors!==void 0?`: ${count2(newErrors,"new type error")}`:""}`}}let reason=p.compile?.skipped??notCompiled??"the compiler did not run";return{breaking,notVerified:reason,summary:`${breaking} breaking \xB7 types not verified: ${reason}`}}async function progress(listener,event,work){let start=performance.now();listener?.({...event,state:"start"});try{return await work()}finally{listener?.({...event,state:"done",ms:performance.now()-start})}}var defaults2=new Set(["node_modules",".git","coverage","dist","build","bower_components","vendor"]),defaultSkip=name=>defaults2.has(name)?`default: ${name}`:/(?:\.min\.js|\.bundle\.js|\.map)$/i.test(name)?"generated files (*.min.js, *.bundle.js, *.map)":void 0;function directoryRules(dir,entries){if(!entries.includes(".gitignore"))return[];let matcher=(0,import_ignore.default)().add(readFileSync20(join29(dir,".gitignore"),"utf8"));return[{base:dir,test:path=>matcher.test(path)}]}function ignoredBy(path,directory,rules2){let pattern;for(let rule of rules2){let local=relative14(rule.base,path).replaceAll("\\","/")+(directory?"/":""),result=rule.test(local);result.ignored?pattern=result.rule?.pattern??"(matching pattern unavailable)":result.unignored&&(pattern=void 0)}return pattern}async function scanImports(root,names,workspaces,configs,evidence,stats,tasks,concurrency){let start=performance.now(),counts={sourceMs:0,configMs:0,visitedFiles:0,sourceFiles:0,configFiles:0,assetFiles:0,parsedFiles:0,workers:0,candidateSourceFiles:0,ignoredSourceFiles:0,ignoredSourceRules:{},skipped:{}},result=new Map,jobs=[],ignoredRules=new Map,skip=(reason,directory)=>{let skipped=counts.skipped,count3=skipped[reason]??{files:0,directories:0};skipped[reason]=count3,count3[directory?"directories":"files"]++},wanted=new Set(names),packageOf2=specifier=>{let name=specifier.startsWith("@")?specifier.split("/").slice(0,2).join("/"):specifier.split("/")[0];return name&&wanted.has(name)?name:void 0},isSource=file=>/\.[cm]?[jt]sx?$/.test(file)&&!/\.d\.[cm]?ts$/.test(file)&&!isConfig(file),candidate=(file,pattern)=>{isSource(file)&&(counts.candidateSourceFiles=(counts.candidateSourceFiles??0)+1,pattern!==void 0&&(counts.ignoredSourceFiles=(counts.ignoredSourceFiles??0)+1,ignoredRules.set(pattern,(ignoredRules.get(pattern)??0)+1)))},auditIgnored=(dir,pattern)=>{for(let entry of readdirSync9(dir,{withFileTypes:!0})){let directory=entry.isDirectory();directory||counts.visitedFiles++;let builtIn=entry.isSymbolicLink()?"symbolic links":defaultSkip(entry.name);if(builtIn){skip(builtIn,directory);continue}let path=join30(dir,entry.name);skip(".gitignore",directory),directory?auditIgnored(path,pattern):entry.isFile()&&candidate(relative15(root,path).replaceAll("\\","/"),pattern)}},walk=(dir,inherited=[])=>{let entries=readdirSync9(dir,{withFileTypes:!0}).sort((a,b)=>a.name.localeCompare(b.name)),started=performance.now(),rules2=[...inherited,...directoryRules(dir,entries.filter(e=>e.isFile()).map(e=>e.name))];counts.configMs+=performance.now()-started;for(let entry of entries){let path=join30(dir,entry.name),directory=entry.isDirectory();directory||counts.visitedFiles++;let reason=entry.isSymbolicLink()?"symbolic links":defaultSkip(entry.name);if(reason){skip(reason,directory);continue}let pattern=ignoredBy(path,directory,rules2);if(pattern!==void 0){skip(".gitignore",directory),directory?auditIgnored(path,pattern):entry.isFile()&&candidate(relative15(root,path).replaceAll("\\","/"),pattern);continue}if(directory){walk(path,rules2);continue}if(!entry.isFile()){skip("non-regular files",!1);continue}let file=relative15(root,path).replaceAll("\\","/");if(candidate(file),isConfig(file)){let started2=performance.now();configs?.push(scanConfig(file,readFileSync21(path,"utf8"),names,evidence,tasks)),counts.configFiles++,counts.configMs+=performance.now()-started2;continue}if(/\.(?:scss|sass|less|css|html?)$/i.test(entry.name)){counts.assetFiles++;let text2=readFileSync21(path,"utf8");if(!names.some(name=>text2.includes(name))){skip("no dependency text",!1);continue}let add=(specifier,reason2)=>{let clean=specifier.replace(/^~/,"").replace(/^(?:\.\.?\/|\/)*node_modules\//,""),name=packageOf2(clean);if(name){let reasons=evidence?.get(name)??[];reasons.includes(reason2)||reasons.push(reason2),evidence?.set(name,reasons)}};if(/\.html?$/i.test(entry.name)){let html=text2.replace(/<!--[\s\S]*?-->/g,"");for(let tag of html.matchAll(/<(script|link)\b[^>]*>/gi)){let attr=tag[1]?.toLowerCase()==="script"?"src":"href",value=tag[0].match(new RegExp(`\\s${attr}\\s*=\\s*(?:"([^"<>]*)"|'([^'<>]*)'|([^\\s>]+))`,"i")),url=value?.[1]??value?.[2]??value?.[3];url&&/^(?:\.\.?\/|\/)*node_modules\//.test(url)&&add(url,"referenced by HTML assets")}}else{let styles=text2.replace(/\/\*[\s\S]*?\*\//g,"").replace(/^\s*\/\/.*$/gm,"");for(let rule of styles.matchAll(/@(import|use|forward)\s+([^;\n]+)/gi)){let specifiers=(rule[2]??"").matchAll(/(?:^|,)\s*(?:\([^)]*\)\s*)?(?:url\(\s*(?:"([^"]+)"|'([^']+)'|([^\s)"']+))\s*\)|"([^"]+)"|'([^']+)')/g);for(let value of specifiers)if(add(value.slice(1).find(Boolean)??"","referenced by stylesheet imports"),rule[1]?.toLowerCase()!=="import")break}}continue}if(!/\.[cm]?[jt]sx?$/.test(entry.name)||/\.d\.[cm]?ts$/.test(entry.name))continue;counts.sourceFiles++;let workspace=[...workspaces].sort((a,b)=>b.length-a.length).find(w=>w!=="."&&file.startsWith(`${w}/`))??".",text=readFileSync21(path,"utf8"),gate=sourceCandidate(text,names);if(gate){skip(gate==="text"?"no dependency text":"no dependency imports (lexer)",!1);continue}jobs.push({file,text,workspace})}};walk(resolve11(root)),counts.ignoredSourceRules=Object.fromEntries(ignoredRules);let ignored=counts.ignoredSourceFiles??0,candidates=counts.candidateSourceFiles??0;if(ignored>candidates/2){let rules2=Object.entries(counts.ignoredSourceRules??{}).sort(([a],[b])=>a.localeCompare(b)).map(([pattern,files])=>`${JSON.stringify(pattern)} (${files})`).join(", ");counts.warnings=[`Usage warning: .gitignore skipped ${ignored} of ${candidates} candidate source files (${Math.round(100*ignored/candidates)}%); rules: ${rules2}. Usage may be understated.`]}counts.parsedFiles=jobs.length;let cpus=Math.max(1,Math.min(4,availableParallelism())),workerCount=concurrency??(jobs.length>=32&&jobs.reduce((n,job)=>n+job.text.length,0)>=8e6?cpus:0),merge2=entries=>{for(let[name,found]of entries){let value=result.get(name)??{files:[],callSites:0,references:0,symbols:{},workspaces:[]};value.files.push(...found.files),value.callSites+=found.callSites,value.references+=found.references;for(let[symbol,count3]of Object.entries(found.symbols))value.symbols[symbol]=(value.symbols[symbol]??0)+count3;value.workspaces=[...new Set([...value.workspaces,...found.workspaces])].sort(),result.set(name,value)}};if(workerCount>1&&jobs.length>1){let size=Math.min(workerCount,jobs.length);counts.workers=size;let batches=Array.from({length:size},()=>[]);jobs.forEach((job,i)=>{batches[i%size]?.push(job)});let results=await Promise.all(batches.map(batch=>runSourceWorker(batch,names)));for(let batch of results)for(let entries of batch)merge2(entries)}else for(let job of jobs)merge2([...parseSource(job,names)]);for(let value of result.values())value.files.sort();return counts.sourceMs=performance.now()-start-counts.configMs,stats&&Object.assign(stats,counts),result}async function runSourceWorker(jobs,names){let fromSource=import.meta.url.endsWith(".ts"),url=new URL(fromSource?"./list-worker.ts":"./list-worker.js",import.meta.url);return new Promise((resolve15,reject)=>{let entry=fromSource?`import('tsx/esm/api').then(({ tsImport }) => tsImport(${JSON.stringify(url.href)}, ${JSON.stringify(import.meta.url)}));`:url,worker=new Worker(entry,{workerData:{jobs,names},eval:fromSource,execArgv:[]}),settled=!1;worker.once("message",result=>{settled=!0,worker.terminate().then(()=>resolve15(result))}),worker.once("error",error=>{settled=!0,worker.terminate().then(()=>reject(error))}),worker.once("exit",code=>{settled||reject(new Error(`source worker exited with ${code}`))})})}function packFixability(finding,source,pack){return["breaking","unverified","deprecated"].includes(finding.severity)&&pack.transform(source,finding,{from:finding.change.from,to:finding.change.to,includeDeprecated:!0}).applied?{...finding,fixability:"mechanical"}:finding}var scopeOf2=name=>name.startsWith("@")?name.split("/")[0]:void 0,familyOf=name=>{let scope=scopeOf2(name);return scope&&scope!=="@types"?scope:void 0},EXACT2=/^\d+\.\d+\.\d+(?:-[\w.]+)?$/,inRange=(version,range)=>{try{return satisfies(version,range)}catch{return!1}};function dependencyGroups(packages,metadata,targets=new Map){let names=[...new Set(packages.map(p=>p.name))],parent=new Map(names.map(name=>[name,name])),find=name=>{let root=name;for(;parent.get(root)!==root;)root=parent.get(root);return root},edges=[],link=(a,b,kind)=>{a!==b&&(edges.push({a,b,link:kind}),parent.set(find(a),find(b)))},share=(a,b)=>a.workspaces.some(w=>b.workspaces.includes(w));for(let[i,p]of packages.entries()){for(let other of packages.slice(i+1)){let family=familyOf(p.name);family&&family===familyOf(other.name)&&share(p,other)&&link(p.name,other.name,"family")}for(let[peer,range]of Object.entries(targets.get(p.name)?.peerDependencies??{}))if(!(range==="*"||!range.trim()))for(let other of packages)other.name===peer&&share(p,other)&&!inRange(other.current,range)&&inRange(other.latest,range)&&link(p.name,other.name,"peer link")}let moves=new Map;for(let p of packages){let target=targets.get(p.name)?.dependencies??{};for(let m of metadata.get(p.name)??[])for(let[dep,pinned]of Object.entries(m.dependencies??{})){let next=target[dep];if(!EXACT2.test(pinned)||!next||!EXACT2.test(next)||next===pinned)continue;let key2=JSON.stringify([dep,pinned,next]),move=moves.get(key2)??{dep,movers:[]};move.movers.includes(p)||move.movers.push(p),moves.set(key2,move)}}for(let{dep,movers}of moves.values())for(let[i,p]of movers.entries())for(let other of movers.slice(i+1))share(p,other)&&link(p.name,other.name,`shared ${dep}`);let components=new Map;for(let p of packages){let key2=find(p.name);components.set(key2,[...components.get(key2)??[],p])}let peersOf=name=>[...new Set([...metadata.get(name)??[],targets.get(name)??{}].flatMap(m=>Object.keys(m.peerDependencies??{})))],named=[...components.values()].filter(members=>new Set(members.map(p=>p.name)).size>1).map(members=>{let inGroup=new Set(members.map(p=>p.name)),own=edges.filter(e=>inGroup.has(e.a)&&inGroup.has(e.b)),degree=name=>new Set(own.filter(e=>e.link!=="family"&&(e.a===name||e.b===name)).map(e=>e.a===name?e.b:e.a).filter(n=>!familyOf(name)||familyOf(n)!==familyOf(name))).size,peersInGroup=name=>peersOf(name).filter(peer=>inGroup.has(peer)).length,hub=name=>!familyOf(name)&&!members.some(m=>peersOf(m.name).includes(name)),lead=[...members].sort((a,b)=>degree(b.name)-degree(a.name)||Number(hub(b.name))-Number(hub(a.name))||peersInGroup(b.name)-peersInGroup(a.name)||+(b.classification==="used")-+(a.classification==="used")||b.usage.files-a.usage.files||a.name.localeCompare(b.name))[0],families=[...new Set(own.filter(e=>e.link==="family").map(e=>familyOf(e.a)))].sort(),links=[...new Set(own.filter(e=>e.link!=="family"&&(!familyOf(e.a)||familyOf(e.a)!==familyOf(e.b))).map(e=>e.link))],leadFamily=familyOf(lead.name),family=leadFamily&&families.includes(leadFamily)?leadFamily:void 0;for(let p of members){if(p.name===lead.name||familyOf(p.name)&&familyOf(p.name)===familyOf(lead.name))continue;let peerOf=members.filter(m=>peersOf(m.name).includes(p.name)).map(m=>m.name).sort();peerOf.length&&(p.peerOf=peerOf,p.classification==="possibly-unused"&&lead.classification!=="possibly-unused"&&(p.classification="peer",p.reasons=peerOf.map(name=>`peer of ${name}`)))}members.sort((a,b)=>+!!a.peerOf-+!!b.peerOf||a.name.localeCompare(b.name)||a.current.localeCompare(b.current));let extraFamilies=families.filter(f=>f!==family);return{id:family&&!extraFamilies.length?family.slice(1):lead.name,lead:lead.name,name:[family?`${family}/*`:lead.name,...extraFamilies.map(f=>`${f}/*`)].join(" + "),reason:[...family?[`${family} family`]:[],...links.slice(0,2)].join(", ")||"family",members}}),byId=new Map;for(let group of named)byId.set(group.id,[...byId.get(group.id)??[],group]);for(let clash of byId.values())if(!(clash.length<2))for(let group of clash)group.id=group.name!==group.lead&&clash.filter(o=>o.name===group.name).length===1?group.name:group.lead;return named}function peerBlocks(packages,metadata){let blocks=new Map;for(let p of packages)for(let m of metadata.get(p.name)??[])for(let[peer,range]of Object.entries(m.peerDependencies??{})){let other=packages.find(o=>o.name===peer&&o.workspaces.some(w=>p.workspaces.includes(w)));if(!other||range==="*"||!inRange(other.current,range)||inRange(other.latest,range))continue;let label=`${other.name} ${other.latest.split(".")[0]}`,list=blocks.get(p.name)??[];list.includes(label)||blocks.set(p.name,[...list,label])}return blocks}function typesReleaseFor(published,runtimeTarget,installed){let target=parseVersion(runtimeTarget),stable2=published.filter(v=>{let p=parseVersion(v);return p!==void 0&&p.pre===void 0}).sort(compareVersions),notBelowInstalled=v=>installed===void 0||compareVersions(v,installed)>=0,newest=match2=>stable2.filter(v=>notBelowInstalled(v)&&match2(parseVersion(v))).at(-1);return target?newest(p=>p.major===target.major&&p.minor===target.minor)??newest(p=>p.major===target.major)??newest(()=>!0):newest(()=>!0)}function typesPackageOf(name){return`@types/${name.startsWith("@")?name.slice(1).replace("/","__"):name}`}function typedPackageOf(name){if(name.startsWith("@types/"))return name.slice(7).replace(/^([^_]+)__/,"@$1/")}var EXACT3=/^\d+\.\d+\.\d+(?:-[\w.]+)?$/,scopeOf3=name=>name.startsWith("@")&&!name.startsWith("@types/")?name.split("/")[0]:void 0,stable=version=>{let parsed4=parseVersion(version);return parsed4!==void 0&&parsed4.pre===void 0},accepts=(range,version)=>{try{return satisfies(version,range)}catch{return!1}},exactPins=m=>new Map(Object.entries(m.dependencies??{}).filter(([,v])=>EXACT3.test(v)));function related(lead,other){if(!lead.workspaces.some(w=>other.workspaces.includes(w)))return!1;let mentions2=(m,name)=>name in(m.dependencies??{})||name in(m.peerDependencies??{});if(mentions2(lead.manifest,other.name)||mentions2(other.manifest,lead.name))return!0;let theirs=exactPins(other.manifest);for(let[dep,version]of exactPins(lead.manifest))if(theirs.get(dep)===version)return!0;return!1}function releasedWith(lead,target,versions){let same=versions[target],range=same?.dependencies?.[lead]??same?.peerDependencies?.[lead];return same!==void 0&&range!==void 0&&accepts(range,target)}function peerConflictOf(installed,host,target,versions,lockstep=[]){if(lockstep.includes(installed.name)||releasedWith(host,target,versions))return;let current=versions[installed.version]??installed.manifest;if(current.dependencies?.[host]!==void 0)return;let range=current.peerDependencies?.[host];if(!(range===void 0||accepts(range,target)))return`${installed.name} ${installed.version} declares ${host} ${range}`}function agreeing(installed,lead,target,targetManifest,versions,lockstep=[]){let name=installed.name,pinned=targetManifest.dependencies?.[name];if(pinned&&EXACT3.test(pinned)&&versions[pinned])return{version:pinned,reason:`${lead} ${target} pins ${name} ${pinned}`};let same=versions[target],sameRange=same?.dependencies?.[lead]??same?.peerDependencies?.[lead];if(same&&sameRange!==void 0&&accepts(sameRange,target)&&target!==installed.version)return{version:target,reason:`${name} ${target} is released with ${lead} ${target} (${EXACT3.test(sameRange)?"pins":"peer"} ${sameRange})`};let current=versions[installed.version]??installed.manifest,range=current.dependencies?.[lead]??current.peerDependencies?.[lead];if(range!==void 0&&accepts(range,target)&&!lockstep.includes(name))return{version:installed.version,reason:`${name} ${installed.version} accepts ${lead} ${target}`};let candidates=Object.keys(versions).filter(stable).sort(compareVersions).reverse();for(let version of candidates){let m=versions[version]??{},range2=m.dependencies?.[lead]??m.peerDependencies?.[lead];if(!(range2===void 0||!accepts(range2,target)))return{version,reason:EXACT3.test(range2)?`${name} ${version} pins ${lead} ${target}`:`${name} ${version} accepts ${lead} ${target} (${range2})`}}let leadPins=exactPins(targetManifest);for(let version of candidates){let shared=[...exactPins(versions[version]??{})].filter(([dep])=>leadPins.has(dep));if(shared.length>0&&shared.every(([dep,v])=>leadPins.get(dep)===v))return{version,reason:`${name} ${version} pins ${shared.map(([dep,v])=>`${dep} ${v}`).join(", ")}, as ${lead} ${target} does`}}}function visibleFrom(dep,host){return dep.workspaces.some(d=>host.workspaces.some(h=>h===d||d==="."||h.startsWith(`${d}/`)))}function typesOf(dep,host){return typedPackageOf(dep.name)===host.name&&visibleFrom(dep,host)}function typesMove(dep,host,hostTarget,versions){let version=typesReleaseFor(Object.keys(versions),hostTarget,dep.version);if(version!==void 0)return{version,reason:`${dep.name} ${version} types ${host} ${hostTarget}`}}async function companionsOf(input){let none={companions:[],conflicts:[],peerConflicts:[]},lead=input.installed.find(d=>d.name===input.name);if(!lead)return none;let targetManifest=(await input.manifests(input.name))[input.target];if(!targetManifest)return none;let scope=scopeOf3(lead.name),members=[lead],families=new Set;scope&&families.add(scope);let grow=()=>{let grew=!1;for(let d of input.installed){if(members.includes(d)||d.name===lead.name)continue;let host=members.find(m=>related(m,d)||typesOf(d,m)),scope2=scopeOf3(d.name),family=scope2!==void 0&&families.has(scope2)&&d.workspaces.some(w=>lead.workspaces.includes(w));!host&&!family||(members.push(d),host&&scope2!==void 0&&families.add(scope2),grew=!0)}return grew};for(;grow(););let candidates=members.filter(d=>d!==lead);if(candidates.length===0)return none;let decided=new Map([[lead.name,{version:input.target,manifest:targetManifest}]]),moves=new Map,typesLinked=new Set,peerConflicts=new Map,names=new Set(members.map(m=>m.name));for(let progress2=!0,waitForTyped=!0;progress2||waitForTyped;){progress2||(waitForTyped=!1),progress2=!1;for(let c of candidates){if(moves.get(c.name)!==void 0)continue;let typed2=typedPackageOf(c.name),typesHost=typed2!==void 0&&decided.has(typed2)?input.installed.find(d=>d.name===typed2&&typesOf(c,d)):void 0;if(!typesHost&&typed2!==void 0&&names.has(typed2)&&waitForTyped)continue;let versions=await input.manifests(c.name),move;if(typesHost)move=typesMove(c,typed2,decided.get(typed2)?.version,versions),move&&typesLinked.add(c.name);else for(let[host,at]of decided){let hostDep=input.installed.find(d=>d.name===host);if(!hostDep||!related(hostDep,c))continue;let left=peerConflictOf(c,host,at.version,versions,input.lockstep);if(left){peerConflicts.set(c.name,left);continue}if(move=agreeing(c,host,at.version,at.manifest,versions,input.lockstep),move){peerConflicts.delete(c.name);break}}moves.set(c.name,move),move&&(decided.set(c.name,{version:move.version,manifest:versions[move.version]??{}}),progress2=!0)}}let listed2=(d,latest)=>({name:d.name,current:d.version,latest,workspaces:d.workspaces,classification:"used",reasons:[],usage:{files:d===lead?1:0,callSites:0,references:0,workspaces:d.workspaces}}),packages=[listed2(lead,input.target),...candidates.map(c=>listed2(c,moves.get(c.name)?.version??c.version))],metadata=new Map(input.installed.map(d=>[d.name,[d.manifest]])),targets=new Map([[lead.name,targetManifest]]);for(let c of candidates){let move=moves.get(c.name),manifest2=move&&(await input.manifests(c.name))[move.version];manifest2&&targets.set(c.name,manifest2)}let group=dependencyGroups(packages,metadata,targets).find(g=>g.members.some(m=>m.name===lead.name)),inGroup=new Set((group?.members??[listed2(lead,input.target)]).map(m=>m.name));for(let c of candidates)input.lockstep?.includes(c.name)&&moves.get(c.name)!==void 0&&inGroup.add(c.name);for(let grew=!0;grew;){grew=!1;for(let c of candidates){if(inGroup.has(c.name)||moves.get(c.name)===void 0)continue;let typed2=typedPackageOf(c.name);(typesLinked.has(c.name)&&typed2!==void 0&&inGroup.has(typed2)||dependencyGroups(packages,metadata,targets).some(g=>g.members.some(m=>m.name===c.name)&&g.members.some(m=>inGroup.has(m.name))))&&(inGroup.add(c.name),grew=!0)}}if(inGroup.size<2)return none;let companions=[],conflicts=[];for(let member of candidates.filter(c=>inGroup.has(c.name))){let move=moves.get(member.name);if(!(!move&&peerConflicts.has(member.name))){if(!move){conflicts.push(`${member.name} ${member.version} has no release that agrees with ${lead.name} ${input.target}`);continue}move.version!==member.version&&companions.push({name:member.name,from:member.version,to:move.version,reason:move.reason})}}let typed=[...new Set(companions.filter(c=>typesLinked.has(c.name)).map(c=>typedPackageOf(c.name)))],reason=[group?.reason,typed.length?`types for ${typed.join(", ")}`:void 0].filter(Boolean).join(", ");return{companions:companions.sort((a,b)=>a.name.localeCompare(b.name)),conflicts,peerConflicts:[...peerConflicts.values()].sort(),...reason?{reason}:{}}}function releaseGroups(candidates){let byName=new Map(candidates.map(c=>[c.name,c])),keyOf3=c=>{if(!c.name.startsWith("@"))return;let major=parseVersion(c.installed)?.major;return major===void 0?void 0:`${c.name.split("/")[0]}@${major}`},parent=new Map,find=n=>{let root=n;for(;parent.get(root)!==root;)root=parent.get(root);return root};for(let c of candidates)parent.set(c.name,c.name);let viaShared=new Map;for(let c of candidates){let key2=keyOf3(c);if(key2===void 0)continue;let scope=c.name.split("/")[0];for(let dep of c.dependsOn){let other=byName.get(dep);if(other){other.name.startsWith(`${scope}/`)&&parent.set(find(c.name),find(other.name));continue}if(!dep.startsWith(`${scope}/`))continue;let sharedKey=`${key2}:${dep}`,earlier=viaShared.get(sharedKey);earlier?parent.set(find(c.name),find(earlier)):viaShared.set(sharedKey,c.name)}}let groups2=new Map;for(let c of candidates){let root=find(c.name),list=groups2.get(root)??[];list.push(c.name),groups2.set(root,list)}return[...groups2.values()].filter(g=>g.length>1).map(g=>g.sort())}function groupName(members){let first=members[0];return members.length>1?`${first.split("/")[0]}/*`:first}var SOURCE3=/\.(?:[cm]?[jt]sx?)$/,SKIPPED4=new Set(["node_modules","dist","build","coverage",".git",".next",".turbo"]);function importedByText(root,workspace,names,nested=[]){if(names.length===0)return[];let dir=resolve12(root,workspace),exclude=new Set(nested.filter(w=>w!==workspace).map(w=>resolve12(root,w)).filter(other=>other.startsWith(`${dir}/`))),escaped=names.map(n=>n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),pattern=new RegExp(`(?:\\bfrom\\s*|\\bimport\\s*\\(?\\s*|\\brequire\\s*\\(\\s*|\\bimport\\s+)["'](${escaped})(?:\\/[^"']*)?["']`,"g"),found=new Set,walk=at=>{let entries;try{entries=readdirSync10(at)}catch{return}for(let name of entries){if(SKIPPED4.has(name))continue;let path=join31(at,name);if(exclude.has(path))continue;let directory=!1;try{directory=statSync3(path).isDirectory()}catch{continue}if(directory){walk(path);continue}if(!SOURCE3.test(name)||/\.d\.[cm]?ts$/.test(name))continue;let text;try{text=readFileSync22(path,"utf8")}catch{continue}for(let match2 of text.matchAll(pattern))match2[1]&&found.add(match2[1]);if(found.size===names.length)return}};return walk(dir),[...found].sort()}function importFileCounts(root,names){let counts=new Map(names.map(n=>[n,0]));if(names.length===0)return counts;let escaped=names.map(n=>n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),pattern=new RegExp(`(?:\\bfrom\\s*|\\bimport\\s*\\(?\\s*|\\brequire\\s*\\(\\s*|\\bimport\\s+)["'](${escaped})(?:\\/[^"']*)?["']`,"g"),walk=at=>{let entries;try{entries=readdirSync10(at)}catch{return}for(let name of entries){if(SKIPPED4.has(name))continue;let path=join31(at,name),directory=!1;try{directory=statSync3(path).isDirectory()}catch{continue}if(directory){walk(path);continue}if(!SOURCE3.test(name)||/\.d\.[cm]?ts$/.test(name))continue;let text;try{text=readFileSync22(path,"utf8")}catch{continue}let inFile=new Set;for(let match2 of text.matchAll(pattern))match2[1]&&inFile.add(match2[1]);for(let name2 of inFile)counts.set(name2,(counts.get(name2)??0)+1)}};return walk(resolve12(root)),counts}var MB=1024**2;function freeMemoryBytes(){try{if(platform()==="linux"){let available=/^MemAvailable:\s+(\d+) kB/m.exec(readFileSync23("/proc/meminfo","utf8")),bytes=available?Number(available[1])*1024:freemem();for(let[limitFile,usedFile]of[["/sys/fs/cgroup/memory.max","/sys/fs/cgroup/memory.current"],["/sys/fs/cgroup/memory/memory.limit_in_bytes","/sys/fs/cgroup/memory/memory.usage_in_bytes"]])try{let limit=Number(readFileSync23(limitFile,"utf8").trim()),used=Number(readFileSync23(usedFile,"utf8").trim());Number.isFinite(limit)&&Number.isFinite(used)&&(bytes=Math.min(bytes,Math.max(0,limit-used)))}catch{}return bytes}if(platform()==="darwin"){let percent=/memory free percentage: (\d+)%/.exec(execFileSync2("/usr/bin/memory_pressure",["-Q"],{encoding:"utf8",timeout:1e3}));if(percent)return totalmem()*Number(percent[1])/100}}catch{}return freemem()}function memoryPolicy(freeBytes=freeMemoryBytes(),cpus=availableParallelism2(),requested=cpus,estimateMb=1024,env=process.env){let budgetMb=Math.floor(freeBytes/MB*.6),workers=Math.max(1,Math.min(cpus,requested,Math.floor(budgetMb/(estimateMb*1.4)))),limit=Math.max(0,Math.floor(budgetMb/workers/1.4)),override=Number(env.UPTIDE_WORKER_HEAP_MB);return{workers,heapMb:Math.min(8192,limit,Number.isFinite(override)&&override>=128?Math.floor(override):8192),budgetMb}}function scopedMemoryEstimate(dir,roots){let config=join32(dir,"tsconfig.json"),parsed4=existsSync19(config)?import_ts_morph18.ts.getParsedCommandLineOfConfigFile(config,{},{...import_ts_morph18.ts.sys,onUnRecoverableConfigFileDiagnostic:()=>{}}):void 0,options=parsed4?.options??{target:import_ts_morph18.ts.ScriptTarget.ES2022,module:import_ts_morph18.ts.ModuleKind.ESNext,moduleResolution:import_ts_morph18.ts.ModuleResolutionKind.Bundler,strict:!0},sources=workspaceSourceMap(dir,readInstalled(dir).installed);options.paths={...options.paths,...sources.paths};let pending=new Set(roots??parsed4?.fileNames??[]),cache=import_ts_morph18.ts.createModuleResolutionCache(dir,p=>p,options),addType=(name,containing)=>{let found=import_ts_morph18.ts.resolveTypeReferenceDirective(name,containing,options,import_ts_morph18.ts.sys).resolvedTypeReferenceDirective;found?.resolvedFileName&&pending.add(found.resolvedFileName)};for(let name of import_ts_morph18.ts.getAutomaticTypeDirectiveNames(options,import_ts_morph18.ts.sys))addType(name,join32(dir,"__uptide__.ts"));pending.add(import_ts_morph18.ts.getDefaultLibFilePath(options));let sourceBytes=0,declarationBytes=0;for(let file of pending){let text=import_ts_morph18.ts.sys.readFile(file);if(text===void 0)continue;/\.d\.[cm]?ts$/.test(file)?declarationBytes+=Buffer.byteLength(text):sourceBytes+=Buffer.byteLength(text);let info=import_ts_morph18.ts.preProcessFile(text,!0,!0),mode=import_ts_morph18.ts.getImpliedNodeFormatForFile(file,void 0,import_ts_morph18.ts.sys,options);for(let imp of info.importedFiles){let found=import_ts_morph18.ts.resolveModuleName(imp.fileName,file,options,import_ts_morph18.ts.sys,cache,void 0,mode).resolvedModule;found?.resolvedFileName&&pending.add(found.resolvedFileName)}for(let ref of info.referencedFiles)pending.add(resolve13(dirname19(file),ref.fileName));for(let ref of info.typeReferenceDirectives)addType(ref.fileName,file);for(let ref of info.libReferenceDirectives)pending.add(join32(dirname19(import_ts_morph18.ts.getDefaultLibFilePath(options)),`lib.${ref.fileName.toLowerCase()}.d.ts`))}return{heapMb:Math.ceil(512+sourceBytes/MB*150+declarationBytes/MB*24+(roots??parsed4?.fileNames??[]).length*4.5),sourceBytes,declarationBytes,files:pending.size}}function estimateScopedHeapMb(dir,roots){return scopedMemoryEstimate(dir,roots).heapMb}function readManifest3(dir){try{return JSON.parse(readFileSync24(join33(dir,"package.json"),"utf8"))}catch{return}}function fileSupportsRequire(file,type){return file.endsWith(".cjs")?!0:file.endsWith(".mjs")?!1:type!=="module"}function exportsSupportRequire(value,type){if(typeof value=="string")return fileSupportsRequire(value,type);if(Array.isArray(value))return value.some(v=>exportsSupportRequire(v,type));if(!value||typeof value!="object")return!1;let record=value;return"require"in record&&record.require!==null?!0:Object.entries(record).some(([key2,v])=>key2!=="import"&&key2!=="types"&&exportsSupportRequire(v,type))}function supportsRequire(m){if(m.exports!==void 0&&m.exports!==null){let record=m.exports,root=typeof m.exports=="object"&&!Array.isArray(m.exports)&&Object.keys(record).some(k=>k.startsWith("."))?record["."]:m.exports;return exportsSupportRequire(root,m.type)}return fileSupportsRequire(m.main??"index.js",m.type)}function shipsTypes(dir,m=readManifest3(dir)){if(!m)return!1;if(m.types||m.typings||existsSync20(join33(dir,"index.d.ts"))||/"types"/.test(JSON.stringify(m.exports??{})))return!0;try{return resolveEntryPoints(dir,m.name??"",m.version??""),!0}catch{return!1}}function minimumVersion(range){let lowest;for(let alternative of range.split("||")){let first=alternative.trim().split(/\s+/)[0]??"";if(first.startsWith("<"))continue;let m=/^(?:>=|>|\^|~|=)?v?(\d+)(?:\.(\d+|x|\*))?(?:\.(\d+|x|\*))?/.exec(first);if(!m)continue;let version=`${m[1]}.${/\d/.test(m[2]??"")?m[2]:0}.${/\d/.test(m[3]??"")?m[3]:0}`;(lowest===void 0||compare3(version,lowest)<0)&&(lowest=version)}return lowest}function compare3(a,b){let pa=parseVersion(a),pb=parseVersion(b);return!pa||!pb?0:pa.major-pb.major||pa.minor-pb.minor||pa.patch-pb.patch}function requireEsmSupport(range){if(!range)return"unknown";let min=minimumVersion(range);if(!min)return"unknown";let v=parseVersion(min);return v?v.major>=23?"yes":isBareMajor(range)?v.major===22||v.major===20?"yes":"no":v.major===22?v.minor>=12?"yes":"no":v.major===20&&v.minor>=19?"yes":"no":"unknown"}function isBareMajor(range){let min=minimumVersion(range);if(!min)return!1;for(let alternative of range.split("||")){let first=alternative.trim().split(/\s+/)[0]??"",m=/^(?:>=|>|\^|~|=)?v?(\d+)(?:\.(\d+|x|\*))?/.exec(first);if(m&&`${m[1]}.${/\d/.test(m[2]??"")?m[2]:0}`===min.replace(/\.\d+$/,""))return m[2]===void 0||!/\d/.test(m[2])}return!1}function readIf(path){try{return existsSync20(path)?readFileSync24(path,"utf8"):void 0}catch{return}}function resolveNodeVersion(dirs){for(let dir of dirs){let dockerfiles=["Dockerfile","docker/Dockerfile","Dockerfile.prod","Dockerfile.production"];for(let candidate of readdirSafe3(dir))/^Dockerfile/.test(candidate)&&!dockerfiles.includes(candidate)&&dockerfiles.push(candidate);let caveat;for(let rel of dockerfiles){let text=readIf(join33(dir,rel));if(!text)continue;let m=/^FROM\s+(?:--platform=\S+\s+)?(?:[\w.-]+\/)?node:(\d+(?:\.\d+){0,2})/im.exec(text);if(m)return{range:m[1],source:rel};let custom=/^FROM\s+(?:--platform=\S+\s+)?(\S+)/im.exec(text);custom&&caveat===void 0&&(caveat=`production Node unknown: ${rel} uses a custom base image (${custom[1]})`)}let found=resolveNodeVersionFrom(dir);if(found)return caveat?{...found,caveat}:found}}function resolveNodeVersionFrom(dir){for(let file of[".nvmrc",".node-version"]){let text=readIf(join33(dir,file))?.trim().replace(/^v/,"");if(text&&!/^(lts|node|latest)/i.test(text))return{range:text,source:file}}let tool=readIf(join33(dir,".tool-versions")),toolMatch=tool?/^nodejs\s+(\S+)/m.exec(tool):null;if(toolMatch)return{range:toolMatch[1],source:".tool-versions"};let workflows=join33(dir,".github/workflows");for(let wf of readdirSafe3(workflows).sort()){if(!/\.ya?ml$/.test(wf))continue;let text=readIf(join33(workflows,wf))??"",m=/node-version:\s*['"]?(\d+(?:\.\d+){0,2})['"]?\s*$/m.exec(text);if(m)return{range:m[1],source:`.github/workflows/${wf}`}}let engines=readManifest3(dir)?.engines?.node;if(engines)return{range:engines,source:"package.json engines.node"}}function readdirSafe3(dir){try{return readdirSync11(dir)}catch{return[]}}function hasTopLevelAwait(dir,budget=300){let files=[],walk=(d,depth2)=>{if(!(files.length>=budget||depth2>6))for(let entry of readdirSafe3(d)){if(entry==="node_modules"||entry.startsWith("."))continue;let full2=join33(d,entry),stat;try{stat=statSync4(full2)}catch{continue}if(stat.isDirectory()?walk(full2,depth2+1):/\.(m?js)$/.test(entry)&&!/\.cjs$/.test(entry)&&files.push(full2),files.length>=budget)return}};walk(dir,0);for(let file of files){let text=readIf(file);if(!text||!/\bawait\b/.test(text))continue;let sf=import_ts_morph19.ts.createSourceFile(file,text,import_ts_morph19.ts.ScriptTarget.ESNext,!1,import_ts_morph19.ts.ScriptKind.JS),found=!1,visit=n=>{found||import_ts_morph19.ts.isFunctionLike(n)||import_ts_morph19.ts.isClassLike(n)||(import_ts_morph19.ts.isAwaitExpression(n)||import_ts_morph19.ts.isForOfStatement(n)&&n.awaitModifier?found=!0:import_ts_morph19.ts.forEachChild(n,visit))};if(import_ts_morph19.ts.forEachChild(sf,visit),found)return!0}return!1}function moduleFormatChange(before,after,meta3,node){if(!supportsRequire(before)||supportsRequire(after))return;let why=after.type==="module"?`"type": "module" and ${after.exports!==void 0?"no require condition in exports":`an ESM main (${after.main??"index.js"})`}`:"no CommonJS entry",bare=node.range!==void 0&&isBareMajor(node.range)?", read as its latest release":"",where=node.source?` (${node.source}${bare})`:bare?` (${bare.slice(2)})`:"",nodeClause=node.support==="yes"?node.topLevelAwait?`Node ${node.range}${where} supports require(esm), but the target awaits at top level, which require() cannot load (ERR_REQUIRE_ASYNC_MODULE)`:`Node ${node.range}${where} supports require(esm): require() returns the module namespace`:node.support==="no"?`Node ${node.range}${where} does not guarantee require(esm) (needs 22.12+ or 20.19+)`:"Node version unknown (no Dockerfile FROM node, .nvmrc, .node-version, .tool-versions, CI node-version or engines.node), so require(esm) cannot be assumed",engines=after.engines?.node&&after.engines.node!==before.engines?.node?`; requires Node ${after.engines.node}`:"";return{...meta3,path:".",kind:"module-format",severity:"breaking",source:"types",confidence:1,evidence:"checker",before:"loadable with require()",after:"ESM only",notes:`no longer loadable with require(): ${why}; ${nodeClause}${engines}`,requireEsm:node.support,...node.topLevelAwait?{topLevelAwait:!0}:{}}}async function mapWithLimit(items,limit,task){let results=new Array(items.length),next=0,worker=async()=>{for(;;){let i=next++;if(i>=items.length)return;results[i]=await task(items[i])}};return await Promise.all(Array.from({length:Math.min(limit,items.length)},worker)),results}async function mapWithSerialRetry(items,limit,task,shouldRetry,retry){let results=await mapWithLimit(items,limit,task);if(limit>1)for(let i=0;i<items.length;i++)shouldRetry(results[i])&&(results[i]=await retry(items[i]));return results}function isBehind(c){return c.latest!==void 0&&compareVersions(c.latest,c.installed)>0}function rankCandidates(candidates){let major=c=>c.latest?majorsBehind(c.installed,c.latest):0;return[...candidates].sort((a,b)=>+(major(b)>0)-+(major(a)>0)||b.importSites-a.importSites||+(b.latest!==void 0)-+(a.latest!==void 0)||a.name.localeCompare(b.name))}var CURATED=[{package:"express",major:5,rules:[{pattern:/\.del\(/,what:"app.del() was removed; use app.delete()"},{pattern:/\breq\.param\(/,what:"req.param() was removed; read req.params, req.query or req.body"},{pattern:/\bres\.send\(\s*\d{3}\s*[,)]/,what:"res.send(status) was removed; use res.sendStatus(code) or res.status(code).send()"},{pattern:/\.(get|post|put|patch|delete|all|use|route)\(\s*['"`][^'"`]*(\*|\?|\+|\(|:[A-Za-z_$][\w$]*\?)/,what:"route paths use path-to-regexp v8: `*` becomes a named splat (`/{*path}`), `?`/`+`/regex groups and optional params (`:id?`) are written as `{/:id}`"}]}],RUNTIME_LABEL="runtime change, not visible in types";function runtimeChangeFindings(meta3,files){let curated=CURATED.find(c=>c.package===meta3.package);if(!curated)return[];let from=parseVersion(meta3.from)?.major,to=parseVersion(meta3.to)?.major;if(from===void 0||to===void 0||from>=curated.major||to<curated.major)return[];let out=[];for(let{file,text}of files)text.split(`
|
|
341
341
|
`).forEach((line,index)=>{for(let rule of curated.rules){if(!rule.pattern.test(line))continue;let usage={file,line:index+1,column:1,endLine:index+1,endColumn:line.length+1,symbolPath:`runtime:${meta3.package}`,access:"call",snippet:line.trim(),via:"inferred"},change={...meta3,path:`runtime:${meta3.package}`,kind:"signature",severity:"breaking",source:"types",confidence:.6,evidence:"text",notes:`${RUNTIME_LABEL}: ${rule.what}`};out.push({change,usage,severity:"unverified",confidence:.6,fixability:"assisted",reason:`${RUNTIME_LABEL}: ${rule.what}`})}});return out}function packsOf(opts){return opts.packs??activePacks()}async function check(opts){let started=Date.now(),adapter=opts.adapter??typescriptAdapter,fetcher=opts.fetcher??createNpmFetcher(),cache=opts.cache??createFsSurfaceCache(),findUsages=requireFindUsages(adapter);if(!adapter.installedDependencies)throw new AdapterCapabilityError(adapter.id,"findUsages");let root={dir:opts.cwd},workspaces=await adapter.workspacePackages?.(root)??["."],memo=memoizingFetcher(fetcher),installedByWorkspace={},catalogByWorkspace={};for(let workspace of workspaces){let repo={dir:resolve14(opts.cwd,workspace)};installedByWorkspace[workspace]=Object.fromEntries(await adapter.installedDependencies(repo));let specifiers=await adapter.declaredSpecifiers?.(repo)??new Map;catalogByWorkspace[workspace]=[...specifiers].filter(([,spec])=>spec.startsWith("catalog:")).map(([name])=>name)}let plans=await companionPlans(opts,memo,adapter,workspaces,installedByWorkspace),moving=Object.values(plans).flatMap(p=>p.companions);opts.only&&moving.length>0?opts={...opts,only:[...new Set([...opts.only,...moving.map(c=>c.name)])],targets:{...Object.fromEntries(moving.map(c=>[c.name,c.to])),...opts.targets},companions:plans}:Object.keys(plans).length>0&&(opts={...opts,companions:plans});let ctx={adapter,fetcher:memo,cache,findUsages,opts},candidates=opts.only??[...new Set(Object.values(installedByWorkspace).flatMap(deps=>Object.keys(deps)))],scopedImports=opts.only&&!opts.adapter?await scanImports(opts.cwd,candidates,workspaces):void 0,roots=new Map;for(let workspace of workspaces){let files=new Set;for(let usage of scopedImports?.values()??[])for(let file of usage.files)([...workspaces].sort((a,b)=>b.length-a.length).find(w=>w!=="."&&file.startsWith(`${w}/`))??".")===workspace&&files.add(resolve14(opts.cwd,file));scopedImports&&roots.set(workspace,[...files].sort())}let importedByWorkspace={};for(let workspace of workspaces)importedByWorkspace[workspace]=scopedImports?candidates.filter(name=>scopedImports.get(name)?.workspaces.includes(workspace)):importedByText(opts.cwd,workspace,candidates,workspaces);let linked=version=>version!==void 0&&/^(link|workspace|file):/.test(version),versionOf=name=>Object.values(installedByWorkspace).map(deps=>deps[name]).find(version=>version!==void 0&&!linked(version)),rankable=candidates.filter(name=>!name.startsWith("@types/")&&versionOf(name)!==void 0&&(opts.allDeps||Object.values(importedByWorkspace).some(names=>names.includes(name)))),sites=importFileCounts(opts.cwd,rankable),ranked=rankCandidates(await mapWithLimit(rankable,8,async name=>{let latest=opts.targets?.[name]??await ctx.fetcher.resolve(name,"latest").catch(()=>{});return{name,installed:versionOf(name),...latest!==void 0?{latest}:{},importSites:sites.get(name)??0}})),{adapter:_a,fetcher:_f,cache:_c,onProgress:_p,packs:_k,...givenOpts}=opts,plainOpts={...givenOpts,concurrency:1,targets:{...Object.fromEntries(ranked.filter(c=>c.latest!==void 0).map(c=>[c.name,c.latest])),...opts.targets},order:ranked.map(c=>c.name),behind:ranked.filter(c=>c.latest===void 0||isBehind(c)).map(c=>c.name),...opts.maxTimeMs?{deadline:started+opts.maxTimeMs,hardDeadline:started+opts.maxTimeMs*1.5}:{}},behindNames=new Set(plainOpts.behind??[]),stake=workspace=>opts.maxTimeMs?(importedByWorkspace[workspace]??[]).filter(name=>behindNames.has(name)).length:0,jobs=[...workspaces].sort((a,b)=>stake(b)-stake(a)||Object.keys(installedByWorkspace[b]??{}).length-Object.keys(installedByWorkspace[a]??{}).length).map(workspace=>({cwd:opts.cwd,workspace,...roots.has(workspace)?{rootFiles:roots.get(workspace)}:{},workspaces,installedByWorkspace,importedByWorkspace,opts:plainOpts})),injected=opts.adapter!==void 0||opts.fetcher!==void 0||opts.cache!==void 0||opts.packs!==void 0,estimates=new Map(jobs.map(job=>[job.workspace,injected||job.rootFiles?.length===0?0:estimateScopedHeapMb(resolve14(job.cwd,job.workspace),job.rootFiles)])),policy=memoryPolicy(void 0,void 0,Math.min(opts.workspaceConcurrency??Number.MAX_SAFE_INTEGER,jobs.filter(j=>(estimates.get(j.workspace)??0)>0).length||1),Math.max(1024,...estimates.values())),workers=injected?1:policy.workers;plainOpts.workerHeapMb=policy.heapMb,plainOpts.workspaceConcurrency=workers;let guarded=run=>job=>(async()=>{let estimate=estimates.get(job.workspace)??0,available=job.opts.workerHeapMb??policy.heapMb,active=(importedByWorkspace[job.workspace]??[]).some(name=>behindNames.has(name));if(!injected&&(active||opts.allDeps)&&estimate>available)throw new UptideError("MEMORY_BUDGET",`workspace ${job.workspace}: scoped program estimate ${estimate} MB of heap; ${available} MB available for a single worker within the ${policy.budgetMb} MB memory budget (60% of available memory). Close other applications or check a smaller workspace.`);return run(job)})().catch(err=>{let declared=installedByWorkspace[job.workspace]??{};return(plainOpts.behind??[]).filter(name=>(declared[name]!==void 0||importedByWorkspace[job.workspace]?.includes(name))&&!linked(declared[name])).map(name=>({...notImported(job.workspace,name,declared[name]??versionOf(name)??"?"),target:plainOpts.targets?.[name]??declared[name]??"?",latest:plainOpts.targets?.[name]??declared[name]??"?",...declared[name]===void 0?{undeclared:{}}:{},status:"skipped",skipReason:errorCode(err),notes:[errorCode(err)==="MEMORY_BUDGET"?err.message:/memory/i.test(String(err.message))?`workspace ${job.workspace}: scoped program exhausted its memory reservation (estimate ${estimates.get(job.workspace)??0} MB of heap; ${job.opts.workerHeapMb??policy.heapMb} MB available). No safety verdict; free more memory and retry.`:`analysis failed: ${err.message??String(err)}`]}))}),results=injected?await mapWithLimit(jobs,1,guarded(job=>checkWorkspace(ctx,job))):await mapWithSerialRetry(jobs,workers,guarded(job=>job.rootFiles?.length===0&&!opts.allDeps?checkWorkspace(ctx,job):runInWorker(job,opts.onProgress)),reports=>reports.some(p=>p.skipReason==="ERR_WORKER_OUT_OF_MEMORY"||p.skipReason==="MEMORY_BUDGET"),async job=>{let serial=memoryPolicy(void 0,1,1),heapMb=Math.min(serial.heapMb,Math.floor(policy.budgetMb/1.4));return guarded(retry=>runInWorker(retry,opts.onProgress))({...job,opts:{...job.opts,workspaceConcurrency:1,workerHeapMb:heapMb}})});if(adapter.id==="typescript")for(let report of results.flat()){let pack=packsOf(opts).find(p=>p.name===report.name);if(!pack||!pack.rules.some(r=>r.rewrite))continue;let sources=new Map;report.findings=report.findings.map(finding=>{let file=resolve14(opts.cwd,report.workspace,finding.usage.file),source=sources.get(file);if(source===void 0){try{source=readFileSync25(file,"utf8")}catch{return finding}sources.set(file,source)}return packFixability(finding,source,pack)})}let order=new Map(workspaces.map((w,i)=>[w,i])),packages=mergeAcrossWorkspaces(results.flat().sort((a,b)=>(order.get(a.workspace)??0)-(order.get(b.workspace)??0)),catalogByWorkspace);for(let p of packages)p.tier??=tierOf(packsOf(opts),p.name,p.installed,p.target);for(let p of packages)groupRootCauses(p);if(adapter.id==="typescript"&&opts.plan!==!1)planPackages(packages,opts);else for(let p of packages)delete p.planContext;return await ctx.fetcher.dispose(),{repo:opts.cwd,workspaces,packages,summary:summarize(packages),timing:{totalMs:Date.now()-started}}}function planPackages(packages,opts){let sources=new Map,read2=file=>{if(!sources.has(file))try{sources.set(file,readFileSync25(resolve14(opts.cwd,file),"utf8"))}catch{sources.set(file,void 0)}return sources.get(file)};for(let p of packages){if(!["breaking","deprecated"].includes(p.status)&&p.findings.length===0)continue;let pack=packsOf(opts).find(candidate=>candidate.name===p.name),plan=planPackage(p,pack,read2,p.planContext??{});if(plan.length===0||(p.plan=plan,!p.planContext))continue;let context={from:p.installed,to:p.target,includeDeprecated:!1,...p.planContext};if(pack?.describeFinding)for(let f of p.findings){if(f.change.source!=="pack")continue;let words2=pack.describeFinding(f,context);words2?.reason&&(f.reason=words2.reason),words2?.details?.length&&(f.details=words2.details)}if(pack?.planNote)for(let group of plan){if(group.severity==="deprecated")continue;let note=pack.planNote(group.rule,context);note&&(group.note=note)}}for(let p of packages)delete p.planContext}function importerOf(p){let analyzed=!["skipped","no-types","private","not-imported"].includes(p.status);return{workspace:p.workspace,declared:p.undeclared===void 0,...p.undeclared?.via?{via:p.undeclared.via}:{},analyzed,...analyzed?{}:{reason:p.notes[0]??p.status}}}function sitesOf(f){return f.change.kind==="cause"&&!f.anchorOnly?f.downstream?.length??0:1}function isFailure(p){return p.status==="skipped"&&p.skipReason!==void 0&&!["TIME_BUDGET","NO_TYPES","PACKAGE_NOT_INSTALLED","PACKAGE_NOT_FOUND","REGISTRY_AUTH"].includes(p.skipReason)}function summarize(packages){let byName=status=>new Set(packages.filter(status).map(p=>p.name)).size,findings=packages.flatMap(p=>p.findings),count3=pick=>findings.filter(pick).reduce((n,f)=>n+sitesOf(f),0);return{packagesNeedingAttention:byName(p=>p.status==="breaking"||p.status==="deprecated"),breaking:count3(f=>f.severity==="breaking"),deprecated:count3(f=>f.severity==="deprecated"),unverified:count3(f=>f.severity==="unverified"),unaffected:byName(p=>p.status==="safe"),notImported:byName(p=>p.status==="not-imported"),partiallyAnalyzed:byName(p=>p.status==="partial"||p.status==="unknown"),autoFixable:count3(f=>(f.severity==="breaking"||f.severity==="deprecated")&&f.fixability==="mechanical"),skippedForTime:byName(p=>p.skipReason==="TIME_BUDGET"),failed:byName(p=>isFailure(p))}}function uniqueCompilers(compilers2){let seen=new Map;for(let c of compilers2)seen.set(`${c.own}:${c.version}`,c);return[...seen.values()]}function mergeAcrossWorkspaces(packages,catalogByWorkspace){let analyzable=new Set(["breaking","deprecated","safe","partial","unknown"]),groups2=new Map;for(let p of packages){if(!analyzable.has(p.status)||p.notes.includes("up to date"))continue;let key2=`${p.name}@${p.installed}->${p.target}`,list=groups2.get(key2)??[];list.push(p),groups2.set(key2,list)}let merged=new Map,dropped=new Set;for(let list of groups2.values()){let catalog=list.some(p=>catalogByWorkspace[p.workspace]?.includes(p.name));if(list.length<2&&!catalog)continue;let prefixed=(p,file)=>posix2.normalize(p.workspace==="."?file:`${p.workspace}/${file}`),first=list[0],sum=pick=>list.reduce((n,p)=>n+pick(p),0),workspaceOf2=new WeakMap,findings=list.flatMap(p=>p.findings.map(f=>{let moved={...f,usage:{...f.usage,file:prefixed(p,f.usage.file)},...f.root?{root:{...f.root,file:prefixed(p,f.root.file)}}:{},...f.downstream?{downstream:f.downstream.map(d=>({workspace:p.workspace,...d}))}:{},change:f.change.path.startsWith("cause:")?{...f.change,notes:f.change.notes?.replace(`(${f.usage.file}:`,`(${prefixed(p,f.usage.file)}:`)}:f.change};return workspaceOf2.set(moved,p.workspace),moved})),folded2=foldSharedRoots(findings,f=>workspaceOf2.get(f)),combined={...first,workspace:"*",workspaces:list.map(p=>p.workspace),...catalog?{source:"catalog"}:{},findings:folded2,callSitesChecked:sum(p=>p.callSitesChecked),unanalyzed:list.flatMap(p=>p.unanalyzed.map(u=>({...u,file:prefixed(p,u.file)}))),notes:[...new Set(list.flatMap(p=>p.notes))],...list.find(p=>p.skipReason)?.skipReason?{skipReason:list.find(p=>p.skipReason)?.skipReason}:{},status:statusOf2(folded2,sum(p=>p.callSitesChecked),sum(p=>p.unanalyzed.length)),timing:{fetchMs:sum(p=>p.timing.fetchMs),diffMs:sum(p=>p.timing.diffMs),usagesMs:sum(p=>p.timing.usagesMs),compileMs:sum(p=>p.timing.compileMs),runtimeMs:sum(p=>p.timing.runtimeMs??0)}};first.runtime&&(combined.runtime=first.runtime);let companions=[...new Map(list.flatMap(p=>p.companions??[]).map(c=>[`${c.name}@${c.from}`,c])).values()].sort((a,b)=>a.name.localeCompare(b.name)||a.from.localeCompare(b.from)),conflicts=[...new Set(list.flatMap(p=>p.companionConflicts??[]))];companions.length>0&&(combined.companions=companions),conflicts.length>0&&(combined.companionConflicts=conflicts);let peerConflicts=[...new Set(list.flatMap(p=>p.peerConflicts??[]))].sort();peerConflicts.length>0&&(combined.peerConflicts=peerConflicts);let members=[...new Map(list.flatMap(p=>p.members??[]).map(m=>[m.name,m])).values()];members.length>1&&(combined.members=members),combined.importers=list.map(importerOf);let contexts=list.map(p=>p.planContext).filter(c=>c!==void 0);contexts.length>0&&(combined.planContext={...contexts[0],evidence:contexts.flatMap(c=>c.evidence??[])});let compiled=list.filter(p=>p.compile!==void 0),firstCompiled=compiled[0];if(firstCompiled?.compile){let coverages=compiled.map(p=>p.compile?.coverage).filter(c=>c!==void 0),skipped=new Map;for(let c of coverages)for(let r of c.skipped)skipped.set(r.reason,(skipped.get(r.reason)??0)+r.count);let notCompiled=compiled.flatMap(p=>(p.compile?.coverage?.notCompiled??[]).map(n=>({path:prefixed(p,n.path),reason:n.reason})));combined.compile={...firstCompiled.compile,...compiled.some(p=>p.compile?.skipped===void 0)?{skipped:void 0}:{},baselineErrors:sum(p=>p.compile?.baselineErrors??0),...coverages.length>0?{coverage:{compiled:coverages.reduce((n,c)=>n+c.compiled,0),total:coverages.reduce((n,c)=>n+c.total,0),workspaces:coverages.reduce((n,c)=>n+c.workspaces,0),skipped:[...skipped].map(([reason,count3])=>({reason,count:count3})),...notCompiled.length>0?{notCompiled}:{},...coverages.some(c=>c.compilers)?{compilers:uniqueCompilers(coverages.flatMap(c=>c.compilers??[]))}:{}}}:{},unresolvedInTarget:[...new Set(list.flatMap(p=>p.compile?.unresolvedInTarget??[]))],unresolvedFiles:[...new Set(list.flatMap(p=>p.compile?.unresolvedFiles??[]))],unattributed:list.flatMap(p=>(p.compile?.unattributed??[]).map(d=>({...d,file:prefixed(p,d.file)}))),...compiled.every(p=>p.compile?.newErrors!==void 0)?{newErrors:sum(p=>p.compile?.newErrors??0)}:{}},combined.compile.skipped===void 0&&delete combined.compile.skipped}list.some(p=>p.verdict)&&(combined.verdict=verdictOf(combined,list.find(p=>p.verdict?.notVerified)?.verdict?.notVerified)),merged.set(first,combined);for(let p of list.slice(1))dropped.add(p)}let shared=[],rest=[],failedImporters=packages.filter(p=>p.status==="skipped"&&p.undeclared);for(let p of packages){if(dropped.has(p)||failedImporters.includes(p))continue;let m=merged.get(p);m?shared.push(m):rest.push(p)}let result=[...shared,...rest];for(let p of result){if(!analyzable.has(p.status))continue;let importers2=p.importers??[importerOf(p)],failed=failedImporters.filter(f=>f.name===p.name).map(importerOf);(importers2.length>1||failed.length>0||p.undeclared)&&(p.importers=[...importers2,...failed])}let orphans=failedImporters.filter(f=>!result.some(p=>p.name===f.name));for(let f of orphans)f.importers=[importerOf(f)];return[...result,...orphans]}function workerHeapMb(workers,freeBytes=freeMemoryBytes(),env=process.env){let budget=Math.floor(freeBytes/1024/1024*.6/Math.max(1,workers)/1.4),asked=Number(env.UPTIDE_WORKER_HEAP_MB);return Math.max(0,Math.min(8192,budget,Number.isFinite(asked)&&asked>=128?Math.floor(asked):8192))}async function runInWorker(job,onProgress){let{Worker:Worker2}=await import("worker_threads"),here=import.meta.url,fromSource=here.endsWith(".ts"),url=new URL(fromSource?"./worker.ts":"./worker.js",here);return new Promise((resolvePromise,reject)=>{let worker=new Worker2(url,{workerData:job,execArgv:fromSource?["--import","tsx"]:[],resourceLimits:{maxOldGenerationSizeMb:Math.max(16,job.opts.workerHeapMb??workerHeapMb(1))}}),settled=!1;worker.on("message",message=>{message.type==="error"?(settled=!0,worker.terminate().then(()=>reject(new UptideError(message.code,message.message)))):message.type==="progress"?onProgress?.(message.event):message.type==="result"&&(settled=!0,worker.terminate().then(()=>resolvePromise(message.reports)))}),worker.once("error",err=>{settled=!0,worker.terminate().then(()=>reject(err))}),worker.once("exit",code=>{settled||reject(new Error(`workspace ${job.workspace}: worker exited with ${code}`))})})}async function checkWorkspaceJob(job,onProgress){let adapter=typescriptAdapter,ctx={adapter,fetcher:memoizingFetcher(createNpmFetcher()),cache:createFsSurfaceCache(),findUsages:requireFindUsages(adapter),opts:{...job.opts,cwd:job.cwd,...onProgress?{onProgress}:{}}};try{return await checkWorkspace(ctx,job)}finally{await ctx.fetcher.dispose()}}async function checkWorkspace(ctx,job){let{adapter}=ctx,opts={...ctx.opts,...job.opts},{workspace,workspaces,installedByWorkspace,importedByWorkspace}=job,packages=[];if(!opts.adapter&&opts.only&&!opts.allDeps&&(importedByWorkspace[workspace]??[]).length===0)return progress(opts.onProgress,{phase:"resolve",workspace},()=>Object.entries(installedByWorkspace[workspace]??{}).filter(([name])=>opts.only?.includes(name)).map(([name,version])=>notImported(workspace,name,version)));if(opts.deadline!==void 0&&Date.now()>opts.deadline){let declared=installedByWorkspace[workspace]??{},imported=new Set(importedByWorkspace[workspace]??[]),late=(name,version,undeclared)=>({...notImported(workspace,name,version),status:"skipped",skipReason:"TIME_BUDGET",notes:["time budget reached before this workspace"],...undeclared?{undeclared:{}}:{}});for(let name of opts.behind??[]){if(opts.only&&!opts.only.includes(name))continue;let version=declared[name];version!==void 0&&/^(link|workspace|file):/.test(version)||(version!==void 0&&(opts.allDeps||imported.has(name))?packages.push(late(name,version,!1)):version===void 0&&imported.has(name)&&packages.push(late(name,"unresolved",!0)))}return packages}{let dir=resolve14(opts.cwd,workspace),repo={dir,root:resolve14(opts.cwd),...job.rootFiles?{rootFiles:job.rootFiles}:{}},installed=new Map(Object.entries(installedByWorkspace[workspace]??{})),others=workspaces.filter(w=>w!==workspace&&!`${dir}/`.startsWith(`${resolve14(opts.cwd,w)}/`)),scopeFor=name=>{let exclude=others.filter(w=>installedByWorkspace[w]?.[name]!==void 0||importedByWorkspace[w]?.includes(name)).map(w=>resolve14(opts.cwd,w));return exclude.length>0?{...repo,exclude}:repo},imported=opts.allDeps?void 0:await progress(opts.onProgress,{phase:"resolve",workspace},()=>adapter.importedPackages?.(repo)),undeclared=new Map,unresolved=new Map;for(let name of importedByWorkspace[workspace]??[]){if(installed.has(name)||name.startsWith("@types/"))continue;let dir2=installedPackageDirOf(adapter,repo,name,"")?.dir,version=dir2?readManifest3(dir2)?.version:void 0;if(!dir2||!version){unresolved.set(name,`imports ${name} without declaring it, and it does not resolve from ${workspace}`);continue}let via=[...installed].filter(([,v])=>/^(link|workspace|file):/.test(v)).map(([dep])=>dep).find(dep=>{let home=workspaces.find(w=>readManifest3(resolve14(opts.cwd,w))?.name===dep);return home!==void 0&&installedByWorkspace[home]?.[name]!==void 0});installed.set(name,version),undeclared.set(name,via?{via}:{})}let rank=new Map((opts.order??[]).map((name,i)=>[name,i])),entries=[...installed].sort(([a],[b])=>(rank.get(a)??Number.MAX_SAFE_INTEGER)-(rank.get(b)??Number.MAX_SAFE_INTEGER)||a.localeCompare(b)).filter(([name])=>!opts.only||opts.only.includes(name)),behind=new Set(opts.behind??[]),analyzable=entries.filter(([name,version])=>!/^(link|workspace|file):/.test(version)&&(opts.allDeps||!name.startsWith("@types/")&&(imported===void 0||imported.has(name)))),groups2=releaseGroups(analyzable.map(([name,version])=>({name,installed:version,dependsOn:dependsOnOf(installedPackageDirOf(adapter,repo,name,version)?.dir)})));for(let[lead,plan]of Object.entries(opts.companions??{})){let members=[lead,...plan.companions.map(c=>c.name)].filter(n=>analyzable.some(([name])=>name===n));if(!(!members.includes(lead)||members.length<2)){for(let g of groups2)if(g.some(m=>members.includes(m)))for(let m of g)members.includes(m)||members.push(m);groups2=[...groups2.filter(g=>!g.some(m=>members.includes(m))),members]}}let groupOf=new Map(groups2.flatMap(g=>g.map(m=>[m,g]))),done=new Set,reports=await mapWithLimit(entries,opts.concurrency??(opts.deadline!==void 0?1:6),async([name,installedVersion2])=>{if(done.has(name))return[];if(/^(link|workspace|file):/.test(installedVersion2)){let linked=notImported(workspace,name,installedVersion2);return linked.status="workspace",linked.notes=[],[linked]}if(!opts.allDeps&&(name.startsWith("@types/")||imported!==void 0&&!imported.has(name)))return[notImported(workspace,name,installedVersion2)];let members=groupOf.get(name)??[name];if(opts.deadline!==void 0&&Date.now()>opts.deadline&&behind.has(name)){for(let m of members)done.add(m);return members.map(m=>({...notImported(workspace,m,installed.get(m)),status:"skipped",skipReason:"TIME_BUDGET",notes:["time budget reached before this dependency"]}))}for(let m of members)done.add(m);try{return[await checkGroup({...ctx,opts},scopeFor(name),workspace,members.map(m=>({name:m,installed:installed.get(m)})))]}catch(err){resetSharedState();let late=errorCode(err)==="TIME_BUDGET";return members.map(m=>({...notImported(workspace,m,installed.get(m)),status:"skipped",target:opts.targets?.[m]??installed.get(m)??"?",latest:opts.targets?.[m]??installed.get(m)??"?",skipReason:/Maximum call stack size exceeded/.test(String(err))?"ANALYSIS_STACK_OVERFLOW":errorCode(err),notes:[/Maximum call stack size exceeded/.test(String(err))?`${m}: analysis exceeded its recursion limit while inspecting declarations (Maximum call stack size exceeded). No safety verdict; other named packages continue.`:late?"time budget reached during its analysis":`analysis failed: ${err.message??String(err)}`]}))}}),warnings=await adapter.repoWarnings?.(repo)??[];for(let r of reports.flat()){(r.status==="breaking"||r.status==="deprecated"||r.status==="safe")&&r.notes.push(...warnings);let undeclaredAs=undeclared.get(r.name);undeclaredAs&&(r.undeclared=undeclaredAs)}packages.push(...reports.flat().sort((x,y)=>x.name.localeCompare(y.name)));for(let[name,reason]of unresolved)opts.only&&!opts.only.includes(name)||packages.push({...notImported(workspace,name,"unresolved"),status:"skipped",skipReason:"PACKAGE_NOT_INSTALLED",undeclared:{},notes:[reason]});adapter.forgetRepo?.(repo)}return packages}function dependsOnOf(dir){if(!dir)return[];try{let m=JSON.parse(readFileSync25(join34(dir,"package.json"),"utf8"));return[...Object.keys(m.dependencies??{}),...Object.keys(m.peerDependencies??{})]}catch{return[]}}async function companionPlans(opts,fetcher,adapter,workspaces,installedByWorkspace){let plans={},manifests2=fetcher.manifests;if(!opts.only||!manifests2)return plans;let linked=version=>/^(link|workspace|file):/.test(version);for(let lead of opts.only){if(workspaces.filter(w=>{let version=installedByWorkspace[w]?.[lead];return version!==void 0&&!linked(version)}).length===0)continue;let target=opts.targets?.[lead]??await fetcher.resolve(lead,"latest").catch(()=>{});if(!target)continue;let installed=new Map;for(let workspace of workspaces)for(let[name,version]of Object.entries(installedByWorkspace[workspace]??{})){if(linked(version))continue;let known=installed.get(`${name}@${version}`);if(known){known.workspaces.push(workspace);continue}let cheap=adapter.installedPackageDirCheap,dir=cheap?cheap({dir:resolve14(opts.cwd,workspace)},name):installedPackageDirOf(adapter,{dir:resolve14(opts.cwd,workspace)},name,version)?.dir,manifest2={};try{dir&&(manifest2=JSON.parse(readFileSync25(join34(dir,"package.json"),"utf8")))}catch{}installed.set(`${name}@${version}`,{name,version,manifest:manifest2,workspaces:[workspace]})}try{let plan=await companionsOf({name:lead,target,installed:[...installed.values()],manifests:name=>manifests2(name),lockstep:(packsOf(opts).find(p=>p.name===lead)?.companions??[]).map(c=>c.name)});(plan.companions.length>0||plan.conflicts.length>0||plan.peerConflicts.length>0)&&(plans[lead]=plan)}catch{}}return plans}function memoizingFetcher(inner){let resolved2=new Map,versions=new Map,manifests2=new Map,fetched=new Map,once=(map,key2,make)=>{let p=map.get(key2);return p||(p=make(),map.set(key2,p)),p};return{resolve:(name,requested)=>once(resolved2,`${name}@${requested}`,()=>inner.resolve(name,requested)),fetch:(name,version)=>once(fetched,`${name}@${version}`,()=>inner.fetch(name,version)),...inner.versions?{versions:name=>once(versions,name,()=>inner.versions?.(name)??Promise.resolve([]))}:{},...inner.manifests?{manifests:name=>once(manifests2,name,()=>inner.manifests?.(name)??Promise.resolve({}))}:{},async dispose(){for(let dir of fetched.values())await dir.then(pkg=>releasePackage(inner,pkg)).catch(()=>{})}}}function notImported(workspace,name,installed){return{workspace,name,installed,latest:installed,target:installed,majorsBehind:0,findings:[],callSitesChecked:0,unanalyzed:[],status:"not-imported",notes:[name.startsWith("@types/")?"type-only package, skipped":"never imported by this workspace, skipped"],timing:{fetchMs:0,diffMs:0,usagesMs:0,compileMs:0}}}var UNKNOWN_SHARE=.2;function statusOf2(findings,analyzed=0,unanalyzed=0){return findings.some(f=>f.severity==="breaking")?"breaking":findings.some(f=>f.severity==="deprecated")?"deprecated":unanalyzed===0?"safe":unanalyzed/(analyzed+unanalyzed)>UNKNOWN_SHARE?"unknown":"partial"}function pathsOfInterest(usages,all){let out=new Set,known=new Set(all),implemented=new Set;for(let u of usages)for(let path of usagePaths(u)){out.add(path);for(let p=parentOf(path);p!==void 0;p=parentOf(p))out.add(p);u.access==="implement"&&implemented.add(path)}if(implemented.size>0){for(let path of known)for(let p=parentOf(path);p!==void 0;p=parentOf(p))if(implemented.has(p)){out.add(path);break}}return out}var TYPE_WORDS=new Set(["string","number","boolean","unknown","any","never","void","null","undefined","object","symbol","bigint","this","readonly","typeof","keyof","infer","extends","new","import","Promise","Array","Record","Partial","Required","Readonly","Pick","Omit","Map","Set"]);function referencedTypes(usages,symbols){let out=new Map;for(let u of usages)for(let path of usagePaths(u)){if(out.has(path))continue;let symbol=symbols.get(path);if(!symbol)continue;let top=path.split(/[.#[]/)[0]??"",prefixes=top&&top!==path?[top]:[],refs=new Set;for(let id of symbol.signature.match(/[A-Za-z_$][\w$]*/g)??[])if(!TYPE_WORDS.has(id)){for(let candidate of[...prefixes.map(pre=>`${pre}.${id}`),id])if(candidate!==path&&symbols.has(candidate)){refs.add(candidate);break}}refs.size>0&&out.set(path,[...refs])}return out}async function prepare(ctx,repo,workspace,name,installedVersion2){let timing={fetchMs:0,diffMs:0,usagesMs:0,compileMs:0},notes=[],base=(status,target2,latest2)=>({workspace,name,installed:installedVersion2,latest:latest2,target:target2,majorsBehind:majorsBehind(installedVersion2,target2),findings:[],callSitesChecked:0,unanalyzed:[],status,notes,timing}),latest;try{latest=await progress(ctx.opts.onProgress,{phase:"resolve",package:name,workspace},()=>ctx.fetcher.resolve(name,"latest"))}catch(err){return err instanceof PackageNotFoundError||err instanceof RegistryAuthError?(notes.push(err instanceof RegistryAuthError?"registry auth":"not on the registry"),{...base("private",installedVersion2,installedVersion2),skipReason:errorCode(err)}):(notes.push(`could not resolve latest: ${err.message}`),{...base("skipped",installedVersion2,installedVersion2),skipReason:errorCode(err)})}let target=ctx.opts.targets?.[name]??latest;if(compareVersions(target,installedVersion2)<=0)return notes.push("up to date"),base("safe",target,latest);let installedDir=installedPackageDirOf(ctx.adapter,repo,name,installedVersion2),nodeTypes=installedPackageDirOf(ctx.adapter,repo,"@types/node","")?.dir;installedDir&&nodeTypes&&(installedDir.types=[nodeTypes]);let typesName=typesPackageOf(name),typesDir=installedPackageDirOf(ctx.adapter,repo,typesName,""),types,runtimeDir;if(typesDir&&(!installedDir||!shipsTypes(installedDir.dir))){let typesInstalled=readManifest3(typesDir.dir)?.version??"0.0.0",major=parseVersion(target)?.major,published=await ctx.fetcher.versions?.(typesName).catch(()=>[])??[],typesTarget=ctx.opts.targets?.[typesName]??typesReleaseFor(published,target,typesInstalled)??typesInstalled;major!==void 0&&parseVersion(typesTarget)?.major!==major&&published.length>0&¬es.push(`${typesName} has no ${major}.x release above ${typesInstalled}; diffed against ${typesTarget}`),types={name:typesName,installedVersion:typesInstalled,target:typesTarget},runtimeDir=installedDir,installedDir={...typesDir,version:typesInstalled};let runtimeMajor=parseVersion(installedVersion2)?.major,installedTypesMajor=parseVersion(typesInstalled)?.major;if(runtimeMajor!==void 0&&installedTypesMajor!==void 0&&runtimeMajor!==installedTypesMajor&&installedTypesMajor===parseVersion(target)?.major){let matching=maxSatisfying(published,`${runtimeMajor}.x`);if(notes.push(`${typesName} ${typesInstalled} is installed while ${name} ${installedVersion2} runs${matching?`; baseline taken as ${typesName} ${matching}`:""}`),matching!==void 0&&matching!==typesInstalled)try{let baselineDir=await progress(ctx.opts.onProgress,{phase:"fetch",package:name,workspace},()=>ctx.fetcher.fetch(typesName,matching));types.baseline=matching,installedDir={...baselineDir,version:matching}}catch{notes.push(`${typesName} ${matching} could not be fetched; baseline stays ${typesInstalled}`)}}nodeTypes&&(installedDir.types=[nodeTypes])}if(!installedDir)return notes.push("not installed: declared in the lockfile, missing from node_modules"),{...base("skipped",target,latest),skipReason:"PACKAGE_NOT_INSTALLED"};let installedSurface,untyped=!1;try{let key2={package:installedDir.name,version:installedDir.version,adapter:ctx.adapter.id,schema:SURFACE_SCHEMA_VERSION};installedSurface=await ctx.cache.get(key2)??await ctx.adapter.extractSurface(installedDir),await ctx.cache.set(key2,installedSurface)}catch(err){if(!(err instanceof NoTypesError))throw err;untyped=!0,installedSurface={package:name,version:installedVersion2,extractedAt:new Date(0).toISOString(),adapter:ctx.adapter.id,symbols:[]}}let tUsages=Date.now(),scan=await progress(ctx.opts.onProgress,{phase:"usages",package:name,workspace},()=>ctx.findUsages(repo,name,installedSurface));if(timing.usagesMs=Date.now()-tUsages,scan.unanalyzed.length>0&¬es.push(`${scan.unanalyzed.length} site${scan.unanalyzed.length===1?"":"s"} not analyzed (require/dynamic import)`),scan.usages.length===0){if(scan.unanalyzed.length>0){let report2=base("unknown",target,latest);return report2.unanalyzed=scan.unanalyzed,report2}notes.push("no usages found");let report=base("not-imported",target,latest);return report.unanalyzed=scan.unanalyzed,report}for(let u of scan.usages)u.package=name;let prepared={name,installedVersion:installedVersion2,latest,target,installedDir,installedSurface,scan,notes,timing};return untyped&&(prepared.untyped=!0),types&&(prepared.types=types,runtimeDir&&(prepared.runtimeDir=runtimeDir)),prepared}function outOfTime(ctx){if(ctx.opts.hardDeadline!==void 0&&Date.now()>ctx.opts.hardDeadline)throw new UptideError("TIME_BUDGET","time budget reached")}async function checkGroup(ctx,repo,workspace,members){let prepared=[],early=[];for(let m of members){let p=await prepare(ctx,repo,workspace,m.name,m.installed);"scan"in p?prepared.push(p):early.push(p)}if(prepared.length===0)return early.length===1?early[0]:mergeEarly(workspace,early);let plans=ctx.opts.companions??{},leader=prepared.find(p=>plans[p.name]!==void 0),plan=leader?plans[leader.name]:void 0,name=leader&&prepared.length>1?leader.name:groupName(prepared.map(p=>p.name)),notes=prepared.flatMap(p=>prepared.length>1?p.notes.map(n=>`${p.name}: ${n}`):p.notes),timing={fetchMs:0,diffMs:0,usagesMs:0,compileMs:0};for(let p of prepared)timing.usagesMs+=p.timing.usagesMs;let installed=prepared.map(p=>p.installedVersion).sort(compareVersions),targets=prepared.map(p=>p.target).sort(compareVersions),base=status=>({workspace,name,...prepared.length>1?{members:prepared.map(p=>({name:p.name,installed:p.installedVersion,target:p.target}))}:{},installed:leader?.installedVersion??installed[0],latest:leader?.latest??(prepared.length===1?prepared[0]?.latest:targets.at(-1)),target:leader?.target??(prepared.length===1?prepared[0]?.target:targets.at(-1)),...plan?.companions.length?{companions:plan.companions}:{},...plan?.conflicts.length?{companionConflicts:plan.conflicts}:{},...plan?.peerConflicts.length?{peerConflicts:plan.peerConflicts}:{},majorsBehind:Math.max(...prepared.map(p=>majorsBehind(p.installedVersion,p.target))),findings:[],callSitesChecked:0,unanalyzed:prepared.flatMap(p=>p.scan.unanalyzed),status,notes,timing}),tFetch=Date.now(),fetched=[];for(let p of prepared)try{let pkg=p.types?await progress(ctx.opts.onProgress,{phase:"fetch",package:p.name,workspace},()=>ctx.fetcher.fetch(p.types?.name??p.name,p.types?.target??p.target)):await progress(ctx.opts.onProgress,{phase:"fetch",package:p.name,workspace},()=>ctx.fetcher.fetch(p.name,p.target)),runtime=p.types?await progress(ctx.opts.onProgress,{phase:"fetch",package:p.name,workspace},()=>ctx.fetcher.fetch(p.name,p.target)):void 0;fetched.push({p,pkg:p.installedDir.types?{...pkg,types:p.installedDir.types}:pkg,runtime})}catch(err){return notes.push(`could not fetch ${p.name}@${p.target}: ${err.message}`),{...base("skipped"),skipReason:errorCode(err)}}timing.fetchMs=Date.now()-tFetch;let node=resolveNodeVersion([repo.dir,ctx.opts.cwd]),nodeRange=node?.range,nodeSupport=requireEsmSupport(nodeRange);try{outOfTime(ctx);let tDiff=Date.now(),diffs=new Map;for(let{p,pkg}of fetched){let meta3={package:p.name,from:p.installedVersion,to:p.target},installedManifest2=readManifest3((p.runtimeDir??p.installedDir).dir),targetManifest=readManifest3(fetched.find(f=>f.p===p)?.runtime?.dir??pkg.dir),diff;if(p.untyped){let targetTyped=shipsTypes(pkg.dir,targetManifest);notes.push(`${prepared.length>1?`${p.name}: `:""}installed ${p.installedVersion} ships no type declarations${targetTyped?`, ${p.target} does`:` and neither does ${p.target}`}; only load sites and the manifest were analyzed`),diff={surfaceA:p.installedSurface,surfaceB:p.installedSurface,changes:[]}}else{let bySymbol=new Map(p.installedSurface.symbols.map(s=>[s.path,s]));p.references=referencedTypes(p.scan.usages,bySymbol);let onlyPaths=ctx.opts.usageFirst===!1?void 0:new Set([...pathsOfInterest(p.scan.usages,bySymbol.keys()),...[...p.references.values()].flat()]);diff=await progress(ctx.opts.onProgress,{phase:"diff",package:p.name,workspace},()=>diffDirs(p.installedDir,pkg,{adapter:ctx.adapter,cache:ctx.cache,assignability:ctx.opts.assignability,onlyPaths}))}if(installedManifest2&&targetManifest){let targetDir=fetched.find(f=>f.p===p)?.runtime?.dir??pkg.dir,format=moduleFormatChange(installedManifest2,targetManifest,meta3,{range:nodeRange,support:nodeSupport,...node?{source:node.caveat?`${node.source}; ${node.caveat}`:node.source}:{},topLevelAwait:nodeSupport==="yes"&&hasTopLevelAwait(targetDir)});format&&(format.loadRoot=loadRootOf(p),diff={...diff,changes:[...diff.changes,format]})}diffs.set(p.name,diff)}timing.diffMs=Date.now()-tDiff;let allUsages=prepared.flatMap(p=>p.scan.usages),compile,usages=allUsages,compiled=!1,compileMany=ctx.adapter.compileAgainstMany,linkedDirs={},sameDeclarations=prepared.every(p=>p.types!==void 0&&p.types.target===(p.types.baseline??p.types.installedVersion));if(sameDeclarations&¬es.push("type declarations unchanged; compile check skipped"),ctx.opts.compile!==!1&&compileMany&&!sameDeclarations){outOfTime(ctx);let t2=Date.now(),baselineTargets=prepared.map(p=>({name:p.types?.name??p.name,dir:p.installedDir.dir,specifier:p.name})),signal=await progress(ctx.opts.onProgress,{phase:"compile",package:prepared.map(p=>p.name).join(", "),workspace},()=>compileMany(repo,fetched.map(({p,pkg})=>p.types?{name:p.types.name,dir:pkg.dir,specifier:p.name}:{name:p.name,dir:pkg.dir}),{fetcher:ctx.fetcher,files:[...new Set([...allUsages.map(u=>u.file),...(repo.rootFiles??[]).map(file=>relative16(repo.dir,file))])],...baselineTargets.length>0?{baselineTargets}:{}}));timing.compileMs=Date.now()-t2;let unionSurface={...prepared[0].installedSurface,symbols:prepared.flatMap(p=>p.installedSurface.symbols)},changedPaths=new Set([...diffs.values()].flatMap(d=>d.changes.map(c=>c.path))),merged=mergeSignals(allUsages,signal,unionSurface,changedPaths);compiled=signal.skipped===void 0,usages=merged.usages;for(let u of usages)u.package===void 0&&(u.package=prepared.find(p=>p.installedSurface.symbols.some(s=>s.path===u.symbolPath))?.name);linkedDirs=signal.linkedDependencyDirs??{},compile={baselineErrors:signal.baselineErrors,skipped:signal.skipped,unresolvedInTarget:signal.unresolvedInTarget,unresolvedFiles:signal.unresolvedFiles,unattributed:merged.unattributed,newErrors:signal.diagnostics.length,coverage:{...signal.coverage,workspaces:1}},signal.skipped?notes.push(signal.skipped):signal.baselineErrors>0&¬es.push(`${signal.baselineErrors} pre-existing type error${signal.baselineErrors===1?"":"s"} at the installed version (subtracted)`);let fetchedDeps=signal.linkedDependencies.filter(l=>l.endsWith("(fetched)")).length;fetchedDeps>0&¬es.push(`${fetchedDeps} dependenc${fetchedDeps===1?"y":"ies"} of ${name}@${base("safe").target} fetched at the versions it declares`);for(let u of signal.unsatisfiedDependencies)notes.push(`dependency of ${name} unsatisfied: ${u}`);signal.unresolvedInTarget.length>0&¬es.push(`${signal.unresolvedInTarget.length} unresolved module${signal.unresolvedInTarget.length===1?"":"s"} inside ${name}, results may be incomplete`)}let resolveDependency=async(dep,range)=>{let wanted=range==="*"||/^[a-z]+:/i.test(range)?">=0.0.0":range,consumer=installedPackageDirOf(ctx.adapter,repo,dep,""),consumerVersion=consumer?readManifest3(consumer.dir)?.version:void 0;if(consumer&&consumerVersion&&maxSatisfying([consumerVersion],wanted)===consumerVersion)return realpathSafe2(consumer.dir);let versions=ctx.fetcher.versions?await ctx.fetcher.versions(dep).catch(()=>[]):[],best=maxSatisfying(versions,wanted);if(best!==void 0)return(await progress(ctx.opts.onProgress,{phase:"fetch",package:dep,workspace},()=>ctx.fetcher.fetch(dep,best))).dir};if(ctx.opts.runtime!==!1){outOfTime(ctx);let tRuntime=Date.now();for(let{p,pkg,runtime:runtime2}of fetched){let installedDir=(p.runtimeDir??p.installedDir).dir;p.runtime=await progress(ctx.opts.onProgress,{phase:"runtime",package:p.name,workspace},()=>probeBoth(p.name,installedDir,runtime2?.dir??pkg.dir,nodeRange,linkedDirs,resolveDependency)),p.runtime.usedKeys=[...new Set(p.scan.usages.flatMap(u=>usagePaths(u).flatMap(path=>path.split(/[.#[\]]/).filter(Boolean))))]}timing.runtimeMs=Date.now()-tRuntime;let first=prepared.map(p=>p.runtime).find(r=>r!==void 0);first&&first.nodeSource==="current"&&nodeRange!==void 0&¬es.push(`runtime probed with the current Node ${first.node}: no local install of Node ${nodeRange} (${node?.source}) was found${node?.caveat?`; ${node.caveat}`:""}`)}let findings=[];for(let p of prepared){let usageFiles=[...new Set(p.scan.usages.map(u=>u.file))];findings.push(...runtimeChangeFindings({package:p.name,from:p.installedVersion,to:p.target},usageFiles.flatMap(file=>{try{return[{file,text:readFileSync25(join34(repo.dir,file),"utf8")}]}catch{return[]}})));let diff=diffs.get(p.name),unverifiedPaths=new Set;if(compile&&compile.unresolvedFiles.length>0){let files=new Set(compile.unresolvedFiles),fileOf=new Map;for(let sym of diff.surfaceA.symbols)fileOf.set(sym.path,sym.file);for(let sym of diff.surfaceB.symbols)fileOf.set(sym.path,sym.file);for(let change of diff.changes){let file=fileOf.get(change.path);file!==void 0&&files.has(file)&&unverifiedPaths.add(change.path)}}let own=usages.filter(u=>u.package===p.name),esmNamed=new Set(diff.surfaceB.symbols.map(sym=>sym.path).filter(path=>!/[.#[]/.test(path)));findings.push(...match(diff.changes,own,{compiled,unverifiedPaths,references:p.references,esmNamed,...p.runtime?.targetRequire?{targetRequire:p.runtime.targetRequire}:{},targetPaths:new Set(diff.surfaceB.symbols.map(sym=>sym.path))}))}if(!compiled&&findings.some(f=>f.severity==="breaking")&¬es.push("unverified: compile check skipped"),compile){let explained=new Set(findings.map(f=>f.usage)),wentEsmOnly=new Set(findings.filter(f=>f.change.kind==="module-format").map(f=>f.usage));for(let u of usages){if(u.compileError===void 0||explained.has(u)||wentEsmOnly.has(u))continue;let shapeCodes=new Set([2349,2351,2507]);if(u.loader==="require"&&u.compileCode!==void 0&&shapeCodes.has(u.compileCode)&&(u.access==="call"||u.access==="construct")){findings.push({change:{package:name,from:prepared[0].installedVersion,to:prepared[0].target,path:`TS${u.compileCode}`,kind:"type",severity:"breaking",source:"types",confidence:.6,evidence:"checker",notes:"the declarations now export a default where the installed version used `export =`; the CommonJS build normally still assigns module.exports, so the require() value is usually callable at runtime"},usage:u,severity:"unverified",confidence:.6,fixability:"assisted",reason:"types reject calling the require() value (default export instead of `export =`); the CommonJS build usually keeps module.exports callable, verify at runtime or switch to import"});continue}compile.unattributed.push({file:u.file,line:u.line,column:u.column,endLine:u.endLine,endColumn:u.endColumn,code:u.compileCode??0,message:u.compileError,snippet:u.snippet})}compile.unattributed.sort((a,b)=>a.file.localeCompare(b.file)||a.line-b.line);let first=prepared[0];findings.push(...unattributedFindings(compile.unattributed,{package:name,from:first.installedVersion,to:first.target},{...first.installedSurface,symbols:[...diffs.values()].flatMap(d=>d.surfaceB.symbols)},compile.unresolvedFiles,workspace==="."?"":`${workspace}/`))}if(prepared.every(p=>p.untyped))for(let f of findings)f.severity==="breaking"&&(!/^TS\d+$/.test(f.change.path)&&!f.change.path.startsWith("cause:")||(f.severity="unverified",f.reason=`${f.reason}; the installed version ships no declarations, so this error exists only because ${prepared[0]?.target} does`));let checksJs=prepared.some(p=>p.scan.checksJs),heads=new Map,headOf=file=>{let head=heads.get(file);if(head===void 0){try{head=readFileSync25(join34(repo.dir,file),"utf8").slice(0,2e3)}catch{head=""}heads.set(file,head)}return head};for(let f of findings)f.usage.checked===void 0&&!repoTypeChecks(f.usage.file,headOf(f.usage.file),checksJs)&&(f.usage.checked=!1);let runtimeOf=f=>prepared.find(p=>p.name===(f.usage.package??f.change.package))??prepared[0],arbitrated=prepared.length===1?arbitrateUnchecked(findings,prepared[0]?.runtime,loadRootOf(prepared[0])):findings.map(f=>{let p=runtimeOf(f);return arbitrateUnchecked([f],p?.runtime,p?loadRootOf(p):void 0)[0]});findings.length=0,findings.push(...arbitrated);let pack=packsOf(ctx.opts).find(candidate=>candidate.name===name),only=leader??(prepared.length===1?prepared[0]:void 0),packDirs=p=>{let target=fetched.find(f=>f.p===p);return{installedDir:(p.runtimeDir??p.installedDir).dir,targetDir:target?.runtime?.dir??target?.pkg.dir??p.installedDir.dir}};if(pack?.runtimeFindings&&only)try{findings.push(...pack.runtimeFindings({root:ctx.opts.cwd,workspace,from:only.installedVersion,to:only.target,...packDirs(only),usages:only.scan.usages,read:file=>{try{return readFileSync25(resolve14(ctx.opts.cwd,file),"utf8")}catch{return}}}))}catch{}let tier=tierOf(packsOf(ctx.opts),name,leader?.installedVersion??installed[0],leader?.target??targets.at(-1)),confirmed=confirmBreaking(findings,f=>{let p=runtimeOf(f);return evidenceOf(f,p?.runtime,p?loadRootOf(p):void 0)});if(findings.length=0,findings.push(...confirmed),tier==="generic")for(let f of findings){if(f.severity==="breaking"&&[2589,2590].includes(f.usage.compileCode??0)&&(f.details=[...f.details??[],"the compiler reaches its type-instantiation limit after the upgrade; which expression reports it depends on the compiler version, so yours may name another site"]),f.severity!=="breaking"||![2305,2614,2724].includes(f.usage.compileCode??0))continue;let diff=diffs.get(f.usage.package??f.change.package)??[...diffs.values()][0],exported=[...new Set((diff?.surfaceB.symbols??[]).map(sym=>sym.path).filter(path=>!/[.#[(]/.test(path)))].sort();exported.length>0&&(f.details=[...f.details??[],`${f.change.package} ${f.change.to} exports: ${exported.slice(0,60).join(", ")}${exported.length>60?`, and ${exported.length-60} more`:""}`])}let unanalyzedCount=prepared.reduce((n,p)=>n+p.scan.unanalyzed.length,0),status=statusOf2(findings,usages.length,unanalyzedCount);prepared.every(p=>p.untyped)&&status!=="breaking"&&status!=="deprecated"&&(status="no-types");let report=base(status);report.tier=tier;let viaTypes=prepared.filter(p=>p.types);viaTypes.length>0&&(report.typesVia=viaTypes.map(p=>`${p.types?.name} ${p.types?.baseline??p.types?.installedVersion} \u2192 ${p.types?.target}`).join(", ")),report.findings=findings,report.callSitesChecked=usages.length,compile&&(report.compile=compile),["breaking","deprecated","safe","partial","unknown"].includes(report.status)&&(report.verdict=verdictOf(report,ctx.opts.compile===!1?"compile check off (--no-compile)":sameDeclarations?"type declarations unchanged":"this language adapter does not compile"));let runtime=prepared.map(p=>p.runtime).filter(r=>r!==void 0);if(runtime.length>0&&(report.runtime=runtime),pack?.planContext&&only&&ctx.opts.plan!==!1)try{report.planContext=pack.planContext({root:ctx.opts.cwd,workspace,...packDirs(only),usages:only.scan.usages});let rejected=new Set(findings.filter(f=>f.usage.compileError!==void 0).map(f=>`${join34(workspace,f.usage.file)}:${f.usage.line}`));report.planContext.evidence&&(report.planContext.evidence=report.planContext.evidence.map(e=>rejected.has(`${e.file}:${e.line}`)?{...e,compiler:!0}:e))}catch{}return report}catch(err){if(err instanceof NoTypesError){let side=fetched.some(({pkg})=>!shipsTypes(pkg.dir))?"target":"installed version";return notes.push(`${err.packageName}@${err.version}: no type declarations in the ${side}, cannot diff`),{...base("no-types"),skipReason:"NO_TYPES"}}throw err}}async function probeBoth(name,installedDir,targetDir,nodeRange,targetLinks,resolveDependency){let real=realpathSafe2(installedDir),dependenciesFrom=nodeModulesOf(real),options=nodeRange===void 0?{dependenciesFrom}:{dependenciesFrom,nodeRange},before=await probeRuntime(real,options),after=await probeRuntime(targetDir,{...options,extraLinks:targetLinks,resolveDependency,linkConsumer:!1}),diff=diffRuntime(before,after),report={package:name,node:after.node,nodeSource:after.nodeSource,changes:diff.changes};return diff.inconclusive?report.inconclusive=diff.inconclusive:after.nodeSource==="repository"&&(report.targetRequire=after.require),report}function realpathSafe2(dir){try{return realpathSync8(dir)}catch{return dir}}function nodeModulesOf(installedDir){let marker=`${sep3}node_modules${sep3}`,at=installedDir.lastIndexOf(marker);return at<0?join34(installedDir,".."):installedDir.slice(0,at+marker.length-1)}function loadRootOf(p){return p.installedSurface.symbols.find(s=>s.exportEquals)?.path??"default"}function mergeEarly(workspace,early){let first=early[0];return{...first,workspace,name:groupName(early.map(p=>p.name)),members:early.map(p=>({name:p.name,installed:p.installed,target:p.target})),...early.find(p=>p.skipReason)?.skipReason?{skipReason:early.find(p=>p.skipReason)?.skipReason}:{},notes:early.flatMap(p=>p.notes.map(n=>`${p.name}: ${n}`)),status:early.every(p=>p.status===first.status)?first.status:"safe"}}function installedPackageDirOf(adapter,repo,name,version){let locate=adapter.installedPackageDir,dir=locate?.(repo,name);return dir?{name,version,dir}:void 0}export{require_dist,resetSharedState,parentOf,satisfies,minVersion,parseNpm,parsePnpm,parseYarn,workspacePackagesOf,createTypescriptAdapter,typescriptAdapter,defaultCacheDir,createFsSurfaceCache,loadRegistryConfig,registryFor,authHeaders,parseVersion,compareVersions,majorsBehind,packumentUrl,createNpmFetcher,diffPackage,BY,genericPack,diagnostics,typeResolutionFailure,newDiagnostics,failedTestFiles,testWorkspaces,describeServices,markPreexisting,siteKey,changeRule,summaryCells,prBody,migrationBody,formatFix,editDiff,selectedFindings,planPackage,installedManifest,knownTool,BUILD_TOOLS,buildToolMajor,toolingReasons,UNUSED_REASON,publicRepos,statusOf,truthDigest,recordedStatus,ruleFor,detectIn,companionProblems,pinClient,unpinnedClients,payloadApiVersions,stripeUsageContext,sdkApiVersion,stripePack,registeredPacks,activePacks,activePack,isNativeProbeSkip,callSitesLine,TIER_LEGEND,tierOf,coverageLine,verdictOf,progress,scanImports,dependencyGroups,peerBlocks,importedByText,readManifest3,mapWithLimit,check,isFailure,summarize,workerHeapMb,checkWorkspaceJob};
|