updates 17.18.1 → 17.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.d.ts +83 -40
- package/dist/index.js +3 -3
- package/dist/renovate.js +1 -1
- package/dist/shared.js +8 -6
- package/dist/shared2.js +1 -0
- package/package.json +13 -13
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{H as e,N as t,W as n,a as r,c as i,g as a,i as o,l as s,n as c,o as l,r as u,s as d,u as f}from"./shared.js";import{cwd as p,exit as m,platform as h,stderr as g,stdout as _,versions as v}from"node:process";import{parseArgs as y,stripVTControlCharacters as b,styleText as x}from"node:util";import{dirname as S,isAbsolute as C,resolve as w}from"node:path";import{statSync as T}from"node:fs";const E=y({strict:!1,allowPositionals:!0,tokens:!0,options:d}),D=E.values;for(let[e,t]of E.tokens.entries()){if(t.kind!==`option`||!t.value?.startsWith(`-`))continue;let n=t.value.startsWith(`--`)?2:1,i=r(t.value.substring(n));if(!i)continue;let a=E.tokens[e+1],o=D[t.name];if(Array.isArray(o)){let e=o.indexOf(t.value);e!==-1&&o.splice(e,1)}else D[t.name]=!0;let s=a?.kind===`positional`&&a.value?a.value:!0;d[i]?.multiple?(D[i]??=[]).push(s):D[i]=s}const O=E.values,k=E.positionals,A=s(O.file),j=[...A instanceof Set?A:[],...k],M=R(j[0]);if(!O.help&&!O.version)for(let e of c(M,O))(async()=>{try{await fetch(e,{method:`HEAD`})}catch{}})();function N(e){return/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):e}function P(e){let t=s(e);if(t!==!1)return t===!0||Array.from(t).map(N)}let F=String,I=String,L=!1;function R(e){if(!e)return p();let t=C(e)?e:w(p(),e),n=!1;try{n=T(t).isDirectory()}catch{}return n?t:S(t)}function z(e){return O[`no-color`]===!0?!1:O.color===!0?!0:e.noColor===!0?!1:e.color===!0||_.isTTY}async function B(e,t){if(e){let t=e.message??String(e);console.info(L?JSON.stringify({error:t}):F(t))}h===`win32`&&Number(v?.node?.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),m(t??+!!e)}async function V(){for(let e of[_,g])e?._handle?.setBlocking?.(!0);O.help&&(_.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: ${a}
|
|
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 B()),O.version&&(console.info(
|
|
47
|
+
`),await B()),O.version&&(console.info(t),await B());let e=await l(M,{noCache:!!O[`no-cache`],timeout:typeof O.timeout==`string`&&Number(O.timeout)||5e3});z(e)&&(F=e=>x(`red`,String(e)),I=e=>x(`green`,String(e)));let n={...e};n.pin=void 0,O.json&&(n.json=!0),L=!!n.json,O.verbose&&(n.verbose=!0),O[`no-cache`]&&(n.noCache=!0),O.update&&(n.update=!0),O.indirect&&(n.indirect=!0),O[`error-on-outdated`]&&(n.errorOnOutdated=!0),O[`error-on-unchanged`]&&(n.errorOnUnchanged=!0),typeof O.timeout==`string`&&(n.timeout=Number(O.timeout)||void 0),typeof O.sockets==`string`&&(n.sockets=Number(O.sockets)||void 0),typeof O.registry==`string`&&(n.registry=O.registry),typeof O.cooldown==`string`&&(n.cooldown=Number(O.cooldown)||O.cooldown);let r=i(O.include).map(N),o=i(O.exclude).map(N);r.length&&(n.include=r),o.length&&(n.exclude=o);let c=i(O.types);c.length&&(n.types=c);let d=f(O.pin);Object.keys(d).length&&(n.pin=d);let p=s(O.modes);p instanceof Set&&(n.modes=Array.from(p));for(let e of[`greatest`,`prerelease`,`release`,`patch`,`minor`]){let t=P(O[e]);t!==void 0&&(n[e]=t)}let m=P(O[`allow-downgrade`]);m!==void 0&&(n.allowDowngrade=m),j.length&&(n.files=j);for(let e of[`forgeapi`,`pypiapi`,`jsrapi`,`goproxy`,`cargoapi`,`dockerapi`])typeof O[e]==`string`&&(n[e]=O[e]);let h=await u(n),v=Object.keys(h.results).length>0;if(h.message)console.info(n.json?JSON.stringify({message:h.message}):h.message);else if(v&&(n.json?console.info(JSON.stringify({results:h.results})):console.info(U(h)),n.update))for(let[e,t]of Object.entries(h.results))Object.values(t).some(e=>Object.keys(e).length)&&console.info(I(`✨ ${e} updated`));n.errorOnOutdated?await B(void 0,v?2:0):n.errorOnUnchanged?await B(void 0,v?0:2):await B()}const H=e=>b(e).length;function U(t){let r=Object.keys(t.results),i=r.length>1,a=[i?[`NAME`,`MODE`,`OLD`,`NEW`,`AGE`,`INFO`]:[`NAME`,`OLD`,`NEW`,`AGE`,`INFO`]],s=new Set;for(let n of r)for(let r of Object.values(t.results[n]))for(let[t,c]of Object.entries(r)){let r=`${n}|${t}|${c.old}|${c.new}`;s.has(r)||(s.add(r),a.push([n===`go`?o(t):t,...i?[n]:[],e(c.old,c.new,F),e(c.new,c.old,I),c.age||``,c.info||``]))}return n(a,H)}try{await V()}catch(e){await B(e)}export{};
|
package/dist/renovate.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{B as e,G as t,K as n,U as r,V 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 r={};if(t.cooldown&&typeof e.minimumReleaseAge==`string`){let t=u(e.minimumReleaseAge);t!==void 0&&t>0&&(r.cooldown=t)}let i=[],a={};if(Array.isArray(e.ignoreDeps))for(let t of e.ignoreDeps)typeof t==`string`&&t&&i.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)i.push(p(t));if(typeof t.allowedVersions==`string`&&n(t.allowedVersions))for(let n of e)!m(n)&&typeof p(n)==`string`&&(a[n]=t.allowedVersions)}return i.length&&(r.exclude=i),Object.keys(a).length&&(r.pin=a),r}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 r=>{let a=t?null:await e(r),o=await w(r,a?.etag),s;try{s=await fetch(r,{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&&i(r,l,c),c}}const E=r(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
|
-
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=
|
|
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
|
-
`:``)+r[n]}e=n,f[p]=
|
|
4
|
-
`;case`r`:return`\r`;case`t`:return` `;case`u`:case`U`:return String.fromCodePoint(Number.parseInt(t.slice(1),16));default:return t}})}const
|
|
5
|
-
`)}return a}const
|
|
6
|
-
`);if(n===-1)return null;let r=t.substring(0,n),i=t.substring(n+1);return r&&i?{etag:r,body:i}:null}catch{return null}}const tt=new Set;let nt=0;function rt(e,t,r){let i=(async()=>{try{await(Ze??=x(Xe,{recursive:!0}))}catch{Ze=null;return}try{let i=c(Xe,`${$e(e)}.cache`),a=`${i}.${n}-${nt++}.tmp`;await w(a,`${t}\n${r}`),await C(a,i)}catch{}})();tt.add(i),(async()=>{await i,tt.delete(i)})()}async function it(){for(;tt.size;)await Promise.all(tt)}var at=`17.18.1`;function ot(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 st=at,ct=5e3,q=e=>e[0]===`v`?e.substring(1):e,lt=e=>e.endsWith(`/`)?e.slice(0,-1):e;function ut(e,t){return{headers:{"user-agent":`updates/${st}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function dt(e,t){try{return await fetch(e,t)}catch(t){throw Error(`Failed to fetch ${e}${t?.message?`: ${t.message}`:``}`)}}async function ft(e){return typeof e.text==`function`?e.text():JSON.stringify(await e.json())}function pt(e,t){if(!t||e.length<16384)return e;try{return JSON.stringify(t(JSON.parse(e)))}catch{return e}}async function mt(e,t,n={},r){let i=t.noCache?null:await et(e),a=n.headers,o=i?{...a,"if-none-match":i.etag}:a,s=await t.doFetch(e,{...n,headers:o,signal:AbortSignal.timeout(t.fetchTimeout)});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=pt(await ft(s),r),l=s.headers?.get?.(`etag`);return l&&!t.noCache&&rt(e,l,c),{body:c,res:s}}async function ht(e,t,n={},r){if(!t.noCache){let t=await et(e);if(t)return{body:t.body}}let i=await t.doFetch(e,{...n,signal:AbortSignal.timeout(t.fetchTimeout)});if(!i)return{res:void 0};if(!i.ok)return{res:i};let a=pt(await ft(i),r);return t.noCache||rt(e,`immutable`,a),{body:a,res:i}}function gt(e){return(L(e)?.prerelease.length??0)>0}function _t(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}const vt=new WeakMap;function yt(e){let t=vt.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`),vt.set(e,n),n}function bt(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=J(e),s=J(t);if(!o||!s)return!0;let c=_t(e)||gt(e),l=gt(t);return c&&!l?_e(s,o)||n:!l&&ve(s,o)?a(i,r):!0}function J(e){return me(e)?.version??``}function xt(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=_t(n)||i,p=f?yt(r):r,m=e?.time,h=!!m,g=o||!h,_=!!(c&&l),v=0,y=!1,b=d,x=L(d);for(let e of t){let t=L(e);if(!t?.version||t.prerelease.length&&(!f||a))continue;let n=t.version;if(s&&!U(n,s))continue;let r;if(_&&(r=u?u(e):h?m[e]:void 0,!ot(r,c,l)))continue;let i=he(x,t);if(!(!i||!p.has(i)))if(g)((y?I(t,x)>0:F(t,x)>=0)||s&&!U(b,s))&&(b=n,x=t,y=!0);else{let i=Date.parse(r??m[e]);i>=0&&i>v&&(b=n,x=t,v=i)}}return b||null}function St(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||_t(n),p=e=>gt(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=z(t,g);if(n&&o.has(n)&&bt(h,e.new,m)&&ot(e.Time,c,l)&&(!s||U(g,s)))return e.new}let _=J(e.sameMajorNew);if(_&&!f(e.sameMajorNew)&&!p(e.sameMajorNew)){let n=z(t,_);if(n&&o.has(n)&&bt(h,e.sameMajorNew,m)&&ot(e.sameMajorTime,c,l)&&(!s||U(_,s)))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}if(c&&l&&e.olderEligible&&!p(e.olderEligible.version)){let n=J(e.olderEligible.version);if(n){let r=z(t,n);if(r&&o.has(r)&&bt(h,e.olderEligible.version,m)&&(!s||U(n,s)))return e.Time=e.olderEligible.time,delete e.newPath,e.olderEligible.version}}return null}let h=xt(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=gt(f)):(r=e[`dist-tags`].latest,p=gt(r));let m=J(n),g=_t(n),_=gt(h),v={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d};if(!i&&a||g&&_)return h;if(g&&!_)return bt(n,h,v)?h:null;let y=z(m,r);return y&&y!==`prerelease`&&!o.has(y.replace(/^pre/,``))||i&&p?h:ve(r,m)&&!p?bt(n,r,v)?r:B(h,m)?h:null:!g&&p&&!a||s&&!U(r,s)||c&&l&&!ot(t===`pypi`?e.releases?.[f||r]?.[0]?.upload_time_iso_8601:e.time?.[r],c,l)?h:f||r}}const Ct=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&Ct.set(e.substring(0,t),e.substring(t+1))}const wt=[`UPDATES_GITHUB_API_TOKEN`,`GITHUB_API_TOKEN`,`GH_TOKEN`,`GITHUB_TOKEN`,`HOMEBREW_GITHUB_API_TOKEN`];function Tt(){return Array.from(new Set(wt.map(e=>t[e]).filter(Boolean)))}let Et;function Dt(){let e=Tt();return e.length?Promise.resolve(e):Et??=(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 Ot=new Map;async function kt(e,t){if(!e)return[];let n=Ct.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?Dt():[]}async function At(e,t,n){let r;try{r=new URL(e).hostname}catch{r=``}let i=await kt(r,t.forgeApiUrl),a=AbortSignal.timeout(t.fetchTimeout),o=e=>{let t=ut(`Bearer`,e);return n&&(t.headers={...t.headers,...n}),t.signal=a,t};if(!i.length)return t.doFetch(e,o());let s=r?Ot.get(r):void 0;if(s)return t.doFetch(e,o(s));for(let n of i){let i=await t.doFetch(e,o(n));if(i.status!==401&&i.status!==403)return r&&Ot.set(r,n),i}return t.doFetch(e,o())}function jt(e,t){let n=q(t);if(!fe(n))return null;let r=``,i=``;for(let t of e){let e=q(t);fe(e)&&(!r||B(e,i))&&(r=t,i=e)}return r&&B(i,n)?r:null}function Mt(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 Nt=/^[0-9a-f]{7,}$/i;function Pt(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function Ft(e,t){let n=t.noCache?null:await et(e),r=await At(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=Pt(await r.json()),a=r.headers.get(`link`)||``,o=r.headers.get(`etag`);return o&&!t.noCache&&rt(e,o,JSON.stringify({link:a,tags:i})),{tags:i,link:a}}async function It(e,t,n,r){let i=r=>`${e}/repos/${t}/${n}/tags?per_page=100&page=${r}`;try{let e=await Ft(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)=>Ft(i(t+2),r)));for(let e of o)e&&t.push(...e.tags);return t}catch{return[]}}function Lt(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 Rt(e,t,n=``){let r=t.startsWith(`v`),i=q(e),a=q(t).split(`.`).length,o=i.split(`.`),s;return s=a===1?o[0]:a===2?`${o[0]}.${o[1]||`0`}`:i,`${r?`v`:``}${s}${n}`}function zt(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function Bt({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=Mt(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a+=`/${zt(a)}/${e.directory}`)),a||t||``)}const Vt={"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 Ht(e,t){return RegExp(`^${K(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Ut(e,t,n){if(t&&typeof e==`string`)return/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Ht(e,n);{let t=e instanceof RegExp?e:Ht(e,n);return/[gy]/.test(t.flags)?new RegExp(t.source,t.flags.replace(/[gy]/g,``)):t}}function Wt(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.filter(e=>typeof e==`string`).flatMap(He)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function Gt(e){for(let[t,{short:n}]of Object.entries(Vt))if(t===e||n===e)return t;return``}function Y(e){return new Set(e.map(e=>Ut(e,!1,!0)))}function Kt(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>He(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&&Oe(i)&&(t[r]=i)}return t}function Jt(e){return typeof e==`boolean`?e:!Array.isArray(e)||!e.length?!1:Y(e)}async function Yt(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 Xt=Ye(e=>Je(e,Yt));async function Zt(e){let t=await Xt(e),n=t?.default??{},{loadRenovateConfig:r}=await import(`./renovate.js`);return{...await r(t?.configDir??e,n.inherit?.renovate),...n}}function Qt(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 $t(e){try{return Qt(h(e,`utf-8`))}catch{return}}function en(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 tn(e){let n={},r=e.toLowerCase();for(let[i,a]of Object.entries(t)){if(!i.toLowerCase().startsWith(r))continue;let t=i.substring(e.length).split(`__`).filter(Boolean);if(t.length===0)continue;let o=n;for(let e=0;e<t.length;e++){let n=t[e];if(e===t.length-1)o[n]=a;else if(o[n]===void 0&&(o[n]={}),typeof o[n]==`object`)o=o[n];else break}}return n}function nn(e,n={}){let i=r===`win32`,a=i?t.USERPROFILE:t.HOME,o=[{...n}],s=[];function l(e){if(!e||s.includes(e))return;let t=$t(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(en(`.${e}rc`));let u=tn(`${e}_`);return u.config&&l(u.config),Object.assign({},...o,u,s.length?{configs:s,config:s[s.length-1]}:void 0)}const rn=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,an=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,on=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,sn=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,cn=/(@[^/]+\/)?([^/]+)/g;function ln(e){let t=e.match(cn);return t?t[t.length-1]:e}const un=`https://registry.npmjs.org`;let dn=null;const fn=new Map;function pn(){return dn??=nn(`npm`,{registry:un})}function mn(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function hn(e,t){let n=n=>t[`${e}:${n}`]||t[`${e}/:${n}`],r=n(`_authToken`);if(r)return{token:mn(r),type:`Bearer`};let i=n(`username`),a=n(`_password`);if(i&&a){let e=Buffer.from(mn(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:mn(o),type:`Basic`}}function gn(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=hn(`//${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:mn(i),type:`Basic`}}function _n(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function vn(e,t){dn||=pn();let n=e.startsWith(`@`)?e.split(`/`)[0]:``,r=`${n}:${t}`,i=fn.get(r);if(i)return i;let a=()=>({auth:gn(t,dn),registry:t}),o;if(!e.startsWith(`@`))o=a();else{let e=lt(_n(n,dn));if(e!==t)try{let t=gn(e,dn);o=t?.token?{auth:t,registry:e}:a()}catch{o=a()}else o=a()}return fn.set(r,o),o}function yn(e,t,n){dn||=pn();let r=lt((typeof n.registry==`string`?n.registry:!1)||t.registry||dn.registry||un);return{...vn(e,r),originalRegistry:r}}function bn(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const xn=new Map,Sn=new Map,Cn=new Map;function wn(e){let t={};for(let n of Object.keys(e.versions??{}))t[n]={};return{name:e.name,"dist-tags":e[`dist-tags`],versions:t,time:e.time,error:e.error}}async function Tn(e,t,n,r,i){let{auth:a,registry:o}=yn(e,n,r),s=bn(o,t===`resolutions`?ln(e):e),c=xn.get(s);if(!c){let t=ut(a?.type,a?.token);t.headers={...t.headers,accept:`application/vnd.npm.install-v1+json`},c=(async()=>{try{let n=await mt(s,i,t,wn);return`body`in n||Lt(n.res,s,e,o),JSON.parse(n.body)}catch(e){throw xn.delete(s),e}})(),xn.set(s,c)}return[await c,t,o,e]}async function En(e,t,n,r,i){let{auth:a,registry:o}=yn(e,n,r),s=bn(o,e,t),c=Sn.get(s);if(c)return c;let l=(async()=>{try{let n=ut(a?.type,a?.token),r=await ht(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=bn(o,e),a=Cn.get(r);a||(a=(async()=>{try{let e=await i.doFetch(r,{...n,signal:AbortSignal.timeout(i.fetchTimeout)});return e?.ok?await e.json():null}catch{return Cn.delete(r),null}})(),Cn.set(r,a)),l=(await a)?.time?.[t]||``}return{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})();return Sn.set(s,l),l}function Dn(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function On(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function kn(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 An(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 mt(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]}Lt(s.res,o,e,`JSR`)}function jn(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 Mn(e,t,n){let r=e.replace(sn,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(on);return t?.length===1?e.replace(on,J(t[0])):e}async function Nn(e,t,n){let r=`${n.forgeApiUrl}/repos/${e}/${t}/commits`;try{let e=n.noCache?null:await et(r),t=await At(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&&rt(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 Pn(e,t,n){return(await It(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function Fn(e,t,n){let r=t.old.replace(rn,``),[,i,a,o]=an.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(Nt.test(o)){let{hash:t,commit:r}=await Nn(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=jt(await Pn(i,a,n),o);if(t)return{key:e,newRange:s(t),user:i,repo:a,oldRef:o,newRef:t}}return null}function In(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 Ln(e,t,n){let r=`${n.pypiApiUrl}/pypi/${e}/json`,i=await mt(r,n,{headers:{"accept-encoding":`gzip, deflate, br`}},In);if(`body`in i)return[JSON.parse(i.body),t,null,e];Lt(i.res,r,e,n.pypiApiUrl)}function Rn(e,t){let n=e;for(let[e,{old:r,oldOrig:i}]of Object.entries(t)){let a=e.split(`\0`)[1],o=i||r;n=n.replace(RegExp(`(['"])(${K(a)} *(?:\\[[^\\]]+\\])? *[<>=~]+ *)${K(o)}\\1`,`g`),(n,r,i)=>`${r}${i}${t[e].new}${r}`)}return n}let zn;async function Bn(){let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]);return t(e)}function Vn(){return zn??=Bn()}function Hn(){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 lt(e)}return`https://proxy.golang.org`}function Un(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function Wn(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function Gn(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}const Kn=/\/v(\d+)$/;function qn(e){let t=Kn.exec(e);return t?Number.parseInt(t[1]):1}function Jn(e,t){let n=e.replace(Kn,``);return t<=1?n:`${n}/v${t}`}function Yn(e,t){if(t.includes(`+incompatible`))return e;let n=Number.parseInt(q(t).split(`.`)[0]);return Number.isNaN(n)||n<=1||n===qn(e)?e:Jn(e,n)}function Xn(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 Zn(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||Qn(n)}function Qn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function $n(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function er(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 tr(e,t,n,r,i,a){let o=r?.Version??i,s=r?.Time??a,c=r?.path??e;return[{name:e,old:n,new:q(o),Time:s,...c!==e&&{newPath:c},sameMajorNew:q(i),sameMajorTime:a},t,null,e]}function nr(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=Xn(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 rr(e,n,r,i,a){let o=qn(e),s=async(e,n)=>{try{let{stdout:r}=await(await Vn())(`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=Zn(e,n,r),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(Jn(e,o+1),a.goProbeTimeout)]);return l?tr(e,n,r,await er(o,u,t=>s(Jn(e,t),a.goProbeTimeout)),l.Version,l.Time):$n(e,r,n)}async function ir(e,t,n,r,i,a){if(Wn(e,a))return rr(e,t,n,r,i);let o=Gn(e),s=qn(e),c=async t=>{let n=Jn(e,t);try{let e=await i.doFetch(`${i.goProxyUrl}/${Gn(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=Zn(e,t,n),[u,d]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}}),l?null:c(s+1)]);if(!u.ok)return $n(e,n,t);let f,p;try{let e=await u.json();f=e.Version,p=e.Time}catch{return $n(e,n,t)}return tr(e,t,n,await er(s,d,c),f,p)}function ar(e,t){if(!e.includes(`replace`))return e;let n=K(t);return e=e.replace(RegExp(`^replace\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(RegExp(`^\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(/^replace\s*\(\s*\)\s*\n/gm,``),e}function or(e,t){let n=e,r={};for(let[e,{old:i,oldOrig:a}]of Object.entries(t)){let[o,s]=e.split(`\0`),c=a||i,l=t[e].new;if(o===`replace`){n=n.replace(RegExp(`(=>\\s+${K(s)}\\s+)v${K(c)}`,`g`),`$1v${l}`);continue}if(o===`indirect`){n=n.replace(RegExp(`(${K(s)}) +v${K(c)}`,`g`),`$1 v${l}`);continue}let u=Yn(s,l);u===s?n=n.replace(RegExp(`(${K(s)}) +v${K(c)}`,`g`),`$1 v${l}`):(n=n.replace(RegExp(`${K(s)} +v${K(c)}`,`g`),`${u} v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)${K(s)}(/\\S+)?\\s*$`,`gm`),`$1${u}$2`)),r[s]=u),o!==`tool`&&(n=ar(n,s))}return[n,r]}function sr(e,t,n){let r=Object.entries(t);if(!r.length)return;let i=new Map(r),a=r.map(([e])=>e).sort((e,t)=>t.length-e.length),o=RegExp(`"(${a.map(K).join(`|`)})(/|")`,`g`),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 cr(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=Xn(r,a);e&&(n[e.targetModule]=e.targetVersion)}}return{use:t,replace:n}}function lr(e){let t=`https://${ur(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[,e,i,...a]=r;return n.pathname=`/${e}/${i}/${zt(t)}/${a.join(`/`)}`,n.href}else return t}function ur(e){return Kn.test(e)?s(e):e}function dr(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const fr=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function pr(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:Nt.test(o)}}function mr(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function hr(e,t,n,r,i){let a=`${e}/repos/${t}/${n}/git/commits/${r}`;if(!i.noCache){let e=await et(a);if(e)return e.body}try{let e=await At(a,i);if(!e.ok)return``;let t=await e.json(),n=t?.committer?.date||t?.author?.date||``;return n&&!i.noCache&&rt(a,`immutable`,n),n}catch{return``}}function gr(e,t){return Rt(L(q(e))?.version??q(e),t)}function _r(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?(?:https?:\\/\\/)?)${K(e)}@${K(r)}(?![\\w.-])`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}const vr=[`.github`,`.gitea`,`.forgejo`],yr=RegExp(`(?:^|/)(?:${vr.map(K).join(`|`)})\\/(?:workflows\\/[^/]+|(?:[^/]+\\/)*action)\\.ya?ml$`);function br(e){return yr.test(e.replace(/\\/g,`/`))}function xr(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 Sr=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,Cr=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,wr=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,Tr=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,Er=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function Dr(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 Or(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||!Sr.test(r))return null;let{registry:i,namespace:a,repo:o}=Dr(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function kr(e){let t=Sr.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Ar(e,t){let n=kr(t);return n?Rt(e,n.version,n.suffix):t}function jr(e,t){let n=[];for(let r of e.matchAll(t)){let e=Or(r[1]);e&&n.push({ref:e,match:r[1]})}return n}const Mr=new WeakMap;function Nr(e,t,n){let r=Mr.get(n);r||Mr.set(n,r=new Map);let i=`${e}/${t}`,a=r.get(i);return a||r.set(i,a=Pr(e,t,n)),a}async function Pr(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 mt(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 Fr(e,t,n,r){let i=`${r.dockerApiUrl}/v2/repositories/${e}/${t}/tags/${n}`;try{let e=await mt(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 Ir(e,t,n){let{registry:r,namespace:i,repo:a}=Dr(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await Nr(i,a,n),name:e},t,null,e]}function Lr(e,t,n,r,i,a){let o=kr(t);if(!o)return null;let s=me(q(o.version))?.version;if(!s)return null;let c=s,l=``,u=``;for(let[t,s]of Object.entries(e)){let e=kr(t);if(!e||e.suffix!==o.suffix)continue;let d=me(q(e.version))?.version;if(!d||a&&!U(d,a)||!ot(s,r,i))continue;if(d===c){l&&Date.parse(s)>Date.parse(u)&&(l=t,u=s);continue}let f=z(c,d);!f||!n.has(f)||B(d,c)&&(c=d,l=t,u=s)}if(!l||c===s)return null;let d=Ar(c,t);return d===t?null:{newTag:d,hubTag:l,date:u}}function Rr(e,t,n){let r=e;for(let[e,i]of Object.entries(t)){let t=e.split(`\0`)[1],a=i.oldOrig||i.old;for(let e of n)r=r.replace(e(K(t),K(a)),`$1${t}:${i.new}`)}return r}function zr(e,t){return Rr(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}(?![\\w.-])`,`g`)])}function Br(e,t){return Rr(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}(?![\\w.-])`,`g`)])}function Vr(e,t){return Rr(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}(?![\\w.-])`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}(?![\\w.-])`,`g`)])}const Hr=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function Ur(e){return/^docker-.+\.ya?ml$/.test(e)}function Wr(e){return/^Dockerfile(\..+)?$/.test(e)}function Gr(e){return Wr(e)||Ur(e)}function Kr(e){return Wr(e)?Cr:wr}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 Jr=[`Makefile`,`makefile`,`GNUmakefile`];function Yr(e){return Jr.includes(e)||e.endsWith(`.mk`)}const Xr=String.raw`^\s*[A-Za-z_][\w.]*\s*(?:::=|:=|\?=|\+=|=)\s*`,Zr=RegExp(`${Xr}${String.raw`(\S+)@(v\d\S*)\s*$`}`),Qr=/^[^/\s]+\.[^/\s]+\//;function $r(e){let t=e.indexOf(`#`);return t===-1?e:e.slice(0,t)}function ei(e){let t=[];for(let n of e.split(/\r?\n/)){let e=$r(n),r=Zr.exec(e);if(!r)continue;let[,i,a]=r;Qr.test(i)&&t.push({installPath:i,version:a})}return t}const ti=RegExp(`${Xr}${String.raw`(\S+)\s*$`}`),ni=/@(sha256:[0-9a-f]{64})$/;function ri(e,t,n){return`${e}:${t}${n?`@${n}`:``}`}function ii(e){let t=null,n=e,r=ni.exec(e);r&&(t=r[1],n=e.slice(0,r.index));let i=Or(n.replace(/^docker\.io\//,``));return!i||i.registry||i.namespace===`library`?null:{writtenImage:n.slice(0,n.lastIndexOf(`:`)),ref:i,digest:t}}function ai(e){let t=[];for(let n of e.split(/\r?\n/)){let e=ti.exec($r(n));if(!e)continue;let r=ii(e[1]);r&&t.push(r)}return t}const oi=/\/v(?:[2-9]|[1-9]\d+)(?=\/|$)/;function si(e){let t=oi.exec(e);return t?e.slice(0,t.index+t[0].length):null}function ci(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 li(e,t){let n=si(e);if(n)return n;let r=ci(e);return(await Promise.all(r.map(async e=>{try{return(await t.doFetch(`${t.goProxyUrl}/${Gn(e)}/@latest`,{signal:AbortSignal.timeout(t.goProbeTimeout)})).ok?e:null}catch{return null}}))).find(Boolean)??null}async function ui(e,t,n,r,i,a){let o=await li(e,r);if(!o)return null;let[s]=await ir(o,`tool`,q(t),n,r,i),c=St(s,{mode:`go`,range:q(t),semvers:a.semvers,useGreatest:a.useGreatest,usePre:a.usePre,useRel:a.useRel,pinnedRange:a.pinnedRange,cooldownDays:a.cooldownDays,now:a.now},{allowDowngrade:a.allowDowngrade,matchesAny:W,isGoPseudoVersion:Qn});if(!c)return null;let l=s.newPath??Yn(o,c),u=`${l}${e.slice(o.length)}`,d=Rt(c,t);return u===e&&d===t?null:{newInstallPath:u,newVersion:d,date:s.Time??``,info:lr(l)}}async function di(e,t,n){let{namespace:r,repo:i,fullImage:a,tag:o}=e.ref,[s]=await Ir(a,`docker`,t),c=Lr(s.tags,o,n.semvers,n.cooldownDays,n.now,n.pinnedRange);if(!c)return null;let l=null;return e.digest&&(l=await Fr(r,i,c.hubTag,t),!l)?null:{newTag:c.newTag,newDigest:l,date:c.date,info:qr(e.ref)}}function fi(e,t){for(let{oldSpec:n,newSpec:r}of t){let t=RegExp(`^([^#\\n]*?)${K(n)}(?=[\\s#]|$)`,`gm`);e=e.replace(t,`$1${r}`)}return e}const pi=new Map,mi=e=>({versions:(e.versions||[]).filter(e=>!e.yanked).map(e=>({num:e.num,created_at:e.created_at}))});async function hi(e,t,n){let r=`${lt(n.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`,i=pi.get(r);return i||(i=(async()=>{try{let t=await mt(r,n,ut(),mi);`body`in t||Lt(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 pi.delete(r),e}})(),pi.set(r,i)),[await i,t,null,e]}function gi(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(!fe(a))continue;let o=t.get(i);o||t.set(i,o=[]),o.push(a)}return t}const _i=/^\d/;function vi(e,t){return _i.test(e)?Mn(X(`^${e}`),t,`^${e}`).replace(/^\^/,``):Mn(X(e),t,e)}function yi(e,t,n){let r=e.get(t);if(!r)return;let i=_i.test(n)?`^${n}`:n,a;for(let e of r)U(e,i)&&(!a||B(e,a))&&(a=e);return a}const bi=Be.map(K).join(`|`);function xi(e,t){let n=e;for(let[e,r]of Object.entries(t)){let[,t]=e.split(`\0`),i=r.oldOrig||r.old,a=r.new,o=K(t),s=K(i);n=n.replace(RegExp(`^(\\s*${o}\\s*=\\s*["'])${s}(["'].*)$`,`gm`),`$1${a}$2`),n=n.replace(RegExp(`^(\\s*${o}\\s*=\\s*\\{(?:"[^"]*"|'[^']*'|[^}\\n])*?\\bversion\\s*=\\s*["'])${s}(["'])`,`gm`),`$1${a}$2`),n=n.replace(RegExp(`(\\[(?:${bi})\\.${o}\\](?:(?!\\n\\[)[\\s\\S])*?version\\s*=\\s*["'])${s}(["'])`,`g`),`$1${a}$2`)}return n}function Si(e){return e.split(`|`)[0]}function Ci(e,t){let n=t===`.`?``:`|${t}`,r={};for(let[t,i]of Object.entries(e)){let[e,a]=t.split(`\0`),o=Si(e);e===`${o}${n}`&&(r[`${o}${a}`]=i)}return r}const wi=/[*?{[]/;async function Ti(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=wi.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 G(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 Ei(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 Di={"pnpm-workspace.yaml":`npm`,"package.json":`npm`,"pyproject.toml":`pypi`,"go.work":`go`,"go.mod":`go`,"Cargo.toml":`cargo`},Oi=new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`,`make`]),ki=(e,t)=>typeof e==`string`?lt(e):typeof t==`function`?t():t;function Ai(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 ji(e,t){let n=await G(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=Ne(t,{noAffix:!0}))}function Mi(e){let t=0;for(let n of Object.values(e))t+=Object.keys(n).length;return t}function Ni(e){console.error(`${Ue()} ${e}`)}function Q(e,t,n,r,i){if(i===`engines`&&Le.includes(e)||t===`pypi`&&e===`python`)return!1;if(!n.size&&!r.size)return!0;let a=t===`go`?ur(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 Pi(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(Di)){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()&&(Gr(t.name)||Yr(t.name))&&n.add(u(c(e,t.name)))}catch{}let t=u(e).replace(/\\/g,`/`),r=vr.some(e=>t.endsWith(`/${e}/workflows`)),i=!r&&vr.some(e=>t.endsWith(`/${e}`)),a=r?[s(t)]:i?[t]:vr.map(e=>c(t,e));for(let e of a)for(let t of xr(e))n.add(t)}else throw Error(`${e} is neither a file nor directory`)}else{let t=new Set(vr),r=[...Object.keys(Di),...Hr,...Jr,...vr];for(let[i,a]of Ai(r,e()))if(t.has(i))for(let e of xr(a))n.add(e);else n.add(u(a));try{for(let t of g(e(),{withFileTypes:!0})){let r=Gr(t.name)&&!Hr.includes(t.name),i=Yr(t.name)&&!Jr.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 Fi(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`&&!Dn(i.oldOrig)&&(i.old=n===`go`?dr(i.oldOrig):i.oldOrig),n===`go`?i.new=dr(i.new):n===`actions`&&(i.old=q(i.old),i.new=q(i.new)),delete i.oldPrint,delete i.newPrint,delete i.oldOrig,delete i.date;let[r,a]=e.split(`\0`),o=t.results[n]??={};(o[r]??={})[a]=i}return t}let Ii=!1;async function Li(t={}){if(!Ii){let{enableDnsCache:e}=await import(`./dns.js`);e(),Ii=!0}let n={...t},r=n.sockets??25,l=n.timeout??0,d=ki(t.forgeapi,`https://api.github.com`),f=ki(t.pypiapi,`https://pypi.org`),p=ki(t.jsrapi,`https://jsr.io`),m=ki(t.goproxy,Hn),h=ki(t.cargoapi,`https://crates.io`),g=ki(t.dockerapi,`https://hub.docker.com`),_=Un(),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&&Ni(`${b(t?.method||`GET`)} ${e}`);let r=await dt(e,t);return n.verbose&&Ni(`${r.ok?x(r.status):C(r.status)} ${e}`),r},noCache:!!n.noCache},ee=Jt(n.greatest),te=Jt(n.prerelease),T=Jt(n.release),D=Jt(n.patch),ne=Jt(n.minor),re=Jt(n.allowDowngrade),O=n.modes?.length?new Set(n.modes):Oi,ie=(n.overrides??[]).map(e=>({include:e.include?.length?Y(e.include):void 0,exclude:e.exclude?.length?Y(e.exclude):void 0,greatest:e.greatest,prerelease:e.prerelease,release:e.release,patch:e.patch,minor:e.minor,allowDowngrade:e.allowDowngrade,cooldownDays:e.cooldown===void 0?void 0:Ke(String(e.cooldown))})),ae=(e,t)=>e.include&&!W(t,e.include)?!1:!e.exclude||!W(t,e.exclude),oe=ie.some(e=>e.cooldownDays);O.has(`actions`)&&Dt();let se=new Map;function k(e){let t=se.get(e);if(!t){let n=W(e,ee),r=W(e,te),i=W(e,T),a=W(e,D),o=W(e,ne),s=W(e,re),c;for(let t of ie)ae(t,e)&&(t.greatest!==void 0&&(n=t.greatest),t.prerelease!==void 0&&(r=t.prerelease),t.release!==void 0&&(i=t.release),t.patch!==void 0&&(a=t.patch),t.minor!==void 0&&(o=t.minor),t.allowDowngrade!==void 0&&(s=t.allowDowngrade),t.cooldownDays!==void 0&&(c=t.cooldownDays));let l=new Set(a?[`patch`]:o?[`patch`,`minor`]:[`patch`,`minor`,`major`]);t={useGreatest:n,usePre:r,useRel:i,semvers:l,allowDowngrade:s,cooldownOverride:c},se.set(e,t)}return t}let ce=Y(n.include??[]),le=Y(n.exclude??[]),ue=n.pin??{},A={},j={},M={},N=Date.now(),P=e=>{let t=n.cooldown??e;return t?Ke(String(t)):0},de=e(),F=e=>e.replace(`${de}/`,``).replace(`${de}\\`,``),I=0,L=(e,t,n,r,i,a)=>{A[e][`${t}${n}${r}`]={old:i,oldOrig:a}},pe=Pi(n.files?.length?new Set(n.files):!1),R=await ji(Array.from(pe).filter(e=>{if(br(e))return O.has(`actions`)||O.has(`docker`);let t=o(e);if(Gr(t))return O.has(`docker`);if(Yr(t))return O.has(`make`);let n=Di[t];return!!n&&O.has(n)}),r),me={},z={},he={},ge=[],B=null,_e=[],ve=!1,ye=[],be=!1,V=[],xe=[],Se=[],Ce={};async function H(e){let t=await Zt(e);return{modeConfig:t,modeInclude:t.include?.length?Y([...n.include??[],...t.include]):ce,modeExclude:t.exclude?.length?Y([...n.exclude??[],...t.exclude]):le,pin:{...t.pin,...ue}}}function we(e,t){return n.types?.length?n.types:t?.types?.length?t.types:e===`npm`?Ie:e===`pypi`?Re:e===`go`?n.indirect?ze:ze.filter(e=>e!==`indirect`):e===`cargo`?Be:[]}function Te(e,t,n,r){A.docker??={};for(let i of n)for(let{ref:n}of jr(e,i)){if(!Q(n.fullImage,`docker`,r.include,r.exclude,`docker`))continue;let e=`${t}${n.fullImage}`;if(A.docker[e])continue;let i=kr(n.tag);i&&(A.docker[e]={old:i.version,oldOrig:n.tag},xe.push({key:e,fullImage:n.fullImage,ref:n,filePin:r.pin,fileCooldownDays:r.cooldownDays}))}}async function Ee(e){let t=await Zt(e);return{include:t.include?.length?Y([...n.include??[],...t.include]):ce,exclude:t.exclude?.length?Y([...n.exclude??[],...t.exclude]):le,pin:t.pin??{},cooldownDays:P(t.cooldown)}}let De=new Set,U=new Map;for(let e of pe){let t=o(e);if(t===`go.work`)De.add(`go`);else if(t===`pnpm-workspace.yaml`)De.add(`npm`);else if(t===`Cargo.toml`){let t=R.get(e);if(!t)continue;try{let n=E(t);U.set(e,n);let r=n.workspace?.members;Array.isArray(r)&&r.length&&De.add(`cargo`)}catch{}}}for(let e of pe){if(br(e)){let t=O.has(`actions`),n=O.has(`docker`);if(!t&&!n)continue;let r=R.get(e),i=F(e),a=await Ee(s(e));if(me[i]={absPath:e,content:r},t){A.actions??={};let e=Array.from(r.matchAll(fr),e=>pr(e[1])).filter(e=>e!==null);for(let t of e){if(!Q(t.name,`actions`,a.include,a.exclude,`actions`))continue;let e=`${i}${t.name}`;A.actions[e]||(A.actions[e]={old:t.ref},V.push({...t,key:e,apiUrl:mr(t.host,d),filePin:a.pin,fileCooldownDays:a.cooldownDays}))}}n&&(z[i]={absPath:e,content:r,fileType:`workflow`},Te(r,i,[wr,Tr,Er],a));continue}let t=o(e);if(Gr(t)){if(!O.has(`docker`))continue;let n=R.get(e),r=F(e),i=Wr(t)?`dockerfile`:`compose`,a=await Ee(s(e));z[r]={absPath:e,content:n,fileType:i},Te(n,r,[Kr(t)],a);continue}if(Yr(t)){if(!O.has(`make`))continue;let t=R.get(e),n=F(e),r=await Ee(s(e));he[n]={absPath:e,content:t},A.make??={};let i={projectDir:s(e),filePin:r.pin,fileCooldownDays:r.cooldownDays};for(let{installPath:e,version:a}of ei(t)){if(!Q(e,`make`,r.include,r.exclude,`make`))continue;let t=`${n}${e}`;A.make[t]||(A.make[t]={old:q(a),oldOrig:a},Se.push({kind:`go`,key:t,name:e,oldSpec:`${e}@${a}`,installPath:e,version:a,...i}))}for(let e of ai(t)){if(!Q(e.writtenImage,`make`,r.include,r.exclude,`make`))continue;let t=`${n}${e.writtenImage}`;if(A.make[t])continue;let a=kr(e.ref.tag);if(!a)continue;let o=ri(e.writtenImage,e.ref.tag,e.digest);A.make[t]={old:a.version,oldOrig:e.ref.tag},Se.push({kind:`docker`,key:t,name:e.writtenImage,oldSpec:o,image:e,...i})}continue}let n=Di[t];if(!O.has(n))continue;if(t===`go.work`){A[n]??={};let t=s(u(e)),i=R.get(e);B={file:e,content:i};let a=cr(i),[o,l]=await Promise.all([H(t),G(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=we(n,d);Ce[n]={modeConfig:d,projectDir:t,pin:m};for(let e of l){if(!e)continue;let{usePath:t,modPath:r,content:i}=e,a=nr(i),o=s(r);ge.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)&&L(n,e,c,r,dr(i),q(i))}}for(let[e,t]of Object.entries(a.replace))Q(e,n,f,p,`replace`)&&L(n,`replace`,``,e,dr(t),q(t));I+=Object.keys(A[n]).length;continue}if(t===`go.mod`&&ge.some(t=>t.absPath===u(e))||t===`package.json`&&ye.some(t=>t.absPath===u(e)))continue;if(t===`Cargo.toml`){A[n]??={};let t=Object.keys(A[n]).length,i=R.get(e),a=U.get(e)??E(i),o=s(u(e)),c=Ai([`Cargo.lock`],o).get(`Cargo.lock`),l=a.workspace?.members,d=Array.isArray(l)&&l.length,[f,p,m]=await Promise.all([H(o),c?S(c,`utf8`):Promise.resolve(null),d?Ti(l,o,`Cargo.toml`,r):Promise.resolve([])]),{modeConfig:h,modeInclude:g,modeExclude:_,pin:v}=f,y=we(n,h),b=p?gi(p):new Map,x=(e,t)=>{for(let r of y){let i=Ve(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;Oe(i)&&L(n,r,t,e,yi(b,e,i)??X(i),i)}else typeof a==`string`&&Oe(a)&&L(n,r,t,e,yi(b,e,a)??X(a),a)}}};if(d){ve=!0,Ce[n]={modeConfig:h,projectDir:o,pin:v},x(a,``),_e.push({absPath:u(e),content:i,memberPath:`.`});for(let e of m){_e.push(e);try{x(E(e.content),`|${e.memberPath}`)}catch(t){throw Error(`Error parsing ${e.absPath}: ${t.message}`)}}}else{let t=M[n]??=[],r=!t.length&&!De.has(n),s=r?`.`:F(e);t.push({absPath:u(e),content:i,memberPath:s,projectDir:o,modeConfig:h,pin:v,modeCooldownDays:P(h.cooldown)}),r&&(Ce[n]={modeConfig:h,projectDir:o,pin:v}),x(a,s===`.`?``:`|${s}`)}I+=Object.keys(A[n]).length-t;continue}if(t===`pnpm-workspace.yaml`){A[n]??={};let t=s(u(e)),i=R.get(e);be=!0;let a=Ei(i),o=c(t,`package.json`),[l,d,f]=await Promise.all([H(t),qe(S(o,`utf8`)),Ti(a,t,`package.json`,r)]),{modeConfig:p,modeInclude:m,modeExclude:h,pin:g}=l,_=we(n,p);Ce[n]={modeConfig:p,projectDir:t,pin:g};let v=(e,t)=>{for(let r of _){let i=e[r]||{};if(typeof i==`string`){let[e,a]=i.split(`@`);Q(e,n,m,h,r)&&L(n,r,t,e,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)&&(Dn(a)?L(n,r,t,e,kn(a,e).version,a):Oe(a)?L(n,r,t,e,X(a),a):On(a)?L(n,r,t,e,`0.0.0`,a):j[`${r}${t}${e}`]={old:a})}};if(d!==null){let e;try{e=JSON.parse(d)}catch(e){throw Error(`Error parsing ${o}: ${e.message}`)}ye.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}`)}ye.push(e),v(t,`|${e.memberPath}`)}I+=Object.keys(A[n]).length+Object.keys(j).length;continue}A[n]??={};let i=s(u(e)),{modeConfig:a,modeInclude:l,modeExclude:f,pin:p}=await H(i),m=we(n,a),h=M[n]??=[],g=!h.length&&!De.has(n),_=g?`.`:F(e),v=_===`.`?``:`|${_}`,y=R.get(e);h.push({absPath:u(e),content:y,memberPath:_,projectDir:i,modeConfig:a,pin:p,modeCooldownDays:P(a.cooldown)});let b={};try{n===`npm`?b=JSON.parse(y):n===`pypi`?b=E(y):n===`go`&&(b=nr(y))}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}let x=Object.keys(A[n]).length,C=Object.keys(j).length;for(let e of m){let t;if(t=n===`npm`||n===`go`?b[e]||{}:Ve(b,e)||{},Array.isArray(t)&&n===`pypi`)for(let{name:r,version:i}of Fe(t))Q(r,n,l,f,e)&&L(n,e,v,r,X(i),i);else if(typeof t==`string`){let[r,i]=t.split(`@`);Q(r,n,l,f,e)&&L(n,e,v,r,X(i),i)}else for(let[r,i]of Object.entries(t))Q(r,n,l,f,e)&&(n===`npm`&&Dn(i)?L(n,e,v,r,kn(i,r).version,i):n!==`go`&&Oe(i)?L(n,e,v,r,X(i),i):n===`npm`&&On(i)?L(n,e,v,r,`0.0.0`,i):n===`npm`?j[`${e}${v}${r}`]={old:i}:n===`go`&&L(n,e,v,r,dr(i),q(i)))}I+=Object.keys(A[n]).length-x+(Object.keys(j).length-C),g&&(Ce[n]={modeConfig:a,projectDir:i,pin:p})}if(A.actions&&(I+=Object.keys(A.actions).length),A.docker&&(I+=Object.keys(A.docker).length),A.make&&(I+=Object.keys(A.make).length),I===0)return{results:{},message:`No dependencies found, nothing to do.`};let ke=[],Ae={registry:n.registry};for(let[e,t]of Object.entries(Ce)){let n=A[e]&&Object.keys(A[e]).length>0,i=e===`npm`&&Object.keys(j).length>0;if(!n&&!i)continue;let{modeConfig:a,projectDir:o,pin:s}=t,c=P(a.cooldown);ke.push((async()=>{let t=new Map;for(let n of M[e]??[])n.memberPath!==`.`&&t.set(`|${n.memberPath}`,n);let n={modeConfig:a,projectDir:o,pin:s,modeCooldownDays:c},i=e=>{let r=e.slice(Si(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&&!oe)continue;let[,a]=t.split(`\0`),o=k(a).cooldownOverride??r;o&&!ot(n,o,N)&&delete e[t]}};if(await G(Object.keys(A[e]),async t=>{let[n,r]=t.split(`\0`),a=Si(n),{modeConfig:o,projectDir:s,pin:c,modeCooldownDays:u}=i(n),d=A[e][t],f=null;if(e===`npm`){let{oldOrig:n}=d;if(n&&Dn(n))f=await An(r,a,w);else if(n&&On(n))try{f=await Tn(r,a,o,Ae,w)}catch{delete A[e][t];return}else f=await Tn(r,a,o,Ae,w)}else f=e===`go`?await ir(r,a,d.oldOrig||d.old,s,w,_):e===`cargo`?await hi(r,a,w):await Ln(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}=k(p.name),S=d.old,C=d.oldOrig,ee=c[r],te=x??u,T=St(p,{usePre:g,useRel:v,useGreatest:h,semvers:y,range:S,mode:e,pinnedRange:ee,cooldownDays:te||void 0,now:te?N:void 0},{allowDowngrade:b,matchesAny:W,isGoPseudoVersion:Qn}),E=``;if([`go`,`pypi`].includes(e)&&T)E=T;else if(e===`cargo`&&T&&C)E=vi(C,T);else if(T)if(C&&On(C))E=String(pn()[`save-exact`])===`true`?T:`^${T}`;else if(C&&Dn(C)){let e=/^(npm:@jsr\/[^@]+@|jsr:@[^@]+@)(.+)$/.exec(C);e?E=`${e[1]}${T}`:C.startsWith(`jsr:`)&&(E=`jsr:${T}`)}else E=Mn(S,T,C);if(!T||T===S||C&&C===E){delete A[e][t];return}let D=``;e===`pypi`&&p.releases?.[T]?.[0]?.upload_time_iso_8601?D=p.releases[T][0].upload_time_iso_8601:e===`go`&&p.Time?D=p.Time:e===`cargo`&&p.time?.[T]&&(D=p.time[T]),d.new=E,C&&Dn(C)&&(d.newPrint=T),e===`npm`?l.set(t,{name:r,promise:En(p.name,T,o,Ae,w)}):e===`pypi`?d.info=Bt(p,m,p.info.name):e===`go`?d.info=lr(p.newPath||r):e===`cargo`&&(d.info=`https://crates.io/crates/${r}`),D&&Z(d,D)},{concurrency:r}),await Promise.all(Array.from(l,async([t,{name:n,promise:r}])=>{let i=await r,a=A[e][t];a&&(a.info=Bt({repository:i.repository,homepage:i.homepage},null,n),i.date&&Z(a,i.date))})),e===`npm`&&Object.keys(j).length){let t=(await G(Object.entries(j),([e,t])=>Fn(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;A[e][t]={old:j[t].old,new:r,oldPrint:Nt.test(o)?o.substring(0,7):o,newPrint:Nt.test(s)?s.substring(0,7):s,info:`https://github.com/${i}/${a}`},c&&Z(A[e][t],c)}}u(A[e])})())}V.length&&ke.push((async()=>{let e=new Map;for(let t of V){let n=`${t.apiUrl}/${t.owner}/${t.repo}`,r=e.get(n);r||e.set(n,r={apiUrl:t.apiUrl,owner:t.owner,repo:t.repo,infos:[]}),r.infos.push(t)}await G(e.values(),async({apiUrl:e,owner:t,repo:n,infos:i})=>{let a=await It(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=q(e.name);fe(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 hr(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=xt({},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(ot(a,e.cooldownDays,e.now))return{version:n,tag:r,commitSha:i,date:a};t.add(n)}return null}await G(i,async({key:e,host:r,ref:i,name:a,isHash:o,filePin:s,fileCooldownDays:u})=>{let p=A.actions[e],m=`https://${r||`github.com`}/${t}/${n}`,h=ue[a]??s[a];if(o){let{usePre:t,useRel:n,cooldownOverride:r}=k(a),o=r??u,s=await f({range:`0.0.0`,semvers:new Set([`patch`,`minor`,`major`]),usePre:t,useRel:n,useGreatest:!0,pinnedRange:h,cooldownDays:o||void 0,now:o?N:void 0});if(!s){delete A.actions[e];return}let{tag:c,commitSha:d,date:g}=s;if(!d||d===i||d.startsWith(i)||i.startsWith(d)){delete A.actions[e];return}let _=l.get(i);if(!_){for(let[e,t]of l)if(e.startsWith(i)){_=t;break}}p.old=i,p.new=d.substring(0,i.length),p.oldPrint=_||i.substring(0,7),p.newPrint=c,p.info=m,g&&Z(p,g)}else{let t=J(q(i));if(!t){delete A.actions[e];return}let{usePre:n,useRel:r,semvers:o,cooldownOverride:s}=k(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?N:void 0});if(!g){delete A.actions[e];return}let{tag:_,commitSha:v,date:y}=g,b=gr(_,i);if(b===i){delete A.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(A.actions).length||delete A.actions})()),xe.length&&ke.push((async()=>{let e=new Map;for(let t of xe){let n=e.get(t.fullImage);n||e.set(t.fullImage,n=[]),n.push(t)}await G(e.entries(),async([e,t])=>{let n;try{let[t]=await Ir(e,`docker`,w);n=t}catch{for(let e of t)delete A.docker[e.key];return}for(let e of t){let t=A.docker[e.key],r=t.oldOrig||t.old,{semvers:i,cooldownOverride:a}=k(e.fullImage),o=ue[e.fullImage]??e.filePin[e.fullImage],s=a??e.fileCooldownDays,c=Lr(n.tags,r,i,s||void 0,s?N:void 0,o);if(!c){delete A.docker[e.key];continue}t.new=c.newTag,t.info=qr(e.ref),Z(t,c.date)}},{concurrency:r}),Object.keys(A.docker).length||delete A.docker})()),Se.length&&ke.push((async()=>{await G(Se,async e=>{let{useGreatest:t,usePre:n,useRel:r,semvers:i,allowDowngrade:a,cooldownOverride:o}=k(e.name),s=ue[e.name]??e.filePin[e.name],c=o??e.fileCooldownDays,l={semvers:i,useGreatest:t,usePre:n,useRel:r,allowDowngrade:a,pinnedRange:s,cooldownDays:c||void 0,now:c?N:void 0},u=A.make[e.key],d;if(e.kind===`go`){let t=await qe(ui(e.installPath,e.version,e.projectDir,w,_,l));if(!t){delete A.make[e.key];return}e.newSpec=`${t.newInstallPath}@${t.newVersion}`,u.new=t.newVersion,d=t}else{let t=await qe(di(e.image,w,l));if(!t){delete A.make[e.key];return}e.newSpec=ri(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(A.make).length||delete A.make})());try{await Promise.all(ke)}finally{await it()}if(!Mi(A))return{results:{},message:`All dependencies are up to date.`};if(n.update){let e=(e,t,n)=>{for(let r of t){let t=Ci(A[e],r.memberPath);Object.keys(t).length&&$(r.absPath,n(r.content,t))}},t=new Map;if(A.actions)for(let[e,n]of Object.entries(A.actions)){let[r,i]=e.split(`\0`),a=t.get(r);a||t.set(r,a=[]),a.push({name:i,oldRef:n.old,newRef:n.new})}let n=new Map;if(A.docker)for(let[e,t]of Object.entries(A.docker)){let[r]=e.split(`\0`),i=n.get(r);i||n.set(r,i={}),i[e]=t}let r=new Map;if(A.make)for(let e of Se){if(!e.newSpec||!A.make[e.key])continue;let t=e.key.split(`\0`)[0],n=r.get(t);n||r.set(t,n=[]),n.push({oldSpec:e.oldSpec,newSpec:e.newSpec})}let i=Object.keys(A).sort((e,t)=>(e===`docker`)-+(t===`docker`));for(let a of i)if(Object.keys(A[a]).length){if(a===`actions`){for(let[e,n]of t){let{absPath:t,content:r}=me[e]||{};if(!t)continue;let i=_r(r,n);$(t,i),z[e]&&(z[e].content=i)}continue}if(a===`docker`){for(let[e,t]of n){let n=z[e];if(!n)continue;let{absPath:r,content:i,fileType:a}=n;$(r,(a===`dockerfile`?zr:a===`compose`?Br:Vr)(i,t))}continue}if(a===`make`){for(let[e,t]of r){let n=he[e];n&&$(n.absPath,fi(n.content,t))}continue}if(a===`go`){if(B){for(let e of ge){let t=Ci(A[a],e.usePath);if(!Object.keys(t).length)continue;let[n,r]=or(e.content,t);n!==e.content&&$(e.absPath,n),sr(e.projectDir,r,$)}let e={};for(let[t,n]of Object.entries(A[a]))t.split(`\0`)[0]===`replace`&&(e[t]=n);if(Object.keys(e).length){let[t]=or(B.content,e);t!==B.content&&$(B.file,t)}}for(let e of M.go??[]){let t=Ci(A[a],e.memberPath);if(!Object.keys(t).length)continue;let[n,r]=or(e.content,t);$(e.absPath,n),sr(e.projectDir,r,$)}}else a===`cargo`?(ve&&e(a,_e,xi),e(a,M.cargo??[],xi)):a===`npm`?(be&&e(a,ye,jn),e(a,M.npm??[],jn)):e(a,M[a]??[],Rn)}}return Fi(A)}function Ri(e){try{return Qt(h(c(e,`.npmrc`),`utf8`)).registry}catch{return}}function zi(e,t){if(typeof e!=`string`||!e)return t;try{return`${new URL(e).origin}/`}catch{return null}}function Bi(e,t){let n=(...t)=>t.some(t=>f(c(e,t))),r=new Set,i=e=>{e&&r.add(e)},a=zi(t.forgeapi,`https://api.github.com/`),o=zi(t.dockerapi,`https://hub.docker.com/`);return n(`package.json`,`pnpm-workspace.yaml`)&&(i(zi(typeof t.registry==`string`?t.registry:Ri(e),`https://registry.npmjs.org/`)),i(zi(t.jsrapi,`https://jsr.io/`)),i(a)),n(`pyproject.toml`)&&i(zi(t.pypiapi,`https://pypi.org/`)),n(`Cargo.toml`)&&i(zi(t.cargoapi,`https://crates.io/`)),n(`go.mod`,`go.work`)&&i(zi(t.goproxy,`https://proxy.golang.org/`)),n(...Hr)&&i(o),n(`.github/workflows`)&&(i(a),i(o)),Array.from(r)}function Vi(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
|
-
`;)
|
|
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 P(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function F(e,t){let n=P(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 pe(e){return N(e)?.version??null}function I(e){return N(e)}const me=new Map,L=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function he(e){if(typeof e!=`string`)return null;let t=me.get(e);if(t!==void 0)return t;let n=L.exec(e);if(!n)return me.set(e,null),null;let r={version:`${n[1]}.${n[2]||`0`}.${n[3]||`0`}`};return me.set(e,r),r}function R(e,t){let n=N(e),r=N(t);return!n||!r?null:ge(n,r)}function ge(e,t){if(e.version===t.version)return null;let n=F(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(P(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 _e(e,t){let n=N(e),r=N(t);return n&&r?F(n,r):null}function z(e,t){return(_e(e,t)??-1)>0}function ve(e,t){return(_e(e,t)??-1)>=0}function ye(e,t){return(_e(e,t)??1)<0}function be(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 xe(e,t){let n=F(e,t.semver);switch(t.op){case`>=`:return n>=0;case`<=`:return n<=0;case`>`:return n>0;case`<`:return n<0;case`=`:return n===0;default:return n===0}}function B(e,t,n){return`${e}.${t}.${n}-0`}function Se(e){return e.replace(/~\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.[xX*])*((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i)=>{let a=Number(t);if(n===void 0)return`>=${a}.0.0 <${B(a+1,0,0)}`;let o=Number(n);return`>=${a}.${o}.${r===void 0?0:Number(r)}${i||``} <${B(a,o+1,0)}`})}function 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),o=i||``;if(n===void 0)return`>=${a}.0.0 <${B(a+1,0,0)}`;let s=Number(n);if(r===void 0)return a===0?`>=${a}.${s}.0 <${B(a,s+1,0)}`:`>=${a}.${s}.0 <${B(a+1,0,0)}`;let c=Number(r);return a===0?s===0?`>=${a}.${s}.${c}${o} <${B(a,s,c+1)}`:`>=${a}.${s}.${c}${o} <${B(a,s+1,0)}`:`>=${a}.${s}.${c}${o} <${B(a+1,0,0)}`})}function we(e){return e.replace(/v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)\s+-\s+v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i,a,o,s,c)=>{let l=Number(t),u=n===void 0?0:Number(n),d=r===void 0?0:Number(r),f=i||``,p=Number(a),m;return m=s===void 0?o===void 0?`<${B(p+1,0,0)}`:`<${B(p,Number(o)+1,0)}`:`<=${p}.${Number(o)}.${Number(s)}${c||``}`,`>=${l}.${u}.${d}${f} ${m}`})}function Te(e,t,n,r){return!e||e===`=`?r?`>=${t}.0.0 <${B(t+1,0,0)}`:`>=${t}.${n}.0 <${B(t,n+1,0)}`:e===`>`?r?`>=${t+1}.0.0`:`>=${t}.${n+1}.0`:e===`<=`?r?`<${B(t+1,0,0)}`:`<${B(t,n+1,0)}`:e===`<`?r?`<${t}.0.0-0`:`<${t}.${n}.0-0`:r?`>=${t}.0.0`:`>=${t}.${n}.0`}function Ee(e){return/^\s*[*xX]\s*$/.test(e)?`>=0.0.0`:(e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)\.[xX*]/g,(e,t,n,r)=>Te(t,Number(n),Number(r),!1)),e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.[xX*](?:\.[xX*])?/g,(e,t,n)=>Te(t,Number(n),0,!0)),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)(?=\s|$)/g,(e,t,n,r,i)=>`${t}${Te(n,Number(r),Number(i),!1)}`),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)(?=\s|$)/g,(e,t,n,r)=>`${t}${Te(n,Number(r),0,!0)}`),e)}const V=new Map;function De(e){let t=V.get(e);if(t!==void 0)return t;let n=e.split(`||`).map(e=>e.trim()),r=[];for(let t of n){if(!t){r.push([]);continue}t=we(t),t=Ce(t),t=Se(t),t=Ee(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=be(t);if(!n)return V.set(e,null),null;i.push(n)}if(i.length===0)return V.set(e,null),null;r.push(i)}let i=r.length?r:null;return V.set(e,i),i}function Oe(e,t){return t.some(t=>!xe(e,t))?!1:e.prerelease.length>0?t.some(t=>t.semver.prerelease.length>0&&t.semver.major===e.major&&t.semver.minor===e.minor&&t.semver.patch===e.patch):!0}function H(e,t){let n=N(e);if(!n)return!1;let r=De(t);if(!r)return!1;for(let e of r)if(e.length===0||Oe(n,e))return!0;return!1}function ke(e){return typeof e==`string`&&De(e)?e:null}const Ae=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],je={"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`},Me={sec:`second`,min:`minute`};function Ne(e){return e instanceof Date?e.getTime():typeof e==`string`?Date.parse(e):e}function Pe(e,{now:t,noAffix:n=!1,times:r=Ae,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=je,longUnits:l=!1}={}){let u=Ne(e),d=t===void 0?Date.now():Ne(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&&Me[t[2]]||t[2])+(m>1?`s`:``);break}}let g=`${m} ${h}`,_;return _=n?g:p?`in ${g}`:`${g} ago`,s?c[_]??_:_}function Fe(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 Ie(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 Le=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],Re=[`node`,`deno`,`bun`],ze=[`project.dependencies`,`project.optional-dependencies`,`dependency-groups.dev`,`dependency-groups.lint`,`dependency-groups.test`],Be=[`deps`,`indirect`,`replace`,`tool`],Ve=[`dependencies`,`dev-dependencies`,`build-dependencies`,`workspace.dependencies`];function U(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 He(e,t){return t.split(`.`).reduce((e,t)=>e?.[t]??null,e)}function Ue(e){return e.split(`,`).filter(Boolean)}function We(){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 Ge(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 Ke={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function qe(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Ke[n.toLowerCase()];if(r)return Number(e)*r}if(!/^\d+(?:\.\d+)?$/.test(e))throw Error(`Invalid cooldown value: ${e}`);return Number(e)}async function W(e,t,{concurrency:n=1/0}={}){let r=Array.from(e);if(!Number.isFinite(n))return Promise.all(r.map(t));let i=Array(r.length),a=0;return await Promise.all(Array.from({length:Math.min(Math.max(n,1),r.length)},async()=>{for(;a<r.length;){let e=a++;i[e]=await t(r[e])}})),i}async function Je(e){try{return await e}catch{return null}}const G=e=>RegExp.escape?RegExp.escape(e):e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);async function Ye(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 Xe(e){let t=new Map;return n=>{let r=t.get(n);return r||(r=e(n),t.set(n,r)),r}}const Ze=c(r===`win32`?t.LOCALAPPDATA||c(te(),`AppData`,`Local`):t.XDG_CACHE_HOME||c(te(),`.cache`),`updates`);let Qe=null;const $e=new Map;function et(e){let t=$e.get(e);return t===void 0&&(t=ee(`sha256`).update(e).digest(`hex`).substring(0,16),$e.set(e,t)),t}async function tt(e){try{let t=await S(c(Ze,`${et(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 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.19.0`;function K(e,t,n){if(!t||!n||!e)return!0;let r=Date.parse(e);return Number.isNaN(r)?!0:(n-r)/(24*3600*1e3)>=t}const st=ot,ct=5e3,lt=2500,q=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/${st}`,"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 J(e,t,n={}){for(let r=0;;r++)try{return await e.doFetch(t,{...n,signal:AbortSignal.timeout(e.fetchTimeout)})}catch(e){if(r>=2||!e?.transient)throw e}}async function 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 J(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 J(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=Y(e),s=Y(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 Y(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=Y(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,!K(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=Y(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=Y(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)&&K(e.Time,c,l)&&(!s||H(g,s)))return e.new}let _=Y(e.sameMajorNew);if(_&&!f(e.sameMajorNew)&&!p(e.sameMajorNew)){let n=R(t,_);if(n&&o.has(n)&&Ct(h,e.sameMajorNew,m)&&K(e.sameMajorTime,c,l)&&(!s||H(_,s)))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}if(c&&l&&e.olderEligible&&!p(e.olderEligible.version)){let n=Y(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=Y(e.info.version),p=yt(f)):(r=e[`dist-tags`].latest,p=yt(r));let m=Y(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&&!K(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 J(t,e,a());let o=r?jt.get(r):void 0;if(o)return J(t,e,a(o));for(let n of i){let i=await J(t,e,a(n));if(i.status!==401&&i.status!==403)return r&&jt.set(r,n),i}return J(t,e,a())}function Pt(e,t){let n=q(t);if(!pe(n))return null;let r=``,i=``;for(let t of e){let e=q(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=q(e),a=q(t).split(`.`).length,o=i.split(`.`),s;return s=a===1?o[0]:a===2?`${o[0]}.${o[1]||`0`}`:i,`${r?`v`:``}${s}${n}`}function 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}function Jt(e){for(let[t,{short:n}]of Object.entries(Wt))if(t===e||n===e)return t;return``}function X(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:X(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,t={}){let n=await $t(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 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||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 J(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 Z(e){if(/[xX*]/.test(e))return e;let t=e.match(ln);return t?.length===1?e.replace(ln,Y(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(q(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:q(o),Time:s,...c!==e&&{newPath:c},sameMajorNew:q(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([J(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(q(e))?.version??q(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(q(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(q(e.version))?.version;if(!d||a&&!H(d,a)||!K(s,r,i))continue;if(d===c){l&&Date.parse(s)>Date.parse(u)&&(l=t,u=s);continue}let f=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`,q(t),n,r,i),c=Tt(s,{mode:`go`,range:q(t),semvers:a.semvers,useGreatest:a.useGreatest,usePre:a.usePre,useRel:a.useRel,pinnedRange:a.pinnedRange,cooldownDays:a.cooldownDays,now:a.now},{allowDowngrade:a.allowDowngrade,matchesAny: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(Z(`^${e}`),t,`^${e}`).replace(/^\^/,``):Fn(Z(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 Fi(e,t){t&&(e.date=t,e.age=Pe(t,{noAffix:!0}))}function Ii(e){let t=0;for(let n of Object.values(e))t+=Object.keys(n).length;return t}function Li(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 Ri(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 zi(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=q(i.old),i.new=q(i.new)),delete i.oldPrint,delete i.newPrint,delete i.oldOrig,delete i.date;let[r,a]=e.split(`\0`),o=t.results[n]??={};(o[r]??={})[a]=i}return t}let Bi=!1;async function Vi(t={}){if(!Bi){let{enableDnsCache:e}=await import(`./dns.js`);e(),Bi=!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:lt,forgeApiUrl:d,pypiApiUrl:f,jsrApiUrl:p,goProxyUrl:m,cratesIoUrl:h,dockerApiUrl:g,doFetch:async(e,t)=>{n.verbose&&Li(`${b(t?.method||`GET`)} ${e}`);let r=await mt(e,t);return n.verbose&&Li(`${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?X(e.include):void 0,exclude:e.exclude?.length?X(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=X(n.include??[]),ue=X(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=Ri(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={},Te={noCache:n.noCache,timeout:n.timeout||5e3};async function Ee(e){let t=await en(e,Te);return{modeConfig:t,modeInclude:t.include?.length?X([...n.include??[],...t.include]):le,modeExclude:t.exclude?.length?X([...n.exclude??[],...t.exclude]):ue,pin:{...t.pin,...de}}}function V(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 De(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 Oe(e){let t=await en(e,Te);return{include:t.include?.length?X([...n.include??[],...t.include]):le,exclude:t.exclude?.length?X([...n.exclude??[],...t.exclude]):ue,pin:t.pin??{},cooldownDays:N(t.cooldown)}}let H=new Set,Ae=new Map;for(let e of me){let t=o(e);if(t===`go.work`)H.add(`go`);else if(t===`pnpm-workspace.yaml`)H.add(`npm`);else if(t===`Cargo.toml`){let t=L.get(e);if(!t)continue;try{let n=E(t);Ae.set(e,n);let r=n.workspace?.members;Array.isArray(r)&&r.length&&H.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 Oe(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`},De(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 Oe(s(e));R[r]={absPath:e,content:n,fileType:i},De(n,r,[Yr(t)],a);continue}if(Qr(t)){if(!D.has(`make`))continue;let t=L.get(e),n=P(e),r=await Oe(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:q(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([Ee(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=V(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),q(i))}}for(let[e,t]of Object.entries(a.replace))Q(e,n,f,p,`replace`)&&I(n,`replace`,``,e,mr(t),q(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=Ae.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([Ee(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=V(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)??Z(i),i)}else typeof a==`string`&&ke(a)&&I(n,r,t,e,Si(b,e,a)??Z(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&&!H.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([Ee(t),Je(S(o,`utf8`)),Oi(a,t,`package.json`,r)]),{modeConfig:p,modeInclude:m,modeExclude:h,pin:g}=l,_=V(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,Z(a),a)}else if(typeof i==`object`&&!Array.isArray(i))for(let[e,a]of Object.entries(i))Q(e,n,m,h,r)&&(An(a)?I(n,r,t,e,Mn(a,e).version,a):ke(a)?I(n,r,t,e,Z(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 Ee(i),m=V(n,a),h=j[n]??=[],g=!h.length&&!H.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,Z(i),i);else if(typeof t==`string`){let[r,i]=t.split(`@`);Q(r,n,l,f,e)&&I(n,e,v,r,Z(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,Z(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),q(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 je=[],Me={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);je.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&&!K(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,Me,w)}catch{delete k[e][t];return}else f=await On(r,a,o,Me,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,Me,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&&Fi(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&&Fi(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&&Fi(k[e][t],c)}}u(k[e])})())}B.length&&je.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=q(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(K(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&&Fi(p,g)}else{let t=Y(q(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)Fi(p,y);else if(v){let e=await d(v);e&&Fi(p,e)}}},{concurrency:r})},{concurrency:r}),Object.keys(k.actions).length||delete k.actions})()),Se.length&&je.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),Fi(t,c.date)}},{concurrency:r}),Object.keys(k.docker).length||delete k.docker})()),Ce.length&&je.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&&Fi(u,d.date)},{concurrency:r}),Object.keys(k.make).length||delete k.make})());try{await Promise.all(je)}finally{await at()}if(!Ii(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 zi(k)}function Hi(e){try{return tn(h(c(e,`.npmrc`),`utf8`)).registry}catch{return}}function Ui(e,t){if(typeof e!=`string`||!e)return t;try{return`${new URL(e).origin}/`}catch{return null}}function Wi(e,t){let n=(...t)=>t.some(t=>f(c(e,t))),r=new Set,i=e=>{e&&r.add(e)},a=Ui(t.forgeapi,`https://api.github.com/`),o=Ui(t.dockerapi,`https://hub.docker.com/`);return n(`package.json`,`pnpm-workspace.yaml`)&&(i(Ui(typeof t.registry==`string`?t.registry:Hi(e),`https://registry.npmjs.org/`)),i(Ui(t.jsrapi,`https://jsr.io/`)),i(a)),n(`pyproject.toml`)&&i(Ui(t.pypiapi,`https://pypi.org/`)),n(`Cargo.toml`)&&i(Ui(t.cargoapi,`https://crates.io/`)),n(`go.mod`,`go.work`)&&i(Ui(t.goproxy,`https://proxy.golang.org/`)),n(...Gr)&&i(o),n(`.github/workflows`)&&(i(a),i(o)),Array.from(r)}const Gi=/[A-Za-z_$]/,Ki=/[A-Za-z0-9_$]/;function qi(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(Gi.test(o)){i=-1;let o=``;for(;n<r&&Ki.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{bt as A,tt as B,Mt as C,lt as D,Ht as E,K as F,Ye as G,Fe as H,Ft as I,ke as K,Pt as L,ut as M,st as N,It as O,Lt as P,q as R,dt as S,Ut as T,Xe as U,it as V,Ge as W,_t as _,Jt as a,wt as b,Yt as c,Y as d,mt as f,ct as g,vt as h,pr as i,yt as j,Ct as k,qt as l,Nt as m,Wi as n,en as o,zt as p,Vi as r,Wt as s,qi as t,Xt as u,J as v,At as w,Vt as x,Tt as y,Bt 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.0",
|
|
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.
|
|
46
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
47
|
-
"@vitest/coverage-v8": "4.1.
|
|
48
|
-
"eslint": "10.
|
|
49
|
-
"eslint-config-silverwind": "
|
|
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.1",
|
|
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.
|
|
57
|
-
"versions": "15.1.
|
|
58
|
-
"vitest": "4.1.
|
|
59
|
-
"vitest-config-silverwind": "11.3.
|
|
55
|
+
"typescript-config-silverwind": "20.0.1",
|
|
56
|
+
"updates-config-silverwind": "4.0.1",
|
|
57
|
+
"versions": "15.1.3",
|
|
58
|
+
"vitest": "4.1.10",
|
|
59
|
+
"vitest-config-silverwind": "11.3.7"
|
|
60
60
|
},
|
|
61
61
|
"bin": {
|
|
62
62
|
"updates": "dist/index.js"
|