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