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