updates 17.21.0 → 17.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +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 simple `packageRules` are inherited as `include`/`exclude`/`pin`. A rule that disables only negated matchers, like `"matchPackageNames": ["!/^@types/"]`, becomes an `include` since it leaves just those packages enabled. `minimumReleaseAge` is *not* inherited as `cooldown` by default
|
|
141
|
+
If a [Renovate](https://docs.renovatebot.com/) config is found, `ignoreDeps` and simple `packageRules` are inherited as `include`/`exclude`/`pin`. Rules are evaluated in order, as Renovate evaluates them, so a later `"enabled": true` re-enables what an earlier rule disabled, and a rule that disables everything turns the rules after it into an allow-list. A rule that disables only negated matchers, like `"matchPackageNames": ["!/^@types/"]`, becomes an `include` since it leaves just those packages enabled. A top-level `"enabled": false` disables the repository. A rule matching on anything else, or mixing positive with negated matchers, is skipped, and is reported on stderr when it carried something inheritable. A preset in `extends` that cannot be fetched is an error, never an empty preset. An `allowedVersions` is inherited as a `pin` that filters candidates but, unlike `pin` and `--pin`, never moves a dependency down, as it is a ceiling in Renovate too. `minimumReleaseAge` is *not* inherited as `cooldown` by default, opt in via:
|
|
119
142
|
|
|
120
143
|
```ts
|
|
121
144
|
export default {
|
|
@@ -125,7 +148,7 @@ export default {
|
|
|
125
148
|
} satisfies Config;
|
|
126
149
|
```
|
|
127
150
|
|
|
128
|
-
Values in `updates.config` override anything inherited.
|
|
151
|
+
Values in `updates.config` override anything inherited. `pin` merges with the inherited `allowedVersions` ceilings per dependency: an authored entry replaces the ceiling of the same name and may downgrade into its range, while the other ceilings keep filtering.
|
|
129
152
|
|
|
130
153
|
## API
|
|
131
154
|
|
|
@@ -155,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,i as n,n as r,o as i,ot as a,r as o,rt as s,s as c,v as l}from"./shared.js";import{exit as u,platform as d,stderr as f,stdout as p,versions as m}from"node:process";import{stripVTControlCharacters as h,styleText as g}from"node:util";const{args:_,positionals:v}=o();if(!_.help&&!_.version)for(let e of r(t(_,v).startDir,_))(async()=>{try{await fetch(e,{method:`HEAD`})}catch{}})();let y=String,b=String,x=!1;async function S(e,t){if(e){let t=e.message??String(e);console.info(x?JSON.stringify({error:t}):y(t))}d===`win32`&&Number(m.node.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),u(t??+!!e)}async function C(){for(let e of[p,f])e?._handle?.setBlocking?.(!0);_.help&&(p.write(`usage: updates [options] [files...]
|
|
3
3
|
|
|
4
4
|
Options:
|
|
5
5
|
-u, --update Update versions and write dependency file
|
|
@@ -17,7 +17,7 @@ import{$ 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 n(_,v);!t.noColor&&(t.color||p.isTTY)&&(y=e=>g(`red`,String(e),{validateStream:!1}),b=e=>g(`green`,String(e),{validateStream:!1})),x=!!t.json;let r=await i(t),a=Object.keys(r.results).length>0,o=r.errors??[];if(t.json?console.info(JSON.stringify({...r.message&&{message:r.message},...a&&{results:r.results},...o.length&&{errors:o}})):r.message?console.info(r.message):a&&console.info(T(r)),t.update&&a&&!t.json)for(let[e,t]of Object.entries(r.results))Object.values(t).some(e=>Object.keys(e).length)&&console.info(b(`✨ ${e} updated`));if(!t.json)for(let{mode:e,name:t,error:n}of o)console.info(y(`${e} ${t}: ${n}`));o.length?await S(void 0,1):t.errorOnOutdated?await S(void 0,a?2:0):t.errorOnUnchanged?await S(void 0,a?0:2):await S()}const w=e=>h(e).length;function T(e){let t=Object.keys(e.results),n=t.length>1,r=[n?[`NAME`,`MODE`,`OLD`,`NEW`,`AGE`,`INFO`]:[`NAME`,`OLD`,`NEW`,`AGE`,`INFO`]],i=new Set;for(let a of t){let t=Object.values(e.results[a]).flatMap(e=>Object.entries(e));for(let[e,o]of t.sort(([e],[t])=>e.localeCompare(t))){let t=`${a}|${e}|${o.old}|${o.new}`;i.has(t)||(i.add(t),r.push([a===`go`?c(e):e,...n?[a]:[],s(o.old,o.new,y),s(o.new,o.old,b),o.age||``,o.info||``]))}}return a(r,w)}try{await C()}catch(e){await S(e)}export{};
|
package/dist/renovate.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{$ as e,L as t,Q as n,at as r,et as i,it as a,nt as o,st as s,t as c,tt as l}from"./shared.js";import{join as u}from"node:path";import{readFile as d}from"node:fs/promises";const f=[`renovate.json`,`renovate.jsonc`,`renovate.json5`,...[...l,`.gitlab`].flatMap(e=>[`${e}/renovate.json`,`${e}/renovate.jsonc`,`${e}/renovate.json5`]),`.renovaterc`,`.renovaterc.json`,`.renovaterc.jsonc`,`.renovaterc.json5`],p={y:365,year:365,years:365,mo:30,month:30,months:30,w:7,week:7,weeks:7,d:1,day:1,days:1,h:1/24,hour:1/24,hours:1/24,min:1/1440,minute:1/1440,minutes:1/1440,s:1/86400,second:1/86400,seconds:1/86400};function m(e){let t=0,n=!1,r=/(\d+(?:\.\d+)?)\s*([a-z]+)/gi,i;for(;(i=r.exec(e))!==null;){let e=p[i[2].toLowerCase()];if(e===void 0)return;t+=Number(i[1])*e,n=!0}return n?t:void 0}function h(e){console.error(`renovate config: ${e}`)}const g={matchPackageNames:e=>e,packageNames:e=>e,matchPackagePatterns:e=>e===`*`?`*`:`/${e}/`,packagePatterns:e=>e===`*`?`*`:`/${e}/`,matchPackagePrefixes:e=>`${e}*`,excludePackageNames:e=>`!${e}`,excludePackagePatterns:e=>`!/${e}/`,excludePackagePrefixes:e=>`!${e}*`},_=[`updateTypes`,`managers`,`datasources`,`depTypeList`,`paths`,`languages`,`baseBranchList`,`sourceUrlPrefixes`],v=new Set([`*`,`**`]);function y(e){let t=[];for(let[n,r]of Object.entries(e)){let e=Object.hasOwn(g,n)?g[n]:void 0;if(!e){if(n.startsWith(`match`)||n.startsWith(`exclude`)||_.includes(n))return n;continue}let i=typeof r==`string`?[r]:r;if(!Array.isArray(i))return n;for(let r of i){if(typeof r!=`string`||!r)return n;t.push(e(r))}}return t}function b(e){let t=Object.groupBy(e,e=>e.startsWith(`!`)&&e.length>1?`negated`:`positive`);return{positive:t.positive??[],negated:t.negated?.map(e=>e.substring(1))??[]}}function x(e,t){return e instanceof RegExp&&t instanceof RegExp?e.source===t.source&&e.flags===t.flags:e===t}async function S(e){let t=(await Promise.all(f.map(async t=>{let n=u(e,...t.split(`/`));try{return{path:n,text:await d(n,`utf8`)}}catch{return null}}))).find(e=>e!==null);if(t)return t;try{let t=u(e,`package.json`),n=JSON.parse(await d(t,`utf8`));if(n&&typeof n==`object`&&n.renovate&&typeof n.renovate==`object`)return{path:t,text:JSON.stringify(n.renovate)}}catch{}}function C(e){let t=/^\/(.+)\/([a-z]*)$/.exec(e);if(!t)return e;try{return new RegExp(t[1],t[2])}catch{return e}}function w(e){return/[*?[\]{}!()|+]/.test(e)}function T(e){let t=null,n=[],a={};for(let o of e){if(!o||typeof o!=`object`)continue;let e=y(o);if(!Array.isArray(e)){(o.enabled!==void 0||typeof o.allowedVersions==`string`)&&h(`skipping packageRule with unsupported matcher ${e}`);continue}let{positive:s,negated:c}=b(e);if(o.enabled===!1)if(s.length&&c.length)h(`skipping packageRule mixing matchers and negations: ${e.join(`, `)}`);else if(!e.length||s.some(e=>v.has(e)))t=[];else if(!s.length)t===null?t=c.map(C):t.length&&h(`skipping packageRule narrowing an allow-list: ${e.join(`, `)}`);else for(let e of s)n.push(C(e));else if(o.enabled===!0&&(t!==null||n.length))if(!e.length)t=null,n=[];else if(c.length||!s.length)h(`skipping packageRule re-enabling by negation: ${e.join(`, `)}`);else for(let e of s){let i=C(e),a=n.filter(e=>!x(e,i));a.length===n.length&&n.some(t=>r(t).test(e))&&h(`packageRule re-enables ${e}, which a wider exclude keeps disabled`),n=a,t?.push(i)}if(typeof o.allowedVersions==`string`&&i(o.allowedVersions))for(let e of s)!w(e)&&typeof C(e)==`string`&&(a[e]=o.allowedVersions)}return{allowed:t,disabled:n,pin:a}}function E(e,t){if(e.enabled===!1)return h(`enabled is false, skipping all dependencies`),{exclude:[`*`]};let n={};if(t.cooldown&&typeof e.minimumReleaseAge==`string`){let t=m(e.minimumReleaseAge);t!==void 0&&t>0&&(n.cooldown=t)}let r=Array.isArray(e.ignoreDeps)?e.ignoreDeps.filter(e=>typeof e==`string`&&!!e):[],{allowed:i,disabled:a,pin:o}=T(Array.isArray(e.packageRules)?e.packageRules:[]),s=[...r,...a];return i?.length&&(n.include=i),i&&!i.length&&s.push(`*`),s.length&&(n.exclude=s),Object.keys(o).length&&(n.pin=o,n.pinNoDowngrade=!0),n}const D={github:(e,t,n)=>`https://raw.githubusercontent.com/${e}/${t}/${n}`,gitlab:(e,t,n)=>`https://gitlab.com/${e}/-/raw/${t}/${n}`,gitea:(e,t,n)=>`https://gitea.com/api/v1/repos/${e}/raw/${n}?ref=${t}`,forgejo:(e,t,n)=>`https://code.forgejo.org/api/v1/repos/${e}/raw/${n}?ref=${t}`};function O(e){if(/^https?:\/\//i.test(e))return{kind:`http`,url:e};let t=e.indexOf(`>`);if(t===-1)return null;let n=e.slice(0,t);if(!Object.hasOwn(D,n))return null;let r=e.slice(t+1).replace(/\([^)]*\)\s*$/,``),i=`HEAD`,a=r.indexOf(`#`);a!==-1&&(i=r.slice(a+1)||`HEAD`,r=r.slice(0,a));let o,s,c=r.indexOf(`//`);if(c!==-1)o=r.slice(c+2),r=r.slice(0,c);else{let e=r.indexOf(`:`);e!==-1&&(s=r.slice(e+1),r=r.slice(0,e))}let l=r.replace(/\/+$/,``);return l.includes(`/`)?{kind:`forge`,forge:n,slug:l,ref:i,name:s,subpath:o}:null}const k=[`default.json`,`default.json5`,`renovate.json`,`renovate.json5`,`.renovaterc.json`,`.renovaterc`];function A(e){return/\.json[5c]?$/.test(e)?[e]:[`${e}.json`,`${e}.json5`]}function j(e,t){if(e===null)return null;let n;try{n=c(e)}catch{throw Error(`invalid JSON in ${t}`)}if(!n||typeof n!=`object`||Array.isArray(n))throw Error(`invalid preset in ${t}`);return n}async function M(e,t){if(e.kind===`http`)return j(await t(e.url),e.url);let n=D[e.forge],r=async r=>{for(let i of r){let r=n(e.slug,e.ref,i),a=j(await t(r),r);if(a)return a}return null};if(e.subpath)return r(A(e.subpath));if(!e.name)return r(k);let[i,...a]=e.name.split(`/`),o=await r(A(i));for(let e of a){let t=o&&Object.hasOwn(o,e)?o[e]:void 0;if(!t||typeof t!=`object`)throw Error(`no preset ${e} in ${i}`);o=t}return o}function N(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];n[e]=Array.isArray(r)&&Array.isArray(t)?[...t,...r]:r}return n}async function P(e,t,n,r){let i={},a=typeof e.extends==`string`?[e.extends]:Array.isArray(e.extends)?e.extends:[];for(let e of a){if(typeof e!=`string`||r>=10||n.has(e))continue;let a=O(e);if(!a)continue;let o;try{o=await M(a,t)}catch(t){throw Error(`Unable to resolve renovate preset ${e}: ${t.message}`)}if(!o)throw Error(`Unable to resolve renovate preset ${e}: not found`);i=N(i,await P(o,t,new Set(n).add(e),r+1))}let{extends:o,...s}=e;return N(i,s)}async function F(e,t){let{getForgeTokens:n,getFetchOpts:r,githubApiUrl:i,urlHost:a}=await import(`./shared2.js`),o=a(e),[s]=o?await n(o,i):[],c={...r(`Bearer`,s).headers};return t&&(c[`if-none-match`]=t),c}function I({noCache:r=!1,timeout:i=1e4}={}){return async a=>{let o=r?null:await n(a),s=await F(a,o?.etag),c;for(let e=0;;e++)try{c=await fetch(a,{headers:s,signal:AbortSignal.timeout(i)});break}catch(n){if(e<2&&t(n))continue;if(o)return o.body;throw Error(`${a}: ${n.message}`)}if(c.status===304&&o)return o.body;if(c.status===404)return null;if(!c.ok){if(o)return o.body;throw Error(`${a}: HTTP ${c.status}`)}let l;try{l=await c.text()}catch(e){if(o)return o.body;throw Error(`${a}: ${e.message}`)}let u=c.headers.get(`etag`);return u&&!r&&e(a,u,l),l}}const L=a(e=>s(e,async e=>{let t=await S(e);if(!t)return null;let n;try{n=c(t.text)}catch(e){throw Error(`Unable to parse renovate config ${t.path}: ${e.message}`)}return!n||typeof n!=`object`?null:{parsed:n,path:t.path}})),R=new Map,z=new Map;async function B(e,t={},n=I()){let r=await L(e);if(!r)return{};let i=o(R,r.path,()=>P(r.parsed,n,new Set,0));return o(z,`${+!!t.cooldown}${r.path}`,async()=>E(await i,t))}export{B as loadRenovateConfig,I as makePresetFetcher};
|
package/dist/shared.js
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
|
-
import{cwd as e,env as t,pid as n,platform as r,stderr as i}from"node:process";import{parseArgs as a,styleText as o}from"node:util";import{basename as s,dirname as c,isAbsolute as l,join as u,relative as d,resolve as f}from"node:path";import{accessSync as p,globSync as m,lstatSync as h,readFileSync as g,readdirSync as _,
|
|
1
|
+
import{cwd as e,env as t,pid as n,platform as r,stderr as i}from"node:process";import{parseArgs as a,styleText as o}from"node:util";import{basename as s,dirname as c,isAbsolute as l,join as u,relative as d,resolve as f}from"node:path";import{accessSync as p,globSync as m,lstatSync as h,readFileSync as g,readdirSync as _,realpathSync as v,statSync as y,truncateSync as b,writeFileSync as ee}from"node:fs";import{access as te,mkdir as ne,readFile as x,rename as re,writeFile as S}from"node:fs/promises";import{AsyncLocalStorage as C}from"node:async_hooks";import{Buffer as w}from"node:buffer";import{createHash as T}from"node:crypto";import{homedir as ie}from"node:os";import{pathToFileURL as ae}from"node:url";const oe=/^\[\[([^\]]+)\]\]$/,E=/^\[([^[\]]+)\]$/;function D(e){let t={},n=t,r=e.split(/\r?\n/);for(let e=0;e<r.length;e++){let i=r[e],a=fe(i).trim();if(!a)continue;let o=oe.exec(a);if(o){let e=t,r=de(o[1]);for(let t=0;t<r.length-1;t++){let n=e[r[t]];Array.isArray(n)?e=n[n.length-1]:((!n||typeof n!=`object`)&&(e[r[t]]={}),e=e[r[t]])}let i=r[r.length-1];Array.isArray(e[i])||(e[i]=[]);let a={};e[i].push(a),n=a;continue}let s=E.exec(a);if(s){n=me(t,de(s[1]));continue}let c=A(a,`=`);if(c<0)continue;let l=a.slice(0,c).trim(),u=a.slice(c+1).trim(),d=de(l),f=me(n,d.slice(0,-1)),p=d[d.length-1],m=se(u);if((u.startsWith(`[`)||u.startsWith(`{`))&&!k(u)){let t=u,n=e+1;for(;n<r.length&&(t+=`\n${fe(r[n])}`,!k(t));n++);e=n,f[p]=O(t)}else if(m){let t=u.slice(3),n=e+1;for(;n<r.length;n++){let e=r[n].indexOf(m);if(e>=0){t+=(t?`
|
|
2
2
|
`:``)+r[n].slice(0,e);break}t+=(t?`
|
|
3
|
-
`:``)+r[n]}e=n,f[p]=
|
|
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]=O(m+t+m)}else f[p]=O(u)}return t}function se(e){let t=e.slice(0,3);return t!==`"""`&&t!==`'''`||e.includes(t,3)?``:t}function O(e){if(e.startsWith(`[`)){let t=[],n=j(e,`]`);for(let r of ue(e.slice(1,n<0?e.length:n))){let e=r.trim();e&&t.push(O(e))}return t}return e.startsWith(`{`)?le(e):e.startsWith(`"""`)?he(e.slice(3,e.lastIndexOf(`"""`))):e.startsWith(`'''`)?e.slice(3,e.lastIndexOf(`'''`)):e.startsWith(`"`)?he(e.slice(1,e.lastIndexOf(`"`))):e.startsWith(`'`)?e.slice(1,e.lastIndexOf(`'`)):ce(e)}function ce(e){return e===`true`?!0:e===`false`?!1:/^[+-]?\d+(\.\d+)?$/.test(e)?Number(e):e}function le(e){let t={},n=e.slice(1,e.lastIndexOf(`}`)).trim();if(!n)return t;for(let e of ue(n)){let n=e.indexOf(`=`);if(n<0)continue;let r=e.slice(0,n).trim().replace(/^["']|["']$/g,``);t[r]=O(e.slice(n+1).trim())}return t}function k(e){let t=0,n=null;for(let r=0;r<e.length;r++){let i=e[r];if(n){if(i===`\\`&&n===`"`){r++;continue}i===n&&(n=null)}else if(i===`"`||i===`'`)n=i;else if(i===`{`||i===`[`)t++;else if((i===`}`||i===`]`)&&(t--,t===0))return!0}return!1}function ue(e){let t=[],n=0,r=null,i=0;for(let a=0;a<e.length;a++){let o=e[a];if(r){if(o===`\\`&&r===`"`){a++;continue}o===r&&(r=null)}else o===`"`||o===`'`?r=o:o===`[`||o===`{`?n++:o===`]`||o===`}`?n--:o===`,`&&n===0&&(t.push(e.slice(i,a)),i=a+1)}return i<e.length&&t.push(e.slice(i)),t}function de(e){let t=[],n=``,r=null;for(let i of e)if(r){if(i===r){r=null;continue}n+=i}else i===`"`||i===`'`?r=i:i===`.`?(t.push(n.trim()),n=``):n+=i;return n.trim()&&t.push(n.trim()),t}function fe(e){let t=A(e,`#`);return t<0?e:e.slice(0,t)}function*pe(e,t){let n=null;for(let r=0;r<e.length;r++){let i=e[r];if(n){if(i===`\\`&&n===`"`){r++;continue}i===n&&(n=null)}else i===`"`||i===`'`?n=i:i===t&&(yield r)}}function A(e,t){return pe(e,t).next().value??-1}function j(e,t){let n=-1;for(let r of pe(e,t))n=r;return n}function me(e,t){for(let n of t)(!(n in e)||typeof e[n]!=`object`||Array.isArray(e[n]))&&(e[n]={}),e=e[n];return e}function he(e){return e.replace(/\\(["\\bfnrt]|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/g,(e,t)=>{switch(t[0]){case`"`:return`"`;case`\\`:return`\\`;case`b`:return`\b`;case`f`:return`\f`;case`n`:return`
|
|
4
|
+
`;case`r`:return`\r`;case`t`:return` `;case`u`:case`U`:return String.fromCodePoint(Number.parseInt(t.slice(1),16));default:return t}})}function ge(e,t,n){if(e===t)return e;let r=0;for(;r<e.length&&r<t.length&&e[r]===t[r];)r++;if(r>0&&e[r-1]!==`.`&&e[r-1]!==`-`){let t=r-1;for(;t>=0&&e[t]!==`.`&&e[t]!==`-`;)t--;if(t>=0)r=t+1;else{let t=0;for(;t<r;){let n=e.charCodeAt(t);if(n>=48&&n<=57)break;t++}r=t}}let i=e.substring(r);return i?e.substring(0,r)+n(i):e}const _e=/^(\s*)([A-Za-z0-9][A-Za-z0-9._-]*)(\s*)((?:\[[^\]]*\])?)(\s*)(.*)$/,ve=/^(\s*\()([^)]*)(\)\s*)$/,ye=/^(\s*)(===|==|!=|~=|<=|>=|<|>)(\s*)(\S+)(\s*)$/,M=new Set([`===`,`==`,`>=`,`~=`]),be=/^v?\d[0-9a-z.!+_-]*$/i;function xe(e){let t=[];for(let n of e.split(`,`)){let e=ye.exec(n);if(!e)return null;let[,r,i,a,o,s]=e;t.push({lead:r,op:i,sep:a,version:o,trail:s})}return t}function Se(e){let t=e.indexOf(`;`),n=_e.exec(t===-1?e:e.slice(0,t));if(!n)return null;let[,r,i,a,o,s,c]=n,l=ve.exec(c);return{name:i,extras:o,specifiers:xe(l?l[2]:c),marker:t===-1?``:e.slice(t),head:`${r}${i}${a}${o}${s}`,open:l?.[1]??``,close:l?.[3]??``}}function Ce({head:e,open:t,close:n,marker:r},i){return`${e}${t}${i.map(({lead:e,op:t,sep:n,version:r,trail:i})=>`${e}${t}${n}${r}${i}`).join(`,`)}${n}${r}`}function N(e){return e.find(({op:e,version:t})=>M.has(e)&&be.test(t))}function we(e){let t=[];for(let n of e){if(typeof n!=`string`)continue;let e=Se(n);if(!e?.specifiers)continue;let r=N(e.specifiers);r&&t.push({name:e.name,version:r.version,spec:n})}return t}const Te=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],Ee=[`node`,`deno`,`bun`],P=[`.github`,`.gitea`,`.forgejo`],De={"pnpm-workspace.yaml":`npm`,"package.json":`npm`,"pyproject.toml":`pypi`,"go.work":`go`,"go.mod":`go`,"Cargo.toml":`cargo`},Oe=[`project.dependencies`,`project.optional-dependencies.*`,`dependency-groups.*`],ke=[`deps`,`indirect`,`replace`,`tool`],Ae=[`dependencies`,`dev-dependencies`,`build-dependencies`,`workspace.dependencies`],je=[`target.*.dependencies`,`target.*.dev-dependencies`,`target.*.build-dependencies`];function Me(e,t){let n=[],r=(e,t,i,a)=>{if(t===e.length){a!==void 0&&n.push([i,a]);return}if(!a||typeof a!=`object`)return;let o=e[t],s=o===`*`?Array.isArray(a)?[]:Object.keys(a):[o];for(let n of s)r(e,t+1,i?`${i}.${n}`:n,a[n])};for(let n of e)r(n.split(`.`),0,``,t);return n}function Ne(e,t){if(t===!0)return!0;if(!(t instanceof Set))return!1;for(let n of t)if(n.test(e))return!0;return!1}function Pe(e){return e.split(`,`).filter(Boolean)}function Fe(){let e=new Date;return new Date(e.getTime()-e.getTimezoneOffset()*6e4).toISOString().replace(`T`,` `).slice(0,-1)}function F(e,t,n=` `){let r=Array(e[0].length).fill(0),i=Array(e.length);for(let n=0;n<e.length;n++){let a=e[n],o=Array(a.length);for(let e=0;e<a.length;e++){let n=t(a[e]);o[e]=n,n>r[e]&&(r[e]=n)}i[n]=o}let a=``;for(let t=0;t<e.length;t++){let o=e[t],s=o.length-1;for(let e=0;e<=s;e++)if(e>0&&(a+=n),a+=o[e],e!==s){let n=r[e]-i[t][e];n>0&&(a+=` `.repeat(n))}t<e.length-1&&(a+=`
|
|
5
|
+
`)}return a}const Ie={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function Le(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Ie[n.toLowerCase()];if(r)return Number(e)*r}if(!/^\d+(?:\.\d+)?$/.test(e))throw Error(`Invalid cooldown value: ${e}`);return Number(e)}function Re(e,t){let n=Math.round(Number(e));if(!Number.isFinite(n)||n<1)throw Error(`Invalid ${t}: ${e}`);return n}async function I(e,t,{concurrency:n=1/0}={}){let r=Array.from(e);if(!Number.isFinite(n))return Promise.all(r.map(t));let i=Array(r.length),a=0;return await Promise.all(Array.from({length:Math.min(Math.max(n,1),r.length)},async()=>{for(;a<r.length;){let e=a++;i[e]=await t(r[e])}})),i}async function ze(e){try{return await e}catch{return null}}const L=RegExp.escape?e=>RegExp.escape(e):e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);function Be(e){return Array.from(e).sort((e,t)=>t.length-e.length).map(L).join(`|`)}function Ve(e){return e instanceof RegExp?/[gy]/.test(e.flags)?new RegExp(e.source,e.flags.replace(/[gy]/g,``)):e:RegExp(`^${L(e).replaceAll(`\\*`,`.*`)}$`,`i`)}async function He(e,t){let n=e;for(;;){let e=await t(n);if(e)return e;let r=c(n);if(r===n)return null;n=r}}function Ue(e,t,n){let r=e.get(t);r?r.push(n):e.set(t,[n])}function R(e,t,n){return e.has(t)||e.set(t,n()),e.get(t)}function We(e){let t=new Map;return n=>R(t,n,()=>e(n))}const Ge=/^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*))?(?:\+[a-zA-Z0-9._-]+)?$/,Ke=new Map;function z(e){return typeof e==`string`?R(Ke,e,()=>{let t=Ge.exec(e.trim());if(!t)return null;let n=Number(t[1]),r=Number(t[2]),i=Number(t[3]),a=t[4]?t[4].split(`.`).map(e=>/^\d+$/.test(e)?Number(e):e):[];return{major:n,minor:r,patch:i,prerelease:a,version:`${n}.${r}.${i}${a.length?`-${a.join(`.`)}`:``}`}}):null}function qe(e,t){let n=typeof e==`number`,r=typeof t==`number`;return n&&r?e-t:n?-1:r?1:e<t?-1:+(e>t)}function B(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function V(e,t){let n=B(e,t);if(n!==0)return n;let r=e.prerelease.length>0,i=t.prerelease.length>0;if(!r&&!i)return 0;if(r&&!i)return-1;if(!r&&i)return 1;let a=Math.max(e.prerelease.length,t.prerelease.length);for(let n=0;n<a;n++){if(e.prerelease[n]===void 0)return-1;if(t.prerelease[n]===void 0)return 1;let r=qe(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function Je(e){return z(e)?.version??null}function H(e){return z(e)}const Ye=new Map,Xe=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function U(e){return typeof e==`string`?R(Ye,e,()=>{let t=Xe.exec(e);return t?{version:`${t[1]}.${t[2]||`0`}.${t[3]||`0`}`}:null}):null}function Ze(e,t){let n=z(e),r=z(t);return!n||!r?null:Qe(n,r)}function Qe(e,t){if(e.version===t.version)return null;let n=V(e,t),r=n>0?e:t,i=n>0?t:e,a=r.prerelease.length>0;if(i.prerelease.length>0&&!a){if(!i.patch&&!i.minor)return`major`;if(B(i,r)===0)return i.minor&&!i.patch?`minor`:`patch`}let o=a?`pre`:``;return e.major===t.major?e.minor===t.minor?e.patch===t.patch?`prerelease`:`${o}patch`:`${o}minor`:`${o}major`}function $e(e,t){let n=z(e),r=z(t);return n&&r?V(n,r):null}function W(e,t){return($e(e,t)??-1)>0}function et(e){let t=/^(>=|<=|>|<|=)?\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*)?)$/.exec(e.trim());if(!t)return null;let n=t[2],r=z(`${n}.${t[3]??`0`}.${t[4]??`0`}${t[5]||``}`);return r?{op:t[1]||`=`,semver:r}:null}function tt(e,t){let n=V(e,t.semver);switch(t.op){case`>=`:return n>=0;case`<=`:return n<=0;case`>`:return n>0;case`<`:return n<0;case`=`:return n===0;default:return n===0}}function G(e,t,n){return`${e}.${t}.${n}-0`}function nt(e){return e.replace(/([~^])\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.[xX*])*((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i,a)=>{let o=Number(n),s=r===void 0?0:Number(r),c=i===void 0?0:Number(i),l=(t===`~`?r:i)===void 0?``:a,u;return u=r===void 0?G(o+1,0,0):t===`~`?G(o,s+1,0):o===0?i!==void 0&&s===0?G(0,0,c+1):G(0,s+1,0):G(o+1,0,0),`>=${o}.${s}.${c}${l} <${u}`})}function rt(e){return e.replace(/v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)\s+-\s+v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i,a,o,s,c)=>{let l=Number(t),u=n===void 0?0:Number(n),d=r===void 0?0:Number(r),f=i||``,p=Number(a),m;return m=s===void 0?o===void 0?`<${G(p+1,0,0)}`:`<${G(p,Number(o)+1,0)}`:`<=${p}.${Number(o)}.${Number(s)}${c||``}`,`>=${l}.${u}.${d}${f} ${m}`})}function it(e,t,n,r){return!e||e===`=`?r?`>=${t}.0.0 <${G(t+1,0,0)}`:`>=${t}.${n}.0 <${G(t,n+1,0)}`:e===`>`?r?`>=${t+1}.0.0`:`>=${t}.${n+1}.0`:e===`<=`?r?`<${G(t+1,0,0)}`:`<${G(t,n+1,0)}`:e===`<`?r?`<${t}.0.0-0`:`<${t}.${n}.0-0`:r?`>=${t}.0.0`:`>=${t}.${n}.0`}function at(e){return/^\s*[*xX]\s*$/.test(e)?`>=0.0.0`:(e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)\.[xX*]/g,(e,t,n,r)=>it(t,Number(n),Number(r),!1)),e=e.replace(/(>=|<=|>|<|=)?\s*v?(\d+)\.[xX*](?:\.[xX*])?/g,(e,t,n)=>it(t,Number(n),0,!0)),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)(?=\s|$)/g,(e,t,n,r,i)=>`${t}${it(n,Number(r),Number(i),!1)}`),e=e.replace(/(^|[\s|])(>=|<=|>|<|=)?\s*v?(\d+)(?=\s|$)/g,(e,t,n,r)=>`${t}${it(n,Number(r),0,!0)}`),e)}const ot=new Map;function st(e){return R(ot,e,()=>{let t=e.split(`||`).map(e=>e.trim()),n=[];for(let e of t){if(!e){n.push([]);continue}e=rt(e),e=nt(e),e=at(e),e=e.replace(/(>=|<=|>|<|=)\s+/g,`$1`),e=e.replace(/(^|[\s])v?(\d+\.\d+\.\d+(?:-[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*)?)\b/g,(e,t,n)=>`${t}=${n}`);let t=[];for(let n of e.split(/\s+/).filter(Boolean)){let e=et(n);if(!e)return null;t.push(e)}if(t.length===0)return null;n.push(t)}return n.length?n:null})}function ct(e,t){return t.some(t=>!tt(e,t))?!1:e.prerelease.length>0?t.some(t=>t.semver.prerelease.length>0&&t.semver.major===e.major&&t.semver.minor===e.minor&&t.semver.patch===e.patch):!0}function K(e,t){let n=z(e);if(!n)return!1;let r=st(t);if(!r)return!1;for(let e of r)if(e.length===0||ct(n,e))return!0;return!1}function q(e){return typeof e==`string`&&st(e)?e:null}const lt=`v?(?:(\\d+)!)?(\\d+(?:\\.\\d+)*)(?:[-_.]?(a|b|c|rc|alpha|beta|pre|preview)[-_.]?(\\d+)?)?(?:-(\\d+)|[-_.]?(post|rev|r)[-_.]?(\\d+)?)?(?:[-_.]?(dev)[-_.]?(\\d+)?)?(?:\\+([a-z0-9]+(?:[-_.][a-z0-9]+)*))?`,ut=RegExp(`^${lt}$`,`i`),dt=RegExp(lt,`i`),ft={alpha:`a`,beta:`b`,c:`rc`,pre:`rc`,preview:`rc`},pt=new Map;function J(e){return typeof e==`string`?R(pt,e,()=>{let t=ut.exec(e.trim());if(!t)return null;let n=t[3]?.toLowerCase();return{epoch:t[1]?Number(t[1]):0,release:t[2].split(`.`).map(Number),pre:n?[ft[n]??n,Number(t[4]??0)]:null,post:t[5]===void 0?t[6]===void 0?null:Number(t[7]??0):Number(t[5]),dev:t[8]===void 0?null:Number(t[9]??0),local:t[10]?t[10].toLowerCase().split(/[._-]/).map(e=>/^\d+$/.test(e)?Number(e):e):null,version:e.trim()}}):null}function mt(e){return J(e)??J(dt.exec(e)?.[0]??``)}const ht=e=>!!(e.pre||e.dev);function gt(e,t){if(!e||!t)return e?1:t?-1:0;let n=Math.min(e.length,t.length);for(let r=0;r<n;r++){let n=typeof e[r]==`number`;if(n!==(typeof t[r]==`number`))return n?1:-1;if(e[r]<t[r])return-1;if(e[r]>t[r])return 1}return e.length-t.length}function _t(e,t){if(e.epoch!==t.epoch)return e.epoch-t.epoch;let n=Math.max(e.release.length,t.release.length);for(let r=0;r<n;r++){let n=(e.release[r]??0)-(t.release[r]??0);if(n)return n}let r=e.pre?0:e.post===null&&e.dev!==null?-1:1,i=t.pre?0:t.post===null&&t.dev!==null?-1:1;if(r!==i)return r-i;if(e.pre&&t.pre){if(e.pre[0]!==t.pre[0])return e.pre[0]<t.pre[0]?-1:1;if(e.pre[1]!==t.pre[1])return e.pre[1]-t.pre[1]}if((e.post??-1)!==(t.post??-1))return(e.post??-1)-(t.post??-1);let a=e.dev??1/0,o=t.dev??1/0;return a===o?gt(e.local,t.local):a<o?-1:1}function vt(e,t){if(e.epoch!==t.epoch)return`major`;let n=Math.max(e.release.length,t.release.length);for(let r=0;r<n;r++)if((e.release[r]??0)!==(t.release[r]??0))return r===0?`major`:r===1?`minor`:`patch`;return null}function yt(e,t){let n=_t(e,t);if(n===0)return null;let r=vt(e,t);return ht(n>0?e:t)?r?`pre${r}`:`prerelease`:r??`patch`}const bt=/\d+\.\d+\.\d+(?:-[a-zA-Z0-9_.-]+)?/,xt={parse:H,parseRange:e=>H(bt.exec(e)?.[0]??``)??H(U(e)?.version??``),compare:V,diff:Qe,isPrerelease:e=>e.prerelease.length>0,isRangePrerelease:e=>/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e),satisfiesRange:(e,t)=>K(e.version,t)};function St(e){let t=e.trim().replace(/^v/i,``);return(H(t)??H(t.replace(/^(\d+\.\d+)(-.+)$/,`$1.0$2`)))||(/^\d/.test(t)?H(U(t)?.version??``):null)}const Ct={...xt,parse:St,parseRange:St,isRangePrerelease:e=>!!St(e)?.prerelease.length},wt={parse:J,parseRange:mt,compare:_t,diff:yt,isPrerelease:ht,isRangePrerelease:e=>{let t=mt(e);return!!(t&&ht(t))},satisfiesRange:({release:e},t)=>K(`${e[0]??0}.${e[1]??0}.${e[2]??0}`,t)},Tt=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],Et={"1 day ago":`yesterday`,"1 week ago":`last week`,"1 month ago":`last month`,"1 year ago":`last year`,"in 1 day":`tomorrow`,"in 1 week":`next week`,"in 1 month":`next month`,"in 1 year":`next year`},Dt={sec:`second`,min:`minute`};function Ot(e){return typeof e==`number`?e:e instanceof Date?e.getTime():Date.parse(e)}function kt(e,{now:t,noAffix:n=!1,times:r=Tt,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=Et,longUnits:l=!1}={}){let u=(t===void 0?Date.now():Ot(t))-Ot(e);if(Number.isNaN(u))return o||String(e);let d=u<0;if(d&&(u=-u),u<i)return a;let f=0,p=``;for(let e=0,t=r.length;e<t;e++){let t=r[e];if(!(u>=t[1])){f=Math.trunc(u/t[0]),p=(l&&Dt[t[2]]||t[2])+(f>1?`s`:``);break}}let m=`${f} ${p}`,h=n?m:d?`in ${m}`:`${m} ago`;return s?c[h]??h:h}const At=u(r===`win32`?t.LOCALAPPDATA||u(ie(),`AppData`,`Local`):t.XDG_CACHE_HOME||u(ie(),`.cache`),`updates`);let jt=null;const Mt=new Map;function Nt(e){return R(Mt,e,()=>T(`sha256`).update(e).digest(`hex`).substring(0,16))}async function Pt(e){try{let t=await x(u(At,`${Nt(e)}.cache`),`utf8`),n=t.indexOf(`
|
|
6
|
+
`);if(n===-1)return null;let r=t.substring(0,n),i=t.substring(n+1);return r&&i?{etag:r,body:i}:null}catch{return null}}const Ft=new Set;let It=0;function Lt(e,t,r){let i=(async()=>{try{await(jt??=ne(At,{recursive:!0}))}catch{jt=null;return}try{let i=u(At,`${Nt(e)}.cache`),a=`${i}.${n}-${It++}.tmp`;await S(a,`${t}\n${r}`),await re(a,i)}catch{}})();Ft.add(i),(async()=>{await i,Ft.delete(i)})()}async function Rt(){for(;Ft.size;)await Promise.all(Ft)}var zt=`17.22.0`;function Bt(e,t,n){if(!t||!n)return!0;let r=e?Date.parse(e):NaN;return!Number.isNaN(r)&&(n-r)/864e5>=t}const Vt=zt,Ht=5e3,Ut=2500,Wt=`https://api.github.com`,Y={registry:`https://registry.npmjs.org`,jsrapi:`https://jsr.io`,forgeapi:Wt,pypiapi:`https://pypi.org`,cargoapi:`https://crates.io`,dockerapi:`https://hub.docker.com`,goproxy:`https://proxy.golang.org`},X=e=>e[0]===`v`?e.substring(1):e,Gt=e=>e.endsWith(`/`)?e.slice(0,-1):e;function Kt(e,t){return{headers:{"user-agent":`updates/${Vt}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}const qt=new Set([`ECONNRESET`,`ECONNREFUSED`,`ETIMEDOUT`,`EAI_AGAIN`,`EPIPE`,`UND_ERR_SOCKET`,`UND_ERR_CONNECT_TIMEOUT`,`UND_ERR_HEADERS_TIMEOUT`,`UND_ERR_BODY_TIMEOUT`]);function Jt(e){if(e?.name===`TimeoutError`||e?.name===`AbortError`)return!0;let t=e?.code??e?.cause?.code;return typeof t==`string`&&qt.has(t)}async function Yt(e,t){try{return await fetch(e,t)}catch(t){let n=Error(`Failed to fetch ${e}${t?.message?`: ${t.message}`:``}`,{cause:t});throw n.transient=Jt(t),n}}async function Xt(e,t,n={}){let r=ln(e);for(let i=0;;i++)try{return await r(()=>e.doFetch(t,{...n,signal:AbortSignal.timeout(e.fetchTimeout)}))}catch(e){if(i>=2||!e?.transient)throw e}}async function Zt(e){return typeof e.text==`function`?e.text():JSON.stringify(await e.json())}const Qt=e=>t=>JSON.stringify(e(JSON.parse(t)));function $t(e,t){if(!t||e.length<16384)return e;try{return t(e)}catch{return e}}async function en(e,t,n,r,i){let a=$t(await Zt(t),r);return i&&!n.noCache&&Lt(e,i,a),{body:a,res:t}}async function tn(e,t,n={},r,i=e){let a=t.noCache?null:await Pt(i),o=n.headers,s=a?{...o,"if-none-match":a.etag}:o,c=await Xt(t,e,{...n,headers:s});return c?c.status===304&&a?{body:a.body,res:c}:c.ok?en(i,c,t,r,c.headers?.get?.(`etag`)):{res:c}:{res:void 0}}async function nn(e,t,n={},r){if(!t.noCache){let t=await Pt(e);if(t)return{body:t.body}}let i=await Xt(t,e,n);return i?i.ok?en(e,i,t,r,`immutable`):{res:i}:{res:void 0}}function rn(e,t,n){let r=e.get(t);return r||e.set(t,r=(async()=>{try{return await n()}catch(n){throw e.delete(t),n}})()),r}const an=new C;function on(e){let t=0,n=0,r=[];return async i=>{if(an.getStore())return i();t<e?t++:await new Promise(e=>{r.push(e)});try{return await an.run(!0,i)}finally{n<r.length?(r[n++](),n===r.length&&(r=[],n=0)):t--}}}const sn=e=>Math.max(e.concurrency||25,1),cn=new WeakMap;function ln(e){let t=cn.get(e);return t||cn.set(e,t=on(sn(e))),t}function un(e,t=xt){let n=t.parse(e);return!!(n&&t.isPrerelease(n))}function dn(e,t,n){let r=e.get(t);if(r)return r;let i=new Set(t);return n(i),e.set(t,i),i}const fn=new WeakMap,pn=new WeakMap;function mn(e,t,n,r){return t?{effectiveUsePre:!0,effectiveSemvers:dn(fn,n,e=>{e.add(`prerelease`),n.has(`patch`)&&e.add(`prepatch`),n.has(`minor`)&&e.add(`preminor`),n.has(`major`)&&e.add(`premajor`)})}:r.isRangePrerelease(e)?{effectiveUsePre:!0,effectiveSemvers:dn(pn,n,e=>e.add(`prerelease`))}:{effectiveUsePre:!1,effectiveSemvers:n}}function hn(e,t,{useRel:n,allowDowngrade:r,name:i},a=xt){let o=a.parseRange(e),s=a.parse(t);if(!o||!s)return!0;let c=a.isRangePrerelease(e)||a.isPrerelease(o),l=a.isPrerelease(s);return c&&!l?a.compare(s,o)>=0||n:!l&&a.compare(s,o)<0?Ne(i,r):!0}function gn(e){return U(e)?.version??``}function _n(e,t,{range:n,semvers:r,usePre:i,useRel:a,pinnedRange:o,pinNoDowngrade:s,cooldownDays:c,now:l,getVersionDate:u,versioning:d=xt}){let f=d.parseRange(n);if(!f)return null;let{effectiveUsePre:p,effectiveSemvers:m}=mn(n,i,r,d),h=e?.time,g=!!(c&&l),_=!!o&&!s&&!d.satisfiesRange(f,o)||a&&d.isPrerelease(f),v=null;for(let e of t){let t=d.parse(e);if(!t||d.isPrerelease(t)&&(!p||a)||!_&&d.compare(t,f)<=0||v&&d.compare(t,v)<=0||o&&!d.satisfiesRange(t,o)||g&&!Bt(u?u(e):h?.[e],c,l))continue;let n=d.diff(f,t),r=n&&!d.isPrerelease(t)?n.replace(/^pre/,``):n;!r||!m.has(r)||(v=t)}return v?.version??null}function vn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function yn(e,{mode:t,range:n,useGreatest:r,useRel:i,usePre:a,semvers:o,pinnedRange:s,pinNoDowngrade:c,cooldownDays:l,now:u,allowDowngrade:d}){if(n===`*`)return null;let f=t===`pypi`?wt:xt,p=n.includes(`||`)?n.split(`||`).pop().trim():n,m=[],h=``,g;if(t===`pypi`){let t=e?.releases;if(!t)return null;m=Object.keys(t).filter(e=>!t[e]?.some(e=>e?.yanked)),g=e=>t[e]?.[0]?.upload_time_iso_8601,h=e.info?.version??``}else if(t===`npm`||t===`cargo`){if(!e?.versions)return null;m=Object.keys(e.versions),h=e[`dist-tags`]?.latest??``}else if(t===`go`){let t=gn(p);if(!t)return null;let{effectiveUsePre:n,effectiveSemvers:r}=mn(p,a,o,f),c=e=>un(e)&&(!n||i),m={useRel:i,allowDowngrade:d,name:e.name},h=e.old||p,g=(e,n)=>{let i=gn(e);if(!i||vn(e)||c(e))return!1;let a=Ze(h,e)??Ze(t,i);return!a||!r.has(a)||!hn(h,e,m)||!Bt(n,l,u)?!1:!s||K(i,s)};return g(e.new,e.Time)?e.new:g(e.sameMajorNew,e.sameMajorTime)?(e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew):null}let _=_n(e,m,{range:p,semvers:o,usePre:a,useRel:i,pinnedRange:s,pinNoDowngrade:c,cooldownDays:l,now:u,getVersionDate:g,versioning:f});if(r)return _;{let t=m.includes(h)?f.parse(h):null,n=f.parseRange(p);if(!t||!n)return _;let r=_?f.parse(_):null,c=f.isPrerelease(t),v=f.isRangePrerelease(p),y=!!(r&&f.isPrerelease(r)),b={useRel:i,allowDowngrade:d,name:e.name};if(!i&&a||v&&y)return _;if(v&&!y)return _&&hn(p,_,b,f)?_:null;let ee=f.diff(n,t);return ee&&ee!==`prerelease`&&!o.has(ee.replace(/^pre/,``))||i&&c?_:f.compare(t,n)<0&&!c?hn(p,h,b,f)?h:r&&f.compare(r,n)>0?_:null:!v&&c&&!a||s&&!f.satisfiesRange(t,s)||l&&u&&!Bt(g?g(h):e.time?.[h],l,u)?_:h}}function bn(e){try{return new URL(e).host}catch{return``}}function xn(e){for(let n of Pe(t.UPDATES_FORGE_TOKENS??``)){let t=n.lastIndexOf(`:`);if(t>0&&n.slice(0,t)===e)return n.slice(t+1)}return null}let Sn;async function Cn(){let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]);return t(e)}function wn(){return Sn??=Cn()}const Tn=[`UPDATES_GITHUB_API_TOKEN`,`GITHUB_API_TOKEN`,`GH_TOKEN`,`GITHUB_TOKEN`,`HOMEBREW_GITHUB_API_TOKEN`];function En(){return Array.from(new Set(Tn.map(e=>t[e]).filter(e=>!!e)))}let Dn;function On(){let e=En();return e.length?Promise.resolve(e):Dn??=(async()=>{try{let{stdout:e}=await(await wn())(`gh`,[`auth`,`token`],{encoding:`utf8`,timeout:5e3}),t=e.trim();return t?[t]:[]}catch{return[]}})()}const kn=/^http\.(\S+)\/\.extraheader AUTHORIZATION:\s*basic\s+(\S+)$/i;function An(e){let t=new Map;for(let n of e.split(/\r?\n/)){let e=kn.exec(n);if(!e)continue;let r=bn(e[1]),i=w.from(e[2],`base64`).toString(`utf8`),a=i.slice(i.indexOf(`:`)+1);r&&a&&!t.has(r)&&t.set(r,a)}return t}let jn;function Mn(){return jn??=(async()=>{try{let{stdout:e}=await(await wn())(`git`,[`config`,`--get-regexp`,`^http\\..*\\.extraheader$`],{encoding:`utf8`,timeout:5e3});return An(e)}catch{return new Map}})()}const Nn=new Map;async function Pn(e,t){if(!e)return[];let n=xn(e);if(n)return[n];let r=e===`api.github.com`?`github.com`:e,i=r===`github.com`||e===bn(t),[a,o]=await Promise.all([i?On():[],Mn()]),s=o.get(r);return Array.from(new Set(s?[...a,s]:a))}var Fn=class extends Error{name=`ForgeError`;kind;host;status;reset;constructor(e,t,n,{status:r=0,reset:i=0,cause:a}={}){super(n,{cause:a}),this.kind=e,this.host=t,this.status=r,this.reset=i}};async function In(e){if(e.status!==403&&e.status!==429)return null;let t=()=>Number(e.headers?.get?.(`x-ratelimit-reset`))||0;if(e.headers?.get?.(`x-ratelimit-remaining`)===`0`||e.headers?.get?.(`retry-after`))return t();try{let{message:n}=await(typeof e.clone==`function`?e.clone():e).json();if(typeof n!=`string`)return null;if(n.includes(`rate limit exceeded`)||n.includes(`abuse detection mechanism`)||n.startsWith(`You have exceeded a secondary rate limit`))return t()}catch{}return null}async function Ln(e,t,n,r){if(e.status>=500)throw new Fn(`server`,n,`Received ${e.status}${e.statusText?` ${e.statusText}`:``} from ${t}`,{status:e.status});let i=await In(e);if(i===null)return e;throw new Fn(`rateLimit`,n,`Rate limit exceeded for ${n}${r?` even though a token was sent`:`, set one for this host in UPDATES_FORGE_TOKENS`}${i?`, resets at ${new Date(i*1e3).toISOString()}`:``}`,{status:e.status,reset:i})}async function Rn(e,t,n){let r=bn(e),i=await Pn(r,t.forgeApiUrl),a=e=>{let t=Kt(`Bearer`,e);return n&&(t.headers={...t.headers,...n}),t},o=async n=>Ln(await Xt(t,e,a(n)),e,r,i.length>0);try{if(!i.length)return await o();let e=Nn.get(r);if(e)return await o(e);for(let e of i){let t=await o(e);if(t.status!==401&&t.status!==403)return Nn.set(r,e),t}return await o()}catch(e){throw e instanceof Fn?e:new Fn(`network`,r,e?.message??String(e),{cause:e})}}function zn(e,t){let n=X(t);if(!Je(n))return null;let r=``,i=``;for(let t of e){let e=X(t);Je(e)&&(!r||W(e,i))&&(r=t,i=e)}return r&&W(i,n)?r:null}function Bn(e){let t=e.replace(`git@`,``).replace(/.+?\/\//,`https://`).replace(/\.git$/,``);return/^[a-z]+:[a-z0-9-]+\/[a-z0-9-]+$/.test(t)?t.replace(/^(.+?):/,(e,t)=>`https://${t}.com/`):/^[a-z0-9-]+\/[a-z0-9-]+$/.test(t)?`https://github.com/${t}`:t}const Vn=/^(?=.*[a-f])[0-9a-f]{6,}$/i;function Hn(e){return/^v?\d+(?:\.\d+)*(?:[-+][\w.-]+)?$/.test(e)}function Un(e){let t=e?.commit??e;return t?.committer?.date||t?.author?.date||``}function Wn(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function Gn(e,t,n){let r=t.noCache?null:await Pt(e),i=await Rn(e,t,r?{"if-none-match":r.etag}:void 0);if(i?.status===304&&r)return r.body;if(!i?.ok)return null;let a=await n(i),o=i.headers.get(`etag`);return o&&!t.noCache&&Lt(e,o,a),a}async function Kn(e,t){let n=await Gn(e,t,async e=>JSON.stringify({link:e.headers.get(`link`)||``,tags:Wn(await e.json())}));if(!n)return null;try{let e=JSON.parse(n);return{tags:e.tags||[],link:e.link||``}}catch{return null}}async function qn(e,t,n,r,i=[]){let a=r=>`${e}/repos/${t}/${n}/tags?per_page=100&page=${r}`,o=[],s=new Set(i.filter(Boolean)),c=s.size>0,l=e=>{for(let t of e?.tags??[]){for(let e of s)(e===t.name||t.commitSha.startsWith(e))&&s.delete(e);o.push(t)}return c&&!s.size};try{let e=await Kn(a(1),r);if(!e)return o;let t=/<([^>]+)>;\s*rel="last"/.exec(e.link),n=t?Math.min(Number(new URL(t[1]).searchParams.get(`page`)),100):0,i=sn(r);for(let t=2,o=1,s=l(e);t<=n&&!s;t+=o,o=Math.min(o*2,i)){let e=await Promise.all(Array.from({length:Math.min(o,n-t+1)},(e,n)=>Kn(a(t+n),r)));for(let t of e)s=l(t)}return o}catch(e){if(e instanceof Fn)throw e;return[]}}function Z(e,t,n,r){throw e?.status&&e.statusText?Error(`Received ${e.status} ${e.statusText} from ${t}`):Error(`Unable to fetch ${n} from ${r}`)}const Jn=e=>Number(e[0])>=2e7;function Yn(e,t){let n=X(e).split(`.`),r=X(t).split(`.`);return n.length<r.length?!1:!Jn(n)||Jn(r)}function Xn(e,t,n=``){let r=X(e),i=X(t).split(`.`).length,a=r.split(`.`),o=i>=3?r:Array.from({length:i},(e,t)=>a[t]||`0`).join(`.`);return`${t.startsWith(`v`)?`v`:``}${o}${n}`}function Zn(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}const Qn=[`repository`,`Repository`,`repo`,`Repo`,`source`,`Source`,`source code`,`Source code`,`Source Code`,`homepage`,`Homepage`];function $n({repository:e,homepage:t,info:n},r,i){if(n){let t=n.project_urls;for(let n of Qn)if(t?.[n]){e=t[n];break}e??=`https://pypi.org/project/${i}/`}let a=``;return r===`https://npm.pkg.github.com`?`https://github.com/${i.replace(/^@/,``)}`:(e&&(a=Bn(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a+=`/${Zn(a)}/${e.directory}`)),a||t||``)}const er={"allow-downgrade":{short:`d`,type:`string`,multiple:!0},"error-on-outdated":{short:`E`,type:`boolean`},"error-on-unchanged":{short:`U`,type:`boolean`},exclude:{short:`e`,type:`string`,multiple:!0},file:{short:`f`,type:`string`,multiple:!0},forgeapi:{type:`string`},goproxy:{type:`string`},cargoapi:{type:`string`},dockerapi:{type:`string`},greatest:{short:`g`,type:`string`,multiple:!0},help:{short:`h`,type:`boolean`},include:{short:`i`,type:`string`,multiple:!0},indirect:{short:`I`,type:`boolean`},json:{short:`j`,type:`boolean`},jsrapi:{type:`string`},cooldown:{short:`C`,type:`string`},minor:{short:`m`,type:`string`,multiple:!0},modes:{short:`M`,type:`string`,multiple:!0},color:{short:`c`,type:`boolean`},"no-cache":{short:`x`,type:`boolean`},"no-color":{short:`n`,type:`boolean`},patch:{short:`P`,type:`string`,multiple:!0},pin:{short:`l`,type:`string`,multiple:!0},prerelease:{short:`p`,type:`string`,multiple:!0},pypiapi:{type:`string`},registry:{short:`r`,type:`string`},release:{short:`R`,type:`string`,multiple:!0},sockets:{short:`s`,type:`string`},timeout:{short:`T`,type:`string`},types:{short:`t`,type:`string`,multiple:!0},update:{short:`u`,type:`boolean`},verbose:{short:`V`,type:`boolean`},version:{short:`v`,type:`boolean`}};function tr(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.filter(e=>typeof e==`string`).flatMap(Pe)):typeof e==`string`?new Set([e]):typeof e==`boolean`&&e}function nr(e){for(let[t,{short:n}]of Object.entries(er))if(t===e||n===e)return t;return``}function rr(e){return new Set(e.map(Ve))}function ir(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(Pe):[]}function ar(e){for(let[t,n]of Object.entries(e??{}))if(!q(n))throw Error(`Invalid pin range for ${t}: ${n}`)}function or(e){let t={};for(let n of Array.isArray(e)?e:[e]){if(typeof n!=`string`)continue;let e=n.indexOf(`=`);if(e<1)throw Error(`Invalid pin: ${n}, expected <dep>=<range>`);t[n.slice(0,e)]=n.slice(e+1)}return ar(t),t}function sr(e){return typeof e==`boolean`?e:!Array.isArray(e)||!e.length?!1:rr(e)}async function cr(e){let t=await Promise.all([`js`,`ts`,`mjs`,`mts`].map(async t=>{let n=`updates.config.${t}`,r=u(e,n);try{await te(r)}catch{return null}try{return{configDir:e,default:(await import(ae(r).href)).default??{}}}catch(e){return Error(`Unable to parse config file ${n}: ${e?.message??e}`)}}));for(let e of t)if(e&&!(e instanceof Error))return e;for(let e of t)if(e instanceof Error)throw e;return null}const lr=We(e=>He(e,cr));async function ur(e,t={}){let n=await lr(e),r=n?.default??{},{loadRenovateConfig:i,makePresetFetcher:a}=await import(`./renovate.js`),o=a(t),s=await i(n?.configDir??e,r.inherit?.renovate,o),c={...s,...r};return s.pin&&(c.pin={...s.pin,...r.pin},c.pinNoDowngrade=Object.keys(s.pin).filter(e=>!r.pin?.[e])),ar(c.pin),c}function dr(e){if(/^\s*\{/.test(e))return JSON.parse(e);let t={};for(let n of e.split(/\r?\n/)){let e=n.trim();if(!e||e.startsWith(`#`)||e.startsWith(`;`))continue;let r=e.indexOf(`=`);if(r===-1)continue;let i=e.slice(r+1).trim();/^(["']).*\1$/s.test(i)&&(i=i.slice(1,-1)),t[e.slice(0,r).trim()]=i}return t}function fr(e){try{return dr(g(e,`utf-8`))}catch{return}}function pr(e,t){let n=t;for(;;){let t=u(n,e);try{if(y(t).isFile())return t}catch{}let r=c(n);if(r===n)break;n=r}}function mr(e){let n={},r=e.toLowerCase();for(let[i,a]of Object.entries(t)){if(!i.toLowerCase().startsWith(r))continue;let t=i.substring(e.length).split(`__`).filter(Boolean);if(t.length===0)continue;let o=n;for(let e=0;e<t.length;e++){let n=t[e];if(e===t.length-1)o[n]=a;else if(o[n]===void 0&&(o[n]={}),typeof o[n]==`object`)o=o[n];else break}}return n}function hr(n,i={},a=e()){let o=r===`win32`,s=o?t.USERPROFILE:t.HOME,c=[{...i}],l=[];function d(e){if(!e||l.includes(e))return;let t=fr(e);t&&(c.push(t),l.push(e))}o||(d(u(`/etc`,n,`config`)),d(u(`/etc`,`${n}rc`))),s&&(d(u(s,`.config`,n,`config`)),d(u(s,`.config`,n)),d(u(s,`.${n}`,`config`)),d(u(s,`.${n}rc`))),d(pr(`.${n}rc`,a));let f=mr(`${n}_`);return f.config&&d(f.config),Object.assign({},...c,f,l.length?{configs:l,config:l[l.length-1]}:void 0)}const gr=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,_r=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,vr=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,yr=/(@[^/]+\/)?([^/]+)/g,br=/^(?:@[^/]+\/)?[^@]+/;function xr(e){let t=e.match(yr),n=t?t[t.length-1]:e;return br.exec(n)?.[0]??n}const Sr=Y.registry,Cr=new Map,wr=new Map;function Tr(e){return R(Cr,e??``,()=>hr(`npm`,{registry:Sr},e))}function Er(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function Dr(e,t){let n=n=>t[`${e}:${n}`]||t[`${e}/:${n}`],r=n(`_authToken`);if(r)return{token:Er(r),type:`Bearer`};let i=n(`username`),a=n(`_password`);if(i&&a){let e=Buffer.from(Er(a),`base64`).toString(`utf8`);return{token:Buffer.from(`${i}:${e}`).toString(`base64`),type:`Basic`,username:i,password:e}}let o=n(`_auth`);if(o)return{token:Er(o),type:`Basic`}}function Or(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=Dr(`//${n.host}${r.replace(/\/$/,``)}`,t);if(e)return e;let i=r.endsWith(`/`)?r:`${r}/`;n.pathname=new URL(`..`,new URL(i,`http://x`)).pathname}let i=t._auth;if(i)return{token:Er(i),type:`Basic`}}function kr(e,t){let n=t[`${e}:registry`]||``;return!n||n.endsWith(`/`)?n:`${n}/`}function Ar(e,t,n){let r=Tr(n),i=e.startsWith(`@`)?e.split(`/`)[0]:``;return R(wr,`${n??``}${i}:${t}`,()=>{let e,n=i&&kr(i,r);if(n)try{let i=Gt(n);i!==t&&(e={auth:Or(i,r),registry:i})}catch{}return e??{auth:Or(t,r),registry:t}})}function jr(e,t,n,r){let i=Gt(typeof n.registry==`string`&&n.registry||t.registry||Tr(r).registry||Sr);return{...Ar(e,i,r),originalRegistry:i}}function Mr(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const Nr=new Map,Pr=new Map,Fr=new Map;function Ir(e){let t={};for(let n of Object.keys(e.versions??{}))t[n]={};return{name:e.name,"dist-tags":e[`dist-tags`],versions:t,time:e.time,error:e.error}}async function Lr(e,t,n,r,i,a){let{auth:o,registry:s}=jr(e,n,r,a),c=Mr(s,t===`resolutions`?xr(e):e),l=r.needsDates?`${c}\0dates`:c;return[await rn(Nr,l,async()=>{let t=Kt(o?.type,o?.token);r.needsDates||(t.headers={...t.headers,accept:`application/vnd.npm.install-v1+json`});let n=await tn(c,i,t,Qt(Ir),l);return`body`in n||Z(n.res,c,e,s),JSON.parse(n.body)}),s]}async function Rr(e,t,n,r,i,a){let{auth:o,registry:s}=jr(e,n,r,a),c=Mr(s,e,t);return rn(Pr,c,async()=>{try{let n=Kt(o?.type,o?.token),r=await nn(c,i,n,Qt(e=>({repository:e.repository,homepage:e.homepage,_npmOperationalInternal:e._npmOperationalInternal?.tmp?{tmp:e._npmOperationalInternal.tmp}:void 0})));if(!(`body`in r))return{};let a=JSON.parse(r.body),l=``,u=a?._npmOperationalInternal?.tmp;if(u){let e=/(\d{13})/.exec(u);e&&(l=new Date(Number(e[1])).toISOString())}let d=Mr(s,e);return l||=(await Nr.get(d))?.time?.[t]||``,l||=(await ze(rn(Fr,d,async()=>{let e=await Xt(i,d,n);return e?.ok?await e.json():null})))?.time?.[t]||``,{repository:a.repository,homepage:a.homepage,date:l}}catch{return{}}})}function zr(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Br(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function Vr(e){return e.startsWith(`catalog:`)}const Hr=/^npm:((?:@[^/@]+\/)?[^@/][^@]*)@(.+)$/;function Ur(e){let t=Hr.exec(e);return t&&q(t[2])?{name:t[1],range:t[2]}:null}const Wr=[/^npm:@jsr\/([^_]+)__([^@]+)@(.+)$/,/^jsr:@([^/]+)\/([^@]+)@(.+)$/],Gr=/^@([^/]+)\/(.+)$/;function Kr(e,t){for(let t of Wr){let n=t.exec(e);if(n)return{scope:n[1],name:n[2],version:n[3]}}if(e.startsWith(`jsr:`)&&!e.startsWith(`jsr:@`)){let n=Gr.exec(t??``);if(n)return{scope:n[1],name:n[2],version:e.substring(4)}}return{scope:null,name:null,version:``}}async function qr(e,t){if(!Gr.test(e))throw Error(`Invalid JSR package name: ${e}`);let n=`${t.jsrApiUrl}/${e}/meta.json`,r=await tn(n,t,{headers:{"accept-encoding":`gzip, deflate, br`}},Qt(e=>({latest:e.latest,versions:Object.fromEntries(Object.entries(e.versions??{}).map(([e,t])=>[e,{createdAt:t?.createdAt}]))})));`body`in r||Z(r.res,n,e,`JSR`);let i=JSON.parse(r.body),a={},o={};for(let[e,t]of Object.entries(i.versions??{}))a[e]={version:e,time:t.createdAt},o[e]=t.createdAt;return[{name:e,"dist-tags":{latest:i.latest},versions:a,time:o},t.jsrApiUrl]}const Jr=new Set([32,9,10,13]);function Yr(e){let t=new Map,n=0,r=null,i=0;for(let a=0;a<e.length;a++){let o=e.charCodeAt(a);if(o===34){let t=a;for(;e.charCodeAt(++a)!==34&&a<e.length;)e.charCodeAt(a)===92&&a++;n===1&&r===null&&(r=e.slice(t+1,a),i=t)}else o===123||o===91?n++:o===125||o===93?(--n===0&&r!==null&&t.set(r,{start:i,end:a}),n===0&&(r=null)):o===44&&n===1&&r!==null&&(t.set(r,{start:i,end:a}),r=null)}return t}function Xr(e,t,n,r){for(let i=e.indexOf(n,t);i!==-1;i=e.indexOf(n,i+1)){let t=i+n.length;for(;Jr.has(e.charCodeAt(t));)t++;if(e.charCodeAt(t)===58){for(t++;Jr.has(e.charCodeAt(t));)t++;if(e.startsWith(r,t))return t}}return-1}function Zr(e,t){let n;try{n=JSON.parse(e)}catch{return e}let r=Yr(e),i=new Map,a=[];for(let[o,{old:s,oldOrig:c,new:l}]of Object.entries(t)){let[t,u]=o.split(`\0`),d=n[t],f=typeof d==`string`,p=f?`${u}@${c||s}`:c||s,m=r.get(t);if(!m||(f?d:d?.[u])!==p)continue;let h=JSON.stringify(f?t:u),g=JSON.stringify(p),_=Xr(e,i.get(t)??m.start,h,g);(_===-1||_>=m.end)&&(_=Xr(e,m.start,h,g)),!(_===-1||_>=m.end)&&(i.set(t,_+g.length),a.push({index:_,length:g.length,text:JSON.stringify(f?`${u}@${l}`:l)}))}if(!a.length)return e;a.sort((e,t)=>e.index-t.index);let o=[],s=0;for(let{index:t,length:n,text:r}of a)t<s||(o.push(e.slice(s,t),r),s=t+n);return o.push(e.slice(s)),o.join(``)}const Qr=String.raw`[<>]=?|[\^~=]`,$r=new RegExp(String.raw`^(${Qr})?(\s*)(v?)((?:\d+|[xX*])(?:\.(?:\d+|[xX*]))*)(-[0-9A-Za-z.-]+)?$`),ei=RegExp(`^(?:${Qr})$`),ti=/^[xX*]$/,ni=/\+[0-9A-Za-z.-]+/g,ri=/\|\||[\dxX*]\s+\S/;function ii(e){let t=[];for(let n of e.trim().replaceAll(`||`,` || `).split(/\s+/))t.length&&ei.test(t[t.length-1])?t[t.length-1]+=` ${n}`:t.push(n);return t}function ai(e,t){let n=$r.exec(e);if(!n)return e;let[,r=``,i,a,o,s=``]=n,c=o.split(`.`);if(r===`<`&&!a&&c.length<=3&&!/[xX*]/.test(o)&&(!s||s===`-0`)){let{major:e,minor:n,patch:a}=H(t);return`${r}${i}${s?`${e+1}.0.0-0`:c.length===1?`${e+1}`:c.length===2?`${e}.${n+1}`:o.endsWith(`.0.0`)?`${e+1}.0.0`:`${e}.${n}.${a+1}`}`}if(r===`>`||r===`<`)return e;let l=t.split(`-`)[0].split(`.`);return l.join(`.`)===t?`${r}${i}${a}${c.map((e,t)=>ti.test(e)?e:l[t]??`0`).join(`.`)}`:`${r}${i}${a}${t}`}function oi(e,t){return e===`peerDependencies`||ri.test(t)}function si(e,t){if(K(t,e))return e;let n=ii(e),r=n[n.length-1];if(!r.startsWith(`<`)&&n[n.length-2]!==`-`){let i=ai(r,t);return n.length>1&&r.startsWith(`>`)||i===r?e:`${e} || ${i}`}return n[n.length-1]=ai(r,t),n.join(` `)}function ci(e,t,n,r){let i=(n||e).replace(ni,``),a=oi(r,i)?si(i,t):ai(i,t);return K(t,a)?a:i}function Q(e){if(/[xX*]/.test(e))return e;let t=e.match(vr);return t?.length===1?e.replace(vr,gn(t[0])):e}async function li(e,t,n){let r=await Gn(`${n.forgeApiUrl}/repos/${e}/${t}/commits`,n,async e=>{let[t]=JSON.parse(await e.text());return JSON.stringify(t?[{sha:t.sha,commit:{committer:t.commit?.committer,author:t.commit?.author}}]:[])}),[i]=r?JSON.parse(r):[];return i?{hash:i.sha,commit:i.commit}:{hash:``,commit:{}}}async function ui(e,t,n,r){return(await qn(r.forgeApiUrl,e,t,r,[n])).map(e=>e.name)}async function di(e,t,n){let r=t.old.replace(gr,``),[,i,a,o]=_r.exec(r)||[];if(!i||!a||!o)return null;let s=e=>{let n=t.old.lastIndexOf(o);return t.old.slice(0,n)+e+t.old.slice(n+o.length)};if(Vn.test(o)){let{hash:t,commit:r}=await li(i,a,n);if(!t)return null;let c=Un(r),l=t.substring(0,o.length);if(o.toLowerCase()!==l.toLowerCase())return{key:e,newRange:s(l),user:i,repo:a,oldRef:o,newRef:l,newDate:c}}else{let t=zn(await ui(i,a,o,n),o);if(t)return{key:e,newRange:s(t),user:i,repo:a,oldRef:o,newRef:t}}return null}function fi(e){let t={};for(let[n,r]of Object.entries(e.releases??{})){let e=r??[];t[n]=e.slice(0,1).map(t=>({...t.upload_time_iso_8601&&{upload_time_iso_8601:t.upload_time_iso_8601},...e.some(e=>e?.yanked)&&{yanked:!0}}))}let{name:n,version:r,project_urls:i}=e.info??{};return{info:{name:n,version:r,project_urls:i},releases:t}}async function pi(e,t){let n=`${t.pypiApiUrl}/pypi/${e}/json`,r=await tn(n,t,{headers:{"accept-encoding":`gzip, deflate, br`}},Qt(fi));if(`body`in r)return[JSON.parse(r.body),null];Z(r.res,n,e,t.pypiApiUrl)}function mi(e,{op:t,version:n}){if(t===`===`)return n===e.version;if(n.endsWith(`.*`)){let r=J(n.slice(0,-2));if(!r||t!==`==`&&t!==`!=`)return!1;let i=r.epoch===e.epoch&&r.release.every((t,n)=>(e.release[n]??0)===t);return t===`==`?i:!i}let r=J(n);if(!r)return!1;let i=_t(e,r);if(t===`==`)return i===0;if(t===`!=`)return i!==0;if(t===`>=`)return i>=0;let a=e.epoch===r.epoch&&Array.from({length:Math.max(e.release.length,r.release.length)}).every((t,n)=>(e.release[n]??0)===(r.release[n]??0));return t===`>`?i>0&&!(a&&e.post!==null&&r.post===null):t===`<=`?i<=0:t===`<`?i<0&&!(a&&(e.pre||e.dev!==null)&&!r.pre&&r.dev===null):i>=0&&r.release.length>1&&r.release.slice(0,-1).every((t,n)=>(e.release[n]??0)===t)}function hi(e,t){let n=e.release.length-1;return e.release.map((e,r)=>(t.release[r]??0)+ +(r===n)).join(`.`)}function gi(e,t){return e.release.length===t.release.length?t.version:Array.from({length:e.release.length},(e,n)=>t.release[n]??0).join(`.`)}function _i(e,t,n){let r=Se(e),i=r?.specifiers,a=J(t),o=J(n);if(!r||!i||!a||!o)return null;let s=N(i);if(s?.version!==t)return null;for(let e of i){if(e===s){e.version=e.op===`~=`?gi(a,o):n;continue}if(mi(o,e))continue;let t=J(e.version);e.op===`<`&&t?e.version=hi(t,o):e.op===`<=`&&(e.version=n)}return i.some(e=>!mi(o,e))?null:Ce(r,i)}function vi(e,t){let n=e;for(let[e,{old:r,oldOrig:i,new:a}]of Object.entries(t)){let t=e.split(`\0`)[1],o=i||r,s=RegExp(`(['"])( *${L(t)}(?![\\w.-]).*?)(?=\\1)`,`g`);n=n.replace(s,(e,t,n)=>`${t}${_i(n,o,a)??n}`)}return n}function yi(e){let t=e.includes(`:/`)||e.startsWith(`/`);return Gt(!t&&/[.:/]/.test(e)?`https://${e}`:e)}function bi(e){let t=[],n=e;for(;n;){let e=n.search(/[,|]/),r=(e===-1?n:n.slice(0,e)).trim(),i=e!==-1&&n[e]===`|`?`|`:`,`;if(n=e===-1?``:n.slice(e+1),r){if(r===`off`||r===`direct`){t.push({url:r,fallback:i});break}t.push({url:yi(r),fallback:i})}}return t}function xi(e){if(typeof e==`string`)return[{url:Gt(e),fallback:`,`}];let n=bi(t.GOPROXY||`${Y.goproxy},direct`);return n.length?n:[{url:Y.goproxy,fallback:`,`}]}function Si(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim().replace(/\/+$/,``)).filter(Boolean)}const Ci=new Map;function wi(e){return R(Ci,e,()=>{let t=``;for(let n=0;n<e.length;n++){let r=e[n];if(r===`*`)t+=`[^/]*`;else if(r===`?`)t+=`[^/]`;else if(r===`[`&&e.includes(`]`,n+1)){let r=e.indexOf(`]`,n+1);t+=`[${e.slice(n+1,r).replace(/\\/g,`\\\\`)}]`,n=r}else t+=L(r)}return RegExp(`^${t}(?:/.*)?$`)})}function Ti(e,t){return t.some(t=>wi(t).test(e))}function Ei(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}const Di=/\/v(\d+)$/,Oi=/^gopkg\.in\/.*?\.v(\d+)$/;function ki(e){let t=Oi.exec(e)??Di.exec(e);return t?Number.parseInt(t[1]):1}function Ai(e,t){if(e.startsWith(`gopkg.in/`))return`${e.replace(/\.v\d+$/,``)}.v${t}`;let n=e.replace(Di,``);return t<=1?n:`${n}/v${t}`}function ji(e,t){if(t.includes(`+incompatible`))return e;let n=Number.parseInt(X(t).split(`.`)[0]);return Number.isNaN(n)||n===ki(e)?e:Ai(e,n)}const Mi=/^require\s*\(/,Ni=/^replace\s*\(/,Pi=/^tool\s*\(/,Fi=/^use\s*\(/,Ii=/^replace\s+/,Li=/^(\S+)\s+(v\S+)/,Ri=/^require\s+(\S+)\s+(v\S+)/,zi=/^tool\s+(\S+)/,Bi=/^use\s+(\S+)/,Vi=/^(\S+)/,Hi=/^(\S+)(?:\s+(v\S+))?\s+=>\s+(\S+)(?:\s+(v\S+))?/,Ui=/^replace\s+(\S+)(?:\s+(v\S+))?\s+=>\s+(\S+)(?:\s+(v\S+))?/,Wi=/^"(.*)"$/,Gi=e=>Wi.exec(e)?.[1]??e;function Ki(e){return e.startsWith(`./`)||e.startsWith(`/`)||e.startsWith(`../`)}function qi(e,t){let n=(t?Hi:Ui).exec(e);if(!n)return null;let[,r,i,a,o]=n;return{origModule:Gi(r),origVersion:i??``,targetModule:Gi(a),targetVersion:o??``}}function Ji(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||vn(n)}async function Yi(e,t,n){if(!t)return null;let r=t,i=e+101,a=e+2,o=7;for(;a<=i;){let e=Math.min(a+o-1,i),t=await Promise.all(Array.from({length:e-a+1},(e,t)=>n(a+t))),s=t.indexOf(null),c=s===-1?t:t.slice(0,s);if(c.length&&(r=c.at(-1)),s!==-1)break;a=e+1,o*=2}return r}function Xi(e,t,n,r,i){let a=n?.Version??r,o=n?.Time??i,s=n?.path??e;return[{name:e,old:t,new:X(a),Time:o,...s!==e&&{newPath:s},sameMajorNew:X(r),sameMajorTime:i},null]}function Zi(e){let t={},n={},r={},i={},a=new Set,o=[],s=e.split(/\r?\n/),c=!1,l=!1,u=!1;for(let e of s){let i=e.trim();if(Mi.test(i)){c=!0;continue}if(Ni.test(i)){l=!0;continue}if(Pi.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(i.startsWith(`//`))continue;if(u){i&&o.push(Gi(i));continue}let s=zi.exec(i);if(s){o.push(Gi(s[1]));continue}let d=i.includes(`// indirect`);if(l||Ii.test(i)){let e=qi(i,l);e&&(e.targetVersion&&!Ki(e.targetModule)&&(r[e.targetModule]=e.targetVersion),e.origVersion||a.add(e.origModule));continue}let f=(c?Li:Ri).exec(i);f&&((d?n:t)[Gi(f[1])]=f[2])}for(let e of a)delete t[e],delete n[e];if(o.length){let e=[...Object.keys(n),...Object.keys(t)];for(let r of o){let a=``;for(let t of e)(r===t||r.startsWith(`${t}/`))&&t.length>a.length&&(a=t);let o=n[a]?n:t[a]?t:null;o&&(i[a]=o[a],delete o[a])}}return{deps:t,indirect:n,replace:r,tool:i}}async function Qi(e,n,r,i,a){let o=ki(e),s=async(e,n)=>{try{let{stdout:r}=await(await wn())(`go`,[`list`,`-m`,`-json`,`${e}@latest`],{timeout:n,cwd:i,env:t}),a=JSON.parse(r);return{Version:a.Version,Time:a.Time||``,path:e}}catch(t){let n=String(t?.stderr??``).trim().split(`
|
|
7
|
+
`)[0]||t?.message||String(t);throw Error(`go list -m ${e}@latest failed: ${n}`)}},c=e=>ze(s(e,a.goProbeTimeout)),l=Ji(e,n,r),[u,d]=await Promise.all([s(e,a.fetchTimeout),l?null:c(Ai(e,o+1))]);return Xi(e,r,await Yi(o,d,t=>c(Ai(e,t))),u.Version,u.Time)}const $i={"accept-encoding":`gzip, deflate, br`},ea=e=>e===404||e===410;async function ta(e,t,n){try{let t=await e.json();if(t?.Version)return{Version:t.Version,Time:t.Time||``,path:n}}catch{}throw Error(`Invalid response from ${t}`)}const na=async(e,t,n)=>{let r=`${t}/${Ei(n)}/@latest`,i=await e(r);if(i.ok)return ta(i,r,n);if(ea(i.status))return null;Z(i,r,n,t)},ra=new WeakMap;function ia(e,t,n,r){return rn(R(ra,e,()=>new Map),`${n}/${r}`,()=>na(t,n,r))}function aa(e,t){let n=un(e);return n===un(t)?W(e,t):!n}function oa(e,t=0){let n=null;for(let r of e.split(`
|
|
8
|
+
`)){let[e,i]=r.trim().split(/\s+/);!e||!Je(e)||t&&Number.parseInt(X(e))!==t||n&&!aa(e,n.Version)||(n={Version:e,Time:i??``})}return n}function sa(e){return Di.test(e)||Oi.test(e)?ki(e):0}const ca=async(e,t,n)=>{let r=Ei(n),i=`${t}/${r}/@v/list`,a=await e(i);if(!a.ok){if(ea(a.status))return null;Z(a,i,n,t)}let o=oa(await a.text(),sa(n));if(!o)return null;if(o.Time)return{...o,path:n};let s=`${t}/${r}/@v/${Ei(o.Version)}.info`;try{let t=await e(s);if(t.ok)return ta(t,s,n)}catch{}return{...o,path:n}};async function la(e,t,n,r,i){let a=ki(t),o=(e,t,n)=>ia(i,e,t,n),s=e=>Xt(i,e,{headers:$i}),c=e=>i.doFetch(e,{signal:AbortSignal.timeout(i.goProbeTimeout),headers:$i}),l=t=>async n=>{try{return await t(c,e,n)}catch{return null}},u=Ji(t,n,r),d=Ai(t,a+1),[f,p]=await Promise.all([o(s,e,t),u?null:l(o)(d)]),m=f??await ca(s,e,t);if(!m)return null;let h=l(f?o:ca);return Xi(t,r,await Yi(a,u||f?p:await l(ca)(d),e=>h(Ai(t,e))),m.Version,m.Time)}async function ua(e,t,n,r,i,a){if(Ti(e,a))return Qi(e,t,n,r,i);for(let{url:a,fallback:o}of i.goProxyChain){if(a===`off`)throw Error(`Module lookup disabled by GOPROXY=off`);if(a===`direct`)return Qi(e,t,n,r,i);try{let r=await la(a,e,t,n,i);if(r)return r}catch(e){if(o===`,`)throw e}}throw Error(`Unable to find ${e} on any GOPROXY entry`)}const da=(e,t)=>`("?)${L(e)}\\${t}`;function fa(e,t){let n=e,r={};for(let[e,{old:i,oldOrig:a}]of Object.entries(t)){let[o,s]=e.split(`\0`),c=a||i,l=t[e].new,u=ji(s,l);if(o===`replace`){if(u!==s){let e=n;if(n=n.replace(RegExp(`(^\\s*(?:replace\\s+)?)${da(s,2)}(\\s+=>\\s+)${da(s,4)}(\\s+)v${L(c)}`,`gm`),`$1$2${u}$2$3$4${u}$4$5v${l}`),n!==e){let e=n;n=n.replace(RegExp(`(^\\s*(?:require\\s+)?)${da(s,2)}(\\s+)v\\S+(?=\\s*(?://.*)?$)`,`gm`),`$1$2${u}$2$3v${l}`),n!==e&&(r[s]=u)}}n=n.replace(RegExp(`(=>\\s+)${da(s,2)}(\\s+)v${L(c)}`,`g`),`$1$2${u}$2$3v${l}`);continue}u!==s&&o!==`indirect`?(n=n.replace(RegExp(`${da(s,1)} +v${L(c)}`,`g`),`$1${u}$1 v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)("?)${L(s)}((?:/[^"\\s]+)?)\\2\\s*$`,`gm`),`$1$2${u}$3$2`)),r[s]=u):n=n.replace(RegExp(`(${da(s,2)}) +v${L(c)}`,`g`),`$1 v${l}`)}return[n,r]}function pa(e,t,n){let r=Object.entries(t);if(!r.length)return;let i=new Map(r),a=RegExp(`"(${Be(i.keys())})(/|")`,`g`),o=m(`**/*.go`,{cwd:e});for(let t of o){let r=u(e,t),o=g(r,`utf8`),s=o.replace(a,(e,t,n)=>`"${i.get(t)}${n}`);s!==o&&n(r,s)}}function ma(e){let t=[],n={},r=e.split(/\r?\n/),i=!1,a=!1;for(let e of r){let r=e.trim();if(Fi.test(r)){i=!0;continue}if(Ni.test(r)){a=!0;continue}if(r===`)`){i=!1,a=!1;continue}if(i){let e=Vi.exec(r);e&&!r.startsWith(`//`)&&t.push(e[1]);continue}let o=Bi.exec(r);if(o){t.push(o[1]);continue}if(a||Ii.test(r)){let e=qi(r,a);e?.targetVersion&&!Ki(e.targetModule)&&(n[e.targetModule]=e.targetVersion)}}return{use:t,replace:n}}function ha(e){let t=`https://${ga(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[,e,i,...a]=r;return n.pathname=`/${e}/${i}/${Zn(t)}/${a.join(`/`)}`,n.href}return t}function ga(e){return Di.test(e)?c(e):e}function _a(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}function va(e){if(e.startsWith(`docker://`)||e.startsWith(`./`))return null;let t=/^https?:\/\/([^/]+)\/(.+)$/.exec(e),n=t?.[1]??null,r=t?.[2]??e,i=r.indexOf(`@`);if(i===-1)return null;let a=r.substring(0,i),o=r.substring(i+1);if(!o)return null;let s=a.split(`/`);if(s.length<2)return null;let c=n?`${n}/${a}`:a;return{host:n,owner:s[0],repo:s[1],ref:o,name:c,isHash:Vn.test(o)}}function ya(e,t){return e?e===`github.com`?Wt:`https://${e}/api/v1`:t}async function ba(e,t,n,r,i){let a=`${e}/repos/${t}/${n}/git/commits/${r}`;if(!i.noCache){let e=await Pt(a);if(e)return e.body}try{let e=await Rn(a,i);if(e.status===404)return``;if(!e.ok)return;let t=Un(await e.json());return t&&!i.noCache&&Lt(a,`immutable`,t),t}catch(e){if(e instanceof Fn)throw e;return}}function xa(e,t){return Xn(H(X(e))?.version??X(e),t)}const Sa=/^(\s*(?:-\s*)?uses:\s*)([^\n]*)$/,Ca=/^\s*(?:(?:renovate\s*:\s*)?(?:pin\s+|tag\s*=\s*)?|ratchet:[\w-]+\/[.\w-]+)@?((?:[\w-]*[-/])?v?\d+(?:\.\d+(?:\.\d+)?)?(?:-[a-zA-Z0-9.]+)?)/;function wa(e){let t=Sa.exec(e);if(!t)return null;let[,n,r]=t,i=r[0]===`'`||r[0]===`"`?r[0]:``,a=i?r.indexOf(i,1):0;if(a===-1)return null;let o=i?r.slice(1,a):/^[^\s#]*/.exec(r)[0];if(!o)return null;let s=r.slice(i?a+1:o.length),c=s.indexOf(`#`),l=c===-1?``:s.slice(c),u=l?Ca.exec(l.slice(1)):null;return{prefix:n,quote:i,value:o,gap:c===-1?s:s.slice(0,c),comment:l,pinnedVersion:u?.[1]??``,pinnedEnd:u?u[0].length+1:0}}const Ta=/^https?:\/\//;function Ea(e,t){let n=new Map(t.map(e=>[`${e.name}@${e.oldRef}`,e]));return e.split(`
|
|
9
|
+
`).map(e=>{let t=wa(e);if(!t)return e;let{prefix:r,quote:i,value:a,gap:o,comment:s,pinnedVersion:c,pinnedEnd:l}=t,u=Ta.exec(a)?.[0]??``,d=n.get(a.slice(u.length));if(!d)return e;let f=d.newComment&&c?`# ${d.newComment}${s.slice(l)}`:s;return`${r}${i}${u}${d.name}@${d.newRef}${i}${o}${f}`}).join(`
|
|
10
|
+
`)}const Da=RegExp(`(?:^|/)(?:${Be(P)})/(?:workflows/[^/]+|(?:[^/]+/)*action)\\.ya?ml$`);function Oa(e){return Da.test(e.replace(/\\/g,`/`))}function ka(e){let t=new Set;try{for(let n of _(u(e,`workflows`)))/\.ya?ml$/.test(n)&&t.add(f(u(e,`workflows`,n)))}catch{}try{for(let n of _(e,{recursive:!0,withFileTypes:!0}))!n.isFile()||!/^action\.ya?ml$/.test(n.name)||t.add(f(u(n.parentPath,n.name)))}catch{}return Array.from(t)}const Aa=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,ja=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gim,Ma=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,Na=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,Pa=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm,Fa=/^(?:index\.)?docker\.io$/;function Ia(e){let t=e.split(`/`);return t.length>1&&Fa.test(t[0])&&t.shift(),t.length===1?{registry:null,namespace:`library`,repo:t[0]}:t.length===2&&!t[0].includes(`.`)&&!t[0].includes(`:`)?{registry:null,namespace:t[0],repo:t[1]}:{registry:t[0],namespace:t.slice(1,-1).join(`/`),repo:t[t.length-1]}}function La(e){let{registry:t,namespace:n,repo:r}=Ia(e);if(t)return[e];let i=n===`library`?[r,`library/${r}`]:[`${n}/${r}`];return[...new Set([e,...i,...i.map(e=>`docker.io/${e}`)])]}function Ra(e){if(e=e.replace(/^docker:\/\//,``),e.includes(`@`))return null;let t=e.lastIndexOf(`:`);if(t===-1||e.lastIndexOf(`/`)>t)return null;let n=e.substring(0,t),r=e.substring(t+1);if(!r||!Aa.test(r))return null;let{registry:i,namespace:a,repo:o}=Ia(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function za(e){let t=Aa.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Ba(e,t){let n=za(t);return n?Xn(e,n.version,n.suffix):t}function Va(e,t){let n=[];for(let r of e.matchAll(t)){let e=Ra(r[1]);e&&n.push({ref:e,match:r[1]})}return n}const Ha=new WeakMap;function Ua(e,t,n){return rn(R(Ha,n,()=>new Map),`${e}/${t}`,()=>Ka(e,t,n))}const Wa=new Set([401,403,404]),Ga=e=>e.tag_last_pushed||e.last_updated||``;async function Ka(e,t,n){let r={},i=`${n.dockerApiUrl}/v2/repositories/${e}/${t}/tags`,a=e=>`${i}?page_size=100&ordering=last_updated&page=${e}`,o={headers:{"accept-encoding":`gzip, deflate, br`}},s=e=>({count:e.count,results:(e.results||[]).map(e=>({name:e.name,tag_last_pushed:e.tag_last_pushed,last_updated:e.last_updated}))}),c=async r=>{let i=a(r),c=await tn(i,n,o,Qt(s));return`body`in c?JSON.parse(c.body):(Wa.has(c.res?.status)||Z(c.res,i,`${e}/${t}`,n.dockerApiUrl),null)},l=e=>{for(let t of e?.results||[])r[t.name]=Ga(t)},u=ln(n),d=await u(()=>c(1));if(!d)return r;l(d);let f=Math.min(Math.ceil((d.count||0)/100),100),p=sn(n);for(let e=2,t=1;e<=f;e+=t,t=Math.min(t*2,p)){let n=await Promise.all(Array.from({length:Math.min(t,f-e+1)},(t,n)=>u(()=>c(e+n))));for(let e of n)l(e)}return r}async function qa(e,t,n,r){let i=`${r.dockerApiUrl}/v2/repositories/${e}/${t}/tags/${n}`;try{let e=await tn(i,r,{headers:{"accept-encoding":`gzip, deflate, br`}},Qt(e=>({digest:e.digest})));if(!(`body`in e))return null;let t=JSON.parse(e.body).digest;return typeof t==`string`?t:null}catch{return null}}const Ja=/^\d?[02468]\.04$/;function Ya(e,t){if(!Ja.test(e))return!1;let[n,r]=e.split(`.`);return t>=Date.UTC(2e3+Number(n),Number(r))}const Xa={ubuntu:Ya};function Za(e,t,n=Date.now()){let r=Xa[e];return r?Object.fromEntries(Object.entries(t).filter(([e])=>{let t=za(e)?.version;return!t||r(t,n)})):t}async function Qa(e,t){let{registry:n,namespace:r,repo:i}=Ia(e);if(n)throw Error(`Non-Docker-Hub registries are not yet supported: ${n}`);return[{tags:Za(i,await Ua(r,i,t)),name:e},null]}function $a(e,t,n,r,i,a){let o=za(t);if(!o)return null;let s=U(X(o.version))?.version;if(!s)return null;let c=X(o.version).split(`.`).length,l=s,u=``,d=``;for(let[t,s]of Object.entries(e)){let e=za(t);if(!e||e.suffix!==o.suffix||X(e.version).split(`.`).length!==c||!Yn(e.version,o.version))continue;let f=U(X(e.version))?.version;if(!f||a&&!K(f,a)||!Bt(s,r,i))continue;if(f===l){u&&Date.parse(s)>Date.parse(d)&&(u=t,d=s);continue}let p=Ze(l,f);!p||!n.has(p)||W(f,l)&&(l=f,u=t,d=s)}if(!u||l===s)return null;let f=Ba(l,t),p=f in e?f:u;return p===t?null:{newTag:p,date:d}}const eo=`(?![\\w.@+-])`;function to(e,t,n){let r=new Map;for(let[e,n]of Object.entries(t)){let t=e.split(`\0`)[1];r.set(`${t}:${n.oldOrig||n.old}`,`${t}:${n.new}`)}if(!r.size)return e;let i=Be(r.keys()),a=e;for(let e of n)a=a.replace(e(i),(e,t,n)=>`${t}${r.get(n)??n}`);return a}function no(e,t){return to(e,t,[e=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)(${e})${eo}`,`gi`)])}function ro(e,t){return to(e,t,[e=>RegExp(`(image:\\s*['"]?)(${e})${eo}`,`g`)])}function io(e,t){return to(e,t,[e=>RegExp(`((?:container|image):\\s*['"]?)(${e})${eo}`,`g`),e=>RegExp(`(uses:\\s*['"]?docker://)(${e})${eo}`,`g`)])}const ao=[`Dockerfile`,`compose.yml`,`compose.yaml`,`docker-compose.yml`,`docker-compose.yaml`];function oo(e){return/^(?:docker-|compose).*\.ya?ml$/.test(e)}function so(e){return/^Dockerfile(\..+)?$/.test(e)}function co(e){return so(e)||oo(e)}function lo(e){return so(e)?ja:Ma}function uo(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const fo=[`Makefile`,`makefile`,`GNUmakefile`];function po(e){return fo.includes(e)||e.endsWith(`.mk`)}const mo=String.raw`^\s*[A-Za-z_][\w.]*\s*(?:::=|:=|\?=|\+=|=)\s*`,ho=RegExp(`${mo}${String.raw`(\S+)@(v\d\S*)\s*$`}`),go=/^[^/\s]+\.[^/\s]+\//;function _o(e){let t=e.indexOf(`#`);return t===-1?e:e.slice(0,t)}function vo(e){let t=[];for(let n of e.split(/\r?\n/)){let e=_o(n),r=ho.exec(e);if(!r)continue;let[,i,a]=r;go.test(i)&&t.push({installPath:i,version:a})}return t}const yo=RegExp(`${mo}${String.raw`(\S+)\s*$`}`),bo=/@(sha256:[0-9a-f]{64})$/;function xo(e,t,n){return`${e}:${t}${n?`@${n}`:``}`}function So(e){let t=null,n=e,r=bo.exec(e);r&&(t=r[1],n=e.slice(0,r.index));let i=Ra(n.replace(/^docker\.io\//,``));return!i||i.registry||i.namespace===`library`?null:{writtenImage:n.slice(0,n.lastIndexOf(`:`)),ref:i,digest:t}}function Co(e){let t=[];for(let n of e.split(/\r?\n/)){let e=yo.exec(_o(n));if(!e)continue;let r=So(e[1]);r&&t.push(r)}return t}const wo=/\/v(?:[2-9]|[1-9]\d+)(?=\/|$)/;function To(e){let t=wo.exec(e);return t?e.slice(0,t.index+t[0].length):null}async function Eo(e,n,r,i){return i?await ze((await wn())(`go`,[`list`,`-m`,`-json`,`${e}@latest`],{timeout:r.fetchTimeout,cwd:n,env:t}))!==null:!!await ia(r,e=>Xt(r,e,{headers:$i}),r.goProxyUrl,e)}async function Do(e,t,n,r){let i=To(e);if(i)return i;let a=n.goProxyUrl===`direct`||Ti(e,r);if(!a&&n.goProxyUrl===`off`)return null;let o=e.split(`/`),s=Array.from({length:o.length-1},(e,t)=>o.slice(0,o.length-t).join(`/`));if(a){for(let e of s)if(await Eo(e,t,n,!0))return e;return null}let c=await Promise.allSettled(s.map(e=>Eo(e,t,n,!1)));for(let[e,t]of c.entries()){if(t.status===`rejected`)throw t.reason;if(t.value)return s[e]}return null}async function Oo(e,t,n,r,i,a){let o=await Do(e,n,r,i);if(!o)return null;let[s]=await ua(o,`tool`,X(t),n,r,i),c=yn(s,{...a,mode:`go`,range:X(t)});if(!c)return null;let l=s.newPath??ji(o,c),u=`${l}${e.slice(o.length)}`,d=Xn(c,t);return u===e&&d===t?null:{newInstallPath:u,newVersion:d,date:s.Time??``,info:ha(l)}}async function ko(e,t,n){let{namespace:r,repo:i,fullImage:a,tag:o}=e.ref,[s]=await Qa(a,t),c=$a(s.tags,o,n.semvers,n.cooldownDays,n.now,n.pinnedRange);if(!c)return null;let l=null;return e.digest&&(l=await qa(r,i,c.newTag,t),!l)?null:{newTag:c.newTag,newDigest:l,date:c.date,info:uo(e.ref)}}function Ao(e,t){let n=new Map(t.map(({oldSpec:e,newSpec:t})=>[e,t]));if(!n.size)return e;let r=Be(n.keys()),i=RegExp(`(?<![\\w./@:-])(${r})(?=[\\s#]|$)`,`g`);return e.replace(/^[^#\n]*/gm,e=>e.replace(i,e=>n.get(e)))}const jo=new Map;function Mo(e){let t=e.toLowerCase();return t.length<=2?`${t.length}/${t}`:t.length===3?`3/${t[0]}/${t}`:`${t.slice(0,2)}/${t.slice(2,4)}/${t}`}function No(e,t){let n=Gt(e);return`${n===`https://crates.io`?`https://index.crates.io`:n}/${Mo(t)}`}function Po(e){return e.split(`
|
|
11
|
+
`).map(e=>{if(!e)return e;try{let{vers:t,yanked:n,pubtime:r}=JSON.parse(e);return JSON.stringify({vers:t,yanked:n,pubtime:r})}catch{return e}}).join(`
|
|
12
|
+
`)}async function Fo(e,t){let n=No(t.cratesIoUrl,e);return[await rn(jo,n,async()=>{let r=await tn(n,t,Kt(),Po);`body`in r||Z(r.res,n,e,t.cratesIoUrl);let i={},a={},o=``,s=``,c=0;for(let e of r.body.split(`
|
|
13
|
+
`)){if(!e)continue;let t;try{t=JSON.parse(e)}catch{continue}if(c++,!t?.vers||t.yanked)continue;let n=t.vers;i[n]={},t.pubtime&&(a[n]=t.pubtime);let r=H(n);r&&(r.prerelease.length?(!s||W(n,s))&&(s=n):(!o||W(n,o))&&(o=n))}if(!c&&r.body.trim())throw Error(`Invalid JSON from ${n}`);return{name:e,versions:i,time:a,"dist-tags":{latest:o||s}}}),null]}function Io(e){let t=new Map;for(let n of e.split(`[[package]]`)){let e=/\bname\s*=\s*"([^"]+)"/.exec(n),r=/\bversion\s*=\s*"([^"]+)"/.exec(n);if(!e||!r)continue;let i=e[1],a=r[1];Je(a)&&Ue(t,i,a)}return t}const Lo=/^\d/,Ro=/^(\d+(?:\.\d+)*)((?:\.[*xX])+)$/,zo=/\s*,\s*/g,Bo=/(\s*,\s*)/,Vo=e=>e.includes(`,`)?e.replace(zo,` `):e,Ho=e=>Vo(Lo.test(e)&&!Ro.test(e)?`^${e}`:e);function Uo(e,t){if(e.startsWith(`<`)&&K(t,e))return e;let n=Ro.exec(e);if(n){let[,e,r]=n;return`${t.split(/[-+]/)[0].split(`.`).slice(0,e.split(`.`).length).join(`.`)}${r}`}return Lo.test(e)?ci(Q(`^${e}`),t,`^${e}`).replace(/^\^/,``):ci(Q(e),t,e)}function Wo(e,t){if(!e.includes(`,`))return Uo(e,t);let n=e.split(Bo);for(let e=0;e<n.length;e+=2)n[e]=Uo(n[e],t);return n.join(``)}function Go(e,t,n){let r=e.get(t);if(!r)return;let i=Ho(n),a;for(let e of r)K(e,i)&&(!a||W(e,a))&&(a=e);return a}const Ko=e=>`(?:${L(e)}|"${L(e)}"|'${L(e)}')`;function qo(e,t){let n=e;for(let[e,r]of Object.entries(t)){let[t,i]=e.split(`\0`),a=r.oldOrig||r.old,o=r.new,s=Ko(i),c=L(a),l=t.split(`|`)[0].split(`.`).map(Ko).join(`\\.`);n=n.replace(RegExp(`^(\\s*${s}\\s*=\\s*["'])${c}(["'].*)$`,`gm`),`$1${o}$2`),n=n.replace(RegExp(`^(\\s*${s}\\s*=\\s*\\{(?:"[^"]*"|'[^']*'|[^}\\n])*?\\bversion\\s*=\\s*["'])${c}(["'])`,`gm`),`$1${o}$2`),n=n.replace(RegExp(`(\\[${l}\\.${s}\\](?:(?!\\n\\[)[\\s\\S])*?version\\s*=\\s*["'])${c}(["'])`,`g`),`$1${o}$2`)}return n}function Jo(e){let t=e.indexOf(`|`);return t===-1?e:e.slice(0,t)}function Yo(e,t){let n=t===`.`?``:`|${t}`,r={};for(let[t,i]of Object.entries(e)){let[e,a]=t.split(`\0`),o=Jo(e);e===`${o}${n}`&&(r[`${o}${a}`]=i)}return r}const Xo=/[*?{[]/;async function Zo(e,t,n,r=32){let i=e.filter(e=>!e.startsWith(`!`)),a=e.filter(e=>e.startsWith(`!`)).map(e=>e.slice(1)),o=new Set(a.flatMap(e=>m(e,{cwd:t})).map(e=>e.replace(/\\/g,`/`))),s=new Set,c=[];for(let e of i){let r=Xo.test(e)?m(e,{cwd:t}).map(e=>f(u(t,e))):[f(u(t,e))];for(let e of r){let r=d(t,e).replace(/\\/g,`/`);if(o.has(r))continue;let i=u(e,n);s.has(i)||(s.add(i),c.push({absPath:i,memberPath:`./${r}`}))}}return(await I(c,async({absPath:e,memberPath:t})=>{try{return{absPath:e,content:await x(e,`utf8`),memberPath:t}}catch{return null}},{concurrency:r})).filter(e=>e!==null)}const Qo=/^(\s*)(?:"([^"]*)"|'([^']*)'|([^\s#][^:#]*?))\s*:(?:\s+(.*))?$/,$o=/\s#/;function es(e){let t=Qo.exec(e);if(!t)return null;let[,n,r,i,a,o=``]=t,s=e.length-o.length,c=o.search($o),l=(c===-1?o:o.slice(0,c)).trimEnd(),u=l[0];return(u===`"`||u===`'`)&&l.length>1&&l.endsWith(u)&&(l=l.slice(1,-1),s+=1),{indent:n.length,key:r??i??a,value:l,valueIndex:s}}function*ts(e){let t=``,n=``,r=-1;for(let[i,a]of e.split(`
|
|
14
|
+
`).entries()){let e=es(a);if(!e)continue;let{indent:o,key:s,value:c,valueIndex:l}=e;o===0?(t=s===`catalog`||s===`catalogs`?s:``,n=``,r=-1):t===`catalog`?c&&(yield{type:`catalog`,name:s,value:c,lineIndex:i,valueIndex:l}):t===`catalogs`&&(r===-1||o<=r?(n=s,r=o):c&&(yield{type:`catalogs.${n}`,name:s,value:c,lineIndex:i,valueIndex:l}))}}function ns(e,t){let n=e.split(`
|
|
15
|
+
`),r=!1;for(let{type:i,name:a,value:o,lineIndex:s,valueIndex:c}of ts(e)){let e=t[`${i}${a}`];if(!e||(e.oldOrig||e.old)!==o)continue;let l=n[s];n[s]=l.slice(0,c)+e.new+l.slice(c+o.length),r=!0}return r?n.join(`
|
|
16
|
+
`):e}function rs(e){let t=[],n=e.split(/\r?\n/),r=!1;for(let e of n){if(/^packages\s*:/.test(e)){r=!0;continue}if(r){let n=e.trim();if(!n||n.startsWith(`#`))continue;if(!n.startsWith(`-`))break;let r=/^\s*-\s+['"]?([^'"#\s]+)['"]?/.exec(e);r&&t.push(r[1])}}return t}const is=[...new Set(Object.values(De)),`actions`,`docker`,`make`],as=new Set(is),os={patch:new Set([`patch`]),minor:new Set([`patch`,`minor`]),major:new Set([`patch`,`minor`,`major`])},ss={"go.work":{mode:`go`,supersedes:`go.mod`},"pnpm-workspace.yaml":{mode:`npm`,supersedes:`package.json`}},cs=(e,t)=>typeof e==`string`?Gt(e):typeof t==`function`?t():t,ls=/^(npm:@jsr\/[^@]+@|jsr:@[^@]+@)(.+)$/;function us(e,t){let n=new Map,r=new Set(e),i=t;for(;r.size;){for(let e of r){let t=u(i,e);try{p(t),n.set(e,t),r.delete(e)}catch{}}let e=c(i);if(e===i)break;i=e}return n}async function ds(e,t){let n=await I(e,async e=>{try{return[e,await x(e,`utf8`)]}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}},{concurrency:t});return new Map(n)}function fs(e,t){t&&(e.date=t,e.age=kt(t,{noAffix:!0}))}const ps=(e,t,n)=>`${e}${t}${n}`,ms=e=>Object.values(e).reduce((e,t)=>e+Object.keys(t).length,0);function hs(e,t){return t===`go`?[e,ga(e)]:t===`docker`?La(e):[e]}const gs=(e,t)=>t.find(t=>e[t]);function $(e,t,n,r,i,a=t){if(i===`engines`&&Ee.includes(e)||t===`pypi`&&e===`python`)return!1;if(!n.size&&!r.size)return!0;let o=hs(e,a);for(let e of r)if(o.some(t=>e.test(t)))return!1;for(let e of n)if(o.some(t=>e.test(t)))return!0;return!n.size}function _s(t){let n=new Set;if(t)for(let e of t){let t;try{t=h(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}if(t.isFile())n.add(f(e));else if(t.isDirectory()){try{for(let t of _(e,{withFileTypes:!0}))t.isFile()&&(Object.hasOwn(De,t.name)||co(t.name)||po(t.name))&&n.add(f(u(e,t.name)))}catch{}let t=f(e).replace(/\\/g,`/`),r=P.some(e=>t.endsWith(`/${e}/workflows`)),i=!r&&P.some(e=>t.endsWith(`/${e}`)),a=r?[c(t)]:i?[t]:P.map(e=>u(t,e));for(let e of a)for(let t of ka(e))n.add(t)}else throw Error(`${e} is neither a file nor directory`)}else{let t=new Set(P),r=[...Object.keys(De),...ao,...fo,...P],i=new Set;for(let[a,o]of us(r,e())){if(t.has(a)){for(let e of ka(o))n.add(e);continue}let e=f(o);try{e=v.native(o)}catch{}i.has(e)||(i.add(e),n.add(f(o)))}try{for(let t of _(e(),{withFileTypes:!0})){let r=co(t.name)&&!ao.includes(t.name),i=po(t.name)&&!fo.includes(t.name);t.isFile()&&(r||i)&&n.add(f(u(e(),t.name)))}}catch{}}for(let e of Array.from(n)){let t=s(e);Object.hasOwn(ss,t)&&n.delete(u(c(e),ss[t].supersedes))}return n}function vs(e,t){r===`win32`&&b(e,0),ee(e,t,r===`win32`?{flag:`r+`}:void 0)}const ys=(e,t)=>`${e}${t.split(`\0`,2).join(`\0`)}`;function bs(e){let t={results:{}},n=new Map,r=Object.entries(e).sort(([e],[t])=>is.indexOf(e)-is.indexOf(t));for(let[e,t]of r)for(let r of Object.keys(t)){let t=ys(e,r);n.set(t,(n.get(t)??0)+1)}for(let[e,i]of r)for(let[r,a]of Object.entries(i)){typeof a.oldPrint==`string`&&(a.old=a.oldPrint),typeof a.newPrint==`string`&&(a.new=a.newPrint),typeof a.oldOrig==`string`&&!zr(a.oldOrig)&&(a.old=e===`go`?_a(a.oldOrig):a.oldOrig),e===`go`?a.new=_a(a.new):e===`actions`&&(a.old=X(a.old),a.new=X(a.new)),delete a.oldPrint,delete a.newPrint,delete a.oldOrig,delete a.date;let[i,o,s]=r.split(`\0`),c=s&&n.get(ys(e,r))>1?`${o}${e===`actions`?`@`:`:`}${s}`:o,l=t.results[e]??={};(l[i]??={})[c]=a}for(let e of Object.values(t.results))for(let[t,n]of Object.entries(e))e[t]=Object.fromEntries(Object.entries(n).sort(([e],[t])=>e.localeCompare(t)));return t}let xs=!1;async function Ss(t={}){if(!xs){let{enableDnsCache:e}=await import(`./dns.js`);e(),xs=!0}let n={...t};typeof n.timeout==`number`&&(n.timeout=Re(n.timeout,`timeout`));let r=n.sockets??25,a=n.timeout??0,l=cs(t.forgeapi,Y.forgeapi),d=cs(t.pypiapi,Y.pypiapi),p=cs(t.jsrapi,Y.jsrapi),m=xi(t.goproxy),h=m[0].url,g=cs(t.cargoapi,Y.cargoapi),_=cs(t.dockerapi,Y.dockerapi),v=Si(),y=!n.noColor&&(n.color||i.isTTY),b=e=>y?t=>o(e,String(t),{validateStream:!1}):String,ee=b(`magenta`),te=b(`green`),ne=b(`red`),re,S={fetchTimeout:a||5e3,goProbeTimeout:a?Math.max(1,Math.floor(a/2)):Ut,concurrency:r,forgeApiUrl:l,pypiApiUrl:d,jsrApiUrl:p,goProxyUrl:h,goProxyChain:m,cratesIoUrl:g,dockerApiUrl:_,doFetch:(e,t)=>(re??=ln(S))(async()=>{n.verbose&&console.error(`${Fe()} ${ee(t?.method||`GET`)} ${e}`);let r=await Yt(e,t);return n.verbose&&console.error(`${Fe()} ${r.ok?te(r.status):ne(r.status)} ${e}`),r}),noCache:!!n.noCache},C=sr(n.greatest),w=sr(n.prerelease),T=sr(n.release),ie=sr(n.patch),ae=sr(n.minor),oe=sr(n.allowDowngrade),E=n.modes?.length?new Set(n.modes):as,se=(n.overrides??[]).map(e=>({include:e.include?.length?rr(e.include):void 0,exclude:e.exclude?.length?rr(e.exclude):void 0,greatest:e.greatest,prerelease:e.prerelease,release:e.release,patch:e.patch,minor:e.minor,allowDowngrade:e.allowDowngrade,cooldownDays:e.cooldown===void 0?void 0:Le(String(e.cooldown))})),O=(e,t)=>e.include&&t.every(t=>!Ne(t,e.include))?!1:!e.exclude||t.every(t=>!Ne(t,e.exclude)),ce=se.some(e=>e.cooldownDays);E.has(`actions`)&&On();let le=new Map;function k(e,t){let n=le.get(e);if(!n){let r=t??[e],i=e=>r.some(t=>Ne(t,e)),a=i(C),o=i(w),s=i(T),c=i(ie),l=i(ae),u=i(oe),d;for(let e of se)O(e,r)&&(e.greatest!==void 0&&(a=e.greatest),e.prerelease!==void 0&&(o=e.prerelease),e.release!==void 0&&(s=e.release),e.patch!==void 0&&(c=e.patch),e.minor!==void 0&&(l=e.minor),e.allowDowngrade!==void 0&&(u=e.allowDowngrade),e.cooldownDays!==void 0&&(d=e.cooldownDays));let f=c?os.patch:l?os.minor:os.major;n={useGreatest:a,usePre:o,useRel:s,semvers:f,allowDowngrade:u,cooldownOverride:d},le.set(e,n)}return n}let ue=rr(n.include??[]),de=rr(n.exclude??[]);ar(n.pin);let fe=n.pin??{},pe=(e,t,n)=>{let r=gs(fe,e);if(r)return{pinnedRange:fe[r],pinNoDowngrade:!1};let i=gs(t,e);return{pinnedRange:i?t[i]:void 0,pinNoDowngrade:!!(i&&Array.isArray(n)&&n.includes(i))}},A={},j={},me=new Map,he=new Map,ge=new Map,_e=[],ve=(e,t,n,r)=>{_e.push({mode:e,type:t,name:n,error:r?.message||String(r)})},ye=(e,t,n)=>{let[r,i]=t.split(`\0`);ve(e,r,i,n)},M={},be=Date.now(),xe=e=>{let t=n.cooldown??e;return t?Le(String(t)):0},Se=e(),Ce=e=>e.replace(`${Se}/`,``).replace(`${Se}\\`,``),N=(e,t,n,r,i,a)=>{A[e][ps(t,n,r)]={old:i,oldOrig:a}},Ee=(e,t,n,r)=>{if(Vr(r))return;let i=Ur(r);zr(r)?N(`npm`,e,t,n,Kr(r,n).version,r):q(r)?N(`npm`,e,t,n,Q(r),r):i?(he.set(ps(e,t,n),i),N(`npm`,e,t,n,Q(i.range),r)):Br(r)?N(`npm`,e,t,n,`0.0.0`,r):j[ps(e,t,n)]={old:r}},P=(e,t,n,r,i,a)=>{let o=(t,r)=>{for(let{name:o,version:s,spec:c}of we(t))$(o,e,i,a,r)&&(N(e,r,n,o,Q(s),s),ge.set(ps(r,n,o),c))};for(let[s,c]of Me(r,t)){let t=c||{};if(Array.isArray(t)){if(e!==`pypi`)continue;o(t,s)}else if(typeof t==`string`){let[r,o]=t.split(`@`);$(r,e,i,a,s)&&N(e,s,n,r,Q(o),o)}else for(let[r,c]of Object.entries(t)){if(e===`pypi`&&Array.isArray(c)){o(c,`${s}.${r}`);continue}$(r,e,i,a,s)&&(e===`npm`?Ee(s,n,r,c):e===`go`?N(e,s,n,r,_a(c),X(c)):q(c)&&N(e,s,n,r,Q(c),c))}}},Pe=_s(n.files?.length?new Set(n.files):!1),F=await ds(Array.from(Pe).filter(e=>{if(Oa(e))return E.has(`actions`)||E.has(`docker`);let t=s(e);if(co(t))return E.has(`docker`);if(po(t))return E.has(`make`);let n=De[t];return!!n&&E.has(n)}),r),Ie={},L={},Be={},Ve=[],He=null,R=[],Ge=[],Ke=[],z=[],qe=[],B=[],V={},Je={noCache:n.noCache,timeout:n.timeout||5e3},H=We(async e=>{let t=await ur(e,Je);return{dirConfig:t,include:t.include?.length?rr([...n.include??[],...t.include]):ue,exclude:t.exclude?.length?rr([...n.exclude??[],...t.exclude]):de}});async function Ye(e){let{dirConfig:t,include:n,exclude:r}=await H(e);return{modeConfig:t,modeInclude:n,modeExclude:r,pin:t.pin??{}}}function Xe(e,t){return n.types?.length?n.types:t?.types?.length?t.types:e===`npm`?Te:e===`pypi`?Oe:e===`go`?n.indirect?ke:ke.filter(e=>e!==`indirect`):e===`cargo`?[...Ae,...je]:[]}function U(e,t,n,r){A.docker??={};for(let i of n)for(let{ref:n}of Va(e,i)){if(!$(n.fullImage,`docker`,r.include,r.exclude,`docker`))continue;let e=`${t}${n.fullImage}${n.tag}`;if(A.docker[e])continue;let i=za(n.tag);i&&(A.docker[e]={old:i.version,oldOrig:n.tag},qe.push({key:e,fullImage:n.fullImage,ref:n,filePin:r.pin,fileCooldownDays:r.cooldownDays}))}}async function Ze(e){let{dirConfig:t,include:n,exclude:r}=await H(e);return{include:n,exclude:r,pin:t.pin??{},pinNoDowngrade:t.pinNoDowngrade,cooldownDays:xe(t.cooldown)}}let Qe=new Set,$e=new Map;for(let e of Pe){let t=s(e);if(Object.hasOwn(ss,t))Qe.add(ss[t].mode);else if(t===`Cargo.toml`){let t=F.get(e);if(!t)continue;try{let n=D(t);$e.set(e,n);let r=n.workspace?.members;Array.isArray(r)&&r.length&&Qe.add(`cargo`)}catch{}}}let W=(e,t,n,r,i,a)=>{let o=M[e]??=[],s=!o.length&&!Qe.has(e),c=s?`.`:Ce(t);return o.push({absPath:f(t),content:n,memberPath:c,projectDir:r,modeConfig:i,pin:a,modeCooldownDays:xe(i.cooldown)}),s&&(V[e]={modeConfig:i,projectDir:r,pin:a}),s?``:`|${c}`},et=(e,t)=>{try{return t()}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}};for(let e of F.keys()){if(Oa(e)){let t=E.has(`actions`),n=E.has(`docker`),r=F.get(e),i=Ce(e),a=await Ze(c(e));if(Ie[i]={absPath:e,content:r},t){A.actions??={};for(let e of r.split(`
|
|
17
|
+
`)){let t=wa(e),n=t&&va(t.value);if(!n||!$(n.name,`actions`,a.include,a.exclude,`actions`))continue;let r=`${i}${n.name}${n.ref}`;A.actions[r]||(A.actions[r]={old:n.ref},z.push({...n,key:r,comment:t.pinnedVersion,apiUrl:ya(n.host,l),filePin:a.pin,filePinNoDowngrade:a.pinNoDowngrade,fileCooldownDays:a.cooldownDays}))}}n&&(L[i]={absPath:e,content:r,fileType:`workflow`},U(r,i,[Ma,Na,Pa],a));continue}let t=s(e);if(co(t)){let n=F.get(e),r=Ce(e),i=so(t)?`dockerfile`:`compose`,a=await Ze(c(e));L[r]={absPath:e,content:n,fileType:i},U(n,r,[lo(t)],a);continue}if(po(t)){let t=F.get(e),n=Ce(e),r=await Ze(c(e));Be[n]={absPath:e,content:t},A.make??={};let i={projectDir:c(e),filePin:r.pin,filePinNoDowngrade:r.pinNoDowngrade,fileCooldownDays:r.cooldownDays};for(let{installPath:e,version:a}of vo(t)){if(!$(e,`make`,r.include,r.exclude,`make`,`go`))continue;let t=`${n}${e}${a}`;A.make[t]||(A.make[t]={old:X(a),oldOrig:a},B.push({kind:`go`,key:t,name:e,oldSpec:`${e}@${a}`,installPath:e,version:a,...i}))}for(let e of Co(t)){if(!$(e.writtenImage,`make`,r.include,r.exclude,`make`,`docker`))continue;let t=`${n}${e.writtenImage}${e.ref.tag}`;if(A.make[t])continue;let a=za(e.ref.tag);if(!a)continue;let o=xo(e.writtenImage,e.ref.tag,e.digest);A.make[t]={old:a.version,oldOrig:e.ref.tag},B.push({kind:`docker`,key:t,name:e.writtenImage,oldSpec:o,image:e,...i})}continue}let n=De[t];if(t===`go.work`){A[n]??={};let t=c(f(e)),i=F.get(e);He={file:e,content:i};let a=ma(i),[{modeConfig:o,modeInclude:s,modeExclude:l,pin:d},p]=await Promise.all([Ye(t),I(a.use,async e=>{let n=f(u(t,e,`go.mod`));try{return{usePath:e,modPath:n,content:await x(n,`utf8`)}}catch{return null}},{concurrency:r})]),m=Xe(n,o);V[n]={modeConfig:o,projectDir:t,pin:d};for(let e of p){if(!e)continue;let{usePath:t,modPath:r,content:i}=e,a=Zi(i),o=c(r);Ve.push({absPath:r,content:i,projectDir:o,memberPath:t}),P(n,a,t===`.`?``:`|${t}`,m,s,l)}for(let[e,t]of Object.entries(a.replace))$(e,n,s,l,`replace`)&&N(n,`replace`,``,e,_a(t),X(t));continue}if(t===`go.mod`&&Ve.some(t=>t.absPath===f(e))||t===`package.json`&&Ge.some(t=>t.absPath===f(e)))continue;if(t===`Cargo.toml`){A[n]??={};let t=F.get(e),i=$e.get(e)??D(t),a=c(f(e)),o=us([`Cargo.lock`],a).get(`Cargo.lock`),s=i.workspace?.members,l=Array.isArray(s)&&s.length,[{modeConfig:u,modeInclude:d,modeExclude:p,pin:m},h,g]=await Promise.all([Ye(a),o?x(o,`utf8`):Promise.resolve(null),l?Zo(s,a,`Cargo.toml`,r):Promise.resolve([])]),_=Xe(n,u),v=h?Io(h):new Map,y=(e,t)=>{for(let[r,i]of Me(_,e)){let e=i||{};if(!(typeof e!=`object`||Array.isArray(e))){for(let[i,a]of Object.entries(e))if($(i,n,d,p,r))if(typeof a==`object`&&a&&`version`in a&&!(`git`in a)&&!(`path`in a)&&!(`registry`in a)){let e=a.version,o=a.package||i;q(Vo(e))&&(o!==i&&me.set(ps(r,t,i),o),N(n,r,t,i,Go(v,o,e)??Q(Vo(e)),e))}else typeof a==`string`&&q(Vo(a))&&N(n,r,t,i,Go(v,i,a)??Q(Vo(a)),a)}}};if(l){V[n]={modeConfig:u,projectDir:a,pin:m},y(i,``),R.push({absPath:f(e),content:t,memberPath:`.`});for(let e of g)R.push(e),y(et(e.absPath,()=>D(e.content)),`|${e.memberPath}`)}else y(i,W(n,e,t,a,u,m));continue}if(t===`pnpm-workspace.yaml`){A[n]??={};let i=c(f(e)),a=F.get(e),o=rs(a),s=u(i,`package.json`),[{modeConfig:l,modeInclude:d,modeExclude:p,pin:m},h,g]=await Promise.all([Ye(i),ze(x(s,`utf8`)),Zo(o,i,`package.json`,r)]),_=Xe(n,l);V[n]={modeConfig:l,projectDir:i,pin:m},Ke.push({absPath:f(e),content:a,memberPath:t});for(let{type:e,name:r,value:i}of ts(a))$(r,n,d,p,e)&&Ee(e,`|${t}`,r,i);if(h!==null){let e=et(s,()=>JSON.parse(h));Ge.push({absPath:f(s),content:h,memberPath:`.`}),P(n,e,``,_,d,p)}for(let e of g){let t=et(e.absPath,()=>JSON.parse(e.content));Ge.push(e),P(n,t,`|${e.memberPath}`,_,d,p)}continue}A[n]??={};let i=c(f(e)),{modeConfig:a,modeInclude:o,modeExclude:d,pin:p}=await Ye(i),m=Xe(n,a),h=F.get(e),g=W(n,e,h,i,a,p);P(n,et(e,()=>n===`npm`?JSON.parse(h):n===`pypi`?D(h):n===`go`?Zi(h):{}),g,m,o,d)}if(!ms(A)&&!Object.keys(j).length)return{results:{},message:`No dependencies found, nothing to do.`};let tt=[],G=!!xe(V.npm?.modeConfig.cooldown)||(M.npm??[]).some(e=>e.modeCooldownDays)||Object.keys(A.npm??{}).some(e=>k(e.split(`\0`)[1]).cooldownOverride),nt={registry:n.registry,needsDates:G};for(let[e,t]of Object.entries(V)){let i=A[e]&&Object.keys(A[e]).length>0,a=e===`npm`&&Object.keys(j).length>0;if(!i&&!a)continue;let{modeConfig:o,projectDir:s,pin:c}=t,l=xe(o.cooldown);tt.push((async()=>{let t=new Map;for(let n of M[e]??[])n.memberPath!==`.`&&t.set(`|${n.memberPath}`,n);let i={modeConfig:o,projectDir:s,pin:c,modeCooldownDays:l},a=e=>{let n=e.indexOf(`|`);return n!==-1&&t.get(e.slice(n))||i},u=new Map,d=e=>{for(let[t,{date:n}]of Object.entries(e)){if(!n)continue;let[r,i]=t.split(`\0`),{modeCooldownDays:o}=a(r);if(!o&&!ce)continue;let s=k(i).cooldownOverride??o;s&&!Bt(n,s,be)&&delete e[t]}},f=A[e],p=async(t,r,i)=>{let o=Jo(r),{modeConfig:s,projectDir:c,pin:l,modeCooldownDays:d}=a(r),p=f[t],m=he.get(t),h;if(e===`npm`)if(p.oldOrig&&zr(p.oldOrig))h=await qr(i,S);else if(p.oldOrig&&Br(p.oldOrig)){let e=await ze(Lr(i,o,s,nt,S,c));if(!e){delete f[t];return}h=e}else h=await Lr(m?.name??i,o,s,nt,S,c);else h=e===`go`?await ua(i,o,p.oldOrig||p.old,c,S,v):e===`cargo`?await Fo(me.get(t)??i,S):await pi(i,S);let[g,_]=h;if(g.error)throw Error(g.error);let y=hs(g.name,e),{useGreatest:b,usePre:te,useRel:ne,semvers:x,allowDowngrade:re,cooldownOverride:C}=k(g.name,y),{old:w,oldOrig:T}=p,{pinnedRange:ie,pinNoDowngrade:ae}=pe(y,l,s.pinNoDowngrade),oe=C??d,E=yn(g,{usePre:te,useRel:ne,useGreatest:b,semvers:x,range:w,mode:e,pinnedRange:ie,pinNoDowngrade:ae,allowDowngrade:re,cooldownDays:oe||void 0,now:oe?be:void 0}),D=``;if((e===`go`||e===`pypi`)&&E)D=E;else if(e===`cargo`&&E&&T)D=Wo(T,E);else if(E)if(T&&Br(T))D=String(Tr(c)[`save-exact`])===`true`?E:`^${E}`;else if(T&&zr(T)){let e=ls.exec(T);e?D=`${e[1]}${E}`:T.startsWith(`jsr:`)&&(D=`jsr:${E}`)}else D=m?`npm:${m.name}@${ci(w,E,m.range,o)}`:ci(w,E,T,o);let se=ge.get(t);if(!E||E===w||T&&T===D||se&&!_i(se,T||w,D)){n.verbose&&E&&E!==w&&console.error(`${Fe()} ${ee(`SKIP`)} ${i}: ${T||w} can not be rewritten to ${E}`),delete f[t];return}let O=(e===`pypi`?g.releases?.[E]?.[0]?.upload_time_iso_8601:e===`go`?g.Time:e===`cargo`?g.time?.[E]:``)||``;p.new=D,T&&zr(T)&&(p.newPrint=E),e===`npm`?u.set(t,{name:m?.name??i,promise:Rr(g.name,E,s,nt,S,c)}):e===`pypi`?p.info=$n(g,_,g.info.name):e===`go`?p.info=ha(g.newPath||i):e===`cargo`&&(p.info=`https://crates.io/crates/${g.name}`),fs(p,O)};if(await I(Object.keys(f),async t=>{let[n,r]=t.split(`\0`);try{await p(t,n,r)}catch(i){delete f[t],ve(e,n,r,i)}},{concurrency:r}),await Promise.all(Array.from(u,async([e,{name:t,promise:n}])=>{let r=await n,i=f[e];i&&(i.info=$n({repository:r.repository,homepage:r.homepage},null,t),r.date&&fs(i,r.date))})),e===`npm`&&Object.keys(j).length){let e=(await I(Object.entries(j),async([e,t])=>{try{return await di(e,t,S)}catch(t){return ye(`npm`,e,t),null}},{concurrency:r})).filter(e=>e!==null);for(let{key:t,newRange:n,user:r,repo:i,oldRef:a,newRef:o,newDate:s}of e){let e=f[t]={old:j[t].old,new:n,oldPrint:Vn.test(a)?a.substring(0,7):a,newPrint:Vn.test(o)?o.substring(0,7):o,info:`https://github.com/${r}/${i}`};s&&fs(e,s)}}d(f)})())}z.length&&tt.push((async()=>{await I(Map.groupBy(z,e=>`${e.apiUrl}/${e.owner}/${e.repo}`).values(),async e=>{let{apiUrl:t,owner:n,repo:i}=e[0],a;try{a=await qn(t,n,i,S,e.map(e=>e.ref))}catch(t){for(let n of e)delete A.actions[n.key],ye(`actions`,n.key,t);return}let o=[],s=new Map,c=new Map,l=new Map;for(let e of a){c.set(e.name,e);let t=Ct.parse(e.name)?.version;if(t){let n=s.get(t);n||o.push(t),(!n||e.name.length>n.length)&&s.set(t,e.name)}e.commitSha&&l.set(e.commitSha,e.name)}let u=We(e=>ba(t,n,i,e,S));async function d(e){let t={...e,cooldownDays:void 0,now:void 0},r=new Set;for(let a=0;a<20;a++){let a=_n({},r.size?o.filter(e=>!r.has(e)):o,t);if(!a)return null;let l=s.get(a),d=c.get(l)?.commitSha||``;if(!e.cooldownDays)return{version:a,tag:l,commitSha:d,date:``};let f=d?await u(d):``;if(f===void 0)throw Error(`Unable to fetch the commit date for ${n}/${i}@${l}`);if(Bt(f,e.cooldownDays,e.now))return{version:a,tag:l,commitSha:d,date:f};r.add(a)}return null}let f=async({key:e,host:t,ref:r,comment:a,name:o,isHash:s,filePin:f,filePinNoDowngrade:p,fileCooldownDays:m})=>{let h=A.actions[e],g=`https://${t||`github.com`}/${n}/${i}`,{pinnedRange:_,pinNoDowngrade:v}=pe([o],f,p),y=r;if(s?y=a||l.get(r)||l.entries().find(([e])=>e.startsWith(r))?.[1]||``:Hn(r)||(y=``),!y){delete A.actions[e];return}let{usePre:b,useRel:ee,semvers:te,cooldownOverride:ne}=k(o),x=ne??m,re=await d({range:y,semvers:te,usePre:b,useRel:ee,versioning:Ct,pinnedRange:_,pinNoDowngrade:v,cooldownDays:x||void 0,now:x?be:void 0});if(!re){delete A.actions[e];return}let{tag:S,commitSha:C,date:w}=re;if(s){if(!C||C.startsWith(r)||r.startsWith(C)){delete A.actions[e];return}h.old=r,h.new=C.substring(0,r.length),h.oldPrint=y,h.newPrint=S}else{let t=xa(S,r);if(t===r){delete A.actions[e];return}h.new=c.has(t)?t:S}h.info=g;let T=w||(C?await ze(u(C)):``);T&&fs(h,T)};await I(e,async e=>{try{await f(e)}catch(t){delete A.actions[e.key],ye(`actions`,e.key,t)}},{concurrency:r})},{concurrency:r}),Object.keys(A.actions).length||delete A.actions})()),qe.length&&tt.push((async()=>{await I(Map.groupBy(qe,e=>e.fullImage).entries(),async([e,t])=>{if(t[0].ref.registry){for(let e of t)delete A.docker[e.key];return}let n;try{let[t]=await Qa(e,S);n=t}catch(e){for(let n of t)delete A.docker[n.key],ye(`docker`,n.key,e);return}let r=hs(e,`docker`);for(let i of t){let t=A.docker[i.key],a=t.oldOrig||t.old,{semvers:o,cooldownOverride:s}=k(e,r),{pinnedRange:c}=pe(r,i.filePin),l=s??i.fileCooldownDays,u=$a(n.tags,a,o,l||void 0,l?be:void 0,c);if(!u){delete A.docker[i.key];continue}t.new=u.newTag,t.info=uo(i.ref),fs(t,u.date)}},{concurrency:r}),Object.keys(A.docker).length||delete A.docker})()),B.length&&tt.push((async()=>{await I(B,async e=>{let t=hs(e.name,e.kind),{useGreatest:n,usePre:r,useRel:i,semvers:a,allowDowngrade:o,cooldownOverride:s}=k(e.name,t),{pinnedRange:c,pinNoDowngrade:l}=pe(t,e.filePin,e.filePinNoDowngrade),u=s??e.fileCooldownDays,d={semvers:a,useGreatest:n,usePre:r,useRel:i,allowDowngrade:o,pinnedRange:c,pinNoDowngrade:l,cooldownDays:u||void 0,now:u?be:void 0},f=A.make[e.key];try{let t;if(e.kind===`go`){let n=await Oo(e.installPath,e.version,e.projectDir,S,v,d);if(!n){delete A.make[e.key];return}e.newSpec=`${n.newInstallPath}@${n.newVersion}`,f.new=n.newVersion,t=n}else{let n=await ko(e.image,S,d);if(!n){delete A.make[e.key];return}e.newSpec=xo(e.image.writtenImage,n.newTag,e.image.digest?n.newDigest:null),f.new=n.newTag,t=n}f.info=t.info,t.date&&fs(f,t.date)}catch(t){delete A.make[e.key],ye(`make`,e.key,t)}},{concurrency:r}),Object.keys(A.make).length||delete A.make})());try{await Promise.all(tt)}finally{await Rt()}if(!ms(A))return _e.length?{results:{},errors:_e}:{results:{},message:`All dependencies are up to date.`};if(n.update){let e=(e,t,n)=>{for(let r of t){let t=Yo(A[e],r.memberPath);Object.keys(t).length&&vs(r.absPath,n(r.content,t))}},t=new Map;for(let[e,n]of Object.entries(A.actions??{})){let[r,i]=e.split(`\0`),a=Vn.test(n.old)?n.newPrint:void 0;Ue(t,r,{name:i,oldRef:n.old,newRef:n.new,newComment:a})}let n=new Map;for(let[e,t]of Object.entries(A.docker??{})){let[r]=e.split(`\0`),i=n.get(r);i||n.set(r,i={}),i[e]=t}let r=new Map;for(let e of B)!e.newSpec||!A.make?.[e.key]||Ue(r,e.key.split(`\0`)[0],{oldSpec:e.oldSpec,newSpec:e.newSpec});let i=Object.keys(A).sort((e,t)=>(e===`docker`)-+(t===`docker`));for(let a of i)if(Object.keys(A[a]).length){if(a===`actions`){for(let[e,n]of t){let{absPath:t,content:r}=Ie[e]||{};if(!t)continue;let i=Ea(r,n);vs(t,i),L[e]&&(L[e].content=i)}continue}if(a===`docker`){for(let[e,t]of n){let n=L[e];if(!n)continue;let{absPath:r,content:i,fileType:a}=n;vs(r,(a===`dockerfile`?no:a===`compose`?ro:io)(i,t))}continue}if(a===`make`){for(let[e,t]of r){let n=Be[e];n&&vs(n.absPath,Ao(n.content,t))}continue}if(a===`go`){for(let e of[...Ve,...M.go??[]]){let t=Yo(A[a],e.memberPath);if(!Object.keys(t).length)continue;let[n,r]=fa(e.content,t);n!==e.content&&vs(e.absPath,n),pa(e.projectDir,r,vs)}if(He){let e={};for(let[t,n]of Object.entries(A[a]))t.split(`\0`)[0]===`replace`&&(e[t]=n);if(Object.keys(e).length){let[t]=fa(He.content,e);t!==He.content&&vs(He.file,t)}}}else a===`cargo`?(e(a,R,qo),e(a,M.cargo??[],qo)):a===`npm`?(e(a,Ke,ns),e(a,Ge,Zr),e(a,M.npm??[],Zr)):e(a,M[a]??[],vi)}}let rt=bs(A);return _e.length&&(rt.errors=_e),rt}function Cs(e){return/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):e}function ws(e){let t=tr(e);if(t!==!1)return t===!0||Array.from(t).map(Cs)}function Ts(t){if(!t)return e();let n=l(t)?t:f(e(),t),r=!1;try{r=y(n).isDirectory()}catch{}return r?n:c(n)}function Es(e,t){let n=tr(e.file),r=[...n instanceof Set?n:[],...t];return{filesList:r,startDir:Ts(r[0])}}function Ds(e){let t=a({strict:!1,allowPositionals:!0,tokens:!0,options:er,...e!==void 0&&{args:e}}),n=t.values,r=new Set,i=0;for(let[e,a]of t.tokens.entries()){if(a.kind===`positional`&&i++,a.kind!==`option`||!a.value?.startsWith(`-`))continue;let o=a.value.startsWith(`--`)?2:1,s=nr(a.value.substring(o));if(!s)continue;let c=t.tokens[e+1],l=n[a.name];if(Array.isArray(l)){let e=l.indexOf(a.value);e!==-1&&l.splice(e,1)}else n[a.name]=!0;let u=c?.kind===`positional`&&c.value?c.value:!0;typeof u==`string`&&r.add(i),er[s]?.multiple?(n[s]??=[]).push(u):n[s]=u}return{args:n,positionals:t.positionals.filter((e,t)=>!r.has(t))}}async function Os(e,t){let{filesList:n,startDir:r}=Es(e,t),i=typeof e.timeout==`string`?Re(e.timeout,`timeout`):void 0,a={...await ur(r,{noCache:!!e[`no-cache`],timeout:i??5e3}),pin:void 0};e.json&&(a.json=!0),e.verbose&&(a.verbose=!0),e[`no-cache`]&&(a.noCache=!0),e.update&&(a.update=!0),e.indirect&&(a.indirect=!0),e[`error-on-outdated`]&&(a.errorOnOutdated=!0),e[`error-on-unchanged`]&&(a.errorOnUnchanged=!0),e.color&&(a.color=!0,a.noColor=!1),e[`no-color`]&&(a.color=!1,a.noColor=!0),i!==void 0&&(a.timeout=i),typeof e.sockets==`string`&&(a.sockets=Re(e.sockets,`sockets`)),typeof e.registry==`string`&&(a.registry=e.registry),typeof e.cooldown==`string`&&(a.cooldown=Number(e.cooldown)||e.cooldown);let o=ir(e.include).map(Cs),s=ir(e.exclude).map(Cs);o.length&&(a.include=o),s.length&&(a.exclude=s);let c=ir(e.types);c.length&&(a.types=c);let l=or(e.pin);Object.keys(l).length&&(a.pin=l);let u=tr(e.modes);u instanceof Set&&(a.modes=Array.from(u));for(let t of[`greatest`,`prerelease`,`release`,`patch`,`minor`]){let n=ws(e[t]);n!==void 0&&(a[t]=n)}let d=ws(e[`allow-downgrade`]);d!==void 0&&(a.allowDowngrade=d),n.length&&(a.files=n);for(let t of[`forgeapi`,`pypiapi`,`jsrapi`,`goproxy`,`cargoapi`,`dockerapi`])typeof e[t]==`string`&&(a[t]=e[t]);return a}function ks(e){try{return dr(g(u(e,`.npmrc`),`utf8`)).registry}catch{return}}function As(e,t){try{return`${new URL(typeof e==`string`&&e?e:t).origin}/`}catch{return null}}const js={npm:[`registry`,`jsrapi`,`forgeapi`],pypi:[`pypiapi`],cargo:[`cargoapi`],go:[`goproxy`],docker:[`dockerapi`],actions:[`forgeapi`,`dockerapi`],make:[`goproxy`,`dockerapi`]};function Ms(e){if(De[e])return De[e];if(co(e))return`docker`;if(po(e))return`make`}function Ns(e,t){let n=new Set;try{for(let t of _(e,{withFileTypes:!0}))if(t.isFile()){let e=Ms(t.name);e&&n.add(e)}else t.isDirectory()&&P.some(e=>e===t.name)&&n.add(`actions`)}catch{}let r=new Set;for(let i of n)for(let n of js[i]??[]){let i=As(n===`registry`&&typeof t.registry!=`string`?ks(e):t[n],n===`goproxy`?xi()[0].url:Y[n]);i&&r.add(i)}return Array.from(r)}const Ps=/[A-Za-z_$]/,Fs=/[A-Za-z0-9_$]/;function Is(e){let t=``,n=0,r=e.length,i=-1;function a(t){if(e[t+1]===`/`){for(t+=2;t<r&&e[t]!==`
|
|
7
18
|
`;)t++;return t}for(t+=2;t<r&&(e[t]!==`*`||e[t+1]!==`/`);)t++;return t+2}function o(t){for(;t<r;){if(/\s/.test(e[t])){t++;continue}if(e[t]===`/`&&(e[t+1]===`/`||e[t+1]===`*`)){t=a(t);continue}break}return t}for(;n<r;){let s=e[n];if(s===`"`){for(i=-1,t+=s,n++;n<r;){let i=e[n];if(t+=i,n++,i===`\\`&&n<r){t+=e[n],n++;continue}if(i===`"`)break}continue}if(s===`'`){for(i=-1,t+=`"`,n++;n<r;){let i=e[n];if(i===`\\`){let a=e[n+1];if(a===`'`){t+=`'`,n+=2;continue}if(a===`
|
|
8
|
-
`){n+=2;continue}t+=i,n+1<r?(t+=a,n+=2):n++;continue}if(i===`"`){t+=`\\"`,n++;continue}if(i===`'`){t+=`"`,n++;break}t+=i,n++}continue}if(s===`/`&&(e[n+1]===`/`||e[n+1]===`*`)){n=a(n);continue}if(s===`,`){i=t.length,t+=s,n++;continue}if(s===`}`||s===`]`){i>=0&&(t=t.slice(0,i)+t.slice(i+1)),i=-1,t+=s,n++;continue}if(
|
|
19
|
+
`){n+=2;continue}t+=i,n+1<r?(t+=a,n+=2):n++;continue}if(i===`"`){t+=`\\"`,n++;continue}if(i===`'`){t+=`"`,n++;break}t+=i,n++}continue}if(s===`/`&&(e[n+1]===`/`||e[n+1]===`*`)){n=a(n);continue}if(s===`,`){i=t.length,t+=s,n++;continue}if(s===`}`||s===`]`){i>=0&&(t=t.slice(0,i)+t.slice(i+1)),i=-1,t+=s,n++;continue}if(Ps.test(s)){i=-1;let a=``;for(;n<r&&Fs.test(e[n]);)a+=e[n],n++;t+=e[o(n)]===`:`?JSON.stringify(a):a;continue}/\s/.test(s)||(i=-1),t+=s,n++}return JSON.parse(t)}export{Lt as $,Zn as A,Gt as B,Xn as C,On as D,Pn as E,vn as F,Bt as G,Un as H,Yn as I,zn as J,Qt as K,Jt as L,Ut as M,Vn as N,$n as O,hn as P,Pt as Q,Hn as R,_n as S,Kt as T,An as U,Vt as V,Wn as W,Z as X,X as Y,bn as Z,nn as _,Es as a,Ve as at,Xt as b,Fn as c,Y as d,q as et,Yt as f,Gn as g,Rn as h,Os as i,We as it,Wt as j,ln as k,gn as l,qn as m,Ns as n,R as nt,Ss as o,F as ot,sn as p,Bn as q,Ds as r,ge as rt,ga as s,He as st,Is as t,P as tt,rn as u,Ht as v,wn as w,yn as x,tn as y,un as z};
|
package/dist/shared2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
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};
|