updates 18.0.0 → 18.0.2

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
@@ -3,7 +3,7 @@
3
3
 
4
4
  ![](./screenshot.png)
5
5
 
6
- `updates` is a CLI tool which checks for dependency updates. It is typically able to complete in less than a second.
6
+ `updates` is a CLI tool that checks for dependency updates, usually in under a second.
7
7
 
8
8
  ## Supported files
9
9
 
@@ -15,10 +15,6 @@
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
-
22
18
  ## Usage
23
19
 
24
20
  ```bash
@@ -35,20 +31,20 @@ npx updates -u && npm i
35
31
  |:-|:-|
36
32
  |`-u, --update`|Update versions and write dependency file|
37
33
  |`-f, --file <path,...>`|File or directory to use, defaults to current directory|
38
- |`-M, --modes <mode,...>`|Which modes to enable. Either `npm`, `pypi`, `go`, `cargo`, `actions`, `docker`, `make`. Default: `npm,pypi,go,cargo,actions,docker,make`|
34
+ |`-M, --modes <mode,...>`|Which modes to enable. Either `npm`, `pypi`, `go`, `cargo`, `actions`, `docker`, `make`. Default: all|
39
35
  |`-i, --include <dep,...>`|Include only given dependencies|
40
36
  |`-e, --exclude <dep,...>`|Exclude given dependencies|
41
37
  |`-l, --pin <dep=range>`|Pin dependency to given semver range|
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|
43
- |`-p, --prerelease [<dep,...>]`|Consider prerelease versions|
44
- |`-R, --release [<dep,...>]`|Only use release versions, may downgrade|
45
- |`-g, --greatest [<dep,...>]`|Prefer greatest over latest version|
38
+ |`-C, --cooldown <duration>`|Minimum dependency age, like `12h`, `7d`, `2w`, `5m` (30 days), `1y` (365 days). A bare number is days|
39
+ |`-p, --prerelease [<dep,...>]`|Consider prereleases, implying `--greatest`|
40
+ |`-R, --release [<dep,...>]`|Never consider prereleases|
41
+ |`-g, --greatest [<dep,...>]`|Ignore the `latest` tag and take the greatest release|
46
42
  |`-t, --types <type,...>`|Dependency types to update|
47
43
  |`-P, --patch [<dep,...>]`|Consider only up to semver-patch|
48
44
  |`-m, --minor [<dep,...>]`|Consider only up to semver-minor|
49
- |`-d, --allow-downgrade [<dep,...>]`|Allow version downgrades when using latest version|
45
+ |`-d, --allow-downgrade [<dep,...>]`|Allow downgrading onto a lower `latest` tag|
50
46
  |`-s, --sockets <num>`|Maximum number of parallel HTTP sockets opened. Default: 25|
51
- |`-T, --timeout <ms>`|Network request timeout in ms (go probes use half). Default: 5000|
47
+ |`-T, --timeout <ms>`|Network request timeout in ms. Default: 5000|
52
48
  |`-r, --registry <url>`|Override npm registry URL|
53
49
  |`-I, --indirect`|Include indirect Go dependencies|
54
50
  |`-E, --error-on-outdated`|Exit with code 2 when updates are available and 0 when not|
@@ -61,19 +57,13 @@ npx updates -u && npm i
61
57
  |`-V, --verbose`|Print verbose output to stderr|
62
58
  |`-h, --help`|Print the help|
63
59
 
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`.
60
+ Options taking multiple arguments accept comma-separated values or repetition. An option with an optional `dep` argument applies to all dependencies when the argument is omitted. `dep` matches globs like `foo*` or regexes wrapped in slashes like `'/^foo/'`, except for `--pin`, which takes an exact name.
71
61
 
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.
62
+ A failed lookup is reported on its own, does not hold back the other results and exits with code 1, ahead of `-E` and `-U`. With `-j`, failures are listed in an `errors` array next to `results`.
73
63
 
74
64
  ## Config File
75
65
 
76
- The module can be configured with `updates.config.{ts,js,mjs,mts}` in your repo root.
66
+ Configure via `updates.config.{ts,js,mjs,mts}` in your repo root. CLI arguments win over it, except `include`, `exclude` and `pin`, which merge.
77
67
 
78
68
  ```ts
79
69
  import type {Config} from "updates";
@@ -87,39 +77,16 @@ export default {
87
77
 
88
78
  ### Config Options
89
79
 
90
- - `include` *Array\<string | RegExp>*: Array of dependencies to include
91
- - `exclude` *Array\<string | RegExp>*: Array of dependencies to exclude
92
- - `types` *Array\<string>*: Array of dependency types to use
93
- - `registry` *string*: URL to npm registry
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
96
- - `files` *Array\<string>*: File or directory paths to use
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
109
- - `greatest` *boolean | Array\<string | RegExp>*: Prefer greatest over latest version
110
- - `prerelease` *boolean | Array\<string | RegExp>*: Consider prerelease versions
111
- - `release` *boolean | Array\<string | RegExp>*: Only use release versions
112
- - `patch` *boolean | Array\<string | RegExp>*: Consider only up to semver-patch
113
- - `minor` *boolean | Array\<string | RegExp>*: Consider only up to semver-minor
114
- - `allowDowngrade` *boolean | Array\<string | RegExp>*: Allow version downgrades
115
- - `overrides` *Array\<Override>*: Per-package option overrides matched by name (see [Overrides](#overrides))
116
- - `inherit` *object*: Opt-in to inheriting select fields from other tools' configs (see [Renovate config](#renovate-config))
117
-
118
- CLI arguments have precedence over options in the config file. `include`, `exclude`, and `pin` options are merged.
80
+ Mirrors the [CLI options](#options) in camelCase, with `--file` as `files`, plus:
81
+
82
+ - `overrides` *Array\<Override>*: Per-package option overrides (see [Overrides](#overrides))
83
+ - `inherit` *object*: Fields to inherit from other tools' configs (see [Renovate config](#renovate-config))
84
+
85
+ `include`, `exclude` and the `dep` options take `Array<string | RegExp>`, `pin` takes a `Record<string, string>` keyed by exact dependency name, `files` and `modes` take `Array<string>`.
119
86
 
120
87
  ### Overrides
121
88
 
122
- `overrides` applies options to a subset of dependencies, matched by name. Each override has `include` and/or `exclude` patterns (glob or `RegExp`, omit `include` to match all) plus any of these options: `cooldown`, `greatest`, `prerelease`, `release`, `patch`, `minor`, `allowDowngrade`. A matching override takes precedence over the corresponding top-level option, and when several overrides match the same dependency, the last one wins.
89
+ `overrides` applies options to a subset of dependencies. Each entry takes `include` and/or `exclude` patterns, omit `include` to match all, plus any of `cooldown`, `greatest`, `prerelease`, `release`, `patch`, `minor`, `allowDowngrade`. An override beats the top-level option and the last match wins.
123
90
 
124
91
  ```ts
125
92
  import type {Config} from "updates";
@@ -134,11 +101,9 @@ export default {
134
101
  } satisfies Config;
135
102
  ```
136
103
 
137
- A `cooldown` of `0` in an override disables a global cooldown for the matched dependencies. `patch` takes precedence over `minor`, so an override that sets `minor` has no effect while `patch` is enabled for that dependency. `pin` is not an override option since it is already per-package via [`pin`](#config-options).
138
-
139
104
  ### Renovate config
140
105
 
141
- If a [Renovate](https://docs.renovatebot.com/) config is found, `ignoreDeps`, `enabled` and `allowedVersions` in `packageRules` are inherited as `include`/`exclude`/`pin`, evaluated in order as Renovate does. A rule matching on anything but package names is skipped, and a preset in `extends` that cannot be fetched is an error. `allowedVersions` filters candidates but never downgrades, as it is a ceiling in Renovate too. `minimumReleaseAge` is *not* inherited as `cooldown` by default, opt in via:
106
+ A [Renovate](https://docs.renovatebot.com/) config is picked up automatically, inheriting `ignoreDeps`, `enabled` and `allowedVersions` in `packageRules` as `include`/`exclude`/`pin`. `minimumReleaseAge` is not inherited unless opted in:
142
107
 
143
108
  ```ts
144
109
  export default {
@@ -148,11 +113,11 @@ export default {
148
113
  } satisfies Config;
149
114
  ```
150
115
 
151
- Values in `updates.config` override anything inherited. `pin` merges per dependency, where an authored entry replaces the ceiling of the same name and may downgrade into its range.
116
+ Values in `updates.config` override anything inherited.
152
117
 
153
118
  ## API
154
119
 
155
- `updates` can be used as a library:
120
+ `updates` can be used as a library and accepts all [config options](#config-options):
156
121
 
157
122
  ```ts
158
123
  import {updates} from "updates";
@@ -178,22 +143,16 @@ const output = await updates({
178
143
  //=> }
179
144
  ```
180
145
 
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).
182
-
183
146
  ## Environment Variables
184
147
 
185
148
  |Variable|Description|
186
149
  |:-|:-|
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|
188
- |`UPDATES_GITHUB_API_TOKEN`|GitHub API token for authenticating forge API requests|
189
- |`GITHUB_API_TOKEN`|Fallback GitHub API token|
190
- |`GH_TOKEN`|Fallback GitHub API token|
191
- |`GITHUB_TOKEN`|Fallback GitHub API token|
192
- |`HOMEBREW_GITHUB_API_TOKEN`|Fallback GitHub API token|
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|
150
+ |`UPDATES_FORGE_TOKENS`|Comma-separated list of `host:token` pairs for forge APIs, e.g. `github.com:ghp_xxx,localhost:3500:tok_xxx`. The host must match the URL exactly, port included|
151
+ |`UPDATES_GITHUB_API_TOKEN`|GitHub API token, with `GITHUB_API_TOKEN`, `GH_TOKEN`, `GITHUB_TOKEN` and `HOMEBREW_GITHUB_API_TOKEN` as fallbacks, in that order. Only ever sent to GitHub itself|
152
+ |`GOPROXY`|Go module proxy list, honored as go itself does. Default: `https://proxy.golang.org,direct`|
153
+ |`GONOPROXY`|Comma-separated list of Go module patterns to fetch directly, bypassing the proxy|
195
154
  |`GOPRIVATE`|Fallback for `GONOPROXY` when not set|
196
155
 
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.
156
+ A host in `UPDATES_FORGE_TOKENS` wins over the GitHub tokens. Any non-GitHub forge without a matching entry receives no credentials.
198
157
 
199
158
  © [silverwind](https://github.com/silverwind), distributed under BSD licence
package/dist/api.d.ts CHANGED
@@ -44,17 +44,17 @@ type Config = {
44
44
  timeout?: number;
45
45
  /** Maximum number of parallel HTTP sockets */
46
46
  sockets?: number;
47
- /** Prefer greatest over latest version */
47
+ /** Ignore the `latest` tag and take the greatest release */
48
48
  greatest?: boolean | Array<string | RegExp>;
49
- /** Consider prerelease versions */
49
+ /** Consider prereleases, implying `greatest` */
50
50
  prerelease?: boolean | Array<string | RegExp>;
51
- /** Only use release versions, may downgrade */
51
+ /** Never consider prereleases */
52
52
  release?: boolean | Array<string | RegExp>;
53
53
  /** Consider only up to semver-patch */
54
54
  patch?: boolean | Array<string | RegExp>;
55
55
  /** Consider only up to semver-minor */
56
56
  minor?: boolean | Array<string | RegExp>;
57
- /** Allow version downgrades when using latest version */
57
+ /** Allow downgrading onto a lower `latest` tag */
58
58
  allowDowngrade?: boolean | Array<string | RegExp>;
59
59
  /** Per-package option overrides, matched by name; last matching override wins */
60
60
  overrides?: Array<Override>;
@@ -71,17 +71,17 @@ type Override = {
71
71
  exclude?: Array<string | RegExp>;
72
72
  /** Minimum dependency age, e.g. 7 (days), "1w", "2d", "6h"; 0 disables a global cooldown */
73
73
  cooldown?: number | string;
74
- /** Prefer greatest over latest version */
74
+ /** Ignore the `latest` tag and take the greatest release */
75
75
  greatest?: boolean;
76
- /** Consider prerelease versions */
76
+ /** Consider prereleases, implying `greatest` */
77
77
  prerelease?: boolean;
78
- /** Only use release versions, may downgrade */
78
+ /** Never consider prereleases */
79
79
  release?: boolean;
80
80
  /** Consider only up to semver-patch */
81
81
  patch?: boolean;
82
82
  /** Consider only up to semver-minor */
83
83
  minor?: boolean;
84
- /** Allow version downgrades when using latest version */
84
+ /** Allow downgrading onto a lower `latest` tag */
85
85
  allowDowngrade?: boolean;
86
86
  };
87
87
  //#endregion
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{V as e,a as t,at as n,i as r,n as i,o 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 i(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...]
2
+ import{B as e,a as t,at as n,i as r,n as i,o 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 i(t(_,v).startDir,_))(async()=>{try{await fetch(e,{method:`HEAD`})}catch{}})();let y=String,b=String,x=!!_.json;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
@@ -9,13 +9,13 @@ import{V as e,a as t,at as n,i as r,n as i,o as a,r as o,rt as s,s as c,v as l}f
9
9
  -e, --exclude <dep,...> Exclude given dependencies
10
10
  -l, --pin <dep=range> Pin dependency to given semver range
11
11
  -C, --cooldown <duration> Minimum dependency age, e.g. 7 (days), 1w, 2d, 6h
12
- -p, --prerelease [<dep,...>] Consider prerelease versions
13
- -R, --release [<dep,...>] Only use release versions, may downgrade
14
- -g, --greatest [<dep,...>] Prefer greatest over latest version
12
+ -p, --prerelease [<dep,...>] Consider prereleases, implying --greatest
13
+ -R, --release [<dep,...>] Never consider prereleases
14
+ -g, --greatest [<dep,...>] Ignore the latest tag and take the greatest release
15
15
  -t, --types <type,...> Dependency types to update
16
16
  -P, --patch [<dep,...>] Consider only up to semver-patch
17
17
  -m, --minor [<dep,...>] Consider only up to semver-minor
18
- -d, --allow-downgrade [<dep,...>] Allow version downgrades when using latest version
18
+ -d, --allow-downgrade [<dep,...>] Allow downgrading onto a lower latest tag
19
19
  -s, --sockets <num> Maximum number of parallel HTTP sockets opened. Default: 25
20
20
  -T, --timeout <ms> Network request timeout in ms (go probes use half). Default: ${l}
21
21
  -r, --registry <url> Override npm registry URL
package/dist/renovate.js CHANGED
@@ -1 +1 @@
1
- import{$ as e,L as t,Q as n,et as r,it as i,nt as a,ot as o,t as s,tt as c}from"./shared.js";import{join as l}from"node:path";import{readFile as u}from"node:fs/promises";const d=[`renovate.json`,`renovate.jsonc`,`renovate.json5`,...[...c,`.gitlab`].flatMap(e=>[`${e}/renovate.json`,`${e}/renovate.jsonc`,`${e}/renovate.json5`]),`.renovaterc`,`.renovaterc.json`,`.renovaterc.jsonc`,`.renovaterc.json5`],f={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 p(e){let t=0,n=!1,r=/(\d+(?:\.\d+)?)\s*([a-z]+)/gi,i;for(;(i=r.exec(e))!==null;){let e=f[i[2].toLowerCase()];if(e===void 0)return;t+=Number(i[1])*e,n=!0}return n?t:void 0}const m={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}*`},h=[`updateTypes`,`managers`,`datasources`,`depTypeList`,`paths`,`languages`,`baseBranchList`,`sourceUrlPrefixes`],g=new Set([`*`,`**`]);function _(e){let t=[];for(let[n,r]of Object.entries(e)){let e=Object.hasOwn(m,n)?m[n]:void 0;if(!e){if(n.startsWith(`match`)||n.startsWith(`exclude`)||h.includes(n))return;continue}let i=typeof r==`string`?[r]:r;if(!Array.isArray(i))return;for(let n of i){if(typeof n!=`string`||!n)return;t.push(e(n))}}return t}function v(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 y(e,t){return e instanceof RegExp&&t instanceof RegExp?e.source===t.source&&e.flags===t.flags:e===t}async function b(e){let t=(await Promise.all(d.map(async t=>{let n=l(e,...t.split(`/`));try{return{path:n,text:await u(n,`utf8`)}}catch{return null}}))).find(e=>e!==null);if(t)return t;try{let t=l(e,`package.json`),n=JSON.parse(await u(t,`utf8`));if(n&&typeof n==`object`&&n.renovate&&typeof n.renovate==`object`)return{path:t,text:JSON.stringify(n.renovate)}}catch{}}function x(e){let t=/^\/(.+)\/([a-z]*)$/.exec(e);if(!t)return e;try{return new RegExp(t[1],t[2])}catch{return e}}function S(e){return/[*?[\]{}!()|+]/.test(e)}function C(e){let t=null,n=[],i={};for(let a of e){if(!a||typeof a!=`object`)continue;let e=_(a);if(!e)continue;let{positive:o,negated:s}=v(e);if(a.enabled===!1&&!(o.length&&s.length)){if(!e.length||o.some(e=>g.has(e)))t=[];else if(!o.length)t===null&&(t=s.map(x));else for(let e of o)n.push(x(e))}else if(a.enabled===!0&&(t!==null||n.length)){if(!e.length)t=null,n=[];else if(o.length&&!s.length)for(let e of o){let r=x(e);n=n.filter(e=>!y(e,r)),t?.push(r)}}if(typeof a.allowedVersions==`string`&&r(a.allowedVersions))for(let e of o)!S(e)&&typeof x(e)==`string`&&(i[e]=a.allowedVersions)}return{allowed:t,disabled:n,pin:i}}function w(e,t){if(e.enabled===!1)return{exclude:[`*`]};let n={};if(t.cooldown&&typeof e.minimumReleaseAge==`string`){let t=p(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}=C(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 T={github:(e,t,n)=>`https://raw.githubusercontent.com/${e}/${t}/${n}`,gitlab:(e,t,n)=>`https://gitlab.com/${e}/-/raw/${t}/${n}`,gitea:(e,t,n)=>`https://gitea.com/api/v1/repos/${e}/raw/${n}?ref=${t}`,forgejo:(e,t,n)=>`https://code.forgejo.org/api/v1/repos/${e}/raw/${n}?ref=${t}`};function E(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(T,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 D=[`default.json`,`default.json5`,`renovate.json`,`renovate.json5`,`.renovaterc.json`,`.renovaterc`];function O(e){return/\.json[5c]?$/.test(e)?[e]:[`${e}.json`,`${e}.json5`]}function k(e,t){if(e===null)return null;let n;try{n=s(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 A(e,t){if(e.kind===`http`)return k(await t(e.url),e.url);let n=T[e.forge],r=async r=>{for(let i of r){let r=n(e.slug,e.ref,i),a=k(await t(r),r);if(a)return a}return null};if(e.subpath)return r(O(e.subpath));if(!e.name)return r(D);let[i,...a]=e.name.split(`/`),o=await r(O(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 j(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 M(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=E(e);if(!a)continue;let o;try{o=await A(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=j(i,await M(o,t,new Set(n).add(e),r+1))}let{extends:o,...s}=e;return j(i,s)}async function N(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 P({noCache:r=!1,timeout:i=1e4}={}){return async a=>{let o=r?null:await n(a),s=await N(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 F=i(e=>o(e,async e=>{let t=await b(e);if(!t)return null;let n;try{n=s(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}})),I=new Map,L=new Map;async function R(e,t={},n=P()){let r=await F(e);if(!r)return{};let i=a(I,r.path,()=>M(r.parsed,n,new Set,0));return a(L,`${+!!t.cooldown}${r.path}`,async()=>w(await i,t))}export{R as loadRenovateConfig,P as makePresetFetcher};
1
+ import{$ as e,I as t,Q as n,et as r,it as i,nt as a,ot as o,t as s,tt as c}from"./shared.js";import{join as l}from"node:path";import{readFile as u}from"node:fs/promises";const d=[`renovate.json`,`renovate.jsonc`,`renovate.json5`,...[...c,`.gitlab`].flatMap(e=>[`${e}/renovate.json`,`${e}/renovate.jsonc`,`${e}/renovate.json5`]),`.renovaterc`,`.renovaterc.json`,`.renovaterc.jsonc`,`.renovaterc.json5`],f={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 p(e){let t=0,n=!1,r=/(\d+(?:\.\d+)?)\s*([a-z]+)/gi,i;for(;(i=r.exec(e))!==null;){let e=f[i[2].toLowerCase()];if(e===void 0)return;t+=Number(i[1])*e,n=!0}return n?t:void 0}const m={matchPackageNames:e=>e.replace(/\{\/,\}\*\*$/,`*`),packageNames:e=>e,matchPackagePatterns:e=>e===`*`?`*`:`/${e}/`,packagePatterns:e=>e===`*`?`*`:`/${e}/`,matchPackagePrefixes:e=>`${e}*`,excludePackageNames:e=>`!${e}`,excludePackagePatterns:e=>`!/${e}/`,excludePackagePrefixes:e=>`!${e}*`},h=[`updateTypes`,`managers`,`datasources`,`depTypeList`,`paths`,`languages`,`baseBranchList`,`sourceUrlPrefixes`],g=new Set([`*`,`**`]);function _(e){let t=[];for(let[n,r]of Object.entries(e)){let e=Object.hasOwn(m,n)?m[n]:void 0;if(!e){if(n.startsWith(`match`)||n.startsWith(`exclude`)||h.includes(n))return;continue}let i=typeof r==`string`?[r]:r;if(!Array.isArray(i))return;for(let n of i){if(typeof n!=`string`||!n)return;t.push(e(n))}}return t}function v(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 y(e,t){return e instanceof RegExp&&t instanceof RegExp?e.source===t.source&&e.flags===t.flags:e===t}async function b(e){let t=(await Promise.all(d.map(async t=>{let n=l(e,...t.split(`/`));try{return{path:n,text:await u(n,`utf8`)}}catch{return null}}))).find(e=>e!==null);if(t)return t;try{let t=l(e,`package.json`),n=JSON.parse(await u(t,`utf8`));if(n&&typeof n==`object`&&n.renovate&&typeof n.renovate==`object`)return{path:t,text:JSON.stringify(n.renovate)}}catch{}}function x(e){let t=/^\/(.+)\/([a-z]*)$/.exec(e);if(!t)return e;try{return new RegExp(t[1],t[2])}catch{return e}}function S(e){return/[*?[\]{}!()|+]/.test(e)}function C(e){let t=null,n=[],i={},a=[];for(let o of e){if(!o||typeof o!=`object`)continue;let e=_(o);if(!e)continue;let{positive:s,negated:c}=v(e);if(o.enabled===!1&&!(s.length&&c.length)){if(!e.length||s.some(e=>g.has(e)))t=[];else if(!s.length)t===null&&(t=c.map(x));else for(let e of s)n.push(x(e))}else if(o.enabled===!0&&(t!==null||n.length)){if(!e.length)t=null,n=[];else if(s.length&&!c.length)for(let e of s){let r=x(e);n=n.filter(e=>!y(e,r)),t?.push(r)}}if(typeof o.minimumReleaseAge==`string`&&!c.length){let t=p(o.minimumReleaseAge);t!==void 0&&a.push({include:e.length?s.map(x):void 0,cooldown:t})}if(typeof o.allowedVersions==`string`&&r(o.allowedVersions))for(let e of s)!S(e)&&typeof x(e)==`string`&&(i[e]=o.allowedVersions)}return{allowed:t,disabled:n,pin:i,cooldowns:a}}function w(e,t){if(e.enabled===!1)return{exclude:[`*`]};let n={};if(t.cooldown&&typeof e.minimumReleaseAge==`string`){let t=p(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,cooldowns:s}=C(Array.isArray(e.packageRules)?e.packageRules:[]),c=[...r,...a];return i?.length&&(n.include=i),i&&!i.length&&c.push(`*`),c.length&&(n.exclude=c),Object.keys(o).length&&(n.pin=o,n.pinNoDowngrade=!0),t.cooldown&&s.length&&(n.overrides=s),n}const T={github:(e,t,n)=>`https://raw.githubusercontent.com/${e}/${t}/${n}`,gitlab:(e,t,n)=>`https://gitlab.com/${e}/-/raw/${t}/${n}`,gitea:(e,t,n)=>`https://gitea.com/api/v1/repos/${e}/raw/${n}?ref=${t}`,forgejo:(e,t,n)=>`https://code.forgejo.org/api/v1/repos/${e}/raw/${n}?ref=${t}`};function E(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(T,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 D=[`default.json`,`default.json5`,`renovate.json`,`renovate.json5`,`.renovaterc.json`,`.renovaterc`];function O(e){return/\.json[5c]?$/.test(e)?[e]:[`${e}.json`,`${e}.json5`]}function k(e,t){if(e===null)return null;let n;try{n=s(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 A(e,t){if(e.kind===`http`)return k(await t(e.url),e.url);let n=T[e.forge],r=async r=>{for(let i of r){let r=n(e.slug,e.ref,i),a=k(await t(r),r);if(a)return a}return null};if(e.subpath)return r(O(e.subpath));if(!e.name)return r(D);let[i,...a]=e.name.split(`/`),o=await r(O(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 j(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 M(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=E(e);if(!a)continue;let o;try{o=await A(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=j(i,await M(o,t,new Set(n).add(e),r+1))}let{extends:o,...s}=e;return j(i,s)}async function N(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 P({noCache:r=!1,timeout:i=1e4}={}){return async a=>{let o=r?null:await n(a),s=await N(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 F=i(e=>o(e,async e=>{let t=await b(e);if(!t)return null;let n;try{n=s(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}})),I=new Map,L=new Map;async function R(e,t={},n=P()){let r=await F(e);if(!r)return{};let i=a(I,r.path,()=>M(r.parsed,n,new Set,0));return a(L,`${+!!t.cooldown}${r.path}`,async()=>w(await i,t))}export{R as loadRenovateConfig,P as makePresetFetcher};
package/dist/shared.js CHANGED
@@ -1,19 +1,20 @@
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,readFile as g,readFileSync as _,readdirSync as v,realpathSync as y,statSync as b,truncateSync as x,writeFileSync as ee}from"node:fs";import{access as te,mkdir as ne,readFile as S,rename as C,writeFile as w}from"node:fs/promises";import{AsyncLocalStorage as T}from"node:async_hooks";import{Buffer as E}from"node:buffer";import{createHash as re}from"node:crypto";import{homedir as ie}from"node:os";import{pathToFileURL as ae}from"node:url";const D=/^\[\[([^\]]+)\]\]$/,O=/^\[([^[\]]+)\]$/;function oe(e){let t={},n=t,r=e.split(/\r?\n/);for(let e=0;e<r.length;e++){let i=r[e],a=pe(i).trim();if(!a)continue;let o=D.exec(a);if(o){let e=t,r=fe(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=O.exec(a);if(s){n=he(t,fe(s[1]));continue}let c=j(a,`=`);if(c<0)continue;let l=a.slice(0,c).trim(),u=a.slice(c+1).trim(),d=fe(l),f=he(n,d.slice(0,-1)),p=d[d.length-1],m=se(u);if((u.startsWith(`[`)||u.startsWith(`{`))&&!ue(u)){let t=u,n=e+1;for(;n<r.length&&(t+=`\n${pe(r[n])}`,!ue(t));n++);e=n,f[p]=ce(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,readFile 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 S,writeFile as C}from"node:fs/promises";import{AsyncLocalStorage as re}from"node:async_hooks";import{Buffer as ie}from"node:buffer";import{createHash as w}from"node:crypto";import{homedir as T}from"node:os";import{pathToFileURL as ae}from"node:url";const oe=/^\[\[([^\]]+)\]\]$/,E=/^\[([^[\]]+)\]$/,D=()=>Object.create(null);function O(e){let t=D(),n=t,r=e.split(/\r?\n/);for(let e=0;e<r.length;e++){let i=r[e],a=pe(i).trim();if(!a)continue;let o=oe.exec(a);if(o){let e=t,r=fe(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]]=D()),e=e[r[t]])}let i=r[r.length-1];Array.isArray(e[i])||(e[i]=[]);let a=D();e[i].push(a),n=a;continue}let s=E.exec(a);if(s){n=he(t,fe(s[1]));continue}let c=j(a,`=`);if(c<0)continue;let l=a.slice(0,c).trim(),u=a.slice(c+1).trim(),d=fe(l),f=he(n,d.slice(0,-1)),p=d[d.length-1],m=se(u);if((u.startsWith(`[`)||u.startsWith(`{`))&&!ue(u)){let t=u,n=e+1;for(;n<r.length&&(t+=`\n${pe(r[n])}`,!ue(t));n++);e=n,f[p]=k(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]=ce(m+t+m)}else f[p]=ce(u)}return t}function se(e){let t=e.slice(0,3);return t!==`"""`&&t!==`'''`||e.includes(t,3)?``:t}function ce(e){if(e.startsWith(`[`)){let t=[],n=me(e,`]`);for(let r of de(e.slice(1,n<0?e.length:n))){let e=r.trim();e&&t.push(ce(e))}return t}return e.startsWith(`{`)?k(e):e.startsWith(`"""`)?ge(e.slice(3,e.lastIndexOf(`"""`))):e.startsWith(`'''`)?e.slice(3,e.lastIndexOf(`'''`)):e.startsWith(`"`)?ge(e.slice(1,e.lastIndexOf(`"`))):e.startsWith(`'`)?e.slice(1,e.lastIndexOf(`'`)):le(e)}function le(e){return e===`true`?!0:e===`false`?!1:/^[+-]?\d+(\.\d+)?$/.test(e)?Number(e):e}function k(e){let t={},n=e.slice(1,e.lastIndexOf(`}`)).trim();if(!n)return t;for(let e of de(n)){let n=e.indexOf(`=`);if(n<0)continue;let r=e.slice(0,n).trim().replace(/^["']|["']$/g,``);t[r]=ce(e.slice(n+1).trim())}return t}function ue(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 de(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 fe(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 pe(e){let t=j(e,`#`);return t<0?e:e.slice(0,t)}function*A(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 j(e,t){return A(e,t).next().value??-1}function me(e,t){let n=-1;for(let r of A(e,t))n=r;return n}function he(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 ge(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 _e(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 ve=/^(\s*)([A-Za-z0-9][A-Za-z0-9._-]*)(\s*)((?:\[[^\]]*\])?)(\s*)(.*)$/,ye=/^(\s*\()([^)]*)(\)\s*)$/,M=/^(\s*)(===|==|!=|~=|<=|>=|<|>)(\s*)(\S+)(\s*)$/,be=new Set([`===`,`==`,`>=`,`~=`]),xe=/^v?\d[0-9a-z.!+_-]*$/i;function Se(e){let t=[];for(let n of e.split(`,`)){let e=M.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 Ce(e){let t=e.indexOf(`;`),n=ve.exec(t===-1?e:e.slice(0,t));if(!n)return null;let[,r,i,a,o,s,c]=n,l=ye.exec(c);return{name:i,extras:o,specifiers:Se(l?l[2]:c),marker:t===-1?``:e.slice(t),head:`${r}${i}${a}${o}${s}`,open:l?.[1]??``,close:l?.[3]??``}}function N({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 we(e){return e.find(({op:e,version:t})=>be.has(e)&&xe.test(t))}function Te(e){let t=[];for(let n of e){if(typeof n!=`string`)continue;let e=Ce(n);if(!e?.specifiers)continue;let r=we(e.specifiers);r&&t.push({name:e.name,version:r.version,spec:n})}return t}const Ee=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],De=[`node`,`deno`,`bun`],P=[`.github`,`.gitea`,`.forgejo`],Oe={"pnpm-workspace.yaml":`npm`,"package.json":`npm`,"pyproject.toml":`pypi`,"go.work":`go`,"go.mod":`go`,"Cargo.toml":`cargo`},ke=[`project.dependencies`,`project.optional-dependencies.*`,`dependency-groups.*`],Ae=[`deps`,`indirect`,`replace`,`tool`],je=[`dependencies`,`dev-dependencies`,`build-dependencies`,`workspace.dependencies`],Me=[`target.*.dependencies`,`target.*.dev-dependencies`,`target.*.build-dependencies`];function Ne(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 Pe(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 F(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 Ie(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 Le={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function Re(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Le[n.toLowerCase()];if(r)return Number(e)*r}if(!/^\d+(?:\.\d+)?$/.test(e))throw Error(`Invalid cooldown value: ${e}`);return Number(e)}function ze(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 Be(e){try{return await e}catch{return null}}const L=RegExp.escape?e=>RegExp.escape(e):e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);function Ve(e){return Array.from(e).sort((e,t)=>t.length-e.length).map(L).join(`|`)}function He(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 Ue(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 We(e,t,n){let r=e.get(t);r?r.push(n):e.set(t,[n])}function R(e,t,n){let r=e.get(t);if(r!==void 0||e.has(t))return r;let i=n();return e.set(t,i),i}function Ge(e){let t=new Map;return n=>R(t,n,()=>e(n))}const Ke=/^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*))?(?:\+[a-zA-Z0-9._-]+)?$/,qe=new Map;function z(e){return typeof e==`string`?R(qe,e,()=>{let t=Ke.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 Je(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 Ye(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=Je(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function Xe(e){return z(e)?.version??null}function V(e){return z(e)}const Ze=new Map,Qe=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function H(e){return typeof e==`string`?R(Ze,e,()=>{let t=Qe.exec(e);return t?{version:`${t[1]}.${t[2]||`0`}.${t[3]||`0`}`}:null}):null}function $e(e,t){let n=z(e),r=z(t);return!n||!r?null:et(n,r)}function et(e,t){if(e.version===t.version)return null;let n=Ye(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 tt(e,t){let n=z(e),r=z(t);return n&&r?Ye(n,r):null}function U(e,t){return(tt(e,t)??-1)>0}function nt(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 rt(e,t){let n=Ye(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 W(e,t,n){return`${e}.${t}.${n}-0`}function it(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?W(o+1,0,0):t===`~`?W(o,s+1,0):o===0?i!==void 0&&s===0?W(0,0,c+1):W(0,s+1,0):W(o+1,0,0),`>=${o}.${s}.${c}${l} <${u}`})}function at(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?`<${W(p+1,0,0)}`:`<${W(p,Number(o)+1,0)}`:`<=${p}.${Number(o)}.${Number(s)}${c||``}`,`>=${l}.${u}.${d}${f} ${m}`})}function ot(e,t,n,r){return!e||e===`=`?r?`>=${t}.0.0 <${W(t+1,0,0)}`:`>=${t}.${n}.0 <${W(t,n+1,0)}`:e===`>`?r?`>=${t+1}.0.0`:`>=${t}.${n+1}.0`:e===`<=`?r?`<${W(t+1,0,0)}`:`<${W(t,n+1,0)}`:e===`<`?r?`<${t}.0.0-0`:`<${t}.${n}.0-0`:r?`>=${t}.0.0`:`>=${t}.${n}.0`}function st(e){return/^\s*[*xX]\s*$/.test(e)?`>=0.0.0`:(e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)\.[xX*]/g,(e,t,n,r)=>ot(t,Number(n),Number(r),!1)),e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.[xX*](?:\.[xX*])?/g,(e,t,n)=>ot(t,Number(n),0,!0)),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)(?=\s|$)/g,(e,t,n,r,i)=>`${t}${ot(n,Number(r),Number(i),!1)}`),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)(?=\s|$)/g,(e,t,n,r)=>`${t}${ot(n,Number(r),0,!0)}`),e)}const ct=new Map;function lt(e){return R(ct,e,()=>{let t=e.split(`||`).map(e=>e.trim()),n=[];for(let e of t){if(!e){n.push([]);continue}e=at(e),e=it(e),e=st(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=nt(n);if(!e)return null;t.push(e)}if(t.length===0)return null;n.push(t)}return n.length?n:null})}function ut(e,t){return t.some(t=>!rt(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 G(e,t){let n=z(e);if(!n)return!1;let r=lt(t);if(!r)return!1;for(let e of r)if(e.length===0||ut(n,e))return!0;return!1}function K(e){return typeof e==`string`&&lt(e)?e:null}const dt=`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]+)*))?`,ft=RegExp(`^${dt}$`,`i`),pt=RegExp(dt,`i`),mt={alpha:`a`,beta:`b`,c:`rc`,pre:`rc`,preview:`rc`},ht=new Map;function q(e){return typeof e==`string`?R(ht,e,()=>{let t=ft.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?[mt[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 gt(e){return q(e)??q(pt.exec(e)?.[0]??``)}const _t=e=>!!(e.pre||e.dev);function vt(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 yt(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?vt(e.local,t.local):a<o?-1:1}function bt(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 xt(e,t){let n=yt(e,t);if(n===0)return null;let r=bt(e,t);return _t(n>0?e:t)?r?`pre${r}`:`prerelease`:r??`patch`}const St=/\d+\.\d+\.\d+(?:-[a-zA-Z0-9_.-]+)?/,Ct={parse:V,parseRange:e=>V(St.exec(e)?.[0]??``)??V(H(e)?.version??``),compare:Ye,diff:et,isPrerelease:e=>e.prerelease.length>0,isRangePrerelease:e=>/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e),satisfiesRange:(e,t)=>G(e.version,t)},wt=new Map;function Tt(e){return R(wt,e,()=>{let t=e.trim().replace(/^v/i,``);return(V(t)??V(t.replace(/^(\d+\.\d+)(-.+)$/,`$1.0$2`)))||(/^\d/.test(t)?V(H(t)?.version??``):null)})}const Et={...Ct,parse:Tt,parseRange:Tt,isRangePrerelease:e=>!!Tt(e)?.prerelease.length},Dt={parse:q,parseRange:gt,compare:yt,diff:xt,isPrerelease:_t,isRangePrerelease:e=>{let t=gt(e);return!!(t&&_t(t))},satisfiesRange:({release:e},t)=>G(`${e[0]??0}.${e[1]??0}.${e[2]??0}`,t)},Ot=[[1e3,6e4,`sec`,`s`,`second`],[6e4,36e5,`min`,`m`,`minute`],[36e5,864e5,`hour`,`h`],[864e5,6048e5,`day`,`d`],[6048e5,2628e6,`week`,`w`],[2628e6,31536e6,`month`,`mo`],[31536e6,1/0,`year`,`y`]],kt={"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`};function At(e){return typeof e==`number`?e:e instanceof Date?e.getTime():Date.parse(e)}function jt(e,{now:t,noAffix:n=!1,times:r=Ot,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=kt,longUnits:l=!1,shortUnits:u=!1}={}){let d=(t===void 0?Date.now():At(t))-At(e);if(Number.isNaN(d))return o||String(e);let f=d<0;if(f&&(d=-d),d<i)return a;let p=``;for(let e=0,t=r.length;e<t;e++){let t=r[e];if(d>=t[1])continue;let n=Math.trunc(d/t[0]);p=u?`${n}${t[3]||t[2]}`:`${n} ${l&&t[4]||t[2]}${n>1?`s`:``}`;break}let m=n?p:f?`in ${p}`:`${p} ago`;return s?c[m]??m:m}function Mt(e){return new Promise((t,n)=>{g(e,`utf8`,(e,r)=>e?n(e):t(r))})}const Nt=u(r===`win32`?t.LOCALAPPDATA||u(ie(),`AppData`,`Local`):t.XDG_CACHE_HOME||u(ie(),`.cache`),`updates`);let Pt=null;const Ft=new Map;function It(e){return R(Ft,e,()=>re(`sha256`).update(e).digest(`hex`).substring(0,16))}async function Lt(e){try{let t=await Mt(u(Nt,`${It(e)}.cache`)),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 Rt=new Set;let zt=0;function Bt(e,t,r){let i=(async()=>{try{await(Pt??=ne(Nt,{recursive:!0}))}catch{Pt=null;return}try{let i=u(Nt,`${It(e)}.cache`),a=`${i}.${n}-${zt++}.tmp`;await w(a,`${t}\n${r}`),await C(a,i)}catch{}})();Rt.add(i),(async()=>{await i,Rt.delete(i)})()}async function Vt(){for(;Rt.size;)await Promise.all(Rt)}var Ht=`18.0.0`;function J(e,t,n){if(!t||!n)return!0;let r=e?Date.parse(e):NaN;return!Number.isNaN(r)&&(n-r)/864e5>=t}const Ut=Ht,Wt=5e3,Gt=2500,Kt=`https://api.github.com`,Y={registry:`https://registry.npmjs.org`,jsrapi:`https://jsr.io`,forgeapi:Kt,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,qt=e=>e.endsWith(`/`)?e.slice(0,-1):e;function Jt(e,t){return{headers:{"user-agent":`updates/${Ut}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}const Yt=new Set([`ECONNRESET`,`ECONNREFUSED`,`ETIMEDOUT`,`EAI_AGAIN`,`EPIPE`,`UND_ERR_SOCKET`,`UND_ERR_CONNECT_TIMEOUT`,`UND_ERR_HEADERS_TIMEOUT`,`UND_ERR_BODY_TIMEOUT`]);function Xt(e){if(e?.name===`TimeoutError`||e?.name===`AbortError`)return!0;let t=e?.code??e?.cause?.code;return typeof t==`string`&&Yt.has(t)}async function Zt(e,t){try{return await fetch(e,t)}catch(t){let n=Error(`Failed to fetch ${e}${t?.message?`: ${t.message}`:``}`,{cause:t});throw n.transient=Xt(t),n}}async function Qt(e,t,n={}){let r=dn(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 $t(e){return typeof e.text==`function`?e.text():JSON.stringify(await e.json())}const en=e=>t=>JSON.stringify(e(JSON.parse(t)));function tn(e,t){if(!t||e.length<16384)return e;try{return t(e)}catch{return e}}async function nn(e,t,n,r,i){let a=tn(await $t(t),r);return i&&!n.noCache&&Bt(e,i,a),{body:a,res:t}}async function rn(e,t,n={},r,i=e){let a=t.noCache?null:await Lt(i),o=n.headers,s=a?{...o,"if-none-match":a.etag}:o,c=await Qt(t,e,{...n,headers:s});return c?c.status===304&&a?{body:a.body,res:c}:c.ok?nn(i,c,t,r,c.headers?.get?.(`etag`)):{res:c}:{res:void 0}}async function an(e,t,n={},r){if(!t.noCache){let t=await Lt(e);if(t)return{body:t.body}}let i=await Qt(t,e,n);return i?i.ok?nn(e,i,t,r,`immutable`):{res:i}:{res:void 0}}function on(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 sn=new T;function cn(e){let t=0,n=0,r=[];return async i=>{if(sn.getStore())return i();t<e?t++:await new Promise(e=>{r.push(e)});try{return await sn.run(!0,i)}finally{n<r.length?(r[n++](),n===r.length&&(r=[],n=0)):t--}}}const ln=e=>Math.max(e.concurrency||25,1),un=new WeakMap;function dn(e){let t=un.get(e);return t||un.set(e,t=cn(ln(e))),t}function fn(e,t=Ct){let n=t.parse(e);return!!(n&&t.isPrerelease(n))}function pn(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 mn=new WeakMap,hn=new WeakMap;function gn(e,t,n,r){return t?{effectiveUsePre:!0,effectiveSemvers:pn(mn,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:pn(hn,n,e=>e.add(`prerelease`))}:{effectiveUsePre:!1,effectiveSemvers:n}}function _n(e,t,{useRel:n,allowDowngrade:r,name:i},a=Ct){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?Pe(i,r):!0}function vn(e){return H(e)?.version??``}function yn(e,t,{range:n,semvers:r,usePre:i,useRel:a,pinnedRange:o,pinNoDowngrade:s,cooldownDays:c,now:l,getVersionDate:u,versioning:d=Ct}){let f=d.parseRange(n);if(!f)return null;let{effectiveUsePre:p,effectiveSemvers:m}=gn(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&&!J(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 bn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function xn(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`?Dt:Ct,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=vn(p);if(!t)return null;let{effectiveUsePre:n,effectiveSemvers:r}=gn(p,a,o,f),c=e=>fn(e)&&(!n||i),m={useRel:i,allowDowngrade:d,name:e.name},h=e.old||p,g=(e,n)=>{let i=vn(e);if(!i||bn(e)||c(e))return!1;let a=$e(h,e)??$e(t,i);return!a||!r.has(a)||!_n(h,e,m)||!J(n,l,u)?!1:!s||G(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 _=yn(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 _&&_n(p,_,b,f)?_:null;let x=f.diff(n,t);return x&&x!==`prerelease`&&!o.has(x.replace(/^pre/,``))||i&&c?_:f.compare(t,n)<0&&!c?_n(p,h,b,f)?h:r&&f.compare(r,n)>0?_:null:!v&&c&&!a||s&&!f.satisfiesRange(t,s)||l&&u&&!J(g?g(h):e.time?.[h],l,u)?_:h}}function Sn(e){try{return new URL(e).host}catch{return``}}function Cn(e){for(let n of F(t.UPDATES_FORGE_TOKENS??``)){let t=n.lastIndexOf(`:`);if(t>0&&n.slice(0,t)===e)return n.slice(t+1)}return null}let wn;async function Tn(){let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]);return t(e)}function En(){return wn??=Tn()}const Dn=[`UPDATES_GITHUB_API_TOKEN`,`GITHUB_API_TOKEN`,`GH_TOKEN`,`GITHUB_TOKEN`,`HOMEBREW_GITHUB_API_TOKEN`];function On(){return Array.from(new Set(Dn.map(e=>t[e]).filter(e=>!!e)))}let kn;function An(){let e=On();return e.length?Promise.resolve(e):kn??=(async()=>{try{let{stdout:e}=await(await En())(`gh`,[`auth`,`token`],{encoding:`utf8`,timeout:5e3}),t=e.trim();return t?[t]:[]}catch{return[]}})()}const jn=/^http\.(\S+)\/\.extraheader AUTHORIZATION:\s*basic\s+(\S+)$/i;function Mn(e){let t=new Map;for(let n of e.split(/\r?\n/)){let e=jn.exec(n);if(!e)continue;let r=Sn(e[1]),i=E.from(e[2],`base64`).toString(`utf8`),a=i.slice(i.indexOf(`:`)+1);r&&a&&!t.has(r)&&t.set(r,a)}return t}let Nn;function Pn(){return Nn??=(async()=>{try{let{stdout:e}=await(await En())(`git`,[`config`,`--get-regexp`,`^http\\..*\\.extraheader$`],{encoding:`utf8`,timeout:5e3});return Mn(e)}catch{return new Map}})()}const Fn=new Map;async function In(e,t){if(!e)return[];let n=Cn(e);if(n)return[n];let r=e===`api.github.com`?`github.com`:e,i=r===`github.com`||e===Sn(t),[a,o]=await Promise.all([i?An():[],Pn()]),s=o.get(r);return Array.from(new Set(s?[...a,s]:a))}var Ln=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 Rn(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 zn(e,t,n,r){if(e.status>=500)throw new Ln(`server`,n,`Received ${e.status}${e.statusText?` ${e.statusText}`:``} from ${t}`,{status:e.status});let i=await Rn(e);if(i===null)return e;throw new Ln(`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 Bn(e,t,n){let r=Sn(e),i=await In(r,t.forgeApiUrl),a=e=>{let t=Jt(`Bearer`,e);return n&&(t.headers={...t.headers,...n}),t},o=async n=>zn(await Qt(t,e,a(n)),e,r,i.length>0);try{if(!i.length)return await o();let e=Fn.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 Fn.set(r,e),t}return await o()}catch(e){throw e instanceof Ln?e:new Ln(`network`,r,e?.message??String(e),{cause:e})}}function Vn(e,t){let n=X(t);if(!Xe(n))return null;let r=``,i=``;for(let t of e){let e=X(t);Xe(e)&&(!r||U(e,i))&&(r=t,i=e)}return r&&U(i,n)?r:null}function Hn(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 Un=/^(?=.*[a-f])[0-9a-f]{6,}$/i;function Wn(e){return/^v?\d+(?:\.\d+)*(?:[-+][\w.-]+)?$/.test(e)}function Gn(e){let t=e?.commit??e;return t?.committer?.date||t?.author?.date||``}function Kn(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function qn(e,t,n){let r=t.noCache?null:await Lt(e),i=await Bn(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&&Bt(e,o,a),a}async function Jn(e,t){let n=await qn(e,t,async e=>JSON.stringify({link:e.headers.get(`link`)||``,tags:Kn(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 Yn(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 Jn(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=ln(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)=>Jn(a(t+n),r)));for(let t of e)s=l(t)}return o}catch(e){if(e instanceof Ln)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 Xn=e=>Number(e[0])>=2e7;function Zn(e,t){let n=X(e).split(`.`),r=X(t).split(`.`);return n.length<r.length?!1:!Xn(n)||Xn(r)}function Qn(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 $n(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}const er=[`repository`,`Repository`,`repo`,`Repo`,`source`,`Source`,`source code`,`Source code`,`Source Code`,`homepage`,`Homepage`];function tr({repository:e,homepage:t,info:n},r,i){if(n){let t=n.project_urls;for(let n of er)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=Hn(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a+=`/${$n(a)}/${e.directory}`)),a||t||``)}const nr={"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 rr(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.filter(e=>typeof e==`string`).flatMap(F)):typeof e==`string`?new Set([e]):typeof e==`boolean`&&e}function ir(e){for(let[t,{short:n}]of Object.entries(nr))if(t===e||n===e)return t;return``}function ar(e){return new Set(e.map(He))}function or(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(F):[]}function sr(e){for(let[t,n]of Object.entries(e??{}))if(!K(n))throw Error(`Invalid pin range for ${t}: ${n}`)}function cr(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 sr(t),t}function lr(e){return typeof e==`boolean`?e:!Array.isArray(e)||!e.length?!1:ar(e)}async function ur(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 dr=Ge(e=>Ue(e,ur));async function fr(e,t={}){let n=await dr(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])),sr(c.pin),c}function pr(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 mr(e){try{return pr(_(e,`utf-8`))}catch{return}}function hr(e,t){let n=t;for(;;){let t=u(n,e);try{if(b(t).isFile())return t}catch{}let r=c(n);if(r===n)break;n=r}}function gr(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 _r(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=mr(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(hr(`.${n}rc`,a));let f=gr(`${n}_`);return f.config&&d(f.config),Object.assign({},...c,f,l.length?{configs:l,config:l[l.length-1]}:void 0)}const vr=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,yr=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,br=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,xr=/(@[^/]+\/)?([^/]+)/g,Sr=/^(?:@[^/]+\/)?[^@]+/;function Cr(e){let t=e.match(xr),n=t?t[t.length-1]:e;return Sr.exec(n)?.[0]??n}const wr=Y.registry,Tr=new Map,Er=new Map;function Dr(e){return R(Tr,e??``,()=>_r(`npm`,{registry:wr},e))}function Or(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function kr(e,t){let n=n=>t[`${e}:${n}`]||t[`${e}/:${n}`],r=n(`_authToken`);if(r)return{token:Or(r),type:`Bearer`};let i=n(`username`),a=n(`_password`);if(i&&a){let e=Buffer.from(Or(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:Or(o),type:`Basic`}}function Ar(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=kr(`//${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:Or(i),type:`Basic`}}function jr(e,t){let n=t[`${e}:registry`]||``;return!n||n.endsWith(`/`)?n:`${n}/`}function Mr(e,t,n){let r=Dr(n),i=e.startsWith(`@`)?e.split(`/`)[0]:``;return R(Er,`${n??``}${i}:${t}`,()=>{let e,n=i&&jr(i,r);if(n)try{let i=qt(n);i!==t&&(e={auth:Ar(i,r),registry:i})}catch{}return e??{auth:Ar(t,r),registry:t}})}function Nr(e,t,n,r){let i=qt(typeof n.registry==`string`&&n.registry||t.registry||Dr(r).registry||wr);return{...Mr(e,i,r),originalRegistry:i}}function Pr(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const Fr=new Map,Ir=new Map,Lr=new Map;function Rr(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 zr(e,t,n,r,i,a){let{auth:o,registry:s}=Nr(e,n,r,a),c=Pr(s,t===`resolutions`?Cr(e):e),l=r.needsDates?`${c}\0dates`:c;return[await on(Fr,l,async()=>{let t=Jt(o?.type,o?.token);r.needsDates||(t.headers={...t.headers,accept:`application/vnd.npm.install-v1+json`});let n=await rn(c,i,t,en(Rr),l);return`body`in n||Z(n.res,c,e,s),JSON.parse(n.body)}),s]}async function Br(e,t,n,r,i,a){let{auth:o,registry:s}=Nr(e,n,r,a),c=Pr(s,e,t);return on(Ir,c,async()=>{try{let n=Jt(o?.type,o?.token),r=await an(c,i,n,en(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=Pr(s,e);return l||=(await Fr.get(d))?.time?.[t]||``,l||=(await Be(on(Lr,d,async()=>{let e=await Qt(i,d,n);return e?.ok?await e.json():null})))?.time?.[t]||``,{repository:a.repository,homepage:a.homepage,date:l}}catch{return{}}})}function Vr(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Hr(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function Ur(e){return e.startsWith(`catalog:`)}const Wr=/^npm:((?:@[^/@]+\/)?[^@/][^@]*)@(.+)$/;function Gr(e){let t=Wr.exec(e);return t&&K(t[2])?{name:t[1],range:t[2]}:null}const Kr=[/^npm:@jsr\/([^_]+)__([^@]+)@(.+)$/,/^jsr:@([^/]+)\/([^@]+)@(.+)$/],qr=/^@([^/]+)\/(.+)$/;function Jr(e,t){for(let t of Kr){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=qr.exec(t??``);if(n)return{scope:n[1],name:n[2],version:e.substring(4)}}return{scope:null,name:null,version:``}}async function Yr(e,t){if(!qr.test(e))throw Error(`Invalid JSR package name: ${e}`);let n=`${t.jsrApiUrl}/${e}/meta.json`,r=await rn(n,t,{headers:{"accept-encoding":`gzip, deflate, br`}},en(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 Xr=new Set([32,9,10,13]);function Zr(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 Qr(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(;Xr.has(e.charCodeAt(t));)t++;if(e.charCodeAt(t)===58){for(t++;Xr.has(e.charCodeAt(t));)t++;if(e.startsWith(r,t))return t}}return-1}function $r(e,t){let n;try{n=JSON.parse(e)}catch{return e}let r=Zr(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),_=Qr(e,i.get(t)??m.start,h,g);(_===-1||_>=m.end)&&(_=Qr(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 ei=String.raw`[<>]=?|[\^~=]`,ti=new RegExp(String.raw`^(${ei})?(\s*)(v?)((?:\d+|[xX*])(?:\.(?:\d+|[xX*]))*)(-[0-9A-Za-z.-]+)?$`),ni=RegExp(`^(?:${ei})$`),ri=/^[xX*]$/,ii=/\+[0-9A-Za-z.-]+/g,ai=/\|\||[\dxX*]\s+\S/;function oi(e){let t=[];for(let n of e.trim().replaceAll(`||`,` || `).split(/\s+/))t.length&&ni.test(t[t.length-1])?t[t.length-1]+=` ${n}`:t.push(n);return t}function si(e,t){let n=ti.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}=V(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)=>ri.test(e)?e:l[t]??`0`).join(`.`)}`:`${r}${i}${a}${t}`}function ci(e,t){return e===`peerDependencies`||ai.test(t)}function li(e,t){if(G(t,e))return e;let n=oi(e),r=n[n.length-1];if(!r.startsWith(`<`)&&n[n.length-2]!==`-`){let i=si(r,t);return n.length>1&&r.startsWith(`>`)||i===r?e:`${e} || ${i}`}return n[n.length-1]=si(r,t),n.join(` `)}function ui(e,t,n,r){let i=(n||e).replace(ii,``),a=ci(r,i)?li(i,t):si(i,t);return G(t,a)?a:i}function Q(e){if(/[xX*]/.test(e))return e;let t=e.match(br);return t?.length===1?e.replace(br,vn(t[0])):e}async function di(e,t,n){let r=await qn(`${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 fi(e,t,n,r){return(await Yn(r.forgeApiUrl,e,t,r,[n])).map(e=>e.name)}async function pi(e,t,n){let r=t.old.replace(vr,``),[,i,a,o]=yr.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(Un.test(o)){let{hash:t,commit:r}=await di(i,a,n);if(!t)return null;let c=Gn(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=Vn(await fi(i,a,o,n),o);if(t)return{key:e,newRange:s(t),user:i,repo:a,oldRef:o,newRef:t}}return null}function mi(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 hi(e,t){let n=`${t.pypiApiUrl}/pypi/${e}/json`,r=await rn(n,t,{headers:{"accept-encoding":`gzip, deflate, br`}},en(mi));if(`body`in r)return[JSON.parse(r.body),null];Z(r.res,n,e,t.pypiApiUrl)}function gi(e,{op:t,version:n}){if(t===`===`)return n===e.version;if(n.endsWith(`.*`)){let r=q(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=q(n);if(!r)return!1;let i=yt(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 _i(e,t){let n=e.release.length-1;return e.release.map((e,r)=>(t.release[r]??0)+ +(r===n)).join(`.`)}function vi(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 yi(e,t,n){let r=Ce(e),i=r?.specifiers,a=q(t),o=q(n);if(!r||!i||!a||!o)return null;let s=we(i);if(s?.version!==t)return null;for(let e of i){if(e===s){e.version=e.op===`~=`?vi(a,o):n;continue}if(gi(o,e))continue;let t=q(e.version);e.op===`<`&&t?e.version=_i(t,o):e.op===`<=`&&(e.version=n)}return i.some(e=>!gi(o,e))?null:N(r,i)}function bi(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}${yi(n,o,a)??n}`)}return n}function xi(e){let t=e.includes(`:/`)||e.startsWith(`/`);return qt(!t&&/[.:/]/.test(e)?`https://${e}`:e)}function Si(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:xi(r),fallback:i})}}return t}function Ci(e){if(typeof e==`string`)return[{url:qt(e),fallback:`,`}];let n=Si(t.GOPROXY||`${Y.goproxy},direct`);return n.length?n:[{url:Y.goproxy,fallback:`,`}]}function wi(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim().replace(/\/+$/,``)).filter(Boolean)}const Ti=new Map;function Ei(e){return R(Ti,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 Di(e,t){return t.some(t=>Ei(t).test(e))}function Oi(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}const ki=/\/v(\d+)$/,Ai=/^gopkg\.in\/.*?\.v(\d+)$/;function ji(e){let t=Ai.exec(e)??ki.exec(e);return t?Number.parseInt(t[1]):1}function Mi(e,t){if(e.startsWith(`gopkg.in/`))return`${e.replace(/\.v\d+$/,``)}.v${t}`;let n=e.replace(ki,``);return t<=1?n:`${n}/v${t}`}function Ni(e,t){if(t.includes(`+incompatible`))return e;let n=Number.parseInt(X(t).split(`.`)[0]);return Number.isNaN(n)||n===ji(e)?e:Mi(e,n)}const Pi=/^require\s*\(/,Fi=/^replace\s*\(/,Ii=/^tool\s*\(/,Li=/^use\s*\(/,Ri=/^replace\s+/,zi=/^(\S+)\s+(v\S+)/,Bi=/^require\s+(\S+)\s+(v\S+)/,Vi=/^tool\s+(\S+)/,Hi=/^use\s+(\S+)/,Ui=/^(\S+)/,Wi=/^(\S+)(?:\s+(v\S+))?\s+=>\s+(\S+)(?:\s+(v\S+))?/,Gi=/^replace\s+(\S+)(?:\s+(v\S+))?\s+=>\s+(\S+)(?:\s+(v\S+))?/,Ki=/^"(.*)"$/,qi=e=>Ki.exec(e)?.[1]??e;function Ji(e){return e.startsWith(`./`)||e.startsWith(`/`)||e.startsWith(`../`)}function Yi(e,t){let n=(t?Wi:Gi).exec(e);if(!n)return null;let[,r,i,a,o]=n;return{origModule:qi(r),origVersion:i??``,targetModule:qi(a),targetVersion:o??``}}function Xi(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||bn(n)}async function Zi(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 Qi(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 $i(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(Pi.test(i)){c=!0;continue}if(Fi.test(i)){l=!0;continue}if(Ii.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(i.startsWith(`//`))continue;if(u){i&&o.push(qi(i));continue}let s=Vi.exec(i);if(s){o.push(qi(s[1]));continue}let d=i.includes(`// indirect`);if(l||Ri.test(i)){let e=Yi(i,l);e&&(e.targetVersion&&!Ji(e.targetModule)&&(r[e.targetModule]=e.targetVersion),e.origVersion||a.add(e.origModule));continue}let f=(c?zi:Bi).exec(i);f&&((d?n:t)[qi(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 ea(e,n,r,i,a){let o=ji(e),s=async(e,n)=>{try{let{stdout:r}=await(await En())(`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=>Be(s(e,a.goProbeTimeout)),l=Xi(e,n,r),[u,d]=await Promise.all([s(e,a.fetchTimeout),l?null:c(Mi(e,o+1))]);return Qi(e,r,await Zi(o,d,t=>c(Mi(e,t))),u.Version,u.Time)}const ta={"accept-encoding":`gzip, deflate, br`},na=e=>e===404||e===410;async function ra(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 ia=async(e,t,n)=>{let r=`${t}/${Oi(n)}/@latest`,i=await e(r);if(i.ok)return ra(i,r,n);if(na(i.status))return null;Z(i,r,n,t)},aa=new WeakMap;function oa(e,t,n,r){return on(R(aa,e,()=>new Map),`${n}/${r}`,()=>ia(t,n,r))}function sa(e,t){let n=fn(e);return n===fn(t)?U(e,t):!n}function ca(e,t=0){let n=null;for(let r of e.split(`
8
- `)){let[e,i]=r.trim().split(/\s+/);!e||!Xe(e)||t&&Number.parseInt(X(e))!==t||n&&!sa(e,n.Version)||(n={Version:e,Time:i??``})}return n}function la(e){return ki.test(e)||Ai.test(e)?ji(e):0}const ua=async(e,t,n)=>{let r=Oi(n),i=`${t}/${r}/@v/list`,a=await e(i);if(!a.ok){if(na(a.status))return null;Z(a,i,n,t)}let o=ca(await a.text(),la(n));if(!o)return null;if(o.Time)return{...o,path:n};let s=`${t}/${r}/@v/${Oi(o.Version)}.info`;try{let t=await e(s);if(t.ok)return ra(t,s,n)}catch{}return{...o,path:n}};async function da(e,t,n,r,i){let a=ji(t),o=(e,t,n)=>oa(i,e,t,n),s=e=>Qt(i,e,{headers:ta}),c=e=>i.doFetch(e,{signal:AbortSignal.timeout(i.goProbeTimeout),headers:ta}),l=t=>async n=>{try{return await t(c,e,n)}catch{return null}},u=Xi(t,n,r),d=Mi(t,a+1),[f,p]=await Promise.all([o(s,e,t),u?null:l(o)(d)]),m=f??await ua(s,e,t);if(!m)return null;let h=l(f?o:ua);return Qi(t,r,await Zi(a,u||f?p:await l(ua)(d),e=>h(Mi(t,e))),m.Version,m.Time)}async function fa(e,t,n,r,i,a){if(Di(e,a))return ea(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 ea(e,t,n,r,i);try{let r=await da(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 pa=(e,t)=>`("?)${L(e)}\\${t}`;function ma(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=Ni(s,l);if(o===`replace`){if(u!==s){let e=n;if(n=n.replace(RegExp(`(^\\s*(?:replace\\s+)?)${pa(s,2)}(\\s+=>\\s+)${pa(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+)?)${pa(s,2)}(\\s+)v\\S+(?=\\s*(?://.*)?$)`,`gm`),`$1$2${u}$2$3v${l}`),n!==e&&(r[s]=u)}}n=n.replace(RegExp(`(=>\\s+)${pa(s,2)}(\\s+)v${L(c)}`,`g`),`$1$2${u}$2$3v${l}`);continue}u!==s&&o!==`indirect`?(n=n.replace(RegExp(`${pa(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(`(${pa(s,2)}) +v${L(c)}`,`g`),`$1 v${l}`)}return[n,r]}function ha(e,t,n){let r=Object.entries(t);if(!r.length)return;let i=new Map(r),a=RegExp(`"(${Ve(i.keys())})(/|")`,`g`),o=m(`**/*.go`,{cwd:e});for(let t of o){let r=u(e,t),o=_(r,`utf8`),s=o.replace(a,(e,t,n)=>`"${i.get(t)}${n}`);s!==o&&n(r,s)}}function ga(e){let t=[],n={},r=e.split(/\r?\n/),i=!1,a=!1;for(let e of r){let r=e.trim();if(Li.test(r)){i=!0;continue}if(Fi.test(r)){a=!0;continue}if(r===`)`){i=!1,a=!1;continue}if(i){let e=Ui.exec(r);e&&!r.startsWith(`//`)&&t.push(e[1]);continue}let o=Hi.exec(r);if(o){t.push(o[1]);continue}if(a||Ri.test(r)){let e=Yi(r,a);e?.targetVersion&&!Ji(e.targetModule)&&(n[e.targetModule]=e.targetVersion)}}return{use:t,replace:n}}function _a(e){let t=`https://${va(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[,e,i,...a]=r;return n.pathname=`/${e}/${i}/${$n(t)}/${a.join(`/`)}`,n.href}return t}function va(e){return ki.test(e)?c(e):e}function ya(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}function ba(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:Un.test(o)}}function xa(e,t){return e?e===`github.com`?Kt:`https://${e}/api/v1`:t}async function Sa(e,t,n,r,i){let a=`${e}/repos/${t}/${n}/git/commits/${r}`;if(!i.noCache){let e=await Lt(a);if(e)return e.body}try{let e=await Bn(a,i);if(e.status===404)return``;if(!e.ok)return;let t=Gn(await e.json());return t&&!i.noCache&&Bt(a,`immutable`,t),t}catch(e){if(e instanceof Ln)throw e;return}}function Ca(e,t){return Qn(V(X(e))?.version??X(e),t)}const wa=/^(\s*(?:-\s*)?uses:\s*)([^\n]*)$/,Ta=/^\s*(?:(?:renovate\s*:\s*)?(?:pin\s+|tag\s*=\s*)?|ratchet:[\w-]+\/[.\w-]+)@?((?:[\w-]*[-/])?v?\d+(?:\.\d+(?:\.\d+)?)?(?:-[a-zA-Z0-9.]+)?)/;function Ea(e){let t=wa.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?Ta.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 Da=/^https?:\/\//;function Oa(e,t){let n=new Map(t.map(e=>[`${e.name}@${e.oldRef}`,e]));return e.split(`
9
- `).map(e=>{let t=Ea(e);if(!t)return e;let{prefix:r,quote:i,value:a,gap:o,comment:s,pinnedVersion:c,pinnedEnd:l}=t,u=Da.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 ka=RegExp(`(?:^|/)(?:${Ve(P)})/(?:workflows/[^/]+|(?:[^/]+/)*action)\\.ya?ml$`);function Aa(e){return ka.test(e.replace(/\\/g,`/`))}function ja(e){let t=new Set;try{for(let n of v(u(e,`workflows`)))/\.ya?ml$/.test(n)&&t.add(f(u(e,`workflows`,n)))}catch{}try{for(let n of v(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 Ma=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,Na=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gim,Pa=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,Fa=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,Ia=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm,La=/^(?:index\.)?docker\.io$/;function Ra(e){let t=e.split(`/`);return t.length>1&&La.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 za(e){let{registry:t,namespace:n,repo:r}=Ra(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 Ba(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||!Ma.test(r))return null;let{registry:i,namespace:a,repo:o}=Ra(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function Va(e){let t=Ma.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Ha(e,t){let n=Va(t);return n?Qn(e,n.version,n.suffix):t}function Ua(e,t){let n=[];for(let r of e.matchAll(t)){let e=Ba(r[1]);e&&n.push({ref:e,match:r[1]})}return n}const Wa=new WeakMap;function Ga(e,t,n){return on(R(Wa,n,()=>new Map),`${e}/${t}`,()=>Ja(e,t,n))}const Ka=new Set([401,403,404]),qa=e=>e.tag_last_pushed||e.last_updated||``;async function Ja(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 rn(i,n,o,en(s));return`body`in c?JSON.parse(c.body):(Ka.has(c.res?.status)||Z(c.res,i,`${e}/${t}`,n.dockerApiUrl),null)},l=e=>{for(let t of e?.results||[])r[t.name]=qa(t)},u=dn(n),d=await u(()=>c(1));if(!d)return r;l(d);let f=Math.min(Math.ceil((d.count||0)/100),100),p=ln(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 Ya(e,t,n,r){let i=`${r.dockerApiUrl}/v2/repositories/${e}/${t}/tags/${n}`;try{let e=await rn(i,r,{headers:{"accept-encoding":`gzip, deflate, br`}},en(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 Xa=/^\d?[02468]\.04$/;function Za(e,t){if(!Xa.test(e))return!1;let[n,r]=e.split(`.`);return t>=Date.UTC(2e3+Number(n),Number(r))}const Qa={ubuntu:Za};function $a(e,t,n=Date.now()){let r=Qa[e];return r?Object.fromEntries(Object.entries(t).filter(([e])=>{let t=Va(e)?.version;return!t||r(t,n)})):t}async function eo(e,t){let{registry:n,namespace:r,repo:i}=Ra(e);if(n)throw Error(`Non-Docker-Hub registries are not yet supported: ${n}`);return[{tags:$a(i,await Ga(r,i,t)),name:e},null]}function to(e,t,n,r,i,a){let o=Va(t);if(!o)return null;let s=H(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=Va(t);if(!e||e.suffix!==o.suffix||X(e.version).split(`.`).length!==c||!Zn(e.version,o.version))continue;let f=H(X(e.version))?.version;if(!f||a&&!G(f,a)||!J(s,r,i))continue;if(f===l){u&&Date.parse(s)>Date.parse(d)&&(u=t,d=s);continue}let p=$e(l,f);!p||!n.has(p)||U(f,l)&&(l=f,u=t,d=s)}if(!u||l===s)return null;let f=Ha(l,t),p=f in e?f:u;return p===t?null:{newTag:p,date:d}}const no=`(?![\\w.@+-])`;function ro(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=Ve(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 io(e,t){return ro(e,t,[e=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)(${e})${no}`,`gi`)])}function ao(e,t){return ro(e,t,[e=>RegExp(`(image:\\s*['"]?)(${e})${no}`,`g`)])}function oo(e,t){return ro(e,t,[e=>RegExp(`((?:container|image):\\s*['"]?)(${e})${no}`,`g`),e=>RegExp(`(uses:\\s*['"]?docker://)(${e})${no}`,`g`)])}const so=[`Dockerfile`,`compose.yml`,`compose.yaml`,`docker-compose.yml`,`docker-compose.yaml`];function co(e){return/^(?:docker-|compose).*\.ya?ml$/.test(e)}function lo(e){return/^Dockerfile(\..+)?$/.test(e)}function uo(e){return lo(e)||co(e)}function fo(e){return lo(e)?Na:Pa}function po(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const mo=[`Makefile`,`makefile`,`GNUmakefile`];function ho(e){return mo.includes(e)||e.endsWith(`.mk`)}const go=String.raw`^\s*[A-Za-z_][\w.]*\s*(?:::=|:=|\?=|\+=|=)\s*`,_o=RegExp(`${go}${String.raw`(\S+)@(v\d\S*)\s*$`}`),vo=/^[^/\s]+\.[^/\s]+\//;function yo(e){let t=e.indexOf(`#`);return t===-1?e:e.slice(0,t)}function bo(e){let t=[];for(let n of e.split(/\r?\n/)){let e=yo(n),r=_o.exec(e);if(!r)continue;let[,i,a]=r;vo.test(i)&&t.push({installPath:i,version:a})}return t}const xo=RegExp(`${go}${String.raw`(\S+)\s*$`}`),So=/@(sha256:[0-9a-f]{64})$/;function Co(e,t,n){return`${e}:${t}${n?`@${n}`:``}`}function wo(e){let t=null,n=e,r=So.exec(e);r&&(t=r[1],n=e.slice(0,r.index));let i=Ba(n.replace(/^docker\.io\//,``));return!i||i.registry||i.namespace===`library`?null:{writtenImage:n.slice(0,n.lastIndexOf(`:`)),ref:i,digest:t}}function To(e){let t=[];for(let n of e.split(/\r?\n/)){let e=xo.exec(yo(n));if(!e)continue;let r=wo(e[1]);r&&t.push(r)}return t}const Eo=/\/v(?:[2-9]|[1-9]\d+)(?=\/|$)/;function Do(e){let t=Eo.exec(e);return t?e.slice(0,t.index+t[0].length):null}async function Oo(e,n,r,i){return i?await Be((await En())(`go`,[`list`,`-m`,`-json`,`${e}@latest`],{timeout:r.fetchTimeout,cwd:n,env:t}))!==null:!!await oa(r,e=>Qt(r,e,{headers:ta}),r.goProxyUrl,e)}async function ko(e,t,n,r){let i=Do(e);if(i)return i;let a=n.goProxyUrl===`direct`||Di(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 Oo(e,t,n,!0))return e;return null}let c=await Promise.allSettled(s.map(e=>Oo(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 Ao(e,t,n,r,i,a){let o=await ko(e,n,r,i);if(!o)return null;let[s]=await fa(o,`tool`,X(t),n,r,i),c=xn(s,{...a,mode:`go`,range:X(t)});if(!c)return null;let l=s.newPath??Ni(o,c),u=`${l}${e.slice(o.length)}`,d=Qn(c,t);return u===e&&d===t?null:{newInstallPath:u,newVersion:d,date:s.Time??``,info:_a(l)}}async function jo(e,t,n){let{namespace:r,repo:i,fullImage:a,tag:o}=e.ref,[s]=await eo(a,t),c=to(s.tags,o,n.semvers,n.cooldownDays,n.now,n.pinnedRange);if(!c)return null;let l=null;return e.digest&&(l=await Ya(r,i,c.newTag,t),!l)?null:{newTag:c.newTag,newDigest:l,date:c.date,info:po(e.ref)}}function Mo(e,t){let n=new Map(t.map(({oldSpec:e,newSpec:t})=>[e,t]));if(!n.size)return e;let r=Ve(n.keys()),i=RegExp(`(?<![\\w./@:-])(${r})(?=[\\s#]|$)`,`g`);return e.replace(/^[^#\n]*/gm,e=>e.replace(i,e=>n.get(e)))}const No=new Map;function Po(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 Fo(e,t){let n=qt(e);return`${n===`https://crates.io`?`https://index.crates.io`:n}/${Po(t)}`}function Io(e){return e.split(`
3
+ `:``)+r[n]}e=n,f[p]=k(m+t+m)}else f[p]=k(u)}return t}function se(e){let t=e.slice(0,3);return t!==`"""`&&t!==`'''`||e.includes(t,3)?``:t}function k(e){if(e.startsWith(`[`)){let t=[],n=me(e,`]`);for(let r of de(e.slice(1,n<0?e.length:n))){let e=r.trim();e&&t.push(k(e))}return t}return e.startsWith(`{`)?le(e):e.startsWith(`"""`)?ge(e.slice(3,e.lastIndexOf(`"""`))):e.startsWith(`'''`)?e.slice(3,e.lastIndexOf(`'''`)):e.startsWith(`"`)?ge(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=D(),n=e.slice(1,e.lastIndexOf(`}`)).trim();if(!n)return t;for(let e of de(n)){let n=e.indexOf(`=`);if(n<0)continue;let r=e.slice(0,n).trim().replace(/^["']|["']$/g,``);t[r]=k(e.slice(n+1).trim())}return t}function ue(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 de(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 fe(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 pe(e){let t=j(e,`#`);return t<0?e:e.slice(0,t)}function*A(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 j(e,t){return A(e,t).next().value??-1}function me(e,t){let n=-1;for(let r of A(e,t))n=r;return n}function he(e,t){for(let n of t)(!(n in e)||typeof e[n]!=`object`||Array.isArray(e[n]))&&(e[n]=D()),e=e[n];return e}function ge(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 _e(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 ve=/^(\s*)([A-Za-z0-9][A-Za-z0-9._-]*)(\s*)((?:\[[^\]]*\])?)(\s*)(.*)$/,ye=/^(\s*\()([^)]*)(\)\s*)$/,M=/^(\s*)(===|==|!=|~=|<=|>=|<|>)(\s*)(\S+)(\s*)$/,be=new Set([`===`,`==`,`>=`,`~=`]),xe=/^v?\d[0-9a-z.!+_-]*$/i;function Se(e){let t=[];for(let n of e.split(`,`)){let e=M.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 Ce(e){let t=e.indexOf(`;`),n=ve.exec(t===-1?e:e.slice(0,t));if(!n)return null;let[,r,i,a,o,s,c]=n,l=ye.exec(c);return{name:i,extras:o,specifiers:Se(l?l[2]:c),marker:t===-1?``:e.slice(t),head:`${r}${i}${a}${o}${s}`,open:l?.[1]??``,close:l?.[3]??``}}function N({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 we(e){return e.find(({op:e,version:t})=>be.has(e)&&xe.test(t))}function Te(e){let t=[];for(let n of e){if(typeof n!=`string`)continue;let e=Ce(n);if(!e?.specifiers)continue;let r=we(e.specifiers);r&&t.push({name:e.name,version:r.version,spec:n})}return t}const Ee=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],De=[`node`,`deno`,`bun`],P=[`.github`,`.gitea`,`.forgejo`],F={"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 I(e){return e.split(`,`).filter(Boolean)}function Pe(){let e=new Date;return new Date(e.getTime()-e.getTimezoneOffset()*6e4).toISOString().replace(`T`,` `).slice(0,-1)}function Fe(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 L(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 R=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(R).join(`|`)}function Ve(e){return e instanceof RegExp?/[gy]/.test(e.flags)?new RegExp(e.source,e.flags.replace(/[gy]/g,``)):e:RegExp(`^${R(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 z(e,t,n){let r=e.get(t);if(r!==void 0||e.has(t))return r;let i=n();return e.set(t,i),i}function We(e){let t=new Map;return n=>z(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 B(e){return typeof e==`string`?z(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 V(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function Je(e,t){let n=V(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 Ye(e){return B(e)?.version??null}function H(e){return B(e)}const Xe=new Map,Ze=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function U(e){return typeof e==`string`?z(Xe,e,()=>{let t=Ze.exec(e);return t?{version:`${t[1]}.${t[2]||`0`}.${t[3]||`0`}`}:null}):null}function Qe(e,t){let n=B(e),r=B(t);return!n||!r?null:$e(n,r)}function $e(e,t){if(e.version===t.version)return null;let n=Je(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(V(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 et(e,t){let n=B(e),r=B(t);return n&&r?Je(n,r):null}function W(e,t){return(et(e,t)??-1)>0}function tt(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=B(`${n}.${t[3]??`0`}.${t[4]??`0`}${t[5]||``}`);return r?{op:t[1]||`=`,semver:r}:null}function nt(e,t){let n=Je(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 rt(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 it(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 at(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 ot(e){return/^\s*[*xX]\s*$/.test(e)?`>=0.0.0`:(e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)\.[xX*]/g,(e,t,n,r)=>at(t,Number(n),Number(r),!1)),e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.[xX*](?:\.[xX*])?/g,(e,t,n)=>at(t,Number(n),0,!0)),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)(?=\s|$)/g,(e,t,n,r,i)=>`${t}${at(n,Number(r),Number(i),!1)}`),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)(?=\s|$)/g,(e,t,n,r)=>`${t}${at(n,Number(r),0,!0)}`),e)}const st=new Map;function ct(e){return z(st,e,()=>{let t=e.split(`||`).map(e=>e.trim()),n=[];for(let e of t){if(!e){n.push([]);continue}e=it(e),e=rt(e),e=ot(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=tt(n);if(!e)return null;t.push(e)}if(t.length===0)return null;n.push(t)}return n.length?n:null})}function lt(e,t){return t.some(t=>!nt(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=B(e);if(!n)return!1;let r=ct(t);if(!r)return!1;for(let e of r)if(e.length===0||lt(n,e))return!0;return!1}function ut(e){return typeof e==`string`&&ct(e)?e:null}const dt=`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]+)*))?`,ft=RegExp(`^${dt}$`,`i`),pt=RegExp(dt,`i`),mt={alpha:`a`,beta:`b`,c:`rc`,pre:`rc`,preview:`rc`},ht=new Map;function q(e){return typeof e==`string`?z(ht,e,()=>{let t=ft.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?[mt[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 gt(e){return q(e)??q(pt.exec(e)?.[0]??``)}const _t=e=>!!(e.pre||e.dev);function vt(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 yt(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?vt(e.local,t.local):a<o?-1:1}function bt(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 xt(e,t){let n=yt(e,t);if(n===0)return null;let r=bt(e,t);return _t(n>0?e:t)?r?`pre${r}`:`prerelease`:r??`patch`}const St=/\d+\.\d+\.\d+(?:-[a-zA-Z0-9_.-]+)?/,Ct={parse:H,parseRange:e=>H(St.exec(e)?.[0]??``)??H(U(e)?.version??``),compare:Je,diff:$e,isPrerelease:e=>e.prerelease.length>0,isRangePrerelease:e=>/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e),satisfiesRange:(e,t)=>K(e.version,t)},wt=new Map;function Tt(e){return z(wt,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 Et={...Ct,parse:Tt,parseRange:Tt,isRangePrerelease:e=>!!Tt(e)?.prerelease.length},Dt={parse:q,parseRange:gt,compare:yt,diff:xt,isPrerelease:_t,isRangePrerelease:e=>{let t=gt(e);return!!(t&&_t(t))},satisfiesRange:({release:e},t)=>K(`${e[0]??0}.${e[1]??0}.${e[2]??0}`,t)},Ot=[[1e3,6e4,`sec`,`s`,`second`],[6e4,36e5,`min`,`m`,`minute`],[36e5,864e5,`hour`,`h`],[864e5,6048e5,`day`,`d`],[6048e5,2628e6,`week`,`w`],[2628e6,31536e6,`month`,`mo`],[31536e6,1/0,`year`,`y`]],kt={"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`};function At(e){return typeof e==`number`?e:e instanceof Date?e.getTime():Date.parse(e)}function jt(e,{now:t,noAffix:n=!1,times:r=Ot,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=kt,longUnits:l=!1,shortUnits:u=!1}={}){let d=(t===void 0?Date.now():At(t))-At(e);if(Number.isNaN(d))return o||String(e);let f=d<0;if(f&&(d=-d),d<i)return a;let p=``;for(let e=0,t=r.length;e<t;e++){let t=r[e];if(d>=t[1])continue;let n=Math.trunc(d/t[0]);p=u?`${n}${t[3]||t[2]}`:`${n} ${l&&t[4]||t[2]}${n>1?`s`:``}`;break}let m=n?p:f?`in ${p}`:`${p} ago`;return s?c[m]??m:m}function Mt(e){return new Promise((t,n)=>{h(e,`utf8`,(e,r)=>e?n(e):t(r))})}const Nt=u(r===`win32`?t.LOCALAPPDATA||u(T(),`AppData`,`Local`):t.XDG_CACHE_HOME||u(T(),`.cache`),`updates`);let Pt=null;const Ft=new Map;function It(e){return z(Ft,e,()=>w(`sha256`).update(e).digest(`hex`).substring(0,16))}async function Lt(e){try{let t=await Mt(u(Nt,`${It(e)}.cache`)),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 Rt=new Set;let zt=0;function Bt(e,t,r){let i=(async()=>{try{await(Pt??=ne(Nt,{recursive:!0}))}catch{Pt=null;return}try{let i=u(Nt,`${It(e)}.cache`),a=`${i}.${n}-${zt++}.tmp`;await C(a,`${t}\n${r}`),await S(a,i)}catch{}})();Rt.add(i),(async()=>{await i,Rt.delete(i)})()}async function Vt(){for(;Rt.size;)await Promise.all(Rt)}var Ht=`18.0.2`;function Ut(e,t,n){if(!t||!n)return!0;let r=e?Date.parse(e):NaN;return!Number.isNaN(r)&&(n-r)/864e5>=t}const Wt=Ht,Gt=5e3,Kt=2500,qt=`https://api.github.com`,J={registry:`https://registry.npmjs.org`,jsrapi:`https://jsr.io`,forgeapi:qt,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,Jt=e=>e.endsWith(`/`)?e.slice(0,-1):e;function Yt(e,t){return{headers:{"user-agent":`updates/${Wt}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}const Xt=new Set([`ECONNRESET`,`ECONNREFUSED`,`ETIMEDOUT`,`EAI_AGAIN`,`EPIPE`,`UND_ERR_SOCKET`,`UND_ERR_CONNECT_TIMEOUT`,`UND_ERR_HEADERS_TIMEOUT`,`UND_ERR_BODY_TIMEOUT`]);function Zt(e){if(e?.name===`TimeoutError`||e?.name===`AbortError`)return!0;let t=e?.code??e?.cause?.code;return typeof t==`string`&&Xt.has(t)}async function Qt(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=Zt(t),n}}async function $t(e,t,n={}){let r=fn(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 en(e){return typeof e.text==`function`?e.text():JSON.stringify(await e.json())}const tn=e=>t=>JSON.stringify(e(JSON.parse(t)));function nn(e,t){if(!t||e.length<16384)return e;try{return t(e)}catch{return e}}async function rn(e,t,n,r,i){let a=nn(await en(t),r);return i&&!n.noCache&&Bt(e,i,a),{body:a,res:t}}async function an(e,t,n={},r,i=e){let a=t.noCache?null:await Lt(i),o=n.headers,s=a?{...o,"if-none-match":a.etag}:o,c=await $t(t,e,{...n,headers:s});return c?c.status===304&&a?{body:a.body,res:c}:c.ok?rn(i,c,t,r,c.headers?.get?.(`etag`)):{res:c}:{res:void 0}}async function on(e,t,n={},r){if(!t.noCache){let t=await Lt(e);if(t)return{body:t.body}}let i=await $t(t,e,n);return i?i.ok?rn(e,i,t,r,`immutable`):{res:i}:{res:void 0}}function sn(e,t,n,r){let i=z(e,t,()=>new Map),a=i.get(n);return a||i.set(n,a=(async()=>{try{return await r()}catch(e){throw i.delete(n),e}})()),a}const cn=new re;function ln(e){let t=0,n=0,r=[];return async i=>{if(cn.getStore())return i();t<e?t++:await new Promise(e=>{r.push(e)});try{return await cn.run(!0,i)}finally{n<r.length?(r[n++](),n===r.length&&(r=[],n=0)):t--}}}const un=e=>Math.max(e.concurrency||25,1),dn=new WeakMap;function fn(e){let t=dn.get(e);return t||dn.set(e,t=ln(un(e))),t}function pn(e,t=Ct){let n=t.parse(e);return!!(n&&t.isPrerelease(n))}function mn(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 hn=new WeakMap,gn=new WeakMap;function _n(e,t,n,r,i=Ct){let a=t||i.isRangePrerelease(e),o=r;return t?o=mn(hn,r,e=>{e.add(`prerelease`),r.has(`patch`)&&e.add(`prepatch`),r.has(`minor`)&&e.add(`preminor`),r.has(`major`)&&e.add(`premajor`)}):a&&(o=mn(gn,r,e=>e.add(`prerelease`))),{effectiveSemvers:o,skipsPrerelease:e=>(!a||n)&&!!e&&i.isPrerelease(e)}}function vn(e){return U(e)?.version??``}function yn(e,t,{range:n,semvers:r,useGreatest:i,usePre:a,useRel:o,latest:s,pinnedRange:c,pinNoDowngrade:l,allowDowngrade:u,cooldownDays:d,now:f,getVersionDate:p,versioning:m=Ct}){let h=m.parseRange(n);if(!h)return null;let{effectiveSemvers:g,skipsPrerelease:_}=_n(n,a,o,r,m),v=s?m.parse(s):null,y=i||a&&!o||v&&c&&!m.satisfiesRange(v,c)?null:v,b=!!(y&&m.compare(h,y)>0),ee=!!c&&!l&&!m.satisfiesRange(h,c),te=!!u&&(!!y||m.isPrerelease(h)),ne=e?.time,x=!!(d&&f),S=null;for(let e of t){let t=m.parse(e);if(!t||_(t))continue;let n=m.compare(t,h)<=0;if(n&&!ee&&!te||S&&m.compare(t,S)<=0||n&&!ee&&y&&m.compare(t,y)!==0||!n&&y&&!b&&m.compare(t,y)>0||c&&!m.satisfiesRange(t,c)||x&&!Ut(p?p(e):ne?.[e],d,f))continue;let r=m.diff(h,t),i=r&&!m.isPrerelease(t)?r.replace(/^pre/,``):r;!i||!g.has(i)||(S=t)}return S?.version??null}function bn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function xn(e,{mode:t,range:n,useGreatest:r,usePre:i,useRel:a,semvers:o,pinnedRange:s,pinNoDowngrade:c,cooldownDays:l,now:u,allowDowngrade:d}){if(n===`*`)return null;let f=t===`pypi`?Dt:Ct,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;if(m=Object.keys(e.versions),h=e[`dist-tags`]?.latest??``,t===`npm`&&!e.versions[vn(p)]?.deprecated){let t=m.filter(t=>!e.versions[t]?.deprecated);m=t.length?t:m}}else if(t===`go`){let t=vn(p);if(!t)return null;let{effectiveSemvers:n,skipsPrerelease:r}=_n(p,i,a,o,f),m=e.old||p,h=f.parseRange(m),g=!!d||!!s&&!c&&!!h&&!f.satisfiesRange(h,s),_=(e,i)=>{let a=vn(e),o=f.parse(e);if(!a||bn(e)||r(o))return!1;let c=Qe(m,e)??Qe(t,a);return!c||!n.has(c)||!g&&o&&h&&f.compare(o,h)<0||!Ut(i,l,u)?!1:!s||K(a,s)};return _(e.new,e.Time)?e.new:_(e.sameMajorNew,e.sameMajorTime)?(e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew):null}return yn(e,m,{range:p,semvers:o,useGreatest:r,usePre:i,useRel:a,latest:h,pinnedRange:s,pinNoDowngrade:c,allowDowngrade:d,cooldownDays:l,now:u,getVersionDate:g,versioning:f})}function Sn(e){try{return new URL(e).host}catch{return``}}function Cn(e){for(let n of I(t.UPDATES_FORGE_TOKENS??``)){let t=n.lastIndexOf(`:`);if(t>0&&n.slice(0,t)===e)return n.slice(t+1)}return null}let wn;async function Tn(){let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]);return t(e)}function En(){return wn??=Tn()}const Dn=[`UPDATES_GITHUB_API_TOKEN`,`GITHUB_API_TOKEN`,`GH_TOKEN`,`GITHUB_TOKEN`,`HOMEBREW_GITHUB_API_TOKEN`];function On(){return Array.from(new Set(Dn.map(e=>t[e]).filter(e=>!!e)))}let kn;function An(){let e=On();return e.length?Promise.resolve(e):kn??=(async()=>{try{let{stdout:e}=await(await En())(`gh`,[`auth`,`token`],{encoding:`utf8`,timeout:5e3}),t=e.trim();return t?[t]:[]}catch{return[]}})()}const jn=/^http\.(\S+)\/\.extraheader AUTHORIZATION:\s*basic\s+(\S+)$/i;function Mn(e){let t=new Map;for(let n of e.split(/\r?\n/)){let e=jn.exec(n);if(!e)continue;let r=Sn(e[1]),i=ie.from(e[2],`base64`).toString(`utf8`),a=i.slice(i.indexOf(`:`)+1);r&&a&&!t.has(r)&&t.set(r,a)}return t}let Nn;function Pn(){return Nn??=(async()=>{try{let{stdout:e}=await(await En())(`git`,[`config`,`--get-regexp`,`^http\\..*\\.extraheader$`],{encoding:`utf8`,timeout:5e3});return Mn(e)}catch{return new Map}})()}const Fn=new Map;async function In(e,t){if(!e)return[];let n=Cn(e);if(n)return[n];let r=e===`api.github.com`?`github.com`:e,i=r===`github.com`||e===Sn(t),[a,o]=await Promise.all([i?An():[],Pn()]),s=o.get(r);return Array.from(new Set(s?[...a,s]:a))}var Ln=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 Rn(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 zn(e,t,n,r){if(e.status>=500)throw new Ln(`server`,n,`Received ${e.status}${e.statusText?` ${e.statusText}`:``} from ${t}`,{status:e.status});let i=await Rn(e);if(i===null)return e;throw new Ln(`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 Bn(e,t,n){let r=Sn(e),i=await In(r,t.forgeApiUrl),a=e=>{let t=Yt(`Bearer`,e);return n&&(t.headers={...t.headers,...n}),t},o=async n=>zn(await $t(t,e,a(n)),e,r,i.length>0);try{if(!i.length)return await o();let e=Fn.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 Fn.set(r,e),t}return await o()}catch(e){throw e instanceof Ln?e:new Ln(`network`,r,e?.message??String(e),{cause:e})}}function Vn(e,t){let n=Y(t);if(!Ye(n))return null;let r=``,i=``;for(let t of e){let e=Y(t);Ye(e)&&(!r||W(e,i))&&(r=t,i=e)}return r&&W(i,n)?r:null}function Hn(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 Un=/^(?=.*[a-f])[0-9a-f]{6,}$/i;function Wn(e){return/^v?\d+(?:\.\d+)*(?:[-+][\w.-]+)?$/.test(e)}function Gn(e){let t=e?.commit??e;return t?.committer?.date||t?.author?.date||``}function Kn(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function qn(e,t,n){let r=t.noCache?null:await Lt(e),i=await Bn(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&&Bt(e,o,a),a}async function Jn(e,t){let n=await qn(e,t,async e=>JSON.stringify({link:e.headers.get(`link`)||``,tags:Kn(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 Yn(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 Jn(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=un(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)=>Jn(a(t+n),r)));for(let t of e)s=l(t)}return o}catch(e){if(e instanceof Ln)throw e;return[]}}function X(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 Xn=e=>Number(e[0])>=2e7;function Zn(e,t){let n=Y(e).split(`.`),r=Y(t).split(`.`);return n.length<r.length?!1:!Xn(n)||Xn(r)}function Qn(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 $n(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}const er=[`repository`,`Repository`,`repo`,`Repo`,`source`,`Source`,`source code`,`Source code`,`Source Code`,`homepage`,`Homepage`];function tr({repository:e,homepage:t,info:n},r,i){if(n){let t=n.project_urls;for(let n of er)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=Hn(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a+=`/${$n(a)}/${e.directory}`)),a||t||``)}const nr={"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 rr(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.filter(e=>typeof e==`string`).flatMap(I)):typeof e==`string`?new Set([e]):typeof e==`boolean`&&e}function ir(e){for(let[t,{short:n}]of Object.entries(nr))if(t===e||n===e)return t;return``}function ar(e){return new Set(e.map(Ve))}function or(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(I):[]}function sr(e){for(let[t,n]of Object.entries(e??{}))if(!ut(n))throw Error(`Invalid pin range for ${t}: ${n}`)}function cr(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 sr(t),t}function lr(e){return typeof e==`boolean`?e:!Array.isArray(e)||!e.length?!1:ar(e)}async function ur(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 dr=We(e=>He(e,ur));async function fr(e,t={}){let n=await dr(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])),s.overrides?.length&&(c.overrides=[...s.overrides,...r.overrides??[]]),sr(c.pin),c}function pr(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 mr(e){try{return pr(g(e,`utf-8`))}catch{return}}function hr(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 gr(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 _r(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=mr(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(hr(`.${n}rc`,a));let f=gr(`${n}_`);return f.config&&d(f.config),Object.assign({},...c,f,l.length?{configs:l,config:l[l.length-1]}:void 0)}const vr=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,yr=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,br=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,xr=/(@[^/]+\/)?([^/]+)/g,Sr=/^(?:@[^/]+\/)?[^@]+/,Cr=new Set([`resolutions`,`overrides`]);function wr(e){let t=e.match(xr),n=t?t[t.length-1]:e;return Sr.exec(n)?.[0]??n}const Tr=J.registry,Er=new Map,Dr=new Map;function Or(e){return z(Er,e??``,()=>_r(`npm`,{registry:Tr},e))}function kr(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function Ar(e,t){let n=n=>t[`${e}:${n}`]||t[`${e}/:${n}`],r=n(`_authToken`);if(r)return{token:kr(r),type:`Bearer`};let i=n(`username`),a=n(`_password`);if(i&&a){let e=Buffer.from(kr(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:kr(o),type:`Basic`}}function jr(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=Ar(`//${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:kr(i),type:`Basic`}}function Mr(e,t){let n=t[`${e}:registry`]||``;return!n||n.endsWith(`/`)?n:`${n}/`}function Nr(e,t,n){let r=Or(n),i=e.startsWith(`@`)?e.split(`/`)[0]:``;return z(Dr,`${n??``}${i}:${t}`,()=>{let e,n=i&&Mr(i,r);if(n)try{let i=Jt(n);i!==t&&(e={auth:jr(i,r),registry:i})}catch{}return e??{auth:jr(t,r),registry:t}})}function Pr(e,t,n,r){let i=Jt(typeof n.registry==`string`&&n.registry||t.registry||Or(r).registry||Tr);return{...Nr(e,i,r),originalRegistry:i}}function Fr(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const Ir=new WeakMap,Lr=new WeakMap,Rr=new WeakMap,zr=(e,t)=>`${e}\0v2${t?`-dates`:``}`;function Br(e){let t={};for(let n of Object.keys(e.versions??{}))t[n]=e.versions[n]?.deprecated?{deprecated:!0}:{};return{name:e.name,"dist-tags":e[`dist-tags`],versions:t,time:e.time,error:e.error}}async function Vr(e,t,n,r,i,a,o=``){let s=Cr.has(t)?wr(e):t===`packageManager`&&e===`yarn`&&(H(o)?.major??0)>1?`@yarnpkg/cli`:e,{auth:c,registry:l}=Pr(s,n,r,a),u=Fr(l,s),d=zr(u,!!r.needsDates);return[await sn(Ir,i,d,async()=>{let t=Yt(c?.type,c?.token);r.needsDates||(t.headers={...t.headers,accept:`application/vnd.npm.install-v1+json`});let n=await an(u,i,t,tn(Br),d);return`body`in n||X(n.res,u,e,l),JSON.parse(n.body)}),l]}async function Hr(e,t,n,r,i,a){let{auth:o,registry:s}=Pr(e,n,r,a),c=Fr(s,e,t);return sn(Lr,i,c,async()=>{try{let n=Yt(o?.type,o?.token),a=await on(c,i,n,tn(e=>({repository:e.repository,homepage:e.homepage,_npmOperationalInternal:e._npmOperationalInternal?.tmp?{tmp:e._npmOperationalInternal.tmp}:void 0})));if(!(`body`in a))return{};let l=JSON.parse(a.body),u=``,d=l?._npmOperationalInternal?.tmp;if(d){let e=/(\d{13})/.exec(d);e&&(u=new Date(Number(e[1])).toISOString())}let f=Fr(s,e);return!u&&r.needsDates&&(u=(await Ir.get(i)?.get(zr(f,!0)))?.time?.[t]||``),u||=(await ze(sn(Rr,i,f,async()=>{let e=await $t(i,f,n);return e?.ok?await e.json():null})))?.time?.[t]||``,{repository:l.repository,homepage:l.homepage,date:u}}catch{return{}}})}function Ur(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Wr(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function Gr(e){return e.startsWith(`catalog:`)}const Kr=/^npm:((?:@[^/@]+\/)?[^@/][^@]*)@(.+)$/;function qr(e){let t=Kr.exec(e);return t&&ut(t[2])?{name:t[1],range:t[2]}:null}const Jr=[/^npm:@jsr\/([^_]+)__([^@]+)@(.+)$/,/^jsr:@([^/]+)\/([^@]+)@(.+)$/],Yr=/^@([^/]+)\/(.+)$/;function Xr(e,t){for(let t of Jr){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=Yr.exec(t??``);if(n)return{scope:n[1],name:n[2],version:e.substring(4)}}return{scope:null,name:null,version:``}}async function Zr(e,t){if(!Yr.test(e))throw Error(`Invalid JSR package name: ${e}`);let n=`${t.jsrApiUrl}/${e}/meta.json`,r=await an(n,t,{headers:{"accept-encoding":`gzip, deflate, br`}},tn(e=>({latest:e.latest,versions:Object.fromEntries(Object.entries(e.versions??{}).map(([e,t])=>[e,{createdAt:t?.createdAt}]))})));`body`in r||X(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 Qr=new Set([32,9,10,13]);function $r(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 ei(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(;Qr.has(e.charCodeAt(t));)t++;if(e.charCodeAt(t)===58){for(t++;Qr.has(e.charCodeAt(t));)t++;if(e.startsWith(r,t))return t}}return-1}function ti(e,t){let n;try{n=JSON.parse(e)}catch{return e}let r=$r(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),_=ei(e,i.get(t)??m.start,h,g);(_===-1||_>=m.end)&&(_=ei(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 ni=String.raw`[<>]=?|[\^~=]`,ri=new RegExp(String.raw`^(${ni})?(\s*)(v?)((?:\d+|[xX*])(?:\.(?:\d+|[xX*]))*)(-[0-9A-Za-z.-]+)?$`),ii=RegExp(`^(?:${ni})$`),ai=/^[xX*]$/,oi=/\+[0-9A-Za-z.-]+/g,si=/\|\||[\dxX*]\s+\S/;function ci(e){let t=[];for(let n of e.trim().replaceAll(`||`,` || `).split(/\s+/))t.length&&ii.test(t[t.length-1])?t[t.length-1]+=` ${n}`:t.push(n);return t}function li(e,t){let n=ri.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)=>ai.test(e)?e:l[t]??`0`).join(`.`)}`:`${r}${i}${a}${t}`}function ui(e,t){return e===`peerDependencies`||si.test(t)}function di(e,t){if(K(t,e))return e;let n=ci(e),r=n[n.length-1];if(!r.startsWith(`<`)&&n[n.length-2]!==`-`){let i=li(r,t);return n.length>1&&r.startsWith(`>`)||i===r?e:`${e} || ${i}`}return n[n.length-1]=li(r,t),n.join(` `)}function fi(e,t,n,r){let i=(n||e).replace(oi,``),a=ui(r,i)?di(i,t):li(i,t);return K(t,a)?a:i}function Z(e){if(/[xX*]/.test(e))return e;let t=e.match(br);return t?.length===1?e.replace(br,vn(t[0])):e}async function pi(e,t,n){let r=await qn(`${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 mi(e,t,n,r){return(await Yn(r.forgeApiUrl,e,t,r,[n])).map(e=>e.name)}async function hi(e,t,n){let r=t.old.replace(vr,``),[,i,a,o]=yr.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(Un.test(o)){let{hash:t,commit:r}=await pi(i,a,n);if(!t)return null;let c=Gn(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=Vn(await mi(i,a,o,n),o);if(t)return{key:e,newRange:s(t),user:i,repo:a,oldRef:o,newRef:t}}return null}function gi(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 _i(e,t){let n=`${t.pypiApiUrl}/pypi/${e}/json`,r=await an(n,t,{headers:{"accept-encoding":`gzip, deflate, br`}},tn(gi));if(`body`in r)return[JSON.parse(r.body),null];X(r.res,n,e,t.pypiApiUrl)}function vi(e,{op:t,version:n}){if(t===`===`)return n===e.version;if(n.endsWith(`.*`)){let r=q(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=q(n);if(!r)return!1;let i=yt(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 yi(e,t,n){let r=e.release.findIndex((e,n)=>e>t.release[n]);return r===0&&e.release[1]===0?r=1:r===-1&&(r=e.release.length-1),e.release.map((e,t)=>t>r?0:(n.release[t]??0)+Number(t===r)).join(`.`)}function bi(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 xi(e,t,n){let r=Ce(e),i=r?.specifiers,a=q(t),o=q(n);if(!r||!i||!a||!o)return null;let s=we(i);if(s?.version!==t)return null;for(let e of i){if(e===s){e.version=e.op===`~=`?bi(a,o):n;continue}if(vi(o,e))continue;let t=q(e.version);e.op===`<`&&t?e.version=yi(t,a,o):e.op===`<=`&&(e.version=n)}return i.some(e=>!vi(o,e))?null:N(r,i)}function Si(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(`(['"])( *${R(t)}(?![\\w.-]).*?)(?=\\1)`,`g`);n=n.replace(s,(e,t,n)=>`${t}${xi(n,o,a)??n}`)}return n}function Ci(e){let t=e.includes(`:/`)||e.startsWith(`/`);return Jt(!t&&/[.:/]/.test(e)?`https://${e}`:e)}function wi(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:Ci(r),fallback:i})}}return t}function Ti(e){if(typeof e==`string`)return[{url:Jt(e),fallback:`,`}];let n=wi(t.GOPROXY||`${J.goproxy},direct`);return n.length?n:[{url:J.goproxy,fallback:`,`}]}function Ei(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim().replace(/\/+$/,``)).filter(Boolean)}const Di=new Map;function Oi(e){return z(Di,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+=R(r)}return RegExp(`^${t}(?:/.*)?$`)})}function ki(e,t){return t.some(t=>Oi(t).test(e))}function Ai(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}const ji=/\/v(\d+)$/,Mi=/^gopkg\.in\/.*?\.v(\d+)$/;function Ni(e){let t=Mi.exec(e)??ji.exec(e);return t?Number.parseInt(t[1]):1}function Pi(e,t){if(e.startsWith(`gopkg.in/`))return`${e.replace(/\.v\d+$/,``)}.v${t}`;let n=e.replace(ji,``);return t<=1?n:`${n}/v${t}`}function Fi(e,t){if(t.includes(`+incompatible`))return e;let n=Number.parseInt(Y(t).split(`.`)[0]);return Number.isNaN(n)||n===Ni(e)?e:Pi(e,n)}const Ii=/^require\s*\(/,Li=/^replace\s*\(/,Ri=/^tool\s*\(/,zi=/^use\s*\(/,Bi=/^replace\s+/,Vi=/^(\S+)\s+(v\S+)/,Hi=/^require\s+(\S+)\s+(v\S+)/,Ui=/^tool\s+(\S+)/,Wi=/^use\s+(\S+)/,Gi=/^(\S+)/,Ki=/^(\S+)(?:\s+(v\S+))?\s+=>\s+(\S+)(?:\s+(v\S+))?/,qi=/^replace\s+(\S+)(?:\s+(v\S+))?\s+=>\s+(\S+)(?:\s+(v\S+))?/,Ji=/^"(.*)"$/,Yi=e=>Ji.exec(e)?.[1]??e;function Xi(e){return e.startsWith(`./`)||e.startsWith(`/`)||e.startsWith(`../`)}function Zi(e,t){let n=(t?Ki:qi).exec(e);if(!n)return null;let[,r,i,a,o]=n;return{origModule:Yi(r),origVersion:i??``,targetModule:Yi(a),targetVersion:o??``}}function Qi(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||bn(n)}async function $i(e,t,n){if(!t)return null;let r=t,i=pn(t.Version)?null:t,a=e+101,o=e+2,s=7;for(;o<=a;){let e=Math.min(o+s-1,a),t=await Promise.all(Array.from({length:e-o+1},(e,t)=>n(o+t))),c=t.indexOf(null),l=c===-1?t:t.slice(0,c);if(l.length&&(r=l.at(-1),i=l.findLast(e=>!pn(e.Version))??i),c!==-1)break;o=e+1,s*=2}return i??r}function ea(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 ta(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(Ii.test(i)){c=!0;continue}if(Li.test(i)){l=!0;continue}if(Ri.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(i.startsWith(`//`))continue;if(u){i&&o.push(Yi(i));continue}let s=Ui.exec(i);if(s){o.push(Yi(s[1]));continue}let d=i.includes(`// indirect`);if(l||Bi.test(i)){let e=Zi(i,l);e&&(e.targetVersion&&!Xi(e.targetModule)&&(r[e.targetModule]=e.targetVersion),e.origVersion||a.add(e.origModule));continue}let f=(c?Vi:Hi).exec(i);f&&((d?n:t)[Yi(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 na(e,n,r,i,a){let o=Ni(e),s=async(e,n)=>{try{let{stdout:r}=await(await En())(`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=Qi(e,n,r),[u,d]=await Promise.all([s(e,a.fetchTimeout),l?null:c(Pi(e,o+1))]);return ea(e,r,await $i(o,d,t=>c(Pi(e,t))),u.Version,u.Time)}const ra={"accept-encoding":`gzip, deflate, br`},ia=e=>e===404||e===410;async function aa(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 oa=async(e,t,n)=>{let r=`${t}/${Ai(n)}/@latest`,i=await e(r);if(i.ok)return aa(i,r,n);if(ia(i.status))return null;X(i,r,n,t)},sa=new WeakMap;function ca(e,t,n,r){return sn(sa,e,`${n}/${r}`,()=>oa(t,n,r))}function la(e,t){let n=pn(e);return n===pn(t)?W(e,t):!n}function ua(e,t=0){let n=null;for(let r of e.split(`
8
+ `)){let[e,i]=r.trim().split(/\s+/);!e||!Ye(e)||t&&Number.parseInt(Y(e))!==t||n&&!la(e,n.Version)||(n={Version:e,Time:i??``})}return n}function da(e){return ji.test(e)||Mi.test(e)?Ni(e):0}const fa=async(e,t,n)=>{let r=Ai(n),i=`${t}/${r}/@v/list`,a=await e(i);if(!a.ok){if(ia(a.status))return null;X(a,i,n,t)}let o=ua(await a.text(),da(n));if(!o)return null;if(o.Time)return{...o,path:n};let s=`${t}/${r}/@v/${Ai(o.Version)}.info`;try{let t=await e(s);if(t.ok)return aa(t,s,n)}catch{}return{...o,path:n}};async function pa(e,t,n,r,i){let a=Ni(t),o=(e,t,n)=>ca(i,e,t,n),s=e=>$t(i,e,{headers:ra}),c=e=>i.doFetch(e,{signal:AbortSignal.timeout(i.goProbeTimeout),headers:ra}),l=t=>async n=>{try{return await t(c,e,n)}catch{return null}},u=Qi(t,n,r),d=Pi(t,a+1),[f,p]=await Promise.all([o(s,e,t),u?null:l(o)(d)]),m=f??await fa(s,e,t);if(!m)return null;let h=l(f?o:fa);return ea(t,r,await $i(a,u||f?p:await l(fa)(d),e=>h(Pi(t,e))),m.Version,m.Time)}async function ma(e,t,n,r,i,a){if(ki(e,a))return na(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 na(e,t,n,r,i);try{let r=await pa(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 ha=(e,t)=>`("?)${R(e)}\\${t}`;function ga(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=Fi(s,l);if(o===`replace`){if(u!==s){let e=n;if(n=n.replace(RegExp(`(^\\s*(?:replace\\s+)?)${ha(s,2)}(\\s+=>\\s+)${ha(s,4)}(\\s+)v${R(c)}`,`gm`),`$1$2${u}$2$3$4${u}$4$5v${l}`),n!==e){let e=n;n=n.replace(RegExp(`(^\\s*(?:require\\s+)?)${ha(s,2)}(\\s+)v\\S+(?=\\s*(?://.*)?$)`,`gm`),`$1$2${u}$2$3v${l}`),n!==e&&(r[s]=u)}}n=n.replace(RegExp(`(=>\\s+)${ha(s,2)}(\\s+)v${R(c)}`,`g`),`$1$2${u}$2$3v${l}`);continue}u!==s&&o!==`indirect`?(n=n.replace(RegExp(`${ha(s,1)} +v${R(c)}`,`g`),`$1${u}$1 v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)("?)${R(s)}((?:/[^"\\s]+)?)\\2\\s*$`,`gm`),`$1$2${u}$3$2`)),r[s]=u):n=n.replace(RegExp(`(${ha(s,2)}) +v${R(c)}`,`g`),`$1 v${l}`)}return[n,r]}function _a(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 va(e){let t=[],n={},r=e.split(/\r?\n/),i=!1,a=!1;for(let e of r){let r=e.trim();if(zi.test(r)){i=!0;continue}if(Li.test(r)){a=!0;continue}if(r===`)`){i=!1,a=!1;continue}if(i){let e=Gi.exec(r);e&&!r.startsWith(`//`)&&t.push(e[1]);continue}let o=Wi.exec(r);if(o){t.push(o[1]);continue}if(a||Bi.test(r)){let e=Zi(r,a);e?.targetVersion&&!Xi(e.targetModule)&&(n[e.targetModule]=e.targetVersion)}}return{use:t,replace:n}}function ya(e){let t=`https://${ba(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[,e,i,...a]=r;return n.pathname=`/${e}/${i}/${$n(t)}/${a.join(`/`)}`,n.href}return t}function ba(e){return ji.test(e)?c(e):e}function xa(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}function Sa(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:Un.test(o)}}function Ca(e,t){return e?e===`github.com`?qt:`https://${e}/api/v1`:t}async function wa(e,t,n,r,i){let a=`${e}/repos/${t}/${n}/git/commits/${r}`;if(!i.noCache){let e=await Lt(a);if(e)return e.body}try{let e=await Bn(a,i);if(e.status===404)return``;if(!e.ok)return;let t=Gn(await e.json());return t&&!i.noCache&&Bt(a,`immutable`,t),t}catch(e){if(e instanceof Ln)throw e;return}}function Ta(e,t){return Qn(H(Y(e))?.version??Y(e),t)}const Ea=/^(\s*(?:-\s*)?uses:\s*)([^\n]*)$/,Da=/^\s*(?:(?:renovate\s*:\s*)?(?:pin\s+|tag\s*=\s*)?|ratchet:[\w-]+\/[.\w-]+)@?((?:[\w-]*[-/])?v?\d+(?:\.\d+(?:\.\d+)?)?(?:-[a-zA-Z0-9.]+)?)/;function Oa(e){let t=Ea.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?Da.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 ka=/^https?:\/\//;function Aa(e,t){let n=new Map(t.map(e=>[`${e.name}@${e.oldRef}`,e]));return e.split(`
9
+ `).map(e=>{let t=Oa(e);if(!t)return e;let{prefix:r,quote:i,value:a,gap:o,comment:s,pinnedVersion:c,pinnedEnd:l}=t,u=ka.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 ja=RegExp(`(?:^|/)(?:${Be(P)})/(?:workflows/[^/]+|(?:[^/]+/)*action)\\.ya?ml$`);function Ma(e){return ja.test(e.replace(/\\/g,`/`))}function Na(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 Pa=/^(v?\d+(?:\.\d+){0,2})([a-z][a-z0-9]*)?(-.+)?$/i,Fa=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gim,Ia=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,La=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,Ra=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm,za=/^(?:index\.)?docker\.io$/;function Ba(e){let t=e.split(`/`);return t.length>1&&za.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 Va(e){let{registry:t,namespace:n,repo:r}=Ba(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 Ha(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||!Pa.test(r))return null;let{registry:i,namespace:a,repo:o}=Ba(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function Ua(e){let t=Pa.exec(e);return t?{version:t[1],prerelease:t[2]||``,suffix:t[3]||``}:null}function Wa(e,t,n=``){let r=Ua(t);return r?Qn(e,r.version,`${n}${r.suffix}`):t}function Ga(e,t){let n=[];for(let r of e.matchAll(t)){let e=Ha(r[1]);e&&n.push({ref:e,match:r[1]})}return n}const Ka=new WeakMap;function qa(e,t,n){return sn(Ka,n,`${e}/${t}`,()=>Xa(e,t,n))}const Ja=new Set([401,403,404]),Ya=e=>e.tag_last_pushed||e.last_updated||``;async function Xa(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 an(i,n,o,tn(s));return`body`in c?JSON.parse(c.body):(Ja.has(c.res?.status)||X(c.res,i,`${e}/${t}`,n.dockerApiUrl),null)},l=e=>{for(let t of e?.results||[])r[t.name]=Ya(t)},u=fn(n),d=await u(()=>c(1));if(!d)return r;l(d);let f=Math.min(Math.ceil((d.count||0)/100),100),p=un(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 Za(e,t,n,r){let i=`${r.dockerApiUrl}/v2/repositories/${e}/${t}/tags/${n}`;try{let e=await an(i,r,{headers:{"accept-encoding":`gzip, deflate, br`}},tn(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 Qa=/^\d?[02468]\.04$/;function $a(e,t){if(!Qa.test(e))return!1;let[n,r]=e.split(`.`);return t>=Date.UTC(2e3+Number(n),Number(r))}const eo={ubuntu:$a};function to(e,t,n=Date.now()){let r=eo[e];return r?Object.fromEntries(Object.entries(t).filter(([e])=>{let t=Ua(e)?.version;return!t||r(t,n)})):t}async function no(e,t){let{registry:n,namespace:r,repo:i}=Ba(e);if(n)throw Error(`Non-Docker-Hub registries are not yet supported: ${n}`);return[{tags:to(i,await qa(r,i,t)),name:e},null]}const ro=(e,t)=>t?`${e}-${t}`:e;function io(e,t,n,r,i,a,o=!1,s=!1){let c=Ua(t);if(!c)return null;let l=U(Y(c.version))?.version;if(!l)return null;let u=Y(c.version).split(`.`).length,d=ro(l,c.prerelease),{effectiveSemvers:f,skipsPrerelease:p}=_n(d,o,s,n),m=d,h=``,g=``;for(let[t,n]of Object.entries(e)){let e=Ua(t);if(!e||e.suffix!==c.suffix||Y(e.version).split(`.`).length!==u||!Zn(e.version,c.version))continue;let o=U(Y(e.version))?.version;if(!o||e.prerelease&&p(H(ro(o,e.prerelease)))||a&&!K(o,a)||!Ut(n,r,i))continue;let s=ro(o,e.prerelease);if(s===m){h&&Date.parse(n)>Date.parse(g)&&(h=t,g=n);continue}let l=Qe(m,s);!l||!f.has(l)||W(s,m)&&(m=s,h=t,g=n)}if(!h||m===d)return null;let[_,v=``]=m.split(`-`),y=Wa(_,t,v),b=y in e?y:h;return b===t?null:{newTag:b,date:g}}const ao=`(?![\\w.@+-])`;function oo(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 so(e,t){return oo(e,t,[e=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)(${e})${ao}`,`gi`)])}function co(e,t){return oo(e,t,[e=>RegExp(`(image:\\s*['"]?)(${e})${ao}`,`g`)])}function lo(e,t){return oo(e,t,[e=>RegExp(`((?:container|image):\\s*['"]?)(${e})${ao}`,`g`),e=>RegExp(`(uses:\\s*['"]?docker://)(${e})${ao}`,`g`)])}const uo=[`Dockerfile`,`compose.yml`,`compose.yaml`,`docker-compose.yml`,`docker-compose.yaml`];function fo(e){return/^(?:docker-|compose).*\.ya?ml$/.test(e)}function po(e){return/^Dockerfile(\..+)?$/.test(e)}function mo(e){return po(e)||fo(e)}function ho(e){return po(e)?Fa:Ia}function go(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const _o=[`Makefile`,`makefile`,`GNUmakefile`];function vo(e){return _o.includes(e)||e.endsWith(`.mk`)}const yo=String.raw`^\s*[A-Za-z_][\w.]*\s*(?:::=|:=|\?=|\+=|=)\s*`,bo=RegExp(`${yo}${String.raw`(\S+)@(v\d\S*)\s*$`}`),xo=/^[^/\s]+\.[^/\s]+\//;function So(e){let t=e.indexOf(`#`);return t===-1?e:e.slice(0,t)}function Co(e){let t=[];for(let n of e.split(/\r?\n/)){let e=So(n),r=bo.exec(e);if(!r)continue;let[,i,a]=r;xo.test(i)&&t.push({installPath:i,version:a})}return t}const wo=RegExp(`${yo}${String.raw`(\S+)\s*$`}`),To=/@(sha256:[0-9a-f]{64})$/;function Eo(e,t,n){return`${e}:${t}${n?`@${n}`:``}`}function Do(e){let t=null,n=e,r=To.exec(e);r&&(t=r[1],n=e.slice(0,r.index));let i=Ha(n.replace(/^docker\.io\//,``));return!i||i.registry||i.namespace===`library`?null:{writtenImage:n.slice(0,n.lastIndexOf(`:`)),ref:i,digest:t}}function Oo(e){let t=[];for(let n of e.split(/\r?\n/)){let e=wo.exec(So(n));if(!e)continue;let r=Do(e[1]);r&&t.push(r)}return t}const ko=/\/v(?:[2-9]|[1-9]\d+)(?=\/|$)/;function Ao(e){let t=ko.exec(e);return t?e.slice(0,t.index+t[0].length):null}async function jo(e,n,r,i){return i?await ze((await En())(`go`,[`list`,`-m`,`-json`,`${e}@latest`],{timeout:r.fetchTimeout,cwd:n,env:t}))!==null:!!await ca(r,e=>$t(r,e,{headers:ra}),r.goProxyUrl,e)}async function Mo(e,t,n,r){let i=Ao(e);if(i)return i;let a=n.goProxyUrl===`direct`||ki(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 jo(e,t,n,!0))return e;return null}let c=await Promise.allSettled(s.map(e=>jo(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 No(e,t,n,r,i,a){let o=await Mo(e,n,r,i);if(!o)return null;let[s]=await ma(o,`tool`,Y(t),n,r,i),c=xn(s,{...a,mode:`go`,range:Y(t)});if(!c)return null;let l=s.newPath??Fi(o,c),u=`${l}${e.slice(o.length)}`,d=Qn(c,t);return u===e&&d===t?null:{newInstallPath:u,newVersion:d,date:s.Time??``,info:ya(l)}}async function Po(e,t,n){let{namespace:r,repo:i,fullImage:a,tag:o}=e.ref,[s]=await no(a,t),c=io(s.tags,o,n.semvers,n.cooldownDays,n.now,n.pinnedRange,n.usePre,n.useRel);if(!c)return null;let l=null;return e.digest&&(l=await Za(r,i,c.newTag,t),!l)?null:{newTag:c.newTag,newDigest:l,date:c.date,info:go(e.ref)}}function Fo(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 Io=new WeakMap;function Lo(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 Ro(e,t){let n=Jt(e);return`${n===`https://crates.io`?`https://index.crates.io`:n}/${Lo(t)}`}function zo(e){return e.split(`
11
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 Lo(e,t){let n=Fo(t.cratesIoUrl,e);return[await on(No,n,async()=>{let r=await rn(n,t,Jt(),Io);`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=V(n);r&&(r.prerelease.length?(!s||U(n,s))&&(s=n):(!o||U(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 Ro(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];Xe(a)&&We(t,i,a)}return t}const zo=/^\d/,Bo=/^(\d+(?:\.\d+)*)((?:\.[*xX])+)$/,Vo=/\s*,\s*/g,Ho=/(\s*,\s*)/,Uo=e=>e.includes(`,`)?e.replace(Vo,` `):e,Wo=e=>Uo(zo.test(e)&&!Bo.test(e)?`^${e}`:e);function Go(e,t){if(e.startsWith(`<`)&&G(t,e))return e;let n=Bo.exec(e);if(n){let[,e,r]=n;return`${t.split(/[-+]/)[0].split(`.`).slice(0,e.split(`.`).length).join(`.`)}${r}`}return zo.test(e)?ui(Q(`^${e}`),t,`^${e}`).replace(/^\^/,``):ui(Q(e),t,e)}function Ko(e,t){if(!e.includes(`,`))return Go(e,t);let n=e.split(Ho);for(let e=0;e<n.length;e+=2)n[e]=Go(n[e],t);return n.join(``)}function qo(e,t,n){let r=e.get(t);if(!r)return;let i=Wo(n),a;for(let e of r)G(e,i)&&(!a||U(e,a))&&(a=e);return a}const Jo=e=>`(?:${L(e)}|"${L(e)}"|'${L(e)}')`;function Yo(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=Jo(i),c=L(a),l=t.split(`|`)[0].split(`.`).map(Jo).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 Xo(e){let t=e.indexOf(`|`);return t===-1?e:e.slice(0,t)}function Zo(e,t){let n=t===`.`?``:`|${t}`,r={};for(let[t,i]of Object.entries(e)){let[e,a]=t.split(`\0`),o=Xo(e);e===`${o}${n}`&&(r[`${o}${a}`]=i)}return r}const Qo=/[*?{[]/;async function $o(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=Qo.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 S(e,`utf8`),memberPath:t}}catch{return null}},{concurrency:r})).filter(e=>e!==null)}const es=/^(\s*)(?:"([^"]*)"|'([^']*)'|([^\s#][^:#]*?))\s*:(?:\s+(.*))?$/,ts=/\s#/;function ns(e){let t=es.exec(e);if(!t)return null;let[,n,r,i,a,o=``]=t,s=e.length-o.length,c=o.search(ts),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*rs(e){let t=``,n=``,r=-1;for(let[i,a]of e.split(`
14
- `).entries()){let e=ns(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 is(e,t){let n=e.split(`
15
- `),r=!1;for(let{type:i,name:a,value:o,lineIndex:s,valueIndex:c}of rs(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 as(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 os=[...new Set(Object.values(Oe)),`actions`,`docker`,`make`],ss=new Set(os),cs={patch:new Set([`patch`]),minor:new Set([`patch`,`minor`]),major:new Set([`patch`,`minor`,`major`])},ls={"go.work":{mode:`go`,supersedes:`go.mod`},"pnpm-workspace.yaml":{mode:`npm`,supersedes:`package.json`}},us=(e,t)=>typeof e==`string`?qt(e):typeof t==`function`?t():t,ds=/^(npm:@jsr\/[^@]+@|jsr:@[^@]+@)(.+)$/;function fs(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 ps(e,t){let n=await I(e,async e=>{try{return[e,await S(e,`utf8`)]}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}},{concurrency:t});return new Map(n)}function ms(e,t){t&&(e.date=t,e.age=jt(t,{noAffix:!0,shortUnits:!0}))}const hs=(e,t,n)=>`${e}${t}${n}`,gs=e=>Object.values(e).reduce((e,t)=>e+Object.keys(t).length,0);function _s(e,t){return t===`go`?[e,va(e)]:t===`docker`?za(e):[e]}const vs=(e,t)=>t.find(t=>e[t]);function $(e,t,n,r,i,a=t){if(i===`engines`&&De.includes(e)||t===`pypi`&&e===`python`)return!1;if(!n.size&&!r.size)return!0;let o=_s(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 ys(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 v(e,{withFileTypes:!0}))t.isFile()&&(Object.hasOwn(Oe,t.name)||uo(t.name)||ho(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 ja(e))n.add(t)}else throw Error(`${e} is neither a file nor directory`)}else{let t=new Set(P),r=[...Object.keys(Oe),...so,...mo,...P],i=new Set;for(let[a,o]of fs(r,e())){if(t.has(a)){for(let e of ja(o))n.add(e);continue}let e=f(o);try{e=y.native(o)}catch{}i.has(e)||(i.add(e),n.add(f(o)))}try{for(let t of v(e(),{withFileTypes:!0})){let r=uo(t.name)&&!so.includes(t.name),i=ho(t.name)&&!mo.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(ls,t)&&n.delete(u(c(e),ls[t].supersedes))}return n}function bs(e,t){r===`win32`&&x(e,0),ee(e,t,r===`win32`?{flag:`r+`}:void 0)}const xs=(e,t)=>`${e}${t.split(`\0`,2).join(`\0`)}`;function Ss(e){let t={results:{}},n=new Map,r=Object.entries(e).sort(([e],[t])=>os.indexOf(e)-os.indexOf(t));for(let[e,t]of r)for(let r of Object.keys(t)){let t=xs(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`&&!Vr(a.oldOrig)&&(a.old=e===`go`?ya(a.oldOrig):a.oldOrig),e===`go`?a.new=ya(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(xs(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<t?-1:+(e>t)));return t}let Cs=!1;async function ws(t={}){if(!Cs){let{enableDnsCache:e}=await import(`./dns.js`);e(),Cs=!0}let n={...t};typeof n.timeout==`number`&&(n.timeout=ze(n.timeout,`timeout`));let r=n.sockets??25,a=n.timeout??0,l=us(t.forgeapi,Y.forgeapi),d=us(t.pypiapi,Y.pypiapi),p=us(t.jsrapi,Y.jsrapi),m=Ci(t.goproxy),h=m[0].url,g=us(t.cargoapi,Y.cargoapi),_=us(t.dockerapi,Y.dockerapi),v=wi(),y=!n.noColor&&(n.color||i.isTTY),b=e=>y?t=>o(e,String(t),{validateStream:!1}):String,x=b(`magenta`),ee=b(`green`),te=b(`red`),ne,C={fetchTimeout:a||5e3,goProbeTimeout:a?Math.max(1,Math.floor(a/2)):Gt,concurrency:r,forgeApiUrl:l,pypiApiUrl:d,jsrApiUrl:p,goProxyUrl:h,goProxyChain:m,cratesIoUrl:g,dockerApiUrl:_,doFetch:(e,t)=>(ne??=dn(C))(async()=>{n.verbose&&console.error(`${Fe()} ${x(t?.method||`GET`)} ${e}`);let r=await Zt(e,t);return n.verbose&&console.error(`${Fe()} ${r.ok?ee(r.status):te(r.status)} ${e}`),r}),noCache:!!n.noCache},w=lr(n.greatest),T=lr(n.prerelease),E=lr(n.release),re=lr(n.patch),ie=lr(n.minor),ae=lr(n.allowDowngrade),D=n.modes?.length?new Set(n.modes):ss,O=(n.overrides??[]).map(e=>({include:e.include?.length?ar(e.include):void 0,exclude:e.exclude?.length?ar(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:Re(String(e.cooldown))})),se=(e,t)=>e.include&&t.every(t=>!Pe(t,e.include))?!1:!e.exclude||t.every(t=>!Pe(t,e.exclude)),ce=O.some(e=>e.cooldownDays);D.has(`actions`)&&An();let le=new Map;function k(e,t){let n=le.get(e);if(!n){let r=t??[e],i=e=>r.some(t=>Pe(t,e)),a=i(w),o=i(T),s=i(E),c=i(re),l=i(ie),u=i(ae),d;for(let e of O)se(e,r)&&(e.greatest!==void 0&&(a=e.greatest),e.prerelease!==void 0&&(o=e.prerelease),e.release!==void 0&&(s=e.release),e.patch!==void 0&&(c=e.patch),e.minor!==void 0&&(l=e.minor),e.allowDowngrade!==void 0&&(u=e.allowDowngrade),e.cooldownDays!==void 0&&(d=e.cooldownDays));let f=c?cs.patch:l?cs.minor:cs.major;n={useGreatest:a,usePre:o,useRel:s,semvers:f,allowDowngrade:u,cooldownOverride:d},le.set(e,n)}return n}let ue=ar(n.include??[]),de=ar(n.exclude??[]);sr(n.pin);let fe=n.pin??{},pe=(e,t,n)=>{let r=vs(fe,e);if(r)return{pinnedRange:fe[r],pinNoDowngrade:!1};let i=vs(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?Re(String(t)):0},Se=e(),Ce=e=>e.replace(`${Se}/`,``).replace(`${Se}\\`,``),N=(e,t,n,r,i,a)=>{A[e][hs(t,n,r)]={old:i,oldOrig:a}},we=(e,t,n,r)=>{if(Ur(r))return;let i=Gr(r);Vr(r)?N(`npm`,e,t,n,Jr(r,n).version,r):K(r)?N(`npm`,e,t,n,Q(r),r):i?(he.set(hs(e,t,n),i),N(`npm`,e,t,n,Q(i.range),r)):Hr(r)?N(`npm`,e,t,n,`0.0.0`,r):j[hs(e,t,n)]={old:r}},De=(e,t,n,r,i,a)=>{let o=(t,r)=>{for(let{name:o,version:s,spec:c}of Te(t))$(o,e,i,a,r)&&(N(e,r,n,o,Q(s),s),ge.set(hs(r,n,o),c))};for(let[s,c]of Ne(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`?we(s,n,r,c):e===`go`?N(e,s,n,r,ya(c),X(c)):K(c)&&N(e,s,n,r,Q(c),c))}}},P=ys(n.files?.length?new Set(n.files):!1),F=await ps(Array.from(P).filter(e=>{if(Aa(e))return D.has(`actions`)||D.has(`docker`);let t=s(e);if(uo(t))return D.has(`docker`);if(ho(t))return D.has(`make`);let n=Oe[t];return!!n&&D.has(n)}),r),Ie={},Le={},L={},Ve=[],He=null,Ue=[],R=[],Ke=[],qe=[],z=[],Je=[],B={},Ye={noCache:n.noCache,timeout:n.timeout||5e3},Xe=Ge(async e=>{let t=await fr(e,Ye);return{dirConfig:t,include:t.include?.length?ar([...n.include??[],...t.include]):ue,exclude:t.exclude?.length?ar([...n.exclude??[],...t.exclude]):de}});async function V(e){let{dirConfig:t,include:n,exclude:r}=await Xe(e);return{modeConfig:t,modeInclude:n,modeExclude:r,pin:t.pin??{}}}function Ze(e,t){return n.types?.length?n.types:t?.types?.length?t.types:e===`npm`?Ee:e===`pypi`?ke:e===`go`?n.indirect?Ae:Ae.filter(e=>e!==`indirect`):e===`cargo`?[...je,...Me]:[]}function Qe(e,t,n,r){A.docker??={};for(let i of n)for(let{ref:n}of Ua(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=Va(n.tag);i&&(A.docker[e]={old:i.version,oldOrig:n.tag},z.push({key:e,fullImage:n.fullImage,ref:n,filePin:r.pin,fileCooldownDays:r.cooldownDays}))}}async function H(e){let{dirConfig:t,include:n,exclude:r}=await Xe(e);return{include:n,exclude:r,pin:t.pin??{},pinNoDowngrade:t.pinNoDowngrade,cooldownDays:xe(t.cooldown)}}let $e=new Set,et=new Map;for(let e of P){let t=s(e);if(Object.hasOwn(ls,t))$e.add(ls[t].mode);else if(t===`Cargo.toml`){let t=F.get(e);if(!t)continue;try{let n=oe(t);et.set(e,n);let r=n.workspace?.members;Array.isArray(r)&&r.length&&$e.add(`cargo`)}catch{}}}let tt=(e,t,n,r,i,a)=>{let o=M[e]??=[],s=!o.length&&!$e.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&&(B[e]={modeConfig:i,projectDir:r,pin:a}),s?``:`|${c}`},U=(e,t)=>{try{return t()}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}};for(let e of F.keys()){if(Aa(e)){let t=D.has(`actions`),n=D.has(`docker`),r=F.get(e),i=Ce(e),a=await H(c(e));if(Ie[i]={absPath:e,content:r},t){A.actions??={};for(let e of r.split(`
17
- `)){let t=Ea(e),n=t&&ba(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},qe.push({...n,key:r,comment:t.pinnedVersion,apiUrl:xa(n.host,l),filePin:a.pin,filePinNoDowngrade:a.pinNoDowngrade,fileCooldownDays:a.cooldownDays}))}}n&&(Le[i]={absPath:e,content:r,fileType:`workflow`},Qe(r,i,[Pa,Fa,Ia],a));continue}let t=s(e);if(uo(t)){let n=F.get(e),r=Ce(e),i=lo(t)?`dockerfile`:`compose`,a=await H(c(e));Le[r]={absPath:e,content:n,fileType:i},Qe(n,r,[fo(t)],a);continue}if(ho(t)){let t=F.get(e),n=Ce(e),r=await H(c(e));L[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 bo(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},Je.push({kind:`go`,key:t,name:e,oldSpec:`${e}@${a}`,installPath:e,version:a,...i}))}for(let e of To(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=Va(e.ref.tag);if(!a)continue;let o=Co(e.writtenImage,e.ref.tag,e.digest);A.make[t]={old:a.version,oldOrig:e.ref.tag},Je.push({kind:`docker`,key:t,name:e.writtenImage,oldSpec:o,image:e,...i})}continue}let n=Oe[t];if(t===`go.work`){A[n]??={};let t=c(f(e)),i=F.get(e);He={file:e,content:i};let a=ga(i),[{modeConfig:o,modeInclude:s,modeExclude:l,pin:d},p]=await Promise.all([V(t),I(a.use,async e=>{let n=f(u(t,e,`go.mod`));try{return{usePath:e,modPath:n,content:await S(n,`utf8`)}}catch{return null}},{concurrency:r})]),m=Ze(n,o);B[n]={modeConfig:o,projectDir:t,pin:d};for(let e of p){if(!e)continue;let{usePath:t,modPath:r,content:i}=e,a=$i(i),o=c(r);Ve.push({absPath:r,content:i,projectDir:o,memberPath:t}),De(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,ya(t),X(t));continue}if(t===`go.mod`&&Ve.some(t=>t.absPath===f(e))||t===`package.json`&&R.some(t=>t.absPath===f(e)))continue;if(t===`Cargo.toml`){A[n]??={};let t=F.get(e),i=et.get(e)??oe(t),a=c(f(e)),o=fs([`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([V(a),o?S(o,`utf8`):Promise.resolve(null),l?$o(s,a,`Cargo.toml`,r):Promise.resolve([])]),_=Ze(n,u),v=h?Ro(h):new Map,y=(e,t)=>{for(let[r,i]of Ne(_,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;K(Uo(e))&&(o!==i&&me.set(hs(r,t,i),o),N(n,r,t,i,qo(v,o,e)??Q(Uo(e)),e))}else typeof a==`string`&&K(Uo(a))&&N(n,r,t,i,qo(v,i,a)??Q(Uo(a)),a)}}}};if(l){B[n]={modeConfig:u,projectDir:a,pin:m},y(i,``),Ue.push({absPath:f(e),content:t,memberPath:`.`});for(let e of g)Ue.push(e),y(U(e.absPath,()=>oe(e.content)),`|${e.memberPath}`)}else y(i,tt(n,e,t,a,u,m));continue}if(t===`pnpm-workspace.yaml`){A[n]??={};let i=c(f(e)),a=F.get(e),o=as(a),s=u(i,`package.json`),[{modeConfig:l,modeInclude:d,modeExclude:p,pin:m},h,g]=await Promise.all([V(i),Be(S(s,`utf8`)),$o(o,i,`package.json`,r)]),_=Ze(n,l);B[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 rs(a))$(r,n,d,p,e)&&we(e,`|${t}`,r,i);if(h!==null){let e=U(s,()=>JSON.parse(h));R.push({absPath:f(s),content:h,memberPath:`.`}),De(n,e,``,_,d,p)}for(let e of g){let t=U(e.absPath,()=>JSON.parse(e.content));R.push(e),De(n,t,`|${e.memberPath}`,_,d,p)}continue}A[n]??={};let i=c(f(e)),{modeConfig:a,modeInclude:o,modeExclude:d,pin:p}=await V(i),m=Ze(n,a),h=F.get(e),g=tt(n,e,h,i,a,p);De(n,U(e,()=>n===`npm`?JSON.parse(h):n===`pypi`?oe(h):n===`go`?$i(h):{}),g,m,o,d)}if(!gs(A)&&!Object.keys(j).length)return{results:{},message:`No dependencies found, nothing to do.`};let nt=[],rt=!!xe(B.npm?.modeConfig.cooldown)||(M.npm??[]).some(e=>e.modeCooldownDays)||Object.keys(A.npm??{}).some(e=>k(e.split(`\0`)[1]).cooldownOverride),W={registry:n.registry,needsDates:rt};for(let[e,t]of Object.entries(B)){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);nt.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&&!J(n,s,be)&&delete e[t]}},f=A[e],p=async(t,r,i)=>{let o=Xo(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&&Vr(p.oldOrig))h=await Yr(i,C);else if(p.oldOrig&&Hr(p.oldOrig)){let e=await Be(zr(i,o,s,W,C,c));if(!e){delete f[t];return}h=e}else h=await zr(m?.name??i,o,s,W,C,c)}else h=e===`go`?await fa(i,o,p.oldOrig||p.old,c,C,v):e===`cargo`?await Lo(me.get(t)??i,C):await hi(i,C);let[g,_]=h;if(g.error)throw Error(g.error);let y=_s(g.name,e),{useGreatest:b,usePre:ee,useRel:te,semvers:ne,allowDowngrade:S,cooldownOverride:w}=k(g.name,y),{old:T,oldOrig:E}=p,{pinnedRange:re,pinNoDowngrade:ie}=pe(y,l,s.pinNoDowngrade),ae=w??d,D=xn(g,{usePre:ee,useRel:te,useGreatest:b,semvers:ne,range:T,mode:e,pinnedRange:re,pinNoDowngrade:ie,allowDowngrade:S,cooldownDays:ae||void 0,now:ae?be:void 0}),O=``;if((e===`go`||e===`pypi`)&&D)O=D;else if(e===`cargo`&&D&&E)O=Ko(E,D);else if(D){if(E&&Hr(E))O=String(Dr(c)[`save-exact`])===`true`?D:`^${D}`;else if(E&&Vr(E)){let e=ds.exec(E);e?O=`${e[1]}${D}`:E.startsWith(`jsr:`)&&(O=`jsr:${D}`)}else O=m?`npm:${m.name}@${ui(T,D,m.range,o)}`:ui(T,D,E,o)}let oe=ge.get(t);if(!D||D===T||E&&E===O||oe&&!yi(oe,E||T,O)){n.verbose&&D&&D!==T&&console.error(`${Fe()} ${x(`SKIP`)} ${i}: ${E||T} can not be rewritten to ${D}`),delete f[t];return}let se=(e===`pypi`?g.releases?.[D]?.[0]?.upload_time_iso_8601:e===`go`?g.Time:e===`cargo`?g.time?.[D]:``)||``;p.new=O,E&&Vr(E)&&(p.newPrint=D),e===`npm`?u.set(t,{name:m?.name??i,promise:Br(g.name,D,s,W,C,c)}):e===`pypi`?p.info=tr(g,_,g.info.name):e===`go`?p.info=_a(g.newPath||i):e===`cargo`&&(p.info=`https://crates.io/crates/${g.name}`),ms(p,se)};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=tr({repository:r.repository,homepage:r.homepage},null,t),r.date&&ms(i,r.date))})),e===`npm`&&Object.keys(j).length){let e=(await I(Object.entries(j),async([e,t])=>{try{return await pi(e,t,C)}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:Un.test(a)?a.substring(0,7):a,newPrint:Un.test(o)?o.substring(0,7):o,info:`https://github.com/${r}/${i}`};s&&ms(e,s)}}d(f)})())}qe.length&&nt.push((async()=>{await I(Map.groupBy(qe,e=>`${e.apiUrl}/${e.owner}/${e.repo}`).values(),async e=>{let{apiUrl:t,owner:n,repo:i}=e[0],a;try{a=await Yn(t,n,i,C,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=Et.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=Ge(e=>Sa(t,n,i,e,C));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=yn({},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(J(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]||``:Wn(r)||(y=``),!y){delete A.actions[e];return}let{usePre:b,useRel:x,semvers:ee,cooldownOverride:te}=k(o),ne=te??m,S=await d({range:y,semvers:ee,usePre:b,useRel:x,versioning:Et,pinnedRange:_,pinNoDowngrade:v,cooldownDays:ne||void 0,now:ne?be:void 0});if(!S){delete A.actions[e];return}let{tag:C,commitSha:w,date:T}=S;if(s){if(!w||w.startsWith(r)||r.startsWith(w)){delete A.actions[e];return}h.old=r,h.new=w.substring(0,r.length),h.oldPrint=y,h.newPrint=C}else{let t=Ca(C,r);if(t===r){delete A.actions[e];return}h.new=c.has(t)?t:C}h.info=g;let E=T||(w?await Be(u(w)):``);E&&ms(h,E)};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})()),z.length&&nt.push((async()=>{await I(Map.groupBy(z,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 eo(e,C);n=t}catch(e){for(let n of t)delete A.docker[n.key],ye(`docker`,n.key,e);return}let r=_s(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=to(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=po(i.ref),ms(t,u.date)}},{concurrency:r}),Object.keys(A.docker).length||delete A.docker})()),Je.length&&nt.push((async()=>{await I(Je,async e=>{let t=_s(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 Ao(e.installPath,e.version,e.projectDir,C,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 jo(e.image,C,d);if(!n){delete A.make[e.key];return}e.newSpec=Co(e.image.writtenImage,n.newTag,e.image.digest?n.newDigest:null),f.new=n.newTag,t=n}f.info=t.info,t.date&&ms(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(nt)}finally{await Vt()}if(!gs(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=Zo(A[e],r.memberPath);Object.keys(t).length&&bs(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=Un.test(n.old)?n.newPrint:void 0;We(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 Je)!e.newSpec||!A.make?.[e.key]||We(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=Oa(r,n);bs(t,i),Le[e]&&(Le[e].content=i)}continue}if(a===`docker`){for(let[e,t]of n){let n=Le[e];if(!n)continue;let{absPath:r,content:i,fileType:a}=n;bs(r,(a===`dockerfile`?io:a===`compose`?ao:oo)(i,t))}continue}if(a===`make`){for(let[e,t]of r){let n=L[e];n&&bs(n.absPath,Mo(n.content,t))}continue}if(a===`go`){for(let e of[...Ve,...M.go??[]]){let t=Zo(A[a],e.memberPath);if(!Object.keys(t).length)continue;let[n,r]=ma(e.content,t);n!==e.content&&bs(e.absPath,n),ha(e.projectDir,r,bs)}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]=ma(He.content,e);t!==He.content&&bs(He.file,t)}}}else a===`cargo`?(e(a,Ue,Yo),e(a,M.cargo??[],Yo)):a===`npm`?(e(a,Ke,is),e(a,R,$r),e(a,M.npm??[],$r)):e(a,M[a]??[],bi)}}let it=Ss(A);return _e.length&&(it.errors=_e),it}function Ts(e){return/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):e}function Es(e){let t=rr(e);if(t!==!1)return t===!0||Array.from(t).map(Ts)}function Ds(t){if(!t)return e();let n=l(t)?t:f(e(),t),r=!1;try{r=b(n).isDirectory()}catch{}return r?n:c(n)}function Os(e,t){let n=rr(e.file),r=[...n instanceof Set?n:[],...t];return{filesList:r,startDir:Ds(r[0])}}function ks(e){let t=a({strict:!1,allowPositionals:!0,tokens:!0,options:nr,...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=ir(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),nr[s]?.multiple?(n[s]??=[]).push(u):n[s]=u}return{args:n,positionals:t.positionals.filter((e,t)=>!r.has(t))}}async function As(e,t){let{filesList:n,startDir:r}=Os(e,t),i=typeof e.timeout==`string`?ze(e.timeout,`timeout`):void 0,a={...await fr(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=ze(e.sockets,`sockets`)),typeof e.registry==`string`&&(a.registry=e.registry),typeof e.cooldown==`string`&&(a.cooldown=Number(e.cooldown)||e.cooldown);let o=or(e.include).map(Ts),s=or(e.exclude).map(Ts);o.length&&(a.include=o),s.length&&(a.exclude=s);let c=or(e.types);c.length&&(a.types=c);let l=cr(e.pin);Object.keys(l).length&&(a.pin=l);let u=rr(e.modes);u instanceof Set&&(a.modes=Array.from(u));for(let t of[`greatest`,`prerelease`,`release`,`patch`,`minor`]){let n=Es(e[t]);n!==void 0&&(a[t]=n)}let d=Es(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 js(e){try{return pr(_(u(e,`.npmrc`),`utf8`)).registry}catch{return}}function Ms(e,t){try{return`${new URL(typeof e==`string`&&e?e:t).origin}/`}catch{return null}}const Ns={npm:[`registry`,`jsrapi`,`forgeapi`],pypi:[`pypiapi`],cargo:[`cargoapi`],go:[`goproxy`],docker:[`dockerapi`],actions:[`forgeapi`,`dockerapi`],make:[`goproxy`,`dockerapi`]};function Ps(e){if(Oe[e])return Oe[e];if(uo(e))return`docker`;if(ho(e))return`make`}function Fs(e,t){let n=new Set;try{for(let t of v(e,{withFileTypes:!0}))if(t.isFile()){let e=Ps(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 Ns[i]??[]){let i=Ms(n===`registry`&&typeof t.registry!=`string`?js(e):t[n],n===`goproxy`?Ci()[0].url:Y[n]);i&&r.add(i)}return Array.from(r)}const Is=/[A-Za-z_$]/,Ls=/[A-Za-z0-9_$]/;function Rs(e){let t=``,n=0,r=e.length,i=-1;function a(t){if(e[t+1]===`/`){for(t+=2;t<r&&e[t]!==`
12
+ `)}async function Bo(e,t){let n=Ro(t.cratesIoUrl,e);return[await sn(Io,t,n,async()=>{let r=await an(n,t,Yt(),zo);`body`in r||X(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.split(`+`)[0];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 Vo(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];Ye(a)&&Ue(t,i,a)}return t}const Ho=/^\d/,Uo=/^(\d+(?:\.\d+)*)((?:\.[*xX])+)$/,Wo=/\s*,\s*/g,Go=/(\s*,\s*)/,Ko=e=>e.includes(`,`)?e.replace(Wo,` `):e,qo=e=>Ko(Ho.test(e)&&!Uo.test(e)?`^${e}`:e);function Jo(e,t){if(e.startsWith(`<`)&&K(t,e))return e;let n=Uo.exec(e);if(n){let[,e,r]=n;return`${t.split(/[-+]/)[0].split(`.`).slice(0,e.split(`.`).length).join(`.`)}${r}`}return Ho.test(e)?fi(Z(`^${e}`),t,`^${e}`).replace(/^\^/,``):fi(Z(e),t,e)}function Yo(e,t){if(!e.includes(`,`))return Jo(e,t);let n=e.split(Go);for(let e=0;e<n.length;e+=2)n[e]=Jo(n[e],t);return n.join(``)}function Xo(e,t,n){let r=e.get(t);if(!r)return;let i=qo(n),a;for(let e of r)K(e,i)&&(!a||W(e,a))&&(a=e);return a}const Zo=e=>`(?:${R(e)}|"${R(e)}"|'${R(e)}')`,Qo=/^[ \t]*\[(\[?)[ \t]*([^[\]]+?)[ \t]*\]\1[ \t]*(?:#.*)?[ \t\r]*$/;function $o(e){for(let t of[`"""`,`'''`])if(e.split(t).length%2==0)return t;return``}function es(e){let t=[],n=``,r=0;for(let i of e.split(`
14
+ `)){if(n)i.includes(n)&&(n=``);else{let a=Qo.exec(i);if(a){let n=t.at(-1);n&&(n.end=r),t.push({path:a[1]?``:a[2],start:r,end:e.length})}else n=$o(i)}r+=i.length+1}return t}function ts(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=Zo(i),c=R(a),l=t.split(`|`)[0].split(`.`).map(Zo).join(`\\.`),u=RegExp(`^${l}\\.${s}$`),d=RegExp(`^${l}$`),f=e=>e.replace(RegExp(`^(\\s*${s}\\s*=\\s*["'])${c}(["'].*)$`,`gm`),`$1${o}$2`).replace(RegExp(`^(\\s*${s}\\s*=\\s*\\{(?:"[^"\\n]*"|'[^'\\n]*'|[^"'}\\n])*?\\bversion\\s*=\\s*["'])${c}(["'])`,`gm`),`$1${o}$2`).replace(RegExp(`(\\[${l}\\.${s}\\](?:(?!\\n\\[)[\\s\\S])*?version\\s*=\\s*["'])${c}(["'])`,`g`),`$1${o}$2`),p=es(n),m=p.find(e=>u.test(e.path))??p.find(e=>d.test(e.path));n=m?n.slice(0,m.start)+f(n.slice(m.start,m.end))+n.slice(m.end):f(n)}return n}function ns(e){let t=e.indexOf(`|`);return t===-1?e:e.slice(0,t)}function rs(e,t){let n=t===`.`?``:`|${t}`,r={};for(let[t,i]of Object.entries(e)){let[e,a]=t.split(`\0`),o=ns(e);e===`${o}${n}`&&(r[`${o}${a}`]=i)}return r}const is=/[*?{[]/;async function as(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=is.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 L(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 os=/^(\s*)(?:"([^"]*)"|'([^']*)'|([^\s#][^:#]*?))\s*:(?:\s+(.*))?$/,ss=/\s#/;function cs(e){let t=os.exec(e);if(!t)return null;let[,n,r,i,a,o=``]=t,s=e.length-o.length,c=o.search(ss),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*ls(e){let t=``,n=``,r=-1;for(let[i,a]of e.split(`
15
+ `).entries()){let e=cs(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 us(e,t){let n=e.split(`
16
+ `),r=!1;for(let{type:i,name:a,value:o,lineIndex:s,valueIndex:c}of ls(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(`
17
+ `):e}function ds(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 fs=[...new Set(Object.values(F)),`actions`,`docker`,`make`],ps=new Set(fs),ms={patch:new Set([`patch`]),minor:new Set([`patch`,`minor`]),major:new Set([`patch`,`minor`,`major`])},hs={"go.work":{mode:`go`,supersedes:`go.mod`},"pnpm-workspace.yaml":{mode:`npm`,supersedes:`package.json`}},gs=(e,t)=>typeof e==`string`?Jt(e):typeof t==`function`?t():t,_s=/^(npm:@jsr\/[^@]+@|jsr:@[^@]+@)(.+)$/;function vs(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 ys(e,t){let n=await L(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 bs(e,t){t&&(e.date=t,e.age=jt(t,{noAffix:!0,shortUnits:!0}))}const xs=(e,t,n)=>`${e}${t}${n}`,Ss=e=>Object.values(e).reduce((e,t)=>e+Object.keys(t).length,0),Cs=e=>e.toLowerCase().replace(/[-_.]+/g,`-`);function ws(e,t){return t===`go`?[e,ba(e)]:t===`docker`?Va(e):[e]}const Ts=(e,t)=>t.find(t=>e[t]);function Q(e,t,n,r,i,a=t){if(i===`engines`&&De.includes(e)||t===`pypi`&&e===`python`)return!1;if(!n.size&&!r.size)return!0;let o=ws(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 Es(t){let n=new Set;if(t)for(let e of t){let t;try{t=y(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}let r=f(e);try{r=v.native(e)}catch{}if(t.isFile())n.add(r);else if(t.isDirectory()){try{for(let e of _(r,{withFileTypes:!0}))e.isFile()&&(Object.hasOwn(F,e.name)||mo(e.name)||vo(e.name))&&n.add(f(u(r,e.name)))}catch{}let e=r.replace(/\\/g,`/`),t=P.some(t=>e.endsWith(`/${t}/workflows`)),i=!t&&P.some(t=>e.endsWith(`/${t}`)),a=t?[c(e)]:i?[e]:P.map(t=>u(e,t));for(let e of a)for(let t of Na(e))n.add(t)}else throw Error(`${e} is neither a file nor directory`)}else{let t=new Set(P),r=[...Object.keys(F),...uo,..._o,...P],i=new Set;for(let[a,o]of vs(r,e())){if(t.has(a)){for(let e of Na(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=mo(t.name)&&!uo.includes(t.name),i=vo(t.name)&&!_o.includes(t.name);t.isFile()&&(r||i)&&n.add(f(u(e(),t.name)))}}catch{}}let r=[];for(let e of Array.from(n)){let t=s(e);Object.hasOwn(hs,t)&&(r.push(e),n.delete(u(c(e),hs[t].supersedes)))}return r.length?new Set([...r,...n]):n}function $(e,t){r===`win32`&&b(e,0),ee(e,t,r===`win32`?{flag:`r+`}:void 0)}const Ds=(e,t)=>`${e}${t.split(`\0`,2).join(`\0`)}`;function Os(e){let t={results:{}},n=new Map,r=Object.entries(e).sort(([e],[t])=>fs.indexOf(e)-fs.indexOf(t));for(let[e,t]of r)for(let r of Object.keys(t)){let t=Ds(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`&&!Ur(a.oldOrig)&&(a.old=e===`go`?xa(a.oldOrig):a.oldOrig),e===`go`?a.new=xa(a.new):e===`actions`&&(a.old=Y(a.old),a.new=Y(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(Ds(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<t?-1:+(e>t)));return t}let ks=!1;async function As(t={}){if(!ks){let{enableDnsCache:e}=await import(`./dns.js`);e(),ks=!0}let n={...t};typeof n.timeout==`number`&&(n.timeout=Re(n.timeout,`timeout`));let r=n.sockets??25,a=n.timeout??0,l=gs(t.forgeapi,J.forgeapi),d=gs(t.pypiapi,J.pypiapi),p=gs(t.jsrapi,J.jsrapi),m=Ti(t.goproxy),h=m[0].url,g=gs(t.cargoapi,J.cargoapi),_=gs(t.dockerapi,J.dockerapi),v=Ei(),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`),S,C={fetchTimeout:a||5e3,goProbeTimeout:a?Math.max(1,Math.floor(a/2)):Kt,concurrency:r,forgeApiUrl:l,pypiApiUrl:d,jsrApiUrl:p,goProxyUrl:h,goProxyChain:m,cratesIoUrl:g,dockerApiUrl:_,doFetch:(e,t)=>(S??=fn(C))(async()=>{n.verbose&&console.error(`${Pe()} ${ee(t?.method||`GET`)} ${e}`);let r=await Qt(e,t);return n.verbose&&console.error(`${Pe()} ${r.ok?te(r.status):ne(r.status)} ${e}`),r}),noCache:!!n.noCache},re=lr(n.greatest),ie=lr(n.prerelease),w=lr(n.release),T=lr(n.patch),ae=lr(n.minor),oe=lr(n.allowDowngrade);for(let e of n.modes??[])if(!ps.has(e))throw Error(`Invalid mode: ${e}, expected one of: ${fs.join(`,`)}`);let E=n.modes?.length?new Set(n.modes):ps,D=(n.overrides??[]).map(e=>({include:e.include?.length?ar(e.include):void 0,exclude:e.exclude?.length?ar(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))})),se=(e,t)=>e.include&&t.every(t=>!Ne(t,e.include))?!1:!e.exclude||t.every(t=>!Ne(t,e.exclude)),k=D.some(e=>e.cooldownDays);E.has(`actions`)&&An();let ce=new Map;function le(e,t){let n=`${e}${t}`,r=ce.get(n);if(!r){let i=ws(t,e),a=e=>i.some(t=>Ne(t,e)),o=a(re),s=a(ie),c=a(w),l=a(T),u=a(ae),d=a(oe),f;for(let e of D)se(e,i)&&(e.greatest!==void 0&&(o=e.greatest),e.prerelease!==void 0&&(s=e.prerelease),e.release!==void 0&&(c=e.release),e.patch!==void 0&&(l=e.patch),e.minor!==void 0&&(u=e.minor),e.allowDowngrade!==void 0&&(d=e.allowDowngrade),e.cooldownDays!==void 0&&(f=e.cooldownDays));let p=l?ms.patch:u?ms.minor:ms.major;r={names:i,useGreatest:o,usePre:s,useRel:c,semvers:p,allowDowngrade:d,cooldownOverride:f},ce.set(n,r)}return r}let ue=ar(n.include??[]),de=ar(n.exclude??[]);sr(n.pin);let fe=n.pin??{},pe=(e,t,n)=>{let r=Ts(fe,e);if(r)return{pinnedRange:fe[r],pinNoDowngrade:!1};let i=Ts(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][xs(t,n,r)]={old:i,oldOrig:a}},we=(e,t,n,r)=>{if(Gr(r))return;let i=qr(r);Ur(r)?N(`npm`,e,t,n,Xr(r,n).version,r):ut(r)?N(`npm`,e,t,n,Z(r),r):i?(he.set(xs(e,t,n),i),N(`npm`,e,t,n,Z(i.range),r)):Wr(r)?N(`npm`,e,t,n,`0.0.0`,r):j[xs(e,t,n)]={old:r}},De=(e,t,n,r,i,a)=>{let o=new Set(Object.keys(t.tool?.uv?.sources??{}).map(Cs)),s=(t,r)=>{for(let{name:s,version:c,spec:l}of Te(t))o.has(Cs(s))||Q(s,e,i,a,r)&&(N(e,r,n,s,Z(c),c),ge.set(xs(r,n,s),l))};for(let[o,c]of Me(r,t)){let t=c||{};if(Array.isArray(t)){if(e!==`pypi`)continue;s(t,o)}else if(typeof t==`string`){let[r,s]=t.split(`@`);Q(r,e,i,a,o)&&N(e,o,n,r,Z(s),s)}else{let r=Object.entries(t),c=new Set;if(e===`npm`){let e=t=>{if(!(!t||typeof t!=`object`))for(let[n,r]of Object.entries(t))c.add(n),e(r)};for(let[,t]of r)e(t)}for(let[t,l]of r){if(e===`pypi`&&Array.isArray(l)){s(l,`${o}.${t}`);continue}typeof l!=`string`||c.has(t)||Q(t,e,i,a,o)&&(e===`npm`?we(o,n,t,l):e===`go`?N(e,o,n,t,xa(l),Y(l)):ut(l)&&N(e,o,n,t,Z(l),l))}}}},P=Es(n.files?.length?new Set(n.files):!1),I=await ys(Array.from(P).filter(e=>{if(Ma(e))return E.has(`actions`)||E.has(`docker`);let t=s(e);if(mo(t))return E.has(`docker`);if(vo(t))return E.has(`make`);let n=F[t];return!!n&&E.has(n)}),r),Fe={},Ie={},R={},Be=[],Ve=null,He=[],z=[],Ge=[],Ke=[],B=[],qe=[],V={},Je={noCache:n.noCache,timeout:n.timeout||5e3},Ye=We(async e=>{let t=await fr(e,Je);return{dirConfig:t,include:t.include?.length?ar([...n.include??[],...t.include]):ue,exclude:t.exclude?.length?ar([...n.exclude??[],...t.exclude]):de}});async function H(e){let{dirConfig:t,include:n,exclude:r}=await Ye(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`?Ee:e===`pypi`?Oe:e===`go`?n.indirect?ke:ke.filter(e=>e!==`indirect`):e===`cargo`?[...Ae,...je]:[]}function Ze(e,t,n,r){A.docker??={};for(let i of n)for(let{ref:n}of Ga(e,i)){if(!Q(n.fullImage,`docker`,r.include,r.exclude,`docker`))continue;let e=`${t}${n.fullImage}${n.tag}`;if(A.docker[e])continue;let i=Ua(n.tag);i&&(A.docker[e]={old:i.version,oldOrig:n.tag},B.push({key:e,fullImage:n.fullImage,ref:n,filePin:r.pin,fileCooldownDays:r.cooldownDays}))}}async function U(e){let{dirConfig:t,include:n,exclude:r}=await Ye(e);return{include:n,exclude:r,pin:t.pin??{},pinNoDowngrade:t.pinNoDowngrade,cooldownDays:xe(t.cooldown)}}let Qe=new Set,$e=new Map,et=[];for(let e of P){let t=s(e);if(Object.hasOwn(hs,t))Qe.add(hs[t].mode);else if(t===`Cargo.toml`){let t=I.get(e);if(!t)continue;try{let n=O(t);$e.set(e,n);let r=n.workspace?.members;Array.isArray(r)&&r.length&&(Qe.add(`cargo`),et.push(e))}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}`},tt=(e,t)=>{try{return t()}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}};for(let e of et.length?new Set([...et,...I.keys()]):I.keys()){if(Ma(e)){let t=E.has(`actions`),n=E.has(`docker`),r=I.get(e),i=Ce(e),a=await U(c(e));if(Fe[i]={absPath:e,content:r},t){A.actions??={};for(let e of r.split(`
18
+ `)){let t=Oa(e),n=t&&Sa(t.value);if(!n||!Q(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},Ke.push({...n,key:r,comment:t.pinnedVersion,apiUrl:Ca(n.host,l),filePin:a.pin,filePinNoDowngrade:a.pinNoDowngrade,fileCooldownDays:a.cooldownDays}))}}n&&(Ie[i]={absPath:e,content:r,fileType:`workflow`},Ze(r,i,[Ia,La,Ra],a));continue}let t=s(e);if(mo(t)){let n=I.get(e),r=Ce(e),i=po(t)?`dockerfile`:`compose`,a=await U(c(e));Ie[r]={absPath:e,content:n,fileType:i},Ze(n,r,[ho(t)],a);continue}if(vo(t)){let t=I.get(e),n=Ce(e),r=await U(c(e));R[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 Co(t)){if(!Q(e,`make`,r.include,r.exclude,`make`,`go`))continue;let t=`${n}${e}${a}`;A.make[t]||(A.make[t]={old:Y(a),oldOrig:a},qe.push({kind:`go`,key:t,name:e,oldSpec:`${e}@${a}`,installPath:e,version:a,...i}))}for(let e of Oo(t)){if(!Q(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=Ua(e.ref.tag);if(!a)continue;let o=Eo(e.writtenImage,e.ref.tag,e.digest);A.make[t]={old:a.version,oldOrig:e.ref.tag},qe.push({kind:`docker`,key:t,name:e.writtenImage,oldSpec:o,image:e,...i})}continue}let n=F[t];if(t===`go.work`){A[n]??={};let t=c(f(e)),i=I.get(e);Ve={file:e,content:i};let a=va(i),[{modeConfig:o,modeInclude:s,modeExclude:l,pin:d},p]=await Promise.all([H(t),L(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=ta(i),o=c(r);Be.push({absPath:r,content:i,projectDir:o,memberPath:t}),De(n,a,t===`.`?``:`|${t}`,m,s,l)}for(let[e,t]of Object.entries(a.replace))Q(e,n,s,l,`replace`)&&N(n,`replace`,``,e,xa(t),Y(t));continue}if(t===`go.mod`&&Be.some(t=>t.absPath===f(e))||t===`package.json`&&z.some(t=>t.absPath===f(e))||t===`Cargo.toml`&&He.some(t=>t.absPath===f(e)))continue;if(t===`Cargo.toml`){A[n]??={};let t=I.get(e),i=$e.get(e)??O(t),a=c(f(e)),o=vs([`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([H(a),o?x(o,`utf8`):Promise.resolve(null),l?as(s,a,`Cargo.toml`,r):Promise.resolve([])]),_=Xe(n,u),v=h?Vo(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(Q(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;ut(Ko(e))&&(o!==i&&me.set(xs(r,t,i),o),N(n,r,t,i,Xo(v,o,e)??Z(Ko(e)),e))}else typeof a==`string`&&ut(Ko(a))&&N(n,r,t,i,Xo(v,i,a)??Z(Ko(a)),a)}}}};if(l){V[n]={modeConfig:u,projectDir:a,pin:m},y(i,``),He.push({absPath:f(e),content:t,memberPath:`.`});for(let e of g)He.push(e),y(tt(e.absPath,()=>O(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=I.get(e),o=ds(a),s=u(i,`package.json`),[{modeConfig:l,modeInclude:d,modeExclude:p,pin:m},h,g]=await Promise.all([H(i),ze(x(s,`utf8`)),as(o,i,`package.json`,r)]),_=Xe(n,l);V[n]={modeConfig:l,projectDir:i,pin:m},Ge.push({absPath:f(e),content:a,memberPath:t});for(let{type:e,name:r,value:i}of ls(a))Q(r,n,d,p,e)&&we(e,`|${t}`,r,i);if(h!==null){let e=tt(s,()=>JSON.parse(h));z.push({absPath:f(s),content:h,memberPath:`.`}),De(n,e,``,_,d,p)}for(let e of g){let t=tt(e.absPath,()=>JSON.parse(e.content));z.push(e),De(n,t,`|${e.memberPath}`,_,d,p)}continue}A[n]??={};let i=c(f(e)),{modeConfig:a,modeInclude:o,modeExclude:d,pin:p}=await H(i),m=Xe(n,a),h=I.get(e),g=W(n,e,h,i,a,p);De(n,tt(e,()=>n===`npm`?JSON.parse(h):n===`pypi`?O(h):n===`go`?ta(h):{}),g,m,o,d)}if(!Ss(A)&&!Object.keys(j).length)return{results:{},message:`No dependencies found, nothing to do.`};let nt=[],G=(e,t)=>he.get(e)?.name??(Cr.has(e.split(`\0`)[0].split(`|`)[0])?wr(t):t),rt=!!xe(V.npm?.modeConfig.cooldown)||(M.npm??[]).some(e=>e.modeCooldownDays)||k&&Object.keys(A.npm??{}).some(e=>le(`npm`,G(e,e.split(`\0`)[1])).cooldownOverride),it={registry:n.registry,needsDates:rt};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);nt.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=t=>{for(let[n,{date:r}]of Object.entries(t)){if(!r)continue;let[i,o]=n.split(`\0`),{modeCooldownDays:s}=a(i);if(!s&&!k)continue;let c=le(e,e===`npm`?G(n,o):o).cooldownOverride??s;c&&!Ut(r,c,be)&&delete t[n]}},f=A[e],p=async(t,r,i)=>{let o=ns(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&&Ur(p.oldOrig))h=await Zr(i,C);else if(p.oldOrig&&Wr(p.oldOrig)){let e=await ze(Vr(i,o,s,it,C,c));if(!e){delete f[t];return}h=e}else h=await Vr(m?.name??i,o,s,it,C,c,p.old)}else h=e===`go`?await ma(i,o,p.oldOrig||p.old,c,C,v):e===`cargo`?await Bo(me.get(t)??i,C):await _i(i,C);let[g,_]=h;if(g.error)throw Error(g.error);let y=o===`packageManager`?i:g.name,{names:b,useGreatest:te,usePre:ne,useRel:x,semvers:S,allowDowngrade:re,cooldownOverride:ie}=le(e,y),{old:w,oldOrig:T}=p,{pinnedRange:ae,pinNoDowngrade:oe}=pe(b,l,s.pinNoDowngrade),E=ie??d,D=xn(g,{usePre:ne,useRel:x,useGreatest:te,semvers:S,range:w,mode:e,pinnedRange:ae,pinNoDowngrade:oe,allowDowngrade:re,cooldownDays:E||void 0,now:E?be:void 0}),O=``;if((e===`go`||e===`pypi`)&&D)O=D;else if(e===`cargo`&&D&&T)O=Yo(T,D);else if(D){if(T&&Wr(T))O=String(Or(c)[`save-exact`])===`true`?D:`^${D}`;else if(T&&Ur(T)){let e=_s.exec(T);e?O=`${e[1]}${D}`:T.startsWith(`jsr:`)&&(O=`jsr:${D}`)}else O=m?`npm:${m.name}@${fi(w,D,m.range,o)}`:fi(w,D,T,o)}let se=ge.get(t);if(!D||D===w||T&&T===O||se&&!xi(se,T||w,O)){n.verbose&&D&&D!==w&&console.error(`${Pe()} ${ee(`SKIP`)} ${i}: ${T||w} can not be rewritten to ${D}`),delete f[t];return}let k=(e===`pypi`?g.releases?.[D]?.[0]?.upload_time_iso_8601:e===`go`?g.Time:e===`cargo`?g.time?.[D]:``)||``;p.new=O,T&&Ur(T)&&(p.newPrint=D),e===`npm`?u.set(t,{name:m?.name??i,promise:Hr(g.name,D,s,it,C,c)}):e===`pypi`?p.info=tr(g,_,g.info.name):e===`go`?p.info=ya(g.newPath||i):e===`cargo`&&(p.info=`https://crates.io/crates/${g.name}`),bs(p,k)};if(await L(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=tr({repository:r.repository,homepage:r.homepage},null,t),r.date&&bs(i,r.date))})),e===`npm`&&Object.keys(j).length){let e=(await L(Object.entries(j),async([e,t])=>{try{return await hi(e,t,C)}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:Un.test(a)?a.substring(0,7):a,newPrint:Un.test(o)?o.substring(0,7):o,info:`https://github.com/${r}/${i}`};s&&bs(e,s)}}d(f)})())}Ke.length&&nt.push((async()=>{await L(Map.groupBy(Ke,e=>`${e.apiUrl}/${e.owner}/${e.repo}`).values(),async e=>{let{apiUrl:t,owner:n,repo:i}=e[0],a;try{a=await Yn(t,n,i,C,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=Et.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=>wa(t,n,i,e,C));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=yn({},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(Ut(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]||``:Wn(r)||(y=``),!y){delete A.actions[e];return}let{useGreatest:b,usePre:ee,useRel:te,semvers:ne,allowDowngrade:x,cooldownOverride:S}=le(`actions`,o),C=S??m,re=await d({range:y,semvers:ne,useGreatest:b,usePre:ee,useRel:te,allowDowngrade:x,versioning:Et,pinnedRange:_,pinNoDowngrade:v,cooldownDays:C||void 0,now:C?be:void 0});if(!re){delete A.actions[e];return}let{tag:ie,commitSha:w,date:T}=re;if(s){if(!w||w.startsWith(r)||r.startsWith(w)){delete A.actions[e];return}h.old=r,h.new=w.substring(0,r.length),h.oldPrint=y,h.newPrint=ie}else{let t=Ta(ie,r);if(t===r){delete A.actions[e];return}h.new=c.has(t)?t:ie}h.info=g;let ae=T||(w?await ze(u(w)):``);ae&&bs(h,ae)};await L(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})()),B.length&&nt.push((async()=>{await L(Map.groupBy(B,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 no(e,C);n=t}catch(e){for(let n of t)delete A.docker[n.key],ye(`docker`,n.key,e);return}let{names:r,semvers:i,usePre:a,useRel:o,cooldownOverride:s}=le(`docker`,e);for(let e of t){let t=A.docker[e.key],c=t.oldOrig||t.old,{pinnedRange:l}=pe(r,e.filePin),u=s??e.fileCooldownDays,d=io(n.tags,c,i,u||void 0,u?be:void 0,l,a,o);if(!d){delete A.docker[e.key];continue}t.new=d.newTag,t.info=go(e.ref),bs(t,d.date)}},{concurrency:r}),Object.keys(A.docker).length||delete A.docker})()),qe.length&&nt.push((async()=>{await L(qe,async e=>{let{names:t,useGreatest:n,usePre:r,useRel:i,semvers:a,allowDowngrade:o,cooldownOverride:s}=le(e.kind,e.name),{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 No(e.installPath,e.version,e.projectDir,C,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 Po(e.image,C,d);if(!n){delete A.make[e.key];return}e.newSpec=Eo(e.image.writtenImage,n.newTag,e.image.digest?n.newDigest:null),f.new=n.newTag,t=n}f.info=t.info,t.date&&bs(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(nt)}finally{await Vt()}if(!Ss(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=rs(A[e],r.memberPath);Object.keys(t).length&&$(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=Un.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 qe)!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}=Fe[e]||{};if(!t)continue;let i=Aa(r,n);$(t,i),Ie[e]&&(Ie[e].content=i)}continue}if(a===`docker`){for(let[e,t]of n){let n=Ie[e];if(!n)continue;let{absPath:r,content:i,fileType:a}=n;$(r,(a===`dockerfile`?so:a===`compose`?co:lo)(i,t))}continue}if(a===`make`){for(let[e,t]of r){let n=R[e];n&&$(n.absPath,Fo(n.content,t))}continue}if(a===`go`){for(let e of[...Be,...M.go??[]]){let t=rs(A[a],e.memberPath);if(!Object.keys(t).length)continue;let[n,r]=ga(e.content,t);n!==e.content&&$(e.absPath,n),_a(e.projectDir,r,$)}if(Ve){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]=ga(Ve.content,e);t!==Ve.content&&$(Ve.file,t)}}}else a===`cargo`?(e(a,He,ts),e(a,M.cargo??[],ts)):a===`npm`?(e(a,Ge,us),e(a,z,ti),e(a,M.npm??[],ti)):e(a,M[a]??[],Si)}}let at=Os(A);return _e.length&&(at.errors=_e),at}function js(e){return/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):e}function Ms(e){let t=rr(e);if(t!==!1)return t===!0||Array.from(t).map(js)}function Ns(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 Ps(e,t){let n=rr(e.file),r=[...n instanceof Set?n:[],...t];return{filesList:r,startDir:Ns(r[0])}}function Fs(e){let t=a({strict:!1,allowPositionals:!0,tokens:!0,options:nr,...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.inlineValue||!a.value?.startsWith(`-`))continue;let o=a.value.startsWith(`--`)?2:1,s=ir(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),nr[s]?.multiple?(n[s]??=[]).push(u):n[s]=u}return{args:n,positionals:t.positionals.filter((e,t)=>!r.has(t))}}async function Is(e,t){let{filesList:n,startDir:r}=Ps(e,t),i=typeof e.timeout==`string`?Re(e.timeout,`timeout`):void 0,a={...await fr(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=or(e.include).map(js),s=or(e.exclude).map(js);o.length&&(a.include=o),s.length&&(a.exclude=s);let c=or(e.types);c.length&&(a.types=c);let l=cr(e.pin);Object.keys(l).length&&(a.pin=l);let u=rr(e.modes);u instanceof Set&&(a.modes=Array.from(u));for(let t of[`greatest`,`prerelease`,`release`,`patch`,`minor`]){let n=Ms(e[t]);n!==void 0&&(a[t]=n)}let d=Ms(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 Ls(e){try{return pr(g(u(e,`.npmrc`),`utf8`)).registry}catch{return}}function Rs(e,t){try{return`${new URL(typeof e==`string`&&e?e:t).origin}/`}catch{return null}}const zs={npm:[`registry`,`jsrapi`,`forgeapi`],pypi:[`pypiapi`],cargo:[`cargoapi`],go:[`goproxy`],docker:[`dockerapi`],actions:[`forgeapi`,`dockerapi`],make:[`goproxy`,`dockerapi`]};function Bs(e){if(F[e])return F[e];if(mo(e))return`docker`;if(vo(e))return`make`}function Vs(e,t){let n=new Set,r=rr(t.modes),i=e=>!(r instanceof Set)||r.has(e);try{for(let t of _(e,{withFileTypes:!0}))if(t.isFile()){let e=Bs(t.name);e&&i(e)&&n.add(e)}else t.isDirectory()&&P.some(e=>e===t.name)&&(i(`actions`)?n.add(`actions`):i(`docker`)&&n.add(`docker`))}catch{}let a=new Set;for(let r of n)for(let n of zs[r]??[]){let r=Rs(n===`registry`&&typeof t.registry!=`string`?Ls(e):t[n],n===`goproxy`?Ti()[0].url:J[n]);r&&a.add(r)}return Array.from(a)}const Hs=/[A-Za-z_$]/,Us=/[A-Za-z0-9_$]/;function Ws(e){let t=``,n=0,r=e.length,i=-1;function a(t){if(e[t+1]===`/`){for(t+=2;t<r&&e[t]!==`
18
19
  `;)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===`
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(Is.test(s)){i=-1;let a=``;for(;n<r&&Ls.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{Bt as $,$n as A,qt as B,Qn as C,An as D,In as E,bn as F,J as G,Gn as H,Zn as I,Vn as J,en as K,Xt as L,Gt as M,Un as N,tr as O,_n as P,Lt as Q,Wn as R,yn as S,Jt as T,Mn as U,Ut as V,Kn as W,Z as X,X as Y,Sn as Z,an as _,Os as a,Ie as at,Qt as b,Ln as c,Y as d,K as et,Zt as f,qn as g,Bn as h,As as i,Ge as it,Kt as j,dn as k,vn as l,Yn as m,Fs as n,R as nt,ws as o,Ue as ot,ln as p,Hn as q,ks as r,_e as rt,va as s,Rs as t,P as tt,on as u,Wt as v,En as w,xn as x,rn as y,fn as z};
20
+ `){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(Hs.test(s)){i=-1;let a=``;for(;n<r&&Us.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{Bt as $,$n as A,Wt as B,Qn as C,An as D,In as E,Zn as F,_n as G,Mn as H,Zt as I,Vn as J,tn as K,Wn as L,Kt as M,Un as N,tr as O,bn as P,Lt as Q,pn as R,yn as S,Yt as T,Kn as U,Gn as V,Ut as W,X,Y,Sn as Z,on as _,Ps as a,Fe as at,$t as b,Ln as c,J as d,ut as et,Qt as f,qn as g,Bn as h,Is as i,We as it,qt as j,fn as k,vn as l,Yn as m,Vs as n,z as nt,As as o,He as ot,un as p,Hn as q,Fs as r,_e as rt,ba as s,Ws as t,P as tt,sn as u,Gt as v,En as w,xn as x,an as y,Jt as z};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "updates",
3
- "version": "18.0.0",
4
- "description": "CLI dependency update tool for npm, uv, cargo, go, actions, docker and make",
3
+ "version": "18.0.2",
4
+ "description": "CLI to update npm, uv, cargo, go, docker and actions dependencies",
5
5
  "author": "silverwind",
6
6
  "repository": {
7
7
  "type": "git",
@@ -42,20 +42,20 @@
42
42
  "bun": "*"
43
43
  },
44
44
  "devDependencies": {
45
- "@types/node": "26.1.2",
45
+ "@types/node": "26.2.0",
46
46
  "@typescript/native-preview": "7.0.0-dev.20260707.2",
47
- "@vitest/coverage-v8": "4.1.10",
48
- "eslint": "10.8.0",
49
- "eslint-config-silverwind": "144.0.0",
47
+ "@vitest/coverage-v8": "4.1.11",
48
+ "eslint": "10.8.1",
49
+ "eslint-config-silverwind": "145.0.0",
50
50
  "timerel": "5.9.0",
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
55
  "updates-config-silverwind": "4.0.5",
56
- "versions": "15.3.1",
57
- "vitest": "4.1.10",
58
- "vitest-config-silverwind": "11.5.0"
56
+ "versions": "15.3.4",
57
+ "vitest": "4.1.11",
58
+ "vitest-config-silverwind": "11.6.0"
59
59
  },
60
60
  "bin": {
61
61
  "updates": "dist/index.js"