updates 17.8.1 → 17.8.3
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 +8 -8
- package/package.json +7 -7
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,versions as o}from"node:process";import{basename as s,dirname as c,join as l,resolve as u}from"node:path";import{pathToFileURL as d}from"node:url";import{accessSync as f,globSync as p,lstatSync as m,readFileSync as h,readdirSync as g,statSync as _,truncateSync as v,writeFileSync as y}from"node:fs";import{parseArgs as b,promisify as x,stripVTControlCharacters as ee,styleText as te}from"node:util";import ne from"node:dns";import{execFile as S}from"node:child_process";async function re(e,t,{concurrency:n=1/0,stopOnError:r=!0,signal:i}={}){return new Promise((a,o)=>{if(e[Symbol.iterator]===void 0&&e[Symbol.asyncIterator]===void 0)throw TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof e})`);if(typeof t!=`function`)throw TypeError(`Mapper function is required`);if(!(Number.isSafeInteger(n)&&n>=1||n===1/0))throw TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${n}\` (${typeof n})`);let s=[],c=[],l=new Map,u=!1,d=!1,f=!1,p=0,m=0,h=e[Symbol.iterator]===void 0?e[Symbol.asyncIterator]():e[Symbol.iterator](),g=()=>{y(i.reason)},_=()=>{i?.removeEventListener(`abort`,g)},v=e=>{a(e),_()},y=e=>{u=!0,d=!0,o(e),_()};i&&(i.aborted&&y(i.reason),i.addEventListener(`abort`,g,{once:!0}));let b=async()=>{if(d)return;let e=await h.next(),n=m;if(m++,e.done){if(f=!0,p===0&&!d){if(!r&&c.length>0){y(AggregateError(c));return}if(d=!0,l.size===0){v(s);return}let e=[];for(let[t,n]of s.entries())l.get(t)!==ie&&e.push(n);v(e)}return}p++,(async()=>{try{let r=await e.value;if(d)return;let i=await t(r,n);i===ie&&l.set(n,i),s[n]=i,p--,await b()}catch(e){if(r)y(e);else{c.push(e),p--;try{await b()}catch(e){y(e)}}}})()};(async()=>{for(let e=0;e<n;e++){try{await b()}catch(e){y(e);break}if(f||u)break}})()})}const ie=Symbol(`skip`);function ae(e){let t={},n=t,r=e.split(/\r?\n/);for(let e=0;e<r.length;e++){let i=r[e].replace(/#.*$/,``).trim();if(!i)continue;let a=/^\[([^\]]+)\]$/.exec(i);if(a){n=t;for(let e of
|
|
3
|
-
`;case`r`:return`\r`;case`t`:return` `;case`u`:case`U`:return String.fromCodePoint(parseInt(t.slice(1),16));default:return t}})}const
|
|
4
|
-
`)}return r}const qe={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function Je(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=qe[n.toLowerCase()];if(r)return Number(e)*r}let n=Number(e);if(!Number.isFinite(n))throw Error(`Invalid cooldown value: ${e}`);return n}function Ye(){let e=new Map,t=new Map,n=ne.lookup;ne.lookup=function(r,...i){let a={},o;typeof i[0]==`function`?o=i[0]:(a=typeof i[0]==`number`?{family:i[0]}:i[0]||{},o=i[1]);let s=e.get(r);if(s){a.all?o(null,s):o(null,s[0].address,s[0].family);return}if(t.has(r)){t.get(r).push({options:a,callback:o});return}t.set(r,[{options:a,callback:o}]),n.call(ne,r,{all:!0},(n,i)=>{let a=t.get(r);t.delete(r),!n&&i?.length&&e.set(r,i);for(let{options:e,callback:t}of a)n?t(n):e.all?t(null,i):t(null,i[0].address,i[0].family)})}}const Xe=`17.8.1`,Ze=5e3,F=e=>e.replace(/^v/,``),I=e=>e.replace(/[|\\{}()[\]^$+*?.-]/g,`\\$&`),L=e=>e.endsWith(`/`)?e.substring(0,e.length-1):e;function Qe(e,t){return{headers:{"user-agent":`updates/${Xe}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function $e(e,t,n,r,i,a,o){n&&r&&i&&r(`${i(`fetch`)} ${e}`);let s=await fetch(e,t);return n&&r&&a&&o&&r(`${s.ok?a(s.status):o(s.status)} ${e}`),s}function R(e){let t=pe(e);return t?!!t.prerelease.length:!1}function et(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}function tt(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=z(e),s=z(t);if(!o||!s)return!0;let c=et(e)||R(e),l=R(t);return c&&!l?_e(s,o)||n:!l&&ye(s,o)?r===!0||a(i,r):!0}function z(e){try{return ge(e)?.version??``}catch{return``}}function nt(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s}){let c=z(n);if(!c)return c;i=et(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 l=0,u=c;for(let n of t){let t=pe(n);if(!t?.version||t.prerelease.length&&(!i||a))continue;let c=t.version;if(s&&!Ae(c,s))continue;let d=j(u,c);if(!(!d||!r.has(d)))if(o||!(`time`in e))ve(z(c),u)&&(u=c);else{let t=Date.parse(e.time[n]);t>=0&&t>l&&(u=c,l=t)}}return u||null}function rt(e,{mode:t,range:n,useGreatest:r,useRel:i,usePre:a,semvers:o,pinnedRange:s},{allowDowngrade:c,matchesAny:l,isGoPseudoVersion:u}){if(n===`*`||n.includes(`||`))return null;let d=[];if(t===`pypi`)d=Object.keys(e.releases).filter(e=>A(e));else if(t===`npm`)d=Object.keys(e.versions).filter(e=>A(e));else if(t===`go`){let t=z(n);if(!t)return null;let r=a||et(n),s=e=>R(e)&&(!r||i),d={useRel:i,allowDowngrade:c,name:e.name,matchesAny:l},f=e.old||n,p=z(e.new);if(p&&!u(e.new)&&!s(e.new)){let n=j(t,p);if(n&&o.has(n)&&tt(f,e.new,d))return e.new}let m=z(e.sameMajorNew);if(m&&!u(e.sameMajorNew)&&!s(e.sameMajorNew)){let n=j(t,m);if(n&&o.has(n)&&tt(f,e.sameMajorNew,d))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}return null}let f=nt(e,d,{range:n,semvers:o,usePre:a,useRel:i,useGreatest:r,pinnedRange:s});if(!f)return null;if(r)return f;{let r=``,u=``;t===`pypi`?(u=e.info.version,r=z(e.info.version)):r=e[`dist-tags`].latest;let d=z(n),p=et(n),m=R(f),h=R(r),g={useRel:i,allowDowngrade:c,name:e.name,matchesAny:l};if(!i&&a||p&&m)return f;if(p&&!m)return tt(n,f,g)?f:null;let _=j(d,r);return _&&_!==`prerelease`&&!o.has(_.replace(/^pre/,``))||i&&R(r)?f:ye(r,d)&&!h?tt(n,r,g)?r:null:!p&&h&&!a||s&&!Ae(r,s)?f:u||r}}const it=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&it.set(e.substring(0,t),e.substring(t+1))}function at(e){try{let t=it.get(new URL(e).hostname);if(t)return t}catch{}return t.UPDATES_GITHUB_API_TOKEN||t.GITHUB_API_TOKEN||t.GH_TOKEN||t.GITHUB_TOKEN||t.HOMEBREW_GITHUB_API_TOKEN}function ot(e,t){let n={signal:AbortSignal.timeout(t.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}},r=at(e);return r&&(n.headers={...n.headers,Authorization:`Bearer ${r}`}),t.doFetch(e,n)}function st(e,t,n){let r=F(t);if(!A(r))return null;if(n){let n=t,i=F(t);for(let t of e){let e=F(t);A(e)&&(!n||_e(e,i))&&(n=t,i=e)}if(be(r,i))return n}else{let t=e.at(-1);if(!t)return null;let n=F(t);if(!A(n))return null;if(be(r,n))return t}return null}function ct(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 lt=/^[0-9a-f]{7,}$/i;function ut(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function dt(e,t,n,r){try{let i=await ot(`${e}/repos/${t}/${n}/tags?per_page=100`,r);if(!i?.ok)return[];let a=ut(await i.json()),o=i.headers.get(`link`)||``,s=/<([^>]+)>;\s*rel="last"/.exec(o);if(s){let i=Number(new URL(s[1]).searchParams.get(`page`)),o=await Promise.all(Array.from({length:i-1},(i,a)=>ot(`${e}/repos/${t}/${n}/tags?per_page=100&page=${a+2}`,r)));for(let e of o)e?.ok&&a.push(...ut(await e.json()))}return a}catch{return[]}}function ft(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 pt(e,t,n=``){let r=t.startsWith(`v`),i=F(e),a=F(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 mt(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function ht({repository:e,homepage:t,info:n},r,i){n&&(e=n.project_urls.repository||n.project_urls.Repository||n.project_urls.repo||n.project_urls.Repo||n.project_urls.source||n.project_urls.Source||n.project_urls[`source code`]||n.project_urls[`Source code`]||n.project_urls[`Source Code`]||n.project_urls.homepage||n.project_urls.Homepage||`https://pypi.org/project/${i}/`);let a=``;return r===`https://npm.pkg.github.com`?`https://github.com/${i.replace(/^@/,``)}`:(e&&(a=ct(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${mt(a)}/${e.directory}`)),a||t||``)}function gt(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 _t(e){try{return gt(h(e,`utf-8`))}catch{return}}function vt(t){let n=e();for(;;){let e=l(n,t);try{return _(e),e}catch{}let r=c(n);if(r===n)break;n=r}}function yt(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 bt(e,n={}){let i=r===`win32`,a=i?t.USERPROFILE:t.HOME,o=[{...n}],s=[];function c(e){if(!e||s.includes(e))return;let t=_t(e);t&&(o.push(t),s.push(e))}i||(c(l(`/etc`,e,`config`)),c(l(`/etc`,`${e}rc`))),a&&(c(l(a,`.config`,e,`config`)),c(l(a,`.config`,e)),c(l(a,`.${e}`,`config`)),c(l(a,`.${e}rc`))),c(vt(`.${e}rc`));let u=yt(`${e}_`);return u.config&&c(u.config),Object.assign({},...o,u,s.length?{configs:s,config:s[s.length-1]}:void 0)}const xt=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,St=/^([^/]+)\/([^/#]+)?.*?\/([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,Ct=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,wt=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,Tt=`https://registry.npmjs.org`;let B=null;const Et=new Map;function Dt(){return B||bt(`npm`,{registry:Tt})}function Ot(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function kt(e,t){let n=t[`${e}:_authToken`]||t[`${e}/:_authToken`];if(n)return{token:Ot(n),type:`Bearer`};let r=t[`${e}:username`]||t[`${e}/:username`],i=t[`${e}:_password`]||t[`${e}/:_password`];if(r&&i){let e=Buffer.from(Ot(i),`base64`).toString(`utf8`);return{token:Buffer.from(`${r}:${e}`).toString(`base64`),type:`Basic`,username:r,password:e}}let a=t[`${e}:_auth`]||t[`${e}/:_auth`];if(a)return{token:Ot(a),type:`Basic`}}function V(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=kt(`//${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:Ot(i),type:`Basic`}}function At(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function jt(e,t){B||=Dt();let n=e.startsWith(`@`)?(/@[a-z0-9][\w-.]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=Et.get(r);if(i)return i;let a;if(!e.startsWith(`@`))a={auth:V(t,B),registry:t};else{let e=L(At(n,B));if(e!==t)try{let n=V(e,B);a=n?.token?{auth:n,registry:e}:{auth:V(t,B),registry:t}}catch{a={auth:V(t,B),registry:t}}else a={auth:V(t,B),registry:t}}return Et.set(r,a),a}async function Mt(e,t,n,r,i){B||=Dt();let{auth:a,registry:o}=jt(e,L((typeof r.registry==`string`?r.registry:!1)||n.registry||B.registry||Tt)),c=`${o}/${(t===`resolutions`?s(e):e).replace(/\//g,`%2f`)}`,l=await i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...Qe(a?.type,a?.token)});if(l?.ok)return[await l.json(),t,o,e];ft(l,c,e,o)}function H(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Nt(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function Pt(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 Ft(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 n.doFetch(o,{signal:AbortSignal.timeout(n.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}});if(s?.ok){let r=await s.json(),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]}ft(s,o,e,`JSR`)}function It(e,t){let n=e;for(let[e,{old:r,oldOrig:i}]of Object.entries(t)){let[a,o]=e.split(`\0`),s=i||r;if(a===`packageManager`){let r=RegExp(`"${I(a)}": *"${o}@${I(s)}"`,`g`);n=n.replace(r,`"${a}": "${o}@${t[e].new}"`)}else{let r=RegExp(`"${I(o)}": *"${I(s)}"`,`g`);n=n.replace(r,`"${o}": "${t[e].new}"`)}}return n}function Lt(e,t,n){let r=e.replace(wt,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 Rt(e){let t=e.match(Ct);return t?.length===1?e.replace(Ct,z(t[0])):e}async function zt(e,t,n){try{let r=await ot(`${n.forgeApiUrl}/repos/${e}/${t}/commits`,n);if(!r?.ok)return{hash:``,commit:{}};let{sha:i,commit:a}=(await r.json())[0];return{hash:i,commit:a}}catch{return{hash:``,commit:{}}}}async function Bt(e,t,n){return(await dt(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function Vt(e,t,n,r){let i=t.old.replace(xt,``),[a,o,s,c]=St.exec(i)||[];if(!o||!s||!c)return null;if(lt.test(c)){let{hash:n,commit:i}=await zt(o,s,r);if(!n)return null;let a=i?.committer?.date??i?.author?.date,l=n.substring(0,c.length);if(c!==l)return{key:e,newRange:t.old.replace(c,l),user:o,repo:s,oldRef:c,newRef:l,newDate:a}}else{let t=st(await Bt(o,s,r),c,n);if(t)return{key:e,newRange:t,user:o,repo:s,oldRef:c,newRef:t}}return null}async function Ht(e,t,n){let r=`${n.pypiApiUrl}/pypi/${e}/json`,i=await n.doFetch(r,{signal:AbortSignal.timeout(n.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}});if(i?.ok)return[await i.json(),t,null,e];ft(i,r,e,n.pypiApiUrl)}function Ut(e,t){let n=e;for(let[e,{old:r,oldOrig:i}]of Object.entries(t)){let[a,o]=e.split(`\0`),s=i||r;n=n.replace(RegExp(`("${I(o)} *[<>=~]+ *)${I(s)}(")`,`g`),(n,r,i)=>`${r}${t[e].new}${i}`)}return n}const Wt=x(S);function Gt(){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 e.endsWith(`/`)?e.substring(0,e.length-1):e}return`https://proxy.golang.org`}function Kt(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function qt(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function Jt(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}function Yt(e){let t=/\/v(\d+)$/.exec(e);return t?parseInt(t[1]):1}function Xt(e,t){return t<=1?e.replace(/\/v\d+$/,``):`${e.replace(/\/v\d+$/,``)}/v${t}`}function Zt(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function Qt(e){return`${(e.length+4).toString(16).padStart(4,`0`)}${e}`}function $t(e){let t=[Qt(`command=ls-refs
|
|
5
|
-
`),
|
|
6
|
-
`),`0001`,
|
|
7
|
-
`),Qt(`ref-prefix refs/tags/${e}v\n`),`0000`];return new Blob([t.join(``)])}function en(e,t){let n=new TextDecoder().decode(e),r=[],i=`refs/tags/${t}`,a=0;for(;a<n.length&&!n.startsWith(`0000`,a);){let e=n.substring(a,a+4),t=parseInt(e,16);if(t===0||isNaN(t))break;let o=n.substring(a+4,a+t);a+=t;let s=o.indexOf(` `);if(s===-1)continue;let c=o.substring(s+1).trim();if(c.endsWith(`^{}`)||!c.startsWith(i))continue;let l=c.substring(i.length);l&&r.push(l)}return r}function tn(e,t){let n=t;for(let t of e){let e=/^v(\d+)\./.exec(t);if(e){let t=parseInt(e[1]);t>n&&(n=t)}}return n}function nn(e){let t=/^((github\.com|gitea\.com)\/[^/]+\/[^/]+)(\/.*)?$/.exec(e);if(t){let e=t[1],n=t[3]||``;return{repoUrl:`https://${e}.git`,tagPrefix:n?`${n.substring(1)}/`:``}}let n=/^golang\.org\/x\/([^/]+)(\/.*)?$/.exec(e);if(n){let e=n[2]||``;return{repoUrl:`https://go.googlesource.com/${n[1]}`,tagPrefix:e?`${e.substring(1)}/`:``}}return null}async function rn(e,t){let n=nn(e);if(n)return n;try{let n=await t.doFetch(`https://${e}?go-get=1`,{signal:AbortSignal.timeout(t.goProbeTimeout)});if(!n.ok)return null;let r=await n.text(),i=/<meta\s+name="go-import"\s+content="([^"]+)"/.exec(r)||/<meta\s+content="([^"]+)"\s+name="go-import"/.exec(r);if(!i)return null;let[a,o,s]=i[1].trim().split(/\s+/);return o===`git`?{repoUrl:s,tagPrefix:e.length>a.length?`${e.substring(a.length+1)}/`:``}:null}catch{return null}}async function an(e,t,n){try{let r=await rn(e.replace(/\/v\d+$/,``),n);if(!r)return null;let{repoUrl:i,tagPrefix:a}=r,o=$t(a),s=await n.doFetch(`${i}/git-upload-pack`,{method:`POST`,headers:{"Git-Protocol":`version=2`,"Content-Type":`application/x-git-upload-pack-request`},body:o,signal:AbortSignal.timeout(n.goProbeTimeout)});return s.ok?tn(en(await s.arrayBuffer(),a),t):null}catch{return null}}function on(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function sn(e,t,n){if(!t)return null;let r=t,i=e+1,a=1,o=null;for(;o===null;){let t=i+a;if(t>e+100){o=e+101;break}let s=await n(t);s?(r=s,i=t,a*=2):o=t}for(;i+1<o;){let e=Math.floor((i+o)/2),t=await n(e);t?(r=t,i=e):o=e}return r}function cn(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:F(o),Time:s,...c===e?{}:{newPath:c},sameMajorNew:F(i),sameMajorTime:a},t,null,e]}function ln(e){let t={},n={},r=new Set,i=e.split(/\r?\n/),a=!1,o=!1;for(let e of i){let i=e.trim();if(/^require\s*\(/.test(i)){a=!0;continue}if(/^replace\s*\(/.test(i)){o=!0;continue}if(i===`)`){a=!1,o=!1;continue}if(i.includes(`// indirect`))continue;if(o||/^replace\s+/.test(i)){let e=o?/^(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(i):/^replace\s+(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(i);if(e){let[,t,i,a]=e;!i.startsWith(`./`)&&!i.startsWith(`/`)&&!i.startsWith(`../`)&&(n[i]=a,r.add(t))}continue}let s=a?/^(\S+)\s+(v\S+)/.exec(i):/^require\s+(\S+)\s+(v\S+)/.exec(i);s&&(t[s[1]]=s[2])}for(let e of r)delete t[e];return{deps:t,replace:n}}async function un(e,n,r,i,a){let o=Yt(e),s=async(e,n)=>{try{let{stdout:r}=await Wt(`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,l]=await Promise.all([s(e,a.fetchTimeout),s(Xt(e,o+1),a.goProbeTimeout)]);return c?cn(e,n,r,await sn(o,l,t=>s(Xt(e,t),a.goProbeTimeout)),c.Version,c.Time):on(e,r,n)}async function dn(e,t,n,r,i,a){if(qt(e,a))return un(e,t,n,r,i);let o=Jt(e),s=Yt(e),c=async t=>{let n=Xt(e,t);return i.doFetch(`${i.goProxyUrl}/${Jt(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout)}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},[l,u]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout)}),an(e,s,i)]);if(!l.ok)return on(e,n,t);let d,f;try{let e=await l.json();d=e.Version,f=e.Time}catch{return on(e,n,t)}let p=null;return u!==null&&u>s?(p=await c(u),p||=await sn(s,await c(s+1),c)):u===null&&(p=await sn(s,await c(s+1),c)),cn(e,t,n,p,d,f)}function fn(e,t){let n=I(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 pn(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+${I(s)}\\s+)v${I(c)}`,`g`),`$1v${l}`);continue}let u=Yt(s),d=parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=Xt(s,d);n=n.replace(RegExp(`${I(s)} +v${I(c)}`,`g`),`${e} v${l}`),r[s]=e}else n=n.replace(RegExp(`(${I(s)}) +v${I(c)}`,`g`),`$1 v${l}`);n=fn(n,s)}return[n,r]}function mn(e,t,n){if(!Object.keys(t).length)return;let r=p(`**/*.go`,{cwd:e});for(let i of r){let r=l(e,i),a=h(r,`utf8`),o=!1;for(let[e,n]of Object.entries(t)){let t=RegExp(`"${I(e)}(/|")`,`g`),r=a.replace(t,`"${n}$1`);r!==a&&(a=r,o=!0)}o&&n(r,a)}}function hn(e){let t=`https://${gn(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[e,i,a,...o]=r;return n.pathname=`/${i}/${a}/${mt(t)}/${o.join(`/`)}`,n.toString()}else return t}function gn(e){return/\/v[0-9]$/.test(e)?c(e):e}function _n(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const vn=/^\s*-?\s*uses:\s*['"]?([^'"#\s]+)['"]?/gm;function yn(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:lt.test(o)}}function bn(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function xn(e,t,n,r,i){try{let a=await ot(`${e}/repos/${t}/${n}/git/commits/${r}`,i);if(!a?.ok)return``;let o=await a.json();return o?.committer?.date||o?.author?.date||``}catch{return``}}function Sn(e,t){return pt(pe(F(e))?.version??F(e),t)}function Cn(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?)${I(e)}@${I(r)}`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}function wn(e){let t=e.replace(/\\/g,`/`);return/\.github\/workflows\/[^/]+\.(ya?ml)$/.test(t)}function Tn(e){try{return g(e).filter(e=>/\.(ya?ml)$/.test(e)).map(t=>u(l(e,t)))}catch{return[]}}const En=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,Dn=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,On=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,kn=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}]+)['"]?\s*$/gm,An=/^\s*-?\s*uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function jn(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 Mn(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||!En.test(r)))return null;let{registry:i,namespace:a,repo:o}=jn(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function Nn(e){let t=En.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Pn(e,t){let n=Nn(t);return n?pt(e,n.version,n.suffix):t}function Fn(e,t){let n=[];for(let r of e.matchAll(t)){let e=Mn(r[1]);e&&n.push({ref:e,match:r[1]})}return n}async function In(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=e=>{for(let t of e.results||[])r[t.name]=t.tag_last_pushed||t.last_updated||``},s=Array.from({length:10},(e,t)=>n.doFetch(a(t+1),{signal:AbortSignal.timeout(n.fetchTimeout)}).then(async e=>e?.ok?e.json():null).catch(()=>null)),c=await Promise.all(s),l=c[0];if(!l)return r;let u=Math.min(Math.ceil((l.count||0)/100),10);for(let e=0;e<u;e++)c[e]&&o(c[e]);return r}async function Ln(e,t,n){let{registry:r,namespace:i,repo:a}=jn(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await In(i,a,n),name:e},t,null,e]}function Rn(e,t,n){let r=Nn(t);if(!r)return null;let i=ge(F(r.version))?.version;if(!i)return null;let a=i,o=``,s=``;for(let[t,i]of Object.entries(e)){let e=Nn(t);if(!e||e.suffix!==r.suffix)continue;let c=ge(F(e.version))?.version;if(!c||!A(c))continue;let l=j(a,c);!l||!n.has(l)||ve(c,a)&&(a=c,o=t,s=i)}if(!o||a===i)return null;let c=Pn(a,t);return c===t?null:{newTag:c,date:s}}function zn(e,t,n){let r=e;for(let[e,i]of Object.entries(t)){let[t,a]=e.split(`\0`),o=i.oldOrig||i.old;for(let e of n)r=r.replace(e(I(a),I(o)),`$1${a}:${i.new}`)}return r}function Bn(e,t){return zn(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}`,`g`)])}function Vn(e,t){return zn(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}`,`g`)])}function Hn(e,t){return zn(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}`,`g`)])}const Un=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function Wn(e){return/^docker-.+\.ya?ml$/.test(e)}function Gn(e){return/^Dockerfile(\..+)?$/.test(e)}function Kn(e){return Gn(e)||Wn(e)}function qn(e){return Gn(e)?Dn:On}function Jn(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const Yn={"package.json":`npm`,"pyproject.toml":`pypi`,"go.mod":`go`},Xn={"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`},dockerapi:{type:`string`},greatest:{short:`g`,type:`string`,multiple:!0},help:{short:`h`,type:`boolean`},include:{short:`i`,type:`string`,multiple:!0},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-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 U(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.flatMap(e=>typeof e==`string`?Ue(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function Zn(e){for(let[t,{short:n}]of Object.entries(Xn))if(t===e||n===e)return t;return``}const W=b({strict:!1,allowPositionals:!0,tokens:!0,options:Xn}),G=W.values;for(let[e,t]of W.tokens.entries())if(t.kind===`option`&&t.value?.startsWith(`-`)){let n=Zn(t.value.substring(1)),r=W.tokens[e+1];G[t.name]=[!0],G[n]||(G[n]=[]),r?.kind===`positional`&&r.value?G[n].push(r.value):G[n].push(!0)}const K=W.values,Qn=W.positionals,[$n,er,q]=[`magenta`,`red`,`green`].map(e=>K[`no-color`]?String:t=>te(e,String(t))),J=Z(U(K.greatest)),tr=Z(U(K.prerelease)),nr=Z(U(K.release)),rr=Z(U(K.patch)),ir=Z(U(K.minor)),ar=Z(U(K[`allow-downgrade`])),or=U(K.modes)||new Set([`npm`,`pypi`,`go`,`actions`,`docker`]),sr=typeof K.forgeapi==`string`?L(K.forgeapi):`https://api.github.com`,cr=typeof K.pypiapi==`string`?L(K.pypiapi):`https://pypi.org`,lr=typeof K.jsrapi==`string`?L(K.jsrapi):`https://jsr.io`,ur=typeof K.goproxy==`string`?L(K.goproxy):Gt(),dr=typeof K.dockerapi==`string`?L(K.dockerapi):`https://hub.docker.com`,fr=Kt();function pr(e){let t={};if(Array.isArray(e)){for(let n of e)if(typeof n==`string`){let[e,r]=n.split(`=`,2);e&&r&&je(r)&&(t[e]=r)}}else if(typeof e==`string`){let[n,r]=e.split(`=`,2);n&&r&&je(r)&&(t[n]=r)}return t}function mr(e,t){let n=l(t,e);try{return f(n),n}catch{}let r=c(t);return r===t?null:mr(e,r)}function hr(e){console.error(`${Ge()} ${e}`)}const gr=typeof K.timeout==`string`?Number(K.timeout):0,Y={fetchTimeout:gr||Ze,goProbeTimeout:gr?gr/2:2500,forgeApiUrl:sr,pypiApiUrl:cr,jsrApiUrl:lr,goProxyUrl:ur,dockerApiUrl:dr,doFetch:(e,t)=>$e(e,t,!!K.verbose,hr,$n,q,er),verbose:!!K.verbose};async function _r(e){console.info(K.json?JSON.stringify({message:e}):e),await vr()}async function vr(e,t){if(e){let t=e.stack??e.message,n=e.cause;K.json?console.info(JSON.stringify({error:t,cause:n})):(console.info(er(t)),n&&console.info(er(`Caused by: ${String(n)}`)))}r===`win32`&&Number(o?.node?.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),n(t||e?1:0)}function yr(e={}){for(let t of Object.keys(e))for(let n of Object.values(e[t]))typeof n.oldPrint==`string`&&(n.old=n.oldPrint),typeof n.newPrint==`string`&&(n.new=n.newPrint),typeof n.oldOrig==`string`&&!H(n.oldOrig)&&(n.old=t===`go`?_n(n.oldOrig):n.oldOrig),t===`go`&&(n.new=_n(n.new)),t===`actions`&&(n.old=F(n.old),n.new=F(n.new)),delete n.oldPrint,delete n.newPrint,delete n.oldOrig,delete n.date;let t=0;for(let n of Object.keys(e))t+=Object.keys(e[n]).length;if(K.json){let t={results:{}};for(let n of Object.keys(e))for(let[r,i]of Object.entries(e[n])){let[e,a]=r.split(`\0`);t.results[n]||(t.results[n]={}),t.results[n][e]||(t.results[n][e]={}),t.results[n][e][a]=i}console.info(JSON.stringify(t))}else t&&console.info(xr(e));return K[`error-on-outdated`]?t?2:0:K[`error-on-unchanged`]?t?0:2:0}function X(e,t){r===`win32`&&v(e,0),y(e,t,r===`win32`?{flag:`r+`}:void 0)}const br=e=>ee(e).length;function xr(e){let t=Object.keys(e).filter(t=>Object.keys(e[t]).length>0),n=t.length>1,r=[n?[`NAME`,`MODE`,`OLD`,`NEW`,`AGE`,`INFO`]:[`NAME`,`OLD`,`NEW`,`AGE`,`INFO`]],i=new Set;for(let a of t)for(let[t,o]of Object.entries(e[a])){let[e,s]=t.split(`\0`),c=`${a}|${s}`;if(i.has(c))continue;i.add(c);let l=[];l.push(a===`go`?gn(s):s),n&&l.push(a),l.push(Ie(o.old,o.new,er)),l.push(Ie(o.new,o.old,q)),l.push(o.age||``),l.push(o.info||``),r.push(l)}return Ke(r,br)}function Sr(e,t){return RegExp(`^${I(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Cr(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Sr(e,n):e instanceof RegExp?e:Sr(e,n)}function Z(e){if(e instanceof Set){let t=new Set;for(let n of e)t.add(Cr(n,!0,!1));return t}return e}function Q(e,t){let n=new Set;for(let t of e||[])n.add(Cr(t,!0,!0));for(let e of t||[])n.add(Cr(e,!1,!0));return n}function wr(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>Ue(e)):[]}function Tr(e){return rr===!0||P(e,rr)?new Set([`patch`]):ir===!0||P(e,ir)?new Set([`patch`,`minor`]):new Set([`patch`,`minor`,`major`])}function Er(e){return{useGreatest:typeof J==`boolean`?J:P(e,J),usePre:typeof tr==`boolean`?tr:P(e,tr),useRel:typeof nr==`boolean`?nr:P(e,nr),semvers:Tr(e)}}function Dr(t){return t.replace(`${e()}/`,``).replace(`${e()}\\`,``)}function $(e,t,n,r,i){if(i===`engines`&&ze.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 Or(t){let n=new Set,r=new Set;if(t)for(let e of t){let t;try{t=m(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}if(t?.isFile()){let t=u(e);n.add(t),r.add(t)}else if(t?.isDirectory()){for(let t of Object.keys(Yn)){let r=l(e,t),i=null;try{i=m(r)}catch{}i?.isFile()&&n.add(u(r))}try{for(let t of g(e))if(Kn(t)){let i=l(e,t);try{m(i).isFile()&&(n.add(u(i)),r.add(u(i)))}catch{}}}catch{}let t=u(e).replace(/\\/g,`/`),i;i=t.endsWith(`.github/workflows`)?t:t.endsWith(`.github`)?l(t,`workflows`):l(t,`.github`,`workflows`);for(let e of Tn(i))n.add(e),r.add(e)}else throw Error(`${e} is neither a file nor directory`)}else{for(let t of Object.keys(Yn)){let r=mr(t,e());r&&n.add(u(r))}for(let t of Un){let r=mr(t,e());r&&n.add(u(r))}try{for(let t of g(e()))if(Kn(t)&&!Un.includes(t)){let r=l(e(),t);try{m(r).isFile()&&n.add(u(r))}catch{}}}catch{}let t=mr(l(`.github`,`workflows`),e());if(t)for(let e of Tn(t))n.add(e)}return[n,r]}async function kr(e){let t=[];for(let e of[`js`,`ts`,`mjs`,`mts`])t.push(`updates.config.${e}`);let n={};try{({default:n}=await Promise.any(t.map(async t=>{let n=l(e,...t.split(`/`)),r=d(n);try{f(n)}catch{throw Error(`File not found: ${t}`)}try{return await import(r.href)}catch(e){throw Error(`Unable to parse config file ${t}: ${e.message}`)}})))}catch(e){if(e instanceof AggregateError){let t=e.errors.filter(e=>e.message.startsWith(`Unable to parse`));if(t.length>0)throw t[0]}}return n}async function Ar(){for(let e of[a,i])e?._handle?.setBlocking?.(!0);Ye();let e=typeof K.sockets==`number`?K.sockets:96,{help:t,version:n,file:r,types:o,update:l,include:d,exclude:f,pin:p,cooldown:m}=K;t&&(a.write(`usage: updates [options] [files...]
|
|
2
|
+
import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,versions as o}from"node:process";import{basename as s,dirname as c,join as l,resolve as u}from"node:path";import{pathToFileURL as d}from"node:url";import{accessSync as f,globSync as p,lstatSync as m,readFileSync as h,readdirSync as g,statSync as _,truncateSync as v,writeFileSync as y}from"node:fs";import{parseArgs as b,promisify as x,stripVTControlCharacters as ee,styleText as te}from"node:util";import ne from"node:dns";import{execFile as S}from"node:child_process";async function re(e,t,{concurrency:n=1/0,stopOnError:r=!0,signal:i}={}){return new Promise((a,o)=>{if(e[Symbol.iterator]===void 0&&e[Symbol.asyncIterator]===void 0)throw TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof e})`);if(typeof t!=`function`)throw TypeError(`Mapper function is required`);if(!(Number.isSafeInteger(n)&&n>=1||n===1/0))throw TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${n}\` (${typeof n})`);let s=[],c=[],l=new Map,u=!1,d=!1,f=!1,p=0,m=0,h=e[Symbol.iterator]===void 0?e[Symbol.asyncIterator]():e[Symbol.iterator](),g=()=>{y(i.reason)},_=()=>{i?.removeEventListener(`abort`,g)},v=e=>{a(e),_()},y=e=>{u=!0,d=!0,o(e),_()};i&&(i.aborted&&y(i.reason),i.addEventListener(`abort`,g,{once:!0}));let b=async()=>{if(d)return;let e=await h.next(),n=m;if(m++,e.done){if(f=!0,p===0&&!d){if(!r&&c.length>0){y(AggregateError(c));return}if(d=!0,l.size===0){v(s);return}let e=[];for(let[t,n]of s.entries())l.get(t)!==ie&&e.push(n);v(e)}return}p++,(async()=>{try{let r=await e.value;if(d)return;let i=await t(r,n);i===ie&&l.set(n,i),s[n]=i,p--,await b()}catch(e){if(r)y(e);else{c.push(e),p--;try{await b()}catch(e){y(e)}}}})()};(async()=>{for(let e=0;e<n;e++){try{await b()}catch(e){y(e);break}if(f||u)break}})()})}const ie=Symbol(`skip`);function ae(e){let t={},n=t,r=e.split(/\r?\n/);for(let e=0;e<r.length;e++){let i=r[e].replace(/#.*$/,``).trim();if(!i)continue;let a=/^\[([^\]]+)\]$/.exec(i);if(a){n=t;for(let e of ce(a[1]))(!(e in n)||typeof n[e]!=`object`||Array.isArray(n[e]))&&(n[e]={}),n=n[e];continue}let o=le(i);if(o<0)continue;let s=i.slice(0,o).trim(),c=i.slice(o+1).trim(),l=ce(s),u=n;for(let e=0;e<l.length-1;e++)(!(l[e]in u)||typeof u[l[e]]!=`object`||Array.isArray(u[l[e]]))&&(u[l[e]]={}),u=u[l[e]];let d=l[l.length-1];if(c.startsWith(`[`)&&!c.includes(`]`)){let t=[];C(c.slice(1),t);for(let n=e+1;n<r.length;n++){let i=r[n].replace(/#.*$/,``).trim();if(i){if(i.includes(`]`)){C(i.replace(/].*$/,``),t),e=n;break}C(i,t)}}u[d]=t}else u[d]=w(c)}return t}function C(e,t){let n=e.trim();if(!n)return;let r=/"""([\s\S]*?)"""|'''([\s\S]*?)'''|"((?:[^"\\]|\\.)*)"|'([^']*)'|([^,\s\]]+)/g,i;for(;i=r.exec(n);){let e=i[1]??i[2]??(i[3]===void 0?void 0:E(i[3]))??i[4]??i[5];e!==void 0&&e!==``&&t.push(T(e))}}function w(e){if(e.startsWith(`[`)){let t=[];return C(e.slice(1,e.lastIndexOf(`]`)),t),t}return e.startsWith(`{`)?oe(e):e.startsWith(`"""`)?E(e.slice(3,e.lastIndexOf(`"""`))):e.startsWith(`'''`)?e.slice(3,e.lastIndexOf(`'''`)):e.startsWith(`"`)?E(e.slice(1,e.lastIndexOf(`"`))):e.startsWith(`'`)?e.slice(1,e.lastIndexOf(`'`)):T(e)}function T(e){return e===`true`?!0:e===`false`?!1:/^[+-]?\d+$/.test(e)||/^[+-]?\d+\.\d+$/.test(e)?Number(e):e}function oe(e){let t={},n=e.slice(1,e.lastIndexOf(`}`)).trim();if(!n)return t;for(let e of se(n)){let n=e.indexOf(`=`);if(n<0)continue;let r=e.slice(0,n).trim().replace(/^["']|["']$/g,``);t[r]=w(e.slice(n+1).trim())}return t}function se(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 ce(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 le(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 E(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`
|
|
3
|
+
`;case`r`:return`\r`;case`t`:return` `;case`u`:case`U`:return String.fromCodePoint(Number.parseInt(t.slice(1),16));default:return t}})}const D=/^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9._-]+(?:\.[a-zA-Z0-9._-]+)*))?(?:\+[a-zA-Z0-9._-]+)?$/,ue=new Map;function O(e){if(typeof e!=`string`)return null;let t=ue.get(e);if(t!==void 0)return t;let n=D.exec(e.trim());if(!n)return ue.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 ue.set(e,s),s}function k(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?1:0}function de(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function A(e,t){let n=de(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=k(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function j(e){return O(e)?.version??null}function fe(e){return O(e)}const pe=new Map,me=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function he(e){if(typeof e!=`string`)return null;let t=pe.get(e);if(t!==void 0)return t;let n=me.exec(e);if(!n)return pe.set(e,null),null;let r={version:`${n[1]||`0`}.${n[2]||`0`}.${n[3]||`0`}`};return pe.set(e,r),r}function M(e,t){let n=O(e),r=O(t);if(!n||!r||n.version===r.version)return null;let i=A(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(de(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 ge(e,t){let n=O(e),r=O(t);return!n||!r?!1:A(n,r)>0}function _e(e,t){let n=O(e),r=O(t);return!n||!r?!1:A(n,r)>=0}function ve(e,t){let n=O(e),r=O(t);return!n||!r?!1:A(n,r)<0}function ye(e,t){let n=O(e),r=O(t);return!n||!r?!0:A(n,r)!==0}function be(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=O(`${n}.${t[3]??`0`}.${t[4]??`0`}${t[5]||``}`);return r?{op:t[1]||`=`,semver:r}:null}function xe(e,t){let n=A(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 N(e,t,n){return`${e}.${t}.${n}-0`}function Se(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 <${N(a+1,0,0)}`;let o=Number(n);return`>=${a}.${o}.${r===void 0?0:Number(r)}${i||``} <${N(a,o+1,0)}`})}function Ce(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 <${N(a+1,0,0)}`;let s=Number(n);if(r===void 0)return a===0?`>=${a}.${s}.0 <${N(a,s+1,0)}`:`>=${a}.${s}.0 <${N(a+1,0,0)}`;let c=Number(r);return a===0?s===0?`>=${a}.${s}.${c}${o} <${N(a,s,c+1)}`:`>=${a}.${s}.${c}${o} <${N(a,s+1,0)}`:`>=${a}.${s}.${c}${o} <${N(a+1,0,0)}`})}function we(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?`<${N(p+1,0,0)}`:`<${N(p,Number(o)+1,0)}`:`<=${p}.${Number(o)}.${Number(s)}${c||``}`,`>=${l}.${u}.${d}${f} ${m}`})}function Te(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 <${N(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 <${N(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 <${N(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 <${N(o+1,0,0)}`}),e)}const Ee=new Map;function De(e){let t=Ee.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=we(t),t=Ce(t),t=Se(t),t=Te(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=be(t);if(!n)return Ee.set(e,null),null;i.push(n)}if(i.length===0)return Ee.set(e,null),null;r.push(i)}let i=r.length?r:null;return Ee.set(e,i),i}function Oe(e,t){for(let n of t)if(!xe(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 ke(e,t){let n=O(e);if(!n)return!1;let r=De(t);if(!r)return!1;for(let e of r)if(e.length===0||Oe(n,e))return!0;return!1}function Ae(e){if(typeof e!=`string`)return null;try{return De(e)?e:null}catch{return null}}const je=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],Me={"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`},Ne={sec:`second`,min:`minute`};function Pe(e){return e instanceof Date?e.getTime():typeof e==`string`?Date.parse(e):e}function P(e,{now:t,noAffix:n=!1,times:r=je,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=Me,longUnits:l=!1}={}){let u=Pe(e),d=t===void 0?Date.now():Pe(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&&Ne[t[2]]||t[2])+(m>1?`s`:``);break}}let g=`${m} ${h}`,_;return _=n?g:p?`in ${g}`:`${g} ago`,s?c[_]??_:_}function Fe(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&&!/\d/.test(e[t]);)t++;r=t}}let i=e.substring(r);return i?e.substring(0,r)+n(i):e}function Ie(e){let t=[];for(let n of e){let[e,r]=n.replaceAll(/\s+/g,``).split(/[<>=~]+/);e&&/^[0-9.a-z]+$/.test(r)&&t.push({name:e,version:r})}return t}const Le=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],Re=[`node`,`deno`,`bun`],ze=[`project.dependencies`,`project.optional-dependencies`,`dependency-groups.dev`,`dependency-groups.lint`,`dependency-groups.test`],Be=[`deps`,`indirect`,`replace`];function F(e,t){for(let n of t instanceof Set?t:[])if(n.test(e))return!0;return!1}function Ve(e,t){return t.split(`.`).reduce((e,t)=>e?.[t]??null,e)}function He(e){return e.split(`,`).filter(Boolean)}function Ue(e,t,n){return!e||!t?!0:(n-Date.parse(e))/(24*3600*1e3)>=t}function We(){let e=new Date;return[e.getFullYear(),`-`,String(e.getMonth()+1).padStart(2,`0`),`-`,String(e.getDate()).padStart(2,`0`),` `,String(e.getHours()).padStart(2,`0`),`:`,String(e.getMinutes()).padStart(2,`0`),`:`,String(e.getSeconds()).padStart(2,`0`)].join(``)}function Ge(e,t,n=` `){let r=``,i=Array(e[0].length).fill(0);for(let n of e)for(let[e,r]of n.entries()){let n=t(r);n>i[e]&&(i[e]=n)}for(let[a,o]of e.entries()){for(let[e,a]of o.entries()){e>0&&(r+=n);let s=` `.repeat(i[e]-t(a));r+=a+(e===o.length-1?``:s)}a<e.length-1&&(r+=`
|
|
4
|
+
`)}return r}const Ke={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function qe(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Ke[n.toLowerCase()];if(r)return Number(e)*r}let n=Number(e);if(!Number.isFinite(n))throw Error(`Invalid cooldown value: ${e}`);return n}function Je(){let e=new Map,t=new Map,n=ne.lookup;ne.lookup=function(r,...i){let a={},o;typeof i[0]==`function`?o=i[0]:(a=typeof i[0]==`number`?{family:i[0]}:i[0]||{},o=i[1]);let s=e.get(r);if(s){a.all?o(null,s):o(null,s[0].address,s[0].family);return}if(t.has(r)){t.get(r).push({options:a,callback:o});return}t.set(r,[{options:a,callback:o}]),n.call(ne,r,{all:!0},(n,i)=>{let a=t.get(r);t.delete(r),!n&&i?.length&&e.set(r,i);for(let{options:e,callback:t}of a)n?t(n):e.all?t(null,i):t(null,i[0].address,i[0].family)})}}const Ye=`17.8.3`,I=e=>e.replace(/^v/,``),L=e=>e.replace(/[|\\{}()[\]^$+*?.-]/g,`\\$&`),R=e=>e.endsWith(`/`)?e.substring(0,e.length-1):e;function Xe(e,t){return{headers:{"user-agent":`updates/${Ye}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function Ze(e,t,n,r,i,a,o){n&&r&&i&&r(`${i(`fetch`)} ${e}`);let s=await fetch(e,t);return n&&r&&a&&o&&r(`${s.ok?a(s.status):o(s.status)} ${e}`),s}function z(e){let t=fe(e);return t?!!t.prerelease.length:!1}function Qe(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}function $e(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=B(e),s=B(t);if(!o||!s)return!0;let c=Qe(e)||z(e),l=z(t);return c&&!l?ge(s,o)||n:!l&&ve(s,o)?r===!0||a(i,r):!0}function B(e){try{return he(e)?.version??``}catch{return``}}function et(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s}){let c=B(n);if(!c)return c;i=Qe(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 l=0,u=c;for(let n of t){let t=fe(n);if(!t?.version||t.prerelease.length&&(!i||a))continue;let c=t.version;if(s&&!ke(c,s))continue;let d=M(u,c);if(!(!d||!r.has(d)))if(o||!(`time`in e))_e(B(c),u)&&(u=c);else{let t=Date.parse(e.time[n]);t>=0&&t>l&&(u=c,l=t)}}return u||null}function tt(e,{mode:t,range:n,useGreatest:r,useRel:i,usePre:a,semvers:o,pinnedRange:s},{allowDowngrade:c,matchesAny:l,isGoPseudoVersion:u}){if(n===`*`||n.includes(`||`))return null;let d=[];if(t===`pypi`)d=Object.keys(e.releases).filter(e=>j(e));else if(t===`npm`)d=Object.keys(e.versions).filter(e=>j(e));else if(t===`go`){let t=B(n);if(!t)return null;let r=a||Qe(n),s=e=>z(e)&&(!r||i),d={useRel:i,allowDowngrade:c,name:e.name,matchesAny:l},f=e.old||n,p=B(e.new);if(p&&!u(e.new)&&!s(e.new)){let n=M(t,p);if(n&&o.has(n)&&$e(f,e.new,d))return e.new}let m=B(e.sameMajorNew);if(m&&!u(e.sameMajorNew)&&!s(e.sameMajorNew)){let n=M(t,m);if(n&&o.has(n)&&$e(f,e.sameMajorNew,d))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}return null}let f=et(e,d,{range:n,semvers:o,usePre:a,useRel:i,useGreatest:r,pinnedRange:s});if(!f)return null;if(r)return f;{let r=``,u=``;t===`pypi`?(u=e.info.version,r=B(e.info.version)):r=e[`dist-tags`].latest;let d=B(n),p=Qe(n),m=z(f),h=z(r),g={useRel:i,allowDowngrade:c,name:e.name,matchesAny:l};if(!i&&a||p&&m)return f;if(p&&!m)return $e(n,f,g)?f:null;let _=M(d,r);return _&&_!==`prerelease`&&!o.has(_.replace(/^pre/,``))||i&&z(r)?f:ve(r,d)&&!h?$e(n,r,g)?r:null:!p&&h&&!a||s&&!ke(r,s)?f:u||r}}const nt=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&nt.set(e.substring(0,t),e.substring(t+1))}function rt(e){try{let t=nt.get(new URL(e).hostname);if(t)return t}catch{}return t.UPDATES_GITHUB_API_TOKEN||t.GITHUB_API_TOKEN||t.GH_TOKEN||t.GITHUB_TOKEN||t.HOMEBREW_GITHUB_API_TOKEN}function it(e,t){let n={signal:AbortSignal.timeout(t.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}},r=rt(e);return r&&(n.headers={...n.headers,Authorization:`Bearer ${r}`}),t.doFetch(e,n)}function at(e,t,n){let r=I(t);if(!j(r))return null;if(n){let n=t,i=I(t);for(let t of e){let e=I(t);j(e)&&(!n||ge(e,i))&&(n=t,i=e)}if(ye(r,i))return n}else{let t=e.at(-1);if(!t)return null;let n=I(t);if(!j(n))return null;if(ye(r,n))return t}return null}function ot(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 st=/^[0-9a-f]{7,}$/i;function ct(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function lt(e,t,n,r){try{let i=await it(`${e}/repos/${t}/${n}/tags?per_page=100`,r);if(!i?.ok)return[];let a=ct(await i.json()),o=i.headers.get(`link`)||``,s=/<([^>]+)>;\s*rel="last"/.exec(o);if(s){let i=Number(new URL(s[1]).searchParams.get(`page`)),o=await Promise.all(Array.from({length:i-1},(i,a)=>it(`${e}/repos/${t}/${n}/tags?per_page=100&page=${a+2}`,r)));for(let e of o)e?.ok&&a.push(...ct(await e.json()))}return a}catch{return[]}}function ut(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 dt(e,t,n=``){let r=t.startsWith(`v`),i=I(e),a=I(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 ft(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function pt({repository:e,homepage:t,info:n},r,i){n&&(e=n.project_urls.repository||n.project_urls.Repository||n.project_urls.repo||n.project_urls.Repo||n.project_urls.source||n.project_urls.Source||n.project_urls[`source code`]||n.project_urls[`Source code`]||n.project_urls[`Source Code`]||n.project_urls.homepage||n.project_urls.Homepage||`https://pypi.org/project/${i}/`);let a=``;return r===`https://npm.pkg.github.com`?`https://github.com/${i.replace(/^@/,``)}`:(e&&(a=ot(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${ft(a)}/${e.directory}`)),a||t||``)}function mt(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 ht(e){try{return mt(h(e,`utf-8`))}catch{return}}function gt(t){let n=e();for(;;){let e=l(n,t);try{return _(e),e}catch{}let r=c(n);if(r===n)break;n=r}}function _t(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 vt(e,n={}){let i=r===`win32`,a=i?t.USERPROFILE:t.HOME,o=[{...n}],s=[];function c(e){if(!e||s.includes(e))return;let t=ht(e);t&&(o.push(t),s.push(e))}i||(c(l(`/etc`,e,`config`)),c(l(`/etc`,`${e}rc`))),a&&(c(l(a,`.config`,e,`config`)),c(l(a,`.config`,e)),c(l(a,`.${e}`,`config`)),c(l(a,`.${e}rc`))),c(gt(`.${e}rc`));let u=_t(`${e}_`);return u.config&&c(u.config),Object.assign({},...o,u,s.length?{configs:s,config:s[s.length-1]}:void 0)}const yt=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,bt=/^([^/]+)\/([^/#]+)?.*?\/([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,xt=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,St=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,Ct=`https://registry.npmjs.org`;let V=null;const wt=new Map;function Tt(){return V||vt(`npm`,{registry:Ct})}function Et(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function Dt(e,t){let n=t[`${e}:_authToken`]||t[`${e}/:_authToken`];if(n)return{token:Et(n),type:`Bearer`};let r=t[`${e}:username`]||t[`${e}/:username`],i=t[`${e}:_password`]||t[`${e}/:_password`];if(r&&i){let e=Buffer.from(Et(i),`base64`).toString(`utf8`);return{token:Buffer.from(`${r}:${e}`).toString(`base64`),type:`Basic`,username:r,password:e}}let a=t[`${e}:_auth`]||t[`${e}/:_auth`];if(a)return{token:Et(a),type:`Basic`}}function H(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=Dt(`//${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:Et(i),type:`Basic`}}function Ot(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function kt(e,t){V||=Tt();let n=e.startsWith(`@`)?(/@[a-z0-9][\w-.]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=wt.get(r);if(i)return i;let a;if(!e.startsWith(`@`))a={auth:H(t,V),registry:t};else{let e=R(Ot(n,V));if(e!==t)try{let n=H(e,V);a=n?.token?{auth:n,registry:e}:{auth:H(t,V),registry:t}}catch{a={auth:H(t,V),registry:t}}else a={auth:H(t,V),registry:t}}return wt.set(r,a),a}async function At(e,t,n,r,i){V||=Tt();let{auth:a,registry:o}=kt(e,R((typeof r.registry==`string`?r.registry:!1)||n.registry||V.registry||Ct)),c=`${o}/${(t===`resolutions`?s(e):e).replace(/\//g,`%2f`)}`,l=await i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...Xe(a?.type,a?.token)});if(l?.ok)return[await l.json(),t,o,e];ut(l,c,e,o)}function U(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function jt(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function Mt(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 Nt(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 n.doFetch(o,{signal:AbortSignal.timeout(n.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}});if(s?.ok){let r=await s.json(),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]}ut(s,o,e,`JSR`)}function Pt(e,t){let n=e;for(let[e,{old:r,oldOrig:i}]of Object.entries(t)){let[a,o]=e.split(`\0`),s=i||r;if(a===`packageManager`){let r=RegExp(`"${L(a)}": *"${o}@${L(s)}"`,`g`);n=n.replace(r,`"${a}": "${o}@${t[e].new}"`)}else{let r=RegExp(`"${L(o)}": *"${L(s)}"`,`g`);n=n.replace(r,`"${o}": "${t[e].new}"`)}}return n}function Ft(e,t,n){let r=e.replace(St,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 It(e){let t=e.match(xt);return t?.length===1?e.replace(xt,B(t[0])):e}async function Lt(e,t,n){try{let r=await it(`${n.forgeApiUrl}/repos/${e}/${t}/commits`,n);if(!r?.ok)return{hash:``,commit:{}};let{sha:i,commit:a}=(await r.json())[0];return{hash:i,commit:a}}catch{return{hash:``,commit:{}}}}async function Rt(e,t,n){return(await lt(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function zt(e,t,n,r){let i=t.old.replace(yt,``),[a,o,s,c]=bt.exec(i)||[];if(!o||!s||!c)return null;if(st.test(c)){let{hash:n,commit:i}=await Lt(o,s,r);if(!n)return null;let a=i?.committer?.date??i?.author?.date,l=n.substring(0,c.length);if(c!==l)return{key:e,newRange:t.old.replace(c,l),user:o,repo:s,oldRef:c,newRef:l,newDate:a}}else{let t=at(await Rt(o,s,r),c,n);if(t)return{key:e,newRange:t,user:o,repo:s,oldRef:c,newRef:t}}return null}async function Bt(e,t,n){let r=`${n.pypiApiUrl}/pypi/${e}/json`,i=await n.doFetch(r,{signal:AbortSignal.timeout(n.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}});if(i?.ok)return[await i.json(),t,null,e];ut(i,r,e,n.pypiApiUrl)}function Vt(e,t){let n=e;for(let[e,{old:r,oldOrig:i}]of Object.entries(t)){let[a,o]=e.split(`\0`),s=i||r;n=n.replace(RegExp(`("${L(o)} *[<>=~]+ *)${L(s)}(")`,`g`),(n,r,i)=>`${r}${t[e].new}${i}`)}return n}const Ht=x(S);function Ut(){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 e.endsWith(`/`)?e.substring(0,e.length-1):e}return`https://proxy.golang.org`}function Wt(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function Gt(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function Kt(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}function qt(e){let t=/\/v(\d+)$/.exec(e);return t?Number.parseInt(t[1]):1}function Jt(e,t){return t<=1?e.replace(/\/v\d+$/,``):`${e.replace(/\/v\d+$/,``)}/v${t}`}function Yt(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function Xt(e){return`${(e.length+4).toString(16).padStart(4,`0`)}${e}`}function Zt(e){let t=[Xt(`command=ls-refs
|
|
5
|
+
`),Xt(`object-format=sha1
|
|
6
|
+
`),`0001`,Xt(`peel
|
|
7
|
+
`),Xt(`ref-prefix refs/tags/${e}v\n`),`0000`];return new Blob([t.join(``)])}function Qt(e,t){let n=new TextDecoder().decode(e),r=[],i=`refs/tags/${t}`,a=0;for(;a<n.length&&!n.startsWith(`0000`,a);){let e=n.substring(a,a+4),t=Number.parseInt(e,16);if(t===0||Number.isNaN(t))break;let o=n.substring(a+4,a+t);a+=t;let s=o.indexOf(` `);if(s===-1)continue;let c=o.substring(s+1).trim();if(c.endsWith(`^{}`)||!c.startsWith(i))continue;let l=c.substring(i.length);l&&r.push(l)}return r}function $t(e,t){let n=t;for(let t of e){let e=/^v(\d+)\./.exec(t);if(e){let t=Number.parseInt(e[1]);t>n&&(n=t)}}return n}function en(e){let t=/^((github\.com|gitea\.com)\/[^/]+\/[^/]+)(\/.*)?$/.exec(e);if(t){let e=t[1],n=t[3]||``;return{repoUrl:`https://${e}.git`,tagPrefix:n?`${n.substring(1)}/`:``}}let n=/^golang\.org\/x\/([^/]+)(\/.*)?$/.exec(e);if(n){let e=n[2]||``;return{repoUrl:`https://go.googlesource.com/${n[1]}`,tagPrefix:e?`${e.substring(1)}/`:``}}return null}async function tn(e,t){let n=en(e);if(n)return n;try{let n=await t.doFetch(`https://${e}?go-get=1`,{signal:AbortSignal.timeout(t.goProbeTimeout)});if(!n.ok)return null;let r=await n.text(),i=/<meta\s+name="go-import"\s+content="([^"]+)"/.exec(r)||/<meta\s+content="([^"]+)"\s+name="go-import"/.exec(r);if(!i)return null;let[a,o,s]=i[1].trim().split(/\s+/);return o===`git`?{repoUrl:s,tagPrefix:e.length>a.length?`${e.substring(a.length+1)}/`:``}:null}catch{return null}}async function nn(e,t,n){try{let r=await tn(e.replace(/\/v\d+$/,``),n);if(!r)return null;let{repoUrl:i,tagPrefix:a}=r,o=Zt(a),s=await n.doFetch(`${i}/git-upload-pack`,{method:`POST`,headers:{"Git-Protocol":`version=2`,"Content-Type":`application/x-git-upload-pack-request`},body:o,signal:AbortSignal.timeout(n.goProbeTimeout)});return s.ok?$t(Qt(await s.arrayBuffer(),a),t):null}catch{return null}}function rn(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function an(e,t,n){if(!t)return null;let r=t,i=e+1,a=1,o=null;for(;o===null;){let t=i+a;if(t>e+100){o=e+101;break}let s=await n(t);s?(r=s,i=t,a*=2):o=t}for(;i+1<o;){let e=Math.floor((i+o)/2),t=await n(e);t?(r=t,i=e):o=e}return r}function on(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:I(o),Time:s,...c===e?{}:{newPath:c},sameMajorNew:I(i),sameMajorTime:a},t,null,e]}function sn(e){let t={},n={},r={},i=new Set,a=e.split(/\r?\n/),o=!1,s=!1;for(let e of a){let a=e.trim();if(/^require\s*\(/.test(a)){o=!0;continue}if(/^replace\s*\(/.test(a)){s=!0;continue}if(a===`)`){o=!1,s=!1;continue}let c=a.includes(`// indirect`);if(s||/^replace\s+/.test(a)){let e=s?/^(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(a):/^replace\s+(\S+)(?:\s+v\S+)?\s+=>\s+(\S+)\s+(v\S+)/.exec(a);if(e){let[,t,n,a]=e;!n.startsWith(`./`)&&!n.startsWith(`/`)&&!n.startsWith(`../`)&&(r[n]=a,i.add(t))}continue}let l=o?/^(\S+)\s+(v\S+)/.exec(a):/^require\s+(\S+)\s+(v\S+)/.exec(a);l&&((c?n:t)[l[1]]=l[2])}for(let e of i)delete t[e],delete n[e];return{deps:t,indirect:n,replace:r}}async function cn(e,n,r,i,a){let o=qt(e),s=async(e,n)=>{try{let{stdout:r}=await Ht(`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=n===`indirect`||e.startsWith(`golang.org/x/`),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(Jt(e,o+1),a.goProbeTimeout)]);return l?on(e,n,r,c?null:await an(o,u,t=>s(Jt(e,t),a.goProbeTimeout)),l.Version,l.Time):rn(e,r,n)}async function ln(e,t,n,r,i,a){if(Gt(e,a))return cn(e,t,n,r,i);let o=Kt(e),s=qt(e),c=async t=>{let n=Jt(e,t);return i.doFetch(`${i.goProxyUrl}/${Kt(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout)}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},l=t===`indirect`||e.startsWith(`golang.org/x/`),[u,d,f]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout)}),l?null:nn(e,s,i),l?null:c(s+1)]);if(!u.ok)return rn(e,n,t);let p,m;try{let e=await u.json();p=e.Version,m=e.Time}catch{return rn(e,n,t)}let h=null;return l||(d!==null&&d>s?(h=await c(d),h||=await an(s,f,c)):d===null&&f!==null&&(h=await an(s,f,c))),on(e,t,n,h,p,m)}function un(e,t){let n=L(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 dn(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+${L(s)}\\s+)v${L(c)}`,`g`),`$1v${l}`);continue}if(o===`indirect`){n=n.replace(RegExp(`(${L(s)}) +v${L(c)}`,`g`),`$1 v${l}`);continue}let u=qt(s),d=Number.parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=Jt(s,d);n=n.replace(RegExp(`${L(s)} +v${L(c)}`,`g`),`${e} v${l}`),r[s]=e}else n=n.replace(RegExp(`(${L(s)}) +v${L(c)}`,`g`),`$1 v${l}`);n=un(n,s)}return[n,r]}function fn(e,t,n){if(!Object.keys(t).length)return;let r=p(`**/*.go`,{cwd:e});for(let i of r){let r=l(e,i),a=h(r,`utf8`),o=!1;for(let[e,n]of Object.entries(t)){let t=RegExp(`"${L(e)}(/|")`,`g`),r=a.replace(t,`"${n}$1`);r!==a&&(a=r,o=!0)}o&&n(r,a)}}function pn(e){let t=`https://${mn(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[e,i,a,...o]=r;return n.pathname=`/${i}/${a}/${ft(t)}/${o.join(`/`)}`,n.toString()}else return t}function mn(e){return/\/v[0-9]$/.test(e)?c(e):e}function hn(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const gn=/^\s*-?\s*uses:\s*['"]?([^'"#\s]+)['"]?/gm;function _n(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:st.test(o)}}function vn(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function yn(e,t,n,r,i){try{let a=await it(`${e}/repos/${t}/${n}/git/commits/${r}`,i);if(!a?.ok)return``;let o=await a.json();return o?.committer?.date||o?.author?.date||``}catch{return``}}function bn(e,t){return dt(fe(I(e))?.version??I(e),t)}function xn(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?)${L(e)}@${L(r)}`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}function Sn(e){let t=e.replace(/\\/g,`/`);return/\.github\/workflows\/[^/]+\.(ya?ml)$/.test(t)}function Cn(e){try{return g(e).filter(e=>/\.(ya?ml)$/.test(e)).map(t=>u(l(e,t)))}catch{return[]}}const wn=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,Tn=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,En=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,Dn=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}]+)['"]?\s*$/gm,On=/^\s*-?\s*uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function kn(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 An(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||!wn.test(r)))return null;let{registry:i,namespace:a,repo:o}=kn(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function jn(e){let t=wn.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Mn(e,t){let n=jn(t);return n?dt(e,n.version,n.suffix):t}function Nn(e,t){let n=[];for(let r of e.matchAll(t)){let e=An(r[1]);e&&n.push({ref:e,match:r[1]})}return n}async function Pn(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=e=>{for(let t of e.results||[])r[t.name]=t.tag_last_pushed||t.last_updated||``},s=Array.from({length:10},(e,t)=>n.doFetch(a(t+1),{signal:AbortSignal.timeout(n.fetchTimeout)}).then(async e=>e?.ok?e.json():null).catch(()=>null)),c=await Promise.all(s),l=c[0];if(!l)return r;let u=Math.min(Math.ceil((l.count||0)/100),10);for(let e=0;e<u;e++)c[e]&&o(c[e]);return r}async function Fn(e,t,n){let{registry:r,namespace:i,repo:a}=kn(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await Pn(i,a,n),name:e},t,null,e]}function In(e,t,n){let r=jn(t);if(!r)return null;let i=he(I(r.version))?.version;if(!i)return null;let a=i,o=``,s=``;for(let[t,i]of Object.entries(e)){let e=jn(t);if(!e||e.suffix!==r.suffix)continue;let c=he(I(e.version))?.version;if(!c||!j(c))continue;let l=M(a,c);!l||!n.has(l)||_e(c,a)&&(a=c,o=t,s=i)}if(!o||a===i)return null;let c=Mn(a,t);return c===t?null:{newTag:c,date:s}}function Ln(e,t,n){let r=e;for(let[e,i]of Object.entries(t)){let[t,a]=e.split(`\0`),o=i.oldOrig||i.old;for(let e of n)r=r.replace(e(L(a),L(o)),`$1${a}:${i.new}`)}return r}function Rn(e,t){return Ln(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}`,`g`)])}function zn(e,t){return Ln(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}`,`g`)])}function Bn(e,t){return Ln(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}`,`g`)])}const Vn=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function Hn(e){return/^docker-.+\.ya?ml$/.test(e)}function Un(e){return/^Dockerfile(\..+)?$/.test(e)}function Wn(e){return Un(e)||Hn(e)}function Gn(e){return Un(e)?Tn:En}function Kn(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}const qn={"package.json":`npm`,"pyproject.toml":`pypi`,"go.mod":`go`},Jn={"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`},dockerapi:{type:`string`},greatest:{short:`g`,type:`string`,multiple:!0},help:{short:`h`,type:`boolean`},include:{short:`i`,type:`string`,multiple:!0},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-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 W(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.flatMap(e=>typeof e==`string`?He(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function Yn(e){for(let[t,{short:n}]of Object.entries(Jn))if(t===e||n===e)return t;return``}const G=b({strict:!1,allowPositionals:!0,tokens:!0,options:Jn}),K=G.values;for(let[e,t]of G.tokens.entries())if(t.kind===`option`&&t.value?.startsWith(`-`)){let n=Yn(t.value.substring(1)),r=G.tokens[e+1];K[t.name]=[!0],K[n]||(K[n]=[]),r?.kind===`positional`&&r.value?K[n].push(r.value):K[n].push(!0)}const q=G.values,Xn=G.positionals,[Zn,Qn,J]=[`magenta`,`red`,`green`].map(e=>q[`no-color`]?String:t=>te(e,String(t))),Y=Z(W(q.greatest)),$n=Z(W(q.prerelease)),er=Z(W(q.release)),tr=Z(W(q.patch)),nr=Z(W(q.minor)),rr=Z(W(q[`allow-downgrade`])),ir=W(q.modes)||new Set([`npm`,`pypi`,`go`,`actions`,`docker`]),ar=typeof q.forgeapi==`string`?R(q.forgeapi):`https://api.github.com`,or=typeof q.pypiapi==`string`?R(q.pypiapi):`https://pypi.org`,sr=typeof q.jsrapi==`string`?R(q.jsrapi):`https://jsr.io`,cr=typeof q.goproxy==`string`?R(q.goproxy):Ut(),lr=typeof q.dockerapi==`string`?R(q.dockerapi):`https://hub.docker.com`,ur=Wt();function dr(e){let t={};if(Array.isArray(e)){for(let n of e)if(typeof n==`string`){let[e,r]=n.split(`=`,2);e&&r&&Ae(r)&&(t[e]=r)}}else if(typeof e==`string`){let[n,r]=e.split(`=`,2);n&&r&&Ae(r)&&(t[n]=r)}return t}function fr(e,t){let n=l(t,e);try{return f(n),n}catch{}let r=c(t);return r===t?null:fr(e,r)}function pr(e){console.error(`${We()} ${e}`)}const mr=typeof q.timeout==`string`?Number(q.timeout):0,X={fetchTimeout:mr||5e3,goProbeTimeout:mr?mr/2:2500,forgeApiUrl:ar,pypiApiUrl:or,jsrApiUrl:sr,goProxyUrl:cr,dockerApiUrl:lr,doFetch:(e,t)=>Ze(e,t,!!q.verbose,pr,Zn,J,Qn),verbose:!!q.verbose};async function hr(e){console.info(q.json?JSON.stringify({message:e}):e),await gr()}async function gr(e,t){if(e){let t=e.stack??e.message,n=e.cause;q.json?console.info(JSON.stringify({error:t,cause:n})):(console.info(Qn(t)),n&&console.info(Qn(`Caused by: ${String(n)}`)))}r===`win32`&&Number(o?.node?.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),n(t||e?1:0)}function _r(e={}){for(let t of Object.keys(e))for(let n of Object.values(e[t]))typeof n.oldPrint==`string`&&(n.old=n.oldPrint),typeof n.newPrint==`string`&&(n.new=n.newPrint),typeof n.oldOrig==`string`&&!U(n.oldOrig)&&(n.old=t===`go`?hn(n.oldOrig):n.oldOrig),t===`go`&&(n.new=hn(n.new)),t===`actions`&&(n.old=I(n.old),n.new=I(n.new)),delete n.oldPrint,delete n.newPrint,delete n.oldOrig,delete n.date;let t=0;for(let n of Object.keys(e))t+=Object.keys(e[n]).length;if(q.json){let t={results:{}};for(let n of Object.keys(e))for(let[r,i]of Object.entries(e[n])){let[e,a]=r.split(`\0`);t.results[n]||(t.results[n]={}),t.results[n][e]||(t.results[n][e]={}),t.results[n][e][a]=i}console.info(JSON.stringify(t))}else t&&console.info(br(e));return q[`error-on-outdated`]?t?2:0:q[`error-on-unchanged`]?t?0:2:0}function vr(e,t){r===`win32`&&v(e,0),y(e,t,r===`win32`?{flag:`r+`}:void 0)}const yr=e=>ee(e).length;function br(e){let t=Object.keys(e).filter(t=>Object.keys(e[t]).length>0),n=t.length>1,r=[n?[`NAME`,`MODE`,`OLD`,`NEW`,`AGE`,`INFO`]:[`NAME`,`OLD`,`NEW`,`AGE`,`INFO`]],i=new Set;for(let a of t)for(let[t,o]of Object.entries(e[a])){let[e,s]=t.split(`\0`),c=`${a}|${s}`;if(i.has(c))continue;i.add(c);let l=[];l.push(a===`go`?mn(s):s),n&&l.push(a),l.push(Fe(o.old,o.new,Qn)),l.push(Fe(o.new,o.old,J)),l.push(o.age||``),l.push(o.info||``),r.push(l)}return Ge(r,yr)}function xr(e,t){return RegExp(`^${L(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Sr(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):xr(e,n):e instanceof RegExp?e:xr(e,n)}function Z(e){if(e instanceof Set){let t=new Set;for(let n of e)t.add(Sr(n,!0,!1));return t}return e}function Q(e,t){let n=new Set;for(let t of e||[])n.add(Sr(t,!0,!0));for(let e of t||[])n.add(Sr(e,!1,!0));return n}function Cr(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>He(e)):[]}function wr(e){return tr===!0||F(e,tr)?new Set([`patch`]):nr===!0||F(e,nr)?new Set([`patch`,`minor`]):new Set([`patch`,`minor`,`major`])}function Tr(e){return{useGreatest:typeof Y==`boolean`?Y:F(e,Y),usePre:typeof $n==`boolean`?$n:F(e,$n),useRel:typeof er==`boolean`?er:F(e,er),semvers:wr(e)}}function Er(t){return t.replace(`${e()}/`,``).replace(`${e()}\\`,``)}function $(e,t,n,r,i){if(i===`engines`&&Re.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 Dr(t){let n=new Set,r=new Set;if(t)for(let e of t){let t;try{t=m(e)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}if(t?.isFile()){let t=u(e);n.add(t),r.add(t)}else if(t?.isDirectory()){for(let t of Object.keys(qn)){let r=l(e,t),i=null;try{i=m(r)}catch{}i?.isFile()&&n.add(u(r))}try{for(let t of g(e))if(Wn(t)){let i=l(e,t);try{m(i).isFile()&&(n.add(u(i)),r.add(u(i)))}catch{}}}catch{}let t=u(e).replace(/\\/g,`/`),i;i=t.endsWith(`.github/workflows`)?t:t.endsWith(`.github`)?l(t,`workflows`):l(t,`.github`,`workflows`);for(let e of Cn(i))n.add(e),r.add(e)}else throw Error(`${e} is neither a file nor directory`)}else{for(let t of Object.keys(qn)){let r=fr(t,e());r&&n.add(u(r))}for(let t of Vn){let r=fr(t,e());r&&n.add(u(r))}try{for(let t of g(e()))if(Wn(t)&&!Vn.includes(t)){let r=l(e(),t);try{m(r).isFile()&&n.add(u(r))}catch{}}}catch{}let t=fr(l(`.github`,`workflows`),e());if(t)for(let e of Cn(t))n.add(e)}return[n,r]}async function Or(e){let t=[];for(let e of[`js`,`ts`,`mjs`,`mts`])t.push(`updates.config.${e}`);let n={};try{({default:n}=await Promise.any(t.map(async t=>{let n=l(e,...t.split(`/`)),r=d(n);try{f(n)}catch{throw Error(`File not found: ${t}`)}try{return await import(r.href)}catch(e){throw Error(`Unable to parse config file ${t}: ${e.message}`)}})))}catch(e){if(e instanceof AggregateError){let t=e.errors.filter(e=>e.message.startsWith(`Unable to parse`));if(t.length>0)throw t[0]}}return n}async function kr(){for(let e of[a,i])e?._handle?.setBlocking?.(!0);Je();let e=typeof q.sockets==`number`?q.sockets:96,{help:t,version:n,file:r,types:o,update:l,include:d,exclude:f,pin:p,cooldown:m}=q;t&&(a.write(`usage: updates [options] [files...]
|
|
8
8
|
|
|
9
9
|
Options:
|
|
10
10
|
-u, --update Update versions and write dependency file
|
|
@@ -24,7 +24,7 @@ import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,version
|
|
|
24
24
|
-U, --error-on-unchanged Exit with code 0 when updates are available and 2 when not
|
|
25
25
|
-r, --registry <url> Override npm registry URL
|
|
26
26
|
-S, --sockets <num> Maximum number of parallel HTTP sockets opened. Default: 96
|
|
27
|
-
-T, --timeout <ms> Network request timeout in ms (go probes use half). Default:
|
|
27
|
+
-T, --timeout <ms> Network request timeout in ms (go probes use half). Default: 5000
|
|
28
28
|
-M, --modes <mode,...> Which modes to enable. Default: npm,pypi,go,actions,docker
|
|
29
29
|
-j, --json Output a JSON object
|
|
30
30
|
-n, --no-color Disable color output
|
|
@@ -44,4 +44,4 @@ import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,version
|
|
|
44
44
|
$ updates -f .github
|
|
45
45
|
$ updates -f Dockerfile
|
|
46
46
|
$ updates -f docker-compose.yml
|
|
47
|
-
`),await
|
|
47
|
+
`),await gr()),n&&(console.info(Ye),await gr());let g={},_={},v={},y={},b=Date.now(),x=0,ee=W(r),te=ee instanceof Set?ee:Xn.length?new Set:!1;if(te instanceof Set)for(let e of Xn)te.add(e);let[ne,S]=Dr(te),ie={},C={},w=Cr(d),T=Cr(f),oe=dr(p),se=[],ce=[],le={};function E(e,t,n){g.docker||={};let r=Q(w,[]),i=Q(T,[]);for(let a of n)for(let{ref:n}of Nn(e,a)){if(!$(n.fullImage,`docker`,r,i,`docker`))continue;let e=`${t}${n.fullImage}`;if(g.docker[e])continue;let a=jn(n.tag);a&&(g.docker[e]={old:a.version,oldOrig:n.tag},ce.push({key:e,fullImage:n.fullImage,ref:n}))}}for(let e of ne){if(Sn(e)){let t=ir.has(`actions`)||S.has(e),n=ir.has(`docker`)||S.has(e);if(!t&&!n)continue;let r;try{r=h(e,`utf8`)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}let i=Er(e);if(ie[i]={absPath:e,content:r},t){g.actions||={};let e=Q(w,[]),t=Q(T,[]),n=Array.from(r.matchAll(gn),e=>_n(e[1])).filter(e=>e!==null);for(let r of n){if(!$(r.name,`actions`,e,t,`actions`))continue;let n=`${i}${r.name}`;g.actions[n]||(g.actions[n]={old:r.ref},se.push({...r,key:n,apiUrl:vn(r.host,ar)}))}}n&&(C[i]={absPath:e,content:r,fileType:`workflow`},E(r,i,[En,Dn,On]));continue}let t=s(e);if(Wn(t)){if(!ir.has(`docker`)&&!S.has(e))continue;let n;try{n=h(e,`utf8`)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}let r=Er(e),i=Un(t)?`dockerfile`:`compose`;C[r]={absPath:e,content:n,fileType:i},E(n,r,[Gn(t)]);continue}let n=qn[t];if(!ir.has(n)&&!S.has(e))continue;y[n]=e,g[n]||(g[n]={});let r=c(u(e)),i=await Or(r),a=Q(w,i?.include??[]),l=Q(T,i?.exclude??[]),d={...i?.pin,...oe},f=[];Array.isArray(o)?f=o.filter(e=>typeof e==`string`):`types`in i&&Array.isArray(i.types)?f=i.types:n===`npm`?f=Le:n===`pypi`?f=Array.from(ze):n===`go`&&(f=Array.from(Be));let p={};try{v[n]=h(e,`utf8`)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}try{if(n===`npm`)p=JSON.parse(v[n]);else if(n===`pypi`)p=ae(v[n]);else{let e=sn(v[n]);p.deps=e.deps,p.indirect=e.indirect,p.replace=e.replace}}catch(t){throw Error(`Error parsing ${e}: ${t.message}`)}for(let e of f){let t;if(t=n===`npm`||n===`go`?p[e]||{}:Ve(p,e)||{},Array.isArray(t)&&n===`pypi`)for(let{name:r,version:i}of Ie(t))$(r,n,a,l,e)&&(g[n][`${e}${r}`]={old:It(i),oldOrig:i});else if(typeof t==`string`){let[r,i]=t.split(`@`);$(r,n,a,l,e)&&(g[n][`${e}${r}`]={old:It(i),oldOrig:i})}else for(let[r,i]of Object.entries(t))if(n===`npm`&&U(i)&&$(r,n,a,l,e)){let t=Mt(i,r);g[n][`${e}${r}`]={old:t.version,oldOrig:i}}else n!==`go`&&Ae(i)&&$(r,n,a,l,e)?g[n][`${e}${r}`]={old:It(i),oldOrig:i}:n===`npm`&&jt(i)&&$(r,n,a,l,e)?g[n][`${e}${r}`]={old:`0.0.0`,oldOrig:i}:n===`npm`&&!U(i)&&$(r,n,a,l,e)?_[`${e}${r}`]={old:i}:n===`go`&&$(r,n,a,l,e)&&(g[n][`${e}${r}`]={old:hn(i),oldOrig:I(i)})}x+=Object.keys(g[n]).length+Object.keys(_).length,le[n]={config:i,projectDir:r,pin:d}}if(g.actions&&(x+=Object.keys(g.actions).length),g.docker&&(x+=Object.keys(g.docker).length),x===0)return hr(`No dependencies found, nothing to do.`);let D=[];for(let t of Object.keys(le)){if(!g[t]||!Object.keys(g[t]).length&&!Object.keys(_).length)continue;let{config:n,projectDir:r,pin:i}=le[t];D.push((async()=>{let a=(await re(Object.keys(g[t]),async e=>{let[i,a]=e.split(`\0`);if(t===`npm`){let{oldOrig:r}=g[t][e];if(r&&U(r))return Nt(a,i,X);if(r&&jt(r))try{return await At(a,i,n,q,X)}catch{return delete g[t][e],null}return At(a,i,n,q,X)}else if(t===`go`)return ln(a,i,g[t][e].oldOrig||g[t][e].old,r,X,ur);else return Bt(a,i,X)},{concurrency:e})).filter(Boolean);for(let[e,n,r,o]of a){if(e?.error)throw Error(e.error);let{useGreatest:a,usePre:s,useRel:c,semvers:l}=Tr(e.name),u=`${n}${o}`,d=g[t][u].old,f=g[t][u].oldOrig,p=i[o],m=tt(e,{usePre:s,useRel:c,useGreatest:a,semvers:l,range:d,mode:t,pinnedRange:p},{allowDowngrade:rr,matchesAny:F,isGoPseudoVersion:Yt}),h=``;if([`go`,`pypi`].includes(t)&&m)h=m;else if(m)if(f&&jt(f))h=String(Tt()[`save-exact`])===`true`?m:`^${m}`;else if(f&&U(f))if(f.startsWith(`npm:@jsr/`)){let e=/^(npm:@jsr\/[^@]+@)(.+)$/.exec(f);e&&(h=`${e[1]}${m}`)}else if(f.startsWith(`jsr:@`)){let e=/^(jsr:@[^@]+@)(.+)$/.exec(f);e&&(h=`${e[1]}${m}`)}else f.startsWith(`jsr:`)&&(h=`jsr:${m}`);else h=Ft(d,m,f);if(!m||m===d||f&&f===h){delete g[t][u];continue}let _=``;if(t===`npm`&&e.time?.[m]?_=e.time[m]:t===`pypi`&&e.releases?.[m]?.[0]?.upload_time_iso_8601?_=e.releases[m][0].upload_time_iso_8601:t===`go`&&e.Time&&(_=e.Time),g[t][u].new=h,f&&U(f)&&(g[t][u].newPrint=m),t===`npm`)g[t][u].info=pt(e?.versions?.[m],r,e.name);else if(t===`pypi`)g[t][u].info=pt(e,r,e.info.name);else if(t===`go`){let n=e.newPath||o;g[t][u].info=pn(n)}_&&(g[t][u].date=_,g[t][u].age=P(_,{noAffix:!0}))}if(Object.keys(_).length){let n=(await re(Object.entries(_),([e,t])=>{let n=e.split(`\0`)[1];return zt(e,t,typeof Y==`boolean`?Y:F(n,Y),X)},{concurrency:e})).filter(e=>e!==null);for(let e of n){let{key:n,newRange:r,user:i,repo:a,oldRef:o,newRef:s,newDate:c}=e;g[t][n]={old:_[n].old,new:r,oldPrint:st.test(o)?o.substring(0,7):o,newPrint:st.test(s)?s.substring(0,7):s,info:`https://github.com/${i}/${a}`,...c?{age:P(c,{noAffix:!0})}:{}}}}let o=m??n.cooldown;if(o)for(let[e,{date:n}]of Object.entries(g[t]))Ue(n,qe(String(o)),b)||delete g[t][e]})())}se.length&&D.push((async()=>{let t=new Map;for(let e of se){let n=`${e.apiUrl}/${e.owner}/${e.repo}`;t.has(n)||t.set(n,{apiUrl:e.apiUrl,owner:e.owner,repo:e.repo,infos:[]}),t.get(n).infos.push(e)}if(await re(t.values(),async({apiUrl:e,owner:t,repo:n,infos:r})=>{let i=await lt(e,t,n,X),a=i.map(e=>e.name),o=a.map(e=>I(e)).filter(e=>j(e)),s=new Map;for(let e of i)e.commitSha&&s.set(e.commitSha,e.name);let c=new Map;async function l(r){if(c.has(r))return c.get(r);let i=await yn(e,t,n,r,X);return c.set(r,i),i}for(let e of r){let r=g.actions[e.key],c=`https://${e.host||`github.com`}/${t}/${n}`;if(e.isHash){let{usePre:t,useRel:n}=Tr(e.name),u=et({},o,{range:`0.0.0`,semvers:new Set([`patch`,`minor`,`major`]),usePre:t,useRel:n,useGreatest:!0,pinnedRange:oe[e.name]});if(!u){delete g.actions[e.key];continue}let d=a.find(e=>I(e)===u);if(!d){delete g.actions[e.key];continue}let f=i.find(e=>e.name===d)?.commitSha;if(!f||f===e.ref||f.startsWith(e.ref)||e.ref.startsWith(f)){delete g.actions[e.key];continue}let p=s.get(e.ref)||Array.from(s.entries()).find(([t])=>t.startsWith(e.ref))?.[1];r.old=e.ref,r.new=f.substring(0,e.ref.length),r.oldPrint=p||e.ref.substring(0,7),r.newPrint=d,r.info=c;let m=await l(f);m&&(r.date=m,r.age=P(m,{noAffix:!0}))}else{let t=B(I(e.ref));if(!t){delete g.actions[e.key];continue}let{useGreatest:n,usePre:s,useRel:u,semvers:d}=Tr(e.name),f=et({},o,{range:t,semvers:d,usePre:s,useRel:u,useGreatest:n||!0,pinnedRange:oe[e.name]});if(!f||f===t){delete g.actions[e.key];continue}let p=a.find(e=>I(e)===f);if(!p){delete g.actions[e.key];continue}let m=bn(p,e.ref);if(m===e.ref){delete g.actions[e.key];continue}r.new=m,r.info=c;let h=i.find(e=>e.name===p);if(h?.commitSha){let e=await l(h.commitSha);e&&(r.date=e,r.age=P(e,{noAffix:!0}))}}}},{concurrency:e}),m)for(let[e,{date:t}]of Object.entries(g.actions))Ue(t,qe(String(m)),b)||delete g.actions[e];Object.keys(g.actions).length||delete g.actions})()),ce.length&&D.push((async()=>{let t=new Map;for(let e of ce)t.has(e.fullImage)||t.set(e.fullImage,[]),t.get(e.fullImage).push(e);if(await re(t.entries(),async([e,t])=>{let n;try{let[t]=await Fn(e,`docker`,X);n=t}catch{for(let e of t)delete g.docker[e.key];return}for(let e of t){let t=g.docker[e.key],r=t.oldOrig||t.old,{semvers:i}=Tr(e.fullImage),a=In(n.tags,r,i);if(!a){delete g.docker[e.key];continue}t.new=a.newTag,t.info=Kn(e.ref),a.date&&(t.date=a.date,t.age=P(a.date,{noAffix:!0}))}},{concurrency:e}),m)for(let[e,{date:t}]of Object.entries(g.docker))Ue(t,qe(String(m)),b)||delete g.docker[e];Object.keys(g.docker).length||delete g.docker})()),await Promise.all(D);let ue=0;for(let e of Object.keys(g))ue+=Object.keys(g[e]).length;if(!ue)return hr(`All dependencies are up to date.`);let O=new Map;if(g.actions)for(let[e,t]of Object.entries(g.actions)){let[n,r]=e.split(`\0`);O.has(n)||O.set(n,[]),O.get(n).push({name:r,oldRef:t.old,newRef:t.new})}let k=new Map;if(g.docker)for(let[e,t]of Object.entries(g.docker)){let[n]=e.split(`\0`);k.has(n)||k.set(n,{}),k.get(n)[e]=t}let de=_r(g);if(l){for(let e of Object.keys(g))if(Object.keys(g[e]).length){if(e===`actions`){for(let[e,t]of O){let{absPath:n,content:r}=ie[e]||{};if(n){try{vr(n,xn(r,t))}catch(e){throw Error(`Error writing ${s(n)}: ${e.message}`)}console.info(J(`✨ ${e} updated`))}}continue}if(e===`docker`){for(let[e,t]of k){let n=C[e];if(!n)continue;let{absPath:r,fileType:i}=n,a;try{a=h(r,`utf8`)}catch{continue}try{vr(r,(i===`dockerfile`?Rn:i===`compose`?zn:Bn)(a,t))}catch(e){throw Error(`Error writing ${s(r)}: ${e.message}`)}console.info(J(`✨ ${e} updated`))}continue}try{let t=v[e];if(e===`go`){let[n,r]=dn(t,g[e]);vr(y[e],n),fn(c(u(y[e])),r,vr)}else{let n=e===`npm`?Pt:Vt;vr(y[e],n(t,g[e]))}}catch(t){throw Error(`Error writing ${s(y[e])}: ${t.message}`)}console.info(J(`✨ ${s(y[e])} updated`))}}await gr(void 0,de)}try{await kr()}catch(e){await gr(e)}export{};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "updates",
|
|
3
|
-
"version": "17.8.
|
|
3
|
+
"version": "17.8.3",
|
|
4
4
|
"description": "Dependency update tool for npm, uv, golang and actions",
|
|
5
5
|
"author": "silverwind",
|
|
6
6
|
"repository": "silverwind/updates",
|
|
@@ -16,18 +16,18 @@
|
|
|
16
16
|
"node": ">=22"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@types/node": "25.3.
|
|
20
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
19
|
+
"@types/node": "25.3.5",
|
|
20
|
+
"@typescript/native-preview": "7.0.0-dev.20260306.1",
|
|
21
21
|
"eslint": "9.39.3",
|
|
22
|
-
"eslint-config-silverwind": "
|
|
22
|
+
"eslint-config-silverwind": "122.0.6",
|
|
23
23
|
"p-map": "7.0.4",
|
|
24
24
|
"timerel": "5.8.6",
|
|
25
|
-
"tsdown": "0.
|
|
26
|
-
"tsdown-config-silverwind": "
|
|
25
|
+
"tsdown": "0.21.0",
|
|
26
|
+
"tsdown-config-silverwind": "2.0.0",
|
|
27
27
|
"typescript": "5.9.3",
|
|
28
28
|
"typescript-config-silverwind": "15.0.0",
|
|
29
29
|
"updates-config-silverwind": "1.0.3",
|
|
30
|
-
"versions": "14.2.
|
|
30
|
+
"versions": "14.2.1",
|
|
31
31
|
"vitest": "4.0.18",
|
|
32
32
|
"vitest-config-silverwind": "10.6.3"
|
|
33
33
|
}
|