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