updates 17.22.0 → 17.22.1

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