updates 17.16.10 → 17.16.12
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/dist/index.js +1 -1
- package/dist/shared.js +6 -6
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{a as e,c as t,d as n,f as r,h as i,i as a,l as o,n as s,o as c,p as l,r as u,s as d,u as f}from"./shared.js";import{argv as p,cwd as m,exit as h,platform as g,stderr as _,stdout as v,versions as y}from"node:process";import{parseArgs as b,stripVTControlCharacters as x,styleText as S}from"node:util";import{dirname as C,isAbsolute as w,resolve as T}from"node:path";import{statSync as E}from"node:fs";for(let e of s(m(),p.slice(2)))fetch(e,{method:`HEAD`}).catch(()=>{});const D=b({strict:!1,allowPositionals:!0,tokens:!0,options:d}),O=D.values;for(let[t,n]of D.tokens.entries())if(n.kind
|
|
2
|
+
import{a as e,c as t,d as n,f as r,h as i,i as a,l as o,n as s,o as c,p as l,r as u,s as d,u as f}from"./shared.js";import{argv as p,cwd as m,exit as h,platform as g,stderr as _,stdout as v,versions as y}from"node:process";import{parseArgs as b,stripVTControlCharacters as x,styleText as S}from"node:util";import{dirname as C,isAbsolute as w,resolve as T}from"node:path";import{statSync as E}from"node:fs";for(let e of s(m(),p.slice(2)))fetch(e,{method:`HEAD`}).catch(()=>{});const D=b({strict:!1,allowPositionals:!0,tokens:!0,options:d}),O=D.values;for(let[t,n]of D.tokens.entries()){if(n.kind!==`option`||!n.value?.startsWith(`-`))continue;let r=n.value.startsWith(`--`)?2:1,i=e(n.value.substring(r));if(!i)continue;let a=D.tokens[t+1];O[n.name]=[!0],(O[i]??=[]).push(a?.kind===`positional`&&a.value?a.value:!0)}const k=D.values,A=D.positionals;function j(e){return/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):e}function M(e){let t=o(e);if(t!==!1)return t===!0?!0:Array.from(t).map(j)}let N=String,P=String;function F(e){if(!e)return m();let t=w(e)?e:T(m(),e),n=!1;try{n=E(t).isDirectory()}catch{}return n?t:C(t)}function I(e){return k[`no-color`]===!0?!1:k.color===!0?!0:e.noColor===!0?!1:e.color===!0?!0:!!v.isTTY}async function L(e,t){if(e){let t=e.message??String(e);k.json?console.info(JSON.stringify({error:t})):console.info(N(t))}g===`win32`&&Number(y?.node?.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),h(t??+!!e)}async function R(){for(let e of[v,_])e?._handle?.setBlocking?.(!0);k.help&&(v.write(`usage: updates [options] [files...]
|
|
3
3
|
|
|
4
4
|
Options:
|
|
5
5
|
-u, --update Update versions and write dependency file
|
package/dist/shared.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{cwd as e,env as t,platform as n,stderr as r}from"node:process";import{styleText as i}from"node:util";import{basename as a,dirname as o,join as s,relative as c,resolve as l}from"node:path";import{accessSync as u,existsSync as d,globSync as f,lstatSync as p,readFileSync as m,readdirSync as h,statSync as g,truncateSync as _,writeFileSync as v}from"node:fs";import{access as y,mkdir as b,readFile as x,writeFile as S}from"node:fs/promises";import{createHash as C}from"node:crypto";import{homedir as w}from"node:os";import{pathToFileURL as T}from"node:url";function ee(e){let t={},n=t,r=e.split(/\r?\n/);for(let e=0;e<r.length;e++){let i=r[e],a=ae(i).trim();if(!a)continue;let o=/^\[\[([^\]]+)\]\]$/.exec(a);if(o){let e=t,r=
|
|
2
|
-
`;case`r`:return`\r`;case`t`:return` `;case`u`:case`U`:return String.fromCodePoint(Number.parseInt(t.slice(1),16));default:return t}})}const
|
|
3
|
-
`)}return
|
|
4
|
-
`);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}}async function Je(e,t,n){try{await(Ge??=b(We,{recursive:!0})),await S(s(We,`${Ke(e)}.cache`),`${t}\n${n}`)}catch{}}var Ye=`17.16.10`;function K(e,t,n){if(!t||!n||!e)return!0;let r=Date.parse(e);return Number.isNaN(r)?!0:(n-r)/(24*3600*1e3)>=t}const Xe=Ye,Ze=5e3,q=e=>e.replace(/^v/,``),Qe=e=>e.endsWith(`/`)?e.slice(0,-1):e;function $e(e,t){return{headers:{"user-agent":`updates/${Xe}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function et(e,t){try{return await fetch(e,t)}catch(t){throw Error(`Failed to fetch ${e}${t?.message?`: ${t.message}`:``}`)}}async function tt(e){return typeof e.text==`function`?e.text():JSON.stringify(await e.json())}async function nt(e,t,n={}){let r=t.noCache?null:await qe(e),i=n.headers,a=r?{...i,"if-none-match":r.etag}:i,o=await t.doFetch(e,{...n,headers:a,signal:AbortSignal.timeout(t.fetchTimeout)});if(!o)return{res:void 0};if(o.status===304&&r)return{body:r.body,res:o};if(!o.ok)return{res:o};let s=await tt(o),c=o.headers?.get?.(`etag`);return c&&!t.noCache&&await Je(e,c,s),{body:s,res:o}}async function rt(e,t,n={}){if(!t.noCache){let t=await qe(e);if(t)return{body:t.body}}let r=await t.doFetch(e,{...n,signal:AbortSignal.timeout(t.fetchTimeout)});if(!r)return{res:void 0};if(!r.ok)return{res:r};let i=await tt(r);return t.noCache||await Je(e,`immutable`,i),{body:i,res:r}}function it(e){return(F(e)?.prerelease.length??0)>0}function at(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}function ot(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=J(e),s=J(t);if(!o||!s)return!0;let c=at(e)||it(e),l=it(t);return c&&!l?de(s,o)||n:!l&&fe(s,o)?r===!0||a(i,r):!0}function J(e){return L(e)?.version??``}function st(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:u}){let d=J(n);if(!d)return d;i=at(n)||i,i&&(r.add(`prerelease`),r.has(`patch`)&&r.add(`prepatch`),r.has(`minor`)&&r.add(`preminor`),r.has(`major`)&&r.add(`premajor`));let f=u??(t=>e?.time?.[t]),p=0,m=d;for(let n of t){let t=F(n);if(!t?.version||t.prerelease.length&&(!i||a))continue;let u=t.version;if(s&&!U(u,s)||!K(f(n),c,l))continue;let d=R(m,u);if(!(!d||!r.has(d)))if(o||!(`time`in e))(B(`${t.major}.${t.minor}.${t.patch}`,m)||s&&!U(m,s))&&(m=u);else{let t=Date.parse(e.time[n]);t>=0&&t>p&&(m=u,p=t)}}return m||null}function ct(e,{mode:t,range:n,useGreatest:r,useRel:i,usePre:a,semvers:o,pinnedRange:s,cooldownDays:c,now:l},{allowDowngrade:u,matchesAny:d,isGoPseudoVersion:f}){if(n===`*`||n.includes(`||`))return null;let p=[],m;if(t===`pypi`)p=Object.keys(e.releases).filter(e=>P(e)),m=t=>e.releases?.[t]?.[0]?.upload_time_iso_8601;else if(t===`npm`||t===`cargo`)p=Object.keys(e.versions).filter(e=>P(e)),m=t=>e.time?.[t];else if(t===`go`){let t=J(n);if(!t)return null;let r=a||at(n),p=e=>it(e)&&(!r||i),m={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d},h=e.old||n,g=J(e.new);if(g&&!f(e.new)&&!p(e.new)){let n=R(t,g);if(n&&o.has(n)&&ot(h,e.new,m)&&K(e.Time,c,l)&&(!s||U(g,s)))return e.new}let _=J(e.sameMajorNew);if(_&&!f(e.sameMajorNew)&&!p(e.sameMajorNew)){let n=R(t,_);if(n&&o.has(n)&&ot(h,e.sameMajorNew,m)&&K(e.sameMajorTime,c,l)&&(!s||U(_,s)))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}if(c&&l&&e.olderEligible&&!p(e.olderEligible.version)){let n=J(e.olderEligible.version);if(n){let r=R(t,n);if(r&&o.has(r)&&ot(h,e.olderEligible.version,m)&&(!s||U(n,s)))return e.Time=e.olderEligible.time,delete e.newPath,e.olderEligible.version}}return null}let h=st(e,p,{range:n,semvers:o,usePre:a,useRel:i,useGreatest:r,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:m});if(!h)return null;if(r)return h;{let r=``,f=``;t===`pypi`?(f=e.info.version,r=J(e.info.version)):r=e[`dist-tags`].latest;let p=J(n),m=at(n),g=it(h),_=it(r),v={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d};if(!i&&a||m&&g)return h;if(m&&!g)return ot(n,h,v)?h:null;let y=R(p,r);return y&&y!==`prerelease`&&!o.has(y.replace(/^pre/,``))||i&&it(r)?h:fe(r,p)&&!_?ot(n,r,v)?r:null:!m&&_&&!a||s&&!U(r,s)||c&&l&&!K(t===`pypi`?e.releases?.[f||r]?.[0]?.upload_time_iso_8601:e.time?.[r],c,l)?h:f||r}}const lt=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&<.set(e.substring(0,t),e.substring(t+1))}const ut=Array.from(new Set([`UPDATES_GITHUB_API_TOKEN`,`GITHUB_API_TOKEN`,`GH_TOKEN`,`GITHUB_TOKEN`,`HOMEBREW_GITHUB_API_TOKEN`].map(e=>t[e]).filter(Boolean)));let dt;function ft(){return ut.length?Promise.resolve(ut):dt??=(async()=>{try{let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]),{stdout:n}=await t(e)(`gh`,[`auth`,`token`],{encoding:`utf8`,timeout:5e3}),r=n.trim();return r?[r]:ut}catch{return ut}})()}const pt=new Map;async function mt(e){try{let t=lt.get(new URL(e).hostname);if(t)return[t]}catch{}return ft()}async function ht(e,t,n){let r;try{r=new URL(e).hostname}catch{r=``}let i=await(r?mt(e):ft()),a=AbortSignal.timeout(t.fetchTimeout),o=e=>{let t=$e(`Bearer`,e);return n&&(t.headers={...t.headers,...n}),t.signal=a,t};if(!i.length)return t.doFetch(e,o());let s=r?pt.get(r):void 0;if(s)return t.doFetch(e,o(s));for(let n of i){let i=await t.doFetch(e,o(n));if(i.status!==401&&i.status!==403)return r&&pt.set(r,n),i}return t.doFetch(e,o())}function gt(e,t,n){let r=q(t);if(!P(r))return null;if(n){let n=t,i=q(t);for(let t of e){let e=q(t);P(e)&&(!n||de(e,i))&&(n=t,i=e)}if(pe(r,i))return n}else{let t=e.at(-1);if(!t)return null;let n=q(t);if(!P(n))return null;if(pe(r,n))return t}return null}function _t(e){return e=e.replace(`git@`,``).replace(/.+?\/\//,`https://`).replace(/\.git$/,``),/^[a-z]+:[a-z0-9-]\/[a-z0-9-]$/.test(e)?e.replace(/^(.+?):/,(e,t)=>`https://${t}.com/`):/^[a-z0-9-]\/[a-z0-9-]$/.test(e)?`https://github.com/${e}`:e}const vt=/^[0-9a-f]{7,}$/i;function yt(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function bt(e,t){let n=t.noCache?null:await qe(e),r=await ht(e,t,n?{"if-none-match":n.etag}:void 0);if(r?.status===304&&n)try{let e=JSON.parse(n.body);return{tags:e.tags||[],link:e.link||``}}catch{return null}if(!r?.ok)return null;let i=yt(await r.json()),a=r.headers.get(`link`)||``,o=r.headers.get(`etag`);return o&&!t.noCache&&await Je(e,o,JSON.stringify({link:a,tags:i})),{tags:i,link:a}}async function xt(e,t,n,r){let i=r=>`${e}/repos/${t}/${n}/tags?per_page=100&page=${r}`;try{let e=await bt(i(1),r);if(!e)return[];let t=Array.from(e.tags),n=/<([^>]+)>;\s*rel="last"/.exec(e.link);if(!n)return t;let a=Number(new URL(n[1]).searchParams.get(`page`));if(a<2)return t;let o=await Promise.all(Array.from({length:a-1},(e,t)=>bt(i(t+2),r)));for(let e of o)e&&t.push(...e.tags);return t}catch{return[]}}function St(e,t,n,r){throw e?.status&&e?.statusText?Error(`Received ${e.status} ${e.statusText} from ${t}`):Error(`Unable to fetch ${n} from ${r}`)}function Ct(e,t,n=``){let r=t.startsWith(`v`),i=q(e),a=q(t).split(`.`).length,o=i.split(`.`),s;return s=a===1?o[0]:a===2?`${o[0]}.${o[1]||`0`}`:i,`${r?`v`:``}${s}${n}`}function wt(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function Tt({repository:e,homepage:t,info:n},r,i){if(n){let t=n.project_urls;for(let n of[`repository`,`Repository`,`repo`,`Repo`,`source`,`Source`,`source code`,`Source code`,`Source Code`,`homepage`,`Homepage`])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=_t(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${wt(a)}/${e.directory}`)),a||t||``)}const Et={"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 Dt(e,t){return RegExp(`^${G(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Ot(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Dt(e,n):e instanceof RegExp?e:Dt(e,n)}function kt(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.flatMap(e=>typeof e==`string`?Le(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function At(e){for(let[t,{short:n}]of Object.entries(Et))if(t===e||n===e)return t;return``}function jt(e){return new Set(e.map(e=>Ot(e,!1,!0)))}function Mt(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>Le(e)):[]}function Nt(e){let t={},n=Array.isArray(e)?e:[e];for(let e of n){if(typeof e!=`string`)continue;let[n,r]=e.split(`=`,2);n&&r&&Se(r)&&(t[n]=r)}return t}function Pt(e){if(typeof e==`boolean`)return e;if(!Array.isArray(e)||!e.length)return!1;let t=new Set;for(let n of e)t.add(Ot(n,!1,!1));return t}async function Ft(e){let t=await Promise.all([`js`,`ts`,`mjs`,`mts`].map(async t=>{let n=`updates.config.${t}`,r=s(e,n);try{await y(r)}catch{return null}try{return{configDir:e,filename:n,default:(await import(T(r).href)).default??{}}}catch(e){return Error(`Unable to parse config file ${n}: ${e?.message??e}`)}}));for(let e of t)if(e&&!(e instanceof Error))return e;for(let e of t)if(e instanceof Error)throw e;return null}const It=Ue(e=>He(e,Ft));async function Lt(e){let t=await It(e),n=t?.default??{},{loadRenovateConfig:r}=await import(`./renovate.js`);return{...await r(t?.configDir??e,n.inherit?.renovate),...n}}function Rt(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();i.length>=2&&(i.startsWith(`"`)&&i.endsWith(`"`)||i.startsWith(`'`)&&i.endsWith(`'`))&&(i=i.slice(1,-1)),t[e.slice(0,r).trim()]=i}return t}function zt(e){try{return Rt(m(e,`utf-8`))}catch{return}}function Bt(t){let n=e();for(;;){let e=s(n,t);try{return g(e),e}catch{}let r=o(n);if(r===n)break;n=r}}function Vt(e){let n={},r=e.toLowerCase();for(let[i,a]of Object.entries(t))if(i.toLowerCase().startsWith(r)){let t=i.substring(e.length).split(`__`).filter(Boolean);if(t.length===0)continue;let r=n;for(let e=0;e<t.length;e++){let n=t[e];if(e===t.length-1)r[n]=a;else if(r[n]===void 0&&(r[n]={}),typeof r[n]==`object`)r=r[n];else break}}return n}function Ht(e,r={}){let i=n===`win32`,a=i?t.USERPROFILE:t.HOME,o=[{...r}],c=[];function l(e){if(!e||c.includes(e))return;let t=zt(e);t&&(o.push(t),c.push(e))}i||(l(s(`/etc`,e,`config`)),l(s(`/etc`,`${e}rc`))),a&&(l(s(a,`.config`,e,`config`)),l(s(a,`.config`,e)),l(s(a,`.${e}`,`config`)),l(s(a,`.${e}rc`))),l(Bt(`.${e}rc`));let u=Vt(`${e}_`);return u.config&&l(u.config),Object.assign({},...o,u,c.length?{configs:c,config:c[c.length-1]}:void 0)}const Ut=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,Wt=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,Gt=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,Kt=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,qt=`https://registry.npmjs.org`;let Y=null;const Jt=new Map;function Yt(){return Y??=Ht(`npm`,{registry:qt})}function Xt(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function Zt(e,t){let n=n=>t[`${e}:${n}`]||t[`${e}/:${n}`],r=n(`_authToken`);if(r)return{token:Xt(r),type:`Bearer`};let i=n(`username`),a=n(`_password`);if(i&&a){let e=Buffer.from(Xt(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:Xt(o),type:`Basic`}}function Qt(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=Zt(`//${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:Xt(i),type:`Basic`}}function $t(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function en(e,t){Y||=Yt();let n=e.startsWith(`@`)?(/@[a-z0-9][\w.-]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=Jt.get(r);if(i)return i;let a=()=>({auth:Qt(t,Y),registry:t}),o;if(!e.startsWith(`@`))o=a();else{let e=Qe($t(n,Y));if(e!==t)try{let t=Qt(e,Y);o=t?.token?{auth:t,registry:e}:a()}catch{o=a()}else o=a()}return Jt.set(r,o),o}function tn(e,t,n){Y||=Yt();let r=Qe((typeof n.registry==`string`?n.registry:!1)||t.registry||Y.registry||qt);return{...en(e,r),originalRegistry:r}}function nn(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const rn=new Map,an=new Map,on=new Map;async function sn(e,t,n,r,i){let{auth:o,registry:s}=tn(e,n,r),c=nn(s,t===`resolutions`?a(e):e),l=rn.get(c);if(!l){let t=$e(o?.type,o?.token),n={...t.headers,accept:`application/vnd.npm.install-v1+json`};t.headers=n,l=(async()=>{let r=i.noCache?null:await qe(c);r&&(n[`if-none-match`]=r.etag);let a=await i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...t});if(a?.status===304&&r)return JSON.parse(r.body);if(a?.ok){let e=await a.text(),t=a.headers.get(`etag`);return t&&!i.noCache&&await Je(c,t,e),JSON.parse(e)}St(a,c,e,s)})().catch(e=>{throw rn.delete(c),e}),rn.set(c,l)}return[await l,t,s,e]}async function cn(e,t,n,r,i){let{auth:a,registry:o}=tn(e,n,r),s=nn(o,e,t),c=an.get(s);if(c)return c;let l=(async()=>{try{let n=$e(a?.type,a?.token),r=await rt(s,i,n);if(!(`body`in r))return{};let c=JSON.parse(r.body),l=``,u=c?._npmOperationalInternal?.tmp;if(u){let e=/(\d{13})/.exec(u);e&&(l=new Date(Number(e[1])).toISOString())}if(!l){let r=nn(o,e),a=on.get(r);a||(a=i.doFetch(r,{...n,signal:AbortSignal.timeout(i.fetchTimeout)}).then(e=>e?.ok?e.json():null).catch(()=>(on.delete(r),null)),on.set(r,a)),l=(await a)?.time?.[t]||``}return{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})();return an.set(s,l),l}function ln(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function un(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function dn(e,t){if(e.startsWith(`npm:@jsr/`)){let t=/^npm:@jsr\/([^_]+)__([^@]+)@(.+)$/.exec(e);if(t)return{scope:t[1],name:t[2],version:t[3]}}else if(e.startsWith(`jsr:@`)){let t=/^jsr:@([^/]+)\/([^@]+)@(.+)$/.exec(e);if(t)return{scope:t[1],name:t[2],version:t[3]}}else if(e.startsWith(`jsr:`)){let n=e.substring(4);if(t?.startsWith(`@`)){let e=/^@([^/]+)\/(.+)$/.exec(t);if(e)return{scope:e[1],name:e[2],version:n}}}return{scope:null,name:null,version:``}}async function fn(e,t,n){let r=/^@([^/]+)\/(.+)$/.exec(e);if(!r)throw Error(`Invalid JSR package name: ${e}`);let[,i,a]=r,o=`${n.jsrApiUrl}/@${i}/${a}/meta.json`,s=await nt(o,n,{headers:{"accept-encoding":`gzip, deflate, br`}});if(`body`in s){let r=JSON.parse(s.body),i={},a={};for(let[e,t]of Object.entries(r.versions))i[e]={version:e,time:t.createdAt},a[e]=t.createdAt;return[{name:e,"dist-tags":{latest:r.latest},versions:i,time:a},t,n.jsrApiUrl,e]}St(s.res,o,e,`JSR`)}function pn(e,t){let n=new Map;for(let[e,{old:r,oldOrig:i,new:a}]of Object.entries(t)){let[t,o]=e.split(`\0`),s=i||r;t===`packageManager`?n.set(`${t}\0${o}@${s}`,`"${t}": "${o}@${a}"`):n.set(`${o}\0${s}`,`"${o}": "${a}"`)}return n.size?e.replace(/"((?:[^"\\]|\\.)*)": *"((?:[^"\\]|\\.)*)"/g,(e,t,r)=>n.get(`${t}\0${r}`)??e):e}function mn(e,t,n){let r=e.replace(Kt,t);if(n&&n!==e&&/^[\^~]/.test(r)){let e=n.substring(1).split(`.`),t=r.substring(1).split(`.`);e.length!==t.length&&(r=`${r[0]}${t.slice(0,e.length).join(`.`)}`)}if(n&&n!==e&&r.startsWith(`>=`)){let e=/^>=\s/.test(n)?`>= `:`>=`,t=n.replace(/^>=\s*/,``),i=r.replace(/^>=\s*/,``),a=t.split(`.`),o=i.split(`.`);a.length!==o.length&&(r=`${e}${o.slice(0,a.length).join(`.`)}`)}return r}function X(e){let t=e.match(Gt);return t?.length===1?e.replace(Gt,J(t[0])):e}async function hn(e,t,n){let r=`${n.forgeApiUrl}/repos/${e}/${t}/commits`;try{let e=n.noCache?null:await qe(r),t=await ht(r,n,e?{"if-none-match":e.etag}:void 0);if(t?.status===304&&e){let{sha:t,commit:n}=JSON.parse(e.body)[0];return{hash:t,commit:n}}if(!t?.ok)return{hash:``,commit:{}};let i=await t.text(),a=t.headers.get(`etag`);a&&!n.noCache&&await Je(r,a,i);let{sha:o,commit:s}=JSON.parse(i)[0];return{hash:o,commit:s}}catch{return{hash:``,commit:{}}}}async function gn(e,t,n){return(await xt(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function _n(e,t,n,r){let i=t.old.replace(Ut,``),[,a,o,s]=Wt.exec(i)||[];if(!a||!o||!s)return null;if(vt.test(s)){let{hash:n,commit:i}=await hn(a,o,r);if(!n)return null;let c=i?.committer?.date??i?.author?.date,l=n.substring(0,s.length);if(s!==l)return{key:e,newRange:t.old.replace(s,l),user:a,repo:o,oldRef:s,newRef:l,newDate:c}}else{let t=gt(await gn(a,o,r),s,n);if(t)return{key:e,newRange:t,user:a,repo:o,oldRef:s,newRef:t}}return null}async function vn(e,t,n){let r=`${n.pypiApiUrl}/pypi/${e}/json`,i=await nt(r,n,{headers:{"accept-encoding":`gzip, deflate, br`}});if(`body`in i)return[JSON.parse(i.body),t,null,e];St(i.res,r,e,n.pypiApiUrl)}function yn(e,t){let n=e;for(let[e,{old:r,oldOrig:i}]of Object.entries(t)){let a=e.split(`\0`)[1],o=i||r;n=n.replace(RegExp(`("${G(a)} *[<>=~]+ *)${G(o)}(")`,`g`),(n,r,i)=>`${r}${t[e].new}${i}`)}return n}let bn;async function xn(){let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]);return t(e)}function Sn(){return bn??=xn()}function Cn(){let e=t.GOPROXY||`https://proxy.golang.org,direct`;for(let t of e.split(/[,|]/)){let e=t.trim();if(e&&e!==`direct`&&e!==`off`)return Qe(e)}return`https://proxy.golang.org`}function wn(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function Tn(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function En(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}function Dn(e){let t=/\/v(\d+)$/.exec(e);return t?Number.parseInt(t[1]):1}function On(e,t){return t<=1?e.replace(/\/v\d+$/,``):`${e.replace(/\/v\d+$/,``)}/v${t}`}function kn(e,t){let n=t?/^(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(e):/^replace\s+(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(e);if(!n)return null;let[,r,i,a]=n;return i.startsWith(`./`)||i.startsWith(`/`)||i.startsWith(`../`)?null:{origModule:r,targetModule:i,targetVersion:a}}function An(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||jn(n)}function jn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function Mn(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function Nn(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 Pn(e,t,n,r,i,a){let o=r?.Version??i,s=r?.Time??a,c=r?.path??e;return[{name:e,old:n,new:q(o),Time:s,...c===e?{}:{newPath:c},sameMajorNew:q(i),sameMajorTime:a},t,null,e]}function Fn(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(/^require\s*\(/.test(i)){c=!0;continue}if(/^replace\s*\(/.test(i)){l=!0;continue}if(/^tool\s*\(/.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(u){i&&!i.startsWith(`//`)&&o.push(i);continue}let s=/^tool\s+(\S+)/.exec(i);if(s){o.push(s[1]);continue}let d=i.includes(`// indirect`);if(l||/^replace\s+/.test(i)){let e=kn(i,l);e&&(r[e.targetModule]=e.targetVersion,a.add(e.origModule));continue}let f=c?/^(\S+)\s+(v\S+)/.exec(i):/^require\s+(\S+)\s+(v\S+)/.exec(i);f&&((d?n:t)[f[1]]=f[2])}for(let e of a)delete t[e],delete n[e];if(o.length){let e=[...Object.keys(n),...Object.keys(t)];for(let r of o){let a=``;for(let t of e)(r===t||r.startsWith(`${t}/`))&&t.length>a.length&&(a=t);let o=a?n[a]?n:t[a]?t:null:null;o&&(i[a]=o[a],delete o[a])}}return{deps:t,indirect:n,replace:r,tool:i}}async function In(e,n,r,i,a){let o=Dn(e),s=async(e,n)=>{try{let{stdout:r}=await(await Sn())(`go`,[`list`,`-m`,`-json`,`${e}@latest`],{timeout:n,cwd:i,env:t}),a=JSON.parse(r);return{Version:a.Version,Time:a.Time||``,path:e}}catch{return null}},c=An(e,n,r),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(On(e,o+1),a.goProbeTimeout)]);return l?Pn(e,n,r,await Nn(o,u,t=>s(On(e,t),a.goProbeTimeout)),l.Version,l.Time):Mn(e,r,n)}async function Ln(e,t,n,r,i,a){if(Tn(e,a))return In(e,t,n,r,i);let o=En(e),s=Dn(e),c=async t=>{let n=On(e,t);return i.doFetch(`${i.goProxyUrl}/${En(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout),headers:{"accept-encoding":`gzip, deflate, br`}}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},l=An(e,t,n),[u,d]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}}),l?null:c(s+1)]);if(!u.ok)return Mn(e,n,t);let f,p;try{let e=await u.json();f=e.Version,p=e.Time}catch{return Mn(e,n,t)}return Pn(e,t,n,await Nn(s,d,c),f,p)}function Rn(e,t){let n=G(t);return e=e.replace(RegExp(`^replace\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(RegExp(`^\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(/^replace\s*\(\s*\)\s*\n/gm,``),e}function zn(e,t){let n=e,r={};for(let[e,{old:i,oldOrig:a}]of Object.entries(t)){let[o,s]=e.split(`\0`),c=a||i,l=t[e].new;if(o===`replace`){n=n.replace(RegExp(`(=>\\s+${G(s)}\\s+)v${G(c)}`,`g`),`$1v${l}`);continue}if(o===`indirect`){n=n.replace(RegExp(`(${G(s)}) +v${G(c)}`,`g`),`$1 v${l}`);continue}let u=Dn(s),d=Number.parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=On(s,d);n=n.replace(RegExp(`${G(s)} +v${G(c)}`,`g`),`${e} v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)${G(s)}(/\\S+)?\\s*$`,`gm`),`$1${e}$2`)),r[s]=e}else n=n.replace(RegExp(`(${G(s)}) +v${G(c)}`,`g`),`$1 v${l}`);o!==`tool`&&(n=Rn(n,s))}return[n,r]}function Bn(e,t,n){if(!Object.keys(t).length)return;let r=f(`**/*.go`,{cwd:e});for(let i of r){let r=s(e,i),a=m(r,`utf8`),o=!1;for(let[e,n]of Object.entries(t)){let t=RegExp(`"${G(e)}(/|")`,`g`),r=a.replace(t,`"${n}$1`);r!==a&&(a=r,o=!0)}o&&n(r,a)}}function Vn(e){let t=[],n={},r=e.split(/\r?\n/),i=!1,a=!1;for(let e of r){let r=e.trim();if(/^use\s*\(/.test(r)){i=!0;continue}if(/^replace\s*\(/.test(r)){a=!0;continue}if(r===`)`){i=!1,a=!1;continue}if(i){let e=/^(\S+)/.exec(r);e&&!r.startsWith(`//`)&&t.push(e[1]);continue}let o=/^use\s+(\S+)/.exec(r);if(o){t.push(o[1]);continue}if(a||/^replace\s+/.test(r)){let e=kn(r,a);e&&(n[e.targetModule]=e.targetVersion);continue}}return{use:t,replace:n}}function Hn(e){let t=`https://${Un(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[,e,i,...a]=r;return n.pathname=`/${e}/${i}/${wt(t)}/${a.join(`/`)}`,n.toString()}else return t}function Un(e){return/\/v[0-9]$/.test(e)?o(e):e}function Wn(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const Gn=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function Kn(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:vt.test(o)}}function qn(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function Jn(e,t,n,r,i){let a=`${e}/repos/${t}/${n}/git/commits/${r}`;if(!i.noCache){let e=await qe(a);if(e)return e.body}try{let e=await ht(a,i);if(!e?.ok)return``;let t=await e.json(),n=t?.committer?.date||t?.author?.date||``;return n&&!i.noCache&&await Je(a,`immutable`,n),n}catch{return``}}function Yn(e,t){return Ct(F(q(e))?.version??q(e),t)}function Xn(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?)${G(e)}@${G(r)}`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}function Zn(e){let t=e.replace(/\\/g,`/`);return/\.github\/workflows\/[^/]+\.(ya?ml)$/.test(t)}function Qn(e){try{return h(e).filter(e=>/\.(ya?ml)$/.test(e)).map(t=>l(s(e,t)))}catch{return[]}}const $n=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,er=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,tr=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,nr=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,rr=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function ir(e){let t=e.split(`/`);return 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(`/`)||t[1],repo:t[t.length-1]}}function ar(e){if(e=e.replace(/^docker:\/\//,``),e.includes(`@`))return null;let t=e.lastIndexOf(`:`),n,r;if(t===-1||e.lastIndexOf(`/`)>t||(n=e.substring(0,t),r=e.substring(t+1),!r||!$n.test(r)))return null;let{registry:i,namespace:a,repo:o}=ir(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function or(e){let t=$n.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function sr(e,t){let n=or(t);return n?Ct(e,n.version,n.suffix):t}function cr(e,t){let n=[];for(let r of e.matchAll(t)){let e=ar(r[1]);e&&n.push({ref:e,match:r[1]})}return n}async function lr(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=async e=>{try{let t=await nt(a(e),n,o);return`body`in t?JSON.parse(t.body):null}catch{return null}},c=await s(1);if(!c)return r;for(let e of c.results||[])r[e.name]=e.tag_last_pushed||e.last_updated||``;let l=Math.min(Math.ceil((c.count||0)/100),10);if(l<2)return r;let u=await Promise.all(Array.from({length:l-1},(e,t)=>s(t+2)));for(let e of u)if(e)for(let t of e.results||[])r[t.name]=t.tag_last_pushed||t.last_updated||``;return r}async function ur(e,t,n){let{registry:r,namespace:i,repo:a}=ir(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await lr(i,a,n),name:e},t,null,e]}function dr(e,t,n,r,i,a){let o=or(t);if(!o)return null;let s=L(q(o.version))?.version;if(!s)return null;let c=s,l=``,u=``;for(let[t,s]of Object.entries(e)){let e=or(t);if(!e||e.suffix!==o.suffix)continue;let d=L(q(e.version))?.version;if(!d||a&&!U(d,a)||!K(s,r,i))continue;let f=R(c,d);!f||!n.has(f)||B(d,c)&&(c=d,l=t,u=s)}if(!l||c===s)return null;let d=sr(c,t);return d===t?null:{newTag:d,date:u}}function fr(e,t,n){let r=e;for(let[e,i]of Object.entries(t)){let t=e.split(`\0`)[1],a=i.oldOrig||i.old;for(let e of n)r=r.replace(e(G(t),G(a)),`$1${t}:${i.new}`)}return r}function pr(e,t){return fr(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}`,`g`)])}function mr(e,t){return fr(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}`,`g`)])}function hr(e,t){return fr(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}`,`g`)])}const gr=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function _r(e){return/^docker-.+\.ya?ml$/.test(e)}function vr(e){return/^Dockerfile(\..+)?$/.test(e)}function yr(e){return vr(e)||_r(e)}function br(e){return vr(e)?er:tr}function xr(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const Sr=new Map;async function Cr(e,t,n){let r=`${Qe(n.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`,i=n.noCache?void 0:Sr.get(r);return i||(i=nt(r,n,$e()).then(t=>{`body`in t||St(t.res,r,e,n.cratesIoUrl);let i;try{i=JSON.parse(t.body)}catch{throw Error(`Invalid JSON from ${r}`)}let a=(i.versions||[]).filter(e=>!e.yanked),o={},s={};for(let e of a)e.num&&(o[e.num]={},s[e.num]=e.created_at||``);return{name:e,versions:o,time:s,"dist-tags":{latest:a[0]?.num??``}}}).catch(e=>{throw Sr.delete(r),e}),Sr.set(r,i)),[await i,t,null,e]}function wr(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];if(!P(a))continue;let o=t.get(i);o||t.set(i,o=[]),o.push(a)}return t}const Tr=/^\d/;function Er(e,t){return Tr.test(e)?mn(X(`^${e}`),t,`^${e}`).replace(/^\^/,``):mn(X(e),t,e)}function Dr(e,t,n){let r=e.get(t);if(!r)return;let i=Tr.test(n)?`^${n}`:n,a;for(let e of r)U(e,i)&&(!a||de(e,a))&&(a=e);return a}const Or=Pe.map(G).join(`|`);function kr(e,t){let n=e;for(let[e,r]of Object.entries(t)){let[,t]=e.split(`\0`),i=r.oldOrig||r.old,a=r.new,o=G(t),s=G(i);n=n.replace(RegExp(`^(\\s*${o}\\s*=\\s*["'])${s}(["'].*)$`,`gm`),`$1${a}$2`),n=n.replace(RegExp(`(\\s*${o}\\s*=\\s*\\{\\s*version\\s*=\\s*["'])${s}(["'])`,`g`),`$1${a}$2`),n=n.replace(RegExp(`(\\[(?:${Or})\\.${o}\\][^\\[]*?version\\s*=\\s*["'])${s}(["'])`,`g`),`$1${a}$2`)}return n}function Ar(e){return e.split(`|`)[0]}function jr(e,t){let n=t===`.`?``:`|${t}`,r={};for(let[t,i]of Object.entries(e)){let[e,a]=t.split(`\0`),o=Ar(e);e===`${o}${n}`&&(r[`${o}${a}`]=i)}return r}const Mr=/[*?{[]/;async function Nr(e,t,n,r=32){let i=new Set,a=[];for(let r of e){let e=Mr.test(r)?f(r,{cwd:t}).map(e=>l(s(t,e))):[l(s(t,r))];for(let r of e){let e=s(r,n);if(i.has(e))continue;i.add(e);let o=c(t,r);a.push({absPath:e,memberPath:`./${o.replace(/\\/g,`/`)}`})}}return(await W(a,async({absPath:e,memberPath:t})=>{try{return{absPath:e,content:await x(e,`utf8`),memberPath:t}}catch{return null}},{concurrency:r})).filter(e=>e!==null)}function Pr(e){let t=[],n=e.split(`
|
|
5
|
-
`),r=!1;for(let e of n){if(/^packages\s*:/.test(e)){r=!0;continue}if(r){if(/^\S/.test(e))break;let n=/^\s+-\s+['"]?([^'"#\s]+)['"]?/.exec(e);n&&t.push(n[1])}}return t}const Fr={"pnpm-workspace.yaml":`npm`,"package.json":`npm`,"pyproject.toml":`pypi`,"go.work":`go`,"go.mod":`go`,"Cargo.toml":`cargo`},Ir=new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`]),Lr=(e,t)=>typeof e==`string`?Qe(e):typeof t==`function`?t():t;function Rr(e,t){let n=new Map,r=new Set(e),i=t;for(;r.size;){for(let e of r){let t=s(i,e);try{u(t),n.set(e,t),r.delete(e)}catch{}}let e=o(i);if(e===i)break;i=e}return n}async function zr(e,t){let n=await W(e,async e=>{try{return[e,await x(e,`utf8`)]}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}},{concurrency:t});return new Map(n)}function Z(e,t){t&&(e.date=t,e.age=De(t,{noAffix:!0}))}function Br(e){let t=0;for(let n of Object.keys(e))t+=Object.keys(e[n]).length;return t}function Vr(e){console.error(`${Re()} ${e}`)}function Hr(t){return t.replace(`${e()}/`,``).replace(`${e()}\\`,``)}function Q(e,t,n,r,i){if(i===`engines`&&je.includes(e)||t===`pypi`&&e===`python`)return!1;if(!n.size&&!r.size)return!0;let a=t===`go`?e.replace(/\/v\d+$/,``):e;for(let t of r)if(t.test(e)||t.test(a))return!1;for(let t of n)if(t.test(e)||t.test(a))return!0;return!n.size}function Ur(t){let n=new Set;if(t)for(let e of t){let t;try{t=p(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}if(t?.isFile())n.add(l(e));else if(t?.isDirectory()){for(let t of Object.keys(Fr)){let r=s(e,t),i=null;try{i=p(r)}catch{}i?.isFile()&&n.add(l(r))}try{for(let t of h(e,{withFileTypes:!0}))t.isFile()&&yr(t.name)&&n.add(l(s(e,t.name)))}catch{}let t=l(e).replace(/\\/g,`/`),r;r=t.endsWith(`.github/workflows`)?t:t.endsWith(`.github`)?s(t,`workflows`):s(t,`.github`,`workflows`);for(let e of Qn(r))n.add(e)}else throw Error(`${e} is neither a file nor directory`)}else{let t=s(`.github`,`workflows`),r=[...Object.keys(Fr),...gr,t];for(let[i,a]of Rr(r,e()))if(i===t)for(let e of Qn(a))n.add(e);else n.add(l(a));try{for(let t of h(e(),{withFileTypes:!0}))t.isFile()&&yr(t.name)&&!gr.includes(t.name)&&n.add(l(s(e(),t.name)))}catch{}}for(let e of n)a(e)===`go.work`&&n.delete(s(o(e),`go.mod`));for(let e of n)a(e)===`pnpm-workspace.yaml`&&n.delete(s(o(e),`package.json`));return n}function $(e,t){n===`win32`&&_(e,0),v(e,t,n===`win32`?{flag:`r+`}:void 0)}function Wr(e){let t={results:{}};for(let n of Object.keys(e))for(let[r,i]of Object.entries(e[n])){typeof i.oldPrint==`string`&&(i.old=i.oldPrint),typeof i.newPrint==`string`&&(i.new=i.newPrint),typeof i.oldOrig==`string`&&!ln(i.oldOrig)&&(i.old=n===`go`?Wn(i.oldOrig):i.oldOrig),n===`go`&&(i.new=Wn(i.new)),n===`actions`&&(i.old=q(i.old),i.new=q(i.new)),delete i.oldPrint,delete i.newPrint,delete i.oldOrig,delete i.date;let[e,a]=r.split(`\0`),o=t.results[n]??={};(o[e]??={})[a]=i}return t}let Gr=!1;async function Kr(e={}){if(!Gr){let{enableDnsCache:e}=await import(`./dns.js`);e(),Gr=!0}let t={...e},n=t.sockets??25,c=t.timeout??0,u=Lr(e.forgeapi,`https://api.github.com`),d=Lr(e.pypiapi,`https://pypi.org`),f=Lr(e.jsrapi,`https://jsr.io`),p=Lr(e.goproxy,Cn),m=Lr(e.cargoapi,`https://crates.io`),h=Lr(e.dockerapi,`https://hub.docker.com`),g=wn(),_=t.color===!0||t.noColor!==!0&&r.isTTY,v=e=>_?t=>i(e,String(t)):String,y=v(`magenta`),b=v(`green`),S=v(`red`),C={fetchTimeout:c||5e3,goProbeTimeout:c?c/2:2500,forgeApiUrl:u,pypiApiUrl:d,jsrApiUrl:f,goProxyUrl:p,cratesIoUrl:m,dockerApiUrl:h,doFetch:async(e,n)=>{t.verbose&&Vr(`${y(n?.method||`GET`)} ${e}`);let r=await et(e,n);return t.verbose&&Vr(`${r.ok?b(r.status):S(r.status)} ${e}`),r},noCache:!!t.noCache},w=Pt(t.greatest),T=Pt(t.prerelease),E=Pt(t.release),te=Pt(t.patch),ne=Pt(t.minor),re=Pt(t.allowDowngrade),D=t.modes?.length?new Set(t.modes):Ir;D.has(`actions`)&&ft();function ie(e){return te===!0||Fe(e,te)?new Set([`patch`]):ne===!0||Fe(e,ne)?new Set([`patch`,`minor`]):new Set([`patch`,`minor`,`major`])}let ae=new Map;function O(e){let t=ae.get(e);return t||(t={useGreatest:typeof w==`boolean`?w:Fe(e,w),usePre:typeof T==`boolean`?T:Fe(e,T),useRel:typeof E==`boolean`?E:Fe(e,E),semvers:ie(e)},ae.set(e,t)),t}let oe=jt(t.include??[]),se=jt(t.exclude??[]),ce=t.pin??{},k={},A={},j={},M={},le=Date.now(),N=t.cooldown?Ve(String(t.cooldown)):0,F=0,I=(e,t,n,r,i,a)=>{k[e][`${t}${n}${r}`]={old:i,oldOrig:a}},ue=Ur(t.files?.length?new Set(t.files):!1),L=await zr(Array.from(ue).filter(e=>{if(Zn(e))return D.has(`actions`)||D.has(`docker`);let t=a(e);if(yr(t))return D.has(`docker`);let n=Fr[t];return!!n&&D.has(n)}),n),R={},z={},de=[],B=null,fe=[],pe=!1,me=[],he=!1,V=[],ge=[],H={};async function _e(e){let n=await Lt(e);return{modeConfig:n,modeInclude:n.include?.length?jt([...t.include??[],...n.include]):oe,modeExclude:n.exclude?.length?jt([...t.exclude??[],...n.exclude]):se,pin:{...n.pin,...ce}}}function ve(e,n){return t.types?.length?t.types:n?.types?.length?n.types:e===`npm`?Ae:e===`pypi`?Me:e===`go`?t.indirect?Ne:Ne.filter(e=>e!==`indirect`):e===`cargo`?Pe:[]}function ye(e,t,n,r){k.docker??={};for(let i of n)for(let{ref:n}of cr(e,i)){if(!Q(n.fullImage,`docker`,r.include,r.exclude,`docker`))continue;let e=`${t}${n.fullImage}`;if(k.docker[e])continue;let i=or(n.tag);i&&(k.docker[e]={old:i.version,oldOrig:n.tag},ge.push({key:e,fullImage:n.fullImage,ref:n,filePin:r.pin}))}}async function be(e){let n=await Lt(e);return{include:n.include?.length?jt([...t.include??[],...n.include]):oe,exclude:n.exclude?.length?jt([...t.exclude??[],...n.exclude]):se,pin:n.pin??{}}}for(let e of ue){if(Zn(e)){let t=D.has(`actions`),n=D.has(`docker`);if(!t&&!n)continue;let r=L.get(e),i=Hr(e),a=await be(o(e));if(R[i]={absPath:e,content:r},t){k.actions??={};let e=Array.from(r.matchAll(Gn),e=>Kn(e[1])).filter(e=>e!==null);for(let t of e){if(!Q(t.name,`actions`,a.include,a.exclude,`actions`))continue;let e=`${i}${t.name}`;k.actions[e]||(k.actions[e]={old:t.ref},V.push({...t,key:e,apiUrl:qn(t.host,u),filePin:a.pin}))}}n&&(z[i]={absPath:e,content:r,fileType:`workflow`},ye(r,i,[tr,nr,rr],a));continue}let t=a(e);if(yr(t)){if(!D.has(`docker`))continue;let n=L.get(e),r=Hr(e),i=vr(t)?`dockerfile`:`compose`,a=await be(o(e));z[r]={absPath:e,content:n,fileType:i},ye(n,r,[br(t)],a);continue}let r=Fr[t];if(!D.has(r))continue;if(t===`go.work`){k[r]??={};let t=o(l(e)),i=L.get(e);B={file:e,content:i};let a=Vn(i),[c,u]=await Promise.all([_e(t),W(a.use,async e=>{let n=l(s(t,e,`go.mod`));try{return{usePath:e,modPath:n,content:await x(n,`utf8`)}}catch{return null}},{concurrency:n})]),{modeConfig:d,modeInclude:f,modeExclude:p,pin:m}=c,h=ve(r,d);M[r]=e,H[r]={modeConfig:d,projectDir:t,pin:m};for(let e of u){if(!e)continue;let{usePath:t,modPath:n,content:i}=e,a=Fn(i),s=o(n);de.push({absPath:n,content:i,projectDir:s,usePath:t});let c=t===`.`?``:`|${t}`;for(let e of h){let t=a[e]||{};for(let[n,i]of Object.entries(t))Q(n,r,f,p,e)&&I(r,e,c,n,Wn(i),q(i))}}for(let[e,t]of Object.entries(a.replace))Q(e,r,f,p,`replace`)&&I(r,`replace`,``,e,Wn(t),q(t));F+=Object.keys(k[r]).length;continue}if(t===`go.mod`&&B||t===`package.json`&&he)continue;if(t===`Cargo.toml`){k[r]??={};let t=L.get(e),i=ee(t),a=o(l(e));M[r]=e;let s=Rr([`Cargo.lock`],a).get(`Cargo.lock`),c=i.workspace?.members,u=Array.isArray(c)&&c.length,[d,f,p]=await Promise.all([_e(a),s?x(s,`utf8`):Promise.resolve(null),u?Nr(c,a,`Cargo.toml`,n):Promise.resolve([])]),{modeConfig:m,modeInclude:h,modeExclude:g,pin:_}=d,v=ve(r,m);H[r]={modeConfig:m,projectDir:a,pin:_};let y=f?wr(f):new Map,b=(e,t)=>{for(let n of v){let i=Ie(e,n)||{};if(!(typeof i!=`object`||Array.isArray(i))){for(let[e,a]of Object.entries(i))if(Q(e,r,h,g,n))if(typeof a==`object`&&a&&`version`in a&&!(`git`in a)&&!(`path`in a)){let i=String(a.version);Se(i)&&I(r,n,t,e,Dr(y,e,i)??X(i),i)}else typeof a==`string`&&Se(a)&&I(r,n,t,e,Dr(y,e,a)??X(a),a)}}};if(u){pe=!0,b(i,``),fe.push({absPath:l(e),content:t,memberPath:`.`});for(let e of p){fe.push(e);try{b(ee(e.content),`|${e.memberPath}`)}catch(t){throw Error(`Error parsing ${e.absPath}: ${t.message}`)}}}else j[r]=t,b(i,``);F+=Object.keys(k[r]).length;continue}if(t===`pnpm-workspace.yaml`){k[r]??={};let t=o(l(e)),i=L.get(e);he=!0;let a=Pr(i),c=s(t,`package.json`),[u,d,f]=await Promise.all([_e(t),x(c,`utf8`).catch(()=>null),Nr(a,t,`package.json`,n)]),{modeConfig:p,modeInclude:m,modeExclude:h,pin:g}=u,_=ve(r,p);M[r]=e,H[r]={modeConfig:p,projectDir:t,pin:g};let v=(e,t)=>{for(let n of _){let i=e[n]||{};if(typeof i==`string`){let[e,a]=i.split(`@`);Q(e,r,m,h,n)&&I(r,n,t,e,X(a),a)}else if(typeof i==`object`&&!Array.isArray(i))for(let[e,a]of Object.entries(i))Q(e,r,m,h,n)&&(ln(a)?I(r,n,t,e,dn(a,e).version,a):Se(a)?I(r,n,t,e,X(a),a):un(a)?I(r,n,t,e,`0.0.0`,a):A[`${n}${t}${e}`]={old:a})}};if(d!==null){let e;try{e=JSON.parse(d)}catch(e){throw Error(`Error parsing ${c}: ${e.message}`)}me.push({absPath:l(c),content:d,memberPath:`.`}),v(e,``)}for(let e of f){let t;try{t=JSON.parse(e.content)}catch(t){throw Error(`Error parsing ${e.absPath}: ${t.message}`)}me.push(e),v(t,`|${e.memberPath}`)}F+=Object.keys(k[r]).length+Object.keys(A).length;continue}M[r]=e,k[r]??={};let i=o(l(e)),{modeConfig:c,modeInclude:d,modeExclude:f,pin:p}=await _e(i),m=ve(r,c),h={};j[r]=L.get(e);try{if(r===`npm`)h=JSON.parse(j[r]);else if(r===`pypi`)h=ee(j[r]);else if(r===`go`){let e=Fn(j[r]);h.deps=e.deps,h.indirect=e.indirect,h.replace=e.replace,h.tool=e.tool}}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}for(let e of m){let t;if(t=r===`npm`||r===`go`?h[e]||{}:Ie(h,e)||{},Array.isArray(t)&&r===`pypi`)for(let{name:n,version:i}of ke(t))Q(n,r,d,f,e)&&I(r,e,``,n,X(i),i);else if(typeof t==`string`){let[n,i]=t.split(`@`);Q(n,r,d,f,e)&&I(r,e,``,n,X(i),i)}else for(let[n,i]of Object.entries(t))Q(n,r,d,f,e)&&(r===`npm`&&ln(i)?I(r,e,``,n,dn(i,n).version,i):r!==`go`&&Se(i)?I(r,e,``,n,X(i),i):r===`npm`&&un(i)?I(r,e,``,n,`0.0.0`,i):r===`npm`?A[`${e}${n}`]={old:i}:r===`go`&&I(r,e,``,n,Wn(i),q(i)))}F+=Object.keys(k[r]).length+Object.keys(A).length,H[r]={modeConfig:c,projectDir:i,pin:p}}if(k.actions&&(F+=Object.keys(k.actions).length),k.docker&&(F+=Object.keys(k.docker).length),F===0)return{results:{},message:`No dependencies found, nothing to do.`};let xe=[],U={registry:t.registry};for(let e of Object.keys(H)){let r=!!k[e]&&Object.keys(k[e]).length>0,i=e===`npm`&&Object.keys(A).length>0;if(!r&&!i)continue;let{modeConfig:a,projectDir:o,pin:s}=H[e];xe.push((async()=>{let r=new Map,i=t.cooldown??a.cooldown,c=i?Ve(String(i)):0,l=e=>{if(c)for(let[t,{date:n}]of Object.entries(e))n&&!K(n,c,le)&&delete e[t]};if(await W(Object.keys(k[e]),async t=>{let[n,i]=t.split(`\0`),l=Ar(n),u=k[e][t],d=null;if(e===`npm`){let{oldOrig:n}=u;if(n&&ln(n))d=await fn(i,l,C);else if(n&&un(n))try{d=await sn(i,l,a,U,C)}catch{delete k[e][t];return}else d=await sn(i,l,a,U,C)}else d=e===`go`?await Ln(i,l,u.oldOrig||u.old,o,C,g):e===`cargo`?await Cr(i,l,C):await vn(i,l,C);if(!d)return;let[f,,p]=d;if(f?.error)throw Error(f.error);let{useGreatest:m,usePre:h,useRel:_,semvers:v}=O(f.name),y=u.old,b=u.oldOrig,x=s[i],S=ct(f,{usePre:h,useRel:_,useGreatest:m,semvers:v,range:y,mode:e,pinnedRange:x,cooldownDays:c||void 0,now:c?le:void 0},{allowDowngrade:re,matchesAny:Fe,isGoPseudoVersion:jn}),w=``;if([`go`,`pypi`].includes(e)&&S)w=S;else if(e===`cargo`&&S&&b)w=Er(b,S);else if(S)if(b&&un(b))w=String(Yt()[`save-exact`])===`true`?S:`^${S}`;else if(b&&ln(b)){let e=/^(npm:@jsr\/[^@]+@|jsr:@[^@]+@)(.+)$/.exec(b);e?w=`${e[1]}${S}`:b.startsWith(`jsr:`)&&(w=`jsr:${S}`)}else w=mn(y,S,b);if(!S||S===y||b&&b===w){delete k[e][t];return}let T=``;e===`pypi`&&f.releases?.[S]?.[0]?.upload_time_iso_8601?T=f.releases[S][0].upload_time_iso_8601:e===`go`&&f.Time?T=f.Time:e===`cargo`&&f.time?.[S]&&(T=f.time[S]),u.new=w,b&&ln(b)&&(u.newPrint=S),e===`npm`?r.set(t,{name:i,promise:cn(f.name,S,a,U,C)}):e===`pypi`?u.info=Tt(f,p,f.info.name):e===`go`?u.info=Hn(f.newPath||i):e===`cargo`&&(u.info=`https://crates.io/crates/${i}`),T&&Z(u,T)},{concurrency:n}),await Promise.all(Array.from(r,async([t,{name:n,promise:r}])=>{let i=await r,a=k[e][t];a&&(a.info=Tt({repository:i.repository,homepage:i.homepage},null,n),i.date&&Z(a,i.date))})),e===`npm`&&Object.keys(A).length){let t=(await W(Object.entries(A),([e,t])=>{let n=e.split(`\0`)[1];return _n(e,t,O(n).useGreatest,C)},{concurrency:n})).filter(e=>e!==null);for(let n of t){let{key:t,newRange:r,user:i,repo:a,oldRef:o,newRef:s,newDate:c}=n;k[e][t]={old:A[t].old,new:r,oldPrint:vt.test(o)?o.substring(0,7):o,newPrint:vt.test(s)?s.substring(0,7):s,info:`https://github.com/${i}/${a}`},c&&Z(k[e][t],c)}}l(k[e])})())}if(V.length&&xe.push((async()=>{let e=new Map;for(let t of V){let n=`${t.apiUrl}/${t.owner}/${t.repo}`,r=e.get(n);r||e.set(n,r={apiUrl:t.apiUrl,owner:t.owner,repo:t.repo,infos:[]}),r.infos.push(t)}await W(e.values(),async({apiUrl:e,owner:t,repo:r,infos:i})=>{let a=await xt(e,t,r,C),o=[],s=new Map,c=new Map,l=new Map;for(let e of a){c.set(e.name,e);let t=q(e.name);P(t)&&(o.push(t),s.has(t)||s.set(t,e.name)),e.commitSha&&l.set(e.commitSha,e.name)}let u=new Map;async function d(n){if(u.has(n))return u.get(n);let i=await Jn(e,t,r,n,C);return u.set(n,i),i}async function f(e){let t=new Set;for(let n=0;n<20;n++){let n=st({},t.size?o.filter(e=>!t.has(e)):o,e);if(!n||n===e.range)return null;let r=s.get(n);if(!r){t.add(n);continue}let i=c.get(r)?.commitSha||``;if(!N)return{version:n,tag:r,commitSha:i,date:``};let a=i?await d(i):``;if(K(a,N,le))return{version:n,tag:r,commitSha:i,date:a};t.add(n)}return null}await W(i,async({key:e,host:n,ref:i,name:a,isHash:o,filePin:s})=>{let u=k.actions[e],p=`https://${n||`github.com`}/${t}/${r}`,m=ce[a]??s[a];if(o){let{usePre:t,useRel:n}=O(a),r=await f({range:`0.0.0`,semvers:new Set([`patch`,`minor`,`major`]),usePre:t,useRel:n,useGreatest:!0,pinnedRange:m});if(!r){delete k.actions[e];return}let{tag:o,commitSha:s,date:c}=r;if(!s||s===i||s.startsWith(i)||i.startsWith(s)){delete k.actions[e];return}let d=l.get(i);if(!d){for(let[e,t]of l)if(e.startsWith(i)){d=t;break}}u.old=i,u.new=s.substring(0,i.length),u.oldPrint=d||i.substring(0,7),u.newPrint=o,u.info=p,c&&Z(u,c)}else{let t=J(q(i));if(!t){delete k.actions[e];return}let{usePre:n,useRel:r,semvers:o}=O(a),s=await f({range:t,semvers:o,usePre:n,useRel:r,useGreatest:!0,pinnedRange:m});if(!s){delete k.actions[e];return}let{tag:l,commitSha:h,date:g}=s,_=Yn(l,i);if(_===i){delete k.actions[e];return}if(u.new=c.has(_)?_:l,u.info=p,h&&g)Z(u,g);else if(h){let e=await d(h);e&&Z(u,e)}}},{concurrency:n})},{concurrency:n}),Object.keys(k.actions).length||delete k.actions})()),ge.length&&xe.push((async()=>{let e=new Map;for(let t of ge){let n=e.get(t.fullImage);n||e.set(t.fullImage,n=[]),n.push(t)}await W(e.entries(),async([e,t])=>{let n;try{let[t]=await ur(e,`docker`,C);n=t}catch{for(let e of t)delete k.docker[e.key];return}for(let e of t){let t=k.docker[e.key],r=t.oldOrig||t.old,{semvers:i}=O(e.fullImage),a=ce[e.fullImage]??e.filePin[e.fullImage],o=dr(n.tags,r,i,N||void 0,N?le:void 0,a);if(!o){delete k.docker[e.key];continue}t.new=o.newTag,t.info=xr(e.ref),Z(t,o.date)}},{concurrency:n}),Object.keys(k.docker).length||delete k.docker})()),await Promise.all(xe),!Br(k))return{results:{},message:`All dependencies are up to date.`};if(t.update){let e=(e,t,n)=>{for(let r of t){let t=jr(k[e],r.memberPath);Object.keys(t).length&&$(r.absPath,n(r.content,t))}},t=new Map;if(k.actions)for(let[e,n]of Object.entries(k.actions)){let[r,i]=e.split(`\0`),a=t.get(r);a||t.set(r,a=[]),a.push({name:i,oldRef:n.old,newRef:n.new})}let n=new Map;if(k.docker)for(let[e,t]of Object.entries(k.docker)){let[r]=e.split(`\0`),i=n.get(r);i||n.set(r,i={}),i[e]=t}let r=Wr(k);for(let r of Object.keys(k)){if(!Object.keys(k[r]).length)continue;if(r===`actions`){for(let[e,n]of t){let{absPath:t,content:r}=R[e]||{};if(!t)continue;let i=Xn(r,n);$(t,i),z[e]&&(z[e].content=i)}continue}if(r===`docker`){for(let[e,t]of n){let n=z[e];if(!n)continue;let{absPath:r,content:i,fileType:a}=n;$(r,(a===`dockerfile`?pr:a===`compose`?mr:hr)(i,t))}continue}let i=j[r];if(r===`go`&&B){for(let e of de){let t=jr(k[r],e.usePath);if(!Object.keys(t).length)continue;let[n,i]=zn(e.content,t);n!==e.content&&$(e.absPath,n),Bn(e.projectDir,i,$)}let e={};for(let[t,n]of Object.entries(k[r]))t.split(`\0`)[0]===`replace`&&(e[t]=n);if(Object.keys(e).length){let[t]=zn(B.content,e);t!==B.content&&$(B.file,t)}}else if(r===`go`){let[e,t]=zn(i,k[r]);$(M[r],e),Bn(o(l(M[r])),t,$)}else if(r===`cargo`&&pe)e(r,fe,kr);else if(r===`cargo`)$(M[r],kr(i,k[r]));else if(r===`npm`&&he)e(r,me,pn);else{let e=r===`npm`?pn:yn;$(M[r],e(i,k[r]))}}return r}return Wr(k)}function qr(e,t){if(t.some(e=>e===`-h`||e===`--help`||e===`-v`||e===`--version`))return[];let n=(...t)=>t.some(t=>d(s(e,t))),r=new Set;return n(`package.json`,`pnpm-workspace.yaml`)&&(r.add(`https://registry.npmjs.org/`),r.add(`https://jsr.io/`),r.add(`https://api.github.com/`)),n(`pyproject.toml`)&&r.add(`https://pypi.org/`),n(`Cargo.toml`)&&r.add(`https://crates.io/`),n(`go.mod`,`go.work`)&&r.add(`https://proxy.golang.org/`),n(...gr)&&r.add(`https://hub.docker.com/`),n(`.github/workflows`)&&(r.add(`https://api.github.com/`),r.add(`https://hub.docker.com/`)),Array.from(r)}function Jr(e){let t=``,n=0,r=e.length;for(;n<r;){let i=e[n];if(i===`"`){for(t+=i,n++;n<r;){let i=e[n];if(t+=i,n++,i===`\\`&&n<r){t+=e[n],n++;continue}if(i===`"`)break}continue}if(i===`/`&&n+1<r&&e[n+1]===`/`){for(n+=2;n<r&&e[n]!==`
|
|
6
|
-
`;)n++;continue}if(i===`/`&&n+1<r&&e[n+1]===`*`){for(n+=2;n<r&&(e[n]!==`*`||e[n+1]!==`/`);)n++;n+=2;continue}t+=i,n++}return t=t.replace(/,(\s*[}\]])/g,`$1`),JSON.parse(t)}export{Se as _,At as a,Mt as c,Ze as d,Xe as f,He as g,ze as h,
|
|
1
|
+
import{cwd as e,env as t,platform as n,stderr as r}from"node:process";import{styleText as i}from"node:util";import{basename as a,dirname as o,join as s,relative as c,resolve as l}from"node:path";import{accessSync as u,existsSync as d,globSync as f,lstatSync as p,readFileSync as m,readdirSync as h,statSync as g,truncateSync as _,writeFileSync as v}from"node:fs";import{access as y,mkdir as b,readFile as x,writeFile as S}from"node:fs/promises";import{createHash as C}from"node:crypto";import{homedir as w}from"node:os";import{pathToFileURL as T}from"node:url";function ee(e){let t={},n=t,r=e.split(/\r?\n/);for(let e=0;e<r.length;e++){let i=r[e],a=ae(i).trim();if(!a)continue;let o=/^\[\[([^\]]+)\]\]$/.exec(a);if(o){let e=t,r=D(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=/^\[([^[\]]+)\]$/.exec(a);if(s){n=t;for(let e of D(s[1]))(!(e in n)||typeof n[e]!=`object`||Array.isArray(n[e]))&&(n[e]={}),n=n[e];continue}let c=ce(a);if(c<0)continue;let l=a.slice(0,c).trim(),u=a.slice(c+1).trim(),d=D(l),f=n;for(let e=0;e<d.length-1;e++)(!(d[e]in f)||typeof f[d[e]]!=`object`||Array.isArray(f[d[e]]))&&(f[d[e]]={}),f=f[d[e]];let p=d[d.length-1];if(u.startsWith(`[`)&&oe(u,`]`)<0){let t=[];E(u.slice(1),t);for(let n=e+1;n<r.length;n++){let i=ae(r[n]).trim();if(!i)continue;let a=oe(i,`]`);if(a>=0){E(i.slice(0,a),t),e=n;break}E(i,t)}f[p]=t}else f[p]=te(u)}return t}function E(e,t){let n=e.trim();if(n)for(let e of ie(n)){let n=e.trim();n&&t.push(te(n))}}function te(e){if(e.startsWith(`[`)){let t=[],n=se(e,`]`);return E(e.slice(1,n<0?e.length:n),t),t}return e.startsWith(`{`)?re(e):e.startsWith(`"""`)?le(e.slice(3,e.lastIndexOf(`"""`))):e.startsWith(`'''`)?e.slice(3,e.lastIndexOf(`'''`)):e.startsWith(`"`)?le(e.slice(1,e.lastIndexOf(`"`))):e.startsWith(`'`)?e.slice(1,e.lastIndexOf(`'`)):ne(e)}function ne(e){return e===`true`?!0:e===`false`?!1:/^[+-]?\d+(\.\d+)?$/.test(e)?Number(e):e}function re(e){let t={},n=e.slice(1,e.lastIndexOf(`}`)).trim();if(!n)return t;for(let e of ie(n)){let n=e.indexOf(`=`);if(n<0)continue;let r=e.slice(0,n).trim().replace(/^["']|["']$/g,``);t[r]=te(e.slice(n+1).trim())}return t}function ie(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 D(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 ae(e){let t=oe(e,`#`);return t<0?e:e.slice(0,t)}function oe(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 if(i===`"`||i===`'`)n=i;else if(i===t)return r}return-1}function se(e,t){let n=-1,r=null;for(let i=0;i<e.length;i++){let a=e[i];if(r){if(a===`\\`&&r===`"`){i++;continue}a===r&&(r=null)}else a===`"`||a===`'`?r=a:a===t&&(n=i)}return n}function ce(e){let t=null;for(let n=0;n<e.length;n++){let r=e[n];if(t){if(r===`\\`&&t===`"`){n++;continue}r===t&&(t=null)}else if(r===`"`||r===`'`)t=r;else if(r===`=`)return n}return-1}function le(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`
|
|
2
|
+
`;case`r`:return`\r`;case`t`:return` `;case`u`:case`U`:return String.fromCodePoint(Number.parseInt(t.slice(1),16));default:return t}})}const ue=/^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*))?(?:\+[a-zA-Z0-9._-]+)?$/,O=new Map;function k(e){if(typeof e!=`string`)return null;let t=O.get(e);if(t!==void 0)return t;let n=ue.exec(e.trim());if(!n)return O.set(e,null),null;let r=Number(n[1]),i=Number(n[2]),a=Number(n[3]),o=n[4]?n[4].split(`.`).map(e=>/^\d+$/.test(e)?Number(e):e):[],s={major:r,minor:i,patch:a,prerelease:o,version:`${r}.${i}.${a}${o.length?`-${o.join(`.`)}`:``}`};return O.set(e,s),s}function A(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 j(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function M(e,t){let n=j(e,t);if(n!==0)return n;if(!e.prerelease.length&&!t.prerelease.length)return 0;if(e.prerelease.length&&!t.prerelease.length)return-1;if(!e.prerelease.length&&t.prerelease.length)return 1;let r=Math.max(e.prerelease.length,t.prerelease.length);for(let n=0;n<r;n++){if(e.prerelease[n]===void 0)return-1;if(t.prerelease[n]===void 0)return 1;let r=A(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function N(e){return k(e)?.version??null}function P(e){return k(e)}const de=new Map,fe=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function F(e){if(typeof e!=`string`)return null;let t=de.get(e);if(t!==void 0)return t;let n=fe.exec(e);if(!n)return de.set(e,null),null;let r={version:`${n[1]||`0`}.${n[2]||`0`}.${n[3]||`0`}`};return de.set(e,r),r}function I(e,t){let n=k(e),r=k(t);if(!n||!r||n.version===r.version)return null;let i=M(n,r),a=i>0?n:r,o=i>0?r:n,s=a.prerelease.length>0;if(o.prerelease.length>0&&!s){if(!o.patch&&!o.minor)return`major`;if(j(o,a)===0)return o.minor&&!o.patch?`minor`:`patch`}let c=s?`pre`:``;return n.major===r.major?n.minor===r.minor?n.patch===r.patch?`prerelease`:`${c}patch`:`${c}minor`:`${c}major`}function pe(e,t){let n=k(e),r=k(t);return n&&r?M(n,r):null}function L(e,t){return(pe(e,t)??-1)>0}function me(e,t){return(pe(e,t)??-1)>=0}function R(e,t){return(pe(e,t)??1)<0}function he(e,t){return(pe(e,t)??1)!==0}function z(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=k(`${n}.${t[3]??`0`}.${t[4]??`0`}${t[5]||``}`);return r?{op:t[1]||`=`,semver:r}:null}function ge(e,t){let n=M(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 B(e,t,n){return`${e}.${t}.${n}-0`}function _e(e){return e.replace(/~\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i)=>{let a=Number(t);if(n===void 0)return`>=${a}.0.0 <${B(a+1,0,0)}`;let o=Number(n);return`>=${a}.${o}.${r===void 0?0:Number(r)}${i||``} <${B(a,o+1,0)}`})}function ve(e){return e.replace(/\^\s*v?(\d+)(?:\.(\d+))?(?:\.(\d+))?((?:-[a-zA-Z0-9._-]+)?)/g,(e,t,n,r,i)=>{let a=Number(t),o=i||``;if(n===void 0)return`>=${a}.0.0 <${B(a+1,0,0)}`;let s=Number(n);if(r===void 0)return a===0?`>=${a}.${s}.0 <${B(a,s+1,0)}`:`>=${a}.${s}.0 <${B(a+1,0,0)}`;let c=Number(r);return a===0?s===0?`>=${a}.${s}.${c}${o} <${B(a,s,c+1)}`:`>=${a}.${s}.${c}${o} <${B(a,s+1,0)}`:`>=${a}.${s}.${c}${o} <${B(a+1,0,0)}`})}function ye(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?`<${B(p+1,0,0)}`:`<${B(p,Number(o)+1,0)}`:`<=${p}.${Number(o)}.${Number(s)}${c||``}`,`>=${l}.${u}.${d}${f} ${m}`})}function be(e){return/^\s*[*xX]\s*$/.test(e)?`>=0.0.0`:(e=e.replace(/v?(\d+)\.[xX*](?:\.[xX*])?/g,(e,t)=>{let n=Number(t);return`>=${n}.0.0 <${B(n+1,0,0)}`}),e=e.replace(/v?(\d+)\.(\d+)\.[xX*]/g,(e,t,n)=>{let r=Number(t),i=Number(n);return`>=${r}.${i}.0 <${B(r,i+1,0)}`}),e=e.replace(/(^|[\s|])(\d+)\.(\d+)(?=\s|$)/g,(t,n,r,i,a)=>{let o=e.substring(0,a).trimEnd();if(/[<>=]$/.test(o))return t;let s=Number(r),c=Number(i);return`${n}>=${s}.${c}.0 <${B(s,c+1,0)}`}),e=e.replace(/(^|[\s|])(\d+)(?=\s|$)/g,(t,n,r,i)=>{let a=e.substring(0,i).trimEnd();if(/[<>=]$/.test(a))return t;let o=Number(r);return`${n}>=${o}.0.0 <${B(o+1,0,0)}`}),e)}const V=new Map;function H(e){let t=V.get(e);if(t!==void 0)return t;let n=e.split(`||`).map(e=>e.trim()),r=[];for(let t of n){if(!t){r.push([]);continue}t=ye(t),t=ve(t),t=_e(t),t=be(t),t=t.replace(/(^|[\s])v?(\d+\.\d+\.\d+(?:-[a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*)?)\b/g,(e,t)=>/[<>=]/.test(t)?e:`${t}=${e.trim()}`),t=t.replace(/(>=|<=|>|<|=)\s+/g,`$1`);let n=t.split(/\s+/).filter(Boolean),i=[];for(let t of n){let n=z(t);if(!n)return V.set(e,null),null;i.push(n)}if(i.length===0)return V.set(e,null),null;r.push(i)}let i=r.length?r:null;return V.set(e,i),i}function xe(e,t){for(let n of t)if(!ge(e,n))return!1;if(e.prerelease.length>0){for(let n of t)if(n.semver.prerelease.length>0&&n.semver.major===e.major&&n.semver.minor===e.minor&&n.semver.patch===e.patch)return!0;return!1}return!0}function U(e,t){let n=k(e);if(!n)return!1;let r=H(t);if(!r)return!1;for(let e of r)if(e.length===0||xe(n,e))return!0;return!1}function Se(e){return typeof e==`string`&&H(e)?e:null}const Ce=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],we={"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`},Te={sec:`second`,min:`minute`};function Ee(e){return e instanceof Date?e.getTime():typeof e==`string`?Date.parse(e):e}function De(e,{now:t,noAffix:n=!1,times:r=Ce,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=we,longUnits:l=!1}={}){let u=Ee(e),d=t===void 0?Date.now():Ee(t);if(u!==u)return o||String(e);let f=d-u,p=f<0;if(p&&(f=-f),f<i)return a;let m=0,h=``;for(let e=0,t=r.length;e<t;e++){let t=r[e];if(!(f>=t[1])){m=f/t[0]|0,h=(l&&Te[t[2]]||t[2])+(m>1?`s`:``);break}}let g=`${m} ${h}`,_;return _=n?g:p?`in ${g}`:`${g} ago`,s?c[_]??_:_}function Oe(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}function ke(e){let t=[];for(let n of e){let[e,r]=n.replaceAll(/\s+/g,``).split(/[<>=~]+/),i=e?.replace(/\[.*?\]$/,``);i&&typeof r==`string`&&/^[0-9.a-z]+$/.test(r)&&t.push({name:i,version:r})}return t}const Ae=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],je=[`node`,`deno`,`bun`],Me=[`project.dependencies`,`project.optional-dependencies`,`dependency-groups.dev`,`dependency-groups.lint`,`dependency-groups.test`],Ne=[`deps`,`indirect`,`replace`,`tool`],Pe=[`dependencies`,`dev-dependencies`,`build-dependencies`,`workspace.dependencies`];function Fe(e,t){if(!(t instanceof Set))return!1;for(let n of t)if(n.test(e))return!0;return!1}function Ie(e,t){return t.split(`.`).reduce((e,t)=>e?.[t]??null,e)}function Le(e){return e.split(`,`).filter(Boolean)}function Re(){let e=new Date,t=String(e.getMonth()+1).padStart(2,`0`),n=String(e.getDate()).padStart(2,`0`),r=String(e.getHours()).padStart(2,`0`),i=String(e.getMinutes()).padStart(2,`0`),a=String(e.getSeconds()).padStart(2,`0`),o=String(e.getMilliseconds()).padStart(3,`0`);return`${e.getFullYear()}-${t}-${n} ${r}:${i}:${a}.${o}`}function ze(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+=`
|
|
3
|
+
`)}return a}const Be={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function Ve(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Be[n.toLowerCase()];if(r)return Number(e)*r}let n=Number(e);if(!Number.isFinite(n))throw Error(`Invalid cooldown value: ${e}`);return n}async function W(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(n,r.length)},async()=>{for(;a<r.length;){let e=a++;i[e]=await t(r[e])}})),i}const G=e=>e.replace(/[|\\{}()[\]^$+*?.-]/g,`\\$&`);async function He(e,t){let n=e;for(;;){let e=await t(n);if(e)return e;let r=o(n);if(r===n)return null;n=r}}function Ue(e){let t=new Map;return n=>{let r=t.get(n);return r||(r=e(n),t.set(n,r)),r}}const We=s(n===`win32`?t.LOCALAPPDATA||s(w(),`AppData`,`Local`):t.XDG_CACHE_HOME||s(w(),`.cache`),`updates`);let Ge=null;function Ke(e){return C(`sha256`).update(e).digest(`hex`).substring(0,16)}async function qe(e){try{let t=await x(s(We,`${Ke(e)}.cache`),`utf8`),n=t.indexOf(`
|
|
4
|
+
`);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}}async function Je(e,t,n){try{await(Ge??=b(We,{recursive:!0})),await S(s(We,`${Ke(e)}.cache`),`${t}\n${n}`)}catch{}}var Ye=`17.16.12`;function K(e,t,n){if(!t||!n||!e)return!0;let r=Date.parse(e);return Number.isNaN(r)?!0:(n-r)/(24*3600*1e3)>=t}const Xe=Ye,Ze=5e3,q=e=>e[0]===`v`?e.substring(1):e,Qe=e=>e.endsWith(`/`)?e.slice(0,-1):e;function $e(e,t){return{headers:{"user-agent":`updates/${Xe}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function et(e,t){try{return await fetch(e,t)}catch(t){throw Error(`Failed to fetch ${e}${t?.message?`: ${t.message}`:``}`)}}async function tt(e){return typeof e.text==`function`?e.text():JSON.stringify(await e.json())}async function nt(e,t,n={}){let r=t.noCache?null:await qe(e),i=n.headers,a=r?{...i,"if-none-match":r.etag}:i,o=await t.doFetch(e,{...n,headers:a,signal:AbortSignal.timeout(t.fetchTimeout)});if(!o)return{res:void 0};if(o.status===304&&r)return{body:r.body,res:o};if(!o.ok)return{res:o};let s=await tt(o),c=o.headers?.get?.(`etag`);return c&&!t.noCache&&await Je(e,c,s),{body:s,res:o}}async function rt(e,t,n={}){if(!t.noCache){let t=await qe(e);if(t)return{body:t.body}}let r=await t.doFetch(e,{...n,signal:AbortSignal.timeout(t.fetchTimeout)});if(!r)return{res:void 0};if(!r.ok)return{res:r};let i=await tt(r);return t.noCache||await Je(e,`immutable`,i),{body:i,res:r}}function it(e){return(P(e)?.prerelease.length??0)>0}function at(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}function ot(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=J(e),s=J(t);if(!o||!s)return!0;let c=at(e)||it(e),l=it(t);return c&&!l?L(s,o)||n:!l&&R(s,o)?r===!0||a(i,r):!0}function J(e){return F(e)?.version??``}function st(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:u}){let d=J(n);if(!d)return d;i=at(n)||i,i&&(r.add(`prerelease`),r.has(`patch`)&&r.add(`prepatch`),r.has(`minor`)&&r.add(`preminor`),r.has(`major`)&&r.add(`premajor`));let f=u??(t=>e?.time?.[t]),p=0,m=d;for(let n of t){let t=P(n);if(!t?.version||t.prerelease.length&&(!i||a))continue;let u=t.version;if(s&&!U(u,s)||!K(f(n),c,l))continue;let d=I(m,u);if(!(!d||!r.has(d)))if(o||!(`time`in e))(me(`${t.major}.${t.minor}.${t.patch}`,m)||s&&!U(m,s))&&(m=u);else{let t=Date.parse(e.time[n]);t>=0&&t>p&&(m=u,p=t)}}return m||null}function ct(e,{mode:t,range:n,useGreatest:r,useRel:i,usePre:a,semvers:o,pinnedRange:s,cooldownDays:c,now:l},{allowDowngrade:u,matchesAny:d,isGoPseudoVersion:f}){if(n===`*`||n.includes(`||`))return null;let p=[],m;if(t===`pypi`)p=Object.keys(e.releases).filter(e=>N(e)),m=t=>e.releases?.[t]?.[0]?.upload_time_iso_8601;else if(t===`npm`||t===`cargo`)p=Object.keys(e.versions).filter(e=>N(e)),m=t=>e.time?.[t];else if(t===`go`){let t=J(n);if(!t)return null;let r=a||at(n),p=e=>it(e)&&(!r||i),m={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d},h=e.old||n,g=J(e.new);if(g&&!f(e.new)&&!p(e.new)){let n=I(t,g);if(n&&o.has(n)&&ot(h,e.new,m)&&K(e.Time,c,l)&&(!s||U(g,s)))return e.new}let _=J(e.sameMajorNew);if(_&&!f(e.sameMajorNew)&&!p(e.sameMajorNew)){let n=I(t,_);if(n&&o.has(n)&&ot(h,e.sameMajorNew,m)&&K(e.sameMajorTime,c,l)&&(!s||U(_,s)))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}if(c&&l&&e.olderEligible&&!p(e.olderEligible.version)){let n=J(e.olderEligible.version);if(n){let r=I(t,n);if(r&&o.has(r)&&ot(h,e.olderEligible.version,m)&&(!s||U(n,s)))return e.Time=e.olderEligible.time,delete e.newPath,e.olderEligible.version}}return null}let h=st(e,p,{range:n,semvers:o,usePre:a,useRel:i,useGreatest:r,pinnedRange:s,cooldownDays:c,now:l,getVersionDate:m});if(!h)return null;if(r)return h;{let r=``,f=``;t===`pypi`?(f=e.info.version,r=J(e.info.version)):r=e[`dist-tags`].latest;let p=J(n),m=at(n),g=it(h),_=it(r),v={useRel:i,allowDowngrade:u,name:e.name,matchesAny:d};if(!i&&a||m&&g)return h;if(m&&!g)return ot(n,h,v)?h:null;let y=I(p,r);return y&&y!==`prerelease`&&!o.has(y.replace(/^pre/,``))||i&&it(r)?h:R(r,p)&&!_?ot(n,r,v)?r:null:!m&&_&&!a||s&&!U(r,s)||c&&l&&!K(t===`pypi`?e.releases?.[f||r]?.[0]?.upload_time_iso_8601:e.time?.[r],c,l)?h:f||r}}const lt=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&<.set(e.substring(0,t),e.substring(t+1))}const ut=Array.from(new Set([`UPDATES_GITHUB_API_TOKEN`,`GITHUB_API_TOKEN`,`GH_TOKEN`,`GITHUB_TOKEN`,`HOMEBREW_GITHUB_API_TOKEN`].map(e=>t[e]).filter(Boolean)));let dt;function ft(){return ut.length?Promise.resolve(ut):dt??=(async()=>{try{let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]),{stdout:n}=await t(e)(`gh`,[`auth`,`token`],{encoding:`utf8`,timeout:5e3}),r=n.trim();return r?[r]:ut}catch{return ut}})()}const pt=new Map;async function mt(e){try{let t=lt.get(new URL(e).hostname);if(t)return[t]}catch{}return ft()}async function ht(e,t,n){let r;try{r=new URL(e).hostname}catch{r=``}let i=await(r?mt(e):ft()),a=AbortSignal.timeout(t.fetchTimeout),o=e=>{let t=$e(`Bearer`,e);return n&&(t.headers={...t.headers,...n}),t.signal=a,t};if(!i.length)return t.doFetch(e,o());let s=r?pt.get(r):void 0;if(s)return t.doFetch(e,o(s));for(let n of i){let i=await t.doFetch(e,o(n));if(i.status!==401&&i.status!==403)return r&&pt.set(r,n),i}return t.doFetch(e,o())}function gt(e,t,n){let r=q(t);if(!N(r))return null;if(n){let n=t,i=q(t);for(let t of e){let e=q(t);N(e)&&(!n||L(e,i))&&(n=t,i=e)}if(he(r,i))return n}else{let t=e.at(-1);if(!t)return null;let n=q(t);if(!N(n))return null;if(he(r,n))return t}return null}function _t(e){return e=e.replace(`git@`,``).replace(/.+?\/\//,`https://`).replace(/\.git$/,``),/^[a-z]+:[a-z0-9-]+\/[a-z0-9-]+$/.test(e)?e.replace(/^(.+?):/,(e,t)=>`https://${t}.com/`):/^[a-z0-9-]+\/[a-z0-9-]+$/.test(e)?`https://github.com/${e}`:e}const vt=/^[0-9a-f]{7,}$/i;function yt(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function bt(e,t){let n=t.noCache?null:await qe(e),r=await ht(e,t,n?{"if-none-match":n.etag}:void 0);if(r?.status===304&&n)try{let e=JSON.parse(n.body);return{tags:e.tags||[],link:e.link||``}}catch{return null}if(!r?.ok)return null;let i=yt(await r.json()),a=r.headers.get(`link`)||``,o=r.headers.get(`etag`);return o&&!t.noCache&&await Je(e,o,JSON.stringify({link:a,tags:i})),{tags:i,link:a}}async function xt(e,t,n,r){let i=r=>`${e}/repos/${t}/${n}/tags?per_page=100&page=${r}`;try{let e=await bt(i(1),r);if(!e)return[];let t=e.tags,n=/<([^>]+)>;\s*rel="last"/.exec(e.link);if(!n)return t;let a=Number(new URL(n[1]).searchParams.get(`page`));if(a<2)return t;let o=await Promise.all(Array.from({length:a-1},(e,t)=>bt(i(t+2),r)));for(let e of o)e&&t.push(...e.tags);return t}catch{return[]}}function St(e,t,n,r){throw e?.status&&e?.statusText?Error(`Received ${e.status} ${e.statusText} from ${t}`):Error(`Unable to fetch ${n} from ${r}`)}function Ct(e,t,n=``){let r=t.startsWith(`v`),i=q(e),a=q(t).split(`.`).length,o=i.split(`.`),s;return s=a===1?o[0]:a===2?`${o[0]}.${o[1]||`0`}`:i,`${r?`v`:``}${s}${n}`}function wt(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function Tt({repository:e,homepage:t,info:n},r,i){if(n){let t=n.project_urls;for(let n of[`repository`,`Repository`,`repo`,`Repo`,`source`,`Source`,`source code`,`Source code`,`Source Code`,`homepage`,`Homepage`])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=_t(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${wt(a)}/${e.directory}`)),a||t||``)}const Et={"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 Dt(e,t){return RegExp(`^${G(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Ot(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Dt(e,n):e instanceof RegExp?e:Dt(e,n)}function kt(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.flatMap(e=>typeof e==`string`?Le(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function At(e){for(let[t,{short:n}]of Object.entries(Et))if(t===e||n===e)return t;return``}function jt(e){return new Set(e.map(e=>Ot(e,!1,!0)))}function Mt(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>Le(e)):[]}function Nt(e){let t={},n=Array.isArray(e)?e:[e];for(let e of n){if(typeof e!=`string`)continue;let[n,r]=e.split(`=`,2);n&&r&&Se(r)&&(t[n]=r)}return t}function Pt(e){if(typeof e==`boolean`)return e;if(!Array.isArray(e)||!e.length)return!1;let t=new Set;for(let n of e)t.add(Ot(n,!1,!1));return t}async function Ft(e){let t=await Promise.all([`js`,`ts`,`mjs`,`mts`].map(async t=>{let n=`updates.config.${t}`,r=s(e,n);try{await y(r)}catch{return null}try{return{configDir:e,filename:n,default:(await import(T(r).href)).default??{}}}catch(e){return Error(`Unable to parse config file ${n}: ${e?.message??e}`)}}));for(let e of t)if(e&&!(e instanceof Error))return e;for(let e of t)if(e instanceof Error)throw e;return null}const It=Ue(e=>He(e,Ft));async function Lt(e){let t=await It(e),n=t?.default??{},{loadRenovateConfig:r}=await import(`./renovate.js`);return{...await r(t?.configDir??e,n.inherit?.renovate),...n}}function Rt(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();i.length>=2&&(i.startsWith(`"`)&&i.endsWith(`"`)||i.startsWith(`'`)&&i.endsWith(`'`))&&(i=i.slice(1,-1)),t[e.slice(0,r).trim()]=i}return t}function zt(e){try{return Rt(m(e,`utf-8`))}catch{return}}function Bt(t){let n=e();for(;;){let e=s(n,t);try{return g(e),e}catch{}let r=o(n);if(r===n)break;n=r}}function Vt(e){let n={},r=e.toLowerCase();for(let[i,a]of Object.entries(t))if(i.toLowerCase().startsWith(r)){let t=i.substring(e.length).split(`__`).filter(Boolean);if(t.length===0)continue;let r=n;for(let e=0;e<t.length;e++){let n=t[e];if(e===t.length-1)r[n]=a;else if(r[n]===void 0&&(r[n]={}),typeof r[n]==`object`)r=r[n];else break}}return n}function Ht(e,r={}){let i=n===`win32`,a=i?t.USERPROFILE:t.HOME,o=[{...r}],c=[];function l(e){if(!e||c.includes(e))return;let t=zt(e);t&&(o.push(t),c.push(e))}i||(l(s(`/etc`,e,`config`)),l(s(`/etc`,`${e}rc`))),a&&(l(s(a,`.config`,e,`config`)),l(s(a,`.config`,e)),l(s(a,`.${e}`,`config`)),l(s(a,`.${e}rc`))),l(Bt(`.${e}rc`));let u=Vt(`${e}_`);return u.config&&l(u.config),Object.assign({},...o,u,c.length?{configs:c,config:c[c.length-1]}:void 0)}const Ut=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,Wt=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,Gt=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,Kt=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,qt=`https://registry.npmjs.org`;let Y=null;const Jt=new Map;function Yt(){return Y??=Ht(`npm`,{registry:qt})}function Xt(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function Zt(e,t){let n=n=>t[`${e}:${n}`]||t[`${e}/:${n}`],r=n(`_authToken`);if(r)return{token:Xt(r),type:`Bearer`};let i=n(`username`),a=n(`_password`);if(i&&a){let e=Buffer.from(Xt(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:Xt(o),type:`Basic`}}function Qt(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=Zt(`//${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:Xt(i),type:`Basic`}}function $t(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function en(e,t){Y||=Yt();let n=e.startsWith(`@`)?(/@[a-z0-9][\w.-]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=Jt.get(r);if(i)return i;let a=()=>({auth:Qt(t,Y),registry:t}),o;if(!e.startsWith(`@`))o=a();else{let e=Qe($t(n,Y));if(e!==t)try{let t=Qt(e,Y);o=t?.token?{auth:t,registry:e}:a()}catch{o=a()}else o=a()}return Jt.set(r,o),o}function tn(e,t,n){Y||=Yt();let r=Qe((typeof n.registry==`string`?n.registry:!1)||t.registry||Y.registry||qt);return{...en(e,r),originalRegistry:r}}function nn(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const rn=new Map,an=new Map,on=new Map;async function sn(e,t,n,r,i){let{auth:o,registry:s}=tn(e,n,r),c=nn(s,t===`resolutions`?a(e):e),l=rn.get(c);if(!l){let t=$e(o?.type,o?.token),n={...t.headers,accept:`application/vnd.npm.install-v1+json`};t.headers=n,l=(async()=>{let r=i.noCache?null:await qe(c);r&&(n[`if-none-match`]=r.etag);let a=await i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...t});if(a?.status===304&&r)return JSON.parse(r.body);if(a?.ok){let e=await a.text(),t=a.headers.get(`etag`);return t&&!i.noCache&&await Je(c,t,e),JSON.parse(e)}St(a,c,e,s)})().catch(e=>{throw rn.delete(c),e}),rn.set(c,l)}return[await l,t,s,e]}async function cn(e,t,n,r,i){let{auth:a,registry:o}=tn(e,n,r),s=nn(o,e,t),c=an.get(s);if(c)return c;let l=(async()=>{try{let n=$e(a?.type,a?.token),r=await rt(s,i,n);if(!(`body`in r))return{};let c=JSON.parse(r.body),l=``,u=c?._npmOperationalInternal?.tmp;if(u){let e=/(\d{13})/.exec(u);e&&(l=new Date(Number(e[1])).toISOString())}if(!l){let r=nn(o,e),a=on.get(r);a||(a=i.doFetch(r,{...n,signal:AbortSignal.timeout(i.fetchTimeout)}).then(e=>e?.ok?e.json():null).catch(()=>(on.delete(r),null)),on.set(r,a)),l=(await a)?.time?.[t]||``}return{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})();return an.set(s,l),l}function ln(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function un(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function dn(e,t){if(e.startsWith(`npm:@jsr/`)){let t=/^npm:@jsr\/([^_]+)__([^@]+)@(.+)$/.exec(e);if(t)return{scope:t[1],name:t[2],version:t[3]}}else if(e.startsWith(`jsr:@`)){let t=/^jsr:@([^/]+)\/([^@]+)@(.+)$/.exec(e);if(t)return{scope:t[1],name:t[2],version:t[3]}}else if(e.startsWith(`jsr:`)){let n=e.substring(4);if(t?.startsWith(`@`)){let e=/^@([^/]+)\/(.+)$/.exec(t);if(e)return{scope:e[1],name:e[2],version:n}}}return{scope:null,name:null,version:``}}async function fn(e,t,n){let r=/^@([^/]+)\/(.+)$/.exec(e);if(!r)throw Error(`Invalid JSR package name: ${e}`);let[,i,a]=r,o=`${n.jsrApiUrl}/@${i}/${a}/meta.json`,s=await nt(o,n,{headers:{"accept-encoding":`gzip, deflate, br`}});if(`body`in s){let r=JSON.parse(s.body),i={},a={};for(let[e,t]of Object.entries(r.versions))i[e]={version:e,time:t.createdAt},a[e]=t.createdAt;return[{name:e,"dist-tags":{latest:r.latest},versions:i,time:a},t,n.jsrApiUrl,e]}St(s.res,o,e,`JSR`)}function pn(e,t){let n=new Map;for(let[e,{old:r,oldOrig:i,new:a}]of Object.entries(t)){let[t,o]=e.split(`\0`),s=i||r;t===`packageManager`?n.set(`${t}\0${o}@${s}`,`"${t}": "${o}@${a}"`):n.set(`${o}\0${s}`,`"${o}": "${a}"`)}return n.size?e.replace(/"((?:[^"\\]|\\.)*)": *"((?:[^"\\]|\\.)*)"/g,(e,t,r)=>n.get(`${t}\0${r}`)??e):e}function mn(e,t,n){let r=e.replace(Kt,t);if(n&&n!==e&&/^[\^~]/.test(r)){let e=n.substring(1).split(`.`),t=r.substring(1).split(`.`);e.length!==t.length&&(r=`${r[0]}${t.slice(0,e.length).join(`.`)}`)}if(n&&n!==e&&r.startsWith(`>=`)){let e=/^>=\s/.test(n)?`>= `:`>=`,t=n.replace(/^>=\s*/,``),i=r.replace(/^>=\s*/,``),a=t.split(`.`),o=i.split(`.`);a.length!==o.length&&(r=`${e}${o.slice(0,a.length).join(`.`)}`)}return r}function X(e){let t=e.match(Gt);return t?.length===1?e.replace(Gt,J(t[0])):e}async function hn(e,t,n){let r=`${n.forgeApiUrl}/repos/${e}/${t}/commits`;try{let e=n.noCache?null:await qe(r),t=await ht(r,n,e?{"if-none-match":e.etag}:void 0);if(t?.status===304&&e){let{sha:t,commit:n}=JSON.parse(e.body)[0];return{hash:t,commit:n}}if(!t?.ok)return{hash:``,commit:{}};let i=await t.text(),a=t.headers.get(`etag`);a&&!n.noCache&&await Je(r,a,i);let{sha:o,commit:s}=JSON.parse(i)[0];return{hash:o,commit:s}}catch{return{hash:``,commit:{}}}}async function gn(e,t,n){return(await xt(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function _n(e,t,n,r){let i=t.old.replace(Ut,``),[,a,o,s]=Wt.exec(i)||[];if(!a||!o||!s)return null;if(vt.test(s)){let{hash:n,commit:i}=await hn(a,o,r);if(!n)return null;let c=i?.committer?.date??i?.author?.date,l=n.substring(0,s.length);if(s!==l)return{key:e,newRange:t.old.replace(s,l),user:a,repo:o,oldRef:s,newRef:l,newDate:c}}else{let t=gt(await gn(a,o,r),s,n);if(t)return{key:e,newRange:t,user:a,repo:o,oldRef:s,newRef:t}}return null}async function vn(e,t,n){let r=`${n.pypiApiUrl}/pypi/${e}/json`,i=await nt(r,n,{headers:{"accept-encoding":`gzip, deflate, br`}});if(`body`in i)return[JSON.parse(i.body),t,null,e];St(i.res,r,e,n.pypiApiUrl)}function yn(e,t){let n=e;for(let[e,{old:r,oldOrig:i}]of Object.entries(t)){let a=e.split(`\0`)[1],o=i||r;n=n.replace(RegExp(`("${G(a)} *[<>=~]+ *)${G(o)}(")`,`g`),(n,r,i)=>`${r}${t[e].new}${i}`)}return n}let bn;async function xn(){let[{execFile:e},{promisify:t}]=await Promise.all([import(`node:child_process`),import(`node:util`)]);return t(e)}function Sn(){return bn??=xn()}function Cn(){let e=t.GOPROXY||`https://proxy.golang.org,direct`;for(let t of e.split(/[,|]/)){let e=t.trim();if(e&&e!==`direct`&&e!==`off`)return Qe(e)}return`https://proxy.golang.org`}function wn(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function Tn(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function En(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}const Dn=/\/v(\d+)$/;function On(e){let t=Dn.exec(e);return t?Number.parseInt(t[1]):1}function kn(e,t){let n=e.replace(Dn,``);return t<=1?n:`${n}/v${t}`}function An(e,t){let n=t?/^(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(e):/^replace\s+(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(e);if(!n)return null;let[,r,i,a]=n;return i.startsWith(`./`)||i.startsWith(`/`)||i.startsWith(`../`)?null:{origModule:r,targetModule:i,targetVersion:a}}function jn(e,t,n){return t===`indirect`||e.startsWith(`golang.org/x/`)||Mn(n)}function Mn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function Nn(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function Pn(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 Fn(e,t,n,r,i,a){let o=r?.Version??i,s=r?.Time??a,c=r?.path??e;return[{name:e,old:n,new:q(o),Time:s,...c===e?{}:{newPath:c},sameMajorNew:q(i),sameMajorTime:a},t,null,e]}function In(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(/^require\s*\(/.test(i)){c=!0;continue}if(/^replace\s*\(/.test(i)){l=!0;continue}if(/^tool\s*\(/.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(u){i&&!i.startsWith(`//`)&&o.push(i);continue}let s=/^tool\s+(\S+)/.exec(i);if(s){o.push(s[1]);continue}let d=i.includes(`// indirect`);if(l||/^replace\s+/.test(i)){let e=An(i,l);e&&(r[e.targetModule]=e.targetVersion,a.add(e.origModule));continue}let f=c?/^(\S+)\s+(v\S+)/.exec(i):/^require\s+(\S+)\s+(v\S+)/.exec(i);f&&((d?n:t)[f[1]]=f[2])}for(let e of a)delete t[e],delete n[e];if(o.length){let e=[...Object.keys(n),...Object.keys(t)];for(let r of o){let a=``;for(let t of e)(r===t||r.startsWith(`${t}/`))&&t.length>a.length&&(a=t);let o=a?n[a]?n:t[a]?t:null:null;o&&(i[a]=o[a],delete o[a])}}return{deps:t,indirect:n,replace:r,tool:i}}async function Ln(e,n,r,i,a){let o=On(e),s=async(e,n)=>{try{let{stdout:r}=await(await Sn())(`go`,[`list`,`-m`,`-json`,`${e}@latest`],{timeout:n,cwd:i,env:t}),a=JSON.parse(r);return{Version:a.Version,Time:a.Time||``,path:e}}catch{return null}},c=jn(e,n,r),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(kn(e,o+1),a.goProbeTimeout)]);return l?Fn(e,n,r,await Pn(o,u,t=>s(kn(e,t),a.goProbeTimeout)),l.Version,l.Time):Nn(e,r,n)}async function Rn(e,t,n,r,i,a){if(Tn(e,a))return Ln(e,t,n,r,i);let o=En(e),s=On(e),c=async t=>{let n=kn(e,t);return i.doFetch(`${i.goProxyUrl}/${En(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout),headers:{"accept-encoding":`gzip, deflate, br`}}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},l=jn(e,t,n),[u,d]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}}),l?null:c(s+1)]);if(!u.ok)return Nn(e,n,t);let f,p;try{let e=await u.json();f=e.Version,p=e.Time}catch{return Nn(e,n,t)}return Fn(e,t,n,await Pn(s,d,c),f,p)}function zn(e,t){let n=G(t);return e=e.replace(RegExp(`^replace\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(RegExp(`^\\s+${n}(\\s+v\\S+)?\\s+=>\\s+\\S+(\\s+v\\S+)?\\s*\\n`,`gm`),``),e=e.replace(/^replace\s*\(\s*\)\s*\n/gm,``),e}function Bn(e,t){let n=e,r={};for(let[e,{old:i,oldOrig:a}]of Object.entries(t)){let[o,s]=e.split(`\0`),c=a||i,l=t[e].new;if(o===`replace`){n=n.replace(RegExp(`(=>\\s+${G(s)}\\s+)v${G(c)}`,`g`),`$1v${l}`);continue}if(o===`indirect`){n=n.replace(RegExp(`(${G(s)}) +v${G(c)}`,`g`),`$1 v${l}`);continue}let u=On(s),d=Number.parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=kn(s,d);n=n.replace(RegExp(`${G(s)} +v${G(c)}`,`g`),`${e} v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)${G(s)}(/\\S+)?\\s*$`,`gm`),`$1${e}$2`)),r[s]=e}else n=n.replace(RegExp(`(${G(s)}) +v${G(c)}`,`g`),`$1 v${l}`);o!==`tool`&&(n=zn(n,s))}return[n,r]}function Vn(e,t,n){let r=Object.entries(t);if(!r.length)return;let i=new Map(r),a=r.map(([e])=>e).sort((e,t)=>t.length-e.length),o=RegExp(`"(${a.map(G).join(`|`)})(/|")`,`g`),c=f(`**/*.go`,{cwd:e});for(let t of c){let r=s(e,t),a=m(r,`utf8`),c=a.replace(o,(e,t,n)=>`"${i.get(t)}${n}`);c!==a&&n(r,c)}}function Hn(e){let t=[],n={},r=e.split(/\r?\n/),i=!1,a=!1;for(let e of r){let r=e.trim();if(/^use\s*\(/.test(r)){i=!0;continue}if(/^replace\s*\(/.test(r)){a=!0;continue}if(r===`)`){i=!1,a=!1;continue}if(i){let e=/^(\S+)/.exec(r);e&&!r.startsWith(`//`)&&t.push(e[1]);continue}let o=/^use\s+(\S+)/.exec(r);if(o){t.push(o[1]);continue}if(a||/^replace\s+/.test(r)){let e=An(r,a);e&&(n[e.targetModule]=e.targetVersion);continue}}return{use:t,replace:n}}function Un(e){let t=`https://${Wn(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[,e,i,...a]=r;return n.pathname=`/${e}/${i}/${wt(t)}/${a.join(`/`)}`,n.toString()}else return t}function Wn(e){return Dn.test(e)?o(e):e}function Gn(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const Kn=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function qn(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:vt.test(o)}}function Jn(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function Yn(e,t,n,r,i){let a=`${e}/repos/${t}/${n}/git/commits/${r}`;if(!i.noCache){let e=await qe(a);if(e)return e.body}try{let e=await ht(a,i);if(!e?.ok)return``;let t=await e.json(),n=t?.committer?.date||t?.author?.date||``;return n&&!i.noCache&&await Je(a,`immutable`,n),n}catch{return``}}function Xn(e,t){return Ct(P(q(e))?.version??q(e),t)}function Zn(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?)${G(e)}@${G(r)}`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}const Qn=[`.github`,`.gitea`,`.forgejo`];function $n(e){return RegExp(`(?:${Qn.map(G).join(`|`)})\\/(?:workflows\\/[^/]+|(?:[^/]+\\/)*action)\\.ya?ml$`).test(e.replace(/\\/g,`/`))}function er(e){let t=new Set;try{for(let n of h(s(e,`workflows`)))/\.ya?ml$/.test(n)&&t.add(l(s(e,`workflows`,n)))}catch{}try{for(let n of h(e,{recursive:!0,withFileTypes:!0}))!n.isFile()||!/^action\.ya?ml$/.test(n.name)||t.add(l(s(n.parentPath,n.name)))}catch{}return Array.from(t)}const tr=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,nr=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,rr=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,ir=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,ar=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function or(e){let t=e.split(`/`);return 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 sr(e){if(e=e.replace(/^docker:\/\//,``),e.includes(`@`))return null;let t=e.lastIndexOf(`:`),n,r;if(t===-1||e.lastIndexOf(`/`)>t||(n=e.substring(0,t),r=e.substring(t+1),!r||!tr.test(r)))return null;let{registry:i,namespace:a,repo:o}=or(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function cr(e){let t=tr.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function lr(e,t){let n=cr(t);return n?Ct(e,n.version,n.suffix):t}function ur(e,t){let n=[];for(let r of e.matchAll(t)){let e=sr(r[1]);e&&n.push({ref:e,match:r[1]})}return n}async function dr(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=async e=>{try{let t=await nt(a(e),n,o);return`body`in t?JSON.parse(t.body):null}catch{return null}},c=await s(1);if(!c)return r;for(let e of c.results||[])r[e.name]=e.tag_last_pushed||e.last_updated||``;let l=Math.min(Math.ceil((c.count||0)/100),10);if(l<2)return r;let u=await Promise.all(Array.from({length:l-1},(e,t)=>s(t+2)));for(let e of u)if(e)for(let t of e.results||[])r[t.name]=t.tag_last_pushed||t.last_updated||``;return r}async function fr(e,t,n){let{registry:r,namespace:i,repo:a}=or(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await dr(i,a,n),name:e},t,null,e]}function pr(e,t,n,r,i,a){let o=cr(t);if(!o)return null;let s=F(q(o.version))?.version;if(!s)return null;let c=s,l=``,u=``;for(let[t,s]of Object.entries(e)){let e=cr(t);if(!e||e.suffix!==o.suffix)continue;let d=F(q(e.version))?.version;if(!d||a&&!U(d,a)||!K(s,r,i))continue;let f=I(c,d);!f||!n.has(f)||me(d,c)&&(c=d,l=t,u=s)}if(!l||c===s)return null;let d=lr(c,t);return d===t?null:{newTag:d,date:u}}function mr(e,t,n){let r=e;for(let[e,i]of Object.entries(t)){let t=e.split(`\0`)[1],a=i.oldOrig||i.old;for(let e of n)r=r.replace(e(G(t),G(a)),`$1${t}:${i.new}`)}return r}function hr(e,t){return mr(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}`,`g`)])}function gr(e,t){return mr(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}`,`g`)])}function _r(e,t){return mr(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}`,`g`)])}const vr=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function yr(e){return/^docker-.+\.ya?ml$/.test(e)}function br(e){return/^Dockerfile(\..+)?$/.test(e)}function xr(e){return br(e)||yr(e)}function Sr(e){return br(e)?nr:rr}function Cr(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const wr=new Map;async function Tr(e,t,n){let r=`${Qe(n.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`,i=n.noCache?void 0:wr.get(r);return i||(i=nt(r,n,$e()).then(t=>{`body`in t||St(t.res,r,e,n.cratesIoUrl);let i;try{i=JSON.parse(t.body)}catch{throw Error(`Invalid JSON from ${r}`)}let a=(i.versions||[]).filter(e=>!e.yanked),o={},s={};for(let e of a)e.num&&(o[e.num]={},s[e.num]=e.created_at||``);return{name:e,versions:o,time:s,"dist-tags":{latest:a[0]?.num??``}}}).catch(e=>{throw wr.delete(r),e}),wr.set(r,i)),[await i,t,null,e]}function Er(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];if(!N(a))continue;let o=t.get(i);o||t.set(i,o=[]),o.push(a)}return t}const Dr=/^\d/;function Or(e,t){return Dr.test(e)?mn(X(`^${e}`),t,`^${e}`).replace(/^\^/,``):mn(X(e),t,e)}function kr(e,t,n){let r=e.get(t);if(!r)return;let i=Dr.test(n)?`^${n}`:n,a;for(let e of r)U(e,i)&&(!a||L(e,a))&&(a=e);return a}const Ar=Pe.map(G).join(`|`);function jr(e,t){let n=e;for(let[e,r]of Object.entries(t)){let[,t]=e.split(`\0`),i=r.oldOrig||r.old,a=r.new,o=G(t),s=G(i);n=n.replace(RegExp(`^(\\s*${o}\\s*=\\s*["'])${s}(["'].*)$`,`gm`),`$1${a}$2`),n=n.replace(RegExp(`(\\s*${o}\\s*=\\s*\\{\\s*version\\s*=\\s*["'])${s}(["'])`,`g`),`$1${a}$2`),n=n.replace(RegExp(`(\\[(?:${Ar})\\.${o}\\][^\\[]*?version\\s*=\\s*["'])${s}(["'])`,`g`),`$1${a}$2`)}return n}function Mr(e){return e.split(`|`)[0]}function Nr(e,t){let n=t===`.`?``:`|${t}`,r={};for(let[t,i]of Object.entries(e)){let[e,a]=t.split(`\0`),o=Mr(e);e===`${o}${n}`&&(r[`${o}${a}`]=i)}return r}const Pr=/[*?{[]/;async function Fr(e,t,n,r=32){let i=new Set,a=[];for(let r of e){let e=Pr.test(r)?f(r,{cwd:t}).map(e=>l(s(t,e))):[l(s(t,r))];for(let r of e){let e=s(r,n);if(i.has(e))continue;i.add(e);let o=c(t,r);a.push({absPath:e,memberPath:`./${o.replace(/\\/g,`/`)}`})}}return(await W(a,async({absPath:e,memberPath:t})=>{try{return{absPath:e,content:await x(e,`utf8`),memberPath:t}}catch{return null}},{concurrency:r})).filter(e=>e!==null)}function Ir(e){let t=[],n=e.split(`
|
|
5
|
+
`),r=!1;for(let e of n){if(/^packages\s*:/.test(e)){r=!0;continue}if(r){if(/^\S/.test(e))break;let n=/^\s+-\s+['"]?([^'"#\s]+)['"]?/.exec(e);n&&t.push(n[1])}}return t}const Lr={"pnpm-workspace.yaml":`npm`,"package.json":`npm`,"pyproject.toml":`pypi`,"go.work":`go`,"go.mod":`go`,"Cargo.toml":`cargo`},Rr=new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`]),zr=(e,t)=>typeof e==`string`?Qe(e):typeof t==`function`?t():t;function Br(e,t){let n=new Map,r=new Set(e),i=t;for(;r.size;){for(let e of r){let t=s(i,e);try{u(t),n.set(e,t),r.delete(e)}catch{}}let e=o(i);if(e===i)break;i=e}return n}async function Vr(e,t){let n=await W(e,async e=>{try{return[e,await x(e,`utf8`)]}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}},{concurrency:t});return new Map(n)}function Z(e,t){t&&(e.date=t,e.age=De(t,{noAffix:!0}))}function Hr(e){let t=0;for(let n of Object.keys(e))t+=Object.keys(e[n]).length;return t}function Ur(e){console.error(`${Re()} ${e}`)}function Q(e,t,n,r,i){if(i===`engines`&&je.includes(e)||t===`pypi`&&e===`python`)return!1;if(!n.size&&!r.size)return!0;let a=t===`go`?Wn(e):e;for(let t of r)if(t.test(e)||t.test(a))return!1;for(let t of n)if(t.test(e)||t.test(a))return!0;return!n.size}function Wr(t){let n=new Set;if(t)for(let e of t){let t;try{t=p(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}if(t?.isFile())n.add(l(e));else if(t?.isDirectory()){for(let t of Object.keys(Lr)){let r=s(e,t),i=null;try{i=p(r)}catch{}i?.isFile()&&n.add(l(r))}try{for(let t of h(e,{withFileTypes:!0}))t.isFile()&&xr(t.name)&&n.add(l(s(e,t.name)))}catch{}let t=l(e).replace(/\\/g,`/`),r=Qn.some(e=>t.endsWith(`${e}/workflows`)),i=!r&&Qn.some(e=>t.endsWith(e)),a;a=r?[o(t)]:i?[t]:Qn.map(e=>s(t,e));for(let e of a)for(let t of er(e))n.add(t)}else throw Error(`${e} is neither a file nor directory`)}else{let t=new Set(Qn),r=[...Object.keys(Lr),...vr,...Qn];for(let[i,a]of Br(r,e()))if(t.has(i))for(let e of er(a))n.add(e);else n.add(l(a));try{for(let t of h(e(),{withFileTypes:!0}))t.isFile()&&xr(t.name)&&!vr.includes(t.name)&&n.add(l(s(e(),t.name)))}catch{}}for(let e of n)a(e)===`go.work`&&n.delete(s(o(e),`go.mod`));for(let e of n)a(e)===`pnpm-workspace.yaml`&&n.delete(s(o(e),`package.json`));return n}function $(e,t){n===`win32`&&_(e,0),v(e,t,n===`win32`?{flag:`r+`}:void 0)}function Gr(e){let t={results:{}};for(let n of Object.keys(e))for(let[r,i]of Object.entries(e[n])){typeof i.oldPrint==`string`&&(i.old=i.oldPrint),typeof i.newPrint==`string`&&(i.new=i.newPrint),typeof i.oldOrig==`string`&&!ln(i.oldOrig)&&(i.old=n===`go`?Gn(i.oldOrig):i.oldOrig),n===`go`&&(i.new=Gn(i.new)),n===`actions`&&(i.old=q(i.old),i.new=q(i.new)),delete i.oldPrint,delete i.newPrint,delete i.oldOrig,delete i.date;let[e,a]=r.split(`\0`),o=t.results[n]??={};(o[e]??={})[a]=i}return t}let Kr=!1;async function qr(t={}){if(!Kr){let{enableDnsCache:e}=await import(`./dns.js`);e(),Kr=!0}let n={...t},c=n.sockets??25,u=n.timeout??0,d=zr(t.forgeapi,`https://api.github.com`),f=zr(t.pypiapi,`https://pypi.org`),p=zr(t.jsrapi,`https://jsr.io`),m=zr(t.goproxy,Cn),h=zr(t.cargoapi,`https://crates.io`),g=zr(t.dockerapi,`https://hub.docker.com`),_=wn(),v=n.color===!0||n.noColor!==!0&&r.isTTY,y=e=>v?t=>i(e,String(t)):String,b=y(`magenta`),S=y(`green`),C=y(`red`),w={fetchTimeout:u||5e3,goProbeTimeout:u?u/2:2500,forgeApiUrl:d,pypiApiUrl:f,jsrApiUrl:p,goProxyUrl:m,cratesIoUrl:h,dockerApiUrl:g,doFetch:async(e,t)=>{n.verbose&&Ur(`${b(t?.method||`GET`)} ${e}`);let r=await et(e,t);return n.verbose&&Ur(`${r.ok?S(r.status):C(r.status)} ${e}`),r},noCache:!!n.noCache},T=Pt(n.greatest),E=Pt(n.prerelease),te=Pt(n.release),ne=Pt(n.patch),re=Pt(n.minor),ie=Pt(n.allowDowngrade),D=n.modes?.length?new Set(n.modes):Rr;D.has(`actions`)&&ft();function ae(e){return ne===!0||Fe(e,ne)?new Set([`patch`]):re===!0||Fe(e,re)?new Set([`patch`,`minor`]):new Set([`patch`,`minor`,`major`])}let oe=new Map;function se(e){let t=oe.get(e);return t||(t={useGreatest:typeof T==`boolean`?T:Fe(e,T),usePre:typeof E==`boolean`?E:Fe(e,E),useRel:typeof te==`boolean`?te:Fe(e,te),semvers:ae(e)},oe.set(e,t)),t}let ce=jt(n.include??[]),le=jt(n.exclude??[]),ue=n.pin??{},O={},k={},A={},j={},M=Date.now(),P=n.cooldown?Ve(String(n.cooldown)):0,de=e(),fe=e=>e.replace(`${de}/`,``).replace(`${de}\\`,``),F=0,I=(e,t,n,r,i,a)=>{O[e][`${t}${n}${r}`]={old:i,oldOrig:a}},pe=Wr(n.files?.length?new Set(n.files):!1),L=await Vr(Array.from(pe).filter(e=>{if($n(e))return D.has(`actions`)||D.has(`docker`);let t=a(e);if(xr(t))return D.has(`docker`);let n=Lr[t];return!!n&&D.has(n)}),c),me={},R={},he=[],z=null,ge=[],B=!1,_e=[],ve=!1,ye=[],be=[],V={};async function H(e){let t=await Lt(e);return{modeConfig:t,modeInclude:t.include?.length?jt([...n.include??[],...t.include]):ce,modeExclude:t.exclude?.length?jt([...n.exclude??[],...t.exclude]):le,pin:{...t.pin,...ue}}}function xe(e,t){return n.types?.length?n.types:t?.types?.length?t.types:e===`npm`?Ae:e===`pypi`?Me:e===`go`?n.indirect?Ne:Ne.filter(e=>e!==`indirect`):e===`cargo`?Pe:[]}function U(e,t,n,r){O.docker??={};for(let i of n)for(let{ref:n}of ur(e,i)){if(!Q(n.fullImage,`docker`,r.include,r.exclude,`docker`))continue;let e=`${t}${n.fullImage}`;if(O.docker[e])continue;let i=cr(n.tag);i&&(O.docker[e]={old:i.version,oldOrig:n.tag},be.push({key:e,fullImage:n.fullImage,ref:n,filePin:r.pin}))}}async function Ce(e){let t=await Lt(e);return{include:t.include?.length?jt([...n.include??[],...t.include]):ce,exclude:t.exclude?.length?jt([...n.exclude??[],...t.exclude]):le,pin:t.pin??{}}}for(let e of pe){if($n(e)){let t=D.has(`actions`),n=D.has(`docker`);if(!t&&!n)continue;let r=L.get(e),i=fe(e),a=await Ce(o(e));if(me[i]={absPath:e,content:r},t){O.actions??={};let e=Array.from(r.matchAll(Kn),e=>qn(e[1])).filter(e=>e!==null);for(let t of e){if(!Q(t.name,`actions`,a.include,a.exclude,`actions`))continue;let e=`${i}${t.name}`;O.actions[e]||(O.actions[e]={old:t.ref},ye.push({...t,key:e,apiUrl:Jn(t.host,d),filePin:a.pin}))}}n&&(R[i]={absPath:e,content:r,fileType:`workflow`},U(r,i,[rr,ir,ar],a));continue}let t=a(e);if(xr(t)){if(!D.has(`docker`))continue;let n=L.get(e),r=fe(e),i=br(t)?`dockerfile`:`compose`,a=await Ce(o(e));R[r]={absPath:e,content:n,fileType:i},U(n,r,[Sr(t)],a);continue}let n=Lr[t];if(!D.has(n))continue;if(t===`go.work`){O[n]??={};let t=o(l(e)),r=L.get(e);z={file:e,content:r};let i=Hn(r),[a,u]=await Promise.all([H(t),W(i.use,async e=>{let n=l(s(t,e,`go.mod`));try{return{usePath:e,modPath:n,content:await x(n,`utf8`)}}catch{return null}},{concurrency:c})]),{modeConfig:d,modeInclude:f,modeExclude:p,pin:m}=a,h=xe(n,d);j[n]=e,V[n]={modeConfig:d,projectDir:t,pin:m};for(let e of u){if(!e)continue;let{usePath:t,modPath:r,content:i}=e,a=In(i),s=o(r);he.push({absPath:r,content:i,projectDir:s,usePath:t});let c=t===`.`?``:`|${t}`;for(let e of h){let t=a[e]||{};for(let[r,i]of Object.entries(t))Q(r,n,f,p,e)&&I(n,e,c,r,Gn(i),q(i))}}for(let[e,t]of Object.entries(i.replace))Q(e,n,f,p,`replace`)&&I(n,`replace`,``,e,Gn(t),q(t));F+=Object.keys(O[n]).length;continue}if(t===`go.mod`&&z||t===`package.json`&&ve)continue;if(t===`Cargo.toml`){O[n]??={};let t=L.get(e),r=ee(t),i=o(l(e));j[n]=e;let a=Br([`Cargo.lock`],i).get(`Cargo.lock`),s=r.workspace?.members,u=Array.isArray(s)&&s.length,[d,f,p]=await Promise.all([H(i),a?x(a,`utf8`):Promise.resolve(null),u?Fr(s,i,`Cargo.toml`,c):Promise.resolve([])]),{modeConfig:m,modeInclude:h,modeExclude:g,pin:_}=d,v=xe(n,m);V[n]={modeConfig:m,projectDir:i,pin:_};let y=f?Er(f):new Map,b=(e,t)=>{for(let r of v){let i=Ie(e,r)||{};if(!(typeof i!=`object`||Array.isArray(i))){for(let[e,a]of Object.entries(i))if(Q(e,n,h,g,r))if(typeof a==`object`&&a&&`version`in a&&!(`git`in a)&&!(`path`in a)){let i=String(a.version);Se(i)&&I(n,r,t,e,kr(y,e,i)??X(i),i)}else typeof a==`string`&&Se(a)&&I(n,r,t,e,kr(y,e,a)??X(a),a)}}};if(u){B=!0,b(r,``),ge.push({absPath:l(e),content:t,memberPath:`.`});for(let e of p){ge.push(e);try{b(ee(e.content),`|${e.memberPath}`)}catch(t){throw Error(`Error parsing ${e.absPath}: ${t.message}`)}}}else A[n]=t,b(r,``);F+=Object.keys(O[n]).length;continue}if(t===`pnpm-workspace.yaml`){O[n]??={};let t=o(l(e)),r=L.get(e);ve=!0;let i=Ir(r),a=s(t,`package.json`),[u,d,f]=await Promise.all([H(t),x(a,`utf8`).catch(()=>null),Fr(i,t,`package.json`,c)]),{modeConfig:p,modeInclude:m,modeExclude:h,pin:g}=u,_=xe(n,p);j[n]=e,V[n]={modeConfig:p,projectDir:t,pin:g};let v=(e,t)=>{for(let r of _){let i=e[r]||{};if(typeof i==`string`){let[e,a]=i.split(`@`);Q(e,n,m,h,r)&&I(n,r,t,e,X(a),a)}else if(typeof i==`object`&&!Array.isArray(i))for(let[e,a]of Object.entries(i))Q(e,n,m,h,r)&&(ln(a)?I(n,r,t,e,dn(a,e).version,a):Se(a)?I(n,r,t,e,X(a),a):un(a)?I(n,r,t,e,`0.0.0`,a):k[`${r}${t}${e}`]={old:a})}};if(d!==null){let e;try{e=JSON.parse(d)}catch(e){throw Error(`Error parsing ${a}: ${e.message}`)}_e.push({absPath:l(a),content:d,memberPath:`.`}),v(e,``)}for(let e of f){let t;try{t=JSON.parse(e.content)}catch(t){throw Error(`Error parsing ${e.absPath}: ${t.message}`)}_e.push(e),v(t,`|${e.memberPath}`)}F+=Object.keys(O[n]).length+Object.keys(k).length;continue}j[n]=e,O[n]??={};let r=o(l(e)),{modeConfig:i,modeInclude:u,modeExclude:f,pin:p}=await H(r),m=xe(n,i),h={};A[n]=L.get(e);try{if(n===`npm`)h=JSON.parse(A[n]);else if(n===`pypi`)h=ee(A[n]);else if(n===`go`){let e=In(A[n]);h.deps=e.deps,h.indirect=e.indirect,h.replace=e.replace,h.tool=e.tool}}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}for(let e of m){let t;if(t=n===`npm`||n===`go`?h[e]||{}:Ie(h,e)||{},Array.isArray(t)&&n===`pypi`)for(let{name:r,version:i}of ke(t))Q(r,n,u,f,e)&&I(n,e,``,r,X(i),i);else if(typeof t==`string`){let[r,i]=t.split(`@`);Q(r,n,u,f,e)&&I(n,e,``,r,X(i),i)}else for(let[r,i]of Object.entries(t))Q(r,n,u,f,e)&&(n===`npm`&&ln(i)?I(n,e,``,r,dn(i,r).version,i):n!==`go`&&Se(i)?I(n,e,``,r,X(i),i):n===`npm`&&un(i)?I(n,e,``,r,`0.0.0`,i):n===`npm`?k[`${e}${r}`]={old:i}:n===`go`&&I(n,e,``,r,Gn(i),q(i)))}F+=Object.keys(O[n]).length+Object.keys(k).length,V[n]={modeConfig:i,projectDir:r,pin:p}}if(O.actions&&(F+=Object.keys(O.actions).length),O.docker&&(F+=Object.keys(O.docker).length),F===0)return{results:{},message:`No dependencies found, nothing to do.`};let we=[],Te={registry:n.registry};for(let e of Object.keys(V)){let t=!!O[e]&&Object.keys(O[e]).length>0,r=e===`npm`&&Object.keys(k).length>0;if(!t&&!r)continue;let{modeConfig:i,projectDir:a,pin:o}=V[e];we.push((async()=>{let t=new Map,r=n.cooldown??i.cooldown,s=r?Ve(String(r)):0,l=e=>{if(s)for(let[t,{date:n}]of Object.entries(e))n&&!K(n,s,M)&&delete e[t]};if(await W(Object.keys(O[e]),async n=>{let[r,c]=n.split(`\0`),l=Mr(r),u=O[e][n],d=null;if(e===`npm`){let{oldOrig:t}=u;if(t&&ln(t))d=await fn(c,l,w);else if(t&&un(t))try{d=await sn(c,l,i,Te,w)}catch{delete O[e][n];return}else d=await sn(c,l,i,Te,w)}else d=e===`go`?await Rn(c,l,u.oldOrig||u.old,a,w,_):e===`cargo`?await Tr(c,l,w):await vn(c,l,w);if(!d)return;let[f,,p]=d;if(f?.error)throw Error(f.error);let{useGreatest:m,usePre:h,useRel:g,semvers:v}=se(f.name),y=u.old,b=u.oldOrig,x=o[c],S=ct(f,{usePre:h,useRel:g,useGreatest:m,semvers:v,range:y,mode:e,pinnedRange:x,cooldownDays:s||void 0,now:s?M:void 0},{allowDowngrade:ie,matchesAny:Fe,isGoPseudoVersion:Mn}),C=``;if([`go`,`pypi`].includes(e)&&S)C=S;else if(e===`cargo`&&S&&b)C=Or(b,S);else if(S)if(b&&un(b))C=String(Yt()[`save-exact`])===`true`?S:`^${S}`;else if(b&&ln(b)){let e=/^(npm:@jsr\/[^@]+@|jsr:@[^@]+@)(.+)$/.exec(b);e?C=`${e[1]}${S}`:b.startsWith(`jsr:`)&&(C=`jsr:${S}`)}else C=mn(y,S,b);if(!S||S===y||b&&b===C){delete O[e][n];return}let T=``;e===`pypi`&&f.releases?.[S]?.[0]?.upload_time_iso_8601?T=f.releases[S][0].upload_time_iso_8601:e===`go`&&f.Time?T=f.Time:e===`cargo`&&f.time?.[S]&&(T=f.time[S]),u.new=C,b&&ln(b)&&(u.newPrint=S),e===`npm`?t.set(n,{name:c,promise:cn(f.name,S,i,Te,w)}):e===`pypi`?u.info=Tt(f,p,f.info.name):e===`go`?u.info=Un(f.newPath||c):e===`cargo`&&(u.info=`https://crates.io/crates/${c}`),T&&Z(u,T)},{concurrency:c}),await Promise.all(Array.from(t,async([t,{name:n,promise:r}])=>{let i=await r,a=O[e][t];a&&(a.info=Tt({repository:i.repository,homepage:i.homepage},null,n),i.date&&Z(a,i.date))})),e===`npm`&&Object.keys(k).length){let t=(await W(Object.entries(k),([e,t])=>{let n=e.split(`\0`)[1];return _n(e,t,se(n).useGreatest,w)},{concurrency:c})).filter(e=>e!==null);for(let n of t){let{key:t,newRange:r,user:i,repo:a,oldRef:o,newRef:s,newDate:c}=n;O[e][t]={old:k[t].old,new:r,oldPrint:vt.test(o)?o.substring(0,7):o,newPrint:vt.test(s)?s.substring(0,7):s,info:`https://github.com/${i}/${a}`},c&&Z(O[e][t],c)}}l(O[e])})())}if(ye.length&&we.push((async()=>{let e=new Map;for(let t of ye){let n=`${t.apiUrl}/${t.owner}/${t.repo}`,r=e.get(n);r||e.set(n,r={apiUrl:t.apiUrl,owner:t.owner,repo:t.repo,infos:[]}),r.infos.push(t)}await W(e.values(),async({apiUrl:e,owner:t,repo:n,infos:r})=>{let i=await xt(e,t,n,w),a=[],o=new Map,s=new Map,l=new Map;for(let e of i){s.set(e.name,e);let t=q(e.name);N(t)&&(a.push(t),o.has(t)||o.set(t,e.name)),e.commitSha&&l.set(e.commitSha,e.name)}let u=new Map;async function d(r){if(u.has(r))return u.get(r);let i=await Yn(e,t,n,r,w);return u.set(r,i),i}async function f(e){let t=new Set;for(let n=0;n<20;n++){let n=st({},t.size?a.filter(e=>!t.has(e)):a,e);if(!n||n===e.range)return null;let r=o.get(n);if(!r){t.add(n);continue}let i=s.get(r)?.commitSha||``;if(!P)return{version:n,tag:r,commitSha:i,date:``};let c=i?await d(i):``;if(K(c,P,M))return{version:n,tag:r,commitSha:i,date:c};t.add(n)}return null}await W(r,async({key:e,host:r,ref:i,name:a,isHash:o,filePin:c})=>{let u=O.actions[e],p=`https://${r||`github.com`}/${t}/${n}`,m=ue[a]??c[a];if(o){let{usePre:t,useRel:n}=se(a),r=await f({range:`0.0.0`,semvers:new Set([`patch`,`minor`,`major`]),usePre:t,useRel:n,useGreatest:!0,pinnedRange:m});if(!r){delete O.actions[e];return}let{tag:o,commitSha:s,date:c}=r;if(!s||s===i||s.startsWith(i)||i.startsWith(s)){delete O.actions[e];return}let d=l.get(i);if(!d){for(let[e,t]of l)if(e.startsWith(i)){d=t;break}}u.old=i,u.new=s.substring(0,i.length),u.oldPrint=d||i.substring(0,7),u.newPrint=o,u.info=p,c&&Z(u,c)}else{let t=J(q(i));if(!t){delete O.actions[e];return}let{usePre:n,useRel:r,semvers:o}=se(a),c=await f({range:t,semvers:o,usePre:n,useRel:r,useGreatest:!0,pinnedRange:m});if(!c){delete O.actions[e];return}let{tag:l,commitSha:h,date:g}=c,_=Xn(l,i);if(_===i){delete O.actions[e];return}if(u.new=s.has(_)?_:l,u.info=p,h&&g)Z(u,g);else if(h){let e=await d(h);e&&Z(u,e)}}},{concurrency:c})},{concurrency:c}),Object.keys(O.actions).length||delete O.actions})()),be.length&&we.push((async()=>{let e=new Map;for(let t of be){let n=e.get(t.fullImage);n||e.set(t.fullImage,n=[]),n.push(t)}await W(e.entries(),async([e,t])=>{let n;try{let[t]=await fr(e,`docker`,w);n=t}catch{for(let e of t)delete O.docker[e.key];return}for(let e of t){let t=O.docker[e.key],r=t.oldOrig||t.old,{semvers:i}=se(e.fullImage),a=ue[e.fullImage]??e.filePin[e.fullImage],o=pr(n.tags,r,i,P||void 0,P?M:void 0,a);if(!o){delete O.docker[e.key];continue}t.new=o.newTag,t.info=Cr(e.ref),Z(t,o.date)}},{concurrency:c}),Object.keys(O.docker).length||delete O.docker})()),await Promise.all(we),!Hr(O))return{results:{},message:`All dependencies are up to date.`};if(n.update){let e=(e,t,n)=>{for(let r of t){let t=Nr(O[e],r.memberPath);Object.keys(t).length&&$(r.absPath,n(r.content,t))}},t=new Map;if(O.actions)for(let[e,n]of Object.entries(O.actions)){let[r,i]=e.split(`\0`),a=t.get(r);a||t.set(r,a=[]),a.push({name:i,oldRef:n.old,newRef:n.new})}let n=new Map;if(O.docker)for(let[e,t]of Object.entries(O.docker)){let[r]=e.split(`\0`),i=n.get(r);i||n.set(r,i={}),i[e]=t}let r=Gr(O);for(let r of Object.keys(O)){if(!Object.keys(O[r]).length)continue;if(r===`actions`){for(let[e,n]of t){let{absPath:t,content:r}=me[e]||{};if(!t)continue;let i=Zn(r,n);$(t,i),R[e]&&(R[e].content=i)}continue}if(r===`docker`){for(let[e,t]of n){let n=R[e];if(!n)continue;let{absPath:r,content:i,fileType:a}=n;$(r,(a===`dockerfile`?hr:a===`compose`?gr:_r)(i,t))}continue}let i=A[r];if(r===`go`&&z){for(let e of he){let t=Nr(O[r],e.usePath);if(!Object.keys(t).length)continue;let[n,i]=Bn(e.content,t);n!==e.content&&$(e.absPath,n),Vn(e.projectDir,i,$)}let e={};for(let[t,n]of Object.entries(O[r]))t.split(`\0`)[0]===`replace`&&(e[t]=n);if(Object.keys(e).length){let[t]=Bn(z.content,e);t!==z.content&&$(z.file,t)}}else if(r===`go`){let[e,t]=Bn(i,O[r]);$(j[r],e),Vn(o(l(j[r])),t,$)}else if(r===`cargo`&&B)e(r,ge,jr);else if(r===`cargo`)$(j[r],jr(i,O[r]));else if(r===`npm`&&ve)e(r,_e,pn);else{let e=r===`npm`?pn:yn;$(j[r],e(i,O[r]))}}return r}return Gr(O)}function Jr(e,t){if(t.some(e=>e===`-h`||e===`--help`||e===`-v`||e===`--version`))return[];let n=(...t)=>t.some(t=>d(s(e,t))),r=new Set;return n(`package.json`,`pnpm-workspace.yaml`)&&(r.add(`https://registry.npmjs.org/`),r.add(`https://jsr.io/`),r.add(`https://api.github.com/`)),n(`pyproject.toml`)&&r.add(`https://pypi.org/`),n(`Cargo.toml`)&&r.add(`https://crates.io/`),n(`go.mod`,`go.work`)&&r.add(`https://proxy.golang.org/`),n(...vr)&&r.add(`https://hub.docker.com/`),n(`.github/workflows`)&&(r.add(`https://api.github.com/`),r.add(`https://hub.docker.com/`)),Array.from(r)}function Yr(e){let t=``,n=0,r=e.length;for(;n<r;){let i=e[n];if(i===`"`){for(t+=i,n++;n<r;){let i=e[n];if(t+=i,n++,i===`\\`&&n<r){t+=e[n],n++;continue}if(i===`"`)break}continue}if(i===`/`&&n+1<r&&e[n+1]===`/`){for(n+=2;n<r&&e[n]!==`
|
|
6
|
+
`;)n++;continue}if(i===`/`&&n+1<r&&e[n+1]===`*`){for(n+=2;n<r&&(e[n]!==`*`||e[n+1]!==`/`);)n++;n+=2;continue}t+=i,n++}return t=t.replace(/,(\s*[}\]])/g,`$1`),JSON.parse(t)}export{Se as _,At as a,Mt as c,Ze as d,Xe as f,He as g,ze as h,Wn as i,kt as l,Ue as m,Jr as n,Lt as o,Oe as p,qr as r,Et as s,Yr as t,Nt as u};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "updates",
|
|
3
|
-
"version": "17.16.
|
|
3
|
+
"version": "17.16.12",
|
|
4
4
|
"description": "CLI dependency update tool for npm, uv, cargo, go and actions",
|
|
5
5
|
"author": "silverwind",
|
|
6
6
|
"repository": "silverwind/updates",
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"bun": "*"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@types/node": "25.
|
|
42
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
43
|
-
"@vitest/coverage-v8": "4.1.
|
|
41
|
+
"@types/node": "25.7.0",
|
|
42
|
+
"@typescript/native-preview": "7.0.0-dev.20260512.1",
|
|
43
|
+
"@vitest/coverage-v8": "4.1.6",
|
|
44
44
|
"eslint": "10.3.0",
|
|
45
45
|
"eslint-config-silverwind": "133.0.1",
|
|
46
46
|
"jest-extended": "7.0.0",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"typescript-config-silverwind": "18.0.0",
|
|
52
52
|
"updates-config-silverwind": "3.0.2",
|
|
53
53
|
"versions": "15.0.3",
|
|
54
|
-
"vitest": "4.1.
|
|
55
|
-
"vitest-config-silverwind": "11.3.
|
|
54
|
+
"vitest": "4.1.6",
|
|
55
|
+
"vitest-config-silverwind": "11.3.5"
|
|
56
56
|
}
|
|
57
57
|
}
|