updates 17.11.6 → 17.11.7
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 +7 -7
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,versions as o}from"node:process";import{basename as s,dirname as c,join as l,resolve as u}from"node:path";import{pathToFileURL as d}from"node:url";import{accessSync as f,globSync as p,lstatSync as m,readFileSync as h,readdirSync as g,statSync as _,truncateSync as v,writeFileSync as y}from"node:fs";import{parseArgs as b,promisify as
|
|
3
|
-
`;case`r`:return`\r`;case`t`:return` `;case`u`:case`U`:return String.fromCodePoint(Number.parseInt(t.slice(1),16));default:return t}})}const
|
|
4
|
-
`)}return r}const Ke={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function qe(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Ke[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 Je(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}function Ye(){let e=new Map,t=new Map,n=S.lookup;S.lookup=function(r,...i){let a={},o;typeof i[0]==`function`?o=i[0]:(a=typeof i[0]==`number`?{family:i[0]}:i[0]||{},o=i[1]);let s=e.get(r);if(s){a.all?o(null,s):o(null,s[0].address,s[0].family);return}if(t.has(r)){t.get(r).push({options:a,callback:o});return}t.set(r,[{options:a,callback:o}]),n.call(S,r,{all:!0},(n,i)=>{let a=t.get(r);t.delete(r),!n&&i?.length&&e.set(r,i);for(let{options:e,callback:t}of a)n?t(n):e.all?t(null,i):t(null,i[0].address,i[0].family)})}}const Xe=`17.11.6`,F=e=>e.replace(/^v/,``),I=e=>e.replace(/[|\\{}()[\]^$+*?.-]/g,`\\$&`),L=e=>e.endsWith(`/`)?e.substring(0,e.length-1):e;function Ze(e,t){return{headers:{"user-agent":`updates/${Xe}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function Qe(e,t,n,r,i,a,o){n&&r&&i&&r(`${i(`fetch`)} ${e}`);try{let i=await fetch(e,t);return n&&r&&a&&o&&r(`${i.ok?a(i.status):o(i.status)} ${e}`),i}catch(t){throw Error(`Failed to fetch ${e}${t?.message?`: ${t.message}`:``}`)}}function R(e){let t=ue(e);return t?!!t.prerelease.length:!1}function $e(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}function et(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=z(e),s=z(t);if(!o||!s)return!0;let c=$e(e)||R(e),l=R(t);return c&&!l?me(s,o)||n:!l&&ge(s,o)?r===!0||a(i,r):!0}function z(e){try{return pe(e)?.version??``}catch{return``}}function tt(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s}){let c=z(n);if(!c)return c;i=$e(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 l=0,u=c;for(let n of t){let t=ue(n);if(!t?.version||t.prerelease.length&&(!i||a))continue;let c=t.version;if(s&&!De(c,s))continue;let d=M(u,c);if(!(!d||!r.has(d)))if(o||!(`time`in e))(he(z(c),u)||s&&!De(u,s))&&(u=c);else{let t=Date.parse(e.time[n]);t>=0&&t>l&&(u=c,l=t)}}return u||null}function nt(e,{mode:t,range:n,useGreatest:r,useRel:i,usePre:a,semvers:o,pinnedRange:s},{allowDowngrade:c,matchesAny:l,isGoPseudoVersion:u}){if(n===`*`||n.includes(`||`))return null;let d=[];if(t===`pypi`)d=Object.keys(e.releases).filter(e=>j(e));else if(t===`npm`||t===`cargo`)d=Object.keys(e.versions).filter(e=>j(e));else if(t===`go`){let t=z(n);if(!t)return null;let r=a||$e(n),s=e=>R(e)&&(!r||i),d={useRel:i,allowDowngrade:c,name:e.name,matchesAny:l},f=e.old||n,p=z(e.new);if(p&&!u(e.new)&&!s(e.new)){let n=M(t,p);if(n&&o.has(n)&&et(f,e.new,d))return e.new}let m=z(e.sameMajorNew);if(m&&!u(e.sameMajorNew)&&!s(e.sameMajorNew)){let n=M(t,m);if(n&&o.has(n)&&et(f,e.sameMajorNew,d))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}return null}let f=tt(e,d,{range:n,semvers:o,usePre:a,useRel:i,useGreatest:r,pinnedRange:s});if(!f)return null;if(r)return f;{let r=``,u=``;t===`pypi`?(u=e.info.version,r=z(e.info.version)):r=e[`dist-tags`].latest;let d=z(n),p=$e(n),m=R(f),h=R(r),g={useRel:i,allowDowngrade:c,name:e.name,matchesAny:l};if(!i&&a||p&&m)return f;if(p&&!m)return et(n,f,g)?f:null;let _=M(d,r);return _&&_!==`prerelease`&&!o.has(_.replace(/^pre/,``))||i&&R(r)?f:ge(r,d)&&!h?et(n,r,g)?r:null:!p&&h&&!a||s&&!De(r,s)?f:u||r}}const rt=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&rt.set(e.substring(0,t),e.substring(t+1))}function it(e){try{let t=rt.get(new URL(e).hostname);if(t)return t}catch{}return t.UPDATES_GITHUB_API_TOKEN||t.GITHUB_API_TOKEN||t.GH_TOKEN||t.GITHUB_TOKEN||t.HOMEBREW_GITHUB_API_TOKEN}function at(e,t){let n={signal:AbortSignal.timeout(t.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}},r=it(e);return r&&(n.headers={...n.headers,Authorization:`Bearer ${r}`}),t.doFetch(e,n)}function ot(e,t,n){let r=F(t);if(!j(r))return null;if(n){let n=t,i=F(t);for(let t of e){let e=F(t);j(e)&&(!n||me(e,i))&&(n=t,i=e)}if(_e(r,i))return n}else{let t=e.at(-1);if(!t)return null;let n=F(t);if(!j(n))return null;if(_e(r,n))return t}return null}function st(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 ct=/^[0-9a-f]{7,}$/i;function lt(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function ut(e,t,n,r){try{let i=await at(`${e}/repos/${t}/${n}/tags?per_page=100`,r);if(!i?.ok)return[];let a=lt(await i.json()),o=i.headers.get(`link`)||``,s=/<([^>]+)>;\s*rel="last"/.exec(o);if(s){let i=Number(new URL(s[1]).searchParams.get(`page`)),o=await Promise.all(Array.from({length:i-1},(i,a)=>at(`${e}/repos/${t}/${n}/tags?per_page=100&page=${a+2}`,r)));for(let e of o)e?.ok&&a.push(...lt(await e.json()))}return a}catch{return[]}}function dt(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 ft(e,t,n=``){let r=t.startsWith(`v`),i=F(e),a=F(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 pt(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function mt({repository:e,homepage:t,info:n},r,i){n&&(e=n.project_urls.repository||n.project_urls.Repository||n.project_urls.repo||n.project_urls.Repo||n.project_urls.source||n.project_urls.Source||n.project_urls[`source code`]||n.project_urls[`Source code`]||n.project_urls[`Source Code`]||n.project_urls.homepage||n.project_urls.Homepage||`https://pypi.org/project/${i}/`);let a=``;return r===`https://npm.pkg.github.com`?`https://github.com/${i.replace(/^@/,``)}`:(e&&(a=st(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${pt(a)}/${e.directory}`)),a||t||``)}function ht(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 gt(e){try{return ht(h(e,`utf-8`))}catch{return}}function _t(t){let n=e();for(;;){let e=l(n,t);try{return _(e),e}catch{}let r=c(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 yt(e,n={}){let i=r===`win32`,a=i?t.USERPROFILE:t.HOME,o=[{...n}],s=[];function c(e){if(!e||s.includes(e))return;let t=gt(e);t&&(o.push(t),s.push(e))}i||(c(l(`/etc`,e,`config`)),c(l(`/etc`,`${e}rc`))),a&&(c(l(a,`.config`,e,`config`)),c(l(a,`.config`,e)),c(l(a,`.${e}`,`config`)),c(l(a,`.${e}rc`))),c(_t(`.${e}rc`));let u=vt(`${e}_`);return u.config&&c(u.config),Object.assign({},...o,u,s.length?{configs:s,config:s[s.length-1]}:void 0)}const bt=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,xt=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,St=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,Ct=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,wt=`https://registry.npmjs.org`;let B=null;const Tt=new Map;function Et(){return B||yt(`npm`,{registry:wt})}function Dt(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function Ot(e,t){let n=t[`${e}:_authToken`]||t[`${e}/:_authToken`];if(n)return{token:Dt(n),type:`Bearer`};let r=t[`${e}:username`]||t[`${e}/:username`],i=t[`${e}:_password`]||t[`${e}/:_password`];if(r&&i){let e=Buffer.from(Dt(i),`base64`).toString(`utf8`);return{token:Buffer.from(`${r}:${e}`).toString(`base64`),type:`Basic`,username:r,password:e}}let a=t[`${e}:_auth`]||t[`${e}/:_auth`];if(a)return{token:Dt(a),type:`Basic`}}function V(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=Ot(`//${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:Dt(i),type:`Basic`}}function kt(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function At(e,t){B||=Et();let n=e.startsWith(`@`)?(/@[a-z0-9][\w.-]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=Tt.get(r);if(i)return i;let a;if(!e.startsWith(`@`))a={auth:V(t,B),registry:t};else{let e=L(kt(n,B));if(e!==t)try{let n=V(e,B);a=n?.token?{auth:n,registry:e}:{auth:V(t,B),registry:t}}catch{a={auth:V(t,B),registry:t}}else a={auth:V(t,B),registry:t}}return Tt.set(r,a),a}function jt(e,t,n){B||=Et();let r=L((typeof n.registry==`string`?n.registry:!1)||t.registry||B.registry||wt);return{...At(e,r),originalRegistry:r}}function Mt(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}async function Nt(e,t,n,r,i){let{auth:a,registry:o}=jt(e,n,r),c=Mt(o,t===`resolutions`?s(e):e),l=Ze(a?.type,a?.token);l.headers={...l.headers,accept:`application/vnd.npm.install-v1+json`};let u=await i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...l});if(u?.ok)return[await u.json(),t,o,e];dt(u,c,e,o)}async function Pt(e,t,n,r,i){let{auth:a,registry:o}=jt(e,n,r),s=Mt(o,e,t);try{let n=Ze(a?.type,a?.token),r=await i.doFetch(s,{signal:AbortSignal.timeout(i.fetchTimeout),...n});if(!r?.ok)return{};let c=await r.json(),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=Mt(o,e),a=await i.doFetch(r,{signal:AbortSignal.timeout(i.fetchTimeout),...n});a?.ok&&(l=(await a.json())?.time?.[t]||``)}return{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}}function H(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Ft(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function It(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 Lt(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 n.doFetch(o,{signal:AbortSignal.timeout(n.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}});if(s?.ok){let r=await s.json(),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]}dt(s,o,e,`JSR`)}function Rt(e,t){let n=e;for(let[e,{old:r,oldOrig:i}]of Object.entries(t)){let[a,o]=e.split(`\0`),s=i||r;if(a===`packageManager`){let r=RegExp(`"${I(a)}": *"${o}@${I(s)}"`,`g`);n=n.replace(r,`"${a}": "${o}@${t[e].new}"`)}else{let r=RegExp(`"${I(o)}": *"${I(s)}"`,`g`);n=n.replace(r,`"${o}": "${t[e].new}"`)}}return n}function zt(e,t,n){let r=e.replace(Ct,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 Bt(e){let t=e.match(St);return t?.length===1?e.replace(St,z(t[0])):e}async function Vt(e,t,n){try{let r=await at(`${n.forgeApiUrl}/repos/${e}/${t}/commits`,n);if(!r?.ok)return{hash:``,commit:{}};let{sha:i,commit:a}=(await r.json())[0];return{hash:i,commit:a}}catch{return{hash:``,commit:{}}}}async function Ht(e,t,n){return(await ut(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function Ut(e,t,n,r){let i=t.old.replace(bt,``),[a,o,s,c]=xt.exec(i)||[];if(!o||!s||!c)return null;if(ct.test(c)){let{hash:n,commit:i}=await Vt(o,s,r);if(!n)return null;let a=i?.committer?.date??i?.author?.date,l=n.substring(0,c.length);if(c!==l)return{key:e,newRange:t.old.replace(c,l),user:o,repo:s,oldRef:c,newRef:l,newDate:a}}else{let t=ot(await Ht(o,s,r),c,n);if(t)return{key:e,newRange:t,user:o,repo:s,oldRef:c,newRef:t}}return null}async function Wt(e,t,n){let r=`${n.pypiApiUrl}/pypi/${e}/json`,i=await n.doFetch(r,{signal:AbortSignal.timeout(n.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}});if(i?.ok)return[await i.json(),t,null,e];dt(i,r,e,n.pypiApiUrl)}function Gt(e,t){let n=e;for(let[e,{old:r,oldOrig:i}]of Object.entries(t)){let[a,o]=e.split(`\0`),s=i||r;n=n.replace(RegExp(`("${I(o)} *[<>=~]+ *)${I(s)}(")`,`g`),(n,r,i)=>`${r}${t[e].new}${i}`)}return n}const Kt=ee(ne);function qt(){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 e.endsWith(`/`)?e.substring(0,e.length-1):e}return`https://proxy.golang.org`}function Jt(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function Yt(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function Xt(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}function Zt(e){let t=/\/v(\d+)$/.exec(e);return t?Number.parseInt(t[1]):1}function Qt(e,t){return t<=1?e.replace(/\/v\d+$/,``):`${e.replace(/\/v\d+$/,``)}/v${t}`}function $t(e,t){return t===`indirect`||e.startsWith(`golang.org/x/`)}function en(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function tn(e){return`${(e.length+4).toString(16).padStart(4,`0`)}${e}`}function nn(e){let t=[tn(`command=ls-refs
|
|
5
|
-
`),
|
|
6
|
-
`),`0001`,
|
|
7
|
-
`),tn(`ref-prefix refs/tags/${e}v\n`),`0000`];return new Blob([t.join(``)])}function rn(e,t){let n=new TextDecoder().decode(e),r=[],i=`refs/tags/${t}`,a=0;for(;a<n.length&&!n.startsWith(`0000`,a);){let e=n.substring(a,a+4),t=Number.parseInt(e,16);if(t===0||Number.isNaN(t))break;let o=n.substring(a+4,a+t);a+=t;let s=o.indexOf(` `);if(s===-1)continue;let c=o.substring(s+1).trim();if(c.endsWith(`^{}`)||!c.startsWith(i))continue;let l=c.substring(i.length);l&&r.push(l)}return r}function an(e,t){let n=t;for(let t of e){let e=/^v(\d+)\./.exec(t);if(e){let t=Number.parseInt(e[1]);t>n&&(n=t)}}return n}function on(e){return e?`${e.substring(1)}/`:``}function sn(e){let t=/^((github\.com|gitea\.com|codeberg\.org|gitlab\.com|bitbucket\.org|git\.sr\.ht)\/[^/]+\/[^/]+)(\/.*)?$/.exec(e);if(t)return{repoUrl:`https://${t[1]}.git`,tagPrefix:on(t[3])};let n=/^golang\.org\/x\/([^/]+)(\/.*)?$/.exec(e);if(n)return{repoUrl:`https://go.googlesource.com/${n[1]}`,tagPrefix:on(n[2])};let r=/^gopkg\.in\/(?:([^/]+)\/)?([^.]+)\.v\d+(\/.*)?$/.exec(e);return r?{repoUrl:`https://github.com/${r[1]||`go-${r[2]}`}/${r[2]}.git`,tagPrefix:on(r[3])}:null}async function cn(e,t){let n=sn(e);if(n)return n;try{let n=await t.doFetch(`https://${e}?go-get=1`,{signal:AbortSignal.timeout(t.goProbeTimeout)});if(!n.ok)return null;let r=await n.text(),i=/<meta\s+name="go-import"\s+content="([^"]+)"/.exec(r)||/<meta\s+content="([^"]+)"\s+name="go-import"/.exec(r);if(!i)return null;let[a,o,s]=i[1].trim().split(/\s+/);return o===`git`?{repoUrl:s,tagPrefix:e.length>a.length?`${e.substring(a.length+1)}/`:``}:null}catch{return null}}const ln=new Map;function un(e,t){let n=ln.get(e);if(n)return n;let r=(async()=>{try{let n=await cn(e,t);if(!n)return null;let{repoUrl:r,tagPrefix:i}=n,a=nn(i),o=await t.doFetch(`${r}/git-upload-pack`,{method:`POST`,headers:{"Git-Protocol":`version=2`,"Content-Type":`application/x-git-upload-pack-request`},body:a,signal:AbortSignal.timeout(t.goProbeTimeout)});return o.ok?rn(await o.arrayBuffer(),i):null}catch{return null}})();return ln.set(e,r),r}async function dn(e,t,n){let r=await un(e.replace(/\/v\d+$/,``),n);return r?an(r,t):null}function fn(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function pn(e,t,n){if(!t)return null;let r=t,i=e+1,a=1,o=null;for(;o===null;){let t=i+a;if(t>e+100){o=e+101;break}let s=await n(t);s?(r=s,i=t,a*=2):o=t}for(;i+1<o;){let e=Math.floor((i+o)/2),t=await n(e);t?(r=t,i=e):o=e}return r}function mn(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:F(o),Time:s,...c===e?{}:{newPath:c},sameMajorNew:F(i),sameMajorTime:a},t,null,e]}function hn(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=l?/^(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(i):/^replace\s+(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(i);if(e){let[,t,n,i]=e;!n.startsWith(`./`)&&!n.startsWith(`/`)&&!n.startsWith(`../`)&&(r[n]=i,a.add(t))}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 gn(e,n,r,i,a){let o=Zt(e),s=async(e,n)=>{try{let{stdout:r}=await Kt(`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=$t(e,n),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(Qt(e,o+1),a.goProbeTimeout)]);return l?mn(e,n,r,c?null:await pn(o,u,t=>s(Qt(e,t),a.goProbeTimeout)),l.Version,l.Time):fn(e,r,n)}async function _n(e,t,n,r,i,a){if(Yt(e,a))return gn(e,t,n,r,i);let o=Xt(e),s=Zt(e),c=async t=>{let n=Qt(e,t);return i.doFetch(`${i.goProxyUrl}/${Xt(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout)}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},l=$t(e,t),[u,d,f]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout)}),l?null:dn(e,s,i),l?null:c(s+1)]);if(!u.ok)return fn(e,n,t);let p,m;try{let e=await u.json();p=e.Version,m=e.Time}catch{return fn(e,n,t)}let h=null;return l||(d!==null&&d>s?d===s+1&&f?h=f:(h=await c(d),h||=await pn(s,f,c)):d===null&&f!==null&&(h=await pn(s,f,c))),mn(e,t,n,h,p,m)}function vn(e,t){let n=I(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 yn(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+${I(s)}\\s+)v${I(c)}`,`g`),`$1v${l}`);continue}if(o===`indirect`){n=n.replace(RegExp(`(${I(s)}) +v${I(c)}`,`g`),`$1 v${l}`);continue}let u=Zt(s),d=Number.parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=Qt(s,d);n=n.replace(RegExp(`${I(s)} +v${I(c)}`,`g`),`${e} v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)${I(s)}(/\\S+)?\\s*$`,`gm`),`$1${e}$2`)),r[s]=e}else n=n.replace(RegExp(`(${I(s)}) +v${I(c)}`,`g`),`$1 v${l}`);o!==`tool`&&(n=vn(n,s))}return[n,r]}function bn(e,t,n){if(!Object.keys(t).length)return;let r=p(`**/*.go`,{cwd:e});for(let i of r){let r=l(e,i),a=h(r,`utf8`),o=!1;for(let[e,n]of Object.entries(t)){let t=RegExp(`"${I(e)}(/|")`,`g`),r=a.replace(t,`"${n}$1`);r!==a&&(a=r,o=!0)}o&&n(r,a)}}function xn(e){let t=`https://${Sn(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[e,i,a,...o]=r;return n.pathname=`/${i}/${a}/${pt(t)}/${o.join(`/`)}`,n.toString()}else return t}function Sn(e){return/\/v[0-9]$/.test(e)?c(e):e}function Cn(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const wn=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function Tn(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:ct.test(o)}}function En(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function Dn(e,t,n,r,i){try{let a=await at(`${e}/repos/${t}/${n}/git/commits/${r}`,i);if(!a?.ok)return``;let o=await a.json();return o?.committer?.date||o?.author?.date||``}catch{return``}}function On(e,t){return ft(ue(F(e))?.version??F(e),t)}function kn(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?)${I(e)}@${I(r)}`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}function An(e){let t=e.replace(/\\/g,`/`);return/\.github\/workflows\/[^/]+\.(ya?ml)$/.test(t)}function jn(e){try{return g(e).filter(e=>/\.(ya?ml)$/.test(e)).map(t=>u(l(e,t)))}catch{return[]}}const Mn=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,Nn=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,Pn=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,Fn=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,In=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function Ln(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 Rn(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||!Mn.test(r)))return null;let{registry:i,namespace:a,repo:o}=Ln(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function zn(e){let t=Mn.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Bn(e,t){let n=zn(t);return n?ft(e,n.version,n.suffix):t}function Vn(e,t){let n=[];for(let r of e.matchAll(t)){let e=Rn(r[1]);e&&n.push({ref:e,match:r[1]})}return n}async function Hn(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=e=>{for(let t of e.results||[])r[t.name]=t.tag_last_pushed||t.last_updated||``},s=Array.from({length:10},(e,t)=>n.doFetch(a(t+1),{signal:AbortSignal.timeout(n.fetchTimeout)}).then(async e=>e?.ok?e.json():null).catch(()=>null)),c=await Promise.all(s),l=c[0];if(!l)return r;let u=Math.min(Math.ceil((l.count||0)/100),10);for(let e=0;e<u;e++)c[e]&&o(c[e]);return r}async function Un(e,t,n){let{registry:r,namespace:i,repo:a}=Ln(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await Hn(i,a,n),name:e},t,null,e]}function Wn(e,t,n){let r=zn(t);if(!r)return null;let i=pe(F(r.version))?.version;if(!i)return null;let a=i,o=``,s=``;for(let[t,i]of Object.entries(e)){let e=zn(t);if(!e||e.suffix!==r.suffix)continue;let c=pe(F(e.version))?.version;if(!c||!j(c))continue;let l=M(a,c);!l||!n.has(l)||he(c,a)&&(a=c,o=t,s=i)}if(!o||a===i)return null;let c=Bn(a,t);return c===t?null:{newTag:c,date:s}}function Gn(e,t,n){let r=e;for(let[e,i]of Object.entries(t)){let[t,a]=e.split(`\0`),o=i.oldOrig||i.old;for(let e of n)r=r.replace(e(I(a),I(o)),`$1${a}:${i.new}`)}return r}function Kn(e,t){return Gn(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}`,`g`)])}function qn(e,t){return Gn(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}`,`g`)])}function Jn(e,t){return Gn(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}`,`g`)])}const Yn=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function Xn(e){return/^docker-.+\.ya?ml$/.test(e)}function Zn(e){return/^Dockerfile(\..+)?$/.test(e)}function Qn(e){return Zn(e)||Xn(e)}function $n(e){return Zn(e)?Nn:Pn}function er(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}async function tr(e,t,n){let r=`${L(n.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`,i=await n.doFetch(r,{signal:AbortSignal.timeout(n.fetchTimeout),...Ze()});i?.ok||dt(i,r,e,n.cratesIoUrl);let a;try{a=await i.json()}catch{throw Error(`Invalid JSON from ${r}`)}let o=(a.versions||[]).filter(e=>!e.yanked),s={},c={};for(let e of o)e.num&&(s[e.num]={},c[e.num]=e.created_at||``);let l=o[0]?.num??``;return[{name:e,versions:s,time:c,"dist-tags":{latest:l}},t,null,e]}const nr=Be.map(e=>I(e)).join(`|`);function rr(e,t){let n=e;for(let[e,r]of Object.entries(t)){let[t,i]=e.split(`\0`),a=r.oldOrig||r.old,o=r.new,s=I(i),c=I(a);n=n.replace(RegExp(`^(\\s*${s}\\s*=\\s*["'])${c}(["'].*)$`,`gm`),`$1${o}$2`),n=n.replace(RegExp(`(\\s*${s}\\s*=\\s*\\{\\s*version\\s*=\\s*["'])${c}(["'])`,`g`),`$1${o}$2`),n=n.replace(RegExp(`(\\[(?:${nr})\\.${s}\\][^\\[]*?version\\s*=\\s*["'])${c}(["'])`,`g`),`$1${o}$2`)}return n}const ir={"package.json":`npm`,"pyproject.toml":`pypi`,"go.mod":`go`,"Cargo.toml":`cargo`},ar={"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-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 U(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.flatMap(e=>typeof e==`string`?He(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function or(e){for(let[t,{short:n}]of Object.entries(ar))if(t===e||n===e)return t;return``}const W=b({strict:!1,allowPositionals:!0,tokens:!0,options:ar}),G=W.values;for(let[e,t]of W.tokens.entries())if(t.kind===`option`&&t.value?.startsWith(`-`)){let n=or(t.value.substring(1)),r=W.tokens[e+1];G[t.name]=[!0],G[n]||(G[n]=[]),r?.kind===`positional`&&r.value?G[n].push(r.value):G[n].push(!0)}const K=W.values,sr=W.positionals,[cr,lr,q]=[`magenta`,`red`,`green`].map(e=>K[`no-color`]?String:t=>te(e,String(t))),J=Q(U(K.greatest)),ur=Q(U(K.prerelease)),dr=Q(U(K.release)),fr=Q(U(K.patch)),pr=Q(U(K.minor)),mr=Q(U(K[`allow-downgrade`])),hr=U(K.modes)||new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`]),gr=typeof K.forgeapi==`string`?L(K.forgeapi):`https://api.github.com`,_r=typeof K.pypiapi==`string`?L(K.pypiapi):`https://pypi.org`,vr=typeof K.jsrapi==`string`?L(K.jsrapi):`https://jsr.io`,yr=typeof K.goproxy==`string`?L(K.goproxy):qt(),br=typeof K.cargoapi==`string`?L(K.cargoapi):`https://crates.io`,xr=typeof K.dockerapi==`string`?L(K.dockerapi):`https://hub.docker.com`,Sr=Jt();function Cr(e){let t={};if(Array.isArray(e)){for(let n of e)if(typeof n==`string`){let[e,r]=n.split(`=`,2);e&&r&&Oe(r)&&(t[e]=r)}}else if(typeof e==`string`){let[n,r]=e.split(`=`,2);n&&r&&Oe(r)&&(t[n]=r)}return t}function wr(e,t){let n=l(t,e);try{return f(n),n}catch{}let r=c(t);return r===t?null:wr(e,r)}function Tr(e){try{return h(e,`utf8`)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}}function Y(e,t){t&&(e.date=t,e.age=Ne(t,{noAffix:!0}))}function Er(e,t,n){let r=qe(String(t));for(let[t,{date:i}]of Object.entries(e))Ue(i,r,n)||delete e[t]}function Dr(e){let t=0;for(let n of Object.keys(e))t+=Object.keys(e[n]).length;return t}function Or(e){console.error(`${We()} ${e}`)}const kr=typeof K.timeout==`string`?Number(K.timeout):0,X={fetchTimeout:kr||5e3,goProbeTimeout:kr?kr/2:2500,forgeApiUrl:gr,pypiApiUrl:_r,jsrApiUrl:vr,goProxyUrl:yr,cratesIoUrl:br,dockerApiUrl:xr,doFetch:(e,t)=>Qe(e,t,!!K.verbose,Or,cr,q,lr),verbose:!!K.verbose};async function Ar(e){console.info(K.json?JSON.stringify({message:e}):e),await jr()}async function jr(e,t){if(e){let t=e.message??String(e);K.json?console.info(JSON.stringify({error:t})):console.info(lr(t))}r===`win32`&&Number(o?.node?.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),n(t||e?1:0)}function Mr(e={}){for(let t of Object.keys(e))for(let n of Object.values(e[t]))typeof n.oldPrint==`string`&&(n.old=n.oldPrint),typeof n.newPrint==`string`&&(n.new=n.newPrint),typeof n.oldOrig==`string`&&!H(n.oldOrig)&&(n.old=t===`go`?Cn(n.oldOrig):n.oldOrig),t===`go`&&(n.new=Cn(n.new)),t===`actions`&&(n.old=F(n.old),n.new=F(n.new)),delete n.oldPrint,delete n.newPrint,delete n.oldOrig,delete n.date;let t=Dr(e);if(K.json){let t={results:{}};for(let n of Object.keys(e))for(let[r,i]of Object.entries(e[n])){let[e,a]=r.split(`\0`);t.results[n]||(t.results[n]={}),t.results[n][e]||(t.results[n][e]={}),t.results[n][e][a]=i}console.info(JSON.stringify(t))}else t&&console.info(Pr(e));return K[`error-on-outdated`]?t?2:0:K[`error-on-unchanged`]?t?0:2:0}function Z(e,t){r===`win32`&&v(e,0),y(e,t,r===`win32`?{flag:`r+`}:void 0)}const Nr=e=>x(e).length;function Pr(e){let t=Object.keys(e).filter(t=>Object.keys(e[t]).length>0),n=t.length>1,r=[n?[`NAME`,`MODE`,`OLD`,`NEW`,`AGE`,`INFO`]:[`NAME`,`OLD`,`NEW`,`AGE`,`INFO`]],i=new Set;for(let a of t)for(let[t,o]of Object.entries(e[a])){let[e,s]=t.split(`\0`),c=`${a}|${s}`;if(i.has(c))continue;i.add(c);let l=[];l.push(a===`go`?Sn(s):s),n&&l.push(a),l.push(Pe(o.old,o.new,lr)),l.push(Pe(o.new,o.old,q)),l.push(o.age||``),l.push(o.info||``),r.push(l)}return Ge(r,Nr)}function Fr(e,t){return RegExp(`^${I(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Ir(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Fr(e,n):e instanceof RegExp?e:Fr(e,n)}function Q(e){if(e instanceof Set){let t=new Set;for(let n of e)t.add(Ir(n,!0,!1));return t}return e}function Lr(e,t){let n=new Set;for(let t of e||[])n.add(Ir(t,!0,!0));for(let e of t||[])n.add(Ir(e,!1,!0));return n}function Rr(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>He(e)):[]}function zr(e){return fr===!0||P(e,fr)?new Set([`patch`]):pr===!0||P(e,pr)?new Set([`patch`,`minor`]):new Set([`patch`,`minor`,`major`])}function Br(e){return{useGreatest:typeof J==`boolean`?J:P(e,J),usePre:typeof ur==`boolean`?ur:P(e,ur),useRel:typeof dr==`boolean`?dr:P(e,dr),semvers:zr(e)}}function Vr(t){return t.replace(`${e()}/`,``).replace(`${e()}\\`,``)}function $(e,t,n,r,i){if(i===`engines`&&Le.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 Hr(t){let n=new Set;if(t)for(let e of t){let t;try{t=m(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}if(t?.isFile())n.add(u(e));else if(t?.isDirectory()){for(let t of Object.keys(ir)){let r=l(e,t),i=null;try{i=m(r)}catch{}i?.isFile()&&n.add(u(r))}try{for(let t of g(e))if(Qn(t)){let r=l(e,t);try{m(r).isFile()&&n.add(u(r))}catch{}}}catch{}let t=u(e).replace(/\\/g,`/`),r;r=t.endsWith(`.github/workflows`)?t:t.endsWith(`.github`)?l(t,`workflows`):l(t,`.github`,`workflows`);for(let e of jn(r))n.add(e)}else throw Error(`${e} is neither a file nor directory`)}else{for(let t of Object.keys(ir)){let r=wr(t,e());r&&n.add(u(r))}for(let t of Yn){let r=wr(t,e());r&&n.add(u(r))}try{for(let t of g(e()))if(Qn(t)&&!Yn.includes(t)){let r=l(e(),t);try{m(r).isFile()&&n.add(u(r))}catch{}}}catch{}let t=wr(l(`.github`,`workflows`),e());if(t)for(let e of jn(t))n.add(e)}return n}async function Ur(e){let t=[];for(let e of[`js`,`ts`,`mjs`,`mts`])t.push(`updates.config.${e}`);let n={};try{({default:n}=await Promise.any(t.map(async t=>{let n=l(e,...t.split(`/`)),r=d(n);try{f(n)}catch{throw Error(`File not found: ${t}`)}try{return await import(r.href)}catch(e){throw Error(`Unable to parse config file ${t}: ${e.message}`)}})))}catch(e){if(e instanceof AggregateError){let t=e.errors.filter(e=>e.message.startsWith(`Unable to parse`));if(t.length>0)throw t[0]}}return n}async function Wr(){for(let e of[a,i])e?._handle?.setBlocking?.(!0);Ye();let e=typeof K.sockets==`number`?K.sockets:96,{help:t,version:n,file:r,types:o,update:l,indirect:d,include:f,exclude:p,pin:m,cooldown:g}=K;t&&(a.write(`usage: updates [options] [files...]
|
|
2
|
+
import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,versions as o}from"node:process";import{basename as s,dirname as c,join as l,resolve as u}from"node:path";import{pathToFileURL as d}from"node:url";import{accessSync as f,globSync as p,lstatSync as m,readFileSync as h,readdirSync as g,statSync as _,truncateSync as v,writeFileSync as y}from"node:fs";import{parseArgs as b,promisify as x,stripVTControlCharacters as S,styleText as ee}from"node:util";import C from"node:dns";import{execFile as te}from"node:child_process";function ne(e){let t={},n=t,r=e.split(/\r?\n/);for(let e=0;e<r.length;e++){let i=r[e].replace(/#.*$/,``).trim();if(!i)continue;let a=/^\[([^\]]+)\]$/.exec(i);if(a){n=t;for(let e of oe(a[1]))(!(e in n)||typeof n[e]!=`object`||Array.isArray(n[e]))&&(n[e]={}),n=n[e];continue}let o=se(i);if(o<0)continue;let s=i.slice(0,o).trim(),c=i.slice(o+1).trim(),l=oe(s),u=n;for(let e=0;e<l.length-1;e++)(!(l[e]in u)||typeof u[l[e]]!=`object`||Array.isArray(u[l[e]]))&&(u[l[e]]={}),u=u[l[e]];let d=l[l.length-1];if(c.startsWith(`[`)&&!c.includes(`]`)){let t=[];w(c.slice(1),t);for(let n=e+1;n<r.length;n++){let i=r[n].replace(/#.*$/,``).trim();if(i){if(i.includes(`]`)){w(i.replace(/\].*$/,``),t),e=n;break}w(i,t)}}u[d]=t}else u[d]=T(c)}return t}function w(e,t){let n=e.trim();if(!n)return;let r=/"""([\s\S]*?)"""|'''([\s\S]*?)'''|"((?:[^"\\]|\\.)*)"|'([^']*)'|([^,\s\]]+)/g,i;for(;i=r.exec(n);){let e=i[1]??i[2]??(i[3]===void 0?void 0:E(i[3]))??i[4]??i[5];e!==void 0&&e!==``&&t.push(re(e))}}function T(e){if(e.startsWith(`[`)){let t=[];return w(e.slice(1,e.lastIndexOf(`]`)),t),t}return e.startsWith(`{`)?ie(e):e.startsWith(`"""`)?E(e.slice(3,e.lastIndexOf(`"""`))):e.startsWith(`'''`)?e.slice(3,e.lastIndexOf(`'''`)):e.startsWith(`"`)?E(e.slice(1,e.lastIndexOf(`"`))):e.startsWith(`'`)?e.slice(1,e.lastIndexOf(`'`)):re(e)}function re(e){return e===`true`?!0:e===`false`?!1:/^[+-]?\d+$/.test(e)||/^[+-]?\d+\.\d+$/.test(e)?Number(e):e}function ie(e){let t={},n=e.slice(1,e.lastIndexOf(`}`)).trim();if(!n)return t;for(let e of ae(n)){let n=e.indexOf(`=`);if(n<0)continue;let r=e.slice(0,n).trim().replace(/^["']|["']$/g,``);t[r]=T(e.slice(n+1).trim())}return t}function ae(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 oe(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 se(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 E(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`
|
|
3
|
+
`;case`r`:return`\r`;case`t`:return` `;case`u`:case`U`:return String.fromCodePoint(Number.parseInt(t.slice(1),16));default:return t}})}const ce=/^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*))?(?:\+[a-zA-Z0-9._-]+)?$/,D=new Map;function O(e){if(typeof e!=`string`)return null;let t=D.get(e);if(t!==void 0)return t;let n=ce.exec(e.trim());if(!n)return D.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 D.set(e,s),s}function le(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?1:0}function k(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function A(e,t){let n=k(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=le(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function j(e){return O(e)?.version??null}function ue(e){return O(e)}const de=new Map,fe=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function pe(e){if(typeof e!=`string`)return null;let t=de.get(e);if(t!==void 0)return t;let n=fe.exec(e);if(!n)return de.set(e,null),null;let r={version:`${n[1]||`0`}.${n[2]||`0`}.${n[3]||`0`}`};return de.set(e,r),r}function M(e,t){let n=O(e),r=O(t);if(!n||!r||n.version===r.version)return null;let i=A(n,r),a=i>0?n:r,o=i>0?r:n,s=a.prerelease.length>0;if(o.prerelease.length>0&&!s){if(!o.patch&&!o.minor)return`major`;if(k(o,a)===0)return o.minor&&!o.patch?`minor`:`patch`}let c=s?`pre`:``;return n.major===r.major?n.minor===r.minor?n.patch===r.patch?`prerelease`:`${c}patch`:`${c}minor`:`${c}major`}function me(e,t){let n=O(e),r=O(t);return!n||!r?!1:A(n,r)>0}function he(e,t){let n=O(e),r=O(t);return!n||!r?!1:A(n,r)>=0}function ge(e,t){let n=O(e),r=O(t);return!n||!r?!1:A(n,r)<0}function _e(e,t){let n=O(e),r=O(t);return!n||!r?!0:A(n,r)!==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=O(`${n}.${t[3]??`0`}.${t[4]??`0`}${t[5]||``}`);return r?{op:t[1]||`=`,semver:r}:null}function ye(e,t){let n=A(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 N(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 <${N(a+1,0,0)}`;let o=Number(n);return`>=${a}.${o}.${r===void 0?0:Number(r)}${i||``} <${N(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 <${N(a+1,0,0)}`;let s=Number(n);if(r===void 0)return a===0?`>=${a}.${s}.0 <${N(a,s+1,0)}`:`>=${a}.${s}.0 <${N(a+1,0,0)}`;let c=Number(r);return a===0?s===0?`>=${a}.${s}.${c}${o} <${N(a,s,c+1)}`:`>=${a}.${s}.${c}${o} <${N(a,s+1,0)}`:`>=${a}.${s}.${c}${o} <${N(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?`<${N(p+1,0,0)}`:`<${N(p,Number(o)+1,0)}`:`<=${p}.${Number(o)}.${Number(s)}${c||``}`,`>=${l}.${u}.${d}${f} ${m}`})}function Ce(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 <${N(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 <${N(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 <${N(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 <${N(o+1,0,0)}`}),e)}const we=new Map;function Te(e){let t=we.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=Ce(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 we.set(e,null),null;i.push(n)}if(i.length===0)return we.set(e,null),null;r.push(i)}let i=r.length?r:null;return we.set(e,i),i}function Ee(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 De(e,t){let n=O(e);if(!n)return!1;let r=Te(t);if(!r)return!1;for(let e of r)if(e.length===0||Ee(n,e))return!0;return!1}function Oe(e){if(typeof e!=`string`)return null;try{return Te(e)?e:null}catch{return null}}const ke=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],Ae={"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`},je={sec:`second`,min:`minute`};function Me(e){return e instanceof Date?e.getTime():typeof e==`string`?Date.parse(e):e}function Ne(e,{now:t,noAffix:n=!1,times:r=ke,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=Ae,longUnits:l=!1}={}){let u=Me(e),d=t===void 0?Date.now():Me(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&&je[t[2]]||t[2])+(m>1?`s`:``);break}}let g=`${m} ${h}`,_;return _=n?g:p?`in ${g}`:`${g} ago`,s?c[_]??_:_}function Pe(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&&!/\d/.test(e[t]);)t++;r=t}}let i=e.substring(r);return i?e.substring(0,r)+n(i):e}function Fe(e){let t=[];for(let n of e){let[e,r]=n.replaceAll(/\s+/g,``).split(/[<>=~]+/);e&&/^[0-9.a-z]+$/.test(r)&&t.push({name:e,version:r})}return t}const Ie=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],Le=[`node`,`deno`,`bun`],Re=[`project.dependencies`,`project.optional-dependencies`,`dependency-groups.dev`,`dependency-groups.lint`,`dependency-groups.test`],ze=[`deps`,`indirect`,`replace`,`tool`],Be=[`dependencies`,`dev-dependencies`,`build-dependencies`,`workspace.dependencies`];function P(e,t){for(let n of t instanceof Set?t:[])if(n.test(e))return!0;return!1}function Ve(e,t){return t.split(`.`).reduce((e,t)=>e?.[t]??null,e)}function He(e){return e.split(`,`).filter(Boolean)}function Ue(e,t,n){return!e||!t?!0:(n-Date.parse(e))/(24*3600*1e3)>=t}function We(){let e=new Date;return[e.getFullYear(),`-`,String(e.getMonth()+1).padStart(2,`0`),`-`,String(e.getDate()).padStart(2,`0`),` `,String(e.getHours()).padStart(2,`0`),`:`,String(e.getMinutes()).padStart(2,`0`),`:`,String(e.getSeconds()).padStart(2,`0`)].join(``)}function Ge(e,t,n=` `){let r=``,i=Array(e[0].length).fill(0);for(let n of e)for(let[e,r]of n.entries()){let n=t(r);n>i[e]&&(i[e]=n)}for(let[a,o]of e.entries()){for(let[e,a]of o.entries()){e>0&&(r+=n);let s=` `.repeat(i[e]-t(a));r+=a+(e===o.length-1?``:s)}a<e.length-1&&(r+=`
|
|
4
|
+
`)}return r}const Ke={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function qe(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Ke[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 Je(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}function Ye(){let e=new Map,t=new Map,n=C.lookup;C.lookup=function(r,...i){let a={},o;typeof i[0]==`function`?o=i[0]:(a=typeof i[0]==`number`?{family:i[0]}:i[0]||{},o=i[1]);let s=e.get(r);if(s){a.all?o(null,s):o(null,s[0].address,s[0].family);return}if(t.has(r)){t.get(r).push({options:a,callback:o});return}t.set(r,[{options:a,callback:o}]),n.call(C,r,{all:!0},(n,i)=>{let a=t.get(r);t.delete(r),!n&&i?.length&&e.set(r,i);for(let{options:e,callback:t}of a)n?t(n):e.all?t(null,i):t(null,i[0].address,i[0].family)})}}const Xe=`17.11.7`,F=e=>e.replace(/^v/,``),I=e=>e.replace(/[|\\{}()[\]^$+*?.-]/g,`\\$&`),L=e=>e.endsWith(`/`)?e.substring(0,e.length-1):e;function Ze(e,t){return{headers:{"user-agent":`updates/${Xe}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function Qe(e,t,n,r,i,a,o){n&&r&&i&&r(`${i(`fetch`)} ${e}`);try{let i=await fetch(e,t);return n&&r&&a&&o&&r(`${i.ok?a(i.status):o(i.status)} ${e}`),i}catch(t){throw Error(`Failed to fetch ${e}${t?.message?`: ${t.message}`:``}`)}}function R(e){let t=ue(e);return t?!!t.prerelease.length:!1}function $e(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}function et(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=z(e),s=z(t);if(!o||!s)return!0;let c=$e(e)||R(e),l=R(t);return c&&!l?me(s,o)||n:!l&&ge(s,o)?r===!0||a(i,r):!0}function z(e){try{return pe(e)?.version??``}catch{return``}}function tt(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s}){let c=z(n);if(!c)return c;i=$e(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 l=0,u=c;for(let n of t){let t=ue(n);if(!t?.version||t.prerelease.length&&(!i||a))continue;let c=t.version;if(s&&!De(c,s))continue;let d=M(u,c);if(!(!d||!r.has(d)))if(o||!(`time`in e))(he(z(c),u)||s&&!De(u,s))&&(u=c);else{let t=Date.parse(e.time[n]);t>=0&&t>l&&(u=c,l=t)}}return u||null}function nt(e,{mode:t,range:n,useGreatest:r,useRel:i,usePre:a,semvers:o,pinnedRange:s},{allowDowngrade:c,matchesAny:l,isGoPseudoVersion:u}){if(n===`*`||n.includes(`||`))return null;let d=[];if(t===`pypi`)d=Object.keys(e.releases).filter(e=>j(e));else if(t===`npm`||t===`cargo`)d=Object.keys(e.versions).filter(e=>j(e));else if(t===`go`){let t=z(n);if(!t)return null;let r=a||$e(n),s=e=>R(e)&&(!r||i),d={useRel:i,allowDowngrade:c,name:e.name,matchesAny:l},f=e.old||n,p=z(e.new);if(p&&!u(e.new)&&!s(e.new)){let n=M(t,p);if(n&&o.has(n)&&et(f,e.new,d))return e.new}let m=z(e.sameMajorNew);if(m&&!u(e.sameMajorNew)&&!s(e.sameMajorNew)){let n=M(t,m);if(n&&o.has(n)&&et(f,e.sameMajorNew,d))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}return null}let f=tt(e,d,{range:n,semvers:o,usePre:a,useRel:i,useGreatest:r,pinnedRange:s});if(!f)return null;if(r)return f;{let r=``,u=``;t===`pypi`?(u=e.info.version,r=z(e.info.version)):r=e[`dist-tags`].latest;let d=z(n),p=$e(n),m=R(f),h=R(r),g={useRel:i,allowDowngrade:c,name:e.name,matchesAny:l};if(!i&&a||p&&m)return f;if(p&&!m)return et(n,f,g)?f:null;let _=M(d,r);return _&&_!==`prerelease`&&!o.has(_.replace(/^pre/,``))||i&&R(r)?f:ge(r,d)&&!h?et(n,r,g)?r:null:!p&&h&&!a||s&&!De(r,s)?f:u||r}}const rt=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&rt.set(e.substring(0,t),e.substring(t+1))}function it(e){try{let t=rt.get(new URL(e).hostname);if(t)return t}catch{}return t.UPDATES_GITHUB_API_TOKEN||t.GITHUB_API_TOKEN||t.GH_TOKEN||t.GITHUB_TOKEN||t.HOMEBREW_GITHUB_API_TOKEN}function at(e,t){let n={signal:AbortSignal.timeout(t.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}},r=it(e);return r&&(n.headers={...n.headers,Authorization:`Bearer ${r}`}),t.doFetch(e,n)}function ot(e,t,n){let r=F(t);if(!j(r))return null;if(n){let n=t,i=F(t);for(let t of e){let e=F(t);j(e)&&(!n||me(e,i))&&(n=t,i=e)}if(_e(r,i))return n}else{let t=e.at(-1);if(!t)return null;let n=F(t);if(!j(n))return null;if(_e(r,n))return t}return null}function st(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 ct=/^[0-9a-f]{7,}$/i;function lt(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function ut(e,t,n,r){try{let i=await at(`${e}/repos/${t}/${n}/tags?per_page=100`,r);if(!i?.ok)return[];let a=lt(await i.json()),o=i.headers.get(`link`)||``,s=/<([^>]+)>;\s*rel="last"/.exec(o);if(s){let i=Number(new URL(s[1]).searchParams.get(`page`)),o=await Promise.all(Array.from({length:i-1},(i,a)=>at(`${e}/repos/${t}/${n}/tags?per_page=100&page=${a+2}`,r)));for(let e of o)e?.ok&&a.push(...lt(await e.json()))}return a}catch{return[]}}function dt(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 ft(e,t,n=``){let r=t.startsWith(`v`),i=F(e),a=F(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 pt(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function mt({repository:e,homepage:t,info:n},r,i){n&&(e=n.project_urls.repository||n.project_urls.Repository||n.project_urls.repo||n.project_urls.Repo||n.project_urls.source||n.project_urls.Source||n.project_urls[`source code`]||n.project_urls[`Source code`]||n.project_urls[`Source Code`]||n.project_urls.homepage||n.project_urls.Homepage||`https://pypi.org/project/${i}/`);let a=``;return r===`https://npm.pkg.github.com`?`https://github.com/${i.replace(/^@/,``)}`:(e&&(a=st(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${pt(a)}/${e.directory}`)),a||t||``)}function ht(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 gt(e){try{return ht(h(e,`utf-8`))}catch{return}}function _t(t){let n=e();for(;;){let e=l(n,t);try{return _(e),e}catch{}let r=c(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 yt(e,n={}){let i=r===`win32`,a=i?t.USERPROFILE:t.HOME,o=[{...n}],s=[];function c(e){if(!e||s.includes(e))return;let t=gt(e);t&&(o.push(t),s.push(e))}i||(c(l(`/etc`,e,`config`)),c(l(`/etc`,`${e}rc`))),a&&(c(l(a,`.config`,e,`config`)),c(l(a,`.config`,e)),c(l(a,`.${e}`,`config`)),c(l(a,`.${e}rc`))),c(_t(`.${e}rc`));let u=vt(`${e}_`);return u.config&&c(u.config),Object.assign({},...o,u,s.length?{configs:s,config:s[s.length-1]}:void 0)}const bt=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,xt=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,St=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,Ct=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,wt=`https://registry.npmjs.org`;let B=null;const Tt=new Map;function Et(){return B||yt(`npm`,{registry:wt})}function Dt(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function Ot(e,t){let n=t[`${e}:_authToken`]||t[`${e}/:_authToken`];if(n)return{token:Dt(n),type:`Bearer`};let r=t[`${e}:username`]||t[`${e}/:username`],i=t[`${e}:_password`]||t[`${e}/:_password`];if(r&&i){let e=Buffer.from(Dt(i),`base64`).toString(`utf8`);return{token:Buffer.from(`${r}:${e}`).toString(`base64`),type:`Basic`,username:r,password:e}}let a=t[`${e}:_auth`]||t[`${e}/:_auth`];if(a)return{token:Dt(a),type:`Basic`}}function V(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=Ot(`//${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:Dt(i),type:`Basic`}}function kt(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function At(e,t){B||=Et();let n=e.startsWith(`@`)?(/@[a-z0-9][\w.-]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=Tt.get(r);if(i)return i;let a;if(!e.startsWith(`@`))a={auth:V(t,B),registry:t};else{let e=L(kt(n,B));if(e!==t)try{let n=V(e,B);a=n?.token?{auth:n,registry:e}:{auth:V(t,B),registry:t}}catch{a={auth:V(t,B),registry:t}}else a={auth:V(t,B),registry:t}}return Tt.set(r,a),a}function jt(e,t,n){B||=Et();let r=L((typeof n.registry==`string`?n.registry:!1)||t.registry||B.registry||wt);return{...At(e,r),originalRegistry:r}}function Mt(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const Nt=new Map,Pt=new Map,Ft=new Map;async function It(e,t,n,r,i){let{auth:a,registry:o}=jt(e,n,r),c=Mt(o,t===`resolutions`?s(e):e),l=Nt.get(c);if(!l){let t=Ze(a?.type,a?.token);t.headers={...t.headers,accept:`application/vnd.npm.install-v1+json`},l=i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...t}).then(t=>{if(t?.ok)return t.json();dt(t,c,e,o)}).catch(e=>{throw Nt.delete(c),e}),Nt.set(c,l)}return[await l,t,o,e]}async function Lt(e,t,n,r,i){let{auth:a,registry:o}=jt(e,n,r),s=Mt(o,e,t),c=Pt.get(s);if(c)return c;let l=(async()=>{try{let n=Ze(a?.type,a?.token),r=await i.doFetch(s,{signal:AbortSignal.timeout(i.fetchTimeout),...n});if(!r?.ok)return{};let c=await r.json(),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=Mt(o,e),a=Ft.get(r);a||(a=i.doFetch(r,{signal:AbortSignal.timeout(i.fetchTimeout),...n}).then(e=>e?.ok?e.json():null).catch(()=>(Ft.delete(r),null)),Ft.set(r,a)),l=(await a)?.time?.[t]||``}return{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})();return Pt.set(s,l),l}function H(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Rt(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function zt(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 Bt(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 n.doFetch(o,{signal:AbortSignal.timeout(n.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}});if(s?.ok){let r=await s.json(),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]}dt(s,o,e,`JSR`)}function Vt(e,t){let n=e;for(let[e,{old:r,oldOrig:i}]of Object.entries(t)){let[a,o]=e.split(`\0`),s=i||r;if(a===`packageManager`){let r=RegExp(`"${I(a)}": *"${o}@${I(s)}"`,`g`);n=n.replace(r,`"${a}": "${o}@${t[e].new}"`)}else{let r=RegExp(`"${I(o)}": *"${I(s)}"`,`g`);n=n.replace(r,`"${o}": "${t[e].new}"`)}}return n}function Ht(e,t,n){let r=e.replace(Ct,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 Ut(e){let t=e.match(St);return t?.length===1?e.replace(St,z(t[0])):e}async function Wt(e,t,n){try{let r=await at(`${n.forgeApiUrl}/repos/${e}/${t}/commits`,n);if(!r?.ok)return{hash:``,commit:{}};let{sha:i,commit:a}=(await r.json())[0];return{hash:i,commit:a}}catch{return{hash:``,commit:{}}}}async function Gt(e,t,n){return(await ut(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function Kt(e,t,n,r){let i=t.old.replace(bt,``),[a,o,s,c]=xt.exec(i)||[];if(!o||!s||!c)return null;if(ct.test(c)){let{hash:n,commit:i}=await Wt(o,s,r);if(!n)return null;let a=i?.committer?.date??i?.author?.date,l=n.substring(0,c.length);if(c!==l)return{key:e,newRange:t.old.replace(c,l),user:o,repo:s,oldRef:c,newRef:l,newDate:a}}else{let t=ot(await Gt(o,s,r),c,n);if(t)return{key:e,newRange:t,user:o,repo:s,oldRef:c,newRef:t}}return null}async function qt(e,t,n){let r=`${n.pypiApiUrl}/pypi/${e}/json`,i=await n.doFetch(r,{signal:AbortSignal.timeout(n.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}});if(i?.ok)return[await i.json(),t,null,e];dt(i,r,e,n.pypiApiUrl)}function Jt(e,t){let n=e;for(let[e,{old:r,oldOrig:i}]of Object.entries(t)){let[a,o]=e.split(`\0`),s=i||r;n=n.replace(RegExp(`("${I(o)} *[<>=~]+ *)${I(s)}(")`,`g`),(n,r,i)=>`${r}${t[e].new}${i}`)}return n}const Yt=x(te);function Xt(){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 e.endsWith(`/`)?e.substring(0,e.length-1):e}return`https://proxy.golang.org`}function Zt(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function Qt(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function $t(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}function en(e){let t=/\/v(\d+)$/.exec(e);return t?Number.parseInt(t[1]):1}function tn(e,t){return t<=1?e.replace(/\/v\d+$/,``):`${e.replace(/\/v\d+$/,``)}/v${t}`}function nn(e,t){return t===`indirect`||e.startsWith(`golang.org/x/`)}function rn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function an(e){return`${(e.length+4).toString(16).padStart(4,`0`)}${e}`}function on(e){let t=[an(`command=ls-refs
|
|
5
|
+
`),an(`object-format=sha1
|
|
6
|
+
`),`0001`,an(`peel
|
|
7
|
+
`),an(`ref-prefix refs/tags/${e}v\n`),`0000`];return new Blob([t.join(``)])}function sn(e,t){let n=new TextDecoder().decode(e),r=[],i=`refs/tags/${t}`,a=0;for(;a<n.length&&!n.startsWith(`0000`,a);){let e=n.substring(a,a+4),t=Number.parseInt(e,16);if(t===0||Number.isNaN(t))break;let o=n.substring(a+4,a+t);a+=t;let s=o.indexOf(` `);if(s===-1)continue;let c=o.substring(s+1).trim();if(c.endsWith(`^{}`)||!c.startsWith(i))continue;let l=c.substring(i.length);l&&r.push(l)}return r}function cn(e,t){let n=t;for(let t of e){let e=/^v(\d+)\./.exec(t);if(e){let t=Number.parseInt(e[1]);t>n&&(n=t)}}return n}function ln(e){return e?`${e.substring(1)}/`:``}function un(e){let t=/^((github\.com|gitea\.com|codeberg\.org|gitlab\.com|bitbucket\.org|git\.sr\.ht)\/[^/]+\/[^/]+)(\/.*)?$/.exec(e);if(t)return{repoUrl:`https://${t[1]}.git`,tagPrefix:ln(t[3])};let n=/^golang\.org\/x\/([^/]+)(\/.*)?$/.exec(e);if(n)return{repoUrl:`https://go.googlesource.com/${n[1]}`,tagPrefix:ln(n[2])};let r=/^gopkg\.in\/(?:([^/]+)\/)?([^.]+)\.v\d+(\/.*)?$/.exec(e);return r?{repoUrl:`https://github.com/${r[1]||`go-${r[2]}`}/${r[2]}.git`,tagPrefix:ln(r[3])}:null}async function dn(e,t){let n=un(e);if(n)return n;try{let n=await t.doFetch(`https://${e}?go-get=1`,{signal:AbortSignal.timeout(t.goProbeTimeout)});if(!n.ok)return null;let r=await n.text(),i=/<meta\s+name="go-import"\s+content="([^"]+)"/.exec(r)||/<meta\s+content="([^"]+)"\s+name="go-import"/.exec(r);if(!i)return null;let[a,o,s]=i[1].trim().split(/\s+/);return o===`git`?{repoUrl:s,tagPrefix:e.length>a.length?`${e.substring(a.length+1)}/`:``}:null}catch{return null}}const fn=new Map;function pn(e,t){let n=fn.get(e);if(n)return n;let r=(async()=>{try{let n=await dn(e,t);if(!n)return null;let{repoUrl:r,tagPrefix:i}=n,a=on(i),o=await t.doFetch(`${r}/git-upload-pack`,{method:`POST`,headers:{"Git-Protocol":`version=2`,"Content-Type":`application/x-git-upload-pack-request`},body:a,signal:AbortSignal.timeout(t.goProbeTimeout)});return o.ok?sn(await o.arrayBuffer(),i):null}catch{return null}})();return fn.set(e,r),r}async function mn(e,t,n){let r=await pn(e.replace(/\/v\d+$/,``),n);return r?cn(r,t):null}function hn(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function gn(e,t,n){if(!t)return null;let r=t,i=e+1,a=1,o=null;for(;o===null;){let t=i+a;if(t>e+100){o=e+101;break}let s=await n(t);s?(r=s,i=t,a*=2):o=t}for(;i+1<o;){let e=Math.floor((i+o)/2),t=await n(e);t?(r=t,i=e):o=e}return r}function _n(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:F(o),Time:s,...c===e?{}:{newPath:c},sameMajorNew:F(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=l?/^(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(i):/^replace\s+(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(i);if(e){let[,t,n,i]=e;!n.startsWith(`./`)&&!n.startsWith(`/`)&&!n.startsWith(`../`)&&(r[n]=i,a.add(t))}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 yn(e,n,r,i,a){let o=en(e),s=async(e,n)=>{try{let{stdout:r}=await Yt(`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=nn(e,n),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(tn(e,o+1),a.goProbeTimeout)]);return l?_n(e,n,r,c?null:await gn(o,u,t=>s(tn(e,t),a.goProbeTimeout)),l.Version,l.Time):hn(e,r,n)}async function bn(e,t,n,r,i,a){if(Qt(e,a))return yn(e,t,n,r,i);let o=$t(e),s=en(e),c=async t=>{let n=tn(e,t);return i.doFetch(`${i.goProxyUrl}/${$t(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout)}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},l=nn(e,t),[u,d,f]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout)}),l?null:mn(e,s,i),l?null:c(s+1)]);if(!u.ok)return hn(e,n,t);let p,m;try{let e=await u.json();p=e.Version,m=e.Time}catch{return hn(e,n,t)}let h=null;return l||(d!==null&&d>s?d===s+1&&f?h=f:(h=await c(d),h||=await gn(s,f,c)):d===null&&f!==null&&(h=await gn(s,f,c))),_n(e,t,n,h,p,m)}function xn(e,t){let n=I(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 Sn(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+${I(s)}\\s+)v${I(c)}`,`g`),`$1v${l}`);continue}if(o===`indirect`){n=n.replace(RegExp(`(${I(s)}) +v${I(c)}`,`g`),`$1 v${l}`);continue}let u=en(s),d=Number.parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=tn(s,d);n=n.replace(RegExp(`${I(s)} +v${I(c)}`,`g`),`${e} v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)${I(s)}(/\\S+)?\\s*$`,`gm`),`$1${e}$2`)),r[s]=e}else n=n.replace(RegExp(`(${I(s)}) +v${I(c)}`,`g`),`$1 v${l}`);o!==`tool`&&(n=xn(n,s))}return[n,r]}function Cn(e,t,n){if(!Object.keys(t).length)return;let r=p(`**/*.go`,{cwd:e});for(let i of r){let r=l(e,i),a=h(r,`utf8`),o=!1;for(let[e,n]of Object.entries(t)){let t=RegExp(`"${I(e)}(/|")`,`g`),r=a.replace(t,`"${n}$1`);r!==a&&(a=r,o=!0)}o&&n(r,a)}}function wn(e){let t=`https://${Tn(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[e,i,a,...o]=r;return n.pathname=`/${i}/${a}/${pt(t)}/${o.join(`/`)}`,n.toString()}else return t}function Tn(e){return/\/v[0-9]$/.test(e)?c(e):e}function En(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const Dn=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function On(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:ct.test(o)}}function kn(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function An(e,t,n,r,i){try{let a=await at(`${e}/repos/${t}/${n}/git/commits/${r}`,i);if(!a?.ok)return``;let o=await a.json();return o?.committer?.date||o?.author?.date||``}catch{return``}}function jn(e,t){return ft(ue(F(e))?.version??F(e),t)}function Mn(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?)${I(e)}@${I(r)}`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}function Nn(e){let t=e.replace(/\\/g,`/`);return/\.github\/workflows\/[^/]+\.(ya?ml)$/.test(t)}function Pn(e){try{return g(e).filter(e=>/\.(ya?ml)$/.test(e)).map(t=>u(l(e,t)))}catch{return[]}}const Fn=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,In=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,Ln=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,Rn=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,zn=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function Bn(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 Vn(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||!Fn.test(r)))return null;let{registry:i,namespace:a,repo:o}=Bn(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function Hn(e){let t=Fn.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Un(e,t){let n=Hn(t);return n?ft(e,n.version,n.suffix):t}function Wn(e,t){let n=[];for(let r of e.matchAll(t)){let e=Vn(r[1]);e&&n.push({ref:e,match:r[1]})}return n}async function Gn(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=e=>{for(let t of e.results||[])r[t.name]=t.tag_last_pushed||t.last_updated||``},s=Array.from({length:10},(e,t)=>n.doFetch(a(t+1),{signal:AbortSignal.timeout(n.fetchTimeout)}).then(async e=>e?.ok?e.json():null).catch(()=>null)),c=await Promise.all(s),l=c[0];if(!l)return r;let u=Math.min(Math.ceil((l.count||0)/100),10);for(let e=0;e<u;e++)c[e]&&o(c[e]);return r}async function Kn(e,t,n){let{registry:r,namespace:i,repo:a}=Bn(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await Gn(i,a,n),name:e},t,null,e]}function qn(e,t,n){let r=Hn(t);if(!r)return null;let i=pe(F(r.version))?.version;if(!i)return null;let a=i,o=``,s=``;for(let[t,i]of Object.entries(e)){let e=Hn(t);if(!e||e.suffix!==r.suffix)continue;let c=pe(F(e.version))?.version;if(!c||!j(c))continue;let l=M(a,c);!l||!n.has(l)||he(c,a)&&(a=c,o=t,s=i)}if(!o||a===i)return null;let c=Un(a,t);return c===t?null:{newTag:c,date:s}}function Jn(e,t,n){let r=e;for(let[e,i]of Object.entries(t)){let[t,a]=e.split(`\0`),o=i.oldOrig||i.old;for(let e of n)r=r.replace(e(I(a),I(o)),`$1${a}:${i.new}`)}return r}function Yn(e,t){return Jn(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}`,`g`)])}function Xn(e,t){return Jn(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}`,`g`)])}function Zn(e,t){return Jn(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}`,`g`)])}const Qn=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function $n(e){return/^docker-.+\.ya?ml$/.test(e)}function er(e){return/^Dockerfile(\..+)?$/.test(e)}function tr(e){return er(e)||$n(e)}function nr(e){return er(e)?In:Ln}function rr(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}async function ir(e,t,n){let r=`${L(n.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`,i=await n.doFetch(r,{signal:AbortSignal.timeout(n.fetchTimeout),...Ze()});i?.ok||dt(i,r,e,n.cratesIoUrl);let a;try{a=await i.json()}catch{throw Error(`Invalid JSON from ${r}`)}let o=(a.versions||[]).filter(e=>!e.yanked),s={},c={};for(let e of o)e.num&&(s[e.num]={},c[e.num]=e.created_at||``);let l=o[0]?.num??``;return[{name:e,versions:s,time:c,"dist-tags":{latest:l}},t,null,e]}const ar=Be.map(e=>I(e)).join(`|`);function or(e,t){let n=e;for(let[e,r]of Object.entries(t)){let[t,i]=e.split(`\0`),a=r.oldOrig||r.old,o=r.new,s=I(i),c=I(a);n=n.replace(RegExp(`^(\\s*${s}\\s*=\\s*["'])${c}(["'].*)$`,`gm`),`$1${o}$2`),n=n.replace(RegExp(`(\\s*${s}\\s*=\\s*\\{\\s*version\\s*=\\s*["'])${c}(["'])`,`g`),`$1${o}$2`),n=n.replace(RegExp(`(\\[(?:${ar})\\.${s}\\][^\\[]*?version\\s*=\\s*["'])${c}(["'])`,`g`),`$1${o}$2`)}return n}const sr={"package.json":`npm`,"pyproject.toml":`pypi`,"go.mod":`go`,"Cargo.toml":`cargo`},cr={"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-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 U(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.flatMap(e=>typeof e==`string`?He(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function lr(e){for(let[t,{short:n}]of Object.entries(cr))if(t===e||n===e)return t;return``}const W=b({strict:!1,allowPositionals:!0,tokens:!0,options:cr}),G=W.values;for(let[e,t]of W.tokens.entries())if(t.kind===`option`&&t.value?.startsWith(`-`)){let n=lr(t.value.substring(1)),r=W.tokens[e+1];G[t.name]=[!0],G[n]||(G[n]=[]),r?.kind===`positional`&&r.value?G[n].push(r.value):G[n].push(!0)}const K=W.values,ur=W.positionals,[dr,fr,q]=[`magenta`,`red`,`green`].map(e=>K[`no-color`]?String:t=>ee(e,String(t))),J=Q(U(K.greatest)),pr=Q(U(K.prerelease)),mr=Q(U(K.release)),hr=Q(U(K.patch)),gr=Q(U(K.minor)),_r=Q(U(K[`allow-downgrade`])),vr=U(K.modes)||new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`]),yr=typeof K.forgeapi==`string`?L(K.forgeapi):`https://api.github.com`,br=typeof K.pypiapi==`string`?L(K.pypiapi):`https://pypi.org`,xr=typeof K.jsrapi==`string`?L(K.jsrapi):`https://jsr.io`,Sr=typeof K.goproxy==`string`?L(K.goproxy):Xt(),Cr=typeof K.cargoapi==`string`?L(K.cargoapi):`https://crates.io`,wr=typeof K.dockerapi==`string`?L(K.dockerapi):`https://hub.docker.com`,Tr=Zt();function Er(e){let t={};if(Array.isArray(e)){for(let n of e)if(typeof n==`string`){let[e,r]=n.split(`=`,2);e&&r&&Oe(r)&&(t[e]=r)}}else if(typeof e==`string`){let[n,r]=e.split(`=`,2);n&&r&&Oe(r)&&(t[n]=r)}return t}function Dr(e,t){let n=l(t,e);try{return f(n),n}catch{}let r=c(t);return r===t?null:Dr(e,r)}function Or(e){try{return h(e,`utf8`)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}}function Y(e,t){t&&(e.date=t,e.age=Ne(t,{noAffix:!0}))}function kr(e,t,n){let r=qe(String(t));for(let[t,{date:i}]of Object.entries(e))Ue(i,r,n)||delete e[t]}function Ar(e){let t=0;for(let n of Object.keys(e))t+=Object.keys(e[n]).length;return t}function jr(e){console.error(`${We()} ${e}`)}const Mr=typeof K.timeout==`string`?Number(K.timeout):0,X={fetchTimeout:Mr||5e3,goProbeTimeout:Mr?Mr/2:2500,forgeApiUrl:yr,pypiApiUrl:br,jsrApiUrl:xr,goProxyUrl:Sr,cratesIoUrl:Cr,dockerApiUrl:wr,doFetch:(e,t)=>Qe(e,t,!!K.verbose,jr,dr,q,fr),verbose:!!K.verbose};async function Nr(e){console.info(K.json?JSON.stringify({message:e}):e),await Pr()}async function Pr(e,t){if(e){let t=e.message??String(e);K.json?console.info(JSON.stringify({error:t})):console.info(fr(t))}r===`win32`&&Number(o?.node?.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),n(t||e?1:0)}function Fr(e={}){for(let t of Object.keys(e))for(let n of Object.values(e[t]))typeof n.oldPrint==`string`&&(n.old=n.oldPrint),typeof n.newPrint==`string`&&(n.new=n.newPrint),typeof n.oldOrig==`string`&&!H(n.oldOrig)&&(n.old=t===`go`?En(n.oldOrig):n.oldOrig),t===`go`&&(n.new=En(n.new)),t===`actions`&&(n.old=F(n.old),n.new=F(n.new)),delete n.oldPrint,delete n.newPrint,delete n.oldOrig,delete n.date;let t=Ar(e);if(K.json){let t={results:{}};for(let n of Object.keys(e))for(let[r,i]of Object.entries(e[n])){let[e,a]=r.split(`\0`);t.results[n]||(t.results[n]={}),t.results[n][e]||(t.results[n][e]={}),t.results[n][e][a]=i}console.info(JSON.stringify(t))}else t&&console.info(Lr(e));return K[`error-on-outdated`]?t?2:0:K[`error-on-unchanged`]?t?0:2:0}function Z(e,t){r===`win32`&&v(e,0),y(e,t,r===`win32`?{flag:`r+`}:void 0)}const Ir=e=>S(e).length;function Lr(e){let t=Object.keys(e).filter(t=>Object.keys(e[t]).length>0),n=t.length>1,r=[n?[`NAME`,`MODE`,`OLD`,`NEW`,`AGE`,`INFO`]:[`NAME`,`OLD`,`NEW`,`AGE`,`INFO`]],i=new Set;for(let a of t)for(let[t,o]of Object.entries(e[a])){let[e,s]=t.split(`\0`),c=`${a}|${s}`;if(i.has(c))continue;i.add(c);let l=[];l.push(a===`go`?Tn(s):s),n&&l.push(a),l.push(Pe(o.old,o.new,fr)),l.push(Pe(o.new,o.old,q)),l.push(o.age||``),l.push(o.info||``),r.push(l)}return Ge(r,Ir)}function Rr(e,t){return RegExp(`^${I(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function zr(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Rr(e,n):e instanceof RegExp?e:Rr(e,n)}function Q(e){if(e instanceof Set){let t=new Set;for(let n of e)t.add(zr(n,!0,!1));return t}return e}function Br(e,t){let n=new Set;for(let t of e||[])n.add(zr(t,!0,!0));for(let e of t||[])n.add(zr(e,!1,!0));return n}function Vr(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>He(e)):[]}function Hr(e){return hr===!0||P(e,hr)?new Set([`patch`]):gr===!0||P(e,gr)?new Set([`patch`,`minor`]):new Set([`patch`,`minor`,`major`])}function Ur(e){return{useGreatest:typeof J==`boolean`?J:P(e,J),usePre:typeof pr==`boolean`?pr:P(e,pr),useRel:typeof mr==`boolean`?mr:P(e,mr),semvers:Hr(e)}}function Wr(t){return t.replace(`${e()}/`,``).replace(`${e()}\\`,``)}function $(e,t,n,r,i){if(i===`engines`&&Le.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 Gr(t){let n=new Set;if(t)for(let e of t){let t;try{t=m(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}if(t?.isFile())n.add(u(e));else if(t?.isDirectory()){for(let t of Object.keys(sr)){let r=l(e,t),i=null;try{i=m(r)}catch{}i?.isFile()&&n.add(u(r))}try{for(let t of g(e))if(tr(t)){let r=l(e,t);try{m(r).isFile()&&n.add(u(r))}catch{}}}catch{}let t=u(e).replace(/\\/g,`/`),r;r=t.endsWith(`.github/workflows`)?t:t.endsWith(`.github`)?l(t,`workflows`):l(t,`.github`,`workflows`);for(let e of Pn(r))n.add(e)}else throw Error(`${e} is neither a file nor directory`)}else{for(let t of Object.keys(sr)){let r=Dr(t,e());r&&n.add(u(r))}for(let t of Qn){let r=Dr(t,e());r&&n.add(u(r))}try{for(let t of g(e()))if(tr(t)&&!Qn.includes(t)){let r=l(e(),t);try{m(r).isFile()&&n.add(u(r))}catch{}}}catch{}let t=Dr(l(`.github`,`workflows`),e());if(t)for(let e of Pn(t))n.add(e)}return n}async function Kr(e){let t=[];for(let e of[`js`,`ts`,`mjs`,`mts`])t.push(`updates.config.${e}`);let n={};try{({default:n}=await Promise.any(t.map(async t=>{let n=l(e,...t.split(`/`)),r=d(n);try{f(n)}catch{throw Error(`File not found: ${t}`)}try{return await import(r.href)}catch(e){throw Error(`Unable to parse config file ${t}: ${e.message}`)}})))}catch(e){if(e instanceof AggregateError){let t=e.errors.filter(e=>e.message.startsWith(`Unable to parse`));if(t.length>0)throw t[0]}}return n}async function qr(){for(let e of[a,i])e?._handle?.setBlocking?.(!0);Ye();let e=typeof K.sockets==`number`?K.sockets:96,{help:t,version:n,file:r,types:o,update:l,indirect:d,include:f,exclude:p,pin:m,cooldown:g}=K;t&&(a.write(`usage: updates [options] [files...]
|
|
8
8
|
|
|
9
9
|
Options:
|
|
10
10
|
-u, --update Update versions and write dependency file
|
|
@@ -46,4 +46,4 @@ import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,version
|
|
|
46
46
|
$ updates -f .github
|
|
47
47
|
$ updates -f Dockerfile
|
|
48
48
|
$ updates -f docker-compose.yml
|
|
49
|
-
`),await
|
|
49
|
+
`),await Pr()),n&&(console.info(Xe),await Pr());let _={},v={},y={},b={},x=Date.now(),S=0,ee=U(r),C=ee instanceof Set?ee:ur.length?new Set:!1;if(C instanceof Set)for(let e of ur)C.add(e);let te=Gr(C),w={},T={},re=Vr(f),ie=Vr(p),ae=Er(m),oe=Br(re,[]),se=Br(ie,[]),E=[],ce=[],D={};function O(e,t,n){_.docker||={};for(let r of n)for(let{ref:n}of Wn(e,r)){if(!$(n.fullImage,`docker`,oe,se,`docker`))continue;let e=`${t}${n.fullImage}`;if(_.docker[e])continue;let r=Hn(n.tag);r&&(_.docker[e]={old:r.version,oldOrig:n.tag},ce.push({key:e,fullImage:n.fullImage,ref:n}))}}for(let e of te){if(Nn(e)){let t=vr.has(`actions`),n=vr.has(`docker`);if(!t&&!n)continue;let r=Or(e),i=Wr(e);if(w[i]={absPath:e,content:r},t){_.actions||={};let e=Array.from(r.matchAll(Dn),e=>On(e[1])).filter(e=>e!==null);for(let t of e){if(!$(t.name,`actions`,oe,se,`actions`))continue;let e=`${i}${t.name}`;_.actions[e]||(_.actions[e]={old:t.ref},E.push({...t,key:e,apiUrl:kn(t.host,yr)}))}}n&&(T[i]={absPath:e,content:r,fileType:`workflow`},O(r,i,[Ln,Rn,zn]));continue}let t=s(e);if(tr(t)){if(!vr.has(`docker`))continue;let n=Or(e),r=Wr(e);T[r]={absPath:e,content:n,fileType:er(t)?`dockerfile`:`compose`},O(n,r,[nr(t)]);continue}let n=sr[t];if(!vr.has(n))continue;b[n]=e,_[n]||(_[n]={});let r=c(u(e)),i=await Kr(r),a=Br(re,i?.include??[]),l=Br(ie,i?.exclude??[]),f={...i?.pin,...ae},p=[];Array.isArray(o)?p=o.filter(e=>typeof e==`string`):`types`in i&&Array.isArray(i.types)?p=i.types:n===`npm`?p=Ie:n===`pypi`?p=Array.from(Re):n===`go`?p=d?Array.from(ze):ze.filter(e=>e!==`indirect`):n===`cargo`&&(p=Array.from(Be));let m={};y[n]=Or(e);try{if(n===`npm`)m=JSON.parse(y[n]);else if(n===`pypi`||n===`cargo`)m=ne(y[n]);else if(n===`go`){let e=vn(y[n]);m.deps=e.deps,m.indirect=e.indirect,m.replace=e.replace,m.tool=e.tool}}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}for(let e of p){let t;if(t=n===`npm`||n===`go`?m[e]||{}:Ve(m,e)||{},Array.isArray(t)&&n===`pypi`)for(let{name:r,version:i}of Fe(t))$(r,n,a,l,e)&&(_[n][`${e}${r}`]={old:Ut(i),oldOrig:i});else if(typeof t==`string`){let[r,i]=t.split(`@`);$(r,n,a,l,e)&&(_[n][`${e}${r}`]={old:Ut(i),oldOrig:i})}else for(let[r,i]of Object.entries(t))if(n===`cargo`&&typeof i==`object`&&i&&`version`in i&&!(`git`in i)&&!(`path`in i)&&$(r,n,a,l,e)){let t=String(i.version);Oe(t)&&(_[n][`${e}${r}`]={old:Ut(t),oldOrig:t})}else if(n===`npm`&&H(i)&&$(r,n,a,l,e)){let t=zt(i,r);_[n][`${e}${r}`]={old:t.version,oldOrig:i}}else n!==`go`&&Oe(i)&&$(r,n,a,l,e)?_[n][`${e}${r}`]={old:Ut(i),oldOrig:i}:n===`npm`&&Rt(i)&&$(r,n,a,l,e)?_[n][`${e}${r}`]={old:`0.0.0`,oldOrig:i}:n===`npm`&&!H(i)&&$(r,n,a,l,e)?v[`${e}${r}`]={old:i}:n===`go`&&$(r,n,a,l,e)&&(_[n][`${e}${r}`]={old:En(i),oldOrig:F(i)})}S+=Object.keys(_[n]).length+Object.keys(v).length,D[n]={config:i,projectDir:r,pin:f}}if(_.actions&&(S+=Object.keys(_.actions).length),_.docker&&(S+=Object.keys(_.docker).length),S===0)return Nr(`No dependencies found, nothing to do.`);let le=[];for(let t of Object.keys(D)){if(!_[t]||!Object.keys(_[t]).length&&!Object.keys(v).length)continue;let{config:n,projectDir:r,pin:i}=D[t];le.push((async()=>{let a=new Map;await Je(Object.keys(_[t]),async e=>{let[o,s]=e.split(`\0`),c=null;if(t===`npm`){let{oldOrig:r}=_[t][e];if(r&&H(r))c=await Bt(s,o,X);else if(r&&Rt(r))try{c=await It(s,o,n,K,X)}catch{delete _[t][e];return}else c=await It(s,o,n,K,X)}else c=t===`go`?await bn(s,o,_[t][e].oldOrig||_[t][e].old,r,X,Tr):t===`cargo`?await ir(s,o,X):await qt(s,o,X);if(!c)return;let[l,,u]=c;if(l?.error)throw Error(l.error);let{useGreatest:d,usePre:f,useRel:p,semvers:m}=Ur(l.name),h=_[t][e].old,g=_[t][e].oldOrig,v=i[s],y=nt(l,{usePre:f,useRel:p,useGreatest:d,semvers:m,range:h,mode:t,pinnedRange:v},{allowDowngrade:_r,matchesAny:P,isGoPseudoVersion:rn}),b=``;if([`go`,`pypi`,`cargo`].includes(t)&&y)b=y;else if(y)if(g&&Rt(g))b=String(Et()[`save-exact`])===`true`?y:`^${y}`;else if(g&&H(g))if(g.startsWith(`npm:@jsr/`)){let e=/^(npm:@jsr\/[^@]+@)(.+)$/.exec(g);e&&(b=`${e[1]}${y}`)}else if(g.startsWith(`jsr:@`)){let e=/^(jsr:@[^@]+@)(.+)$/.exec(g);e&&(b=`${e[1]}${y}`)}else g.startsWith(`jsr:`)&&(b=`jsr:${y}`);else b=Ht(h,y,g);if(!y||y===h||g&&g===b){delete _[t][e];return}let x=``;if(t===`pypi`&&l.releases?.[y]?.[0]?.upload_time_iso_8601?x=l.releases[y][0].upload_time_iso_8601:t===`go`&&l.Time?x=l.Time:t===`cargo`&&l.time?.[y]&&(x=l.time[y]),_[t][e].new=b,g&&H(g)&&(_[t][e].newPrint=y),t===`npm`)a.set(e,{name:s,promise:Lt(l.name,y,n,K,X)});else if(t===`pypi`)_[t][e].info=mt(l,u,l.info.name);else if(t===`go`){let n=l.newPath||s;_[t][e].info=wn(n)}else t===`cargo`&&(_[t][e].info=`https://crates.io/crates/${s}`);x&&Y(_[t][e],x)},{concurrency:e});for(let[e,{name:n,promise:r}]of a){let i=await r;_[t][e]&&(_[t][e].info=mt({repository:i.repository,homepage:i.homepage},null,n),i.date&&Y(_[t][e],i.date))}if(Object.keys(v).length){let n=(await Je(Object.entries(v),([e,t])=>{let n=e.split(`\0`)[1];return Kt(e,t,typeof J==`boolean`?J:P(n,J),X)},{concurrency:e})).filter(e=>e!==null);for(let e of n){let{key:n,newRange:r,user:i,repo:a,oldRef:o,newRef:s,newDate:c}=e;_[t][n]={old:v[n].old,new:r,oldPrint:ct.test(o)?o.substring(0,7):o,newPrint:ct.test(s)?s.substring(0,7):s,info:`https://github.com/${i}/${a}`},c&&Y(_[t][n],c)}}let o=g??n.cooldown;o&&kr(_[t],String(o),x)})())}if(E.length&&le.push((async()=>{let t=new Map;for(let e of E){let n=`${e.apiUrl}/${e.owner}/${e.repo}`;t.has(n)||t.set(n,{apiUrl:e.apiUrl,owner:e.owner,repo:e.repo,infos:[]}),t.get(n).infos.push(e)}await Je(t.values(),async({apiUrl:e,owner:t,repo:n,infos:r})=>{let i=await ut(e,t,n,X),a=i.map(e=>e.name),o=a.map(e=>F(e)).filter(e=>j(e)),s=new Map;for(let e of i)e.commitSha&&s.set(e.commitSha,e.name);let c=new Map;async function l(r){if(c.has(r))return c.get(r);let i=await An(e,t,n,r,X);return c.set(r,i),i}for(let e of r){let r=_.actions[e.key],c=`https://${e.host||`github.com`}/${t}/${n}`;if(e.isHash){let{usePre:t,useRel:n}=Ur(e.name),u=tt({},o,{range:`0.0.0`,semvers:new Set([`patch`,`minor`,`major`]),usePre:t,useRel:n,useGreatest:!0,pinnedRange:ae[e.name]});if(!u){delete _.actions[e.key];continue}let d=a.find(e=>F(e)===u);if(!d){delete _.actions[e.key];continue}let f=i.find(e=>e.name===d)?.commitSha;if(!f||f===e.ref||f.startsWith(e.ref)||e.ref.startsWith(f)){delete _.actions[e.key];continue}let p=s.get(e.ref)||Array.from(s.entries()).find(([t])=>t.startsWith(e.ref))?.[1];r.old=e.ref,r.new=f.substring(0,e.ref.length),r.oldPrint=p||e.ref.substring(0,7),r.newPrint=d,r.info=c,Y(r,await l(f))}else{let t=z(F(e.ref));if(!t){delete _.actions[e.key];continue}let{useGreatest:n,usePre:s,useRel:u,semvers:d}=Ur(e.name),f=tt({},o,{range:t,semvers:d,usePre:s,useRel:u,useGreatest:n||!0,pinnedRange:ae[e.name]});if(!f||f===t){delete _.actions[e.key];continue}let p=a.find(e=>F(e)===f);if(!p){delete _.actions[e.key];continue}let m=jn(p,e.ref);if(m===e.ref){delete _.actions[e.key];continue}r.new=m,r.info=c;let h=i.find(e=>e.name===p);h?.commitSha&&Y(r,await l(h.commitSha))}}},{concurrency:e}),g&&kr(_.actions,String(g),x),Object.keys(_.actions).length||delete _.actions})()),ce.length&&le.push((async()=>{let t=new Map;for(let e of ce)t.has(e.fullImage)||t.set(e.fullImage,[]),t.get(e.fullImage).push(e);await Je(t.entries(),async([e,t])=>{let n;try{let[t]=await Kn(e,`docker`,X);n=t}catch{for(let e of t)delete _.docker[e.key];return}for(let e of t){let t=_.docker[e.key],r=t.oldOrig||t.old,{semvers:i}=Ur(e.fullImage),a=qn(n.tags,r,i);if(!a){delete _.docker[e.key];continue}t.new=a.newTag,t.info=rr(e.ref),Y(t,a.date)}},{concurrency:e}),g&&kr(_.docker,String(g),x),Object.keys(_.docker).length||delete _.docker})()),await Promise.all(le),!Ar(_))return Nr(`All dependencies are up to date.`);let k=new Map;if(_.actions)for(let[e,t]of Object.entries(_.actions)){let[n,r]=e.split(`\0`);k.has(n)||k.set(n,[]),k.get(n).push({name:r,oldRef:t.old,newRef:t.new})}let A=new Map;if(_.docker)for(let[e,t]of Object.entries(_.docker)){let[n]=e.split(`\0`);A.has(n)||A.set(n,{}),A.get(n)[e]=t}let ue=Fr(_);if(l){for(let e of Object.keys(_))if(Object.keys(_[e]).length){if(e===`actions`){for(let[e,t]of k){let{absPath:n,content:r}=w[e]||{};if(n){try{Z(n,Mn(r,t))}catch(e){throw Error(`Error writing ${s(n)}: ${e.message}`)}console.info(q(`✨ ${e} updated`))}}continue}if(e===`docker`){for(let[e,t]of A){let n=T[e];if(!n)continue;let{absPath:r,fileType:i}=n,a;try{a=h(r,`utf8`)}catch{continue}try{Z(r,(i===`dockerfile`?Yn:i===`compose`?Xn:Zn)(a,t))}catch(e){throw Error(`Error writing ${s(r)}: ${e.message}`)}console.info(q(`✨ ${e} updated`))}continue}try{let t=y[e];if(e===`go`){let[n,r]=Sn(t,_[e]);Z(b[e],n),Cn(c(u(b[e])),r,Z)}else if(e===`cargo`)Z(b[e],or(t,_[e]));else{let n=e===`npm`?Vt:Jt;Z(b[e],n(t,_[e]))}}catch(t){throw Error(`Error writing ${s(b[e])}: ${t.message}`)}console.info(q(`✨ ${s(b[e])} updated`))}}await Pr(void 0,ue)}try{await qr()}catch(e){await Pr(e)}export{};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "updates",
|
|
3
|
-
"version": "17.11.
|
|
3
|
+
"version": "17.11.7",
|
|
4
4
|
"description": "CLI dependency update tool for npm, uv, cargo, go and actions",
|
|
5
5
|
"author": "silverwind",
|
|
6
6
|
"repository": "silverwind/updates",
|
|
@@ -17,17 +17,17 @@
|
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@types/node": "25.5.0",
|
|
20
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
20
|
+
"@typescript/native-preview": "7.0.0-dev.20260326.1",
|
|
21
21
|
"eslint": "10.1.0",
|
|
22
22
|
"eslint-config-silverwind": "127.1.4",
|
|
23
23
|
"timerel": "5.8.6",
|
|
24
24
|
"tsdown": "0.21.5",
|
|
25
|
-
"tsdown-config-silverwind": "2.0.
|
|
25
|
+
"tsdown-config-silverwind": "2.0.3",
|
|
26
26
|
"typescript": "5.9.3",
|
|
27
27
|
"typescript-config-silverwind": "16.1.0",
|
|
28
28
|
"updates-config-silverwind": "2.0.1",
|
|
29
29
|
"versions": "14.2.5",
|
|
30
|
-
"vitest": "4.1.
|
|
30
|
+
"vitest": "4.1.2",
|
|
31
31
|
"vitest-config-silverwind": "11.0.2"
|
|
32
32
|
}
|
|
33
33
|
}
|