updates 17.5.11 → 17.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -44,7 +44,7 @@ npx updates -u && npm i
44
44
  |`-r, --registry <url>`|Override npm registry URL|
45
45
  |`-S, --sockets <num>`|Maximum number of parallel HTTP sockets opened. Default: 96|
46
46
  |`-T, --timeout <ms>`|Network request timeout in ms (go probes use half). Default: 5000|
47
- |`-M, --modes <mode,...>`|Which modes to enable. Either `npm`, `pypi`, `go`, `act`. Default: `npm,pypi,go,act`|
47
+ |`-M, --modes <mode,...>`|Which modes to enable. Either `npm`, `pypi`, `go`, `actions`. Default: `npm,pypi,go,actions`|
48
48
  |`-j, --json`|Output a JSON object|
49
49
  |`-n, --no-color`|Disable color output|
50
50
  |`-v, --version`|Print the version|
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
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 S,styleText as C}from"node:util";import ee from"node:dns";import{execFile as te}from"node:child_process";var ne=Object.defineProperty,w=(e,t)=>()=>(e&&(t=e(e=0)),t),re=(e,t)=>{let n={};for(var r in e)ne(n,r,{get:e[r],enumerable:!0});return t||ne(n,Symbol.toStringTag,{value:`Module`}),n};async function ie(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)!==T&&e.push(n);v(e)}return}p++,(async()=>{try{let r=await e.value;if(d)return;let i=await t(r,n);i===T&&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 T=Symbol(`skip`),ae=/^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9._-]+(?:\.[a-zA-Z0-9._-]+)*))?(?:\+[a-zA-Z0-9._-]+)?$/,E=new Map;function D(e){if(typeof e!=`string`)return null;let t=E.get(e);if(t!==void 0)return t;let n=ae.exec(e.trim());if(!n)return E.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 E.set(e,s),s}function oe(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 se(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function O(e,t){let n=se(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=oe(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function k(e){return D(e)?.version??null}function ce(e){return D(e)}const le=new Map,ue=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function de(e){if(typeof e!=`string`)return null;let t=le.get(e);if(t!==void 0)return t;let n=ue.exec(e);if(!n)return le.set(e,null),null;let r={version:`${n[1]||`0`}.${n[2]||`0`}.${n[3]||`0`}`};return le.set(e,r),r}function fe(e,t){let n=D(e),r=D(t);if(!n||!r||n.version===r.version)return null;let i=O(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(se(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=D(e),r=D(t);return!n||!r?!1:O(n,r)>0}function me(e,t){let n=D(e),r=D(t);return!n||!r?!1:O(n,r)>=0}function he(e,t){let n=D(e),r=D(t);return!n||!r?!1:O(n,r)<0}function ge(e,t){let n=D(e),r=D(t);return!n||!r?!0:O(n,r)!==0}function _e(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=D(`${n}.${t[3]??`0`}.${t[4]??`0`}${t[5]||``}`);return r?{op:t[1]||`=`,semver:r}:null}function ve(e,t){let n=O(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 A(e,t,n){return`${e}.${t}.${n}-0`}function ye(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 <${A(a+1,0,0)}`;let o=Number(n);return`>=${a}.${o}.${r===void 0?0:Number(r)}${i||``} <${A(a,o+1,0)}`})}function be(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 <${A(a+1,0,0)}`;let s=Number(n);if(r===void 0)return a===0?`>=${a}.${s}.0 <${A(a,s+1,0)}`:`>=${a}.${s}.0 <${A(a+1,0,0)}`;let c=Number(r);return a===0?s===0?`>=${a}.${s}.${c}${o} <${A(a,s,c+1)}`:`>=${a}.${s}.${c}${o} <${A(a,s+1,0)}`:`>=${a}.${s}.${c}${o} <${A(a+1,0,0)}`})}function xe(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?`<${A(p+1,0,0)}`:`<${A(p,Number(o)+1,0)}`:`<=${p}.${Number(o)}.${Number(s)}${c||``}`,`>=${l}.${u}.${d}${f} ${m}`})}function Se(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 <${A(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 <${A(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 <${A(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 <${A(o+1,0,0)}`}),e)}const Ce=new Map;function we(e){let t=Ce.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=xe(t),t=be(t),t=ye(t),t=Se(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=_e(t);if(!n)return Ce.set(e,null),null;i.push(n)}if(i.length===0)return Ce.set(e,null),null;r.push(i)}let i=r.length?r:null;return Ce.set(e,i),i}function Te(e,t){for(let n of t)if(!ve(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 Ee(e,t){let n=D(e);if(!n)return!1;let r=we(t);if(!r)return!1;for(let e of r)if(e.length===0||Te(n,e))return!0;return!1}function De(e){if(typeof e!=`string`)return null;try{return we(e)?e:null}catch{return null}}const Oe=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],ke={"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`},Ae={sec:`second`,min:`minute`};function je(e){return e instanceof Date?e.getTime():typeof e==`string`?Date.parse(e):e}function Me(e,{now:t,noAffix:n=!1,times:r=Oe,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=ke,longUnits:l=!1}={}){let u=je(e);if(t=t===void 0?Date.now():je(t),Number.isNaN(u))return o||String(e);let d=!1,f=t-u;if(f<0&&(d=!0,f=Math.abs(f)),f<i)return a;let p=0,m=``;for(let e=0,t=r.length;e<t;e++){let t=r[e];if(!(f>=t[1])){p=Math.floor(f/t[0]),m=(l&&Ae[t[2]]||t[2])+(p>1?`s`:``);break}}let h=`${d&&!n?`in `:``}${p} ${m}${!d&&!n?` ago`:``}`;return s?c[h]??h:h}function Ne(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 Pe(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 Fe=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],Ie=[`node`,`deno`,`bun`],Le=[`tool.poetry.dependencies`,`tool.poetry.dev-dependencies`,`tool.poetry.test-dependencies`,`tool.poetry.group.dev.dependencies`,`tool.poetry.group.test.dependencies`],Re=[`project.dependencies`,`project.optional-dependencies`,`dependency-groups.dev`,`dependency-groups.lint`,`dependency-groups.test`],ze=[`deps`,`replace`];function Be(){let e=new Map,t=new Map,n=ee.lookup;ee.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(ee,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 Ve=`17.5.11`,He=5e3,j=e=>e.replace(/^v/,``),M=e=>e.replace(/[|\\{}()[\]^$+*?.-]/g,`\\$&`),N=e=>e.endsWith(`/`)?e.substring(0,e.length-1):e;function Ue(e,t){return{headers:{"user-agent":`updates/${Ve}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function We(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 Ge(e){let t=ce(e);return t?!!t.prerelease.length:!1}function Ke(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}function P(e){try{return de(e)?.version??``}catch{return``}}function qe(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s}){let c=P(n);if(!c)return c;i=Ke(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=ce(n);if(!t?.version||t.prerelease.length&&(!i||a))continue;let c=t.version;if(s&&!Ee(c,s))continue;let d=fe(u,c);if(!(!d||!r.has(d)))if(o||!(`time`in e))me(P(c),u)&&(u=c);else{let t=Date.parse(e.time[n]);t>=0&&t>l&&(u=c,l=t)}}return u||null}function Je(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=>k(e));else if(t===`npm`)d=Object.keys(e.versions).filter(e=>k(e));else if(t===`go`){let t=P(n);if(!t)return null;let r=a||Ke(n),s=e=>Ge(e)&&(!r||i),c=P(e.new);if(c&&!u(e.new)&&!s(e.new)){let n=fe(t,c);if(n&&o.has(n))return e.new}let l=P(e.sameMajorNew);if(l&&!u(e.sameMajorNew)&&!s(e.sameMajorNew)){let n=fe(t,l);if(n&&o.has(n))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}return null}let f=qe(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=P(e.info.version)):r=e[`dist-tags`].latest;let d=P(n),p=Ke(n),m=Ge(f),h=Ge(r),g=pe(f,d);if(!i&&a||p&&m||i&&!g&&p&&!m||p&&!m&&g)return f;if(p&&!m&&!g)return null;let _=fe(d,r);return _&&_!==`prerelease`&&!o.has(_.replace(/^pre/,``))||i&&Ge(r)?f:he(r,d)&&!h?c===!0||l(e.name,c)?r:null:!p&&h&&!a||s&&!Ee(r,s)?f:u||r}}const Ye=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&Ye.set(e.substring(0,t),e.substring(t+1))}function Xe(e){try{let t=Ye.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 F(e,t){let n={signal:AbortSignal.timeout(t.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}},r=Xe(e);return r&&(n.headers={...n.headers,Authorization:`Bearer ${r}`}),t.doFetch(e,n)}function Ze(e,t,n){let r=j(t);if(!k(r))return null;if(n){let n=t,i=j(t);for(let t of e){let e=j(t);k(e)&&(!n||pe(e,i))&&(n=t,i=e)}if(ge(r,i))return n}else{let t=e.at(-1);if(!t)return null;let n=j(t);if(!k(n))return null;if(ge(r,n))return t}return null}function Qe(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}function $e(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function et({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=Qe(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${$e(a)}/${e.directory}`)),a||t||``)}function tt(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 nt(e){try{return tt(h(e,`utf-8`))}catch{return}}function rt(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 it(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 at(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=nt(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(rt(`.${e}rc`));let u=it(`${e}_`);return u.config&&c(u.config),Object.assign({},...o,u,s.length?{configs:s,config:s[s.length-1]}:void 0)}const ot=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,st=/^([^/]+)\/([^/#]+)?.*?\/([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,ct=/^[0-9a-f]{7,}$/i,lt=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,ut=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,dt=`https://registry.npmjs.org`;let I=null;const ft=new Map;function pt(){return I||at(`npm`,{registry:dt})}function mt(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function ht(e,t){let n=t[`${e}:_authToken`]||t[`${e}/:_authToken`];if(n)return{token:mt(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(mt(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:mt(a),type:`Basic`}}function L(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=ht(`//${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:mt(i),type:`Basic`}}function gt(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function _t(e,t){I||=pt();let n=e.startsWith(`@`)?(/@[a-z0-9][\w-.]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=ft.get(r);if(i)return i;let a;if(!e.startsWith(`@`))a={auth:L(t,I),registry:t};else{let e=N(gt(n,I));if(e!==t)try{let n=L(e,I);a=n?.token?{auth:n,registry:e}:{auth:L(t,I),registry:t}}catch{a={auth:L(t,I),registry:t}}else a={auth:L(t,I),registry:t}}return ft.set(r,a),a}async function vt(e,t,n,r,i){I||=pt();let{auth:a,registry:o}=_t(e,N((typeof r.registry==`string`?r.registry:!1)||n.registry||I.registry||dt)),c=`${o}/${(t===`resolutions`?s(e):e).replace(/\//g,`%2f`)}`,l=await i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...Ue(a?.type,a?.token)});if(l?.ok)return[await l.json(),t,o,e];throw l?.status&&l?.statusText?Error(`Received ${l.status} ${l.statusText} from ${c}`):Error(`Unable to fetch ${e} from ${o}`)}function R(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function yt(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 bt(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]}else if(s?.status&&s?.statusText)throw Error(`Received ${s.status} ${s.statusText} from ${o}`);else throw Error(`Unable to fetch ${e} from JSR`)}function xt(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(`"${M(a)}": *"${o}@${M(s)}"`,`g`);n=n.replace(r,`"${a}": "${o}@${t[e].new}"`)}else{let r=RegExp(`"${M(o)}": *"${M(s)}"`,`g`);n=n.replace(r,`"${o}": "${t[e].new}"`)}}return n}function St(e,t,n){let r=e.replace(ut,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 Ct(e){let t=e.match(lt);return t?.length===1?e.replace(lt,P(t[0])):e}async function wt(e,t,n){try{let r=await F(`${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 Tt(e,t,n){return(await Dt(n.forgeApiUrl,e,t,n)).map(e=>e.name)}function Et(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function Dt(e,t,n,r){try{let i=await F(`${e}/repos/${t}/${n}/tags?per_page=100`,r);if(!i?.ok)return[];let a=Et(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)=>F(`${e}/repos/${t}/${n}/tags?per_page=100&page=${a+2}`,r)));for(let e of o)e?.ok&&a.push(...Et(await e.json()))}return a}catch{return[]}}async function Ot(e,t,n,r){let i=t.old.replace(ot,``),[a,o,s,c]=st.exec(i)||[];if(!o||!s||!c)return null;if(ct.test(c)){let{hash:n,commit:i}=await wt(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=Ze(await Tt(o,s,r),c,n);if(t)return{key:e,newRange:t,user:o,repo:s,oldRef:c,newRef:t}}return null}async function kt(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];throw i?.status&&i?.statusText?Error(`Received ${i.status} ${i.statusText} from ${r}`):Error(`Unable to fetch ${e} from ${n.pypiApiUrl}`)}function At(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(`${M(o)} *= *"${M(s)}"`,`g`),`${o} = "${t[e].new}"`),n=n.replace(RegExp(`("${M(o)} *[<>=~]+ *)${M(s)}(")`,`g`),(n,r,i)=>`${r}${t[e].new}${i}`)}return n}const jt=x(te);function Mt(){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 Nt(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function Pt(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function Ft(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}function It(e){let t=/\/v(\d+)$/.exec(e);return t?parseInt(t[1]):1}function z(e,t){return t<=1?e.replace(/\/v\d+$/,``):`${e.replace(/\/v\d+$/,``)}/v${t}`}function Lt(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function Rt(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 zt(e,n,r,i,a){let o=[{name:e,old:r,new:r},n,null,e],s=It(e),c=async(e,n)=>{try{let{stdout:r}=await jt(`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}},[l,u]=await Promise.all([c(e,a.fetchTimeout),c(z(e,s+1),a.goProbeTimeout)]);if(!l)return o;let d=l.Version,f=l.Time,p=d,m=f,h=e,g=e=>{p=e.Version,m=e.Time,h=e.path};if(u){g(u);let t=await c(z(e,s+2),a.goProbeTimeout);if(t){g(t);for(let t=s+3;t<=s+100;t+=20){let n=Math.min(t+20,s+101),r=Array.from({length:n-t},(n,r)=>c(z(e,t+r),a.goProbeTimeout)),i=await Promise.all(r),o=!1;for(let e of i){if(!e)break;g(e),o=!0}if(!o||i.some(e=>!e))break}}}return[{name:e,old:r,new:j(p),Time:m,...h===e?{}:{newPath:h},sameMajorNew:j(d),sameMajorTime:f},n,null,e]}async function Bt(e,t,n,r,i,a){let o=[{name:e,old:n,new:n},t,null,e];if(Pt(e,a))return zt(e,t,n,r,i);let s=Ft(e),c=It(e),l=async t=>{let n=z(e,t);return i.doFetch(`${i.goProxyUrl}/${Ft(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout)}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},[u,d]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${s}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout)}),l(c+1)]);if(!u.ok)return o;let f,p;try{let e=await u.json();f=e.Version,p=e.Time}catch{return o}let m=f,h=p,g=e,_=e=>{m=e.Version,h=e.Time,g=e.path};if(d){_(d);let e=await l(c+2);if(e){_(e);for(let e=c+3;e<=c+100;e+=20){let t=Math.min(e+20,c+101),n=Array.from({length:t-e},(t,n)=>({result:l(e+n)})),r=await Promise.all(n.map(e=>e.result)),i=!1;for(let e of r){if(!e)break;_(e),i=!0}if(!i||r.some(e=>!e))break}}}return[{name:e,old:n,new:j(m),Time:h,...g===e?{}:{newPath:g},sameMajorNew:j(f),sameMajorTime:p},t,null,e]}function Vt(e,t){let n=M(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 Ht(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+${M(s)}\\s+)v${M(c)}`,`g`),`$1v${l}`);continue}let u=It(s),d=parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=z(s,d);n=n.replace(RegExp(`${M(s)} +v${M(c)}`,`g`),`${e} v${l}`),r[s]=e}else n=n.replace(RegExp(`(${M(s)}) +v${M(c)}`,`g`),`$1 v${l}`);n=Vt(n,s)}return[n,r]}function Ut(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(`"${M(e)}(/|")`,`g`),r=a.replace(t,`"${n}$1`);r!==a&&(a=r,o=!0)}o&&n(r,a)}}function Wt(e){let t=`https://${Gt(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[e,i,a,...o]=r;return n.pathname=`/${i}/${a}/${$e(t)}/${o.join(`/`)}`,n.toString()}else return t}function Gt(e){return/\/v[0-9]$/.test(e)?c(e):e}function Kt(e){return e.replace(/-.*/,``)}const qt=/^\s*-?\s*uses:\s*['"]?([^'"#\s]+)['"]?/gm,Jt=/^[0-9a-f]{7,}$/i;function Yt(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:Jt.test(o)}}function Xt(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}function Zt(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function Qt(e,t,n,r){try{let i=await F(`${e}/repos/${t}/${n}/tags?per_page=100`,r);if(!i?.ok)return[];let a=Zt(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)=>F(`${e}/repos/${t}/${n}/tags?per_page=100&page=${a+2}`,r)));for(let e of o)e?.ok&&a.push(...Zt(await e.json()))}return a}catch{return[]}}async function $t(e,t,n,r,i){try{let a=await F(`${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 en(e,t){let n=t.startsWith(`v`),r=ce(j(e)),i=j(t).split(`.`).length,a;return a=r?i===1?String(r.major):i===2?`${r.major}.${r.minor}`:r.version:j(e),n?`v${a}`:a}function tn(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?)${M(e)}@${M(r)}`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}function nn(e){let t=e.replace(/\\/g,`/`);return/\.github\/workflows\/[^/]+\.(ya?ml)$/.test(t)}function rn(e){try{return g(e).filter(e=>/\.(ya?ml)$/.test(e)).map(t=>u(l(e,t)))}catch{return[]}}function an(e,t){let n=e.slice(0,t).split(/\r\n|\n|\r/g);return[n.length,n.pop().length+1]}function on(e,t,n){let r=e.split(/\r\n|\n|\r/g),i=``,a=(Math.log10(t+1)|0)+1;for(let e=t-1;e<=t+1;e++){let o=r[e-1];o&&(i+=e.toString().padEnd(a,` `),i+=`: `,i+=o,i+=`
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 S,styleText as C}from"node:util";import ee from"node:dns";import{execFile as te}from"node:child_process";var ne=Object.defineProperty,w=(e,t)=>()=>(e&&(t=e(e=0)),t),re=(e,t)=>{let n={};for(var r in e)ne(n,r,{get:e[r],enumerable:!0});return t||ne(n,Symbol.toStringTag,{value:`Module`}),n};async function ie(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)!==T&&e.push(n);v(e)}return}p++,(async()=>{try{let r=await e.value;if(d)return;let i=await t(r,n);i===T&&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 T=Symbol(`skip`),ae=/^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9._-]+(?:\.[a-zA-Z0-9._-]+)*))?(?:\+[a-zA-Z0-9._-]+)?$/,E=new Map;function D(e){if(typeof e!=`string`)return null;let t=E.get(e);if(t!==void 0)return t;let n=ae.exec(e.trim());if(!n)return E.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 E.set(e,s),s}function oe(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 se(e,t){return e.major-t.major||e.minor-t.minor||e.patch-t.patch}function O(e,t){let n=se(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=oe(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function k(e){return D(e)?.version??null}function ce(e){return D(e)}const le=new Map,ue=/(?:^|[^.\d])(\d+)(?:\.(\d+))?(?:\.(\d+))?/;function de(e){if(typeof e!=`string`)return null;let t=le.get(e);if(t!==void 0)return t;let n=ue.exec(e);if(!n)return le.set(e,null),null;let r={version:`${n[1]||`0`}.${n[2]||`0`}.${n[3]||`0`}`};return le.set(e,r),r}function fe(e,t){let n=D(e),r=D(t);if(!n||!r||n.version===r.version)return null;let i=O(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(se(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=D(e),r=D(t);return!n||!r?!1:O(n,r)>0}function me(e,t){let n=D(e),r=D(t);return!n||!r?!1:O(n,r)>=0}function he(e,t){let n=D(e),r=D(t);return!n||!r?!1:O(n,r)<0}function ge(e,t){let n=D(e),r=D(t);return!n||!r?!0:O(n,r)!==0}function _e(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=D(`${n}.${t[3]??`0`}.${t[4]??`0`}${t[5]||``}`);return r?{op:t[1]||`=`,semver:r}:null}function ve(e,t){let n=O(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 A(e,t,n){return`${e}.${t}.${n}-0`}function ye(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 <${A(a+1,0,0)}`;let o=Number(n);return`>=${a}.${o}.${r===void 0?0:Number(r)}${i||``} <${A(a,o+1,0)}`})}function be(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 <${A(a+1,0,0)}`;let s=Number(n);if(r===void 0)return a===0?`>=${a}.${s}.0 <${A(a,s+1,0)}`:`>=${a}.${s}.0 <${A(a+1,0,0)}`;let c=Number(r);return a===0?s===0?`>=${a}.${s}.${c}${o} <${A(a,s,c+1)}`:`>=${a}.${s}.${c}${o} <${A(a,s+1,0)}`:`>=${a}.${s}.${c}${o} <${A(a+1,0,0)}`})}function xe(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?`<${A(p+1,0,0)}`:`<${A(p,Number(o)+1,0)}`:`<=${p}.${Number(o)}.${Number(s)}${c||``}`,`>=${l}.${u}.${d}${f} ${m}`})}function Se(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 <${A(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 <${A(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 <${A(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 <${A(o+1,0,0)}`}),e)}const Ce=new Map;function we(e){let t=Ce.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=xe(t),t=be(t),t=ye(t),t=Se(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=_e(t);if(!n)return Ce.set(e,null),null;i.push(n)}if(i.length===0)return Ce.set(e,null),null;r.push(i)}let i=r.length?r:null;return Ce.set(e,i),i}function Te(e,t){for(let n of t)if(!ve(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 Ee(e,t){let n=D(e);if(!n)return!1;let r=we(t);if(!r)return!1;for(let e of r)if(e.length===0||Te(n,e))return!0;return!1}function De(e){if(typeof e!=`string`)return null;try{return we(e)?e:null}catch{return null}}const Oe=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],ke={"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`},Ae={sec:`second`,min:`minute`};function je(e){return e instanceof Date?e.getTime():typeof e==`string`?Date.parse(e):e}function Me(e,{now:t,noAffix:n=!1,times:r=Oe,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=ke,longUnits:l=!1}={}){let u=je(e);if(t=t===void 0?Date.now():je(t),Number.isNaN(u))return o||String(e);let d=!1,f=t-u;if(f<0&&(d=!0,f=Math.abs(f)),f<i)return a;let p=0,m=``;for(let e=0,t=r.length;e<t;e++){let t=r[e];if(!(f>=t[1])){p=Math.floor(f/t[0]),m=(l&&Ae[t[2]]||t[2])+(p>1?`s`:``);break}}let h=`${d&&!n?`in `:``}${p} ${m}${!d&&!n?` ago`:``}`;return s?c[h]??h:h}function Ne(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 Pe(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 Fe=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],Ie=[`node`,`deno`,`bun`],Le=[`tool.poetry.dependencies`,`tool.poetry.dev-dependencies`,`tool.poetry.test-dependencies`,`tool.poetry.group.dev.dependencies`,`tool.poetry.group.test.dependencies`],Re=[`project.dependencies`,`project.optional-dependencies`,`dependency-groups.dev`,`dependency-groups.lint`,`dependency-groups.test`],ze=[`deps`,`replace`];function Be(){let e=new Map,t=new Map,n=ee.lookup;ee.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(ee,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 Ve=`17.6.0`,He=5e3,j=e=>e.replace(/^v/,``),M=e=>e.replace(/[|\\{}()[\]^$+*?.-]/g,`\\$&`),N=e=>e.endsWith(`/`)?e.substring(0,e.length-1):e;function Ue(e,t){return{headers:{"user-agent":`updates/${Ve}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function We(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 Ge(e){let t=ce(e);return t?!!t.prerelease.length:!1}function Ke(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}function P(e){try{return de(e)?.version??``}catch{return``}}function qe(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s}){let c=P(n);if(!c)return c;i=Ke(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=ce(n);if(!t?.version||t.prerelease.length&&(!i||a))continue;let c=t.version;if(s&&!Ee(c,s))continue;let d=fe(u,c);if(!(!d||!r.has(d)))if(o||!(`time`in e))me(P(c),u)&&(u=c);else{let t=Date.parse(e.time[n]);t>=0&&t>l&&(u=c,l=t)}}return u||null}function Je(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=>k(e));else if(t===`npm`)d=Object.keys(e.versions).filter(e=>k(e));else if(t===`go`){let t=P(n);if(!t)return null;let r=a||Ke(n),s=e=>Ge(e)&&(!r||i),c=P(e.new);if(c&&!u(e.new)&&!s(e.new)){let n=fe(t,c);if(n&&o.has(n))return e.new}let l=P(e.sameMajorNew);if(l&&!u(e.sameMajorNew)&&!s(e.sameMajorNew)){let n=fe(t,l);if(n&&o.has(n))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}return null}let f=qe(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=P(e.info.version)):r=e[`dist-tags`].latest;let d=P(n),p=Ke(n),m=Ge(f),h=Ge(r),g=pe(f,d);if(!i&&a||p&&m||i&&!g&&p&&!m||p&&!m&&g)return f;if(p&&!m&&!g)return null;let _=fe(d,r);return _&&_!==`prerelease`&&!o.has(_.replace(/^pre/,``))||i&&Ge(r)?f:he(r,d)&&!h?c===!0||l(e.name,c)?r:null:!p&&h&&!a||s&&!Ee(r,s)?f:u||r}}const Ye=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&Ye.set(e.substring(0,t),e.substring(t+1))}function Xe(e){try{let t=Ye.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 F(e,t){let n={signal:AbortSignal.timeout(t.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}},r=Xe(e);return r&&(n.headers={...n.headers,Authorization:`Bearer ${r}`}),t.doFetch(e,n)}function Ze(e,t,n){let r=j(t);if(!k(r))return null;if(n){let n=t,i=j(t);for(let t of e){let e=j(t);k(e)&&(!n||pe(e,i))&&(n=t,i=e)}if(ge(r,i))return n}else{let t=e.at(-1);if(!t)return null;let n=j(t);if(!k(n))return null;if(ge(r,n))return t}return null}function Qe(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}function $e(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function et({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=Qe(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${$e(a)}/${e.directory}`)),a||t||``)}function tt(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 nt(e){try{return tt(h(e,`utf-8`))}catch{return}}function rt(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 it(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 at(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=nt(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(rt(`.${e}rc`));let u=it(`${e}_`);return u.config&&c(u.config),Object.assign({},...o,u,s.length?{configs:s,config:s[s.length-1]}:void 0)}const ot=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,st=/^([^/]+)\/([^/#]+)?.*?\/([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,ct=/^[0-9a-f]{7,}$/i,lt=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,ut=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,dt=`https://registry.npmjs.org`;let I=null;const ft=new Map;function pt(){return I||at(`npm`,{registry:dt})}function mt(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function ht(e,t){let n=t[`${e}:_authToken`]||t[`${e}/:_authToken`];if(n)return{token:mt(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(mt(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:mt(a),type:`Basic`}}function L(e,t){let n=new URL(e.startsWith(`//`)?`http:${e}`:e),r;for(;r!==`/`&&n.pathname!==r;){r=n.pathname||`/`;let e=ht(`//${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:mt(i),type:`Basic`}}function gt(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function _t(e,t){I||=pt();let n=e.startsWith(`@`)?(/@[a-z0-9][\w-.]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=ft.get(r);if(i)return i;let a;if(!e.startsWith(`@`))a={auth:L(t,I),registry:t};else{let e=N(gt(n,I));if(e!==t)try{let n=L(e,I);a=n?.token?{auth:n,registry:e}:{auth:L(t,I),registry:t}}catch{a={auth:L(t,I),registry:t}}else a={auth:L(t,I),registry:t}}return ft.set(r,a),a}async function vt(e,t,n,r,i){I||=pt();let{auth:a,registry:o}=_t(e,N((typeof r.registry==`string`?r.registry:!1)||n.registry||I.registry||dt)),c=`${o}/${(t===`resolutions`?s(e):e).replace(/\//g,`%2f`)}`,l=await i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...Ue(a?.type,a?.token)});if(l?.ok)return[await l.json(),t,o,e];throw l?.status&&l?.statusText?Error(`Received ${l.status} ${l.statusText} from ${c}`):Error(`Unable to fetch ${e} from ${o}`)}function R(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function yt(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 bt(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]}else if(s?.status&&s?.statusText)throw Error(`Received ${s.status} ${s.statusText} from ${o}`);else throw Error(`Unable to fetch ${e} from JSR`)}function xt(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(`"${M(a)}": *"${o}@${M(s)}"`,`g`);n=n.replace(r,`"${a}": "${o}@${t[e].new}"`)}else{let r=RegExp(`"${M(o)}": *"${M(s)}"`,`g`);n=n.replace(r,`"${o}": "${t[e].new}"`)}}return n}function St(e,t,n){let r=e.replace(ut,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 Ct(e){let t=e.match(lt);return t?.length===1?e.replace(lt,P(t[0])):e}async function wt(e,t,n){try{let r=await F(`${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 Tt(e,t,n){return(await Dt(n.forgeApiUrl,e,t,n)).map(e=>e.name)}function Et(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function Dt(e,t,n,r){try{let i=await F(`${e}/repos/${t}/${n}/tags?per_page=100`,r);if(!i?.ok)return[];let a=Et(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)=>F(`${e}/repos/${t}/${n}/tags?per_page=100&page=${a+2}`,r)));for(let e of o)e?.ok&&a.push(...Et(await e.json()))}return a}catch{return[]}}async function Ot(e,t,n,r){let i=t.old.replace(ot,``),[a,o,s,c]=st.exec(i)||[];if(!o||!s||!c)return null;if(ct.test(c)){let{hash:n,commit:i}=await wt(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=Ze(await Tt(o,s,r),c,n);if(t)return{key:e,newRange:t,user:o,repo:s,oldRef:c,newRef:t}}return null}async function kt(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];throw i?.status&&i?.statusText?Error(`Received ${i.status} ${i.statusText} from ${r}`):Error(`Unable to fetch ${e} from ${n.pypiApiUrl}`)}function At(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(`${M(o)} *= *"${M(s)}"`,`g`),`${o} = "${t[e].new}"`),n=n.replace(RegExp(`("${M(o)} *[<>=~]+ *)${M(s)}(")`,`g`),(n,r,i)=>`${r}${t[e].new}${i}`)}return n}const jt=x(te);function Mt(){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 Nt(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function Pt(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function Ft(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}function It(e){let t=/\/v(\d+)$/.exec(e);return t?parseInt(t[1]):1}function z(e,t){return t<=1?e.replace(/\/v\d+$/,``):`${e.replace(/\/v\d+$/,``)}/v${t}`}function Lt(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function Rt(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 zt(e,n,r,i,a){let o=[{name:e,old:r,new:r},n,null,e],s=It(e),c=async(e,n)=>{try{let{stdout:r}=await jt(`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}},[l,u]=await Promise.all([c(e,a.fetchTimeout),c(z(e,s+1),a.goProbeTimeout)]);if(!l)return o;let d=l.Version,f=l.Time,p=d,m=f,h=e,g=e=>{p=e.Version,m=e.Time,h=e.path};if(u){g(u);let t=await c(z(e,s+2),a.goProbeTimeout);if(t){g(t);for(let t=s+3;t<=s+100;t+=20){let n=Math.min(t+20,s+101),r=Array.from({length:n-t},(n,r)=>c(z(e,t+r),a.goProbeTimeout)),i=await Promise.all(r),o=!1;for(let e of i){if(!e)break;g(e),o=!0}if(!o||i.some(e=>!e))break}}}return[{name:e,old:r,new:j(p),Time:m,...h===e?{}:{newPath:h},sameMajorNew:j(d),sameMajorTime:f},n,null,e]}async function Bt(e,t,n,r,i,a){let o=[{name:e,old:n,new:n},t,null,e];if(Pt(e,a))return zt(e,t,n,r,i);let s=Ft(e),c=It(e),l=async t=>{let n=z(e,t);return i.doFetch(`${i.goProxyUrl}/${Ft(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout)}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},[u,d]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${s}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout)}),l(c+1)]);if(!u.ok)return o;let f,p;try{let e=await u.json();f=e.Version,p=e.Time}catch{return o}let m=f,h=p,g=e,_=e=>{m=e.Version,h=e.Time,g=e.path};if(d){_(d);let e=await l(c+2);if(e){_(e);for(let e=c+3;e<=c+100;e+=20){let t=Math.min(e+20,c+101),n=Array.from({length:t-e},(t,n)=>({result:l(e+n)})),r=await Promise.all(n.map(e=>e.result)),i=!1;for(let e of r){if(!e)break;_(e),i=!0}if(!i||r.some(e=>!e))break}}}return[{name:e,old:n,new:j(m),Time:h,...g===e?{}:{newPath:g},sameMajorNew:j(f),sameMajorTime:p},t,null,e]}function Vt(e,t){let n=M(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 Ht(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+${M(s)}\\s+)v${M(c)}`,`g`),`$1v${l}`);continue}let u=It(s),d=parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=z(s,d);n=n.replace(RegExp(`${M(s)} +v${M(c)}`,`g`),`${e} v${l}`),r[s]=e}else n=n.replace(RegExp(`(${M(s)}) +v${M(c)}`,`g`),`$1 v${l}`);n=Vt(n,s)}return[n,r]}function Ut(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(`"${M(e)}(/|")`,`g`),r=a.replace(t,`"${n}$1`);r!==a&&(a=r,o=!0)}o&&n(r,a)}}function Wt(e){let t=`https://${Gt(e)}`,n=new URL(t),r=n.pathname.split(`/`);if(r.length>3){let[e,i,a,...o]=r;return n.pathname=`/${i}/${a}/${$e(t)}/${o.join(`/`)}`,n.toString()}else return t}function Gt(e){return/\/v[0-9]$/.test(e)?c(e):e}function Kt(e){return e.replace(/-.*/,``)}const qt=/^\s*-?\s*uses:\s*['"]?([^'"#\s]+)['"]?/gm,Jt=/^[0-9a-f]{7,}$/i;function Yt(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:Jt.test(o)}}function Xt(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}function Zt(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function Qt(e,t,n,r){try{let i=await F(`${e}/repos/${t}/${n}/tags?per_page=100`,r);if(!i?.ok)return[];let a=Zt(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)=>F(`${e}/repos/${t}/${n}/tags?per_page=100&page=${a+2}`,r)));for(let e of o)e?.ok&&a.push(...Zt(await e.json()))}return a}catch{return[]}}async function $t(e,t,n,r,i){try{let a=await F(`${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 en(e,t){let n=t.startsWith(`v`),r=ce(j(e)),i=j(t).split(`.`).length,a;return a=r?i===1?String(r.major):i===2?`${r.major}.${r.minor}`:r.version:j(e),n?`v${a}`:a}function tn(e,t){let n=e;for(let{name:e,oldRef:r,newRef:i}of t){let t=RegExp(`(uses:\\s*['"]?)${M(e)}@${M(r)}`,`g`);n=n.replace(t,`$1${e}@${i}`)}return n}function nn(e){let t=e.replace(/\\/g,`/`);return/\.github\/workflows\/[^/]+\.(ya?ml)$/.test(t)}function rn(e){try{return g(e).filter(e=>/\.(ya?ml)$/.test(e)).map(t=>u(l(e,t)))}catch{return[]}}function an(e,t){let n=e.slice(0,t).split(/\r\n|\n|\r/g);return[n.length,n.pop().length+1]}function on(e,t,n){let r=e.split(/\r\n|\n|\r/g),i=``,a=(Math.log10(t+1)|0)+1;for(let e=t-1;e<=t+1;e++){let o=r[e-1];o&&(i+=e.toString().padEnd(a,` `),i+=`: `,i+=o,i+=`
3
3
  `,e===t&&(i+=` `.repeat(a+n+2),i+=`^
4
4
  `))}return i}var B,V=w((()=>{B=class extends Error{line;column;codeblock;constructor(e,t){let[n,r]=an(t.toml,t.ptr),i=on(t.toml,n,r);super(`Invalid TOML document: ${e}\n\n${i}`,t),this.line=n,this.column=r,this.codeblock=i}}}));function sn(e,t){let n=0;for(;e[t-++n]===`\\`;);return--n&&n%2}function cn(e,t=0,n=e.length){let r=e.indexOf(`
5
5
  `,t);return e[r-1]===`\r`&&r--,r<=n?r:-1}function ln(e,t){for(let n=t;n<e.length;n++){let r=e[n];if(r===`
@@ -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
  `)+Vn(e,t[c],e,r-1,i)}else a+=s,a+=` = `,a+=Ln(t[c],e,r,i),a+=`
25
25
  `}}return e&&(a||!o)&&(a=a?`[${e}]\n${a}`:`[${e}]`),a&&o?`${a}\n${o}`:a||o}function Hn(e,{maxDepth:t=1e3,numbersAsFloat:n=!1}={}){if(U(e)!==`object`)throw TypeError(`stringify can only be called with an object`);let r=Vn(0,e,``,t,n);return r[r.length-1]===`
26
26
  `?r:r+`
27
- `}var Un,Wn=w((()=>{Un=/^[a-z0-9-_]+$/i})),Gn=re({TomlDate:()=>mn,TomlError:()=>B,default:()=>Kn,parse:()=>Nn,stringify:()=>Hn}),Kn,qn=w((()=>{Pn(),Wn(),hn(),V(),Kn={parse:Nn,stringify:Hn,TomlDate:mn,TomlError:B}}));const Jn={"package.json":`npm`,"pyproject.toml":`pypi`,"go.mod":`go`},Yn={"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`},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`?pr(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function Xn(e){for(let[t,{short:n}]of Object.entries(Yn))if(t===e||n===e)return t;return``}const G=b({strict:!1,allowPositionals:!0,tokens:!0,options:Yn}),K=G.values;for(let[e,t]of G.tokens.entries())if(t.kind===`option`&&t.value?.startsWith(`-`)){let n=Xn(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,Zn=G.positionals,[Qn,$n,er]=[`magenta`,`red`,`green`].map(e=>q[`no-color`]?String:t=>C(e,String(t))),J=Q(W(q.greatest)),tr=Q(W(q.prerelease)),nr=Q(W(q.release)),rr=Q(W(q.patch)),ir=Q(W(q.minor)),ar=Q(W(q[`allow-downgrade`])),or=W(q.modes)||new Set([`npm`,`pypi`,`go`,`act`]),sr=typeof q.forgeapi==`string`?N(q.forgeapi):`https://api.github.com`,cr=typeof q.pypiapi==`string`?N(q.pypiapi):`https://pypi.org`,lr=typeof q.jsrapi==`string`?N(q.jsrapi):`https://jsr.io`,ur=typeof q.goproxy==`string`?N(q.goproxy):Mt(),dr=Nt();function Y(e,t){for(let n of t instanceof Set?t:[])if(n.test(e))return!0;return!1}function fr(e,t){return t.split(`.`).reduce((e,t)=>e?.[t]??null,e)}function pr(e){return e.split(`,`).filter(Boolean)}function mr(e){let t={};if(Array.isArray(e)){for(let n of e)if(typeof n==`string`){let[e,r]=n.split(`=`,2);e&&r&&De(r)&&(t[e]=r)}}else if(typeof e==`string`){let[n,r]=e.split(`=`,2);n&&r&&De(r)&&(t[n]=r)}return t}function hr(e,t){let n=l(t,e);try{return f(n),n}catch{}let r=c(t);return r===t?null:hr(e,r)}function gr(){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 _r(e){console.error(`${gr()} ${e}`)}const vr=typeof q.timeout==`string`?Number(q.timeout):0,X={fetchTimeout:vr||He,goProbeTimeout:vr?vr/2:2500,forgeApiUrl:sr,pypiApiUrl:cr,jsrApiUrl:lr,goProxyUrl:ur,doFetch:(e,t)=>We(e,t,!!q.verbose,_r,Qn,er,$n),verbose:!!q.verbose};async function yr(e){console.info(q.json?JSON.stringify({message:e}):e),await Z()}async function Z(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($n(t)),n&&console.info($n(`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 br(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`&&!R(n.oldOrig)&&(n.old=n.oldOrig),t===`act`&&(n.old=j(n.old),n.new=j(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(wr(e));return q[`error-on-outdated`]?t?2:0:q[`error-on-unchanged`]?t?0:2:0}function xr(e,t){r===`win32`&&v(e,0),y(e,t,r===`win32`?{flag:`r+`}:void 0)}const Sr=e=>S(e).length;function Cr(e,t=` `){let n=``,r=Array(e[0].length).fill(0);for(let t of e)for(let[e,n]of t.entries()){let t=Sr(n);t>r[e]&&(r[e]=t)}for(let[i,a]of e.entries()){for(let[e,i]of a.entries()){e>0&&(n+=t);let o=` `.repeat(r[e]-Sr(i));n+=i+(e===a.length-1?``:o)}i<e.length-1&&(n+=`
27
+ `}var Un,Wn=w((()=>{Un=/^[a-z0-9-_]+$/i})),Gn=re({TomlDate:()=>mn,TomlError:()=>B,default:()=>Kn,parse:()=>Nn,stringify:()=>Hn}),Kn,qn=w((()=>{Pn(),Wn(),hn(),V(),Kn={parse:Nn,stringify:Hn,TomlDate:mn,TomlError:B}}));const Jn={"package.json":`npm`,"pyproject.toml":`pypi`,"go.mod":`go`},Yn={"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`},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`?pr(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function Xn(e){for(let[t,{short:n}]of Object.entries(Yn))if(t===e||n===e)return t;return``}const G=b({strict:!1,allowPositionals:!0,tokens:!0,options:Yn}),K=G.values;for(let[e,t]of G.tokens.entries())if(t.kind===`option`&&t.value?.startsWith(`-`)){let n=Xn(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,Zn=G.positionals,[Qn,$n,er]=[`magenta`,`red`,`green`].map(e=>q[`no-color`]?String:t=>C(e,String(t))),J=Q(W(q.greatest)),tr=Q(W(q.prerelease)),nr=Q(W(q.release)),rr=Q(W(q.patch)),ir=Q(W(q.minor)),ar=Q(W(q[`allow-downgrade`])),or=W(q.modes)||new Set([`npm`,`pypi`,`go`,`actions`]),sr=typeof q.forgeapi==`string`?N(q.forgeapi):`https://api.github.com`,cr=typeof q.pypiapi==`string`?N(q.pypiapi):`https://pypi.org`,lr=typeof q.jsrapi==`string`?N(q.jsrapi):`https://jsr.io`,ur=typeof q.goproxy==`string`?N(q.goproxy):Mt(),dr=Nt();function Y(e,t){for(let n of t instanceof Set?t:[])if(n.test(e))return!0;return!1}function fr(e,t){return t.split(`.`).reduce((e,t)=>e?.[t]??null,e)}function pr(e){return e.split(`,`).filter(Boolean)}function mr(e){let t={};if(Array.isArray(e)){for(let n of e)if(typeof n==`string`){let[e,r]=n.split(`=`,2);e&&r&&De(r)&&(t[e]=r)}}else if(typeof e==`string`){let[n,r]=e.split(`=`,2);n&&r&&De(r)&&(t[n]=r)}return t}function hr(e,t){let n=l(t,e);try{return f(n),n}catch{}let r=c(t);return r===t?null:hr(e,r)}function gr(){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 _r(e){console.error(`${gr()} ${e}`)}const vr=typeof q.timeout==`string`?Number(q.timeout):0,X={fetchTimeout:vr||He,goProbeTimeout:vr?vr/2:2500,forgeApiUrl:sr,pypiApiUrl:cr,jsrApiUrl:lr,goProxyUrl:ur,doFetch:(e,t)=>We(e,t,!!q.verbose,_r,Qn,er,$n),verbose:!!q.verbose};async function yr(e){console.info(q.json?JSON.stringify({message:e}):e),await Z()}async function Z(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($n(t)),n&&console.info($n(`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 br(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`&&!R(n.oldOrig)&&(n.old=n.oldOrig),t===`actions`&&(n.old=j(n.old),n.new=j(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(wr(e));return q[`error-on-outdated`]?t?2:0:q[`error-on-unchanged`]?t?0:2:0}function xr(e,t){r===`win32`&&v(e,0),y(e,t,r===`win32`?{flag:`r+`}:void 0)}const Sr=e=>S(e).length;function Cr(e,t=` `){let n=``,r=Array(e[0].length).fill(0);for(let t of e)for(let[e,n]of t.entries()){let t=Sr(n);t>r[e]&&(r[e]=t)}for(let[i,a]of e.entries()){for(let[e,i]of a.entries()){e>0&&(n+=t);let o=` `.repeat(r[e]-Sr(i));n+=i+(e===a.length-1?``:o)}i<e.length-1&&(n+=`
28
28
  `)}return n}function wr(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`?Gt(s):s),n&&l.push(a),l.push(Ne(o.old,o.new,$n)),l.push(Ne(o.new,o.old,er)),l.push(o.age||``),l.push(o.info||``),r.push(l)}return Cr(r)}function Tr(e,t){return RegExp(`^${M(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function Er(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Tr(e,n):e instanceof RegExp?e:Tr(e,n)}function Q(e){if(e instanceof Set){let t=new Set;for(let n of e)t.add(Er(n,!0,!1));return t}return e}function Dr(e,t){let n=new Set;for(let t of e||[])n.add(Er(t,!0,!0));for(let e of t||[])n.add(Er(e,!1,!0));return n}function Or(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>pr(e)):[]}function kr(e){return rr===!0||Y(e,rr)?new Set([`patch`]):ir===!0||Y(e,ir)?new Set([`patch`,`minor`]):new Set([`patch`,`minor`,`major`])}function Ar(e){return{useGreatest:typeof J==`boolean`?J:Y(e,J),usePre:typeof tr==`boolean`?tr:Y(e,tr),useRel:typeof nr==`boolean`?nr:Y(e,nr),semvers:kr(e)}}function jr(t){return t.replace(`${e()}/`,``).replace(`${e()}\\`,``)}function $(e,t,n,r,i){if(i===`engines`&&Ie.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 Mr(e,t,n){return!e||!t?!0:(n-Date.parse(e))/(24*3600*1e3)>=t}function Nr(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(Jn)){let r=l(e,t),i=null;try{i=m(r)}catch{}i?.isFile()&&n.add(u(r))}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 rn(i))n.add(e),r.add(e)}else throw Error(`${e} is neither a file nor directory`)}else{for(let t of Object.keys(Jn)){let r=hr(t,e());r&&n.add(u(r))}let t=hr(l(`.github`,`workflows`),e());if(t)for(let e of rn(t))n.add(e)}return[n,r]}async function Pr(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 Fr(){for(let e of[a,i])e?._handle?.setBlocking?.(!0);Be();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...]
29
29
 
30
30
  Options:
@@ -46,7 +46,7 @@ import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,version
46
46
  -r, --registry <url> Override npm registry URL
47
47
  -S, --sockets <num> Maximum number of parallel HTTP sockets opened. Default: 96
48
48
  -T, --timeout <ms> Network request timeout in ms (go probes use half). Default: ${He}
49
- -M, --modes <mode,...> Which modes to enable. Either npm,pypi,go,act. Default: npm,pypi,go,act
49
+ -M, --modes <mode,...> Which modes to enable. Either npm,pypi,go,actions. Default: npm,pypi,go,actions
50
50
  -j, --json Output a JSON object
51
51
  -n, --no-color Disable color output
52
52
  -v, --version Print the version
@@ -64,4 +64,4 @@ import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,version
64
64
  $ updates -f go.mod
65
65
  $ updates -l typescript=^5.0.0
66
66
  $ updates -f .github/workflows
67
- `),await Z()),n&&(console.info(Ve),await Z());let g={},_={},v={},y={},b=Date.now(),x=0,S=W(r),C=S instanceof Set?S:Zn.length?new Set:!1;if(C instanceof Set)for(let e of Zn)C.add(e);let[ee,te]=Nr(C),ne={},w=Or(d),re=Or(f),T=mr(p),ae=[];for(let t of ee){if(nn(t)){if(!or.has(`act`)&&!te.has(t))continue;g.act||={};let e;try{e=h(t,`utf8`)}catch(e){throw Error(`Unable to open ${t}: ${e.message}`)}let n=jr(t);ne[n]={absPath:t,content:e};let r=Dr(w,[]),i=Dr(re,[]),a=Array.from(e.matchAll(qt),e=>Yt(e[1])).filter(e=>e!==null);for(let e of a){if(!$(e.name,`act`,r,i,`act`))continue;let t=`${n}${e.name}`;g.act[t]||(g.act[t]={old:e.ref},ae.push({...e,key:t,apiUrl:Xt(e.host,sr)}))}continue}let n=Jn[s(t)];if(!or.has(n)&&!te.has(t))continue;y[n]=t,g[n]||(g[n]={});let r=c(u(t)),i=await Pr(r),a=Dr(w,i?.include??[]),l=Dr(re,i?.exclude??[]),d={...i?.pin,...T},f=[];Array.isArray(o)?f=o.filter(e=>typeof e==`string`):`types`in i&&Array.isArray(i.types)?f=i.types:n===`npm`?f=Fe:n===`pypi`?f=[...Re,...Le]:n===`go`&&(f=Array.from(ze));let p={};try{v[n]=h(t,`utf8`)}catch(e){throw Error(`Unable to open ${t}: ${e.message}`)}try{if(n===`npm`)p=JSON.parse(v[n]);else if(n===`pypi`){let{parse:e}=await Promise.resolve().then(()=>(qn(),Gn));p=e(v[n])}else{let e=Rt(v[n]);p.deps=e.deps,p.replace=e.replace}}catch(e){throw Error(`Error parsing ${t}: ${e.message}`)}for(let e of f){let t;if(t=n===`npm`||n===`go`?p[e]||{}:fr(p,e)||{},Array.isArray(t)&&n===`pypi`)for(let{name:r,version:i}of Pe(t))$(r,n,a,l,e)&&(g[n][`${e}${r}`]={old:Ct(i),oldOrig:i});else if(typeof t==`string`){let[r,i]=t.split(`@`);$(r,n,a,l,e)&&(g[n][`${e}${r}`]={old:Ct(i),oldOrig:i})}else for(let[r,i]of Object.entries(t))if(n===`npm`&&R(i)&&$(r,n,a,l,e)){let t=yt(i,r);g[n][`${e}${r}`]={old:t.version,oldOrig:i}}else n!==`go`&&De(i)&&$(r,n,a,l,e)?g[n][`${e}${r}`]={old:Ct(i),oldOrig:i}:n===`npm`&&!R(i)&&$(r,n,a,l,e)?_[`${e}${r}`]={old:i}:n===`go`&&$(r,n,a,l,e)&&(g[n][`${e}${r}`]={old:Kt(i),oldOrig:j(i)})}if(x+=Object.keys(g[n]).length+Object.keys(_).length,!x)continue;let S=[];S=await ie(Object.keys(g[n]),async e=>{let[t,a]=e.split(`\0`);if(n===`npm`){let{oldOrig:r}=g[n][e];return r&&R(r)?bt(a,t,X):vt(a,t,i,q,X)}else if(n===`go`)return Bt(a,t,g[n][e].oldOrig||g[n][e].old,r,X,dr);else return kt(a,t,X)},{concurrency:e});for(let[e,t,r,i]of S){if(e?.error)throw Error(e.error);let{useGreatest:a,usePre:o,useRel:s,semvers:c}=Ar(e.name),l=`${t}${i}`,u=g[n][l].old,f=g[n][l].oldOrig,p=d[i],m=Je(e,{usePre:o,useRel:s,useGreatest:a,semvers:c,range:u,mode:n,pinnedRange:p},{allowDowngrade:ar,matchesAny:Y,isGoPseudoVersion:Lt}),h=``;if([`go`,`pypi`].includes(n)&&m)h=m;else if(m)if(f&&R(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=St(u,m,f);if(!m||f&&f===h){delete g[n][l];continue}let _=``;if(n===`npm`&&e.time?.[m]?_=e.time[m]:n===`pypi`&&e.releases?.[m]?.[0]?.upload_time_iso_8601?_=e.releases[m][0].upload_time_iso_8601:n===`go`&&e.Time&&(_=e.Time),g[n][l].new=h,f&&R(f)&&(g[n][l].newPrint=m),n===`npm`)g[n][l].info=et(e?.versions?.[m],r,e.name);else if(n===`pypi`)g[n][l].info=et(e,r,e.info.name);else if(n===`go`){let t=e.newPath||i;g[n][l].info=Wt(t)}_&&(g[n][l].date=_,g[n][l].age=Me(_,{noAffix:!0}))}if(Object.keys(_).length){let t=(await ie(Object.entries(_),([e,t])=>{let n=e.split(`\0`)[1];return Ot(e,t,typeof J==`boolean`?J:Y(n,J),X)},{concurrency:e})).filter(e=>e!==null);for(let e of t){let{key:t,newRange:r,user:i,repo:a,oldRef:o,newRef:s,newDate:c}=e;g[n][t]={old:_[t].old,new:r,oldPrint:ct.test(o)?o.substring(0,7):o,newPrint:ct.test(s)?s.substring(0,7):s,info:`https://github.com/${i}/${a}`,...c?{age:Me(c,{noAffix:!0})}:{}}}}let C=m??i.cooldown;if(C)for(let e of Object.keys(g))for(let[t,{date:n}]of Object.entries(g[e]))Mr(n,Number(C),b)||delete g[e][t]}if(g.act&&(x+=Object.keys(g.act).length),ae.length){let t=new Map;for(let e of ae){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 ie(t.values(),async({apiUrl:e,owner:t,repo:n,infos:r})=>{let i=await Qt(e,t,n,X),a=i.map(e=>e.name),o=a.map(e=>j(e)).filter(e=>k(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 $t(e,t,n,r,X);return c.set(r,i),i}for(let e of r){let r=g.act[e.key],c=`https://${e.host||`github.com`}/${t}/${n}`;if(e.isHash){let{usePre:t,useRel:n}=Ar(e.name),u=qe({},o,{range:`0.0.0`,semvers:new Set([`patch`,`minor`,`major`]),usePre:t,useRel:n,useGreatest:!0,pinnedRange:T[e.name]});if(!u){delete g.act[e.key];continue}let d=a.find(e=>j(e)===u);if(!d){delete g.act[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.act[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=Me(m,{noAffix:!0}))}else{let t=P(j(e.ref));if(!t){delete g.act[e.key];continue}let{useGreatest:n,usePre:s,useRel:u,semvers:d}=Ar(e.name),f=qe({},o,{range:t,semvers:d,usePre:s,useRel:u,useGreatest:n||!0,pinnedRange:T[e.name]});if(!f||f===t){delete g.act[e.key];continue}let p=a.find(e=>j(e)===f);if(!p){delete g.act[e.key];continue}let m=en(p,e.ref);if(m===e.ref){delete g.act[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=Me(e,{noAffix:!0}))}}}},{concurrency:e}),m)for(let[e,{date:t}]of Object.entries(g.act))Mr(t,Number(m),b)||delete g.act[e];Object.keys(g.act).length||delete g.act}if(x===0)return yr(`No dependencies found, nothing to do.`);let E=0;for(let e of Object.keys(g))E+=Object.keys(g[e]).length;if(!E)return yr(`All dependencies are up to date.`);let D=new Map;if(g.act)for(let[e,t]of Object.entries(g.act)){let[n,r]=e.split(`\0`);D.has(n)||D.set(n,[]),D.get(n).push({name:r,oldRef:t.old,newRef:t.new})}let oe=br(g);if(l){for(let e of Object.keys(g))if(Object.keys(g[e]).length){if(e===`act`){for(let[e,t]of D){let{absPath:n,content:r}=ne[e]||{};if(n){try{xr(n,tn(r,t))}catch(e){throw Error(`Error writing ${s(n)}: ${e.message}`)}console.info(er(`✨ ${e} updated`))}}continue}try{let t=v[e];if(e===`go`){let[n,r]=Ht(t,g[e]);xr(y[e],n),Ut(c(u(y[e])),r,xr)}else{let n=e===`npm`?xt:At;xr(y[e],n(t,g[e]))}}catch(t){throw Error(`Error writing ${s(y[e])}: ${t.message}`)}console.info(er(`✨ ${s(y[e])} updated`))}}await Z(void 0,oe)}try{await Fr()}catch(e){await Z(e)}export{};
67
+ `),await Z()),n&&(console.info(Ve),await Z());let g={},_={},v={},y={},b=Date.now(),x=0,S=W(r),C=S instanceof Set?S:Zn.length?new Set:!1;if(C instanceof Set)for(let e of Zn)C.add(e);let[ee,te]=Nr(C),ne={},w=Or(d),re=Or(f),T=mr(p),ae=[];for(let t of ee){if(nn(t)){if(!or.has(`actions`)&&!te.has(t))continue;g.actions||={};let e;try{e=h(t,`utf8`)}catch(e){throw Error(`Unable to open ${t}: ${e.message}`)}let n=jr(t);ne[n]={absPath:t,content:e};let r=Dr(w,[]),i=Dr(re,[]),a=Array.from(e.matchAll(qt),e=>Yt(e[1])).filter(e=>e!==null);for(let e of a){if(!$(e.name,`actions`,r,i,`actions`))continue;let t=`${n}${e.name}`;g.actions[t]||(g.actions[t]={old:e.ref},ae.push({...e,key:t,apiUrl:Xt(e.host,sr)}))}continue}let n=Jn[s(t)];if(!or.has(n)&&!te.has(t))continue;y[n]=t,g[n]||(g[n]={});let r=c(u(t)),i=await Pr(r),a=Dr(w,i?.include??[]),l=Dr(re,i?.exclude??[]),d={...i?.pin,...T},f=[];Array.isArray(o)?f=o.filter(e=>typeof e==`string`):`types`in i&&Array.isArray(i.types)?f=i.types:n===`npm`?f=Fe:n===`pypi`?f=[...Re,...Le]:n===`go`&&(f=Array.from(ze));let p={};try{v[n]=h(t,`utf8`)}catch(e){throw Error(`Unable to open ${t}: ${e.message}`)}try{if(n===`npm`)p=JSON.parse(v[n]);else if(n===`pypi`){let{parse:e}=await Promise.resolve().then(()=>(qn(),Gn));p=e(v[n])}else{let e=Rt(v[n]);p.deps=e.deps,p.replace=e.replace}}catch(e){throw Error(`Error parsing ${t}: ${e.message}`)}for(let e of f){let t;if(t=n===`npm`||n===`go`?p[e]||{}:fr(p,e)||{},Array.isArray(t)&&n===`pypi`)for(let{name:r,version:i}of Pe(t))$(r,n,a,l,e)&&(g[n][`${e}${r}`]={old:Ct(i),oldOrig:i});else if(typeof t==`string`){let[r,i]=t.split(`@`);$(r,n,a,l,e)&&(g[n][`${e}${r}`]={old:Ct(i),oldOrig:i})}else for(let[r,i]of Object.entries(t))if(n===`npm`&&R(i)&&$(r,n,a,l,e)){let t=yt(i,r);g[n][`${e}${r}`]={old:t.version,oldOrig:i}}else n!==`go`&&De(i)&&$(r,n,a,l,e)?g[n][`${e}${r}`]={old:Ct(i),oldOrig:i}:n===`npm`&&!R(i)&&$(r,n,a,l,e)?_[`${e}${r}`]={old:i}:n===`go`&&$(r,n,a,l,e)&&(g[n][`${e}${r}`]={old:Kt(i),oldOrig:j(i)})}if(x+=Object.keys(g[n]).length+Object.keys(_).length,!x)continue;let S=[];S=await ie(Object.keys(g[n]),async e=>{let[t,a]=e.split(`\0`);if(n===`npm`){let{oldOrig:r}=g[n][e];return r&&R(r)?bt(a,t,X):vt(a,t,i,q,X)}else if(n===`go`)return Bt(a,t,g[n][e].oldOrig||g[n][e].old,r,X,dr);else return kt(a,t,X)},{concurrency:e});for(let[e,t,r,i]of S){if(e?.error)throw Error(e.error);let{useGreatest:a,usePre:o,useRel:s,semvers:c}=Ar(e.name),l=`${t}${i}`,u=g[n][l].old,f=g[n][l].oldOrig,p=d[i],m=Je(e,{usePre:o,useRel:s,useGreatest:a,semvers:c,range:u,mode:n,pinnedRange:p},{allowDowngrade:ar,matchesAny:Y,isGoPseudoVersion:Lt}),h=``;if([`go`,`pypi`].includes(n)&&m)h=m;else if(m)if(f&&R(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=St(u,m,f);if(!m||f&&f===h){delete g[n][l];continue}let _=``;if(n===`npm`&&e.time?.[m]?_=e.time[m]:n===`pypi`&&e.releases?.[m]?.[0]?.upload_time_iso_8601?_=e.releases[m][0].upload_time_iso_8601:n===`go`&&e.Time&&(_=e.Time),g[n][l].new=h,f&&R(f)&&(g[n][l].newPrint=m),n===`npm`)g[n][l].info=et(e?.versions?.[m],r,e.name);else if(n===`pypi`)g[n][l].info=et(e,r,e.info.name);else if(n===`go`){let t=e.newPath||i;g[n][l].info=Wt(t)}_&&(g[n][l].date=_,g[n][l].age=Me(_,{noAffix:!0}))}if(Object.keys(_).length){let t=(await ie(Object.entries(_),([e,t])=>{let n=e.split(`\0`)[1];return Ot(e,t,typeof J==`boolean`?J:Y(n,J),X)},{concurrency:e})).filter(e=>e!==null);for(let e of t){let{key:t,newRange:r,user:i,repo:a,oldRef:o,newRef:s,newDate:c}=e;g[n][t]={old:_[t].old,new:r,oldPrint:ct.test(o)?o.substring(0,7):o,newPrint:ct.test(s)?s.substring(0,7):s,info:`https://github.com/${i}/${a}`,...c?{age:Me(c,{noAffix:!0})}:{}}}}let C=m??i.cooldown;if(C)for(let e of Object.keys(g))for(let[t,{date:n}]of Object.entries(g[e]))Mr(n,Number(C),b)||delete g[e][t]}if(g.actions&&(x+=Object.keys(g.actions).length),ae.length){let t=new Map;for(let e of ae){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 ie(t.values(),async({apiUrl:e,owner:t,repo:n,infos:r})=>{let i=await Qt(e,t,n,X),a=i.map(e=>e.name),o=a.map(e=>j(e)).filter(e=>k(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 $t(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}=Ar(e.name),u=qe({},o,{range:`0.0.0`,semvers:new Set([`patch`,`minor`,`major`]),usePre:t,useRel:n,useGreatest:!0,pinnedRange:T[e.name]});if(!u){delete g.actions[e.key];continue}let d=a.find(e=>j(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=Me(m,{noAffix:!0}))}else{let t=P(j(e.ref));if(!t){delete g.actions[e.key];continue}let{useGreatest:n,usePre:s,useRel:u,semvers:d}=Ar(e.name),f=qe({},o,{range:t,semvers:d,usePre:s,useRel:u,useGreatest:n||!0,pinnedRange:T[e.name]});if(!f||f===t){delete g.actions[e.key];continue}let p=a.find(e=>j(e)===f);if(!p){delete g.actions[e.key];continue}let m=en(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=Me(e,{noAffix:!0}))}}}},{concurrency:e}),m)for(let[e,{date:t}]of Object.entries(g.actions))Mr(t,Number(m),b)||delete g.actions[e];Object.keys(g.actions).length||delete g.actions}if(x===0)return yr(`No dependencies found, nothing to do.`);let E=0;for(let e of Object.keys(g))E+=Object.keys(g[e]).length;if(!E)return yr(`All dependencies are up to date.`);let D=new Map;if(g.actions)for(let[e,t]of Object.entries(g.actions)){let[n,r]=e.split(`\0`);D.has(n)||D.set(n,[]),D.get(n).push({name:r,oldRef:t.old,newRef:t.new})}let oe=br(g);if(l){for(let e of Object.keys(g))if(Object.keys(g[e]).length){if(e===`actions`){for(let[e,t]of D){let{absPath:n,content:r}=ne[e]||{};if(n){try{xr(n,tn(r,t))}catch(e){throw Error(`Error writing ${s(n)}: ${e.message}`)}console.info(er(`✨ ${e} updated`))}}continue}try{let t=v[e];if(e===`go`){let[n,r]=Ht(t,g[e]);xr(y[e],n),Ut(c(u(y[e])),r,xr)}else{let n=e===`npm`?xt:At;xr(y[e],n(t,g[e]))}}catch(t){throw Error(`Error writing ${s(y[e])}: ${t.message}`)}console.info(er(`✨ ${s(y[e])} updated`))}}await Z(void 0,oe)}try{await Fr()}catch(e){await Z(e)}export{};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "updates",
3
- "version": "17.5.11",
3
+ "version": "17.6.0",
4
4
  "description": " Flexible dependency update tool",
5
5
  "author": "silverwind",
6
6
  "repository": "silverwind/updates",