updates 17.12.0 → 17.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -5
- package/dist/index.js +4 -3
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
## Supported files
|
|
9
9
|
|
|
10
10
|
- `package.json` - npm dependencies
|
|
11
|
-
- `pyproject.toml` -
|
|
11
|
+
- `pyproject.toml` - uv dependencies
|
|
12
12
|
- `go.mod` - go dependencies
|
|
13
|
-
- `Cargo.toml` -
|
|
14
|
-
- `.{github,gitea,forgejo}/workflows` -
|
|
15
|
-
- `Dockerfile*`, `docker-*.{yml,yaml}` -
|
|
13
|
+
- `Cargo.toml` - rust dependencies
|
|
14
|
+
- `.{github,gitea,forgejo}/workflows` - actions and docker images
|
|
15
|
+
- `Dockerfile*`, `docker-*.{yml,yaml}` - docker images
|
|
16
16
|
|
|
17
17
|
## Usage
|
|
18
18
|
|
|
@@ -34,7 +34,7 @@ npx updates -u && npm i
|
|
|
34
34
|
|`-i, --include <dep,...>`|Include only given dependencies|
|
|
35
35
|
|`-e, --exclude <dep,...>`|Exclude given dependencies|
|
|
36
36
|
|`-l, --pin <dep=range>`|Pin dependency to given semver range|
|
|
37
|
-
|`-C, --cooldown <duration>`|Minimum dependency age, e.g. `7
|
|
37
|
+
|`-C, --cooldown <duration>`|Minimum dependency age, e.g. `7` (days), `1w`, `2d`, `6h`|
|
|
38
38
|
|`-p, --prerelease [<dep,...>]`|Consider prerelease versions|
|
|
39
39
|
|`-R, --release [<dep,...>]`|Only use release versions, may downgrade|
|
|
40
40
|
|`-g, --greatest [<dep,...>]`|Prefer greatest over latest version|
|
|
@@ -49,6 +49,7 @@ npx updates -u && npm i
|
|
|
49
49
|
|`-E, --error-on-outdated`|Exit with code 2 when updates are available and 0 when not|
|
|
50
50
|
|`-U, --error-on-unchanged`|Exit with code 0 when updates are available and 2 when not|
|
|
51
51
|
|`-j, --json`|Output a JSON object|
|
|
52
|
+
|`-x, --no-cache`|Disable HTTP cache|
|
|
52
53
|
|`-n, --no-color`|Disable color output|
|
|
53
54
|
|`-v, --version`|Print the version|
|
|
54
55
|
|`-V, --verbose`|Print verbose output to stderr|
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
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,mkdirSync as h,readFileSync as g,readdirSync as _,statSync as v,truncateSync as y,writeFileSync as b}from"node:fs";import{parseArgs as x,promisify as S,stripVTControlCharacters as ee,styleText as te}from"node:util";import ne from"node:dns";import{createHash as re}from"node:crypto";import{homedir as C}from"node:os";import{execFile as ie}from"node:child_process";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 E(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=E(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=[];w(c.slice(1),t);for(let n=e+1;n<r.length;n++){let i=r[n].replace(/#.*$/,``).trim();if(i){if(i.includes(`]`)){w(i.replace(/\].*$/,``),t),e=n;break}w(i,t)}}u[d]=t}else u[d]=T(c)}return t}function w(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:D(i[3]))??i[4]??i[5];e!==void 0&&e!==``&&t.push(oe(e))}}function T(e){if(e.startsWith(`[`)){let t=[];return w(e.slice(1,e.lastIndexOf(`]`)),t),t}return e.startsWith(`{`)?se(e):e.startsWith(`"""`)?D(e.slice(3,e.lastIndexOf(`"""`))):e.startsWith(`'''`)?e.slice(3,e.lastIndexOf(`'''`)):e.startsWith(`"`)?D(e.slice(1,e.lastIndexOf(`"`))):e.startsWith(`'`)?e.slice(1,e.lastIndexOf(`'`)):oe(e)}function oe(e){return e===`true`?!0:e===`false`?!1:/^[+-]?\d+$/.test(e)||/^[+-]?\d+\.\d+$/.test(e)?Number(e):e}function se(e){let t={},n=e.slice(1,e.lastIndexOf(`}`)).trim();if(!n)return t;for(let e of ce(n)){let n=e.indexOf(`=`);if(n<0)continue;let r=e.slice(0,n).trim().replace(/^["']|["']$/g,``);t[r]=T(e.slice(n+1).trim())}return t}function ce(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 E(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 D(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
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 O=/^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9_-]+(?:\.[a-zA-Z0-9_-]+)*))?(?:\+[a-zA-Z0-9._-]+)?$/,k=new Map;function A(e){if(typeof e!=`string`)return null;let t=k.get(e);if(t!==void 0)return t;let n=O.exec(e.trim());if(!n)return k.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 k.set(e,s),s}function ue(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 j(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=ue(e.prerelease[n],t.prerelease[n]);if(r!==0)return r}return 0}function M(e){return A(e)?.version??null}function fe(e){return A(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 ge(e,t){let n=A(e),r=A(t);if(!n||!r||n.version===r.version)return null;let i=j(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 _e(e,t){let n=A(e),r=A(t);return!n||!r?!1:j(n,r)>0}function ve(e,t){let n=A(e),r=A(t);return!n||!r?!1:j(n,r)>=0}function ye(e,t){let n=A(e),r=A(t);return!n||!r?!1:j(n,r)<0}function be(e,t){let n=A(e),r=A(t);return!n||!r?!0:j(n,r)!==0}function xe(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=A(`${n}.${t[3]??`0`}.${t[4]??`0`}${t[5]||``}`);return r?{op:t[1]||`=`,semver:r}:null}function Se(e,t){let n=j(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 Ce(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 we(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 Te(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 Ee(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 De=new Map;function Oe(e){let t=De.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=Te(t),t=we(t),t=Ce(t),t=Ee(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=xe(t);if(!n)return De.set(e,null),null;i.push(n)}if(i.length===0)return De.set(e,null),null;r.push(i)}let i=r.length?r:null;return De.set(e,i),i}function ke(e,t){for(let n of t)if(!Se(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 Ae(e,t){let n=A(e);if(!n)return!1;let r=Oe(t);if(!r)return!1;for(let e of r)if(e.length===0||ke(n,e))return!0;return!1}function je(e){if(typeof e!=`string`)return null;try{return Oe(e)?e:null}catch{return null}}const Me=[[1e3,6e4,`sec`],[6e4,36e5,`min`],[36e5,864e5,`hour`],[864e5,6048e5,`day`],[6048e5,2628e6,`week`],[2628e6,31536e6,`month`],[31536e6,1/0,`year`]],Ne={"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`},Pe={sec:`second`,min:`minute`};function Fe(e){return e instanceof Date?e.getTime():typeof e==`string`?Date.parse(e):e}function Ie(e,{now:t,noAffix:n=!1,times:r=Me,nowThreshold:i=2e3,nowString:a=`now`,unknownString:o=``,aliases:s=!1,aliasesMap:c=Ne,longUnits:l=!1}={}){let u=Fe(e),d=t===void 0?Date.now():Fe(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&&Pe[t[2]]||t[2])+(m>1?`s`:``);break}}let g=`${m} ${h}`,_;return _=n?g:p?`in ${g}`:`${g} ago`,s?c[_]??_:_}function Le(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 Re(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 ze=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`,`resolutions`,`packageManager`],Be=[`node`,`deno`,`bun`],Ve=[`project.dependencies`,`project.optional-dependencies`,`dependency-groups.dev`,`dependency-groups.lint`,`dependency-groups.test`],He=[`deps`,`indirect`,`replace`,`tool`],Ue=[`dependencies`,`dev-dependencies`,`build-dependencies`,`workspace.dependencies`];function P(e,t){for(let n of t instanceof Set?t:[])if(n.test(e))return!0;return!1}function We(e,t){return t.split(`.`).reduce((e,t)=>e?.[t]??null,e)}function Ge(e){return e.split(`,`).filter(Boolean)}function Ke(e,t,n){return!e||!t?!0:(n-Date.parse(e))/(24*3600*1e3)>=t}function qe(){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 Je(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 Ye={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function Xe(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Ye[n.toLowerCase()];if(r)return Number(e)*r}let n=Number(e);if(!Number.isFinite(n))throw Error(`Invalid cooldown value: ${e}`);return n}async function Ze(e,t,{concurrency:n=1/0}={}){let r=Array.from(e);if(!Number.isFinite(n))return Promise.all(r.map(t));let i=Array(r.length),a=0;return await Promise.all(Array.from({length:Math.min(n,r.length)},async()=>{for(;a<r.length;){let e=a++;i[e]=await t(r[e])}})),i}function Qe(){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 $e=`17.12.0`,F=e=>e.replace(/^v/,``),I=e=>e.replace(/[|\\{}()[\]^$+*?.-]/g,`\\$&`),L=e=>e.endsWith(`/`)?e.substring(0,e.length-1):e;function et(e,t){return{headers:{"user-agent":`updates/${$e}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function tt(e,t,n,r,i,a,o){n&&r&&i&&r(`${i(`fetch`)} ${e}`);try{let i=await fetch(e,t);return n&&r&&a&&o&&r(`${i.ok?a(i.status):o(i.status)} ${e}`),i}catch(t){throw Error(`Failed to fetch ${e}${t?.message?`: ${t.message}`:``}`)}}function R(e){let t=fe(e);return t?!!t.prerelease.length:!1}function nt(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}function rt(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=z(e),s=z(t);if(!o||!s)return!0;let c=nt(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 he(e)?.version??``}catch{return``}}function it(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s}){let c=z(n);if(!c)return c;i=nt(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&&!Ae(c,s))continue;let d=ge(u,c);if(!(!d||!r.has(d)))if(o||!(`time`in e))(ve(z(c),u)||s&&!Ae(u,s))&&(u=c);else{let t=Date.parse(e.time[n]);t>=0&&t>l&&(u=c,l=t)}}return u||null}function at(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=>M(e));else if(t===`npm`||t===`cargo`)d=Object.keys(e.versions).filter(e=>M(e));else if(t===`go`){let t=z(n);if(!t)return null;let r=a||nt(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=ge(t,p);if(n&&o.has(n)&&rt(f,e.new,d))return e.new}let m=z(e.sameMajorNew);if(m&&!u(e.sameMajorNew)&&!s(e.sameMajorNew)){let n=ge(t,m);if(n&&o.has(n)&&rt(f,e.sameMajorNew,d))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}return null}let f=it(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=nt(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 rt(n,f,g)?f:null;let _=ge(d,r);return _&&_!==`prerelease`&&!o.has(_.replace(/^pre/,``))||i&&R(r)?f:ye(r,d)&&!h?rt(n,r,g)?r:null:!p&&h&&!a||s&&!Ae(r,s)?f:u||r}}const ot=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&ot.set(e.substring(0,t),e.substring(t+1))}function st(e){try{let t=ot.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 ct(e,t){let n={signal:AbortSignal.timeout(t.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}},r=st(e);return r&&(n.headers={...n.headers,Authorization:`Bearer ${r}`}),t.doFetch(e,n)}function lt(e,t,n){let r=F(t);if(!M(r))return null;if(n){let n=t,i=F(t);for(let t of e){let e=F(t);M(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(!M(n))return null;if(be(r,n))return t}return null}function ut(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 dt=/^[0-9a-f]{7,}$/i;function ft(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function pt(e,t,n,r){try{let i=await ct(`${e}/repos/${t}/${n}/tags?per_page=100`,r);if(!i?.ok)return[];let a=ft(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)=>ct(`${e}/repos/${t}/${n}/tags?per_page=100&page=${a+2}`,r)));for(let e of o)e?.ok&&a.push(...ft(await e.json()))}return a}catch{return[]}}function mt(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 ht(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 gt(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function _t({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=ut(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${gt(a)}/${e.directory}`)),a||t||``)}function vt(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 yt(e){try{return vt(g(e,`utf-8`))}catch{return}}function bt(t){let n=e();for(;;){let e=l(n,t);try{return v(e),e}catch{}let r=c(n);if(r===n)break;n=r}}function xt(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 St(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=yt(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(bt(`.${e}rc`));let u=xt(`${e}_`);return u.config&&c(u.config),Object.assign({},...o,u,s.length?{configs:s,config:s[s.length-1]}:void 0)}const B=l(r===`win32`?t.LOCALAPPDATA||l(C(),`AppData`,`Local`):t.XDG_CACHE_HOME||l(C(),`.cache`),`updates`);let Ct=!1;function wt(e){return re(`sha256`).update(e).digest(`hex`).substring(0,16)}function Tt(e){try{let t=wt(e),n=g(l(B,`${t}.etag`),`utf8`),r=g(l(B,`${t}.body`),`utf8`);return n&&r?{etag:n,body:r}:null}catch{return null}}function Et(e,t,n){try{Ct||=(h(B,{recursive:!0}),!0);let r=wt(e);b(l(B,`${r}.etag`),t),b(l(B,`${r}.body`),n)}catch{}}const Dt=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,Ot=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,kt=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,At=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,jt=`https://registry.npmjs.org`;let V=null;const Mt=new Map;function Nt(){return V||St(`npm`,{registry:jt})}function Pt(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function Ft(e,t){let n=t[`${e}:_authToken`]||t[`${e}/:_authToken`];if(n)return{token:Pt(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(Pt(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:Pt(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=Ft(`//${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:Pt(i),type:`Basic`}}function It(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function Lt(e,t){V||=Nt();let n=e.startsWith(`@`)?(/@[a-z0-9][\w.-]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=Mt.get(r);if(i)return i;let a;if(!e.startsWith(`@`))a={auth:H(t,V),registry:t};else{let e=L(It(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 Mt.set(r,a),a}function Rt(e,t,n){V||=Nt();let r=L((typeof n.registry==`string`?n.registry:!1)||t.registry||V.registry||jt);return{...Lt(e,r),originalRegistry:r}}function zt(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const Bt=new Map,Vt=new Map,Ht=new Map;async function Ut(e,t,n,r,i){let{auth:a,registry:o}=Rt(e,n,r),c=zt(o,t===`resolutions`?s(e):e),l=Bt.get(c);if(!l){let t=et(a?.type,a?.token);t.headers={...t.headers,accept:`application/vnd.npm.install-v1+json`};let n=Tt(c);n&&(t.headers[`if-none-match`]=n.etag),l=i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...t}).then(async t=>{if(t?.status===304&&n)return JSON.parse(n.body);if(t?.ok){let e=await t.text(),n=t.headers.get(`etag`);return n&&Et(c,n,e),JSON.parse(e)}mt(t,c,e,o)}).catch(e=>{throw Bt.delete(c),e}),Bt.set(c,l)}return[await l,t,o,e]}async function Wt(e,t,n,r,i){let{auth:a,registry:o}=Rt(e,n,r),s=zt(o,e,t),c=Vt.get(s);if(c)return c;let l=(async()=>{try{let n=et(a?.type,a?.token),r=await i.doFetch(s,{signal:AbortSignal.timeout(i.fetchTimeout),...n});if(!r?.ok)return{};let c=await r.json(),l=``,u=c?._npmOperationalInternal?.tmp;if(u){let e=/(\d{13})/.exec(u);e&&(l=new Date(Number(e[1])).toISOString())}if(!l){let r=zt(o,e),a=Ht.get(r);a||(a=i.doFetch(r,{signal:AbortSignal.timeout(i.fetchTimeout),...n}).then(e=>e?.ok?e.json():null).catch(()=>(Ht.delete(r),null)),Ht.set(r,a)),l=(await a)?.time?.[t]||``}return{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})();return Vt.set(s,l),l}function U(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Gt(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function Kt(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 qt(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]}mt(s,o,e,`JSR`)}function Jt(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 Yt(e,t,n){let r=e.replace(At,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 Xt(e){let t=e.match(kt);return t?.length===1?e.replace(kt,z(t[0])):e}async function Zt(e,t,n){try{let r=await ct(`${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 Qt(e,t,n){return(await pt(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function $t(e,t,n,r){let i=t.old.replace(Dt,``),[a,o,s,c]=Ot.exec(i)||[];if(!o||!s||!c)return null;if(dt.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=lt(await Qt(o,s,r),c,n);if(t)return{key:e,newRange:t,user:o,repo:s,oldRef:c,newRef:t}}return null}async function en(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];mt(i,r,e,n.pypiApiUrl)}function tn(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 nn=S(ie);function rn(){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 an(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function on(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function sn(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}function cn(e){let t=/\/v(\d+)$/.exec(e);return t?Number.parseInt(t[1]):1}function ln(e,t){return t<=1?e.replace(/\/v\d+$/,``):`${e.replace(/\/v\d+$/,``)}/v${t}`}function un(e,t){return t===`indirect`||e.startsWith(`golang.org/x/`)}function dn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function fn(e){return`${(e.length+4).toString(16).padStart(4,`0`)}${e}`}function pn(e){let t=[fn(`command=ls-refs
|
|
4
|
+
`)}return r}const Ye={y:365,m:30,w:7,d:1,h:1/24,s:1/86400};function Xe(e){let t=/^(\d+(?:\.\d+)?)\s*([a-z])$/i.exec(e);if(t){let[,e,n]=t,r=Ye[n.toLowerCase()];if(r)return Number(e)*r}let n=Number(e);if(!Number.isFinite(n))throw Error(`Invalid cooldown value: ${e}`);return n}async function Ze(e,t,{concurrency:n=1/0}={}){let r=Array.from(e);if(!Number.isFinite(n))return Promise.all(r.map(t));let i=Array(r.length),a=0;return await Promise.all(Array.from({length:Math.min(n,r.length)},async()=>{for(;a<r.length;){let e=a++;i[e]=await t(r[e])}})),i}function Qe(){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 $e=`17.13.1`,F=e=>e.replace(/^v/,``),I=e=>e.replace(/[|\\{}()[\]^$+*?.-]/g,`\\$&`),L=e=>e.endsWith(`/`)?e.substring(0,e.length-1):e;function et(e,t){return{headers:{"user-agent":`updates/${$e}`,"accept-encoding":`gzip, deflate, br`,...t&&{Authorization:`${e} ${t}`}}}}async function tt(e,t,n,r,i,a,o){n&&r&&i&&r(`${i(`fetch`)} ${e}`);try{let i=await fetch(e,t);return n&&r&&a&&o&&r(`${i.ok?a(i.status):o(i.status)} ${e}`),i}catch(t){throw Error(`Failed to fetch ${e}${t?.message?`: ${t.message}`:``}`)}}function R(e){let t=fe(e);return t?!!t.prerelease.length:!1}function nt(e){return/[0-9]+\.[0-9]+\.[0-9]+-.+/.test(e)}function rt(e,t,{useRel:n,allowDowngrade:r,name:i,matchesAny:a}){let o=z(e),s=z(t);if(!o||!s)return!0;let c=nt(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 he(e)?.version??``}catch{return``}}function it(e,t,{range:n,semvers:r,usePre:i,useRel:a,useGreatest:o,pinnedRange:s}){let c=z(n);if(!c)return c;i=nt(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&&!Ae(c,s))continue;let d=ge(u,c);if(!(!d||!r.has(d)))if(o||!(`time`in e))(ve(z(c),u)||s&&!Ae(u,s))&&(u=c);else{let t=Date.parse(e.time[n]);t>=0&&t>l&&(u=c,l=t)}}return u||null}function at(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=>M(e));else if(t===`npm`||t===`cargo`)d=Object.keys(e.versions).filter(e=>M(e));else if(t===`go`){let t=z(n);if(!t)return null;let r=a||nt(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=ge(t,p);if(n&&o.has(n)&&rt(f,e.new,d))return e.new}let m=z(e.sameMajorNew);if(m&&!u(e.sameMajorNew)&&!s(e.sameMajorNew)){let n=ge(t,m);if(n&&o.has(n)&&rt(f,e.sameMajorNew,d))return e.Time=e.sameMajorTime,delete e.newPath,e.sameMajorNew}return null}let f=it(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=nt(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 rt(n,f,g)?f:null;let _=ge(d,r);return _&&_!==`prerelease`&&!o.has(_.replace(/^pre/,``))||i&&R(r)?f:ye(r,d)&&!h?rt(n,r,g)?r:null:!p&&h&&!a||s&&!Ae(r,s)?f:u||r}}const ot=new Map;if(t.UPDATES_FORGE_TOKENS)for(let e of t.UPDATES_FORGE_TOKENS.split(`,`)){let t=e.indexOf(`:`);t>0&&ot.set(e.substring(0,t),e.substring(t+1))}function st(e){try{let t=ot.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 ct(e,t){let n={signal:AbortSignal.timeout(t.fetchTimeout),headers:{"accept-encoding":`gzip, deflate, br`}},r=st(e);return r&&(n.headers={...n.headers,Authorization:`Bearer ${r}`}),t.doFetch(e,n)}function lt(e,t,n){let r=F(t);if(!M(r))return null;if(n){let n=t,i=F(t);for(let t of e){let e=F(t);M(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(!M(n))return null;if(be(r,n))return t}return null}function ut(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 dt=/^[0-9a-f]{7,}$/i;function ft(e){return e.map(e=>({name:e.name,commitSha:e.commit?.sha||``}))}async function pt(e,t,n,r){try{let i=await ct(`${e}/repos/${t}/${n}/tags?per_page=100`,r);if(!i?.ok)return[];let a=ft(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)=>ct(`${e}/repos/${t}/${n}/tags?per_page=100&page=${a+2}`,r)));for(let e of o)e?.ok&&a.push(...ft(await e.json()))}return a}catch{return[]}}function mt(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 ht(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 gt(e){return e.startsWith(`https://bitbucket.org`)?`src/HEAD`:`tree/HEAD`}function _t({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=ut(typeof e==`string`?e:e.url),a&&typeof e!=`string`&&e.directory&&(a=`${a}/${gt(a)}/${e.directory}`)),a||t||``)}function vt(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 yt(e){try{return vt(g(e,`utf-8`))}catch{return}}function bt(t){let n=e();for(;;){let e=l(n,t);try{return v(e),e}catch{}let r=c(n);if(r===n)break;n=r}}function xt(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 St(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=yt(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(bt(`.${e}rc`));let u=xt(`${e}_`);return u.config&&c(u.config),Object.assign({},...o,u,s.length?{configs:s,config:s[s.length-1]}:void 0)}const B=l(r===`win32`?t.LOCALAPPDATA||l(C(),`AppData`,`Local`):t.XDG_CACHE_HOME||l(C(),`.cache`),`updates`);let Ct=!1;function wt(e){return re(`sha256`).update(e).digest(`hex`).substring(0,16)}function Tt(e){try{let t=wt(e),n=g(l(B,`${t}.etag`),`utf8`),r=g(l(B,`${t}.body`),`utf8`);return n&&r?{etag:n,body:r}:null}catch{return null}}function Et(e,t,n){try{Ct||=(h(B,{recursive:!0}),!0);let r=wt(e);b(l(B,`${r}.etag`),t),b(l(B,`${r}.body`),n)}catch{}}const Dt=/^.*?:\/\/(.*?@)?(github\.com[:/])/i,Ot=/^([^/]+)\/([^/]+)\/(?:.*\/)?([0-9a-f]+|v?[0-9]+\.[0-9]+\.[0-9]+)$/i,kt=/[0-9]+(\.[0-9]+)?(\.[0-9]+)?/g,At=/[0-9]+\.[0-9]+\.[0-9]+(-.+)?/g,jt=`https://registry.npmjs.org`;let V=null;const Mt=new Map;function Nt(){return V||St(`npm`,{registry:jt})}function Pt(e){return e.replace(/^\$\{?([^}]*)\}?$/,(e,n)=>t[n]||``)}function Ft(e,t){let n=t[`${e}:_authToken`]||t[`${e}/:_authToken`];if(n)return{token:Pt(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(Pt(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:Pt(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=Ft(`//${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:Pt(i),type:`Basic`}}function It(e,t){let n=t[`${e}:registry`]||t.registry;return n.endsWith(`/`)?n:`${n}/`}function Lt(e,t){V||=Nt();let n=e.startsWith(`@`)?(/@[a-z0-9][\w.-]+/.exec(e)||[``])[0]:``,r=`${n}:${t}`,i=Mt.get(r);if(i)return i;let a;if(!e.startsWith(`@`))a={auth:H(t,V),registry:t};else{let e=L(It(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 Mt.set(r,a),a}function Rt(e,t,n){V||=Nt();let r=L((typeof n.registry==`string`?n.registry:!1)||t.registry||V.registry||jt);return{...Lt(e,r),originalRegistry:r}}function zt(e,t,n){let r=`${e}/${t.replace(/\//g,`%2f`)}`;return n?`${r}/${n}`:r}const Bt=new Map,Vt=new Map,Ht=new Map;async function Ut(e,t,n,r,i){let{auth:a,registry:o}=Rt(e,n,r),c=zt(o,t===`resolutions`?s(e):e),l=Bt.get(c);if(!l){let t=et(a?.type,a?.token);t.headers={...t.headers,accept:`application/vnd.npm.install-v1+json`};let n=i.noCache?null:Tt(c);n&&(t.headers[`if-none-match`]=n.etag),l=i.doFetch(c,{signal:AbortSignal.timeout(i.fetchTimeout),...t}).then(async t=>{if(t?.status===304&&n)return JSON.parse(n.body);if(t?.ok){let e=await t.text(),n=t.headers.get(`etag`);return n&&!i.noCache&&Et(c,n,e),JSON.parse(e)}mt(t,c,e,o)}).catch(e=>{throw Bt.delete(c),e}),Bt.set(c,l)}return[await l,t,o,e]}async function Wt(e,t,n,r,i){let{auth:a,registry:o}=Rt(e,n,r),s=zt(o,e,t),c=Vt.get(s);if(c)return c;let l=(async()=>{try{let n=et(a?.type,a?.token),r=await i.doFetch(s,{signal:AbortSignal.timeout(i.fetchTimeout),...n});if(!r?.ok)return{};let c=await r.json(),l=``,u=c?._npmOperationalInternal?.tmp;if(u){let e=/(\d{13})/.exec(u);e&&(l=new Date(Number(e[1])).toISOString())}if(!l){let r=zt(o,e),a=Ht.get(r);a||(a=i.doFetch(r,{signal:AbortSignal.timeout(i.fetchTimeout),...n}).then(e=>e?.ok?e.json():null).catch(()=>(Ht.delete(r),null)),Ht.set(r,a)),l=(await a)?.time?.[t]||``}return{repository:c.repository,homepage:c.homepage,date:l}}catch{return{}}})();return Vt.set(s,l),l}function U(e){return e.startsWith(`npm:@jsr/`)||e.startsWith(`jsr:`)}function Gt(e){return e.startsWith(`link:`)||e.startsWith(`file:`)}function Kt(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 qt(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]}mt(s,o,e,`JSR`)}function Jt(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 Yt(e,t,n){let r=e.replace(At,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 Xt(e){let t=e.match(kt);return t?.length===1?e.replace(kt,z(t[0])):e}async function Zt(e,t,n){try{let r=await ct(`${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 Qt(e,t,n){return(await pt(n.forgeApiUrl,e,t,n)).map(e=>e.name)}async function $t(e,t,n,r){let i=t.old.replace(Dt,``),[a,o,s,c]=Ot.exec(i)||[];if(!o||!s||!c)return null;if(dt.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=lt(await Qt(o,s,r),c,n);if(t)return{key:e,newRange:t,user:o,repo:s,oldRef:c,newRef:t}}return null}async function en(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];mt(i,r,e,n.pypiApiUrl)}function tn(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 nn=S(ie);function rn(){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 an(){return(t.GONOPROXY||t.GOPRIVATE||``).split(`,`).map(e=>e.trim()).filter(Boolean)}function on(e,t){return t.some(t=>e===t||e.startsWith(`${t}/`))}function sn(e){return e.replace(/[A-Z]/g,e=>`!${e.toLowerCase()}`)}function cn(e){let t=/\/v(\d+)$/.exec(e);return t?Number.parseInt(t[1]):1}function ln(e,t){return t<=1?e.replace(/\/v\d+$/,``):`${e.replace(/\/v\d+$/,``)}/v${t}`}function un(e,t){return t===`indirect`||e.startsWith(`golang.org/x/`)}function dn(e){return/\d{14}-[0-9a-f]{12}$/.test(e)}function fn(e){return`${(e.length+4).toString(16).padStart(4,`0`)}${e}`}function pn(e){let t=[fn(`command=ls-refs
|
|
5
5
|
`),fn(`object-format=sha1
|
|
6
6
|
`),`0001`,fn(`peel
|
|
7
|
-
`),fn(`ref-prefix refs/tags/${e}v\n`),`0000`];return new Blob([t.join(``)])}function mn(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 hn(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 gn(e){return e?`${e.substring(1)}/`:``}function _n(e){let t=/^((github\.com|gitea\.com|codeberg\.org|gitlab\.com|bitbucket\.org|git\.sr\.ht)\/[^/]+\/[^/]+)(\/.*)?$/.exec(e);if(t)return{repoUrl:`https://${t[1]}.git`,tagPrefix:gn(t[3])};let n=/^golang\.org\/x\/([^/]+)(\/.*)?$/.exec(e);if(n)return{repoUrl:`https://go.googlesource.com/${n[1]}`,tagPrefix:gn(n[2])};let r=/^gopkg\.in\/(?:([^/]+)\/)?([^.]+)\.v\d+(\/.*)?$/.exec(e);return r?{repoUrl:`https://github.com/${r[1]||`go-${r[2]}`}/${r[2]}.git`,tagPrefix:gn(r[3])}:null}async function vn(e,t){let n=_n(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}}const yn=new Map;function bn(e,t){let n=yn.get(e);if(n)return n;let r=(async()=>{try{let n=await vn(e,t);if(!n)return null;let{repoUrl:r,tagPrefix:i}=n,a=pn(i),o=await t.doFetch(`${r}/git-upload-pack`,{method:`POST`,headers:{"Git-Protocol":`version=2`,"Content-Type":`application/x-git-upload-pack-request`},body:a,signal:AbortSignal.timeout(t.goProbeTimeout)});return o.ok?mn(await o.arrayBuffer(),i):null}catch{return null}})();return yn.set(e,r),r}async function xn(e,t,n){let r=await bn(e.replace(/\/v\d+$/,``),n);return r?hn(r,t):null}function Sn(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function Cn(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 wn(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 Tn(e){let t={},n={},r={},i={},a=new Set,o=[],s=e.split(/\r?\n/),c=!1,l=!1,u=!1;for(let e of s){let i=e.trim();if(/^require\s*\(/.test(i)){c=!0;continue}if(/^replace\s*\(/.test(i)){l=!0;continue}if(/^tool\s*\(/.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(u){i&&!i.startsWith(`//`)&&o.push(i);continue}let s=/^tool\s+(\S+)/.exec(i);if(s){o.push(s[1]);continue}let d=i.includes(`// indirect`);if(l||/^replace\s+/.test(i)){let e=l?/^(\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,n,i]=e;!n.startsWith(`./`)&&!n.startsWith(`/`)&&!n.startsWith(`../`)&&(r[n]=i,a.add(t))}continue}let f=c?/^(\S+)\s+(v\S+)/.exec(i):/^require\s+(\S+)\s+(v\S+)/.exec(i);f&&((d?n:t)[f[1]]=f[2])}for(let e of a)delete t[e],delete n[e];if(o.length){let e=[...Object.keys(n),...Object.keys(t)];for(let r of o){let a=``;for(let t of e)(r===t||r.startsWith(`${t}/`))&&t.length>a.length&&(a=t);let o=a?n[a]?n:t[a]?t:null:null;o&&(i[a]=o[a],delete o[a])}}return{deps:t,indirect:n,replace:r,tool:i}}async function En(e,n,r,i,a){let o=cn(e),s=async(e,n)=>{try{let{stdout:r}=await nn(`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=un(e,n),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(ln(e,o+1),a.goProbeTimeout)]);return l?wn(e,n,r,c?null:await Cn(o,u,t=>s(ln(e,t),a.goProbeTimeout)),l.Version,l.Time):Sn(e,r,n)}async function Dn(e,t,n,r,i,a){if(on(e,a))return En(e,t,n,r,i);let o=sn(e),s=cn(e),c=async t=>{let n=ln(e,t);return i.doFetch(`${i.goProxyUrl}/${sn(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout)}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},l=un(e,t),[u,d,f]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout)}),l?null:xn(e,s,i),l?null:c(s+1)]);if(!u.ok)return Sn(e,n,t);let p,m;try{let e=await u.json();p=e.Version,m=e.Time}catch{return Sn(e,n,t)}let h=null;return l||(d!==null&&d>s?d===s+1&&f?h=f:(h=await c(d),h||=await Cn(s,f,c)):d===null&&f!==null&&(h=await Cn(s,f,c))),wn(e,t,n,h,p,m)}function On(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 kn(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}if(o===`indirect`){n=n.replace(RegExp(`(${I(s)}) +v${I(c)}`,`g`),`$1 v${l}`);continue}let u=cn(s),d=Number.parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=ln(s,d);n=n.replace(RegExp(`${I(s)} +v${I(c)}`,`g`),`${e} v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)${I(s)}(/\\S+)?\\s*$`,`gm`),`$1${e}$2`)),r[s]=e}else n=n.replace(RegExp(`(${I(s)}) +v${I(c)}`,`g`),`$1 v${l}`);o!==`tool`&&(n=On(n,s))}return[n,r]}function An(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=g(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 jn(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}/${gt(t)}/${o.join(`/`)}`,n.toString()}else return t}function Mn(e){return/\/v[0-9]$/.test(e)?c(e):e}function Nn(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const Pn=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function Fn(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:dt.test(o)}}function In(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function Ln(e,t,n,r,i){try{let a=await ct(`${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 Rn(e,t){return ht(fe(F(e))?.version??F(e),t)}function zn(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 Bn(e){let t=e.replace(/\\/g,`/`);return/\.github\/workflows\/[^/]+\.(ya?ml)$/.test(t)}function Vn(e){try{return _(e).filter(e=>/\.(ya?ml)$/.test(e)).map(t=>u(l(e,t)))}catch{return[]}}const Hn=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,Un=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,Wn=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,Gn=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,Kn=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function qn(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 Jn(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||!Hn.test(r)))return null;let{registry:i,namespace:a,repo:o}=qn(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function Yn(e){let t=Hn.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Xn(e,t){let n=Yn(t);return n?ht(e,n.version,n.suffix):t}function Zn(e,t){let n=[];for(let r of e.matchAll(t)){let e=Jn(r[1]);e&&n.push({ref:e,match:r[1]})}return n}async function Qn(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 $n(e,t,n){let{registry:r,namespace:i,repo:a}=qn(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await Qn(i,a,n),name:e},t,null,e]}function er(e,t,n){let r=Yn(t);if(!r)return null;let i=he(F(r.version))?.version;if(!i)return null;let a=i,o=``,s=``;for(let[t,i]of Object.entries(e)){let e=Yn(t);if(!e||e.suffix!==r.suffix)continue;let c=he(F(e.version))?.version;if(!c||!M(c))continue;let l=ge(a,c);!l||!n.has(l)||ve(c,a)&&(a=c,o=t,s=i)}if(!o||a===i)return null;let c=Xn(a,t);return c===t?null:{newTag:c,date:s}}function tr(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 nr(e,t){return tr(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}`,`g`)])}function rr(e,t){return tr(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}`,`g`)])}function ir(e,t){return tr(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}`,`g`)])}const ar=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function or(e){return/^docker-.+\.ya?ml$/.test(e)}function sr(e){return/^Dockerfile(\..+)?$/.test(e)}function cr(e){return sr(e)||or(e)}function lr(e){return sr(e)?Un:Wn}function ur(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}async function dr(e,t,n){let r=`${L(n.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`,i=await n.doFetch(r,{signal:AbortSignal.timeout(n.fetchTimeout),...et()});i?.ok||mt(i,r,e,n.cratesIoUrl);let a;try{a=await i.json()}catch{throw Error(`Invalid JSON from ${r}`)}let o=(a.versions||[]).filter(e=>!e.yanked),s={},c={};for(let e of o)e.num&&(s[e.num]={},c[e.num]=e.created_at||``);let l=o[0]?.num??``;return[{name:e,versions:s,time:c,"dist-tags":{latest:l}},t,null,e]}const fr=Ue.map(e=>I(e)).join(`|`);function pr(e,t){let n=e;for(let[e,r]of Object.entries(t)){let[t,i]=e.split(`\0`),a=r.oldOrig||r.old,o=r.new,s=I(i),c=I(a);n=n.replace(RegExp(`^(\\s*${s}\\s*=\\s*["'])${c}(["'].*)$`,`gm`),`$1${o}$2`),n=n.replace(RegExp(`(\\s*${s}\\s*=\\s*\\{\\s*version\\s*=\\s*["'])${c}(["'])`,`g`),`$1${o}$2`),n=n.replace(RegExp(`(\\[(?:${fr})\\.${s}\\][^\\[]*?version\\s*=\\s*["'])${c}(["'])`,`g`),`$1${o}$2`)}return n}const mr={"package.json":`npm`,"pyproject.toml":`pypi`,"go.mod":`go`,"Cargo.toml":`cargo`},hr={"allow-downgrade":{short:`d`,type:`string`,multiple:!0},"error-on-outdated":{short:`E`,type:`boolean`},"error-on-unchanged":{short:`U`,type:`boolean`},exclude:{short:`e`,type:`string`,multiple:!0},file:{short:`f`,type:`string`,multiple:!0},forgeapi:{type:`string`},goproxy:{type:`string`},cargoapi:{type:`string`},dockerapi:{type:`string`},greatest:{short:`g`,type:`string`,multiple:!0},help:{short:`h`,type:`boolean`},include:{short:`i`,type:`string`,multiple:!0},indirect:{short:`I`,type:`boolean`},json:{short:`j`,type:`boolean`},jsrapi:{type:`string`},cooldown:{short:`C`,type:`string`},minor:{short:`m`,type:`string`,multiple:!0},modes:{short:`M`,type:`string`,multiple:!0},color:{short:`c`,type:`boolean`},"no-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`?Ge(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function gr(e){for(let[t,{short:n}]of Object.entries(hr))if(t===e||n===e)return t;return``}const G=x({strict:!1,allowPositionals:!0,tokens:!0,options:hr}),K=G.values;for(let[e,t]of G.tokens.entries())if(t.kind===`option`&&t.value?.startsWith(`-`)){let n=gr(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,_r=G.positionals,[vr,yr,br]=[`magenta`,`red`,`green`].map(e=>q[`no-color`]?String:t=>te(e,String(t))),J=Q(W(q.greatest)),xr=Q(W(q.prerelease)),Sr=Q(W(q.release)),Cr=Q(W(q.patch)),wr=Q(W(q.minor)),Tr=Q(W(q[`allow-downgrade`])),Er=W(q.modes)||new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`]),Dr=typeof q.forgeapi==`string`?L(q.forgeapi):`https://api.github.com`,Or=typeof q.pypiapi==`string`?L(q.pypiapi):`https://pypi.org`,kr=typeof q.jsrapi==`string`?L(q.jsrapi):`https://jsr.io`,Ar=typeof q.goproxy==`string`?L(q.goproxy):rn(),jr=typeof q.cargoapi==`string`?L(q.cargoapi):`https://crates.io`,Mr=typeof q.dockerapi==`string`?L(q.dockerapi):`https://hub.docker.com`,Nr=an();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 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 Ir(e){try{return g(e,`utf8`)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}}function Y(e,t){t&&(e.date=t,e.age=Ie(t,{noAffix:!0}))}function Lr(e,t,n){let r=Xe(String(t));for(let[t,{date:i}]of Object.entries(e))Ke(i,r,n)||delete e[t]}function Rr(e){let t=0;for(let n of Object.keys(e))t+=Object.keys(e[n]).length;return t}function zr(e){console.error(`${qe()} ${e}`)}const Br=typeof q.timeout==`string`?Number(q.timeout):0,X={fetchTimeout:Br||5e3,goProbeTimeout:Br?Br/2:2500,forgeApiUrl:Dr,pypiApiUrl:Or,jsrApiUrl:kr,goProxyUrl:Ar,cratesIoUrl:jr,dockerApiUrl:Mr,doFetch:(e,t)=>tt(e,t,!!q.verbose,zr,vr,br,yr),verbose:!!q.verbose};async function Vr(e){console.info(q.json?JSON.stringify({message:e}):e),await Hr()}async function Hr(e,t){if(e){let t=e.message??String(e);q.json?console.info(JSON.stringify({error:t})):console.info(yr(t))}r===`win32`&&Number(o?.node?.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),n(t||e?1:0)}function Ur(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`?Nn(n.oldOrig):n.oldOrig),t===`go`&&(n.new=Nn(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=Rr(e);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(Gr(e));return q[`error-on-outdated`]?t?2:0:q[`error-on-unchanged`]?t?0:2:0}function Z(e,t){r===`win32`&&y(e,0),b(e,t,r===`win32`?{flag:`r+`}:void 0)}const Wr=e=>ee(e).length;function Gr(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(Le(o.old,o.new,yr)),l.push(Le(o.new,o.old,br)),l.push(o.age||``),l.push(o.info||``),r.push(l)}return Je(r,Wr)}function Kr(e,t){return RegExp(`^${I(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function qr(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Kr(e,n):e instanceof RegExp?e:Kr(e,n)}function Q(e){if(e instanceof Set){let t=new Set;for(let n of e)t.add(qr(n,!0,!1));return t}return e}function Jr(e,t){let n=new Set;for(let t of e||[])n.add(qr(t,!0,!0));for(let e of t||[])n.add(qr(e,!1,!0));return n}function Yr(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>Ge(e)):[]}function Xr(e){return Cr===!0||P(e,Cr)?new Set([`patch`]):wr===!0||P(e,wr)?new Set([`patch`,`minor`]):new Set([`patch`,`minor`,`major`])}function Zr(e){return{useGreatest:typeof J==`boolean`?J:P(e,J),usePre:typeof xr==`boolean`?xr:P(e,xr),useRel:typeof Sr==`boolean`?Sr:P(e,Sr),semvers:Xr(e)}}function Qr(t){return t.replace(`${e()}/`,``).replace(`${e()}\\`,``)}function $(e,t,n,r,i){if(i===`engines`&&Be.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 $r(t){let n=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())n.add(u(e));else if(t?.isDirectory()){for(let t of Object.keys(mr)){let r=l(e,t),i=null;try{i=m(r)}catch{}i?.isFile()&&n.add(u(r))}try{for(let t of _(e))if(cr(t)){let r=l(e,t);try{m(r).isFile()&&n.add(u(r))}catch{}}}catch{}let t=u(e).replace(/\\/g,`/`),r;r=t.endsWith(`.github/workflows`)?t:t.endsWith(`.github`)?l(t,`workflows`):l(t,`.github`,`workflows`);for(let e of Vn(r))n.add(e)}else throw Error(`${e} is neither a file nor directory`)}else{for(let t of Object.keys(mr)){let r=Fr(t,e());r&&n.add(u(r))}for(let t of ar){let r=Fr(t,e());r&&n.add(u(r))}try{for(let t of _(e()))if(cr(t)&&!ar.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 Vn(t))n.add(e)}return n}async function ei(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 ti(){for(let e of[a,i])e?._handle?.setBlocking?.(!0);Qe();let e=typeof q.sockets==`string`&&Number(q.sockets)||25,{help:t,version:n,file:r,types:o,update:l,indirect:d,include:f,exclude:p,pin:m,cooldown:h}=q;t&&(a.write(`usage: updates [options] [files...]
|
|
7
|
+
`),fn(`ref-prefix refs/tags/${e}v\n`),`0000`];return new Blob([t.join(``)])}function mn(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 hn(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 gn(e){return e?`${e.substring(1)}/`:``}function _n(e){let t=/^((github\.com|gitea\.com|codeberg\.org|gitlab\.com|bitbucket\.org|git\.sr\.ht)\/[^/]+\/[^/]+)(\/.*)?$/.exec(e);if(t)return{repoUrl:`https://${t[1]}.git`,tagPrefix:gn(t[3])};let n=/^golang\.org\/x\/([^/]+)(\/.*)?$/.exec(e);if(n)return{repoUrl:`https://go.googlesource.com/${n[1]}`,tagPrefix:gn(n[2])};let r=/^gopkg\.in\/(?:([^/]+)\/)?([^.]+)\.v\d+(\/.*)?$/.exec(e);return r?{repoUrl:`https://github.com/${r[1]||`go-${r[2]}`}/${r[2]}.git`,tagPrefix:gn(r[3])}:null}async function vn(e,t){let n=_n(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}}const yn=new Map;function bn(e,t){let n=yn.get(e);if(n)return n;let r=(async()=>{try{let n=await vn(e,t);if(!n)return null;let{repoUrl:r,tagPrefix:i}=n,a=pn(i),o=await t.doFetch(`${r}/git-upload-pack`,{method:`POST`,headers:{"Git-Protocol":`version=2`,"Content-Type":`application/x-git-upload-pack-request`},body:a,signal:AbortSignal.timeout(t.goProbeTimeout)});return o.ok?mn(await o.arrayBuffer(),i):null}catch{return null}})();return yn.set(e,r),r}async function xn(e,t,n){let r=await bn(e.replace(/\/v\d+$/,``),n);return r?hn(r,t):null}function Sn(e,t,n){return[{name:e,old:t,new:t},n,null,e]}async function Cn(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 wn(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 Tn(e){let t={},n={},r={},i={},a=new Set,o=[],s=e.split(/\r?\n/),c=!1,l=!1,u=!1;for(let e of s){let i=e.trim();if(/^require\s*\(/.test(i)){c=!0;continue}if(/^replace\s*\(/.test(i)){l=!0;continue}if(/^tool\s*\(/.test(i)){u=!0;continue}if(i===`)`){c=!1,l=!1,u=!1;continue}if(u){i&&!i.startsWith(`//`)&&o.push(i);continue}let s=/^tool\s+(\S+)/.exec(i);if(s){o.push(s[1]);continue}let d=i.includes(`// indirect`);if(l||/^replace\s+/.test(i)){let e=l?/^(\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,n,i]=e;!n.startsWith(`./`)&&!n.startsWith(`/`)&&!n.startsWith(`../`)&&(r[n]=i,a.add(t))}continue}let f=c?/^(\S+)\s+(v\S+)/.exec(i):/^require\s+(\S+)\s+(v\S+)/.exec(i);f&&((d?n:t)[f[1]]=f[2])}for(let e of a)delete t[e],delete n[e];if(o.length){let e=[...Object.keys(n),...Object.keys(t)];for(let r of o){let a=``;for(let t of e)(r===t||r.startsWith(`${t}/`))&&t.length>a.length&&(a=t);let o=a?n[a]?n:t[a]?t:null:null;o&&(i[a]=o[a],delete o[a])}}return{deps:t,indirect:n,replace:r,tool:i}}async function En(e,n,r,i,a){let o=cn(e),s=async(e,n)=>{try{let{stdout:r}=await nn(`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=un(e,n),[l,u]=await Promise.all([s(e,a.fetchTimeout),c?null:s(ln(e,o+1),a.goProbeTimeout)]);return l?wn(e,n,r,c?null:await Cn(o,u,t=>s(ln(e,t),a.goProbeTimeout)),l.Version,l.Time):Sn(e,r,n)}async function Dn(e,t,n,r,i,a){if(on(e,a))return En(e,t,n,r,i);let o=sn(e),s=cn(e),c=async t=>{let n=ln(e,t);return i.doFetch(`${i.goProxyUrl}/${sn(n)}/@latest`,{signal:AbortSignal.timeout(i.goProbeTimeout)}).then(async e=>e.ok?{...await e.json(),path:n}:null).catch(()=>null)},l=un(e,t),[u,d,f]=await Promise.all([i.doFetch(`${i.goProxyUrl}/${o}/@latest`,{signal:AbortSignal.timeout(i.fetchTimeout)}),l?null:xn(e,s,i),l?null:c(s+1)]);if(!u.ok)return Sn(e,n,t);let p,m;try{let e=await u.json();p=e.Version,m=e.Time}catch{return Sn(e,n,t)}let h=null;return l||(d!==null&&d>s?d===s+1&&f?h=f:(h=await c(d),h||=await Cn(s,f,c)):d===null&&f!==null&&(h=await Cn(s,f,c))),wn(e,t,n,h,p,m)}function On(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 kn(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}if(o===`indirect`){n=n.replace(RegExp(`(${I(s)}) +v${I(c)}`,`g`),`$1 v${l}`);continue}let u=cn(s),d=Number.parseInt(l.split(`.`)[0]);if(u!==d&&d>1){let e=ln(s,d);n=n.replace(RegExp(`${I(s)} +v${I(c)}`,`g`),`${e} v${l}`),o===`tool`&&(n=n.replace(RegExp(`(^\\s+|^tool\\s+)${I(s)}(/\\S+)?\\s*$`,`gm`),`$1${e}$2`)),r[s]=e}else n=n.replace(RegExp(`(${I(s)}) +v${I(c)}`,`g`),`$1 v${l}`);o!==`tool`&&(n=On(n,s))}return[n,r]}function An(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=g(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 jn(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}/${gt(t)}/${o.join(`/`)}`,n.toString()}else return t}function Mn(e){return/\/v[0-9]$/.test(e)?c(e):e}function Nn(e){return e.replace(/(\d{7})\d{7}-[0-9a-f]{12}$/,`$1`)}const Pn=/^\s*(?:-\s*)?uses:\s*['"]?([^'"#\s]+)['"]?/gm;function Fn(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:dt.test(o)}}function In(e,t){return e?e===`github.com`?`https://api.github.com`:`https://${e}/api/v1`:t}async function Ln(e,t,n,r,i){try{let a=await ct(`${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 Rn(e,t){return ht(fe(F(e))?.version??F(e),t)}function zn(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 Bn(e){let t=e.replace(/\\/g,`/`);return/\.github\/workflows\/[^/]+\.(ya?ml)$/.test(t)}function Vn(e){try{return _(e).filter(e=>/\.(ya?ml)$/.test(e)).map(t=>u(l(e,t)))}catch{return[]}}const Hn=/^(v?\d+(?:\.\d+){0,2})(-.+)?$/,Un=/^\s*FROM\s+(?:--platform=\S+\s+)?(\S+)/gm,Wn=/^\s*image:\s*['"]?([^\s'"#]+)['"]?/gm,Gn=/^\s*container:\s*['"]?([^\s'"#{}]+:[^\s'"#{}:]+)['"]?\s*$/gm,Kn=/^\s*(?:-\s*)?uses:\s*['"]?docker:\/\/([^'"#\s]+)['"]?/gm;function qn(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 Jn(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||!Hn.test(r)))return null;let{registry:i,namespace:a,repo:o}=qn(n);return{registry:i,namespace:a,repo:o,tag:r,fullImage:n}}function Yn(e){let t=Hn.exec(e);return t?{version:t[1],suffix:t[2]||``}:null}function Xn(e,t){let n=Yn(t);return n?ht(e,n.version,n.suffix):t}function Zn(e,t){let n=[];for(let r of e.matchAll(t)){let e=Jn(r[1]);e&&n.push({ref:e,match:r[1]})}return n}async function Qn(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 $n(e,t,n){let{registry:r,namespace:i,repo:a}=qn(e);if(r)throw Error(`Non-Docker-Hub registries are not yet supported: ${r}`);return[{tags:await Qn(i,a,n),name:e},t,null,e]}function er(e,t,n){let r=Yn(t);if(!r)return null;let i=he(F(r.version))?.version;if(!i)return null;let a=i,o=``,s=``;for(let[t,i]of Object.entries(e)){let e=Yn(t);if(!e||e.suffix!==r.suffix)continue;let c=he(F(e.version))?.version;if(!c||!M(c))continue;let l=ge(a,c);!l||!n.has(l)||ve(c,a)&&(a=c,o=t,s=i)}if(!o||a===i)return null;let c=Xn(a,t);return c===t?null:{newTag:c,date:s}}function tr(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 nr(e,t){return tr(e,t,[(e,t)=>RegExp(`(FROM\\s+(?:--platform=\\S+\\s+)?)${e}:${t}`,`g`)])}function rr(e,t){return tr(e,t,[(e,t)=>RegExp(`(image:\\s*['"]?)${e}:${t}`,`g`)])}function ir(e,t){return tr(e,t,[(e,t)=>RegExp(`((?:container|image):\\s*['"]?)${e}:${t}`,`g`),(e,t)=>RegExp(`(uses:\\s*['"]?docker://)${e}:${t}`,`g`)])}const ar=[`Dockerfile`,`docker-compose.yml`,`docker-compose.yaml`];function or(e){return/^docker-.+\.ya?ml$/.test(e)}function sr(e){return/^Dockerfile(\..+)?$/.test(e)}function cr(e){return sr(e)||or(e)}function lr(e){return sr(e)?Un:Wn}function ur(e){return e.registry?``:e.namespace===`library`?`https://hub.docker.com/_/${e.repo}`:`https://hub.docker.com/r/${e.namespace}/${e.repo}`}async function dr(e,t,n){let r=`${L(n.cratesIoUrl)}/api/v1/crates/${encodeURIComponent(e)}/versions?per_page=100`,i=await n.doFetch(r,{signal:AbortSignal.timeout(n.fetchTimeout),...et()});i?.ok||mt(i,r,e,n.cratesIoUrl);let a;try{a=await i.json()}catch{throw Error(`Invalid JSON from ${r}`)}let o=(a.versions||[]).filter(e=>!e.yanked),s={},c={};for(let e of o)e.num&&(s[e.num]={},c[e.num]=e.created_at||``);let l=o[0]?.num??``;return[{name:e,versions:s,time:c,"dist-tags":{latest:l}},t,null,e]}const fr=Ue.map(e=>I(e)).join(`|`);function pr(e,t){let n=e;for(let[e,r]of Object.entries(t)){let[t,i]=e.split(`\0`),a=r.oldOrig||r.old,o=r.new,s=I(i),c=I(a);n=n.replace(RegExp(`^(\\s*${s}\\s*=\\s*["'])${c}(["'].*)$`,`gm`),`$1${o}$2`),n=n.replace(RegExp(`(\\s*${s}\\s*=\\s*\\{\\s*version\\s*=\\s*["'])${c}(["'])`,`g`),`$1${o}$2`),n=n.replace(RegExp(`(\\[(?:${fr})\\.${s}\\][^\\[]*?version\\s*=\\s*["'])${c}(["'])`,`g`),`$1${o}$2`)}return n}const mr={"package.json":`npm`,"pyproject.toml":`pypi`,"go.mod":`go`,"Cargo.toml":`cargo`},hr={"allow-downgrade":{short:`d`,type:`string`,multiple:!0},"error-on-outdated":{short:`E`,type:`boolean`},"error-on-unchanged":{short:`U`,type:`boolean`},exclude:{short:`e`,type:`string`,multiple:!0},file:{short:`f`,type:`string`,multiple:!0},forgeapi:{type:`string`},goproxy:{type:`string`},cargoapi:{type:`string`},dockerapi:{type:`string`},greatest:{short:`g`,type:`string`,multiple:!0},help:{short:`h`,type:`boolean`},include:{short:`i`,type:`string`,multiple:!0},indirect:{short:`I`,type:`boolean`},json:{short:`j`,type:`boolean`},jsrapi:{type:`string`},cooldown:{short:`C`,type:`string`},minor:{short:`m`,type:`string`,multiple:!0},modes:{short:`M`,type:`string`,multiple:!0},color:{short:`c`,type:`boolean`},"no-cache":{short:`x`,type:`boolean`},"no-color":{short:`n`,type:`boolean`},patch:{short:`P`,type:`string`,multiple:!0},pin:{short:`l`,type:`string`,multiple:!0},prerelease:{short:`p`,type:`string`,multiple:!0},pypiapi:{type:`string`},registry:{short:`r`,type:`string`},release:{short:`R`,type:`string`,multiple:!0},sockets:{short:`s`,type:`string`},timeout:{short:`T`,type:`string`},types:{short:`t`,type:`string`,multiple:!0},update:{short:`u`,type:`boolean`},verbose:{short:`V`,type:`boolean`},version:{short:`v`,type:`boolean`}};function W(e){return Array.isArray(e)&&e.every(e=>e===!0)?!0:Array.isArray(e)?new Set(e.flatMap(e=>typeof e==`string`?Ge(e):``).filter(Boolean)):typeof e==`string`?new Set([e]):typeof e==`boolean`?e:!1}function gr(e){for(let[t,{short:n}]of Object.entries(hr))if(t===e||n===e)return t;return``}const G=x({strict:!1,allowPositionals:!0,tokens:!0,options:hr}),K=G.values;for(let[e,t]of G.tokens.entries())if(t.kind===`option`&&t.value?.startsWith(`-`)){let n=gr(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,_r=G.positionals,[vr,yr,br]=[`magenta`,`red`,`green`].map(e=>q[`no-color`]?String:t=>te(e,String(t))),J=Q(W(q.greatest)),xr=Q(W(q.prerelease)),Sr=Q(W(q.release)),Cr=Q(W(q.patch)),wr=Q(W(q.minor)),Tr=Q(W(q[`allow-downgrade`])),Er=W(q.modes)||new Set([`npm`,`pypi`,`go`,`cargo`,`actions`,`docker`]),Dr=typeof q.forgeapi==`string`?L(q.forgeapi):`https://api.github.com`,Or=typeof q.pypiapi==`string`?L(q.pypiapi):`https://pypi.org`,kr=typeof q.jsrapi==`string`?L(q.jsrapi):`https://jsr.io`,Ar=typeof q.goproxy==`string`?L(q.goproxy):rn(),jr=typeof q.cargoapi==`string`?L(q.cargoapi):`https://crates.io`,Mr=typeof q.dockerapi==`string`?L(q.dockerapi):`https://hub.docker.com`,Nr=an();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 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 Ir(e){try{return g(e,`utf8`)}catch(t){throw Error(`Unable to open ${e}: ${t.message}`)}}function Y(e,t){t&&(e.date=t,e.age=Ie(t,{noAffix:!0}))}function Lr(e,t,n){let r=Xe(String(t));for(let[t,{date:i}]of Object.entries(e))Ke(i,r,n)||delete e[t]}function Rr(e){let t=0;for(let n of Object.keys(e))t+=Object.keys(e[n]).length;return t}function zr(e){console.error(`${qe()} ${e}`)}const Br=typeof q.timeout==`string`?Number(q.timeout):0,X={fetchTimeout:Br||5e3,goProbeTimeout:Br?Br/2:2500,forgeApiUrl:Dr,pypiApiUrl:Or,jsrApiUrl:kr,goProxyUrl:Ar,cratesIoUrl:jr,dockerApiUrl:Mr,doFetch:(e,t)=>tt(e,t,!!q.verbose,zr,vr,br,yr),verbose:!!q.verbose,noCache:!!q[`no-cache`]};async function Vr(e){console.info(q.json?JSON.stringify({message:e}):e),await Hr()}async function Hr(e,t){if(e){let t=e.message??String(e);q.json?console.info(JSON.stringify({error:t})):console.info(yr(t))}r===`win32`&&Number(o?.node?.split(`.`)[0])>=23&&await new Promise(e=>setTimeout(e,50)),n(t||e?1:0)}function Ur(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`?Nn(n.oldOrig):n.oldOrig),t===`go`&&(n.new=Nn(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=Rr(e);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(Gr(e));return q[`error-on-outdated`]?t?2:0:q[`error-on-unchanged`]?t?0:2:0}function Z(e,t){r===`win32`&&y(e,0),b(e,t,r===`win32`?{flag:`r+`}:void 0)}const Wr=e=>ee(e).length;function Gr(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(Le(o.old,o.new,yr)),l.push(Le(o.new,o.old,br)),l.push(o.age||``),l.push(o.info||``),r.push(l)}return Je(r,Wr)}function Kr(e,t){return RegExp(`^${I(e).replaceAll(`\\*`,`.*`)}$`,t?`i`:``)}function qr(e,t,n){return t&&typeof e==`string`?/^\/.+\/$/.test(e)?new RegExp(e.slice(1,-1)):Kr(e,n):e instanceof RegExp?e:Kr(e,n)}function Q(e){if(e instanceof Set){let t=new Set;for(let n of e)t.add(qr(n,!0,!1));return t}return e}function Jr(e,t){let n=new Set;for(let t of e||[])n.add(qr(t,!0,!0));for(let e of t||[])n.add(qr(e,!1,!0));return n}function Yr(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`).flatMap(e=>Ge(e)):[]}function Xr(e){return Cr===!0||P(e,Cr)?new Set([`patch`]):wr===!0||P(e,wr)?new Set([`patch`,`minor`]):new Set([`patch`,`minor`,`major`])}function Zr(e){return{useGreatest:typeof J==`boolean`?J:P(e,J),usePre:typeof xr==`boolean`?xr:P(e,xr),useRel:typeof Sr==`boolean`?Sr:P(e,Sr),semvers:Xr(e)}}function Qr(t){return t.replace(`${e()}/`,``).replace(`${e()}\\`,``)}function $(e,t,n,r,i){if(i===`engines`&&Be.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 $r(t){let n=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())n.add(u(e));else if(t?.isDirectory()){for(let t of Object.keys(mr)){let r=l(e,t),i=null;try{i=m(r)}catch{}i?.isFile()&&n.add(u(r))}try{for(let t of _(e))if(cr(t)){let r=l(e,t);try{m(r).isFile()&&n.add(u(r))}catch{}}}catch{}let t=u(e).replace(/\\/g,`/`),r;r=t.endsWith(`.github/workflows`)?t:t.endsWith(`.github`)?l(t,`workflows`):l(t,`.github`,`workflows`);for(let e of Vn(r))n.add(e)}else throw Error(`${e} is neither a file nor directory`)}else{for(let t of Object.keys(mr)){let r=Fr(t,e());r&&n.add(u(r))}for(let t of ar){let r=Fr(t,e());r&&n.add(u(r))}try{for(let t of _(e()))if(cr(t)&&!ar.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 Vn(t))n.add(e)}return n}async function ei(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 ti(){for(let e of[a,i])e?._handle?.setBlocking?.(!0);Qe();let e=typeof q.sockets==`string`&&Number(q.sockets)||25,{help:t,version:n,file:r,types:o,update:l,indirect:d,include:f,exclude:p,pin:m,cooldown:h}=q;t&&(a.write(`usage: updates [options] [files...]
|
|
8
8
|
|
|
9
9
|
Options:
|
|
10
10
|
-u, --update Update versions and write dependency file
|
|
@@ -13,7 +13,7 @@ import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,version
|
|
|
13
13
|
-i, --include <dep,...> Include only given dependencies
|
|
14
14
|
-e, --exclude <dep,...> Exclude given dependencies
|
|
15
15
|
-l, --pin <dep=range> Pin dependency to given semver range
|
|
16
|
-
-C, --cooldown <duration> Minimum dependency age, e.g. 7, 1w, 2d, 6h
|
|
16
|
+
-C, --cooldown <duration> Minimum dependency age, e.g. 7 (days), 1w, 2d, 6h
|
|
17
17
|
-p, --prerelease [<dep,...>] Consider prerelease versions
|
|
18
18
|
-R, --release [<dep,...>] Only use release versions, may downgrade
|
|
19
19
|
-g, --greatest [<dep,...>] Prefer greatest over latest version
|
|
@@ -28,6 +28,7 @@ import{cwd as e,env as t,exit as n,platform as r,stderr as i,stdout as a,version
|
|
|
28
28
|
-E, --error-on-outdated Exit with code 2 when updates are available and 0 when not
|
|
29
29
|
-U, --error-on-unchanged Exit with code 0 when updates are available and 2 when not
|
|
30
30
|
-j, --json Output a JSON object
|
|
31
|
+
-x, --no-cache Disable HTTP cache
|
|
31
32
|
-n, --no-color Disable color output
|
|
32
33
|
-v, --version Print the version
|
|
33
34
|
-V, --verbose Print verbose output to stderr
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "updates",
|
|
3
|
-
"version": "17.
|
|
3
|
+
"version": "17.13.1",
|
|
4
4
|
"description": "CLI dependency update tool for npm, uv, cargo, go and actions",
|
|
5
5
|
"author": "silverwind",
|
|
6
6
|
"repository": "silverwind/updates",
|
|
@@ -17,16 +17,16 @@
|
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@types/node": "25.5.0",
|
|
20
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
20
|
+
"@typescript/native-preview": "7.0.0-dev.20260330.1",
|
|
21
21
|
"eslint": "10.1.0",
|
|
22
|
-
"eslint-config-silverwind": "
|
|
22
|
+
"eslint-config-silverwind": "130.0.2",
|
|
23
23
|
"timerel": "5.8.6",
|
|
24
|
-
"tsdown": "0.21.
|
|
25
|
-
"tsdown-config-silverwind": "2.0.
|
|
24
|
+
"tsdown": "0.21.7",
|
|
25
|
+
"tsdown-config-silverwind": "2.0.5",
|
|
26
26
|
"typescript": "5.9.3",
|
|
27
27
|
"typescript-config-silverwind": "16.1.0",
|
|
28
28
|
"updates-config-silverwind": "2.0.1",
|
|
29
|
-
"versions": "14.2.
|
|
29
|
+
"versions": "14.2.6",
|
|
30
30
|
"vitest": "4.1.2",
|
|
31
31
|
"vitest-config-silverwind": "11.0.2"
|
|
32
32
|
}
|