updates 17.7.0 → 17.8.0

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.
Files changed (2) hide show
  1. package/dist/index.js +7 -4
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -18,8 +18,11 @@ import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,version
18
18
  `&&e[o]!==`\r`)throw new C(`unexpected character encountered`,{toml:e,ptr:o});o+=+(e[o]===`,`)}return[r,o]}o=ce(e,t,`,`,n);let s=_e(e,t,o-+(e[o-1]===`,`));if(!s[0])throw new C(`incomplete key-value declaration: no value specified`,{toml:e,ptr:t});return n&&s[1]>-1&&(o=E(e,t+s[1]),o+=+(e[o]===`,`)),[ge(s[0],e,t,i),o]}let ye=/^[a-zA-Z0-9-_]+[ \t]*$/;function be(e,t,n=`=`){let r=t-1,i=[],a=e.indexOf(n,t);if(a<0)throw new C(`incomplete key-value: cannot find end of key`,{toml:e,ptr:t});do{let o=e[t=++r];if(o!==` `&&o!==` `)if(o===`"`||o===`'`){if(o===e[t+1]&&o===e[t+2])throw new C(`multiline strings are not allowed in keys`,{toml:e,ptr:t});let s=D(e,t);if(s<0)throw new C(`unfinished string encountered`,{toml:e,ptr:t});r=e.indexOf(`.`,s);let c=e.slice(s,r<0||r>a?a:r),l=w(c);if(l>-1)throw new C(`newlines are not allowed in keys`,{toml:e,ptr:t+r+l});if(c.trimStart())throw new C(`found extra tokens after the string part`,{toml:e,ptr:s});if(a<s&&(a=e.indexOf(n,s),a<0))throw new C(`incomplete key-value: cannot find end of key`,{toml:e,ptr:t});i.push(he(e,t,s))}else{r=e.indexOf(`.`,t);let n=e.slice(t,r<0||r>a?a:r);if(!ye.test(n))throw new C(`only letter, numbers, dashes and underscores are allowed in keys`,{toml:e,ptr:t});i.push(n.trimEnd())}}while(r+1&&r<a);return[i,E(e,a+1,!0,!0)]}function xe(e,t,n,r){let i={},a=new Set,o;for(t++;(o=e[t++])!==`}`&&o;)if(o===`,`)throw new C(`expected value, found comma`,{toml:e,ptr:t-1});else if(o===`#`)t=T(e,t);else if(o!==` `&&o!==` `&&o!==`
19
19
  `&&o!==`\r`){let o,s=i,c=!1,[l,u]=be(e,t-1);for(let n=0;n<l.length;n++){if(n&&(s=c?s[o]:s[o]={}),o=l[n],(c=Object.hasOwn(s,o))&&(typeof s[o]!=`object`||a.has(s[o])))throw new C(`trying to redefine an already defined value`,{toml:e,ptr:t});!c&&o===`__proto__`&&Object.defineProperty(s,o,{enumerable:!0,configurable:!0,writable:!0})}if(c)throw new C(`trying to redefine an already defined value`,{toml:e,ptr:t});let[d,f]=ve(e,u,`}`,n-1,r);a.add(d),s[o]=d,t=f}if(!o)throw new C(`unfinished table encountered`,{toml:e,ptr:t});return[i,t]}function Se(e,t,n,r){let i=[],a;for(t++;(a=e[t++])!==`]`&&a;)if(a===`,`)throw new C(`expected value, found comma`,{toml:e,ptr:t-1});else if(a===`#`)t=T(e,t);else if(a!==` `&&a!==` `&&a!==`
20
20
  `&&a!==`\r`){let a=ve(e,t-1,`]`,n-1,r);i.push(a[0]),t=a[1]}if(!a)throw new C(`unfinished array encountered`,{toml:e,ptr:t});return[i,t]}function Ce(e,t,n,r){let i=t,a=n,o,s=!1,c;for(let t=0;t<e.length;t++){if(t){if(i=s?i[o]:i[o]={},a=(c=a[o]).c,r===0&&(c.t===1||c.t===2))return null;if(c.t===2){let e=i.length-1;i=i[e],a=a[e].c}}if(o=e[t],(s=Object.hasOwn(i,o))&&a[o]?.t===0&&a[o]?.d)return null;s||(o===`__proto__`&&(Object.defineProperty(i,o,{enumerable:!0,configurable:!0,writable:!0}),Object.defineProperty(a,o,{enumerable:!0,configurable:!0,writable:!0})),a[o]={t:t<e.length-1&&r===2?3:r,d:!1,i:0,c:{}})}if(c=a[o],c.t!==r&&!(r===1&&c.t===3)||(r===2&&(c.d||(c.d=!0,i[o]=[]),i[o].push(i={}),c.c[c.i++]=c={t:1,d:!1,i:0,c:{}}),c.d))return null;if(c.d=!0,r===1)i=s?i[o]:i[o]={};else if(r===0&&s)return null;return[o,i,c.c]}function we(e,{maxDepth:t=1e3,integersAsBigInt:n}={}){let r={},i={},a=r,o=i;for(let s=E(e,0);s<e.length;){if(e[s]===`[`){let t=e[++s]===`[`,n=be(e,s+=+t,`]`);if(t){if(e[n[1]-1]!==`]`)throw new C(`expected end of table declaration`,{toml:e,ptr:n[1]-1});n[1]++}let c=Ce(n[0],r,i,t?2:1);if(!c)throw new C(`trying to redefine an already defined table or value`,{toml:e,ptr:s});o=c[2],a=c[1],s=n[1]}else{let r=be(e,s),i=Ce(r[0],a,o,0);if(!i)throw new C(`trying to redefine an already defined table or value`,{toml:e,ptr:s});let c=ve(e,r[1],void 0,t,n);i[1][i[0]]=c[0],s=c[1]}if(s=E(e,s,!0),e[s]&&e[s]!==`
21
- `&&e[s]!==`\r`)throw new C(`each key-value declaration must be followed by an end-of-line`,{toml:e,ptr:s});s=E(e,s)}return r}const Te=/^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9._-]+(?:\.[a-zA-Z0-9._-]+)*))?(?:\+[a-zA-Z0-9._-]+)?$/,Ee=new Map;function k(e){if(typeof e!=`string`)return null;let t=Ee.get(e);if(t!==void 0)return t;let n=Te.exec(e.trim());if(!n)return Ee.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 Ee.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 Oe(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function A(e,t){let n=Oe(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 ke(e){return k(e)}const Ae=new Map,je=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function Me(e){if(typeof e!=`string`)return null;let t=Ae.get(e);if(t!==void 0)return t;let n=je.exec(e);if(!n)return Ae.set(e,null),null;let r={version:`${n[1]||`0`}.${n[2]||`0`}.${n[3]||`0`}`};return Ae.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(Oe(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 Ne(e,t){let n=k(e),r=k(t);return!n||!r?!1:A(n,r)>0}function Pe(e,t){let n=k(e),r=k(t);return!n||!r?!1:A(n,r)>=0}function Fe(e,t){let n=k(e),r=k(t);return!n||!r?!1:A(n,r)<0}function Ie(e,t){let n=k(e),r=k(t);return!n||!r?!0:A(n,r)!==0}function Le(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 Re(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 ze(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 Be(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 Ve(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 He(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 Ue=new Map;function We(e){let t=Ue.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=Ve(t),t=Be(t),t=ze(t),t=He(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=Le(t);if(!n)return Ue.set(e,null),null;i.push(n)}if(i.length===0)return Ue.set(e,null),null;r.push(i)}let i=r.length?r:null;return Ue.set(e,i),i}function Ge(e,t){for(let n of t)if(!Re(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 Ke(e,t){let n=k(e);if(!n)return!1;let r=We(t);if(!r)return!1;for(let e of r)if(e.length===0||Ge(n,e))return!0;return!1}function qe(e){if(typeof e!=`string`)return null;try{return We(e)?e:null}catch{return null}}const Je=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],Ye={"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`},Xe={sec:`second`,min:`minute`};function Ze(e){return e instanceof Date?e.getTime():typeof e==`string`?Date.parse(e):e}function Qe(e,{now:t,noAffix:n=!1,times:r=Je,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=Ye,longUnits:l=!1}={}){let u=Ze(e),d=t===void 0?Date.now():Ze(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&&Xe[t[2]]||t[2])+(m>1?`s`:``);break}}let g=`${m} ${h}`,_;return _=n?g:p?`in ${g}`:`${g} ago`,s?c[_]??_:_}function $e(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 et(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 tt=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],nt=[`node`,`deno`,`bun`],rt=[`tool.poetry.dependencies`,`tool.poetry.dev-dependencies`,`tool.poetry.test-dependencies`,`tool.poetry.group.dev.dependencies`,`tool.poetry.group.test.dependencies`],it=[`project.dependencies`,`project.optional-dependencies`,`dependency-groups.dev`,`dependency-groups.lint`,`dependency-groups.test`],at=[`deps`,`replace`];function P(e,t){for(let n of t instanceof Set?t:[])if(n.test(e))return!0;return!1}function ot(e,t){return t.split(`.`).reduce((e,t)=>e?.[t]??null,e)}function st(e){return e.split(`,`).filter(Boolean)}function ct(e,t,n){return!e||!t?!0:(n-Date.parse(e))/(24*3600*1e3)>=t}function lt(){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 ut(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+=`
22
- `)}return r}const dt={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function ft(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=dt[n.toLowerCase()];if(r)return Number(e)*r}let n=Number(e);if(!Number.isFinite(n))throw Error(`Invalid cooldown value: ${e}`);return n}function pt(){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 mt=`17.7.0`,ht=5e3,F=e=>e.replace(/^v/,``),I=e=>e.replace(/[|\\{}()[\]^$+*?.-]/g,`\\$&`),L=e=>e.endsWith(`/`)?e.substring(0,e.length-1):e;function gt(e,t){return{headers:{"user-agent":`updates/${mt}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function _t(e,t,n,r,i,a,o){n&&r&&i&&r(`${i(`fetch`)} ${e}`);let s=await fetch(e,t);return n&&r&&a&&o&&r(`${s.ok?a(s.status):o(s.status)} ${e}`),s}function R(e){let t=ke(e);return t?!!t.prerelease.length:!1}function vt(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}function yt(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=z(e),s=z(t);if(!o||!s)return!0;let c=vt(e)||R(e),l=R(t);return c&&!l?Ne(s,o)||n:!l&&Fe(s,o)?r===!0||a(i,r):!0}function z(e){try{return Me(e)?.version??``}catch{return``}}function bt(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s}){let c=z(n);if(!c)return c;i=vt(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=ke(n);if(!t?.version||t.prerelease.length&&(!i||a))continue;let c=t.version;if(s&&!Ke(c,s))continue;let d=M(u,c);if(!(!d||!r.has(d)))if(o||!(`time`in e))Pe(z(c),u)&&(u=c);else{let t=Date.parse(e.time[n]);t>=0&&t>l&&(u=c,l=t)}}return u||null}function xt(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`)d=Object.keys(e.versions).filter(e=>j(e));else if(t===`go`){let t=z(n);if(!t)return null;let r=a||vt(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)&&yt(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)&&yt(f,e.sameMajorNew,d))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}return null}let f=bt(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=vt(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 yt(n,f,g)?f:null;let _=M(d,r);return _&&_!==`prerelease`&&!o.has(_.replace(/^pre/,``))||i&&R(r)?f:Fe(r,d)&&!h?yt(n,r,g)?r:null:!p&&h&&!a||s&&!Ke(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 wt(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 Tt(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||Ne(e,i))&&(n=t,i=e)}if(Ie(r,i))return n}else{let t=e.at(-1);if(!t)return null;let n=F(t);if(!j(n))return null;if(Ie(r,n))return t}return null}function Et(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 Ot(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function kt(e,t,n,r){try{let i=await wt(`${e}/repos/${t}/${n}/tags?per_page=100`,r);if(!i?.ok)return[];let a=Ot(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)=>wt(`${e}/repos/${t}/${n}/tags?per_page=100&page=${a+2}`,r)));for(let e of o)e?.ok&&a.push(...Ot(await e.json()))}return a}catch{return[]}}function At(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 jt(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 Mt(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function Nt({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=Et(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${Mt(a)}/${e.directory}`)),a||t||``)}function Pt(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 Ft(e){try{return Pt(h(e,`utf-8`))}catch{return}}function It(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 Lt(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 Rt(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=Ft(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(It(`.${e}rc`));let u=Lt(`${e}_`);return u.config&&c(u.config),Object.assign({},...o,u,s.length?{configs:s,config:s[s.length-1]}:void 0)}const zt=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,Bt=/^([^/]+)\/([^/#]+)?.*?\/([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,Vt=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,Ht=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,Ut=`https://registry.npmjs.org`;let B=null;const Wt=new Map;function Gt(){return B||Rt(`npm`,{registry:Ut})}function Kt(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function qt(e,t){let n=t[`${e}:_authToken`]||t[`${e}/:_authToken`];if(n)return{token:Kt(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(Kt(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:Kt(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=qt(`//${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:Kt(i),type:`Basic`}}function Jt(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function Yt(e,t){B||=Gt();let n=e.startsWith(`@`)?(/@[a-z0-9][\w-.]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=Wt.get(r);if(i)return i;let a;if(!e.startsWith(`@`))a={auth:V(t,B),registry:t};else{let e=L(Jt(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 Wt.set(r,a),a}async function Xt(e,t,n,r,i){B||=Gt();let{auth:a,registry:o}=Yt(e,L((typeof r.registry==`string`?r.registry:!1)||n.registry||B.registry||Ut)),c=`${o}/${(t===`resolutions`?s(e):e).replace(/\//g,`%2f`)}`,l=await i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...gt(a?.type,a?.token)});if(l?.ok)return[await l.json(),t,o,e];At(l,c,e,o)}function H(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Zt(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 $t(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]}At(s,o,e,`JSR`)}function en(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 tn(e,t,n){let r=e.replace(Ht,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 nn(e){let t=e.match(Vt);return t?.length===1?e.replace(Vt,z(t[0])):e}async function rn(e,t,n){try{let r=await wt(`${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 an(e,t,n){return(await kt(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function on(e,t,n,r){let i=t.old.replace(zt,``),[a,o,s,c]=Bt.exec(i)||[];if(!o||!s||!c)return null;if(Dt.test(c)){let{hash:n,commit:i}=await rn(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=Tt(await an(o,s,r),c,n);if(t)return{key:e,newRange:t,user:o,repo:s,oldRef:c,newRef:t}}return null}async function sn(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];At(i,r,e,n.pypiApiUrl)}function cn(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`),`${o} = "${t[e].new}"`),n=n.replace(RegExp(`("${I(o)} *[<>=~]+ *)${I(s)}(")`,`g`),(n,r,i)=>`${r}${t[e].new}${i}`)}return n}const ln=x(S);function un(){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 dn(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function fn(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function pn(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}function mn(e){let t=/\/v(\d+)$/.exec(e);return t?parseInt(t[1]):1}function hn(e,t){return t<=1?e.replace(/\/v\d+$/,``):`${e.replace(/\/v\d+$/,``)}/v${t}`}function gn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function _n(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function vn(e,t,n){if(!t)return null;let r=t,i=await n(e+2);if(!i)return r;r=i;for(let t=e+3;t<=e+100;t+=20){let i=Math.min(t+20,e+101),a=await Promise.all(Array.from({length:i-t},(e,r)=>n(t+r))),o=!1;for(let e of a){if(!e)break;r=e,o=!0}if(!o||a.some(e=>!e))break}return r}function yn(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 bn(e){let t={},n={},r=new Set,i=e.split(/\r?\n/),a=!1,o=!1;for(let e of i){let i=e.trim();if(/^require\s*\(/.test(i)){a=!0;continue}if(/^replace\s*\(/.test(i)){o=!0;continue}if(i===`)`){a=!1,o=!1;continue}if(i.includes(`// indirect`))continue;if(o||/^replace\s+/.test(i)){let e=o?/^(\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,i,a]=e;!i.startsWith(`./`)&&!i.startsWith(`/`)&&!i.startsWith(`../`)&&(n[i]=a,r.add(t))}continue}let s=a?/^(\S+)\s+(v\S+)/.exec(i):/^require\s+(\S+)\s+(v\S+)/.exec(i);s&&(t[s[1]]=s[2])}for(let e of r)delete t[e];return{deps:t,replace:n}}async function xn(e,n,r,i,a){let o=mn(e),s=async(e,n)=>{try{let{stdout:r}=await ln(`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,l]=await Promise.all([s(e,a.fetchTimeout),s(hn(e,o+1),a.goProbeTimeout)]);return c?yn(e,n,r,await vn(o,l,t=>s(hn(e,t),a.goProbeTimeout)),c.Version,c.Time):_n(e,r,n)}async function Sn(e,t,n,r,i,a){if(fn(e,a))return xn(e,t,n,r,i);let o=pn(e),s=mn(e),c=async t=>{let n=hn(e,t);return i.doFetch(`${i.goProxyUrl}/${pn(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout)}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},[l,u]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout)}),c(s+1)]);if(!l.ok)return _n(e,n,t);let d,f;try{let e=await l.json();d=e.Version,f=e.Time}catch{return _n(e,n,t)}return yn(e,t,n,await vn(s,u,c),d,f)}function Cn(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 wn(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}let u=mn(s),d=parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=hn(s,d);n=n.replace(RegExp(`${I(s)} +v${I(c)}`,`g`),`${e} v${l}`),r[s]=e}else n=n.replace(RegExp(`(${I(s)}) +v${I(c)}`,`g`),`$1 v${l}`);n=Cn(n,s)}return[n,r]}function Tn(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 En(e){let t=`https://${Dn(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[e,i,a,...o]=r;return n.pathname=`/${i}/${a}/${Mt(t)}/${o.join(`/`)}`,n.toString()}else return t}function Dn(e){return/\/v[0-9]$/.test(e)?c(e):e}function On(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const kn=/^\s*-?\s*uses:\s*['"]?([^'"#\s]+)['"]?/gm;function An(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 jn(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function Mn(e,t,n,r,i){try{let a=await wt(`${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 Nn(e,t){return jt(ke(F(e))?.version??F(e),t)}function Pn(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 Fn(e){let t=e.replace(/\\/g,`/`);return/\.github\/workflows\/[^/]+\.(ya?ml)$/.test(t)}function In(e){try{return g(e).filter(e=>/\.(ya?ml)$/.test(e)).map(t=>u(l(e,t)))}catch{return[]}}const Ln=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,Rn=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,zn=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,Bn=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}]+)['"]?\s*$/gm,Vn=/^\s*-?\s*uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function Hn(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 Un(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||!Ln.test(r)))return null;let{registry:i,namespace:a,repo:o}=Hn(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function Wn(e){let t=Ln.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Gn(e,t){let n=Wn(t);return n?jt(e,n.version,n.suffix):t}function Kn(e,t){let n=[];for(let r of e.matchAll(t)){let e=Un(r[1]);e&&n.push({ref:e,match:r[1]})}return n}async function qn(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 Jn(e,t,n){let{registry:r,namespace:i,repo:a}=Hn(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await qn(i,a,n),name:e},t,null,e]}function Yn(e,t,n){let r=Wn(t);if(!r)return null;let i=Me(F(r.version))?.version;if(!i)return null;let a=i,o=``,s=``;for(let[t,i]of Object.entries(e)){let e=Wn(t);if(!e||e.suffix!==r.suffix)continue;let c=Me(F(e.version))?.version;if(!c||!j(c))continue;let l=M(a,c);!l||!n.has(l)||Pe(c,a)&&(a=c,o=t,s=i)}if(!o||a===i)return null;let c=Gn(a,t);return c===t?null:{newTag:c,date:s}}function Xn(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 Zn(e,t){return Xn(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}`,`g`)])}function Qn(e,t){return Xn(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}`,`g`)])}function $n(e,t){return Xn(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}`,`g`)])}const er=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function tr(e){return/^docker-.+\.ya?ml$/.test(e)}function nr(e){return/^Dockerfile(\..+)?$/.test(e)}function rr(e){return nr(e)||tr(e)}function ir(e){return nr(e)?Rn:zn}function ar(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const or={"package.json":`npm`,"pyproject.toml":`pypi`,"go.mod":`go`},sr={"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`},dockerapi:{type:`string`},greatest:{short:`g`,type:`string`,multiple:!0},help:{short:`h`,type:`boolean`},include:{short:`i`,type:`string`,multiple:!0},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`?st(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function cr(e){for(let[t,{short:n}]of Object.entries(sr))if(t===e||n===e)return t;return``}const W=b({strict:!1,allowPositionals:!0,tokens:!0,options:sr}),G=W.values;for(let[e,t]of W.tokens.entries())if(t.kind===`option`&&t.value?.startsWith(`-`)){let n=cr(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,lr=W.positionals,[ur,dr,q]=[`magenta`,`red`,`green`].map(e=>K[`no-color`]?String:t=>te(e,String(t))),J=Z(U(K.greatest)),fr=Z(U(K.prerelease)),pr=Z(U(K.release)),mr=Z(U(K.patch)),hr=Z(U(K.minor)),gr=Z(U(K[`allow-downgrade`])),_r=U(K.modes)||new Set([`npm`,`pypi`,`go`,`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):un(),Sr=typeof K.dockerapi==`string`?L(K.dockerapi):`https://hub.docker.com`,Cr=dn();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&&qe(r)&&(t[e]=r)}}else if(typeof e==`string`){let[n,r]=e.split(`=`,2);n&&r&&qe(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){console.error(`${lt()} ${e}`)}const Dr=typeof K.timeout==`string`?Number(K.timeout):0,Y={fetchTimeout:Dr||ht,goProbeTimeout:Dr?Dr/2:2500,forgeApiUrl:vr,pypiApiUrl:yr,jsrApiUrl:br,goProxyUrl:xr,dockerApiUrl:Sr,doFetch:(e,t)=>_t(e,t,!!K.verbose,Er,ur,q,dr),verbose:!!K.verbose};async function Or(e){console.info(K.json?JSON.stringify({message:e}):e),await X()}async function X(e,t){if(e){let t=e.stack??e.message,n=e.cause;K.json?console.info(JSON.stringify({error:t,cause:n})):(console.info(dr(t)),n&&console.info(dr(`Caused by: ${String(n)}`)))}r===`win32`&&Number(o?.node?.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),n(t||e?1:0)}function kr(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`?On(n.oldOrig):n.oldOrig),t===`go`&&(n.new=On(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=0;for(let n of Object.keys(e))t+=Object.keys(e[n]).length;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(Mr(e));return K[`error-on-outdated`]?t?2:0:K[`error-on-unchanged`]?t?0:2:0}function Ar(e,t){r===`win32`&&v(e,0),y(e,t,r===`win32`?{flag:`r+`}:void 0)}const jr=e=>ee(e).length;function Mr(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`?Dn(s):s),n&&l.push(a),l.push($e(o.old,o.new,dr)),l.push($e(o.new,o.old,q)),l.push(o.age||``),l.push(o.info||``),r.push(l)}return ut(r,jr)}function Nr(e,t){return RegExp(`^${I(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Pr(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Nr(e,n):e instanceof RegExp?e:Nr(e,n)}function Z(e){if(e instanceof Set){let t=new Set;for(let n of e)t.add(Pr(n,!0,!1));return t}return e}function Q(e,t){let n=new Set;for(let t of e||[])n.add(Pr(t,!0,!0));for(let e of t||[])n.add(Pr(e,!1,!0));return n}function Fr(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>st(e)):[]}function Ir(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 Lr(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:Ir(e)}}function Rr(t){return t.replace(`${e()}/`,``).replace(`${e()}\\`,``)}function $(e,t,n,r,i){if(i===`engines`&&nt.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 zr(t){let n=new Set,r=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()){let t=u(e);n.add(t),r.add(t)}else if(t?.isDirectory()){for(let t of Object.keys(or)){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(rr(t)){let i=l(e,t);try{m(i).isFile()&&(n.add(u(i)),r.add(u(i)))}catch{}}}catch{}let t=u(e).replace(/\\/g,`/`),i;i=t.endsWith(`.github/workflows`)?t:t.endsWith(`.github`)?l(t,`workflows`):l(t,`.github`,`workflows`);for(let e of In(i))n.add(e),r.add(e)}else throw Error(`${e} is neither a file nor directory`)}else{for(let t of Object.keys(or)){let r=Tr(t,e());r&&n.add(u(r))}for(let t of er){let r=Tr(t,e());r&&n.add(u(r))}try{for(let t of g(e()))if(rr(t)&&!er.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 In(t))n.add(e)}return[n,r]}async function Br(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 Vr(){for(let e of[a,i])e?._handle?.setBlocking?.(!0);pt();let e=typeof K.sockets==`number`?K.sockets:96,{help:t,version:n,file:r,types:o,update:l,include:d,exclude:f,pin:p,cooldown:m}=K;t&&(a.write(`usage: updates [options] [files...]
21
+ `&&e[s]!==`\r`)throw new C(`each key-value declaration must be followed by an end-of-line`,{toml:e,ptr:s});s=E(e,s)}return r}const Te=/^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9._-]+(?:\.[a-zA-Z0-9._-]+)*))?(?:\+[a-zA-Z0-9._-]+)?$/,Ee=new Map;function k(e){if(typeof e!=`string`)return null;let t=Ee.get(e);if(t!==void 0)return t;let n=Te.exec(e.trim());if(!n)return Ee.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 Ee.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 Oe(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function A(e,t){let n=Oe(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 ke(e){return k(e)}const Ae=new Map,je=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function Me(e){if(typeof e!=`string`)return null;let t=Ae.get(e);if(t!==void 0)return t;let n=je.exec(e);if(!n)return Ae.set(e,null),null;let r={version:`${n[1]||`0`}.${n[2]||`0`}.${n[3]||`0`}`};return Ae.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(Oe(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 Ne(e,t){let n=k(e),r=k(t);return!n||!r?!1:A(n,r)>0}function Pe(e,t){let n=k(e),r=k(t);return!n||!r?!1:A(n,r)>=0}function Fe(e,t){let n=k(e),r=k(t);return!n||!r?!1:A(n,r)<0}function Ie(e,t){let n=k(e),r=k(t);return!n||!r?!0:A(n,r)!==0}function Le(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 Re(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 ze(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 Be(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 Ve(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 He(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 Ue=new Map;function We(e){let t=Ue.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=Ve(t),t=Be(t),t=ze(t),t=He(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=Le(t);if(!n)return Ue.set(e,null),null;i.push(n)}if(i.length===0)return Ue.set(e,null),null;r.push(i)}let i=r.length?r:null;return Ue.set(e,i),i}function Ge(e,t){for(let n of t)if(!Re(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 Ke(e,t){let n=k(e);if(!n)return!1;let r=We(t);if(!r)return!1;for(let e of r)if(e.length===0||Ge(n,e))return!0;return!1}function qe(e){if(typeof e!=`string`)return null;try{return We(e)?e:null}catch{return null}}const Je=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],Ye={"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`},Xe={sec:`second`,min:`minute`};function Ze(e){return e instanceof Date?e.getTime():typeof e==`string`?Date.parse(e):e}function P(e,{now:t,noAffix:n=!1,times:r=Je,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=Ye,longUnits:l=!1}={}){let u=Ze(e),d=t===void 0?Date.now():Ze(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&&Xe[t[2]]||t[2])+(m>1?`s`:``);break}}let g=`${m} ${h}`,_;return _=n?g:p?`in ${g}`:`${g} ago`,s?c[_]??_:_}function Qe(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 $e(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 et=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],tt=[`node`,`deno`,`bun`],nt=[`tool.poetry.dependencies`,`tool.poetry.dev-dependencies`,`tool.poetry.test-dependencies`,`tool.poetry.group.dev.dependencies`,`tool.poetry.group.test.dependencies`],rt=[`project.dependencies`,`project.optional-dependencies`,`dependency-groups.dev`,`dependency-groups.lint`,`dependency-groups.test`],it=[`deps`,`replace`];function F(e,t){for(let n of t instanceof Set?t:[])if(n.test(e))return!0;return!1}function at(e,t){return t.split(`.`).reduce((e,t)=>e?.[t]??null,e)}function ot(e){return e.split(`,`).filter(Boolean)}function st(e,t,n){return!e||!t?!0:(n-Date.parse(e))/(24*3600*1e3)>=t}function ct(){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 lt(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+=`
22
+ `)}return r}const ut={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function dt(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=ut[n.toLowerCase()];if(r)return Number(e)*r}let n=Number(e);if(!Number.isFinite(n))throw Error(`Invalid cooldown value: ${e}`);return n}function ft(){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 pt=`17.8.0`,mt=5e3,I=e=>e.replace(/^v/,``),L=e=>e.replace(/[|\\{}()[\]^$+*?.-]/g,`\\$&`),R=e=>e.endsWith(`/`)?e.substring(0,e.length-1):e;function ht(e,t){return{headers:{"user-agent":`updates/${pt}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function gt(e,t,n,r,i,a,o){n&&r&&i&&r(`${i(`fetch`)} ${e}`);let s=await fetch(e,t);return n&&r&&a&&o&&r(`${s.ok?a(s.status):o(s.status)} ${e}`),s}function z(e){let t=ke(e);return t?!!t.prerelease.length:!1}function _t(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}function vt(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=B(e),s=B(t);if(!o||!s)return!0;let c=_t(e)||z(e),l=z(t);return c&&!l?Ne(s,o)||n:!l&&Fe(s,o)?r===!0||a(i,r):!0}function B(e){try{return Me(e)?.version??``}catch{return``}}function yt(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s}){let c=B(n);if(!c)return c;i=_t(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=ke(n);if(!t?.version||t.prerelease.length&&(!i||a))continue;let c=t.version;if(s&&!Ke(c,s))continue;let d=M(u,c);if(!(!d||!r.has(d)))if(o||!(`time`in e))Pe(B(c),u)&&(u=c);else{let t=Date.parse(e.time[n]);t>=0&&t>l&&(u=c,l=t)}}return u||null}function bt(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`)d=Object.keys(e.versions).filter(e=>j(e));else if(t===`go`){let t=B(n);if(!t)return null;let r=a||_t(n),s=e=>z(e)&&(!r||i),d={useRel:i,allowDowngrade:c,name:e.name,matchesAny:l},f=e.old||n,p=B(e.new);if(p&&!u(e.new)&&!s(e.new)){let n=M(t,p);if(n&&o.has(n)&&vt(f,e.new,d))return e.new}let m=B(e.sameMajorNew);if(m&&!u(e.sameMajorNew)&&!s(e.sameMajorNew)){let n=M(t,m);if(n&&o.has(n)&&vt(f,e.sameMajorNew,d))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}return null}let f=yt(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=B(e.info.version)):r=e[`dist-tags`].latest;let d=B(n),p=_t(n),m=z(f),h=z(r),g={useRel:i,allowDowngrade:c,name:e.name,matchesAny:l};if(!i&&a||p&&m)return f;if(p&&!m)return vt(n,f,g)?f:null;let _=M(d,r);return _&&_!==`prerelease`&&!o.has(_.replace(/^pre/,``))||i&&z(r)?f:Fe(r,d)&&!h?vt(n,r,g)?r:null:!p&&h&&!a||s&&!Ke(r,s)?f:u||r}}const xt=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&xt.set(e.substring(0,t),e.substring(t+1))}function St(e){try{let t=xt.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 wt(e,t,n){let r=I(t);if(!j(r))return null;if(n){let n=t,i=I(t);for(let t of e){let e=I(t);j(e)&&(!n||Ne(e,i))&&(n=t,i=e)}if(Ie(r,i))return n}else{let t=e.at(-1);if(!t)return null;let n=I(t);if(!j(n))return null;if(Ie(r,n))return t}return null}function Tt(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 Et=/^[0-9a-f]{7,}$/i;function Dt(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function Ot(e,t,n,r){try{let i=await Ct(`${e}/repos/${t}/${n}/tags?per_page=100`,r);if(!i?.ok)return[];let a=Dt(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(...Dt(await e.json()))}return a}catch{return[]}}function kt(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 At(e,t,n=``){let r=t.startsWith(`v`),i=I(e),a=I(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 jt(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=Tt(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${jt(a)}/${e.directory}`)),a||t||``)}function Nt(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 Pt(e){try{return Nt(h(e,`utf-8`))}catch{return}}function Ft(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 It(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 Lt(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=Pt(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(Ft(`.${e}rc`));let u=It(`${e}_`);return u.config&&c(u.config),Object.assign({},...o,u,s.length?{configs:s,config:s[s.length-1]}:void 0)}const Rt=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,zt=/^([^/]+)\/([^/#]+)?.*?\/([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,Bt=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,Vt=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,Ht=`https://registry.npmjs.org`;let V=null;const Ut=new Map;function Wt(){return V||Lt(`npm`,{registry:Ht})}function Gt(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function Kt(e,t){let n=t[`${e}:_authToken`]||t[`${e}/:_authToken`];if(n)return{token:Gt(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(Gt(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:Gt(a),type:`Basic`}}function H(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=Kt(`//${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:Gt(i),type:`Basic`}}function qt(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function Jt(e,t){V||=Wt();let n=e.startsWith(`@`)?(/@[a-z0-9][\w-.]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=Ut.get(r);if(i)return i;let a;if(!e.startsWith(`@`))a={auth:H(t,V),registry:t};else{let e=R(qt(n,V));if(e!==t)try{let n=H(e,V);a=n?.token?{auth:n,registry:e}:{auth:H(t,V),registry:t}}catch{a={auth:H(t,V),registry:t}}else a={auth:H(t,V),registry:t}}return Ut.set(r,a),a}async function Yt(e,t,n,r,i){V||=Wt();let{auth:a,registry:o}=Jt(e,R((typeof r.registry==`string`?r.registry:!1)||n.registry||V.registry||Ht)),c=`${o}/${(t===`resolutions`?s(e):e).replace(/\//g,`%2f`)}`,l=await i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...ht(a?.type,a?.token)});if(l?.ok)return[await l.json(),t,o,e];kt(l,c,e,o)}function U(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Xt(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 Qt(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]}kt(s,o,e,`JSR`)}function $t(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(`"${L(a)}": *"${o}@${L(s)}"`,`g`);n=n.replace(r,`"${a}": "${o}@${t[e].new}"`)}else{let r=RegExp(`"${L(o)}": *"${L(s)}"`,`g`);n=n.replace(r,`"${o}": "${t[e].new}"`)}}return n}function en(e,t,n){let r=e.replace(Vt,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 tn(e){let t=e.match(Bt);return t?.length===1?e.replace(Bt,B(t[0])):e}async function nn(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 rn(e,t,n){return(await Ot(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function an(e,t,n,r){let i=t.old.replace(Rt,``),[a,o,s,c]=zt.exec(i)||[];if(!o||!s||!c)return null;if(Et.test(c)){let{hash:n,commit:i}=await nn(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=wt(await rn(o,s,r),c,n);if(t)return{key:e,newRange:t,user:o,repo:s,oldRef:c,newRef:t}}return null}async function on(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];kt(i,r,e,n.pypiApiUrl)}function sn(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(`${L(o)} *= *"${L(s)}"`,`g`),`${o} = "${t[e].new}"`),n=n.replace(RegExp(`("${L(o)} *[<>=~]+ *)${L(s)}(")`,`g`),(n,r,i)=>`${r}${t[e].new}${i}`)}return n}const cn=x(S);function ln(){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 un(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function dn(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function fn(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}function pn(e){let t=/\/v(\d+)$/.exec(e);return t?parseInt(t[1]):1}function mn(e,t){return t<=1?e.replace(/\/v\d+$/,``):`${e.replace(/\/v\d+$/,``)}/v${t}`}function hn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function gn(e){return`${(e.length+4).toString(16).padStart(4,`0`)}${e}`}function _n(e){let t=[gn(`command=ls-refs
23
+ `),gn(`object-format=sha1
24
+ `),`0001`,gn(`peel
25
+ `),gn(`ref-prefix refs/tags/${e}v\n`),`0000`];return new Blob([t.join(``)])}function vn(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=parseInt(e,16);if(t===0||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 yn(e,t){let n=t;for(let t of e){let e=/^v(\d+)\./.exec(t);if(e){let t=parseInt(e[1]);t>n&&(n=t)}}return n>t?n:null}async function bn(e,t){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}}async function xn(e,t,n){try{let r=await bn(e.replace(/\/v\d+$/,``),n);if(!r)return null;let{repoUrl:i,tagPrefix:a}=r,o=_n(a),s=await n.doFetch(`${i}/git-upload-pack`,{method:`POST`,headers:{"Git-Protocol":`version=2`,"Content-Type":`application/x-git-upload-pack-request`},body:o,signal:AbortSignal.timeout(n.goProbeTimeout)});return s.ok?yn(vn(await s.arrayBuffer(),a),t):null}catch{return null}}function Sn(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function Cn(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 wn(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:I(o),Time:s,...c===e?{}:{newPath:c},sameMajorNew:I(i),sameMajorTime:a},t,null,e]}function Tn(e){let t={},n={},r=new Set,i=e.split(/\r?\n/),a=!1,o=!1;for(let e of i){let i=e.trim();if(/^require\s*\(/.test(i)){a=!0;continue}if(/^replace\s*\(/.test(i)){o=!0;continue}if(i===`)`){a=!1,o=!1;continue}if(i.includes(`// indirect`))continue;if(o||/^replace\s+/.test(i)){let e=o?/^(\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,i,a]=e;!i.startsWith(`./`)&&!i.startsWith(`/`)&&!i.startsWith(`../`)&&(n[i]=a,r.add(t))}continue}let s=a?/^(\S+)\s+(v\S+)/.exec(i):/^require\s+(\S+)\s+(v\S+)/.exec(i);s&&(t[s[1]]=s[2])}for(let e of r)delete t[e];return{deps:t,replace:n}}async function En(e,n,r,i,a){let o=pn(e),s=async(e,n)=>{try{let{stdout:r}=await cn(`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,l]=await Promise.all([s(e,a.fetchTimeout),s(mn(e,o+1),a.goProbeTimeout)]);return c?wn(e,n,r,await Cn(o,l,t=>s(mn(e,t),a.goProbeTimeout)),c.Version,c.Time):Sn(e,r,n)}async function Dn(e,t,n,r,i,a){if(dn(e,a))return En(e,t,n,r,i);let o=fn(e),s=pn(e),c=async t=>{let n=mn(e,t);return i.doFetch(`${i.goProxyUrl}/${fn(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout)}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},[l,u]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout)}),xn(e,s,i)]);if(!l.ok)return Sn(e,n,t);let d,f;try{let e=await l.json();d=e.Version,f=e.Time}catch{return Sn(e,n,t)}let p=null;return u!==null&&u>s?(p=await c(u),p||=await Cn(s,await c(s+1),c)):u===null&&(p=await Cn(s,await c(s+1),c)),wn(e,t,n,p,d,f)}function On(e,t){let n=L(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 kn(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+${L(s)}\\s+)v${L(c)}`,`g`),`$1v${l}`);continue}let u=pn(s),d=parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=mn(s,d);n=n.replace(RegExp(`${L(s)} +v${L(c)}`,`g`),`${e} v${l}`),r[s]=e}else n=n.replace(RegExp(`(${L(s)}) +v${L(c)}`,`g`),`$1 v${l}`);n=On(n,s)}return[n,r]}function An(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(`"${L(e)}(/|")`,`g`),r=a.replace(t,`"${n}$1`);r!==a&&(a=r,o=!0)}o&&n(r,a)}}function jn(e){let t=`https://${Mn(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[e,i,a,...o]=r;return n.pathname=`/${i}/${a}/${jt(t)}/${o.join(`/`)}`,n.toString()}else return t}function Mn(e){return/\/v[0-9]$/.test(e)?c(e):e}function Nn(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const Pn=/^\s*-?\s*uses:\s*['"]?([^'"#\s]+)['"]?/gm;function Fn(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:Et.test(o)}}function In(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function Ln(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 Rn(e,t){return At(ke(I(e))?.version??I(e),t)}function zn(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?)${L(e)}@${L(r)}`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}function Bn(e){let t=e.replace(/\\/g,`/`);return/\.github\/workflows\/[^/]+\.(ya?ml)$/.test(t)}function Vn(e){try{return g(e).filter(e=>/\.(ya?ml)$/.test(e)).map(t=>u(l(e,t)))}catch{return[]}}const Hn=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,Un=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,Wn=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,Gn=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}]+)['"]?\s*$/gm,Kn=/^\s*-?\s*uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function qn(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 Jn(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||!Hn.test(r)))return null;let{registry:i,namespace:a,repo:o}=qn(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function Yn(e){let t=Hn.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Xn(e,t){let n=Yn(t);return n?At(e,n.version,n.suffix):t}function Zn(e,t){let n=[];for(let r of e.matchAll(t)){let e=Jn(r[1]);e&&n.push({ref:e,match:r[1]})}return n}async function Qn(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 $n(e,t,n){let{registry:r,namespace:i,repo:a}=qn(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await Qn(i,a,n),name:e},t,null,e]}function er(e,t,n){let r=Yn(t);if(!r)return null;let i=Me(I(r.version))?.version;if(!i)return null;let a=i,o=``,s=``;for(let[t,i]of Object.entries(e)){let e=Yn(t);if(!e||e.suffix!==r.suffix)continue;let c=Me(I(e.version))?.version;if(!c||!j(c))continue;let l=M(a,c);!l||!n.has(l)||Pe(c,a)&&(a=c,o=t,s=i)}if(!o||a===i)return null;let c=Xn(a,t);return c===t?null:{newTag:c,date:s}}function tr(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(L(a),L(o)),`$1${a}:${i.new}`)}return r}function nr(e,t){return tr(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}`,`g`)])}function rr(e,t){return tr(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}`,`g`)])}function ir(e,t){return tr(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}`,`g`)])}const ar=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function or(e){return/^docker-.+\.ya?ml$/.test(e)}function sr(e){return/^Dockerfile(\..+)?$/.test(e)}function cr(e){return sr(e)||or(e)}function lr(e){return sr(e)?Un:Wn}function ur(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const dr={"package.json":`npm`,"pyproject.toml":`pypi`,"go.mod":`go`},fr={"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`},dockerapi:{type:`string`},greatest:{short:`g`,type:`string`,multiple:!0},help:{short:`h`,type:`boolean`},include:{short:`i`,type:`string`,multiple:!0},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 W(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.flatMap(e=>typeof e==`string`?ot(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function pr(e){for(let[t,{short:n}]of Object.entries(fr))if(t===e||n===e)return t;return``}const G=b({strict:!1,allowPositionals:!0,tokens:!0,options:fr}),K=G.values;for(let[e,t]of G.tokens.entries())if(t.kind===`option`&&t.value?.startsWith(`-`)){let n=pr(t.value.substring(1)),r=G.tokens[e+1];K[t.name]=[!0],K[n]||(K[n]=[]),r?.kind===`positional`&&r.value?K[n].push(r.value):K[n].push(!0)}const q=G.values,mr=G.positionals,[hr,gr,_r]=[`magenta`,`red`,`green`].map(e=>q[`no-color`]?String:t=>te(e,String(t))),J=Z(W(q.greatest)),vr=Z(W(q.prerelease)),yr=Z(W(q.release)),br=Z(W(q.patch)),xr=Z(W(q.minor)),Sr=Z(W(q[`allow-downgrade`])),Cr=W(q.modes)||new Set([`npm`,`pypi`,`go`,`actions`,`docker`]),wr=typeof q.forgeapi==`string`?R(q.forgeapi):`https://api.github.com`,Tr=typeof q.pypiapi==`string`?R(q.pypiapi):`https://pypi.org`,Er=typeof q.jsrapi==`string`?R(q.jsrapi):`https://jsr.io`,Dr=typeof q.goproxy==`string`?R(q.goproxy):ln(),Or=typeof q.dockerapi==`string`?R(q.dockerapi):`https://hub.docker.com`,kr=un();function Ar(e){let t={};if(Array.isArray(e)){for(let n of e)if(typeof n==`string`){let[e,r]=n.split(`=`,2);e&&r&&qe(r)&&(t[e]=r)}}else if(typeof e==`string`){let[n,r]=e.split(`=`,2);n&&r&&qe(r)&&(t[n]=r)}return t}function jr(e,t){let n=l(t,e);try{return f(n),n}catch{}let r=c(t);return r===t?null:jr(e,r)}function Mr(e){console.error(`${ct()} ${e}`)}const Nr=typeof q.timeout==`string`?Number(q.timeout):0,Y={fetchTimeout:Nr||mt,goProbeTimeout:Nr?Nr/2:2500,forgeApiUrl:wr,pypiApiUrl:Tr,jsrApiUrl:Er,goProxyUrl:Dr,dockerApiUrl:Or,doFetch:(e,t)=>gt(e,t,!!q.verbose,Mr,hr,_r,gr),verbose:!!q.verbose};async function Pr(e){console.info(q.json?JSON.stringify({message:e}):e),await Fr()}async function Fr(e,t){if(e){let t=e.stack??e.message,n=e.cause;q.json?console.info(JSON.stringify({error:t,cause:n})):(console.info(gr(t)),n&&console.info(gr(`Caused by: ${String(n)}`)))}r===`win32`&&Number(o?.node?.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),n(t||e?1:0)}function Ir(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`&&!U(n.oldOrig)&&(n.old=t===`go`?Nn(n.oldOrig):n.oldOrig),t===`go`&&(n.new=Nn(n.new)),t===`actions`&&(n.old=I(n.old),n.new=I(n.new)),delete n.oldPrint,delete n.newPrint,delete n.oldOrig,delete n.date;let t=0;for(let n of Object.keys(e))t+=Object.keys(e[n]).length;if(q.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(Rr(e));return q[`error-on-outdated`]?t?2:0:q[`error-on-unchanged`]?t?0:2:0}function X(e,t){r===`win32`&&v(e,0),y(e,t,r===`win32`?{flag:`r+`}:void 0)}const Lr=e=>ee(e).length;function Rr(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`?Mn(s):s),n&&l.push(a),l.push(Qe(o.old,o.new,gr)),l.push(Qe(o.new,o.old,_r)),l.push(o.age||``),l.push(o.info||``),r.push(l)}return lt(r,Lr)}function zr(e,t){return RegExp(`^${L(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Br(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):zr(e,n):e instanceof RegExp?e:zr(e,n)}function Z(e){if(e instanceof Set){let t=new Set;for(let n of e)t.add(Br(n,!0,!1));return t}return e}function Q(e,t){let n=new Set;for(let t of e||[])n.add(Br(t,!0,!0));for(let e of t||[])n.add(Br(e,!1,!0));return n}function Vr(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>ot(e)):[]}function Hr(e){return br===!0||F(e,br)?new Set([`patch`]):xr===!0||F(e,xr)?new Set([`patch`,`minor`]):new Set([`patch`,`minor`,`major`])}function Ur(e){return{useGreatest:typeof J==`boolean`?J:F(e,J),usePre:typeof vr==`boolean`?vr:F(e,vr),useRel:typeof yr==`boolean`?yr:F(e,yr),semvers:Hr(e)}}function Wr(t){return t.replace(`${e()}/`,``).replace(`${e()}\\`,``)}function $(e,t,n,r,i){if(i===`engines`&&tt.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,r=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()){let t=u(e);n.add(t),r.add(t)}else if(t?.isDirectory()){for(let t of Object.keys(dr)){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(cr(t)){let i=l(e,t);try{m(i).isFile()&&(n.add(u(i)),r.add(u(i)))}catch{}}}catch{}let t=u(e).replace(/\\/g,`/`),i;i=t.endsWith(`.github/workflows`)?t:t.endsWith(`.github`)?l(t,`workflows`):l(t,`.github`,`workflows`);for(let e of Vn(i))n.add(e),r.add(e)}else throw Error(`${e} is neither a file nor directory`)}else{for(let t of Object.keys(dr)){let r=jr(t,e());r&&n.add(u(r))}for(let t of ar){let r=jr(t,e());r&&n.add(u(r))}try{for(let t of g(e()))if(cr(t)&&!ar.includes(t)){let r=l(e(),t);try{m(r).isFile()&&n.add(u(r))}catch{}}}catch{}let t=jr(l(`.github`,`workflows`),e());if(t)for(let e of Vn(t))n.add(e)}return[n,r]}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);ft();let e=typeof q.sockets==`number`?q.sockets:96,{help:t,version:n,file:r,types:o,update:l,include:d,exclude:f,pin:p,cooldown:m}=q;t&&(a.write(`usage: updates [options] [files...]
23
26
 
24
27
  Options:
25
28
  -u, --update Update versions and write dependency file
@@ -39,7 +42,7 @@ import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,version
39
42
  -U, --error-on-unchanged Exit with code 0 when updates are available and 2 when not
40
43
  -r, --registry <url> Override npm registry URL
41
44
  -S, --sockets <num> Maximum number of parallel HTTP sockets opened. Default: 96
42
- -T, --timeout <ms> Network request timeout in ms (go probes use half). Default: ${ht}
45
+ -T, --timeout <ms> Network request timeout in ms (go probes use half). Default: ${mt}
43
46
  -M, --modes <mode,...> Which modes to enable. Default: npm,pypi,go,actions,docker
44
47
  -j, --json Output a JSON object
45
48
  -n, --no-color Disable color output
@@ -59,4 +62,4 @@ import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,version
59
62
  $ updates -f .github
60
63
  $ updates -f Dockerfile
61
64
  $ updates -f docker-compose.yml
62
- `),await X()),n&&(console.info(mt),await X());let g={},_={},v={},y={},b=Date.now(),x=0,ee=U(r),te=ee instanceof Set?ee:lr.length?new Set:!1;if(te instanceof Set)for(let e of lr)te.add(e);let[ne,S]=zr(te),ie={},ae={},oe=Fr(d),C=Fr(f),se=wr(p),w=[],T=[],E={};function ce(e,t,n){g.docker||={};let r=Q(oe,[]),i=Q(C,[]);for(let a of n)for(let{ref:n}of Kn(e,a)){if(!$(n.fullImage,`docker`,r,i,`docker`))continue;let e=`${t}${n.fullImage}`;if(g.docker[e])continue;let a=Wn(n.tag);a&&(g.docker[e]={old:a.version,oldOrig:n.tag},T.push({key:e,fullImage:n.fullImage,ref:n}))}}for(let e of ne){if(Fn(e)){let t=_r.has(`actions`)||S.has(e),n=_r.has(`docker`)||S.has(e);if(!t&&!n)continue;let r;try{r=h(e,`utf8`)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}let i=Rr(e);if(ie[i]={absPath:e,content:r},t){g.actions||={};let e=Q(oe,[]),t=Q(C,[]),n=Array.from(r.matchAll(kn),e=>An(e[1])).filter(e=>e!==null);for(let r of n){if(!$(r.name,`actions`,e,t,`actions`))continue;let n=`${i}${r.name}`;g.actions[n]||(g.actions[n]={old:r.ref},w.push({...r,key:n,apiUrl:jn(r.host,vr)}))}}n&&(ae[i]={absPath:e,content:r,fileType:`workflow`},ce(r,i,[zn,Bn,Vn]));continue}let t=s(e);if(rr(t)){if(!_r.has(`docker`)&&!S.has(e))continue;let n;try{n=h(e,`utf8`)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}let r=Rr(e),i=nr(t)?`dockerfile`:`compose`;ae[r]={absPath:e,content:n,fileType:i},ce(n,r,[ir(t)]);continue}let n=or[t];if(!_r.has(n)&&!S.has(e))continue;y[n]=e,g[n]||(g[n]={});let r=c(u(e)),i=await Br(r),a=Q(oe,i?.include??[]),l=Q(C,i?.exclude??[]),d={...i?.pin,...se},f=[];Array.isArray(o)?f=o.filter(e=>typeof e==`string`):`types`in i&&Array.isArray(i.types)?f=i.types:n===`npm`?f=tt:n===`pypi`?f=[...it,...rt]:n===`go`&&(f=Array.from(at));let p={};try{v[n]=h(e,`utf8`)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}try{if(n===`npm`)p=JSON.parse(v[n]);else if(n===`pypi`)p=we(v[n]);else{let e=bn(v[n]);p.deps=e.deps,p.replace=e.replace}}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}for(let e of f){let t;if(t=n===`npm`||n===`go`?p[e]||{}:ot(p,e)||{},Array.isArray(t)&&n===`pypi`)for(let{name:r,version:i}of et(t))$(r,n,a,l,e)&&(g[n][`${e}${r}`]={old:nn(i),oldOrig:i});else if(typeof t==`string`){let[r,i]=t.split(`@`);$(r,n,a,l,e)&&(g[n][`${e}${r}`]={old:nn(i),oldOrig:i})}else for(let[r,i]of Object.entries(t))if(n===`npm`&&H(i)&&$(r,n,a,l,e)){let t=Qt(i,r);g[n][`${e}${r}`]={old:t.version,oldOrig:i}}else n!==`go`&&qe(i)&&$(r,n,a,l,e)?g[n][`${e}${r}`]={old:nn(i),oldOrig:i}:n===`npm`&&Zt(i)&&$(r,n,a,l,e)?g[n][`${e}${r}`]={old:`0.0.0`,oldOrig:i}:n===`npm`&&!H(i)&&$(r,n,a,l,e)?_[`${e}${r}`]={old:i}:n===`go`&&$(r,n,a,l,e)&&(g[n][`${e}${r}`]={old:On(i),oldOrig:F(i)})}x+=Object.keys(g[n]).length+Object.keys(_).length,E[n]={config:i,projectDir:r,pin:d}}if(g.actions&&(x+=Object.keys(g.actions).length),g.docker&&(x+=Object.keys(g.docker).length),x===0)return Or(`No dependencies found, nothing to do.`);let D=[];for(let t of Object.keys(E)){if(!g[t]||!Object.keys(g[t]).length&&!Object.keys(_).length)continue;let{config:n,projectDir:r,pin:i}=E[t];D.push((async()=>{let a=(await re(Object.keys(g[t]),async e=>{let[i,a]=e.split(`\0`);if(t===`npm`){let{oldOrig:r}=g[t][e];if(r&&H(r))return $t(a,i,Y);if(r&&Zt(r))try{return await Xt(a,i,n,K,Y)}catch{return delete g[t][e],null}return Xt(a,i,n,K,Y)}else if(t===`go`)return Sn(a,i,g[t][e].oldOrig||g[t][e].old,r,Y,Cr);else return sn(a,i,Y)},{concurrency:e})).filter(Boolean);for(let[e,n,r,o]of a){if(e?.error)throw Error(e.error);let{useGreatest:a,usePre:s,useRel:c,semvers:l}=Lr(e.name),u=`${n}${o}`,d=g[t][u].old,f=g[t][u].oldOrig,p=i[o],m=xt(e,{usePre:s,useRel:c,useGreatest:a,semvers:l,range:d,mode:t,pinnedRange:p},{allowDowngrade:gr,matchesAny:P,isGoPseudoVersion:gn}),h=``;if([`go`,`pypi`].includes(t)&&m)h=m;else if(m)if(f&&Zt(f))h=String(Gt()[`save-exact`])===`true`?m:`^${m}`;else if(f&&H(f))if(f.startsWith(`npm:@jsr/`)){let e=/^(npm:@jsr\/[^@]+@)(.+)$/.exec(f);e&&(h=`${e[1]}${m}`)}else if(f.startsWith(`jsr:@`)){let e=/^(jsr:@[^@]+@)(.+)$/.exec(f);e&&(h=`${e[1]}${m}`)}else f.startsWith(`jsr:`)&&(h=`jsr:${m}`);else h=tn(d,m,f);if(!m||m===d||f&&f===h){delete g[t][u];continue}let _=``;if(t===`npm`&&e.time?.[m]?_=e.time[m]:t===`pypi`&&e.releases?.[m]?.[0]?.upload_time_iso_8601?_=e.releases[m][0].upload_time_iso_8601:t===`go`&&e.Time&&(_=e.Time),g[t][u].new=h,f&&H(f)&&(g[t][u].newPrint=m),t===`npm`)g[t][u].info=Nt(e?.versions?.[m],r,e.name);else if(t===`pypi`)g[t][u].info=Nt(e,r,e.info.name);else if(t===`go`){let n=e.newPath||o;g[t][u].info=En(n)}_&&(g[t][u].date=_,g[t][u].age=Qe(_,{noAffix:!0}))}if(Object.keys(_).length){let n=(await re(Object.entries(_),([e,t])=>{let n=e.split(`\0`)[1];return on(e,t,typeof J==`boolean`?J:P(n,J),Y)},{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;g[t][n]={old:_[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?{age:Qe(c,{noAffix:!0})}:{}}}}let o=m??n.cooldown;if(o)for(let[e,{date:n}]of Object.entries(g[t]))ct(n,ft(String(o)),b)||delete g[t][e]})())}w.length&&D.push((async()=>{let t=new Map;for(let e of w){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)}if(await re(t.values(),async({apiUrl:e,owner:t,repo:n,infos:r})=>{let i=await kt(e,t,n,Y),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 Mn(e,t,n,r,Y);return c.set(r,i),i}for(let e of r){let r=g.actions[e.key],c=`https://${e.host||`github.com`}/${t}/${n}`;if(e.isHash){let{usePre:t,useRel:n}=Lr(e.name),u=bt({},o,{range:`0.0.0`,semvers:new Set([`patch`,`minor`,`major`]),usePre:t,useRel:n,useGreatest:!0,pinnedRange:se[e.name]});if(!u){delete g.actions[e.key];continue}let d=a.find(e=>F(e)===u);if(!d){delete g.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 g.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;let m=await l(f);m&&(r.date=m,r.age=Qe(m,{noAffix:!0}))}else{let t=z(F(e.ref));if(!t){delete g.actions[e.key];continue}let{useGreatest:n,usePre:s,useRel:u,semvers:d}=Lr(e.name),f=bt({},o,{range:t,semvers:d,usePre:s,useRel:u,useGreatest:n||!0,pinnedRange:se[e.name]});if(!f||f===t){delete g.actions[e.key];continue}let p=a.find(e=>F(e)===f);if(!p){delete g.actions[e.key];continue}let m=Nn(p,e.ref);if(m===e.ref){delete g.actions[e.key];continue}r.new=m,r.info=c;let h=i.find(e=>e.name===p);if(h?.commitSha){let e=await l(h.commitSha);e&&(r.date=e,r.age=Qe(e,{noAffix:!0}))}}}},{concurrency:e}),m)for(let[e,{date:t}]of Object.entries(g.actions))ct(t,ft(String(m)),b)||delete g.actions[e];Object.keys(g.actions).length||delete g.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);if(await re(t.entries(),async([e,t])=>{let n;try{let[t]=await Jn(e,`docker`,Y);n=t}catch{for(let e of t)delete g.docker[e.key];return}for(let e of t){let t=g.docker[e.key],r=t.oldOrig||t.old,{semvers:i}=Lr(e.fullImage),a=Yn(n.tags,r,i);if(!a){delete g.docker[e.key];continue}t.new=a.newTag,t.info=ar(e.ref),a.date&&(t.date=a.date,t.age=Qe(a.date,{noAffix:!0}))}},{concurrency:e}),m)for(let[e,{date:t}]of Object.entries(g.docker))ct(t,ft(String(m)),b)||delete g.docker[e];Object.keys(g.docker).length||delete g.docker})()),await Promise.all(D);let le=0;for(let e of Object.keys(g))le+=Object.keys(g[e]).length;if(!le)return Or(`All dependencies are up to date.`);let O=new Map;if(g.actions)for(let[e,t]of Object.entries(g.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 ue=new Map;if(g.docker)for(let[e,t]of Object.entries(g.docker)){let[n]=e.split(`\0`);ue.has(n)||ue.set(n,{}),ue.get(n)[e]=t}let de=kr(g);if(l){for(let e of Object.keys(g))if(Object.keys(g[e]).length){if(e===`actions`){for(let[e,t]of O){let{absPath:n,content:r}=ie[e]||{};if(n){try{Ar(n,Pn(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 ue){let n=ae[e];if(!n)continue;let{absPath:r,fileType:i}=n,a;try{a=h(r,`utf8`)}catch{continue}try{Ar(r,(i===`dockerfile`?Zn:i===`compose`?Qn:$n)(a,t))}catch(e){throw Error(`Error writing ${s(r)}: ${e.message}`)}console.info(q(`✨ ${e} updated`))}continue}try{let t=v[e];if(e===`go`){let[n,r]=wn(t,g[e]);Ar(y[e],n),Tn(c(u(y[e])),r,Ar)}else{let n=e===`npm`?en:cn;Ar(y[e],n(t,g[e]))}}catch(t){throw Error(`Error writing ${s(y[e])}: ${t.message}`)}console.info(q(`✨ ${s(y[e])} updated`))}}await X(void 0,de)}try{await Vr()}catch(e){await X(e)}export{};
65
+ `),await Fr()),n&&(console.info(pt),await Fr());let g={},_={},v={},y={},b=Date.now(),x=0,ee=W(r),te=ee instanceof Set?ee:mr.length?new Set:!1;if(te instanceof Set)for(let e of mr)te.add(e);let[ne,S]=Gr(te),ie={},ae={},oe=Vr(d),C=Vr(f),se=Ar(p),w=[],T=[],E={};function ce(e,t,n){g.docker||={};let r=Q(oe,[]),i=Q(C,[]);for(let a of n)for(let{ref:n}of Zn(e,a)){if(!$(n.fullImage,`docker`,r,i,`docker`))continue;let e=`${t}${n.fullImage}`;if(g.docker[e])continue;let a=Yn(n.tag);a&&(g.docker[e]={old:a.version,oldOrig:n.tag},T.push({key:e,fullImage:n.fullImage,ref:n}))}}for(let e of ne){if(Bn(e)){let t=Cr.has(`actions`)||S.has(e),n=Cr.has(`docker`)||S.has(e);if(!t&&!n)continue;let r;try{r=h(e,`utf8`)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}let i=Wr(e);if(ie[i]={absPath:e,content:r},t){g.actions||={};let e=Q(oe,[]),t=Q(C,[]),n=Array.from(r.matchAll(Pn),e=>Fn(e[1])).filter(e=>e!==null);for(let r of n){if(!$(r.name,`actions`,e,t,`actions`))continue;let n=`${i}${r.name}`;g.actions[n]||(g.actions[n]={old:r.ref},w.push({...r,key:n,apiUrl:In(r.host,wr)}))}}n&&(ae[i]={absPath:e,content:r,fileType:`workflow`},ce(r,i,[Wn,Gn,Kn]));continue}let t=s(e);if(cr(t)){if(!Cr.has(`docker`)&&!S.has(e))continue;let n;try{n=h(e,`utf8`)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}let r=Wr(e),i=sr(t)?`dockerfile`:`compose`;ae[r]={absPath:e,content:n,fileType:i},ce(n,r,[lr(t)]);continue}let n=dr[t];if(!Cr.has(n)&&!S.has(e))continue;y[n]=e,g[n]||(g[n]={});let r=c(u(e)),i=await Kr(r),a=Q(oe,i?.include??[]),l=Q(C,i?.exclude??[]),d={...i?.pin,...se},f=[];Array.isArray(o)?f=o.filter(e=>typeof e==`string`):`types`in i&&Array.isArray(i.types)?f=i.types:n===`npm`?f=et:n===`pypi`?f=[...rt,...nt]:n===`go`&&(f=Array.from(it));let p={};try{v[n]=h(e,`utf8`)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}try{if(n===`npm`)p=JSON.parse(v[n]);else if(n===`pypi`)p=we(v[n]);else{let e=Tn(v[n]);p.deps=e.deps,p.replace=e.replace}}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}for(let e of f){let t;if(t=n===`npm`||n===`go`?p[e]||{}:at(p,e)||{},Array.isArray(t)&&n===`pypi`)for(let{name:r,version:i}of $e(t))$(r,n,a,l,e)&&(g[n][`${e}${r}`]={old:tn(i),oldOrig:i});else if(typeof t==`string`){let[r,i]=t.split(`@`);$(r,n,a,l,e)&&(g[n][`${e}${r}`]={old:tn(i),oldOrig:i})}else for(let[r,i]of Object.entries(t))if(n===`npm`&&U(i)&&$(r,n,a,l,e)){let t=Zt(i,r);g[n][`${e}${r}`]={old:t.version,oldOrig:i}}else n!==`go`&&qe(i)&&$(r,n,a,l,e)?g[n][`${e}${r}`]={old:tn(i),oldOrig:i}:n===`npm`&&Xt(i)&&$(r,n,a,l,e)?g[n][`${e}${r}`]={old:`0.0.0`,oldOrig:i}:n===`npm`&&!U(i)&&$(r,n,a,l,e)?_[`${e}${r}`]={old:i}:n===`go`&&$(r,n,a,l,e)&&(g[n][`${e}${r}`]={old:Nn(i),oldOrig:I(i)})}x+=Object.keys(g[n]).length+Object.keys(_).length,E[n]={config:i,projectDir:r,pin:d}}if(g.actions&&(x+=Object.keys(g.actions).length),g.docker&&(x+=Object.keys(g.docker).length),x===0)return Pr(`No dependencies found, nothing to do.`);let D=[];for(let t of Object.keys(E)){if(!g[t]||!Object.keys(g[t]).length&&!Object.keys(_).length)continue;let{config:n,projectDir:r,pin:i}=E[t];D.push((async()=>{let a=(await re(Object.keys(g[t]),async e=>{let[i,a]=e.split(`\0`);if(t===`npm`){let{oldOrig:r}=g[t][e];if(r&&U(r))return Qt(a,i,Y);if(r&&Xt(r))try{return await Yt(a,i,n,q,Y)}catch{return delete g[t][e],null}return Yt(a,i,n,q,Y)}else if(t===`go`)return Dn(a,i,g[t][e].oldOrig||g[t][e].old,r,Y,kr);else return on(a,i,Y)},{concurrency:e})).filter(Boolean);for(let[e,n,r,o]of a){if(e?.error)throw Error(e.error);let{useGreatest:a,usePre:s,useRel:c,semvers:l}=Ur(e.name),u=`${n}${o}`,d=g[t][u].old,f=g[t][u].oldOrig,p=i[o],m=bt(e,{usePre:s,useRel:c,useGreatest:a,semvers:l,range:d,mode:t,pinnedRange:p},{allowDowngrade:Sr,matchesAny:F,isGoPseudoVersion:hn}),h=``;if([`go`,`pypi`].includes(t)&&m)h=m;else if(m)if(f&&Xt(f))h=String(Wt()[`save-exact`])===`true`?m:`^${m}`;else if(f&&U(f))if(f.startsWith(`npm:@jsr/`)){let e=/^(npm:@jsr\/[^@]+@)(.+)$/.exec(f);e&&(h=`${e[1]}${m}`)}else if(f.startsWith(`jsr:@`)){let e=/^(jsr:@[^@]+@)(.+)$/.exec(f);e&&(h=`${e[1]}${m}`)}else f.startsWith(`jsr:`)&&(h=`jsr:${m}`);else h=en(d,m,f);if(!m||m===d||f&&f===h){delete g[t][u];continue}let _=``;if(t===`npm`&&e.time?.[m]?_=e.time[m]:t===`pypi`&&e.releases?.[m]?.[0]?.upload_time_iso_8601?_=e.releases[m][0].upload_time_iso_8601:t===`go`&&e.Time&&(_=e.Time),g[t][u].new=h,f&&U(f)&&(g[t][u].newPrint=m),t===`npm`)g[t][u].info=Mt(e?.versions?.[m],r,e.name);else if(t===`pypi`)g[t][u].info=Mt(e,r,e.info.name);else if(t===`go`){let n=e.newPath||o;g[t][u].info=jn(n)}_&&(g[t][u].date=_,g[t][u].age=P(_,{noAffix:!0}))}if(Object.keys(_).length){let n=(await re(Object.entries(_),([e,t])=>{let n=e.split(`\0`)[1];return an(e,t,typeof J==`boolean`?J:F(n,J),Y)},{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;g[t][n]={old:_[n].old,new:r,oldPrint:Et.test(o)?o.substring(0,7):o,newPrint:Et.test(s)?s.substring(0,7):s,info:`https://github.com/${i}/${a}`,...c?{age:P(c,{noAffix:!0})}:{}}}}let o=m??n.cooldown;if(o)for(let[e,{date:n}]of Object.entries(g[t]))st(n,dt(String(o)),b)||delete g[t][e]})())}w.length&&D.push((async()=>{let t=new Map;for(let e of w){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)}if(await re(t.values(),async({apiUrl:e,owner:t,repo:n,infos:r})=>{let i=await Ot(e,t,n,Y),a=i.map(e=>e.name),o=a.map(e=>I(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 Ln(e,t,n,r,Y);return c.set(r,i),i}for(let e of r){let r=g.actions[e.key],c=`https://${e.host||`github.com`}/${t}/${n}`;if(e.isHash){let{usePre:t,useRel:n}=Ur(e.name),u=yt({},o,{range:`0.0.0`,semvers:new Set([`patch`,`minor`,`major`]),usePre:t,useRel:n,useGreatest:!0,pinnedRange:se[e.name]});if(!u){delete g.actions[e.key];continue}let d=a.find(e=>I(e)===u);if(!d){delete g.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 g.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;let m=await l(f);m&&(r.date=m,r.age=P(m,{noAffix:!0}))}else{let t=B(I(e.ref));if(!t){delete g.actions[e.key];continue}let{useGreatest:n,usePre:s,useRel:u,semvers:d}=Ur(e.name),f=yt({},o,{range:t,semvers:d,usePre:s,useRel:u,useGreatest:n||!0,pinnedRange:se[e.name]});if(!f||f===t){delete g.actions[e.key];continue}let p=a.find(e=>I(e)===f);if(!p){delete g.actions[e.key];continue}let m=Rn(p,e.ref);if(m===e.ref){delete g.actions[e.key];continue}r.new=m,r.info=c;let h=i.find(e=>e.name===p);if(h?.commitSha){let e=await l(h.commitSha);e&&(r.date=e,r.age=P(e,{noAffix:!0}))}}}},{concurrency:e}),m)for(let[e,{date:t}]of Object.entries(g.actions))st(t,dt(String(m)),b)||delete g.actions[e];Object.keys(g.actions).length||delete g.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);if(await re(t.entries(),async([e,t])=>{let n;try{let[t]=await $n(e,`docker`,Y);n=t}catch{for(let e of t)delete g.docker[e.key];return}for(let e of t){let t=g.docker[e.key],r=t.oldOrig||t.old,{semvers:i}=Ur(e.fullImage),a=er(n.tags,r,i);if(!a){delete g.docker[e.key];continue}t.new=a.newTag,t.info=ur(e.ref),a.date&&(t.date=a.date,t.age=P(a.date,{noAffix:!0}))}},{concurrency:e}),m)for(let[e,{date:t}]of Object.entries(g.docker))st(t,dt(String(m)),b)||delete g.docker[e];Object.keys(g.docker).length||delete g.docker})()),await Promise.all(D);let le=0;for(let e of Object.keys(g))le+=Object.keys(g[e]).length;if(!le)return Pr(`All dependencies are up to date.`);let O=new Map;if(g.actions)for(let[e,t]of Object.entries(g.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 ue=new Map;if(g.docker)for(let[e,t]of Object.entries(g.docker)){let[n]=e.split(`\0`);ue.has(n)||ue.set(n,{}),ue.get(n)[e]=t}let de=Ir(g);if(l){for(let e of Object.keys(g))if(Object.keys(g[e]).length){if(e===`actions`){for(let[e,t]of O){let{absPath:n,content:r}=ie[e]||{};if(n){try{X(n,zn(r,t))}catch(e){throw Error(`Error writing ${s(n)}: ${e.message}`)}console.info(_r(`✨ ${e} updated`))}}continue}if(e===`docker`){for(let[e,t]of ue){let n=ae[e];if(!n)continue;let{absPath:r,fileType:i}=n,a;try{a=h(r,`utf8`)}catch{continue}try{X(r,(i===`dockerfile`?nr:i===`compose`?rr:ir)(a,t))}catch(e){throw Error(`Error writing ${s(r)}: ${e.message}`)}console.info(_r(`✨ ${e} updated`))}continue}try{let t=v[e];if(e===`go`){let[n,r]=kn(t,g[e]);X(y[e],n),An(c(u(y[e])),r,X)}else{let n=e===`npm`?$t:sn;X(y[e],n(t,g[e]))}}catch(t){throw Error(`Error writing ${s(y[e])}: ${t.message}`)}console.info(_r(`✨ ${s(y[e])} updated`))}}await Fr(void 0,de)}try{await qr()}catch(e){await Fr(e)}export{};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "updates",
3
- "version": "17.7.0",
3
+ "version": "17.8.0",
4
4
  "description": "Dependency update tool for npm, uv, golang and actions",
5
5
  "author": "silverwind",
6
6
  "repository": "silverwind/updates",