updates 17.18.2 → 17.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.d.ts +83 -40
- package/dist/index.js +3 -3
- package/dist/renovate.js +1 -1
- package/dist/shared.js +6 -4
- package/dist/shared2.js +1 -0
- package/package.json +12 -12
package/dist/api.d.ts
CHANGED
|
@@ -1,47 +1,84 @@
|
|
|
1
1
|
//#region config.d.ts
|
|
2
2
|
type Config = {
|
|
3
|
-
/** Array of dependencies to include */
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
3
|
+
/** Array of dependencies to include */
|
|
4
|
+
include?: Array<string | RegExp>;
|
|
5
|
+
/** Array of dependencies to exclude */
|
|
6
|
+
exclude?: Array<string | RegExp>;
|
|
7
|
+
/** Array of package types to use */
|
|
8
|
+
types?: Array<string>;
|
|
9
|
+
/** URL to npm registry */
|
|
10
|
+
registry?: string;
|
|
11
|
+
/** Minimum dependency age, e.g. 7 (days), "1w", "2d", "6h" */
|
|
12
|
+
cooldown?: number | string;
|
|
13
|
+
/** Pin dependencies to semver ranges */
|
|
14
|
+
pin?: Record<string, string>;
|
|
15
|
+
/** File or directory paths to use */
|
|
16
|
+
files?: Array<string>;
|
|
17
|
+
/** Which modes to enable */
|
|
18
|
+
modes?: Array<string>;
|
|
19
|
+
/** Update versions and write dependency files */
|
|
20
|
+
update?: boolean;
|
|
21
|
+
/** Include indirect Go dependencies */
|
|
22
|
+
indirect?: boolean;
|
|
23
|
+
/** Output a JSON object */
|
|
24
|
+
json?: boolean;
|
|
25
|
+
/** Print verbose output to stderr */
|
|
26
|
+
verbose?: boolean;
|
|
27
|
+
/** Exit with code 2 when updates are available */
|
|
28
|
+
errorOnOutdated?: boolean;
|
|
29
|
+
/** Exit with code 0 when updates are available and 2 when not */
|
|
30
|
+
errorOnUnchanged?: boolean;
|
|
31
|
+
/** Force color output */
|
|
32
|
+
color?: boolean;
|
|
33
|
+
/** Disable color output */
|
|
34
|
+
noColor?: boolean;
|
|
35
|
+
/** Disable HTTP cache */
|
|
36
|
+
noCache?: boolean;
|
|
37
|
+
/** Network request timeout in ms */
|
|
38
|
+
timeout?: number;
|
|
39
|
+
/** Maximum number of parallel HTTP sockets */
|
|
40
|
+
sockets?: number;
|
|
41
|
+
/** Prefer greatest over latest version */
|
|
42
|
+
greatest?: boolean | Array<string | RegExp>;
|
|
43
|
+
/** Consider prerelease versions */
|
|
44
|
+
prerelease?: boolean | Array<string | RegExp>;
|
|
45
|
+
/** Only use release versions, may downgrade */
|
|
46
|
+
release?: boolean | Array<string | RegExp>;
|
|
47
|
+
/** Consider only up to semver-patch */
|
|
48
|
+
patch?: boolean | Array<string | RegExp>;
|
|
49
|
+
/** Consider only up to semver-minor */
|
|
50
|
+
minor?: boolean | Array<string | RegExp>;
|
|
51
|
+
/** Allow version downgrades when using latest version */
|
|
52
|
+
allowDowngrade?: boolean | Array<string | RegExp>;
|
|
53
|
+
/** Per-package option overrides, matched by name; last matching override wins */
|
|
54
|
+
overrides?: Array<Override>;
|
|
55
|
+
/** Opt-in to inheriting select fields from other tools' configs */
|
|
29
56
|
inherit?: {
|
|
30
57
|
renovate?: {
|
|
31
|
-
/** Inherit minimumReleaseAge as cooldown. Off by default. */
|
|
58
|
+
/** Inherit minimumReleaseAge as cooldown. Off by default. */
|
|
59
|
+
cooldown?: boolean;
|
|
32
60
|
};
|
|
33
61
|
};
|
|
34
62
|
};
|
|
35
63
|
/** Options applied to dependencies whose name matches an override's patterns. */
|
|
36
64
|
type Override = {
|
|
37
|
-
/** Name patterns this override applies to (glob or RegExp). Omit to match all. */
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
65
|
+
/** Name patterns this override applies to (glob or RegExp). Omit to match all. */
|
|
66
|
+
include?: Array<string | RegExp>;
|
|
67
|
+
/** Name patterns excluded from this override */
|
|
68
|
+
exclude?: Array<string | RegExp>;
|
|
69
|
+
/** Minimum dependency age, e.g. 7 (days), "1w", "2d", "6h"; 0 disables a global cooldown */
|
|
70
|
+
cooldown?: number | string;
|
|
71
|
+
/** Prefer greatest over latest version */
|
|
72
|
+
greatest?: boolean;
|
|
73
|
+
/** Consider prerelease versions */
|
|
74
|
+
prerelease?: boolean;
|
|
75
|
+
/** Only use release versions, may downgrade */
|
|
76
|
+
release?: boolean;
|
|
77
|
+
/** Consider only up to semver-patch */
|
|
78
|
+
patch?: boolean;
|
|
79
|
+
/** Consider only up to semver-minor */
|
|
80
|
+
minor?: boolean;
|
|
81
|
+
/** Allow version downgrades when using latest version */
|
|
45
82
|
allowDowngrade?: boolean;
|
|
46
83
|
};
|
|
47
84
|
//#endregion
|
|
@@ -73,11 +110,17 @@ type Output = {
|
|
|
73
110
|
//#endregion
|
|
74
111
|
//#region api.d.ts
|
|
75
112
|
type UpdatesOptions = Config & {
|
|
76
|
-
/** Override GitHub/Gitea API URL (for testing) */
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
113
|
+
/** Override GitHub/Gitea API URL (for testing) */
|
|
114
|
+
forgeapi?: string;
|
|
115
|
+
/** Override PyPI API URL (for testing) */
|
|
116
|
+
pypiapi?: string;
|
|
117
|
+
/** Override JSR API URL (for testing) */
|
|
118
|
+
jsrapi?: string;
|
|
119
|
+
/** Override Go proxy URL (for testing) */
|
|
120
|
+
goproxy?: string;
|
|
121
|
+
/** Override crates.io API URL (for testing) */
|
|
122
|
+
cargoapi?: string;
|
|
123
|
+
/** Override Docker Hub API URL (for testing) */
|
|
81
124
|
dockerapi?: string;
|
|
82
125
|
};
|
|
83
126
|
declare function updates(opts?: UpdatesOptions): Promise<Output>;
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{
|
|
2
|
+
import{G as e,H as t,N as n,W as r,a as i,c as a,g as o,i as s,l as c,n as l,o as u,r as d,s as f,u as p}from"./shared.js";import{cwd as m,exit as h,platform as g,stderr as _,stdout as v,versions as y}from"node:process";import{parseArgs as b,stripVTControlCharacters as x,styleText as S}from"node:util";import{dirname as C,isAbsolute as w,resolve as T}from"node:path";import{statSync as E}from"node:fs";const D=b({strict:!1,allowPositionals:!0,tokens:!0,options:f}),O=D.values;for(let[e,t]of D.tokens.entries()){if(t.kind!==`option`||!t.value?.startsWith(`-`))continue;let n=t.value.startsWith(`--`)?2:1,r=i(t.value.substring(n));if(!r)continue;let a=D.tokens[e+1],o=O[t.name];if(Array.isArray(o)){let e=o.indexOf(t.value);e!==-1&&o.splice(e,1)}else O[t.name]=!0;let s=a?.kind===`positional`&&a.value?a.value:!0;f[r]?.multiple?(O[r]??=[]).push(s):O[r]=s}const k=D.values,A=D.positionals,j=c(k.file),M=[...j instanceof Set?j:[],...A],N=z(M[0]);if(!k.help&&!k.version)for(let e of l(N,k))(async()=>{try{await fetch(e,{method:`HEAD`})}catch{}})();function P(e){return/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):e}function F(e){let t=c(e);if(t!==!1)return t===!0||Array.from(t).map(P)}let I=String,L=String,R=!1;function z(e){if(!e)return m();let t=w(e)?e:T(m(),e),n=!1;try{n=E(t).isDirectory()}catch{}return n?t:C(t)}function B(e){return k[`no-color`]===!0?!1:k.color===!0?!0:e.noColor===!0?!1:e.color===!0||v.isTTY}async function V(e,t){if(e){let t=e.message??String(e);console.info(R?JSON.stringify({error:t}):I(t))}g===`win32`&&Number(y?.node?.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),h(t??+!!e)}async function H(){for(let e of[v,_])e?._handle?.setBlocking?.(!0);k.help&&(v.write(`usage: updates [options] [files...]
|
|
3
3
|
|
|
4
4
|
Options:
|
|
5
5
|
-u, --update Update versions and write dependency file
|
|
@@ -17,7 +17,7 @@ import{a as e,c as t,d as n,f as r,h as i,i as a,l as o,n as s,o as c,p as l,r a
|
|
|
17
17
|
-m, --minor [<dep,...>] Consider only up to semver-minor
|
|
18
18
|
-d, --allow-downgrade [<dep,...>] Allow version downgrades when using latest version
|
|
19
19
|
-s, --sockets <num> Maximum number of parallel HTTP sockets opened. Default: 25
|
|
20
|
-
-T, --timeout <ms> Network request timeout in ms (go probes use half). Default: ${
|
|
20
|
+
-T, --timeout <ms> Network request timeout in ms (go probes use half). Default: ${o}
|
|
21
21
|
-r, --registry <url> Override npm registry URL
|
|
22
22
|
-I, --indirect Include indirect Go dependencies
|
|
23
23
|
-E, --error-on-outdated Exit with code 2 when updates are available and 0 when not
|
|
@@ -44,4 +44,4 @@ import{a as e,c as t,d as n,f as r,h as i,i as a,l as o,n as s,o as c,p as l,r a
|
|
|
44
44
|
$ updates -f Dockerfile
|
|
45
45
|
$ updates -f docker-compose.yml
|
|
46
46
|
$ updates -f Makefile
|
|
47
|
-
`),await
|
|
47
|
+
`),await V()),k.version&&(console.info(n),await V());let e=typeof k.timeout==`string`?r(k.timeout,`timeout`):void 0,t=await u(N,{noCache:!!k[`no-cache`],timeout:e??5e3});B(t)&&(I=e=>S(`red`,String(e)),L=e=>S(`green`,String(e)));let i={...t};i.pin=void 0,k.json&&(i.json=!0),R=!!i.json,k.verbose&&(i.verbose=!0),k[`no-cache`]&&(i.noCache=!0),k.update&&(i.update=!0),k.indirect&&(i.indirect=!0),k[`error-on-outdated`]&&(i.errorOnOutdated=!0),k[`error-on-unchanged`]&&(i.errorOnUnchanged=!0),e!==void 0&&(i.timeout=e),typeof k.sockets==`string`&&(i.sockets=Number(k.sockets)||void 0),typeof k.registry==`string`&&(i.registry=k.registry),typeof k.cooldown==`string`&&(i.cooldown=Number(k.cooldown)||k.cooldown);let s=a(k.include).map(P),l=a(k.exclude).map(P);s.length&&(i.include=s),l.length&&(i.exclude=l);let f=a(k.types);f.length&&(i.types=f);let m=p(k.pin);Object.keys(m).length&&(i.pin=m);let h=c(k.modes);h instanceof Set&&(i.modes=Array.from(h));for(let e of[`greatest`,`prerelease`,`release`,`patch`,`minor`]){let t=F(k[e]);t!==void 0&&(i[e]=t)}let g=F(k[`allow-downgrade`]);g!==void 0&&(i.allowDowngrade=g),M.length&&(i.files=M);for(let e of[`forgeapi`,`pypiapi`,`jsrapi`,`goproxy`,`cargoapi`,`dockerapi`])typeof k[e]==`string`&&(i[e]=k[e]);let y=await d(i),b=Object.keys(y.results).length>0;if(y.message)console.info(i.json?JSON.stringify({message:y.message}):y.message);else if(b&&(i.json?console.info(JSON.stringify({results:y.results})):console.info(W(y)),i.update))for(let[e,t]of Object.entries(y.results))Object.values(t).some(e=>Object.keys(e).length)&&console.info(L(`✨ ${e} updated`));i.errorOnOutdated?await V(void 0,b?2:0):i.errorOnUnchanged?await V(void 0,b?0:2):await V()}const U=e=>x(e).length;function W(n){let r=Object.keys(n.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(n.results[e]))for(let[n,c]of Object.entries(r)){let r=`${e}|${n}|${c.old}|${c.new}`;o.has(r)||(o.add(r),a.push([e===`go`?s(n):n,...i?[e]:[],t(c.old,c.new,I),t(c.new,c.old,L),c.age||``,c.info||``]))}return e(a,U)}try{await H()}catch(e){await V(e)}export{};
|
package/dist/renovate.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{B as e,K as t,U as n,V as r,q as i,t as a}from"./shared.js";import{join as o}from"node:path";import{readFile as s}from"node:fs/promises";const c=[`renovate.json`,`renovate.json5`,...[`.github`,`.gitea`,`.forgejo`,`.gitlab`].flatMap(e=>[`${e}/renovate.json`,`${e}/renovate.json5`]),`.renovaterc`,`.renovaterc.json`,`.renovaterc.json5`],l={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 u(e){let t=0,n=!1,r=/(\d+(?:\.\d+)?)\s*([a-z]+)/gi,i;for(;(i=r.exec(e))!==null;){let e=l[i[2].toLowerCase()];if(e===void 0)return;t+=Number(i[1])*e,n=!0}return n?t:void 0}function d(e){return!Array.isArray(e.matchPackageNames)||!e.matchPackageNames.length?!1:Object.keys(e).every(e=>!e.startsWith(`match`)||e===`matchPackageNames`)}async function f(e){for(let t of c){let n=o(e,...t.split(`/`));try{return{path:n,text:await s(n,`utf8`)}}catch{}}try{let t=o(e,`package.json`),n=JSON.parse(await s(t,`utf8`));if(n&&typeof n==`object`&&n.renovate&&typeof n.renovate==`object`)return{path:t,text:JSON.stringify(n.renovate)}}catch{}}function p(e){let t=/^\/(.+)\/([a-z]*)$/.exec(e);if(!t)return e;try{return new RegExp(t[1],t[2])}catch{return e}}function m(e){return/[*?[\]{}!()|+]/.test(e)}function h(e,t){let n={};if(t.cooldown&&typeof e.minimumReleaseAge==`string`){let t=u(e.minimumReleaseAge);t!==void 0&&t>0&&(n.cooldown=t)}let r=[],a={};if(Array.isArray(e.ignoreDeps))for(let t of e.ignoreDeps)typeof t==`string`&&t&&r.push(t);if(Array.isArray(e.packageRules))for(let t of e.packageRules){if(!t||typeof t!=`object`||!d(t))continue;let e=t.matchPackageNames.filter(e=>typeof e==`string`&&!!e);if(t.enabled===!1)for(let t of e)r.push(p(t));if(typeof t.allowedVersions==`string`&&i(t.allowedVersions))for(let n of e)!m(n)&&typeof p(n)==`string`&&(a[n]=t.allowedVersions)}return r.length&&(n.exclude=r),Object.keys(a).length&&(n.pin=a),n}const g={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 _(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(g,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 v=[`default.json`,`default.json5`,`renovate.json`,`renovate.json5`,`.renovaterc.json`,`.renovaterc`];function y(e){return/\.json5?$/.test(e)?[e]:[`${e}.json`,`${e}.json5`]}function b(e){if(e===null)return null;try{let t=a(e);return t&&typeof t==`object`?t:null}catch{return null}}async function x(e,t){if(e.kind===`http`)return b(await t(e.url));let n=g[e.forge],r=async r=>b(await t(n(e.slug,e.ref,r)));if(e.subpath){for(let t of y(e.subpath)){let e=await r(t);if(e)return e}return null}let i=e.name??`default`;for(let t of v){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 S(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 C(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=_(e);if(!a)continue;let o=await x(a,t);o&&(i=S(i,await C(o,t,new Set(n).add(e),r+1)))}let{extends:o,...s}=e;return S(i,s)}async function w(e,t){let n=``;try{n=new URL(e).hostname}catch{}let{getForgeTokens:r,getFetchOpts:i}=await import(`./shared2.js`),[a]=n?await r(n,`https://api.github.com`):[],o={...i(`Bearer`,a).headers};return t&&(o[`if-none-match`]=t),o}function T({noCache:t=!1,timeout:n=1e4}={}){return async i=>{let a=t?null:await e(i),o=await w(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 E=n(e=>t(e,async e=>{let t=await f(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}})),D=new Map;async function O(e,t={},n=T()){let r=await E(e);if(!r)return{};let i=D.get(r.path);return i||(i=C(r.parsed,n,new Set,0),D.set(r.path,i)),h(await i,t)}export{O as loadRenovateConfig,T as makePresetFetcher};
|
package/dist/shared.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import{cwd as e,env as t,pid as n,platform as r,stderr as i}from"node:process";import{styleText as a}from"node:util";import{basename as o,dirname as s,join as c,relative as l,resolve as u}from"node:path";import{accessSync as d,existsSync as f,globSync as p,lstatSync as m,readFileSync as h,readdirSync as g,statSync as _,truncateSync as v,writeFileSync as y}from"node:fs";import{access as b,mkdir as x,readFile as S,rename as C,writeFile as w}from"node:fs/promises";import{createHash as ee}from"node:crypto";import{homedir as te}from"node:os";import{pathToFileURL as T}from"node:url";function E(e){let t={},n=t,r=e.split(/\r?\n/);for(let e=0;e<r.length;e++){let i=r[e],a=O(i).trim();if(!a)continue;let o=/^\[\[([^\]]+)\]\]$/.exec(a);if(o){let e=t,r=ce(o[1]);for(let t=0;t<r.length-1;t++){let n=e[r[t]];Array.isArray(n)?e=n[n.length-1]:((!n||typeof n!=`object`)&&(e[r[t]]={}),e=e[r[t]])}let i=r[r.length-1];Array.isArray(e[i])||(e[i]=[]);let a={};e[i].push(a),n=a;continue}let s=/^\[([^[\]]+)\]$/.exec(a);if(s){n=k(t,ce(s[1]));continue}let c=ue(a,`=`);if(c<0)continue;let l=a.slice(0,c).trim(),u=a.slice(c+1).trim(),d=ce(l),f=k(n,d.slice(0,-1)),p=d[d.length-1],m=re(u);if(u.startsWith(`[`)&&!oe(u)){let t=u,n=e+1;for(;n<r.length&&(t+=`\n${O(r[n])}`,!oe(t));n++);e=n,f[p]=ie(t)}else if(u.startsWith(`{`)&&!oe(u)){let t=u,n=e+1;for(;n<r.length&&(t+=`\n${O(r[n])}`,!oe(t));n++);e=n,f[p]=ae(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
3
|
`:``)+r[n]}e=n,f[p]=ie(m+t+m)}else f[p]=ie(u)}return t}function ne(e,t){let n=e.trim();if(n)for(let e of se(n)){let n=e.trim();n&&t.push(ie(n))}}function re(e){let t=e.slice(0,3);return t!==`"""`&&t!==`'''`||e.includes(t,3)?``:t}function ie(e){if(e.startsWith(`[`)){let t=[],n=de(e,`]`);return ne(e.slice(1,n<0?e.length:n),t),t}return e.startsWith(`{`)?ae(e):e.startsWith(`"""`)?A(e.slice(3,e.lastIndexOf(`"""`))):e.startsWith(`'''`)?e.slice(3,e.lastIndexOf(`'''`)):e.startsWith(`"`)?A(e.slice(1,e.lastIndexOf(`"`))):e.startsWith(`'`)?e.slice(1,e.lastIndexOf(`'`)):D(e)}function D(e){return e===`true`?!0:e===`false`?!1:/^[+-]?\d+(\.\d+)?$/.test(e)?Number(e):e}function ae(e){let t={},n=e.slice(1,e.lastIndexOf(`}`)).trim();if(!n)return t;for(let e of se(n)){let n=e.indexOf(`=`);if(n<0)continue;let r=e.slice(0,n).trim().replace(/^["']|["']$/g,``);t[r]=ie(e.slice(n+1).trim())}return t}function oe(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 se(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 ce(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 O(e){let t=ue(e,`#`);return t<0?e:e.slice(0,t)}function*le(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 ue(e,t){return le(e,t).next().value??-1}function de(e,t){let n=-1;for(let r of le(e,t))n=r;return n}function k(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 A(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 j=/^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=j.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 fe(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
|
|
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 nt=new Set;let rt=0;function it(e,t,r){let i=(async()=>{try{await(Qe??=x(Ze,{recursive:!0}))}catch{Qe=null;return}try{let i=c(Ze,`${et(e)}.cache`),a=`${i}.${n}-${rt++}.tmp`;await w(a,`${t}\n${r}`),await C(a,i)}catch{}})();nt.add(i),(async()=>{await i,nt.delete(i)})()}async function at(){for(;nt.size;)await Promise.all(nt)}var ot=`17.18.2`;function st(e,t,n){if(!t||!n||!e)return!0;let r=Date.parse(e);return Number.isNaN(r)?!0:(n-r)/(24*3600*1e3)>=t}const ct=ot,lt=5e3,K=e=>e[0]===`v`?e.substring(1):e,ut=e=>e.endsWith(`/`)?e.slice(0,-1):e;function dt(e,t){return{headers:{"user-agent":`updates/${ct}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}const ft=new Set([`ECONNRESET`,`ECONNREFUSED`,`ETIMEDOUT`,`EAI_AGAIN`,`EPIPE`,`UND_ERR_SOCKET`,`UND_ERR_CONNECT_TIMEOUT`,`UND_ERR_HEADERS_TIMEOUT`,`UND_ERR_BODY_TIMEOUT`]);function pt(e){if(e?.name===`TimeoutError`||e?.name===`AbortError`)return!0;let t=e?.code??e?.cause?.code;return typeof t==`string`&&ft.has(t)}async function mt(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=pt(t),n}}async function q(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 ht(e){return typeof e.text==`function`?e.text():JSON.stringify(await e.json())}function gt(e,t){if(!t||e.length<16384)return e;try{return JSON.stringify(t(JSON.parse(e)))}catch{return e}}async function _t(e,t,n={},r){let i=t.noCache?null:await tt(e),a=n.headers,o=i?{...a,"if-none-match":i.etag}:a,s=await q(t,e,{...n,headers:o});if(!s)return{res:void 0};if(s.status===304&&i)return{body:i.body,res:s};if(!s.ok)return{res:s};let c=gt(await ht(s),r),l=s.headers?.get?.(`etag`);return l&&!t.noCache&&it(e,l,c),{body:c,res:s}}async function vt(e,t,n={},r){if(!t.noCache){let t=await tt(e);if(t)return{body:t.body}}let i=await q(t,e,n);if(!i)return{res:void 0};if(!i.ok)return{res:i};let a=gt(await ht(i),r);return t.noCache||it(e,`immutable`,a),{body:a,res:i}}function yt(e){return(I(e)?.prerelease.length??0)>0}function bt(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}const xt=new WeakMap;function St(e){let t=xt.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`),xt.set(e,n),n}function Ct(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=J(e),s=J(t);if(!o||!s)return!0;let c=bt(e)||yt(e),l=yt(t);return c&&!l?ve(s,o)||n:!l&&ye(s,o)?a(i,r):!0}function J(e){return he(e)?.version??``}function wt(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:u}){let d=J(n);if(!d)return d;let f=bt(n)||i,p=f?St(r):r,m=e?.time,h=!!m,g=o||!h,_=!!(c&&l),v=0,y=!1,b=d,x=I(d);for(let e of t){let t=I(e);if(!t?.version||t.prerelease.length&&(!f||a))continue;let n=t.version;if(s&&!H(n,s))continue;let r;if(_&&(r=u?u(e):h?m[e]:void 0,!st(r,c,l)))continue;let i=ge(x,t);if(!(!i||!p.has(i)))if(g)((y?F(t,x)>0:P(t,x)>=0)||s&&!H(b,s))&&(b=n,x=t,y=!0);else{let i=Date.parse(r??m[e]);i>=0&&i>v&&(b=n,x=t,v=i)}}return b||null}function Tt(e,{mode:t,range:n,useGreatest:r,useRel:i,usePre:a,semvers:o,pinnedRange:s,cooldownDays:c,now:l},{allowDowngrade:u,matchesAny:d,isGoPseudoVersion:f}){if(n===`*`||n.includes(`||`)||/\d\s/.test(n))return null;let p=[],m;if(t===`pypi`){let t=e.releases;p=Object.keys(t),m=e=>t?.[e]?.[0]?.upload_time_iso_8601}else if(t===`npm`||t===`cargo`)p=Object.keys(e.versions);else if(t===`go`){let t=J(n);if(!t)return null;let r=a||bt(n),p=e=>yt(e)&&(!r||i),m={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d},h=e.old||n,g=J(e.new);if(g&&!f(e.new)&&!p(e.new)){let n=R(t,g);if(n&&o.has(n)&&Ct(h,e.new,m)&&st(e.Time,c,l)&&(!s||H(g,s)))return e.new}let _=J(e.sameMajorNew);if(_&&!f(e.sameMajorNew)&&!p(e.sameMajorNew)){let n=R(t,_);if(n&&o.has(n)&&Ct(h,e.sameMajorNew,m)&&st(e.sameMajorTime,c,l)&&(!s||H(_,s)))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}if(c&&l&&e.olderEligible&&!p(e.olderEligible.version)){let n=J(e.olderEligible.version);if(n){let r=R(t,n);if(r&&o.has(r)&&Ct(h,e.olderEligible.version,m)&&(!s||H(n,s)))return e.Time=e.olderEligible.time,delete e.newPath,e.olderEligible.version}}return null}let h=wt(e,p,{range:n,semvers:o,usePre:a,useRel:i,useGreatest:r,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:m});if(!h)return null;if(r)return h;{let r=``,f=``,p=!1;t===`pypi`?(f=e.info.version,r=J(e.info.version),p=yt(f)):(r=e[`dist-tags`].latest,p=yt(r));let m=J(n),g=bt(n),_=yt(h),v={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d};if(!i&&a||g&&_)return h;if(g&&!_)return Ct(n,h,v)?h:null;let y=R(m,r);return y&&y!==`prerelease`&&!o.has(y.replace(/^pre/,``))||i&&p?h:ye(r,m)&&!p?Ct(n,r,v)?r:z(h,m)?h:null:!g&&p&&!a||s&&!H(r,s)||c&&l&&!st(t===`pypi`?e.releases?.[f||r]?.[0]?.upload_time_iso_8601:e.time?.[r],c,l)?h:f||r}}const Et=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&Et.set(e.substring(0,t),e.substring(t+1))}const Dt=[`UPDATES_GITHUB_API_TOKEN`,`GITHUB_API_TOKEN`,`GH_TOKEN`,`GITHUB_TOKEN`,`HOMEBREW_GITHUB_API_TOKEN`];function Ot(){return Array.from(new Set(Dt.map(e=>t[e]).filter(Boolean)))}let kt;function At(){let e=Ot();return e.length?Promise.resolve(e):kt??=(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 jt=new Map;async function Mt(e,t){if(!e)return[];let n=Et.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?At():[]}async function Nt(e,t,n){let r;try{r=new URL(e).hostname}catch{r=``}let i=await Mt(r,t.forgeApiUrl),a=e=>{let t=dt(`Bearer`,e);return n&&(t.headers={...t.headers,...n}),t};if(!i.length)return q(t,e,a());let o=r?jt.get(r):void 0;if(o)return q(t,e,a(o));for(let n of i){let i=await q(t,e,a(n));if(i.status!==401&&i.status!==403)return r&&jt.set(r,n),i}return q(t,e,a())}function Pt(e,t){let n=K(t);if(!pe(n))return null;let r=``,i=``;for(let t of e){let e=K(t);pe(e)&&(!r||z(e,i))&&(r=t,i=e)}return r&&z(i,n)?r:null}function Ft(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 It=/^[0-9a-f]{7,}$/i;function Lt(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function Rt(e,t){let n=t.noCache?null:await tt(e),r=await Nt(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=Lt(await r.json()),a=r.headers.get(`link`)||``,o=r.headers.get(`etag`);return o&&!t.noCache&&it(e,o,JSON.stringify({link:a,tags:i})),{tags:i,link:a}}async function zt(e,t,n,r){let i=r=>`${e}/repos/${t}/${n}/tags?per_page=100&page=${r}`;try{let e=await Rt(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)=>Rt(i(t+2),r)));for(let e of o)e&&t.push(...e.tags);return t}catch{return[]}}function Bt(e,t,n,r){throw e?.status&&e.statusText?Error(`Received ${e.status} ${e.statusText} from ${t}`):Error(`Unable to fetch ${n} from ${r}`)}function Vt(e,t,n=``){let r=t.startsWith(`v`),i=K(e),a=K(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 Ht(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function Ut({repository:e,homepage:t,info:n},r,i){if(n){let t=n.project_urls;for(let n of[`repository`,`Repository`,`repo`,`Repo`,`source`,`Source`,`source code`,`Source code`,`Source Code`,`homepage`,`Homepage`])if(t?.[n]){e=t[n];break}e??=`https://pypi.org/project/${i}/`}let a=``;return r===`https://npm.pkg.github.com`?`https://github.com/${i.replace(/^@/,``)}`:(e&&(a=Ft(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a+=`/${Ht(a)}/${e.directory}`)),a||t||``)}const Wt={"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 Gt(e,t){return RegExp(`^${G(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Kt(e,t,n){if(t&&typeof e==`string`)return/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Gt(e,n);{let t=e instanceof RegExp?e:Gt(e,n);return/[gy]/.test(t.flags)?new RegExp(t.source,t.flags.replace(/[gy]/g,``)):t}}function qt(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.filter(e=>typeof e==`string`).flatMap(Ue)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function Jt(e){for(let[t,{short:n}]of Object.entries(Wt))if(t===e||n===e)return t;return``}function Y(e){return new Set(e.map(e=>Kt(e,!1,!0)))}function Yt(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>Ue(e)):[]}function Xt(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&&ke(i)&&(t[r]=i)}return t}function Zt(e){return typeof e==`boolean`?e:!Array.isArray(e)||!e.length?!1:Y(e)}async function Qt(e){let t=await Promise.all([`js`,`ts`,`mjs`,`mts`].map(async t=>{let n=`updates.config.${t}`,r=c(e,n);try{await b(r)}catch{return null}try{return{configDir:e,filename:n,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 $t=Xe(e=>Ye(e,Qt));async function en(e){let t=await $t(e),n=t?.default??{},{loadRenovateConfig:r}=await import(`./renovate.js`);return{...await r(t?.configDir??e,n.inherit?.renovate),...n}}function tn(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 nn(e){try{return tn(h(e,`utf-8`))}catch{return}}function rn(t){let n=e();for(;;){let e=c(n,t);try{if(_(e).isFile())return e}catch{}let r=s(n);if(r===n)break;n=r}}function an(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 on(e,n={}){let i=r===`win32`,a=i?t.USERPROFILE:t.HOME,o=[{...n}],s=[];function l(e){if(!e||s.includes(e))return;let t=nn(e);t&&(o.push(t),s.push(e))}i||(l(c(`/etc`,e,`config`)),l(c(`/etc`,`${e}rc`))),a&&(l(c(a,`.config`,e,`config`)),l(c(a,`.config`,e)),l(c(a,`.${e}`,`config`)),l(c(a,`.${e}rc`))),l(rn(`.${e}rc`));let u=an(`${e}_`);return u.config&&l(u.config),Object.assign({},...o,u,s.length?{configs:s,config:s[s.length-1]}:void 0)}const sn=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,cn=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,ln=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,un=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,dn=/(@[^/]+\/)?([^/]+)/g;function fn(e){let t=e.match(dn);return t?t[t.length-1]:e}const pn=`https://registry.npmjs.org`;let mn=null;const hn=new Map;function gn(){return mn??=on(`npm`,{registry:pn})}function _n(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function vn(e,t){let n=n=>t[`${e}:${n}`]||t[`${e}/:${n}`],r=n(`_authToken`);if(r)return{token:_n(r),type:`Bearer`};let i=n(`username`),a=n(`_password`);if(i&&a){let e=Buffer.from(_n(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:_n(o),type:`Basic`}}function yn(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=vn(`//${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:_n(i),type:`Basic`}}function bn(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function xn(e,t){mn||=gn();let n=e.startsWith(`@`)?e.split(`/`)[0]:``,r=`${n}:${t}`,i=hn.get(r);if(i)return i;let a=()=>({auth:yn(t,mn),registry:t}),o;if(!e.startsWith(`@`))o=a();else{let e=ut(bn(n,mn));if(e!==t)try{let t=yn(e,mn);o=t?.token?{auth:t,registry:e}:a()}catch{o=a()}else o=a()}return hn.set(r,o),o}function Sn(e,t,n){mn||=gn();let r=ut((typeof n.registry==`string`?n.registry:!1)||t.registry||mn.registry||pn);return{...xn(e,r),originalRegistry:r}}function Cn(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const wn=new Map,Tn=new Map,En=new Map;function Dn(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 On(e,t,n,r,i){let{auth:a,registry:o}=Sn(e,n,r),s=Cn(o,t===`resolutions`?fn(e):e),c=wn.get(s);if(!c){let t=dt(a?.type,a?.token);t.headers={...t.headers,accept:`application/vnd.npm.install-v1+json`},c=(async()=>{try{let n=await _t(s,i,t,Dn);return`body`in n||Bt(n.res,s,e,o),JSON.parse(n.body)}catch(e){throw wn.delete(s),e}})(),wn.set(s,c)}return[await c,t,o,e]}async function kn(e,t,n,r,i){let{auth:a,registry:o}=Sn(e,n,r),s=Cn(o,e,t),c=Tn.get(s);if(c)return c;let l=(async()=>{try{let n=dt(a?.type,a?.token),r=await vt(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())}if(!l){let r=Cn(o,e),a=En.get(r);a||(a=(async()=>{try{let e=await q(i,r,n);return e?.ok?await e.json():null}catch{return En.delete(r),null}})(),En.set(r,a)),l=(await a)?.time?.[t]||``}return{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})();return Tn.set(s,l),l}function An(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function jn(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function Mn(e,t){if(e.startsWith(`npm:@jsr/`)){let t=/^npm:@jsr\/([^_]+)__([^@]+)@(.+)$/.exec(e);if(t)return{scope:t[1],name:t[2],version:t[3]}}else if(e.startsWith(`jsr:@`)){let t=/^jsr:@([^/]+)\/([^@]+)@(.+)$/.exec(e);if(t)return{scope:t[1],name:t[2],version:t[3]}}else if(e.startsWith(`jsr:`)){let n=e.substring(4);if(t?.startsWith(`@`)){let e=/^@([^/]+)\/(.+)$/.exec(t);if(e)return{scope:e[1],name:e[2],version:n}}}return{scope:null,name:null,version:``}}async function Nn(e,t,n){let r=/^@([^/]+)\/(.+)$/.exec(e);if(!r)throw Error(`Invalid JSR package name: ${e}`);let[,i,a]=r,o=`${n.jsrApiUrl}/@${i}/${a}/meta.json`,s=await _t(o,n,{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 s){let r=JSON.parse(s.body),i={},a={};for(let[e,t]of Object.entries(r.versions??{}))i[e]={version:e,time:t.createdAt},a[e]=t.createdAt;return[{name:e,"dist-tags":{latest:r.latest},versions:i,time:a},t,n.jsrApiUrl,e]}Bt(s.res,o,e,`JSR`)}function Pn(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 Fn(e,t,n){let r=e.replace(un,t);if(!n||n===e)return r;let i=/^([\^~]|>=\s*)([\d.]+)$/.exec(n);if(!i)return r;let[,a,o]=i,s=t.split(/[-+]/)[0];if(s!==t)return r;let c=o.split(`.`).length,l=s.split(`.`);return l.length===c?r:`${a}${l.slice(0,c).join(`.`)}`}function X(e){if(/[xX*]/.test(e))return e;let t=e.match(ln);return t?.length===1?e.replace(ln,J(t[0])):e}async function In(e,t,n){let r=`${n.forgeApiUrl}/repos/${e}/${t}/commits`;try{let e=n.noCache?null:await tt(r),t=await Nt(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&&it(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 Ln(e,t,n){return(await zt(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function Rn(e,t,n){let r=t.old.replace(sn,``),[,i,a,o]=cn.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(It.test(o)){let{hash:t,commit:r}=await In(i,a,n);if(!t)return null;let c=r?.committer?.date??r?.author?.date,l=t.substring(0,o.length);if(o.toLowerCase()!==l.toLowerCase())return{key:e,newRange:s(l),user:i,repo:a,oldRef:o,newRef:l,newDate:c}}else{let t=Pt(await Ln(i,a,n),o);if(t)return{key:e,newRange:s(t),user:i,repo:a,oldRef:o,newRef:t}}return null}function zn(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 Bn(e,t,n){let r=`${n.pypiApiUrl}/pypi/${e}/json`,i=await _t(r,n,{headers:{"accept-encoding":`gzip, deflate, br`}},zn);if(`body`in i)return[JSON.parse(i.body),t,null,e];Bt(i.res,r,e,n.pypiApiUrl)}function Vn(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 Hn;async function Un(){let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]);return t(e)}function Wn(){return Hn??=Un()}function Gn(){let e=t.GOPROXY||`https://proxy.golang.org,direct`;for(let t of e.split(/[,|]/)){let e=t.trim();if(e&&e!==`direct`&&e!==`off`)return ut(e)}return`https://proxy.golang.org`}function Kn(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function qn(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function Jn(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}const Yn=/\/v(\d+)$/;function Xn(e){let t=Yn.exec(e);return t?Number.parseInt(t[1]):1}function Zn(e,t){let n=e.replace(Yn,``);return t<=1?n:`${n}/v${t}`}function Qn(e,t){if(t.includes(`+incompatible`))return e;let n=Number.parseInt(K(t).split(`.`)[0]);return Number.isNaN(n)||n<=1||n===Xn(e)?e:Zn(e,n)}function $n(e,t){let n=t?/^(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(e):/^replace\s+(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(e);if(!n)return null;let[,r,i,a]=n;return i.startsWith(`./`)||i.startsWith(`/`)||i.startsWith(`../`)?null:{origModule:r,targetModule:i,targetVersion:a}}function er(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||tr(n)}function tr(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function nr(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function rr(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 ir(e,t,n,r,i,a){let o=r?.Version??i,s=r?.Time??a,c=r?.path??e;return[{name:e,old:n,new:K(o),Time:s,...c!==e&&{newPath:c},sameMajorNew:K(i),sameMajorTime:a},t,null,e]}function ar(e){let t={},n={},r={},i={},a=new Set,o=[],s=e.split(/\r?\n/),c=!1,l=!1,u=!1;for(let e of s){let i=e.trim();if(/^require\s*\(/.test(i)){c=!0;continue}if(/^replace\s*\(/.test(i)){l=!0;continue}if(/^tool\s*\(/.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(i.startsWith(`//`))continue;if(u){i&&!i.startsWith(`//`)&&o.push(i);continue}let s=/^tool\s+(\S+)/.exec(i);if(s){o.push(s[1]);continue}let d=i.includes(`// indirect`);if(l||/^replace\s+/.test(i)){let e=$n(i,l);e&&(r[e.targetModule]=e.targetVersion,a.add(e.origModule));continue}let f=c?/^(\S+)\s+(v\S+)/.exec(i):/^require\s+(\S+)\s+(v\S+)/.exec(i);f&&((d?n:t)[f[1]]=f[2])}for(let e of a)delete t[e],delete n[e];if(o.length){let e=[...Object.keys(n),...Object.keys(t)];for(let r of o){let a=``;for(let t of e)(r===t||r.startsWith(`${t}/`))&&t.length>a.length&&(a=t);let o=n[a]?n:t[a]?t:null;o&&(i[a]=o[a],delete o[a])}}return{deps:t,indirect:n,replace:r,tool:i}}async function or(e,n,r,i,a){let o=Xn(e),s=async(e,n)=>{try{let{stdout:r}=await(await Wn())(`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=er(e,n,r),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(Zn(e,o+1),a.goProbeTimeout)]);return l?ir(e,n,r,await rr(o,u,t=>s(Zn(e,t),a.goProbeTimeout)),l.Version,l.Time):nr(e,r,n)}async function sr(e,t,n,r,i,a){if(qn(e,a))return or(e,t,n,r,i);let o=Jn(e),s=Xn(e),c=async t=>{let n=Zn(e,t);try{let e=await i.doFetch(`${i.goProxyUrl}/${Jn(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=er(e,t,n),[u,d]=await Promise.all([q(i,`${i.goProxyUrl}/${o}/@latest`,{headers:{"accept-encoding":`gzip, deflate, br`}}),l?null:c(s+1)]);if(!u.ok)return nr(e,n,t);let f,p;try{let e=await u.json();f=e.Version,p=e.Time}catch{return nr(e,n,t)}return ir(e,t,n,await rr(s,d,c),f,p)}function cr(e,t){if(!e.includes(`replace`))return e;let n=G(t);return e=e.replace(RegExp(`^replace\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(RegExp(`^\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(/^replace\s*\(\s*\)\s*\n/gm,``),e}function lr(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=Qn(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),o!==`tool`&&(n=cr(n,s))}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=p(`**/*.go`,{cwd:e});for(let t of s){let r=c(e,t),a=h(r,`utf8`),s=a.replace(o,(e,t,n)=>`"${i.get(t)}${n}`);s!==a&&n(r,s)}}function dr(e){let t=[],n={},r=e.split(/\r?\n/),i=!1,a=!1;for(let e of r){let r=e.trim();if(/^use\s*\(/.test(r)){i=!0;continue}if(/^replace\s*\(/.test(r)){a=!0;continue}if(r===`)`){i=!1,a=!1;continue}if(i){let e=/^(\S+)/.exec(r);e&&!r.startsWith(`//`)&&t.push(e[1]);continue}let o=/^use\s+(\S+)/.exec(r);if(o){t.push(o[1]);continue}if(a||/^replace\s+/.test(r)){let e=$n(r,a);e&&(n[e.targetModule]=e.targetVersion)}}return{use:t,replace:n}}function fr(e){let t=`https://${pr(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[,e,i,...a]=r;return n.pathname=`/${e}/${i}/${Ht(t)}/${a.join(`/`)}`,n.href}else return t}function pr(e){return Yn.test(e)?s(e):e}function mr(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const hr=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function gr(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:It.test(o)}}function _r(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function vr(e,t,n,r,i){let a=`${e}/repos/${t}/${n}/git/commits/${r}`;if(!i.noCache){let e=await tt(a);if(e)return e.body}try{let e=await Nt(a,i);if(!e.ok)return``;let t=await e.json(),n=t?.committer?.date||t?.author?.date||``;return n&&!i.noCache&&it(a,`immutable`,n),n}catch{return``}}function yr(e,t){return Vt(I(K(e))?.version??K(e),t)}function br(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?(?:https?:\\/\\/)?)${G(e)}@${G(r)}(?![\\w.-])`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}const xr=[`.github`,`.gitea`,`.forgejo`],Sr=RegExp(`(?:^|/)(?:${xr.map(G).join(`|`)})\\/(?:workflows\\/[^/]+|(?:[^/]+\\/)*action)\\.ya?ml$`);function Cr(e){return Sr.test(e.replace(/\\/g,`/`))}function wr(e){let t=new Set;try{for(let n of g(c(e,`workflows`)))/\.ya?ml$/.test(n)&&t.add(u(c(e,`workflows`,n)))}catch{}try{for(let n of g(e,{recursive:!0,withFileTypes:!0}))!n.isFile()||!/^action\.ya?ml$/.test(n.name)||t.add(u(c(n.parentPath,n.name)))}catch{}return Array.from(t)}const Tr=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,Er=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,Dr=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,Or=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,kr=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function Ar(e){let t=e.split(`/`);return t.length===1?{registry:null,namespace:`library`,repo:t[0]}:t.length===2&&!t[0].includes(`.`)&&!t[0].includes(`:`)?{registry:null,namespace:t[0],repo:t[1]}:{registry:t[0],namespace:t.slice(1,-1).join(`/`),repo:t[t.length-1]}}function jr(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||!Tr.test(r))return null;let{registry:i,namespace:a,repo:o}=Ar(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function Mr(e){let t=Tr.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Nr(e,t){let n=Mr(t);return n?Vt(e,n.version,n.suffix):t}function Pr(e,t){let n=[];for(let r of e.matchAll(t)){let e=jr(r[1]);e&&n.push({ref:e,match:r[1]})}return n}const Fr=new WeakMap;function Ir(e,t,n){let r=Fr.get(n);r||Fr.set(n,r=new Map);let i=`${e}/${t}`,a=r.get(i);return a||r.set(i,a=Lr(e,t,n)),a}async function Lr(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 _t(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 Rr(e,t,n,r){let i=`${r.dockerApiUrl}/v2/repositories/${e}/${t}/tags/${n}`;try{let e=await _t(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 zr(e,t,n){let{registry:r,namespace:i,repo:a}=Ar(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await Ir(i,a,n),name:e},t,null,e]}function Br(e,t,n,r,i,a){let o=Mr(t);if(!o)return null;let s=he(K(o.version))?.version;if(!s)return null;let c=s,l=``,u=``;for(let[t,s]of Object.entries(e)){let e=Mr(t);if(!e||e.suffix!==o.suffix)continue;let d=he(K(e.version))?.version;if(!d||a&&!H(d,a)||!st(s,r,i))continue;if(d===c){l&&Date.parse(s)>Date.parse(u)&&(l=t,u=s);continue}let f=R(c,d);!f||!n.has(f)||z(d,c)&&(c=d,l=t,u=s)}if(!l||c===s)return null;let d=Nr(c,t);return d===t?null:{newTag:d,hubTag:l,date:u}}function Vr(e,t,n){let r=e;for(let[e,i]of Object.entries(t)){let t=e.split(`\0`)[1],a=i.oldOrig||i.old;for(let e of n)r=r.replace(e(G(t),G(a)),`$1${t}:${i.new}`)}return r}function Hr(e,t){return Vr(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}(?![\\w.-])`,`g`)])}function Ur(e,t){return Vr(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}(?![\\w.-])`,`g`)])}function Wr(e,t){return Vr(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}(?![\\w.-])`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}(?![\\w.-])`,`g`)])}const Gr=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function Kr(e){return/^docker-.+\.ya?ml$/.test(e)}function qr(e){return/^Dockerfile(\..+)?$/.test(e)}function Jr(e){return qr(e)||Kr(e)}function Yr(e){return qr(e)?Er:Dr}function Xr(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const Zr=[`Makefile`,`makefile`,`GNUmakefile`];function Qr(e){return Zr.includes(e)||e.endsWith(`.mk`)}const $r=String.raw`^\s*[A-Za-z_][\w.]*\s*(?:::=|:=|\?=|\+=|=)\s*`,ei=RegExp(`${$r}${String.raw`(\S+)@(v\d\S*)\s*$`}`),ti=/^[^/\s]+\.[^/\s]+\//;function ni(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=ni(n),r=ei.exec(e);if(!r)continue;let[,i,a]=r;ti.test(i)&&t.push({installPath:i,version:a})}return t}const ii=RegExp(`${$r}${String.raw`(\S+)\s*$`}`),ai=/@(sha256:[0-9a-f]{64})$/;function oi(e,t,n){return`${e}:${t}${n?`@${n}`:``}`}function si(e){let t=null,n=e,r=ai.exec(e);r&&(t=r[1],n=e.slice(0,r.index));let i=jr(n.replace(/^docker\.io\//,``));return!i||i.registry||i.namespace===`library`?null:{writtenImage:n.slice(0,n.lastIndexOf(`:`)),ref:i,digest:t}}function ci(e){let t=[];for(let n of e.split(/\r?\n/)){let e=ii.exec(ni(n));if(!e)continue;let r=si(e[1]);r&&t.push(r)}return t}const li=/\/v(?:[2-9]|[1-9]\d+)(?=\/|$)/;function ui(e){let t=li.exec(e);return t?e.slice(0,t.index+t[0].length):null}function di(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 fi(e,t){let n=ui(e);if(n)return n;let r=di(e);return(await Promise.all(r.map(async e=>{try{return(await t.doFetch(`${t.goProxyUrl}/${Jn(e)}/@latest`,{signal:AbortSignal.timeout(t.goProbeTimeout)})).ok?e:null}catch{return null}}))).find(Boolean)??null}async function pi(e,t,n,r,i,a){let o=await fi(e,r);if(!o)return null;let[s]=await sr(o,`tool`,K(t),n,r,i),c=Tt(s,{mode:`go`,range:K(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:U,isGoPseudoVersion:tr});if(!c)return null;let l=s.newPath??Qn(o,c),u=`${l}${e.slice(o.length)}`,d=Vt(c,t);return u===e&&d===t?null:{newInstallPath:u,newVersion:d,date:s.Time??``,info:fr(l)}}async function mi(e,t,n){let{namespace:r,repo:i,fullImage:a,tag:o}=e.ref,[s]=await zr(a,`docker`,t),c=Br(s.tags,o,n.semvers,n.cooldownDays,n.now,n.pinnedRange);if(!c)return null;let l=null;return e.digest&&(l=await Rr(r,i,c.hubTag,t),!l)?null:{newTag:c.newTag,newDigest:l,date:c.date,info:Xr(e.ref)}}function hi(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 gi=new Map,_i=e=>({versions:(e.versions||[]).filter(e=>!e.yanked).map(e=>({num:e.num,created_at:e.created_at}))});async function vi(e,t,n){let r=`${ut(n.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`,i=gi.get(r);return i||(i=(async()=>{try{let t=await _t(r,n,dt(),_i);`body`in t||Bt(t.res,r,e,n.cratesIoUrl);let i;try{i=JSON.parse(t.body)}catch{throw Error(`Invalid JSON from ${r}`)}let a=(i.versions||[]).filter(e=>!e.yanked),o={},s={};for(let e of a)e.num&&(o[e.num]={},s[e.num]=e.created_at||``);return{name:e,versions:o,time:s,"dist-tags":{latest:a[0]?.num??``}}}catch(e){throw gi.delete(r),e}})(),gi.set(r,i)),[await i,t,null,e]}function yi(e){let t=new Map;for(let n of e.split(`[[package]]`)){let e=/\bname\s*=\s*"([^"]+)"/.exec(n),r=/\bversion\s*=\s*"([^"]+)"/.exec(n);if(!e||!r)continue;let i=e[1],a=r[1];if(!pe(a))continue;let o=t.get(i);o||t.set(i,o=[]),o.push(a)}return t}const bi=/^\d/;function xi(e,t){return bi.test(e)?Fn(X(`^${e}`),t,`^${e}`).replace(/^\^/,``):Fn(X(e),t,e)}function Si(e,t,n){let r=e.get(t);if(!r)return;let i=bi.test(n)?`^${n}`:n,a;for(let e of r)H(e,i)&&(!a||z(e,a))&&(a=e);return a}const Ci=Ve.map(G).join(`|`);function wi(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(`(\\[(?:${Ci})\\.${o}\\](?:(?!\\n\\[)[\\s\\S])*?version\\s*=\\s*["'])${s}(["'])`,`g`),`$1${a}$2`)}return n}function Ti(e){return e.split(`|`)[0]}function Ei(e,t){let n=t===`.`?``:`|${t}`,r={};for(let[t,i]of Object.entries(e)){let[e,a]=t.split(`\0`),o=Ti(e);e===`${o}${n}`&&(r[`${o}${a}`]=i)}return r}const Di=/[*?{[]/;async function Oi(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=>p(e,{cwd:t})).map(e=>e.replace(/\\/g,`/`))),s=new Set,d=[];for(let e of i){let r=Di.test(e)?p(e,{cwd:t}).map(e=>u(c(t,e))):[u(c(t,e))];for(let e of r){let r=l(t,e).replace(/\\/g,`/`);if(o.has(r))continue;let i=c(e,n);s.has(i)||(s.add(i),d.push({absPath:i,memberPath:`./${r}`}))}}return(await W(d,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 ki(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 Ai={"pnpm-workspace.yaml":`npm`,"package.json":`npm`,"pyproject.toml":`pypi`,"go.work":`go`,"go.mod":`go`,"Cargo.toml":`cargo`},ji=new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`,`make`]),Mi=(e,t)=>typeof e==`string`?ut(e):typeof t==`function`?t():t;function Ni(e,t){let n=new Map,r=new Set(e),i=t;for(;r.size;){for(let e of r){let t=c(i,e);try{d(t),n.set(e,t),r.delete(e)}catch{}}let e=s(i);if(e===i)break;i=e}return n}async function Pi(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 Z(e,t){t&&(e.date=t,e.age=Pe(t,{noAffix:!0}))}function Fi(e){let t=0;for(let n of Object.values(e))t+=Object.keys(n).length;return t}function Ii(e){console.error(`${We()} ${e}`)}function Q(e,t,n,r,i){if(i===`engines`&&Re.includes(e)||t===`pypi`&&e===`python`)return!1;if(!n.size&&!r.size)return!0;let a=t===`go`?pr(e):e;for(let t of r)if(t.test(e)||t.test(a))return!1;for(let t of n)if(t.test(e)||t.test(a))return!0;return!n.size}function Li(t){let n=new Set;if(t)for(let e of t){let t;try{t=m(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}if(t.isFile())n.add(u(e));else if(t.isDirectory()){for(let t of Object.keys(Ai)){let r=c(e,t),i=null;try{i=m(r)}catch{}i?.isFile()&&n.add(u(r))}try{for(let t of g(e,{withFileTypes:!0}))t.isFile()&&(Jr(t.name)||Qr(t.name))&&n.add(u(c(e,t.name)))}catch{}let t=u(e).replace(/\\/g,`/`),r=xr.some(e=>t.endsWith(`/${e}/workflows`)),i=!r&&xr.some(e=>t.endsWith(`/${e}`)),a=r?[s(t)]:i?[t]:xr.map(e=>c(t,e));for(let e of a)for(let t of wr(e))n.add(t)}else throw Error(`${e} is neither a file nor directory`)}else{let t=new Set(xr),r=[...Object.keys(Ai),...Gr,...Zr,...xr];for(let[i,a]of Ni(r,e()))if(t.has(i))for(let e of wr(a))n.add(e);else n.add(u(a));try{for(let t of g(e(),{withFileTypes:!0})){let r=Jr(t.name)&&!Gr.includes(t.name),i=Qr(t.name)&&!Zr.includes(t.name);t.isFile()&&(r||i)&&n.add(u(c(e(),t.name)))}}catch{}}for(let e of Array.from(n))o(e)===`go.work`&&n.delete(c(s(e),`go.mod`));for(let e of Array.from(n))o(e)===`pnpm-workspace.yaml`&&n.delete(c(s(e),`package.json`));return n}function $(e,t){r===`win32`&&v(e,0),y(e,t,r===`win32`?{flag:`r+`}:void 0)}function Ri(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`&&!An(i.oldOrig)&&(i.old=n===`go`?mr(i.oldOrig):i.oldOrig),n===`go`?i.new=mr(i.new):n===`actions`&&(i.old=K(i.old),i.new=K(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 zi=!1;async function Bi(t={}){if(!zi){let{enableDnsCache:e}=await import(`./dns.js`);e(),zi=!0}let n={...t},r=n.sockets??25,l=n.timeout??0,d=Mi(t.forgeapi,`https://api.github.com`),f=Mi(t.pypiapi,`https://pypi.org`),p=Mi(t.jsrapi,`https://jsr.io`),m=Mi(t.goproxy,Gn),h=Mi(t.cargoapi,`https://crates.io`),g=Mi(t.dockerapi,`https://hub.docker.com`),_=Kn(),v=n.color||!n.noColor&&i.isTTY,y=e=>v?t=>a(e,String(t)):String,b=y(`magenta`),x=y(`green`),C=y(`red`),w={fetchTimeout:l||5e3,goProbeTimeout:l?l/2:2500,forgeApiUrl:d,pypiApiUrl:f,jsrApiUrl:p,goProxyUrl:m,cratesIoUrl:h,dockerApiUrl:g,doFetch:async(e,t)=>{n.verbose&&Ii(`${b(t?.method||`GET`)} ${e}`);let r=await mt(e,t);return n.verbose&&Ii(`${r.ok?x(r.status):C(r.status)} ${e}`),r},noCache:!!n.noCache},ee=Zt(n.greatest),te=Zt(n.prerelease),T=Zt(n.release),ne=Zt(n.patch),re=Zt(n.minor),ie=Zt(n.allowDowngrade),D=n.modes?.length?new Set(n.modes):ji,ae=(n.overrides??[]).map(e=>({include:e.include?.length?Y(e.include):void 0,exclude:e.exclude?.length?Y(e.exclude):void 0,greatest:e.greatest,prerelease:e.prerelease,release:e.release,patch:e.patch,minor:e.minor,allowDowngrade:e.allowDowngrade,cooldownDays:e.cooldown===void 0?void 0:qe(String(e.cooldown))})),oe=(e,t)=>e.include&&!U(t,e.include)?!1:!e.exclude||!U(t,e.exclude),se=ae.some(e=>e.cooldownDays);D.has(`actions`)&&At();let ce=new Map;function O(e){let t=ce.get(e);if(!t){let n=U(e,ee),r=U(e,te),i=U(e,T),a=U(e,ne),o=U(e,re),s=U(e,ie),c;for(let t of ae)oe(t,e)&&(t.greatest!==void 0&&(n=t.greatest),t.prerelease!==void 0&&(r=t.prerelease),t.release!==void 0&&(i=t.release),t.patch!==void 0&&(a=t.patch),t.minor!==void 0&&(o=t.minor),t.allowDowngrade!==void 0&&(s=t.allowDowngrade),t.cooldownDays!==void 0&&(c=t.cooldownDays));let l=new Set(a?[`patch`]:o?[`patch`,`minor`]:[`patch`,`minor`,`major`]);t={useGreatest:n,usePre:r,useRel:i,semvers:l,allowDowngrade:s,cooldownOverride:c},ce.set(e,t)}return t}let le=Y(n.include??[]),ue=Y(n.exclude??[]),de=n.pin??{},k={},A={},j={},M=Date.now(),N=e=>{let t=n.cooldown??e;return t?qe(String(t)):0},fe=e(),P=e=>e.replace(`${fe}/`,``).replace(`${fe}\\`,``),F=0,I=(e,t,n,r,i,a)=>{k[e][`${t}${n}${r}`]={old:i,oldOrig:a}},me=Li(n.files?.length?new Set(n.files):!1),L=await Pi(Array.from(me).filter(e=>{if(Cr(e))return D.has(`actions`)||D.has(`docker`);let t=o(e);if(Jr(t))return D.has(`docker`);if(Qr(t))return D.has(`make`);let n=Ai[t];return!!n&&D.has(n)}),r),he={},R={},ge={},_e=[],z=null,ve=[],ye=!1,be=[],xe=!1,B=[],Se=[],Ce=[],we={};async function V(e){let t=await en(e);return{modeConfig:t,modeInclude:t.include?.length?Y([...n.include??[],...t.include]):le,modeExclude:t.exclude?.length?Y([...n.exclude??[],...t.exclude]):ue,pin:{...t.pin,...de}}}function Te(e,t){return n.types?.length?n.types:t?.types?.length?t.types:e===`npm`?Le:e===`pypi`?ze:e===`go`?n.indirect?Be:Be.filter(e=>e!==`indirect`):e===`cargo`?Ve:[]}function Ee(e,t,n,r){k.docker??={};for(let i of n)for(let{ref:n}of Pr(e,i)){if(!Q(n.fullImage,`docker`,r.include,r.exclude,`docker`))continue;let e=`${t}${n.fullImage}`;if(k.docker[e])continue;let i=Mr(n.tag);i&&(k.docker[e]={old:i.version,oldOrig:n.tag},Se.push({key:e,fullImage:n.fullImage,ref:n,filePin:r.pin,fileCooldownDays:r.cooldownDays}))}}async function De(e){let t=await en(e);return{include:t.include?.length?Y([...n.include??[],...t.include]):le,exclude:t.exclude?.length?Y([...n.exclude??[],...t.exclude]):ue,pin:t.pin??{},cooldownDays:N(t.cooldown)}}let Oe=new Set,H=new Map;for(let e of me){let t=o(e);if(t===`go.work`)Oe.add(`go`);else if(t===`pnpm-workspace.yaml`)Oe.add(`npm`);else if(t===`Cargo.toml`){let t=L.get(e);if(!t)continue;try{let n=E(t);H.set(e,n);let r=n.workspace?.members;Array.isArray(r)&&r.length&&Oe.add(`cargo`)}catch{}}}for(let e of me){if(Cr(e)){let t=D.has(`actions`),n=D.has(`docker`);if(!t&&!n)continue;let r=L.get(e),i=P(e),a=await De(s(e));if(he[i]={absPath:e,content:r},t){k.actions??={};let e=Array.from(r.matchAll(hr),e=>gr(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}`;k.actions[e]||(k.actions[e]={old:t.ref},B.push({...t,key:e,apiUrl:_r(t.host,d),filePin:a.pin,fileCooldownDays:a.cooldownDays}))}}n&&(R[i]={absPath:e,content:r,fileType:`workflow`},Ee(r,i,[Dr,Or,kr],a));continue}let t=o(e);if(Jr(t)){if(!D.has(`docker`))continue;let n=L.get(e),r=P(e),i=qr(t)?`dockerfile`:`compose`,a=await De(s(e));R[r]={absPath:e,content:n,fileType:i},Ee(n,r,[Yr(t)],a);continue}if(Qr(t)){if(!D.has(`make`))continue;let t=L.get(e),n=P(e),r=await De(s(e));ge[n]={absPath:e,content:t},k.make??={};let i={projectDir:s(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`))continue;let t=`${n}${e}`;k.make[t]||(k.make[t]={old:K(a),oldOrig:a},Ce.push({kind:`go`,key:t,name:e,oldSpec:`${e}@${a}`,installPath:e,version:a,...i}))}for(let e of ci(t)){if(!Q(e.writtenImage,`make`,r.include,r.exclude,`make`))continue;let t=`${n}${e.writtenImage}`;if(k.make[t])continue;let a=Mr(e.ref.tag);if(!a)continue;let o=oi(e.writtenImage,e.ref.tag,e.digest);k.make[t]={old:a.version,oldOrig:e.ref.tag},Ce.push({kind:`docker`,key:t,name:e.writtenImage,oldSpec:o,image:e,...i})}continue}let n=Ai[t];if(!D.has(n))continue;if(t===`go.work`){k[n]??={};let t=s(u(e)),i=L.get(e);z={file:e,content:i};let a=dr(i),[o,l]=await Promise.all([V(t),W(a.use,async e=>{let n=u(c(t,e,`go.mod`));try{return{usePath:e,modPath:n,content:await S(n,`utf8`)}}catch{return null}},{concurrency:r})]),{modeConfig:d,modeInclude:f,modeExclude:p,pin:m}=o,h=Te(n,d);we[n]={modeConfig:d,projectDir:t,pin:m};for(let e of l){if(!e)continue;let{usePath:t,modPath:r,content:i}=e,a=ar(i),o=s(r);_e.push({absPath:r,content:i,projectDir:o,usePath:t});let c=t===`.`?``:`|${t}`;for(let e of h){let t=a[e]||{};for(let[r,i]of Object.entries(t))Q(r,n,f,p,e)&&I(n,e,c,r,mr(i),K(i))}}for(let[e,t]of Object.entries(a.replace))Q(e,n,f,p,`replace`)&&I(n,`replace`,``,e,mr(t),K(t));F+=Object.keys(k[n]).length;continue}if(t===`go.mod`&&_e.some(t=>t.absPath===u(e))||t===`package.json`&&be.some(t=>t.absPath===u(e)))continue;if(t===`Cargo.toml`){k[n]??={};let t=Object.keys(k[n]).length,i=L.get(e),a=H.get(e)??E(i),o=s(u(e)),c=Ni([`Cargo.lock`],o).get(`Cargo.lock`),l=a.workspace?.members,d=Array.isArray(l)&&l.length,[f,p,m]=await Promise.all([V(o),c?S(c,`utf8`):Promise.resolve(null),d?Oi(l,o,`Cargo.toml`,r):Promise.resolve([])]),{modeConfig:h,modeInclude:g,modeExclude:_,pin:v}=f,y=Te(n,h),b=p?yi(p):new Map,x=(e,t)=>{for(let r of y){let i=He(e,r)||{};if(!(typeof i!=`object`||Array.isArray(i))){for(let[e,a]of Object.entries(i))if(Q(e,n,g,_,r))if(typeof a==`object`&&a&&`version`in a&&!(`git`in a)&&!(`path`in a)){let i=a.version;ke(i)&&I(n,r,t,e,Si(b,e,i)??X(i),i)}else typeof a==`string`&&ke(a)&&I(n,r,t,e,Si(b,e,a)??X(a),a)}}};if(d){ye=!0,we[n]={modeConfig:h,projectDir:o,pin:v},x(a,``),ve.push({absPath:u(e),content:i,memberPath:`.`});for(let e of m){ve.push(e);try{x(E(e.content),`|${e.memberPath}`)}catch(t){throw Error(`Error parsing ${e.absPath}: ${t.message}`)}}}else{let t=j[n]??=[],r=!t.length&&!Oe.has(n),s=r?`.`:P(e);t.push({absPath:u(e),content:i,memberPath:s,projectDir:o,modeConfig:h,pin:v,modeCooldownDays:N(h.cooldown)}),r&&(we[n]={modeConfig:h,projectDir:o,pin:v}),x(a,s===`.`?``:`|${s}`)}F+=Object.keys(k[n]).length-t;continue}if(t===`pnpm-workspace.yaml`){k[n]??={};let t=s(u(e)),i=L.get(e);xe=!0;let a=ki(i),o=c(t,`package.json`),[l,d,f]=await Promise.all([V(t),Je(S(o,`utf8`)),Oi(a,t,`package.json`,r)]),{modeConfig:p,modeInclude:m,modeExclude:h,pin:g}=l,_=Te(n,p);we[n]={modeConfig:p,projectDir:t,pin:g};let v=(e,t)=>{for(let r of _){let i=e[r]||{};if(typeof i==`string`){let[e,a]=i.split(`@`);Q(e,n,m,h,r)&&I(n,r,t,e,X(a),a)}else if(typeof i==`object`&&!Array.isArray(i))for(let[e,a]of Object.entries(i))Q(e,n,m,h,r)&&(An(a)?I(n,r,t,e,Mn(a,e).version,a):ke(a)?I(n,r,t,e,X(a),a):jn(a)?I(n,r,t,e,`0.0.0`,a):A[`${r}${t}${e}`]={old:a})}};if(d!==null){let e;try{e=JSON.parse(d)}catch(e){throw Error(`Error parsing ${o}: ${e.message}`)}be.push({absPath:u(o),content:d,memberPath:`.`}),v(e,``)}for(let e of f){let t;try{t=JSON.parse(e.content)}catch(t){throw Error(`Error parsing ${e.absPath}: ${t.message}`)}be.push(e),v(t,`|${e.memberPath}`)}F+=Object.keys(k[n]).length+Object.keys(A).length;continue}k[n]??={};let i=s(u(e)),{modeConfig:a,modeInclude:l,modeExclude:f,pin:p}=await V(i),m=Te(n,a),h=j[n]??=[],g=!h.length&&!Oe.has(n),_=g?`.`:P(e),v=_===`.`?``:`|${_}`,y=L.get(e);h.push({absPath:u(e),content:y,memberPath:_,projectDir:i,modeConfig:a,pin:p,modeCooldownDays:N(a.cooldown)});let b={};try{n===`npm`?b=JSON.parse(y):n===`pypi`?b=E(y):n===`go`&&(b=ar(y))}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}let x=Object.keys(k[n]).length,C=Object.keys(A).length;for(let e of m){let t;if(t=n===`npm`||n===`go`?b[e]||{}:He(b,e)||{},Array.isArray(t)&&n===`pypi`)for(let{name:r,version:i}of Ie(t))Q(r,n,l,f,e)&&I(n,e,v,r,X(i),i);else if(typeof t==`string`){let[r,i]=t.split(`@`);Q(r,n,l,f,e)&&I(n,e,v,r,X(i),i)}else for(let[r,i]of Object.entries(t))Q(r,n,l,f,e)&&(n===`npm`&&An(i)?I(n,e,v,r,Mn(i,r).version,i):n!==`go`&&ke(i)?I(n,e,v,r,X(i),i):n===`npm`&&jn(i)?I(n,e,v,r,`0.0.0`,i):n===`npm`?A[`${e}${v}${r}`]={old:i}:n===`go`&&I(n,e,v,r,mr(i),K(i)))}F+=Object.keys(k[n]).length-x+(Object.keys(A).length-C),g&&(we[n]={modeConfig:a,projectDir:i,pin:p})}if(k.actions&&(F+=Object.keys(k.actions).length),k.docker&&(F+=Object.keys(k.docker).length),k.make&&(F+=Object.keys(k.make).length),F===0)return{results:{},message:`No dependencies found, nothing to do.`};let Ae=[],je={registry:n.registry};for(let[e,t]of Object.entries(we)){let n=k[e]&&Object.keys(k[e]).length>0,i=e===`npm`&&Object.keys(A).length>0;if(!n&&!i)continue;let{modeConfig:a,projectDir:o,pin:s}=t,c=N(a.cooldown);Ae.push((async()=>{let t=new Map;for(let n of j[e]??[])n.memberPath!==`.`&&t.set(`|${n.memberPath}`,n);let n={modeConfig:a,projectDir:o,pin:s,modeCooldownDays:c},i=e=>{let r=e.slice(Ti(e).length);return r&&t.get(r)||n},l=new Map,u=e=>{for(let[t,{date:n}]of Object.entries(e)){if(!n)continue;let{modeCooldownDays:r}=i(t.split(`\0`)[0]);if(!r&&!se)continue;let[,a]=t.split(`\0`),o=O(a).cooldownOverride??r;o&&!st(n,o,M)&&delete e[t]}};if(await W(Object.keys(k[e]),async t=>{let[n,r]=t.split(`\0`),a=Ti(n),{modeConfig:o,projectDir:s,pin:c,modeCooldownDays:u}=i(n),d=k[e][t],f=null;if(e===`npm`){let{oldOrig:n}=d;if(n&&An(n))f=await Nn(r,a,w);else if(n&&jn(n))try{f=await On(r,a,o,je,w)}catch{delete k[e][t];return}else f=await On(r,a,o,je,w)}else f=e===`go`?await sr(r,a,d.oldOrig||d.old,s,w,_):e===`cargo`?await vi(r,a,w):await Bn(r,a,w);if(!f)return;let[p,,m]=f;if(p.error)throw Error(p.error);let{useGreatest:h,usePre:g,useRel:v,semvers:y,allowDowngrade:b,cooldownOverride:x}=O(p.name),S=d.old,C=d.oldOrig,ee=c[r],te=x??u,T=Tt(p,{usePre:g,useRel:v,useGreatest:h,semvers:y,range:S,mode:e,pinnedRange:ee,cooldownDays:te||void 0,now:te?M:void 0},{allowDowngrade:b,matchesAny:U,isGoPseudoVersion:tr}),E=``;if([`go`,`pypi`].includes(e)&&T)E=T;else if(e===`cargo`&&T&&C)E=xi(C,T);else if(T)if(C&&jn(C))E=String(gn()[`save-exact`])===`true`?T:`^${T}`;else if(C&&An(C)){let e=/^(npm:@jsr\/[^@]+@|jsr:@[^@]+@)(.+)$/.exec(C);e?E=`${e[1]}${T}`:C.startsWith(`jsr:`)&&(E=`jsr:${T}`)}else E=Fn(S,T,C);if(!T||T===S||C&&C===E){delete k[e][t];return}let ne=``;e===`pypi`&&p.releases?.[T]?.[0]?.upload_time_iso_8601?ne=p.releases[T][0].upload_time_iso_8601:e===`go`&&p.Time?ne=p.Time:e===`cargo`&&p.time?.[T]&&(ne=p.time[T]),d.new=E,C&&An(C)&&(d.newPrint=T),e===`npm`?l.set(t,{name:r,promise:kn(p.name,T,o,je,w)}):e===`pypi`?d.info=Ut(p,m,p.info.name):e===`go`?d.info=fr(p.newPath||r):e===`cargo`&&(d.info=`https://crates.io/crates/${r}`),ne&&Z(d,ne)},{concurrency:r}),await Promise.all(Array.from(l,async([t,{name:n,promise:r}])=>{let i=await r,a=k[e][t];a&&(a.info=Ut({repository:i.repository,homepage:i.homepage},null,n),i.date&&Z(a,i.date))})),e===`npm`&&Object.keys(A).length){let t=(await W(Object.entries(A),([e,t])=>Rn(e,t,w),{concurrency:r})).filter(e=>e!==null);for(let n of t){let{key:t,newRange:r,user:i,repo:a,oldRef:o,newRef:s,newDate:c}=n;k[e][t]={old:A[t].old,new:r,oldPrint:It.test(o)?o.substring(0,7):o,newPrint:It.test(s)?s.substring(0,7):s,info:`https://github.com/${i}/${a}`},c&&Z(k[e][t],c)}}u(k[e])})())}B.length&&Ae.push((async()=>{let e=new Map;for(let t of B){let n=`${t.apiUrl}/${t.owner}/${t.repo}`,r=e.get(n);r||e.set(n,r={apiUrl:t.apiUrl,owner:t.owner,repo:t.repo,infos:[]}),r.infos.push(t)}await W(e.values(),async({apiUrl:e,owner:t,repo:n,infos:i})=>{let a=await zt(e,t,n,w),o=[],s=new Map,c=new Map,l=new Map;for(let e of a){c.set(e.name,e);let t=K(e.name);pe(t)&&(o.push(t),s.has(t)||s.set(t,e.name)),e.commitSha&&l.set(e.commitSha,e.name)}let u=new Map;async function d(r){if(u.has(r))return u.get(r);let i=await vr(e,t,n,r,w);return u.set(r,i),i}async function f(e){let t=new Set;for(let n=0;n<20;n++){let n=wt({},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 d(i):``;if(st(a,e.cooldownDays,e.now))return{version:n,tag:r,commitSha:i,date:a};t.add(n)}return null}await W(i,async({key:e,host:r,ref:i,name:a,isHash:o,filePin:s,fileCooldownDays:u})=>{let p=k.actions[e],m=`https://${r||`github.com`}/${t}/${n}`,h=de[a]??s[a];if(o){let{usePre:t,useRel:n,cooldownOverride:r}=O(a),o=r??u,s=await f({range:`0.0.0`,semvers:new Set([`patch`,`minor`,`major`]),usePre:t,useRel:n,useGreatest:!0,pinnedRange:h,cooldownDays:o||void 0,now:o?M:void 0});if(!s){delete k.actions[e];return}let{tag:c,commitSha:d,date:g}=s;if(!d||d===i||d.startsWith(i)||i.startsWith(d)){delete k.actions[e];return}let _=l.get(i);if(!_){for(let[e,t]of l)if(e.startsWith(i)){_=t;break}}p.old=i,p.new=d.substring(0,i.length),p.oldPrint=_||i.substring(0,7),p.newPrint=c,p.info=m,g&&Z(p,g)}else{let t=J(K(i));if(!t){delete k.actions[e];return}let{usePre:n,useRel:r,semvers:o,cooldownOverride:s}=O(a),l=s??u,g=await f({range:t,semvers:o,usePre:n,useRel:r,useGreatest:!0,pinnedRange:h,cooldownDays:l||void 0,now:l?M:void 0});if(!g){delete k.actions[e];return}let{tag:_,commitSha:v,date:y}=g,b=yr(_,i);if(b===i){delete k.actions[e];return}if(p.new=c.has(b)?b:_,p.info=m,v&&y)Z(p,y);else if(v){let e=await d(v);e&&Z(p,e)}}},{concurrency:r})},{concurrency:r}),Object.keys(k.actions).length||delete k.actions})()),Se.length&&Ae.push((async()=>{let e=new Map;for(let t of Se){let n=e.get(t.fullImage);n||e.set(t.fullImage,n=[]),n.push(t)}await W(e.entries(),async([e,t])=>{let n;try{let[t]=await zr(e,`docker`,w);n=t}catch{for(let e of t)delete k.docker[e.key];return}for(let e of t){let t=k.docker[e.key],r=t.oldOrig||t.old,{semvers:i,cooldownOverride:a}=O(e.fullImage),o=de[e.fullImage]??e.filePin[e.fullImage],s=a??e.fileCooldownDays,c=Br(n.tags,r,i,s||void 0,s?M:void 0,o);if(!c){delete k.docker[e.key];continue}t.new=c.newTag,t.info=Xr(e.ref),Z(t,c.date)}},{concurrency:r}),Object.keys(k.docker).length||delete k.docker})()),Ce.length&&Ae.push((async()=>{await W(Ce,async e=>{let{useGreatest:t,usePre:n,useRel:r,semvers:i,allowDowngrade:a,cooldownOverride:o}=O(e.name),s=de[e.name]??e.filePin[e.name],c=o??e.fileCooldownDays,l={semvers:i,useGreatest:t,usePre:n,useRel:r,allowDowngrade:a,pinnedRange:s,cooldownDays:c||void 0,now:c?M:void 0},u=k.make[e.key],d;if(e.kind===`go`){let t=await Je(pi(e.installPath,e.version,e.projectDir,w,_,l));if(!t){delete k.make[e.key];return}e.newSpec=`${t.newInstallPath}@${t.newVersion}`,u.new=t.newVersion,d=t}else{let t=await Je(mi(e.image,w,l));if(!t){delete k.make[e.key];return}e.newSpec=oi(e.image.writtenImage,t.newTag,e.image.digest?t.newDigest:null),u.new=t.newTag,d=t}u.info=d.info,d.date&&Z(u,d.date)},{concurrency:r}),Object.keys(k.make).length||delete k.make})());try{await Promise.all(Ae)}finally{await at()}if(!Fi(k))return{results:{},message:`All dependencies are up to date.`};if(n.update){let e=(e,t,n)=>{for(let r of t){let t=Ei(k[e],r.memberPath);Object.keys(t).length&&$(r.absPath,n(r.content,t))}},t=new Map;if(k.actions)for(let[e,n]of Object.entries(k.actions)){let[r,i]=e.split(`\0`),a=t.get(r);a||t.set(r,a=[]),a.push({name:i,oldRef:n.old,newRef:n.new})}let n=new Map;if(k.docker)for(let[e,t]of Object.entries(k.docker)){let[r]=e.split(`\0`),i=n.get(r);i||n.set(r,i={}),i[e]=t}let r=new Map;if(k.make)for(let e of Ce){if(!e.newSpec||!k.make[e.key])continue;let t=e.key.split(`\0`)[0],n=r.get(t);n||r.set(t,n=[]),n.push({oldSpec:e.oldSpec,newSpec:e.newSpec})}let i=Object.keys(k).sort((e,t)=>(e===`docker`)-+(t===`docker`));for(let a of i)if(Object.keys(k[a]).length){if(a===`actions`){for(let[e,n]of t){let{absPath:t,content:r}=he[e]||{};if(!t)continue;let i=br(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`?Hr:a===`compose`?Ur:Wr)(i,t))}continue}if(a===`make`){for(let[e,t]of r){let n=ge[e];n&&$(n.absPath,hi(n.content,t))}continue}if(a===`go`){if(z){for(let e of _e){let t=Ei(k[a],e.usePath);if(!Object.keys(t).length)continue;let[n,r]=lr(e.content,t);n!==e.content&&$(e.absPath,n),ur(e.projectDir,r,$)}let e={};for(let[t,n]of Object.entries(k[a]))t.split(`\0`)[0]===`replace`&&(e[t]=n);if(Object.keys(e).length){let[t]=lr(z.content,e);t!==z.content&&$(z.file,t)}}for(let e of j.go??[]){let t=Ei(k[a],e.memberPath);if(!Object.keys(t).length)continue;let[n,r]=lr(e.content,t);$(e.absPath,n),ur(e.projectDir,r,$)}}else a===`cargo`?(ye&&e(a,ve,wi),e(a,j.cargo??[],wi)):a===`npm`?(xe&&e(a,be,Pn),e(a,j.npm??[],Pn)):e(a,j[a]??[],Vn)}}return Ri(k)}function Vi(e){try{return tn(h(c(e,`.npmrc`),`utf8`)).registry}catch{return}}function Hi(e,t){if(typeof e!=`string`||!e)return t;try{return`${new URL(e).origin}/`}catch{return null}}function Ui(e,t){let n=(...t)=>t.some(t=>f(c(e,t))),r=new Set,i=e=>{e&&r.add(e)},a=Hi(t.forgeapi,`https://api.github.com/`),o=Hi(t.dockerapi,`https://hub.docker.com/`);return n(`package.json`,`pnpm-workspace.yaml`)&&(i(Hi(typeof t.registry==`string`?t.registry:Vi(e),`https://registry.npmjs.org/`)),i(Hi(t.jsrapi,`https://jsr.io/`)),i(a)),n(`pyproject.toml`)&&i(Hi(t.pypiapi,`https://pypi.org/`)),n(`Cargo.toml`)&&i(Hi(t.cargoapi,`https://crates.io/`)),n(`go.mod`,`go.work`)&&i(Hi(t.goproxy,`https://proxy.golang.org/`)),n(...Gr)&&i(o),n(`.github/workflows`)&&(i(a),i(o)),Array.from(r)}function Wi(e){let t=``,n=0,r=e.length,i=-1;for(;n<r;){let a=e[n];if(a===`"`){for(i=-1,t+=a,n++;n<r;){let i=e[n];if(t+=i,n++,i===`\\`&&n<r){t+=e[n],n++;continue}if(i===`"`)break}continue}if(a===`/`&&n+1<r&&e[n+1]===`/`){for(n+=2;n<r&&e[n]!==`
|
|
7
|
-
`;)
|
|
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 j=/^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=j.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 fe(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 pe(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function P(e,t){let n=pe(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=fe(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function me(e){return N(e)?.version??null}function F(e){return N(e)}const he=new Map,I=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function ge(e){if(typeof e!=`string`)return null;let t=he.get(e);if(t!==void 0)return t;let n=I.exec(e);if(!n)return he.set(e,null),null;let r={version:`${n[1]}.${n[2]||`0`}.${n[3]||`0`}`};return he.set(e,r),r}function L(e,t){let n=N(e),r=N(t);return!n||!r?null:_e(n,r)}function _e(e,t){if(e.version===t.version)return null;let n=P(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(pe(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 ve(e,t){let n=N(e),r=N(t);return n&&r?P(n,r):null}function R(e,t){return(ve(e,t)??-1)>0}function ye(e,t){return(ve(e,t)??-1)>=0}function be(e,t){return(ve(e,t)??1)<0}function xe(e){let t=/^(>=|<=|>|<|=)?\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*)?)$/.exec(e.trim());if(!t)return null;let n=t[2],r=N(`${n}.${t[3]??`0`}.${t[4]??`0`}${t[5]||``}`);return r?{op:t[1]||`=`,semver:r}:null}function Se(e,t){let n=P(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 Ce(e){return e.replace(/~\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.[xX*])*((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i)=>{let a=Number(t);if(n===void 0)return`>=${a}.0.0 <${z(a+1,0,0)}`;let o=Number(n);return`>=${a}.${o}.${r===void 0?0:Number(r)}${i||``} <${z(a,o+1,0)}`})}function we(e){return e.replace(/\^\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.[xX*])*((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i)=>{let a=Number(t),o=i||``;if(n===void 0)return`>=${a}.0.0 <${z(a+1,0,0)}`;let s=Number(n);if(r===void 0)return a===0?`>=${a}.${s}.0 <${z(a,s+1,0)}`:`>=${a}.${s}.0 <${z(a+1,0,0)}`;let c=Number(r);return a===0?s===0?`>=${a}.${s}.${c}${o} <${z(a,s,c+1)}`:`>=${a}.${s}.${c}${o} <${z(a,s+1,0)}`:`>=${a}.${s}.${c}${o} <${z(a+1,0,0)}`})}function Te(e){return e.replace(/v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)\s+-\s+v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i,a,o,s,c)=>{let l=Number(t),u=n===void 0?0:Number(n),d=r===void 0?0:Number(r),f=i||``,p=Number(a),m;return m=s===void 0?o===void 0?`<${z(p+1,0,0)}`:`<${z(p,Number(o)+1,0)}`:`<=${p}.${Number(o)}.${Number(s)}${c||``}`,`>=${l}.${u}.${d}${f} ${m}`})}function Ee(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 De(e){return/^\s*[*xX]\s*$/.test(e)?`>=0.0.0`:(e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)\.[xX*]/g,(e,t,n,r)=>Ee(t,Number(n),Number(r),!1)),e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.[xX*](?:\.[xX*])?/g,(e,t,n)=>Ee(t,Number(n),0,!0)),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)(?=\s|$)/g,(e,t,n,r,i)=>`${t}${Ee(n,Number(r),Number(i),!1)}`),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)(?=\s|$)/g,(e,t,n,r)=>`${t}${Ee(n,Number(r),0,!0)}`),e)}const B=new Map;function Oe(e){let t=B.get(e);if(t!==void 0)return t;let n=e.split(`||`).map(e=>e.trim()),r=[];for(let t of n){if(!t){r.push([]);continue}t=Te(t),t=we(t),t=Ce(t),t=De(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=xe(t);if(!n)return B.set(e,null),null;i.push(n)}if(i.length===0)return B.set(e,null),null;r.push(i)}let i=r.length?r:null;return B.set(e,i),i}function ke(e,t){return t.some(t=>!Se(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 V(e,t){let n=N(e);if(!n)return!1;let r=Oe(t);if(!r)return!1;for(let e of r)if(e.length===0||ke(n,e))return!0;return!1}function Ae(e){return typeof e==`string`&&Oe(e)?e:null}const je=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],Me={"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`},Ne={sec:`second`,min:`minute`};function Pe(e){return e instanceof Date?e.getTime():typeof e==`string`?Date.parse(e):e}function Fe(e,{now:t,noAffix:n=!1,times:r=je,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=Me,longUnits:l=!1}={}){let u=Pe(e),d=t===void 0?Date.now():Pe(t);if(u!==u)return o||String(e);let f=d-u,p=f<0;if(p&&(f=-f),f<i)return a;let m=0,h=``;for(let e=0,t=r.length;e<t;e++){let t=r[e];if(!(f>=t[1])){m=f/t[0]|0,h=(l&&Ne[t[2]]||t[2])+(m>1?`s`:``);break}}let g=`${m} ${h}`,_;return _=n?g:p?`in ${g}`:`${g} ago`,s?c[_]??_:_}function Ie(e,t,n){if(e===t)return e;let r=0;for(;r<e.length&&r<t.length&&e[r]===t[r];)r++;if(r>0&&e[r-1]!==`.`&&e[r-1]!==`-`){let t=r-1;for(;t>=0&&e[t]!==`.`&&e[t]!==`-`;)t--;if(t>=0)r=t+1;else{let t=0;for(;t<r;){let n=e.charCodeAt(t);if(n>=48&&n<=57)break;t++}r=t}}let i=e.substring(r);return i?e.substring(0,r)+n(i):e}function Le(e){let t=[];for(let n of e){let e=/^([^<>=~!]+)(?:==|>=?|<=?|~=)([0-9.a-z]+)$/.exec(n.replaceAll(/\s+/g,``));if(!e)continue;let r=e[1].replace(/\[.*?\]$/,``);r&&t.push({name:r,version:e[2]})}return t}const Re=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],ze=[`node`,`deno`,`bun`],Be=[`project.dependencies`,`project.optional-dependencies`,`dependency-groups.dev`,`dependency-groups.lint`,`dependency-groups.test`],Ve=[`deps`,`indirect`,`replace`,`tool`],He=[`dependencies`,`dev-dependencies`,`build-dependencies`,`workspace.dependencies`];function H(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 Ue(e,t){return t.split(`.`).reduce((e,t)=>e?.[t]??null,e)}function We(e){return e.split(`,`).filter(Boolean)}function Ge(){let e=new Date,t=String(e.getMonth()+1).padStart(2,`0`),n=String(e.getDate()).padStart(2,`0`),r=String(e.getHours()).padStart(2,`0`),i=String(e.getMinutes()).padStart(2,`0`),a=String(e.getSeconds()).padStart(2,`0`),o=String(e.getMilliseconds()).padStart(3,`0`);return`${e.getFullYear()}-${t}-${n} ${r}:${i}:${a}.${o}`}function Ke(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 qe={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function Je(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=qe[n.toLowerCase()];if(r)return Number(e)*r}if(!/^\d+(?:\.\d+)?$/.test(e))throw Error(`Invalid cooldown value: ${e}`);return Number(e)}function Ye(e,t){let n=Math.round(Number(e));if(!Number.isFinite(n)||n<1)throw Error(`Invalid ${t}: ${e}`);return n}async function U(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 Xe(e){try{return await e}catch{return null}}const W=e=>RegExp.escape?RegExp.escape(e):e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);async function Ze(e,t){let n=e;for(;;){let e=await t(n);if(e)return e;let r=s(n);if(r===n)return null;n=r}}function Qe(e){let t=new Map;return n=>{let r=t.get(n);return r||(r=e(n),t.set(n,r)),r}}const $e=c(r===`win32`?t.LOCALAPPDATA||c(te(),`AppData`,`Local`):t.XDG_CACHE_HOME||c(te(),`.cache`),`updates`);let et=null;const tt=new Map;function nt(e){let t=tt.get(e);return t===void 0&&(t=ee(`sha256`).update(e).digest(`hex`).substring(0,16),tt.set(e,t)),t}async function rt(e){try{let t=await S(c($e,`${nt(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 it=new Set;let at=0;function ot(e,t,r){let i=(async()=>{try{await(et??=x($e,{recursive:!0}))}catch{et=null;return}try{let i=c($e,`${nt(e)}.cache`),a=`${i}.${n}-${at++}.tmp`;await w(a,`${t}\n${r}`),await C(a,i)}catch{}})();it.add(i),(async()=>{await i,it.delete(i)})()}async function st(){for(;it.size;)await Promise.all(it)}var ct=`17.19.1`;function G(e,t,n){if(!t||!n||!e)return!0;let r=Date.parse(e);return Number.isNaN(r)?!0:(n-r)/(24*3600*1e3)>=t}const lt=ct,ut=5e3,dt=2500,K=e=>e[0]===`v`?e.substring(1):e,ft=e=>e.endsWith(`/`)?e.slice(0,-1):e;function pt(e,t){return{headers:{"user-agent":`updates/${lt}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}const mt=new Set([`ECONNRESET`,`ECONNREFUSED`,`ETIMEDOUT`,`EAI_AGAIN`,`EPIPE`,`UND_ERR_SOCKET`,`UND_ERR_CONNECT_TIMEOUT`,`UND_ERR_HEADERS_TIMEOUT`,`UND_ERR_BODY_TIMEOUT`]);function ht(e){if(e?.name===`TimeoutError`||e?.name===`AbortError`)return!0;let t=e?.code??e?.cause?.code;return typeof t==`string`&&mt.has(t)}async function gt(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=ht(t),n}}async function q(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 _t(e){return typeof e.text==`function`?e.text():JSON.stringify(await e.json())}function vt(e,t){if(!t||e.length<16384)return e;try{return JSON.stringify(t(JSON.parse(e)))}catch{return e}}async function yt(e,t,n={},r){let i=t.noCache?null:await rt(e),a=n.headers,o=i?{...a,"if-none-match":i.etag}:a,s=await q(t,e,{...n,headers:o});if(!s)return{res:void 0};if(s.status===304&&i)return{body:i.body,res:s};if(!s.ok)return{res:s};let c=vt(await _t(s),r),l=s.headers?.get?.(`etag`);return l&&!t.noCache&&ot(e,l,c),{body:c,res:s}}async function bt(e,t,n={},r){if(!t.noCache){let t=await rt(e);if(t)return{body:t.body}}let i=await q(t,e,n);if(!i)return{res:void 0};if(!i.ok)return{res:i};let a=vt(await _t(i),r);return t.noCache||ot(e,`immutable`,a),{body:a,res:i}}function xt(e){return(F(e)?.prerelease.length??0)>0}function St(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}const Ct=new WeakMap;function wt(e){let t=Ct.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`),Ct.set(e,n),n}function Tt(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=J(e),s=J(t);if(!o||!s)return!0;let c=St(e)||xt(e),l=xt(t);return c&&!l?ye(s,o)||n:!l&&be(s,o)?a(i,r):!0}function J(e){return ge(e)?.version??``}function Et(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:u}){let d=J(n);if(!d)return d;let f=St(n)||i,p=f?wt(r):r,m=e?.time,h=!!m,g=o||!h,_=!!(c&&l),v=0,y=!1,b=d,x=F(d);for(let e of t){let t=F(e);if(!t?.version||t.prerelease.length&&(!f||a))continue;let n=t.version;if(s&&!V(n,s))continue;let r;if(_&&(r=u?u(e):h?m[e]:void 0,!G(r,c,l)))continue;let i=_e(x,t);if(!(!i||!p.has(i)))if(g)((y?P(t,x)>0:pe(t,x)>=0)||s&&!V(b,s))&&(b=n,x=t,y=!0);else{let i=Date.parse(r??m[e]);i>=0&&i>v&&(b=n,x=t,v=i)}}return b||null}function Dt(e,{mode:t,range:n,useGreatest:r,useRel:i,usePre:a,semvers:o,pinnedRange:s,cooldownDays:c,now:l},{allowDowngrade:u,matchesAny:d,isGoPseudoVersion:f}){if(n===`*`||n.includes(`||`)||/\d\s/.test(n))return null;let p=[],m;if(t===`pypi`){let t=e.releases;p=Object.keys(t),m=e=>t?.[e]?.[0]?.upload_time_iso_8601}else if(t===`npm`||t===`cargo`)p=Object.keys(e.versions);else if(t===`go`){let t=J(n);if(!t)return null;let r=a||St(n),p=e=>xt(e)&&(!r||i),m={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d},h=e.old||n,g=J(e.new);if(g&&!f(e.new)&&!p(e.new)){let n=L(t,g);if(n&&o.has(n)&&Tt(h,e.new,m)&&G(e.Time,c,l)&&(!s||V(g,s)))return e.new}let _=J(e.sameMajorNew);if(_&&!f(e.sameMajorNew)&&!p(e.sameMajorNew)){let n=L(t,_);if(n&&o.has(n)&&Tt(h,e.sameMajorNew,m)&&G(e.sameMajorTime,c,l)&&(!s||V(_,s)))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}if(c&&l&&e.olderEligible&&!p(e.olderEligible.version)){let n=J(e.olderEligible.version);if(n){let r=L(t,n);if(r&&o.has(r)&&Tt(h,e.olderEligible.version,m)&&(!s||V(n,s)))return e.Time=e.olderEligible.time,delete e.newPath,e.olderEligible.version}}return null}let h=Et(e,p,{range:n,semvers:o,usePre:a,useRel:i,useGreatest:r,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:m});if(!h)return null;if(r)return h;{let r=``,f=``,p=!1;t===`pypi`?(f=e.info.version,r=J(e.info.version),p=xt(f)):(r=e[`dist-tags`].latest,p=xt(r));let m=J(n),g=St(n),_=xt(h),v={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d};if(!i&&a||g&&_)return h;if(g&&!_)return Tt(n,h,v)?h:null;let y=L(m,r);return y&&y!==`prerelease`&&!o.has(y.replace(/^pre/,``))||i&&p?h:be(r,m)&&!p?Tt(n,r,v)?r:R(h,m)?h:null:!g&&p&&!a||s&&!V(r,s)||c&&l&&!G(t===`pypi`?e.releases?.[f||r]?.[0]?.upload_time_iso_8601:e.time?.[r],c,l)?h:f||r}}const Ot=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&Ot.set(e.substring(0,t),e.substring(t+1))}const kt=[`UPDATES_GITHUB_API_TOKEN`,`GITHUB_API_TOKEN`,`GH_TOKEN`,`GITHUB_TOKEN`,`HOMEBREW_GITHUB_API_TOKEN`];function At(){return Array.from(new Set(kt.map(e=>t[e]).filter(Boolean)))}let jt;function Mt(){let e=At();return e.length?Promise.resolve(e):jt??=(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 Nt=new Map;async function Pt(e,t){if(!e)return[];let n=Ot.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?Mt():[]}async function Ft(e,t,n){let r;try{r=new URL(e).hostname}catch{r=``}let i=await Pt(r,t.forgeApiUrl),a=e=>{let t=pt(`Bearer`,e);return n&&(t.headers={...t.headers,...n}),t};if(!i.length)return q(t,e,a());let o=r?Nt.get(r):void 0;if(o)return q(t,e,a(o));for(let n of i){let i=await q(t,e,a(n));if(i.status!==401&&i.status!==403)return r&&Nt.set(r,n),i}return q(t,e,a())}function It(e,t){let n=K(t);if(!me(n))return null;let r=``,i=``;for(let t of e){let e=K(t);me(e)&&(!r||R(e,i))&&(r=t,i=e)}return r&&R(i,n)?r:null}function Lt(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 Rt=/^[0-9a-f]{7,}$/i;function zt(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function Bt(e,t){let n=t.noCache?null:await rt(e),r=await Ft(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&&ot(e,o,JSON.stringify({link:a,tags:i})),{tags:i,link:a}}async function Vt(e,t,n,r){let i=r=>`${e}/repos/${t}/${n}/tags?per_page=100&page=${r}`;try{let e=await Bt(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)=>Bt(i(t+2),r)));for(let e of o)e&&t.push(...e.tags);return t}catch{return[]}}function Ht(e,t,n,r){throw e?.status&&e.statusText?Error(`Received ${e.status} ${e.statusText} from ${t}`):Error(`Unable to fetch ${n} from ${r}`)}function Ut(e,t,n=``){let r=t.startsWith(`v`),i=K(e),a=K(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 Wt(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function Gt({repository:e,homepage:t,info:n},r,i){if(n){let t=n.project_urls;for(let n of[`repository`,`Repository`,`repo`,`Repo`,`source`,`Source`,`source code`,`Source code`,`Source Code`,`homepage`,`Homepage`])if(t?.[n]){e=t[n];break}e??=`https://pypi.org/project/${i}/`}let a=``;return r===`https://npm.pkg.github.com`?`https://github.com/${i.replace(/^@/,``)}`:(e&&(a=Lt(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a+=`/${Wt(a)}/${e.directory}`)),a||t||``)}const Kt={"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 qt(e,t){return RegExp(`^${W(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Jt(e,t,n){if(t&&typeof e==`string`)return/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):qt(e,n);{let t=e instanceof RegExp?e:qt(e,n);return/[gy]/.test(t.flags)?new RegExp(t.source,t.flags.replace(/[gy]/g,``)):t}}function Yt(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.filter(e=>typeof e==`string`).flatMap(We)):typeof e==`string`?new Set([e]):typeof e==`boolean`&&e}function Xt(e){for(let[t,{short:n}]of Object.entries(Kt))if(t===e||n===e)return t;return``}function Y(e){return new Set(e.map(e=>Jt(e,!1,!0)))}function Zt(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>We(e)):[]}function Qt(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&&Ae(i)&&(t[r]=i)}return t}function $t(e){return typeof e==`boolean`?e:!Array.isArray(e)||!e.length?!1:Y(e)}async function en(e){let t=await Promise.all([`js`,`ts`,`mjs`,`mts`].map(async t=>{let n=`updates.config.${t}`,r=c(e,n);try{await b(r)}catch{return null}try{return{configDir:e,filename:n,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 tn=Qe(e=>Ze(e,en));async function nn(e,t={}){let n=await tn(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 rn(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 an(e){try{return rn(h(e,`utf-8`))}catch{return}}function on(t){let n=e();for(;;){let e=c(n,t);try{if(_(e).isFile())return e}catch{}let r=s(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 l(e){if(!e||s.includes(e))return;let t=an(e);t&&(o.push(t),s.push(e))}i||(l(c(`/etc`,e,`config`)),l(c(`/etc`,`${e}rc`))),a&&(l(c(a,`.config`,e,`config`)),l(c(a,`.config`,e)),l(c(a,`.${e}`,`config`)),l(c(a,`.${e}rc`))),l(on(`.${e}rc`));let u=sn(`${e}_`);return u.config&&l(u.config),Object.assign({},...o,u,s.length?{configs:s,config:s[s.length-1]}:void 0)}const ln=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,un=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,dn=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,fn=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,pn=/(@[^/]+\/)?([^/]+)/g;function mn(e){let t=e.match(pn);return t?t[t.length-1]:e}const hn=`https://registry.npmjs.org`;let gn=null;const _n=new Map;function vn(){return gn??=cn(`npm`,{registry:hn})}function yn(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function bn(e,t){let n=n=>t[`${e}:${n}`]||t[`${e}/:${n}`],r=n(`_authToken`);if(r)return{token:yn(r),type:`Bearer`};let i=n(`username`),a=n(`_password`);if(i&&a){let e=Buffer.from(yn(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:yn(o),type:`Basic`}}function xn(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=bn(`//${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:yn(i),type:`Basic`}}function Sn(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function Cn(e,t){gn||=vn();let n=e.startsWith(`@`)?e.split(`/`)[0]:``,r=`${n}:${t}`,i=_n.get(r);if(i)return i;let a=()=>({auth:xn(t,gn),registry:t}),o;if(!e.startsWith(`@`))o=a();else{let e=ft(Sn(n,gn));if(e!==t)try{let t=xn(e,gn);o=t?.token?{auth:t,registry:e}:a()}catch{o=a()}else o=a()}return _n.set(r,o),o}function wn(e,t,n){gn||=vn();let r=ft(typeof n.registry==`string`&&n.registry||t.registry||gn.registry||hn);return{...Cn(e,r),originalRegistry:r}}function Tn(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const En=new Map,Dn=new Map,On=new Map;function kn(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 An(e,t,n,r,i){let{auth:a,registry:o}=wn(e,n,r),s=Tn(o,t===`resolutions`?mn(e):e),c=En.get(s);if(!c){let t=pt(a?.type,a?.token);t.headers={...t.headers,accept:`application/vnd.npm.install-v1+json`},c=(async()=>{try{let n=await yt(s,i,t,kn);return`body`in n||Ht(n.res,s,e,o),JSON.parse(n.body)}catch(e){throw En.delete(s),e}})(),En.set(s,c)}return[await c,t,o,e]}async function jn(e,t,n,r,i){let{auth:a,registry:o}=wn(e,n,r),s=Tn(o,e,t),c=Dn.get(s);if(c)return c;let l=(async()=>{try{let n=pt(a?.type,a?.token),r=await bt(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())}if(!l){let r=Tn(o,e),a=On.get(r);a||(a=(async()=>{try{let e=await q(i,r,n);return e?.ok?await e.json():null}catch{return On.delete(r),null}})(),On.set(r,a)),l=(await a)?.time?.[t]||``}return{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})();return Dn.set(s,l),l}function Mn(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Nn(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function Pn(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 Fn(e,t,n){let r=/^@([^/]+)\/(.+)$/.exec(e);if(!r)throw Error(`Invalid JSR package name: ${e}`);let[,i,a]=r,o=`${n.jsrApiUrl}/@${i}/${a}/meta.json`,s=await yt(o,n,{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 s){let r=JSON.parse(s.body),i={},a={};for(let[e,t]of Object.entries(r.versions??{}))i[e]={version:e,time:t.createdAt},a[e]=t.createdAt;return[{name:e,"dist-tags":{latest:r.latest},versions:i,time:a},t,n.jsrApiUrl,e]}Ht(s.res,o,e,`JSR`)}function In(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 Ln(e,t,n){let r=e.replace(fn,t);if(!n||n===e)return r;let i=/^([\^~]|>=\s*)([\d.]+)$/.exec(n);if(!i)return r;let[,a,o]=i,s=t.split(/[-+]/)[0];if(s!==t)return r;let c=o.split(`.`).length,l=s.split(`.`);return l.length===c?r:`${a}${l.slice(0,c).join(`.`)}`}function X(e){if(/[xX*]/.test(e))return e;let t=e.match(dn);return t?.length===1?e.replace(dn,J(t[0])):e}async function Rn(e,t,n){let r=`${n.forgeApiUrl}/repos/${e}/${t}/commits`;try{let e=n.noCache?null:await rt(r),t=await Ft(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&&ot(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 zn(e,t,n){return(await Vt(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function Bn(e,t,n){let r=t.old.replace(ln,``),[,i,a,o]=un.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(Rt.test(o)){let{hash:t,commit:r}=await Rn(i,a,n);if(!t)return null;let c=r?.committer?.date??r?.author?.date,l=t.substring(0,o.length);if(o.toLowerCase()!==l.toLowerCase())return{key:e,newRange:s(l),user:i,repo:a,oldRef:o,newRef:l,newDate:c}}else{let t=It(await zn(i,a,n),o);if(t)return{key:e,newRange:s(t),user:i,repo:a,oldRef:o,newRef:t}}return null}function Vn(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 Hn(e,t,n){let r=`${n.pypiApiUrl}/pypi/${e}/json`,i=await yt(r,n,{headers:{"accept-encoding":`gzip, deflate, br`}},Vn);if(`body`in i)return[JSON.parse(i.body),t,null,e];Ht(i.res,r,e,n.pypiApiUrl)}function Un(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(`(['"])(${W(a)} *(?:\\[[^\\]]+\\])? *[<>=~]+ *)${W(o)}\\1`,`g`),(n,r,i)=>`${r}${i}${t[e].new}${r}`)}return n}let Wn;async function Gn(){let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]);return t(e)}function Kn(){return Wn??=Gn()}function qn(){let e=t.GOPROXY||`https://proxy.golang.org,direct`;for(let t of e.split(/[,|]/)){let e=t.trim();if(e&&e!==`direct`&&e!==`off`)return ft(e)}return`https://proxy.golang.org`}function Jn(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function Yn(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function Xn(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}const Zn=/\/v(\d+)$/;function Qn(e){let t=Zn.exec(e);return t?Number.parseInt(t[1]):1}function $n(e,t){let n=e.replace(Zn,``);return t<=1?n:`${n}/v${t}`}function er(e,t){if(t.includes(`+incompatible`))return e;let n=Number.parseInt(K(t).split(`.`)[0]);return Number.isNaN(n)||n<=1||n===Qn(e)?e:$n(e,n)}function tr(e,t){let n=t?/^(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(e):/^replace\s+(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(e);if(!n)return null;let[,r,i,a]=n;return i.startsWith(`./`)||i.startsWith(`/`)||i.startsWith(`../`)?null:{origModule:r,targetModule:i,targetVersion:a}}function nr(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||rr(n)}function rr(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function ir(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function ar(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 or(e,t,n,r,i,a){let o=r?.Version??i,s=r?.Time??a,c=r?.path??e;return[{name:e,old:n,new:K(o),Time:s,...c!==e&&{newPath:c},sameMajorNew:K(i),sameMajorTime:a},t,null,e]}function sr(e){let t={},n={},r={},i={},a=new Set,o=[],s=e.split(/\r?\n/),c=!1,l=!1,u=!1;for(let e of s){let i=e.trim();if(/^require\s*\(/.test(i)){c=!0;continue}if(/^replace\s*\(/.test(i)){l=!0;continue}if(/^tool\s*\(/.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(i.startsWith(`//`))continue;if(u){i&&!i.startsWith(`//`)&&o.push(i);continue}let s=/^tool\s+(\S+)/.exec(i);if(s){o.push(s[1]);continue}let d=i.includes(`// indirect`);if(l||/^replace\s+/.test(i)){let e=tr(i,l);e&&(r[e.targetModule]=e.targetVersion,a.add(e.origModule));continue}let f=c?/^(\S+)\s+(v\S+)/.exec(i):/^require\s+(\S+)\s+(v\S+)/.exec(i);f&&((d?n:t)[f[1]]=f[2])}for(let e of a)delete t[e],delete n[e];if(o.length){let e=[...Object.keys(n),...Object.keys(t)];for(let r of o){let a=``;for(let t of e)(r===t||r.startsWith(`${t}/`))&&t.length>a.length&&(a=t);let o=n[a]?n:t[a]?t:null;o&&(i[a]=o[a],delete o[a])}}return{deps:t,indirect:n,replace:r,tool:i}}async function cr(e,n,r,i,a){let o=Qn(e),s=async(e,n)=>{try{let{stdout:r}=await(await Kn())(`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=nr(e,n,r),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s($n(e,o+1),a.goProbeTimeout)]);return l?or(e,n,r,await ar(o,u,t=>s($n(e,t),a.goProbeTimeout)),l.Version,l.Time):ir(e,r,n)}async function lr(e,t,n,r,i,a){if(Yn(e,a))return cr(e,t,n,r,i);let o=Xn(e),s=Qn(e),c=async t=>{let n=$n(e,t);try{let e=await i.doFetch(`${i.goProxyUrl}/${Xn(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=nr(e,t,n),[u,d]=await Promise.all([q(i,`${i.goProxyUrl}/${o}/@latest`,{headers:{"accept-encoding":`gzip, deflate, br`}}),l?null:c(s+1)]);if(!u.ok)return ir(e,n,t);let f,p;try{let e=await u.json();f=e.Version,p=e.Time}catch{return ir(e,n,t)}return or(e,t,n,await ar(s,d,c),f,p)}function ur(e,t){if(!e.includes(`replace`))return e;let n=W(t);return e=e.replace(RegExp(`^replace\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(RegExp(`^\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(/^replace\s*\(\s*\)\s*\n/gm,``),e}function dr(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+${W(s)}\\s+)v${W(c)}`,`g`),`$1v${l}`);continue}if(o===`indirect`){n=n.replace(RegExp(`(${W(s)}) +v${W(c)}`,`g`),`$1 v${l}`);continue}let u=er(s,l);u===s?n=n.replace(RegExp(`(${W(s)}) +v${W(c)}`,`g`),`$1 v${l}`):(n=n.replace(RegExp(`${W(s)} +v${W(c)}`,`g`),`${u} v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)${W(s)}(/\\S+)?\\s*$`,`gm`),`$1${u}$2`)),r[s]=u),o!==`tool`&&(n=ur(n,s))}return[n,r]}function fr(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(W).join(`|`)})(/|")`,`g`),s=p(`**/*.go`,{cwd:e});for(let t of s){let r=c(e,t),a=h(r,`utf8`),s=a.replace(o,(e,t,n)=>`"${i.get(t)}${n}`);s!==a&&n(r,s)}}function pr(e){let t=[],n={},r=e.split(/\r?\n/),i=!1,a=!1;for(let e of r){let r=e.trim();if(/^use\s*\(/.test(r)){i=!0;continue}if(/^replace\s*\(/.test(r)){a=!0;continue}if(r===`)`){i=!1,a=!1;continue}if(i){let e=/^(\S+)/.exec(r);e&&!r.startsWith(`//`)&&t.push(e[1]);continue}let o=/^use\s+(\S+)/.exec(r);if(o){t.push(o[1]);continue}if(a||/^replace\s+/.test(r)){let e=tr(r,a);e&&(n[e.targetModule]=e.targetVersion)}}return{use:t,replace:n}}function mr(e){let t=`https://${hr(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[,e,i,...a]=r;return n.pathname=`/${e}/${i}/${Wt(t)}/${a.join(`/`)}`,n.href}else return t}function hr(e){return Zn.test(e)?s(e):e}function gr(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const _r=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function vr(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:Rt.test(o)}}function yr(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function br(e,t,n,r,i){let a=`${e}/repos/${t}/${n}/git/commits/${r}`;if(!i.noCache){let e=await rt(a);if(e)return e.body}try{let e=await Ft(a,i);if(!e.ok)return``;let t=await e.json(),n=t?.committer?.date||t?.author?.date||``;return n&&!i.noCache&&ot(a,`immutable`,n),n}catch{return``}}function xr(e,t){return Ut(F(K(e))?.version??K(e),t)}function Sr(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?(?:https?:\\/\\/)?)${W(e)}@${W(r)}(?![\\w.-])`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}const Cr=[`.github`,`.gitea`,`.forgejo`],wr=RegExp(`(?:^|/)(?:${Cr.map(W).join(`|`)})\\/(?:workflows\\/[^/]+|(?:[^/]+\\/)*action)\\.ya?ml$`);function Tr(e){return wr.test(e.replace(/\\/g,`/`))}function Er(e){let t=new Set;try{for(let n of g(c(e,`workflows`)))/\.ya?ml$/.test(n)&&t.add(u(c(e,`workflows`,n)))}catch{}try{for(let n of g(e,{recursive:!0,withFileTypes:!0}))!n.isFile()||!/^action\.ya?ml$/.test(n.name)||t.add(u(c(n.parentPath,n.name)))}catch{}return Array.from(t)}const Dr=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,Or=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,kr=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,Ar=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,jr=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function Mr(e){let t=e.split(`/`);return t.length===1?{registry:null,namespace:`library`,repo:t[0]}:t.length===2&&!t[0].includes(`.`)&&!t[0].includes(`:`)?{registry:null,namespace:t[0],repo:t[1]}:{registry:t[0],namespace:t.slice(1,-1).join(`/`),repo:t[t.length-1]}}function Nr(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||!Dr.test(r))return null;let{registry:i,namespace:a,repo:o}=Mr(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function Pr(e){let t=Dr.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Fr(e,t){let n=Pr(t);return n?Ut(e,n.version,n.suffix):t}function Ir(e,t){let n=[];for(let r of e.matchAll(t)){let e=Nr(r[1]);e&&n.push({ref:e,match:r[1]})}return n}const Lr=new WeakMap;function Rr(e,t,n){let r=Lr.get(n);r||Lr.set(n,r=new Map);let i=`${e}/${t}`,a=r.get(i);return a||r.set(i,a=zr(e,t,n)),a}async function zr(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 yt(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 Br(e,t,n,r){let i=`${r.dockerApiUrl}/v2/repositories/${e}/${t}/tags/${n}`;try{let e=await yt(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 Vr(e,t,n){let{registry:r,namespace:i,repo:a}=Mr(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await Rr(i,a,n),name:e},t,null,e]}function Hr(e,t,n,r,i,a){let o=Pr(t);if(!o)return null;let s=ge(K(o.version))?.version;if(!s)return null;let c=s,l=``,u=``;for(let[t,s]of Object.entries(e)){let e=Pr(t);if(!e||e.suffix!==o.suffix)continue;let d=ge(K(e.version))?.version;if(!d||a&&!V(d,a)||!G(s,r,i))continue;if(d===c){l&&Date.parse(s)>Date.parse(u)&&(l=t,u=s);continue}let f=L(c,d);!f||!n.has(f)||R(d,c)&&(c=d,l=t,u=s)}if(!l||c===s)return null;let d=Fr(c,t);return d===t?null:{newTag:d,hubTag:l,date:u}}function Ur(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(W(t),W(a)),`$1${t}:${i.new}`)}return r}function Wr(e,t){return Ur(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}(?![\\w.-])`,`g`)])}function Gr(e,t){return Ur(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}(?![\\w.-])`,`g`)])}function Kr(e,t){return Ur(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}(?![\\w.-])`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}(?![\\w.-])`,`g`)])}const qr=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function Jr(e){return/^docker-.+\.ya?ml$/.test(e)}function Yr(e){return/^Dockerfile(\..+)?$/.test(e)}function Xr(e){return Yr(e)||Jr(e)}function Zr(e){return Yr(e)?Or:kr}function Qr(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const $r=[`Makefile`,`makefile`,`GNUmakefile`];function ei(e){return $r.includes(e)||e.endsWith(`.mk`)}const ti=String.raw`^\s*[A-Za-z_][\w.]*\s*(?:::=|:=|\?=|\+=|=)\s*`,ni=RegExp(`${ti}${String.raw`(\S+)@(v\d\S*)\s*$`}`),ri=/^[^/\s]+\.[^/\s]+\//;function ii(e){let t=e.indexOf(`#`);return t===-1?e:e.slice(0,t)}function ai(e){let t=[];for(let n of e.split(/\r?\n/)){let e=ii(n),r=ni.exec(e);if(!r)continue;let[,i,a]=r;ri.test(i)&&t.push({installPath:i,version:a})}return t}const oi=RegExp(`${ti}${String.raw`(\S+)\s*$`}`),si=/@(sha256:[0-9a-f]{64})$/;function ci(e,t,n){return`${e}:${t}${n?`@${n}`:``}`}function li(e){let t=null,n=e,r=si.exec(e);r&&(t=r[1],n=e.slice(0,r.index));let i=Nr(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=oi.exec(ii(n));if(!e)continue;let r=li(e[1]);r&&t.push(r)}return t}const di=/\/v(?:[2-9]|[1-9]\d+)(?=\/|$)/;function fi(e){let t=di.exec(e);return t?e.slice(0,t.index+t[0].length):null}function pi(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 mi(e,t){let n=fi(e);if(n)return n;let r=pi(e);return(await Promise.all(r.map(async e=>{try{return(await t.doFetch(`${t.goProxyUrl}/${Xn(e)}/@latest`,{signal:AbortSignal.timeout(t.goProbeTimeout)})).ok?e:null}catch{return null}}))).find(Boolean)??null}async function hi(e,t,n,r,i,a){let o=await mi(e,r);if(!o)return null;let[s]=await lr(o,`tool`,K(t),n,r,i),c=Dt(s,{mode:`go`,range:K(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:H,isGoPseudoVersion:rr});if(!c)return null;let l=s.newPath??er(o,c),u=`${l}${e.slice(o.length)}`,d=Ut(c,t);return u===e&&d===t?null:{newInstallPath:u,newVersion:d,date:s.Time??``,info:mr(l)}}async function gi(e,t,n){let{namespace:r,repo:i,fullImage:a,tag:o}=e.ref,[s]=await Vr(a,`docker`,t),c=Hr(s.tags,o,n.semvers,n.cooldownDays,n.now,n.pinnedRange);if(!c)return null;let l=null;return e.digest&&(l=await Br(r,i,c.hubTag,t),!l)?null:{newTag:c.newTag,newDigest:l,date:c.date,info:Qr(e.ref)}}function _i(e,t){for(let{oldSpec:n,newSpec:r}of t){let t=RegExp(`^([^#\\n]*?)${W(n)}(?=[\\s#]|$)`,`gm`);e=e.replace(t,`$1${r}`)}return e}const vi=new Map,yi=e=>({versions:(e.versions||[]).filter(e=>!e.yanked).map(e=>({num:e.num,created_at:e.created_at}))});async function bi(e,t,n){let r=`${ft(n.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`,i=vi.get(r);return i||(i=(async()=>{try{let t=await yt(r,n,pt(),yi);`body`in t||Ht(t.res,r,e,n.cratesIoUrl);let i;try{i=JSON.parse(t.body)}catch{throw Error(`Invalid JSON from ${r}`)}let a=(i.versions||[]).filter(e=>!e.yanked),o={},s={};for(let e of a)e.num&&(o[e.num]={},s[e.num]=e.created_at||``);return{name:e,versions:o,time:s,"dist-tags":{latest:a[0]?.num??``}}}catch(e){throw vi.delete(r),e}})(),vi.set(r,i)),[await i,t,null,e]}function xi(e){let t=new Map;for(let n of e.split(`[[package]]`)){let e=/\bname\s*=\s*"([^"]+)"/.exec(n),r=/\bversion\s*=\s*"([^"]+)"/.exec(n);if(!e||!r)continue;let i=e[1],a=r[1];if(!me(a))continue;let o=t.get(i);o||t.set(i,o=[]),o.push(a)}return t}const Si=/^\d/;function Ci(e,t){return Si.test(e)?Ln(X(`^${e}`),t,`^${e}`).replace(/^\^/,``):Ln(X(e),t,e)}function wi(e,t,n){let r=e.get(t);if(!r)return;let i=Si.test(n)?`^${n}`:n,a;for(let e of r)V(e,i)&&(!a||R(e,a))&&(a=e);return a}const Ti=He.map(W).join(`|`);function Ei(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=W(t),s=W(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(`(\\[(?:${Ti})\\.${o}\\](?:(?!\\n\\[)[\\s\\S])*?version\\s*=\\s*["'])${s}(["'])`,`g`),`$1${a}$2`)}return n}function Di(e){return e.split(`|`)[0]}function Oi(e,t){let n=t===`.`?``:`|${t}`,r={};for(let[t,i]of Object.entries(e)){let[e,a]=t.split(`\0`),o=Di(e);e===`${o}${n}`&&(r[`${o}${a}`]=i)}return r}const ki=/[*?{[]/;async function Ai(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=>p(e,{cwd:t})).map(e=>e.replace(/\\/g,`/`))),s=new Set,d=[];for(let e of i){let r=ki.test(e)?p(e,{cwd:t}).map(e=>u(c(t,e))):[u(c(t,e))];for(let e of r){let r=l(t,e).replace(/\\/g,`/`);if(o.has(r))continue;let i=c(e,n);s.has(i)||(s.add(i),d.push({absPath:i,memberPath:`./${r}`}))}}return(await U(d,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 ji(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 Mi={"pnpm-workspace.yaml":`npm`,"package.json":`npm`,"pyproject.toml":`pypi`,"go.work":`go`,"go.mod":`go`,"Cargo.toml":`cargo`},Ni=new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`,`make`]),Pi=(e,t)=>typeof e==`string`?ft(e):typeof t==`function`?t():t;function Fi(e,t){let n=new Map,r=new Set(e),i=t;for(;r.size;){for(let e of r){let t=c(i,e);try{d(t),n.set(e,t),r.delete(e)}catch{}}let e=s(i);if(e===i)break;i=e}return n}async function Ii(e,t){let n=await U(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 Z(e,t){t&&(e.date=t,e.age=Fe(t,{noAffix:!0}))}function Li(e){let t=0;for(let n of Object.values(e))t+=Object.keys(n).length;return t}function Ri(e){console.error(`${Ge()} ${e}`)}function Q(e,t,n,r,i){if(i===`engines`&&ze.includes(e)||t===`pypi`&&e===`python`)return!1;if(!n.size&&!r.size)return!0;let a=t===`go`?hr(e):e;for(let t of r)if(t.test(e)||t.test(a))return!1;for(let t of n)if(t.test(e)||t.test(a))return!0;return!n.size}function zi(t){let n=new Set;if(t)for(let e of t){let t;try{t=m(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}if(t.isFile())n.add(u(e));else if(t.isDirectory()){for(let t of Object.keys(Mi)){let r=c(e,t),i=null;try{i=m(r)}catch{}i?.isFile()&&n.add(u(r))}try{for(let t of g(e,{withFileTypes:!0}))t.isFile()&&(Xr(t.name)||ei(t.name))&&n.add(u(c(e,t.name)))}catch{}let t=u(e).replace(/\\/g,`/`),r=Cr.some(e=>t.endsWith(`/${e}/workflows`)),i=!r&&Cr.some(e=>t.endsWith(`/${e}`)),a=r?[s(t)]:i?[t]:Cr.map(e=>c(t,e));for(let e of a)for(let t of Er(e))n.add(t)}else throw Error(`${e} is neither a file nor directory`)}else{let t=new Set(Cr),r=[...Object.keys(Mi),...qr,...$r,...Cr];for(let[i,a]of Fi(r,e()))if(t.has(i))for(let e of Er(a))n.add(e);else n.add(u(a));try{for(let t of g(e(),{withFileTypes:!0})){let r=Xr(t.name)&&!qr.includes(t.name),i=ei(t.name)&&!$r.includes(t.name);t.isFile()&&(r||i)&&n.add(u(c(e(),t.name)))}}catch{}}for(let e of Array.from(n))o(e)===`go.work`&&n.delete(c(s(e),`go.mod`));for(let e of Array.from(n))o(e)===`pnpm-workspace.yaml`&&n.delete(c(s(e),`package.json`));return n}function $(e,t){r===`win32`&&v(e,0),y(e,t,r===`win32`?{flag:`r+`}:void 0)}function Bi(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`&&!Mn(i.oldOrig)&&(i.old=n===`go`?gr(i.oldOrig):i.oldOrig),n===`go`?i.new=gr(i.new):n===`actions`&&(i.old=K(i.old),i.new=K(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 Vi=!1;async function Hi(t={}){if(!Vi){let{enableDnsCache:e}=await import(`./dns.js`);e(),Vi=!0}let n={...t};typeof n.timeout==`number`&&(n.timeout=Ye(n.timeout,`timeout`));let r=n.sockets??25,l=n.timeout??0,d=Pi(t.forgeapi,`https://api.github.com`),f=Pi(t.pypiapi,`https://pypi.org`),p=Pi(t.jsrapi,`https://jsr.io`),m=Pi(t.goproxy,qn),h=Pi(t.cargoapi,`https://crates.io`),g=Pi(t.dockerapi,`https://hub.docker.com`),_=Jn(),v=n.color||!n.noColor&&i.isTTY,y=e=>v?t=>a(e,String(t)):String,b=y(`magenta`),x=y(`green`),C=y(`red`),w={fetchTimeout:l||5e3,goProbeTimeout:l?Math.max(1,Math.floor(l/2)):dt,forgeApiUrl:d,pypiApiUrl:f,jsrApiUrl:p,goProxyUrl:m,cratesIoUrl:h,dockerApiUrl:g,doFetch:async(e,t)=>{n.verbose&&Ri(`${b(t?.method||`GET`)} ${e}`);let r=await gt(e,t);return n.verbose&&Ri(`${r.ok?x(r.status):C(r.status)} ${e}`),r},noCache:!!n.noCache},ee=$t(n.greatest),te=$t(n.prerelease),T=$t(n.release),ne=$t(n.patch),re=$t(n.minor),ie=$t(n.allowDowngrade),D=n.modes?.length?new Set(n.modes):Ni,ae=(n.overrides??[]).map(e=>({include:e.include?.length?Y(e.include):void 0,exclude:e.exclude?.length?Y(e.exclude):void 0,greatest:e.greatest,prerelease:e.prerelease,release:e.release,patch:e.patch,minor:e.minor,allowDowngrade:e.allowDowngrade,cooldownDays:e.cooldown===void 0?void 0:Je(String(e.cooldown))})),oe=(e,t)=>e.include&&!H(t,e.include)?!1:!e.exclude||!H(t,e.exclude),se=ae.some(e=>e.cooldownDays);D.has(`actions`)&&Mt();let ce=new Map;function O(e){let t=ce.get(e);if(!t){let n=H(e,ee),r=H(e,te),i=H(e,T),a=H(e,ne),o=H(e,re),s=H(e,ie),c;for(let t of ae)oe(t,e)&&(t.greatest!==void 0&&(n=t.greatest),t.prerelease!==void 0&&(r=t.prerelease),t.release!==void 0&&(i=t.release),t.patch!==void 0&&(a=t.patch),t.minor!==void 0&&(o=t.minor),t.allowDowngrade!==void 0&&(s=t.allowDowngrade),t.cooldownDays!==void 0&&(c=t.cooldownDays));let l=new Set(a?[`patch`]:o?[`patch`,`minor`]:[`patch`,`minor`,`major`]);t={useGreatest:n,usePre:r,useRel:i,semvers:l,allowDowngrade:s,cooldownOverride:c},ce.set(e,t)}return t}let le=Y(n.include??[]),ue=Y(n.exclude??[]),de=n.pin??{},k={},A={},j={},M=Date.now(),N=e=>{let t=n.cooldown??e;return t?Je(String(t)):0},fe=e(),pe=e=>e.replace(`${fe}/`,``).replace(`${fe}\\`,``),P=0,F=(e,t,n,r,i,a)=>{k[e][`${t}${n}${r}`]={old:i,oldOrig:a}},he=zi(n.files?.length?new Set(n.files):!1),I=await Ii(Array.from(he).filter(e=>{if(Tr(e))return D.has(`actions`)||D.has(`docker`);let t=o(e);if(Xr(t))return D.has(`docker`);if(ei(t))return D.has(`make`);let n=Mi[t];return!!n&&D.has(n)}),r),ge={},L={},_e={},ve=[],R=null,ye=[],be=!1,xe=[],Se=!1,z=[],Ce=[],we=[],Te={},Ee={noCache:n.noCache,timeout:n.timeout||5e3};async function De(e){let t=await nn(e,Ee);return{modeConfig:t,modeInclude:t.include?.length?Y([...n.include??[],...t.include]):le,modeExclude:t.exclude?.length?Y([...n.exclude??[],...t.exclude]):ue,pin:{...t.pin,...de}}}function B(e,t){return n.types?.length?n.types:t?.types?.length?t.types:e===`npm`?Re:e===`pypi`?Be:e===`go`?n.indirect?Ve:Ve.filter(e=>e!==`indirect`):e===`cargo`?He:[]}function Oe(e,t,n,r){k.docker??={};for(let i of n)for(let{ref:n}of Ir(e,i)){if(!Q(n.fullImage,`docker`,r.include,r.exclude,`docker`))continue;let e=`${t}${n.fullImage}`;if(k.docker[e])continue;let i=Pr(n.tag);i&&(k.docker[e]={old:i.version,oldOrig:n.tag},Ce.push({key:e,fullImage:n.fullImage,ref:n,filePin:r.pin,fileCooldownDays:r.cooldownDays}))}}async function ke(e){let t=await nn(e,Ee);return{include:t.include?.length?Y([...n.include??[],...t.include]):le,exclude:t.exclude?.length?Y([...n.exclude??[],...t.exclude]):ue,pin:t.pin??{},cooldownDays:N(t.cooldown)}}let V=new Set,je=new Map;for(let e of he){let t=o(e);if(t===`go.work`)V.add(`go`);else if(t===`pnpm-workspace.yaml`)V.add(`npm`);else if(t===`Cargo.toml`){let t=I.get(e);if(!t)continue;try{let n=E(t);je.set(e,n);let r=n.workspace?.members;Array.isArray(r)&&r.length&&V.add(`cargo`)}catch{}}}for(let e of he){if(Tr(e)){let t=D.has(`actions`),n=D.has(`docker`);if(!t&&!n)continue;let r=I.get(e),i=pe(e),a=await ke(s(e));if(ge[i]={absPath:e,content:r},t){k.actions??={};let e=Array.from(r.matchAll(_r),e=>vr(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}`;k.actions[e]||(k.actions[e]={old:t.ref},z.push({...t,key:e,apiUrl:yr(t.host,d),filePin:a.pin,fileCooldownDays:a.cooldownDays}))}}n&&(L[i]={absPath:e,content:r,fileType:`workflow`},Oe(r,i,[kr,Ar,jr],a));continue}let t=o(e);if(Xr(t)){if(!D.has(`docker`))continue;let n=I.get(e),r=pe(e),i=Yr(t)?`dockerfile`:`compose`,a=await ke(s(e));L[r]={absPath:e,content:n,fileType:i},Oe(n,r,[Zr(t)],a);continue}if(ei(t)){if(!D.has(`make`))continue;let t=I.get(e),n=pe(e),r=await ke(s(e));_e[n]={absPath:e,content:t},k.make??={};let i={projectDir:s(e),filePin:r.pin,fileCooldownDays:r.cooldownDays};for(let{installPath:e,version:a}of ai(t)){if(!Q(e,`make`,r.include,r.exclude,`make`))continue;let t=`${n}${e}`;k.make[t]||(k.make[t]={old:K(a),oldOrig:a},we.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`))continue;let t=`${n}${e.writtenImage}`;if(k.make[t])continue;let a=Pr(e.ref.tag);if(!a)continue;let o=ci(e.writtenImage,e.ref.tag,e.digest);k.make[t]={old:a.version,oldOrig:e.ref.tag},we.push({kind:`docker`,key:t,name:e.writtenImage,oldSpec:o,image:e,...i})}continue}let n=Mi[t];if(!D.has(n))continue;if(t===`go.work`){k[n]??={};let t=s(u(e)),i=I.get(e);R={file:e,content:i};let a=pr(i),[o,l]=await Promise.all([De(t),U(a.use,async e=>{let n=u(c(t,e,`go.mod`));try{return{usePath:e,modPath:n,content:await S(n,`utf8`)}}catch{return null}},{concurrency:r})]),{modeConfig:d,modeInclude:f,modeExclude:p,pin:m}=o,h=B(n,d);Te[n]={modeConfig:d,projectDir:t,pin:m};for(let e of l){if(!e)continue;let{usePath:t,modPath:r,content:i}=e,a=sr(i),o=s(r);ve.push({absPath:r,content:i,projectDir:o,usePath:t});let c=t===`.`?``:`|${t}`;for(let e of h){let t=a[e]||{};for(let[r,i]of Object.entries(t))Q(r,n,f,p,e)&&F(n,e,c,r,gr(i),K(i))}}for(let[e,t]of Object.entries(a.replace))Q(e,n,f,p,`replace`)&&F(n,`replace`,``,e,gr(t),K(t));P+=Object.keys(k[n]).length;continue}if(t===`go.mod`&&ve.some(t=>t.absPath===u(e))||t===`package.json`&&xe.some(t=>t.absPath===u(e)))continue;if(t===`Cargo.toml`){k[n]??={};let t=Object.keys(k[n]).length,i=I.get(e),a=je.get(e)??E(i),o=s(u(e)),c=Fi([`Cargo.lock`],o).get(`Cargo.lock`),l=a.workspace?.members,d=Array.isArray(l)&&l.length,[f,p,m]=await Promise.all([De(o),c?S(c,`utf8`):Promise.resolve(null),d?Ai(l,o,`Cargo.toml`,r):Promise.resolve([])]),{modeConfig:h,modeInclude:g,modeExclude:_,pin:v}=f,y=B(n,h),b=p?xi(p):new Map,x=(e,t)=>{for(let r of y){let i=Ue(e,r)||{};if(!(typeof i!=`object`||Array.isArray(i))){for(let[e,a]of Object.entries(i))if(Q(e,n,g,_,r))if(typeof a==`object`&&a&&`version`in a&&!(`git`in a)&&!(`path`in a)){let i=a.version;Ae(i)&&F(n,r,t,e,wi(b,e,i)??X(i),i)}else typeof a==`string`&&Ae(a)&&F(n,r,t,e,wi(b,e,a)??X(a),a)}}};if(d){be=!0,Te[n]={modeConfig:h,projectDir:o,pin:v},x(a,``),ye.push({absPath:u(e),content:i,memberPath:`.`});for(let e of m){ye.push(e);try{x(E(e.content),`|${e.memberPath}`)}catch(t){throw Error(`Error parsing ${e.absPath}: ${t.message}`)}}}else{let t=j[n]??=[],r=!t.length&&!V.has(n),s=r?`.`:pe(e);t.push({absPath:u(e),content:i,memberPath:s,projectDir:o,modeConfig:h,pin:v,modeCooldownDays:N(h.cooldown)}),r&&(Te[n]={modeConfig:h,projectDir:o,pin:v}),x(a,s===`.`?``:`|${s}`)}P+=Object.keys(k[n]).length-t;continue}if(t===`pnpm-workspace.yaml`){k[n]??={};let t=s(u(e)),i=I.get(e);Se=!0;let a=ji(i),o=c(t,`package.json`),[l,d,f]=await Promise.all([De(t),Xe(S(o,`utf8`)),Ai(a,t,`package.json`,r)]),{modeConfig:p,modeInclude:m,modeExclude:h,pin:g}=l,_=B(n,p);Te[n]={modeConfig:p,projectDir:t,pin:g};let v=(e,t)=>{for(let r of _){let i=e[r]||{};if(typeof i==`string`){let[e,a]=i.split(`@`);Q(e,n,m,h,r)&&F(n,r,t,e,X(a),a)}else if(typeof i==`object`&&!Array.isArray(i))for(let[e,a]of Object.entries(i))Q(e,n,m,h,r)&&(Mn(a)?F(n,r,t,e,Pn(a,e).version,a):Ae(a)?F(n,r,t,e,X(a),a):Nn(a)?F(n,r,t,e,`0.0.0`,a):A[`${r}${t}${e}`]={old:a})}};if(d!==null){let e;try{e=JSON.parse(d)}catch(e){throw Error(`Error parsing ${o}: ${e.message}`)}xe.push({absPath:u(o),content:d,memberPath:`.`}),v(e,``)}for(let e of f){let t;try{t=JSON.parse(e.content)}catch(t){throw Error(`Error parsing ${e.absPath}: ${t.message}`)}xe.push(e),v(t,`|${e.memberPath}`)}P+=Object.keys(k[n]).length+Object.keys(A).length;continue}k[n]??={};let i=s(u(e)),{modeConfig:a,modeInclude:l,modeExclude:f,pin:p}=await De(i),m=B(n,a),h=j[n]??=[],g=!h.length&&!V.has(n),_=g?`.`:pe(e),v=_===`.`?``:`|${_}`,y=I.get(e);h.push({absPath:u(e),content:y,memberPath:_,projectDir:i,modeConfig:a,pin:p,modeCooldownDays:N(a.cooldown)});let b={};try{n===`npm`?b=JSON.parse(y):n===`pypi`?b=E(y):n===`go`&&(b=sr(y))}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}let x=Object.keys(k[n]).length,C=Object.keys(A).length;for(let e of m){let t;if(t=n===`npm`||n===`go`?b[e]||{}:Ue(b,e)||{},Array.isArray(t)&&n===`pypi`)for(let{name:r,version:i}of Le(t))Q(r,n,l,f,e)&&F(n,e,v,r,X(i),i);else if(typeof t==`string`){let[r,i]=t.split(`@`);Q(r,n,l,f,e)&&F(n,e,v,r,X(i),i)}else for(let[r,i]of Object.entries(t))Q(r,n,l,f,e)&&(n===`npm`&&Mn(i)?F(n,e,v,r,Pn(i,r).version,i):n!==`go`&&Ae(i)?F(n,e,v,r,X(i),i):n===`npm`&&Nn(i)?F(n,e,v,r,`0.0.0`,i):n===`npm`?A[`${e}${v}${r}`]={old:i}:n===`go`&&F(n,e,v,r,gr(i),K(i)))}P+=Object.keys(k[n]).length-x+(Object.keys(A).length-C),g&&(Te[n]={modeConfig:a,projectDir:i,pin:p})}if(k.actions&&(P+=Object.keys(k.actions).length),k.docker&&(P+=Object.keys(k.docker).length),k.make&&(P+=Object.keys(k.make).length),P===0)return{results:{},message:`No dependencies found, nothing to do.`};let Me=[],Ne={registry:n.registry};for(let[e,t]of Object.entries(Te)){let n=k[e]&&Object.keys(k[e]).length>0,i=e===`npm`&&Object.keys(A).length>0;if(!n&&!i)continue;let{modeConfig:a,projectDir:o,pin:s}=t,c=N(a.cooldown);Me.push((async()=>{let t=new Map;for(let n of j[e]??[])n.memberPath!==`.`&&t.set(`|${n.memberPath}`,n);let n={modeConfig:a,projectDir:o,pin:s,modeCooldownDays:c},i=e=>{let r=e.slice(Di(e).length);return r&&t.get(r)||n},l=new Map,u=e=>{for(let[t,{date:n}]of Object.entries(e)){if(!n)continue;let{modeCooldownDays:r}=i(t.split(`\0`)[0]);if(!r&&!se)continue;let[,a]=t.split(`\0`),o=O(a).cooldownOverride??r;o&&!G(n,o,M)&&delete e[t]}};if(await U(Object.keys(k[e]),async t=>{let[n,r]=t.split(`\0`),a=Di(n),{modeConfig:o,projectDir:s,pin:c,modeCooldownDays:u}=i(n),d=k[e][t],f=null;if(e===`npm`){let{oldOrig:n}=d;if(n&&Mn(n))f=await Fn(r,a,w);else if(n&&Nn(n))try{f=await An(r,a,o,Ne,w)}catch{delete k[e][t];return}else f=await An(r,a,o,Ne,w)}else f=e===`go`?await lr(r,a,d.oldOrig||d.old,s,w,_):e===`cargo`?await bi(r,a,w):await Hn(r,a,w);if(!f)return;let[p,,m]=f;if(p.error)throw Error(p.error);let{useGreatest:h,usePre:g,useRel:v,semvers:y,allowDowngrade:b,cooldownOverride:x}=O(p.name),S=d.old,C=d.oldOrig,ee=c[r],te=x??u,T=Dt(p,{usePre:g,useRel:v,useGreatest:h,semvers:y,range:S,mode:e,pinnedRange:ee,cooldownDays:te||void 0,now:te?M:void 0},{allowDowngrade:b,matchesAny:H,isGoPseudoVersion:rr}),E=``;if([`go`,`pypi`].includes(e)&&T)E=T;else if(e===`cargo`&&T&&C)E=Ci(C,T);else if(T)if(C&&Nn(C))E=String(vn()[`save-exact`])===`true`?T:`^${T}`;else if(C&&Mn(C)){let e=/^(npm:@jsr\/[^@]+@|jsr:@[^@]+@)(.+)$/.exec(C);e?E=`${e[1]}${T}`:C.startsWith(`jsr:`)&&(E=`jsr:${T}`)}else E=Ln(S,T,C);if(!T||T===S||C&&C===E){delete k[e][t];return}let ne=``;e===`pypi`&&p.releases?.[T]?.[0]?.upload_time_iso_8601?ne=p.releases[T][0].upload_time_iso_8601:e===`go`&&p.Time?ne=p.Time:e===`cargo`&&p.time?.[T]&&(ne=p.time[T]),d.new=E,C&&Mn(C)&&(d.newPrint=T),e===`npm`?l.set(t,{name:r,promise:jn(p.name,T,o,Ne,w)}):e===`pypi`?d.info=Gt(p,m,p.info.name):e===`go`?d.info=mr(p.newPath||r):e===`cargo`&&(d.info=`https://crates.io/crates/${r}`),ne&&Z(d,ne)},{concurrency:r}),await Promise.all(Array.from(l,async([t,{name:n,promise:r}])=>{let i=await r,a=k[e][t];a&&(a.info=Gt({repository:i.repository,homepage:i.homepage},null,n),i.date&&Z(a,i.date))})),e===`npm`&&Object.keys(A).length){let t=(await U(Object.entries(A),([e,t])=>Bn(e,t,w),{concurrency:r})).filter(e=>e!==null);for(let n of t){let{key:t,newRange:r,user:i,repo:a,oldRef:o,newRef:s,newDate:c}=n;k[e][t]={old:A[t].old,new:r,oldPrint:Rt.test(o)?o.substring(0,7):o,newPrint:Rt.test(s)?s.substring(0,7):s,info:`https://github.com/${i}/${a}`},c&&Z(k[e][t],c)}}u(k[e])})())}z.length&&Me.push((async()=>{let e=new Map;for(let t of z){let n=`${t.apiUrl}/${t.owner}/${t.repo}`,r=e.get(n);r||e.set(n,r={apiUrl:t.apiUrl,owner:t.owner,repo:t.repo,infos:[]}),r.infos.push(t)}await U(e.values(),async({apiUrl:e,owner:t,repo:n,infos:i})=>{let a=await Vt(e,t,n,w),o=[],s=new Map,c=new Map,l=new Map;for(let e of a){c.set(e.name,e);let t=K(e.name);me(t)&&(o.push(t),s.has(t)||s.set(t,e.name)),e.commitSha&&l.set(e.commitSha,e.name)}let u=new Map;async function d(r){if(u.has(r))return u.get(r);let i=await br(e,t,n,r,w);return u.set(r,i),i}async function f(e){let t=new Set;for(let n=0;n<20;n++){let n=Et({},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 d(i):``;if(G(a,e.cooldownDays,e.now))return{version:n,tag:r,commitSha:i,date:a};t.add(n)}return null}await U(i,async({key:e,host:r,ref:i,name:a,isHash:o,filePin:s,fileCooldownDays:u})=>{let p=k.actions[e],m=`https://${r||`github.com`}/${t}/${n}`,h=de[a]??s[a];if(o){let{usePre:t,useRel:n,cooldownOverride:r}=O(a),o=r??u,s=await f({range:`0.0.0`,semvers:new Set([`patch`,`minor`,`major`]),usePre:t,useRel:n,useGreatest:!0,pinnedRange:h,cooldownDays:o||void 0,now:o?M:void 0});if(!s){delete k.actions[e];return}let{tag:c,commitSha:d,date:g}=s;if(!d||d===i||d.startsWith(i)||i.startsWith(d)){delete k.actions[e];return}let _=l.get(i);if(!_){for(let[e,t]of l)if(e.startsWith(i)){_=t;break}}p.old=i,p.new=d.substring(0,i.length),p.oldPrint=_||i.substring(0,7),p.newPrint=c,p.info=m,g&&Z(p,g)}else{let t=J(K(i));if(!t){delete k.actions[e];return}let{usePre:n,useRel:r,semvers:o,cooldownOverride:s}=O(a),l=s??u,g=await f({range:t,semvers:o,usePre:n,useRel:r,useGreatest:!0,pinnedRange:h,cooldownDays:l||void 0,now:l?M:void 0});if(!g){delete k.actions[e];return}let{tag:_,commitSha:v,date:y}=g,b=xr(_,i);if(b===i){delete k.actions[e];return}if(p.new=c.has(b)?b:_,p.info=m,v&&y)Z(p,y);else if(v){let e=await d(v);e&&Z(p,e)}}},{concurrency:r})},{concurrency:r}),Object.keys(k.actions).length||delete k.actions})()),Ce.length&&Me.push((async()=>{let e=new Map;for(let t of Ce){let n=e.get(t.fullImage);n||e.set(t.fullImage,n=[]),n.push(t)}await U(e.entries(),async([e,t])=>{let n;try{let[t]=await Vr(e,`docker`,w);n=t}catch{for(let e of t)delete k.docker[e.key];return}for(let e of t){let t=k.docker[e.key],r=t.oldOrig||t.old,{semvers:i,cooldownOverride:a}=O(e.fullImage),o=de[e.fullImage]??e.filePin[e.fullImage],s=a??e.fileCooldownDays,c=Hr(n.tags,r,i,s||void 0,s?M:void 0,o);if(!c){delete k.docker[e.key];continue}t.new=c.newTag,t.info=Qr(e.ref),Z(t,c.date)}},{concurrency:r}),Object.keys(k.docker).length||delete k.docker})()),we.length&&Me.push((async()=>{await U(we,async e=>{let{useGreatest:t,usePre:n,useRel:r,semvers:i,allowDowngrade:a,cooldownOverride:o}=O(e.name),s=de[e.name]??e.filePin[e.name],c=o??e.fileCooldownDays,l={semvers:i,useGreatest:t,usePre:n,useRel:r,allowDowngrade:a,pinnedRange:s,cooldownDays:c||void 0,now:c?M:void 0},u=k.make[e.key],d;if(e.kind===`go`){let t=await Xe(hi(e.installPath,e.version,e.projectDir,w,_,l));if(!t){delete k.make[e.key];return}e.newSpec=`${t.newInstallPath}@${t.newVersion}`,u.new=t.newVersion,d=t}else{let t=await Xe(gi(e.image,w,l));if(!t){delete k.make[e.key];return}e.newSpec=ci(e.image.writtenImage,t.newTag,e.image.digest?t.newDigest:null),u.new=t.newTag,d=t}u.info=d.info,d.date&&Z(u,d.date)},{concurrency:r}),Object.keys(k.make).length||delete k.make})());try{await Promise.all(Me)}finally{await st()}if(!Li(k))return{results:{},message:`All dependencies are up to date.`};if(n.update){let e=(e,t,n)=>{for(let r of t){let t=Oi(k[e],r.memberPath);Object.keys(t).length&&$(r.absPath,n(r.content,t))}},t=new Map;if(k.actions)for(let[e,n]of Object.entries(k.actions)){let[r,i]=e.split(`\0`),a=t.get(r);a||t.set(r,a=[]),a.push({name:i,oldRef:n.old,newRef:n.new})}let n=new Map;if(k.docker)for(let[e,t]of Object.entries(k.docker)){let[r]=e.split(`\0`),i=n.get(r);i||n.set(r,i={}),i[e]=t}let r=new Map;if(k.make)for(let e of we){if(!e.newSpec||!k.make[e.key])continue;let t=e.key.split(`\0`)[0],n=r.get(t);n||r.set(t,n=[]),n.push({oldSpec:e.oldSpec,newSpec:e.newSpec})}let i=Object.keys(k).sort((e,t)=>(e===`docker`)-+(t===`docker`));for(let a of i)if(Object.keys(k[a]).length){if(a===`actions`){for(let[e,n]of t){let{absPath:t,content:r}=ge[e]||{};if(!t)continue;let i=Sr(r,n);$(t,i),L[e]&&(L[e].content=i)}continue}if(a===`docker`){for(let[e,t]of n){let n=L[e];if(!n)continue;let{absPath:r,content:i,fileType:a}=n;$(r,(a===`dockerfile`?Wr:a===`compose`?Gr:Kr)(i,t))}continue}if(a===`make`){for(let[e,t]of r){let n=_e[e];n&&$(n.absPath,_i(n.content,t))}continue}if(a===`go`){if(R){for(let e of ve){let t=Oi(k[a],e.usePath);if(!Object.keys(t).length)continue;let[n,r]=dr(e.content,t);n!==e.content&&$(e.absPath,n),fr(e.projectDir,r,$)}let e={};for(let[t,n]of Object.entries(k[a]))t.split(`\0`)[0]===`replace`&&(e[t]=n);if(Object.keys(e).length){let[t]=dr(R.content,e);t!==R.content&&$(R.file,t)}}for(let e of j.go??[]){let t=Oi(k[a],e.memberPath);if(!Object.keys(t).length)continue;let[n,r]=dr(e.content,t);$(e.absPath,n),fr(e.projectDir,r,$)}}else a===`cargo`?(be&&e(a,ye,Ei),e(a,j.cargo??[],Ei)):a===`npm`?(Se&&e(a,xe,In),e(a,j.npm??[],In)):e(a,j[a]??[],Un)}}return Bi(k)}function Ui(e){try{return rn(h(c(e,`.npmrc`),`utf8`)).registry}catch{return}}function Wi(e,t){if(typeof e!=`string`||!e)return t;try{return`${new URL(e).origin}/`}catch{return null}}function Gi(e,t){let n=(...t)=>t.some(t=>f(c(e,t))),r=new Set,i=e=>{e&&r.add(e)},a=Wi(t.forgeapi,`https://api.github.com/`),o=Wi(t.dockerapi,`https://hub.docker.com/`);return n(`package.json`,`pnpm-workspace.yaml`)&&(i(Wi(typeof t.registry==`string`?t.registry:Ui(e),`https://registry.npmjs.org/`)),i(Wi(t.jsrapi,`https://jsr.io/`)),i(a)),n(`pyproject.toml`)&&i(Wi(t.pypiapi,`https://pypi.org/`)),n(`Cargo.toml`)&&i(Wi(t.cargoapi,`https://crates.io/`)),n(`go.mod`,`go.work`)&&i(Wi(t.goproxy,`https://proxy.golang.org/`)),n(...qr)&&i(o),n(`.github/workflows`)&&(i(a),i(o)),Array.from(r)}const Ki=/[A-Za-z_$]/,qi=/[A-Za-z0-9_$]/;function Ji(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++;continue}if(e[t]===`/`&&e[t+1]===`*`){for(t+=2;t<r&&(e[t]!==`*`||e[t+1]!==`/`);)t++;t+=2;continue}break}return t}for(;n<r;){let o=e[n];if(o===`"`){for(i=-1,t+=o,n++;n<r;){let i=e[n];if(t+=i,n++,i===`\\`&&n<r){t+=e[n],n++;continue}if(i===`"`)break}continue}if(o===`'`){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(o===`/`&&n+1<r&&e[n+1]===`/`){for(n+=2;n<r&&e[n]!==`
|
|
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(Ki.test(o)){i=-1;let o=``;for(;n<r&&qi.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{St as A,rt as B,Pt as C,dt as D,Wt as E,G as F,Ke as G,Ie as H,Lt as I,Ze as K,It as L,ft as M,lt as N,Rt as O,zt as P,K as R,pt as S,Gt as T,Qe as U,ot as V,Ye as W,yt as _,Xt as a,Et as b,Zt as c,J as d,gt as f,ut as g,bt as h,hr as i,xt as j,Tt as k,Yt as l,Ft as m,Gi as n,nn as o,Vt as p,Ae as q,Hi as r,Kt as s,Ji as t,Qt as u,q as v,Mt as w,Ut as x,Dt as y,Ht as z};
|
package/dist/shared2.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{C as e,S as t}from"./shared.js";export{t as getFetchOpts,e as getForgeTokens};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "updates",
|
|
3
|
-
"version": "17.
|
|
3
|
+
"version": "17.19.1",
|
|
4
4
|
"description": "CLI dependency update tool for npm, uv, cargo, go, actions, docker and make",
|
|
5
5
|
"author": "silverwind",
|
|
6
6
|
"repository": {
|
|
@@ -42,21 +42,21 @@
|
|
|
42
42
|
"bun": "*"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@types/node": "26.1.
|
|
46
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
47
|
-
"@vitest/coverage-v8": "4.1.
|
|
48
|
-
"eslint": "10.
|
|
49
|
-
"eslint-config-silverwind": "140.
|
|
45
|
+
"@types/node": "26.1.1",
|
|
46
|
+
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
|
47
|
+
"@vitest/coverage-v8": "4.1.10",
|
|
48
|
+
"eslint": "10.7.0",
|
|
49
|
+
"eslint-config-silverwind": "140.2.2",
|
|
50
50
|
"jest-extended": "7.0.0",
|
|
51
51
|
"timerel": "5.8.7",
|
|
52
|
-
"tsdown": "0.22.
|
|
53
|
-
"tsdown-config-silverwind": "
|
|
52
|
+
"tsdown": "0.22.7",
|
|
53
|
+
"tsdown-config-silverwind": "4.0.0",
|
|
54
54
|
"typescript": "6.0.3",
|
|
55
|
-
"typescript-config-silverwind": "20.0.
|
|
56
|
-
"updates-config-silverwind": "4.0.
|
|
55
|
+
"typescript-config-silverwind": "20.0.1",
|
|
56
|
+
"updates-config-silverwind": "4.0.2",
|
|
57
57
|
"versions": "15.1.3",
|
|
58
|
-
"vitest": "4.1.
|
|
59
|
-
"vitest-config-silverwind": "11.3.
|
|
58
|
+
"vitest": "4.1.10",
|
|
59
|
+
"vitest-config-silverwind": "11.3.7"
|
|
60
60
|
},
|
|
61
61
|
"bin": {
|
|
62
62
|
"updates": "dist/index.js"
|