updates 17.16.11 → 17.16.13
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/index.js +1 -1
- package/dist/shared.js +5 -6
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{a as e,c as t,d as n,f as r,h as i,i as a,l as o,n as s,o as c,p as l,r as u,s as d,u as f}from"./shared.js";import{argv as p,cwd as m,exit as h,platform as g,stderr as _,stdout as v,versions as y}from"node:process";import{parseArgs as b,stripVTControlCharacters as x,styleText as S}from"node:util";import{dirname as C,isAbsolute as w,resolve as T}from"node:path";import{statSync as E}from"node:fs";for(let e of s(m(),p.slice(2)))fetch(e,{method:`HEAD`}).catch(()=>{});const D=b({strict:!1,allowPositionals:!0,tokens:!0,options:d}),O=D.values;for(let[t,n]of D.tokens.entries())if(n.kind
|
|
2
|
+
import{a as e,c as t,d as n,f as r,h as i,i as a,l as o,n as s,o as c,p as l,r as u,s as d,u as f}from"./shared.js";import{argv as p,cwd as m,exit as h,platform as g,stderr as _,stdout as v,versions as y}from"node:process";import{parseArgs as b,stripVTControlCharacters as x,styleText as S}from"node:util";import{dirname as C,isAbsolute as w,resolve as T}from"node:path";import{statSync as E}from"node:fs";for(let e of s(m(),p.slice(2)))fetch(e,{method:`HEAD`}).catch(()=>{});const D=b({strict:!1,allowPositionals:!0,tokens:!0,options:d}),O=D.values;for(let[t,n]of D.tokens.entries()){if(n.kind!==`option`||!n.value?.startsWith(`-`))continue;let r=n.value.startsWith(`--`)?2:1,i=e(n.value.substring(r));if(!i)continue;let a=D.tokens[t+1];O[n.name]=[!0],(O[i]??=[]).push(a?.kind===`positional`&&a.value?a.value:!0)}const k=D.values,A=D.positionals;function j(e){return/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):e}function M(e){let t=o(e);if(t!==!1)return t===!0?!0:Array.from(t).map(j)}let N=String,P=String;function F(e){if(!e)return m();let t=w(e)?e:T(m(),e),n=!1;try{n=E(t).isDirectory()}catch{}return n?t:C(t)}function I(e){return k[`no-color`]===!0?!1:k.color===!0?!0:e.noColor===!0?!1:e.color===!0?!0:!!v.isTTY}async function L(e,t){if(e){let t=e.message??String(e);k.json?console.info(JSON.stringify({error:t})):console.info(N(t))}g===`win32`&&Number(y?.node?.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),h(t??+!!e)}async function R(){for(let e of[v,_])e?._handle?.setBlocking?.(!0);k.help&&(v.write(`usage: updates [options] [files...]
|
|
3
3
|
|
|
4
4
|
Options:
|
|
5
5
|
-u, --update Update versions and write dependency file
|
package/dist/shared.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import{cwd as e,env as t,platform as n,stderr as r}from"node:process";import{styleText as i}from"node:util";import{basename as a,dirname as o,join as s,relative as c,resolve as l}from"node:path";import{accessSync as u,existsSync as d,globSync as f,lstatSync as p,readFileSync as m,readdirSync as h,statSync as g,truncateSync as _,writeFileSync as v}from"node:fs";import{access as y,mkdir as b,readFile as x,writeFile as S}from"node:fs/promises";import{createHash as C}from"node:crypto";import{homedir as w}from"node:os";import{pathToFileURL as T}from"node:url";function ee(e){let t={},n=t,r=e.split(/\r?\n/);for(let e=0;e<r.length;e++){let i=r[e],a=ae(i).trim();if(!a)continue;let o=/^\[\[([^\]]+)\]\]$/.exec(a);if(o){let e=t,r=
|
|
2
|
-
`;case`r`:return`\r`;case`t`:return` `;case`u`:case`U`:return String.fromCodePoint(Number.parseInt(t.slice(1),16));default:return t}})}const
|
|
3
|
-
`)}return
|
|
4
|
-
`);if(n===-1)return null;let r=t.substring(0,n),i=t.substring(n+1);return r&&i?{etag:r,body:i}:null}catch{return null}}async function Je(e,t,n){try{await(Ge??=b(We,{recursive:!0})),await S(s(We,`${Ke(e)}.cache`),`${t}\n${n}`)}catch{}}var Ye=`17.16.11`;function K(e,t,n){if(!t||!n||!e)return!0;let r=Date.parse(e);return Number.isNaN(r)?!0:(n-r)/(24*3600*1e3)>=t}const Xe=Ye,Ze=5e3,q=e=>e.replace(/^v/,``),Qe=e=>e.endsWith(`/`)?e.slice(0,-1):e;function $e(e,t){return{headers:{"user-agent":`updates/${Xe}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function et(e,t){try{return await fetch(e,t)}catch(t){throw Error(`Failed to fetch ${e}${t?.message?`: ${t.message}`:``}`)}}async function tt(e){return typeof e.text==`function`?e.text():JSON.stringify(await e.json())}async function nt(e,t,n={}){let r=t.noCache?null:await qe(e),i=n.headers,a=r?{...i,"if-none-match":r.etag}:i,o=await t.doFetch(e,{...n,headers:a,signal:AbortSignal.timeout(t.fetchTimeout)});if(!o)return{res:void 0};if(o.status===304&&r)return{body:r.body,res:o};if(!o.ok)return{res:o};let s=await tt(o),c=o.headers?.get?.(`etag`);return c&&!t.noCache&&await Je(e,c,s),{body:s,res:o}}async function rt(e,t,n={}){if(!t.noCache){let t=await qe(e);if(t)return{body:t.body}}let r=await t.doFetch(e,{...n,signal:AbortSignal.timeout(t.fetchTimeout)});if(!r)return{res:void 0};if(!r.ok)return{res:r};let i=await tt(r);return t.noCache||await Je(e,`immutable`,i),{body:i,res:r}}function it(e){return(F(e)?.prerelease.length??0)>0}function at(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}function ot(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=J(e),s=J(t);if(!o||!s)return!0;let c=at(e)||it(e),l=it(t);return c&&!l?de(s,o)||n:!l&&fe(s,o)?r===!0||a(i,r):!0}function J(e){return L(e)?.version??``}function st(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:u}){let d=J(n);if(!d)return d;i=at(n)||i,i&&(r.add(`prerelease`),r.has(`patch`)&&r.add(`prepatch`),r.has(`minor`)&&r.add(`preminor`),r.has(`major`)&&r.add(`premajor`));let f=u??(t=>e?.time?.[t]),p=0,m=d;for(let n of t){let t=F(n);if(!t?.version||t.prerelease.length&&(!i||a))continue;let u=t.version;if(s&&!U(u,s)||!K(f(n),c,l))continue;let d=R(m,u);if(!(!d||!r.has(d)))if(o||!(`time`in e))(B(`${t.major}.${t.minor}.${t.patch}`,m)||s&&!U(m,s))&&(m=u);else{let t=Date.parse(e.time[n]);t>=0&&t>p&&(m=u,p=t)}}return m||null}function ct(e,{mode:t,range:n,useGreatest:r,useRel:i,usePre:a,semvers:o,pinnedRange:s,cooldownDays:c,now:l},{allowDowngrade:u,matchesAny:d,isGoPseudoVersion:f}){if(n===`*`||n.includes(`||`))return null;let p=[],m;if(t===`pypi`)p=Object.keys(e.releases).filter(e=>P(e)),m=t=>e.releases?.[t]?.[0]?.upload_time_iso_8601;else if(t===`npm`||t===`cargo`)p=Object.keys(e.versions).filter(e=>P(e)),m=t=>e.time?.[t];else if(t===`go`){let t=J(n);if(!t)return null;let r=a||at(n),p=e=>it(e)&&(!r||i),m={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d},h=e.old||n,g=J(e.new);if(g&&!f(e.new)&&!p(e.new)){let n=R(t,g);if(n&&o.has(n)&&ot(h,e.new,m)&&K(e.Time,c,l)&&(!s||U(g,s)))return e.new}let _=J(e.sameMajorNew);if(_&&!f(e.sameMajorNew)&&!p(e.sameMajorNew)){let n=R(t,_);if(n&&o.has(n)&&ot(h,e.sameMajorNew,m)&&K(e.sameMajorTime,c,l)&&(!s||U(_,s)))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}if(c&&l&&e.olderEligible&&!p(e.olderEligible.version)){let n=J(e.olderEligible.version);if(n){let r=R(t,n);if(r&&o.has(r)&&ot(h,e.olderEligible.version,m)&&(!s||U(n,s)))return e.Time=e.olderEligible.time,delete e.newPath,e.olderEligible.version}}return null}let h=st(e,p,{range:n,semvers:o,usePre:a,useRel:i,useGreatest:r,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:m});if(!h)return null;if(r)return h;{let r=``,f=``;t===`pypi`?(f=e.info.version,r=J(e.info.version)):r=e[`dist-tags`].latest;let p=J(n),m=at(n),g=it(h),_=it(r),v={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d};if(!i&&a||m&&g)return h;if(m&&!g)return ot(n,h,v)?h:null;let y=R(p,r);return y&&y!==`prerelease`&&!o.has(y.replace(/^pre/,``))||i&&it(r)?h:fe(r,p)&&!_?ot(n,r,v)?r:null:!m&&_&&!a||s&&!U(r,s)||c&&l&&!K(t===`pypi`?e.releases?.[f||r]?.[0]?.upload_time_iso_8601:e.time?.[r],c,l)?h:f||r}}const lt=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&<.set(e.substring(0,t),e.substring(t+1))}const ut=Array.from(new Set([`UPDATES_GITHUB_API_TOKEN`,`GITHUB_API_TOKEN`,`GH_TOKEN`,`GITHUB_TOKEN`,`HOMEBREW_GITHUB_API_TOKEN`].map(e=>t[e]).filter(Boolean)));let dt;function ft(){return ut.length?Promise.resolve(ut):dt??=(async()=>{try{let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]),{stdout:n}=await t(e)(`gh`,[`auth`,`token`],{encoding:`utf8`,timeout:5e3}),r=n.trim();return r?[r]:ut}catch{return ut}})()}const pt=new Map;async function mt(e){try{let t=lt.get(new URL(e).hostname);if(t)return[t]}catch{}return ft()}async function ht(e,t,n){let r;try{r=new URL(e).hostname}catch{r=``}let i=await(r?mt(e):ft()),a=AbortSignal.timeout(t.fetchTimeout),o=e=>{let t=$e(`Bearer`,e);return n&&(t.headers={...t.headers,...n}),t.signal=a,t};if(!i.length)return t.doFetch(e,o());let s=r?pt.get(r):void 0;if(s)return t.doFetch(e,o(s));for(let n of i){let i=await t.doFetch(e,o(n));if(i.status!==401&&i.status!==403)return r&&pt.set(r,n),i}return t.doFetch(e,o())}function gt(e,t,n){let r=q(t);if(!P(r))return null;if(n){let n=t,i=q(t);for(let t of e){let e=q(t);P(e)&&(!n||de(e,i))&&(n=t,i=e)}if(pe(r,i))return n}else{let t=e.at(-1);if(!t)return null;let n=q(t);if(!P(n))return null;if(pe(r,n))return t}return null}function _t(e){return e=e.replace(`git@`,``).replace(/.+?\/\//,`https://`).replace(/\.git$/,``),/^[a-z]+:[a-z0-9-]\/[a-z0-9-]$/.test(e)?e.replace(/^(.+?):/,(e,t)=>`https://${t}.com/`):/^[a-z0-9-]\/[a-z0-9-]$/.test(e)?`https://github.com/${e}`:e}const vt=/^[0-9a-f]{7,}$/i;function yt(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function bt(e,t){let n=t.noCache?null:await qe(e),r=await ht(e,t,n?{"if-none-match":n.etag}:void 0);if(r?.status===304&&n)try{let e=JSON.parse(n.body);return{tags:e.tags||[],link:e.link||``}}catch{return null}if(!r?.ok)return null;let i=yt(await r.json()),a=r.headers.get(`link`)||``,o=r.headers.get(`etag`);return o&&!t.noCache&&await Je(e,o,JSON.stringify({link:a,tags:i})),{tags:i,link:a}}async function xt(e,t,n,r){let i=r=>`${e}/repos/${t}/${n}/tags?per_page=100&page=${r}`;try{let e=await bt(i(1),r);if(!e)return[];let t=Array.from(e.tags),n=/<([^>]+)>;\s*rel="last"/.exec(e.link);if(!n)return t;let a=Number(new URL(n[1]).searchParams.get(`page`));if(a<2)return t;let o=await Promise.all(Array.from({length:a-1},(e,t)=>bt(i(t+2),r)));for(let e of o)e&&t.push(...e.tags);return t}catch{return[]}}function St(e,t,n,r){throw e?.status&&e?.statusText?Error(`Received ${e.status} ${e.statusText} from ${t}`):Error(`Unable to fetch ${n} from ${r}`)}function Ct(e,t,n=``){let r=t.startsWith(`v`),i=q(e),a=q(t).split(`.`).length,o=i.split(`.`),s;return s=a===1?o[0]:a===2?`${o[0]}.${o[1]||`0`}`:i,`${r?`v`:``}${s}${n}`}function wt(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function Tt({repository:e,homepage:t,info:n},r,i){if(n){let t=n.project_urls;for(let n of[`repository`,`Repository`,`repo`,`Repo`,`source`,`Source`,`source code`,`Source code`,`Source Code`,`homepage`,`Homepage`])if(t[n]){e=t[n];break}e??=`https://pypi.org/project/${i}/`}let a=``;return r===`https://npm.pkg.github.com`?`https://github.com/${i.replace(/^@/,``)}`:(e&&(a=_t(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${wt(a)}/${e.directory}`)),a||t||``)}const Et={"allow-downgrade":{short:`d`,type:`string`,multiple:!0},"error-on-outdated":{short:`E`,type:`boolean`},"error-on-unchanged":{short:`U`,type:`boolean`},exclude:{short:`e`,type:`string`,multiple:!0},file:{short:`f`,type:`string`,multiple:!0},forgeapi:{type:`string`},goproxy:{type:`string`},cargoapi:{type:`string`},dockerapi:{type:`string`},greatest:{short:`g`,type:`string`,multiple:!0},help:{short:`h`,type:`boolean`},include:{short:`i`,type:`string`,multiple:!0},indirect:{short:`I`,type:`boolean`},json:{short:`j`,type:`boolean`},jsrapi:{type:`string`},cooldown:{short:`C`,type:`string`},minor:{short:`m`,type:`string`,multiple:!0},modes:{short:`M`,type:`string`,multiple:!0},color:{short:`c`,type:`boolean`},"no-cache":{short:`x`,type:`boolean`},"no-color":{short:`n`,type:`boolean`},patch:{short:`P`,type:`string`,multiple:!0},pin:{short:`l`,type:`string`,multiple:!0},prerelease:{short:`p`,type:`string`,multiple:!0},pypiapi:{type:`string`},registry:{short:`r`,type:`string`},release:{short:`R`,type:`string`,multiple:!0},sockets:{short:`s`,type:`string`},timeout:{short:`T`,type:`string`},types:{short:`t`,type:`string`,multiple:!0},update:{short:`u`,type:`boolean`},verbose:{short:`V`,type:`boolean`},version:{short:`v`,type:`boolean`}};function Dt(e,t){return RegExp(`^${G(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Ot(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Dt(e,n):e instanceof RegExp?e:Dt(e,n)}function kt(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.flatMap(e=>typeof e==`string`?Le(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function At(e){for(let[t,{short:n}]of Object.entries(Et))if(t===e||n===e)return t;return``}function jt(e){return new Set(e.map(e=>Ot(e,!1,!0)))}function Mt(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>Le(e)):[]}function Nt(e){let t={},n=Array.isArray(e)?e:[e];for(let e of n){if(typeof e!=`string`)continue;let[n,r]=e.split(`=`,2);n&&r&&Se(r)&&(t[n]=r)}return t}function Pt(e){if(typeof e==`boolean`)return e;if(!Array.isArray(e)||!e.length)return!1;let t=new Set;for(let n of e)t.add(Ot(n,!1,!1));return t}async function Ft(e){let t=await Promise.all([`js`,`ts`,`mjs`,`mts`].map(async t=>{let n=`updates.config.${t}`,r=s(e,n);try{await y(r)}catch{return null}try{return{configDir:e,filename:n,default:(await import(T(r).href)).default??{}}}catch(e){return Error(`Unable to parse config file ${n}: ${e?.message??e}`)}}));for(let e of t)if(e&&!(e instanceof Error))return e;for(let e of t)if(e instanceof Error)throw e;return null}const It=Ue(e=>He(e,Ft));async function Lt(e){let t=await It(e),n=t?.default??{},{loadRenovateConfig:r}=await import(`./renovate.js`);return{...await r(t?.configDir??e,n.inherit?.renovate),...n}}function Rt(e){if(/^\s*\{/.test(e))return JSON.parse(e);let t={};for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e||e.startsWith(`#`)||e.startsWith(`;`))continue;let r=e.indexOf(`=`);if(r===-1)continue;let i=e.slice(r+1).trim();i.length>=2&&(i.startsWith(`"`)&&i.endsWith(`"`)||i.startsWith(`'`)&&i.endsWith(`'`))&&(i=i.slice(1,-1)),t[e.slice(0,r).trim()]=i}return t}function zt(e){try{return Rt(m(e,`utf-8`))}catch{return}}function Bt(t){let n=e();for(;;){let e=s(n,t);try{return g(e),e}catch{}let r=o(n);if(r===n)break;n=r}}function Vt(e){let n={},r=e.toLowerCase();for(let[i,a]of Object.entries(t))if(i.toLowerCase().startsWith(r)){let t=i.substring(e.length).split(`__`).filter(Boolean);if(t.length===0)continue;let r=n;for(let e=0;e<t.length;e++){let n=t[e];if(e===t.length-1)r[n]=a;else if(r[n]===void 0&&(r[n]={}),typeof r[n]==`object`)r=r[n];else break}}return n}function Ht(e,r={}){let i=n===`win32`,a=i?t.USERPROFILE:t.HOME,o=[{...r}],c=[];function l(e){if(!e||c.includes(e))return;let t=zt(e);t&&(o.push(t),c.push(e))}i||(l(s(`/etc`,e,`config`)),l(s(`/etc`,`${e}rc`))),a&&(l(s(a,`.config`,e,`config`)),l(s(a,`.config`,e)),l(s(a,`.${e}`,`config`)),l(s(a,`.${e}rc`))),l(Bt(`.${e}rc`));let u=Vt(`${e}_`);return u.config&&l(u.config),Object.assign({},...o,u,c.length?{configs:c,config:c[c.length-1]}:void 0)}const Ut=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,Wt=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,Gt=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,Kt=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,qt=`https://registry.npmjs.org`;let Y=null;const Jt=new Map;function Yt(){return Y??=Ht(`npm`,{registry:qt})}function Xt(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function Zt(e,t){let n=n=>t[`${e}:${n}`]||t[`${e}/:${n}`],r=n(`_authToken`);if(r)return{token:Xt(r),type:`Bearer`};let i=n(`username`),a=n(`_password`);if(i&&a){let e=Buffer.from(Xt(a),`base64`).toString(`utf8`);return{token:Buffer.from(`${i}:${e}`).toString(`base64`),type:`Basic`,username:i,password:e}}let o=n(`_auth`);if(o)return{token:Xt(o),type:`Basic`}}function Qt(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=Zt(`//${n.host}${r.replace(/\/$/,``)}`,t);if(e)return e;let i=r.endsWith(`/`)?r:`${r}/`;n.pathname=new URL(`..`,new URL(i,`http://x`)).pathname}let i=t._auth;if(i)return{token:Xt(i),type:`Basic`}}function $t(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function en(e,t){Y||=Yt();let n=e.startsWith(`@`)?(/@[a-z0-9][\w.-]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=Jt.get(r);if(i)return i;let a=()=>({auth:Qt(t,Y),registry:t}),o;if(!e.startsWith(`@`))o=a();else{let e=Qe($t(n,Y));if(e!==t)try{let t=Qt(e,Y);o=t?.token?{auth:t,registry:e}:a()}catch{o=a()}else o=a()}return Jt.set(r,o),o}function tn(e,t,n){Y||=Yt();let r=Qe((typeof n.registry==`string`?n.registry:!1)||t.registry||Y.registry||qt);return{...en(e,r),originalRegistry:r}}function nn(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const rn=new Map,an=new Map,on=new Map;async function sn(e,t,n,r,i){let{auth:o,registry:s}=tn(e,n,r),c=nn(s,t===`resolutions`?a(e):e),l=rn.get(c);if(!l){let t=$e(o?.type,o?.token),n={...t.headers,accept:`application/vnd.npm.install-v1+json`};t.headers=n,l=(async()=>{let r=i.noCache?null:await qe(c);r&&(n[`if-none-match`]=r.etag);let a=await i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...t});if(a?.status===304&&r)return JSON.parse(r.body);if(a?.ok){let e=await a.text(),t=a.headers.get(`etag`);return t&&!i.noCache&&await Je(c,t,e),JSON.parse(e)}St(a,c,e,s)})().catch(e=>{throw rn.delete(c),e}),rn.set(c,l)}return[await l,t,s,e]}async function cn(e,t,n,r,i){let{auth:a,registry:o}=tn(e,n,r),s=nn(o,e,t),c=an.get(s);if(c)return c;let l=(async()=>{try{let n=$e(a?.type,a?.token),r=await rt(s,i,n);if(!(`body`in r))return{};let c=JSON.parse(r.body),l=``,u=c?._npmOperationalInternal?.tmp;if(u){let e=/(\d{13})/.exec(u);e&&(l=new Date(Number(e[1])).toISOString())}if(!l){let r=nn(o,e),a=on.get(r);a||(a=i.doFetch(r,{...n,signal:AbortSignal.timeout(i.fetchTimeout)}).then(e=>e?.ok?e.json():null).catch(()=>(on.delete(r),null)),on.set(r,a)),l=(await a)?.time?.[t]||``}return{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})();return an.set(s,l),l}function ln(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function un(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function dn(e,t){if(e.startsWith(`npm:@jsr/`)){let t=/^npm:@jsr\/([^_]+)__([^@]+)@(.+)$/.exec(e);if(t)return{scope:t[1],name:t[2],version:t[3]}}else if(e.startsWith(`jsr:@`)){let t=/^jsr:@([^/]+)\/([^@]+)@(.+)$/.exec(e);if(t)return{scope:t[1],name:t[2],version:t[3]}}else if(e.startsWith(`jsr:`)){let n=e.substring(4);if(t?.startsWith(`@`)){let e=/^@([^/]+)\/(.+)$/.exec(t);if(e)return{scope:e[1],name:e[2],version:n}}}return{scope:null,name:null,version:``}}async function fn(e,t,n){let r=/^@([^/]+)\/(.+)$/.exec(e);if(!r)throw Error(`Invalid JSR package name: ${e}`);let[,i,a]=r,o=`${n.jsrApiUrl}/@${i}/${a}/meta.json`,s=await nt(o,n,{headers:{"accept-encoding":`gzip, deflate, br`}});if(`body`in s){let r=JSON.parse(s.body),i={},a={};for(let[e,t]of Object.entries(r.versions))i[e]={version:e,time:t.createdAt},a[e]=t.createdAt;return[{name:e,"dist-tags":{latest:r.latest},versions:i,time:a},t,n.jsrApiUrl,e]}St(s.res,o,e,`JSR`)}function pn(e,t){let n=new Map;for(let[e,{old:r,oldOrig:i,new:a}]of Object.entries(t)){let[t,o]=e.split(`\0`),s=i||r;t===`packageManager`?n.set(`${t}\0${o}@${s}`,`"${t}": "${o}@${a}"`):n.set(`${o}\0${s}`,`"${o}": "${a}"`)}return n.size?e.replace(/"((?:[^"\\]|\\.)*)": *"((?:[^"\\]|\\.)*)"/g,(e,t,r)=>n.get(`${t}\0${r}`)??e):e}function mn(e,t,n){let r=e.replace(Kt,t);if(n&&n!==e&&/^[\^~]/.test(r)){let e=n.substring(1).split(`.`),t=r.substring(1).split(`.`);e.length!==t.length&&(r=`${r[0]}${t.slice(0,e.length).join(`.`)}`)}if(n&&n!==e&&r.startsWith(`>=`)){let e=/^>=\s/.test(n)?`>= `:`>=`,t=n.replace(/^>=\s*/,``),i=r.replace(/^>=\s*/,``),a=t.split(`.`),o=i.split(`.`);a.length!==o.length&&(r=`${e}${o.slice(0,a.length).join(`.`)}`)}return r}function X(e){let t=e.match(Gt);return t?.length===1?e.replace(Gt,J(t[0])):e}async function hn(e,t,n){let r=`${n.forgeApiUrl}/repos/${e}/${t}/commits`;try{let e=n.noCache?null:await qe(r),t=await ht(r,n,e?{"if-none-match":e.etag}:void 0);if(t?.status===304&&e){let{sha:t,commit:n}=JSON.parse(e.body)[0];return{hash:t,commit:n}}if(!t?.ok)return{hash:``,commit:{}};let i=await t.text(),a=t.headers.get(`etag`);a&&!n.noCache&&await Je(r,a,i);let{sha:o,commit:s}=JSON.parse(i)[0];return{hash:o,commit:s}}catch{return{hash:``,commit:{}}}}async function gn(e,t,n){return(await xt(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function _n(e,t,n,r){let i=t.old.replace(Ut,``),[,a,o,s]=Wt.exec(i)||[];if(!a||!o||!s)return null;if(vt.test(s)){let{hash:n,commit:i}=await hn(a,o,r);if(!n)return null;let c=i?.committer?.date??i?.author?.date,l=n.substring(0,s.length);if(s!==l)return{key:e,newRange:t.old.replace(s,l),user:a,repo:o,oldRef:s,newRef:l,newDate:c}}else{let t=gt(await gn(a,o,r),s,n);if(t)return{key:e,newRange:t,user:a,repo:o,oldRef:s,newRef:t}}return null}async function vn(e,t,n){let r=`${n.pypiApiUrl}/pypi/${e}/json`,i=await nt(r,n,{headers:{"accept-encoding":`gzip, deflate, br`}});if(`body`in i)return[JSON.parse(i.body),t,null,e];St(i.res,r,e,n.pypiApiUrl)}function yn(e,t){let n=e;for(let[e,{old:r,oldOrig:i}]of Object.entries(t)){let a=e.split(`\0`)[1],o=i||r;n=n.replace(RegExp(`("${G(a)} *[<>=~]+ *)${G(o)}(")`,`g`),(n,r,i)=>`${r}${t[e].new}${i}`)}return n}let bn;async function xn(){let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]);return t(e)}function Sn(){return bn??=xn()}function Cn(){let e=t.GOPROXY||`https://proxy.golang.org,direct`;for(let t of e.split(/[,|]/)){let e=t.trim();if(e&&e!==`direct`&&e!==`off`)return Qe(e)}return`https://proxy.golang.org`}function wn(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function Tn(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function En(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}function Dn(e){let t=/\/v(\d+)$/.exec(e);return t?Number.parseInt(t[1]):1}function On(e,t){return t<=1?e.replace(/\/v\d+$/,``):`${e.replace(/\/v\d+$/,``)}/v${t}`}function kn(e,t){let n=t?/^(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(e):/^replace\s+(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(e);if(!n)return null;let[,r,i,a]=n;return i.startsWith(`./`)||i.startsWith(`/`)||i.startsWith(`../`)?null:{origModule:r,targetModule:i,targetVersion:a}}function An(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||jn(n)}function jn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function Mn(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function Nn(e,t,n){if(!t)return null;let r=t,i=e+101,a=e+2,o=7;for(;a<=i;){let e=Math.min(a+o-1,i),t=await Promise.all(Array.from({length:e-a+1},(e,t)=>n(a+t))),s=t.indexOf(null),c=s===-1?t:t.slice(0,s);if(c.length&&(r=c.at(-1)),s!==-1)break;a=e+1,o*=2}return r}function Pn(e,t,n,r,i,a){let o=r?.Version??i,s=r?.Time??a,c=r?.path??e;return[{name:e,old:n,new:q(o),Time:s,...c===e?{}:{newPath:c},sameMajorNew:q(i),sameMajorTime:a},t,null,e]}function Fn(e){let t={},n={},r={},i={},a=new Set,o=[],s=e.split(/\r?\n/),c=!1,l=!1,u=!1;for(let e of s){let i=e.trim();if(/^require\s*\(/.test(i)){c=!0;continue}if(/^replace\s*\(/.test(i)){l=!0;continue}if(/^tool\s*\(/.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(u){i&&!i.startsWith(`//`)&&o.push(i);continue}let s=/^tool\s+(\S+)/.exec(i);if(s){o.push(s[1]);continue}let d=i.includes(`// indirect`);if(l||/^replace\s+/.test(i)){let e=kn(i,l);e&&(r[e.targetModule]=e.targetVersion,a.add(e.origModule));continue}let f=c?/^(\S+)\s+(v\S+)/.exec(i):/^require\s+(\S+)\s+(v\S+)/.exec(i);f&&((d?n:t)[f[1]]=f[2])}for(let e of a)delete t[e],delete n[e];if(o.length){let e=[...Object.keys(n),...Object.keys(t)];for(let r of o){let a=``;for(let t of e)(r===t||r.startsWith(`${t}/`))&&t.length>a.length&&(a=t);let o=a?n[a]?n:t[a]?t:null:null;o&&(i[a]=o[a],delete o[a])}}return{deps:t,indirect:n,replace:r,tool:i}}async function In(e,n,r,i,a){let o=Dn(e),s=async(e,n)=>{try{let{stdout:r}=await(await Sn())(`go`,[`list`,`-m`,`-json`,`${e}@latest`],{timeout:n,cwd:i,env:t}),a=JSON.parse(r);return{Version:a.Version,Time:a.Time||``,path:e}}catch{return null}},c=An(e,n,r),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(On(e,o+1),a.goProbeTimeout)]);return l?Pn(e,n,r,await Nn(o,u,t=>s(On(e,t),a.goProbeTimeout)),l.Version,l.Time):Mn(e,r,n)}async function Ln(e,t,n,r,i,a){if(Tn(e,a))return In(e,t,n,r,i);let o=En(e),s=Dn(e),c=async t=>{let n=On(e,t);return i.doFetch(`${i.goProxyUrl}/${En(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout),headers:{"accept-encoding":`gzip, deflate, br`}}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},l=An(e,t,n),[u,d]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}}),l?null:c(s+1)]);if(!u.ok)return Mn(e,n,t);let f,p;try{let e=await u.json();f=e.Version,p=e.Time}catch{return Mn(e,n,t)}return Pn(e,t,n,await Nn(s,d,c),f,p)}function Rn(e,t){let n=G(t);return e=e.replace(RegExp(`^replace\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(RegExp(`^\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(/^replace\s*\(\s*\)\s*\n/gm,``),e}function zn(e,t){let n=e,r={};for(let[e,{old:i,oldOrig:a}]of Object.entries(t)){let[o,s]=e.split(`\0`),c=a||i,l=t[e].new;if(o===`replace`){n=n.replace(RegExp(`(=>\\s+${G(s)}\\s+)v${G(c)}`,`g`),`$1v${l}`);continue}if(o===`indirect`){n=n.replace(RegExp(`(${G(s)}) +v${G(c)}`,`g`),`$1 v${l}`);continue}let u=Dn(s),d=Number.parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=On(s,d);n=n.replace(RegExp(`${G(s)} +v${G(c)}`,`g`),`${e} v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)${G(s)}(/\\S+)?\\s*$`,`gm`),`$1${e}$2`)),r[s]=e}else n=n.replace(RegExp(`(${G(s)}) +v${G(c)}`,`g`),`$1 v${l}`);o!==`tool`&&(n=Rn(n,s))}return[n,r]}function Bn(e,t,n){if(!Object.keys(t).length)return;let r=f(`**/*.go`,{cwd:e});for(let i of r){let r=s(e,i),a=m(r,`utf8`),o=!1;for(let[e,n]of Object.entries(t)){let t=RegExp(`"${G(e)}(/|")`,`g`),r=a.replace(t,`"${n}$1`);r!==a&&(a=r,o=!0)}o&&n(r,a)}}function Vn(e){let t=[],n={},r=e.split(/\r?\n/),i=!1,a=!1;for(let e of r){let r=e.trim();if(/^use\s*\(/.test(r)){i=!0;continue}if(/^replace\s*\(/.test(r)){a=!0;continue}if(r===`)`){i=!1,a=!1;continue}if(i){let e=/^(\S+)/.exec(r);e&&!r.startsWith(`//`)&&t.push(e[1]);continue}let o=/^use\s+(\S+)/.exec(r);if(o){t.push(o[1]);continue}if(a||/^replace\s+/.test(r)){let e=kn(r,a);e&&(n[e.targetModule]=e.targetVersion);continue}}return{use:t,replace:n}}function Hn(e){let t=`https://${Un(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[,e,i,...a]=r;return n.pathname=`/${e}/${i}/${wt(t)}/${a.join(`/`)}`,n.toString()}else return t}function Un(e){return/\/v[0-9]$/.test(e)?o(e):e}function Wn(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const Gn=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function Kn(e){if(e.startsWith(`docker://`)||e.startsWith(`./`))return null;let t=/^https?:\/\/([^/]+)\/(.+)$/.exec(e),n=t?.[1]??null,r=t?.[2]??e,i=r.indexOf(`@`);if(i===-1)return null;let a=r.substring(0,i),o=r.substring(i+1);if(!o)return null;let s=a.split(`/`);if(s.length<2)return null;let c=n?`${n}/${a}`:a;return{host:n,owner:s[0],repo:s[1],ref:o,name:c,isHash:vt.test(o)}}function qn(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function Jn(e,t,n,r,i){let a=`${e}/repos/${t}/${n}/git/commits/${r}`;if(!i.noCache){let e=await qe(a);if(e)return e.body}try{let e=await ht(a,i);if(!e?.ok)return``;let t=await e.json(),n=t?.committer?.date||t?.author?.date||``;return n&&!i.noCache&&await Je(a,`immutable`,n),n}catch{return``}}function Yn(e,t){return Ct(F(q(e))?.version??q(e),t)}function Xn(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?)${G(e)}@${G(r)}`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}const Zn=[`.github`,`.gitea`,`.forgejo`];function Qn(e){return RegExp(`(?:${Zn.map(G).join(`|`)})\\/(?:workflows\\/[^/]+|(?:[^/]+\\/)*action)\\.ya?ml$`).test(e.replace(/\\/g,`/`))}function $n(e){let t=new Set;try{for(let n of h(s(e,`workflows`)))/\.ya?ml$/.test(n)&&t.add(l(s(e,`workflows`,n)))}catch{}try{for(let n of h(e,{recursive:!0,withFileTypes:!0}))!n.isFile()||!/^action\.ya?ml$/.test(n.name)||t.add(l(s(n.parentPath,n.name)))}catch{}return Array.from(t)}const er=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,tr=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,nr=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,rr=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,ir=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function ar(e){let t=e.split(`/`);return t.length===1?{registry:null,namespace:`library`,repo:t[0]}:t.length===2&&!t[0].includes(`.`)&&!t[0].includes(`:`)?{registry:null,namespace:t[0],repo:t[1]}:{registry:t[0],namespace:t.slice(1,-1).join(`/`)||t[1],repo:t[t.length-1]}}function or(e){if(e=e.replace(/^docker:\/\//,``),e.includes(`@`))return null;let t=e.lastIndexOf(`:`),n,r;if(t===-1||e.lastIndexOf(`/`)>t||(n=e.substring(0,t),r=e.substring(t+1),!r||!er.test(r)))return null;let{registry:i,namespace:a,repo:o}=ar(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function sr(e){let t=er.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function cr(e,t){let n=sr(t);return n?Ct(e,n.version,n.suffix):t}function lr(e,t){let n=[];for(let r of e.matchAll(t)){let e=or(r[1]);e&&n.push({ref:e,match:r[1]})}return n}async function ur(e,t,n){let r={},i=`${n.dockerApiUrl}/v2/repositories/${e}/${t}/tags`,a=e=>`${i}?page_size=100&ordering=last_updated&page=${e}`,o={headers:{"accept-encoding":`gzip, deflate, br`}},s=async e=>{try{let t=await nt(a(e),n,o);return`body`in t?JSON.parse(t.body):null}catch{return null}},c=await s(1);if(!c)return r;for(let e of c.results||[])r[e.name]=e.tag_last_pushed||e.last_updated||``;let l=Math.min(Math.ceil((c.count||0)/100),10);if(l<2)return r;let u=await Promise.all(Array.from({length:l-1},(e,t)=>s(t+2)));for(let e of u)if(e)for(let t of e.results||[])r[t.name]=t.tag_last_pushed||t.last_updated||``;return r}async function dr(e,t,n){let{registry:r,namespace:i,repo:a}=ar(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await ur(i,a,n),name:e},t,null,e]}function fr(e,t,n,r,i,a){let o=sr(t);if(!o)return null;let s=L(q(o.version))?.version;if(!s)return null;let c=s,l=``,u=``;for(let[t,s]of Object.entries(e)){let e=sr(t);if(!e||e.suffix!==o.suffix)continue;let d=L(q(e.version))?.version;if(!d||a&&!U(d,a)||!K(s,r,i))continue;let f=R(c,d);!f||!n.has(f)||B(d,c)&&(c=d,l=t,u=s)}if(!l||c===s)return null;let d=cr(c,t);return d===t?null:{newTag:d,date:u}}function pr(e,t,n){let r=e;for(let[e,i]of Object.entries(t)){let t=e.split(`\0`)[1],a=i.oldOrig||i.old;for(let e of n)r=r.replace(e(G(t),G(a)),`$1${t}:${i.new}`)}return r}function mr(e,t){return pr(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}`,`g`)])}function hr(e,t){return pr(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}`,`g`)])}function gr(e,t){return pr(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}`,`g`)])}const _r=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function vr(e){return/^docker-.+\.ya?ml$/.test(e)}function yr(e){return/^Dockerfile(\..+)?$/.test(e)}function br(e){return yr(e)||vr(e)}function xr(e){return yr(e)?tr:nr}function Sr(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const Cr=new Map;async function wr(e,t,n){let r=`${Qe(n.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`,i=n.noCache?void 0:Cr.get(r);return i||(i=nt(r,n,$e()).then(t=>{`body`in t||St(t.res,r,e,n.cratesIoUrl);let i;try{i=JSON.parse(t.body)}catch{throw Error(`Invalid JSON from ${r}`)}let a=(i.versions||[]).filter(e=>!e.yanked),o={},s={};for(let e of a)e.num&&(o[e.num]={},s[e.num]=e.created_at||``);return{name:e,versions:o,time:s,"dist-tags":{latest:a[0]?.num??``}}}).catch(e=>{throw Cr.delete(r),e}),Cr.set(r,i)),[await i,t,null,e]}function Tr(e){let t=new Map;for(let n of e.split(`[[package]]`)){let e=/\bname\s*=\s*"([^"]+)"/.exec(n),r=/\bversion\s*=\s*"([^"]+)"/.exec(n);if(!e||!r)continue;let i=e[1],a=r[1];if(!P(a))continue;let o=t.get(i);o||t.set(i,o=[]),o.push(a)}return t}const Er=/^\d/;function Dr(e,t){return Er.test(e)?mn(X(`^${e}`),t,`^${e}`).replace(/^\^/,``):mn(X(e),t,e)}function Or(e,t,n){let r=e.get(t);if(!r)return;let i=Er.test(n)?`^${n}`:n,a;for(let e of r)U(e,i)&&(!a||de(e,a))&&(a=e);return a}const kr=Pe.map(G).join(`|`);function Ar(e,t){let n=e;for(let[e,r]of Object.entries(t)){let[,t]=e.split(`\0`),i=r.oldOrig||r.old,a=r.new,o=G(t),s=G(i);n=n.replace(RegExp(`^(\\s*${o}\\s*=\\s*["'])${s}(["'].*)$`,`gm`),`$1${a}$2`),n=n.replace(RegExp(`(\\s*${o}\\s*=\\s*\\{\\s*version\\s*=\\s*["'])${s}(["'])`,`g`),`$1${a}$2`),n=n.replace(RegExp(`(\\[(?:${kr})\\.${o}\\][^\\[]*?version\\s*=\\s*["'])${s}(["'])`,`g`),`$1${a}$2`)}return n}function jr(e){return e.split(`|`)[0]}function Mr(e,t){let n=t===`.`?``:`|${t}`,r={};for(let[t,i]of Object.entries(e)){let[e,a]=t.split(`\0`),o=jr(e);e===`${o}${n}`&&(r[`${o}${a}`]=i)}return r}const Nr=/[*?{[]/;async function Pr(e,t,n,r=32){let i=new Set,a=[];for(let r of e){let e=Nr.test(r)?f(r,{cwd:t}).map(e=>l(s(t,e))):[l(s(t,r))];for(let r of e){let e=s(r,n);if(i.has(e))continue;i.add(e);let o=c(t,r);a.push({absPath:e,memberPath:`./${o.replace(/\\/g,`/`)}`})}}return(await W(a,async({absPath:e,memberPath:t})=>{try{return{absPath:e,content:await x(e,`utf8`),memberPath:t}}catch{return null}},{concurrency:r})).filter(e=>e!==null)}function Fr(e){let t=[],n=e.split(`
|
|
5
|
-
`),r=!1;for(let e of n){if(/^packages\s*:/.test(e)){r=!0;continue}if(r){if(/^\S/.test(e))break;let n=/^\s+-\s+['"]?([^'"#\s]+)['"]?/.exec(e);n&&t.push(n[1])}}return t}const Ir={"pnpm-workspace.yaml":`npm`,"package.json":`npm`,"pyproject.toml":`pypi`,"go.work":`go`,"go.mod":`go`,"Cargo.toml":`cargo`},Lr=new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`]),Rr=(e,t)=>typeof e==`string`?Qe(e):typeof t==`function`?t():t;function zr(e,t){let n=new Map,r=new Set(e),i=t;for(;r.size;){for(let e of r){let t=s(i,e);try{u(t),n.set(e,t),r.delete(e)}catch{}}let e=o(i);if(e===i)break;i=e}return n}async function Br(e,t){let n=await W(e,async e=>{try{return[e,await x(e,`utf8`)]}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}},{concurrency:t});return new Map(n)}function Z(e,t){t&&(e.date=t,e.age=De(t,{noAffix:!0}))}function Vr(e){let t=0;for(let n of Object.keys(e))t+=Object.keys(e[n]).length;return t}function Hr(e){console.error(`${Re()} ${e}`)}function Ur(t){return t.replace(`${e()}/`,``).replace(`${e()}\\`,``)}function Q(e,t,n,r,i){if(i===`engines`&&je.includes(e)||t===`pypi`&&e===`python`)return!1;if(!n.size&&!r.size)return!0;let a=t===`go`?e.replace(/\/v\d+$/,``):e;for(let t of r)if(t.test(e)||t.test(a))return!1;for(let t of n)if(t.test(e)||t.test(a))return!0;return!n.size}function Wr(t){let n=new Set;if(t)for(let e of t){let t;try{t=p(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}if(t?.isFile())n.add(l(e));else if(t?.isDirectory()){for(let t of Object.keys(Ir)){let r=s(e,t),i=null;try{i=p(r)}catch{}i?.isFile()&&n.add(l(r))}try{for(let t of h(e,{withFileTypes:!0}))t.isFile()&&br(t.name)&&n.add(l(s(e,t.name)))}catch{}let t=l(e).replace(/\\/g,`/`),r=Zn.some(e=>t.endsWith(`${e}/workflows`)),i=!r&&Zn.some(e=>t.endsWith(e)),a;a=r?[o(t)]:i?[t]:Zn.map(e=>s(t,e));for(let e of a)for(let t of $n(e))n.add(t)}else throw Error(`${e} is neither a file nor directory`)}else{let t=new Set(Zn),r=[...Object.keys(Ir),..._r,...Zn];for(let[i,a]of zr(r,e()))if(t.has(i))for(let e of $n(a))n.add(e);else n.add(l(a));try{for(let t of h(e(),{withFileTypes:!0}))t.isFile()&&br(t.name)&&!_r.includes(t.name)&&n.add(l(s(e(),t.name)))}catch{}}for(let e of n)a(e)===`go.work`&&n.delete(s(o(e),`go.mod`));for(let e of n)a(e)===`pnpm-workspace.yaml`&&n.delete(s(o(e),`package.json`));return n}function $(e,t){n===`win32`&&_(e,0),v(e,t,n===`win32`?{flag:`r+`}:void 0)}function Gr(e){let t={results:{}};for(let n of Object.keys(e))for(let[r,i]of Object.entries(e[n])){typeof i.oldPrint==`string`&&(i.old=i.oldPrint),typeof i.newPrint==`string`&&(i.new=i.newPrint),typeof i.oldOrig==`string`&&!ln(i.oldOrig)&&(i.old=n===`go`?Wn(i.oldOrig):i.oldOrig),n===`go`&&(i.new=Wn(i.new)),n===`actions`&&(i.old=q(i.old),i.new=q(i.new)),delete i.oldPrint,delete i.newPrint,delete i.oldOrig,delete i.date;let[e,a]=r.split(`\0`),o=t.results[n]??={};(o[e]??={})[a]=i}return t}let Kr=!1;async function qr(e={}){if(!Kr){let{enableDnsCache:e}=await import(`./dns.js`);e(),Kr=!0}let t={...e},n=t.sockets??25,c=t.timeout??0,u=Rr(e.forgeapi,`https://api.github.com`),d=Rr(e.pypiapi,`https://pypi.org`),f=Rr(e.jsrapi,`https://jsr.io`),p=Rr(e.goproxy,Cn),m=Rr(e.cargoapi,`https://crates.io`),h=Rr(e.dockerapi,`https://hub.docker.com`),g=wn(),_=t.color===!0||t.noColor!==!0&&r.isTTY,v=e=>_?t=>i(e,String(t)):String,y=v(`magenta`),b=v(`green`),S=v(`red`),C={fetchTimeout:c||5e3,goProbeTimeout:c?c/2:2500,forgeApiUrl:u,pypiApiUrl:d,jsrApiUrl:f,goProxyUrl:p,cratesIoUrl:m,dockerApiUrl:h,doFetch:async(e,n)=>{t.verbose&&Hr(`${y(n?.method||`GET`)} ${e}`);let r=await et(e,n);return t.verbose&&Hr(`${r.ok?b(r.status):S(r.status)} ${e}`),r},noCache:!!t.noCache},w=Pt(t.greatest),T=Pt(t.prerelease),E=Pt(t.release),te=Pt(t.patch),ne=Pt(t.minor),re=Pt(t.allowDowngrade),D=t.modes?.length?new Set(t.modes):Lr;D.has(`actions`)&&ft();function ie(e){return te===!0||Fe(e,te)?new Set([`patch`]):ne===!0||Fe(e,ne)?new Set([`patch`,`minor`]):new Set([`patch`,`minor`,`major`])}let ae=new Map;function O(e){let t=ae.get(e);return t||(t={useGreatest:typeof w==`boolean`?w:Fe(e,w),usePre:typeof T==`boolean`?T:Fe(e,T),useRel:typeof E==`boolean`?E:Fe(e,E),semvers:ie(e)},ae.set(e,t)),t}let oe=jt(t.include??[]),se=jt(t.exclude??[]),ce=t.pin??{},k={},A={},j={},M={},le=Date.now(),N=t.cooldown?Ve(String(t.cooldown)):0,F=0,I=(e,t,n,r,i,a)=>{k[e][`${t}${n}${r}`]={old:i,oldOrig:a}},ue=Wr(t.files?.length?new Set(t.files):!1),L=await Br(Array.from(ue).filter(e=>{if(Qn(e))return D.has(`actions`)||D.has(`docker`);let t=a(e);if(br(t))return D.has(`docker`);let n=Ir[t];return!!n&&D.has(n)}),n),R={},z={},de=[],B=null,fe=[],pe=!1,me=[],he=!1,V=[],ge=[],H={};async function _e(e){let n=await Lt(e);return{modeConfig:n,modeInclude:n.include?.length?jt([...t.include??[],...n.include]):oe,modeExclude:n.exclude?.length?jt([...t.exclude??[],...n.exclude]):se,pin:{...n.pin,...ce}}}function ve(e,n){return t.types?.length?t.types:n?.types?.length?n.types:e===`npm`?Ae:e===`pypi`?Me:e===`go`?t.indirect?Ne:Ne.filter(e=>e!==`indirect`):e===`cargo`?Pe:[]}function ye(e,t,n,r){k.docker??={};for(let i of n)for(let{ref:n}of lr(e,i)){if(!Q(n.fullImage,`docker`,r.include,r.exclude,`docker`))continue;let e=`${t}${n.fullImage}`;if(k.docker[e])continue;let i=sr(n.tag);i&&(k.docker[e]={old:i.version,oldOrig:n.tag},ge.push({key:e,fullImage:n.fullImage,ref:n,filePin:r.pin}))}}async function be(e){let n=await Lt(e);return{include:n.include?.length?jt([...t.include??[],...n.include]):oe,exclude:n.exclude?.length?jt([...t.exclude??[],...n.exclude]):se,pin:n.pin??{}}}for(let e of ue){if(Qn(e)){let t=D.has(`actions`),n=D.has(`docker`);if(!t&&!n)continue;let r=L.get(e),i=Ur(e),a=await be(o(e));if(R[i]={absPath:e,content:r},t){k.actions??={};let e=Array.from(r.matchAll(Gn),e=>Kn(e[1])).filter(e=>e!==null);for(let t of e){if(!Q(t.name,`actions`,a.include,a.exclude,`actions`))continue;let e=`${i}${t.name}`;k.actions[e]||(k.actions[e]={old:t.ref},V.push({...t,key:e,apiUrl:qn(t.host,u),filePin:a.pin}))}}n&&(z[i]={absPath:e,content:r,fileType:`workflow`},ye(r,i,[nr,rr,ir],a));continue}let t=a(e);if(br(t)){if(!D.has(`docker`))continue;let n=L.get(e),r=Ur(e),i=yr(t)?`dockerfile`:`compose`,a=await be(o(e));z[r]={absPath:e,content:n,fileType:i},ye(n,r,[xr(t)],a);continue}let r=Ir[t];if(!D.has(r))continue;if(t===`go.work`){k[r]??={};let t=o(l(e)),i=L.get(e);B={file:e,content:i};let a=Vn(i),[c,u]=await Promise.all([_e(t),W(a.use,async e=>{let n=l(s(t,e,`go.mod`));try{return{usePath:e,modPath:n,content:await x(n,`utf8`)}}catch{return null}},{concurrency:n})]),{modeConfig:d,modeInclude:f,modeExclude:p,pin:m}=c,h=ve(r,d);M[r]=e,H[r]={modeConfig:d,projectDir:t,pin:m};for(let e of u){if(!e)continue;let{usePath:t,modPath:n,content:i}=e,a=Fn(i),s=o(n);de.push({absPath:n,content:i,projectDir:s,usePath:t});let c=t===`.`?``:`|${t}`;for(let e of h){let t=a[e]||{};for(let[n,i]of Object.entries(t))Q(n,r,f,p,e)&&I(r,e,c,n,Wn(i),q(i))}}for(let[e,t]of Object.entries(a.replace))Q(e,r,f,p,`replace`)&&I(r,`replace`,``,e,Wn(t),q(t));F+=Object.keys(k[r]).length;continue}if(t===`go.mod`&&B||t===`package.json`&&he)continue;if(t===`Cargo.toml`){k[r]??={};let t=L.get(e),i=ee(t),a=o(l(e));M[r]=e;let s=zr([`Cargo.lock`],a).get(`Cargo.lock`),c=i.workspace?.members,u=Array.isArray(c)&&c.length,[d,f,p]=await Promise.all([_e(a),s?x(s,`utf8`):Promise.resolve(null),u?Pr(c,a,`Cargo.toml`,n):Promise.resolve([])]),{modeConfig:m,modeInclude:h,modeExclude:g,pin:_}=d,v=ve(r,m);H[r]={modeConfig:m,projectDir:a,pin:_};let y=f?Tr(f):new Map,b=(e,t)=>{for(let n of v){let i=Ie(e,n)||{};if(!(typeof i!=`object`||Array.isArray(i))){for(let[e,a]of Object.entries(i))if(Q(e,r,h,g,n))if(typeof a==`object`&&a&&`version`in a&&!(`git`in a)&&!(`path`in a)){let i=String(a.version);Se(i)&&I(r,n,t,e,Or(y,e,i)??X(i),i)}else typeof a==`string`&&Se(a)&&I(r,n,t,e,Or(y,e,a)??X(a),a)}}};if(u){pe=!0,b(i,``),fe.push({absPath:l(e),content:t,memberPath:`.`});for(let e of p){fe.push(e);try{b(ee(e.content),`|${e.memberPath}`)}catch(t){throw Error(`Error parsing ${e.absPath}: ${t.message}`)}}}else j[r]=t,b(i,``);F+=Object.keys(k[r]).length;continue}if(t===`pnpm-workspace.yaml`){k[r]??={};let t=o(l(e)),i=L.get(e);he=!0;let a=Fr(i),c=s(t,`package.json`),[u,d,f]=await Promise.all([_e(t),x(c,`utf8`).catch(()=>null),Pr(a,t,`package.json`,n)]),{modeConfig:p,modeInclude:m,modeExclude:h,pin:g}=u,_=ve(r,p);M[r]=e,H[r]={modeConfig:p,projectDir:t,pin:g};let v=(e,t)=>{for(let n of _){let i=e[n]||{};if(typeof i==`string`){let[e,a]=i.split(`@`);Q(e,r,m,h,n)&&I(r,n,t,e,X(a),a)}else if(typeof i==`object`&&!Array.isArray(i))for(let[e,a]of Object.entries(i))Q(e,r,m,h,n)&&(ln(a)?I(r,n,t,e,dn(a,e).version,a):Se(a)?I(r,n,t,e,X(a),a):un(a)?I(r,n,t,e,`0.0.0`,a):A[`${n}${t}${e}`]={old:a})}};if(d!==null){let e;try{e=JSON.parse(d)}catch(e){throw Error(`Error parsing ${c}: ${e.message}`)}me.push({absPath:l(c),content:d,memberPath:`.`}),v(e,``)}for(let e of f){let t;try{t=JSON.parse(e.content)}catch(t){throw Error(`Error parsing ${e.absPath}: ${t.message}`)}me.push(e),v(t,`|${e.memberPath}`)}F+=Object.keys(k[r]).length+Object.keys(A).length;continue}M[r]=e,k[r]??={};let i=o(l(e)),{modeConfig:c,modeInclude:d,modeExclude:f,pin:p}=await _e(i),m=ve(r,c),h={};j[r]=L.get(e);try{if(r===`npm`)h=JSON.parse(j[r]);else if(r===`pypi`)h=ee(j[r]);else if(r===`go`){let e=Fn(j[r]);h.deps=e.deps,h.indirect=e.indirect,h.replace=e.replace,h.tool=e.tool}}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}for(let e of m){let t;if(t=r===`npm`||r===`go`?h[e]||{}:Ie(h,e)||{},Array.isArray(t)&&r===`pypi`)for(let{name:n,version:i}of ke(t))Q(n,r,d,f,e)&&I(r,e,``,n,X(i),i);else if(typeof t==`string`){let[n,i]=t.split(`@`);Q(n,r,d,f,e)&&I(r,e,``,n,X(i),i)}else for(let[n,i]of Object.entries(t))Q(n,r,d,f,e)&&(r===`npm`&&ln(i)?I(r,e,``,n,dn(i,n).version,i):r!==`go`&&Se(i)?I(r,e,``,n,X(i),i):r===`npm`&&un(i)?I(r,e,``,n,`0.0.0`,i):r===`npm`?A[`${e}${n}`]={old:i}:r===`go`&&I(r,e,``,n,Wn(i),q(i)))}F+=Object.keys(k[r]).length+Object.keys(A).length,H[r]={modeConfig:c,projectDir:i,pin:p}}if(k.actions&&(F+=Object.keys(k.actions).length),k.docker&&(F+=Object.keys(k.docker).length),F===0)return{results:{},message:`No dependencies found, nothing to do.`};let xe=[],U={registry:t.registry};for(let e of Object.keys(H)){let r=!!k[e]&&Object.keys(k[e]).length>0,i=e===`npm`&&Object.keys(A).length>0;if(!r&&!i)continue;let{modeConfig:a,projectDir:o,pin:s}=H[e];xe.push((async()=>{let r=new Map,i=t.cooldown??a.cooldown,c=i?Ve(String(i)):0,l=e=>{if(c)for(let[t,{date:n}]of Object.entries(e))n&&!K(n,c,le)&&delete e[t]};if(await W(Object.keys(k[e]),async t=>{let[n,i]=t.split(`\0`),l=jr(n),u=k[e][t],d=null;if(e===`npm`){let{oldOrig:n}=u;if(n&&ln(n))d=await fn(i,l,C);else if(n&&un(n))try{d=await sn(i,l,a,U,C)}catch{delete k[e][t];return}else d=await sn(i,l,a,U,C)}else d=e===`go`?await Ln(i,l,u.oldOrig||u.old,o,C,g):e===`cargo`?await wr(i,l,C):await vn(i,l,C);if(!d)return;let[f,,p]=d;if(f?.error)throw Error(f.error);let{useGreatest:m,usePre:h,useRel:_,semvers:v}=O(f.name),y=u.old,b=u.oldOrig,x=s[i],S=ct(f,{usePre:h,useRel:_,useGreatest:m,semvers:v,range:y,mode:e,pinnedRange:x,cooldownDays:c||void 0,now:c?le:void 0},{allowDowngrade:re,matchesAny:Fe,isGoPseudoVersion:jn}),w=``;if([`go`,`pypi`].includes(e)&&S)w=S;else if(e===`cargo`&&S&&b)w=Dr(b,S);else if(S)if(b&&un(b))w=String(Yt()[`save-exact`])===`true`?S:`^${S}`;else if(b&&ln(b)){let e=/^(npm:@jsr\/[^@]+@|jsr:@[^@]+@)(.+)$/.exec(b);e?w=`${e[1]}${S}`:b.startsWith(`jsr:`)&&(w=`jsr:${S}`)}else w=mn(y,S,b);if(!S||S===y||b&&b===w){delete k[e][t];return}let T=``;e===`pypi`&&f.releases?.[S]?.[0]?.upload_time_iso_8601?T=f.releases[S][0].upload_time_iso_8601:e===`go`&&f.Time?T=f.Time:e===`cargo`&&f.time?.[S]&&(T=f.time[S]),u.new=w,b&&ln(b)&&(u.newPrint=S),e===`npm`?r.set(t,{name:i,promise:cn(f.name,S,a,U,C)}):e===`pypi`?u.info=Tt(f,p,f.info.name):e===`go`?u.info=Hn(f.newPath||i):e===`cargo`&&(u.info=`https://crates.io/crates/${i}`),T&&Z(u,T)},{concurrency:n}),await Promise.all(Array.from(r,async([t,{name:n,promise:r}])=>{let i=await r,a=k[e][t];a&&(a.info=Tt({repository:i.repository,homepage:i.homepage},null,n),i.date&&Z(a,i.date))})),e===`npm`&&Object.keys(A).length){let t=(await W(Object.entries(A),([e,t])=>{let n=e.split(`\0`)[1];return _n(e,t,O(n).useGreatest,C)},{concurrency:n})).filter(e=>e!==null);for(let n of t){let{key:t,newRange:r,user:i,repo:a,oldRef:o,newRef:s,newDate:c}=n;k[e][t]={old:A[t].old,new:r,oldPrint:vt.test(o)?o.substring(0,7):o,newPrint:vt.test(s)?s.substring(0,7):s,info:`https://github.com/${i}/${a}`},c&&Z(k[e][t],c)}}l(k[e])})())}if(V.length&&xe.push((async()=>{let e=new Map;for(let t of V){let n=`${t.apiUrl}/${t.owner}/${t.repo}`,r=e.get(n);r||e.set(n,r={apiUrl:t.apiUrl,owner:t.owner,repo:t.repo,infos:[]}),r.infos.push(t)}await W(e.values(),async({apiUrl:e,owner:t,repo:r,infos:i})=>{let a=await xt(e,t,r,C),o=[],s=new Map,c=new Map,l=new Map;for(let e of a){c.set(e.name,e);let t=q(e.name);P(t)&&(o.push(t),s.has(t)||s.set(t,e.name)),e.commitSha&&l.set(e.commitSha,e.name)}let u=new Map;async function d(n){if(u.has(n))return u.get(n);let i=await Jn(e,t,r,n,C);return u.set(n,i),i}async function f(e){let t=new Set;for(let n=0;n<20;n++){let n=st({},t.size?o.filter(e=>!t.has(e)):o,e);if(!n||n===e.range)return null;let r=s.get(n);if(!r){t.add(n);continue}let i=c.get(r)?.commitSha||``;if(!N)return{version:n,tag:r,commitSha:i,date:``};let a=i?await d(i):``;if(K(a,N,le))return{version:n,tag:r,commitSha:i,date:a};t.add(n)}return null}await W(i,async({key:e,host:n,ref:i,name:a,isHash:o,filePin:s})=>{let u=k.actions[e],p=`https://${n||`github.com`}/${t}/${r}`,m=ce[a]??s[a];if(o){let{usePre:t,useRel:n}=O(a),r=await f({range:`0.0.0`,semvers:new Set([`patch`,`minor`,`major`]),usePre:t,useRel:n,useGreatest:!0,pinnedRange:m});if(!r){delete k.actions[e];return}let{tag:o,commitSha:s,date:c}=r;if(!s||s===i||s.startsWith(i)||i.startsWith(s)){delete k.actions[e];return}let d=l.get(i);if(!d){for(let[e,t]of l)if(e.startsWith(i)){d=t;break}}u.old=i,u.new=s.substring(0,i.length),u.oldPrint=d||i.substring(0,7),u.newPrint=o,u.info=p,c&&Z(u,c)}else{let t=J(q(i));if(!t){delete k.actions[e];return}let{usePre:n,useRel:r,semvers:o}=O(a),s=await f({range:t,semvers:o,usePre:n,useRel:r,useGreatest:!0,pinnedRange:m});if(!s){delete k.actions[e];return}let{tag:l,commitSha:h,date:g}=s,_=Yn(l,i);if(_===i){delete k.actions[e];return}if(u.new=c.has(_)?_:l,u.info=p,h&&g)Z(u,g);else if(h){let e=await d(h);e&&Z(u,e)}}},{concurrency:n})},{concurrency:n}),Object.keys(k.actions).length||delete k.actions})()),ge.length&&xe.push((async()=>{let e=new Map;for(let t of ge){let n=e.get(t.fullImage);n||e.set(t.fullImage,n=[]),n.push(t)}await W(e.entries(),async([e,t])=>{let n;try{let[t]=await dr(e,`docker`,C);n=t}catch{for(let e of t)delete k.docker[e.key];return}for(let e of t){let t=k.docker[e.key],r=t.oldOrig||t.old,{semvers:i}=O(e.fullImage),a=ce[e.fullImage]??e.filePin[e.fullImage],o=fr(n.tags,r,i,N||void 0,N?le:void 0,a);if(!o){delete k.docker[e.key];continue}t.new=o.newTag,t.info=Sr(e.ref),Z(t,o.date)}},{concurrency:n}),Object.keys(k.docker).length||delete k.docker})()),await Promise.all(xe),!Vr(k))return{results:{},message:`All dependencies are up to date.`};if(t.update){let e=(e,t,n)=>{for(let r of t){let t=Mr(k[e],r.memberPath);Object.keys(t).length&&$(r.absPath,n(r.content,t))}},t=new Map;if(k.actions)for(let[e,n]of Object.entries(k.actions)){let[r,i]=e.split(`\0`),a=t.get(r);a||t.set(r,a=[]),a.push({name:i,oldRef:n.old,newRef:n.new})}let n=new Map;if(k.docker)for(let[e,t]of Object.entries(k.docker)){let[r]=e.split(`\0`),i=n.get(r);i||n.set(r,i={}),i[e]=t}let r=Gr(k);for(let r of Object.keys(k)){if(!Object.keys(k[r]).length)continue;if(r===`actions`){for(let[e,n]of t){let{absPath:t,content:r}=R[e]||{};if(!t)continue;let i=Xn(r,n);$(t,i),z[e]&&(z[e].content=i)}continue}if(r===`docker`){for(let[e,t]of n){let n=z[e];if(!n)continue;let{absPath:r,content:i,fileType:a}=n;$(r,(a===`dockerfile`?mr:a===`compose`?hr:gr)(i,t))}continue}let i=j[r];if(r===`go`&&B){for(let e of de){let t=Mr(k[r],e.usePath);if(!Object.keys(t).length)continue;let[n,i]=zn(e.content,t);n!==e.content&&$(e.absPath,n),Bn(e.projectDir,i,$)}let e={};for(let[t,n]of Object.entries(k[r]))t.split(`\0`)[0]===`replace`&&(e[t]=n);if(Object.keys(e).length){let[t]=zn(B.content,e);t!==B.content&&$(B.file,t)}}else if(r===`go`){let[e,t]=zn(i,k[r]);$(M[r],e),Bn(o(l(M[r])),t,$)}else if(r===`cargo`&&pe)e(r,fe,Ar);else if(r===`cargo`)$(M[r],Ar(i,k[r]));else if(r===`npm`&&he)e(r,me,pn);else{let e=r===`npm`?pn:yn;$(M[r],e(i,k[r]))}}return r}return Gr(k)}function Jr(e,t){if(t.some(e=>e===`-h`||e===`--help`||e===`-v`||e===`--version`))return[];let n=(...t)=>t.some(t=>d(s(e,t))),r=new Set;return n(`package.json`,`pnpm-workspace.yaml`)&&(r.add(`https://registry.npmjs.org/`),r.add(`https://jsr.io/`),r.add(`https://api.github.com/`)),n(`pyproject.toml`)&&r.add(`https://pypi.org/`),n(`Cargo.toml`)&&r.add(`https://crates.io/`),n(`go.mod`,`go.work`)&&r.add(`https://proxy.golang.org/`),n(..._r)&&r.add(`https://hub.docker.com/`),n(`.github/workflows`)&&(r.add(`https://api.github.com/`),r.add(`https://hub.docker.com/`)),Array.from(r)}function Yr(e){let t=``,n=0,r=e.length;for(;n<r;){let i=e[n];if(i===`"`){for(t+=i,n++;n<r;){let i=e[n];if(t+=i,n++,i===`\\`&&n<r){t+=e[n],n++;continue}if(i===`"`)break}continue}if(i===`/`&&n+1<r&&e[n+1]===`/`){for(n+=2;n<r&&e[n]!==`
|
|
6
|
-
`;)n++;continue}if(i===`/`&&n+1<r&&e[n+1]===`*`){for(n+=2;n<r&&(e[n]!==`*`||e[n+1]!==`/`);)n++;n+=2;continue}t+=i,n++}return t=t.replace(/,(\s*[}\]])/g,`$1`),JSON.parse(t)}export{Se as _,At as a,Mt as c,Ze as d,Xe as f,He as g,ze as h,Un as i,kt as l,Ue as m,Jr as n,Lt as o,Oe as p,qr as r,Et as s,Yr as t,Nt as u};
|
|
1
|
+
import{cwd as e,env as t,platform as n,stderr as r}from"node:process";import{styleText as i}from"node:util";import{basename as a,dirname as o,join as s,relative as c,resolve as l}from"node:path";import{accessSync as u,existsSync as d,globSync as f,lstatSync as p,readFileSync as m,readdirSync as h,statSync as g,truncateSync as _,writeFileSync as v}from"node:fs";import{access as y,mkdir as b,readFile as x,writeFile as S}from"node:fs/promises";import{createHash as C}from"node:crypto";import{homedir as w}from"node:os";import{pathToFileURL as T}from"node:url";function ee(e){let t={},n=t,r=e.split(/\r?\n/);for(let e=0;e<r.length;e++){let i=r[e],a=ae(i).trim();if(!a)continue;let o=/^\[\[([^\]]+)\]\]$/.exec(a);if(o){let e=t,r=D(o[1]);for(let t=0;t<r.length-1;t++){let n=e[r[t]];Array.isArray(n)?e=n[n.length-1]:((!n||typeof n!=`object`)&&(e[r[t]]={}),e=e[r[t]])}let i=r[r.length-1];Array.isArray(e[i])||(e[i]=[]);let a={};e[i].push(a),n=a;continue}let s=/^\[([^[\]]+)\]$/.exec(a);if(s){n=t;for(let e of D(s[1]))(!(e in n)||typeof n[e]!=`object`||Array.isArray(n[e]))&&(n[e]={}),n=n[e];continue}let c=ce(a);if(c<0)continue;let l=a.slice(0,c).trim(),u=a.slice(c+1).trim(),d=D(l),f=n;for(let e=0;e<d.length-1;e++)(!(d[e]in f)||typeof f[d[e]]!=`object`||Array.isArray(f[d[e]]))&&(f[d[e]]={}),f=f[d[e]];let p=d[d.length-1];if(u.startsWith(`[`)&&oe(u,`]`)<0){let t=[];E(u.slice(1),t);for(let n=e+1;n<r.length;n++){let i=ae(r[n]).trim();if(!i)continue;let a=oe(i,`]`);if(a>=0){E(i.slice(0,a),t),e=n;break}E(i,t)}f[p]=t}else f[p]=te(u)}return t}function E(e,t){let n=e.trim();if(n)for(let e of ie(n)){let n=e.trim();n&&t.push(te(n))}}function te(e){if(e.startsWith(`[`)){let t=[],n=se(e,`]`);return E(e.slice(1,n<0?e.length:n),t),t}return e.startsWith(`{`)?re(e):e.startsWith(`"""`)?le(e.slice(3,e.lastIndexOf(`"""`))):e.startsWith(`'''`)?e.slice(3,e.lastIndexOf(`'''`)):e.startsWith(`"`)?le(e.slice(1,e.lastIndexOf(`"`))):e.startsWith(`'`)?e.slice(1,e.lastIndexOf(`'`)):ne(e)}function ne(e){return e===`true`?!0:e===`false`?!1:/^[+-]?\d+(\.\d+)?$/.test(e)?Number(e):e}function re(e){let t={},n=e.slice(1,e.lastIndexOf(`}`)).trim();if(!n)return t;for(let e of ie(n)){let n=e.indexOf(`=`);if(n<0)continue;let r=e.slice(0,n).trim().replace(/^["']|["']$/g,``);t[r]=te(e.slice(n+1).trim())}return t}function ie(e){let t=[],n=0,r=null,i=0;for(let a=0;a<e.length;a++){let o=e[a];if(r){if(o===`\\`&&r===`"`){a++;continue}o===r&&(r=null)}else o===`"`||o===`'`?r=o:o===`[`||o===`{`?n++:o===`]`||o===`}`?n--:o===`,`&&n===0&&(t.push(e.slice(i,a)),i=a+1)}return i<e.length&&t.push(e.slice(i)),t}function D(e){let t=[],n=``,r=null;for(let i of e)if(r){if(i===r){r=null;continue}n+=i}else i===`"`||i===`'`?r=i:i===`.`?(t.push(n.trim()),n=``):n+=i;return n.trim()&&t.push(n.trim()),t}function ae(e){let t=oe(e,`#`);return t<0?e:e.slice(0,t)}function oe(e,t){let n=null;for(let r=0;r<e.length;r++){let i=e[r];if(n){if(i===`\\`&&n===`"`){r++;continue}i===n&&(n=null)}else if(i===`"`||i===`'`)n=i;else if(i===t)return r}return-1}function se(e,t){let n=-1,r=null;for(let i=0;i<e.length;i++){let a=e[i];if(r){if(a===`\\`&&r===`"`){i++;continue}a===r&&(r=null)}else a===`"`||a===`'`?r=a:a===t&&(n=i)}return n}function ce(e){let t=null;for(let n=0;n<e.length;n++){let r=e[n];if(t){if(r===`\\`&&t===`"`){n++;continue}r===t&&(t=null)}else if(r===`"`||r===`'`)t=r;else if(r===`=`)return n}return-1}function le(e){return e.replace(/\\(["\\bfnrt]|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/g,(e,t)=>{switch(t[0]){case`"`:return`"`;case`\\`:return`\\`;case`b`:return`\b`;case`f`:return`\f`;case`n`:return`
|
|
2
|
+
`;case`r`:return`\r`;case`t`:return` `;case`u`:case`U`:return String.fromCodePoint(Number.parseInt(t.slice(1),16));default:return t}})}const ue=/^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*))?(?:\+[a-zA-Z0-9._-]+)?$/,O=new Map;function k(e){if(typeof e!=`string`)return null;let t=O.get(e);if(t!==void 0)return t;let n=ue.exec(e.trim());if(!n)return O.set(e,null),null;let r=Number(n[1]),i=Number(n[2]),a=Number(n[3]),o=n[4]?n[4].split(`.`).map(e=>/^\d+$/.test(e)?Number(e):e):[],s={major:r,minor:i,patch:a,prerelease:o,version:`${r}.${i}.${a}${o.length?`-${o.join(`.`)}`:``}`};return O.set(e,s),s}function A(e,t){let n=typeof e==`number`,r=typeof t==`number`;return n&&r?e-t:n?-1:r?1:e<t?-1:+(e>t)}function j(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function M(e,t){let n=j(e,t);if(n!==0)return n;if(!e.prerelease.length&&!t.prerelease.length)return 0;if(e.prerelease.length&&!t.prerelease.length)return-1;if(!e.prerelease.length&&t.prerelease.length)return 1;let r=Math.max(e.prerelease.length,t.prerelease.length);for(let n=0;n<r;n++){if(e.prerelease[n]===void 0)return-1;if(t.prerelease[n]===void 0)return 1;let r=A(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function de(e){return k(e)?.version??null}function N(e){return k(e)}const fe=new Map,pe=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function P(e){if(typeof e!=`string`)return null;let t=fe.get(e);if(t!==void 0)return t;let n=pe.exec(e);if(!n)return fe.set(e,null),null;let r={version:`${n[1]||`0`}.${n[2]||`0`}.${n[3]||`0`}`};return fe.set(e,r),r}function F(e,t){let n=k(e),r=k(t);return!n||!r?null:me(n,r)}function me(e,t){if(e.version===t.version)return null;let n=M(e,t),r=n>0?e:t,i=n>0?t:e,a=r.prerelease.length>0;if(i.prerelease.length>0&&!a){if(!i.patch&&!i.minor)return`major`;if(j(i,r)===0)return i.minor&&!i.patch?`minor`:`patch`}let o=a?`pre`:``;return e.major===t.major?e.minor===t.minor?e.patch===t.patch?`prerelease`:`${o}patch`:`${o}minor`:`${o}major`}function I(e,t){let n=k(e),r=k(t);return n&&r?M(n,r):null}function he(e,t){return(I(e,t)??-1)>0}function ge(e,t){return(I(e,t)??-1)>=0}function _e(e,t){return(I(e,t)??1)<0}function L(e,t){return(I(e,t)??1)!==0}function ve(e){let t=/^(>=|<=|>|<|=)?\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*)?)$/.exec(e.trim());if(!t)return null;let n=t[2],r=k(`${n}.${t[3]??`0`}.${t[4]??`0`}${t[5]||``}`);return r?{op:t[1]||`=`,semver:r}:null}function ye(e,t){let n=M(e,t.semver);switch(t.op){case`>=`:return n>=0;case`<=`:return n<=0;case`>`:return n>0;case`<`:return n<0;case`=`:return n===0;default:return n===0}}function R(e,t,n){return`${e}.${t}.${n}-0`}function be(e){return e.replace(/~\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i)=>{let a=Number(t);if(n===void 0)return`>=${a}.0.0 <${R(a+1,0,0)}`;let o=Number(n);return`>=${a}.${o}.${r===void 0?0:Number(r)}${i||``} <${R(a,o+1,0)}`})}function xe(e){return e.replace(/\^\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i)=>{let a=Number(t),o=i||``;if(n===void 0)return`>=${a}.0.0 <${R(a+1,0,0)}`;let s=Number(n);if(r===void 0)return a===0?`>=${a}.${s}.0 <${R(a,s+1,0)}`:`>=${a}.${s}.0 <${R(a+1,0,0)}`;let c=Number(r);return a===0?s===0?`>=${a}.${s}.${c}${o} <${R(a,s,c+1)}`:`>=${a}.${s}.${c}${o} <${R(a,s+1,0)}`:`>=${a}.${s}.${c}${o} <${R(a+1,0,0)}`})}function Se(e){return e.replace(/v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)\s+-\s+v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i,a,o,s,c)=>{let l=Number(t),u=n===void 0?0:Number(n),d=r===void 0?0:Number(r),f=i||``,p=Number(a),m;return m=s===void 0?o===void 0?`<${R(p+1,0,0)}`:`<${R(p,Number(o)+1,0)}`:`<=${p}.${Number(o)}.${Number(s)}${c||``}`,`>=${l}.${u}.${d}${f} ${m}`})}function z(e){return/^\s*[*xX]\s*$/.test(e)?`>=0.0.0`:(e=e.replace(/v?(\d+)\.[xX*](?:\.[xX*])?/g,(e,t)=>{let n=Number(t);return`>=${n}.0.0 <${R(n+1,0,0)}`}),e=e.replace(/v?(\d+)\.(\d+)\.[xX*]/g,(e,t,n)=>{let r=Number(t),i=Number(n);return`>=${r}.${i}.0 <${R(r,i+1,0)}`}),e=e.replace(/(^|[\s|])(\d+)\.(\d+)(?=\s|$)/g,(t,n,r,i,a)=>{let o=e.substring(0,a).trimEnd();if(/[<>=]$/.test(o))return t;let s=Number(r),c=Number(i);return`${n}>=${s}.${c}.0 <${R(s,c+1,0)}`}),e=e.replace(/(^|[\s|])(\d+)(?=\s|$)/g,(t,n,r,i)=>{let a=e.substring(0,i).trimEnd();if(/[<>=]$/.test(a))return t;let o=Number(r);return`${n}>=${o}.0.0 <${R(o+1,0,0)}`}),e)}const B=new Map;function Ce(e){let t=B.get(e);if(t!==void 0)return t;let n=e.split(`||`).map(e=>e.trim()),r=[];for(let t of n){if(!t){r.push([]);continue}t=Se(t),t=xe(t),t=be(t),t=z(t),t=t.replace(/(^|[\s])v?(\d+\.\d+\.\d+(?:-[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*)?)\b/g,(e,t)=>/[<>=]/.test(t)?e:`${t}=${e.trim()}`),t=t.replace(/(>=|<=|>|<|=)\s+/g,`$1`);let n=t.split(/\s+/).filter(Boolean),i=[];for(let t of n){let n=ve(t);if(!n)return B.set(e,null),null;i.push(n)}if(i.length===0)return B.set(e,null),null;r.push(i)}let i=r.length?r:null;return B.set(e,i),i}function we(e,t){for(let n of t)if(!ye(e,n))return!1;if(e.prerelease.length>0){for(let n of t)if(n.semver.prerelease.length>0&&n.semver.major===e.major&&n.semver.minor===e.minor&&n.semver.patch===e.patch)return!0;return!1}return!0}function V(e,t){let n=k(e);if(!n)return!1;let r=Ce(t);if(!r)return!1;for(let e of r)if(e.length===0||we(n,e))return!0;return!1}function Te(e){return typeof e==`string`&&Ce(e)?e:null}const Ee=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],De={"1 day ago":`yesterday`,"1 week ago":`last week`,"1 month ago":`last month`,"1 year ago":`last year`,"in 1 day":`tomorrow`,"in 1 week":`next week`,"in 1 month":`next month`,"in 1 year":`next year`},Oe={sec:`second`,min:`minute`};function ke(e){return e instanceof Date?e.getTime():typeof e==`string`?Date.parse(e):e}function Ae(e,{now:t,noAffix:n=!1,times:r=Ee,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=De,longUnits:l=!1}={}){let u=ke(e),d=t===void 0?Date.now():ke(t);if(u!==u)return o||String(e);let f=d-u,p=f<0;if(p&&(f=-f),f<i)return a;let m=0,h=``;for(let e=0,t=r.length;e<t;e++){let t=r[e];if(!(f>=t[1])){m=f/t[0]|0,h=(l&&Oe[t[2]]||t[2])+(m>1?`s`:``);break}}let g=`${m} ${h}`,_;return _=n?g:p?`in ${g}`:`${g} ago`,s?c[_]??_:_}function je(e,t,n){if(e===t)return e;let r=0;for(;r<e.length&&r<t.length&&e[r]===t[r];)r++;if(r>0&&e[r-1]!==`.`&&e[r-1]!==`-`){let t=r-1;for(;t>=0&&e[t]!==`.`&&e[t]!==`-`;)t--;if(t>=0)r=t+1;else{let t=0;for(;t<r;){let n=e.charCodeAt(t);if(n>=48&&n<=57)break;t++}r=t}}let i=e.substring(r);return i?e.substring(0,r)+n(i):e}function Me(e){let t=[];for(let n of e){let e=/^([^<>=~!]+)(?:==|>=?|<=?|~=)([0-9.a-z]+)$/.exec(n.replaceAll(/\s+/g,``));if(!e)continue;let r=e[1].replace(/\[.*?\]$/,``);r&&t.push({name:r,version:e[2]})}return t}const Ne=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],Pe=[`node`,`deno`,`bun`],Fe=[`project.dependencies`,`project.optional-dependencies`,`dependency-groups.dev`,`dependency-groups.lint`,`dependency-groups.test`],Ie=[`deps`,`indirect`,`replace`,`tool`],Le=[`dependencies`,`dev-dependencies`,`build-dependencies`,`workspace.dependencies`];function Re(e,t){if(!(t instanceof Set))return!1;for(let n of t)if(n.test(e))return!0;return!1}function ze(e,t){return t.split(`.`).reduce((e,t)=>e?.[t]??null,e)}function Be(e){return e.split(`,`).filter(Boolean)}function Ve(){let e=new Date,t=String(e.getMonth()+1).padStart(2,`0`),n=String(e.getDate()).padStart(2,`0`),r=String(e.getHours()).padStart(2,`0`),i=String(e.getMinutes()).padStart(2,`0`),a=String(e.getSeconds()).padStart(2,`0`),o=String(e.getMilliseconds()).padStart(3,`0`);return`${e.getFullYear()}-${t}-${n} ${r}:${i}:${a}.${o}`}function He(e,t,n=` `){let r=Array(e[0].length).fill(0),i=Array(e.length);for(let n=0;n<e.length;n++){let a=e[n],o=Array(a.length);for(let e=0;e<a.length;e++){let n=t(a[e]);o[e]=n,n>r[e]&&(r[e]=n)}i[n]=o}let a=``;for(let t=0;t<e.length;t++){let o=e[t],s=o.length-1;for(let e=0;e<=s;e++)if(e>0&&(a+=n),a+=o[e],e!==s){let n=r[e]-i[t][e];n>0&&(a+=` `.repeat(n))}t<e.length-1&&(a+=`
|
|
3
|
+
`)}return a}const Ue={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function We(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Ue[n.toLowerCase()];if(r)return Number(e)*r}let n=Number(e);if(!Number.isFinite(n))throw Error(`Invalid cooldown value: ${e}`);return n}async function H(e,t,{concurrency:n=1/0}={}){let r=Array.from(e);if(!Number.isFinite(n))return Promise.all(r.map(t));let i=Array(r.length),a=0;return await Promise.all(Array.from({length:Math.min(n,r.length)},async()=>{for(;a<r.length;){let e=a++;i[e]=await t(r[e])}})),i}const U=e=>e.replace(/[|\\{}()[\]^$+*?.-]/g,`\\$&`);async function Ge(e,t){let n=e;for(;;){let e=await t(n);if(e)return e;let r=o(n);if(r===n)return null;n=r}}function Ke(e){let t=new Map;return n=>{let r=t.get(n);return r||(r=e(n),t.set(n,r)),r}}const qe=s(n===`win32`?t.LOCALAPPDATA||s(w(),`AppData`,`Local`):t.XDG_CACHE_HOME||s(w(),`.cache`),`updates`);let Je=null;const Ye=new Map;function Xe(e){let t=Ye.get(e);return t===void 0&&(t=C(`sha256`).update(e).digest(`hex`).substring(0,16),Ye.set(e,t)),t}async function Ze(e){try{let t=await x(s(qe,`${Xe(e)}.cache`),`utf8`),n=t.indexOf(`
|
|
4
|
+
`);if(n===-1)return null;let r=t.substring(0,n),i=t.substring(n+1);return r&&i?{etag:r,body:i}:null}catch{return null}}async function Qe(e,t,n){try{await(Je??=b(qe,{recursive:!0})),await S(s(qe,`${Xe(e)}.cache`),`${t}\n${n}`)}catch{}}var $e=`17.16.13`;function W(e,t,n){if(!t||!n||!e)return!0;let r=Date.parse(e);return Number.isNaN(r)?!0:(n-r)/(24*3600*1e3)>=t}const et=$e,tt=5e3,G=e=>e[0]===`v`?e.substring(1):e,nt=e=>e.endsWith(`/`)?e.slice(0,-1):e;function rt(e,t){return{headers:{"user-agent":`updates/${et}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function it(e,t){try{return await fetch(e,t)}catch(t){throw Error(`Failed to fetch ${e}${t?.message?`: ${t.message}`:``}`)}}async function at(e){return typeof e.text==`function`?e.text():JSON.stringify(await e.json())}async function ot(e,t,n={}){let r=t.noCache?null:await Ze(e),i=n.headers,a=r?{...i,"if-none-match":r.etag}:i,o=await t.doFetch(e,{...n,headers:a,signal:AbortSignal.timeout(t.fetchTimeout)});if(!o)return{res:void 0};if(o.status===304&&r)return{body:r.body,res:o};if(!o.ok)return{res:o};let s=await at(o),c=o.headers?.get?.(`etag`);return c&&!t.noCache&&await Qe(e,c,s),{body:s,res:o}}async function st(e,t,n={}){if(!t.noCache){let t=await Ze(e);if(t)return{body:t.body}}let r=await t.doFetch(e,{...n,signal:AbortSignal.timeout(t.fetchTimeout)});if(!r)return{res:void 0};if(!r.ok)return{res:r};let i=await at(r);return t.noCache||await Qe(e,`immutable`,i),{body:i,res:r}}function ct(e){return(N(e)?.prerelease.length??0)>0}function lt(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}const ut=new WeakMap;function dt(e){let t=ut.get(e);if(t)return t;let n=new Set(e);return n.add(`prerelease`),e.has(`patch`)&&n.add(`prepatch`),e.has(`minor`)&&n.add(`preminor`),e.has(`major`)&&n.add(`premajor`),ut.set(e,n),n}function ft(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=K(e),s=K(t);if(!o||!s)return!0;let c=lt(e)||ct(e),l=ct(t);return c&&!l?he(s,o)||n:!l&&_e(s,o)?r===!0||a(i,r):!0}function K(e){return P(e)?.version??``}function pt(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:u}){let d=K(n);if(!d)return d;let f=lt(n)||i,p=f?dt(r):r,m=e?.time,h=!!m,g=o||!h,_=!!(c&&l),v=0,y=d,b=N(d);for(let e of t){let t=N(e);if(!t?.version||t.prerelease.length&&(!f||a))continue;let n=t.version;if(s&&!V(n,s))continue;let r;if(_&&(r=u?u(e):h?m[e]:void 0,!W(r,c,l)))continue;let i=me(b,t);if(!(!i||!p.has(i)))if(g)(j(t,b)>=0||s&&!V(y,s))&&(y=n,b=t);else{let i=Date.parse(r??m[e]);i>=0&&i>v&&(y=n,b=t,v=i)}}return y||null}function mt(e,{mode:t,range:n,useGreatest:r,useRel:i,usePre:a,semvers:o,pinnedRange:s,cooldownDays:c,now:l},{allowDowngrade:u,matchesAny:d,isGoPseudoVersion:f}){if(n===`*`||n.includes(`||`)||/\d\s/.test(n))return null;let p=[],m;if(t===`pypi`){let t=e.releases;p=[];for(let e of Object.keys(t))de(e)&&p.push(e);m=e=>t?.[e]?.[0]?.upload_time_iso_8601}else if(t===`npm`||t===`cargo`){p=[];for(let t of Object.keys(e.versions))de(t)&&p.push(t)}else if(t===`go`){let t=K(n);if(!t)return null;let r=a||lt(n),p=e=>ct(e)&&(!r||i),m={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d},h=e.old||n,g=K(e.new);if(g&&!f(e.new)&&!p(e.new)){let n=F(t,g);if(n&&o.has(n)&&ft(h,e.new,m)&&W(e.Time,c,l)&&(!s||V(g,s)))return e.new}let _=K(e.sameMajorNew);if(_&&!f(e.sameMajorNew)&&!p(e.sameMajorNew)){let n=F(t,_);if(n&&o.has(n)&&ft(h,e.sameMajorNew,m)&&W(e.sameMajorTime,c,l)&&(!s||V(_,s)))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}if(c&&l&&e.olderEligible&&!p(e.olderEligible.version)){let n=K(e.olderEligible.version);if(n){let r=F(t,n);if(r&&o.has(r)&&ft(h,e.olderEligible.version,m)&&(!s||V(n,s)))return e.Time=e.olderEligible.time,delete e.newPath,e.olderEligible.version}}return null}let h=pt(e,p,{range:n,semvers:o,usePre:a,useRel:i,useGreatest:r,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:m});if(!h)return null;if(r)return h;{let r=``,f=``;t===`pypi`?(f=e.info.version,r=K(e.info.version)):r=e[`dist-tags`].latest;let p=K(n),m=lt(n),g=ct(h),_=ct(r),v={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d};if(!i&&a||m&&g)return h;if(m&&!g)return ft(n,h,v)?h:null;let y=F(p,r);return y&&y!==`prerelease`&&!o.has(y.replace(/^pre/,``))||i&&ct(r)?h:_e(r,p)&&!_?ft(n,r,v)?r:null:!m&&_&&!a||s&&!V(r,s)||c&&l&&!W(t===`pypi`?e.releases?.[f||r]?.[0]?.upload_time_iso_8601:e.time?.[r],c,l)?h:f||r}}const ht=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&ht.set(e.substring(0,t),e.substring(t+1))}const gt=Array.from(new Set([`UPDATES_GITHUB_API_TOKEN`,`GITHUB_API_TOKEN`,`GH_TOKEN`,`GITHUB_TOKEN`,`HOMEBREW_GITHUB_API_TOKEN`].map(e=>t[e]).filter(Boolean)));let _t;function vt(){return gt.length?Promise.resolve(gt):_t??=(async()=>{try{let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]),{stdout:n}=await t(e)(`gh`,[`auth`,`token`],{encoding:`utf8`,timeout:5e3}),r=n.trim();return r?[r]:gt}catch{return gt}})()}const yt=new Map;async function bt(e){try{let t=ht.get(new URL(e).hostname);if(t)return[t]}catch{}return vt()}async function xt(e,t,n){let r;try{r=new URL(e).hostname}catch{r=``}let i=await(r?bt(e):vt()),a=AbortSignal.timeout(t.fetchTimeout),o=e=>{let t=rt(`Bearer`,e);return n&&(t.headers={...t.headers,...n}),t.signal=a,t};if(!i.length)return t.doFetch(e,o());let s=r?yt.get(r):void 0;if(s)return t.doFetch(e,o(s));for(let n of i){let i=await t.doFetch(e,o(n));if(i.status!==401&&i.status!==403)return r&&yt.set(r,n),i}return t.doFetch(e,o())}function St(e,t){let n=G(t);if(!de(n))return null;let r=``,i=n;for(let t of e){let e=G(t);de(e)&&(!r||he(e,i))&&(r=t,i=e)}return r&&L(n,i)?r:null}function Ct(e){let t=e.replace(`git@`,``).replace(/.+?\/\//,`https://`).replace(/\.git$/,``);return/^[a-z]+:[a-z0-9-]+\/[a-z0-9-]+$/.test(t)?t.replace(/^(.+?):/,(e,t)=>`https://${t}.com/`):/^[a-z0-9-]+\/[a-z0-9-]+$/.test(t)?`https://github.com/${t}`:t}const wt=/^[0-9a-f]{7,}$/i;function Tt(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function Et(e,t){let n=t.noCache?null:await Ze(e),r=await xt(e,t,n?{"if-none-match":n.etag}:void 0);if(r?.status===304&&n)try{let e=JSON.parse(n.body);return{tags:e.tags||[],link:e.link||``}}catch{return null}if(!r?.ok)return null;let i=Tt(await r.json()),a=r.headers.get(`link`)||``,o=r.headers.get(`etag`);return o&&!t.noCache&&await Qe(e,o,JSON.stringify({link:a,tags:i})),{tags:i,link:a}}async function Dt(e,t,n,r){let i=r=>`${e}/repos/${t}/${n}/tags?per_page=100&page=${r}`;try{let e=await Et(i(1),r);if(!e)return[];let t=e.tags,n=/<([^>]+)>;\s*rel="last"/.exec(e.link);if(!n)return t;let a=Math.min(Number(new URL(n[1]).searchParams.get(`page`)),10);if(a<2)return t;let o=await Promise.all(Array.from({length:a-1},(e,t)=>Et(i(t+2),r)));for(let e of o)e&&t.push(...e.tags);return t}catch{return[]}}function Ot(e,t,n,r){throw e?.status&&e?.statusText?Error(`Received ${e.status} ${e.statusText} from ${t}`):Error(`Unable to fetch ${n} from ${r}`)}function kt(e,t,n=``){let r=t.startsWith(`v`),i=G(e),a=G(t).split(`.`).length,o=i.split(`.`),s;return s=a===1?o[0]:a===2?`${o[0]}.${o[1]||`0`}`:i,`${r?`v`:``}${s}${n}`}function At(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function jt({repository:e,homepage:t,info:n},r,i){if(n){let t=n.project_urls;for(let n of[`repository`,`Repository`,`repo`,`Repo`,`source`,`Source`,`source code`,`Source code`,`Source Code`,`homepage`,`Homepage`])if(t?.[n]){e=t[n];break}e??=`https://pypi.org/project/${i}/`}let a=``;return r===`https://npm.pkg.github.com`?`https://github.com/${i.replace(/^@/,``)}`:(e&&(a=Ct(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${At(a)}/${e.directory}`)),a||t||``)}const Mt={"allow-downgrade":{short:`d`,type:`string`,multiple:!0},"error-on-outdated":{short:`E`,type:`boolean`},"error-on-unchanged":{short:`U`,type:`boolean`},exclude:{short:`e`,type:`string`,multiple:!0},file:{short:`f`,type:`string`,multiple:!0},forgeapi:{type:`string`},goproxy:{type:`string`},cargoapi:{type:`string`},dockerapi:{type:`string`},greatest:{short:`g`,type:`string`,multiple:!0},help:{short:`h`,type:`boolean`},include:{short:`i`,type:`string`,multiple:!0},indirect:{short:`I`,type:`boolean`},json:{short:`j`,type:`boolean`},jsrapi:{type:`string`},cooldown:{short:`C`,type:`string`},minor:{short:`m`,type:`string`,multiple:!0},modes:{short:`M`,type:`string`,multiple:!0},color:{short:`c`,type:`boolean`},"no-cache":{short:`x`,type:`boolean`},"no-color":{short:`n`,type:`boolean`},patch:{short:`P`,type:`string`,multiple:!0},pin:{short:`l`,type:`string`,multiple:!0},prerelease:{short:`p`,type:`string`,multiple:!0},pypiapi:{type:`string`},registry:{short:`r`,type:`string`},release:{short:`R`,type:`string`,multiple:!0},sockets:{short:`s`,type:`string`},timeout:{short:`T`,type:`string`},types:{short:`t`,type:`string`,multiple:!0},update:{short:`u`,type:`boolean`},verbose:{short:`V`,type:`boolean`},version:{short:`v`,type:`boolean`}};function Nt(e,t){return RegExp(`^${U(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Pt(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Nt(e,n):e instanceof RegExp?e:Nt(e,n)}function Ft(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.flatMap(e=>typeof e==`string`?Be(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function It(e){for(let[t,{short:n}]of Object.entries(Mt))if(t===e||n===e)return t;return``}function q(e){return new Set(e.map(e=>Pt(e,!1,!0)))}function Lt(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>Be(e)):[]}function Rt(e){let t={},n=Array.isArray(e)?e:[e];for(let e of n){if(typeof e!=`string`)continue;let[n,r]=e.split(`=`,2);n&&r&&Te(r)&&(t[n]=r)}return t}function zt(e){if(typeof e==`boolean`)return e;if(!Array.isArray(e)||!e.length)return!1;let t=new Set;for(let n of e)t.add(Pt(n,!1,!1));return t}async function Bt(e){let t=await Promise.all([`js`,`ts`,`mjs`,`mts`].map(async t=>{let n=`updates.config.${t}`,r=s(e,n);try{await y(r)}catch{return null}try{return{configDir:e,filename:n,default:(await import(T(r).href)).default??{}}}catch(e){return Error(`Unable to parse config file ${n}: ${e?.message??e}`)}}));for(let e of t)if(e&&!(e instanceof Error))return e;for(let e of t)if(e instanceof Error)throw e;return null}const Vt=Ke(e=>Ge(e,Bt));async function Ht(e){let t=await Vt(e),n=t?.default??{},{loadRenovateConfig:r}=await import(`./renovate.js`);return{...await r(t?.configDir??e,n.inherit?.renovate),...n}}function Ut(e){if(/^\s*\{/.test(e))return JSON.parse(e);let t={};for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e||e.startsWith(`#`)||e.startsWith(`;`))continue;let r=e.indexOf(`=`);if(r===-1)continue;let i=e.slice(r+1).trim();i.length>=2&&(i.startsWith(`"`)&&i.endsWith(`"`)||i.startsWith(`'`)&&i.endsWith(`'`))&&(i=i.slice(1,-1)),t[e.slice(0,r).trim()]=i}return t}function Wt(e){try{return Ut(m(e,`utf-8`))}catch{return}}function Gt(t){let n=e();for(;;){let e=s(n,t);try{return g(e),e}catch{}let r=o(n);if(r===n)break;n=r}}function Kt(e){let n={},r=e.toLowerCase();for(let[i,a]of Object.entries(t))if(i.toLowerCase().startsWith(r)){let t=i.substring(e.length).split(`__`).filter(Boolean);if(t.length===0)continue;let r=n;for(let e=0;e<t.length;e++){let n=t[e];if(e===t.length-1)r[n]=a;else if(r[n]===void 0&&(r[n]={}),typeof r[n]==`object`)r=r[n];else break}}return n}function qt(e,r={}){let i=n===`win32`,a=i?t.USERPROFILE:t.HOME,o=[{...r}],c=[];function l(e){if(!e||c.includes(e))return;let t=Wt(e);t&&(o.push(t),c.push(e))}i||(l(s(`/etc`,e,`config`)),l(s(`/etc`,`${e}rc`))),a&&(l(s(a,`.config`,e,`config`)),l(s(a,`.config`,e)),l(s(a,`.${e}`,`config`)),l(s(a,`.${e}rc`))),l(Gt(`.${e}rc`));let u=Kt(`${e}_`);return u.config&&l(u.config),Object.assign({},...o,u,c.length?{configs:c,config:c[c.length-1]}:void 0)}const Jt=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,Yt=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,Xt=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,Zt=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,Qt=`https://registry.npmjs.org`;let J=null;const $t=new Map;function en(){return J??=qt(`npm`,{registry:Qt})}function tn(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function nn(e,t){let n=n=>t[`${e}:${n}`]||t[`${e}/:${n}`],r=n(`_authToken`);if(r)return{token:tn(r),type:`Bearer`};let i=n(`username`),a=n(`_password`);if(i&&a){let e=Buffer.from(tn(a),`base64`).toString(`utf8`);return{token:Buffer.from(`${i}:${e}`).toString(`base64`),type:`Basic`,username:i,password:e}}let o=n(`_auth`);if(o)return{token:tn(o),type:`Basic`}}function rn(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=nn(`//${n.host}${r.replace(/\/$/,``)}`,t);if(e)return e;let i=r.endsWith(`/`)?r:`${r}/`;n.pathname=new URL(`..`,new URL(i,`http://x`)).pathname}let i=t._auth;if(i)return{token:tn(i),type:`Basic`}}function an(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function on(e,t){J||=en();let n=e.startsWith(`@`)?(/@[a-z0-9][\w.-]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=$t.get(r);if(i)return i;let a=()=>({auth:rn(t,J),registry:t}),o;if(!e.startsWith(`@`))o=a();else{let e=nt(an(n,J));if(e!==t)try{let t=rn(e,J);o=t?.token?{auth:t,registry:e}:a()}catch{o=a()}else o=a()}return $t.set(r,o),o}function sn(e,t,n){J||=en();let r=nt((typeof n.registry==`string`?n.registry:!1)||t.registry||J.registry||Qt);return{...on(e,r),originalRegistry:r}}function cn(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const ln=new Map,un=new Map,dn=new Map;async function fn(e,t,n,r,i){let{auth:o,registry:s}=sn(e,n,r),c=cn(s,t===`resolutions`?a(e):e),l=ln.get(c);if(!l){let t=rt(o?.type,o?.token),n={...t.headers,accept:`application/vnd.npm.install-v1+json`};t.headers=n,l=(async()=>{let r=i.noCache?null:await Ze(c);r&&(n[`if-none-match`]=r.etag);let a=await i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...t});if(a?.status===304&&r)return JSON.parse(r.body);if(a?.ok){let e=await a.text(),t=a.headers.get(`etag`);return t&&!i.noCache&&await Qe(c,t,e),JSON.parse(e)}Ot(a,c,e,s)})().catch(e=>{throw ln.delete(c),e}),ln.set(c,l)}return[await l,t,s,e]}async function pn(e,t,n,r,i){let{auth:a,registry:o}=sn(e,n,r),s=cn(o,e,t),c=un.get(s);if(c)return c;let l=(async()=>{try{let n=rt(a?.type,a?.token),r=await st(s,i,n);if(!(`body`in r))return{};let c=JSON.parse(r.body),l=``,u=c?._npmOperationalInternal?.tmp;if(u){let e=/(\d{13})/.exec(u);e&&(l=new Date(Number(e[1])).toISOString())}if(!l){let r=cn(o,e),a=dn.get(r);a||(a=i.doFetch(r,{...n,signal:AbortSignal.timeout(i.fetchTimeout)}).then(e=>e?.ok?e.json():null).catch(()=>(dn.delete(r),null)),dn.set(r,a)),l=(await a)?.time?.[t]||``}return{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})();return un.set(s,l),l}function mn(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function hn(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function gn(e,t){if(e.startsWith(`npm:@jsr/`)){let t=/^npm:@jsr\/([^_]+)__([^@]+)@(.+)$/.exec(e);if(t)return{scope:t[1],name:t[2],version:t[3]}}else if(e.startsWith(`jsr:@`)){let t=/^jsr:@([^/]+)\/([^@]+)@(.+)$/.exec(e);if(t)return{scope:t[1],name:t[2],version:t[3]}}else if(e.startsWith(`jsr:`)){let n=e.substring(4);if(t?.startsWith(`@`)){let e=/^@([^/]+)\/(.+)$/.exec(t);if(e)return{scope:e[1],name:e[2],version:n}}}return{scope:null,name:null,version:``}}async function _n(e,t,n){let r=/^@([^/]+)\/(.+)$/.exec(e);if(!r)throw Error(`Invalid JSR package name: ${e}`);let[,i,a]=r,o=`${n.jsrApiUrl}/@${i}/${a}/meta.json`,s=await ot(o,n,{headers:{"accept-encoding":`gzip, deflate, br`}});if(`body`in s){let r=JSON.parse(s.body),i={},a={};for(let[e,t]of Object.entries(r.versions))i[e]={version:e,time:t.createdAt},a[e]=t.createdAt;return[{name:e,"dist-tags":{latest:r.latest},versions:i,time:a},t,n.jsrApiUrl,e]}Ot(s.res,o,e,`JSR`)}function vn(e,t){let n=new Map;for(let[e,{old:r,oldOrig:i,new:a}]of Object.entries(t)){let[t,o]=e.split(`\0`),s=i||r;t===`packageManager`?n.set(`${t}\0${o}@${s}`,`"${t}": "${o}@${a}"`):n.set(`${o}\0${s}`,`"${o}": "${a}"`)}return n.size?e.replace(/"((?:[^"\\]|\\.)*)": *"((?:[^"\\]|\\.)*)"/g,(e,t,r)=>n.get(`${t}\0${r}`)??e):e}function yn(e,t,n){let r=e.replace(Zt,t);if(n&&n!==e&&/^[\^~]/.test(r)){let e=n.substring(1).split(`.`),t=r.substring(1).split(`.`);e.length!==t.length&&(r=`${r[0]}${t.slice(0,e.length).join(`.`)}`)}if(n&&n!==e&&r.startsWith(`>=`)){let e=/^>=\s/.test(n)?`>= `:`>=`,t=n.replace(/^>=\s*/,``),i=r.replace(/^>=\s*/,``),a=t.split(`.`),o=i.split(`.`);a.length!==o.length&&(r=`${e}${o.slice(0,a.length).join(`.`)}`)}return r}function Y(e){let t=e.match(Xt);return t?.length===1?e.replace(Xt,K(t[0])):e}async function bn(e,t,n){let r=`${n.forgeApiUrl}/repos/${e}/${t}/commits`;try{let e=n.noCache?null:await Ze(r),t=await xt(r,n,e?{"if-none-match":e.etag}:void 0);if(t?.status===304&&e){let{sha:t,commit:n}=JSON.parse(e.body)[0];return{hash:t,commit:n}}if(!t?.ok)return{hash:``,commit:{}};let i=await t.text(),a=t.headers.get(`etag`);a&&!n.noCache&&await Qe(r,a,i);let{sha:o,commit:s}=JSON.parse(i)[0];return{hash:o,commit:s}}catch{return{hash:``,commit:{}}}}async function xn(e,t,n){return(await Dt(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function Sn(e,t,n){let r=t.old.replace(Jt,``),[,i,a,o]=Yt.exec(r)||[];if(!i||!a||!o)return null;if(wt.test(o)){let{hash:r,commit:s}=await bn(i,a,n);if(!r)return null;let c=s?.committer?.date??s?.author?.date,l=r.substring(0,o.length);if(o!==l)return{key:e,newRange:t.old.replace(o,l),user:i,repo:a,oldRef:o,newRef:l,newDate:c}}else{let t=St(await xn(i,a,n),o);if(t)return{key:e,newRange:t,user:i,repo:a,oldRef:o,newRef:t}}return null}async function Cn(e,t,n){let r=`${n.pypiApiUrl}/pypi/${e}/json`,i=await ot(r,n,{headers:{"accept-encoding":`gzip, deflate, br`}});if(`body`in i)return[JSON.parse(i.body),t,null,e];Ot(i.res,r,e,n.pypiApiUrl)}function wn(e,t){let n=e;for(let[e,{old:r,oldOrig:i}]of Object.entries(t)){let a=e.split(`\0`)[1],o=i||r;n=n.replace(RegExp(`("${U(a)}(?:\\[[^\\]]+\\])? *[<>=~]+ *)${U(o)}(")`,`g`),(n,r,i)=>`${r}${t[e].new}${i}`)}return n}let Tn;async function En(){let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]);return t(e)}function Dn(){return Tn??=En()}function On(){let e=t.GOPROXY||`https://proxy.golang.org,direct`;for(let t of e.split(/[,|]/)){let e=t.trim();if(e&&e!==`direct`&&e!==`off`)return nt(e)}return`https://proxy.golang.org`}function kn(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function An(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function jn(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}const Mn=/\/v(\d+)$/;function Nn(e){let t=Mn.exec(e);return t?Number.parseInt(t[1]):1}function Pn(e,t){let n=e.replace(Mn,``);return t<=1?n:`${n}/v${t}`}function Fn(e,t){let n=t?/^(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(e):/^replace\s+(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(e);if(!n)return null;let[,r,i,a]=n;return i.startsWith(`./`)||i.startsWith(`/`)||i.startsWith(`../`)?null:{origModule:r,targetModule:i,targetVersion:a}}function In(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||Ln(n)}function Ln(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function Rn(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function zn(e,t,n){if(!t)return null;let r=t,i=e+101,a=e+2,o=7;for(;a<=i;){let e=Math.min(a+o-1,i),t=await Promise.all(Array.from({length:e-a+1},(e,t)=>n(a+t))),s=t.indexOf(null),c=s===-1?t:t.slice(0,s);if(c.length&&(r=c.at(-1)),s!==-1)break;a=e+1,o*=2}return r}function Bn(e,t,n,r,i,a){let o=r?.Version??i,s=r?.Time??a,c=r?.path??e;return[{name:e,old:n,new:G(o),Time:s,...c===e?{}:{newPath:c},sameMajorNew:G(i),sameMajorTime:a},t,null,e]}function Vn(e){let t={},n={},r={},i={},a=new Set,o=[],s=e.split(/\r?\n/),c=!1,l=!1,u=!1;for(let e of s){let i=e.trim();if(/^require\s*\(/.test(i)){c=!0;continue}if(/^replace\s*\(/.test(i)){l=!0;continue}if(/^tool\s*\(/.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(u){i&&!i.startsWith(`//`)&&o.push(i);continue}let s=/^tool\s+(\S+)/.exec(i);if(s){o.push(s[1]);continue}let d=i.includes(`// indirect`);if(l||/^replace\s+/.test(i)){let e=Fn(i,l);e&&(r[e.targetModule]=e.targetVersion,a.add(e.origModule));continue}let f=c?/^(\S+)\s+(v\S+)/.exec(i):/^require\s+(\S+)\s+(v\S+)/.exec(i);f&&((d?n:t)[f[1]]=f[2])}for(let e of a)delete t[e],delete n[e];if(o.length){let e=[...Object.keys(n),...Object.keys(t)];for(let r of o){let a=``;for(let t of e)(r===t||r.startsWith(`${t}/`))&&t.length>a.length&&(a=t);let o=a?n[a]?n:t[a]?t:null:null;o&&(i[a]=o[a],delete o[a])}}return{deps:t,indirect:n,replace:r,tool:i}}async function Hn(e,n,r,i,a){let o=Nn(e),s=async(e,n)=>{try{let{stdout:r}=await(await Dn())(`go`,[`list`,`-m`,`-json`,`${e}@latest`],{timeout:n,cwd:i,env:t}),a=JSON.parse(r);return{Version:a.Version,Time:a.Time||``,path:e}}catch{return null}},c=In(e,n,r),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(Pn(e,o+1),a.goProbeTimeout)]);return l?Bn(e,n,r,await zn(o,u,t=>s(Pn(e,t),a.goProbeTimeout)),l.Version,l.Time):Rn(e,r,n)}async function Un(e,t,n,r,i,a){if(An(e,a))return Hn(e,t,n,r,i);let o=jn(e),s=Nn(e),c=async t=>{let n=Pn(e,t);return i.doFetch(`${i.goProxyUrl}/${jn(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout),headers:{"accept-encoding":`gzip, deflate, br`}}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},l=In(e,t,n),[u,d]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}}),l?null:c(s+1)]);if(!u.ok)return Rn(e,n,t);let f,p;try{let e=await u.json();f=e.Version,p=e.Time}catch{return Rn(e,n,t)}return Bn(e,t,n,await zn(s,d,c),f,p)}function Wn(e,t){let n=U(t);return e=e.replace(RegExp(`^replace\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(RegExp(`^\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(/^replace\s*\(\s*\)\s*\n/gm,``),e}function Gn(e,t){let n=e,r={};for(let[e,{old:i,oldOrig:a}]of Object.entries(t)){let[o,s]=e.split(`\0`),c=a||i,l=t[e].new;if(o===`replace`){n=n.replace(RegExp(`(=>\\s+${U(s)}\\s+)v${U(c)}`,`g`),`$1v${l}`);continue}if(o===`indirect`){n=n.replace(RegExp(`(${U(s)}) +v${U(c)}`,`g`),`$1 v${l}`);continue}let u=Nn(s),d=Number.parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=Pn(s,d);n=n.replace(RegExp(`${U(s)} +v${U(c)}`,`g`),`${e} v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)${U(s)}(/\\S+)?\\s*$`,`gm`),`$1${e}$2`)),r[s]=e}else n=n.replace(RegExp(`(${U(s)}) +v${U(c)}`,`g`),`$1 v${l}`);o!==`tool`&&(n=Wn(n,s))}return[n,r]}function Kn(e,t,n){let r=Object.entries(t);if(!r.length)return;let i=new Map(r),a=r.map(([e])=>e).sort((e,t)=>t.length-e.length),o=RegExp(`"(${a.map(U).join(`|`)})(/|")`,`g`),c=f(`**/*.go`,{cwd:e});for(let t of c){let r=s(e,t),a=m(r,`utf8`),c=a.replace(o,(e,t,n)=>`"${i.get(t)}${n}`);c!==a&&n(r,c)}}function qn(e){let t=[],n={},r=e.split(/\r?\n/),i=!1,a=!1;for(let e of r){let r=e.trim();if(/^use\s*\(/.test(r)){i=!0;continue}if(/^replace\s*\(/.test(r)){a=!0;continue}if(r===`)`){i=!1,a=!1;continue}if(i){let e=/^(\S+)/.exec(r);e&&!r.startsWith(`//`)&&t.push(e[1]);continue}let o=/^use\s+(\S+)/.exec(r);if(o){t.push(o[1]);continue}if(a||/^replace\s+/.test(r)){let e=Fn(r,a);e&&(n[e.targetModule]=e.targetVersion);continue}}return{use:t,replace:n}}function Jn(e){let t=`https://${Yn(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[,e,i,...a]=r;return n.pathname=`/${e}/${i}/${At(t)}/${a.join(`/`)}`,n.toString()}else return t}function Yn(e){return Mn.test(e)?o(e):e}function Xn(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const Zn=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function Qn(e){if(e.startsWith(`docker://`)||e.startsWith(`./`))return null;let t=/^https?:\/\/([^/]+)\/(.+)$/.exec(e),n=t?.[1]??null,r=t?.[2]??e,i=r.indexOf(`@`);if(i===-1)return null;let a=r.substring(0,i),o=r.substring(i+1);if(!o)return null;let s=a.split(`/`);if(s.length<2)return null;let c=n?`${n}/${a}`:a;return{host:n,owner:s[0],repo:s[1],ref:o,name:c,isHash:wt.test(o)}}function $n(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function er(e,t,n,r,i){let a=`${e}/repos/${t}/${n}/git/commits/${r}`;if(!i.noCache){let e=await Ze(a);if(e)return e.body}try{let e=await xt(a,i);if(!e?.ok)return``;let t=await e.json(),n=t?.committer?.date||t?.author?.date||``;return n&&!i.noCache&&await Qe(a,`immutable`,n),n}catch{return``}}function tr(e,t){return kt(N(G(e))?.version??G(e),t)}function nr(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?)${U(e)}@${U(r)}(?![\\w.-])`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}const rr=[`.github`,`.gitea`,`.forgejo`],ir=RegExp(`(?:${rr.map(U).join(`|`)})\\/(?:workflows\\/[^/]+|(?:[^/]+\\/)*action)\\.ya?ml$`);function ar(e){return ir.test(e.replace(/\\/g,`/`))}function or(e){let t=new Set;try{for(let n of h(s(e,`workflows`)))/\.ya?ml$/.test(n)&&t.add(l(s(e,`workflows`,n)))}catch{}try{for(let n of h(e,{recursive:!0,withFileTypes:!0}))!n.isFile()||!/^action\.ya?ml$/.test(n.name)||t.add(l(s(n.parentPath,n.name)))}catch{}return Array.from(t)}const sr=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,cr=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,lr=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,ur=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,dr=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function fr(e){let t=e.split(`/`);return t.length===1?{registry:null,namespace:`library`,repo:t[0]}:t.length===2&&!t[0].includes(`.`)&&!t[0].includes(`:`)?{registry:null,namespace:t[0],repo:t[1]}:{registry:t[0],namespace:t.slice(1,-1).join(`/`),repo:t[t.length-1]}}function pr(e){if(e=e.replace(/^docker:\/\//,``),e.includes(`@`))return null;let t=e.lastIndexOf(`:`),n,r;if(t===-1||e.lastIndexOf(`/`)>t||(n=e.substring(0,t),r=e.substring(t+1),!r||!sr.test(r)))return null;let{registry:i,namespace:a,repo:o}=fr(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function mr(e){let t=sr.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function hr(e,t){let n=mr(t);return n?kt(e,n.version,n.suffix):t}function gr(e,t){let n=[];for(let r of e.matchAll(t)){let e=pr(r[1]);e&&n.push({ref:e,match:r[1]})}return n}async function _r(e,t,n){let r={},i=`${n.dockerApiUrl}/v2/repositories/${e}/${t}/tags`,a=e=>`${i}?page_size=100&ordering=last_updated&page=${e}`,o={headers:{"accept-encoding":`gzip, deflate, br`}},s=async e=>{try{let t=await ot(a(e),n,o);return`body`in t?JSON.parse(t.body):null}catch{return null}},c=await s(1);if(!c)return r;for(let e of c.results||[])r[e.name]=e.tag_last_pushed||e.last_updated||``;let l=Math.min(Math.ceil((c.count||0)/100),10);if(l<2)return r;let u=await Promise.all(Array.from({length:l-1},(e,t)=>s(t+2)));for(let e of u)if(e)for(let t of e.results||[])r[t.name]=t.tag_last_pushed||t.last_updated||``;return r}async function vr(e,t,n){let{registry:r,namespace:i,repo:a}=fr(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await _r(i,a,n),name:e},t,null,e]}function yr(e,t,n,r,i,a){let o=mr(t);if(!o)return null;let s=P(G(o.version))?.version;if(!s)return null;let c=s,l=``,u=``;for(let[t,s]of Object.entries(e)){let e=mr(t);if(!e||e.suffix!==o.suffix)continue;let d=P(G(e.version))?.version;if(!d||a&&!V(d,a)||!W(s,r,i))continue;let f=F(c,d);!f||!n.has(f)||ge(d,c)&&(c=d,l=t,u=s)}if(!l||c===s)return null;let d=hr(c,t);return d===t?null:{newTag:d,date:u}}function br(e,t,n){let r=e;for(let[e,i]of Object.entries(t)){let t=e.split(`\0`)[1],a=i.oldOrig||i.old;for(let e of n)r=r.replace(e(U(t),U(a)),`$1${t}:${i.new}`)}return r}function xr(e,t){return br(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}`,`g`)])}function Sr(e,t){return br(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}`,`g`)])}function Cr(e,t){return br(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}`,`g`)])}const wr=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function Tr(e){return/^docker-.+\.ya?ml$/.test(e)}function Er(e){return/^Dockerfile(\..+)?$/.test(e)}function Dr(e){return Er(e)||Tr(e)}function Or(e){return Er(e)?cr:lr}function kr(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const Ar=new Map;async function jr(e,t,n){let r=`${nt(n.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`,i=n.noCache?void 0:Ar.get(r);return i||(i=ot(r,n,rt()).then(t=>{`body`in t||Ot(t.res,r,e,n.cratesIoUrl);let i;try{i=JSON.parse(t.body)}catch{throw Error(`Invalid JSON from ${r}`)}let a=(i.versions||[]).filter(e=>!e.yanked),o={},s={};for(let e of a)e.num&&(o[e.num]={},s[e.num]=e.created_at||``);return{name:e,versions:o,time:s,"dist-tags":{latest:a[0]?.num??``}}}).catch(e=>{throw Ar.delete(r),e}),Ar.set(r,i)),[await i,t,null,e]}function Mr(e){let t=new Map;for(let n of e.split(`[[package]]`)){let e=/\bname\s*=\s*"([^"]+)"/.exec(n),r=/\bversion\s*=\s*"([^"]+)"/.exec(n);if(!e||!r)continue;let i=e[1],a=r[1];if(!de(a))continue;let o=t.get(i);o||t.set(i,o=[]),o.push(a)}return t}const Nr=/^\d/;function Pr(e,t){return Nr.test(e)?yn(Y(`^${e}`),t,`^${e}`).replace(/^\^/,``):yn(Y(e),t,e)}function Fr(e,t,n){let r=e.get(t);if(!r)return;let i=Nr.test(n)?`^${n}`:n,a;for(let e of r)V(e,i)&&(!a||he(e,a))&&(a=e);return a}const Ir=Le.map(U).join(`|`);function Lr(e,t){let n=e;for(let[e,r]of Object.entries(t)){let[,t]=e.split(`\0`),i=r.oldOrig||r.old,a=r.new,o=U(t),s=U(i);n=n.replace(RegExp(`^(\\s*${o}\\s*=\\s*["'])${s}(["'].*)$`,`gm`),`$1${a}$2`),n=n.replace(RegExp(`(\\s*${o}\\s*=\\s*\\{\\s*version\\s*=\\s*["'])${s}(["'])`,`g`),`$1${a}$2`),n=n.replace(RegExp(`(\\[(?:${Ir})\\.${o}\\][^\\[]*?version\\s*=\\s*["'])${s}(["'])`,`g`),`$1${a}$2`)}return n}function Rr(e){return e.split(`|`)[0]}function zr(e,t){let n=t===`.`?``:`|${t}`,r={};for(let[t,i]of Object.entries(e)){let[e,a]=t.split(`\0`),o=Rr(e);e===`${o}${n}`&&(r[`${o}${a}`]=i)}return r}const Br=/[*?{[]/;async function Vr(e,t,n,r=32){let i=new Set,a=[];for(let r of e){let e=Br.test(r)?f(r,{cwd:t}).map(e=>l(s(t,e))):[l(s(t,r))];for(let r of e){let e=s(r,n);if(i.has(e))continue;i.add(e);let o=c(t,r);a.push({absPath:e,memberPath:`./${o.replace(/\\/g,`/`)}`})}}return(await H(a,async({absPath:e,memberPath:t})=>{try{return{absPath:e,content:await x(e,`utf8`),memberPath:t}}catch{return null}},{concurrency:r})).filter(e=>e!==null)}function Hr(e){let t=[],n=e.split(/\r?\n/),r=!1;for(let e of n){if(/^packages\s*:/.test(e)){r=!0;continue}if(r){if(/^\S/.test(e))break;let n=/^\s+-\s+['"]?([^'"#\s]+)['"]?/.exec(e);n&&t.push(n[1])}}return t}const Ur={"pnpm-workspace.yaml":`npm`,"package.json":`npm`,"pyproject.toml":`pypi`,"go.work":`go`,"go.mod":`go`,"Cargo.toml":`cargo`},Wr=new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`]),X=(e,t)=>typeof e==`string`?nt(e):typeof t==`function`?t():t;function Gr(e,t){let n=new Map,r=new Set(e),i=t;for(;r.size;){for(let e of r){let t=s(i,e);try{u(t),n.set(e,t),r.delete(e)}catch{}}let e=o(i);if(e===i)break;i=e}return n}async function Kr(e,t){let n=await H(e,async e=>{try{return[e,await x(e,`utf8`)]}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}},{concurrency:t});return new Map(n)}function Z(e,t){t&&(e.date=t,e.age=Ae(t,{noAffix:!0}))}function qr(e){let t=0;for(let n of Object.keys(e))t+=Object.keys(e[n]).length;return t}function Jr(e){console.error(`${Ve()} ${e}`)}function Q(e,t,n,r,i){if(i===`engines`&&Pe.includes(e)||t===`pypi`&&e===`python`)return!1;if(!n.size&&!r.size)return!0;let a=t===`go`?Yn(e):e;for(let t of r)if(t.test(e)||t.test(a))return!1;for(let t of n)if(t.test(e)||t.test(a))return!0;return!n.size}function Yr(t){let n=new Set;if(t)for(let e of t){let t;try{t=p(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}if(t?.isFile())n.add(l(e));else if(t?.isDirectory()){for(let t of Object.keys(Ur)){let r=s(e,t),i=null;try{i=p(r)}catch{}i?.isFile()&&n.add(l(r))}try{for(let t of h(e,{withFileTypes:!0}))t.isFile()&&Dr(t.name)&&n.add(l(s(e,t.name)))}catch{}let t=l(e).replace(/\\/g,`/`),r=rr.some(e=>t.endsWith(`${e}/workflows`)),i=!r&&rr.some(e=>t.endsWith(e)),a;a=r?[o(t)]:i?[t]:rr.map(e=>s(t,e));for(let e of a)for(let t of or(e))n.add(t)}else throw Error(`${e} is neither a file nor directory`)}else{let t=new Set(rr),r=[...Object.keys(Ur),...wr,...rr];for(let[i,a]of Gr(r,e()))if(t.has(i))for(let e of or(a))n.add(e);else n.add(l(a));try{for(let t of h(e(),{withFileTypes:!0}))t.isFile()&&Dr(t.name)&&!wr.includes(t.name)&&n.add(l(s(e(),t.name)))}catch{}}for(let e of n)a(e)===`go.work`&&n.delete(s(o(e),`go.mod`));for(let e of n)a(e)===`pnpm-workspace.yaml`&&n.delete(s(o(e),`package.json`));return n}function $(e,t){n===`win32`&&_(e,0),v(e,t,n===`win32`?{flag:`r+`}:void 0)}function Xr(e){let t={results:{}};for(let n of Object.keys(e))for(let[r,i]of Object.entries(e[n])){typeof i.oldPrint==`string`&&(i.old=i.oldPrint),typeof i.newPrint==`string`&&(i.new=i.newPrint),typeof i.oldOrig==`string`&&!mn(i.oldOrig)&&(i.old=n===`go`?Xn(i.oldOrig):i.oldOrig),n===`go`&&(i.new=Xn(i.new)),n===`actions`&&(i.old=G(i.old),i.new=G(i.new)),delete i.oldPrint,delete i.newPrint,delete i.oldOrig,delete i.date;let[e,a]=r.split(`\0`),o=t.results[n]??={};(o[e]??={})[a]=i}return t}let Zr=!1;async function Qr(t={}){if(!Zr){let{enableDnsCache:e}=await import(`./dns.js`);e(),Zr=!0}let n={...t},c=n.sockets??25,u=n.timeout??0,d=X(t.forgeapi,`https://api.github.com`),f=X(t.pypiapi,`https://pypi.org`),p=X(t.jsrapi,`https://jsr.io`),m=X(t.goproxy,On),h=X(t.cargoapi,`https://crates.io`),g=X(t.dockerapi,`https://hub.docker.com`),_=kn(),v=n.color===!0||n.noColor!==!0&&r.isTTY,y=e=>v?t=>i(e,String(t)):String,b=y(`magenta`),S=y(`green`),C=y(`red`),w={fetchTimeout:u||5e3,goProbeTimeout:u?u/2:2500,forgeApiUrl:d,pypiApiUrl:f,jsrApiUrl:p,goProxyUrl:m,cratesIoUrl:h,dockerApiUrl:g,doFetch:async(e,t)=>{n.verbose&&Jr(`${b(t?.method||`GET`)} ${e}`);let r=await it(e,t);return n.verbose&&Jr(`${r.ok?S(r.status):C(r.status)} ${e}`),r},noCache:!!n.noCache},T=zt(n.greatest),E=zt(n.prerelease),te=zt(n.release),ne=zt(n.patch),re=zt(n.minor),ie=zt(n.allowDowngrade),D=n.modes?.length?new Set(n.modes):Wr;D.has(`actions`)&&vt();function ae(e){return ne===!0||Re(e,ne)?new Set([`patch`]):re===!0||Re(e,re)?new Set([`patch`,`minor`]):new Set([`patch`,`minor`,`major`])}let oe=new Map;function se(e){let t=oe.get(e);return t||(t={useGreatest:typeof T==`boolean`?T:Re(e,T),usePre:typeof E==`boolean`?E:Re(e,E),useRel:typeof te==`boolean`?te:Re(e,te),semvers:ae(e)},oe.set(e,t)),t}let ce=q(n.include??[]),le=q(n.exclude??[]),ue=n.pin??{},O={},k={},A={},j={},M=Date.now(),N=n.cooldown?We(String(n.cooldown)):0,fe=e(),pe=e=>e.replace(`${fe}/`,``).replace(`${fe}\\`,``),P=0,F=(e,t,n,r,i,a)=>{O[e][`${t}${n}${r}`]={old:i,oldOrig:a}},me=Yr(n.files?.length?new Set(n.files):!1),I=await Kr(Array.from(me).filter(e=>{if(ar(e))return D.has(`actions`)||D.has(`docker`);let t=a(e);if(Dr(t))return D.has(`docker`);let n=Ur[t];return!!n&&D.has(n)}),c),he={},ge={},_e=[],L=null,ve=[],ye=!1,R=[],be=!1,xe=[],Se=[],z={};async function B(e){let t=await Ht(e);return{modeConfig:t,modeInclude:t.include?.length?q([...n.include??[],...t.include]):ce,modeExclude:t.exclude?.length?q([...n.exclude??[],...t.exclude]):le,pin:{...t.pin,...ue}}}function Ce(e,t){return n.types?.length?n.types:t?.types?.length?t.types:e===`npm`?Ne:e===`pypi`?Fe:e===`go`?n.indirect?Ie:Ie.filter(e=>e!==`indirect`):e===`cargo`?Le:[]}function we(e,t,n,r){O.docker??={};for(let i of n)for(let{ref:n}of gr(e,i)){if(!Q(n.fullImage,`docker`,r.include,r.exclude,`docker`))continue;let e=`${t}${n.fullImage}`;if(O.docker[e])continue;let i=mr(n.tag);i&&(O.docker[e]={old:i.version,oldOrig:n.tag},Se.push({key:e,fullImage:n.fullImage,ref:n,filePin:r.pin}))}}async function V(e){let t=await Ht(e);return{include:t.include?.length?q([...n.include??[],...t.include]):ce,exclude:t.exclude?.length?q([...n.exclude??[],...t.exclude]):le,pin:t.pin??{}}}for(let e of me){if(ar(e)){let t=D.has(`actions`),n=D.has(`docker`);if(!t&&!n)continue;let r=I.get(e),i=pe(e),a=await V(o(e));if(he[i]={absPath:e,content:r},t){O.actions??={};let e=Array.from(r.matchAll(Zn),e=>Qn(e[1])).filter(e=>e!==null);for(let t of e){if(!Q(t.name,`actions`,a.include,a.exclude,`actions`))continue;let e=`${i}${t.name}`;O.actions[e]||(O.actions[e]={old:t.ref},xe.push({...t,key:e,apiUrl:$n(t.host,d),filePin:a.pin}))}}n&&(ge[i]={absPath:e,content:r,fileType:`workflow`},we(r,i,[lr,ur,dr],a));continue}let t=a(e);if(Dr(t)){if(!D.has(`docker`))continue;let n=I.get(e),r=pe(e),i=Er(t)?`dockerfile`:`compose`,a=await V(o(e));ge[r]={absPath:e,content:n,fileType:i},we(n,r,[Or(t)],a);continue}let n=Ur[t];if(!D.has(n))continue;if(t===`go.work`){O[n]??={};let t=o(l(e)),r=I.get(e);L={file:e,content:r};let i=qn(r),[a,u]=await Promise.all([B(t),H(i.use,async e=>{let n=l(s(t,e,`go.mod`));try{return{usePath:e,modPath:n,content:await x(n,`utf8`)}}catch{return null}},{concurrency:c})]),{modeConfig:d,modeInclude:f,modeExclude:p,pin:m}=a,h=Ce(n,d);j[n]=e,z[n]={modeConfig:d,projectDir:t,pin:m};for(let e of u){if(!e)continue;let{usePath:t,modPath:r,content:i}=e,a=Vn(i),s=o(r);_e.push({absPath:r,content:i,projectDir:s,usePath:t});let c=t===`.`?``:`|${t}`;for(let e of h){let t=a[e]||{};for(let[r,i]of Object.entries(t))Q(r,n,f,p,e)&&F(n,e,c,r,Xn(i),G(i))}}for(let[e,t]of Object.entries(i.replace))Q(e,n,f,p,`replace`)&&F(n,`replace`,``,e,Xn(t),G(t));P+=Object.keys(O[n]).length;continue}if(t===`go.mod`&&L||t===`package.json`&&be)continue;if(t===`Cargo.toml`){O[n]??={};let t=I.get(e),r=ee(t),i=o(l(e));j[n]=e;let a=Gr([`Cargo.lock`],i).get(`Cargo.lock`),s=r.workspace?.members,u=Array.isArray(s)&&s.length,[d,f,p]=await Promise.all([B(i),a?x(a,`utf8`):Promise.resolve(null),u?Vr(s,i,`Cargo.toml`,c):Promise.resolve([])]),{modeConfig:m,modeInclude:h,modeExclude:g,pin:_}=d,v=Ce(n,m);z[n]={modeConfig:m,projectDir:i,pin:_};let y=f?Mr(f):new Map,b=(e,t)=>{for(let r of v){let i=ze(e,r)||{};if(!(typeof i!=`object`||Array.isArray(i))){for(let[e,a]of Object.entries(i))if(Q(e,n,h,g,r))if(typeof a==`object`&&a&&`version`in a&&!(`git`in a)&&!(`path`in a)){let i=String(a.version);Te(i)&&F(n,r,t,e,Fr(y,e,i)??Y(i),i)}else typeof a==`string`&&Te(a)&&F(n,r,t,e,Fr(y,e,a)??Y(a),a)}}};if(u){ye=!0,b(r,``),ve.push({absPath:l(e),content:t,memberPath:`.`});for(let e of p){ve.push(e);try{b(ee(e.content),`|${e.memberPath}`)}catch(t){throw Error(`Error parsing ${e.absPath}: ${t.message}`)}}}else A[n]=t,b(r,``);P+=Object.keys(O[n]).length;continue}if(t===`pnpm-workspace.yaml`){O[n]??={};let t=o(l(e)),r=I.get(e);be=!0;let i=Hr(r),a=s(t,`package.json`),[u,d,f]=await Promise.all([B(t),x(a,`utf8`).catch(()=>null),Vr(i,t,`package.json`,c)]),{modeConfig:p,modeInclude:m,modeExclude:h,pin:g}=u,_=Ce(n,p);j[n]=e,z[n]={modeConfig:p,projectDir:t,pin:g};let v=(e,t)=>{for(let r of _){let i=e[r]||{};if(typeof i==`string`){let[e,a]=i.split(`@`);Q(e,n,m,h,r)&&F(n,r,t,e,Y(a),a)}else if(typeof i==`object`&&!Array.isArray(i))for(let[e,a]of Object.entries(i))Q(e,n,m,h,r)&&(mn(a)?F(n,r,t,e,gn(a,e).version,a):Te(a)?F(n,r,t,e,Y(a),a):hn(a)?F(n,r,t,e,`0.0.0`,a):k[`${r}${t}${e}`]={old:a})}};if(d!==null){let e;try{e=JSON.parse(d)}catch(e){throw Error(`Error parsing ${a}: ${e.message}`)}R.push({absPath:l(a),content:d,memberPath:`.`}),v(e,``)}for(let e of f){let t;try{t=JSON.parse(e.content)}catch(t){throw Error(`Error parsing ${e.absPath}: ${t.message}`)}R.push(e),v(t,`|${e.memberPath}`)}P+=Object.keys(O[n]).length+Object.keys(k).length;continue}j[n]=e,O[n]??={};let r=o(l(e)),{modeConfig:i,modeInclude:u,modeExclude:f,pin:p}=await B(r),m=Ce(n,i),h={};A[n]=I.get(e);try{if(n===`npm`)h=JSON.parse(A[n]);else if(n===`pypi`)h=ee(A[n]);else if(n===`go`){let e=Vn(A[n]);h.deps=e.deps,h.indirect=e.indirect,h.replace=e.replace,h.tool=e.tool}}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}for(let e of m){let t;if(t=n===`npm`||n===`go`?h[e]||{}:ze(h,e)||{},Array.isArray(t)&&n===`pypi`)for(let{name:r,version:i}of Me(t))Q(r,n,u,f,e)&&F(n,e,``,r,Y(i),i);else if(typeof t==`string`){let[r,i]=t.split(`@`);Q(r,n,u,f,e)&&F(n,e,``,r,Y(i),i)}else for(let[r,i]of Object.entries(t))Q(r,n,u,f,e)&&(n===`npm`&&mn(i)?F(n,e,``,r,gn(i,r).version,i):n!==`go`&&Te(i)?F(n,e,``,r,Y(i),i):n===`npm`&&hn(i)?F(n,e,``,r,`0.0.0`,i):n===`npm`?k[`${e}${r}`]={old:i}:n===`go`&&F(n,e,``,r,Xn(i),G(i)))}P+=Object.keys(O[n]).length+Object.keys(k).length,z[n]={modeConfig:i,projectDir:r,pin:p}}if(O.actions&&(P+=Object.keys(O.actions).length),O.docker&&(P+=Object.keys(O.docker).length),P===0)return{results:{},message:`No dependencies found, nothing to do.`};let Ee=[],De={registry:n.registry};for(let e of Object.keys(z)){let t=!!O[e]&&Object.keys(O[e]).length>0,r=e===`npm`&&Object.keys(k).length>0;if(!t&&!r)continue;let{modeConfig:i,projectDir:a,pin:o}=z[e],s=n.cooldown??i.cooldown,l=s?We(String(s)):0;Ee.push((async()=>{let t=new Map,n=e=>{if(l)for(let[t,{date:n}]of Object.entries(e))n&&!W(n,l,M)&&delete e[t]};if(await H(Object.keys(O[e]),async n=>{let[r,s]=n.split(`\0`),c=Rr(r),u=O[e][n],d=null;if(e===`npm`){let{oldOrig:t}=u;if(t&&mn(t))d=await _n(s,c,w);else if(t&&hn(t))try{d=await fn(s,c,i,De,w)}catch{delete O[e][n];return}else d=await fn(s,c,i,De,w)}else d=e===`go`?await Un(s,c,u.oldOrig||u.old,a,w,_):e===`cargo`?await jr(s,c,w):await Cn(s,c,w);if(!d)return;let[f,,p]=d;if(f?.error)throw Error(f.error);let{useGreatest:m,usePre:h,useRel:g,semvers:v}=se(f.name),y=u.old,b=u.oldOrig,x=o[s],S=mt(f,{usePre:h,useRel:g,useGreatest:m,semvers:v,range:y,mode:e,pinnedRange:x,cooldownDays:l||void 0,now:l?M:void 0},{allowDowngrade:ie,matchesAny:Re,isGoPseudoVersion:Ln}),C=``;if([`go`,`pypi`].includes(e)&&S)C=S;else if(e===`cargo`&&S&&b)C=Pr(b,S);else if(S)if(b&&hn(b))C=String(en()[`save-exact`])===`true`?S:`^${S}`;else if(b&&mn(b)){let e=/^(npm:@jsr\/[^@]+@|jsr:@[^@]+@)(.+)$/.exec(b);e?C=`${e[1]}${S}`:b.startsWith(`jsr:`)&&(C=`jsr:${S}`)}else C=yn(y,S,b);if(!S||S===y||b&&b===C){delete O[e][n];return}let T=``;e===`pypi`&&f.releases?.[S]?.[0]?.upload_time_iso_8601?T=f.releases[S][0].upload_time_iso_8601:e===`go`&&f.Time?T=f.Time:e===`cargo`&&f.time?.[S]&&(T=f.time[S]),u.new=C,b&&mn(b)&&(u.newPrint=S),e===`npm`?t.set(n,{name:s,promise:pn(f.name,S,i,De,w)}):e===`pypi`?u.info=jt(f,p,f.info.name):e===`go`?u.info=Jn(f.newPath||s):e===`cargo`&&(u.info=`https://crates.io/crates/${s}`),T&&Z(u,T)},{concurrency:c}),await Promise.all(Array.from(t,async([t,{name:n,promise:r}])=>{let i=await r,a=O[e][t];a&&(a.info=jt({repository:i.repository,homepage:i.homepage},null,n),i.date&&Z(a,i.date))})),e===`npm`&&Object.keys(k).length){let t=(await H(Object.entries(k),([e,t])=>Sn(e,t,w),{concurrency:c})).filter(e=>e!==null);for(let n of t){let{key:t,newRange:r,user:i,repo:a,oldRef:o,newRef:s,newDate:c}=n;O[e][t]={old:k[t].old,new:r,oldPrint:wt.test(o)?o.substring(0,7):o,newPrint:wt.test(s)?s.substring(0,7):s,info:`https://github.com/${i}/${a}`},c&&Z(O[e][t],c)}}n(O[e])})())}if(xe.length&&Ee.push((async()=>{let e=new Map;for(let t of xe){let n=`${t.apiUrl}/${t.owner}/${t.repo}`,r=e.get(n);r||e.set(n,r={apiUrl:t.apiUrl,owner:t.owner,repo:t.repo,infos:[]}),r.infos.push(t)}await H(e.values(),async({apiUrl:e,owner:t,repo:n,infos:r})=>{let i=await Dt(e,t,n,w),a=[],o=new Map,s=new Map,l=new Map;for(let e of i){s.set(e.name,e);let t=G(e.name);de(t)&&(a.push(t),o.has(t)||o.set(t,e.name)),e.commitSha&&l.set(e.commitSha,e.name)}let u=new Map;async function d(r){if(u.has(r))return u.get(r);let i=await er(e,t,n,r,w);return u.set(r,i),i}async function f(e){let t=new Set;for(let n=0;n<20;n++){let n=pt({},t.size?a.filter(e=>!t.has(e)):a,e);if(!n||n===e.range)return null;let r=o.get(n);if(!r){t.add(n);continue}let i=s.get(r)?.commitSha||``;if(!N)return{version:n,tag:r,commitSha:i,date:``};let c=i?await d(i):``;if(W(c,N,M))return{version:n,tag:r,commitSha:i,date:c};t.add(n)}return null}await H(r,async({key:e,host:r,ref:i,name:a,isHash:o,filePin:c})=>{let u=O.actions[e],p=`https://${r||`github.com`}/${t}/${n}`,m=ue[a]??c[a];if(o){let{usePre:t,useRel:n}=se(a),r=await f({range:`0.0.0`,semvers:new Set([`patch`,`minor`,`major`]),usePre:t,useRel:n,useGreatest:!0,pinnedRange:m});if(!r){delete O.actions[e];return}let{tag:o,commitSha:s,date:c}=r;if(!s||s===i||s.startsWith(i)||i.startsWith(s)){delete O.actions[e];return}let d=l.get(i);if(!d){for(let[e,t]of l)if(e.startsWith(i)){d=t;break}}u.old=i,u.new=s.substring(0,i.length),u.oldPrint=d||i.substring(0,7),u.newPrint=o,u.info=p,c&&Z(u,c)}else{let t=K(G(i));if(!t){delete O.actions[e];return}let{usePre:n,useRel:r,semvers:o}=se(a),c=await f({range:t,semvers:o,usePre:n,useRel:r,useGreatest:!0,pinnedRange:m});if(!c){delete O.actions[e];return}let{tag:l,commitSha:h,date:g}=c,_=tr(l,i);if(_===i){delete O.actions[e];return}if(u.new=s.has(_)?_:l,u.info=p,h&&g)Z(u,g);else if(h){let e=await d(h);e&&Z(u,e)}}},{concurrency:c})},{concurrency:c}),Object.keys(O.actions).length||delete O.actions})()),Se.length&&Ee.push((async()=>{let e=new Map;for(let t of Se){let n=e.get(t.fullImage);n||e.set(t.fullImage,n=[]),n.push(t)}await H(e.entries(),async([e,t])=>{let n;try{let[t]=await vr(e,`docker`,w);n=t}catch{for(let e of t)delete O.docker[e.key];return}for(let e of t){let t=O.docker[e.key],r=t.oldOrig||t.old,{semvers:i}=se(e.fullImage),a=ue[e.fullImage]??e.filePin[e.fullImage],o=yr(n.tags,r,i,N||void 0,N?M:void 0,a);if(!o){delete O.docker[e.key];continue}t.new=o.newTag,t.info=kr(e.ref),Z(t,o.date)}},{concurrency:c}),Object.keys(O.docker).length||delete O.docker})()),await Promise.all(Ee),!qr(O))return{results:{},message:`All dependencies are up to date.`};if(n.update){let e=(e,t,n)=>{for(let r of t){let t=zr(O[e],r.memberPath);Object.keys(t).length&&$(r.absPath,n(r.content,t))}},t=new Map;if(O.actions)for(let[e,n]of Object.entries(O.actions)){let[r,i]=e.split(`\0`),a=t.get(r);a||t.set(r,a=[]),a.push({name:i,oldRef:n.old,newRef:n.new})}let n=new Map;if(O.docker)for(let[e,t]of Object.entries(O.docker)){let[r]=e.split(`\0`),i=n.get(r);i||n.set(r,i={}),i[e]=t}for(let r of Object.keys(O)){if(!Object.keys(O[r]).length)continue;if(r===`actions`){for(let[e,n]of t){let{absPath:t,content:r}=he[e]||{};if(!t)continue;let i=nr(r,n);$(t,i),ge[e]&&(ge[e].content=i)}continue}if(r===`docker`){for(let[e,t]of n){let n=ge[e];if(!n)continue;let{absPath:r,content:i,fileType:a}=n;$(r,(a===`dockerfile`?xr:a===`compose`?Sr:Cr)(i,t))}continue}let i=A[r];if(r===`go`&&L){for(let e of _e){let t=zr(O[r],e.usePath);if(!Object.keys(t).length)continue;let[n,i]=Gn(e.content,t);n!==e.content&&$(e.absPath,n),Kn(e.projectDir,i,$)}let e={};for(let[t,n]of Object.entries(O[r]))t.split(`\0`)[0]===`replace`&&(e[t]=n);if(Object.keys(e).length){let[t]=Gn(L.content,e);t!==L.content&&$(L.file,t)}}else if(r===`go`){let[e,t]=Gn(i,O[r]);$(j[r],e),Kn(o(l(j[r])),t,$)}else if(r===`cargo`&&ye)e(r,ve,Lr);else if(r===`cargo`)$(j[r],Lr(i,O[r]));else if(r===`npm`&&be)e(r,R,vn);else{let e=r===`npm`?vn:wn;$(j[r],e(i,O[r]))}}}return Xr(O)}function $r(e,t){if(t.some(e=>e===`-h`||e===`--help`||e===`-v`||e===`--version`))return[];let n=(...t)=>t.some(t=>d(s(e,t))),r=new Set;return n(`package.json`,`pnpm-workspace.yaml`)&&(r.add(`https://registry.npmjs.org/`),r.add(`https://jsr.io/`),r.add(`https://api.github.com/`)),n(`pyproject.toml`)&&r.add(`https://pypi.org/`),n(`Cargo.toml`)&&r.add(`https://crates.io/`),n(`go.mod`,`go.work`)&&r.add(`https://proxy.golang.org/`),n(...wr)&&r.add(`https://hub.docker.com/`),n(`.github/workflows`)&&(r.add(`https://api.github.com/`),r.add(`https://hub.docker.com/`)),Array.from(r)}function ei(e){let t=``,n=0,r=e.length;for(;n<r;){let i=e[n];if(i===`"`){for(t+=i,n++;n<r;){let i=e[n];if(t+=i,n++,i===`\\`&&n<r){t+=e[n],n++;continue}if(i===`"`)break}continue}if(i===`/`&&n+1<r&&e[n+1]===`/`){for(n+=2;n<r&&e[n]!==`
|
|
5
|
+
`;)n++;continue}if(i===`/`&&n+1<r&&e[n+1]===`*`){for(n+=2;n<r&&(e[n]!==`*`||e[n+1]!==`/`);)n++;n+=2;continue}t+=i,n++}return t=t.replace(/,(\s*[}\]])/g,`$1`),JSON.parse(t)}export{Te as _,It as a,Lt as c,tt as d,et as f,Ge as g,He as h,Yn as i,Ft as l,Ke as m,$r as n,Ht as o,je as p,Qr as r,Mt as s,ei as t,Rt as u};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "updates",
|
|
3
|
-
"version": "17.16.
|
|
3
|
+
"version": "17.16.13",
|
|
4
4
|
"description": "CLI dependency update tool for npm, uv, cargo, go and actions",
|
|
5
5
|
"author": "silverwind",
|
|
6
6
|
"repository": "silverwind/updates",
|
|
@@ -52,6 +52,6 @@
|
|
|
52
52
|
"updates-config-silverwind": "3.0.2",
|
|
53
53
|
"versions": "15.0.3",
|
|
54
54
|
"vitest": "4.1.6",
|
|
55
|
-
"vitest-config-silverwind": "11.3.
|
|
55
|
+
"vitest-config-silverwind": "11.3.5"
|
|
56
56
|
}
|
|
57
57
|
}
|