updates 17.20.4 → 17.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -15,6 +15,10 @@
15
15
  - `Dockerfile*`, `compose*.{yml,yaml}`, `docker-*.{yml,yaml}` - docker images
16
16
  - `Makefile`, `*.mk` - go tool versions in `go install` paths and docker image tags
17
17
 
18
+ A docker image is keyed by image *and* tag, so a multi-stage file that references one image at two tags yields a row for each, labelled `image:tag`. Only LTS `ubuntu` tags are offered, as Renovate does.
19
+
20
+ A `pnpm-workspace.yaml` `catalog:` and `catalogs:` entry is resolved and rewritten in the workspace file. A member's `catalog:` or `catalog:<name>` value only names a catalog, so it is not reported on its own and stays as authored. An `npm:<pkg>@<range>` alias is resolved as the aliased package while the manifest keeps the alias as its key, and the `npm:<pkg>@` prefix is written back with the new range.
21
+
18
22
  ## Usage
19
23
 
20
24
  ```bash
@@ -35,7 +39,7 @@ npx updates -u && npm i
35
39
  |`-i, --include <dep,...>`|Include only given dependencies|
36
40
  |`-e, --exclude <dep,...>`|Exclude given dependencies|
37
41
  |`-l, --pin <dep=range>`|Pin dependency to given semver range|
38
- |`-C, --cooldown <duration>`|Minimum dependency age, e.g. `7` (days), `1w`, `2d`, `6h`|
42
+ |`-C, --cooldown <duration>`|Minimum dependency age. A bare number is days, or suffix one of `y` (365 days), `m` (30 days), `w`, `d`, `h`, `s`, so `5m` is five months and there is no minutes unit. A version the registry publishes no date for is never offered while a cooldown is active|
39
43
  |`-p, --prerelease [<dep,...>]`|Consider prerelease versions|
40
44
  |`-R, --release [<dep,...>]`|Only use release versions, may downgrade|
41
45
  |`-g, --greatest [<dep,...>]`|Prefer greatest over latest version|
@@ -57,7 +61,15 @@ npx updates -u && npm i
57
61
  |`-V, --verbose`|Print verbose output to stderr|
58
62
  |`-h, --help`|Print the help|
59
63
 
60
- Options that take multiple arguments can take them either via comma-separated value or by specifying the option multiple times. If an option has a optional `dep` argument but none is given, the option will be applied to all dependencies instead. All `dep` options support glob matching via `*` or regex (on CLI, wrap the regex in slashes, e.g. `'/^foo/'`).
64
+ Options that take multiple arguments can take them either via comma-separated value or by specifying the option multiple times. If an option has a optional `dep` argument but none is given, the option will be applied to all dependencies instead. The `dep` options support glob matching via `*` or regex (on CLI, wrap the regex in slashes, e.g. `'/^foo/'`), except `-l/--pin`, whose `dep` is an exact dependency name.
65
+
66
+ An invalid `--sockets`, `--timeout` or `--pin` range aborts the run rather than being ignored. `--sockets` and `--timeout` are rounded to a whole number.
67
+
68
+ ## Failed Lookups
69
+
70
+ A dependency whose version could not be looked up is reported on its own and does not hold back the other results, which are still printed and written. Such a run always exits with code 1, ahead of any `-E` or `-U` signal, so a failure never passes as either "outdated" or "up to date". With `-j` the failures are listed in an `errors` array of `{mode, type, name, error}` objects alongside any `results`.
71
+
72
+ Without `-j` a failure prints to stdout as `mode name: error`, dropping the `type`, so a docker or make failure names no file. A run where every lookup failed prints those lines alone, without the usual "All dependencies are up to date." message.
61
73
 
62
74
  ## Config File
63
75
 
@@ -79,10 +91,21 @@ export default {
79
91
  - `exclude` *Array\<string | RegExp>*: Array of dependencies to exclude
80
92
  - `types` *Array\<string>*: Array of dependency types to use
81
93
  - `registry` *string*: URL to npm registry
82
- - `cooldown` *number | string*: Minimum dependency age, e.g. `7` (days), `"1w"`, `"2d"`, `"6h"`
83
- - `pin` *Record\<string, string>*: Pin dependencies to semver ranges
94
+ - `cooldown` *number | string*: Minimum dependency age. A bare number is days, or suffix one of `y` (365 days), `m` (30 days), `w`, `d`, `h`, `s`, so `"5m"` is five months and there is no minutes unit. A version the registry publishes no date for is never offered while a cooldown is active
95
+ - `pin` *Record\<string, string>*: Pin dependencies to semver ranges, keyed by exact dependency name
84
96
  - `files` *Array\<string>*: File or directory paths to use
85
97
  - `modes` *Array\<string>*: Which modes to enable
98
+ - `update` *boolean*: Update versions and write dependency files
99
+ - `indirect` *boolean*: Include indirect Go dependencies
100
+ - `timeout` *number*: Network request timeout in ms
101
+ - `sockets` *number*: Maximum number of parallel HTTP sockets
102
+ - `noCache` *boolean*: Disable HTTP cache
103
+ - `json` *boolean*: Output a JSON object
104
+ - `verbose` *boolean*: Print verbose output to stderr
105
+ - `errorOnOutdated` *boolean*: Exit with code 2 when updates are available
106
+ - `errorOnUnchanged` *boolean*: Exit with code 0 when updates are available and 2 when not
107
+ - `color` *boolean*: Force color output
108
+ - `noColor` *boolean*: Disable color output
86
109
  - `greatest` *boolean | Array\<string | RegExp>*: Prefer greatest over latest version
87
110
  - `prerelease` *boolean | Array\<string | RegExp>*: Consider prerelease versions
88
111
  - `release` *boolean | Array\<string | RegExp>*: Only use release versions
@@ -115,7 +138,7 @@ A `cooldown` of `0` in an override disables a global cooldown for the matched de
115
138
 
116
139
  ### Renovate config
117
140
 
118
- If a [Renovate](https://docs.renovatebot.com/) config is found, `ignoreDeps` and simple `packageRules` are inherited as `include`/`exclude`/`pin`. A rule that disables only negated matchers, like `"matchPackageNames": ["!/^@types/"]`, becomes an `include` since it leaves just those packages enabled. `minimumReleaseAge` is *not* inherited as `cooldown` by default — opt in via:
141
+ If a [Renovate](https://docs.renovatebot.com/) config is found, `ignoreDeps` and simple `packageRules` are inherited as `include`/`exclude`/`pin`. Rules are evaluated in order, as Renovate evaluates them, so a later `"enabled": true` re-enables what an earlier rule disabled, and a rule that disables everything turns the rules after it into an allow-list. A rule that disables only negated matchers, like `"matchPackageNames": ["!/^@types/"]`, becomes an `include` since it leaves just those packages enabled. A top-level `"enabled": false` disables the repository. A rule matching on anything else, or mixing positive with negated matchers, is skipped, and is reported on stderr when it carried something inheritable. A preset in `extends` that cannot be fetched is an error, never an empty preset. An `allowedVersions` is inherited as a `pin` that filters candidates but, unlike `pin` and `--pin`, never moves a dependency down, as it is a ceiling in Renovate too. `minimumReleaseAge` is *not* inherited as `cooldown` by default, opt in via:
119
142
 
120
143
  ```ts
121
144
  export default {
@@ -125,7 +148,7 @@ export default {
125
148
  } satisfies Config;
126
149
  ```
127
150
 
128
- Values in `updates.config` override anything inherited.
151
+ Values in `updates.config` override anything inherited. `pin` merges with the inherited `allowedVersions` ceilings per dependency: an authored entry replaces the ceiling of the same name and may downgrade into its range, while the other ceilings keep filtering.
129
152
 
130
153
  ## API
131
154
 
@@ -155,22 +178,22 @@ const output = await updates({
155
178
  //=> }
156
179
  ```
157
180
 
158
- The `updates()` function accepts all [config options](#config-options).
181
+ The `updates()` function accepts all [config options](#config-options). A lookup that failed is reported in an `errors` array on the return value, absent when nothing failed, see [Failed Lookups](#failed-lookups).
159
182
 
160
183
  ## Environment Variables
161
184
 
162
185
  |Variable|Description|
163
186
  |:-|:-|
164
- |`UPDATES_FORGE_TOKENS`|Comma-separated list of `host:token` pairs for authenticating against forge APIs (e.g. `github.com:ghp_xxx,gitea.example.com:tok_xxx`)|
187
+ |`UPDATES_FORGE_TOKENS`|Comma-separated list of `host:token` pairs for authenticating against forge APIs (e.g. `github.com:ghp_xxx,localhost:3500:tok_xxx`). The host must match the URL exactly, port included|
165
188
  |`UPDATES_GITHUB_API_TOKEN`|GitHub API token for authenticating forge API requests|
166
189
  |`GITHUB_API_TOKEN`|Fallback GitHub API token|
167
190
  |`GH_TOKEN`|Fallback GitHub API token|
168
191
  |`GITHUB_TOKEN`|Fallback GitHub API token|
169
192
  |`HOMEBREW_GITHUB_API_TOKEN`|Fallback GitHub API token|
170
- |`GOPROXY`|Go module proxy URL. Default: `https://proxy.golang.org,direct`|
171
- |`GONOPROXY`|Comma-separated list of Go module patterns to fetch directly, bypassing the proxy|
193
+ |`GOPROXY`|Go module proxy list, honored as go itself does: `,` falls through to the next entry when the module is absent there, `\|` on any error, `off` fails the lookup and `direct` resolves through the VCS, both ending the list. A bare host gains an implicit `https://`. `direct` runs the `go` binary, so under the default list any module the proxy does not carry needs `go` on `PATH`. Default: `https://proxy.golang.org,direct`|
194
+ |`GONOPROXY`|Comma-separated list of Go module patterns to fetch directly, bypassing the proxy. Patterns are matched with go's `path.Match`, where `*` does not cross a `/`, and a match on a leading path element covers the whole subtree|
172
195
  |`GOPRIVATE`|Fallback for `GONOPROXY` when not set|
173
196
 
174
- Token resolution order for forge APIs: `UPDATES_FORGE_TOKENS` (matched by hostname) > `UPDATES_GITHUB_API_TOKEN` > `GITHUB_API_TOKEN` > `GH_TOKEN` > `GITHUB_TOKEN` > `HOMEBREW_GITHUB_API_TOKEN`. The GitHub token fallback is only sent to GitHub itself; any other forge host (e.g. one referenced in a workflow `uses:`) is authenticated only with a matching `UPDATES_FORGE_TOKENS` entry, and otherwise receives no credentials.
197
+ Token resolution order for forge APIs: `UPDATES_FORGE_TOKENS` (matched by host) > `UPDATES_GITHUB_API_TOKEN` > `GITHUB_API_TOKEN` > `GH_TOKEN` > `GITHUB_TOKEN` > `HOMEBREW_GITHUB_API_TOKEN`. The GitHub token fallback is only sent to GitHub itself; any other forge host (e.g. one referenced in a workflow `uses:`) is authenticated only with a matching `UPDATES_FORGE_TOKENS` entry, and otherwise receives no credentials.
175
198
 
176
199
  © [silverwind](https://github.com/silverwind), distributed under BSD licence
package/dist/api.d.ts CHANGED
@@ -102,7 +102,7 @@ type Deps = {
102
102
  type DepsByMode = {
103
103
  [mode: string]: Deps;
104
104
  };
105
- type Output = {
105
+ type Output$1 = {
106
106
  results: {
107
107
  [mode: string]: {
108
108
  [type: string]: Deps;
@@ -112,6 +112,18 @@ type Output = {
112
112
  };
113
113
  //#endregion
114
114
  //#region api.d.ts
115
+ /** A dependency whose lookup failed. Every other dependency is still resolved and written. */
116
+ type DepError = {
117
+ mode: string;
118
+ /** The dependency type, or the file path for the file-scoped modes, as in `results` */
119
+ type: string;
120
+ name: string;
121
+ error: string;
122
+ };
123
+ /** `errors` is absent unless a lookup failed, keeping a clean run's shape unchanged. */
124
+ type Output = Output$1 & {
125
+ errors?: Array<DepError>;
126
+ };
115
127
  type UpdatesOptions = Config & {
116
128
  /** Override GitHub/Gitea API URL (for testing) */
117
129
  forgeapi?: string;
@@ -128,4 +140,4 @@ type UpdatesOptions = Config & {
128
140
  };
129
141
  declare function updates(opts?: UpdatesOptions): Promise<Output>;
130
142
  //#endregion
131
- export { type Config, type Dep, type Deps, type DepsByMode, type Output, type Override, UpdatesOptions, updates };
143
+ export { type Config, type Dep, DepError, type Deps, type DepsByMode, Output, type Override, UpdatesOptions, updates };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{R as e,Y as t,Z as n,a as r,g as i,i as a,n as o,o as s,r as c,s as l}from"./shared.js";import{exit as u,platform as d,stderr as f,stdout as p,versions as m}from"node:process";import{stripVTControlCharacters as h,styleText as g}from"node:util";const{args:_,positionals:v}=c();if(!_.help&&!_.version)for(let e of o(r(_,v).startDir,_))(async()=>{try{await fetch(e,{method:`HEAD`})}catch{}})();let y=String,b=String,x=!1;async function S(e,t){if(e){let t=e.message??String(e);console.info(x?JSON.stringify({error:t}):y(t))}d===`win32`&&Number(m.node.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),u(t??+!!e)}async function C(){for(let e of[p,f])e?._handle?.setBlocking?.(!0);_.help&&(p.write(`usage: updates [options] [files...]
2
+ import{V as e,a as t,i as n,n as r,o as i,ot as a,r as o,rt as s,s as c,v as l}from"./shared.js";import{exit as u,platform as d,stderr as f,stdout as p,versions as m}from"node:process";import{stripVTControlCharacters as h,styleText as g}from"node:util";const{args:_,positionals:v}=o();if(!_.help&&!_.version)for(let e of r(t(_,v).startDir,_))(async()=>{try{await fetch(e,{method:`HEAD`})}catch{}})();let y=String,b=String,x=!1;async function S(e,t){if(e){let t=e.message??String(e);console.info(x?JSON.stringify({error:t}):y(t))}d===`win32`&&Number(m.node.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),u(t??+!!e)}async function C(){for(let e of[p,f])e?._handle?.setBlocking?.(!0);_.help&&(p.write(`usage: updates [options] [files...]
3
3
 
4
4
  Options:
5
5
  -u, --update Update versions and write dependency file
@@ -17,7 +17,7 @@ import{R as e,Y as t,Z as n,a as r,g as i,i as a,n as o,o as s,r as c,s as l}fro
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: ${i}
20
+ -T, --timeout <ms> Network request timeout in ms (go probes use half). Default: ${l}
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{R as e,Y as t,Z as n,a as r,g as i,i as a,n as o,o as s,r as c,s as l}fro
44
44
  $ updates -f Dockerfile
45
45
  $ updates -f docker-compose.yml
46
46
  $ updates -f Makefile
47
- `),await S()),_.version&&(console.info(e),await S());let t=await a(_,v);!t.noColor&&(t.color||p.isTTY)&&(y=e=>g(`red`,String(e)),b=e=>g(`green`,String(e))),x=!!t.json;let n=await s(t),r=Object.keys(n.results).length>0;if(n.message)console.info(t.json?JSON.stringify({message:n.message}):n.message);else if(r&&(t.json?console.info(JSON.stringify({results:n.results})):console.info(T(n)),t.update))for(let[e,t]of Object.entries(n.results))Object.values(t).some(e=>Object.keys(e).length)&&console.info(b(`✨ ${e} updated`));t.errorOnOutdated?await S(void 0,r?2:0):t.errorOnUnchanged?await S(void 0,r?0:2):await S()}const w=e=>h(e).length;function T(e){let r=Object.keys(e.results),i=r.length>1,a=[i?[`NAME`,`MODE`,`OLD`,`NEW`,`AGE`,`INFO`]:[`NAME`,`OLD`,`NEW`,`AGE`,`INFO`]],o=new Set;for(let n of r)for(let r of Object.values(e.results[n]))for(let[e,s]of Object.entries(r)){let r=`${n}|${e}|${s.old}|${s.new}`;o.has(r)||(o.add(r),a.push([n===`go`?l(e):e,...i?[n]:[],t(s.old,s.new,y),t(s.new,s.old,b),s.age||``,s.info||``]))}return n(a,w)}try{await C()}catch(e){await S(e)}export{};
47
+ `),await S()),_.version&&(console.info(e),await S());let t=await n(_,v);!t.noColor&&(t.color||p.isTTY)&&(y=e=>g(`red`,String(e),{validateStream:!1}),b=e=>g(`green`,String(e),{validateStream:!1})),x=!!t.json;let r=await i(t),a=Object.keys(r.results).length>0,o=r.errors??[];if(t.json?console.info(JSON.stringify({...r.message&&{message:r.message},...a&&{results:r.results},...o.length&&{errors:o}})):r.message?console.info(r.message):a&&console.info(T(r)),t.update&&a&&!t.json)for(let[e,t]of Object.entries(r.results))Object.values(t).some(e=>Object.keys(e).length)&&console.info(b(`✨ ${e} updated`));if(!t.json)for(let{mode:e,name:t,error:n}of o)console.info(y(`${e} ${t}: ${n}`));o.length?await S(void 0,1):t.errorOnOutdated?await S(void 0,a?2:0):t.errorOnUnchanged?await S(void 0,a?0:2):await S()}const w=e=>h(e).length;function T(e){let t=Object.keys(e.results),n=t.length>1,r=[n?[`NAME`,`MODE`,`OLD`,`NEW`,`AGE`,`INFO`]:[`NAME`,`OLD`,`NEW`,`AGE`,`INFO`]],i=new Set;for(let a of t){let t=Object.values(e.results[a]).flatMap(e=>Object.entries(e));for(let[e,o]of t.sort(([e],[t])=>e.localeCompare(t))){let t=`${a}|${e}|${o.old}|${o.new}`;i.has(t)||(i.add(t),r.push([a===`go`?c(e):e,...n?[a]:[],s(o.old,o.new,y),s(o.new,o.old,b),o.age||``,o.info||``]))}}return a(r,w)}try{await C()}catch(e){await S(e)}export{};
package/dist/renovate.js CHANGED
@@ -1 +1 @@
1
- import{$ as e,J as t,K as n,Q as r,X as i,q as a,t as o}from"./shared.js";import{join as s}from"node:path";import{readFile as c}from"node:fs/promises";const l=[`renovate.json`,`renovate.json5`,...[...t,`.gitlab`].flatMap(e=>[`${e}/renovate.json`,`${e}/renovate.json5`]),`.renovaterc`,`.renovaterc.json`,`.renovaterc.json5`],u={y:365,year:365,years:365,mo:30,month:30,months:30,w:7,week:7,weeks:7,d:1,day:1,days:1,h:1/24,hour:1/24,hours:1/24,min:1/1440,minute:1/1440,minutes:1/1440,s:1/86400,second:1/86400,seconds:1/86400};function d(e){let t=0,n=!1,r=/(\d+(?:\.\d+)?)\s*([a-z]+)/gi,i;for(;(i=r.exec(e))!==null;){let e=u[i[2].toLowerCase()];if(e===void 0)return;t+=Number(i[1])*e,n=!0}return n?t:void 0}function f(e){return!Array.isArray(e.matchPackageNames)||!e.matchPackageNames.length?!1:Object.keys(e).every(e=>!e.startsWith(`match`)||e===`matchPackageNames`)}async function p(e){let t=(await Promise.all(l.map(async t=>{let n=s(e,...t.split(`/`));try{return{path:n,text:await c(n,`utf8`)}}catch{return null}}))).find(e=>e!==null);if(t)return t;try{let t=s(e,`package.json`),n=JSON.parse(await c(t,`utf8`));if(n&&typeof n==`object`&&n.renovate&&typeof n.renovate==`object`)return{path:t,text:JSON.stringify(n.renovate)}}catch{}}function m(e){let t=/^\/(.+)\/([a-z]*)$/.exec(e);if(!t)return e;try{return new RegExp(t[1],t[2])}catch{return e}}function h(e){return/[*?[\]{}!()|+]/.test(e)}function g(t,n){let r={};if(n.cooldown&&typeof t.minimumReleaseAge==`string`){let e=d(t.minimumReleaseAge);e!==void 0&&e>0&&(r.cooldown=e)}let i=[],a=[],o={};if(Array.isArray(t.ignoreDeps)&&a.push(...t.ignoreDeps.filter(e=>typeof e==`string`&&!!e)),Array.isArray(t.packageRules))for(let n of t.packageRules){if(!n||typeof n!=`object`||!f(n))continue;let t=n.matchPackageNames.filter(e=>typeof e==`string`&&!!e),r=Object.groupBy(t,e=>e.startsWith(`!`)&&e.length>1?`negated`:`positive`),s=r.positive??[],c=r.negated?.map(e=>e.substring(1))??[];if(n.enabled===!1)if(s.length)for(let e of s)a.push(m(e));else for(let e of c)i.push(m(e));if(typeof n.allowedVersions==`string`&&e(n.allowedVersions))for(let e of s)!h(e)&&typeof m(e)==`string`&&(o[e]=n.allowedVersions)}return i.length&&(r.include=i),a.length&&(r.exclude=a),Object.keys(o).length&&(r.pin=o),r}const _={github:(e,t,n)=>`https://raw.githubusercontent.com/${e}/${t}/${n}`,gitlab:(e,t,n)=>`https://gitlab.com/${e}/-/raw/${t}/${n}`,gitea:(e,t,n)=>`https://gitea.com/api/v1/repos/${e}/raw/${n}?ref=${t}`,forgejo:(e,t,n)=>`https://code.forgejo.org/api/v1/repos/${e}/raw/${n}?ref=${t}`};function v(e){if(/^https?:\/\//i.test(e))return{kind:`http`,url:e};let t=e.indexOf(`>`);if(t===-1)return null;let n=e.slice(0,t);if(!Object.hasOwn(_,n))return null;let r=e.slice(t+1).replace(/\([^)]*\)\s*$/,``),i=`HEAD`,a=r.indexOf(`#`);a!==-1&&(i=r.slice(a+1)||`HEAD`,r=r.slice(0,a));let o,s,c=r.indexOf(`//`);if(c!==-1)o=r.slice(c+2),r=r.slice(0,c);else{let e=r.indexOf(`:`);e!==-1&&(s=r.slice(e+1),r=r.slice(0,e))}let l=r.replace(/\/+$/,``);return l.includes(`/`)?{kind:`forge`,forge:n,slug:l,ref:i,name:s,subpath:o}:null}const y=[`default.json`,`default.json5`,`renovate.json`,`renovate.json5`,`.renovaterc.json`,`.renovaterc`];function b(e){return/\.json5?$/.test(e)?[e]:[`${e}.json`,`${e}.json5`]}function x(e){if(e===null)return null;try{let t=o(e);return t&&typeof t==`object`?t:null}catch{return null}}async function S(e,t){if(e.kind===`http`)return x(await t(e.url));let n=_[e.forge],r=async r=>x(await t(n(e.slug,e.ref,r)));if(e.subpath){for(let t of b(e.subpath)){let e=await r(t);if(e)return e}return null}let i=e.name??`default`;for(let t of y){let n=await r(t);if(!n)continue;let a=n.presets?.[i];return a&&typeof a==`object`?a:e.name?null:n}return null}function C(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];n[e]=Array.isArray(r)&&Array.isArray(t)?[...t,...r]:r}return n}async function w(e,t,n,r){let i={},a=Array.isArray(e.extends)?e.extends:[];for(let e of a){if(typeof e!=`string`||r>=10||n.has(e))continue;let a=v(e);if(!a)continue;let o=await S(a,t);o&&(i=C(i,await w(o,t,new Set(n).add(e),r+1)))}let{extends:o,...s}=e;return C(i,s)}async function T(e,t){let n=``;try{n=new URL(e).hostname}catch{}let{getForgeTokens:r,getFetchOpts:i,githubApiUrl:a}=await import(`./shared2.js`),[o]=n?await r(n,a):[],s={...i(`Bearer`,o).headers};return t&&(s[`if-none-match`]=t),s}function E({noCache:e=!1,timeout:t=1e4}={}){return async r=>{let i=e?null:await n(r),o=await T(r,i?.etag),s;try{s=await fetch(r,{headers:o,signal:AbortSignal.timeout(t)})}catch{return i?.body??null}if(s.status===304&&i)return i.body;if(!s.ok)return i?.body??null;let c;try{c=await s.text()}catch{return i?.body??null}let l=s.headers.get(`etag`);return l&&!e&&a(r,l,c),c}}const D=i(e=>r(e,async e=>{let t=await p(e);if(!t)return null;let n;try{n=o(t.text)}catch(e){throw Error(`Unable to parse renovate config ${t.path}: ${e.message}`)}return!n||typeof n!=`object`?null:{parsed:n,path:t.path}})),O=new Map;async function k(e,t={},n=E()){let r=await D(e);if(!r)return{};let i=O.get(r.path);return i||(i=w(r.parsed,n,new Set,0),O.set(r.path,i)),g(await i,t)}export{k as loadRenovateConfig,E as makePresetFetcher};
1
+ import{$ as e,L as t,Q as n,at as r,et as i,it as a,nt as o,st as s,t as c,tt as l}from"./shared.js";import{join as u}from"node:path";import{readFile as d}from"node:fs/promises";const f=[`renovate.json`,`renovate.jsonc`,`renovate.json5`,...[...l,`.gitlab`].flatMap(e=>[`${e}/renovate.json`,`${e}/renovate.jsonc`,`${e}/renovate.json5`]),`.renovaterc`,`.renovaterc.json`,`.renovaterc.jsonc`,`.renovaterc.json5`],p={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 m(e){let t=0,n=!1,r=/(\d+(?:\.\d+)?)\s*([a-z]+)/gi,i;for(;(i=r.exec(e))!==null;){let e=p[i[2].toLowerCase()];if(e===void 0)return;t+=Number(i[1])*e,n=!0}return n?t:void 0}function h(e){console.error(`renovate config: ${e}`)}const g={matchPackageNames:e=>e,packageNames:e=>e,matchPackagePatterns:e=>e===`*`?`*`:`/${e}/`,packagePatterns:e=>e===`*`?`*`:`/${e}/`,matchPackagePrefixes:e=>`${e}*`,excludePackageNames:e=>`!${e}`,excludePackagePatterns:e=>`!/${e}/`,excludePackagePrefixes:e=>`!${e}*`},_=[`updateTypes`,`managers`,`datasources`,`depTypeList`,`paths`,`languages`,`baseBranchList`,`sourceUrlPrefixes`],v=new Set([`*`,`**`]);function y(e){let t=[];for(let[n,r]of Object.entries(e)){let e=Object.hasOwn(g,n)?g[n]:void 0;if(!e){if(n.startsWith(`match`)||n.startsWith(`exclude`)||_.includes(n))return n;continue}let i=typeof r==`string`?[r]:r;if(!Array.isArray(i))return n;for(let r of i){if(typeof r!=`string`||!r)return n;t.push(e(r))}}return t}function b(e){let t=Object.groupBy(e,e=>e.startsWith(`!`)&&e.length>1?`negated`:`positive`);return{positive:t.positive??[],negated:t.negated?.map(e=>e.substring(1))??[]}}function x(e,t){return e instanceof RegExp&&t instanceof RegExp?e.source===t.source&&e.flags===t.flags:e===t}async function S(e){let t=(await Promise.all(f.map(async t=>{let n=u(e,...t.split(`/`));try{return{path:n,text:await d(n,`utf8`)}}catch{return null}}))).find(e=>e!==null);if(t)return t;try{let t=u(e,`package.json`),n=JSON.parse(await d(t,`utf8`));if(n&&typeof n==`object`&&n.renovate&&typeof n.renovate==`object`)return{path:t,text:JSON.stringify(n.renovate)}}catch{}}function C(e){let t=/^\/(.+)\/([a-z]*)$/.exec(e);if(!t)return e;try{return new RegExp(t[1],t[2])}catch{return e}}function w(e){return/[*?[\]{}!()|+]/.test(e)}function T(e){let t=null,n=[],a={};for(let o of e){if(!o||typeof o!=`object`)continue;let e=y(o);if(!Array.isArray(e)){(o.enabled!==void 0||typeof o.allowedVersions==`string`)&&h(`skipping packageRule with unsupported matcher ${e}`);continue}let{positive:s,negated:c}=b(e);if(o.enabled===!1)if(s.length&&c.length)h(`skipping packageRule mixing matchers and negations: ${e.join(`, `)}`);else if(!e.length||s.some(e=>v.has(e)))t=[];else if(!s.length)t===null?t=c.map(C):t.length&&h(`skipping packageRule narrowing an allow-list: ${e.join(`, `)}`);else for(let e of s)n.push(C(e));else if(o.enabled===!0&&(t!==null||n.length))if(!e.length)t=null,n=[];else if(c.length||!s.length)h(`skipping packageRule re-enabling by negation: ${e.join(`, `)}`);else for(let e of s){let i=C(e),a=n.filter(e=>!x(e,i));a.length===n.length&&n.some(t=>r(t).test(e))&&h(`packageRule re-enables ${e}, which a wider exclude keeps disabled`),n=a,t?.push(i)}if(typeof o.allowedVersions==`string`&&i(o.allowedVersions))for(let e of s)!w(e)&&typeof C(e)==`string`&&(a[e]=o.allowedVersions)}return{allowed:t,disabled:n,pin:a}}function E(e,t){if(e.enabled===!1)return h(`enabled is false, skipping all dependencies`),{exclude:[`*`]};let n={};if(t.cooldown&&typeof e.minimumReleaseAge==`string`){let t=m(e.minimumReleaseAge);t!==void 0&&t>0&&(n.cooldown=t)}let r=Array.isArray(e.ignoreDeps)?e.ignoreDeps.filter(e=>typeof e==`string`&&!!e):[],{allowed:i,disabled:a,pin:o}=T(Array.isArray(e.packageRules)?e.packageRules:[]),s=[...r,...a];return i?.length&&(n.include=i),i&&!i.length&&s.push(`*`),s.length&&(n.exclude=s),Object.keys(o).length&&(n.pin=o,n.pinNoDowngrade=!0),n}const D={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 O(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(D,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 k=[`default.json`,`default.json5`,`renovate.json`,`renovate.json5`,`.renovaterc.json`,`.renovaterc`];function A(e){return/\.json[5c]?$/.test(e)?[e]:[`${e}.json`,`${e}.json5`]}function j(e,t){if(e===null)return null;let n;try{n=c(e)}catch{throw Error(`invalid JSON in ${t}`)}if(!n||typeof n!=`object`||Array.isArray(n))throw Error(`invalid preset in ${t}`);return n}async function M(e,t){if(e.kind===`http`)return j(await t(e.url),e.url);let n=D[e.forge],r=async r=>{for(let i of r){let r=n(e.slug,e.ref,i),a=j(await t(r),r);if(a)return a}return null};if(e.subpath)return r(A(e.subpath));if(!e.name)return r(k);let[i,...a]=e.name.split(`/`),o=await r(A(i));for(let e of a){let t=o&&Object.hasOwn(o,e)?o[e]:void 0;if(!t||typeof t!=`object`)throw Error(`no preset ${e} in ${i}`);o=t}return o}function N(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 P(e,t,n,r){let i={},a=typeof e.extends==`string`?[e.extends]:Array.isArray(e.extends)?e.extends:[];for(let e of a){if(typeof e!=`string`||r>=10||n.has(e))continue;let a=O(e);if(!a)continue;let o;try{o=await M(a,t)}catch(t){throw Error(`Unable to resolve renovate preset ${e}: ${t.message}`)}if(!o)throw Error(`Unable to resolve renovate preset ${e}: not found`);i=N(i,await P(o,t,new Set(n).add(e),r+1))}let{extends:o,...s}=e;return N(i,s)}async function F(e,t){let{getForgeTokens:n,getFetchOpts:r,githubApiUrl:i,urlHost:a}=await import(`./shared2.js`),o=a(e),[s]=o?await n(o,i):[],c={...r(`Bearer`,s).headers};return t&&(c[`if-none-match`]=t),c}function I({noCache:r=!1,timeout:i=1e4}={}){return async a=>{let o=r?null:await n(a),s=await F(a,o?.etag),c;for(let e=0;;e++)try{c=await fetch(a,{headers:s,signal:AbortSignal.timeout(i)});break}catch(n){if(e<2&&t(n))continue;if(o)return o.body;throw Error(`${a}: ${n.message}`)}if(c.status===304&&o)return o.body;if(c.status===404)return null;if(!c.ok){if(o)return o.body;throw Error(`${a}: HTTP ${c.status}`)}let l;try{l=await c.text()}catch(e){if(o)return o.body;throw Error(`${a}: ${e.message}`)}let u=c.headers.get(`etag`);return u&&!r&&e(a,u,l),l}}const L=a(e=>s(e,async e=>{let t=await S(e);if(!t)return null;let n;try{n=c(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}})),R=new Map,z=new Map;async function B(e,t={},n=I()){let r=await L(e);if(!r)return{};let i=o(R,r.path,()=>P(r.parsed,n,new Set,0));return o(z,`${+!!t.cooldown}${r.path}`,async()=>E(await i,t))}export{B as loadRenovateConfig,I as makePresetFetcher};
package/dist/shared.js CHANGED
@@ -1,8 +1,19 @@
1
- import{cwd as e,env as t,pid as n,platform as r,stderr as i}from"node:process";import{parseArgs as a,styleText as o}from"node:util";import{basename as s,dirname as c,isAbsolute as l,join as u,relative as d,resolve as f}from"node:path";import{accessSync as p,globSync as m,lstatSync as h,readFileSync as g,readdirSync as _,statSync as v,truncateSync as y,writeFileSync as ee}from"node:fs";import{access as te,mkdir as b,readFile as x,rename as S,writeFile as C}from"node:fs/promises";import{createHash as ne}from"node:crypto";import{homedir as w}from"node:os";import{pathToFileURL as T}from"node:url";const E=/^\[\[([^\]]+)\]\]$/,re=/^\[([^[\]]+)\]$/;function ie(e){let t={},n=t,r=e.split(/\r?\n/);for(let e=0;e<r.length;e++){let i=r[e],a=le(i).trim();if(!a)continue;let o=E.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=re.exec(a);if(s){n=M(t,ce(s[1]));continue}let c=A(a,`=`);if(c<0)continue;let l=a.slice(0,c).trim(),u=a.slice(c+1).trim(),d=ce(l),f=M(n,d.slice(0,-1)),p=d[d.length-1],m=D(u);if((u.startsWith(`[`)||u.startsWith(`{`))&&!se(u)){let t=u,n=e+1;for(;n<r.length&&(t+=`\n${le(r[n])}`,!se(t));n++);e=n,f[p]=O(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?`
1
+ import{cwd as e,env as t,pid as n,platform as r,stderr as i}from"node:process";import{parseArgs as a,styleText as o}from"node:util";import{basename as s,dirname as c,isAbsolute as l,join as u,relative as d,resolve as f}from"node:path";import{accessSync as p,globSync as m,lstatSync as h,readFileSync as g,readdirSync as _,realpathSync as v,statSync as y,truncateSync as b,writeFileSync as ee}from"node:fs";import{access as te,mkdir as ne,readFile as x,rename as re,writeFile as S}from"node:fs/promises";import{AsyncLocalStorage as C}from"node:async_hooks";import{Buffer as w}from"node:buffer";import{createHash as T}from"node:crypto";import{homedir as ie}from"node:os";import{pathToFileURL as ae}from"node:url";const oe=/^\[\[([^\]]+)\]\]$/,E=/^\[([^[\]]+)\]$/;function D(e){let t={},n=t,r=e.split(/\r?\n/);for(let e=0;e<r.length;e++){let i=r[e],a=fe(i).trim();if(!a)continue;let o=oe.exec(a);if(o){let e=t,r=de(o[1]);for(let t=0;t<r.length-1;t++){let n=e[r[t]];Array.isArray(n)?e=n[n.length-1]:((!n||typeof n!=`object`)&&(e[r[t]]={}),e=e[r[t]])}let i=r[r.length-1];Array.isArray(e[i])||(e[i]=[]);let a={};e[i].push(a),n=a;continue}let s=E.exec(a);if(s){n=me(t,de(s[1]));continue}let c=A(a,`=`);if(c<0)continue;let l=a.slice(0,c).trim(),u=a.slice(c+1).trim(),d=de(l),f=me(n,d.slice(0,-1)),p=d[d.length-1],m=se(u);if((u.startsWith(`[`)||u.startsWith(`{`))&&!k(u)){let t=u,n=e+1;for(;n<r.length&&(t+=`\n${fe(r[n])}`,!k(t));n++);e=n,f[p]=O(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]=O(m+t+m)}else f[p]=O(u)}return t}function D(e){let t=e.slice(0,3);return t!==`"""`&&t!==`'''`||e.includes(t,3)?``:t}function O(e){if(e.startsWith(`[`)){let t=[],n=j(e,`]`);for(let r of k(e.slice(1,n<0?e.length:n))){let e=r.trim();e&&t.push(O(e))}return t}return e.startsWith(`{`)?oe(e):e.startsWith(`"""`)?N(e.slice(3,e.lastIndexOf(`"""`))):e.startsWith(`'''`)?e.slice(3,e.lastIndexOf(`'''`)):e.startsWith(`"`)?N(e.slice(1,e.lastIndexOf(`"`))):e.startsWith(`'`)?e.slice(1,e.lastIndexOf(`'`)):ae(e)}function ae(e){return e===`true`?!0:e===`false`?!1:/^[+-]?\d+(\.\d+)?$/.test(e)?Number(e):e}function oe(e){let t={},n=e.slice(1,e.lastIndexOf(`}`)).trim();if(!n)return t;for(let e of k(n)){let n=e.indexOf(`=`);if(n<0)continue;let r=e.slice(0,n).trim().replace(/^["']|["']$/g,``);t[r]=O(e.slice(n+1).trim())}return t}function se(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 k(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 le(e){let t=A(e,`#`);return t<0?e:e.slice(0,t)}function*ue(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 A(e,t){return ue(e,t).next().value??-1}function j(e,t){let n=-1;for(let r of ue(e,t))n=r;return n}function M(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 N(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 de=/^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*))?(?:\+[a-zA-Z0-9._-]+)?$/,fe=new Map;function P(e){if(typeof e!=`string`)return null;let t=fe.get(e);if(t!==void 0)return t;let n=de.exec(e.trim());if(!n)return fe.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 fe.set(e,s),s}function F(e,t){let n=typeof e==`number`,r=typeof t==`number`;return n&&r?e-t:n?-1:r?1:e<t?-1:+(e>t)}function pe(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function I(e,t){let n=pe(e,t);if(n!==0)return n;let r=e.prerelease.length>0,i=t.prerelease.length>0;if(!r&&!i)return 0;if(r&&!i)return-1;if(!r&&i)return 1;let a=Math.max(e.prerelease.length,t.prerelease.length);for(let n=0;n<a;n++){if(e.prerelease[n]===void 0)return-1;if(t.prerelease[n]===void 0)return 1;let r=F(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function me(e){return P(e)?.version??null}function L(e){return P(e)}const R=new Map,he=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function z(e){if(typeof e!=`string`)return null;let t=R.get(e);if(t!==void 0)return t;let n=he.exec(e);if(!n)return R.set(e,null),null;let r={version:`${n[1]}.${n[2]||`0`}.${n[3]||`0`}`};return R.set(e,r),r}function ge(e,t){let n=P(e),r=P(t);return!n||!r?null:_e(n,r)}function _e(e,t){if(e.version===t.version)return null;let n=I(e,t),r=n>0?e:t,i=n>0?t:e,a=r.prerelease.length>0;if(i.prerelease.length>0&&!a){if(!i.patch&&!i.minor)return`major`;if(pe(i,r)===0)return i.minor&&!i.patch?`minor`:`patch`}let o=a?`pre`:``;return e.major===t.major?e.minor===t.minor?e.patch===t.patch?`prerelease`:`${o}patch`:`${o}minor`:`${o}major`}function B(e,t){let n=P(e),r=P(t);return n&&r?I(n,r):null}function V(e,t){return(B(e,t)??-1)>0}function ve(e,t){return(B(e,t)??-1)>=0}function ye(e,t){return(B(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=P(`${n}.${t[3]??`0`}.${t[4]??`0`}${t[5]||``}`);return r?{op:t[1]||`=`,semver:r}:null}function xe(e,t){let n=I(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 H(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,a)=>{let o=Number(n),s=r===void 0?0:Number(r),c=i===void 0?0:Number(i),l=(t===`~`?r:i)===void 0?``:a,u;return u=r===void 0?H(o+1,0,0):t===`~`?H(o,s+1,0):o===0?i!==void 0&&s===0?H(0,0,c+1):H(0,s+1,0):H(o+1,0,0),`>=${o}.${s}.${c}${l} <${u}`})}function Ce(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?`<${H(p+1,0,0)}`:`<${H(p,Number(o)+1,0)}`:`<=${p}.${Number(o)}.${Number(s)}${c||``}`,`>=${l}.${u}.${d}${f} ${m}`})}function U(e,t,n,r){return!e||e===`=`?r?`>=${t}.0.0 <${H(t+1,0,0)}`:`>=${t}.${n}.0 <${H(t,n+1,0)}`:e===`>`?r?`>=${t+1}.0.0`:`>=${t}.${n+1}.0`:e===`<=`?r?`<${H(t+1,0,0)}`:`<${H(t,n+1,0)}`:e===`<`?r?`<${t}.0.0-0`:`<${t}.${n}.0-0`:r?`>=${t}.0.0`:`>=${t}.${n}.0`}function we(e){return/^\s*[*xX]\s*$/.test(e)?`>=0.0.0`:(e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)\.[xX*]/g,(e,t,n,r)=>U(t,Number(n),Number(r),!1)),e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.[xX*](?:\.[xX*])?/g,(e,t,n)=>U(t,Number(n),0,!0)),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)(?=\s|$)/g,(e,t,n,r,i)=>`${t}${U(n,Number(r),Number(i),!1)}`),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)(?=\s|$)/g,(e,t,n,r)=>`${t}${U(n,Number(r),0,!0)}`),e)}const Te=new Map;function Ee(e){let t=Te.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=Ce(t),t=Se(t),t=we(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 Te.set(e,null),null;i.push(n)}if(i.length===0)return Te.set(e,null),null;r.push(i)}let i=r.length?r:null;return Te.set(e,i),i}function De(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 W(e,t){let n=P(e);if(!n)return!1;let r=Ee(t);if(!r)return!1;for(let e of r)if(e.length===0||De(n,e))return!0;return!1}function Oe(e){return typeof e==`string`&&Ee(e)?e:null}const ke=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],Ae={"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`},je={sec:`second`,min:`minute`};function Me(e){return typeof e==`number`?e:e instanceof Date?e.getTime():Date.parse(e)}function Ne(e,{now:t,noAffix:n=!1,times:r=ke,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=Ae,longUnits:l=!1}={}){let u=(t===void 0?Date.now():Me(t))-Me(e);if(Number.isNaN(u))return o||String(e);let d=u<0;if(d&&(u=-u),u<i)return a;let f=0,p=``;for(let e=0,t=r.length;e<t;e++){let t=r[e];if(!(u>=t[1])){f=Math.trunc(u/t[0]),p=(l&&je[t[2]]||t[2])+(f>1?`s`:``);break}}let m=`${f} ${p}`,h=n?m:d?`in ${m}`:`${m} ago`;return s?c[h]??h:h}function Pe(e,t,n){if(e===t)return e;let r=0;for(;r<e.length&&r<t.length&&e[r]===t[r];)r++;if(r>0&&e[r-1]!==`.`&&e[r-1]!==`-`){let t=r-1;for(;t>=0&&e[t]!==`.`&&e[t]!==`-`;)t--;if(t>=0)r=t+1;else{let t=0;for(;t<r;){let n=e.charCodeAt(t);if(n>=48&&n<=57)break;t++}r=t}}let i=e.substring(r);return i?e.substring(0,r)+n(i):e}const Fe=/^([^<>=~!]+)(?:==|>=?|<=?|~=)([0-9.a-z]+)$/;function Ie(e){let t=[];for(let n of e){let e=Fe.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`],G=[`.github`,`.gitea`,`.forgejo`],ze={"pnpm-workspace.yaml":`npm`,"package.json":`npm`,"pyproject.toml":`pypi`,"go.work":`go`,"go.mod":`go`,"Cargo.toml":`cargo`},Be=[`project.dependencies`,`project.optional-dependencies`,`dependency-groups.dev`,`dependency-groups.lint`,`dependency-groups.test`],Ve=[`deps`,`indirect`,`replace`,`tool`],He=[`dependencies`,`dev-dependencies`,`build-dependencies`,`workspace.dependencies`];function Ue(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 We(e,t){return t.split(`.`).reduce((e,t)=>e?.[t]??null,e)}function Ge(e){return e.split(`,`).filter(Boolean)}function Ke(){let e=new Date;return new Date(e.getTime()-e.getTimezoneOffset()*6e4).toISOString().replace(`T`,` `).slice(0,-1)}function qe(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 Je={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function Ye(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Je[n.toLowerCase()];if(r)return Number(e)*r}if(!/^\d+(?:\.\d+)?$/.test(e))throw Error(`Invalid cooldown value: ${e}`);return Number(e)}function Xe(e,t){let n=Math.round(Number(e));if(!Number.isFinite(n)||n<1)throw Error(`Invalid ${t}: ${e}`);return n}async function K(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 Ze(e){try{return await e}catch{return null}}const q=RegExp.escape?e=>RegExp.escape(e):e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);async function Qe(e,t){let n=e;for(;;){let e=await t(n);if(e)return e;let r=c(n);if(r===n)return null;n=r}}function $e(e,t,n){let r=e.get(t);r?r.push(n):e.set(t,[n])}function et(e){let t=new Map;return n=>{let r=t.get(n);return r||(r=e(n),t.set(n,r)),r}}const tt=u(r===`win32`?t.LOCALAPPDATA||u(w(),`AppData`,`Local`):t.XDG_CACHE_HOME||u(w(),`.cache`),`updates`);let nt=null;const rt=new Map;function it(e){let t=rt.get(e);return t===void 0&&(t=ne(`sha256`).update(e).digest(`hex`).substring(0,16),rt.set(e,t)),t}async function at(e){try{let t=await x(u(tt,`${it(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 ot=new Set;let st=0;function ct(e,t,r){let i=(async()=>{try{await(nt??=b(tt,{recursive:!0}))}catch{nt=null;return}try{let i=u(tt,`${it(e)}.cache`),a=`${i}.${n}-${st++}.tmp`;await C(a,`${t}\n${r}`),await S(a,i)}catch{}})();ot.add(i),(async()=>{await i,ot.delete(i)})()}async function lt(){for(;ot.size;)await Promise.all(ot)}var ut=`17.20.4`;function dt(e,t,n){if(!t||!n||!e)return!0;let r=Date.parse(e);return Number.isNaN(r)?!0:(n-r)/864e5>=t}const ft=ut,pt=5e3,mt=2500,ht=`https://api.github.com`,J={registry:`https://registry.npmjs.org`,jsrapi:`https://jsr.io`,forgeapi:ht,pypiapi:`https://pypi.org`,cargoapi:`https://crates.io`,dockerapi:`https://hub.docker.com`,goproxy:`https://proxy.golang.org`},Y=e=>e[0]===`v`?e.substring(1):e,gt=e=>e.endsWith(`/`)?e.slice(0,-1):e;function _t(e,t){return{headers:{"user-agent":`updates/${ft}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}const vt=new Set([`ECONNRESET`,`ECONNREFUSED`,`ETIMEDOUT`,`EAI_AGAIN`,`EPIPE`,`UND_ERR_SOCKET`,`UND_ERR_CONNECT_TIMEOUT`,`UND_ERR_HEADERS_TIMEOUT`,`UND_ERR_BODY_TIMEOUT`]);function yt(e){if(e?.name===`TimeoutError`||e?.name===`AbortError`)return!0;let t=e?.code??e?.cause?.code;return typeof t==`string`&&vt.has(t)}async function bt(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=yt(t),n}}async function X(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 xt(e){return typeof e.text==`function`?e.text():JSON.stringify(await e.json())}function St(e,t){if(!t||e.length<16384)return e;try{return JSON.stringify(t(JSON.parse(e)))}catch{return e}}async function Ct(e,t,n,r,i){let a=St(await xt(t),r);return i&&!n.noCache&&ct(e,i,a),{body:a,res:t}}async function wt(e,t,n={},r){let i=t.noCache?null:await at(e),a=n.headers,o=i?{...a,"if-none-match":i.etag}:a,s=await X(t,e,{...n,headers:o});return s?s.status===304&&i?{body:i.body,res:s}:s.ok?Ct(e,s,t,r,s.headers?.get?.(`etag`)):{res:s}:{res:void 0}}async function Tt(e,t,n={},r){if(!t.noCache){let t=await at(e);if(t)return{body:t.body}}let i=await X(t,e,n);return i?i.ok?Ct(e,i,t,r,`immutable`):{res:i}:{res:void 0}}function Et(e,t,n){let r=e.get(t);return r||e.set(t,r=(async()=>{try{return await n()}catch(n){throw e.delete(t),n}})()),r}function Dt(e){return(L(e)?.prerelease.length??0)>0}function Ot(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}const kt=/\d+\.\d+\.\d+(?:-[a-zA-Z0-9_.-]+)?/,At=new WeakMap;function jt(e){let t=At.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`),At.set(e,n),n}function Mt(e,t,n){let r=Ot(e)||t;return{effectiveUsePre:r,effectiveSemvers:r?jt(n):n}}function Nt(e,t,{useRel:n,allowDowngrade:r,name:i}){let a=Z(e),o=Z(t);if(!a||!o)return!0;let s=Ot(e)||Dt(e),c=Dt(t);return s&&!c?ve(o,a)||n:!c&&ye(o,a)?Ue(i,r):!0}function Z(e){return z(e)?.version??``}function Pt(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:u}){let d=Z(n);if(!d)return null;let f=L(kt.exec(n)?.[0]??``)??L(d),{effectiveUsePre:p,effectiveSemvers:m}=Mt(n,i,r),h=e?.time,g=!!h,_=o||!g,v=!!(c&&l),y=!!s&&!W(f.version,s)||a&&f.prerelease.length>0,ee=0,te=!1,b=f;for(let e of t){let t=L(e);if(!t?.version||t.prerelease.length&&(!p||a)||!y&&I(t,f)<=0||s&&!W(t.version,s))continue;let n;if(v&&(n=u?u(e):g?h[e]:void 0,!dt(n,c,l)))continue;let r=_e(f,t);if(!(!r||!m.has(r))){if(_){if(te&&I(t,b)<=0)continue}else{let t=Date.parse(n??h[e]);if(!(t>=0&&t>ee))continue;ee=t}b=t,te=!0}}return b.version}function Ft(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function It(e,{mode:t,range:n,useGreatest:r,useRel:i,usePre:a,semvers:o,pinnedRange:s,cooldownDays:c,now:l,allowDowngrade:u}){if(n===`*`||n.includes(`||`)||/\d\s/.test(n))return null;let d=[],f;if(t===`pypi`){let t=e.releases;d=Object.keys(t),f=e=>t?.[e]?.[0]?.upload_time_iso_8601}else if(t===`npm`||t===`cargo`)d=Object.keys(e.versions);else if(t===`go`){let t=Z(n);if(!t)return null;let{effectiveUsePre:r,effectiveSemvers:d}=Mt(n,a,o),f=e=>Dt(e)&&(!r||i),p={useRel:i,allowDowngrade:u,name:e.name},m=e.old||n,h=(e,n)=>{let r=Z(e);if(!r||Ft(e)||f(e))return!1;let i=ge(m,e)??ge(t,r);return!i||!d.has(i)||!Nt(m,e,p)||!dt(n,c,l)?!1:!s||W(r,s)};return h(e.new,e.Time)?e.new:h(e.sameMajorNew,e.sameMajorTime)?(e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew):null}let p=Pt(e,d,{range:n,semvers:o,usePre:a,useRel:i,useGreatest:r,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:f});if(!p)return null;if(r)return p;{let r=``,d=``,f=!1;t===`pypi`?(d=e.info.version,r=Z(e.info.version),f=Dt(d)):(r=e[`dist-tags`].latest,f=Dt(r));let m=Z(n),h=Ot(n),g=Dt(p),_={useRel:i,allowDowngrade:u,name:e.name};if(!i&&a||h&&g)return p;if(h&&!g)return Nt(n,p,_)?p:null;let v=ge(m,r);return v&&v!==`prerelease`&&!o.has(v.replace(/^pre/,``))||i&&f?p:ye(r,m)&&!f?Nt(n,r,_)?r:V(p,m)?p:null:!h&&f&&!a||s&&!W(r,s)||c&&l&&!dt(t===`pypi`?e.releases?.[d||r]?.[0]?.upload_time_iso_8601:e.time?.[r],c,l)?p:d||r}}const Lt=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&Lt.set(e.substring(0,t),e.substring(t+1))}let Rt;async function zt(){let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]);return t(e)}function Bt(){return Rt??=zt()}const Vt=[`UPDATES_GITHUB_API_TOKEN`,`GITHUB_API_TOKEN`,`GH_TOKEN`,`GITHUB_TOKEN`,`HOMEBREW_GITHUB_API_TOKEN`];function Ht(){return Array.from(new Set(Vt.map(e=>t[e]).filter(e=>!!e)))}let Ut;function Wt(){let e=Ht();return e.length?Promise.resolve(e):Ut??=(async()=>{try{let{stdout:e}=await(await Bt())(`gh`,[`auth`,`token`],{encoding:`utf8`,timeout:5e3}),t=e.trim();return t?[t]:[]}catch{return[]}})()}const Gt=new Map;async function Kt(e,t){if(!e)return[];let n=Lt.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?Wt():[]}async function qt(e,t,n){let r;try{r=new URL(e).hostname}catch{r=``}let i=await Kt(r,t.forgeApiUrl),a=e=>{let t=_t(`Bearer`,e);return n&&(t.headers={...t.headers,...n}),t};if(!i.length)return X(t,e,a());let o=r?Gt.get(r):void 0;if(o)return X(t,e,a(o));for(let n of i){let i=await X(t,e,a(n));if(i.status!==401&&i.status!==403)return r&&Gt.set(r,n),i}return X(t,e,a())}function Jt(e,t){let n=Y(t);if(!me(n))return null;let r=``,i=``;for(let t of e){let e=Y(t);me(e)&&(!r||V(e,i))&&(r=t,i=e)}return r&&V(i,n)?r:null}function Yt(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 Xt=/^(?=.*[a-f])[0-9a-f]{6,}$/i;function Zt(e){return/^v?\d+(?:\.\d+)*(?:[-+][\w.-]+)?$/.test(e)}function Qt(e){let t=e?.commit??e;return t?.committer?.date||t?.author?.date||``}function $t(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function en(e,t,n){let r=t.noCache?null:await at(e),i=await qt(e,t,r?{"if-none-match":r.etag}:void 0);if(i?.status===304&&r)return r.body;if(!i?.ok)return null;let a=await n(i),o=i.headers.get(`etag`);return o&&!t.noCache&&ct(e,o,a),a}async function tn(e,t){let n=await en(e,t,async e=>JSON.stringify({link:e.headers.get(`link`)||``,tags:$t(await e.json())}));if(!n)return null;try{let e=JSON.parse(n);return{tags:e.tags||[],link:e.link||``}}catch{return null}}async function nn(e,t,n,r){let i=r=>`${e}/repos/${t}/${n}/tags?per_page=100&page=${r}`;try{let e=await tn(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)=>tn(i(t+2),r)));for(let e of o)e&&t.push(...e.tags);return t}catch{return[]}}function rn(e,t,n,r){throw e?.status&&e.statusText?Error(`Received ${e.status} ${e.statusText} from ${t}`):Error(`Unable to fetch ${n} from ${r}`)}const an=e=>Number(e[0])>=2e7;function on(e,t){let n=Y(e).split(`.`),r=Y(t).split(`.`);return n.length<r.length?!1:!an(n)||an(r)}function sn(e,t,n=``){let r=Y(e),i=Y(t).split(`.`).length,a=r.split(`.`),o=i>=3?r:Array.from({length:i},(e,t)=>a[t]||`0`).join(`.`);return`${t.startsWith(`v`)?`v`:``}${o}${n}`}function cn(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}const ln=[`repository`,`Repository`,`repo`,`Repo`,`source`,`Source`,`source code`,`Source code`,`Source Code`,`homepage`,`Homepage`];function un({repository:e,homepage:t,info:n},r,i){if(n){let t=n.project_urls;for(let n of ln)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=Yt(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a+=`/${cn(a)}/${e.directory}`)),a||t||``)}const dn={"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 fn(e){return e instanceof RegExp?/[gy]/.test(e.flags)?new RegExp(e.source,e.flags.replace(/[gy]/g,``)):e:RegExp(`^${q(e).replaceAll(`\\*`,`.*`)}$`,`i`)}function pn(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.filter(e=>typeof e==`string`).flatMap(Ge)):typeof e==`string`?new Set([e]):typeof e==`boolean`&&e}function mn(e){for(let[t,{short:n}]of Object.entries(dn))if(t===e||n===e)return t;return``}function hn(e){return new Set(e.map(fn))}function gn(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(Ge):[]}function _n(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 vn(e){return typeof e==`boolean`?e:!Array.isArray(e)||!e.length?!1:hn(e)}async function yn(e){let t=await Promise.all([`js`,`ts`,`mjs`,`mts`].map(async t=>{let n=`updates.config.${t}`,r=u(e,n);try{await te(r)}catch{return null}try{return{configDir:e,default:(await import(T(r).href)).default??{}}}catch(e){return Error(`Unable to parse config file ${n}: ${e?.message??e}`)}}));for(let e of t)if(e&&!(e instanceof Error))return e;for(let e of t)if(e instanceof Error)throw e;return null}const bn=et(e=>Qe(e,yn));async function xn(e,t={}){let n=await bn(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 Sn(e){if(/^\s*\{/.test(e))return JSON.parse(e);let t={};for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e||e.startsWith(`#`)||e.startsWith(`;`))continue;let r=e.indexOf(`=`);if(r===-1)continue;let i=e.slice(r+1).trim();/^(["']).*\1$/s.test(i)&&(i=i.slice(1,-1)),t[e.slice(0,r).trim()]=i}return t}function Cn(e){try{return Sn(g(e,`utf-8`))}catch{return}}function wn(t){let n=e();for(;;){let e=u(n,t);try{if(v(e).isFile())return e}catch{}let r=c(n);if(r===n)break;n=r}}function 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 En(e,n={}){let i=r===`win32`,a=i?t.USERPROFILE:t.HOME,o=[{...n}],s=[];function c(e){if(!e||s.includes(e))return;let t=Cn(e);t&&(o.push(t),s.push(e))}i||(c(u(`/etc`,e,`config`)),c(u(`/etc`,`${e}rc`))),a&&(c(u(a,`.config`,e,`config`)),c(u(a,`.config`,e)),c(u(a,`.${e}`,`config`)),c(u(a,`.${e}rc`))),c(wn(`.${e}rc`));let l=Tn(`${e}_`);return l.config&&c(l.config),Object.assign({},...o,l,s.length?{configs:s,config:s[s.length-1]}:void 0)}const Dn=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,On=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,kn=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,An=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,jn=/(@[^/]+\/)?([^/]+)/g;function Mn(e){let t=e.match(jn);return t?t[t.length-1]:e}const Nn=J.registry;let Pn=null;const Fn=new Map;function In(){return Pn??=En(`npm`,{registry:Nn})}function Ln(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function Rn(e,t){let n=n=>t[`${e}:${n}`]||t[`${e}/:${n}`],r=n(`_authToken`);if(r)return{token:Ln(r),type:`Bearer`};let i=n(`username`),a=n(`_password`);if(i&&a){let e=Buffer.from(Ln(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:Ln(o),type:`Basic`}}function zn(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=Rn(`//${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:Ln(i),type:`Basic`}}function Bn(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function Vn(e,t){let n=In(),r=e.startsWith(`@`)?e.split(`/`)[0]:``,i=`${r}:${t}`,a=Fn.get(i);if(a)return a;let o;if(r){let e=gt(Bn(r,n));if(e!==t)try{let t=zn(e,n);t?.token&&(o={auth:t,registry:e})}catch{}}return o??={auth:zn(t,n),registry:t},Fn.set(i,o),o}function Hn(e,t,n){let r=gt(typeof n.registry==`string`&&n.registry||t.registry||In().registry||Nn);return{...Vn(e,r),originalRegistry:r}}function Un(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const Wn=new Map,Gn=new Map,Kn=new Map;function qn(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 Jn(e,t,n,r,i){let{auth:a,registry:o}=Hn(e,n,r),s=Un(o,t===`resolutions`?Mn(e):e);return[await Et(Wn,s,async()=>{let t=_t(a?.type,a?.token);r.needsDates||(t.headers={...t.headers,accept:`application/vnd.npm.install-v1+json`});let n=await wt(s,i,t,qn);return`body`in n||rn(n.res,s,e,o),JSON.parse(n.body)}),o]}async function Yn(e,t,n,r,i){let{auth:a,registry:o}=Hn(e,n,r),s=Un(o,e,t);return Et(Gn,s,async()=>{try{let n=_t(a?.type,a?.token),r=await Tt(s,i,n,e=>({repository:e.repository,homepage:e.homepage,_npmOperationalInternal:e._npmOperationalInternal?.tmp?{tmp:e._npmOperationalInternal.tmp}:void 0}));if(!(`body`in r))return{};let c=JSON.parse(r.body),l=``,u=c?._npmOperationalInternal?.tmp;if(u){let e=/(\d{13})/.exec(u);e&&(l=new Date(Number(e[1])).toISOString())}let d=Un(o,e);return l||=(await Wn.get(d))?.time?.[t]||``,l||=(await Ze(Et(Kn,d,async()=>{let e=await X(i,d,n);return e?.ok?await e.json():null})))?.time?.[t]||``,{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})}function Xn(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Zn(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}const Qn=[/^npm:@jsr\/([^_]+)__([^@]+)@(.+)$/,/^jsr:@([^/]+)\/([^@]+)@(.+)$/],$n=/^@([^/]+)\/(.+)$/;function er(e,t){for(let t of Qn){let n=t.exec(e);if(n)return{scope:n[1],name:n[2],version:n[3]}}if(e.startsWith(`jsr:`)&&!e.startsWith(`jsr:@`)){let n=$n.exec(t??``);if(n)return{scope:n[1],name:n[2],version:e.substring(4)}}return{scope:null,name:null,version:``}}async function tr(e,t){if(!$n.test(e))throw Error(`Invalid JSR package name: ${e}`);let n=`${t.jsrApiUrl}/${e}/meta.json`,r=await wt(n,t,{headers:{"accept-encoding":`gzip, deflate, br`}},e=>({latest:e.latest,versions:Object.fromEntries(Object.entries(e.versions??{}).map(([e,t])=>[e,{createdAt:t?.createdAt}]))}));`body`in r||rn(r.res,n,e,`JSR`);let i=JSON.parse(r.body),a={},o={};for(let[e,t]of Object.entries(i.versions??{}))a[e]={version:e,time:t.createdAt},o[e]=t.createdAt;return[{name:e,"dist-tags":{latest:i.latest},versions:a,time:o},t.jsrApiUrl]}function nr(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 rr(e,t){let n=/^(<\s*)(\d+(?:\.\d+){0,2})$/.exec(e);if(!n)return null;let[,r,i]=n,{major:a,minor:o,patch:s}=L(t),c=i.split(`.`).length,l;return l=c===1?`${a+1}`:c===2?`${a}.${o+1}`:i.endsWith(`.0.0`)?`${a+1}.0.0`:`${a}.${o}.${s+1}`,`${r}${l}`}function ir(e,t,n){let r=n||e;if(/^>\s*\d/.test(r))return e;let i=rr(r,t);if(i)return i;let a=e.replace(An,t);if(!n||n===e)return a;let o=/^([\^~]|>=\s*)([\d.]+)$/.exec(n);if(!o)return a;let[,s,c]=o,l=t.split(/[-+]/)[0];if(l!==t)return a;let u=c.split(`.`).length,d=l.split(`.`);return d.length===u?a:`${s}${d.slice(0,u).join(`.`)}`}function Q(e){if(/[xX*]/.test(e))return e;let t=e.match(kn);return t?.length===1?e.replace(kn,Z(t[0])):e}async function ar(e,t,n){let r=`${n.forgeApiUrl}/repos/${e}/${t}/commits`;try{let e=await en(r,n,async e=>{let{sha:t,commit:n}=JSON.parse(await e.text())[0];return JSON.stringify([{sha:t,commit:{committer:n?.committer,author:n?.author}}])});if(!e)return{hash:``,commit:{}};let{sha:t,commit:i}=JSON.parse(e)[0];return{hash:t,commit:i}}catch{return{hash:``,commit:{}}}}async function or(e,t,n){return(await nn(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function sr(e,t,n){let r=t.old.replace(Dn,``),[,i,a,o]=On.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(Xt.test(o)){let{hash:t,commit:r}=await ar(i,a,n);if(!t)return null;let c=Qt(r),l=t.substring(0,o.length);if(o.toLowerCase()!==l.toLowerCase())return{key:e,newRange:s(l),user:i,repo:a,oldRef:o,newRef:l,newDate:c}}else{let t=Jt(await or(i,a,n),o);if(t)return{key:e,newRange:s(t),user:i,repo:a,oldRef:o,newRef:t}}return null}function cr(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 lr(e,t){let n=`${t.pypiApiUrl}/pypi/${e}/json`,r=await wt(n,t,{headers:{"accept-encoding":`gzip, deflate, br`}},cr);if(`body`in r)return[JSON.parse(r.body),null];rn(r.res,n,e,t.pypiApiUrl)}function ur(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(`(['"])(${q(a)} *(?:\\[[^\\]]+\\])? *[<>=~]+ *)${q(o)}\\1`,`g`),(n,r,i)=>`${r}${i}${t[e].new}${r}`)}return n}function dr(){let e=t.GOPROXY||`${J.goproxy},direct`;for(let t of e.split(/[,|]/)){let e=t.trim();if(e&&e!==`direct`&&e!==`off`)return gt(e)}return J.goproxy}function fr(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim().replace(/\/+$/,``)).filter(Boolean)}const pr=new Map;function mr(e){let t=pr.get(e);if(t)return t;let n=``;for(let t=0;t<e.length;t++){let r=e[t];if(r===`*`)n+=`[^/]*`;else if(r===`?`)n+=`[^/]`;else if(r===`[`&&e.includes(`]`,t+1)){let r=e.indexOf(`]`,t+1);n+=`[${e.slice(t+1,r).replace(/\\/g,`\\\\`)}]`,t=r}else n+=q(r)}return pr.set(e,t=RegExp(`^${n}(?:/.*)?$`)),t}function hr(e,t){return t.some(t=>mr(t).test(e))}function gr(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}const _r=/\/v(\d+)$/,vr=/^gopkg\.in\/.*?\.v(\d+)$/;function yr(e){let t=vr.exec(e)??_r.exec(e);return t?Number.parseInt(t[1]):1}function br(e,t){if(e.startsWith(`gopkg.in/`))return`${e.replace(/\.v\d+$/,``)}.v${t}`;let n=e.replace(_r,``);return t<=1?n:`${n}/v${t}`}function xr(e,t){if(t.includes(`+incompatible`))return e;let n=Number.parseInt(Y(t).split(`.`)[0]);return Number.isNaN(n)||n===yr(e)?e:br(e,n)}const Sr=/^require\s*\(/,Cr=/^replace\s*\(/,wr=/^tool\s*\(/,Tr=/^use\s*\(/,Er=/^replace\s+/,Dr=/^(\S+)\s+(v\S+)/,Or=/^require\s+(\S+)\s+(v\S+)/,kr=/^tool\s+(\S+)/,Ar=/^use\s+(\S+)/,jr=/^(\S+)/,Mr=/^(\S+)(?:\s+(v\S+))?\s+=>\s+(\S+)(?:\s+(v\S+))?/,Nr=/^replace\s+(\S+)(?:\s+(v\S+))?\s+=>\s+(\S+)(?:\s+(v\S+))?/;function Pr(e){return e.startsWith(`./`)||e.startsWith(`/`)||e.startsWith(`../`)}function Fr(e,t){let n=(t?Mr:Nr).exec(e);if(!n)return null;let[,r,i,a,o]=n;return{origModule:r,origVersion:i??``,targetModule:a,targetVersion:o??``}}function Ir(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||Ft(n)}function Lr(e,t){return[{name:e,old:t,new:t},null]}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 zr(e,t,n,r,i){let a=n?.Version??r,o=n?.Time??i,s=n?.path??e;return[{name:e,old:t,new:Y(a),Time:o,...s!==e&&{newPath:s},sameMajorNew:Y(r),sameMajorTime:i},null]}function Br(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(Sr.test(i)){c=!0;continue}if(Cr.test(i)){l=!0;continue}if(wr.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(i.startsWith(`//`))continue;if(u){i&&o.push(i);continue}let s=kr.exec(i);if(s){o.push(s[1]);continue}let d=i.includes(`// indirect`);if(l||Er.test(i)){let e=Fr(i,l);e&&(e.targetVersion&&!Pr(e.targetModule)&&(r[e.targetModule]=e.targetVersion),e.origVersion||a.add(e.origModule));continue}let f=(c?Dr:Or).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 Vr(e,n,r,i,a){let o=yr(e),s=async(e,n)=>{try{let{stdout:r}=await(await Bt())(`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=Ir(e,n,r),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(br(e,o+1),a.goProbeTimeout)]);return l?zr(e,r,await Rr(o,u,t=>s(br(e,t),a.goProbeTimeout)),l.Version,l.Time):Lr(e,r)}async function Hr(e,t,n,r,i,a){if(hr(e,a))return Vr(e,t,n,r,i);let o=gr(e),s=yr(e),c=async t=>{let n=br(e,t);try{let e=await i.doFetch(`${i.goProxyUrl}/${gr(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=Ir(e,t,n),[u,d]=await Promise.all([X(i,`${i.goProxyUrl}/${o}/@latest`,{headers:{"accept-encoding":`gzip, deflate, br`}}),l?null:c(s+1)]);if(!u.ok)return Lr(e,n);let f,p;try{let e=await u.json();f=e.Version,p=e.Time}catch{return Lr(e,n)}return zr(e,n,await Rr(s,d,c),f,p)}function Ur(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+${q(s)}\\s+)v${q(c)}`,`g`),`$1v${l}`);continue}if(o===`indirect`){n=n.replace(RegExp(`(${q(s)}) +v${q(c)}`,`g`),`$1 v${l}`);continue}let u=xr(s,l);u===s?n=n.replace(RegExp(`(${q(s)}) +v${q(c)}`,`g`),`$1 v${l}`):(n=n.replace(RegExp(`${q(s)} +v${q(c)}`,`g`),`${u} v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)${q(s)}(/\\S+)?\\s*$`,`gm`),`$1${u}$2`)),r[s]=u)}return[n,r]}function Wr(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(q).join(`|`)})(/|")`,`g`),s=m(`**/*.go`,{cwd:e});for(let t of s){let r=u(e,t),a=g(r,`utf8`),s=a.replace(o,(e,t,n)=>`"${i.get(t)}${n}`);s!==a&&n(r,s)}}function Gr(e){let t=[],n={},r=e.split(/\r?\n/),i=!1,a=!1;for(let e of r){let r=e.trim();if(Tr.test(r)){i=!0;continue}if(Cr.test(r)){a=!0;continue}if(r===`)`){i=!1,a=!1;continue}if(i){let e=jr.exec(r);e&&!r.startsWith(`//`)&&t.push(e[1]);continue}let o=Ar.exec(r);if(o){t.push(o[1]);continue}if(a||Er.test(r)){let e=Fr(r,a);e?.targetVersion&&!Pr(e.targetModule)&&(n[e.targetModule]=e.targetVersion)}}return{use:t,replace:n}}function Kr(e){let t=`https://${qr(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[,e,i,...a]=r;return n.pathname=`/${e}/${i}/${cn(t)}/${a.join(`/`)}`,n.href}return t}function qr(e){return _r.test(e)?c(e):e}function Jr(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const Yr=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function Xr(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:Xt.test(o)}}function Zr(e,t){return e?e===`github.com`?ht:`https://${e}/api/v1`:t}async function Qr(e,t,n,r,i){let a=`${e}/repos/${t}/${n}/git/commits/${r}`;if(!i.noCache){let e=await at(a);if(e)return e.body}try{let e=await qt(a,i);if(!e.ok)return``;let t=Qt(await e.json());return t&&!i.noCache&&ct(a,`immutable`,t),t}catch{return``}}function $r(e,t){return sn(L(Y(e))?.version??Y(e),t)}function ei(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i,newComment:a}of t){let t=`(uses:\\s*['"]?(?:https?:\\/\\/)?)${q(e)}@${q(r)}(?![\\w.-])`;a&&(n=n.replace(RegExp(`${t}([ \\t]*#[ \\t]*)v?\\d\\S*`,`g`),`$1${e}@${i}$2${a}`)),n=n.replace(new RegExp(t,`g`),`$1${e}@${i}`)}return n}const ti=RegExp(`(?:^|/)(?:${G.map(q).join(`|`)})\\/(?:workflows\\/[^/]+|(?:[^/]+\\/)*action)\\.ya?ml$`);function ni(e){return ti.test(e.replace(/\\/g,`/`))}function ri(e){let t=new Set;try{for(let n of _(u(e,`workflows`)))/\.ya?ml$/.test(n)&&t.add(f(u(e,`workflows`,n)))}catch{}try{for(let n of _(e,{recursive:!0,withFileTypes:!0}))!n.isFile()||!/^action\.ya?ml$/.test(n.name)||t.add(f(u(n.parentPath,n.name)))}catch{}return Array.from(t)}const ii=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,ai=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gim,oi=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,si=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,ci=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm,li=/^(?:index\.)?docker\.io$/;function ui(e){let t=e.split(`/`);return t.length>1&&li.test(t[0])&&t.shift(),t.length===1?{registry:null,namespace:`library`,repo:t[0]}:t.length===2&&!t[0].includes(`.`)&&!t[0].includes(`:`)?{registry:null,namespace:t[0],repo:t[1]}:{registry:t[0],namespace:t.slice(1,-1).join(`/`),repo:t[t.length-1]}}function di(e){let{registry:t,namespace:n,repo:r}=ui(e);if(t)return[e];let i=n===`library`?[r,`library/${r}`]:[`${n}/${r}`];return[...new Set([e,...i,...i.map(e=>`docker.io/${e}`)])]}function fi(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||!ii.test(r))return null;let{registry:i,namespace:a,repo:o}=ui(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function pi(e){let t=ii.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function mi(e,t){let n=pi(t);return n?sn(e,n.version,n.suffix):t}function hi(e,t){let n=[];for(let r of e.matchAll(t)){let e=fi(r[1]);e&&n.push({ref:e,match:r[1]})}return n}const gi=new WeakMap;function _i(e,t,n){let r=gi.get(n);return r||gi.set(n,r=new Map),Et(r,`${e}/${t}`,()=>vi(e,t,n))}async function vi(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 wt(a(e),n,o,s);return`body`in t?JSON.parse(t.body):null}catch{return null}},l=await c(1);if(!l)return r;let u=Math.min(Math.ceil((l.count||0)/100),10),d=u<2?[]:await Promise.all(Array.from({length:u-1},(e,t)=>c(t+2)));for(let e of[l,...d])for(let t of e?.results||[])r[t.name]=t.tag_last_pushed||t.last_updated||``;return r}async function yi(e,t,n,r){let i=`${r.dockerApiUrl}/v2/repositories/${e}/${t}/tags/${n}`;try{let e=await wt(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 bi(e,t){let{registry:n,namespace:r,repo:i}=ui(e);if(n)throw Error(`Non-Docker-Hub registries are not yet supported: ${n}`);return[{tags:await _i(r,i,t),name:e},null]}function xi(e,t,n,r,i,a){let o=pi(t);if(!o)return null;let s=z(Y(o.version))?.version;if(!s)return null;let c=s,l=``,u=``;for(let[t,s]of Object.entries(e)){let e=pi(t);if(!e||e.suffix!==o.suffix||!on(e.version,o.version))continue;let d=z(Y(e.version))?.version;if(!d||a&&!W(d,a)||!dt(s,r,i))continue;if(d===c){l&&Date.parse(s)>Date.parse(u)&&(l=t,u=s);continue}let f=ge(c,d);!f||!n.has(f)||V(d,c)&&(c=d,l=t,u=s)}if(!l||c===s)return null;let d=mi(c,t),f=d in e?d:l;return f===t?null:{newTag:f,date:u}}const Si=`(?![\\w.@+-])`;function Ci(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(q(t),q(a)),`$1${t}:${i.new}`)}return r}function wi(e,t){return Ci(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}${Si}`,`gi`)])}function Ti(e,t){return Ci(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}${Si}`,`g`)])}function Ei(e,t){return Ci(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}${Si}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}${Si}`,`g`)])}const Di=[`Dockerfile`,`compose.yml`,`compose.yaml`,`docker-compose.yml`,`docker-compose.yaml`];function Oi(e){return/^(?:docker-|compose).*\.ya?ml$/.test(e)}function ki(e){return/^Dockerfile(\..+)?$/.test(e)}function Ai(e){return ki(e)||Oi(e)}function ji(e){return ki(e)?ai:oi}function Mi(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const Ni=[`Makefile`,`makefile`,`GNUmakefile`];function Pi(e){return Ni.includes(e)||e.endsWith(`.mk`)}const Fi=String.raw`^\s*[A-Za-z_][\w.]*\s*(?:::=|:=|\?=|\+=|=)\s*`,Ii=RegExp(`${Fi}${String.raw`(\S+)@(v\d\S*)\s*$`}`),Li=/^[^/\s]+\.[^/\s]+\//;function Ri(e){let t=e.indexOf(`#`);return t===-1?e:e.slice(0,t)}function zi(e){let t=[];for(let n of e.split(/\r?\n/)){let e=Ri(n),r=Ii.exec(e);if(!r)continue;let[,i,a]=r;Li.test(i)&&t.push({installPath:i,version:a})}return t}const Bi=RegExp(`${Fi}${String.raw`(\S+)\s*$`}`),Vi=/@(sha256:[0-9a-f]{64})$/;function Hi(e,t,n){return`${e}:${t}${n?`@${n}`:``}`}function Ui(e){let t=null,n=e,r=Vi.exec(e);r&&(t=r[1],n=e.slice(0,r.index));let i=fi(n.replace(/^docker\.io\//,``));return!i||i.registry||i.namespace===`library`?null:{writtenImage:n.slice(0,n.lastIndexOf(`:`)),ref:i,digest:t}}function Wi(e){let t=[];for(let n of e.split(/\r?\n/)){let e=Bi.exec(Ri(n));if(!e)continue;let r=Ui(e[1]);r&&t.push(r)}return t}const Gi=/\/v(?:[2-9]|[1-9]\d+)(?=\/|$)/;function Ki(e){let t=Gi.exec(e);return t?e.slice(0,t.index+t[0].length):null}async function qi(e,t){let n=Ki(e);if(n)return n;let r=e.split(`/`);return(await Promise.all(Array.from({length:r.length-1},async(e,n)=>{let i=r.slice(0,r.length-n).join(`/`);try{return(await t.doFetch(`${t.goProxyUrl}/${gr(i)}/@latest`,{signal:AbortSignal.timeout(t.goProbeTimeout)})).ok?i:null}catch{return null}}))).find(Boolean)??null}async function Ji(e,t,n,r,i,a){let o=await qi(e,r);if(!o)return null;let[s]=await Hr(o,`tool`,Y(t),n,r,i),c=It(s,{...a,mode:`go`,range:Y(t)});if(!c)return null;let l=s.newPath??xr(o,c),u=`${l}${e.slice(o.length)}`,d=sn(c,t);return u===e&&d===t?null:{newInstallPath:u,newVersion:d,date:s.Time??``,info:Kr(l)}}async function Yi(e,t,n){let{namespace:r,repo:i,fullImage:a,tag:o}=e.ref,[s]=await bi(a,t),c=xi(s.tags,o,n.semvers,n.cooldownDays,n.now,n.pinnedRange);if(!c)return null;let l=null;return e.digest&&(l=await yi(r,i,c.newTag,t),!l)?null:{newTag:c.newTag,newDigest:l,date:c.date,info:Mi(e.ref)}}function Xi(e,t){for(let{oldSpec:n,newSpec:r}of t){let t=RegExp(`^([^#\\n]*?)${q(n)}(?=[\\s#]|$)`,`gm`);e=e.replace(t,`$1${r}`)}return e}const Zi=new Map,Qi=e=>({versions:(e.versions||[]).filter(e=>!e.yanked).map(e=>({num:e.num,created_at:e.created_at}))});async function $i(e,t){let n=`${gt(t.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`;return[await Et(Zi,n,async()=>{let r=await wt(n,t,_t(),Qi);`body`in r||rn(r.res,n,e,t.cratesIoUrl);let i;try{i=JSON.parse(r.body)}catch{throw Error(`Invalid JSON from ${n}`)}let a=(i.versions||[]).filter(e=>!e.yanked),o={},s={};for(let e of a)e.num&&(o[e.num]={},s[e.num]=e.created_at||``);return{name:e,versions:o,time:s,"dist-tags":{latest:a[0]?.num??``}}}),null]}function ea(e){let t=new Map;for(let n of e.split(`[[package]]`)){let e=/\bname\s*=\s*"([^"]+)"/.exec(n),r=/\bversion\s*=\s*"([^"]+)"/.exec(n);if(!e||!r)continue;let i=e[1],a=r[1];me(a)&&$e(t,i,a)}return t}const ta=/^\d/;function na(e,t){return ta.test(e)?ir(Q(`^${e}`),t,`^${e}`).replace(/^\^/,``):ir(Q(e),t,e)}function ra(e,t,n){let r=e.get(t);if(!r)return;let i=ta.test(n)?`^${n}`:n,a;for(let e of r)W(e,i)&&(!a||V(e,a))&&(a=e);return a}const ia=He.map(q).join(`|`);function aa(e,t){let n=e;for(let[e,r]of Object.entries(t)){let[,t]=e.split(`\0`),i=r.oldOrig||r.old,a=r.new,o=q(t),s=q(i);n=n.replace(RegExp(`^(\\s*${o}\\s*=\\s*["'])${s}(["'].*)$`,`gm`),`$1${a}$2`),n=n.replace(RegExp(`^(\\s*${o}\\s*=\\s*\\{(?:"[^"]*"|'[^']*'|[^}\\n])*?\\bversion\\s*=\\s*["'])${s}(["'])`,`gm`),`$1${a}$2`),n=n.replace(RegExp(`(\\[(?:${ia})\\.${o}\\](?:(?!\\n\\[)[\\s\\S])*?version\\s*=\\s*["'])${s}(["'])`,`g`),`$1${a}$2`)}return n}function oa(e){let t=e.indexOf(`|`);return t===-1?e:e.slice(0,t)}function sa(e,t){let n=t===`.`?``:`|${t}`,r={};for(let[t,i]of Object.entries(e)){let[e,a]=t.split(`\0`),o=oa(e);e===`${o}${n}`&&(r[`${o}${a}`]=i)}return r}const ca=/[*?{[]/;async function la(e,t,n,r=32){let i=e.filter(e=>!e.startsWith(`!`)),a=e.filter(e=>e.startsWith(`!`)).map(e=>e.slice(1)),o=new Set(a.flatMap(e=>m(e,{cwd:t})).map(e=>e.replace(/\\/g,`/`))),s=new Set,c=[];for(let e of i){let r=ca.test(e)?m(e,{cwd:t}).map(e=>f(u(t,e))):[f(u(t,e))];for(let e of r){let r=d(t,e).replace(/\\/g,`/`);if(o.has(r))continue;let i=u(e,n);s.has(i)||(s.add(i),c.push({absPath:i,memberPath:`./${r}`}))}}return(await K(c,async({absPath:e,memberPath:t})=>{try{return{absPath:e,content:await x(e,`utf8`),memberPath:t}}catch{return null}},{concurrency:r})).filter(e=>e!==null)}function ua(e){let t=[],n=e.split(/\r?\n/),r=!1;for(let e of n){if(/^packages\s*:/.test(e)){r=!0;continue}if(r){let n=e.trim();if(!n||n.startsWith(`#`))continue;if(!n.startsWith(`-`))break;let r=/^\s*-\s+['"]?([^'"#\s]+)['"]?/.exec(e);r&&t.push(r[1])}}return t}const da=new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`,`make`]),fa={patch:new Set([`patch`]),minor:new Set([`patch`,`minor`]),major:new Set([`patch`,`minor`,`major`])},pa={"go.work":{mode:`go`,supersedes:`go.mod`},"pnpm-workspace.yaml":{mode:`npm`,supersedes:`package.json`}},ma=(e,t)=>typeof e==`string`?gt(e):typeof t==`function`?t():t,ha=/^(npm:@jsr\/[^@]+@|jsr:@[^@]+@)(.+)$/;function ga(e,t){let n=new Map,r=new Set(e),i=t;for(;r.size;){for(let e of r){let t=u(i,e);try{p(t),n.set(e,t),r.delete(e)}catch{}}let e=c(i);if(e===i)break;i=e}return n}async function _a(e,t){let n=await K(e,async e=>{try{return[e,await x(e,`utf8`)]}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}},{concurrency:t});return new Map(n)}function va(e,t){t&&(e.date=t,e.age=Ne(t,{noAffix:!0}))}const ya=(e,t,n)=>`${e}${t}${n}`,ba=e=>Object.values(e).reduce((e,t)=>e+Object.keys(t).length,0);function xa(e,t){return t===`go`?[e,qr(e)]:t===`docker`?di(e):[e]}const Sa=(e,t)=>t.map(t=>e[t]).find(Boolean);function $(e,t,n,r,i,a=t){if(i===`engines`&&Re.includes(e)||t===`pypi`&&e===`python`)return!1;if(!n.size&&!r.size)return!0;let o=xa(e,a);for(let e of r)if(o.some(t=>e.test(t)))return!1;for(let e of n)if(o.some(t=>e.test(t)))return!0;return!n.size}function Ca(t){let n=new Set;if(t)for(let e of t){let t;try{t=h(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}if(t.isFile())n.add(f(e));else if(t.isDirectory()){try{for(let t of _(e,{withFileTypes:!0}))t.isFile()&&(Object.hasOwn(ze,t.name)||Ai(t.name)||Pi(t.name))&&n.add(f(u(e,t.name)))}catch{}let t=f(e).replace(/\\/g,`/`),r=G.some(e=>t.endsWith(`/${e}/workflows`)),i=!r&&G.some(e=>t.endsWith(`/${e}`)),a=r?[c(t)]:i?[t]:G.map(e=>u(t,e));for(let e of a)for(let t of ri(e))n.add(t)}else throw Error(`${e} is neither a file nor directory`)}else{let t=new Set(G),r=[...Object.keys(ze),...Di,...Ni,...G];for(let[i,a]of ga(r,e()))if(t.has(i))for(let e of ri(a))n.add(e);else n.add(f(a));try{for(let t of _(e(),{withFileTypes:!0})){let r=Ai(t.name)&&!Di.includes(t.name),i=Pi(t.name)&&!Ni.includes(t.name);t.isFile()&&(r||i)&&n.add(f(u(e(),t.name)))}}catch{}}for(let e of Array.from(n)){let t=s(e);Object.hasOwn(pa,t)&&n.delete(u(c(e),pa[t].supersedes))}return n}function wa(e,t){r===`win32`&&y(e,0),ee(e,t,r===`win32`?{flag:`r+`}:void 0)}function Ta(e){let t={results:{}};for(let[n,r]of Object.entries(e))for(let[e,i]of Object.entries(r)){typeof i.oldPrint==`string`&&(i.old=i.oldPrint),typeof i.newPrint==`string`&&(i.new=i.newPrint),typeof i.oldOrig==`string`&&!Xn(i.oldOrig)&&(i.old=n===`go`?Jr(i.oldOrig):i.oldOrig),n===`go`?i.new=Jr(i.new):n===`actions`&&(i.old=Y(i.old),i.new=Y(i.new)),delete i.oldPrint,delete i.newPrint,delete i.oldOrig,delete i.date;let[r,a]=e.split(`\0`),o=t.results[n]??={};(o[r]??={})[a]=i}return t}let Ea=!1;async function Da(t={}){if(!Ea){let{enableDnsCache:e}=await import(`./dns.js`);e(),Ea=!0}let n={...t};typeof n.timeout==`number`&&(n.timeout=Xe(n.timeout,`timeout`));let r=n.sockets??25,a=n.timeout??0,l=ma(t.forgeapi,J.forgeapi),d=ma(t.pypiapi,J.pypiapi),p=ma(t.jsrapi,J.jsrapi),m=ma(t.goproxy,dr),h=ma(t.cargoapi,J.cargoapi),g=ma(t.dockerapi,J.dockerapi),_=fr(),v=!n.noColor&&(n.color||i.isTTY),y=e=>v?t=>o(e,String(t)):String,ee=y(`magenta`),te=y(`green`),b=y(`red`),S={fetchTimeout:a||5e3,goProbeTimeout:a?Math.max(1,Math.floor(a/2)):mt,forgeApiUrl:l,pypiApiUrl:d,jsrApiUrl:p,goProxyUrl:m,cratesIoUrl:h,dockerApiUrl:g,doFetch:async(e,t)=>{n.verbose&&console.error(`${Ke()} ${ee(t?.method||`GET`)} ${e}`);let r=await bt(e,t);return n.verbose&&console.error(`${Ke()} ${r.ok?te(r.status):b(r.status)} ${e}`),r},noCache:!!n.noCache},C=vn(n.greatest),ne=vn(n.prerelease),w=vn(n.release),T=vn(n.patch),E=vn(n.minor),re=vn(n.allowDowngrade),D=n.modes?.length?new Set(n.modes):da,O=(n.overrides??[]).map(e=>({include:e.include?.length?hn(e.include):void 0,exclude:e.exclude?.length?hn(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:Ye(String(e.cooldown))})),ae=(e,t)=>e.include&&t.every(t=>!Ue(t,e.include))?!1:!e.exclude||t.every(t=>!Ue(t,e.exclude)),oe=O.some(e=>e.cooldownDays);D.has(`actions`)&&Wt();let se=new Map;function k(e,t){let n=se.get(e);if(!n){let r=t??[e],i=e=>r.some(t=>Ue(t,e)),a=i(C),o=i(ne),s=i(w),c=i(T),l=i(E),u=i(re),d;for(let e of O)ae(e,r)&&(e.greatest!==void 0&&(a=e.greatest),e.prerelease!==void 0&&(o=e.prerelease),e.release!==void 0&&(s=e.release),e.patch!==void 0&&(c=e.patch),e.minor!==void 0&&(l=e.minor),e.allowDowngrade!==void 0&&(u=e.allowDowngrade),e.cooldownDays!==void 0&&(d=e.cooldownDays));let f=c?fa.patch:l?fa.minor:fa.major;n={useGreatest:a,usePre:o,useRel:s,semvers:f,allowDowngrade:u,cooldownOverride:d},se.set(e,n)}return n}let ce=hn(n.include??[]),le=hn(n.exclude??[]),ue=n.pin??{},A={},j={},M={},N=Date.now(),de=e=>{let t=n.cooldown??e;return t?Ye(String(t)):0},fe=e(),P=e=>e.replace(`${fe}/`,``).replace(`${fe}\\`,``),F=(e,t,n,r,i,a)=>{A[e][ya(t,n,r)]={old:i,oldOrig:a}},pe=(e,t,n,r)=>{Xn(r)?F(`npm`,e,t,n,er(r,n).version,r):Oe(r)?F(`npm`,e,t,n,Q(r),r):Zn(r)?F(`npm`,e,t,n,`0.0.0`,r):j[ya(e,t,n)]={old:r}},I=(e,t,n,r,i,a)=>{for(let o of r){let r=(e===`npm`||e===`go`?t[o]:We(t,o))||{};if(Array.isArray(r)){if(e!==`pypi`)continue;for(let{name:t,version:s}of Ie(r))$(t,e,i,a,o)&&F(e,o,n,t,Q(s),s)}else if(typeof r==`string`){let[t,s]=r.split(`@`);$(t,e,i,a,o)&&F(e,o,n,t,Q(s),s)}else for(let[t,s]of Object.entries(r))$(t,e,i,a,o)&&(e===`npm`?pe(o,n,t,s):e===`go`?F(e,o,n,t,Jr(s),Y(s)):Oe(s)&&F(e,o,n,t,Q(s),s))}},L=Ca(n.files?.length?new Set(n.files):!1),R=await _a(Array.from(L).filter(e=>{if(ni(e))return D.has(`actions`)||D.has(`docker`);let t=s(e);if(Ai(t))return D.has(`docker`);if(Pi(t))return D.has(`make`);let n=ze[t];return!!n&&D.has(n)}),r),he={},z={},ge={},_e=[],B=null,V=[],ve=[],ye=[],be=[],xe=[],H={},Se={noCache:n.noCache,timeout:n.timeout||5e3},Ce=et(async e=>{let t=await xn(e,Se);return{dirConfig:t,include:t.include?.length?hn([...n.include??[],...t.include]):ce,exclude:t.exclude?.length?hn([...n.exclude??[],...t.exclude]):le}});async function U(e){let{dirConfig:t,include:n,exclude:r}=await Ce(e);return{modeConfig:t,modeInclude:n,modeExclude:r,pin:{...t.pin,...ue}}}function we(e,t){return n.types?.length?n.types:t?.types?.length?t.types:e===`npm`?Le:e===`pypi`?Be:e===`go`?n.indirect?Ve:Ve.filter(e=>e!==`indirect`):e===`cargo`?He:[]}function Te(e,t,n,r){A.docker??={};for(let i of n)for(let{ref:n}of hi(e,i)){if(!$(n.fullImage,`docker`,r.include,r.exclude,`docker`))continue;let e=`${t}${n.fullImage}`;if(A.docker[e])continue;let i=pi(n.tag);i&&(A.docker[e]={old:i.version,oldOrig:n.tag},be.push({key:e,fullImage:n.fullImage,ref:n,filePin:r.pin,fileCooldownDays:r.cooldownDays}))}}async function Ee(e){let{dirConfig:t,include:n,exclude:r}=await Ce(e);return{include:n,exclude:r,pin:t.pin??{},cooldownDays:de(t.cooldown)}}let De=new Set,W=new Map;for(let e of L){let t=s(e);if(Object.hasOwn(pa,t))De.add(pa[t].mode);else if(t===`Cargo.toml`){let t=R.get(e);if(!t)continue;try{let n=ie(t);W.set(e,n);let r=n.workspace?.members;Array.isArray(r)&&r.length&&De.add(`cargo`)}catch{}}}let ke=(e,t,n,r,i,a)=>{let o=M[e]??=[],s=!o.length&&!De.has(e),c=s?`.`:P(t);return o.push({absPath:f(t),content:n,memberPath:c,projectDir:r,modeConfig:i,pin:a,modeCooldownDays:de(i.cooldown)}),s&&(H[e]={modeConfig:i,projectDir:r,pin:a}),s?``:`|${c}`},Ae=(e,t)=>{try{return t()}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}};for(let e of R.keys()){if(ni(e)){let t=D.has(`actions`),n=D.has(`docker`),r=R.get(e),i=P(e),a=await Ee(c(e));if(he[i]={absPath:e,content:r},t){A.actions??={};let e=Array.from(r.matchAll(Yr),e=>Xr(e[1])).filter(e=>e!==null);for(let t of e){if(!$(t.name,`actions`,a.include,a.exclude,`actions`))continue;let e=`${i}${t.name}`;A.actions[e]||(A.actions[e]={old:t.ref},ye.push({...t,key:e,apiUrl:Zr(t.host,l),filePin:a.pin,fileCooldownDays:a.cooldownDays}))}}n&&(z[i]={absPath:e,content:r,fileType:`workflow`},Te(r,i,[oi,si,ci],a));continue}let t=s(e);if(Ai(t)){let n=R.get(e),r=P(e),i=ki(t)?`dockerfile`:`compose`,a=await Ee(c(e));z[r]={absPath:e,content:n,fileType:i},Te(n,r,[ji(t)],a);continue}if(Pi(t)){let t=R.get(e),n=P(e),r=await Ee(c(e));ge[n]={absPath:e,content:t},A.make??={};let i={projectDir:c(e),filePin:r.pin,fileCooldownDays:r.cooldownDays};for(let{installPath:e,version:a}of zi(t)){if(!$(e,`make`,r.include,r.exclude,`make`,`go`))continue;let t=`${n}${e}`;A.make[t]||(A.make[t]={old:Y(a),oldOrig:a},xe.push({kind:`go`,key:t,name:e,oldSpec:`${e}@${a}`,installPath:e,version:a,...i}))}for(let e of Wi(t)){if(!$(e.writtenImage,`make`,r.include,r.exclude,`make`,`docker`))continue;let t=`${n}${e.writtenImage}`;if(A.make[t])continue;let a=pi(e.ref.tag);if(!a)continue;let o=Hi(e.writtenImage,e.ref.tag,e.digest);A.make[t]={old:a.version,oldOrig:e.ref.tag},xe.push({kind:`docker`,key:t,name:e.writtenImage,oldSpec:o,image:e,...i})}continue}let n=ze[t];if(t===`go.work`){A[n]??={};let t=c(f(e)),i=R.get(e);B={file:e,content:i};let a=Gr(i),[{modeConfig:o,modeInclude:s,modeExclude:l,pin:d},p]=await Promise.all([U(t),K(a.use,async e=>{let n=f(u(t,e,`go.mod`));try{return{usePath:e,modPath:n,content:await x(n,`utf8`)}}catch{return null}},{concurrency:r})]),m=we(n,o);H[n]={modeConfig:o,projectDir:t,pin:d};for(let e of p){if(!e)continue;let{usePath:t,modPath:r,content:i}=e,a=Br(i),o=c(r);_e.push({absPath:r,content:i,projectDir:o,memberPath:t}),I(n,a,t===`.`?``:`|${t}`,m,s,l)}for(let[e,t]of Object.entries(a.replace))$(e,n,s,l,`replace`)&&F(n,`replace`,``,e,Jr(t),Y(t));continue}if(t===`go.mod`&&_e.some(t=>t.absPath===f(e))||t===`package.json`&&ve.some(t=>t.absPath===f(e)))continue;if(t===`Cargo.toml`){A[n]??={};let t=R.get(e),i=W.get(e)??ie(t),a=c(f(e)),o=ga([`Cargo.lock`],a).get(`Cargo.lock`),s=i.workspace?.members,l=Array.isArray(s)&&s.length,[{modeConfig:u,modeInclude:d,modeExclude:p,pin:m},h,g]=await Promise.all([U(a),o?x(o,`utf8`):Promise.resolve(null),l?la(s,a,`Cargo.toml`,r):Promise.resolve([])]),_=we(n,u),v=h?ea(h):new Map,y=(e,t)=>{for(let r of _){let i=We(e,r)||{};if(!(typeof i!=`object`||Array.isArray(i))){for(let[e,a]of Object.entries(i))if($(e,n,d,p,r))if(typeof a==`object`&&a&&`version`in a&&!(`git`in a)&&!(`path`in a)){let i=a.version;Oe(i)&&F(n,r,t,e,ra(v,e,i)??Q(i),i)}else typeof a==`string`&&Oe(a)&&F(n,r,t,e,ra(v,e,a)??Q(a),a)}}};if(l){H[n]={modeConfig:u,projectDir:a,pin:m},y(i,``),V.push({absPath:f(e),content:t,memberPath:`.`});for(let e of g)V.push(e),y(Ae(e.absPath,()=>ie(e.content)),`|${e.memberPath}`)}else y(i,ke(n,e,t,a,u,m));continue}if(t===`pnpm-workspace.yaml`){A[n]??={};let t=c(f(e)),i=ua(R.get(e)),a=u(t,`package.json`),[{modeConfig:o,modeInclude:s,modeExclude:l,pin:d},p,m]=await Promise.all([U(t),Ze(x(a,`utf8`)),la(i,t,`package.json`,r)]),h=we(n,o);if(H[n]={modeConfig:o,projectDir:t,pin:d},p!==null){let e=Ae(a,()=>JSON.parse(p));ve.push({absPath:f(a),content:p,memberPath:`.`}),I(n,e,``,h,s,l)}for(let e of m){let t=Ae(e.absPath,()=>JSON.parse(e.content));ve.push(e),I(n,t,`|${e.memberPath}`,h,s,l)}continue}A[n]??={};let i=c(f(e)),{modeConfig:a,modeInclude:o,modeExclude:d,pin:p}=await U(i),m=we(n,a),h=R.get(e),g=ke(n,e,h,i,a,p);I(n,Ae(e,()=>n===`npm`?JSON.parse(h):n===`pypi`?ie(h):n===`go`?Br(h):{}),g,m,o,d)}if(!ba(A)&&!Object.keys(j).length)return{results:{},message:`No dependencies found, nothing to do.`};let je=[],Me=!!de(H.npm?.modeConfig.cooldown)||(M.npm??[]).some(e=>e.modeCooldownDays)||Object.keys(A.npm??{}).some(e=>k(e.split(`\0`)[1]).cooldownOverride),Ne={registry:n.registry,needsDates:Me};for(let[e,t]of Object.entries(H)){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=de(a.cooldown);je.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.indexOf(`|`);return r!==-1&&t.get(e.slice(r))||n},l=new Map,u=e=>{for(let[t,{date:n}]of Object.entries(e)){if(!n)continue;let[r,a]=t.split(`\0`),{modeCooldownDays:o}=i(r);if(!o&&!oe)continue;let s=k(a).cooldownOverride??o;s&&!dt(n,s,N)&&delete e[t]}},d=A[e];if(await K(Object.keys(d),async t=>{let[n,r]=t.split(`\0`),a=oa(n),{modeConfig:o,projectDir:s,pin:c,modeCooldownDays:u}=i(n),f=d[t],p;if(e===`npm`)if(f.oldOrig&&Xn(f.oldOrig))p=await tr(r,S);else if(f.oldOrig&&Zn(f.oldOrig)){let e=await Ze(Jn(r,a,o,Ne,S));if(!e){delete d[t];return}p=e}else p=await Jn(r,a,o,Ne,S);else p=e===`go`?await Hr(r,a,f.oldOrig||f.old,s,S,_):e===`cargo`?await $i(r,S):await lr(r,S);let[m,h]=p;if(m.error)throw Error(m.error);let{useGreatest:g,usePre:v,useRel:y,semvers:ee,allowDowngrade:te,cooldownOverride:b}=k(m.name),{old:x,oldOrig:C}=f,ne=c[r],w=b??u,T=It(m,{usePre:v,useRel:y,useGreatest:g,semvers:ee,range:x,mode:e,pinnedRange:ne,allowDowngrade:te,cooldownDays:w||void 0,now:w?N:void 0}),E=``;if((e===`go`||e===`pypi`)&&T)E=T;else if(e===`cargo`&&T&&C)E=na(C,T);else if(T)if(C&&Zn(C))E=String(In()[`save-exact`])===`true`?T:`^${T}`;else if(C&&Xn(C)){let e=ha.exec(C);e?E=`${e[1]}${T}`:C.startsWith(`jsr:`)&&(E=`jsr:${T}`)}else E=ir(x,T,C);if(!T||T===x||C&&C===E){delete d[t];return}let re=(e===`pypi`?m.releases?.[T]?.[0]?.upload_time_iso_8601:e===`go`?m.Time:e===`cargo`?m.time?.[T]:``)||``;f.new=E,C&&Xn(C)&&(f.newPrint=T),e===`npm`?l.set(t,{name:r,promise:Yn(m.name,T,o,Ne,S)}):e===`pypi`?f.info=un(m,h,m.info.name):e===`go`?f.info=Kr(m.newPath||r):e===`cargo`&&(f.info=`https://crates.io/crates/${r}`),va(f,re)},{concurrency:r}),await Promise.all(Array.from(l,async([e,{name:t,promise:n}])=>{let r=await n,i=d[e];i&&(i.info=un({repository:r.repository,homepage:r.homepage},null,t),r.date&&va(i,r.date))})),e===`npm`&&Object.keys(j).length){let e=(await K(Object.entries(j),([e,t])=>sr(e,t,S),{concurrency:r})).filter(e=>e!==null);for(let{key:t,newRange:n,user:r,repo:i,oldRef:a,newRef:o,newDate:s}of e){let e=d[t]={old:j[t].old,new:n,oldPrint:Xt.test(a)?a.substring(0,7):a,newPrint:Xt.test(o)?o.substring(0,7):o,info:`https://github.com/${r}/${i}`};s&&va(e,s)}}u(d)})())}ye.length&&je.push((async()=>{await K(Map.groupBy(ye,e=>`${e.apiUrl}/${e.owner}/${e.repo}`).values(),async e=>{let{apiUrl:t,owner:n,repo:i}=e[0],a=await nn(t,n,i,S),o=[],s=new Map,c=new Map,l=new Map;for(let e of a){c.set(e.name,e);let t=Y(e.name);me(t)&&(o.push(t),s.has(t)||s.set(t,e.name)),e.commitSha&&l.set(e.commitSha,e.name)}let u=et(e=>Qr(t,n,i,e,S));async function d(e){let t=new Set;for(let n=0;n<20;n++){let n=Pt({},t.size?o.filter(e=>!t.has(e)):o,e);if(!n||n===e.range)return null;let r=s.get(n);if(!r){t.add(n);continue}let i=c.get(r)?.commitSha||``;if(!e.cooldownDays)return{version:n,tag:r,commitSha:i,date:``};let a=i?await u(i):``;if(dt(a,e.cooldownDays,e.now))return{version:n,tag:r,commitSha:i,date:a};t.add(n)}return null}await K(e,async({key:e,host:t,ref:r,name:a,isHash:o,filePin:s,fileCooldownDays:f})=>{let p=A.actions[e],m=`https://${t||`github.com`}/${n}/${i}`,h=ue[a]??s[a],g=r;o?g=l.get(r)??l.entries().find(([e])=>e.startsWith(r))?.[1]??``:Zt(r)||(g=``);let _=g?Z(Y(g)):``;if(!_){delete A.actions[e];return}let{usePre:v,useRel:y,semvers:ee,cooldownOverride:te}=k(a),b=te??f,x=await d({range:_,semvers:ee,usePre:v,useRel:y,useGreatest:!0,pinnedRange:h,cooldownDays:b||void 0,now:b?N:void 0});if(!x){delete A.actions[e];return}let{tag:S,commitSha:C,date:ne}=x;if(o){if(!C||C.startsWith(r)||r.startsWith(C)){delete A.actions[e];return}p.old=r,p.new=C.substring(0,r.length),p.oldPrint=g,p.newPrint=S}else{let t=$r(S,r);if(t===r){delete A.actions[e];return}p.new=c.has(t)?t:S}p.info=m;let w=ne||(C?await u(C):``);w&&va(p,w)},{concurrency:r})},{concurrency:r}),Object.keys(A.actions).length||delete A.actions})()),be.length&&je.push((async()=>{await K(Map.groupBy(be,e=>e.fullImage).entries(),async([e,t])=>{let n;try{let[t]=await bi(e,S);n=t}catch{for(let e of t)delete A.docker[e.key];return}let r=xa(e,`docker`);for(let i of t){let t=A.docker[i.key],a=t.oldOrig||t.old,{semvers:o,cooldownOverride:s}=k(e,r),c=Sa(ue,r)??Sa(i.filePin,r),l=s??i.fileCooldownDays,u=xi(n.tags,a,o,l||void 0,l?N:void 0,c);if(!u){delete A.docker[i.key];continue}t.new=u.newTag,t.info=Mi(i.ref),va(t,u.date)}},{concurrency:r}),Object.keys(A.docker).length||delete A.docker})()),xe.length&&je.push((async()=>{await K(xe,async e=>{let t=xa(e.name,e.kind),{useGreatest:n,usePre:r,useRel:i,semvers:a,allowDowngrade:o,cooldownOverride:s}=k(e.name,t),c=Sa(ue,t)??Sa(e.filePin,t),l=s??e.fileCooldownDays,u={semvers:a,useGreatest:n,usePre:r,useRel:i,allowDowngrade:o,pinnedRange:c,cooldownDays:l||void 0,now:l?N:void 0},d=A.make[e.key],f;if(e.kind===`go`){let t=await Ze(Ji(e.installPath,e.version,e.projectDir,S,_,u));if(!t){delete A.make[e.key];return}e.newSpec=`${t.newInstallPath}@${t.newVersion}`,d.new=t.newVersion,f=t}else{let t=await Ze(Yi(e.image,S,u));if(!t){delete A.make[e.key];return}e.newSpec=Hi(e.image.writtenImage,t.newTag,e.image.digest?t.newDigest:null),d.new=t.newTag,f=t}d.info=f.info,f.date&&va(d,f.date)},{concurrency:r}),Object.keys(A.make).length||delete A.make})());try{await Promise.all(je)}finally{await lt()}if(!ba(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=sa(A[e],r.memberPath);Object.keys(t).length&&wa(r.absPath,n(r.content,t))}},t=new Map;for(let[e,n]of Object.entries(A.actions??{})){let[r,i]=e.split(`\0`),a=Xt.test(n.old)?n.newPrint:void 0;$e(t,r,{name:i,oldRef:n.old,newRef:n.new,newComment:a})}let n=new Map;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;for(let e of xe)!e.newSpec||!A.make?.[e.key]||$e(r,e.key.split(`\0`)[0],{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}=he[e]||{};if(!t)continue;let i=ei(r,n);wa(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;wa(r,(a===`dockerfile`?wi:a===`compose`?Ti:Ei)(i,t))}continue}if(a===`make`){for(let[e,t]of r){let n=ge[e];n&&wa(n.absPath,Xi(n.content,t))}continue}if(a===`go`){for(let e of[..._e,...M.go??[]]){let t=sa(A[a],e.memberPath);if(!Object.keys(t).length)continue;let[n,r]=Ur(e.content,t);n!==e.content&&wa(e.absPath,n),Wr(e.projectDir,r,wa)}if(B){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]=Ur(B.content,e);t!==B.content&&wa(B.file,t)}}}else a===`cargo`?(e(a,V,aa),e(a,M.cargo??[],aa)):a===`npm`?(e(a,ve,nr),e(a,M.npm??[],nr)):e(a,M[a]??[],ur)}}return Ta(A)}function Oa(e){return/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):e}function ka(e){let t=pn(e);if(t!==!1)return t===!0||Array.from(t).map(Oa)}function Aa(t){if(!t)return e();let n=l(t)?t:f(e(),t),r=!1;try{r=v(n).isDirectory()}catch{}return r?n:c(n)}function ja(e,t){let n=pn(e.file),r=[...n instanceof Set?n:[],...t];return{filesList:r,startDir:Aa(r[0])}}function Ma(e){let t=a({strict:!1,allowPositionals:!0,tokens:!0,options:dn,...e!==void 0&&{args:e}}),n=t.values;for(let[e,r]of t.tokens.entries()){if(r.kind!==`option`||!r.value?.startsWith(`-`))continue;let i=r.value.startsWith(`--`)?2:1,a=mn(r.value.substring(i));if(!a)continue;let o=t.tokens[e+1],s=n[r.name];if(Array.isArray(s)){let e=s.indexOf(r.value);e!==-1&&s.splice(e,1)}else n[r.name]=!0;let c=o?.kind===`positional`&&o.value?o.value:!0;dn[a]?.multiple?(n[a]??=[]).push(c):n[a]=c}return{args:n,positionals:t.positionals}}async function Na(e,t){let{filesList:n,startDir:r}=ja(e,t),i=typeof e.timeout==`string`?Xe(e.timeout,`timeout`):void 0,a={...await xn(r,{noCache:!!e[`no-cache`],timeout:i??5e3}),pin:void 0};e.json&&(a.json=!0),e.verbose&&(a.verbose=!0),e[`no-cache`]&&(a.noCache=!0),e.update&&(a.update=!0),e.indirect&&(a.indirect=!0),e[`error-on-outdated`]&&(a.errorOnOutdated=!0),e[`error-on-unchanged`]&&(a.errorOnUnchanged=!0),e.color&&(a.color=!0,a.noColor=!1),e[`no-color`]&&(a.color=!1,a.noColor=!0),i!==void 0&&(a.timeout=i),typeof e.sockets==`string`&&(a.sockets=Number(e.sockets)||void 0),typeof e.registry==`string`&&(a.registry=e.registry),typeof e.cooldown==`string`&&(a.cooldown=Number(e.cooldown)||e.cooldown);let o=gn(e.include).map(Oa),s=gn(e.exclude).map(Oa);o.length&&(a.include=o),s.length&&(a.exclude=s);let c=gn(e.types);c.length&&(a.types=c);let l=_n(e.pin);Object.keys(l).length&&(a.pin=l);let u=pn(e.modes);u instanceof Set&&(a.modes=Array.from(u));for(let t of[`greatest`,`prerelease`,`release`,`patch`,`minor`]){let n=ka(e[t]);n!==void 0&&(a[t]=n)}let d=ka(e[`allow-downgrade`]);d!==void 0&&(a.allowDowngrade=d),n.length&&(a.files=n);for(let t of[`forgeapi`,`pypiapi`,`jsrapi`,`goproxy`,`cargoapi`,`dockerapi`])typeof e[t]==`string`&&(a[t]=e[t]);return a}function Pa(e){try{return Sn(g(u(e,`.npmrc`),`utf8`)).registry}catch{return}}function Fa(e,t){try{return`${new URL(typeof e==`string`&&e?e:t).origin}/`}catch{return null}}const Ia={npm:[`registry`,`jsrapi`,`forgeapi`],pypi:[`pypiapi`],cargo:[`cargoapi`],go:[`goproxy`],docker:[`dockerapi`],actions:[`forgeapi`,`dockerapi`],make:[`goproxy`,`dockerapi`]};function La(e){if(ze[e])return ze[e];if(Ai(e))return`docker`;if(Pi(e))return`make`}function Ra(e,t){let n=new Set;try{for(let t of _(e,{withFileTypes:!0}))if(t.isFile()){let e=La(t.name);e&&n.add(e)}else t.isDirectory()&&G.some(e=>e===t.name)&&n.add(`actions`)}catch{}let r=new Set;for(let i of n)for(let n of Ia[i]??[]){let i=Fa(n===`registry`&&typeof t.registry!=`string`?Pa(e):t[n],J[n]);i&&r.add(i)}return Array.from(r)}const za=/[A-Za-z_$]/,Ba=/[A-Za-z0-9_$]/;function Va(e){let t=``,n=0,r=e.length,i=-1;function a(t){if(e[t+1]===`/`){for(t+=2;t<r&&e[t]!==`
3
+ `:``)+r[n]}e=n,f[p]=O(m+t+m)}else f[p]=O(u)}return t}function se(e){let t=e.slice(0,3);return t!==`"""`&&t!==`'''`||e.includes(t,3)?``:t}function O(e){if(e.startsWith(`[`)){let t=[],n=j(e,`]`);for(let r of ue(e.slice(1,n<0?e.length:n))){let e=r.trim();e&&t.push(O(e))}return t}return e.startsWith(`{`)?le(e):e.startsWith(`"""`)?he(e.slice(3,e.lastIndexOf(`"""`))):e.startsWith(`'''`)?e.slice(3,e.lastIndexOf(`'''`)):e.startsWith(`"`)?he(e.slice(1,e.lastIndexOf(`"`))):e.startsWith(`'`)?e.slice(1,e.lastIndexOf(`'`)):ce(e)}function ce(e){return e===`true`?!0:e===`false`?!1:/^[+-]?\d+(\.\d+)?$/.test(e)?Number(e):e}function le(e){let t={},n=e.slice(1,e.lastIndexOf(`}`)).trim();if(!n)return t;for(let e of ue(n)){let n=e.indexOf(`=`);if(n<0)continue;let r=e.slice(0,n).trim().replace(/^["']|["']$/g,``);t[r]=O(e.slice(n+1).trim())}return t}function k(e){let t=0,n=null;for(let r=0;r<e.length;r++){let i=e[r];if(n){if(i===`\\`&&n===`"`){r++;continue}i===n&&(n=null)}else if(i===`"`||i===`'`)n=i;else if(i===`{`||i===`[`)t++;else if((i===`}`||i===`]`)&&(t--,t===0))return!0}return!1}function ue(e){let t=[],n=0,r=null,i=0;for(let a=0;a<e.length;a++){let o=e[a];if(r){if(o===`\\`&&r===`"`){a++;continue}o===r&&(r=null)}else o===`"`||o===`'`?r=o:o===`[`||o===`{`?n++:o===`]`||o===`}`?n--:o===`,`&&n===0&&(t.push(e.slice(i,a)),i=a+1)}return i<e.length&&t.push(e.slice(i)),t}function de(e){let t=[],n=``,r=null;for(let i of e)if(r){if(i===r){r=null;continue}n+=i}else i===`"`||i===`'`?r=i:i===`.`?(t.push(n.trim()),n=``):n+=i;return n.trim()&&t.push(n.trim()),t}function fe(e){let t=A(e,`#`);return t<0?e:e.slice(0,t)}function*pe(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 A(e,t){return pe(e,t).next().value??-1}function j(e,t){let n=-1;for(let r of pe(e,t))n=r;return n}function me(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 he(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}})}function ge(e,t,n){if(e===t)return e;let r=0;for(;r<e.length&&r<t.length&&e[r]===t[r];)r++;if(r>0&&e[r-1]!==`.`&&e[r-1]!==`-`){let t=r-1;for(;t>=0&&e[t]!==`.`&&e[t]!==`-`;)t--;if(t>=0)r=t+1;else{let t=0;for(;t<r;){let n=e.charCodeAt(t);if(n>=48&&n<=57)break;t++}r=t}}let i=e.substring(r);return i?e.substring(0,r)+n(i):e}const _e=/^(\s*)([A-Za-z0-9][A-Za-z0-9._-]*)(\s*)((?:\[[^\]]*\])?)(\s*)(.*)$/,ve=/^(\s*\()([^)]*)(\)\s*)$/,ye=/^(\s*)(===|==|!=|~=|<=|>=|<|>)(\s*)(\S+)(\s*)$/,M=new Set([`===`,`==`,`>=`,`~=`]),be=/^v?\d[0-9a-z.!+_-]*$/i;function xe(e){let t=[];for(let n of e.split(`,`)){let e=ye.exec(n);if(!e)return null;let[,r,i,a,o,s]=e;t.push({lead:r,op:i,sep:a,version:o,trail:s})}return t}function Se(e){let t=e.indexOf(`;`),n=_e.exec(t===-1?e:e.slice(0,t));if(!n)return null;let[,r,i,a,o,s,c]=n,l=ve.exec(c);return{name:i,extras:o,specifiers:xe(l?l[2]:c),marker:t===-1?``:e.slice(t),head:`${r}${i}${a}${o}${s}`,open:l?.[1]??``,close:l?.[3]??``}}function Ce({head:e,open:t,close:n,marker:r},i){return`${e}${t}${i.map(({lead:e,op:t,sep:n,version:r,trail:i})=>`${e}${t}${n}${r}${i}`).join(`,`)}${n}${r}`}function N(e){return e.find(({op:e,version:t})=>M.has(e)&&be.test(t))}function we(e){let t=[];for(let n of e){if(typeof n!=`string`)continue;let e=Se(n);if(!e?.specifiers)continue;let r=N(e.specifiers);r&&t.push({name:e.name,version:r.version,spec:n})}return t}const Te=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],Ee=[`node`,`deno`,`bun`],P=[`.github`,`.gitea`,`.forgejo`],De={"pnpm-workspace.yaml":`npm`,"package.json":`npm`,"pyproject.toml":`pypi`,"go.work":`go`,"go.mod":`go`,"Cargo.toml":`cargo`},Oe=[`project.dependencies`,`project.optional-dependencies.*`,`dependency-groups.*`],ke=[`deps`,`indirect`,`replace`,`tool`],Ae=[`dependencies`,`dev-dependencies`,`build-dependencies`,`workspace.dependencies`],je=[`target.*.dependencies`,`target.*.dev-dependencies`,`target.*.build-dependencies`];function Me(e,t){let n=[],r=(e,t,i,a)=>{if(t===e.length){a!==void 0&&n.push([i,a]);return}if(!a||typeof a!=`object`)return;let o=e[t],s=o===`*`?Array.isArray(a)?[]:Object.keys(a):[o];for(let n of s)r(e,t+1,i?`${i}.${n}`:n,a[n])};for(let n of e)r(n.split(`.`),0,``,t);return n}function Ne(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 Pe(e){return e.split(`,`).filter(Boolean)}function Fe(){let e=new Date;return new Date(e.getTime()-e.getTimezoneOffset()*6e4).toISOString().replace(`T`,` `).slice(0,-1)}function F(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 Ie={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function Le(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Ie[n.toLowerCase()];if(r)return Number(e)*r}if(!/^\d+(?:\.\d+)?$/.test(e))throw Error(`Invalid cooldown value: ${e}`);return Number(e)}function Re(e,t){let n=Math.round(Number(e));if(!Number.isFinite(n)||n<1)throw Error(`Invalid ${t}: ${e}`);return n}async function I(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 ze(e){try{return await e}catch{return null}}const L=RegExp.escape?e=>RegExp.escape(e):e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);function Be(e){return Array.from(e).sort((e,t)=>t.length-e.length).map(L).join(`|`)}function Ve(e){return e instanceof RegExp?/[gy]/.test(e.flags)?new RegExp(e.source,e.flags.replace(/[gy]/g,``)):e:RegExp(`^${L(e).replaceAll(`\\*`,`.*`)}$`,`i`)}async function He(e,t){let n=e;for(;;){let e=await t(n);if(e)return e;let r=c(n);if(r===n)return null;n=r}}function Ue(e,t,n){let r=e.get(t);r?r.push(n):e.set(t,[n])}function R(e,t,n){return e.has(t)||e.set(t,n()),e.get(t)}function We(e){let t=new Map;return n=>R(t,n,()=>e(n))}const Ge=/^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*))?(?:\+[a-zA-Z0-9._-]+)?$/,Ke=new Map;function z(e){return typeof e==`string`?R(Ke,e,()=>{let t=Ge.exec(e.trim());if(!t)return null;let n=Number(t[1]),r=Number(t[2]),i=Number(t[3]),a=t[4]?t[4].split(`.`).map(e=>/^\d+$/.test(e)?Number(e):e):[];return{major:n,minor:r,patch:i,prerelease:a,version:`${n}.${r}.${i}${a.length?`-${a.join(`.`)}`:``}`}}):null}function qe(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 B(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function V(e,t){let n=B(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=qe(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function Je(e){return z(e)?.version??null}function H(e){return z(e)}const Ye=new Map,Xe=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function U(e){return typeof e==`string`?R(Ye,e,()=>{let t=Xe.exec(e);return t?{version:`${t[1]}.${t[2]||`0`}.${t[3]||`0`}`}:null}):null}function Ze(e,t){let n=z(e),r=z(t);return!n||!r?null:Qe(n,r)}function Qe(e,t){if(e.version===t.version)return null;let n=V(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(B(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=z(e),r=z(t);return n&&r?V(n,r):null}function W(e,t){return($e(e,t)??-1)>0}function et(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=z(`${n}.${t[3]??`0`}.${t[4]??`0`}${t[5]||``}`);return r?{op:t[1]||`=`,semver:r}:null}function tt(e,t){let n=V(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 G(e,t,n){return`${e}.${t}.${n}-0`}function nt(e){return e.replace(/([~^])\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.[xX*])*((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i,a)=>{let o=Number(n),s=r===void 0?0:Number(r),c=i===void 0?0:Number(i),l=(t===`~`?r:i)===void 0?``:a,u;return u=r===void 0?G(o+1,0,0):t===`~`?G(o,s+1,0):o===0?i!==void 0&&s===0?G(0,0,c+1):G(0,s+1,0):G(o+1,0,0),`>=${o}.${s}.${c}${l} <${u}`})}function rt(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?`<${G(p+1,0,0)}`:`<${G(p,Number(o)+1,0)}`:`<=${p}.${Number(o)}.${Number(s)}${c||``}`,`>=${l}.${u}.${d}${f} ${m}`})}function it(e,t,n,r){return!e||e===`=`?r?`>=${t}.0.0 <${G(t+1,0,0)}`:`>=${t}.${n}.0 <${G(t,n+1,0)}`:e===`>`?r?`>=${t+1}.0.0`:`>=${t}.${n+1}.0`:e===`<=`?r?`<${G(t+1,0,0)}`:`<${G(t,n+1,0)}`:e===`<`?r?`<${t}.0.0-0`:`<${t}.${n}.0-0`:r?`>=${t}.0.0`:`>=${t}.${n}.0`}function at(e){return/^\s*[*xX]\s*$/.test(e)?`>=0.0.0`:(e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)\.[xX*]/g,(e,t,n,r)=>it(t,Number(n),Number(r),!1)),e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.[xX*](?:\.[xX*])?/g,(e,t,n)=>it(t,Number(n),0,!0)),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)(?=\s|$)/g,(e,t,n,r,i)=>`${t}${it(n,Number(r),Number(i),!1)}`),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)(?=\s|$)/g,(e,t,n,r)=>`${t}${it(n,Number(r),0,!0)}`),e)}const ot=new Map;function st(e){return R(ot,e,()=>{let t=e.split(`||`).map(e=>e.trim()),n=[];for(let e of t){if(!e){n.push([]);continue}e=rt(e),e=nt(e),e=at(e),e=e.replace(/(>=|<=|>|<|=)\s+/g,`$1`),e=e.replace(/(^|[\s])v?(\d+\.\d+\.\d+(?:-[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*)?)\b/g,(e,t,n)=>`${t}=${n}`);let t=[];for(let n of e.split(/\s+/).filter(Boolean)){let e=et(n);if(!e)return null;t.push(e)}if(t.length===0)return null;n.push(t)}return n.length?n:null})}function ct(e,t){return t.some(t=>!tt(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 K(e,t){let n=z(e);if(!n)return!1;let r=st(t);if(!r)return!1;for(let e of r)if(e.length===0||ct(n,e))return!0;return!1}function q(e){return typeof e==`string`&&st(e)?e:null}const lt=`v?(?:(\\d+)!)?(\\d+(?:\\.\\d+)*)(?:[-_.]?(a|b|c|rc|alpha|beta|pre|preview)[-_.]?(\\d+)?)?(?:-(\\d+)|[-_.]?(post|rev|r)[-_.]?(\\d+)?)?(?:[-_.]?(dev)[-_.]?(\\d+)?)?(?:\\+([a-z0-9]+(?:[-_.][a-z0-9]+)*))?`,ut=RegExp(`^${lt}$`,`i`),dt=RegExp(lt,`i`),ft={alpha:`a`,beta:`b`,c:`rc`,pre:`rc`,preview:`rc`},pt=new Map;function J(e){return typeof e==`string`?R(pt,e,()=>{let t=ut.exec(e.trim());if(!t)return null;let n=t[3]?.toLowerCase();return{epoch:t[1]?Number(t[1]):0,release:t[2].split(`.`).map(Number),pre:n?[ft[n]??n,Number(t[4]??0)]:null,post:t[5]===void 0?t[6]===void 0?null:Number(t[7]??0):Number(t[5]),dev:t[8]===void 0?null:Number(t[9]??0),local:t[10]?t[10].toLowerCase().split(/[._-]/).map(e=>/^\d+$/.test(e)?Number(e):e):null,version:e.trim()}}):null}function mt(e){return J(e)??J(dt.exec(e)?.[0]??``)}const ht=e=>!!(e.pre||e.dev);function gt(e,t){if(!e||!t)return e?1:t?-1:0;let n=Math.min(e.length,t.length);for(let r=0;r<n;r++){let n=typeof e[r]==`number`;if(n!==(typeof t[r]==`number`))return n?1:-1;if(e[r]<t[r])return-1;if(e[r]>t[r])return 1}return e.length-t.length}function _t(e,t){if(e.epoch!==t.epoch)return e.epoch-t.epoch;let n=Math.max(e.release.length,t.release.length);for(let r=0;r<n;r++){let n=(e.release[r]??0)-(t.release[r]??0);if(n)return n}let r=e.pre?0:e.post===null&&e.dev!==null?-1:1,i=t.pre?0:t.post===null&&t.dev!==null?-1:1;if(r!==i)return r-i;if(e.pre&&t.pre){if(e.pre[0]!==t.pre[0])return e.pre[0]<t.pre[0]?-1:1;if(e.pre[1]!==t.pre[1])return e.pre[1]-t.pre[1]}if((e.post??-1)!==(t.post??-1))return(e.post??-1)-(t.post??-1);let a=e.dev??1/0,o=t.dev??1/0;return a===o?gt(e.local,t.local):a<o?-1:1}function vt(e,t){if(e.epoch!==t.epoch)return`major`;let n=Math.max(e.release.length,t.release.length);for(let r=0;r<n;r++)if((e.release[r]??0)!==(t.release[r]??0))return r===0?`major`:r===1?`minor`:`patch`;return null}function yt(e,t){let n=_t(e,t);if(n===0)return null;let r=vt(e,t);return ht(n>0?e:t)?r?`pre${r}`:`prerelease`:r??`patch`}const bt=/\d+\.\d+\.\d+(?:-[a-zA-Z0-9_.-]+)?/,xt={parse:H,parseRange:e=>H(bt.exec(e)?.[0]??``)??H(U(e)?.version??``),compare:V,diff:Qe,isPrerelease:e=>e.prerelease.length>0,isRangePrerelease:e=>/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e),satisfiesRange:(e,t)=>K(e.version,t)};function St(e){let t=e.trim().replace(/^v/i,``);return(H(t)??H(t.replace(/^(\d+\.\d+)(-.+)$/,`$1.0$2`)))||(/^\d/.test(t)?H(U(t)?.version??``):null)}const Ct={...xt,parse:St,parseRange:St,isRangePrerelease:e=>!!St(e)?.prerelease.length},wt={parse:J,parseRange:mt,compare:_t,diff:yt,isPrerelease:ht,isRangePrerelease:e=>{let t=mt(e);return!!(t&&ht(t))},satisfiesRange:({release:e},t)=>K(`${e[0]??0}.${e[1]??0}.${e[2]??0}`,t)},Tt=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],Et={"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`},Dt={sec:`second`,min:`minute`};function Ot(e){return typeof e==`number`?e:e instanceof Date?e.getTime():Date.parse(e)}function kt(e,{now:t,noAffix:n=!1,times:r=Tt,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=Et,longUnits:l=!1}={}){let u=(t===void 0?Date.now():Ot(t))-Ot(e);if(Number.isNaN(u))return o||String(e);let d=u<0;if(d&&(u=-u),u<i)return a;let f=0,p=``;for(let e=0,t=r.length;e<t;e++){let t=r[e];if(!(u>=t[1])){f=Math.trunc(u/t[0]),p=(l&&Dt[t[2]]||t[2])+(f>1?`s`:``);break}}let m=`${f} ${p}`,h=n?m:d?`in ${m}`:`${m} ago`;return s?c[h]??h:h}const At=u(r===`win32`?t.LOCALAPPDATA||u(ie(),`AppData`,`Local`):t.XDG_CACHE_HOME||u(ie(),`.cache`),`updates`);let jt=null;const Mt=new Map;function Nt(e){return R(Mt,e,()=>T(`sha256`).update(e).digest(`hex`).substring(0,16))}async function Pt(e){try{let t=await x(u(At,`${Nt(e)}.cache`),`utf8`),n=t.indexOf(`
6
+ `);if(n===-1)return null;let r=t.substring(0,n),i=t.substring(n+1);return r&&i?{etag:r,body:i}:null}catch{return null}}const Ft=new Set;let It=0;function Lt(e,t,r){let i=(async()=>{try{await(jt??=ne(At,{recursive:!0}))}catch{jt=null;return}try{let i=u(At,`${Nt(e)}.cache`),a=`${i}.${n}-${It++}.tmp`;await S(a,`${t}\n${r}`),await re(a,i)}catch{}})();Ft.add(i),(async()=>{await i,Ft.delete(i)})()}async function Rt(){for(;Ft.size;)await Promise.all(Ft)}var zt=`17.22.0`;function Bt(e,t,n){if(!t||!n)return!0;let r=e?Date.parse(e):NaN;return!Number.isNaN(r)&&(n-r)/864e5>=t}const Vt=zt,Ht=5e3,Ut=2500,Wt=`https://api.github.com`,Y={registry:`https://registry.npmjs.org`,jsrapi:`https://jsr.io`,forgeapi:Wt,pypiapi:`https://pypi.org`,cargoapi:`https://crates.io`,dockerapi:`https://hub.docker.com`,goproxy:`https://proxy.golang.org`},X=e=>e[0]===`v`?e.substring(1):e,Gt=e=>e.endsWith(`/`)?e.slice(0,-1):e;function Kt(e,t){return{headers:{"user-agent":`updates/${Vt}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}const qt=new Set([`ECONNRESET`,`ECONNREFUSED`,`ETIMEDOUT`,`EAI_AGAIN`,`EPIPE`,`UND_ERR_SOCKET`,`UND_ERR_CONNECT_TIMEOUT`,`UND_ERR_HEADERS_TIMEOUT`,`UND_ERR_BODY_TIMEOUT`]);function Jt(e){if(e?.name===`TimeoutError`||e?.name===`AbortError`)return!0;let t=e?.code??e?.cause?.code;return typeof t==`string`&&qt.has(t)}async function Yt(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=Jt(t),n}}async function Xt(e,t,n={}){let r=ln(e);for(let i=0;;i++)try{return await r(()=>e.doFetch(t,{...n,signal:AbortSignal.timeout(e.fetchTimeout)}))}catch(e){if(i>=2||!e?.transient)throw e}}async function Zt(e){return typeof e.text==`function`?e.text():JSON.stringify(await e.json())}const Qt=e=>t=>JSON.stringify(e(JSON.parse(t)));function $t(e,t){if(!t||e.length<16384)return e;try{return t(e)}catch{return e}}async function en(e,t,n,r,i){let a=$t(await Zt(t),r);return i&&!n.noCache&&Lt(e,i,a),{body:a,res:t}}async function tn(e,t,n={},r,i=e){let a=t.noCache?null:await Pt(i),o=n.headers,s=a?{...o,"if-none-match":a.etag}:o,c=await Xt(t,e,{...n,headers:s});return c?c.status===304&&a?{body:a.body,res:c}:c.ok?en(i,c,t,r,c.headers?.get?.(`etag`)):{res:c}:{res:void 0}}async function nn(e,t,n={},r){if(!t.noCache){let t=await Pt(e);if(t)return{body:t.body}}let i=await Xt(t,e,n);return i?i.ok?en(e,i,t,r,`immutable`):{res:i}:{res:void 0}}function rn(e,t,n){let r=e.get(t);return r||e.set(t,r=(async()=>{try{return await n()}catch(n){throw e.delete(t),n}})()),r}const an=new C;function on(e){let t=0,n=0,r=[];return async i=>{if(an.getStore())return i();t<e?t++:await new Promise(e=>{r.push(e)});try{return await an.run(!0,i)}finally{n<r.length?(r[n++](),n===r.length&&(r=[],n=0)):t--}}}const sn=e=>Math.max(e.concurrency||25,1),cn=new WeakMap;function ln(e){let t=cn.get(e);return t||cn.set(e,t=on(sn(e))),t}function un(e,t=xt){let n=t.parse(e);return!!(n&&t.isPrerelease(n))}function dn(e,t,n){let r=e.get(t);if(r)return r;let i=new Set(t);return n(i),e.set(t,i),i}const fn=new WeakMap,pn=new WeakMap;function mn(e,t,n,r){return t?{effectiveUsePre:!0,effectiveSemvers:dn(fn,n,e=>{e.add(`prerelease`),n.has(`patch`)&&e.add(`prepatch`),n.has(`minor`)&&e.add(`preminor`),n.has(`major`)&&e.add(`premajor`)})}:r.isRangePrerelease(e)?{effectiveUsePre:!0,effectiveSemvers:dn(pn,n,e=>e.add(`prerelease`))}:{effectiveUsePre:!1,effectiveSemvers:n}}function hn(e,t,{useRel:n,allowDowngrade:r,name:i},a=xt){let o=a.parseRange(e),s=a.parse(t);if(!o||!s)return!0;let c=a.isRangePrerelease(e)||a.isPrerelease(o),l=a.isPrerelease(s);return c&&!l?a.compare(s,o)>=0||n:!l&&a.compare(s,o)<0?Ne(i,r):!0}function gn(e){return U(e)?.version??``}function _n(e,t,{range:n,semvers:r,usePre:i,useRel:a,pinnedRange:o,pinNoDowngrade:s,cooldownDays:c,now:l,getVersionDate:u,versioning:d=xt}){let f=d.parseRange(n);if(!f)return null;let{effectiveUsePre:p,effectiveSemvers:m}=mn(n,i,r,d),h=e?.time,g=!!(c&&l),_=!!o&&!s&&!d.satisfiesRange(f,o)||a&&d.isPrerelease(f),v=null;for(let e of t){let t=d.parse(e);if(!t||d.isPrerelease(t)&&(!p||a)||!_&&d.compare(t,f)<=0||v&&d.compare(t,v)<=0||o&&!d.satisfiesRange(t,o)||g&&!Bt(u?u(e):h?.[e],c,l))continue;let n=d.diff(f,t),r=n&&!d.isPrerelease(t)?n.replace(/^pre/,``):n;!r||!m.has(r)||(v=t)}return v?.version??null}function vn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function yn(e,{mode:t,range:n,useGreatest:r,useRel:i,usePre:a,semvers:o,pinnedRange:s,pinNoDowngrade:c,cooldownDays:l,now:u,allowDowngrade:d}){if(n===`*`)return null;let f=t===`pypi`?wt:xt,p=n.includes(`||`)?n.split(`||`).pop().trim():n,m=[],h=``,g;if(t===`pypi`){let t=e?.releases;if(!t)return null;m=Object.keys(t).filter(e=>!t[e]?.some(e=>e?.yanked)),g=e=>t[e]?.[0]?.upload_time_iso_8601,h=e.info?.version??``}else if(t===`npm`||t===`cargo`){if(!e?.versions)return null;m=Object.keys(e.versions),h=e[`dist-tags`]?.latest??``}else if(t===`go`){let t=gn(p);if(!t)return null;let{effectiveUsePre:n,effectiveSemvers:r}=mn(p,a,o,f),c=e=>un(e)&&(!n||i),m={useRel:i,allowDowngrade:d,name:e.name},h=e.old||p,g=(e,n)=>{let i=gn(e);if(!i||vn(e)||c(e))return!1;let a=Ze(h,e)??Ze(t,i);return!a||!r.has(a)||!hn(h,e,m)||!Bt(n,l,u)?!1:!s||K(i,s)};return g(e.new,e.Time)?e.new:g(e.sameMajorNew,e.sameMajorTime)?(e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew):null}let _=_n(e,m,{range:p,semvers:o,usePre:a,useRel:i,pinnedRange:s,pinNoDowngrade:c,cooldownDays:l,now:u,getVersionDate:g,versioning:f});if(r)return _;{let t=m.includes(h)?f.parse(h):null,n=f.parseRange(p);if(!t||!n)return _;let r=_?f.parse(_):null,c=f.isPrerelease(t),v=f.isRangePrerelease(p),y=!!(r&&f.isPrerelease(r)),b={useRel:i,allowDowngrade:d,name:e.name};if(!i&&a||v&&y)return _;if(v&&!y)return _&&hn(p,_,b,f)?_:null;let ee=f.diff(n,t);return ee&&ee!==`prerelease`&&!o.has(ee.replace(/^pre/,``))||i&&c?_:f.compare(t,n)<0&&!c?hn(p,h,b,f)?h:r&&f.compare(r,n)>0?_:null:!v&&c&&!a||s&&!f.satisfiesRange(t,s)||l&&u&&!Bt(g?g(h):e.time?.[h],l,u)?_:h}}function bn(e){try{return new URL(e).host}catch{return``}}function xn(e){for(let n of Pe(t.UPDATES_FORGE_TOKENS??``)){let t=n.lastIndexOf(`:`);if(t>0&&n.slice(0,t)===e)return n.slice(t+1)}return null}let Sn;async function Cn(){let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]);return t(e)}function wn(){return Sn??=Cn()}const Tn=[`UPDATES_GITHUB_API_TOKEN`,`GITHUB_API_TOKEN`,`GH_TOKEN`,`GITHUB_TOKEN`,`HOMEBREW_GITHUB_API_TOKEN`];function En(){return Array.from(new Set(Tn.map(e=>t[e]).filter(e=>!!e)))}let Dn;function On(){let e=En();return e.length?Promise.resolve(e):Dn??=(async()=>{try{let{stdout:e}=await(await wn())(`gh`,[`auth`,`token`],{encoding:`utf8`,timeout:5e3}),t=e.trim();return t?[t]:[]}catch{return[]}})()}const kn=/^http\.(\S+)\/\.extraheader AUTHORIZATION:\s*basic\s+(\S+)$/i;function An(e){let t=new Map;for(let n of e.split(/\r?\n/)){let e=kn.exec(n);if(!e)continue;let r=bn(e[1]),i=w.from(e[2],`base64`).toString(`utf8`),a=i.slice(i.indexOf(`:`)+1);r&&a&&!t.has(r)&&t.set(r,a)}return t}let jn;function Mn(){return jn??=(async()=>{try{let{stdout:e}=await(await wn())(`git`,[`config`,`--get-regexp`,`^http\\..*\\.extraheader$`],{encoding:`utf8`,timeout:5e3});return An(e)}catch{return new Map}})()}const Nn=new Map;async function Pn(e,t){if(!e)return[];let n=xn(e);if(n)return[n];let r=e===`api.github.com`?`github.com`:e,i=r===`github.com`||e===bn(t),[a,o]=await Promise.all([i?On():[],Mn()]),s=o.get(r);return Array.from(new Set(s?[...a,s]:a))}var Fn=class extends Error{name=`ForgeError`;kind;host;status;reset;constructor(e,t,n,{status:r=0,reset:i=0,cause:a}={}){super(n,{cause:a}),this.kind=e,this.host=t,this.status=r,this.reset=i}};async function In(e){if(e.status!==403&&e.status!==429)return null;let t=()=>Number(e.headers?.get?.(`x-ratelimit-reset`))||0;if(e.headers?.get?.(`x-ratelimit-remaining`)===`0`||e.headers?.get?.(`retry-after`))return t();try{let{message:n}=await(typeof e.clone==`function`?e.clone():e).json();if(typeof n!=`string`)return null;if(n.includes(`rate limit exceeded`)||n.includes(`abuse detection mechanism`)||n.startsWith(`You have exceeded a secondary rate limit`))return t()}catch{}return null}async function Ln(e,t,n,r){if(e.status>=500)throw new Fn(`server`,n,`Received ${e.status}${e.statusText?` ${e.statusText}`:``} from ${t}`,{status:e.status});let i=await In(e);if(i===null)return e;throw new Fn(`rateLimit`,n,`Rate limit exceeded for ${n}${r?` even though a token was sent`:`, set one for this host in UPDATES_FORGE_TOKENS`}${i?`, resets at ${new Date(i*1e3).toISOString()}`:``}`,{status:e.status,reset:i})}async function Rn(e,t,n){let r=bn(e),i=await Pn(r,t.forgeApiUrl),a=e=>{let t=Kt(`Bearer`,e);return n&&(t.headers={...t.headers,...n}),t},o=async n=>Ln(await Xt(t,e,a(n)),e,r,i.length>0);try{if(!i.length)return await o();let e=Nn.get(r);if(e)return await o(e);for(let e of i){let t=await o(e);if(t.status!==401&&t.status!==403)return Nn.set(r,e),t}return await o()}catch(e){throw e instanceof Fn?e:new Fn(`network`,r,e?.message??String(e),{cause:e})}}function zn(e,t){let n=X(t);if(!Je(n))return null;let r=``,i=``;for(let t of e){let e=X(t);Je(e)&&(!r||W(e,i))&&(r=t,i=e)}return r&&W(i,n)?r:null}function Bn(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 Vn=/^(?=.*[a-f])[0-9a-f]{6,}$/i;function Hn(e){return/^v?\d+(?:\.\d+)*(?:[-+][\w.-]+)?$/.test(e)}function Un(e){let t=e?.commit??e;return t?.committer?.date||t?.author?.date||``}function Wn(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function Gn(e,t,n){let r=t.noCache?null:await Pt(e),i=await Rn(e,t,r?{"if-none-match":r.etag}:void 0);if(i?.status===304&&r)return r.body;if(!i?.ok)return null;let a=await n(i),o=i.headers.get(`etag`);return o&&!t.noCache&&Lt(e,o,a),a}async function Kn(e,t){let n=await Gn(e,t,async e=>JSON.stringify({link:e.headers.get(`link`)||``,tags:Wn(await e.json())}));if(!n)return null;try{let e=JSON.parse(n);return{tags:e.tags||[],link:e.link||``}}catch{return null}}async function qn(e,t,n,r,i=[]){let a=r=>`${e}/repos/${t}/${n}/tags?per_page=100&page=${r}`,o=[],s=new Set(i.filter(Boolean)),c=s.size>0,l=e=>{for(let t of e?.tags??[]){for(let e of s)(e===t.name||t.commitSha.startsWith(e))&&s.delete(e);o.push(t)}return c&&!s.size};try{let e=await Kn(a(1),r);if(!e)return o;let t=/<([^>]+)>;\s*rel="last"/.exec(e.link),n=t?Math.min(Number(new URL(t[1]).searchParams.get(`page`)),100):0,i=sn(r);for(let t=2,o=1,s=l(e);t<=n&&!s;t+=o,o=Math.min(o*2,i)){let e=await Promise.all(Array.from({length:Math.min(o,n-t+1)},(e,n)=>Kn(a(t+n),r)));for(let t of e)s=l(t)}return o}catch(e){if(e instanceof Fn)throw e;return[]}}function Z(e,t,n,r){throw e?.status&&e.statusText?Error(`Received ${e.status} ${e.statusText} from ${t}`):Error(`Unable to fetch ${n} from ${r}`)}const Jn=e=>Number(e[0])>=2e7;function Yn(e,t){let n=X(e).split(`.`),r=X(t).split(`.`);return n.length<r.length?!1:!Jn(n)||Jn(r)}function Xn(e,t,n=``){let r=X(e),i=X(t).split(`.`).length,a=r.split(`.`),o=i>=3?r:Array.from({length:i},(e,t)=>a[t]||`0`).join(`.`);return`${t.startsWith(`v`)?`v`:``}${o}${n}`}function Zn(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}const Qn=[`repository`,`Repository`,`repo`,`Repo`,`source`,`Source`,`source code`,`Source code`,`Source Code`,`homepage`,`Homepage`];function $n({repository:e,homepage:t,info:n},r,i){if(n){let t=n.project_urls;for(let n of Qn)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=Bn(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a+=`/${Zn(a)}/${e.directory}`)),a||t||``)}const er={"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 tr(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.filter(e=>typeof e==`string`).flatMap(Pe)):typeof e==`string`?new Set([e]):typeof e==`boolean`&&e}function nr(e){for(let[t,{short:n}]of Object.entries(er))if(t===e||n===e)return t;return``}function rr(e){return new Set(e.map(Ve))}function ir(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(Pe):[]}function ar(e){for(let[t,n]of Object.entries(e??{}))if(!q(n))throw Error(`Invalid pin range for ${t}: ${n}`)}function or(e){let t={};for(let n of Array.isArray(e)?e:[e]){if(typeof n!=`string`)continue;let e=n.indexOf(`=`);if(e<1)throw Error(`Invalid pin: ${n}, expected <dep>=<range>`);t[n.slice(0,e)]=n.slice(e+1)}return ar(t),t}function sr(e){return typeof e==`boolean`?e:!Array.isArray(e)||!e.length?!1:rr(e)}async function cr(e){let t=await Promise.all([`js`,`ts`,`mjs`,`mts`].map(async t=>{let n=`updates.config.${t}`,r=u(e,n);try{await te(r)}catch{return null}try{return{configDir:e,default:(await import(ae(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 lr=We(e=>He(e,cr));async function ur(e,t={}){let n=await lr(e),r=n?.default??{},{loadRenovateConfig:i,makePresetFetcher:a}=await import(`./renovate.js`),o=a(t),s=await i(n?.configDir??e,r.inherit?.renovate,o),c={...s,...r};return s.pin&&(c.pin={...s.pin,...r.pin},c.pinNoDowngrade=Object.keys(s.pin).filter(e=>!r.pin?.[e])),ar(c.pin),c}function dr(e){if(/^\s*\{/.test(e))return JSON.parse(e);let t={};for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e||e.startsWith(`#`)||e.startsWith(`;`))continue;let r=e.indexOf(`=`);if(r===-1)continue;let i=e.slice(r+1).trim();/^(["']).*\1$/s.test(i)&&(i=i.slice(1,-1)),t[e.slice(0,r).trim()]=i}return t}function fr(e){try{return dr(g(e,`utf-8`))}catch{return}}function pr(e,t){let n=t;for(;;){let t=u(n,e);try{if(y(t).isFile())return t}catch{}let r=c(n);if(r===n)break;n=r}}function mr(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 hr(n,i={},a=e()){let o=r===`win32`,s=o?t.USERPROFILE:t.HOME,c=[{...i}],l=[];function d(e){if(!e||l.includes(e))return;let t=fr(e);t&&(c.push(t),l.push(e))}o||(d(u(`/etc`,n,`config`)),d(u(`/etc`,`${n}rc`))),s&&(d(u(s,`.config`,n,`config`)),d(u(s,`.config`,n)),d(u(s,`.${n}`,`config`)),d(u(s,`.${n}rc`))),d(pr(`.${n}rc`,a));let f=mr(`${n}_`);return f.config&&d(f.config),Object.assign({},...c,f,l.length?{configs:l,config:l[l.length-1]}:void 0)}const gr=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,_r=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,vr=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,yr=/(@[^/]+\/)?([^/]+)/g,br=/^(?:@[^/]+\/)?[^@]+/;function xr(e){let t=e.match(yr),n=t?t[t.length-1]:e;return br.exec(n)?.[0]??n}const Sr=Y.registry,Cr=new Map,wr=new Map;function Tr(e){return R(Cr,e??``,()=>hr(`npm`,{registry:Sr},e))}function Er(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function Dr(e,t){let n=n=>t[`${e}:${n}`]||t[`${e}/:${n}`],r=n(`_authToken`);if(r)return{token:Er(r),type:`Bearer`};let i=n(`username`),a=n(`_password`);if(i&&a){let e=Buffer.from(Er(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:Er(o),type:`Basic`}}function Or(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=Dr(`//${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:Er(i),type:`Basic`}}function kr(e,t){let n=t[`${e}:registry`]||``;return!n||n.endsWith(`/`)?n:`${n}/`}function Ar(e,t,n){let r=Tr(n),i=e.startsWith(`@`)?e.split(`/`)[0]:``;return R(wr,`${n??``}${i}:${t}`,()=>{let e,n=i&&kr(i,r);if(n)try{let i=Gt(n);i!==t&&(e={auth:Or(i,r),registry:i})}catch{}return e??{auth:Or(t,r),registry:t}})}function jr(e,t,n,r){let i=Gt(typeof n.registry==`string`&&n.registry||t.registry||Tr(r).registry||Sr);return{...Ar(e,i,r),originalRegistry:i}}function Mr(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const Nr=new Map,Pr=new Map,Fr=new Map;function Ir(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 Lr(e,t,n,r,i,a){let{auth:o,registry:s}=jr(e,n,r,a),c=Mr(s,t===`resolutions`?xr(e):e),l=r.needsDates?`${c}\0dates`:c;return[await rn(Nr,l,async()=>{let t=Kt(o?.type,o?.token);r.needsDates||(t.headers={...t.headers,accept:`application/vnd.npm.install-v1+json`});let n=await tn(c,i,t,Qt(Ir),l);return`body`in n||Z(n.res,c,e,s),JSON.parse(n.body)}),s]}async function Rr(e,t,n,r,i,a){let{auth:o,registry:s}=jr(e,n,r,a),c=Mr(s,e,t);return rn(Pr,c,async()=>{try{let n=Kt(o?.type,o?.token),r=await nn(c,i,n,Qt(e=>({repository:e.repository,homepage:e.homepage,_npmOperationalInternal:e._npmOperationalInternal?.tmp?{tmp:e._npmOperationalInternal.tmp}:void 0})));if(!(`body`in r))return{};let a=JSON.parse(r.body),l=``,u=a?._npmOperationalInternal?.tmp;if(u){let e=/(\d{13})/.exec(u);e&&(l=new Date(Number(e[1])).toISOString())}let d=Mr(s,e);return l||=(await Nr.get(d))?.time?.[t]||``,l||=(await ze(rn(Fr,d,async()=>{let e=await Xt(i,d,n);return e?.ok?await e.json():null})))?.time?.[t]||``,{repository:a.repository,homepage:a.homepage,date:l}}catch{return{}}})}function zr(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Br(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function Vr(e){return e.startsWith(`catalog:`)}const Hr=/^npm:((?:@[^/@]+\/)?[^@/][^@]*)@(.+)$/;function Ur(e){let t=Hr.exec(e);return t&&q(t[2])?{name:t[1],range:t[2]}:null}const Wr=[/^npm:@jsr\/([^_]+)__([^@]+)@(.+)$/,/^jsr:@([^/]+)\/([^@]+)@(.+)$/],Gr=/^@([^/]+)\/(.+)$/;function Kr(e,t){for(let t of Wr){let n=t.exec(e);if(n)return{scope:n[1],name:n[2],version:n[3]}}if(e.startsWith(`jsr:`)&&!e.startsWith(`jsr:@`)){let n=Gr.exec(t??``);if(n)return{scope:n[1],name:n[2],version:e.substring(4)}}return{scope:null,name:null,version:``}}async function qr(e,t){if(!Gr.test(e))throw Error(`Invalid JSR package name: ${e}`);let n=`${t.jsrApiUrl}/${e}/meta.json`,r=await tn(n,t,{headers:{"accept-encoding":`gzip, deflate, br`}},Qt(e=>({latest:e.latest,versions:Object.fromEntries(Object.entries(e.versions??{}).map(([e,t])=>[e,{createdAt:t?.createdAt}]))})));`body`in r||Z(r.res,n,e,`JSR`);let i=JSON.parse(r.body),a={},o={};for(let[e,t]of Object.entries(i.versions??{}))a[e]={version:e,time:t.createdAt},o[e]=t.createdAt;return[{name:e,"dist-tags":{latest:i.latest},versions:a,time:o},t.jsrApiUrl]}const Jr=new Set([32,9,10,13]);function Yr(e){let t=new Map,n=0,r=null,i=0;for(let a=0;a<e.length;a++){let o=e.charCodeAt(a);if(o===34){let t=a;for(;e.charCodeAt(++a)!==34&&a<e.length;)e.charCodeAt(a)===92&&a++;n===1&&r===null&&(r=e.slice(t+1,a),i=t)}else o===123||o===91?n++:o===125||o===93?(--n===0&&r!==null&&t.set(r,{start:i,end:a}),n===0&&(r=null)):o===44&&n===1&&r!==null&&(t.set(r,{start:i,end:a}),r=null)}return t}function Xr(e,t,n,r){for(let i=e.indexOf(n,t);i!==-1;i=e.indexOf(n,i+1)){let t=i+n.length;for(;Jr.has(e.charCodeAt(t));)t++;if(e.charCodeAt(t)===58){for(t++;Jr.has(e.charCodeAt(t));)t++;if(e.startsWith(r,t))return t}}return-1}function Zr(e,t){let n;try{n=JSON.parse(e)}catch{return e}let r=Yr(e),i=new Map,a=[];for(let[o,{old:s,oldOrig:c,new:l}]of Object.entries(t)){let[t,u]=o.split(`\0`),d=n[t],f=typeof d==`string`,p=f?`${u}@${c||s}`:c||s,m=r.get(t);if(!m||(f?d:d?.[u])!==p)continue;let h=JSON.stringify(f?t:u),g=JSON.stringify(p),_=Xr(e,i.get(t)??m.start,h,g);(_===-1||_>=m.end)&&(_=Xr(e,m.start,h,g)),!(_===-1||_>=m.end)&&(i.set(t,_+g.length),a.push({index:_,length:g.length,text:JSON.stringify(f?`${u}@${l}`:l)}))}if(!a.length)return e;a.sort((e,t)=>e.index-t.index);let o=[],s=0;for(let{index:t,length:n,text:r}of a)t<s||(o.push(e.slice(s,t),r),s=t+n);return o.push(e.slice(s)),o.join(``)}const Qr=String.raw`[<>]=?|[\^~=]`,$r=new RegExp(String.raw`^(${Qr})?(\s*)(v?)((?:\d+|[xX*])(?:\.(?:\d+|[xX*]))*)(-[0-9A-Za-z.-]+)?$`),ei=RegExp(`^(?:${Qr})$`),ti=/^[xX*]$/,ni=/\+[0-9A-Za-z.-]+/g,ri=/\|\||[\dxX*]\s+\S/;function ii(e){let t=[];for(let n of e.trim().replaceAll(`||`,` || `).split(/\s+/))t.length&&ei.test(t[t.length-1])?t[t.length-1]+=` ${n}`:t.push(n);return t}function ai(e,t){let n=$r.exec(e);if(!n)return e;let[,r=``,i,a,o,s=``]=n,c=o.split(`.`);if(r===`<`&&!a&&c.length<=3&&!/[xX*]/.test(o)&&(!s||s===`-0`)){let{major:e,minor:n,patch:a}=H(t);return`${r}${i}${s?`${e+1}.0.0-0`:c.length===1?`${e+1}`:c.length===2?`${e}.${n+1}`:o.endsWith(`.0.0`)?`${e+1}.0.0`:`${e}.${n}.${a+1}`}`}if(r===`>`||r===`<`)return e;let l=t.split(`-`)[0].split(`.`);return l.join(`.`)===t?`${r}${i}${a}${c.map((e,t)=>ti.test(e)?e:l[t]??`0`).join(`.`)}`:`${r}${i}${a}${t}`}function oi(e,t){return e===`peerDependencies`||ri.test(t)}function si(e,t){if(K(t,e))return e;let n=ii(e),r=n[n.length-1];if(!r.startsWith(`<`)&&n[n.length-2]!==`-`){let i=ai(r,t);return n.length>1&&r.startsWith(`>`)||i===r?e:`${e} || ${i}`}return n[n.length-1]=ai(r,t),n.join(` `)}function ci(e,t,n,r){let i=(n||e).replace(ni,``),a=oi(r,i)?si(i,t):ai(i,t);return K(t,a)?a:i}function Q(e){if(/[xX*]/.test(e))return e;let t=e.match(vr);return t?.length===1?e.replace(vr,gn(t[0])):e}async function li(e,t,n){let r=await Gn(`${n.forgeApiUrl}/repos/${e}/${t}/commits`,n,async e=>{let[t]=JSON.parse(await e.text());return JSON.stringify(t?[{sha:t.sha,commit:{committer:t.commit?.committer,author:t.commit?.author}}]:[])}),[i]=r?JSON.parse(r):[];return i?{hash:i.sha,commit:i.commit}:{hash:``,commit:{}}}async function ui(e,t,n,r){return(await qn(r.forgeApiUrl,e,t,r,[n])).map(e=>e.name)}async function di(e,t,n){let r=t.old.replace(gr,``),[,i,a,o]=_r.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(Vn.test(o)){let{hash:t,commit:r}=await li(i,a,n);if(!t)return null;let c=Un(r),l=t.substring(0,o.length);if(o.toLowerCase()!==l.toLowerCase())return{key:e,newRange:s(l),user:i,repo:a,oldRef:o,newRef:l,newDate:c}}else{let t=zn(await ui(i,a,o,n),o);if(t)return{key:e,newRange:s(t),user:i,repo:a,oldRef:o,newRef:t}}return null}function fi(e){let t={};for(let[n,r]of Object.entries(e.releases??{})){let e=r??[];t[n]=e.slice(0,1).map(t=>({...t.upload_time_iso_8601&&{upload_time_iso_8601:t.upload_time_iso_8601},...e.some(e=>e?.yanked)&&{yanked:!0}}))}let{name:n,version:r,project_urls:i}=e.info??{};return{info:{name:n,version:r,project_urls:i},releases:t}}async function pi(e,t){let n=`${t.pypiApiUrl}/pypi/${e}/json`,r=await tn(n,t,{headers:{"accept-encoding":`gzip, deflate, br`}},Qt(fi));if(`body`in r)return[JSON.parse(r.body),null];Z(r.res,n,e,t.pypiApiUrl)}function mi(e,{op:t,version:n}){if(t===`===`)return n===e.version;if(n.endsWith(`.*`)){let r=J(n.slice(0,-2));if(!r||t!==`==`&&t!==`!=`)return!1;let i=r.epoch===e.epoch&&r.release.every((t,n)=>(e.release[n]??0)===t);return t===`==`?i:!i}let r=J(n);if(!r)return!1;let i=_t(e,r);if(t===`==`)return i===0;if(t===`!=`)return i!==0;if(t===`>=`)return i>=0;let a=e.epoch===r.epoch&&Array.from({length:Math.max(e.release.length,r.release.length)}).every((t,n)=>(e.release[n]??0)===(r.release[n]??0));return t===`>`?i>0&&!(a&&e.post!==null&&r.post===null):t===`<=`?i<=0:t===`<`?i<0&&!(a&&(e.pre||e.dev!==null)&&!r.pre&&r.dev===null):i>=0&&r.release.length>1&&r.release.slice(0,-1).every((t,n)=>(e.release[n]??0)===t)}function hi(e,t){let n=e.release.length-1;return e.release.map((e,r)=>(t.release[r]??0)+ +(r===n)).join(`.`)}function gi(e,t){return e.release.length===t.release.length?t.version:Array.from({length:e.release.length},(e,n)=>t.release[n]??0).join(`.`)}function _i(e,t,n){let r=Se(e),i=r?.specifiers,a=J(t),o=J(n);if(!r||!i||!a||!o)return null;let s=N(i);if(s?.version!==t)return null;for(let e of i){if(e===s){e.version=e.op===`~=`?gi(a,o):n;continue}if(mi(o,e))continue;let t=J(e.version);e.op===`<`&&t?e.version=hi(t,o):e.op===`<=`&&(e.version=n)}return i.some(e=>!mi(o,e))?null:Ce(r,i)}function vi(e,t){let n=e;for(let[e,{old:r,oldOrig:i,new:a}]of Object.entries(t)){let t=e.split(`\0`)[1],o=i||r,s=RegExp(`(['"])( *${L(t)}(?![\\w.-]).*?)(?=\\1)`,`g`);n=n.replace(s,(e,t,n)=>`${t}${_i(n,o,a)??n}`)}return n}function yi(e){let t=e.includes(`:/`)||e.startsWith(`/`);return Gt(!t&&/[.:/]/.test(e)?`https://${e}`:e)}function bi(e){let t=[],n=e;for(;n;){let e=n.search(/[,|]/),r=(e===-1?n:n.slice(0,e)).trim(),i=e!==-1&&n[e]===`|`?`|`:`,`;if(n=e===-1?``:n.slice(e+1),r){if(r===`off`||r===`direct`){t.push({url:r,fallback:i});break}t.push({url:yi(r),fallback:i})}}return t}function xi(e){if(typeof e==`string`)return[{url:Gt(e),fallback:`,`}];let n=bi(t.GOPROXY||`${Y.goproxy},direct`);return n.length?n:[{url:Y.goproxy,fallback:`,`}]}function Si(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim().replace(/\/+$/,``)).filter(Boolean)}const Ci=new Map;function wi(e){return R(Ci,e,()=>{let t=``;for(let n=0;n<e.length;n++){let r=e[n];if(r===`*`)t+=`[^/]*`;else if(r===`?`)t+=`[^/]`;else if(r===`[`&&e.includes(`]`,n+1)){let r=e.indexOf(`]`,n+1);t+=`[${e.slice(n+1,r).replace(/\\/g,`\\\\`)}]`,n=r}else t+=L(r)}return RegExp(`^${t}(?:/.*)?$`)})}function Ti(e,t){return t.some(t=>wi(t).test(e))}function Ei(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}const Di=/\/v(\d+)$/,Oi=/^gopkg\.in\/.*?\.v(\d+)$/;function ki(e){let t=Oi.exec(e)??Di.exec(e);return t?Number.parseInt(t[1]):1}function Ai(e,t){if(e.startsWith(`gopkg.in/`))return`${e.replace(/\.v\d+$/,``)}.v${t}`;let n=e.replace(Di,``);return t<=1?n:`${n}/v${t}`}function ji(e,t){if(t.includes(`+incompatible`))return e;let n=Number.parseInt(X(t).split(`.`)[0]);return Number.isNaN(n)||n===ki(e)?e:Ai(e,n)}const Mi=/^require\s*\(/,Ni=/^replace\s*\(/,Pi=/^tool\s*\(/,Fi=/^use\s*\(/,Ii=/^replace\s+/,Li=/^(\S+)\s+(v\S+)/,Ri=/^require\s+(\S+)\s+(v\S+)/,zi=/^tool\s+(\S+)/,Bi=/^use\s+(\S+)/,Vi=/^(\S+)/,Hi=/^(\S+)(?:\s+(v\S+))?\s+=>\s+(\S+)(?:\s+(v\S+))?/,Ui=/^replace\s+(\S+)(?:\s+(v\S+))?\s+=>\s+(\S+)(?:\s+(v\S+))?/,Wi=/^"(.*)"$/,Gi=e=>Wi.exec(e)?.[1]??e;function Ki(e){return e.startsWith(`./`)||e.startsWith(`/`)||e.startsWith(`../`)}function qi(e,t){let n=(t?Hi:Ui).exec(e);if(!n)return null;let[,r,i,a,o]=n;return{origModule:Gi(r),origVersion:i??``,targetModule:Gi(a),targetVersion:o??``}}function Ji(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||vn(n)}async function Yi(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 Xi(e,t,n,r,i){let a=n?.Version??r,o=n?.Time??i,s=n?.path??e;return[{name:e,old:t,new:X(a),Time:o,...s!==e&&{newPath:s},sameMajorNew:X(r),sameMajorTime:i},null]}function Zi(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(Mi.test(i)){c=!0;continue}if(Ni.test(i)){l=!0;continue}if(Pi.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(i.startsWith(`//`))continue;if(u){i&&o.push(Gi(i));continue}let s=zi.exec(i);if(s){o.push(Gi(s[1]));continue}let d=i.includes(`// indirect`);if(l||Ii.test(i)){let e=qi(i,l);e&&(e.targetVersion&&!Ki(e.targetModule)&&(r[e.targetModule]=e.targetVersion),e.origVersion||a.add(e.origModule));continue}let f=(c?Li:Ri).exec(i);f&&((d?n:t)[Gi(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 Qi(e,n,r,i,a){let o=ki(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(t){let n=String(t?.stderr??``).trim().split(`
7
+ `)[0]||t?.message||String(t);throw Error(`go list -m ${e}@latest failed: ${n}`)}},c=e=>ze(s(e,a.goProbeTimeout)),l=Ji(e,n,r),[u,d]=await Promise.all([s(e,a.fetchTimeout),l?null:c(Ai(e,o+1))]);return Xi(e,r,await Yi(o,d,t=>c(Ai(e,t))),u.Version,u.Time)}const $i={"accept-encoding":`gzip, deflate, br`},ea=e=>e===404||e===410;async function ta(e,t,n){try{let t=await e.json();if(t?.Version)return{Version:t.Version,Time:t.Time||``,path:n}}catch{}throw Error(`Invalid response from ${t}`)}const na=async(e,t,n)=>{let r=`${t}/${Ei(n)}/@latest`,i=await e(r);if(i.ok)return ta(i,r,n);if(ea(i.status))return null;Z(i,r,n,t)},ra=new WeakMap;function ia(e,t,n,r){return rn(R(ra,e,()=>new Map),`${n}/${r}`,()=>na(t,n,r))}function aa(e,t){let n=un(e);return n===un(t)?W(e,t):!n}function oa(e,t=0){let n=null;for(let r of e.split(`
8
+ `)){let[e,i]=r.trim().split(/\s+/);!e||!Je(e)||t&&Number.parseInt(X(e))!==t||n&&!aa(e,n.Version)||(n={Version:e,Time:i??``})}return n}function sa(e){return Di.test(e)||Oi.test(e)?ki(e):0}const ca=async(e,t,n)=>{let r=Ei(n),i=`${t}/${r}/@v/list`,a=await e(i);if(!a.ok){if(ea(a.status))return null;Z(a,i,n,t)}let o=oa(await a.text(),sa(n));if(!o)return null;if(o.Time)return{...o,path:n};let s=`${t}/${r}/@v/${Ei(o.Version)}.info`;try{let t=await e(s);if(t.ok)return ta(t,s,n)}catch{}return{...o,path:n}};async function la(e,t,n,r,i){let a=ki(t),o=(e,t,n)=>ia(i,e,t,n),s=e=>Xt(i,e,{headers:$i}),c=e=>i.doFetch(e,{signal:AbortSignal.timeout(i.goProbeTimeout),headers:$i}),l=t=>async n=>{try{return await t(c,e,n)}catch{return null}},u=Ji(t,n,r),d=Ai(t,a+1),[f,p]=await Promise.all([o(s,e,t),u?null:l(o)(d)]),m=f??await ca(s,e,t);if(!m)return null;let h=l(f?o:ca);return Xi(t,r,await Yi(a,u||f?p:await l(ca)(d),e=>h(Ai(t,e))),m.Version,m.Time)}async function ua(e,t,n,r,i,a){if(Ti(e,a))return Qi(e,t,n,r,i);for(let{url:a,fallback:o}of i.goProxyChain){if(a===`off`)throw Error(`Module lookup disabled by GOPROXY=off`);if(a===`direct`)return Qi(e,t,n,r,i);try{let r=await la(a,e,t,n,i);if(r)return r}catch(e){if(o===`,`)throw e}}throw Error(`Unable to find ${e} on any GOPROXY entry`)}const da=(e,t)=>`("?)${L(e)}\\${t}`;function fa(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,u=ji(s,l);if(o===`replace`){if(u!==s){let e=n;if(n=n.replace(RegExp(`(^\\s*(?:replace\\s+)?)${da(s,2)}(\\s+=>\\s+)${da(s,4)}(\\s+)v${L(c)}`,`gm`),`$1$2${u}$2$3$4${u}$4$5v${l}`),n!==e){let e=n;n=n.replace(RegExp(`(^\\s*(?:require\\s+)?)${da(s,2)}(\\s+)v\\S+(?=\\s*(?://.*)?$)`,`gm`),`$1$2${u}$2$3v${l}`),n!==e&&(r[s]=u)}}n=n.replace(RegExp(`(=>\\s+)${da(s,2)}(\\s+)v${L(c)}`,`g`),`$1$2${u}$2$3v${l}`);continue}u!==s&&o!==`indirect`?(n=n.replace(RegExp(`${da(s,1)} +v${L(c)}`,`g`),`$1${u}$1 v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)("?)${L(s)}((?:/[^"\\s]+)?)\\2\\s*$`,`gm`),`$1$2${u}$3$2`)),r[s]=u):n=n.replace(RegExp(`(${da(s,2)}) +v${L(c)}`,`g`),`$1 v${l}`)}return[n,r]}function pa(e,t,n){let r=Object.entries(t);if(!r.length)return;let i=new Map(r),a=RegExp(`"(${Be(i.keys())})(/|")`,`g`),o=m(`**/*.go`,{cwd:e});for(let t of o){let r=u(e,t),o=g(r,`utf8`),s=o.replace(a,(e,t,n)=>`"${i.get(t)}${n}`);s!==o&&n(r,s)}}function ma(e){let t=[],n={},r=e.split(/\r?\n/),i=!1,a=!1;for(let e of r){let r=e.trim();if(Fi.test(r)){i=!0;continue}if(Ni.test(r)){a=!0;continue}if(r===`)`){i=!1,a=!1;continue}if(i){let e=Vi.exec(r);e&&!r.startsWith(`//`)&&t.push(e[1]);continue}let o=Bi.exec(r);if(o){t.push(o[1]);continue}if(a||Ii.test(r)){let e=qi(r,a);e?.targetVersion&&!Ki(e.targetModule)&&(n[e.targetModule]=e.targetVersion)}}return{use:t,replace:n}}function ha(e){let t=`https://${ga(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[,e,i,...a]=r;return n.pathname=`/${e}/${i}/${Zn(t)}/${a.join(`/`)}`,n.href}return t}function ga(e){return Di.test(e)?c(e):e}function _a(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}function va(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:Vn.test(o)}}function ya(e,t){return e?e===`github.com`?Wt:`https://${e}/api/v1`:t}async function ba(e,t,n,r,i){let a=`${e}/repos/${t}/${n}/git/commits/${r}`;if(!i.noCache){let e=await Pt(a);if(e)return e.body}try{let e=await Rn(a,i);if(e.status===404)return``;if(!e.ok)return;let t=Un(await e.json());return t&&!i.noCache&&Lt(a,`immutable`,t),t}catch(e){if(e instanceof Fn)throw e;return}}function xa(e,t){return Xn(H(X(e))?.version??X(e),t)}const Sa=/^(\s*(?:-\s*)?uses:\s*)([^\n]*)$/,Ca=/^\s*(?:(?:renovate\s*:\s*)?(?:pin\s+|tag\s*=\s*)?|ratchet:[\w-]+\/[.\w-]+)@?((?:[\w-]*[-/])?v?\d+(?:\.\d+(?:\.\d+)?)?(?:-[a-zA-Z0-9.]+)?)/;function wa(e){let t=Sa.exec(e);if(!t)return null;let[,n,r]=t,i=r[0]===`'`||r[0]===`"`?r[0]:``,a=i?r.indexOf(i,1):0;if(a===-1)return null;let o=i?r.slice(1,a):/^[^\s#]*/.exec(r)[0];if(!o)return null;let s=r.slice(i?a+1:o.length),c=s.indexOf(`#`),l=c===-1?``:s.slice(c),u=l?Ca.exec(l.slice(1)):null;return{prefix:n,quote:i,value:o,gap:c===-1?s:s.slice(0,c),comment:l,pinnedVersion:u?.[1]??``,pinnedEnd:u?u[0].length+1:0}}const Ta=/^https?:\/\//;function Ea(e,t){let n=new Map(t.map(e=>[`${e.name}@${e.oldRef}`,e]));return e.split(`
9
+ `).map(e=>{let t=wa(e);if(!t)return e;let{prefix:r,quote:i,value:a,gap:o,comment:s,pinnedVersion:c,pinnedEnd:l}=t,u=Ta.exec(a)?.[0]??``,d=n.get(a.slice(u.length));if(!d)return e;let f=d.newComment&&c?`# ${d.newComment}${s.slice(l)}`:s;return`${r}${i}${u}${d.name}@${d.newRef}${i}${o}${f}`}).join(`
10
+ `)}const Da=RegExp(`(?:^|/)(?:${Be(P)})/(?:workflows/[^/]+|(?:[^/]+/)*action)\\.ya?ml$`);function Oa(e){return Da.test(e.replace(/\\/g,`/`))}function ka(e){let t=new Set;try{for(let n of _(u(e,`workflows`)))/\.ya?ml$/.test(n)&&t.add(f(u(e,`workflows`,n)))}catch{}try{for(let n of _(e,{recursive:!0,withFileTypes:!0}))!n.isFile()||!/^action\.ya?ml$/.test(n.name)||t.add(f(u(n.parentPath,n.name)))}catch{}return Array.from(t)}const Aa=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,ja=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gim,Ma=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,Na=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,Pa=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm,Fa=/^(?:index\.)?docker\.io$/;function Ia(e){let t=e.split(`/`);return t.length>1&&Fa.test(t[0])&&t.shift(),t.length===1?{registry:null,namespace:`library`,repo:t[0]}:t.length===2&&!t[0].includes(`.`)&&!t[0].includes(`:`)?{registry:null,namespace:t[0],repo:t[1]}:{registry:t[0],namespace:t.slice(1,-1).join(`/`),repo:t[t.length-1]}}function La(e){let{registry:t,namespace:n,repo:r}=Ia(e);if(t)return[e];let i=n===`library`?[r,`library/${r}`]:[`${n}/${r}`];return[...new Set([e,...i,...i.map(e=>`docker.io/${e}`)])]}function Ra(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||!Aa.test(r))return null;let{registry:i,namespace:a,repo:o}=Ia(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function za(e){let t=Aa.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Ba(e,t){let n=za(t);return n?Xn(e,n.version,n.suffix):t}function Va(e,t){let n=[];for(let r of e.matchAll(t)){let e=Ra(r[1]);e&&n.push({ref:e,match:r[1]})}return n}const Ha=new WeakMap;function Ua(e,t,n){return rn(R(Ha,n,()=>new Map),`${e}/${t}`,()=>Ka(e,t,n))}const Wa=new Set([401,403,404]),Ga=e=>e.tag_last_pushed||e.last_updated||``;async function Ka(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 r=>{let i=a(r),c=await tn(i,n,o,Qt(s));return`body`in c?JSON.parse(c.body):(Wa.has(c.res?.status)||Z(c.res,i,`${e}/${t}`,n.dockerApiUrl),null)},l=e=>{for(let t of e?.results||[])r[t.name]=Ga(t)},u=ln(n),d=await u(()=>c(1));if(!d)return r;l(d);let f=Math.min(Math.ceil((d.count||0)/100),100),p=sn(n);for(let e=2,t=1;e<=f;e+=t,t=Math.min(t*2,p)){let n=await Promise.all(Array.from({length:Math.min(t,f-e+1)},(t,n)=>u(()=>c(e+n))));for(let e of n)l(e)}return r}async function qa(e,t,n,r){let i=`${r.dockerApiUrl}/v2/repositories/${e}/${t}/tags/${n}`;try{let e=await tn(i,r,{headers:{"accept-encoding":`gzip, deflate, br`}},Qt(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}}const Ja=/^\d?[02468]\.04$/;function Ya(e,t){if(!Ja.test(e))return!1;let[n,r]=e.split(`.`);return t>=Date.UTC(2e3+Number(n),Number(r))}const Xa={ubuntu:Ya};function Za(e,t,n=Date.now()){let r=Xa[e];return r?Object.fromEntries(Object.entries(t).filter(([e])=>{let t=za(e)?.version;return!t||r(t,n)})):t}async function Qa(e,t){let{registry:n,namespace:r,repo:i}=Ia(e);if(n)throw Error(`Non-Docker-Hub registries are not yet supported: ${n}`);return[{tags:Za(i,await Ua(r,i,t)),name:e},null]}function $a(e,t,n,r,i,a){let o=za(t);if(!o)return null;let s=U(X(o.version))?.version;if(!s)return null;let c=X(o.version).split(`.`).length,l=s,u=``,d=``;for(let[t,s]of Object.entries(e)){let e=za(t);if(!e||e.suffix!==o.suffix||X(e.version).split(`.`).length!==c||!Yn(e.version,o.version))continue;let f=U(X(e.version))?.version;if(!f||a&&!K(f,a)||!Bt(s,r,i))continue;if(f===l){u&&Date.parse(s)>Date.parse(d)&&(u=t,d=s);continue}let p=Ze(l,f);!p||!n.has(p)||W(f,l)&&(l=f,u=t,d=s)}if(!u||l===s)return null;let f=Ba(l,t),p=f in e?f:u;return p===t?null:{newTag:p,date:d}}const eo=`(?![\\w.@+-])`;function to(e,t,n){let r=new Map;for(let[e,n]of Object.entries(t)){let t=e.split(`\0`)[1];r.set(`${t}:${n.oldOrig||n.old}`,`${t}:${n.new}`)}if(!r.size)return e;let i=Be(r.keys()),a=e;for(let e of n)a=a.replace(e(i),(e,t,n)=>`${t}${r.get(n)??n}`);return a}function no(e,t){return to(e,t,[e=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)(${e})${eo}`,`gi`)])}function ro(e,t){return to(e,t,[e=>RegExp(`(image:\\s*['"]?)(${e})${eo}`,`g`)])}function io(e,t){return to(e,t,[e=>RegExp(`((?:container|image):\\s*['"]?)(${e})${eo}`,`g`),e=>RegExp(`(uses:\\s*['"]?docker://)(${e})${eo}`,`g`)])}const ao=[`Dockerfile`,`compose.yml`,`compose.yaml`,`docker-compose.yml`,`docker-compose.yaml`];function oo(e){return/^(?:docker-|compose).*\.ya?ml$/.test(e)}function so(e){return/^Dockerfile(\..+)?$/.test(e)}function co(e){return so(e)||oo(e)}function lo(e){return so(e)?ja:Ma}function uo(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const fo=[`Makefile`,`makefile`,`GNUmakefile`];function po(e){return fo.includes(e)||e.endsWith(`.mk`)}const mo=String.raw`^\s*[A-Za-z_][\w.]*\s*(?:::=|:=|\?=|\+=|=)\s*`,ho=RegExp(`${mo}${String.raw`(\S+)@(v\d\S*)\s*$`}`),go=/^[^/\s]+\.[^/\s]+\//;function _o(e){let t=e.indexOf(`#`);return t===-1?e:e.slice(0,t)}function vo(e){let t=[];for(let n of e.split(/\r?\n/)){let e=_o(n),r=ho.exec(e);if(!r)continue;let[,i,a]=r;go.test(i)&&t.push({installPath:i,version:a})}return t}const yo=RegExp(`${mo}${String.raw`(\S+)\s*$`}`),bo=/@(sha256:[0-9a-f]{64})$/;function xo(e,t,n){return`${e}:${t}${n?`@${n}`:``}`}function So(e){let t=null,n=e,r=bo.exec(e);r&&(t=r[1],n=e.slice(0,r.index));let i=Ra(n.replace(/^docker\.io\//,``));return!i||i.registry||i.namespace===`library`?null:{writtenImage:n.slice(0,n.lastIndexOf(`:`)),ref:i,digest:t}}function Co(e){let t=[];for(let n of e.split(/\r?\n/)){let e=yo.exec(_o(n));if(!e)continue;let r=So(e[1]);r&&t.push(r)}return t}const wo=/\/v(?:[2-9]|[1-9]\d+)(?=\/|$)/;function To(e){let t=wo.exec(e);return t?e.slice(0,t.index+t[0].length):null}async function Eo(e,n,r,i){return i?await ze((await wn())(`go`,[`list`,`-m`,`-json`,`${e}@latest`],{timeout:r.fetchTimeout,cwd:n,env:t}))!==null:!!await ia(r,e=>Xt(r,e,{headers:$i}),r.goProxyUrl,e)}async function Do(e,t,n,r){let i=To(e);if(i)return i;let a=n.goProxyUrl===`direct`||Ti(e,r);if(!a&&n.goProxyUrl===`off`)return null;let o=e.split(`/`),s=Array.from({length:o.length-1},(e,t)=>o.slice(0,o.length-t).join(`/`));if(a){for(let e of s)if(await Eo(e,t,n,!0))return e;return null}let c=await Promise.allSettled(s.map(e=>Eo(e,t,n,!1)));for(let[e,t]of c.entries()){if(t.status===`rejected`)throw t.reason;if(t.value)return s[e]}return null}async function Oo(e,t,n,r,i,a){let o=await Do(e,n,r,i);if(!o)return null;let[s]=await ua(o,`tool`,X(t),n,r,i),c=yn(s,{...a,mode:`go`,range:X(t)});if(!c)return null;let l=s.newPath??ji(o,c),u=`${l}${e.slice(o.length)}`,d=Xn(c,t);return u===e&&d===t?null:{newInstallPath:u,newVersion:d,date:s.Time??``,info:ha(l)}}async function ko(e,t,n){let{namespace:r,repo:i,fullImage:a,tag:o}=e.ref,[s]=await Qa(a,t),c=$a(s.tags,o,n.semvers,n.cooldownDays,n.now,n.pinnedRange);if(!c)return null;let l=null;return e.digest&&(l=await qa(r,i,c.newTag,t),!l)?null:{newTag:c.newTag,newDigest:l,date:c.date,info:uo(e.ref)}}function Ao(e,t){let n=new Map(t.map(({oldSpec:e,newSpec:t})=>[e,t]));if(!n.size)return e;let r=Be(n.keys()),i=RegExp(`(?<![\\w./@:-])(${r})(?=[\\s#]|$)`,`g`);return e.replace(/^[^#\n]*/gm,e=>e.replace(i,e=>n.get(e)))}const jo=new Map;function Mo(e){let t=e.toLowerCase();return t.length<=2?`${t.length}/${t}`:t.length===3?`3/${t[0]}/${t}`:`${t.slice(0,2)}/${t.slice(2,4)}/${t}`}function No(e,t){let n=Gt(e);return`${n===`https://crates.io`?`https://index.crates.io`:n}/${Mo(t)}`}function Po(e){return e.split(`
11
+ `).map(e=>{if(!e)return e;try{let{vers:t,yanked:n,pubtime:r}=JSON.parse(e);return JSON.stringify({vers:t,yanked:n,pubtime:r})}catch{return e}}).join(`
12
+ `)}async function Fo(e,t){let n=No(t.cratesIoUrl,e);return[await rn(jo,n,async()=>{let r=await tn(n,t,Kt(),Po);`body`in r||Z(r.res,n,e,t.cratesIoUrl);let i={},a={},o=``,s=``,c=0;for(let e of r.body.split(`
13
+ `)){if(!e)continue;let t;try{t=JSON.parse(e)}catch{continue}if(c++,!t?.vers||t.yanked)continue;let n=t.vers;i[n]={},t.pubtime&&(a[n]=t.pubtime);let r=H(n);r&&(r.prerelease.length?(!s||W(n,s))&&(s=n):(!o||W(n,o))&&(o=n))}if(!c&&r.body.trim())throw Error(`Invalid JSON from ${n}`);return{name:e,versions:i,time:a,"dist-tags":{latest:o||s}}}),null]}function Io(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];Je(a)&&Ue(t,i,a)}return t}const Lo=/^\d/,Ro=/^(\d+(?:\.\d+)*)((?:\.[*xX])+)$/,zo=/\s*,\s*/g,Bo=/(\s*,\s*)/,Vo=e=>e.includes(`,`)?e.replace(zo,` `):e,Ho=e=>Vo(Lo.test(e)&&!Ro.test(e)?`^${e}`:e);function Uo(e,t){if(e.startsWith(`<`)&&K(t,e))return e;let n=Ro.exec(e);if(n){let[,e,r]=n;return`${t.split(/[-+]/)[0].split(`.`).slice(0,e.split(`.`).length).join(`.`)}${r}`}return Lo.test(e)?ci(Q(`^${e}`),t,`^${e}`).replace(/^\^/,``):ci(Q(e),t,e)}function Wo(e,t){if(!e.includes(`,`))return Uo(e,t);let n=e.split(Bo);for(let e=0;e<n.length;e+=2)n[e]=Uo(n[e],t);return n.join(``)}function Go(e,t,n){let r=e.get(t);if(!r)return;let i=Ho(n),a;for(let e of r)K(e,i)&&(!a||W(e,a))&&(a=e);return a}const Ko=e=>`(?:${L(e)}|"${L(e)}"|'${L(e)}')`;function qo(e,t){let n=e;for(let[e,r]of Object.entries(t)){let[t,i]=e.split(`\0`),a=r.oldOrig||r.old,o=r.new,s=Ko(i),c=L(a),l=t.split(`|`)[0].split(`.`).map(Ko).join(`\\.`);n=n.replace(RegExp(`^(\\s*${s}\\s*=\\s*["'])${c}(["'].*)$`,`gm`),`$1${o}$2`),n=n.replace(RegExp(`^(\\s*${s}\\s*=\\s*\\{(?:"[^"]*"|'[^']*'|[^}\\n])*?\\bversion\\s*=\\s*["'])${c}(["'])`,`gm`),`$1${o}$2`),n=n.replace(RegExp(`(\\[${l}\\.${s}\\](?:(?!\\n\\[)[\\s\\S])*?version\\s*=\\s*["'])${c}(["'])`,`g`),`$1${o}$2`)}return n}function Jo(e){let t=e.indexOf(`|`);return t===-1?e:e.slice(0,t)}function Yo(e,t){let n=t===`.`?``:`|${t}`,r={};for(let[t,i]of Object.entries(e)){let[e,a]=t.split(`\0`),o=Jo(e);e===`${o}${n}`&&(r[`${o}${a}`]=i)}return r}const Xo=/[*?{[]/;async function Zo(e,t,n,r=32){let i=e.filter(e=>!e.startsWith(`!`)),a=e.filter(e=>e.startsWith(`!`)).map(e=>e.slice(1)),o=new Set(a.flatMap(e=>m(e,{cwd:t})).map(e=>e.replace(/\\/g,`/`))),s=new Set,c=[];for(let e of i){let r=Xo.test(e)?m(e,{cwd:t}).map(e=>f(u(t,e))):[f(u(t,e))];for(let e of r){let r=d(t,e).replace(/\\/g,`/`);if(o.has(r))continue;let i=u(e,n);s.has(i)||(s.add(i),c.push({absPath:i,memberPath:`./${r}`}))}}return(await I(c,async({absPath:e,memberPath:t})=>{try{return{absPath:e,content:await x(e,`utf8`),memberPath:t}}catch{return null}},{concurrency:r})).filter(e=>e!==null)}const Qo=/^(\s*)(?:"([^"]*)"|'([^']*)'|([^\s#][^:#]*?))\s*:(?:\s+(.*))?$/,$o=/\s#/;function es(e){let t=Qo.exec(e);if(!t)return null;let[,n,r,i,a,o=``]=t,s=e.length-o.length,c=o.search($o),l=(c===-1?o:o.slice(0,c)).trimEnd(),u=l[0];return(u===`"`||u===`'`)&&l.length>1&&l.endsWith(u)&&(l=l.slice(1,-1),s+=1),{indent:n.length,key:r??i??a,value:l,valueIndex:s}}function*ts(e){let t=``,n=``,r=-1;for(let[i,a]of e.split(`
14
+ `).entries()){let e=es(a);if(!e)continue;let{indent:o,key:s,value:c,valueIndex:l}=e;o===0?(t=s===`catalog`||s===`catalogs`?s:``,n=``,r=-1):t===`catalog`?c&&(yield{type:`catalog`,name:s,value:c,lineIndex:i,valueIndex:l}):t===`catalogs`&&(r===-1||o<=r?(n=s,r=o):c&&(yield{type:`catalogs.${n}`,name:s,value:c,lineIndex:i,valueIndex:l}))}}function ns(e,t){let n=e.split(`
15
+ `),r=!1;for(let{type:i,name:a,value:o,lineIndex:s,valueIndex:c}of ts(e)){let e=t[`${i}${a}`];if(!e||(e.oldOrig||e.old)!==o)continue;let l=n[s];n[s]=l.slice(0,c)+e.new+l.slice(c+o.length),r=!0}return r?n.join(`
16
+ `):e}function rs(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 is=[...new Set(Object.values(De)),`actions`,`docker`,`make`],as=new Set(is),os={patch:new Set([`patch`]),minor:new Set([`patch`,`minor`]),major:new Set([`patch`,`minor`,`major`])},ss={"go.work":{mode:`go`,supersedes:`go.mod`},"pnpm-workspace.yaml":{mode:`npm`,supersedes:`package.json`}},cs=(e,t)=>typeof e==`string`?Gt(e):typeof t==`function`?t():t,ls=/^(npm:@jsr\/[^@]+@|jsr:@[^@]+@)(.+)$/;function us(e,t){let n=new Map,r=new Set(e),i=t;for(;r.size;){for(let e of r){let t=u(i,e);try{p(t),n.set(e,t),r.delete(e)}catch{}}let e=c(i);if(e===i)break;i=e}return n}async function ds(e,t){let n=await I(e,async e=>{try{return[e,await x(e,`utf8`)]}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}},{concurrency:t});return new Map(n)}function fs(e,t){t&&(e.date=t,e.age=kt(t,{noAffix:!0}))}const ps=(e,t,n)=>`${e}${t}${n}`,ms=e=>Object.values(e).reduce((e,t)=>e+Object.keys(t).length,0);function hs(e,t){return t===`go`?[e,ga(e)]:t===`docker`?La(e):[e]}const gs=(e,t)=>t.find(t=>e[t]);function $(e,t,n,r,i,a=t){if(i===`engines`&&Ee.includes(e)||t===`pypi`&&e===`python`)return!1;if(!n.size&&!r.size)return!0;let o=hs(e,a);for(let e of r)if(o.some(t=>e.test(t)))return!1;for(let e of n)if(o.some(t=>e.test(t)))return!0;return!n.size}function _s(t){let n=new Set;if(t)for(let e of t){let t;try{t=h(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}if(t.isFile())n.add(f(e));else if(t.isDirectory()){try{for(let t of _(e,{withFileTypes:!0}))t.isFile()&&(Object.hasOwn(De,t.name)||co(t.name)||po(t.name))&&n.add(f(u(e,t.name)))}catch{}let t=f(e).replace(/\\/g,`/`),r=P.some(e=>t.endsWith(`/${e}/workflows`)),i=!r&&P.some(e=>t.endsWith(`/${e}`)),a=r?[c(t)]:i?[t]:P.map(e=>u(t,e));for(let e of a)for(let t of ka(e))n.add(t)}else throw Error(`${e} is neither a file nor directory`)}else{let t=new Set(P),r=[...Object.keys(De),...ao,...fo,...P],i=new Set;for(let[a,o]of us(r,e())){if(t.has(a)){for(let e of ka(o))n.add(e);continue}let e=f(o);try{e=v.native(o)}catch{}i.has(e)||(i.add(e),n.add(f(o)))}try{for(let t of _(e(),{withFileTypes:!0})){let r=co(t.name)&&!ao.includes(t.name),i=po(t.name)&&!fo.includes(t.name);t.isFile()&&(r||i)&&n.add(f(u(e(),t.name)))}}catch{}}for(let e of Array.from(n)){let t=s(e);Object.hasOwn(ss,t)&&n.delete(u(c(e),ss[t].supersedes))}return n}function vs(e,t){r===`win32`&&b(e,0),ee(e,t,r===`win32`?{flag:`r+`}:void 0)}const ys=(e,t)=>`${e}${t.split(`\0`,2).join(`\0`)}`;function bs(e){let t={results:{}},n=new Map,r=Object.entries(e).sort(([e],[t])=>is.indexOf(e)-is.indexOf(t));for(let[e,t]of r)for(let r of Object.keys(t)){let t=ys(e,r);n.set(t,(n.get(t)??0)+1)}for(let[e,i]of r)for(let[r,a]of Object.entries(i)){typeof a.oldPrint==`string`&&(a.old=a.oldPrint),typeof a.newPrint==`string`&&(a.new=a.newPrint),typeof a.oldOrig==`string`&&!zr(a.oldOrig)&&(a.old=e===`go`?_a(a.oldOrig):a.oldOrig),e===`go`?a.new=_a(a.new):e===`actions`&&(a.old=X(a.old),a.new=X(a.new)),delete a.oldPrint,delete a.newPrint,delete a.oldOrig,delete a.date;let[i,o,s]=r.split(`\0`),c=s&&n.get(ys(e,r))>1?`${o}${e===`actions`?`@`:`:`}${s}`:o,l=t.results[e]??={};(l[i]??={})[c]=a}for(let e of Object.values(t.results))for(let[t,n]of Object.entries(e))e[t]=Object.fromEntries(Object.entries(n).sort(([e],[t])=>e.localeCompare(t)));return t}let xs=!1;async function Ss(t={}){if(!xs){let{enableDnsCache:e}=await import(`./dns.js`);e(),xs=!0}let n={...t};typeof n.timeout==`number`&&(n.timeout=Re(n.timeout,`timeout`));let r=n.sockets??25,a=n.timeout??0,l=cs(t.forgeapi,Y.forgeapi),d=cs(t.pypiapi,Y.pypiapi),p=cs(t.jsrapi,Y.jsrapi),m=xi(t.goproxy),h=m[0].url,g=cs(t.cargoapi,Y.cargoapi),_=cs(t.dockerapi,Y.dockerapi),v=Si(),y=!n.noColor&&(n.color||i.isTTY),b=e=>y?t=>o(e,String(t),{validateStream:!1}):String,ee=b(`magenta`),te=b(`green`),ne=b(`red`),re,S={fetchTimeout:a||5e3,goProbeTimeout:a?Math.max(1,Math.floor(a/2)):Ut,concurrency:r,forgeApiUrl:l,pypiApiUrl:d,jsrApiUrl:p,goProxyUrl:h,goProxyChain:m,cratesIoUrl:g,dockerApiUrl:_,doFetch:(e,t)=>(re??=ln(S))(async()=>{n.verbose&&console.error(`${Fe()} ${ee(t?.method||`GET`)} ${e}`);let r=await Yt(e,t);return n.verbose&&console.error(`${Fe()} ${r.ok?te(r.status):ne(r.status)} ${e}`),r}),noCache:!!n.noCache},C=sr(n.greatest),w=sr(n.prerelease),T=sr(n.release),ie=sr(n.patch),ae=sr(n.minor),oe=sr(n.allowDowngrade),E=n.modes?.length?new Set(n.modes):as,se=(n.overrides??[]).map(e=>({include:e.include?.length?rr(e.include):void 0,exclude:e.exclude?.length?rr(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:Le(String(e.cooldown))})),O=(e,t)=>e.include&&t.every(t=>!Ne(t,e.include))?!1:!e.exclude||t.every(t=>!Ne(t,e.exclude)),ce=se.some(e=>e.cooldownDays);E.has(`actions`)&&On();let le=new Map;function k(e,t){let n=le.get(e);if(!n){let r=t??[e],i=e=>r.some(t=>Ne(t,e)),a=i(C),o=i(w),s=i(T),c=i(ie),l=i(ae),u=i(oe),d;for(let e of se)O(e,r)&&(e.greatest!==void 0&&(a=e.greatest),e.prerelease!==void 0&&(o=e.prerelease),e.release!==void 0&&(s=e.release),e.patch!==void 0&&(c=e.patch),e.minor!==void 0&&(l=e.minor),e.allowDowngrade!==void 0&&(u=e.allowDowngrade),e.cooldownDays!==void 0&&(d=e.cooldownDays));let f=c?os.patch:l?os.minor:os.major;n={useGreatest:a,usePre:o,useRel:s,semvers:f,allowDowngrade:u,cooldownOverride:d},le.set(e,n)}return n}let ue=rr(n.include??[]),de=rr(n.exclude??[]);ar(n.pin);let fe=n.pin??{},pe=(e,t,n)=>{let r=gs(fe,e);if(r)return{pinnedRange:fe[r],pinNoDowngrade:!1};let i=gs(t,e);return{pinnedRange:i?t[i]:void 0,pinNoDowngrade:!!(i&&Array.isArray(n)&&n.includes(i))}},A={},j={},me=new Map,he=new Map,ge=new Map,_e=[],ve=(e,t,n,r)=>{_e.push({mode:e,type:t,name:n,error:r?.message||String(r)})},ye=(e,t,n)=>{let[r,i]=t.split(`\0`);ve(e,r,i,n)},M={},be=Date.now(),xe=e=>{let t=n.cooldown??e;return t?Le(String(t)):0},Se=e(),Ce=e=>e.replace(`${Se}/`,``).replace(`${Se}\\`,``),N=(e,t,n,r,i,a)=>{A[e][ps(t,n,r)]={old:i,oldOrig:a}},Ee=(e,t,n,r)=>{if(Vr(r))return;let i=Ur(r);zr(r)?N(`npm`,e,t,n,Kr(r,n).version,r):q(r)?N(`npm`,e,t,n,Q(r),r):i?(he.set(ps(e,t,n),i),N(`npm`,e,t,n,Q(i.range),r)):Br(r)?N(`npm`,e,t,n,`0.0.0`,r):j[ps(e,t,n)]={old:r}},P=(e,t,n,r,i,a)=>{let o=(t,r)=>{for(let{name:o,version:s,spec:c}of we(t))$(o,e,i,a,r)&&(N(e,r,n,o,Q(s),s),ge.set(ps(r,n,o),c))};for(let[s,c]of Me(r,t)){let t=c||{};if(Array.isArray(t)){if(e!==`pypi`)continue;o(t,s)}else if(typeof t==`string`){let[r,o]=t.split(`@`);$(r,e,i,a,s)&&N(e,s,n,r,Q(o),o)}else for(let[r,c]of Object.entries(t)){if(e===`pypi`&&Array.isArray(c)){o(c,`${s}.${r}`);continue}$(r,e,i,a,s)&&(e===`npm`?Ee(s,n,r,c):e===`go`?N(e,s,n,r,_a(c),X(c)):q(c)&&N(e,s,n,r,Q(c),c))}}},Pe=_s(n.files?.length?new Set(n.files):!1),F=await ds(Array.from(Pe).filter(e=>{if(Oa(e))return E.has(`actions`)||E.has(`docker`);let t=s(e);if(co(t))return E.has(`docker`);if(po(t))return E.has(`make`);let n=De[t];return!!n&&E.has(n)}),r),Ie={},L={},Be={},Ve=[],He=null,R=[],Ge=[],Ke=[],z=[],qe=[],B=[],V={},Je={noCache:n.noCache,timeout:n.timeout||5e3},H=We(async e=>{let t=await ur(e,Je);return{dirConfig:t,include:t.include?.length?rr([...n.include??[],...t.include]):ue,exclude:t.exclude?.length?rr([...n.exclude??[],...t.exclude]):de}});async function Ye(e){let{dirConfig:t,include:n,exclude:r}=await H(e);return{modeConfig:t,modeInclude:n,modeExclude:r,pin:t.pin??{}}}function Xe(e,t){return n.types?.length?n.types:t?.types?.length?t.types:e===`npm`?Te:e===`pypi`?Oe:e===`go`?n.indirect?ke:ke.filter(e=>e!==`indirect`):e===`cargo`?[...Ae,...je]:[]}function U(e,t,n,r){A.docker??={};for(let i of n)for(let{ref:n}of Va(e,i)){if(!$(n.fullImage,`docker`,r.include,r.exclude,`docker`))continue;let e=`${t}${n.fullImage}${n.tag}`;if(A.docker[e])continue;let i=za(n.tag);i&&(A.docker[e]={old:i.version,oldOrig:n.tag},qe.push({key:e,fullImage:n.fullImage,ref:n,filePin:r.pin,fileCooldownDays:r.cooldownDays}))}}async function Ze(e){let{dirConfig:t,include:n,exclude:r}=await H(e);return{include:n,exclude:r,pin:t.pin??{},pinNoDowngrade:t.pinNoDowngrade,cooldownDays:xe(t.cooldown)}}let Qe=new Set,$e=new Map;for(let e of Pe){let t=s(e);if(Object.hasOwn(ss,t))Qe.add(ss[t].mode);else if(t===`Cargo.toml`){let t=F.get(e);if(!t)continue;try{let n=D(t);$e.set(e,n);let r=n.workspace?.members;Array.isArray(r)&&r.length&&Qe.add(`cargo`)}catch{}}}let W=(e,t,n,r,i,a)=>{let o=M[e]??=[],s=!o.length&&!Qe.has(e),c=s?`.`:Ce(t);return o.push({absPath:f(t),content:n,memberPath:c,projectDir:r,modeConfig:i,pin:a,modeCooldownDays:xe(i.cooldown)}),s&&(V[e]={modeConfig:i,projectDir:r,pin:a}),s?``:`|${c}`},et=(e,t)=>{try{return t()}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}};for(let e of F.keys()){if(Oa(e)){let t=E.has(`actions`),n=E.has(`docker`),r=F.get(e),i=Ce(e),a=await Ze(c(e));if(Ie[i]={absPath:e,content:r},t){A.actions??={};for(let e of r.split(`
17
+ `)){let t=wa(e),n=t&&va(t.value);if(!n||!$(n.name,`actions`,a.include,a.exclude,`actions`))continue;let r=`${i}${n.name}${n.ref}`;A.actions[r]||(A.actions[r]={old:n.ref},z.push({...n,key:r,comment:t.pinnedVersion,apiUrl:ya(n.host,l),filePin:a.pin,filePinNoDowngrade:a.pinNoDowngrade,fileCooldownDays:a.cooldownDays}))}}n&&(L[i]={absPath:e,content:r,fileType:`workflow`},U(r,i,[Ma,Na,Pa],a));continue}let t=s(e);if(co(t)){let n=F.get(e),r=Ce(e),i=so(t)?`dockerfile`:`compose`,a=await Ze(c(e));L[r]={absPath:e,content:n,fileType:i},U(n,r,[lo(t)],a);continue}if(po(t)){let t=F.get(e),n=Ce(e),r=await Ze(c(e));Be[n]={absPath:e,content:t},A.make??={};let i={projectDir:c(e),filePin:r.pin,filePinNoDowngrade:r.pinNoDowngrade,fileCooldownDays:r.cooldownDays};for(let{installPath:e,version:a}of vo(t)){if(!$(e,`make`,r.include,r.exclude,`make`,`go`))continue;let t=`${n}${e}${a}`;A.make[t]||(A.make[t]={old:X(a),oldOrig:a},B.push({kind:`go`,key:t,name:e,oldSpec:`${e}@${a}`,installPath:e,version:a,...i}))}for(let e of Co(t)){if(!$(e.writtenImage,`make`,r.include,r.exclude,`make`,`docker`))continue;let t=`${n}${e.writtenImage}${e.ref.tag}`;if(A.make[t])continue;let a=za(e.ref.tag);if(!a)continue;let o=xo(e.writtenImage,e.ref.tag,e.digest);A.make[t]={old:a.version,oldOrig:e.ref.tag},B.push({kind:`docker`,key:t,name:e.writtenImage,oldSpec:o,image:e,...i})}continue}let n=De[t];if(t===`go.work`){A[n]??={};let t=c(f(e)),i=F.get(e);He={file:e,content:i};let a=ma(i),[{modeConfig:o,modeInclude:s,modeExclude:l,pin:d},p]=await Promise.all([Ye(t),I(a.use,async e=>{let n=f(u(t,e,`go.mod`));try{return{usePath:e,modPath:n,content:await x(n,`utf8`)}}catch{return null}},{concurrency:r})]),m=Xe(n,o);V[n]={modeConfig:o,projectDir:t,pin:d};for(let e of p){if(!e)continue;let{usePath:t,modPath:r,content:i}=e,a=Zi(i),o=c(r);Ve.push({absPath:r,content:i,projectDir:o,memberPath:t}),P(n,a,t===`.`?``:`|${t}`,m,s,l)}for(let[e,t]of Object.entries(a.replace))$(e,n,s,l,`replace`)&&N(n,`replace`,``,e,_a(t),X(t));continue}if(t===`go.mod`&&Ve.some(t=>t.absPath===f(e))||t===`package.json`&&Ge.some(t=>t.absPath===f(e)))continue;if(t===`Cargo.toml`){A[n]??={};let t=F.get(e),i=$e.get(e)??D(t),a=c(f(e)),o=us([`Cargo.lock`],a).get(`Cargo.lock`),s=i.workspace?.members,l=Array.isArray(s)&&s.length,[{modeConfig:u,modeInclude:d,modeExclude:p,pin:m},h,g]=await Promise.all([Ye(a),o?x(o,`utf8`):Promise.resolve(null),l?Zo(s,a,`Cargo.toml`,r):Promise.resolve([])]),_=Xe(n,u),v=h?Io(h):new Map,y=(e,t)=>{for(let[r,i]of Me(_,e)){let e=i||{};if(!(typeof e!=`object`||Array.isArray(e))){for(let[i,a]of Object.entries(e))if($(i,n,d,p,r))if(typeof a==`object`&&a&&`version`in a&&!(`git`in a)&&!(`path`in a)&&!(`registry`in a)){let e=a.version,o=a.package||i;q(Vo(e))&&(o!==i&&me.set(ps(r,t,i),o),N(n,r,t,i,Go(v,o,e)??Q(Vo(e)),e))}else typeof a==`string`&&q(Vo(a))&&N(n,r,t,i,Go(v,i,a)??Q(Vo(a)),a)}}};if(l){V[n]={modeConfig:u,projectDir:a,pin:m},y(i,``),R.push({absPath:f(e),content:t,memberPath:`.`});for(let e of g)R.push(e),y(et(e.absPath,()=>D(e.content)),`|${e.memberPath}`)}else y(i,W(n,e,t,a,u,m));continue}if(t===`pnpm-workspace.yaml`){A[n]??={};let i=c(f(e)),a=F.get(e),o=rs(a),s=u(i,`package.json`),[{modeConfig:l,modeInclude:d,modeExclude:p,pin:m},h,g]=await Promise.all([Ye(i),ze(x(s,`utf8`)),Zo(o,i,`package.json`,r)]),_=Xe(n,l);V[n]={modeConfig:l,projectDir:i,pin:m},Ke.push({absPath:f(e),content:a,memberPath:t});for(let{type:e,name:r,value:i}of ts(a))$(r,n,d,p,e)&&Ee(e,`|${t}`,r,i);if(h!==null){let e=et(s,()=>JSON.parse(h));Ge.push({absPath:f(s),content:h,memberPath:`.`}),P(n,e,``,_,d,p)}for(let e of g){let t=et(e.absPath,()=>JSON.parse(e.content));Ge.push(e),P(n,t,`|${e.memberPath}`,_,d,p)}continue}A[n]??={};let i=c(f(e)),{modeConfig:a,modeInclude:o,modeExclude:d,pin:p}=await Ye(i),m=Xe(n,a),h=F.get(e),g=W(n,e,h,i,a,p);P(n,et(e,()=>n===`npm`?JSON.parse(h):n===`pypi`?D(h):n===`go`?Zi(h):{}),g,m,o,d)}if(!ms(A)&&!Object.keys(j).length)return{results:{},message:`No dependencies found, nothing to do.`};let tt=[],G=!!xe(V.npm?.modeConfig.cooldown)||(M.npm??[]).some(e=>e.modeCooldownDays)||Object.keys(A.npm??{}).some(e=>k(e.split(`\0`)[1]).cooldownOverride),nt={registry:n.registry,needsDates:G};for(let[e,t]of Object.entries(V)){let i=A[e]&&Object.keys(A[e]).length>0,a=e===`npm`&&Object.keys(j).length>0;if(!i&&!a)continue;let{modeConfig:o,projectDir:s,pin:c}=t,l=xe(o.cooldown);tt.push((async()=>{let t=new Map;for(let n of M[e]??[])n.memberPath!==`.`&&t.set(`|${n.memberPath}`,n);let i={modeConfig:o,projectDir:s,pin:c,modeCooldownDays:l},a=e=>{let n=e.indexOf(`|`);return n!==-1&&t.get(e.slice(n))||i},u=new Map,d=e=>{for(let[t,{date:n}]of Object.entries(e)){if(!n)continue;let[r,i]=t.split(`\0`),{modeCooldownDays:o}=a(r);if(!o&&!ce)continue;let s=k(i).cooldownOverride??o;s&&!Bt(n,s,be)&&delete e[t]}},f=A[e],p=async(t,r,i)=>{let o=Jo(r),{modeConfig:s,projectDir:c,pin:l,modeCooldownDays:d}=a(r),p=f[t],m=he.get(t),h;if(e===`npm`)if(p.oldOrig&&zr(p.oldOrig))h=await qr(i,S);else if(p.oldOrig&&Br(p.oldOrig)){let e=await ze(Lr(i,o,s,nt,S,c));if(!e){delete f[t];return}h=e}else h=await Lr(m?.name??i,o,s,nt,S,c);else h=e===`go`?await ua(i,o,p.oldOrig||p.old,c,S,v):e===`cargo`?await Fo(me.get(t)??i,S):await pi(i,S);let[g,_]=h;if(g.error)throw Error(g.error);let y=hs(g.name,e),{useGreatest:b,usePre:te,useRel:ne,semvers:x,allowDowngrade:re,cooldownOverride:C}=k(g.name,y),{old:w,oldOrig:T}=p,{pinnedRange:ie,pinNoDowngrade:ae}=pe(y,l,s.pinNoDowngrade),oe=C??d,E=yn(g,{usePre:te,useRel:ne,useGreatest:b,semvers:x,range:w,mode:e,pinnedRange:ie,pinNoDowngrade:ae,allowDowngrade:re,cooldownDays:oe||void 0,now:oe?be:void 0}),D=``;if((e===`go`||e===`pypi`)&&E)D=E;else if(e===`cargo`&&E&&T)D=Wo(T,E);else if(E)if(T&&Br(T))D=String(Tr(c)[`save-exact`])===`true`?E:`^${E}`;else if(T&&zr(T)){let e=ls.exec(T);e?D=`${e[1]}${E}`:T.startsWith(`jsr:`)&&(D=`jsr:${E}`)}else D=m?`npm:${m.name}@${ci(w,E,m.range,o)}`:ci(w,E,T,o);let se=ge.get(t);if(!E||E===w||T&&T===D||se&&!_i(se,T||w,D)){n.verbose&&E&&E!==w&&console.error(`${Fe()} ${ee(`SKIP`)} ${i}: ${T||w} can not be rewritten to ${E}`),delete f[t];return}let O=(e===`pypi`?g.releases?.[E]?.[0]?.upload_time_iso_8601:e===`go`?g.Time:e===`cargo`?g.time?.[E]:``)||``;p.new=D,T&&zr(T)&&(p.newPrint=E),e===`npm`?u.set(t,{name:m?.name??i,promise:Rr(g.name,E,s,nt,S,c)}):e===`pypi`?p.info=$n(g,_,g.info.name):e===`go`?p.info=ha(g.newPath||i):e===`cargo`&&(p.info=`https://crates.io/crates/${g.name}`),fs(p,O)};if(await I(Object.keys(f),async t=>{let[n,r]=t.split(`\0`);try{await p(t,n,r)}catch(i){delete f[t],ve(e,n,r,i)}},{concurrency:r}),await Promise.all(Array.from(u,async([e,{name:t,promise:n}])=>{let r=await n,i=f[e];i&&(i.info=$n({repository:r.repository,homepage:r.homepage},null,t),r.date&&fs(i,r.date))})),e===`npm`&&Object.keys(j).length){let e=(await I(Object.entries(j),async([e,t])=>{try{return await di(e,t,S)}catch(t){return ye(`npm`,e,t),null}},{concurrency:r})).filter(e=>e!==null);for(let{key:t,newRange:n,user:r,repo:i,oldRef:a,newRef:o,newDate:s}of e){let e=f[t]={old:j[t].old,new:n,oldPrint:Vn.test(a)?a.substring(0,7):a,newPrint:Vn.test(o)?o.substring(0,7):o,info:`https://github.com/${r}/${i}`};s&&fs(e,s)}}d(f)})())}z.length&&tt.push((async()=>{await I(Map.groupBy(z,e=>`${e.apiUrl}/${e.owner}/${e.repo}`).values(),async e=>{let{apiUrl:t,owner:n,repo:i}=e[0],a;try{a=await qn(t,n,i,S,e.map(e=>e.ref))}catch(t){for(let n of e)delete A.actions[n.key],ye(`actions`,n.key,t);return}let o=[],s=new Map,c=new Map,l=new Map;for(let e of a){c.set(e.name,e);let t=Ct.parse(e.name)?.version;if(t){let n=s.get(t);n||o.push(t),(!n||e.name.length>n.length)&&s.set(t,e.name)}e.commitSha&&l.set(e.commitSha,e.name)}let u=We(e=>ba(t,n,i,e,S));async function d(e){let t={...e,cooldownDays:void 0,now:void 0},r=new Set;for(let a=0;a<20;a++){let a=_n({},r.size?o.filter(e=>!r.has(e)):o,t);if(!a)return null;let l=s.get(a),d=c.get(l)?.commitSha||``;if(!e.cooldownDays)return{version:a,tag:l,commitSha:d,date:``};let f=d?await u(d):``;if(f===void 0)throw Error(`Unable to fetch the commit date for ${n}/${i}@${l}`);if(Bt(f,e.cooldownDays,e.now))return{version:a,tag:l,commitSha:d,date:f};r.add(a)}return null}let f=async({key:e,host:t,ref:r,comment:a,name:o,isHash:s,filePin:f,filePinNoDowngrade:p,fileCooldownDays:m})=>{let h=A.actions[e],g=`https://${t||`github.com`}/${n}/${i}`,{pinnedRange:_,pinNoDowngrade:v}=pe([o],f,p),y=r;if(s?y=a||l.get(r)||l.entries().find(([e])=>e.startsWith(r))?.[1]||``:Hn(r)||(y=``),!y){delete A.actions[e];return}let{usePre:b,useRel:ee,semvers:te,cooldownOverride:ne}=k(o),x=ne??m,re=await d({range:y,semvers:te,usePre:b,useRel:ee,versioning:Ct,pinnedRange:_,pinNoDowngrade:v,cooldownDays:x||void 0,now:x?be:void 0});if(!re){delete A.actions[e];return}let{tag:S,commitSha:C,date:w}=re;if(s){if(!C||C.startsWith(r)||r.startsWith(C)){delete A.actions[e];return}h.old=r,h.new=C.substring(0,r.length),h.oldPrint=y,h.newPrint=S}else{let t=xa(S,r);if(t===r){delete A.actions[e];return}h.new=c.has(t)?t:S}h.info=g;let T=w||(C?await ze(u(C)):``);T&&fs(h,T)};await I(e,async e=>{try{await f(e)}catch(t){delete A.actions[e.key],ye(`actions`,e.key,t)}},{concurrency:r})},{concurrency:r}),Object.keys(A.actions).length||delete A.actions})()),qe.length&&tt.push((async()=>{await I(Map.groupBy(qe,e=>e.fullImage).entries(),async([e,t])=>{if(t[0].ref.registry){for(let e of t)delete A.docker[e.key];return}let n;try{let[t]=await Qa(e,S);n=t}catch(e){for(let n of t)delete A.docker[n.key],ye(`docker`,n.key,e);return}let r=hs(e,`docker`);for(let i of t){let t=A.docker[i.key],a=t.oldOrig||t.old,{semvers:o,cooldownOverride:s}=k(e,r),{pinnedRange:c}=pe(r,i.filePin),l=s??i.fileCooldownDays,u=$a(n.tags,a,o,l||void 0,l?be:void 0,c);if(!u){delete A.docker[i.key];continue}t.new=u.newTag,t.info=uo(i.ref),fs(t,u.date)}},{concurrency:r}),Object.keys(A.docker).length||delete A.docker})()),B.length&&tt.push((async()=>{await I(B,async e=>{let t=hs(e.name,e.kind),{useGreatest:n,usePre:r,useRel:i,semvers:a,allowDowngrade:o,cooldownOverride:s}=k(e.name,t),{pinnedRange:c,pinNoDowngrade:l}=pe(t,e.filePin,e.filePinNoDowngrade),u=s??e.fileCooldownDays,d={semvers:a,useGreatest:n,usePre:r,useRel:i,allowDowngrade:o,pinnedRange:c,pinNoDowngrade:l,cooldownDays:u||void 0,now:u?be:void 0},f=A.make[e.key];try{let t;if(e.kind===`go`){let n=await Oo(e.installPath,e.version,e.projectDir,S,v,d);if(!n){delete A.make[e.key];return}e.newSpec=`${n.newInstallPath}@${n.newVersion}`,f.new=n.newVersion,t=n}else{let n=await ko(e.image,S,d);if(!n){delete A.make[e.key];return}e.newSpec=xo(e.image.writtenImage,n.newTag,e.image.digest?n.newDigest:null),f.new=n.newTag,t=n}f.info=t.info,t.date&&fs(f,t.date)}catch(t){delete A.make[e.key],ye(`make`,e.key,t)}},{concurrency:r}),Object.keys(A.make).length||delete A.make})());try{await Promise.all(tt)}finally{await Rt()}if(!ms(A))return _e.length?{results:{},errors:_e}:{results:{},message:`All dependencies are up to date.`};if(n.update){let e=(e,t,n)=>{for(let r of t){let t=Yo(A[e],r.memberPath);Object.keys(t).length&&vs(r.absPath,n(r.content,t))}},t=new Map;for(let[e,n]of Object.entries(A.actions??{})){let[r,i]=e.split(`\0`),a=Vn.test(n.old)?n.newPrint:void 0;Ue(t,r,{name:i,oldRef:n.old,newRef:n.new,newComment:a})}let n=new Map;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;for(let e of B)!e.newSpec||!A.make?.[e.key]||Ue(r,e.key.split(`\0`)[0],{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}=Ie[e]||{};if(!t)continue;let i=Ea(r,n);vs(t,i),L[e]&&(L[e].content=i)}continue}if(a===`docker`){for(let[e,t]of n){let n=L[e];if(!n)continue;let{absPath:r,content:i,fileType:a}=n;vs(r,(a===`dockerfile`?no:a===`compose`?ro:io)(i,t))}continue}if(a===`make`){for(let[e,t]of r){let n=Be[e];n&&vs(n.absPath,Ao(n.content,t))}continue}if(a===`go`){for(let e of[...Ve,...M.go??[]]){let t=Yo(A[a],e.memberPath);if(!Object.keys(t).length)continue;let[n,r]=fa(e.content,t);n!==e.content&&vs(e.absPath,n),pa(e.projectDir,r,vs)}if(He){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]=fa(He.content,e);t!==He.content&&vs(He.file,t)}}}else a===`cargo`?(e(a,R,qo),e(a,M.cargo??[],qo)):a===`npm`?(e(a,Ke,ns),e(a,Ge,Zr),e(a,M.npm??[],Zr)):e(a,M[a]??[],vi)}}let rt=bs(A);return _e.length&&(rt.errors=_e),rt}function Cs(e){return/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):e}function ws(e){let t=tr(e);if(t!==!1)return t===!0||Array.from(t).map(Cs)}function Ts(t){if(!t)return e();let n=l(t)?t:f(e(),t),r=!1;try{r=y(n).isDirectory()}catch{}return r?n:c(n)}function Es(e,t){let n=tr(e.file),r=[...n instanceof Set?n:[],...t];return{filesList:r,startDir:Ts(r[0])}}function Ds(e){let t=a({strict:!1,allowPositionals:!0,tokens:!0,options:er,...e!==void 0&&{args:e}}),n=t.values,r=new Set,i=0;for(let[e,a]of t.tokens.entries()){if(a.kind===`positional`&&i++,a.kind!==`option`||!a.value?.startsWith(`-`))continue;let o=a.value.startsWith(`--`)?2:1,s=nr(a.value.substring(o));if(!s)continue;let c=t.tokens[e+1],l=n[a.name];if(Array.isArray(l)){let e=l.indexOf(a.value);e!==-1&&l.splice(e,1)}else n[a.name]=!0;let u=c?.kind===`positional`&&c.value?c.value:!0;typeof u==`string`&&r.add(i),er[s]?.multiple?(n[s]??=[]).push(u):n[s]=u}return{args:n,positionals:t.positionals.filter((e,t)=>!r.has(t))}}async function Os(e,t){let{filesList:n,startDir:r}=Es(e,t),i=typeof e.timeout==`string`?Re(e.timeout,`timeout`):void 0,a={...await ur(r,{noCache:!!e[`no-cache`],timeout:i??5e3}),pin:void 0};e.json&&(a.json=!0),e.verbose&&(a.verbose=!0),e[`no-cache`]&&(a.noCache=!0),e.update&&(a.update=!0),e.indirect&&(a.indirect=!0),e[`error-on-outdated`]&&(a.errorOnOutdated=!0),e[`error-on-unchanged`]&&(a.errorOnUnchanged=!0),e.color&&(a.color=!0,a.noColor=!1),e[`no-color`]&&(a.color=!1,a.noColor=!0),i!==void 0&&(a.timeout=i),typeof e.sockets==`string`&&(a.sockets=Re(e.sockets,`sockets`)),typeof e.registry==`string`&&(a.registry=e.registry),typeof e.cooldown==`string`&&(a.cooldown=Number(e.cooldown)||e.cooldown);let o=ir(e.include).map(Cs),s=ir(e.exclude).map(Cs);o.length&&(a.include=o),s.length&&(a.exclude=s);let c=ir(e.types);c.length&&(a.types=c);let l=or(e.pin);Object.keys(l).length&&(a.pin=l);let u=tr(e.modes);u instanceof Set&&(a.modes=Array.from(u));for(let t of[`greatest`,`prerelease`,`release`,`patch`,`minor`]){let n=ws(e[t]);n!==void 0&&(a[t]=n)}let d=ws(e[`allow-downgrade`]);d!==void 0&&(a.allowDowngrade=d),n.length&&(a.files=n);for(let t of[`forgeapi`,`pypiapi`,`jsrapi`,`goproxy`,`cargoapi`,`dockerapi`])typeof e[t]==`string`&&(a[t]=e[t]);return a}function ks(e){try{return dr(g(u(e,`.npmrc`),`utf8`)).registry}catch{return}}function As(e,t){try{return`${new URL(typeof e==`string`&&e?e:t).origin}/`}catch{return null}}const js={npm:[`registry`,`jsrapi`,`forgeapi`],pypi:[`pypiapi`],cargo:[`cargoapi`],go:[`goproxy`],docker:[`dockerapi`],actions:[`forgeapi`,`dockerapi`],make:[`goproxy`,`dockerapi`]};function Ms(e){if(De[e])return De[e];if(co(e))return`docker`;if(po(e))return`make`}function Ns(e,t){let n=new Set;try{for(let t of _(e,{withFileTypes:!0}))if(t.isFile()){let e=Ms(t.name);e&&n.add(e)}else t.isDirectory()&&P.some(e=>e===t.name)&&n.add(`actions`)}catch{}let r=new Set;for(let i of n)for(let n of js[i]??[]){let i=As(n===`registry`&&typeof t.registry!=`string`?ks(e):t[n],n===`goproxy`?xi()[0].url:Y[n]);i&&r.add(i)}return Array.from(r)}const Ps=/[A-Za-z_$]/,Fs=/[A-Za-z0-9_$]/;function Is(e){let t=``,n=0,r=e.length,i=-1;function a(t){if(e[t+1]===`/`){for(t+=2;t<r&&e[t]!==`
7
18
  `;)t++;return t}for(t+=2;t<r&&(e[t]!==`*`||e[t+1]!==`/`);)t++;return t+2}function o(t){for(;t<r;){if(/\s/.test(e[t])){t++;continue}if(e[t]===`/`&&(e[t+1]===`/`||e[t+1]===`*`)){t=a(t);continue}break}return t}for(;n<r;){let s=e[n];if(s===`"`){for(i=-1,t+=s,n++;n<r;){let i=e[n];if(t+=i,n++,i===`\\`&&n<r){t+=e[n],n++;continue}if(i===`"`)break}continue}if(s===`'`){for(i=-1,t+=`"`,n++;n<r;){let i=e[n];if(i===`\\`){let a=e[n+1];if(a===`'`){t+=`'`,n+=2;continue}if(a===`
8
- `){n+=2;continue}t+=i,n+1<r?(t+=a,n+=2):n++;continue}if(i===`"`){t+=`\\"`,n++;continue}if(i===`'`){t+=`"`,n++;break}t+=i,n++}continue}if(s===`/`&&(e[n+1]===`/`||e[n+1]===`*`)){n=a(n);continue}if(s===`,`){i=t.length,t+=s,n++;continue}if(s===`}`||s===`]`){i>=0&&(t=t.slice(0,i)+t.slice(i+1)),i=-1,t+=s,n++;continue}if(za.test(s)){i=-1;let a=``;for(;n<r&&Ba.test(e[n]);)a+=e[n],n++;t+=e[o(n)]===`:`?JSON.stringify(a):a;continue}/\s/.test(s)||(i=-1),t+=s,n++}return JSON.parse(t)}export{Oe as $,Xt as A,$t as B,_t as C,cn as D,un as E,Zt as F,rn as G,Yt as H,Dt as I,G as J,at as K,gt as L,Ft as M,Ot as N,ht as O,on as P,Qe as Q,ft as R,Bt as S,Wt as T,Jt as U,dt as V,Y as W,et as X,Pe as Y,qe as Z,wt as _,ja as a,Pt as b,Z as c,bt as d,nn as f,pt as g,Tt as h,Na as i,Nt as j,mt as k,Et as l,en as m,Ra as n,Da as o,qt as p,ct as q,Ma as r,qr as s,Va as t,J as u,X as v,Kt as w,sn as x,It as y,Qt as z};
19
+ `){n+=2;continue}t+=i,n+1<r?(t+=a,n+=2):n++;continue}if(i===`"`){t+=`\\"`,n++;continue}if(i===`'`){t+=`"`,n++;break}t+=i,n++}continue}if(s===`/`&&(e[n+1]===`/`||e[n+1]===`*`)){n=a(n);continue}if(s===`,`){i=t.length,t+=s,n++;continue}if(s===`}`||s===`]`){i>=0&&(t=t.slice(0,i)+t.slice(i+1)),i=-1,t+=s,n++;continue}if(Ps.test(s)){i=-1;let a=``;for(;n<r&&Fs.test(e[n]);)a+=e[n],n++;t+=e[o(n)]===`:`?JSON.stringify(a):a;continue}/\s/.test(s)||(i=-1),t+=s,n++}return JSON.parse(t)}export{Lt as $,Zn as A,Gt as B,Xn as C,On as D,Pn as E,vn as F,Bt as G,Un as H,Yn as I,zn as J,Qt as K,Jt as L,Ut as M,Vn as N,$n as O,hn as P,Pt as Q,Hn as R,_n as S,Kt as T,An as U,Vt as V,Wn as W,Z as X,X as Y,bn as Z,nn as _,Es as a,Ve as at,Xt as b,Fn as c,Y as d,q as et,Yt as f,Gn as g,Rn as h,Os as i,We as it,Wt as j,ln as k,gn as l,qn as m,Ns as n,R as nt,Ss as o,F as ot,sn as p,Bn as q,Ds as r,ge as rt,ga as s,He as st,Is as t,P as tt,rn as u,Ht as v,wn as w,yn as x,tn as y,un as z};
package/dist/shared2.js CHANGED
@@ -1 +1 @@
1
- import{C as e,O as t,w as n}from"./shared.js";export{e as getFetchOpts,n as getForgeTokens,t as githubApiUrl};
1
+ import{E as e,T as t,Z as n,j as r}from"./shared.js";export{t as getFetchOpts,e as getForgeTokens,r as githubApiUrl,n as urlHost};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "updates",
3
- "version": "17.20.4",
3
+ "version": "17.22.0",
4
4
  "description": "CLI dependency update tool for npm, uv, cargo, go, actions, docker and make",
5
5
  "author": "silverwind",
6
6
  "repository": {
@@ -46,14 +46,14 @@
46
46
  "@typescript/native-preview": "7.0.0-dev.20260707.2",
47
47
  "@vitest/coverage-v8": "4.1.10",
48
48
  "eslint": "10.8.0",
49
- "eslint-config-silverwind": "143.0.0",
49
+ "eslint-config-silverwind": "143.1.0",
50
50
  "timerel": "5.8.8",
51
51
  "tsdown": "0.22.14",
52
52
  "tsdown-config-silverwind": "4.0.3",
53
53
  "typescript": "6.0.3",
54
54
  "typescript-config-silverwind": "20.0.3",
55
- "updates-config-silverwind": "4.0.4",
56
- "versions": "15.1.4",
55
+ "updates-config-silverwind": "4.0.5",
56
+ "versions": "15.3.0",
57
57
  "vitest": "4.1.10",
58
58
  "vitest-config-silverwind": "11.5.0"
59
59
  },