updates 17.20.3 → 17.21.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 +4 -3
- package/dist/api.d.ts +7 -4
- package/dist/dns.js +1 -1
- package/dist/index.js +2 -2
- package/dist/renovate.js +1 -1
- package/dist/shared.js +7 -8
- package/dist/shared2.js +1 -1
- package/package.json +5 -6
package/README.md
CHANGED
|
@@ -43,7 +43,7 @@ npx updates -u && npm i
|
|
|
43
43
|
|`-P, --patch [<dep,...>]`|Consider only up to semver-patch|
|
|
44
44
|
|`-m, --minor [<dep,...>]`|Consider only up to semver-minor|
|
|
45
45
|
|`-d, --allow-downgrade [<dep,...>]`|Allow version downgrades when using latest version|
|
|
46
|
-
|`-s, --sockets <num>`|Maximum number of parallel HTTP sockets opened. Default:
|
|
46
|
+
|`-s, --sockets <num>`|Maximum number of parallel HTTP sockets opened. Default: 25|
|
|
47
47
|
|`-T, --timeout <ms>`|Network request timeout in ms (go probes use half). Default: 5000|
|
|
48
48
|
|`-r, --registry <url>`|Override npm registry URL|
|
|
49
49
|
|`-I, --indirect`|Include indirect Go dependencies|
|
|
@@ -51,6 +51,7 @@ npx updates -u && npm i
|
|
|
51
51
|
|`-U, --error-on-unchanged`|Exit with code 0 when updates are available and 2 when not|
|
|
52
52
|
|`-j, --json`|Output a JSON object|
|
|
53
53
|
|`-x, --no-cache`|Disable HTTP cache|
|
|
54
|
+
|`-c, --color`|Force color output|
|
|
54
55
|
|`-n, --no-color`|Disable color output|
|
|
55
56
|
|`-v, --version`|Print the version|
|
|
56
57
|
|`-V, --verbose`|Print verbose output to stderr|
|
|
@@ -160,7 +161,7 @@ The `updates()` function accepts all [config options](#config-options).
|
|
|
160
161
|
|
|
161
162
|
|Variable|Description|
|
|
162
163
|
|:-|:-|
|
|
163
|
-
|`UPDATES_FORGE_TOKENS`|Comma-separated list of `host:token` pairs for authenticating against forge APIs (e.g. `github.com:ghp_xxx,
|
|
164
|
+
|`UPDATES_FORGE_TOKENS`|Comma-separated list of `host:token` pairs for authenticating against forge APIs (e.g. `github.com:ghp_xxx,localhost:3500:tok_xxx`). The host must match the URL exactly, port included|
|
|
164
165
|
|`UPDATES_GITHUB_API_TOKEN`|GitHub API token for authenticating forge API requests|
|
|
165
166
|
|`GITHUB_API_TOKEN`|Fallback GitHub API token|
|
|
166
167
|
|`GH_TOKEN`|Fallback GitHub API token|
|
|
@@ -170,6 +171,6 @@ The `updates()` function accepts all [config options](#config-options).
|
|
|
170
171
|
|`GONOPROXY`|Comma-separated list of Go module patterns to fetch directly, bypassing the proxy|
|
|
171
172
|
|`GOPRIVATE`|Fallback for `GONOPROXY` when not set|
|
|
172
173
|
|
|
173
|
-
Token resolution order for forge APIs: `UPDATES_FORGE_TOKENS` (matched by
|
|
174
|
+
Token resolution order for forge APIs: `UPDATES_FORGE_TOKENS` (matched by host) > `UPDATES_GITHUB_API_TOKEN` > `GITHUB_API_TOKEN` > `GH_TOKEN` > `GITHUB_TOKEN` > `HOMEBREW_GITHUB_API_TOKEN`. The GitHub token fallback is only sent to GitHub itself; any other forge host (e.g. one referenced in a workflow `uses:`) is authenticated only with a matching `UPDATES_FORGE_TOKENS` entry, and otherwise receives no credentials.
|
|
174
175
|
|
|
175
176
|
© [silverwind](https://github.com/silverwind), distributed under BSD licence
|
package/dist/api.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
//#region utils/renovate.d.ts
|
|
2
|
+
type RenovateImportOptions = {
|
|
3
|
+
/** Import minimumReleaseAge as cooldown. Off by default. */
|
|
4
|
+
cooldown?: boolean;
|
|
5
|
+
};
|
|
6
|
+
//#endregion
|
|
1
7
|
//#region config.d.ts
|
|
2
8
|
type Config = {
|
|
3
9
|
/** Array of dependencies to include */
|
|
@@ -54,10 +60,7 @@ type Config = {
|
|
|
54
60
|
overrides?: Array<Override>;
|
|
55
61
|
/** Opt-in to inheriting select fields from other tools' configs */
|
|
56
62
|
inherit?: {
|
|
57
|
-
renovate?:
|
|
58
|
-
/** Inherit minimumReleaseAge as cooldown. Off by default. */
|
|
59
|
-
cooldown?: boolean;
|
|
60
|
-
};
|
|
63
|
+
renovate?: RenovateImportOptions;
|
|
61
64
|
};
|
|
62
65
|
};
|
|
63
66
|
/** Options applied to dependencies whose name matches an override's patterns. */
|
package/dist/dns.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"node:dns";function t(e,t){if(t.
|
|
1
|
+
import e from"node:dns";function t(e,t,n){if(t.all)e(null,n);else{let r=n.find(({family:e})=>e===t.family)??n[0];e(null,r.address,r.family)}}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){t(c,s,l);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);let s=e||(i?.length?null:Object.assign(Error(`getaddrinfo ENOTFOUND ${a}`),{code:`ENOTFOUND`,hostname:a}));for(let{options:e,callback:n}of o)s?n(s):t(n,e,i)})}}export{n as enableDnsCache};
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{
|
|
2
|
+
import{$ as e,R as t,Z as n,a as r,g as i,i as a,n as o,o as s,r as c,s as l}from"./shared.js";import{exit as u,platform as d,stderr as f,stdout as p,versions as m}from"node:process";import{stripVTControlCharacters as h,styleText as g}from"node:util";const{args:_,positionals:v}=c();if(!_.help&&!_.version)for(let e of o(r(_,v).startDir,_))(async()=>{try{await fetch(e,{method:`HEAD`})}catch{}})();let y=String,b=String,x=!1;async function S(e,t){if(e){let t=e.message??String(e);console.info(x?JSON.stringify({error:t}):y(t))}d===`win32`&&Number(m.node.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),u(t??+!!e)}async function C(){for(let e of[p,f])e?._handle?.setBlocking?.(!0);_.help&&(p.write(`usage: updates [options] [files...]
|
|
3
3
|
|
|
4
4
|
Options:
|
|
5
5
|
-u, --update Update versions and write dependency file
|
|
@@ -44,4 +44,4 @@ import{G as e,P as t,a as n,i as r,m as i,n as a,o,q as s,r as c,s as l}from"./s
|
|
|
44
44
|
$ updates -f Dockerfile
|
|
45
45
|
$ updates -f docker-compose.yml
|
|
46
46
|
$ updates -f Makefile
|
|
47
|
-
`),await
|
|
47
|
+
`),await S()),_.version&&(console.info(t),await S());let e=await a(_,v);!e.noColor&&(e.color||p.isTTY)&&(y=e=>g(`red`,String(e)),b=e=>g(`green`,String(e))),x=!!e.json;let n=await s(e),r=Object.keys(n.results).length>0;if(n.message)console.info(e.json?JSON.stringify({message:n.message}):n.message);else if(r&&(e.json?console.info(JSON.stringify({results:n.results})):console.info(T(n)),e.update))for(let[e,t]of Object.entries(n.results))Object.values(t).some(e=>Object.keys(e).length)&&console.info(b(`✨ ${e} updated`));e.errorOnOutdated?await S(void 0,r?2:0):e.errorOnUnchanged?await S(void 0,r?0:2):await S()}const w=e=>h(e).length;function T(t){let r=Object.keys(t.results),i=r.length>1,a=[i?[`NAME`,`MODE`,`OLD`,`NEW`,`AGE`,`INFO`]:[`NAME`,`OLD`,`NEW`,`AGE`,`INFO`]],o=new Set;for(let e of r)for(let r of Object.values(t.results[e]))for(let[t,s]of Object.entries(r)){let r=`${e}|${t}|${s.old}|${s.new}`;o.has(r)||(o.add(r),a.push([e===`go`?l(t):t,...i?[e]:[],n(s.old,s.new,y),n(s.new,s.old,b),s.age||``,s.info||``]))}return e(a,w)}try{await C()}catch(e){await S(e)}export{};
|
package/dist/renovate.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{J as e,Q as t,X as n,Y as r,et as i,t as a,tt as o}from"./shared.js";import{join as s}from"node:path";import{readFile as c}from"node:fs/promises";const l=[`renovate.json`,`renovate.json5`,...[...n,`.gitlab`].flatMap(e=>[`${e}/renovate.json`,`${e}/renovate.json5`]),`.renovaterc`,`.renovaterc.json`,`.renovaterc.json5`],u={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 d(e){let t=0,n=!1,r=/(\d+(?:\.\d+)?)\s*([a-z]+)/gi,i;for(;(i=r.exec(e))!==null;){let e=u[i[2].toLowerCase()];if(e===void 0)return;t+=Number(i[1])*e,n=!0}return n?t:void 0}function f(e){return!Array.isArray(e.matchPackageNames)||!e.matchPackageNames.length?!1:Object.keys(e).every(e=>!e.startsWith(`match`)||e===`matchPackageNames`)}async function p(e){let t=(await Promise.all(l.map(async t=>{let n=s(e,...t.split(`/`));try{return{path:n,text:await c(n,`utf8`)}}catch{return null}}))).find(e=>e!==null);if(t)return t;try{let t=s(e,`package.json`),n=JSON.parse(await c(t,`utf8`));if(n&&typeof n==`object`&&n.renovate&&typeof n.renovate==`object`)return{path:t,text:JSON.stringify(n.renovate)}}catch{}}function m(e){let t=/^\/(.+)\/([a-z]*)$/.exec(e);if(!t)return e;try{return new RegExp(t[1],t[2])}catch{return e}}function h(e){return/[*?[\]{}!()|+]/.test(e)}function g(e,t){let n={};if(t.cooldown&&typeof e.minimumReleaseAge==`string`){let t=d(e.minimumReleaseAge);t!==void 0&&t>0&&(n.cooldown=t)}let r=[],i=[],a={};if(Array.isArray(e.ignoreDeps)&&i.push(...e.ignoreDeps.filter(e=>typeof e==`string`&&!!e)),Array.isArray(e.packageRules))for(let t of e.packageRules){if(!t||typeof t!=`object`||!f(t))continue;let e=t.matchPackageNames.filter(e=>typeof e==`string`&&!!e),n=Object.groupBy(e,e=>e.startsWith(`!`)&&e.length>1?`negated`:`positive`),s=n.positive??[],c=n.negated?.map(e=>e.substring(1))??[];if(t.enabled===!1)if(s.length)for(let e of s)i.push(m(e));else for(let e of c)r.push(m(e));if(typeof t.allowedVersions==`string`&&o(t.allowedVersions))for(let e of s)!h(e)&&typeof m(e)==`string`&&(a[e]=t.allowedVersions)}return r.length&&(n.include=r),i.length&&(n.exclude=i),Object.keys(a).length&&(n.pin=a),n}const _={github:(e,t,n)=>`https://raw.githubusercontent.com/${e}/${t}/${n}`,gitlab:(e,t,n)=>`https://gitlab.com/${e}/-/raw/${t}/${n}`,gitea:(e,t,n)=>`https://gitea.com/api/v1/repos/${e}/raw/${n}?ref=${t}`,forgejo:(e,t,n)=>`https://code.forgejo.org/api/v1/repos/${e}/raw/${n}?ref=${t}`};function v(e){if(/^https?:\/\//i.test(e))return{kind:`http`,url:e};let t=e.indexOf(`>`);if(t===-1)return null;let n=e.slice(0,t);if(!Object.hasOwn(_,n))return null;let r=e.slice(t+1).replace(/\([^)]*\)\s*$/,``),i=`HEAD`,a=r.indexOf(`#`);a!==-1&&(i=r.slice(a+1)||`HEAD`,r=r.slice(0,a));let o,s,c=r.indexOf(`//`);if(c!==-1)o=r.slice(c+2),r=r.slice(0,c);else{let e=r.indexOf(`:`);e!==-1&&(s=r.slice(e+1),r=r.slice(0,e))}let l=r.replace(/\/+$/,``);return l.includes(`/`)?{kind:`forge`,forge:n,slug:l,ref:i,name:s,subpath:o}:null}const y=[`default.json`,`default.json5`,`renovate.json`,`renovate.json5`,`.renovaterc.json`,`.renovaterc`];function b(e){return/\.json5?$/.test(e)?[e]:[`${e}.json`,`${e}.json5`]}function x(e){if(e===null)return null;try{let t=a(e);return t&&typeof t==`object`?t:null}catch{return null}}async function S(e,t){if(e.kind===`http`)return x(await t(e.url));let n=_[e.forge],r=async r=>x(await t(n(e.slug,e.ref,r)));if(e.subpath){for(let t of b(e.subpath)){let e=await r(t);if(e)return e}return null}let i=e.name??`default`;for(let t of y){let n=await r(t);if(!n)continue;let a=n.presets?.[i];return a&&typeof a==`object`?a:e.name?null:n}return null}function C(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];n[e]=Array.isArray(r)&&Array.isArray(t)?[...t,...r]:r}return n}async function w(e,t,n,r){let i={},a=Array.isArray(e.extends)?e.extends:[];for(let e of a){if(typeof e!=`string`||r>=10||n.has(e))continue;let a=v(e);if(!a)continue;let o=await S(a,t);o&&(i=C(i,await w(o,t,new Set(n).add(e),r+1)))}let{extends:o,...s}=e;return C(i,s)}async function T(e,t){let{getForgeTokens:n,getFetchOpts:r,githubApiUrl:i,urlHost:a}=await import(`./shared2.js`),o=a(e),[s]=o?await n(o,i):[],c={...r(`Bearer`,s).headers};return t&&(c[`if-none-match`]=t),c}function E({noCache:t=!1,timeout:n=1e4}={}){return async i=>{let a=t?null:await e(i),o=await T(i,a?.etag),s;try{s=await fetch(i,{headers:o,signal:AbortSignal.timeout(n)})}catch{return a?.body??null}if(s.status===304&&a)return a.body;if(!s.ok)return a?.body??null;let c;try{c=await s.text()}catch{return a?.body??null}let l=s.headers.get(`etag`);return l&&!t&&r(i,l,c),c}}const D=t(e=>i(e,async e=>{let t=await p(e);if(!t)return null;let n;try{n=a(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}})),O=new Map;async function k(e,t={},n=E()){let r=await D(e);if(!r)return{};let i=O.get(r.path);return i||(i=w(r.parsed,n,new Set,0),O.set(r.path,i)),g(await i,t)}export{k as loadRenovateConfig,E as makePresetFetcher};
|
package/dist/shared.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import{cwd as e,env as t,pid as n,platform as r,stderr as i}from"node:process";import{parseArgs as a,styleText as o}from"node:util";import{basename as s,dirname as c,isAbsolute as l,join as u,relative as d,resolve as f}from"node:path";import{accessSync as p,globSync as m,lstatSync as h,readFileSync as g,readdirSync as _,statSync as v,truncateSync as y,writeFileSync as
|
|
1
|
+
import{cwd as e,env as t,pid as n,platform as r,stderr as i}from"node:process";import{parseArgs as a,styleText as o}from"node:util";import{basename as s,dirname as c,isAbsolute as l,join as u,relative as d,resolve as f}from"node:path";import{accessSync as p,globSync as m,lstatSync as h,readFileSync as g,readdirSync as _,statSync as v,truncateSync as y,writeFileSync as ee}from"node:fs";import{access as te,mkdir as b,readFile as x,rename as S,writeFile as C}from"node:fs/promises";import{Buffer as ne}from"node:buffer";import{createHash as re}from"node:crypto";import{homedir as w}from"node:os";import{pathToFileURL as T}from"node:url";const ie=/^\[\[([^\]]+)\]\]$/,E=/^\[([^[\]]+)\]$/;function ae(e){let t={},n=t,r=e.split(/\r?\n/);for(let e=0;e<r.length;e++){let i=r[e],a=fe(i).trim();if(!a)continue;let o=ie.exec(a);if(o){let e=t,r=de(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=E.exec(a);if(s){n=j(t,de(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=de(l),f=j(n,d.slice(0,-1)),p=d[d.length-1],m=oe(u);if((u.startsWith(`[`)||u.startsWith(`{`))&&!D(u)){let t=u,n=e+1;for(;n<r.length&&(t+=`\n${fe(r[n])}`,!D(t));n++);e=n,f[p]=se(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
2
|
`:``)+r[n].slice(0,e);break}t+=(t?`
|
|
3
|
-
`:``)+r[n]}e=n,f[p]=
|
|
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
|
|
5
|
-
`)}return a}const
|
|
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}}const ut=new Set;let dt=0;function ft(e,t,r){let i=(async()=>{try{await(ot??=x(at,{recursive:!0}))}catch{ot=null;return}try{let i=u(at,`${ct(e)}.cache`),a=`${i}.${n}-${dt++}.tmp`;await w(a,`${t}\n${r}`),await C(a,i)}catch{}})();ut.add(i),(async()=>{await i,ut.delete(i)})()}async function pt(){for(;ut.size;)await Promise.all(ut)}var mt=`17.20.3`;function ht(e,t,n){if(!t||!n||!e)return!0;let r=Date.parse(e);return Number.isNaN(r)?!0:(n-r)/864e5>=t}const gt=mt,_t=5e3,vt=2500,yt=`https://api.github.com`,K={registry:`https://registry.npmjs.org`,jsrapi:`https://jsr.io`,forgeapi:yt,pypiapi:`https://pypi.org`,cargoapi:`https://crates.io`,dockerapi:`https://hub.docker.com`,goproxy:`https://proxy.golang.org`},q=e=>e[0]===`v`?e.substring(1):e,bt=e=>e.endsWith(`/`)?e.slice(0,-1):e;function xt(e,t){return{headers:{"user-agent":`updates/${gt}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}const St=new Set([`ECONNRESET`,`ECONNREFUSED`,`ETIMEDOUT`,`EAI_AGAIN`,`EPIPE`,`UND_ERR_SOCKET`,`UND_ERR_CONNECT_TIMEOUT`,`UND_ERR_HEADERS_TIMEOUT`,`UND_ERR_BODY_TIMEOUT`]);function Ct(e){if(e?.name===`TimeoutError`||e?.name===`AbortError`)return!0;let t=e?.code??e?.cause?.code;return typeof t==`string`&&St.has(t)}async function wt(e,t){try{return await fetch(e,t)}catch(t){let n=Error(`Failed to fetch ${e}${t?.message?`: ${t.message}`:``}`,{cause:t});throw n.transient=Ct(t),n}}async function J(e,t,n={}){for(let r=0;;r++)try{return await e.doFetch(t,{...n,signal:AbortSignal.timeout(e.fetchTimeout)})}catch(e){if(r>=2||!e?.transient)throw e}}async function Tt(e){return typeof e.text==`function`?e.text():JSON.stringify(await e.json())}function Et(e,t){if(!t||e.length<16384)return e;try{return JSON.stringify(t(JSON.parse(e)))}catch{return e}}async function Dt(e,t,n,r,i){let a=Et(await Tt(t),r);return i&&!n.noCache&&ft(e,i,a),{body:a,res:t}}async function Y(e,t,n={},r){let i=t.noCache?null:await lt(e),a=n.headers,o=i?{...a,"if-none-match":i.etag}:a,s=await J(t,e,{...n,headers:o});return s?s.status===304&&i?{body:i.body,res:s}:s.ok?Dt(e,s,t,r,s.headers?.get?.(`etag`)):{res:s}:{res:void 0}}async function Ot(e,t,n={},r){if(!t.noCache){let t=await lt(e);if(t)return{body:t.body}}let i=await J(t,e,n);return i?i.ok?Dt(e,i,t,r,`immutable`):{res:i}:{res:void 0}}function kt(e){return(L(e)?.prerelease.length??0)>0}function At(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}const jt=/\d+\.\d+\.\d+(?:-[a-zA-Z0-9_.-]+)?/,Mt=new WeakMap;function Nt(e){let t=Mt.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`),Mt.set(e,n),n}function Pt(e,t,n){let r=At(e)||t;return{effectiveUsePre:r,effectiveSemvers:r?Nt(n):n}}function Ft(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=X(e),s=X(t);if(!o||!s)return!0;let c=At(e)||kt(e),l=kt(t);return c&&!l?be(s,o)||n:!l&&xe(s,o)?a(i,r):!0}function X(e){return _e(e)?.version??``}function It(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:u}){let d=X(n);if(!d)return null;let f=L(jt.exec(n)?.[0]??``)??L(d),{effectiveUsePre:p,effectiveSemvers:m}=Pt(n,i,r),h=e?.time,g=!!h,_=o||!g,v=!!(c&&l),y=!!s&&!H(f.version,s)||a&&f.prerelease.length>0,b=0,ee=!1,x=f;for(let e of t){let t=L(e);if(!t?.version||t.prerelease.length&&(!p||a)||!y&&I(t,f)<=0||s&&!H(t.version,s))continue;let n;if(v&&(n=u?u(e):g?h[e]:void 0,!ht(n,c,l)))continue;let r=ve(f,t);if(!(!r||!m.has(r))){if(_){if(ee&&I(t,x)<=0)continue}else{let t=Date.parse(n??h[e]);if(!(t>=0&&t>b))continue;b=t}x=t,ee=!0}}return x.version}function Lt(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=X(n);if(!t)return null;let{effectiveUsePre:r,effectiveSemvers:p}=Pt(n,a,o),m=e=>kt(e)&&(!r||i),h={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d},g=e.old||n,_=(e,n)=>{let r=X(e);if(!r||f(e)||m(e))return!1;let i=z(g,e)??z(t,r);return!i||!p.has(i)||!Ft(g,e,h)||!ht(n,c,l)?!1:!s||H(r,s)};return _(e.new,e.Time)?e.new:_(e.sameMajorNew,e.sameMajorTime)?(e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew):null}let h=It(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=X(e.info.version),p=kt(f)):(r=e[`dist-tags`].latest,p=kt(r));let m=X(n),g=At(n),_=kt(h),v={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d};if(!i&&a||g&&_)return h;if(g&&!_)return Ft(n,h,v)?h:null;let y=z(m,r);return y&&y!==`prerelease`&&!o.has(y.replace(/^pre/,``))||i&&p?h:xe(r,m)&&!p?Ft(n,r,v)?r:B(h,m)?h:null:!g&&p&&!a||s&&!H(r,s)||c&&l&&!ht(t===`pypi`?e.releases?.[f||r]?.[0]?.upload_time_iso_8601:e.time?.[r],c,l)?h:f||r}}const Rt=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&Rt.set(e.substring(0,t),e.substring(t+1))}const zt=[`UPDATES_GITHUB_API_TOKEN`,`GITHUB_API_TOKEN`,`GH_TOKEN`,`GITHUB_TOKEN`,`HOMEBREW_GITHUB_API_TOKEN`];function Bt(){return Array.from(new Set(zt.map(e=>t[e]).filter(e=>!!e)))}let Vt;function Ht(){let e=Bt();return e.length?Promise.resolve(e):Vt??=(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 Ut=new Map;async function Wt(e,t){if(!e)return[];let n=Rt.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?Ht():[]}async function Gt(e,t,n){let r;try{r=new URL(e).hostname}catch{r=``}let i=await Wt(r,t.forgeApiUrl),a=e=>{let t=xt(`Bearer`,e);return n&&(t.headers={...t.headers,...n}),t};if(!i.length)return J(t,e,a());let o=r?Ut.get(r):void 0;if(o)return J(t,e,a(o));for(let n of i){let i=await J(t,e,a(n));if(i.status!==401&&i.status!==403)return r&&Ut.set(r,n),i}return J(t,e,a())}function Kt(e,t){let n=q(t);if(!he(n))return null;let r=``,i=``;for(let t of e){let e=q(t);he(e)&&(!r||B(e,i))&&(r=t,i=e)}return r&&B(i,n)?r:null}function qt(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 Jt=/^(?=.*[a-f])[0-9a-f]{6,}$/i;function Yt(e){return/^v?\d+(?:\.\d+)*(?:[-+][\w.-]+)?$/.test(e)}function Xt(e){let t=e?.commit??e;return t?.committer?.date||t?.author?.date||``}function Zt(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function Qt(e,t){let n=t.noCache?null:await lt(e),r=await Gt(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=Zt(await r.json()),a=r.headers.get(`link`)||``,o=r.headers.get(`etag`);return o&&!t.noCache&&ft(e,o,JSON.stringify({link:a,tags:i})),{tags:i,link:a}}async function $t(e,t,n,r){let i=r=>`${e}/repos/${t}/${n}/tags?per_page=100&page=${r}`;try{let e=await Qt(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)=>Qt(i(t+2),r)));for(let e of o)e&&t.push(...e.tags);return t}catch{return[]}}function en(e,t,n,r){throw e?.status&&e.statusText?Error(`Received ${e.status} ${e.statusText} from ${t}`):Error(`Unable to fetch ${n} from ${r}`)}const tn=e=>Number(e[0])>=2e7;function nn(e,t){let n=q(e).split(`.`),r=q(t).split(`.`);return n.length<r.length?!1:!tn(n)||tn(r)}function rn(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 an(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}const on=[`repository`,`Repository`,`repo`,`Repo`,`source`,`Source`,`source code`,`Source code`,`Source Code`,`homepage`,`Homepage`];function sn({repository:e,homepage:t,info:n},r,i){if(n){let t=n.project_urls;for(let n of on)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=qt(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a+=`/${an(a)}/${e.directory}`)),a||t||``)}const cn={"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 ln(e){return e instanceof RegExp?/[gy]/.test(e.flags)?new RegExp(e.source,e.flags.replace(/[gy]/g,``)):e:RegExp(`^${G(e).replaceAll(`\\*`,`.*`)}$`,`i`)}function un(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.filter(e=>typeof e==`string`).flatMap(Ye)):typeof e==`string`?new Set([e]):typeof e==`boolean`&&e}function dn(e){for(let[t,{short:n}]of Object.entries(cn))if(t===e||n===e)return t;return``}function fn(e){return new Set(e.map(ln))}function pn(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>Ye(e)):[]}function mn(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&&Me(i)&&(t[r]=i)}return t}function hn(e){return typeof e==`boolean`?e:!Array.isArray(e)||!e.length?!1:fn(e)}async function gn(e){let t=await Promise.all([`js`,`ts`,`mjs`,`mts`].map(async t=>{let n=`updates.config.${t}`,r=u(e,n);try{await ee(r)}catch{return null}try{return{configDir:e,filename:n,default:(await import(E(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 _n=it(e=>nt(e,gn));async function vn(e,t={}){let n=await _n(e),r=n?.default??{},{loadRenovateConfig:i,makePresetFetcher:a}=await import(`./renovate.js`),o=a(t);return{...await i(n?.configDir??e,r.inherit?.renovate,o),...r}}function yn(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 bn(e){try{return yn(g(e,`utf-8`))}catch{return}}function xn(t){let n=e();for(;;){let e=u(n,t);try{if(v(e).isFile())return e}catch{}let r=c(n);if(r===n)break;n=r}}function Sn(e){let n={},r=e.toLowerCase();for(let[i,a]of Object.entries(t)){if(!i.toLowerCase().startsWith(r))continue;let t=i.substring(e.length).split(`__`).filter(Boolean);if(t.length===0)continue;let o=n;for(let e=0;e<t.length;e++){let n=t[e];if(e===t.length-1)o[n]=a;else if(o[n]===void 0&&(o[n]={}),typeof o[n]==`object`)o=o[n];else break}}return n}function Cn(e,n={}){let i=r===`win32`,a=i?t.USERPROFILE:t.HOME,o=[{...n}],s=[];function c(e){if(!e||s.includes(e))return;let t=bn(e);t&&(o.push(t),s.push(e))}i||(c(u(`/etc`,e,`config`)),c(u(`/etc`,`${e}rc`))),a&&(c(u(a,`.config`,e,`config`)),c(u(a,`.config`,e)),c(u(a,`.${e}`,`config`)),c(u(a,`.${e}rc`))),c(xn(`.${e}rc`));let l=Sn(`${e}_`);return l.config&&c(l.config),Object.assign({},...o,l,s.length?{configs:s,config:s[s.length-1]}:void 0)}const wn=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,Tn=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,En=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,Dn=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,On=/(@[^/]+\/)?([^/]+)/g;function kn(e){let t=e.match(On);return t?t[t.length-1]:e}const An=K.registry;let jn=null;const Mn=new Map;function Nn(){return jn??=Cn(`npm`,{registry:An})}function Pn(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function Fn(e,t){let n=n=>t[`${e}:${n}`]||t[`${e}/:${n}`],r=n(`_authToken`);if(r)return{token:Pn(r),type:`Bearer`};let i=n(`username`),a=n(`_password`);if(i&&a){let e=Buffer.from(Pn(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:Pn(o),type:`Basic`}}function In(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=Fn(`//${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:Pn(i),type:`Basic`}}function Ln(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function Rn(e,t){let n=Nn(),r=e.startsWith(`@`)?e.split(`/`)[0]:``,i=`${r}:${t}`,a=Mn.get(i);if(a)return a;let o;if(r){let e=bt(Ln(r,n));if(e!==t)try{let t=In(e,n);t?.token&&(o={auth:t,registry:e})}catch{}}return o??={auth:In(t,n),registry:t},Mn.set(i,o),o}function zn(e,t,n){let r=bt(typeof n.registry==`string`&&n.registry||t.registry||Nn().registry||An);return{...Rn(e,r),originalRegistry:r}}function Bn(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const Vn=new Map,Hn=new Map,Un=new Map;function Wn(e){let t={};for(let n of Object.keys(e.versions??{}))t[n]={};return{name:e.name,"dist-tags":e[`dist-tags`],versions:t,time:e.time,error:e.error}}async function Gn(e,t,n,r,i){let{auth:a,registry:o}=zn(e,n,r),s=Bn(o,t===`resolutions`?kn(e):e),c=Vn.get(s);if(!c){let t=xt(a?.type,a?.token);r.needsDates||(t.headers={...t.headers,accept:`application/vnd.npm.install-v1+json`}),c=(async()=>{try{let n=await Y(s,i,t,Wn);return`body`in n||en(n.res,s,e,o),JSON.parse(n.body)}catch(e){throw Vn.delete(s),e}})(),Vn.set(s,c)}return[await c,o]}async function Kn(e,t,n,r,i){let{auth:a,registry:o}=zn(e,n,r),s=Bn(o,e,t),c=Hn.get(s);if(c)return c;let l=(async()=>{try{let n=xt(a?.type,a?.token),r=await Ot(s,i,n,e=>({repository:e.repository,homepage:e.homepage,_npmOperationalInternal:e._npmOperationalInternal?.tmp?{tmp:e._npmOperationalInternal.tmp}:void 0}));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())}let d=Bn(o,e);if(l||=(await Vn.get(d))?.time?.[t]||``,!l){let e=Un.get(d);e||(e=(async()=>{try{let e=await J(i,d,n);return e?.ok?await e.json():null}catch{return Un.delete(d),null}})(),Un.set(d,e)),l=(await e)?.time?.[t]||``}return{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})();return Hn.set(s,l),l}function qn(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Jn(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function Yn(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 Xn(e,t){let n=/^@([^/]+)\/(.+)$/.exec(e);if(!n)throw Error(`Invalid JSR package name: ${e}`);let[,r,i]=n,a=`${t.jsrApiUrl}/@${r}/${i}/meta.json`,o=await Y(a,t,{headers:{"accept-encoding":`gzip, deflate, br`}},e=>({latest:e.latest,versions:Object.fromEntries(Object.entries(e.versions??{}).map(([e,t])=>[e,{createdAt:t?.createdAt}]))}));if(`body`in o){let n=JSON.parse(o.body),r={},i={};for(let[e,t]of Object.entries(n.versions??{}))r[e]={version:e,time:t.createdAt},i[e]=t.createdAt;return[{name:e,"dist-tags":{latest:n.latest},versions:r,time:i},t.jsrApiUrl]}en(o.res,a,e,`JSR`)}function Zn(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 Qn(e,t){let n=/^(<\s*)(\d+(?:\.\d+){0,2})$/.exec(e);if(!n)return null;let[,r,i]=n,{major:a,minor:o,patch:s}=L(t),c=i.split(`.`).length,l;return l=c===1?`${a+1}`:c===2?`${a}.${o+1}`:i.endsWith(`.0.0`)?`${a+1}.0.0`:`${a}.${o}.${s+1}`,`${r}${l}`}function $n(e,t,n){let r=n||e;if(/^>\s*\d/.test(r))return e;let i=Qn(r,t);if(i)return i;let a=e.replace(Dn,t);if(!n||n===e)return a;let o=/^([\^~]|>=\s*)([\d.]+)$/.exec(n);if(!o)return a;let[,s,c]=o,l=t.split(/[-+]/)[0];if(l!==t)return a;let u=c.split(`.`).length,d=l.split(`.`);return d.length===u?a:`${s}${d.slice(0,u).join(`.`)}`}function Z(e){if(/[xX*]/.test(e))return e;let t=e.match(En);return t?.length===1?e.replace(En,X(t[0])):e}async function er(e,t,n){let r=`${n.forgeApiUrl}/repos/${e}/${t}/commits`;try{let e=n.noCache?null:await lt(r),t=await Gt(r,n,e?{"if-none-match":e.etag}:void 0),i;if(t?.status===304&&e)i=e.body;else if(t?.ok){let{sha:e,commit:a}=JSON.parse(await t.text())[0];i=JSON.stringify([{sha:e,commit:{committer:a?.committer,author:a?.author}}]);let o=t.headers.get(`etag`);o&&!n.noCache&&ft(r,o,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 tr(e,t,n){return(await $t(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function nr(e,t,n){let r=t.old.replace(wn,``),[,i,a,o]=Tn.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(Jt.test(o)){let{hash:t,commit:r}=await er(i,a,n);if(!t)return null;let c=Xt(r),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=Kt(await tr(i,a,n),o);if(t)return{key:e,newRange:s(t),user:i,repo:a,oldRef:o,newRef:t}}return null}function rr(e){let t={};for(let[n,r]of Object.entries(e.releases??{}))t[n]=(r??[]).slice(0,1).map(e=>e.upload_time_iso_8601?{upload_time_iso_8601:e.upload_time_iso_8601}:{});let{name:n,version:r,project_urls:i}=e.info??{};return{info:{name:n,version:r,project_urls:i},releases:t}}async function ir(e,t){let n=`${t.pypiApiUrl}/pypi/${e}/json`,r=await Y(n,t,{headers:{"accept-encoding":`gzip, deflate, br`}},rr);if(`body`in r)return[JSON.parse(r.body),null];en(r.res,n,e,t.pypiApiUrl)}function ar(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)}\\1`,`g`),(n,r,i)=>`${r}${i}${t[e].new}${r}`)}return n}let or;async function sr(){let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]);return t(e)}function cr(){return or??=sr()}function lr(){let e=t.GOPROXY||`${K.goproxy},direct`;for(let t of e.split(/[,|]/)){let e=t.trim();if(e&&e!==`direct`&&e!==`off`)return bt(e)}return K.goproxy}function ur(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim().replace(/\/+$/,``)).filter(Boolean)}const dr=new Map;function fr(e){let t=dr.get(e);if(t)return t;let n=``;for(let t=0;t<e.length;t++){let r=e[t];if(r===`*`)n+=`[^/]*`;else if(r===`?`)n+=`[^/]`;else if(r===`[`&&e.includes(`]`,t+1)){let r=e.indexOf(`]`,t+1);n+=`[${e.slice(t+1,r).replace(/\\/g,`\\\\`)}]`,t=r}else n+=G(r)}return dr.set(e,t=RegExp(`^${n}(?:/.*)?$`)),t}function pr(e,t){return t.some(t=>fr(t).test(e))}function mr(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}const hr=/\/v(\d+)$/,gr=/^gopkg\.in\/.*?\.v(\d+)$/;function _r(e){let t=gr.exec(e)??hr.exec(e);return t?Number.parseInt(t[1]):1}function vr(e,t){if(e.startsWith(`gopkg.in/`))return`${e.replace(/\.v\d+$/,``)}.v${t}`;let n=e.replace(hr,``);return t<=1?n:`${n}/v${t}`}function yr(e,t){if(t.includes(`+incompatible`))return e;let n=Number.parseInt(q(t).split(`.`)[0]);return Number.isNaN(n)||n===_r(e)?e:vr(e,n)}const br=/^require\s*\(/,xr=/^replace\s*\(/,Sr=/^tool\s*\(/,Cr=/^use\s*\(/,wr=/^replace\s+/,Tr=/^(\S+)\s+(v\S+)/,Er=/^require\s+(\S+)\s+(v\S+)/,Dr=/^tool\s+(\S+)/,Or=/^use\s+(\S+)/,kr=/^(\S+)/,Ar=/^(\S+)(?:\s+(v\S+))?\s+=>\s+(\S+)(?:\s+(v\S+))?/,jr=/^replace\s+(\S+)(?:\s+(v\S+))?\s+=>\s+(\S+)(?:\s+(v\S+))?/;function Mr(e){return e.startsWith(`./`)||e.startsWith(`/`)||e.startsWith(`../`)}function Nr(e,t){let n=(t?Ar:jr).exec(e);if(!n)return null;let[,r,i,a,o]=n;return{origModule:r,origVersion:i??``,targetModule:a,targetVersion:o??``}}function Pr(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||Fr(n)}function Fr(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function Ir(e,t){return[{name:e,old:t,new:t},null]}async function Lr(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 Rr(e,t,n,r,i){let a=n?.Version??r,o=n?.Time??i,s=n?.path??e;return[{name:e,old:t,new:q(a),Time:o,...s!==e&&{newPath:s},sameMajorNew:q(r),sameMajorTime:i},null]}function zr(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(br.test(i)){c=!0;continue}if(xr.test(i)){l=!0;continue}if(Sr.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(i.startsWith(`//`))continue;if(u){i&&o.push(i);continue}let s=Dr.exec(i);if(s){o.push(s[1]);continue}let d=i.includes(`// indirect`);if(l||wr.test(i)){let e=Nr(i,l);e&&(e.targetVersion&&!Mr(e.targetModule)&&(r[e.targetModule]=e.targetVersion),e.origVersion||a.add(e.origModule));continue}let f=(c?Tr:Er).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 Br(e,n,r,i,a){let o=_r(e),s=async(e,n)=>{try{let{stdout:r}=await(await cr())(`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=Pr(e,n,r),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(vr(e,o+1),a.goProbeTimeout)]);return l?Rr(e,r,await Lr(o,u,t=>s(vr(e,t),a.goProbeTimeout)),l.Version,l.Time):Ir(e,r)}async function Vr(e,t,n,r,i,a){if(pr(e,a))return Br(e,t,n,r,i);let o=mr(e),s=_r(e),c=async t=>{let n=vr(e,t);try{let e=await i.doFetch(`${i.goProxyUrl}/${mr(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout),headers:{"accept-encoding":`gzip, deflate, br`}});return e.ok?{...await e.json(),path:n}:null}catch{return null}},l=Pr(e,t,n),[u,d]=await Promise.all([J(i,`${i.goProxyUrl}/${o}/@latest`,{headers:{"accept-encoding":`gzip, deflate, br`}}),l?null:c(s+1)]);if(!u.ok)return Ir(e,n);let f,p;try{let e=await u.json();f=e.Version,p=e.Time}catch{return Ir(e,n)}return Rr(e,n,await Lr(s,d,c),f,p)}function Hr(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=yr(s,l);u===s?n=n.replace(RegExp(`(${G(s)}) +v${G(c)}`,`g`),`$1 v${l}`):(n=n.replace(RegExp(`${G(s)} +v${G(c)}`,`g`),`${u} v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)${G(s)}(/\\S+)?\\s*$`,`gm`),`$1${u}$2`)),r[s]=u)}return[n,r]}function Ur(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`),s=m(`**/*.go`,{cwd:e});for(let t of s){let r=u(e,t),a=g(r,`utf8`),s=a.replace(o,(e,t,n)=>`"${i.get(t)}${n}`);s!==a&&n(r,s)}}function Wr(e){let t=[],n={},r=e.split(/\r?\n/),i=!1,a=!1;for(let e of r){let r=e.trim();if(Cr.test(r)){i=!0;continue}if(xr.test(r)){a=!0;continue}if(r===`)`){i=!1,a=!1;continue}if(i){let e=kr.exec(r);e&&!r.startsWith(`//`)&&t.push(e[1]);continue}let o=Or.exec(r);if(o){t.push(o[1]);continue}if(a||wr.test(r)){let e=Nr(r,a);e?.targetVersion&&!Mr(e.targetModule)&&(n[e.targetModule]=e.targetVersion)}}return{use:t,replace:n}}function Gr(e){let t=`https://${Kr(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[,e,i,...a]=r;return n.pathname=`/${e}/${i}/${an(t)}/${a.join(`/`)}`,n.href}return t}function Kr(e){return hr.test(e)?c(e):e}function qr(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const Jr=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function Yr(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:Jt.test(o)}}function Xr(e,t){return e?e===`github.com`?yt:`https://${e}/api/v1`:t}async function Zr(e,t,n,r,i){let a=`${e}/repos/${t}/${n}/git/commits/${r}`;if(!i.noCache){let e=await lt(a);if(e)return e.body}try{let e=await Gt(a,i);if(!e.ok)return``;let t=Xt(await e.json());return t&&!i.noCache&&ft(a,`immutable`,t),t}catch{return``}}function Qr(e,t){return rn(L(q(e))?.version??q(e),t)}function $r(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i,newComment:a}of t){let t=`(uses:\\s*['"]?(?:https?:\\/\\/)?)${G(e)}@${G(r)}(?![\\w.-])`;a&&(n=n.replace(RegExp(`${t}([ \\t]*#[ \\t]*)v?\\d\\S*`,`g`),`$1${e}@${i}$2${a}`)),n=n.replace(new RegExp(t,`g`),`$1${e}@${i}`)}return n}const ei=RegExp(`(?:^|/)(?:${U.map(G).join(`|`)})\\/(?:workflows\\/[^/]+|(?:[^/]+\\/)*action)\\.ya?ml$`);function ti(e){return ei.test(e.replace(/\\/g,`/`))}function ni(e){let t=new Set;try{for(let n of _(u(e,`workflows`)))/\.ya?ml$/.test(n)&&t.add(f(u(e,`workflows`,n)))}catch{}try{for(let n of _(e,{recursive:!0,withFileTypes:!0}))!n.isFile()||!/^action\.ya?ml$/.test(n.name)||t.add(f(u(n.parentPath,n.name)))}catch{}return Array.from(t)}const ri=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,ii=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gim,ai=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,oi=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,si=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm,ci=/^(?:index\.)?docker\.io$/;function li(e){let t=e.split(`/`);return t.length>1&&ci.test(t[0])&&t.shift(),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 ui(e){let{registry:t,namespace:n,repo:r}=li(e);if(t)return[e];let i=n===`library`?[r,`library/${r}`]:[`${n}/${r}`];return[...new Set([e,...i,...i.map(e=>`docker.io/${e}`)])]}function di(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||!ri.test(r))return null;let{registry:i,namespace:a,repo:o}=li(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function fi(e){let t=ri.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function pi(e,t){let n=fi(t);return n?rn(e,n.version,n.suffix):t}function mi(e,t){let n=[];for(let r of e.matchAll(t)){let e=di(r[1]);e&&n.push({ref:e,match:r[1]})}return n}const hi=new WeakMap;function gi(e,t,n){let r=hi.get(n);r||hi.set(n,r=new Map);let i=`${e}/${t}`,a=r.get(i);return a||r.set(i,a=_i(e,t,n)),a}async function _i(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=e=>({count:e.count,results:(e.results||[]).map(e=>({name:e.name,tag_last_pushed:e.tag_last_pushed,last_updated:e.last_updated}))}),c=async e=>{try{let t=await Y(a(e),n,o,s);return`body`in t?JSON.parse(t.body):null}catch{return null}},l=await c(1);if(!l)return r;for(let e of l.results||[])r[e.name]=e.tag_last_pushed||e.last_updated||``;let u=Math.min(Math.ceil((l.count||0)/100),10);if(u<2)return r;let d=await Promise.all(Array.from({length:u-1},(e,t)=>c(t+2)));for(let e of d)if(e)for(let t of e.results||[])r[t.name]=t.tag_last_pushed||t.last_updated||``;return r}async function vi(e,t,n,r){let i=`${r.dockerApiUrl}/v2/repositories/${e}/${t}/tags/${n}`;try{let e=await Y(i,r,{headers:{"accept-encoding":`gzip, deflate, br`}},e=>({digest:e.digest}));if(!(`body`in e))return null;let t=JSON.parse(e.body).digest;return typeof t==`string`?t:null}catch{return null}}async function yi(e,t){let{registry:n,namespace:r,repo:i}=li(e);if(n)throw Error(`Non-Docker-Hub registries are not yet supported: ${n}`);return[{tags:await gi(r,i,t),name:e},null]}function bi(e,t,n,r,i,a){let o=fi(t);if(!o)return null;let s=_e(q(o.version))?.version;if(!s)return null;let c=s,l=``,u=``;for(let[t,s]of Object.entries(e)){let e=fi(t);if(!e||e.suffix!==o.suffix||!nn(e.version,o.version))continue;let d=_e(q(e.version))?.version;if(!d||a&&!H(d,a)||!ht(s,r,i))continue;if(d===c){l&&Date.parse(s)>Date.parse(u)&&(l=t,u=s);continue}let f=z(c,d);!f||!n.has(f)||B(d,c)&&(c=d,l=t,u=s)}if(!l||c===s)return null;let d=pi(c,t),f=d in e?d:l;return f===t?null:{newTag:f,date:u}}const xi=`(?![\\w.@+-])`;function Si(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 Ci(e,t){return Si(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}${xi}`,`gi`)])}function wi(e,t){return Si(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}${xi}`,`g`)])}function Ti(e,t){return Si(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}${xi}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}${xi}`,`g`)])}const Ei=[`Dockerfile`,`compose.yml`,`compose.yaml`,`docker-compose.yml`,`docker-compose.yaml`];function Di(e){return/^(?:docker-|compose).*\.ya?ml$/.test(e)}function Oi(e){return/^Dockerfile(\..+)?$/.test(e)}function ki(e){return Oi(e)||Di(e)}function Ai(e){return Oi(e)?ii:ai}function ji(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const Mi=[`Makefile`,`makefile`,`GNUmakefile`];function Ni(e){return Mi.includes(e)||e.endsWith(`.mk`)}const Pi=String.raw`^\s*[A-Za-z_][\w.]*\s*(?:::=|:=|\?=|\+=|=)\s*`,Fi=RegExp(`${Pi}${String.raw`(\S+)@(v\d\S*)\s*$`}`),Ii=/^[^/\s]+\.[^/\s]+\//;function Li(e){let t=e.indexOf(`#`);return t===-1?e:e.slice(0,t)}function Ri(e){let t=[];for(let n of e.split(/\r?\n/)){let e=Li(n),r=Fi.exec(e);if(!r)continue;let[,i,a]=r;Ii.test(i)&&t.push({installPath:i,version:a})}return t}const zi=RegExp(`${Pi}${String.raw`(\S+)\s*$`}`),Bi=/@(sha256:[0-9a-f]{64})$/;function Vi(e,t,n){return`${e}:${t}${n?`@${n}`:``}`}function Hi(e){let t=null,n=e,r=Bi.exec(e);r&&(t=r[1],n=e.slice(0,r.index));let i=di(n.replace(/^docker\.io\//,``));return!i||i.registry||i.namespace===`library`?null:{writtenImage:n.slice(0,n.lastIndexOf(`:`)),ref:i,digest:t}}function Ui(e){let t=[];for(let n of e.split(/\r?\n/)){let e=zi.exec(Li(n));if(!e)continue;let r=Hi(e[1]);r&&t.push(r)}return t}const Wi=/\/v(?:[2-9]|[1-9]\d+)(?=\/|$)/;function Gi(e){let t=Wi.exec(e);return t?e.slice(0,t.index+t[0].length):null}function Ki(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 qi(e,t){let n=Gi(e);if(n)return n;let r=Ki(e);return(await Promise.all(r.map(async e=>{try{return(await t.doFetch(`${t.goProxyUrl}/${mr(e)}/@latest`,{signal:AbortSignal.timeout(t.goProbeTimeout)})).ok?e:null}catch{return null}}))).find(Boolean)??null}async function Ji(e,t,n,r,i,a){let o=await qi(e,r);if(!o)return null;let[s]=await Vr(o,`tool`,q(t),n,r,i),c=Lt(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:qe,isGoPseudoVersion:Fr});if(!c)return null;let l=s.newPath??yr(o,c),u=`${l}${e.slice(o.length)}`,d=rn(c,t);return u===e&&d===t?null:{newInstallPath:u,newVersion:d,date:s.Time??``,info:Gr(l)}}async function Yi(e,t,n){let{namespace:r,repo:i,fullImage:a,tag:o}=e.ref,[s]=await yi(a,t),c=bi(s.tags,o,n.semvers,n.cooldownDays,n.now,n.pinnedRange);if(!c)return null;let l=null;return e.digest&&(l=await vi(r,i,c.newTag,t),!l)?null:{newTag:c.newTag,newDigest:l,date:c.date,info:ji(e.ref)}}function Xi(e,t){for(let{oldSpec:n,newSpec:r}of t){let t=RegExp(`^([^#\\n]*?)${G(n)}(?=[\\s#]|$)`,`gm`);e=e.replace(t,`$1${r}`)}return e}const Zi=new Map,Qi=e=>({versions:(e.versions||[]).filter(e=>!e.yanked).map(e=>({num:e.num,created_at:e.created_at}))});async function $i(e,t){let n=`${bt(t.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`,r=Zi.get(n);return r||(r=(async()=>{try{let r=await Y(n,t,xt(),Qi);`body`in r||en(r.res,n,e,t.cratesIoUrl);let i;try{i=JSON.parse(r.body)}catch{throw Error(`Invalid JSON from ${n}`)}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 Zi.delete(n),e}})(),Zi.set(n,r)),[await r,null]}function ea(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];he(a)&&rt(t,i,a)}return t}const ta=/^\d/;function na(e,t){return ta.test(e)?$n(Z(`^${e}`),t,`^${e}`).replace(/^\^/,``):$n(Z(e),t,e)}function ra(e,t,n){let r=e.get(t);if(!r)return;let i=ta.test(n)?`^${n}`:n,a;for(let e of r)H(e,i)&&(!a||B(e,a))&&(a=e);return a}const ia=Ke.map(G).join(`|`);function aa(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*\\{(?:"[^"]*"|'[^']*'|[^}\\n])*?\\bversion\\s*=\\s*["'])${s}(["'])`,`gm`),`$1${a}$2`),n=n.replace(RegExp(`(\\[(?:${ia})\\.${o}\\](?:(?!\\n\\[)[\\s\\S])*?version\\s*=\\s*["'])${s}(["'])`,`g`),`$1${a}$2`)}return n}function oa(e){let t=e.indexOf(`|`);return t===-1?e:e.slice(0,t)}function sa(e,t){let n=t===`.`?``:`|${t}`,r={};for(let[t,i]of Object.entries(e)){let[e,a]=t.split(`\0`),o=oa(e);e===`${o}${n}`&&(r[`${o}${a}`]=i)}return r}const ca=/[*?{[]/;async function la(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=>m(e,{cwd:t})).map(e=>e.replace(/\\/g,`/`))),s=new Set,c=[];for(let e of i){let r=ca.test(e)?m(e,{cwd:t}).map(e=>f(u(t,e))):[f(u(t,e))];for(let e of r){let r=d(t,e).replace(/\\/g,`/`);if(o.has(r))continue;let i=u(e,n);s.has(i)||(s.add(i),c.push({absPath:i,memberPath:`./${r}`}))}}return(await W(c,async({absPath:e,memberPath:t})=>{try{return{absPath:e,content:await S(e,`utf8`),memberPath:t}}catch{return null}},{concurrency:r})).filter(e=>e!==null)}function ua(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 da=new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`,`make`]),fa={patch:new Set([`patch`]),minor:new Set([`patch`,`minor`]),major:new Set([`patch`,`minor`,`major`])},pa={"go.work":{mode:`go`,supersedes:`go.mod`},"pnpm-workspace.yaml":{mode:`npm`,supersedes:`package.json`}},ma=(e,t)=>typeof e==`string`?bt(e):typeof t==`function`?t():t,ha=/^(npm:@jsr\/[^@]+@|jsr:@[^@]+@)(.+)$/;function ga(e,t){let n=new Map,r=new Set(e),i=t;for(;r.size;){for(let e of r){let t=u(i,e);try{p(t),n.set(e,t),r.delete(e)}catch{}}let e=c(i);if(e===i)break;i=e}return n}async function _a(e,t){let n=await W(e,async e=>{try{return[e,await S(e,`utf8`)]}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}},{concurrency:t});return new Map(n)}function va(e,t){t&&(e.date=t,e.age=Le(t,{noAffix:!0}))}const ya=(e,t,n)=>`${e}${t}${n}`;function ba(e){let t=0;for(let n of Object.values(e))t+=Object.keys(n).length;return t}function xa(e){console.error(`${Xe()} ${e}`)}function Sa(e,t){return t===`go`?[e,Kr(e)]:t===`docker`?ui(e):[e]}const Ca=(e,t)=>t.map(t=>e[t]).find(Boolean);function Q(e,t,n,r,i,a=t){if(i===`engines`&&He.includes(e)||t===`pypi`&&e===`python`)return!1;if(!n.size&&!r.size)return!0;let o=Sa(e,a);for(let e of r)if(o.some(t=>e.test(t)))return!1;for(let e of n)if(o.some(t=>e.test(t)))return!0;return!n.size}function wa(t){let n=new Set;if(t)for(let e of t){let t;try{t=h(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}if(t.isFile())n.add(f(e));else if(t.isDirectory()){try{for(let t of _(e,{withFileTypes:!0}))t.isFile()&&(Object.hasOwn(Ue,t.name)||ki(t.name)||Ni(t.name))&&n.add(f(u(e,t.name)))}catch{}let t=f(e).replace(/\\/g,`/`),r=U.some(e=>t.endsWith(`/${e}/workflows`)),i=!r&&U.some(e=>t.endsWith(`/${e}`)),a=r?[c(t)]:i?[t]:U.map(e=>u(t,e));for(let e of a)for(let t of ni(e))n.add(t)}else throw Error(`${e} is neither a file nor directory`)}else{let t=new Set(U),r=[...Object.keys(Ue),...Ei,...Mi,...U];for(let[i,a]of ga(r,e()))if(t.has(i))for(let e of ni(a))n.add(e);else n.add(f(a));try{for(let t of _(e(),{withFileTypes:!0})){let r=ki(t.name)&&!Ei.includes(t.name),i=Ni(t.name)&&!Mi.includes(t.name);t.isFile()&&(r||i)&&n.add(f(u(e(),t.name)))}}catch{}}for(let e of Array.from(n)){let t=s(e);Object.hasOwn(pa,t)&&n.delete(u(c(e),pa[t].supersedes))}return n}function $(e,t){r===`win32`&&y(e,0),b(e,t,r===`win32`?{flag:`r+`}:void 0)}function Ta(e){let t={results:{}};for(let[n,r]of Object.entries(e))for(let[e,i]of Object.entries(r)){typeof i.oldPrint==`string`&&(i.old=i.oldPrint),typeof i.newPrint==`string`&&(i.new=i.newPrint),typeof i.oldOrig==`string`&&!qn(i.oldOrig)&&(i.old=n===`go`?qr(i.oldOrig):i.oldOrig),n===`go`?i.new=qr(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[r,a]=e.split(`\0`),o=t.results[n]??={};(o[r]??={})[a]=i}return t}let Ea=!1;async function Da(t={}){if(!Ea){let{enableDnsCache:e}=await import(`./dns.js`);e(),Ea=!0}let n={...t};typeof n.timeout==`number`&&(n.timeout=et(n.timeout,`timeout`));let r=n.sockets??25,a=n.timeout??0,l=ma(t.forgeapi,K.forgeapi),d=ma(t.pypiapi,K.pypiapi),p=ma(t.jsrapi,K.jsrapi),m=ma(t.goproxy,lr),h=ma(t.cargoapi,K.cargoapi),g=ma(t.dockerapi,K.dockerapi),_=ur(),v=n.color||!n.noColor&&i.isTTY,y=e=>v?t=>o(e,String(t)):String,b=y(`magenta`),ee=y(`green`),x=y(`red`),C={fetchTimeout:a||5e3,goProbeTimeout:a?Math.max(1,Math.floor(a/2)):vt,forgeApiUrl:l,pypiApiUrl:d,jsrApiUrl:p,goProxyUrl:m,cratesIoUrl:h,dockerApiUrl:g,doFetch:async(e,t)=>{n.verbose&&xa(`${b(t?.method||`GET`)} ${e}`);let r=await wt(e,t);return n.verbose&&xa(`${r.ok?ee(r.status):x(r.status)} ${e}`),r},noCache:!!n.noCache},w=hn(n.greatest),te=hn(n.prerelease),T=hn(n.release),E=hn(n.patch),D=hn(n.minor),O=hn(n.allowDowngrade),k=n.modes?.length?new Set(n.modes):da,re=(n.overrides??[]).map(e=>({include:e.include?.length?fn(e.include):void 0,exclude:e.exclude?.length?fn(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:$e(String(e.cooldown))})),ie=(e,t)=>e.include&&t.every(t=>!qe(t,e.include))?!1:!e.exclude||t.every(t=>!qe(t,e.exclude)),ae=re.some(e=>e.cooldownDays);k.has(`actions`)&&Ht();let oe=new Map;function A(e,t){let n=oe.get(e);if(!n){let r=t??[e],i=e=>r.some(t=>qe(t,e)),a=i(w),o=i(te),s=i(T),c=i(E),l=i(D),u=i(O),d;for(let e of re)ie(e,r)&&(e.greatest!==void 0&&(a=e.greatest),e.prerelease!==void 0&&(o=e.prerelease),e.release!==void 0&&(s=e.release),e.patch!==void 0&&(c=e.patch),e.minor!==void 0&&(l=e.minor),e.allowDowngrade!==void 0&&(u=e.allowDowngrade),e.cooldownDays!==void 0&&(d=e.cooldownDays));let f=c?fa.patch:l?fa.minor:fa.major;n={useGreatest:a,usePre:o,useRel:s,semvers:f,allowDowngrade:u,cooldownOverride:d},oe.set(e,n)}return n}let se=fn(n.include??[]),ce=fn(n.exclude??[]),j=n.pin??{},M={},N={},P={},le=Date.now(),ue=e=>{let t=n.cooldown??e;return t?$e(String(t)):0},de=e(),fe=e=>e.replace(`${de}/`,``).replace(`${de}\\`,``),F=(e,t,n,r,i,a)=>{M[e][ya(t,n,r)]={old:i,oldOrig:a}},pe=(e,t,n,r)=>{qn(r)?F(`npm`,e,t,n,Yn(r,n).version,r):Me(r)?F(`npm`,e,t,n,Z(r),r):Jn(r)?F(`npm`,e,t,n,`0.0.0`,r):N[ya(e,t,n)]={old:r}},me=wa(n.files?.length?new Set(n.files):!1),I=await _a(Array.from(me).filter(e=>{if(ti(e))return k.has(`actions`)||k.has(`docker`);let t=s(e);if(ki(t))return k.has(`docker`);if(Ni(t))return k.has(`make`);let n=Ue[t];return!!n&&k.has(n)}),r),L={},R={},ge={},_e=[],z=null,ve=[],ye=[],B=[],be=[],xe=[],Se={},Ce={noCache:n.noCache,timeout:n.timeout||5e3},V=it(async e=>{let t=await vn(e,Ce);return{dirConfig:t,include:t.include?.length?fn([...n.include??[],...t.include]):se,exclude:t.exclude?.length?fn([...n.exclude??[],...t.exclude]):ce}});async function we(e){let{dirConfig:t,include:n,exclude:r}=await V(e);return{modeConfig:t,modeInclude:n,modeExclude:r,pin:{...t.pin,...j}}}function Te(e,t){return n.types?.length?n.types:t?.types?.length?t.types:e===`npm`?Ve:e===`pypi`?We:e===`go`?n.indirect?Ge:Ge.filter(e=>e!==`indirect`):e===`cargo`?Ke:[]}function Ee(e,t,n,r){M.docker??={};for(let i of n)for(let{ref:n}of mi(e,i)){if(!Q(n.fullImage,`docker`,r.include,r.exclude,`docker`))continue;let e=`${t}${n.fullImage}`;if(M.docker[e])continue;let i=fi(n.tag);i&&(M.docker[e]={old:i.version,oldOrig:n.tag},be.push({key:e,fullImage:n.fullImage,ref:n,filePin:r.pin,fileCooldownDays:r.cooldownDays}))}}async function De(e){let{dirConfig:t,include:n,exclude:r}=await V(e);return{include:n,exclude:r,pin:t.pin??{},cooldownDays:ue(t.cooldown)}}let Oe=new Set,ke=new Map;for(let e of me){let t=s(e);if(Object.hasOwn(pa,t))Oe.add(pa[t].mode);else if(t===`Cargo.toml`){let t=I.get(e);if(!t)continue;try{let n=ne(t);ke.set(e,n);let r=n.workspace?.members;Array.isArray(r)&&r.length&&Oe.add(`cargo`)}catch{}}}let Ae=(e,t,n,r,i,a)=>{let o=P[e]??=[],s=!o.length&&!Oe.has(e),c=s?`.`:fe(t);return o.push({absPath:f(t),content:n,memberPath:c,projectDir:r,modeConfig:i,pin:a,modeCooldownDays:ue(i.cooldown)}),s&&(Se[e]={modeConfig:i,projectDir:r,pin:a}),s?``:`|${c}`},je=(e,t)=>{try{return t()}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}};for(let e of me){if(ti(e)){let t=k.has(`actions`),n=k.has(`docker`);if(!t&&!n)continue;let r=I.get(e),i=fe(e),a=await De(c(e));if(L[i]={absPath:e,content:r},t){M.actions??={};let e=Array.from(r.matchAll(Jr),e=>Yr(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}`;M.actions[e]||(M.actions[e]={old:t.ref},B.push({...t,key:e,apiUrl:Xr(t.host,l),filePin:a.pin,fileCooldownDays:a.cooldownDays}))}}n&&(R[i]={absPath:e,content:r,fileType:`workflow`},Ee(r,i,[ai,oi,si],a));continue}let t=s(e);if(ki(t)){if(!k.has(`docker`))continue;let n=I.get(e),r=fe(e),i=Oi(t)?`dockerfile`:`compose`,a=await De(c(e));R[r]={absPath:e,content:n,fileType:i},Ee(n,r,[Ai(t)],a);continue}if(Ni(t)){if(!k.has(`make`))continue;let t=I.get(e),n=fe(e),r=await De(c(e));ge[n]={absPath:e,content:t},M.make??={};let i={projectDir:c(e),filePin:r.pin,fileCooldownDays:r.cooldownDays};for(let{installPath:e,version:a}of Ri(t)){if(!Q(e,`make`,r.include,r.exclude,`make`,`go`))continue;let t=`${n}${e}`;M.make[t]||(M.make[t]={old:q(a),oldOrig:a},xe.push({kind:`go`,key:t,name:e,oldSpec:`${e}@${a}`,installPath:e,version:a,...i}))}for(let e of Ui(t)){if(!Q(e.writtenImage,`make`,r.include,r.exclude,`make`,`docker`))continue;let t=`${n}${e.writtenImage}`;if(M.make[t])continue;let a=fi(e.ref.tag);if(!a)continue;let o=Vi(e.writtenImage,e.ref.tag,e.digest);M.make[t]={old:a.version,oldOrig:e.ref.tag},xe.push({kind:`docker`,key:t,name:e.writtenImage,oldSpec:o,image:e,...i})}continue}let n=Ue[t];if(!k.has(n))continue;if(t===`go.work`){M[n]??={};let t=c(f(e)),i=I.get(e);z={file:e,content:i};let a=Wr(i),[o,s]=await Promise.all([we(t),W(a.use,async e=>{let n=f(u(t,e,`go.mod`));try{return{usePath:e,modPath:n,content:await S(n,`utf8`)}}catch{return null}},{concurrency:r})]),{modeConfig:l,modeInclude:d,modeExclude:p,pin:m}=o,h=Te(n,l);Se[n]={modeConfig:l,projectDir:t,pin:m};for(let e of s){if(!e)continue;let{usePath:t,modPath:r,content:i}=e,a=zr(i),o=c(r);_e.push({absPath:r,content:i,projectDir:o,usePath:t});let s=t===`.`?``:`|${t}`;for(let e of h){let t=a[e]||{};for(let[r,i]of Object.entries(t))Q(r,n,d,p,e)&&F(n,e,s,r,qr(i),q(i))}}for(let[e,t]of Object.entries(a.replace))Q(e,n,d,p,`replace`)&&F(n,`replace`,``,e,qr(t),q(t));continue}if(t===`go.mod`&&_e.some(t=>t.absPath===f(e))||t===`package.json`&&ye.some(t=>t.absPath===f(e)))continue;if(t===`Cargo.toml`){M[n]??={};let t=I.get(e),i=ke.get(e)??ne(t),a=c(f(e)),o=ga([`Cargo.lock`],a).get(`Cargo.lock`),s=i.workspace?.members,l=Array.isArray(s)&&s.length,[u,d,p]=await Promise.all([we(a),o?S(o,`utf8`):Promise.resolve(null),l?la(s,a,`Cargo.toml`,r):Promise.resolve([])]),{modeConfig:m,modeInclude:h,modeExclude:g,pin:_}=u,v=Te(n,m),y=d?ea(d):new Map,b=(e,t)=>{for(let r of v){let i=Je(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=a.version;Me(i)&&F(n,r,t,e,ra(y,e,i)??Z(i),i)}else typeof a==`string`&&Me(a)&&F(n,r,t,e,ra(y,e,a)??Z(a),a)}}};if(l){Se[n]={modeConfig:m,projectDir:a,pin:_},b(i,``),ve.push({absPath:f(e),content:t,memberPath:`.`});for(let e of p)ve.push(e),b(je(e.absPath,()=>ne(e.content)),`|${e.memberPath}`)}else b(i,Ae(n,e,t,a,m,_));continue}if(t===`pnpm-workspace.yaml`){M[n]??={};let t=c(f(e)),i=ua(I.get(e)),a=u(t,`package.json`),[o,s,l]=await Promise.all([we(t),tt(S(a,`utf8`)),la(i,t,`package.json`,r)]),{modeConfig:d,modeInclude:p,modeExclude:m,pin:h}=o,g=Te(n,d);Se[n]={modeConfig:d,projectDir:t,pin:h};let _=(e,t)=>{for(let r of g){let i=e[r]||{};if(typeof i==`string`){let[e,a]=i.split(`@`);Q(e,n,p,m,r)&&F(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,p,m,r)&&pe(r,t,e,a)}};if(s!==null){let e=je(a,()=>JSON.parse(s));ye.push({absPath:f(a),content:s,memberPath:`.`}),_(e,``)}for(let e of l){let t=je(e.absPath,()=>JSON.parse(e.content));ye.push(e),_(t,`|${e.memberPath}`)}continue}M[n]??={};let i=c(f(e)),{modeConfig:a,modeInclude:o,modeExclude:d,pin:p}=await we(i),m=Te(n,a),h=I.get(e),g=Ae(n,e,h,i,a,p),_=je(e,()=>n===`npm`?JSON.parse(h):n===`pypi`?ne(h):n===`go`?zr(h):{});for(let e of m){let t;if(t=n===`npm`||n===`go`?_[e]||{}:Je(_,e)||{},Array.isArray(t)&&n===`pypi`)for(let{name:r,version:i}of Be(t))Q(r,n,o,d,e)&&F(n,e,g,r,Z(i),i);else if(typeof t==`string`){let[r,i]=t.split(`@`);Q(r,n,o,d,e)&&F(n,e,g,r,Z(i),i)}else for(let[r,i]of Object.entries(t))Q(r,n,o,d,e)&&(n===`npm`?pe(e,g,r,i):n===`go`?F(n,e,g,r,qr(i),q(i)):Me(i)&&F(n,e,g,r,Z(i),i))}}if(!ba(M)&&!Object.keys(N).length)return{results:{},message:`No dependencies found, nothing to do.`};let H=[],Ne=!!ue(Se.npm?.modeConfig.cooldown)||(P.npm??[]).some(e=>e.modeCooldownDays)||Object.keys(M.npm??{}).some(e=>A(e.split(`\0`)[1]).cooldownOverride),Pe={registry:n.registry,needsDates:Ne};for(let[e,t]of Object.entries(Se)){let n=M[e]&&Object.keys(M[e]).length>0,i=e===`npm`&&Object.keys(N).length>0;if(!n&&!i)continue;let{modeConfig:a,projectDir:o,pin:s}=t,c=ue(a.cooldown);H.push((async()=>{let t=new Map;for(let n of P[e]??[])n.memberPath!==`.`&&t.set(`|${n.memberPath}`,n);let n={modeConfig:a,projectDir:o,pin:s,modeCooldownDays:c},i=e=>{let r=e.indexOf(`|`);return r!==-1&&t.get(e.slice(r))||n},l=new Map,u=e=>{for(let[t,{date:n}]of Object.entries(e)){if(!n)continue;let[r,a]=t.split(`\0`),{modeCooldownDays:o}=i(r);if(!o&&!ae)continue;let s=A(a).cooldownOverride??o;s&&!ht(n,s,le)&&delete e[t]}},d=M[e];if(await W(Object.keys(d),async t=>{let[n,r]=t.split(`\0`),a=oa(n),{modeConfig:o,projectDir:s,pin:c,modeCooldownDays:u}=i(n),f=d[t],p=null;if(e===`npm`){let{oldOrig:e}=f;if(e&&qn(e))p=await Xn(r,C);else if(e&&Jn(e))try{p=await Gn(r,a,o,Pe,C)}catch{delete d[t];return}else p=await Gn(r,a,o,Pe,C)}else p=e===`go`?await Vr(r,a,f.oldOrig||f.old,s,C,_):e===`cargo`?await $i(r,C):await ir(r,C);if(!p)return;let[m,h]=p;if(m.error)throw Error(m.error);let{useGreatest:g,usePre:v,useRel:y,semvers:b,allowDowngrade:ee,cooldownOverride:x}=A(m.name),S=f.old,w=f.oldOrig,te=c[r],T=x??u,E=Lt(m,{usePre:v,useRel:y,useGreatest:g,semvers:b,range:S,mode:e,pinnedRange:te,cooldownDays:T||void 0,now:T?le:void 0},{allowDowngrade:ee,matchesAny:qe,isGoPseudoVersion:Fr}),D=``;if((e===`go`||e===`pypi`)&&E)D=E;else if(e===`cargo`&&E&&w)D=na(w,E);else if(E)if(w&&Jn(w))D=String(Nn()[`save-exact`])===`true`?E:`^${E}`;else if(w&&qn(w)){let e=ha.exec(w);e?D=`${e[1]}${E}`:w.startsWith(`jsr:`)&&(D=`jsr:${E}`)}else D=$n(S,E,w);if(!E||E===S||w&&w===D){delete d[t];return}let O=``;e===`pypi`&&m.releases?.[E]?.[0]?.upload_time_iso_8601?O=m.releases[E][0].upload_time_iso_8601:e===`go`&&m.Time?O=m.Time:e===`cargo`&&m.time?.[E]&&(O=m.time[E]),f.new=D,w&&qn(w)&&(f.newPrint=E),e===`npm`?l.set(t,{name:r,promise:Kn(m.name,E,o,Pe,C)}):e===`pypi`?f.info=sn(m,h,m.info.name):e===`go`?f.info=Gr(m.newPath||r):e===`cargo`&&(f.info=`https://crates.io/crates/${r}`),O&&va(f,O)},{concurrency:r}),await Promise.all(Array.from(l,async([e,{name:t,promise:n}])=>{let r=await n,i=d[e];i&&(i.info=sn({repository:r.repository,homepage:r.homepage},null,t),r.date&&va(i,r.date))})),e===`npm`&&Object.keys(N).length){let e=(await W(Object.entries(N),([e,t])=>nr(e,t,C),{concurrency:r})).filter(e=>e!==null);for(let{key:t,newRange:n,user:r,repo:i,oldRef:a,newRef:o,newDate:s}of e){let e=d[t]={old:N[t].old,new:n,oldPrint:Jt.test(a)?a.substring(0,7):a,newPrint:Jt.test(o)?o.substring(0,7):o,info:`https://github.com/${r}/${i}`};s&&va(e,s)}}u(d)})())}B.length&&H.push((async()=>{let e=new Map;for(let t of B)rt(e,`${t.apiUrl}/${t.owner}/${t.repo}`,t);await W(e.values(),async e=>{let{apiUrl:t,owner:n,repo:i}=e[0],a=await $t(t,n,i,C),o=[],s=new Map,c=new Map,l=new Map;for(let e of a){c.set(e.name,e);let t=q(e.name);he(t)&&(o.push(t),s.has(t)||s.set(t,e.name)),e.commitSha&&l.set(e.commitSha,e.name)}let u=it(e=>Zr(t,n,i,e,C));async function d(e){let t=new Set;for(let n=0;n<20;n++){let n=It({},t.size?o.filter(e=>!t.has(e)):o,e);if(!n||n===e.range)return null;let r=s.get(n);if(!r){t.add(n);continue}let i=c.get(r)?.commitSha||``;if(!e.cooldownDays)return{version:n,tag:r,commitSha:i,date:``};let a=i?await u(i):``;if(ht(a,e.cooldownDays,e.now))return{version:n,tag:r,commitSha:i,date:a};t.add(n)}return null}await W(e,async({key:e,host:t,ref:r,name:a,isHash:o,filePin:s,fileCooldownDays:f})=>{let p=M.actions[e],m=`https://${t||`github.com`}/${n}/${i}`,h=j[a]??s[a],g=r;if(o){if(g=l.get(r)??``,!g){for(let[e,t]of l)if(e.startsWith(r)){g=t;break}}}else Yt(r)||(g=``);let _=g?X(q(g)):``;if(!_){delete M.actions[e];return}let{usePre:v,useRel:y,semvers:b,cooldownOverride:ee}=A(a),x=ee??f,S=await d({range:_,semvers:b,usePre:v,useRel:y,useGreatest:!0,pinnedRange:h,cooldownDays:x||void 0,now:x?le:void 0});if(!S){delete M.actions[e];return}let{tag:C,commitSha:w,date:te}=S;if(o){if(!w||w.startsWith(r)||r.startsWith(w)){delete M.actions[e];return}p.old=r,p.new=w.substring(0,r.length),p.oldPrint=g,p.newPrint=C}else{let t=Qr(C,r);if(t===r){delete M.actions[e];return}p.new=c.has(t)?t:C}p.info=m;let T=te||(w?await u(w):``);T&&va(p,T)},{concurrency:r})},{concurrency:r}),Object.keys(M.actions).length||delete M.actions})()),be.length&&H.push((async()=>{let e=new Map;for(let t of be)rt(e,t.fullImage,t);await W(e.entries(),async([e,t])=>{let n;try{let[t]=await yi(e,C);n=t}catch{for(let e of t)delete M.docker[e.key];return}let r=Sa(e,`docker`);for(let i of t){let t=M.docker[i.key],a=t.oldOrig||t.old,{semvers:o,cooldownOverride:s}=A(e,r),c=Ca(j,r)??Ca(i.filePin,r),l=s??i.fileCooldownDays,u=bi(n.tags,a,o,l||void 0,l?le:void 0,c);if(!u){delete M.docker[i.key];continue}t.new=u.newTag,t.info=ji(i.ref),va(t,u.date)}},{concurrency:r}),Object.keys(M.docker).length||delete M.docker})()),xe.length&&H.push((async()=>{await W(xe,async e=>{let t=Sa(e.name,e.kind),{useGreatest:n,usePre:r,useRel:i,semvers:a,allowDowngrade:o,cooldownOverride:s}=A(e.name,t),c=Ca(j,t)??Ca(e.filePin,t),l=s??e.fileCooldownDays,u={semvers:a,useGreatest:n,usePre:r,useRel:i,allowDowngrade:o,pinnedRange:c,cooldownDays:l||void 0,now:l?le:void 0},d=M.make[e.key],f;if(e.kind===`go`){let t=await tt(Ji(e.installPath,e.version,e.projectDir,C,_,u));if(!t){delete M.make[e.key];return}e.newSpec=`${t.newInstallPath}@${t.newVersion}`,d.new=t.newVersion,f=t}else{let t=await tt(Yi(e.image,C,u));if(!t){delete M.make[e.key];return}e.newSpec=Vi(e.image.writtenImage,t.newTag,e.image.digest?t.newDigest:null),d.new=t.newTag,f=t}d.info=f.info,f.date&&va(d,f.date)},{concurrency:r}),Object.keys(M.make).length||delete M.make})());try{await Promise.all(H)}finally{await pt()}if(!ba(M))return{results:{},message:`All dependencies are up to date.`};if(n.update){let e=(e,t,n)=>{for(let r of t){let t=sa(M[e],r.memberPath);Object.keys(t).length&&$(r.absPath,n(r.content,t))}},t=new Map;if(M.actions)for(let[e,n]of Object.entries(M.actions)){let[r,i]=e.split(`\0`),a=Jt.test(n.old)?n.newPrint:void 0;rt(t,r,{name:i,oldRef:n.old,newRef:n.new,newComment:a})}let n=new Map;if(M.docker)for(let[e,t]of Object.entries(M.docker)){let[r]=e.split(`\0`),i=n.get(r);i||n.set(r,i={}),i[e]=t}let r=new Map;if(M.make)for(let e of xe)!e.newSpec||!M.make[e.key]||rt(r,e.key.split(`\0`)[0],{oldSpec:e.oldSpec,newSpec:e.newSpec});let i=Object.keys(M).sort((e,t)=>(e===`docker`)-+(t===`docker`));for(let a of i)if(Object.keys(M[a]).length){if(a===`actions`){for(let[e,n]of t){let{absPath:t,content:r}=L[e]||{};if(!t)continue;let i=$r(r,n);$(t,i),R[e]&&(R[e].content=i)}continue}if(a===`docker`){for(let[e,t]of n){let n=R[e];if(!n)continue;let{absPath:r,content:i,fileType:a}=n;$(r,(a===`dockerfile`?Ci:a===`compose`?wi:Ti)(i,t))}continue}if(a===`make`){for(let[e,t]of r){let n=ge[e];n&&$(n.absPath,Xi(n.content,t))}continue}if(a===`go`){if(z){for(let e of _e){let t=sa(M[a],e.usePath);if(!Object.keys(t).length)continue;let[n,r]=Hr(e.content,t);n!==e.content&&$(e.absPath,n),Ur(e.projectDir,r,$)}let e={};for(let[t,n]of Object.entries(M[a]))t.split(`\0`)[0]===`replace`&&(e[t]=n);if(Object.keys(e).length){let[t]=Hr(z.content,e);t!==z.content&&$(z.file,t)}}for(let e of P.go??[]){let t=sa(M[a],e.memberPath);if(!Object.keys(t).length)continue;let[n,r]=Hr(e.content,t);$(e.absPath,n),Ur(e.projectDir,r,$)}}else a===`cargo`?(e(a,ve,aa),e(a,P.cargo??[],aa)):a===`npm`?(e(a,ye,Zn),e(a,P.npm??[],Zn)):e(a,P[a]??[],ar)}}return Ta(M)}function Oa(e){return/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):e}function ka(e){let t=un(e);if(t!==!1)return t===!0||Array.from(t).map(Oa)}function Aa(t){if(!t)return e();let n=l(t)?t:f(e(),t),r=!1;try{r=v(n).isDirectory()}catch{}return r?n:c(n)}function ja(e,t){let n=un(e.file),r=[...n instanceof Set?n:[],...t];return{filesList:r,startDir:Aa(r[0])}}function Ma(e){let t=a({strict:!1,allowPositionals:!0,tokens:!0,options:cn,...e!==void 0&&{args:e}}),n=t.values;for(let[e,r]of t.tokens.entries()){if(r.kind!==`option`||!r.value?.startsWith(`-`))continue;let i=r.value.startsWith(`--`)?2:1,a=dn(r.value.substring(i));if(!a)continue;let o=t.tokens[e+1],s=n[r.name];if(Array.isArray(s)){let e=s.indexOf(r.value);e!==-1&&s.splice(e,1)}else n[r.name]=!0;let c=o?.kind===`positional`&&o.value?o.value:!0;cn[a]?.multiple?(n[a]??=[]).push(c):n[a]=c}return{args:n,positionals:t.positionals}}async function Na(e,t){let{filesList:n,startDir:r}=ja(e,t),i=typeof e.timeout==`string`?et(e.timeout,`timeout`):void 0,a={...await vn(r,{noCache:!!e[`no-cache`],timeout:i??5e3})};a.pin=void 0,e.json&&(a.json=!0),e.verbose&&(a.verbose=!0),e[`no-cache`]&&(a.noCache=!0),e.update&&(a.update=!0),e.indirect&&(a.indirect=!0),e[`error-on-outdated`]&&(a.errorOnOutdated=!0),e[`error-on-unchanged`]&&(a.errorOnUnchanged=!0),i!==void 0&&(a.timeout=i),typeof e.sockets==`string`&&(a.sockets=Number(e.sockets)||void 0),typeof e.registry==`string`&&(a.registry=e.registry),typeof e.cooldown==`string`&&(a.cooldown=Number(e.cooldown)||e.cooldown);let o=pn(e.include).map(Oa),s=pn(e.exclude).map(Oa);o.length&&(a.include=o),s.length&&(a.exclude=s);let c=pn(e.types);c.length&&(a.types=c);let l=mn(e.pin);Object.keys(l).length&&(a.pin=l);let u=un(e.modes);u instanceof Set&&(a.modes=Array.from(u));for(let t of[`greatest`,`prerelease`,`release`,`patch`,`minor`]){let n=ka(e[t]);n!==void 0&&(a[t]=n)}let d=ka(e[`allow-downgrade`]);d!==void 0&&(a.allowDowngrade=d),n.length&&(a.files=n);for(let t of[`forgeapi`,`pypiapi`,`jsrapi`,`goproxy`,`cargoapi`,`dockerapi`])typeof e[t]==`string`&&(a[t]=e[t]);return a}function Pa(e){try{return yn(g(u(e,`.npmrc`),`utf8`)).registry}catch{return}}function Fa(e,t){try{return`${new URL(typeof e==`string`&&e?e:t).origin}/`}catch{return null}}const Ia={npm:[`registry`,`jsrapi`,`forgeapi`],pypi:[`pypiapi`],cargo:[`cargoapi`],go:[`goproxy`],docker:[`dockerapi`],actions:[`forgeapi`,`dockerapi`],make:[`goproxy`,`dockerapi`]};function La(e){if(Ue[e])return Ue[e];if(ki(e))return`docker`;if(Ni(e))return`make`}function Ra(e,t){let n=new Set;try{for(let t of _(e,{withFileTypes:!0}))if(t.isFile()){let e=La(t.name);e&&n.add(e)}else t.isDirectory()&&U.some(e=>e===t.name)&&n.add(`actions`)}catch{}let r=new Set;for(let i of n)for(let n of Ia[i]??[]){let i=Fa(n===`registry`&&typeof t.registry!=`string`?Pa(e):t[n],K[n]);i&&r.add(i)}return Array.from(r)}const za=/[A-Za-z_$]/,Ba=/[A-Za-z0-9_$]/;function Va(e){let t=``,n=0,r=e.length,i=-1;function a(t){for(;t<r;){if(/\s/.test(e[t])){t++;continue}if(e[t]===`/`&&e[t+1]===`/`){for(t+=2;t<r&&e[t]!==`
|
|
7
|
-
`;)t++;
|
|
8
|
-
`){n+=2;continue}t+=i,n+1<r?(t+=a,n+=2):n++;continue}if(i===`"`){t+=`\\"`,n++;continue}if(i===`'`){t+=`"`,n++;break}t+=i,n++}continue}if(
|
|
9
|
-
`;)n++;continue}if(o===`/`&&n+1<r&&e[n+1]===`*`){for(n+=2;n<r&&(e[n]!==`*`||e[n+1]!==`/`);)n++;n+=2;continue}if(o===`,`){i=t.length,t+=o,n++;continue}if(o===`}`||o===`]`){i>=0&&(t=t.slice(0,i)+t.slice(i+1)),i=-1,t+=o,n++;continue}if(za.test(o)){i=-1;let o=``;for(;n<r&&Ba.test(e[n]);)o+=e[n],n++;t+=e[a(n)]===`:`?JSON.stringify(o):o;continue}/\s/.test(o)||(i=-1),t+=o,n++}return JSON.parse(t)}export{nn as A,q as B,sn as C,Jt as D,vt as E,Xt as F,Re as G,lt as H,Zt as I,nt as J,it as K,ht as L,kt as M,bt as N,Ft as O,gt as P,qt as R,Ht as S,yt as T,ft as U,en as V,U as W,Me as Y,Lt as _,ja as a,xt as b,X as c,$t as d,Gt as f,J as g,Y as h,Na as i,Yt as j,At as k,K as l,_t as m,Ra as n,Da as o,Ot as p,Ze as q,Ma as r,Kr as s,Va as t,wt as u,It as v,an as w,Wt as x,rn as y,Kt as z};
|
|
3
|
+
`:``)+r[n]}e=n,f[p]=se(m+t+m)}else f[p]=se(u)}return t}function oe(e){let t=e.slice(0,3);return t!==`"""`&&t!==`'''`||e.includes(t,3)?``:t}function se(e){if(e.startsWith(`[`)){let t=[],n=A(e,`]`);for(let r of ue(e.slice(1,n<0?e.length:n))){let e=r.trim();e&&t.push(se(e))}return t}return e.startsWith(`{`)?le(e):e.startsWith(`"""`)?pe(e.slice(3,e.lastIndexOf(`"""`))):e.startsWith(`'''`)?e.slice(3,e.lastIndexOf(`'''`)):e.startsWith(`"`)?pe(e.slice(1,e.lastIndexOf(`"`))):e.startsWith(`'`)?e.slice(1,e.lastIndexOf(`'`)):ce(e)}function ce(e){return e===`true`?!0:e===`false`?!1:/^[+-]?\d+(\.\d+)?$/.test(e)?Number(e):e}function le(e){let t={},n=e.slice(1,e.lastIndexOf(`}`)).trim();if(!n)return t;for(let e of ue(n)){let n=e.indexOf(`=`);if(n<0)continue;let r=e.slice(0,n).trim().replace(/^["']|["']$/g,``);t[r]=se(e.slice(n+1).trim())}return t}function D(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 ue(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 de(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 fe(e){let t=k(e,`#`);return t<0?e:e.slice(0,t)}function*O(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 O(e,t).next().value??-1}function A(e,t){let n=-1;for(let r of O(e,t))n=r;return n}function j(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 pe(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 me=/^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*))?(?:\+[a-zA-Z0-9._-]+)?$/,M=new Map;function N(e){if(typeof e!=`string`)return null;let t=M.get(e);if(t!==void 0)return t;let n=me.exec(e.trim());if(!n)return M.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 M.set(e,s),s}function he(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 ge(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function _e(e,t){let n=ge(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=he(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function ve(e){return N(e)?.version??null}function P(e){return N(e)}const ye=new Map,be=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function xe(e){if(typeof e!=`string`)return null;let t=ye.get(e);if(t!==void 0)return t;let n=be.exec(e);if(!n)return ye.set(e,null),null;let r={version:`${n[1]}.${n[2]||`0`}.${n[3]||`0`}`};return ye.set(e,r),r}function F(e,t){let n=N(e),r=N(t);return!n||!r?null:I(n,r)}function I(e,t){if(e.version===t.version)return null;let n=_e(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(ge(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 Se(e,t){let n=N(e),r=N(t);return n&&r?_e(n,r):null}function L(e,t){return(Se(e,t)??-1)>0}function Ce(e,t){return(Se(e,t)??-1)>=0}function we(e,t){return(Se(e,t)??1)<0}function Te(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=N(`${n}.${t[3]??`0`}.${t[4]??`0`}${t[5]||``}`);return r?{op:t[1]||`=`,semver:r}:null}function R(e,t){let n=_e(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 z(e,t,n){return`${e}.${t}.${n}-0`}function Ee(e){return e.replace(/([~^])\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.[xX*])*((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i,a)=>{let o=Number(n),s=r===void 0?0:Number(r),c=i===void 0?0:Number(i),l=(t===`~`?r:i)===void 0?``:a,u;return u=r===void 0?z(o+1,0,0):t===`~`?z(o,s+1,0):o===0?i!==void 0&&s===0?z(0,0,c+1):z(0,s+1,0):z(o+1,0,0),`>=${o}.${s}.${c}${l} <${u}`})}function De(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?`<${z(p+1,0,0)}`:`<${z(p,Number(o)+1,0)}`:`<=${p}.${Number(o)}.${Number(s)}${c||``}`,`>=${l}.${u}.${d}${f} ${m}`})}function B(e,t,n,r){return!e||e===`=`?r?`>=${t}.0.0 <${z(t+1,0,0)}`:`>=${t}.${n}.0 <${z(t,n+1,0)}`:e===`>`?r?`>=${t+1}.0.0`:`>=${t}.${n+1}.0`:e===`<=`?r?`<${z(t+1,0,0)}`:`<${z(t,n+1,0)}`:e===`<`?r?`<${t}.0.0-0`:`<${t}.${n}.0-0`:r?`>=${t}.0.0`:`>=${t}.${n}.0`}function Oe(e){return/^\s*[*xX]\s*$/.test(e)?`>=0.0.0`:(e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)\.[xX*]/g,(e,t,n,r)=>B(t,Number(n),Number(r),!1)),e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.[xX*](?:\.[xX*])?/g,(e,t,n)=>B(t,Number(n),0,!0)),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)(?=\s|$)/g,(e,t,n,r,i)=>`${t}${B(n,Number(r),Number(i),!1)}`),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)(?=\s|$)/g,(e,t,n,r)=>`${t}${B(n,Number(r),0,!0)}`),e)}const V=new Map;function ke(e){let t=V.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=De(t),t=Ee(t),t=Oe(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=Te(t);if(!n)return V.set(e,null),null;i.push(n)}if(i.length===0)return V.set(e,null),null;r.push(i)}let i=r.length?r:null;return V.set(e,i),i}function Ae(e,t){return t.some(t=>!R(e,t))?!1: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}function H(e,t){let n=N(e);if(!n)return!1;let r=ke(t);if(!r)return!1;for(let e of r)if(e.length===0||Ae(n,e))return!0;return!1}function je(e){return typeof e==`string`&&ke(e)?e:null}const Me=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],Ne={"1 day ago":`yesterday`,"1 week ago":`last week`,"1 month ago":`last month`,"1 year ago":`last year`,"in 1 day":`tomorrow`,"in 1 week":`next week`,"in 1 month":`next month`,"in 1 year":`next year`},Pe={sec:`second`,min:`minute`};function Fe(e){return typeof e==`number`?e:e instanceof Date?e.getTime():Date.parse(e)}function Ie(e,{now:t,noAffix:n=!1,times:r=Me,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=Ne,longUnits:l=!1}={}){let u=(t===void 0?Date.now():Fe(t))-Fe(e);if(Number.isNaN(u))return o||String(e);let d=u<0;if(d&&(u=-u),u<i)return a;let f=0,p=``;for(let e=0,t=r.length;e<t;e++){let t=r[e];if(!(u>=t[1])){f=Math.trunc(u/t[0]),p=(l&&Pe[t[2]]||t[2])+(f>1?`s`:``);break}}let m=`${f} ${p}`,h=n?m:d?`in ${m}`:`${m} ago`;return s?c[h]??h:h}function Le(e,t,n){if(e===t)return e;let r=0;for(;r<e.length&&r<t.length&&e[r]===t[r];)r++;if(r>0&&e[r-1]!==`.`&&e[r-1]!==`-`){let t=r-1;for(;t>=0&&e[t]!==`.`&&e[t]!==`-`;)t--;if(t>=0)r=t+1;else{let t=0;for(;t<r;){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}const Re=/^([^<>=~!]+)(?:==|>=?|<=?|~=)([0-9.a-z]+)$/;function ze(e){let t=[];for(let n of e){let e=Re.exec(n.replaceAll(/\s+/g,``));if(!e)continue;let r=e[1].replace(/\[.*?\]$/,``);r&&t.push({name:r,version:e[2]})}return t}const Be=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],Ve=[`node`,`deno`,`bun`],U=[`.github`,`.gitea`,`.forgejo`],He={"pnpm-workspace.yaml":`npm`,"package.json":`npm`,"pyproject.toml":`pypi`,"go.work":`go`,"go.mod":`go`,"Cargo.toml":`cargo`},Ue=[`project.dependencies`,`project.optional-dependencies`,`dependency-groups.dev`,`dependency-groups.lint`,`dependency-groups.test`],We=[`deps`,`indirect`,`replace`,`tool`],Ge=[`dependencies`,`dev-dependencies`,`build-dependencies`,`workspace.dependencies`];function Ke(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 qe(e,t){return t.split(`.`).reduce((e,t)=>e?.[t]??null,e)}function Je(e){return e.split(`,`).filter(Boolean)}function Ye(){let e=new Date;return new Date(e.getTime()-e.getTimezoneOffset()*6e4).toISOString().replace(`T`,` `).slice(0,-1)}function Xe(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 Ze={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function Qe(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Ze[n.toLowerCase()];if(r)return Number(e)*r}if(!/^\d+(?:\.\d+)?$/.test(e))throw Error(`Invalid cooldown value: ${e}`);return Number(e)}function $e(e,t){let n=Math.round(Number(e));if(!Number.isFinite(n)||n<1)throw Error(`Invalid ${t}: ${e}`);return n}async function W(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}async function et(e){try{return await e}catch{return null}}const G=RegExp.escape?e=>RegExp.escape(e):e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);async function tt(e,t){let n=e;for(;;){let e=await t(n);if(e)return e;let r=c(n);if(r===n)return null;n=r}}function nt(e,t,n){let r=e.get(t);r?r.push(n):e.set(t,[n])}function rt(e){let t=new Map;return n=>{let r=t.get(n);return r||(r=e(n),t.set(n,r)),r}}const it=u(r===`win32`?t.LOCALAPPDATA||u(w(),`AppData`,`Local`):t.XDG_CACHE_HOME||u(w(),`.cache`),`updates`);let at=null;const ot=new Map;function st(e){let t=ot.get(e);return t===void 0&&(t=re(`sha256`).update(e).digest(`hex`).substring(0,16),ot.set(e,t)),t}async function ct(e){try{let t=await x(u(it,`${st(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}}const lt=new Set;let ut=0;function dt(e,t,r){let i=(async()=>{try{await(at??=b(it,{recursive:!0}))}catch{at=null;return}try{let i=u(it,`${st(e)}.cache`),a=`${i}.${n}-${ut++}.tmp`;await C(a,`${t}\n${r}`),await S(a,i)}catch{}})();lt.add(i),(async()=>{await i,lt.delete(i)})()}async function ft(){for(;lt.size;)await Promise.all(lt)}var pt=`17.21.0`;function K(e,t,n){if(!t||!n||!e)return!0;let r=Date.parse(e);return Number.isNaN(r)?!0:(n-r)/864e5>=t}const mt=pt,ht=5e3,gt=2500,_t=`https://api.github.com`,q={registry:`https://registry.npmjs.org`,jsrapi:`https://jsr.io`,forgeapi:_t,pypiapi:`https://pypi.org`,cargoapi:`https://crates.io`,dockerapi:`https://hub.docker.com`,goproxy:`https://proxy.golang.org`},J=e=>e[0]===`v`?e.substring(1):e,vt=e=>e.endsWith(`/`)?e.slice(0,-1):e;function yt(e,t){return{headers:{"user-agent":`updates/${mt}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}const bt=new Set([`ECONNRESET`,`ECONNREFUSED`,`ETIMEDOUT`,`EAI_AGAIN`,`EPIPE`,`UND_ERR_SOCKET`,`UND_ERR_CONNECT_TIMEOUT`,`UND_ERR_HEADERS_TIMEOUT`,`UND_ERR_BODY_TIMEOUT`]);function xt(e){if(e?.name===`TimeoutError`||e?.name===`AbortError`)return!0;let t=e?.code??e?.cause?.code;return typeof t==`string`&&bt.has(t)}async function St(e,t){try{return await fetch(e,t)}catch(t){let n=Error(`Failed to fetch ${e}${t?.message?`: ${t.message}`:``}`,{cause:t});throw n.transient=xt(t),n}}async function Y(e,t,n={}){for(let r=0;;r++)try{return await e.doFetch(t,{...n,signal:AbortSignal.timeout(e.fetchTimeout)})}catch(e){if(r>=2||!e?.transient)throw e}}async function Ct(e){return typeof e.text==`function`?e.text():JSON.stringify(await e.json())}function wt(e,t){if(!t||e.length<16384)return e;try{return JSON.stringify(t(JSON.parse(e)))}catch{return e}}async function Tt(e,t,n,r,i){let a=wt(await Ct(t),r);return i&&!n.noCache&&dt(e,i,a),{body:a,res:t}}async function Et(e,t,n={},r){let i=t.noCache?null:await ct(e),a=n.headers,o=i?{...a,"if-none-match":i.etag}:a,s=await Y(t,e,{...n,headers:o});return s?s.status===304&&i?{body:i.body,res:s}:s.ok?Tt(e,s,t,r,s.headers?.get?.(`etag`)):{res:s}:{res:void 0}}async function Dt(e,t,n={},r){if(!t.noCache){let t=await ct(e);if(t)return{body:t.body}}let i=await Y(t,e,n);return i?i.ok?Tt(e,i,t,r,`immutable`):{res:i}:{res:void 0}}function Ot(e,t,n){let r=e.get(t);return r||e.set(t,r=(async()=>{try{return await n()}catch(n){throw e.delete(t),n}})()),r}function kt(e){return(P(e)?.prerelease.length??0)>0}function At(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}const jt=/\d+\.\d+\.\d+(?:-[a-zA-Z0-9_.-]+)?/,Mt=new WeakMap;function Nt(e){let t=Mt.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`),Mt.set(e,n),n}function Pt(e,t,n){let r=At(e)||t;return{effectiveUsePre:r,effectiveSemvers:r?Nt(n):n}}function Ft(e,t,{useRel:n,allowDowngrade:r,name:i}){let a=X(e),o=X(t);if(!a||!o)return!0;let s=At(e)||kt(e),c=kt(t);return s&&!c?Ce(o,a)||n:!c&&we(o,a)?Ke(i,r):!0}function X(e){return xe(e)?.version??``}function It(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:u}){let d=X(n);if(!d)return null;let f=P(jt.exec(n)?.[0]??``)??P(d),{effectiveUsePre:p,effectiveSemvers:m}=Pt(n,i,r),h=e?.time,g=!!h,_=o||!g,v=!!(c&&l),y=!!s&&!H(f.version,s)||a&&f.prerelease.length>0,ee=0,te=!1,b=f;for(let e of t){let t=P(e);if(!t?.version||t.prerelease.length&&(!p||a)||!y&&_e(t,f)<=0||s&&!H(t.version,s))continue;let n;if(v&&(n=u?u(e):g?h[e]:void 0,!K(n,c,l)))continue;let r=I(f,t);if(!(!r||!m.has(r))){if(_){if(te&&_e(t,b)<=0)continue}else{let t=Date.parse(n??h[e]);if(!(t>=0&&t>ee))continue;ee=t}b=t,te=!0}}return b.version}function Lt(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function Rt(e,{mode:t,range:n,useGreatest:r,useRel:i,usePre:a,semvers:o,pinnedRange:s,cooldownDays:c,now:l,allowDowngrade:u}){if(n===`*`||n.includes(`||`)||/\d\s/.test(n))return null;let d=[],f;if(t===`pypi`){let t=e.releases;d=Object.keys(t),f=e=>t?.[e]?.[0]?.upload_time_iso_8601}else if(t===`npm`||t===`cargo`)d=Object.keys(e.versions);else if(t===`go`){let t=X(n);if(!t)return null;let{effectiveUsePre:r,effectiveSemvers:d}=Pt(n,a,o),f=e=>kt(e)&&(!r||i),p={useRel:i,allowDowngrade:u,name:e.name},m=e.old||n,h=(e,n)=>{let r=X(e);if(!r||Lt(e)||f(e))return!1;let i=F(m,e)??F(t,r);return!i||!d.has(i)||!Ft(m,e,p)||!K(n,c,l)?!1:!s||H(r,s)};return h(e.new,e.Time)?e.new:h(e.sameMajorNew,e.sameMajorTime)?(e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew):null}let p=It(e,d,{range:n,semvers:o,usePre:a,useRel:i,useGreatest:r,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:f});if(!p)return null;if(r)return p;{let r=``,d=``,f=!1;t===`pypi`?(d=e.info.version,r=X(e.info.version),f=kt(d)):(r=e[`dist-tags`].latest,f=kt(r));let m=X(n),h=At(n),g=kt(p),_={useRel:i,allowDowngrade:u,name:e.name};if(!i&&a||h&&g)return p;if(h&&!g)return Ft(n,p,_)?p:null;let v=F(m,r);return v&&v!==`prerelease`&&!o.has(v.replace(/^pre/,``))||i&&f?p:we(r,m)&&!f?Ft(n,r,_)?r:L(p,m)?p:null:!h&&f&&!a||s&&!H(r,s)||c&&l&&!K(t===`pypi`?e.releases?.[d||r]?.[0]?.upload_time_iso_8601:e.time?.[r],c,l)?p:d||r}}function zt(e){try{return new URL(e).host}catch{return``}}function Bt(e){for(let n of Je(t.UPDATES_FORGE_TOKENS??``)){let t=n.lastIndexOf(`:`);if(t>0&&n.slice(0,t)===e)return n.slice(t+1)}return null}let Vt;async function Ht(){let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]);return t(e)}function Ut(){return Vt??=Ht()}const Wt=[`UPDATES_GITHUB_API_TOKEN`,`GITHUB_API_TOKEN`,`GH_TOKEN`,`GITHUB_TOKEN`,`HOMEBREW_GITHUB_API_TOKEN`];function Gt(){return Array.from(new Set(Wt.map(e=>t[e]).filter(e=>!!e)))}let Kt;function qt(){let e=Gt();return e.length?Promise.resolve(e):Kt??=(async()=>{try{let{stdout:e}=await(await Ut())(`gh`,[`auth`,`token`],{encoding:`utf8`,timeout:5e3}),t=e.trim();return t?[t]:[]}catch{return[]}})()}const Jt=/^http\.(\S+)\/\.extraheader AUTHORIZATION:\s*basic\s+(\S+)$/i;function Yt(e){let t=new Map;for(let n of e.split(/\r?\n/)){let e=Jt.exec(n);if(!e)continue;let r=zt(e[1]),i=ne.from(e[2],`base64`).toString(`utf8`),a=i.slice(i.indexOf(`:`)+1);r&&a&&!t.has(r)&&t.set(r,a)}return t}let Xt;function Zt(){return Xt??=(async()=>{try{let{stdout:e}=await(await Ut())(`git`,[`config`,`--get-regexp`,`^http\\..*\\.extraheader$`],{encoding:`utf8`,timeout:5e3});return Yt(e)}catch{return new Map}})()}const Qt=new Map;async function $t(e,t){if(!e)return[];let n=Bt(e);if(n)return[n];let r=e===`api.github.com`?`github.com`:e,i=r===`github.com`||e===zt(t),[a,o]=await Promise.all([i?qt():[],Zt()]),s=o.get(r);return Array.from(new Set(s?[...a,s]:a))}async function en(e,t,n){let r=zt(e),i=await $t(r,t.forgeApiUrl),a=e=>{let t=yt(`Bearer`,e);return n&&(t.headers={...t.headers,...n}),t};if(!i.length)return Y(t,e,a());let o=Qt.get(r);if(o)return Y(t,e,a(o));for(let n of i){let i=await Y(t,e,a(n));if(i.status!==401&&i.status!==403)return Qt.set(r,n),i}return Y(t,e,a())}function tn(e,t){let n=J(t);if(!ve(n))return null;let r=``,i=``;for(let t of e){let e=J(t);ve(e)&&(!r||L(e,i))&&(r=t,i=e)}return r&&L(i,n)?r:null}function nn(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 rn=/^(?=.*[a-f])[0-9a-f]{6,}$/i;function an(e){return/^v?\d+(?:\.\d+)*(?:[-+][\w.-]+)?$/.test(e)}function on(e){let t=e?.commit??e;return t?.committer?.date||t?.author?.date||``}function sn(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function cn(e,t,n){let r=t.noCache?null:await ct(e),i=await en(e,t,r?{"if-none-match":r.etag}:void 0);if(i?.status===304&&r)return r.body;if(!i?.ok)return null;let a=await n(i),o=i.headers.get(`etag`);return o&&!t.noCache&&dt(e,o,a),a}async function ln(e,t){let n=await cn(e,t,async e=>JSON.stringify({link:e.headers.get(`link`)||``,tags:sn(await e.json())}));if(!n)return null;try{let e=JSON.parse(n);return{tags:e.tags||[],link:e.link||``}}catch{return null}}async function un(e,t,n,r){let i=r=>`${e}/repos/${t}/${n}/tags?per_page=100&page=${r}`;try{let e=await ln(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)=>ln(i(t+2),r)));for(let e of o)e&&t.push(...e.tags);return t}catch{return[]}}function dn(e,t,n,r){throw e?.status&&e.statusText?Error(`Received ${e.status} ${e.statusText} from ${t}`):Error(`Unable to fetch ${n} from ${r}`)}const fn=e=>Number(e[0])>=2e7;function pn(e,t){let n=J(e).split(`.`),r=J(t).split(`.`);return n.length<r.length?!1:!fn(n)||fn(r)}function mn(e,t,n=``){let r=J(e),i=J(t).split(`.`).length,a=r.split(`.`),o=i>=3?r:Array.from({length:i},(e,t)=>a[t]||`0`).join(`.`);return`${t.startsWith(`v`)?`v`:``}${o}${n}`}function hn(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}const gn=[`repository`,`Repository`,`repo`,`Repo`,`source`,`Source`,`source code`,`Source code`,`Source Code`,`homepage`,`Homepage`];function _n({repository:e,homepage:t,info:n},r,i){if(n){let t=n.project_urls;for(let n of gn)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=nn(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a+=`/${hn(a)}/${e.directory}`)),a||t||``)}const vn={"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 yn(e){return e instanceof RegExp?/[gy]/.test(e.flags)?new RegExp(e.source,e.flags.replace(/[gy]/g,``)):e:RegExp(`^${G(e).replaceAll(`\\*`,`.*`)}$`,`i`)}function bn(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.filter(e=>typeof e==`string`).flatMap(Je)):typeof e==`string`?new Set([e]):typeof e==`boolean`&&e}function xn(e){for(let[t,{short:n}]of Object.entries(vn))if(t===e||n===e)return t;return``}function Sn(e){return new Set(e.map(yn))}function Cn(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(Je):[]}function wn(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&&je(i)&&(t[r]=i)}return t}function Tn(e){return typeof e==`boolean`?e:!Array.isArray(e)||!e.length?!1:Sn(e)}async function En(e){let t=await Promise.all([`js`,`ts`,`mjs`,`mts`].map(async t=>{let n=`updates.config.${t}`,r=u(e,n);try{await te(r)}catch{return null}try{return{configDir:e,default:(await import(T(r).href)).default??{}}}catch(e){return Error(`Unable to parse config file ${n}: ${e?.message??e}`)}}));for(let e of t)if(e&&!(e instanceof Error))return e;for(let e of t)if(e instanceof Error)throw e;return null}const Dn=rt(e=>tt(e,En));async function On(e,t={}){let n=await Dn(e),r=n?.default??{},{loadRenovateConfig:i,makePresetFetcher:a}=await import(`./renovate.js`),o=a(t);return{...await i(n?.configDir??e,r.inherit?.renovate,o),...r}}function kn(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();/^(["']).*\1$/s.test(i)&&(i=i.slice(1,-1)),t[e.slice(0,r).trim()]=i}return t}function An(e){try{return kn(g(e,`utf-8`))}catch{return}}function jn(t){let n=e();for(;;){let e=u(n,t);try{if(v(e).isFile())return e}catch{}let r=c(n);if(r===n)break;n=r}}function Mn(e){let n={},r=e.toLowerCase();for(let[i,a]of Object.entries(t)){if(!i.toLowerCase().startsWith(r))continue;let t=i.substring(e.length).split(`__`).filter(Boolean);if(t.length===0)continue;let o=n;for(let e=0;e<t.length;e++){let n=t[e];if(e===t.length-1)o[n]=a;else if(o[n]===void 0&&(o[n]={}),typeof o[n]==`object`)o=o[n];else break}}return n}function Nn(e,n={}){let i=r===`win32`,a=i?t.USERPROFILE:t.HOME,o=[{...n}],s=[];function c(e){if(!e||s.includes(e))return;let t=An(e);t&&(o.push(t),s.push(e))}i||(c(u(`/etc`,e,`config`)),c(u(`/etc`,`${e}rc`))),a&&(c(u(a,`.config`,e,`config`)),c(u(a,`.config`,e)),c(u(a,`.${e}`,`config`)),c(u(a,`.${e}rc`))),c(jn(`.${e}rc`));let l=Mn(`${e}_`);return l.config&&c(l.config),Object.assign({},...o,l,s.length?{configs:s,config:s[s.length-1]}:void 0)}const Pn=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,Fn=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,In=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,Ln=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,Rn=/(@[^/]+\/)?([^/]+)/g;function zn(e){let t=e.match(Rn);return t?t[t.length-1]:e}const Bn=q.registry;let Vn=null;const Hn=new Map;function Un(){return Vn??=Nn(`npm`,{registry:Bn})}function Wn(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function Gn(e,t){let n=n=>t[`${e}:${n}`]||t[`${e}/:${n}`],r=n(`_authToken`);if(r)return{token:Wn(r),type:`Bearer`};let i=n(`username`),a=n(`_password`);if(i&&a){let e=Buffer.from(Wn(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:Wn(o),type:`Basic`}}function Kn(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=Gn(`//${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:Wn(i),type:`Basic`}}function qn(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function Jn(e,t){let n=Un(),r=e.startsWith(`@`)?e.split(`/`)[0]:``,i=`${r}:${t}`,a=Hn.get(i);if(a)return a;let o;if(r){let e=vt(qn(r,n));if(e!==t)try{let t=Kn(e,n);t?.token&&(o={auth:t,registry:e})}catch{}}return o??={auth:Kn(t,n),registry:t},Hn.set(i,o),o}function Yn(e,t,n){let r=vt(typeof n.registry==`string`&&n.registry||t.registry||Un().registry||Bn);return{...Jn(e,r),originalRegistry:r}}function Xn(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const Zn=new Map,Qn=new Map,$n=new Map;function er(e){let t={};for(let n of Object.keys(e.versions??{}))t[n]={};return{name:e.name,"dist-tags":e[`dist-tags`],versions:t,time:e.time,error:e.error}}async function tr(e,t,n,r,i){let{auth:a,registry:o}=Yn(e,n,r),s=Xn(o,t===`resolutions`?zn(e):e);return[await Ot(Zn,s,async()=>{let t=yt(a?.type,a?.token);r.needsDates||(t.headers={...t.headers,accept:`application/vnd.npm.install-v1+json`});let n=await Et(s,i,t,er);return`body`in n||dn(n.res,s,e,o),JSON.parse(n.body)}),o]}async function nr(e,t,n,r,i){let{auth:a,registry:o}=Yn(e,n,r),s=Xn(o,e,t);return Ot(Qn,s,async()=>{try{let n=yt(a?.type,a?.token),r=await Dt(s,i,n,e=>({repository:e.repository,homepage:e.homepage,_npmOperationalInternal:e._npmOperationalInternal?.tmp?{tmp:e._npmOperationalInternal.tmp}:void 0}));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())}let d=Xn(o,e);return l||=(await Zn.get(d))?.time?.[t]||``,l||=(await et(Ot($n,d,async()=>{let e=await Y(i,d,n);return e?.ok?await e.json():null})))?.time?.[t]||``,{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})}function rr(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function ir(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}const ar=[/^npm:@jsr\/([^_]+)__([^@]+)@(.+)$/,/^jsr:@([^/]+)\/([^@]+)@(.+)$/],or=/^@([^/]+)\/(.+)$/;function sr(e,t){for(let t of ar){let n=t.exec(e);if(n)return{scope:n[1],name:n[2],version:n[3]}}if(e.startsWith(`jsr:`)&&!e.startsWith(`jsr:@`)){let n=or.exec(t??``);if(n)return{scope:n[1],name:n[2],version:e.substring(4)}}return{scope:null,name:null,version:``}}async function cr(e,t){if(!or.test(e))throw Error(`Invalid JSR package name: ${e}`);let n=`${t.jsrApiUrl}/${e}/meta.json`,r=await Et(n,t,{headers:{"accept-encoding":`gzip, deflate, br`}},e=>({latest:e.latest,versions:Object.fromEntries(Object.entries(e.versions??{}).map(([e,t])=>[e,{createdAt:t?.createdAt}]))}));`body`in r||dn(r.res,n,e,`JSR`);let i=JSON.parse(r.body),a={},o={};for(let[e,t]of Object.entries(i.versions??{}))a[e]={version:e,time:t.createdAt},o[e]=t.createdAt;return[{name:e,"dist-tags":{latest:i.latest},versions:a,time:o},t.jsrApiUrl]}function lr(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 ur(e,t){let n=/^(<\s*)(\d+(?:\.\d+){0,2})$/.exec(e);if(!n)return null;let[,r,i]=n,{major:a,minor:o,patch:s}=P(t),c=i.split(`.`).length,l;return l=c===1?`${a+1}`:c===2?`${a}.${o+1}`:i.endsWith(`.0.0`)?`${a+1}.0.0`:`${a}.${o}.${s+1}`,`${r}${l}`}function dr(e,t,n){let r=n||e;if(/^>\s*\d/.test(r))return e;let i=ur(r,t);if(i)return i;let a=e.replace(Ln,t);if(!n||n===e)return a;let o=/^([\^~]|>=\s*)([\d.]+)$/.exec(n);if(!o)return a;let[,s,c]=o,l=t.split(/[-+]/)[0];if(l!==t)return a;let u=c.split(`.`).length,d=l.split(`.`);return d.length===u?a:`${s}${d.slice(0,u).join(`.`)}`}function Z(e){if(/[xX*]/.test(e))return e;let t=e.match(In);return t?.length===1?e.replace(In,X(t[0])):e}async function fr(e,t,n){let r=`${n.forgeApiUrl}/repos/${e}/${t}/commits`;try{let e=await cn(r,n,async e=>{let{sha:t,commit:n}=JSON.parse(await e.text())[0];return JSON.stringify([{sha:t,commit:{committer:n?.committer,author:n?.author}}])});if(!e)return{hash:``,commit:{}};let{sha:t,commit:i}=JSON.parse(e)[0];return{hash:t,commit:i}}catch{return{hash:``,commit:{}}}}async function pr(e,t,n){return(await un(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function mr(e,t,n){let r=t.old.replace(Pn,``),[,i,a,o]=Fn.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(rn.test(o)){let{hash:t,commit:r}=await fr(i,a,n);if(!t)return null;let c=on(r),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=tn(await pr(i,a,n),o);if(t)return{key:e,newRange:s(t),user:i,repo:a,oldRef:o,newRef:t}}return null}function hr(e){let t={};for(let[n,r]of Object.entries(e.releases??{}))t[n]=(r??[]).slice(0,1).map(e=>e.upload_time_iso_8601?{upload_time_iso_8601:e.upload_time_iso_8601}:{});let{name:n,version:r,project_urls:i}=e.info??{};return{info:{name:n,version:r,project_urls:i},releases:t}}async function gr(e,t){let n=`${t.pypiApiUrl}/pypi/${e}/json`,r=await Et(n,t,{headers:{"accept-encoding":`gzip, deflate, br`}},hr);if(`body`in r)return[JSON.parse(r.body),null];dn(r.res,n,e,t.pypiApiUrl)}function _r(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)}\\1`,`g`),(n,r,i)=>`${r}${i}${t[e].new}${r}`)}return n}function vr(){let e=t.GOPROXY||`${q.goproxy},direct`;for(let t of e.split(/[,|]/)){let e=t.trim();if(e&&e!==`direct`&&e!==`off`)return vt(e)}return q.goproxy}function yr(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim().replace(/\/+$/,``)).filter(Boolean)}const br=new Map;function xr(e){let t=br.get(e);if(t)return t;let n=``;for(let t=0;t<e.length;t++){let r=e[t];if(r===`*`)n+=`[^/]*`;else if(r===`?`)n+=`[^/]`;else if(r===`[`&&e.includes(`]`,t+1)){let r=e.indexOf(`]`,t+1);n+=`[${e.slice(t+1,r).replace(/\\/g,`\\\\`)}]`,t=r}else n+=G(r)}return br.set(e,t=RegExp(`^${n}(?:/.*)?$`)),t}function Sr(e,t){return t.some(t=>xr(t).test(e))}function Cr(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}const wr=/\/v(\d+)$/,Tr=/^gopkg\.in\/.*?\.v(\d+)$/;function Er(e){let t=Tr.exec(e)??wr.exec(e);return t?Number.parseInt(t[1]):1}function Dr(e,t){if(e.startsWith(`gopkg.in/`))return`${e.replace(/\.v\d+$/,``)}.v${t}`;let n=e.replace(wr,``);return t<=1?n:`${n}/v${t}`}function Or(e,t){if(t.includes(`+incompatible`))return e;let n=Number.parseInt(J(t).split(`.`)[0]);return Number.isNaN(n)||n===Er(e)?e:Dr(e,n)}const kr=/^require\s*\(/,Ar=/^replace\s*\(/,jr=/^tool\s*\(/,Mr=/^use\s*\(/,Nr=/^replace\s+/,Pr=/^(\S+)\s+(v\S+)/,Fr=/^require\s+(\S+)\s+(v\S+)/,Ir=/^tool\s+(\S+)/,Lr=/^use\s+(\S+)/,Rr=/^(\S+)/,zr=/^(\S+)(?:\s+(v\S+))?\s+=>\s+(\S+)(?:\s+(v\S+))?/,Br=/^replace\s+(\S+)(?:\s+(v\S+))?\s+=>\s+(\S+)(?:\s+(v\S+))?/;function Vr(e){return e.startsWith(`./`)||e.startsWith(`/`)||e.startsWith(`../`)}function Hr(e,t){let n=(t?zr:Br).exec(e);if(!n)return null;let[,r,i,a,o]=n;return{origModule:r,origVersion:i??``,targetModule:a,targetVersion:o??``}}function Ur(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||Lt(n)}function Wr(e,t){return[{name:e,old:t,new:t},null]}async function Gr(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 Kr(e,t,n,r,i){let a=n?.Version??r,o=n?.Time??i,s=n?.path??e;return[{name:e,old:t,new:J(a),Time:o,...s!==e&&{newPath:s},sameMajorNew:J(r),sameMajorTime:i},null]}function qr(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(kr.test(i)){c=!0;continue}if(Ar.test(i)){l=!0;continue}if(jr.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(i.startsWith(`//`))continue;if(u){i&&o.push(i);continue}let s=Ir.exec(i);if(s){o.push(s[1]);continue}let d=i.includes(`// indirect`);if(l||Nr.test(i)){let e=Hr(i,l);e&&(e.targetVersion&&!Vr(e.targetModule)&&(r[e.targetModule]=e.targetVersion),e.origVersion||a.add(e.origModule));continue}let f=(c?Pr:Fr).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 Jr(e,n,r,i,a){let o=Er(e),s=async(e,n)=>{try{let{stdout:r}=await(await Ut())(`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=Ur(e,n,r),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(Dr(e,o+1),a.goProbeTimeout)]);return l?Kr(e,r,await Gr(o,u,t=>s(Dr(e,t),a.goProbeTimeout)),l.Version,l.Time):Wr(e,r)}async function Yr(e,t,n,r,i,a){if(Sr(e,a))return Jr(e,t,n,r,i);let o=Cr(e),s=Er(e),c=async t=>{let n=Dr(e,t);try{let e=await i.doFetch(`${i.goProxyUrl}/${Cr(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout),headers:{"accept-encoding":`gzip, deflate, br`}});return e.ok?{...await e.json(),path:n}:null}catch{return null}},l=Ur(e,t,n),[u,d]=await Promise.all([Y(i,`${i.goProxyUrl}/${o}/@latest`,{headers:{"accept-encoding":`gzip, deflate, br`}}),l?null:c(s+1)]);if(!u.ok)return Wr(e,n);let f,p;try{let e=await u.json();f=e.Version,p=e.Time}catch{return Wr(e,n)}return Kr(e,n,await Gr(s,d,c),f,p)}function Xr(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=Or(s,l);u===s?n=n.replace(RegExp(`(${G(s)}) +v${G(c)}`,`g`),`$1 v${l}`):(n=n.replace(RegExp(`${G(s)} +v${G(c)}`,`g`),`${u} v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)${G(s)}(/\\S+)?\\s*$`,`gm`),`$1${u}$2`)),r[s]=u)}return[n,r]}function Zr(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`),s=m(`**/*.go`,{cwd:e});for(let t of s){let r=u(e,t),a=g(r,`utf8`),s=a.replace(o,(e,t,n)=>`"${i.get(t)}${n}`);s!==a&&n(r,s)}}function Qr(e){let t=[],n={},r=e.split(/\r?\n/),i=!1,a=!1;for(let e of r){let r=e.trim();if(Mr.test(r)){i=!0;continue}if(Ar.test(r)){a=!0;continue}if(r===`)`){i=!1,a=!1;continue}if(i){let e=Rr.exec(r);e&&!r.startsWith(`//`)&&t.push(e[1]);continue}let o=Lr.exec(r);if(o){t.push(o[1]);continue}if(a||Nr.test(r)){let e=Hr(r,a);e?.targetVersion&&!Vr(e.targetModule)&&(n[e.targetModule]=e.targetVersion)}}return{use:t,replace:n}}function $r(e){let t=`https://${ei(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[,e,i,...a]=r;return n.pathname=`/${e}/${i}/${hn(t)}/${a.join(`/`)}`,n.href}return t}function ei(e){return wr.test(e)?c(e):e}function ti(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const ni=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function ri(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:rn.test(o)}}function ii(e,t){return e?e===`github.com`?_t:`https://${e}/api/v1`:t}async function ai(e,t,n,r,i){let a=`${e}/repos/${t}/${n}/git/commits/${r}`;if(!i.noCache){let e=await ct(a);if(e)return e.body}try{let e=await en(a,i);if(!e.ok)return``;let t=on(await e.json());return t&&!i.noCache&&dt(a,`immutable`,t),t}catch{return``}}function oi(e,t){return mn(P(J(e))?.version??J(e),t)}function si(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i,newComment:a}of t){let t=`(uses:\\s*['"]?(?:https?:\\/\\/)?)${G(e)}@${G(r)}(?![\\w.-])`;a&&(n=n.replace(RegExp(`${t}([ \\t]*#[ \\t]*)v?\\d\\S*`,`g`),`$1${e}@${i}$2${a}`)),n=n.replace(new RegExp(t,`g`),`$1${e}@${i}`)}return n}const ci=RegExp(`(?:^|/)(?:${U.map(G).join(`|`)})\\/(?:workflows\\/[^/]+|(?:[^/]+\\/)*action)\\.ya?ml$`);function li(e){return ci.test(e.replace(/\\/g,`/`))}function ui(e){let t=new Set;try{for(let n of _(u(e,`workflows`)))/\.ya?ml$/.test(n)&&t.add(f(u(e,`workflows`,n)))}catch{}try{for(let n of _(e,{recursive:!0,withFileTypes:!0}))!n.isFile()||!/^action\.ya?ml$/.test(n.name)||t.add(f(u(n.parentPath,n.name)))}catch{}return Array.from(t)}const di=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,fi=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gim,pi=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,mi=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,hi=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm,gi=/^(?:index\.)?docker\.io$/;function _i(e){let t=e.split(`/`);return t.length>1&&gi.test(t[0])&&t.shift(),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 vi(e){let{registry:t,namespace:n,repo:r}=_i(e);if(t)return[e];let i=n===`library`?[r,`library/${r}`]:[`${n}/${r}`];return[...new Set([e,...i,...i.map(e=>`docker.io/${e}`)])]}function yi(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||!di.test(r))return null;let{registry:i,namespace:a,repo:o}=_i(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function bi(e){let t=di.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function xi(e,t){let n=bi(t);return n?mn(e,n.version,n.suffix):t}function Si(e,t){let n=[];for(let r of e.matchAll(t)){let e=yi(r[1]);e&&n.push({ref:e,match:r[1]})}return n}const Ci=new WeakMap;function wi(e,t,n){let r=Ci.get(n);return r||Ci.set(n,r=new Map),Ot(r,`${e}/${t}`,()=>Ti(e,t,n))}async function Ti(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=e=>({count:e.count,results:(e.results||[]).map(e=>({name:e.name,tag_last_pushed:e.tag_last_pushed,last_updated:e.last_updated}))}),c=async e=>{try{let t=await Et(a(e),n,o,s);return`body`in t?JSON.parse(t.body):null}catch{return null}},l=await c(1);if(!l)return r;let u=Math.min(Math.ceil((l.count||0)/100),10),d=u<2?[]:await Promise.all(Array.from({length:u-1},(e,t)=>c(t+2)));for(let e of[l,...d])for(let t of e?.results||[])r[t.name]=t.tag_last_pushed||t.last_updated||``;return r}async function Ei(e,t,n,r){let i=`${r.dockerApiUrl}/v2/repositories/${e}/${t}/tags/${n}`;try{let e=await Et(i,r,{headers:{"accept-encoding":`gzip, deflate, br`}},e=>({digest:e.digest}));if(!(`body`in e))return null;let t=JSON.parse(e.body).digest;return typeof t==`string`?t:null}catch{return null}}async function Di(e,t){let{registry:n,namespace:r,repo:i}=_i(e);if(n)throw Error(`Non-Docker-Hub registries are not yet supported: ${n}`);return[{tags:await wi(r,i,t),name:e},null]}function Oi(e,t,n,r,i,a){let o=bi(t);if(!o)return null;let s=xe(J(o.version))?.version;if(!s)return null;let c=s,l=``,u=``;for(let[t,s]of Object.entries(e)){let e=bi(t);if(!e||e.suffix!==o.suffix||!pn(e.version,o.version))continue;let d=xe(J(e.version))?.version;if(!d||a&&!H(d,a)||!K(s,r,i))continue;if(d===c){l&&Date.parse(s)>Date.parse(u)&&(l=t,u=s);continue}let f=F(c,d);!f||!n.has(f)||L(d,c)&&(c=d,l=t,u=s)}if(!l||c===s)return null;let d=xi(c,t),f=d in e?d:l;return f===t?null:{newTag:f,date:u}}const ki=`(?![\\w.@+-])`;function Ai(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 ji(e,t){return Ai(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}${ki}`,`gi`)])}function Mi(e,t){return Ai(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}${ki}`,`g`)])}function Ni(e,t){return Ai(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}${ki}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}${ki}`,`g`)])}const Pi=[`Dockerfile`,`compose.yml`,`compose.yaml`,`docker-compose.yml`,`docker-compose.yaml`];function Fi(e){return/^(?:docker-|compose).*\.ya?ml$/.test(e)}function Ii(e){return/^Dockerfile(\..+)?$/.test(e)}function Li(e){return Ii(e)||Fi(e)}function Ri(e){return Ii(e)?fi:pi}function zi(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const Bi=[`Makefile`,`makefile`,`GNUmakefile`];function Vi(e){return Bi.includes(e)||e.endsWith(`.mk`)}const Hi=String.raw`^\s*[A-Za-z_][\w.]*\s*(?:::=|:=|\?=|\+=|=)\s*`,Ui=RegExp(`${Hi}${String.raw`(\S+)@(v\d\S*)\s*$`}`),Wi=/^[^/\s]+\.[^/\s]+\//;function Gi(e){let t=e.indexOf(`#`);return t===-1?e:e.slice(0,t)}function Ki(e){let t=[];for(let n of e.split(/\r?\n/)){let e=Gi(n),r=Ui.exec(e);if(!r)continue;let[,i,a]=r;Wi.test(i)&&t.push({installPath:i,version:a})}return t}const qi=RegExp(`${Hi}${String.raw`(\S+)\s*$`}`),Ji=/@(sha256:[0-9a-f]{64})$/;function Yi(e,t,n){return`${e}:${t}${n?`@${n}`:``}`}function Xi(e){let t=null,n=e,r=Ji.exec(e);r&&(t=r[1],n=e.slice(0,r.index));let i=yi(n.replace(/^docker\.io\//,``));return!i||i.registry||i.namespace===`library`?null:{writtenImage:n.slice(0,n.lastIndexOf(`:`)),ref:i,digest:t}}function Zi(e){let t=[];for(let n of e.split(/\r?\n/)){let e=qi.exec(Gi(n));if(!e)continue;let r=Xi(e[1]);r&&t.push(r)}return t}const Qi=/\/v(?:[2-9]|[1-9]\d+)(?=\/|$)/;function $i(e){let t=Qi.exec(e);return t?e.slice(0,t.index+t[0].length):null}async function ea(e,t){let n=$i(e);if(n)return n;let r=e.split(`/`);return(await Promise.all(Array.from({length:r.length-1},async(e,n)=>{let i=r.slice(0,r.length-n).join(`/`);try{return(await t.doFetch(`${t.goProxyUrl}/${Cr(i)}/@latest`,{signal:AbortSignal.timeout(t.goProbeTimeout)})).ok?i:null}catch{return null}}))).find(Boolean)??null}async function ta(e,t,n,r,i,a){let o=await ea(e,r);if(!o)return null;let[s]=await Yr(o,`tool`,J(t),n,r,i),c=Rt(s,{...a,mode:`go`,range:J(t)});if(!c)return null;let l=s.newPath??Or(o,c),u=`${l}${e.slice(o.length)}`,d=mn(c,t);return u===e&&d===t?null:{newInstallPath:u,newVersion:d,date:s.Time??``,info:$r(l)}}async function na(e,t,n){let{namespace:r,repo:i,fullImage:a,tag:o}=e.ref,[s]=await Di(a,t),c=Oi(s.tags,o,n.semvers,n.cooldownDays,n.now,n.pinnedRange);if(!c)return null;let l=null;return e.digest&&(l=await Ei(r,i,c.newTag,t),!l)?null:{newTag:c.newTag,newDigest:l,date:c.date,info:zi(e.ref)}}function ra(e,t){for(let{oldSpec:n,newSpec:r}of t){let t=RegExp(`^([^#\\n]*?)${G(n)}(?=[\\s#]|$)`,`gm`);e=e.replace(t,`$1${r}`)}return e}const ia=new Map,aa=e=>({versions:(e.versions||[]).filter(e=>!e.yanked).map(e=>({num:e.num,created_at:e.created_at}))});async function oa(e,t){let n=`${vt(t.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`;return[await Ot(ia,n,async()=>{let r=await Et(n,t,yt(),aa);`body`in r||dn(r.res,n,e,t.cratesIoUrl);let i;try{i=JSON.parse(r.body)}catch{throw Error(`Invalid JSON from ${n}`)}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??``}}}),null]}function sa(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];ve(a)&&nt(t,i,a)}return t}const ca=/^\d/;function la(e,t){return ca.test(e)?dr(Z(`^${e}`),t,`^${e}`).replace(/^\^/,``):dr(Z(e),t,e)}function ua(e,t,n){let r=e.get(t);if(!r)return;let i=ca.test(n)?`^${n}`:n,a;for(let e of r)H(e,i)&&(!a||L(e,a))&&(a=e);return a}const da=Ge.map(G).join(`|`);function fa(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*\\{(?:"[^"]*"|'[^']*'|[^}\\n])*?\\bversion\\s*=\\s*["'])${s}(["'])`,`gm`),`$1${a}$2`),n=n.replace(RegExp(`(\\[(?:${da})\\.${o}\\](?:(?!\\n\\[)[\\s\\S])*?version\\s*=\\s*["'])${s}(["'])`,`g`),`$1${a}$2`)}return n}function pa(e){let t=e.indexOf(`|`);return t===-1?e:e.slice(0,t)}function ma(e,t){let n=t===`.`?``:`|${t}`,r={};for(let[t,i]of Object.entries(e)){let[e,a]=t.split(`\0`),o=pa(e);e===`${o}${n}`&&(r[`${o}${a}`]=i)}return r}const ha=/[*?{[]/;async function ga(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=>m(e,{cwd:t})).map(e=>e.replace(/\\/g,`/`))),s=new Set,c=[];for(let e of i){let r=ha.test(e)?m(e,{cwd:t}).map(e=>f(u(t,e))):[f(u(t,e))];for(let e of r){let r=d(t,e).replace(/\\/g,`/`);if(o.has(r))continue;let i=u(e,n);s.has(i)||(s.add(i),c.push({absPath:i,memberPath:`./${r}`}))}}return(await W(c,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 _a(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 va=new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`,`make`]),ya={patch:new Set([`patch`]),minor:new Set([`patch`,`minor`]),major:new Set([`patch`,`minor`,`major`])},ba={"go.work":{mode:`go`,supersedes:`go.mod`},"pnpm-workspace.yaml":{mode:`npm`,supersedes:`package.json`}},xa=(e,t)=>typeof e==`string`?vt(e):typeof t==`function`?t():t,Sa=/^(npm:@jsr\/[^@]+@|jsr:@[^@]+@)(.+)$/;function Ca(e,t){let n=new Map,r=new Set(e),i=t;for(;r.size;){for(let e of r){let t=u(i,e);try{p(t),n.set(e,t),r.delete(e)}catch{}}let e=c(i);if(e===i)break;i=e}return n}async function wa(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 Ta(e,t){t&&(e.date=t,e.age=Ie(t,{noAffix:!0}))}const Ea=(e,t,n)=>`${e}${t}${n}`,Da=e=>Object.values(e).reduce((e,t)=>e+Object.keys(t).length,0);function Oa(e,t){return t===`go`?[e,ei(e)]:t===`docker`?vi(e):[e]}const ka=(e,t)=>t.map(t=>e[t]).find(Boolean);function Q(e,t,n,r,i,a=t){if(i===`engines`&&Ve.includes(e)||t===`pypi`&&e===`python`)return!1;if(!n.size&&!r.size)return!0;let o=Oa(e,a);for(let e of r)if(o.some(t=>e.test(t)))return!1;for(let e of n)if(o.some(t=>e.test(t)))return!0;return!n.size}function Aa(t){let n=new Set;if(t)for(let e of t){let t;try{t=h(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}if(t.isFile())n.add(f(e));else if(t.isDirectory()){try{for(let t of _(e,{withFileTypes:!0}))t.isFile()&&(Object.hasOwn(He,t.name)||Li(t.name)||Vi(t.name))&&n.add(f(u(e,t.name)))}catch{}let t=f(e).replace(/\\/g,`/`),r=U.some(e=>t.endsWith(`/${e}/workflows`)),i=!r&&U.some(e=>t.endsWith(`/${e}`)),a=r?[c(t)]:i?[t]:U.map(e=>u(t,e));for(let e of a)for(let t of ui(e))n.add(t)}else throw Error(`${e} is neither a file nor directory`)}else{let t=new Set(U),r=[...Object.keys(He),...Pi,...Bi,...U];for(let[i,a]of Ca(r,e()))if(t.has(i))for(let e of ui(a))n.add(e);else n.add(f(a));try{for(let t of _(e(),{withFileTypes:!0})){let r=Li(t.name)&&!Pi.includes(t.name),i=Vi(t.name)&&!Bi.includes(t.name);t.isFile()&&(r||i)&&n.add(f(u(e(),t.name)))}}catch{}}for(let e of Array.from(n)){let t=s(e);Object.hasOwn(ba,t)&&n.delete(u(c(e),ba[t].supersedes))}return n}function $(e,t){r===`win32`&&y(e,0),ee(e,t,r===`win32`?{flag:`r+`}:void 0)}function ja(e){let t={results:{}};for(let[n,r]of Object.entries(e))for(let[e,i]of Object.entries(r)){typeof i.oldPrint==`string`&&(i.old=i.oldPrint),typeof i.newPrint==`string`&&(i.new=i.newPrint),typeof i.oldOrig==`string`&&!rr(i.oldOrig)&&(i.old=n===`go`?ti(i.oldOrig):i.oldOrig),n===`go`?i.new=ti(i.new):n===`actions`&&(i.old=J(i.old),i.new=J(i.new)),delete i.oldPrint,delete i.newPrint,delete i.oldOrig,delete i.date;let[r,a]=e.split(`\0`),o=t.results[n]??={};(o[r]??={})[a]=i}return t}let Ma=!1;async function Na(t={}){if(!Ma){let{enableDnsCache:e}=await import(`./dns.js`);e(),Ma=!0}let n={...t};typeof n.timeout==`number`&&(n.timeout=$e(n.timeout,`timeout`));let r=n.sockets??25,a=n.timeout??0,l=xa(t.forgeapi,q.forgeapi),d=xa(t.pypiapi,q.pypiapi),p=xa(t.jsrapi,q.jsrapi),m=xa(t.goproxy,vr),h=xa(t.cargoapi,q.cargoapi),g=xa(t.dockerapi,q.dockerapi),_=yr(),v=!n.noColor&&(n.color||i.isTTY),y=e=>v?t=>o(e,String(t)):String,ee=y(`magenta`),te=y(`green`),b=y(`red`),S={fetchTimeout:a||5e3,goProbeTimeout:a?Math.max(1,Math.floor(a/2)):gt,forgeApiUrl:l,pypiApiUrl:d,jsrApiUrl:p,goProxyUrl:m,cratesIoUrl:h,dockerApiUrl:g,doFetch:async(e,t)=>{n.verbose&&console.error(`${Ye()} ${ee(t?.method||`GET`)} ${e}`);let r=await St(e,t);return n.verbose&&console.error(`${Ye()} ${r.ok?te(r.status):b(r.status)} ${e}`),r},noCache:!!n.noCache},C=Tn(n.greatest),ne=Tn(n.prerelease),re=Tn(n.release),w=Tn(n.patch),T=Tn(n.minor),ie=Tn(n.allowDowngrade),E=n.modes?.length?new Set(n.modes):va,oe=(n.overrides??[]).map(e=>({include:e.include?.length?Sn(e.include):void 0,exclude:e.exclude?.length?Sn(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:Qe(String(e.cooldown))})),se=(e,t)=>e.include&&t.every(t=>!Ke(t,e.include))?!1:!e.exclude||t.every(t=>!Ke(t,e.exclude)),ce=oe.some(e=>e.cooldownDays);E.has(`actions`)&&qt();let le=new Map;function D(e,t){let n=le.get(e);if(!n){let r=t??[e],i=e=>r.some(t=>Ke(t,e)),a=i(C),o=i(ne),s=i(re),c=i(w),l=i(T),u=i(ie),d;for(let e of oe)se(e,r)&&(e.greatest!==void 0&&(a=e.greatest),e.prerelease!==void 0&&(o=e.prerelease),e.release!==void 0&&(s=e.release),e.patch!==void 0&&(c=e.patch),e.minor!==void 0&&(l=e.minor),e.allowDowngrade!==void 0&&(u=e.allowDowngrade),e.cooldownDays!==void 0&&(d=e.cooldownDays));let f=c?ya.patch:l?ya.minor:ya.major;n={useGreatest:a,usePre:o,useRel:s,semvers:f,allowDowngrade:u,cooldownOverride:d},le.set(e,n)}return n}let ue=Sn(n.include??[]),de=Sn(n.exclude??[]),fe=n.pin??{},O={},k={},A={},j=Date.now(),pe=e=>{let t=n.cooldown??e;return t?Qe(String(t)):0},me=e(),M=e=>e.replace(`${me}/`,``).replace(`${me}\\`,``),N=(e,t,n,r,i,a)=>{O[e][Ea(t,n,r)]={old:i,oldOrig:a}},he=(e,t,n,r)=>{rr(r)?N(`npm`,e,t,n,sr(r,n).version,r):je(r)?N(`npm`,e,t,n,Z(r),r):ir(r)?N(`npm`,e,t,n,`0.0.0`,r):k[Ea(e,t,n)]={old:r}},ge=(e,t,n,r,i,a)=>{for(let o of r){let r=(e===`npm`||e===`go`?t[o]:qe(t,o))||{};if(Array.isArray(r)){if(e!==`pypi`)continue;for(let{name:t,version:s}of ze(r))Q(t,e,i,a,o)&&N(e,o,n,t,Z(s),s)}else if(typeof r==`string`){let[t,s]=r.split(`@`);Q(t,e,i,a,o)&&N(e,o,n,t,Z(s),s)}else for(let[t,s]of Object.entries(r))Q(t,e,i,a,o)&&(e===`npm`?he(o,n,t,s):e===`go`?N(e,o,n,t,ti(s),J(s)):je(s)&&N(e,o,n,t,Z(s),s))}},_e=Aa(n.files?.length?new Set(n.files):!1),P=await wa(Array.from(_e).filter(e=>{if(li(e))return E.has(`actions`)||E.has(`docker`);let t=s(e);if(Li(t))return E.has(`docker`);if(Vi(t))return E.has(`make`);let n=He[t];return!!n&&E.has(n)}),r),ye={},be={},xe={},F=[],I=null,Se=[],L=[],Ce=[],we=[],Te=[],R={},z={noCache:n.noCache,timeout:n.timeout||5e3},Ee=rt(async e=>{let t=await On(e,z);return{dirConfig:t,include:t.include?.length?Sn([...n.include??[],...t.include]):ue,exclude:t.exclude?.length?Sn([...n.exclude??[],...t.exclude]):de}});async function De(e){let{dirConfig:t,include:n,exclude:r}=await Ee(e);return{modeConfig:t,modeInclude:n,modeExclude:r,pin:{...t.pin,...fe}}}function B(e,t){return n.types?.length?n.types:t?.types?.length?t.types:e===`npm`?Be:e===`pypi`?Ue:e===`go`?n.indirect?We:We.filter(e=>e!==`indirect`):e===`cargo`?Ge:[]}function Oe(e,t,n,r){O.docker??={};for(let i of n)for(let{ref:n}of Si(e,i)){if(!Q(n.fullImage,`docker`,r.include,r.exclude,`docker`))continue;let e=`${t}${n.fullImage}`;if(O.docker[e])continue;let i=bi(n.tag);i&&(O.docker[e]={old:i.version,oldOrig:n.tag},we.push({key:e,fullImage:n.fullImage,ref:n,filePin:r.pin,fileCooldownDays:r.cooldownDays}))}}async function V(e){let{dirConfig:t,include:n,exclude:r}=await Ee(e);return{include:n,exclude:r,pin:t.pin??{},cooldownDays:pe(t.cooldown)}}let ke=new Set,Ae=new Map;for(let e of _e){let t=s(e);if(Object.hasOwn(ba,t))ke.add(ba[t].mode);else if(t===`Cargo.toml`){let t=P.get(e);if(!t)continue;try{let n=ae(t);Ae.set(e,n);let r=n.workspace?.members;Array.isArray(r)&&r.length&&ke.add(`cargo`)}catch{}}}let H=(e,t,n,r,i,a)=>{let o=A[e]??=[],s=!o.length&&!ke.has(e),c=s?`.`:M(t);return o.push({absPath:f(t),content:n,memberPath:c,projectDir:r,modeConfig:i,pin:a,modeCooldownDays:pe(i.cooldown)}),s&&(R[e]={modeConfig:i,projectDir:r,pin:a}),s?``:`|${c}`},Me=(e,t)=>{try{return t()}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}};for(let e of P.keys()){if(li(e)){let t=E.has(`actions`),n=E.has(`docker`),r=P.get(e),i=M(e),a=await V(c(e));if(ye[i]={absPath:e,content:r},t){O.actions??={};let e=Array.from(r.matchAll(ni),e=>ri(e[1])).filter(e=>e!==null);for(let t of e){if(!Q(t.name,`actions`,a.include,a.exclude,`actions`))continue;let e=`${i}${t.name}`;O.actions[e]||(O.actions[e]={old:t.ref},Ce.push({...t,key:e,apiUrl:ii(t.host,l),filePin:a.pin,fileCooldownDays:a.cooldownDays}))}}n&&(be[i]={absPath:e,content:r,fileType:`workflow`},Oe(r,i,[pi,mi,hi],a));continue}let t=s(e);if(Li(t)){let n=P.get(e),r=M(e),i=Ii(t)?`dockerfile`:`compose`,a=await V(c(e));be[r]={absPath:e,content:n,fileType:i},Oe(n,r,[Ri(t)],a);continue}if(Vi(t)){let t=P.get(e),n=M(e),r=await V(c(e));xe[n]={absPath:e,content:t},O.make??={};let i={projectDir:c(e),filePin:r.pin,fileCooldownDays:r.cooldownDays};for(let{installPath:e,version:a}of Ki(t)){if(!Q(e,`make`,r.include,r.exclude,`make`,`go`))continue;let t=`${n}${e}`;O.make[t]||(O.make[t]={old:J(a),oldOrig:a},Te.push({kind:`go`,key:t,name:e,oldSpec:`${e}@${a}`,installPath:e,version:a,...i}))}for(let e of Zi(t)){if(!Q(e.writtenImage,`make`,r.include,r.exclude,`make`,`docker`))continue;let t=`${n}${e.writtenImage}`;if(O.make[t])continue;let a=bi(e.ref.tag);if(!a)continue;let o=Yi(e.writtenImage,e.ref.tag,e.digest);O.make[t]={old:a.version,oldOrig:e.ref.tag},Te.push({kind:`docker`,key:t,name:e.writtenImage,oldSpec:o,image:e,...i})}continue}let n=He[t];if(t===`go.work`){O[n]??={};let t=c(f(e)),i=P.get(e);I={file:e,content:i};let a=Qr(i),[{modeConfig:o,modeInclude:s,modeExclude:l,pin:d},p]=await Promise.all([De(t),W(a.use,async e=>{let n=f(u(t,e,`go.mod`));try{return{usePath:e,modPath:n,content:await x(n,`utf8`)}}catch{return null}},{concurrency:r})]),m=B(n,o);R[n]={modeConfig:o,projectDir:t,pin:d};for(let e of p){if(!e)continue;let{usePath:t,modPath:r,content:i}=e,a=qr(i),o=c(r);F.push({absPath:r,content:i,projectDir:o,memberPath:t}),ge(n,a,t===`.`?``:`|${t}`,m,s,l)}for(let[e,t]of Object.entries(a.replace))Q(e,n,s,l,`replace`)&&N(n,`replace`,``,e,ti(t),J(t));continue}if(t===`go.mod`&&F.some(t=>t.absPath===f(e))||t===`package.json`&&L.some(t=>t.absPath===f(e)))continue;if(t===`Cargo.toml`){O[n]??={};let t=P.get(e),i=Ae.get(e)??ae(t),a=c(f(e)),o=Ca([`Cargo.lock`],a).get(`Cargo.lock`),s=i.workspace?.members,l=Array.isArray(s)&&s.length,[{modeConfig:u,modeInclude:d,modeExclude:p,pin:m},h,g]=await Promise.all([De(a),o?x(o,`utf8`):Promise.resolve(null),l?ga(s,a,`Cargo.toml`,r):Promise.resolve([])]),_=B(n,u),v=h?sa(h):new Map,y=(e,t)=>{for(let r of _){let i=qe(e,r)||{};if(!(typeof i!=`object`||Array.isArray(i))){for(let[e,a]of Object.entries(i))if(Q(e,n,d,p,r))if(typeof a==`object`&&a&&`version`in a&&!(`git`in a)&&!(`path`in a)){let i=a.version;je(i)&&N(n,r,t,e,ua(v,e,i)??Z(i),i)}else typeof a==`string`&&je(a)&&N(n,r,t,e,ua(v,e,a)??Z(a),a)}}};if(l){R[n]={modeConfig:u,projectDir:a,pin:m},y(i,``),Se.push({absPath:f(e),content:t,memberPath:`.`});for(let e of g)Se.push(e),y(Me(e.absPath,()=>ae(e.content)),`|${e.memberPath}`)}else y(i,H(n,e,t,a,u,m));continue}if(t===`pnpm-workspace.yaml`){O[n]??={};let t=c(f(e)),i=_a(P.get(e)),a=u(t,`package.json`),[{modeConfig:o,modeInclude:s,modeExclude:l,pin:d},p,m]=await Promise.all([De(t),et(x(a,`utf8`)),ga(i,t,`package.json`,r)]),h=B(n,o);if(R[n]={modeConfig:o,projectDir:t,pin:d},p!==null){let e=Me(a,()=>JSON.parse(p));L.push({absPath:f(a),content:p,memberPath:`.`}),ge(n,e,``,h,s,l)}for(let e of m){let t=Me(e.absPath,()=>JSON.parse(e.content));L.push(e),ge(n,t,`|${e.memberPath}`,h,s,l)}continue}O[n]??={};let i=c(f(e)),{modeConfig:a,modeInclude:o,modeExclude:d,pin:p}=await De(i),m=B(n,a),h=P.get(e),g=H(n,e,h,i,a,p);ge(n,Me(e,()=>n===`npm`?JSON.parse(h):n===`pypi`?ae(h):n===`go`?qr(h):{}),g,m,o,d)}if(!Da(O)&&!Object.keys(k).length)return{results:{},message:`No dependencies found, nothing to do.`};let Ne=[],Pe=!!pe(R.npm?.modeConfig.cooldown)||(A.npm??[]).some(e=>e.modeCooldownDays)||Object.keys(O.npm??{}).some(e=>D(e.split(`\0`)[1]).cooldownOverride),Fe={registry:n.registry,needsDates:Pe};for(let[e,t]of Object.entries(R)){let n=O[e]&&Object.keys(O[e]).length>0,i=e===`npm`&&Object.keys(k).length>0;if(!n&&!i)continue;let{modeConfig:a,projectDir:o,pin:s}=t,c=pe(a.cooldown);Ne.push((async()=>{let t=new Map;for(let n of A[e]??[])n.memberPath!==`.`&&t.set(`|${n.memberPath}`,n);let n={modeConfig:a,projectDir:o,pin:s,modeCooldownDays:c},i=e=>{let r=e.indexOf(`|`);return r!==-1&&t.get(e.slice(r))||n},l=new Map,u=e=>{for(let[t,{date:n}]of Object.entries(e)){if(!n)continue;let[r,a]=t.split(`\0`),{modeCooldownDays:o}=i(r);if(!o&&!ce)continue;let s=D(a).cooldownOverride??o;s&&!K(n,s,j)&&delete e[t]}},d=O[e];if(await W(Object.keys(d),async t=>{let[n,r]=t.split(`\0`),a=pa(n),{modeConfig:o,projectDir:s,pin:c,modeCooldownDays:u}=i(n),f=d[t],p;if(e===`npm`)if(f.oldOrig&&rr(f.oldOrig))p=await cr(r,S);else if(f.oldOrig&&ir(f.oldOrig)){let e=await et(tr(r,a,o,Fe,S));if(!e){delete d[t];return}p=e}else p=await tr(r,a,o,Fe,S);else p=e===`go`?await Yr(r,a,f.oldOrig||f.old,s,S,_):e===`cargo`?await oa(r,S):await gr(r,S);let[m,h]=p;if(m.error)throw Error(m.error);let{useGreatest:g,usePre:v,useRel:y,semvers:ee,allowDowngrade:te,cooldownOverride:b}=D(m.name),{old:x,oldOrig:C}=f,ne=c[r],re=b??u,w=Rt(m,{usePre:v,useRel:y,useGreatest:g,semvers:ee,range:x,mode:e,pinnedRange:ne,allowDowngrade:te,cooldownDays:re||void 0,now:re?j:void 0}),T=``;if((e===`go`||e===`pypi`)&&w)T=w;else if(e===`cargo`&&w&&C)T=la(C,w);else if(w)if(C&&ir(C))T=String(Un()[`save-exact`])===`true`?w:`^${w}`;else if(C&&rr(C)){let e=Sa.exec(C);e?T=`${e[1]}${w}`:C.startsWith(`jsr:`)&&(T=`jsr:${w}`)}else T=dr(x,w,C);if(!w||w===x||C&&C===T){delete d[t];return}let ie=(e===`pypi`?m.releases?.[w]?.[0]?.upload_time_iso_8601:e===`go`?m.Time:e===`cargo`?m.time?.[w]:``)||``;f.new=T,C&&rr(C)&&(f.newPrint=w),e===`npm`?l.set(t,{name:r,promise:nr(m.name,w,o,Fe,S)}):e===`pypi`?f.info=_n(m,h,m.info.name):e===`go`?f.info=$r(m.newPath||r):e===`cargo`&&(f.info=`https://crates.io/crates/${r}`),Ta(f,ie)},{concurrency:r}),await Promise.all(Array.from(l,async([e,{name:t,promise:n}])=>{let r=await n,i=d[e];i&&(i.info=_n({repository:r.repository,homepage:r.homepage},null,t),r.date&&Ta(i,r.date))})),e===`npm`&&Object.keys(k).length){let e=(await W(Object.entries(k),([e,t])=>mr(e,t,S),{concurrency:r})).filter(e=>e!==null);for(let{key:t,newRange:n,user:r,repo:i,oldRef:a,newRef:o,newDate:s}of e){let e=d[t]={old:k[t].old,new:n,oldPrint:rn.test(a)?a.substring(0,7):a,newPrint:rn.test(o)?o.substring(0,7):o,info:`https://github.com/${r}/${i}`};s&&Ta(e,s)}}u(d)})())}Ce.length&&Ne.push((async()=>{await W(Map.groupBy(Ce,e=>`${e.apiUrl}/${e.owner}/${e.repo}`).values(),async e=>{let{apiUrl:t,owner:n,repo:i}=e[0],a=await un(t,n,i,S),o=[],s=new Map,c=new Map,l=new Map;for(let e of a){c.set(e.name,e);let t=J(e.name);ve(t)&&(o.push(t),s.has(t)||s.set(t,e.name)),e.commitSha&&l.set(e.commitSha,e.name)}let u=rt(e=>ai(t,n,i,e,S));async function d(e){let t=new Set;for(let n=0;n<20;n++){let n=It({},t.size?o.filter(e=>!t.has(e)):o,e);if(!n||n===e.range)return null;let r=s.get(n);if(!r){t.add(n);continue}let i=c.get(r)?.commitSha||``;if(!e.cooldownDays)return{version:n,tag:r,commitSha:i,date:``};let a=i?await u(i):``;if(K(a,e.cooldownDays,e.now))return{version:n,tag:r,commitSha:i,date:a};t.add(n)}return null}await W(e,async({key:e,host:t,ref:r,name:a,isHash:o,filePin:s,fileCooldownDays:f})=>{let p=O.actions[e],m=`https://${t||`github.com`}/${n}/${i}`,h=fe[a]??s[a],g=r;o?g=l.get(r)??l.entries().find(([e])=>e.startsWith(r))?.[1]??``:an(r)||(g=``);let _=g?X(J(g)):``;if(!_){delete O.actions[e];return}let{usePre:v,useRel:y,semvers:ee,cooldownOverride:te}=D(a),b=te??f,x=await d({range:_,semvers:ee,usePre:v,useRel:y,useGreatest:!0,pinnedRange:h,cooldownDays:b||void 0,now:b?j:void 0});if(!x){delete O.actions[e];return}let{tag:S,commitSha:C,date:ne}=x;if(o){if(!C||C.startsWith(r)||r.startsWith(C)){delete O.actions[e];return}p.old=r,p.new=C.substring(0,r.length),p.oldPrint=g,p.newPrint=S}else{let t=oi(S,r);if(t===r){delete O.actions[e];return}p.new=c.has(t)?t:S}p.info=m;let re=ne||(C?await u(C):``);re&&Ta(p,re)},{concurrency:r})},{concurrency:r}),Object.keys(O.actions).length||delete O.actions})()),we.length&&Ne.push((async()=>{await W(Map.groupBy(we,e=>e.fullImage).entries(),async([e,t])=>{let n;try{let[t]=await Di(e,S);n=t}catch{for(let e of t)delete O.docker[e.key];return}let r=Oa(e,`docker`);for(let i of t){let t=O.docker[i.key],a=t.oldOrig||t.old,{semvers:o,cooldownOverride:s}=D(e,r),c=ka(fe,r)??ka(i.filePin,r),l=s??i.fileCooldownDays,u=Oi(n.tags,a,o,l||void 0,l?j:void 0,c);if(!u){delete O.docker[i.key];continue}t.new=u.newTag,t.info=zi(i.ref),Ta(t,u.date)}},{concurrency:r}),Object.keys(O.docker).length||delete O.docker})()),Te.length&&Ne.push((async()=>{await W(Te,async e=>{let t=Oa(e.name,e.kind),{useGreatest:n,usePre:r,useRel:i,semvers:a,allowDowngrade:o,cooldownOverride:s}=D(e.name,t),c=ka(fe,t)??ka(e.filePin,t),l=s??e.fileCooldownDays,u={semvers:a,useGreatest:n,usePre:r,useRel:i,allowDowngrade:o,pinnedRange:c,cooldownDays:l||void 0,now:l?j:void 0},d=O.make[e.key],f;if(e.kind===`go`){let t=await et(ta(e.installPath,e.version,e.projectDir,S,_,u));if(!t){delete O.make[e.key];return}e.newSpec=`${t.newInstallPath}@${t.newVersion}`,d.new=t.newVersion,f=t}else{let t=await et(na(e.image,S,u));if(!t){delete O.make[e.key];return}e.newSpec=Yi(e.image.writtenImage,t.newTag,e.image.digest?t.newDigest:null),d.new=t.newTag,f=t}d.info=f.info,f.date&&Ta(d,f.date)},{concurrency:r}),Object.keys(O.make).length||delete O.make})());try{await Promise.all(Ne)}finally{await ft()}if(!Da(O))return{results:{},message:`All dependencies are up to date.`};if(n.update){let e=(e,t,n)=>{for(let r of t){let t=ma(O[e],r.memberPath);Object.keys(t).length&&$(r.absPath,n(r.content,t))}},t=new Map;for(let[e,n]of Object.entries(O.actions??{})){let[r,i]=e.split(`\0`),a=rn.test(n.old)?n.newPrint:void 0;nt(t,r,{name:i,oldRef:n.old,newRef:n.new,newComment:a})}let n=new Map;for(let[e,t]of Object.entries(O.docker??{})){let[r]=e.split(`\0`),i=n.get(r);i||n.set(r,i={}),i[e]=t}let r=new Map;for(let e of Te)!e.newSpec||!O.make?.[e.key]||nt(r,e.key.split(`\0`)[0],{oldSpec:e.oldSpec,newSpec:e.newSpec});let i=Object.keys(O).sort((e,t)=>(e===`docker`)-+(t===`docker`));for(let a of i)if(Object.keys(O[a]).length){if(a===`actions`){for(let[e,n]of t){let{absPath:t,content:r}=ye[e]||{};if(!t)continue;let i=si(r,n);$(t,i),be[e]&&(be[e].content=i)}continue}if(a===`docker`){for(let[e,t]of n){let n=be[e];if(!n)continue;let{absPath:r,content:i,fileType:a}=n;$(r,(a===`dockerfile`?ji:a===`compose`?Mi:Ni)(i,t))}continue}if(a===`make`){for(let[e,t]of r){let n=xe[e];n&&$(n.absPath,ra(n.content,t))}continue}if(a===`go`){for(let e of[...F,...A.go??[]]){let t=ma(O[a],e.memberPath);if(!Object.keys(t).length)continue;let[n,r]=Xr(e.content,t);n!==e.content&&$(e.absPath,n),Zr(e.projectDir,r,$)}if(I){let e={};for(let[t,n]of Object.entries(O[a]))t.split(`\0`)[0]===`replace`&&(e[t]=n);if(Object.keys(e).length){let[t]=Xr(I.content,e);t!==I.content&&$(I.file,t)}}}else a===`cargo`?(e(a,Se,fa),e(a,A.cargo??[],fa)):a===`npm`?(e(a,L,lr),e(a,A.npm??[],lr)):e(a,A[a]??[],_r)}}return ja(O)}function Pa(e){return/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):e}function Fa(e){let t=bn(e);if(t!==!1)return t===!0||Array.from(t).map(Pa)}function Ia(t){if(!t)return e();let n=l(t)?t:f(e(),t),r=!1;try{r=v(n).isDirectory()}catch{}return r?n:c(n)}function La(e,t){let n=bn(e.file),r=[...n instanceof Set?n:[],...t];return{filesList:r,startDir:Ia(r[0])}}function Ra(e){let t=a({strict:!1,allowPositionals:!0,tokens:!0,options:vn,...e!==void 0&&{args:e}}),n=t.values;for(let[e,r]of t.tokens.entries()){if(r.kind!==`option`||!r.value?.startsWith(`-`))continue;let i=r.value.startsWith(`--`)?2:1,a=xn(r.value.substring(i));if(!a)continue;let o=t.tokens[e+1],s=n[r.name];if(Array.isArray(s)){let e=s.indexOf(r.value);e!==-1&&s.splice(e,1)}else n[r.name]=!0;let c=o?.kind===`positional`&&o.value?o.value:!0;vn[a]?.multiple?(n[a]??=[]).push(c):n[a]=c}return{args:n,positionals:t.positionals}}async function za(e,t){let{filesList:n,startDir:r}=La(e,t),i=typeof e.timeout==`string`?$e(e.timeout,`timeout`):void 0,a={...await On(r,{noCache:!!e[`no-cache`],timeout:i??5e3}),pin:void 0};e.json&&(a.json=!0),e.verbose&&(a.verbose=!0),e[`no-cache`]&&(a.noCache=!0),e.update&&(a.update=!0),e.indirect&&(a.indirect=!0),e[`error-on-outdated`]&&(a.errorOnOutdated=!0),e[`error-on-unchanged`]&&(a.errorOnUnchanged=!0),e.color&&(a.color=!0,a.noColor=!1),e[`no-color`]&&(a.color=!1,a.noColor=!0),i!==void 0&&(a.timeout=i),typeof e.sockets==`string`&&(a.sockets=Number(e.sockets)||void 0),typeof e.registry==`string`&&(a.registry=e.registry),typeof e.cooldown==`string`&&(a.cooldown=Number(e.cooldown)||e.cooldown);let o=Cn(e.include).map(Pa),s=Cn(e.exclude).map(Pa);o.length&&(a.include=o),s.length&&(a.exclude=s);let c=Cn(e.types);c.length&&(a.types=c);let l=wn(e.pin);Object.keys(l).length&&(a.pin=l);let u=bn(e.modes);u instanceof Set&&(a.modes=Array.from(u));for(let t of[`greatest`,`prerelease`,`release`,`patch`,`minor`]){let n=Fa(e[t]);n!==void 0&&(a[t]=n)}let d=Fa(e[`allow-downgrade`]);d!==void 0&&(a.allowDowngrade=d),n.length&&(a.files=n);for(let t of[`forgeapi`,`pypiapi`,`jsrapi`,`goproxy`,`cargoapi`,`dockerapi`])typeof e[t]==`string`&&(a[t]=e[t]);return a}function Ba(e){try{return kn(g(u(e,`.npmrc`),`utf8`)).registry}catch{return}}function Va(e,t){try{return`${new URL(typeof e==`string`&&e?e:t).origin}/`}catch{return null}}const Ha={npm:[`registry`,`jsrapi`,`forgeapi`],pypi:[`pypiapi`],cargo:[`cargoapi`],go:[`goproxy`],docker:[`dockerapi`],actions:[`forgeapi`,`dockerapi`],make:[`goproxy`,`dockerapi`]};function Ua(e){if(He[e])return He[e];if(Li(e))return`docker`;if(Vi(e))return`make`}function Wa(e,t){let n=new Set;try{for(let t of _(e,{withFileTypes:!0}))if(t.isFile()){let e=Ua(t.name);e&&n.add(e)}else t.isDirectory()&&U.some(e=>e===t.name)&&n.add(`actions`)}catch{}let r=new Set;for(let i of n)for(let n of Ha[i]??[]){let i=Va(n===`registry`&&typeof t.registry!=`string`?Ba(e):t[n],q[n]);i&&r.add(i)}return Array.from(r)}const Ga=/[A-Za-z_$]/,Ka=/[A-Za-z0-9_$]/;function qa(e){let t=``,n=0,r=e.length,i=-1;function a(t){if(e[t+1]===`/`){for(t+=2;t<r&&e[t]!==`
|
|
7
|
+
`;)t++;return t}for(t+=2;t<r&&(e[t]!==`*`||e[t+1]!==`/`);)t++;return t+2}function o(t){for(;t<r;){if(/\s/.test(e[t])){t++;continue}if(e[t]===`/`&&(e[t+1]===`/`||e[t+1]===`*`)){t=a(t);continue}break}return t}for(;n<r;){let s=e[n];if(s===`"`){for(i=-1,t+=s,n++;n<r;){let i=e[n];if(t+=i,n++,i===`\\`&&n<r){t+=e[n],n++;continue}if(i===`"`)break}continue}if(s===`'`){for(i=-1,t+=`"`,n++;n<r;){let i=e[n];if(i===`\\`){let a=e[n+1];if(a===`'`){t+=`'`,n+=2;continue}if(a===`
|
|
8
|
+
`){n+=2;continue}t+=i,n+1<r?(t+=a,n+=2):n++;continue}if(i===`"`){t+=`\\"`,n++;continue}if(i===`'`){t+=`"`,n++;break}t+=i,n++}continue}if(s===`/`&&(e[n+1]===`/`||e[n+1]===`*`)){n=a(n);continue}if(s===`,`){i=t.length,t+=s,n++;continue}if(s===`}`||s===`]`){i>=0&&(t=t.slice(0,i)+t.slice(i+1)),i=-1,t+=s,n++;continue}if(Ga.test(s)){i=-1;let a=``;for(;n<r&&Ka.test(e[n]);)a+=e[n],n++;t+=e[o(n)]===`:`?JSON.stringify(a):a;continue}/\s/.test(s)||(i=-1),t+=s,n++}return JSON.parse(t)}export{Xe as $,rn as A,Yt as B,yt as C,hn as D,_n as E,an as F,J as G,K as H,kt as I,ct as J,dn as K,vt as L,Lt as M,At as N,_t as O,pn as P,rt as Q,mt as R,Ut as S,qt as T,nn as U,sn as V,tn as W,U as X,dt as Y,Le as Z,Et as _,La as a,It as b,X as c,St as d,tt as et,un as f,ht as g,Dt as h,za as i,Ft as j,gt as k,Ot as l,cn as m,Wa as n,Na as o,en as p,zt as q,Ra as r,ei as s,qa as t,je as tt,q as u,Y as v,$t as w,mn as x,Rt as y,on as z};
|
package/dist/shared2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{C as e,O as t,q as n,w as r}from"./shared.js";export{e as getFetchOpts,r as getForgeTokens,t as githubApiUrl,n as urlHost};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "updates",
|
|
3
|
-
"version": "17.
|
|
3
|
+
"version": "17.21.0",
|
|
4
4
|
"description": "CLI dependency update tool for npm, uv, cargo, go, actions, docker and make",
|
|
5
5
|
"author": "silverwind",
|
|
6
6
|
"repository": {
|
|
@@ -46,17 +46,16 @@
|
|
|
46
46
|
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
|
47
47
|
"@vitest/coverage-v8": "4.1.10",
|
|
48
48
|
"eslint": "10.8.0",
|
|
49
|
-
"eslint-config-silverwind": "143.
|
|
50
|
-
"jest-extended": "7.0.0",
|
|
49
|
+
"eslint-config-silverwind": "143.1.0",
|
|
51
50
|
"timerel": "5.8.8",
|
|
52
51
|
"tsdown": "0.22.14",
|
|
53
52
|
"tsdown-config-silverwind": "4.0.3",
|
|
54
53
|
"typescript": "6.0.3",
|
|
55
54
|
"typescript-config-silverwind": "20.0.3",
|
|
56
|
-
"updates-config-silverwind": "4.0.
|
|
57
|
-
"versions": "15.
|
|
55
|
+
"updates-config-silverwind": "4.0.5",
|
|
56
|
+
"versions": "15.3.0",
|
|
58
57
|
"vitest": "4.1.10",
|
|
59
|
-
"vitest-config-silverwind": "11.
|
|
58
|
+
"vitest-config-silverwind": "11.5.0"
|
|
60
59
|
},
|
|
61
60
|
"bin": {
|
|
62
61
|
"updates": "dist/index.js"
|