updates 17.13.2 → 17.13.4
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 +5 -3
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
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,mkdirSync as h,readFileSync as g,readdirSync as _,statSync as v,truncateSync as y,writeFileSync as b}from"node:fs";import{parseArgs as x,promisify as S,stripVTControlCharacters as ee,styleText as te}from"node:util";import ne from"node:dns";import{createHash as re}from"node:crypto";import{homedir as ie}from"node:os";import{execFile as ae}from"node:child_process";function oe(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 T(a[1]))(!(e in n)||typeof n[e]!=`object`||Array.isArray(n[e]))&&(n[e]={}),n=n[e];continue}let o=ue(i);if(o<0)continue;let s=i.slice(0,o).trim(),c=i.slice(o+1).trim(),l=T(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=[];C(c.slice(1),t);for(let n=e+1;n<r.length;n++){let i=r[n].replace(/#.*$/,``).trim();if(i){if(i.includes(`]`)){C(i.replace(/\].*$/,``),t),e=n;break}C(i,t)}}u[d]=t}else u[d]=w(c)}return t}function C(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(se(e))}}function w(e){if(e.startsWith(`[`)){let t=[];return C(e.slice(1,e.lastIndexOf(`]`)),t),t}return e.startsWith(`{`)?ce(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(`'`)):se(e)}function se(e){return e===`true`?!0:e===`false`?!1:/^[+-]?\d+$/.test(e)||/^[+-]?\d+\.\d+$/.test(e)?Number(e):e}function ce(e){let t={},n=e.slice(1,e.lastIndexOf(`}`)).trim();if(!n)return t;for(let e of le(n)){let n=e.indexOf(`=`);if(n<0)continue;let r=e.slice(0,n).trim().replace(/^["']|["']$/g,``);t[r]=w(e.slice(n+1).trim())}return t}function le(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 T(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 ue(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 D=/^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=D.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 de(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 fe(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function A(e,t){let n=fe(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=de(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function j(e){return k(e)?.version??null}function pe(e){return k(e)}const me=new Map,he=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function ge(e){if(typeof e!=`string`)return null;let t=me.get(e);if(t!==void 0)return t;let n=he.exec(e);if(!n)return me.set(e,null),null;let r={version:`${n[1]||`0`}.${n[2]||`0`}.${n[3]||`0`}`};return me.set(e,r),r}function
|
|
4
|
-
`)}return r}const Xe={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function Ze(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Xe[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 Qe(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 $e(){let e=new Map,t=new Map,n=ne.lookup;ne.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(ne,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 et=`17.13.2`,P=e=>e.replace(/^v/,``),F=e=>e.replace(/[|\\{}()[\]^$+*?.-]/g,`\\$&`),I=e=>e.endsWith(`/`)?e.substring(0,e.length-1):e;function tt(e,t){return{headers:{"user-agent":`updates/${et}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function nt(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 L(e){let t=pe(e);return t?!!t.prerelease.length:!1}function rt(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}function it(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=R(e),s=R(t);if(!o||!s)return!0;let c=rt(e)||L(e),l=L(t);return c&&!l?ve(s,o)||n:!l&&be(s,o)?r===!0||a(i,r):!0}function R(e){try{return ge(e)?.version??``}catch{return``}}function at(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s}){let c=R(n);if(!c)return c;i=rt(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=pe(n);if(!t?.version||t.prerelease.length&&(!i||a))continue;let c=t.version;if(s&&!je(c,s))continue;let d=_e(u,c);if(!(!d||!r.has(d)))if(o||!(`time`in e))(ye(R(c),u)||s&&!je(u,s))&&(u=c);else{let t=Date.parse(e.time[n]);t>=0&&t>l&&(u=c,l=t)}}return u||null}function ot(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=R(n);if(!t)return null;let r=a||rt(n),s=e=>L(e)&&(!r||i),d={useRel:i,allowDowngrade:c,name:e.name,matchesAny:l},f=e.old||n,p=R(e.new);if(p&&!u(e.new)&&!s(e.new)){let n=_e(t,p);if(n&&o.has(n)&&it(f,e.new,d))return e.new}let m=R(e.sameMajorNew);if(m&&!u(e.sameMajorNew)&&!s(e.sameMajorNew)){let n=_e(t,m);if(n&&o.has(n)&&it(f,e.sameMajorNew,d))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}return null}let f=at(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=R(e.info.version)):r=e[`dist-tags`].latest;let d=R(n),p=rt(n),m=L(f),h=L(r),g={useRel:i,allowDowngrade:c,name:e.name,matchesAny:l};if(!i&&a||p&&m)return f;if(p&&!m)return it(n,f,g)?f:null;let _=_e(d,r);return _&&_!==`prerelease`&&!o.has(_.replace(/^pre/,``))||i&&L(r)?f:be(r,d)&&!h?it(n,r,g)?r:null:!p&&h&&!a||s&&!je(r,s)?f:u||r}}const st=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&st.set(e.substring(0,t),e.substring(t+1))}function ct(e){try{let t=st.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 lt(e,t){let n={signal:AbortSignal.timeout(t.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}},r=ct(e);return r&&(n.headers={...n.headers,Authorization:`Bearer ${r}`}),t.doFetch(e,n)}function ut(e,t,n){let r=P(t);if(!j(r))return null;if(n){let n=t,i=P(t);for(let t of e){let e=P(t);j(e)&&(!n||ve(e,i))&&(n=t,i=e)}if(xe(r,i))return n}else{let t=e.at(-1);if(!t)return null;let n=P(t);if(!j(n))return null;if(xe(r,n))return t}return null}function dt(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 ft=/^[0-9a-f]{7,}$/i;function pt(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function mt(e,t,n,r){try{let i=await lt(`${e}/repos/${t}/${n}/tags?per_page=100`,r);if(!i?.ok)return[];let a=pt(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)=>lt(`${e}/repos/${t}/${n}/tags?per_page=100&page=${a+2}`,r)));for(let e of o)e?.ok&&a.push(...pt(await e.json()))}return a}catch{return[]}}function ht(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 gt(e,t,n=``){let r=t.startsWith(`v`),i=P(e),a=P(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 _t(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function vt({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=dt(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${_t(a)}/${e.directory}`)),a||t||``)}function yt(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 bt(e){try{return yt(g(e,`utf-8`))}catch{return}}function xt(t){let n=e();for(;;){let e=l(n,t);try{return v(e),e}catch{}let r=c(n);if(r===n)break;n=r}}function St(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 Ct(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=bt(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(xt(`.${e}rc`));let u=St(`${e}_`);return u.config&&c(u.config),Object.assign({},...o,u,s.length?{configs:s,config:s[s.length-1]}:void 0)}const z=l(r===`win32`?t.LOCALAPPDATA||l(ie(),`AppData`,`Local`):t.XDG_CACHE_HOME||l(ie(),`.cache`),`updates`);let wt=!1;function Tt(e){return re(`sha256`).update(e).digest(`hex`).substring(0,16)}function Et(e){try{let t=Tt(e),n=g(l(z,`${t}.etag`),`utf8`),r=g(l(z,`${t}.body`),`utf8`);return n&&r?{etag:n,body:r}:null}catch{return null}}function Dt(e,t,n){try{wt||=(h(z,{recursive:!0}),!0);let r=Tt(e);b(l(z,`${r}.etag`),t),b(l(z,`${r}.body`),n)}catch{}}const Ot=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,kt=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,At=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,jt=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,Mt=`https://registry.npmjs.org`;let B=null;const Nt=new Map;function Pt(){return B||Ct(`npm`,{registry:Mt})}function Ft(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function It(e,t){let n=t[`${e}:_authToken`]||t[`${e}/:_authToken`];if(n)return{token:Ft(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(Ft(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:Ft(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=It(`//${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:Ft(i),type:`Basic`}}function Lt(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function Rt(e,t){B||=Pt();let n=e.startsWith(`@`)?(/@[a-z0-9][\w.-]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=Nt.get(r);if(i)return i;let a;if(!e.startsWith(`@`))a={auth:V(t,B),registry:t};else{let e=I(Lt(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 Nt.set(r,a),a}function zt(e,t,n){B||=Pt();let r=I((typeof n.registry==`string`?n.registry:!1)||t.registry||B.registry||Mt);return{...Rt(e,r),originalRegistry:r}}function Bt(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const Vt=new Map,Ht=new Map,Ut=new Map;async function Wt(e,t,n,r,i){let{auth:a,registry:o}=zt(e,n,r),c=Bt(o,t===`resolutions`?s(e):e),l=Vt.get(c);if(!l){let t=tt(a?.type,a?.token);t.headers={...t.headers,accept:`application/vnd.npm.install-v1+json`};let n=i.noCache?null:Et(c);n&&(t.headers[`if-none-match`]=n.etag),l=i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...t}).then(async t=>{if(t?.status===304&&n)return JSON.parse(n.body);if(t?.ok){let e=await t.text(),n=t.headers.get(`etag`);return n&&!i.noCache&&Dt(c,n,e),JSON.parse(e)}ht(t,c,e,o)}).catch(e=>{throw Vt.delete(c),e}),Vt.set(c,l)}return[await l,t,o,e]}async function Gt(e,t,n,r,i){let{auth:a,registry:o}=zt(e,n,r),s=Bt(o,e,t),c=Ht.get(s);if(c)return c;let l=(async()=>{try{let n=tt(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=Bt(o,e),a=Ut.get(r);a||(a=i.doFetch(r,{signal:AbortSignal.timeout(i.fetchTimeout),...n}).then(e=>e?.ok?e.json():null).catch(()=>(Ut.delete(r),null)),Ut.set(r,a)),l=(await a)?.time?.[t]||``}return{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})();return Ht.set(s,l),l}function H(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Kt(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function qt(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 Jt(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]}ht(s,o,e,`JSR`)}function Yt(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(`"${F(a)}": *"${o}@${F(s)}"`,`g`);n=n.replace(r,`"${a}": "${o}@${t[e].new}"`)}else{let r=RegExp(`"${F(o)}": *"${F(s)}"`,`g`);n=n.replace(r,`"${o}": "${t[e].new}"`)}}return n}function Xt(e,t,n){let r=e.replace(jt,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 Zt(e){let t=e.match(At);return t?.length===1?e.replace(At,R(t[0])):e}async function Qt(e,t,n){try{let r=await lt(`${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 $t(e,t,n){return(await mt(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function en(e,t,n,r){let i=t.old.replace(Ot,``),[a,o,s,c]=kt.exec(i)||[];if(!o||!s||!c)return null;if(ft.test(c)){let{hash:n,commit:i}=await Qt(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=ut(await $t(o,s,r),c,n);if(t)return{key:e,newRange:t,user:o,repo:s,oldRef:c,newRef:t}}return null}async function tn(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];ht(i,r,e,n.pypiApiUrl)}function nn(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(`("${F(o)} *[<>=~]+ *)${F(s)}(")`,`g`),(n,r,i)=>`${r}${t[e].new}${i}`)}return n}const rn=S(ae);function an(){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 on(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function sn(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function cn(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}function ln(e){let t=/\/v(\d+)$/.exec(e);return t?Number.parseInt(t[1]):1}function un(e,t){return t<=1?e.replace(/\/v\d+$/,``):`${e.replace(/\/v\d+$/,``)}/v${t}`}function dn(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||fn(n)}function fn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function pn(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function mn(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 hn(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:P(o),Time:s,...c===e?{}:{newPath:c},sameMajorNew:P(i),sameMajorTime:a},t,null,e]}function gn(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 _n(e,n,r,i,a){let o=ln(e),s=async(e,n)=>{try{let{stdout:r}=await rn(`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=dn(e,n,r),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(un(e,o+1),a.goProbeTimeout)]);return l?hn(e,n,r,await mn(o,u,t=>s(un(e,t),a.goProbeTimeout)),l.Version,l.Time):pn(e,r,n)}async function vn(e,t,n,r,i,a){if(sn(e,a))return _n(e,t,n,r,i);let o=cn(e),s=ln(e),c=async t=>{let n=un(e,t);return i.doFetch(`${i.goProxyUrl}/${cn(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout)}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},l=dn(e,t,n),[u,d]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout)}),l?null:c(s+1)]);if(!u.ok)return pn(e,n,t);let f,p;try{let e=await u.json();f=e.Version,p=e.Time}catch{return pn(e,n,t)}return hn(e,t,n,await mn(s,d,c),f,p)}function yn(e,t){let n=F(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 bn(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+${F(s)}\\s+)v${F(c)}`,`g`),`$1v${l}`);continue}if(o===`indirect`){n=n.replace(RegExp(`(${F(s)}) +v${F(c)}`,`g`),`$1 v${l}`);continue}let u=ln(s),d=Number.parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=un(s,d);n=n.replace(RegExp(`${F(s)} +v${F(c)}`,`g`),`${e} v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)${F(s)}(/\\S+)?\\s*$`,`gm`),`$1${e}$2`)),r[s]=e}else n=n.replace(RegExp(`(${F(s)}) +v${F(c)}`,`g`),`$1 v${l}`);o!==`tool`&&(n=yn(n,s))}return[n,r]}function xn(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=g(r,`utf8`),o=!1;for(let[e,n]of Object.entries(t)){let t=RegExp(`"${F(e)}(/|")`,`g`),r=a.replace(t,`"${n}$1`);r!==a&&(a=r,o=!0)}o&&n(r,a)}}function Sn(e){let t=`https://${Cn(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[e,i,a,...o]=r;return n.pathname=`/${i}/${a}/${_t(t)}/${o.join(`/`)}`,n.toString()}else return t}function Cn(e){return/\/v[0-9]$/.test(e)?c(e):e}function wn(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const Tn=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function En(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:ft.test(o)}}function Dn(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function On(e,t,n,r,i){try{let a=await lt(`${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 kn(e,t){return gt(pe(P(e))?.version??P(e),t)}function An(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?)${F(e)}@${F(r)}`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}function jn(e){let t=e.replace(/\\/g,`/`);return/\.github\/workflows\/[^/]+\.(ya?ml)$/.test(t)}function Mn(e){try{return _(e).filter(e=>/\.(ya?ml)$/.test(e)).map(t=>u(l(e,t)))}catch{return[]}}const Nn=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,Pn=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,Fn=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,In=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,Ln=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function Rn(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 zn(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||!Nn.test(r)))return null;let{registry:i,namespace:a,repo:o}=Rn(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function Bn(e){let t=Nn.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Vn(e,t){let n=Bn(t);return n?gt(e,n.version,n.suffix):t}function Hn(e,t){let n=[];for(let r of e.matchAll(t)){let e=zn(r[1]);e&&n.push({ref:e,match:r[1]})}return n}async function Un(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 Wn(e,t,n){let{registry:r,namespace:i,repo:a}=Rn(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await Un(i,a,n),name:e},t,null,e]}function Gn(e,t,n){let r=Bn(t);if(!r)return null;let i=ge(P(r.version))?.version;if(!i)return null;let a=i,o=``,s=``;for(let[t,i]of Object.entries(e)){let e=Bn(t);if(!e||e.suffix!==r.suffix)continue;let c=ge(P(e.version))?.version;if(!c||!j(c))continue;let l=_e(a,c);!l||!n.has(l)||ye(c,a)&&(a=c,o=t,s=i)}if(!o||a===i)return null;let c=Vn(a,t);return c===t?null:{newTag:c,date:s}}function Kn(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(F(a),F(o)),`$1${a}:${i.new}`)}return r}function qn(e,t){return Kn(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}`,`g`)])}function Jn(e,t){return Kn(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}`,`g`)])}function Yn(e,t){return Kn(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}`,`g`)])}const Xn=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function Zn(e){return/^docker-.+\.ya?ml$/.test(e)}function Qn(e){return/^Dockerfile(\..+)?$/.test(e)}function $n(e){return Qn(e)||Zn(e)}function er(e){return Qn(e)?Pn:Fn}function tr(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}async function nr(e,t,n){let r=`${I(n.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`,i=await n.doFetch(r,{signal:AbortSignal.timeout(n.fetchTimeout),...tt()});i?.ok||ht(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 rr=We.map(e=>F(e)).join(`|`);function ir(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=F(i),c=F(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(`(\\[(?:${rr})\\.${s}\\][^\\[]*?version\\s*=\\s*["'])${c}(["'])`,`g`),`$1${o}$2`)}return n}const ar={"package.json":`npm`,"pyproject.toml":`pypi`,"go.mod":`go`,"Cargo.toml":`cargo`},or={"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 U(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.flatMap(e=>typeof e==`string`?Ke(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function sr(e){for(let[t,{short:n}]of Object.entries(or))if(t===e||n===e)return t;return``}const W=x({strict:!1,allowPositionals:!0,tokens:!0,options:or}),G=W.values;for(let[e,t]of W.tokens.entries())if(t.kind===`option`&&t.value?.startsWith(`-`)){let n=sr(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,cr=W.positionals,[lr,ur,q]=[`magenta`,`red`,`green`].map(e=>K[`no-color`]?String:t=>te(e,String(t))),J=Q(U(K.greatest)),dr=Q(U(K.prerelease)),fr=Q(U(K.release)),pr=Q(U(K.patch)),mr=Q(U(K.minor)),hr=Q(U(K[`allow-downgrade`])),gr=U(K.modes)||new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`]),_r=typeof K.forgeapi==`string`?I(K.forgeapi):`https://api.github.com`,vr=typeof K.pypiapi==`string`?I(K.pypiapi):`https://pypi.org`,yr=typeof K.jsrapi==`string`?I(K.jsrapi):`https://jsr.io`,br=typeof K.goproxy==`string`?I(K.goproxy):an(),xr=typeof K.cargoapi==`string`?I(K.cargoapi):`https://crates.io`,Sr=typeof K.dockerapi==`string`?I(K.dockerapi):`https://hub.docker.com`,Cr=on();function wr(e){let t={};if(Array.isArray(e)){for(let n of e)if(typeof n==`string`){let[e,r]=n.split(`=`,2);e&&r&&Me(r)&&(t[e]=r)}}else if(typeof e==`string`){let[n,r]=e.split(`=`,2);n&&r&&Me(r)&&(t[n]=r)}return t}function Tr(e,t){let n=l(t,e);try{return f(n),n}catch{}let r=c(t);return r===t?null:Tr(e,r)}function Er(e){try{return g(e,`utf8`)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}}function Y(e,t){t&&(e.date=t,e.age=Le(t,{noAffix:!0}))}function Dr(e,t,n){let r=Ze(String(t));for(let[t,{date:i}]of Object.entries(e))qe(i,r,n)||delete e[t]}function Or(e){let t=0;for(let n of Object.keys(e))t+=Object.keys(e[n]).length;return t}function kr(e){console.error(`${Je()} ${e}`)}const Ar=typeof K.timeout==`string`?Number(K.timeout):0,X={fetchTimeout:Ar||5e3,goProbeTimeout:Ar?Ar/2:2500,forgeApiUrl:_r,pypiApiUrl:vr,jsrApiUrl:yr,goProxyUrl:br,cratesIoUrl:xr,dockerApiUrl:Sr,doFetch:(e,t)=>nt(e,t,!!K.verbose,kr,lr,q,ur),verbose:!!K.verbose,noCache:!!K[`no-cache`]};async function jr(e){console.info(K.json?JSON.stringify({message:e}):e),await Mr()}async function Mr(e,t){if(e){let t=e.message??String(e);K.json?console.info(JSON.stringify({error:t})):console.info(ur(t))}r===`win32`&&Number(o?.node?.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),n(t||e?1:0)}function Nr(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`?wn(n.oldOrig):n.oldOrig),t===`go`&&(n.new=wn(n.new)),t===`actions`&&(n.old=P(n.old),n.new=P(n.new)),delete n.oldPrint,delete n.newPrint,delete n.oldOrig,delete n.date;let t=Or(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(Fr(e));return K[`error-on-outdated`]?t?2:0:K[`error-on-unchanged`]?t?0:2:0}function Z(e,t){r===`win32`&&y(e,0),b(e,t,r===`win32`?{flag:`r+`}:void 0)}const Pr=e=>ee(e).length;function Fr(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`?Cn(s):s),n&&l.push(a),l.push(Re(o.old,o.new,ur)),l.push(Re(o.new,o.old,q)),l.push(o.age||``),l.push(o.info||``),r.push(l)}return Ye(r,Pr)}function Ir(e,t){return RegExp(`^${F(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Lr(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Ir(e,n):e instanceof RegExp?e:Ir(e,n)}function Q(e){if(e instanceof Set){let t=new Set;for(let n of e)t.add(Lr(n,!0,!1));return t}return e}function Rr(e,t){let n=new Set;for(let t of e||[])n.add(Lr(t,!0,!0));for(let e of t||[])n.add(Lr(e,!1,!0));return n}function zr(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>Ke(e)):[]}function Br(e){return pr===!0||N(e,pr)?new Set([`patch`]):mr===!0||N(e,mr)?new Set([`patch`,`minor`]):new Set([`patch`,`minor`,`major`])}function Vr(e){return{useGreatest:typeof J==`boolean`?J:N(e,J),usePre:typeof dr==`boolean`?dr:N(e,dr),useRel:typeof fr==`boolean`?fr:N(e,fr),semvers:Br(e)}}function Hr(t){return t.replace(`${e()}/`,``).replace(`${e()}\\`,``)}function $(e,t,n,r,i){if(i===`engines`&&Ve.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 Ur(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(ar)){let r=l(e,t),i=null;try{i=m(r)}catch{}i?.isFile()&&n.add(u(r))}try{for(let t of _(e))if($n(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 Mn(r))n.add(e)}else throw Error(`${e} is neither a file nor directory`)}else{for(let t of Object.keys(ar)){let r=Tr(t,e());r&&n.add(u(r))}for(let t of Xn){let r=Tr(t,e());r&&n.add(u(r))}try{for(let t of _(e()))if($n(t)&&!Xn.includes(t)){let r=l(e(),t);try{m(r).isFile()&&n.add(u(r))}catch{}}}catch{}let t=Tr(l(`.github`,`workflows`),e());if(t)for(let e of Mn(t))n.add(e)}return n}async function Wr(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 Gr(){for(let e of[a,i])e?._handle?.setBlocking?.(!0);$e();let e=typeof K.sockets==`string`&&Number(K.sockets)||25,{help:t,version:n,file:r,types:o,update:l,indirect:d,include:f,exclude:p,pin:m,cooldown:h}=K;t&&(a.write(`usage: updates [options] [files...]
|
|
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 D=/^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=D.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 de(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 fe(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function A(e,t){let n=fe(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=de(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function j(e){return k(e)?.version??null}function pe(e){return k(e)}const me=new Map,he=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function ge(e){if(typeof e!=`string`)return null;let t=me.get(e);if(t!==void 0)return t;let n=he.exec(e);if(!n)return me.set(e,null),null;let r={version:`${n[1]||`0`}.${n[2]||`0`}.${n[3]||`0`}`};return me.set(e,r),r}function M(e,t){let n=k(e),r=k(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(fe(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 _e(e,t){let n=k(e),r=k(t);return!n||!r?!1:A(n,r)>0}function ve(e,t){let n=k(e),r=k(t);return!n||!r?!1:A(n,r)>=0}function ye(e,t){let n=k(e),r=k(t);return!n||!r?!1:A(n,r)<0}function be(e,t){let n=k(e),r=k(t);return!n||!r?!0:A(n,r)!==0}function xe(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 Se(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 Ce(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 we(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 Te(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 Ee(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 De=new Map;function Oe(e){let t=De.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=Te(t),t=we(t),t=Ce(t),t=Ee(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=xe(t);if(!n)return De.set(e,null),null;i.push(n)}if(i.length===0)return De.set(e,null),null;r.push(i)}let i=r.length?r:null;return De.set(e,i),i}function ke(e,t){for(let n of t)if(!Se(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 Ae(e,t){let n=k(e);if(!n)return!1;let r=Oe(t);if(!r)return!1;for(let e of r)if(e.length===0||ke(n,e))return!0;return!1}function je(e){if(typeof e!=`string`)return null;try{return Oe(e)?e:null}catch{return null}}const Me=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],Ne={"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`},Pe={sec:`second`,min:`minute`};function Fe(e){return e instanceof Date?e.getTime():typeof e==`string`?Date.parse(e):e}function Ie(e,{now:t,noAffix:n=!1,times:r=Me,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=Ne,longUnits:l=!1}={}){let u=Fe(e),d=t===void 0?Date.now():Fe(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&&Pe[t[2]]||t[2])+(m>1?`s`:``);break}}let g=`${m} ${h}`,_;return _=n?g:p?`in ${g}`:`${g} ago`,s?c[_]??_:_}function Le(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 Re(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 ze=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],Be=[`node`,`deno`,`bun`],Ve=[`project.dependencies`,`project.optional-dependencies`,`dependency-groups.dev`,`dependency-groups.lint`,`dependency-groups.test`],He=[`deps`,`indirect`,`replace`,`tool`],Ue=[`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 We(e,t){return t.split(`.`).reduce((e,t)=>e?.[t]??null,e)}function Ge(e){return e.split(`,`).filter(Boolean)}function Ke(e,t,n){return!e||!t?!0:(n-Date.parse(e))/(24*3600*1e3)>=t}function qe(){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`),`.`,String(e.getMilliseconds()).padStart(3,`0`)].join(``)}function Je(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 Ye={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function Xe(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Ye[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 Ze(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 Qe(){let e=new Map,t=new Map,n=ne.lookup;ne.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(ne,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 $e=`17.13.4`,F=e=>e.replace(/^v/,``),I=e=>e.replace(/[|\\{}()[\]^$+*?.-]/g,`\\$&`),L=e=>e.endsWith(`/`)?e.substring(0,e.length-1):e;function et(e,t){return{headers:{"user-agent":`updates/${$e}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function tt(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=pe(e);return t?!!t.prerelease.length:!1}function nt(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}function rt(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=z(e),s=z(t);if(!o||!s)return!0;let c=nt(e)||R(e),l=R(t);return c&&!l?_e(s,o)||n:!l&&ye(s,o)?r===!0||a(i,r):!0}function z(e){try{return ge(e)?.version??``}catch{return``}}function it(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s}){let c=z(n);if(!c)return c;i=nt(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=pe(n);if(!t?.version||t.prerelease.length&&(!i||a))continue;let c=t.version;if(s&&!Ae(c,s))continue;let d=M(u,c);if(!(!d||!r.has(d)))if(o||!(`time`in e))(ve(z(c),u)||s&&!Ae(u,s))&&(u=c);else{let t=Date.parse(e.time[n]);t>=0&&t>l&&(u=c,l=t)}}return u||null}function at(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||nt(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)&&rt(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)&&rt(f,e.sameMajorNew,d))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}return null}let f=it(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=nt(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 rt(n,f,g)?f:null;let _=M(d,r);return _&&_!==`prerelease`&&!o.has(_.replace(/^pre/,``))||i&&R(r)?f:ye(r,d)&&!h?rt(n,r,g)?r:null:!p&&h&&!a||s&&!Ae(r,s)?f:u||r}}const ot=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&ot.set(e.substring(0,t),e.substring(t+1))}function st(e){try{let t=ot.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 ct(e,t){let n={signal:AbortSignal.timeout(t.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}},r=st(e);return r&&(n.headers={...n.headers,Authorization:`Bearer ${r}`}),t.doFetch(e,n)}function lt(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||_e(e,i))&&(n=t,i=e)}if(be(r,i))return n}else{let t=e.at(-1);if(!t)return null;let n=F(t);if(!j(n))return null;if(be(r,n))return t}return null}function ut(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 dt=/^[0-9a-f]{7,}$/i;function ft(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function pt(e,t,n,r){try{let i=await ct(`${e}/repos/${t}/${n}/tags?per_page=100`,r);if(!i?.ok)return[];let a=ft(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)=>ct(`${e}/repos/${t}/${n}/tags?per_page=100&page=${a+2}`,r)));for(let e of o)e?.ok&&a.push(...ft(await e.json()))}return a}catch{return[]}}function mt(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 ht(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 gt(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function _t({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=ut(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${gt(a)}/${e.directory}`)),a||t||``)}function vt(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 yt(e){try{return vt(g(e,`utf-8`))}catch{return}}function bt(t){let n=e();for(;;){let e=l(n,t);try{return v(e),e}catch{}let r=c(n);if(r===n)break;n=r}}function xt(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 St(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=yt(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(bt(`.${e}rc`));let u=xt(`${e}_`);return u.config&&c(u.config),Object.assign({},...o,u,s.length?{configs:s,config:s[s.length-1]}:void 0)}const Ct=l(r===`win32`?t.LOCALAPPDATA||l(ie(),`AppData`,`Local`):t.XDG_CACHE_HOME||l(ie(),`.cache`),`updates`);let wt=!1;function Tt(e){return re(`sha256`).update(e).digest(`hex`).substring(0,16)}function Et(e){try{let t=g(l(Ct,`${Tt(e)}.cache`),`utf8`),n=t.indexOf(`
|
|
5
|
+
`);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}}function Dt(e,t,n){try{wt||=(h(Ct,{recursive:!0}),!0),b(l(Ct,`${Tt(e)}.cache`),`${t}\n${n}`)}catch{}}const Ot=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,kt=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,At=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,jt=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,Mt=`https://registry.npmjs.org`;let B=null;const Nt=new Map;function Pt(){return B||St(`npm`,{registry:Mt})}function Ft(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function It(e,t){let n=t[`${e}:_authToken`]||t[`${e}/:_authToken`];if(n)return{token:Ft(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(Ft(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:Ft(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=It(`//${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:Ft(i),type:`Basic`}}function Lt(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function Rt(e,t){B||=Pt();let n=e.startsWith(`@`)?(/@[a-z0-9][\w.-]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=Nt.get(r);if(i)return i;let a;if(!e.startsWith(`@`))a={auth:V(t,B),registry:t};else{let e=L(Lt(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 Nt.set(r,a),a}function zt(e,t,n){B||=Pt();let r=L((typeof n.registry==`string`?n.registry:!1)||t.registry||B.registry||Mt);return{...Rt(e,r),originalRegistry:r}}function Bt(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const Vt=new Map,Ht=new Map,Ut=new Map;async function Wt(e,t,n,r,i){let{auth:a,registry:o}=zt(e,n,r),c=Bt(o,t===`resolutions`?s(e):e),l=Vt.get(c);if(!l){let t=et(a?.type,a?.token);t.headers={...t.headers,accept:`application/vnd.npm.install-v1+json`};let n=i.noCache?null:Et(c);n&&(t.headers[`if-none-match`]=n.etag),l=i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...t}).then(async t=>{if(t?.status===304&&n)return JSON.parse(n.body);if(t?.ok){let e=await t.text(),n=t.headers.get(`etag`);return n&&!i.noCache&&Dt(c,n,e),JSON.parse(e)}mt(t,c,e,o)}).catch(e=>{throw Vt.delete(c),e}),Vt.set(c,l)}return[await l,t,o,e]}async function Gt(e,t,n,r,i){let{auth:a,registry:o}=zt(e,n,r),s=Bt(o,e,t),c=Ht.get(s);if(c)return c;let l=(async()=>{try{let n=et(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=Bt(o,e),a=Ut.get(r);a||(a=i.doFetch(r,{signal:AbortSignal.timeout(i.fetchTimeout),...n}).then(e=>e?.ok?e.json():null).catch(()=>(Ut.delete(r),null)),Ut.set(r,a)),l=(await a)?.time?.[t]||``}return{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})();return Ht.set(s,l),l}function H(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Kt(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function qt(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 Jt(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]}mt(s,o,e,`JSR`)}function Yt(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 Xt(e,t,n){let r=e.replace(jt,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 Zt(e){let t=e.match(At);return t?.length===1?e.replace(At,z(t[0])):e}async function Qt(e,t,n){try{let r=await ct(`${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 $t(e,t,n){return(await pt(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function en(e,t,n,r){let i=t.old.replace(Ot,``),[a,o,s,c]=kt.exec(i)||[];if(!o||!s||!c)return null;if(dt.test(c)){let{hash:n,commit:i}=await Qt(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=lt(await $t(o,s,r),c,n);if(t)return{key:e,newRange:t,user:o,repo:s,oldRef:c,newRef:t}}return null}async function tn(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];mt(i,r,e,n.pypiApiUrl)}function nn(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 rn=S(ae);function an(){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 on(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function sn(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function cn(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}function ln(e){let t=/\/v(\d+)$/.exec(e);return t?Number.parseInt(t[1]):1}function un(e,t){return t<=1?e.replace(/\/v\d+$/,``):`${e.replace(/\/v\d+$/,``)}/v${t}`}function dn(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||fn(n)}function fn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function pn(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function mn(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}if(o-i>1){let e=await Promise.all(Array.from({length:o-i-1},(e,t)=>n(i+1+t)));for(let t=e.length-1;t>=0;t--)if(e[t]){r=e[t];break}}return r}function hn(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 gn(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 _n(e,n,r,i,a){let o=ln(e),s=async(e,n)=>{try{let{stdout:r}=await rn(`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=dn(e,n,r),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(un(e,o+1),a.goProbeTimeout)]);return l?hn(e,n,r,await mn(o,u,t=>s(un(e,t),a.goProbeTimeout)),l.Version,l.Time):pn(e,r,n)}async function vn(e,t,n,r,i,a){if(sn(e,a))return _n(e,t,n,r,i);let o=cn(e),s=ln(e),c=async t=>{let n=un(e,t);return i.doFetch(`${i.goProxyUrl}/${cn(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout)}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},l=dn(e,t,n),[u,d]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout)}),l?null:c(s+1)]);if(!u.ok)return pn(e,n,t);let f,p;try{let e=await u.json();f=e.Version,p=e.Time}catch{return pn(e,n,t)}return hn(e,t,n,await mn(s,d,c),f,p)}function yn(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 bn(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=ln(s),d=Number.parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=un(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=yn(n,s))}return[n,r]}function xn(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=g(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 Sn(e){let t=`https://${Cn(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[e,i,a,...o]=r;return n.pathname=`/${i}/${a}/${gt(t)}/${o.join(`/`)}`,n.toString()}else return t}function Cn(e){return/\/v[0-9]$/.test(e)?c(e):e}function wn(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const Tn=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function En(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:dt.test(o)}}function Dn(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function On(e,t,n,r,i){try{let a=await ct(`${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 kn(e,t){return ht(pe(F(e))?.version??F(e),t)}function An(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 jn(e){let t=e.replace(/\\/g,`/`);return/\.github\/workflows\/[^/]+\.(ya?ml)$/.test(t)}function Mn(e){try{return _(e).filter(e=>/\.(ya?ml)$/.test(e)).map(t=>u(l(e,t)))}catch{return[]}}const Nn=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,Pn=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,Fn=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,In=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,Ln=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function Rn(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 zn(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||!Nn.test(r)))return null;let{registry:i,namespace:a,repo:o}=Rn(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function Bn(e){let t=Nn.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Vn(e,t){let n=Bn(t);return n?ht(e,n.version,n.suffix):t}function Hn(e,t){let n=[];for(let r of e.matchAll(t)){let e=zn(r[1]);e&&n.push({ref:e,match:r[1]})}return n}async function Un(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,c]=await Promise.all([n.doFetch(a(1),{signal:AbortSignal.timeout(n.fetchTimeout)}).then(e=>e?.ok?e.json():null).catch(()=>null),n.doFetch(a(2),{signal:AbortSignal.timeout(n.fetchTimeout)}).then(e=>e?.ok?e.json():null).catch(()=>null)]);if(!s)return r;o(s);let l=Math.min(Math.ceil((s.count||0)/100),10);if(l>=2&&c&&o(c),l>2){let e=await Promise.all(Array.from({length:l-2},(e,t)=>n.doFetch(a(t+3),{signal:AbortSignal.timeout(n.fetchTimeout)}).then(e=>e?.ok?e.json():null).catch(()=>null)));for(let t of e)t&&o(t)}return r}async function Wn(e,t,n){let{registry:r,namespace:i,repo:a}=Rn(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await Un(i,a,n),name:e},t,null,e]}function Gn(e,t,n){let r=Bn(t);if(!r)return null;let i=ge(F(r.version))?.version;if(!i)return null;let a=i,o=``,s=``;for(let[t,i]of Object.entries(e)){let e=Bn(t);if(!e||e.suffix!==r.suffix)continue;let c=ge(F(e.version))?.version;if(!c)continue;let l=M(a,c);!l||!n.has(l)||ve(c,a)&&(a=c,o=t,s=i)}if(!o||a===i)return null;let c=Vn(a,t);return c===t?null:{newTag:c,date:s}}function Kn(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 qn(e,t){return Kn(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}`,`g`)])}function Jn(e,t){return Kn(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}`,`g`)])}function Yn(e,t){return Kn(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}`,`g`)])}const Xn=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function Zn(e){return/^docker-.+\.ya?ml$/.test(e)}function Qn(e){return/^Dockerfile(\..+)?$/.test(e)}function $n(e){return Qn(e)||Zn(e)}function er(e){return Qn(e)?Pn:Fn}function tr(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}async function nr(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),...et()});i?.ok||mt(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 rr=Ue.map(e=>I(e)).join(`|`);function ir(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(`(\\[(?:${rr})\\.${s}\\][^\\[]*?version\\s*=\\s*["'])${c}(["'])`,`g`),`$1${o}$2`)}return n}const ar={"package.json":`npm`,"pyproject.toml":`pypi`,"go.mod":`go`,"Cargo.toml":`cargo`},or={"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 U(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.flatMap(e=>typeof e==`string`?Ge(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function sr(e){for(let[t,{short:n}]of Object.entries(or))if(t===e||n===e)return t;return``}const W=x({strict:!1,allowPositionals:!0,tokens:!0,options:or}),G=W.values;for(let[e,t]of W.tokens.entries())if(t.kind===`option`&&t.value?.startsWith(`-`)){let n=sr(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,cr=W.positionals,lr=K.color===!0||K[`no-color`]!==!0&&a.isTTY,[ur,dr,q]=[`magenta`,`red`,`green`].map(e=>lr?t=>te(e,String(t)):String),J=Q(U(K.greatest)),fr=Q(U(K.prerelease)),pr=Q(U(K.release)),mr=Q(U(K.patch)),hr=Q(U(K.minor)),gr=Q(U(K[`allow-downgrade`])),_r=U(K.modes)||new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`]),vr=typeof K.forgeapi==`string`?L(K.forgeapi):`https://api.github.com`,yr=typeof K.pypiapi==`string`?L(K.pypiapi):`https://pypi.org`,br=typeof K.jsrapi==`string`?L(K.jsrapi):`https://jsr.io`,xr=typeof K.goproxy==`string`?L(K.goproxy):an(),Sr=typeof K.cargoapi==`string`?L(K.cargoapi):`https://crates.io`,Cr=typeof K.dockerapi==`string`?L(K.dockerapi):`https://hub.docker.com`,wr=on();function Tr(e){let t={};if(Array.isArray(e)){for(let n of e)if(typeof n==`string`){let[e,r]=n.split(`=`,2);e&&r&&je(r)&&(t[e]=r)}}else if(typeof e==`string`){let[n,r]=e.split(`=`,2);n&&r&&je(r)&&(t[n]=r)}return t}function Er(e,t){let n=l(t,e);try{return f(n),n}catch{}let r=c(t);return r===t?null:Er(e,r)}function Dr(e){try{return g(e,`utf8`)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}}function Y(e,t){t&&(e.date=t,e.age=Ie(t,{noAffix:!0}))}function Or(e,t,n){let r=Xe(String(t));for(let[t,{date:i}]of Object.entries(e))Ke(i,r,n)||delete e[t]}function kr(e){let t=0;for(let n of Object.keys(e))t+=Object.keys(e[n]).length;return t}function Ar(e){console.error(`${qe()} ${e}`)}const jr=typeof K.timeout==`string`?Number(K.timeout):0,X={fetchTimeout:jr||5e3,goProbeTimeout:jr?jr/2:2500,forgeApiUrl:vr,pypiApiUrl:yr,jsrApiUrl:br,goProxyUrl:xr,cratesIoUrl:Sr,dockerApiUrl:Cr,doFetch:(e,t)=>tt(e,t,!!K.verbose,Ar,ur,q,dr),verbose:!!K.verbose,noCache:!!K[`no-cache`]};async function Mr(e){console.info(K.json?JSON.stringify({message:e}):e),await Nr()}async function Nr(e,t){if(e){let t=e.message??String(e);K.json?console.info(JSON.stringify({error:t})):console.info(dr(t))}r===`win32`&&Number(o?.node?.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),n(t||e?1:0)}function Pr(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`?wn(n.oldOrig):n.oldOrig),t===`go`&&(n.new=wn(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=kr(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(Ir(e));return K[`error-on-outdated`]?t?2:0:K[`error-on-unchanged`]?t?0:2:0}function Z(e,t){r===`win32`&&y(e,0),b(e,t,r===`win32`?{flag:`r+`}:void 0)}const Fr=e=>ee(e).length;function Ir(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`?Cn(s):s),n&&l.push(a),l.push(Le(o.old,o.new,dr)),l.push(Le(o.new,o.old,q)),l.push(o.age||``),l.push(o.info||``),r.push(l)}return Je(r,Fr)}function Lr(e,t){return RegExp(`^${I(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Rr(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Lr(e,n):e instanceof RegExp?e:Lr(e,n)}function Q(e){if(e instanceof Set){let t=new Set;for(let n of e)t.add(Rr(n,!0,!1));return t}return e}function zr(e,t){let n=new Set;for(let t of e||[])n.add(Rr(t,!0,!0));for(let e of t||[])n.add(Rr(e,!1,!0));return n}function Br(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>Ge(e)):[]}function Vr(e){return mr===!0||P(e,mr)?new Set([`patch`]):hr===!0||P(e,hr)?new Set([`patch`,`minor`]):new Set([`patch`,`minor`,`major`])}function Hr(e){return{useGreatest:typeof J==`boolean`?J:P(e,J),usePre:typeof fr==`boolean`?fr:P(e,fr),useRel:typeof pr==`boolean`?pr:P(e,pr),semvers:Vr(e)}}function Ur(t){return t.replace(`${e()}/`,``).replace(`${e()}\\`,``)}function $(e,t,n,r,i){if(i===`engines`&&Be.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=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(ar)){let r=l(e,t),i=null;try{i=m(r)}catch{}i?.isFile()&&n.add(u(r))}try{for(let t of _(e))if($n(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 Mn(r))n.add(e)}else throw Error(`${e} is neither a file nor directory`)}else{for(let t of Object.keys(ar)){let r=Er(t,e());r&&n.add(u(r))}for(let t of Xn){let r=Er(t,e());r&&n.add(u(r))}try{for(let t of _(e()))if($n(t)&&!Xn.includes(t)){let r=l(e(),t);try{m(r).isFile()&&n.add(u(r))}catch{}}}catch{}let t=Er(l(`.github`,`workflows`),e());if(t)for(let e of Mn(t))n.add(e)}return n}async function Gr(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 Kr(){for(let e of[a,i])e?._handle?.setBlocking?.(!0);Qe();let e=typeof K.sockets==`string`&&Number(K.sockets)||25,{help:t,version:n,file:r,types:o,update:l,indirect:d,include:f,exclude:p,pin:m,cooldown:h}=K;t&&(a.write(`usage: updates [options] [files...]
|
|
5
6
|
|
|
6
7
|
Options:
|
|
7
8
|
-u, --update Update versions and write dependency file
|
|
@@ -26,6 +27,7 @@ import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,version
|
|
|
26
27
|
-U, --error-on-unchanged Exit with code 0 when updates are available and 2 when not
|
|
27
28
|
-j, --json Output a JSON object
|
|
28
29
|
-x, --no-cache Disable HTTP cache
|
|
30
|
+
-c, --color Force color output
|
|
29
31
|
-n, --no-color Disable color output
|
|
30
32
|
-v, --version Print the version
|
|
31
33
|
-V, --verbose Print verbose output to stderr
|
|
@@ -44,4 +46,4 @@ import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,version
|
|
|
44
46
|
$ updates -f .github
|
|
45
47
|
$ updates -f Dockerfile
|
|
46
48
|
$ updates -f docker-compose.yml
|
|
47
|
-
`),await
|
|
49
|
+
`),await Nr()),n&&(console.info($e),await Nr());let _={},v={},y={},b={},x=Date.now(),S=0,ee=U(r),te=ee instanceof Set?ee:cr.length?new Set:!1;if(te instanceof Set)for(let e of cr)te.add(e);let ne=Wr(te),re={},ie={},ae=Br(f),C=Br(p),w=Tr(m),se=zr(ae,[]),ce=zr(C,[]),le=[],T=[],ue={};function E(e,t,n){_.docker||={};for(let r of n)for(let{ref:n}of Hn(e,r)){if(!$(n.fullImage,`docker`,se,ce,`docker`))continue;let e=`${t}${n.fullImage}`;if(_.docker[e])continue;let r=Bn(n.tag);r&&(_.docker[e]={old:r.version,oldOrig:n.tag},T.push({key:e,fullImage:n.fullImage,ref:n}))}}for(let e of ne){if(jn(e)){let t=_r.has(`actions`),n=_r.has(`docker`);if(!t&&!n)continue;let r=Dr(e),i=Ur(e);if(re[i]={absPath:e,content:r},t){_.actions||={};let e=Array.from(r.matchAll(Tn),e=>En(e[1])).filter(e=>e!==null);for(let t of e){if(!$(t.name,`actions`,se,ce,`actions`))continue;let e=`${i}${t.name}`;_.actions[e]||(_.actions[e]={old:t.ref},le.push({...t,key:e,apiUrl:Dn(t.host,vr)}))}}n&&(ie[i]={absPath:e,content:r,fileType:`workflow`},E(r,i,[Fn,In,Ln]));continue}let t=s(e);if($n(t)){if(!_r.has(`docker`))continue;let n=Dr(e),r=Ur(e);ie[r]={absPath:e,content:n,fileType:Qn(t)?`dockerfile`:`compose`},E(n,r,[er(t)]);continue}let n=ar[t];if(!_r.has(n))continue;b[n]=e,_[n]||(_[n]={});let r=c(u(e)),i=await Gr(r),a=zr(ae,i?.include??[]),l=zr(C,i?.exclude??[]),f={...i?.pin,...w},p=[];Array.isArray(o)?p=o.filter(e=>typeof e==`string`):`types`in i&&Array.isArray(i.types)?p=i.types:n===`npm`?p=ze:n===`pypi`?p=Array.from(Ve):n===`go`?p=d?Array.from(He):He.filter(e=>e!==`indirect`):n===`cargo`&&(p=Array.from(Ue));let m={};y[n]=Dr(e);try{if(n===`npm`)m=JSON.parse(y[n]);else if(n===`pypi`||n===`cargo`)m=oe(y[n]);else if(n===`go`){let e=gn(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]||{}:We(m,e)||{},Array.isArray(t)&&n===`pypi`)for(let{name:r,version:i}of Re(t))$(r,n,a,l,e)&&(_[n][`${e}${r}`]={old:Zt(i),oldOrig:i});else if(typeof t==`string`){let[r,i]=t.split(`@`);$(r,n,a,l,e)&&(_[n][`${e}${r}`]={old:Zt(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);je(t)&&(_[n][`${e}${r}`]={old:Zt(t),oldOrig:t})}else if(n===`npm`&&H(i)&&$(r,n,a,l,e)){let t=qt(i,r);_[n][`${e}${r}`]={old:t.version,oldOrig:i}}else n!==`go`&&je(i)&&$(r,n,a,l,e)?_[n][`${e}${r}`]={old:Zt(i),oldOrig:i}:n===`npm`&&Kt(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:wn(i),oldOrig:F(i)})}S+=Object.keys(_[n]).length+Object.keys(v).length,ue[n]={config:i,projectDir:r,pin:f}}if(_.actions&&(S+=Object.keys(_.actions).length),_.docker&&(S+=Object.keys(_.docker).length),S===0)return Mr(`No dependencies found, nothing to do.`);let D=[];for(let t of Object.keys(ue)){if(!_[t]||!Object.keys(_[t]).length&&!Object.keys(v).length)continue;let{config:n,projectDir:r,pin:i}=ue[t];D.push((async()=>{let a=new Map;await Ze(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 Jt(s,o,X);else if(r&&Kt(r))try{c=await Wt(s,o,n,K,X)}catch{delete _[t][e];return}else c=await Wt(s,o,n,K,X)}else c=t===`go`?await vn(s,o,_[t][e].oldOrig||_[t][e].old,r,X,wr):t===`cargo`?await nr(s,o,X):await tn(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}=Hr(l.name),h=_[t][e].old,g=_[t][e].oldOrig,v=i[s],y=at(l,{usePre:f,useRel:p,useGreatest:d,semvers:m,range:h,mode:t,pinnedRange:v},{allowDowngrade:gr,matchesAny:P,isGoPseudoVersion:fn}),b=``;if([`go`,`pypi`,`cargo`].includes(t)&&y)b=y;else if(y)if(g&&Kt(g))b=String(Pt()[`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=Xt(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:Gt(l.name,y,n,K,X)});else if(t===`pypi`)_[t][e].info=_t(l,u,l.info.name);else if(t===`go`){let n=l.newPath||s;_[t][e].info=Sn(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=_t({repository:i.repository,homepage:i.homepage},null,n),i.date&&Y(_[t][e],i.date))}if(Object.keys(v).length){let n=(await Ze(Object.entries(v),([e,t])=>{let n=e.split(`\0`)[1];return en(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:dt.test(o)?o.substring(0,7):o,newPrint:dt.test(s)?s.substring(0,7):s,info:`https://github.com/${i}/${a}`},c&&Y(_[t][n],c)}}let o=h??n.cooldown;o&&Or(_[t],String(o),x)})())}if(le.length&&D.push((async()=>{let t=new Map;for(let e of le){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 Ze(t.values(),async({apiUrl:e,owner:t,repo:n,infos:r})=>{let i=await pt(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 On(e,t,n,r,X);return c.set(r,i),i}let u=[];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}=Hr(e.name),l=it({},o,{range:`0.0.0`,semvers:new Set([`patch`,`minor`,`major`]),usePre:t,useRel:n,useGreatest:!0,pinnedRange:w[e.name]});if(!l){delete _.actions[e.key];continue}let d=a.find(e=>F(e)===l);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,u.push({key:e.key,commitSha:f})}else{let t=z(F(e.ref));if(!t){delete _.actions[e.key];continue}let{useGreatest:n,usePre:s,useRel:l,semvers:d}=Hr(e.name),f=it({},o,{range:t,semvers:d,usePre:s,useRel:l,useGreatest:n||!0,pinnedRange:w[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=kn(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&&u.push({key:e.key,commitSha:h.commitSha})}}let d=await Promise.all(u.map(({commitSha:e})=>l(e)));for(let[e,{key:t}]of u.entries()){let n=_.actions[t];n&&d[e]&&Y(n,d[e])}},{concurrency:e}),h&&Or(_.actions,String(h),x),Object.keys(_.actions).length||delete _.actions})()),T.length&&D.push((async()=>{let t=new Map;for(let e of T)t.has(e.fullImage)||t.set(e.fullImage,[]),t.get(e.fullImage).push(e);await Ze(t.entries(),async([e,t])=>{let n;try{let[t]=await Wn(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}=Hr(e.fullImage),a=Gn(n.tags,r,i);if(!a){delete _.docker[e.key];continue}t.new=a.newTag,t.info=tr(e.ref),Y(t,a.date)}},{concurrency:e}),h&&Or(_.docker,String(h),x),Object.keys(_.docker).length||delete _.docker})()),await Promise.all(D),!kr(_))return Mr(`All dependencies are up to date.`);let O=new Map;if(_.actions)for(let[e,t]of Object.entries(_.actions)){let[n,r]=e.split(`\0`);O.has(n)||O.set(n,[]),O.get(n).push({name:r,oldRef:t.old,newRef:t.new})}let k=new Map;if(_.docker)for(let[e,t]of Object.entries(_.docker)){let[n]=e.split(`\0`);k.has(n)||k.set(n,{}),k.get(n)[e]=t}let de=Pr(_);if(l){for(let e of Object.keys(_))if(Object.keys(_[e]).length){if(e===`actions`){for(let[e,t]of O){let{absPath:n,content:r}=re[e]||{};if(n){try{Z(n,An(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 k){let n=ie[e];if(!n)continue;let{absPath:r,fileType:i}=n,a;try{a=g(r,`utf8`)}catch{continue}try{Z(r,(i===`dockerfile`?qn:i===`compose`?Jn:Yn)(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]=bn(t,_[e]);Z(b[e],n),xn(c(u(b[e])),r,Z)}else if(e===`cargo`)Z(b[e],ir(t,_[e]));else{let n=e===`npm`?Yt:nn;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 Nr(void 0,de)}try{await Kr()}catch(e){await Nr(e)}export{};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "updates",
|
|
3
|
-
"version": "17.13.
|
|
3
|
+
"version": "17.13.4",
|
|
4
4
|
"description": "CLI dependency update tool for npm, uv, cargo, go and actions",
|
|
5
5
|
"author": "silverwind",
|
|
6
6
|
"repository": "silverwind/updates",
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@types/node": "25.5.0",
|
|
20
20
|
"@typescript/native-preview": "7.0.0-dev.20260401.1",
|
|
21
|
+
"@vitest/coverage-v8": "4.1.2",
|
|
21
22
|
"eslint": "10.1.0",
|
|
22
23
|
"eslint-config-silverwind": "130.1.0",
|
|
23
24
|
"timerel": "5.8.6",
|
|
@@ -28,6 +29,6 @@
|
|
|
28
29
|
"updates-config-silverwind": "2.0.1",
|
|
29
30
|
"versions": "14.2.6",
|
|
30
31
|
"vitest": "4.1.2",
|
|
31
|
-
"vitest-config-silverwind": "11.
|
|
32
|
+
"vitest-config-silverwind": "11.1.3"
|
|
32
33
|
}
|
|
33
34
|
}
|