updates 18.0.1 → 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 +22 -65
- package/dist/shared.js +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|

|
|
5
5
|
|
|
6
|
-
`updates` is a CLI tool
|
|
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,12 +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. Only Docker Hub is queried, so an image on another registry produces no row and no error, as does a `Dockerfile` or compose reference pinned to a digest.
|
|
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. A `packageManager` of `yarn` at 2 or above is looked up as `@yarnpkg/cli`, where corepack publishes it, as Renovate does. A nested `overrides` object carries no version of its own, so it is skipped, and so is a `pyproject.toml` dependency that `[tool.uv.sources]` gives a source of its own, which uv never resolves from pypi.
|
|
21
|
-
|
|
22
|
-
A deprecated npm version is never offered, as Renovate's `ignoreDeprecated` does, unless the authored version is itself deprecated.
|
|
23
|
-
|
|
24
18
|
## Usage
|
|
25
19
|
|
|
26
20
|
```bash
|
|
@@ -37,11 +31,11 @@ npx updates -u && npm i
|
|
|
37
31
|
|:-|:-|
|
|
38
32
|
|`-u, --update`|Update versions and write dependency file|
|
|
39
33
|
|`-f, --file <path,...>`|File or directory to use, defaults to current directory|
|
|
40
|
-
|`-M, --modes <mode,...>`|Which modes to enable. Either `npm`, `pypi`, `go`, `cargo`, `actions`, `docker`, `make`. Default:
|
|
34
|
+
|`-M, --modes <mode,...>`|Which modes to enable. Either `npm`, `pypi`, `go`, `cargo`, `actions`, `docker`, `make`. Default: all|
|
|
41
35
|
|`-i, --include <dep,...>`|Include only given dependencies|
|
|
42
36
|
|`-e, --exclude <dep,...>`|Exclude given dependencies|
|
|
43
37
|
|`-l, --pin <dep=range>`|Pin dependency to given semver range|
|
|
44
|
-
|`-C, --cooldown <duration>`|Minimum dependency age
|
|
38
|
+
|`-C, --cooldown <duration>`|Minimum dependency age, like `12h`, `7d`, `2w`, `5m` (30 days), `1y` (365 days). A bare number is days|
|
|
45
39
|
|`-p, --prerelease [<dep,...>]`|Consider prereleases, implying `--greatest`|
|
|
46
40
|
|`-R, --release [<dep,...>]`|Never consider prereleases|
|
|
47
41
|
|`-g, --greatest [<dep,...>]`|Ignore the `latest` tag and take the greatest release|
|
|
@@ -50,7 +44,7 @@ npx updates -u && npm i
|
|
|
50
44
|
|`-m, --minor [<dep,...>]`|Consider only up to semver-minor|
|
|
51
45
|
|`-d, --allow-downgrade [<dep,...>]`|Allow downgrading onto a lower `latest` tag|
|
|
52
46
|
|`-s, --sockets <num>`|Maximum number of parallel HTTP sockets opened. Default: 25|
|
|
53
|
-
|`-T, --timeout <ms>`|Network request timeout in ms
|
|
47
|
+
|`-T, --timeout <ms>`|Network request timeout in ms. Default: 5000|
|
|
54
48
|
|`-r, --registry <url>`|Override npm registry URL|
|
|
55
49
|
|`-I, --indirect`|Include indirect Go dependencies|
|
|
56
50
|
|`-E, --error-on-outdated`|Exit with code 2 when updates are available and 0 when not|
|
|
@@ -63,19 +57,13 @@ npx updates -u && npm i
|
|
|
63
57
|
|`-V, --verbose`|Print verbose output to stderr|
|
|
64
58
|
|`-h, --help`|Print the help|
|
|
65
59
|
|
|
66
|
-
Options
|
|
67
|
-
|
|
68
|
-
An invalid `--sockets`, `--timeout`, `--modes` or `--pin` range aborts the run rather than being ignored. `--sockets` and `--timeout` are rounded to a whole number.
|
|
69
|
-
|
|
70
|
-
## Failed Lookups
|
|
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
|
-
A
|
|
73
|
-
|
|
74
|
-
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`.
|
|
75
63
|
|
|
76
64
|
## Config File
|
|
77
65
|
|
|
78
|
-
|
|
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.
|
|
79
67
|
|
|
80
68
|
```ts
|
|
81
69
|
import type {Config} from "updates";
|
|
@@ -89,39 +77,16 @@ export default {
|
|
|
89
77
|
|
|
90
78
|
### Config Options
|
|
91
79
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
- `
|
|
95
|
-
- `
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
- `files` *Array\<string>*: File or directory paths to use
|
|
99
|
-
- `modes` *Array\<string>*: Which modes to enable
|
|
100
|
-
- `update` *boolean*: Update versions and write dependency files
|
|
101
|
-
- `indirect` *boolean*: Include indirect Go dependencies
|
|
102
|
-
- `timeout` *number*: Network request timeout in ms
|
|
103
|
-
- `sockets` *number*: Maximum number of parallel HTTP sockets
|
|
104
|
-
- `noCache` *boolean*: Disable HTTP cache
|
|
105
|
-
- `json` *boolean*: Output a JSON object
|
|
106
|
-
- `verbose` *boolean*: Print verbose output to stderr
|
|
107
|
-
- `errorOnOutdated` *boolean*: Exit with code 2 when updates are available
|
|
108
|
-
- `errorOnUnchanged` *boolean*: Exit with code 0 when updates are available and 2 when not
|
|
109
|
-
- `color` *boolean*: Force color output
|
|
110
|
-
- `noColor` *boolean*: Disable color output
|
|
111
|
-
- `greatest` *boolean | Array\<string | RegExp>*: Ignore the `latest` tag and take the greatest release
|
|
112
|
-
- `prerelease` *boolean | Array\<string | RegExp>*: Consider prereleases, implying `greatest`
|
|
113
|
-
- `release` *boolean | Array\<string | RegExp>*: Never consider prereleases
|
|
114
|
-
- `patch` *boolean | Array\<string | RegExp>*: Consider only up to semver-patch
|
|
115
|
-
- `minor` *boolean | Array\<string | RegExp>*: Consider only up to semver-minor
|
|
116
|
-
- `allowDowngrade` *boolean | Array\<string | RegExp>*: Allow downgrading onto a lower `latest` tag
|
|
117
|
-
- `overrides` *Array\<Override>*: Per-package option overrides matched by name (see [Overrides](#overrides))
|
|
118
|
-
- `inherit` *object*: Opt-in to inheriting select fields from other tools' configs (see [Renovate config](#renovate-config))
|
|
119
|
-
|
|
120
|
-
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>`.
|
|
121
86
|
|
|
122
87
|
### Overrides
|
|
123
88
|
|
|
124
|
-
`overrides` applies options to a subset of dependencies
|
|
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.
|
|
125
90
|
|
|
126
91
|
```ts
|
|
127
92
|
import type {Config} from "updates";
|
|
@@ -136,11 +101,9 @@ export default {
|
|
|
136
101
|
} satisfies Config;
|
|
137
102
|
```
|
|
138
103
|
|
|
139
|
-
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).
|
|
140
|
-
|
|
141
104
|
### Renovate config
|
|
142
105
|
|
|
143
|
-
|
|
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:
|
|
144
107
|
|
|
145
108
|
```ts
|
|
146
109
|
export default {
|
|
@@ -150,11 +113,11 @@ export default {
|
|
|
150
113
|
} satisfies Config;
|
|
151
114
|
```
|
|
152
115
|
|
|
153
|
-
Values in `updates.config` override anything inherited.
|
|
116
|
+
Values in `updates.config` override anything inherited.
|
|
154
117
|
|
|
155
118
|
## API
|
|
156
119
|
|
|
157
|
-
`updates` can be used as a library:
|
|
120
|
+
`updates` can be used as a library and accepts all [config options](#config-options):
|
|
158
121
|
|
|
159
122
|
```ts
|
|
160
123
|
import {updates} from "updates";
|
|
@@ -180,22 +143,16 @@ const output = await updates({
|
|
|
180
143
|
//=> }
|
|
181
144
|
```
|
|
182
145
|
|
|
183
|
-
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).
|
|
184
|
-
|
|
185
146
|
## Environment Variables
|
|
186
147
|
|
|
187
148
|
|Variable|Description|
|
|
188
149
|
|:-|:-|
|
|
189
|
-
|`UPDATES_FORGE_TOKENS`|Comma-separated list of `host:token` pairs for
|
|
190
|
-
|`UPDATES_GITHUB_API_TOKEN`|GitHub API token
|
|
191
|
-
|`
|
|
192
|
-
|`
|
|
193
|
-
|`GITHUB_TOKEN`|Fallback GitHub API token|
|
|
194
|
-
|`HOMEBREW_GITHUB_API_TOKEN`|Fallback GitHub API token|
|
|
195
|
-
|`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`|
|
|
196
|
-
|`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|
|
|
197
154
|
|`GOPRIVATE`|Fallback for `GONOPROXY` when not set|
|
|
198
155
|
|
|
199
|
-
|
|
156
|
+
A host in `UPDATES_FORGE_TOKENS` wins over the GitHub tokens. Any non-GitHub forge without a matching entry receives no credentials.
|
|
200
157
|
|
|
201
158
|
© [silverwind](https://github.com/silverwind), distributed under BSD licence
|
package/dist/shared.js
CHANGED
|
@@ -3,7 +3,7 @@ import{cwd as e,env as t,pid as n,platform as r,stderr as i}from"node:process";i
|
|
|
3
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
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
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.1`;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(`
|
|
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
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
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
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(`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "updates",
|
|
3
|
-
"version": "18.0.
|
|
3
|
+
"version": "18.0.2",
|
|
4
4
|
"description": "CLI to update npm, uv, cargo, go, docker and actions dependencies",
|
|
5
5
|
"author": "silverwind",
|
|
6
6
|
"repository": {
|
|
@@ -44,17 +44,17 @@
|
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/node": "26.2.0",
|
|
46
46
|
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
|
47
|
-
"@vitest/coverage-v8": "4.1.
|
|
47
|
+
"@vitest/coverage-v8": "4.1.11",
|
|
48
48
|
"eslint": "10.8.1",
|
|
49
|
-
"eslint-config-silverwind": "
|
|
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.
|
|
57
|
-
"vitest": "4.1.
|
|
56
|
+
"versions": "15.3.4",
|
|
57
|
+
"vitest": "4.1.11",
|
|
58
58
|
"vitest-config-silverwind": "11.6.0"
|
|
59
59
|
},
|
|
60
60
|
"bin": {
|